<<< [=] >>>

5 Pli alt-nivelaj problemoj

5 Probleme auf höherer Ebene

Por la prezentado de unu sola lingvo la ekzisto de taŭga signaro estas la plej grava afero. Sed nia temo ja estas la internaciigo, la eblo, ke programo funkciu en pluraj lingvoj. Por tio necesas pli ol signaroj por la unuopaj lingvoj: ni vidis, ke oni bezonas eblon ŝalti inter diversaj signaroj, aŭ signaron, kiu taŭgas por pluraj, multaj aŭ ĉiuj lingvoj. Ni vidis, ke Unikodo solvis tiun problemon.

Sed ankaŭ super la nivelo de signoj ekzistas strukturaj ecoj, kiuj malsamas en diversaj lingvoj. Se tiaj ecoj estas fiksitaj en programo, ili malhelpas la internaciigon de la programo. Tial programistoj devas scii pri tiuj ecoj por eviti ilian fiksadon en programoj.

Estas neadekvate postuli, ke programistoj havu profundan lingvistan scion. Prefere ili sciu, kion necesas eviti en programado, por havi internaciigitan aŭ facile internaciigeblan programon.

Für die Darstellung von Texten in einer einzigen Sprache ist die Existenz eines geeigneten Zeichensatzes die Hauptsache. Aber unser Thema ist ja die Internationalisierung, die Möglichkeit, dass ein Programm in mehreren Sprachen funktioniert. Dazu ist mehr nötig als Zeichensätze für die einzelnen Sprachen: entweder Umschaltung zwischen verschiedenen Zeichensätzen oder ein universeller Zeichensatz, der für mehrere, viele oder gar alle Sprachen geeignet ist. Wie wir gesehen haben, löst Unicode dieses Problem.

Aber auch über der Ebene der Zeichen gibt es strukturelle Eigenschaften, in denen sich die Sprachen unterscheiden. Wenn solche Eigenschaften in einem Programm festgeschrieben sind, behindern oder verhindern sie sie Internationalisierung des Programms. Daher müssen Programmierer um diese Eigenschaften wissen, damit sie deren Fixierung im Programm vermeiden können.

Man kann nicht verlangen, dass Programmierer ein tief gehendes linguistisches Wissen haben. Vielmehr sollten sie wissen, was man in der Programmierung vermeiden muss, um ein Programm zu internationalisieren oder leicht internationalisierbar zu machen.

5.1 Vort-ordo en frazo

La ordo de la vortoj en frazo aŭ sintagmo gravas en ĉiuj lingvoj, en kelkaj pli, en aliaj malpli. Krome la ebla(j) vortordo(j) estas malsamaj en malsamaj lingvoj.

Kiam oni internaciigas kompletajn frazojn, ekzemple mesaĝojn al uzanto, la problemon de la vortordo devas solvi la tradukanto de la teksto, dum la lokecigo. Sed okazas, ke tiaj mesaĝoj havas variajn partojn, tiel nomatajn parametrojn. Por tiaj parametroj ekzistas du tradiciaj teknikoj: La uzo de anstataŭaĵo (lokotenaĵo) kaj la disdivido de la frazo.

Unuavide la divido ŝajnas pli simpla: Kiam meze de iu eligota frazo aperis varia elemento, oni eligis unue la unuan parton, poste la varian parton, poste la duan. La du partoj estas aparte tradukeblaj (kompreneble la tradukanto devas koni ambaŭ partojn kaj scii, ke ili apartenas al unu sama frazo):

5.1 Wortstellung im Satz

Die Anordnung der Wörter im Satz oder Satzteil ist in allen Sprachen von Bedeutung, in manchen mehr, in anderen weniger. Außerdem unterscheiden sich die möglichen Wortstellungen in den einzelnen Sprachen.

Wenn man ganze Sätze, zum Beispiel Meldungen an den Benutzer, internationalisiert, muss der Übersetzer das Problem der Wortstellung bei der Lokalisierung lösen. Es kommt aber vor, dass solche Meldungen variable Teile haben, so genannte Parameter. Zur Behandlung solcher Parameter gibt es zwei traditionelle Techniken: Die Verwendung eines Platzhalters oder die Aufteilung des Satzes.

Zunächst erscheint die Aufteilung einfacher: Wenn in der Mitte eines Satzes ein variables Element steht, gibt man zuerst den ersten Teil aus, dann den variablen Teil, zuletzt den zweiten. Die beiden festen Teile werden getrennt übersetzt (natürlich muss der Übersetzer beide Teile kennen und wissen, dass sie zusammen gehören).

Sur la disko restas 17 GB da libera spaco.
Auf der Platte sind noch GB frei.

Oni vidas, ke tiu tekniko kondukas al iom strangaj "tradukoj"; tute ne eblas traduki la partojn aparte, sed nur kadre de la tuta frazo. Pli moderna tekniko uzas unu frazo-skemon kun anstataŭaĵo (%s) en la mezo:

Wie man sieht, führt diese Technik zu seltsamen "Übersetzungen"; man kann die Teile nicht einzeln übersetzen, sondern nur im Rahmen des ganzen Satzes. Eine modernere Technik benutzt ein Satz-Schema mit einem Platzhalter (%s) in der Mitte:

Sur la disko restas %s GB da libera spaco. 17
Auf der Platte sind noch %s GB frei.

La tekniko principe funkcias ankaŭ kun pluraj parametroj, se la vortordo restas la sama en la uzataj lingvoj:

Die Technik funktioniert grundsätzlich auch mit mehreren Parametern, wenn die Wortstellung in den verwendeten Sprachen dieselbe ist:

Sur disko %s restas %s GB da libera spaco. /dev/hd4 17
Auf der Platte %s sind noch %s GB frei.

Sed se la vortordo varias, ambaŭ teknikoj fiaskas. Ni konsideru la okazon de la angla lingvo, kiu ofte metas epitetan substantivon antaŭ determinatan substantivon, kie multaj aliaj eŭropaj lingvoj faras inverse. Tion montras jena ekzempla frazo, kiu enhavas tri variajn elementojn:

  • artikolo
  • speco de komputila flank-aparato (printilo, ekrano, klavaro, muso, skanilo, kamerao, ...)
  • nomo (tipo) de tiu flankaparato

Wenn die Wortstellung unterschiedlich ist, versagen beide Techniken. Betrachten wir die Wortstellung der englischen Sprache, die oft ein attributives Substantiv vor das bestimmte Hauptwort stellt, wo viele andere europäische Sprachen es umgekehrt machen. Das zeigt der folgende Beispielsatz, der drei variable Elemente enthält.

  • einen Artikel
  • eine Art von Peripherie-Geräten für Rechner (Drucker, Bildschirm, Tastatur, Maus, Scanner, Kamera, …)
  • den Namen (Typ) eines solchen Gerätes
eo: Informoj pri la presilo AGFA P 400 1 2 3
de: Information über den Drucker AGFA P 400 1 2 3
en: Information on the AGFA P 400 printer 1 3 2
ro: informaţie despre imprimanta AGFA P 400 (21) 3
eo: la ekrano Tektronix 4004
de: den Bildschirm Tektronix 4004
en: the Tektronix 4004 screen
ro: ecranul Tektronix 4004

La ekzempla frazo montras, ke la tri variaj elementoj aperas en malsama ordo: La angla metas la tipon antaŭ la speco, la germana kaj la internacia inverse. Tial ne eblas la uzo de du egalaj anstataŭaĵoj.

La kutima solvo estas numeri la anstataŭaĵojn, kiel montras jena ekzemplo, en kiu la angla skemo uzas la vicordon 1-3-2:

Der Beispielsatz zeigt, dass die drei variablen Elemente in unterschiedlicher Reihenfolge auftreten: Das Englische setzt den Typ vor die Art, Deutsch und Esperanto machen es umgekehrt. Daher können keine zwei gleichen Platzhalter verwendet werden.

Die übliche Lösung besteht darin, die Platzhalter zu nummerieren, wie im folgenden Beispiel, wo die Reihenfolge 1-2-3 im Deutschen zu 1-3-2 im englischen Schema wird.

Informoj pri %1$s %2$s %3$s la presilo AGFA P 400
Informationen über %1$s %2$s %3$s den Drucker
Information on %1$s %3$s %2$s the printer
Informaţie despre %3$s%1$s %2$s a imprimant-

Kvankam en la angla kaj esperanta tekstoj oni povus aldoni la artikolon ("la", "the") al la frazo-skemo, la germana ekzemplo montras, ke tio ne ĝenerale eblas, ĉar en la germana lingvo la artikolo dependas de la substantivo (de ties genro). Necesas do stori la artikolon kune kun la vorto, aŭ iel "kalkuli" ĝin el la genro.

La ekzemplo de la rumana lingvo montras, ke artikolo ne ĉiam estas antaŭ la substantivo, sed povas modifi ties finaĵon. Tiun problemon ne solvas la tekniko de anstataŭaĵoj.

Obwohl man im englischen und im Esperanto-Text den Artikel ("la", "the") fest ins das Satzschema schreiben könnte, zeigen die Beispiele für Deutsch und Rumänisch, dass das nicht allgemein möglich ist, weil der Artikel vom Substantiv (von dessen Geschlecht) abhängt. Man muss also zusammen mit dem Wort auch den Artikel speichern oder aus dem Geschlecht "berechnen".

Das rumänische Beispiel zeigt auch, dass der Artikel nicht immer vor dem Substantiv steht, sondern zum Beispiel dessen Endung modifizieren kann. Dieses Problem kann die Platzhaltertechnik nicht lösen.

Por la montritaj lingvoj la problemo estas solvebla per du-ŝtupa anstataŭado: La baza teksto enhavas nur unu anstataŭaĵon, por la "specoj de aparatoj". La tekstoj por tiu anstataŭaĵo enhavas siavice alian anstataŭaĵon, por la "nomo". Necesas do du-faza anstataŭigo.

Für die erwähnten Sprachen lässt sich das Problem durch eine zweistufige Substitution lösen: Der Grundtext enthält nur einen einzigen Platzhalter, für die "Geräteart". Die Texte für diesen Platzhalten enthalten ihrerseits einen weiteren Platzhalter, für den "Typ". Es ist also eine zweiphasige Ersetzung notwendig.

eo Informoj pri %s la presilo %s AGFA P 400
de Information über %s den Drucker %s AGFA P 400
en Information on %s the %s printer AGFA P 400
ro Informaţie despre %s imprimanta %s AGFA P 400
Unua anstataŭigo Informoj pri la presilo %s Information über den Drucker %s Erste Ersetzung
Dua anstataŭigo Informoj pri la presilo AGFA P 400 Information über den Drucker AGFA P 400 Zweite Ersetzung

Kiu estas la esenca diferenco al la antaŭa tekniko? Tie ĉi la fraz-parto (en la dua kolumno de la tabelo), kiu (en tiuj kvar lingvoj) havas malsaman vort-ordon, estas komplete, nedisigite en la teksto-listo, do bone tradukebla. La du-faza anstataŭigo solvas la problemon por la lingvoj angla, germana kaj rumana, sed ĉar la solvo troviĝas en la programo kaj ne en internaciiga kadraĵo, ne estas garantio, ke ĝi funkcias por aliaj lingvoj.

Wo liegt der grundlegende Unterschied zur vorigen Technik? Hier steht der Satzteil (zweite Spalte der Tabelle), der sich (in diesen vier Sprachen) in der Wortstellung unterscheidet, ganz und ungeteilt in der Textliste, ist also gut übersetzbar. Diese zweistufige Ersetzung löst das Problem für Englisch, Deutsch und Rumänisch, aber da die Lösung im Programm und nicht in einem Internationalisierungs-Rahmen enthalten ist, gibt es keine Garantie, dass sie auch für andere Sprachen funktioniert.

5.2 Singularo kaj pluralo

5.2 Einzahl und Mehrzahl

Kiam nombreblan substantivon kvalifikas varia nombro, ekestas la problemo, en kiu formo aperu la substantivo. Ekzemple en Esperanto ĝi povas esti singulara (-o) aŭ plurala (-oj). En tabeloj eklas enkrampigi la "j" ("peco(j)"), sed en kompleta frazo tio aspektas malbele. Pli bele estas distingi inter "unu" kaj "alia kvanto" kaj ĝuste meti singularon aŭ pluralon. Kompreneble necesas traduki ambaŭ formojn al aliaj lingvoj.

Tiu distingo inter singularo kaj pluralo estas subtenata de kelkaj program-pakaĵoj, ekzemple la klaso KLocale el la kadraĵo "Qt" de firmao "Trolltech", kiu enhavas jenan metodon:

Wenn ein zählbares Substantiv von einer wechselnden Zahl qualifiziert wird, ergibt sich das Problem, in welcher Form das Substantiv stehen soll. Im Deutschen kann es in der Einzahl oder in der Mehrzahl stehen. In Tabellen kann man die Mehrzahlform einklammern ("Datei(en)", "Stimme(n)"), aber in einem ganzen Satz sieht das unschön aus. Schöner ist es, zwischen "eins" und "andere Anzahl" zu unterscheiden und ordentlich die Ein- oder Mehrzahl zu setzen. Dazu muss man natürlich in jeder Sprache beide Formen zur Verfügung haben.

Diese Unterscheidung zwischen Ein- und Mehrzahl wird von einigen Programm-Bibliotheken unterstützt, zum Beispiel von der Klasse KLocale des Rahmens "Qt" der Firma "Trolltech", die folgende Methode enthält:

QString KLocale::translate(singularo, pluralo, nombro)

Tiu metodo, kiu havas la iom bombastan nomon "traduku", prenas singularan esprimon (povas esti tuta frazo), ties pluralan version kaj nombron. La pluralo devas enhavi la anstataŭaĵon "%d", kies lokon prenas la nombro.

Ni nun pere de tiu metodo metu la esprimon "unu botelo pendas ĉe la mur'" en la nombrojn 1 ĝis 5:

Diese Methode, deren Name etwas anspruchsvoll "übersetze" bedeutet, bekommt im Aufruf einen Ausdruck (es kann auch ein ganzer Satz sein) in der Einzahl, denselben Ausdruck in der Mehrzahl und eine Zahl. Der Mehrzahlausdruck muss den Platzhalter "%d" enthalten, der durch die Zahl ersetzt wird.

Setzen wir nun mit dieser Methode den Ausdruck "ein großes Vorbild" in die Zahlen von 1 bis 5:

singularo:
pluralo:
"unu botelo pendas ĉe la mur'"
"%d boteloj pendas ĉe la mur'"
"Ein großes Vorbild"
"%d große Vorbilder"
Einzahl
Mehrzahl
1 unu botelo pendas ĉe la mur'Ein großes Vorbild 1
2 2 boteloj pendas ĉe la mur'2 große Vorbilder 2
3 3 boteloj pendas ĉe la mur'3 große Vorbilder 3
4 4 boteloj pendas ĉe la mur'4 große Vorbilder 4
5 5 boteloj pendas ĉe la mur'5 große Vorbilder 5

Simile funkcias la funkcio I18N:NGETTEXT de la program-lingvo CLISP, kaj la funkcio dcngettext de la programo gawk.

Anoj de multaj lingvoj kontentiĝas per tiuj du ebloj kaj ne suspektas, ke aliaj lingvoj distingas pli delikate. Slavaj lingvoj uzas malsamajn formojn ek de nombro 5; ili do uzas tri formojn de substantivo post nombro (ekzemple en la rusa la singulara nominativo, la singulara genitivo, la plurala genitivo; en la slovaka la singulara nominativo, la plurala nominativo, la plurala genitivo). La araba lingvo havas dualon, apartan formon por du ekzempleroj.

Se la programinto de programo ne konsideris tiajn diferencojn dum la internaciigo, estas preskaŭ neeble poste konsideri ilin ĉe lokigo.

La akordo de nombroj kaj substantivoj estas kompleksa fenomeno. Principe estas eble, pli bone subteni la programanton sur tiu kampo, sed necesas varia nombro da formoj (ekzemple du en Esperanto, tri en la slovaka).

Ähnlich funktioniert die Funktion I18N:NGETTEXT der Programmiersprache CLISP und die Funktion dcngettext des Programmms gawk.

Sprecher vieler Sprachen sind mit diesen beiden Möglichkeiten zufrieden und denken nicht daran, dass andere Sprachen feiner unterscheiden. Slawische Sprachen verwenden ab der Zahl 5 andere Formen, sie benutzen also nach Zahlen drei verschiedene Formen des Substantivs (zum Beispiel im Russischen den Nominativ Einzahl, den Genitiv Einzahl und den Genitiv Mehrzahl; im Slowakischen den Nominativ Einzahl, den Nominativ Mehrzahl und den Genitiv Mehrzahl). Das Arabische hat einen "Dual", eine besondere Form für zwei Exemplare.

Wenn ein Programmierer diese Unterschiede nicht bei der Internationalisierung bedacht hat, ist es fast unmöglich, sie später bei der Lokalisierung zu berücksichtigen.

Die Abhängigkeit zwischen Zahlen und Substantiven ist eine komplexe Erscheinung. Im Prinzip ist es möglich, den Programmierer hier besser zu unterstützen, aber die Zahl der verwendeten Formen muss variabel sein (zum Beispiel zwei im Deutschen, drei im Arabischen).

5.3 Nombroj

Multaj lingvoj nun uzas la eŭropajn-arabajn dekumajn ciferojn, eĉ lingvoj, kiuj ne uzas latinan alfabeton. Sed tiuj lingvoj ne uzas tiujn ciferojn en la sama maniero. La precipaj diferencoj estas en la apartigo de la frakciaj pozicioj kaj la grupigo de ciferoj en grandaj nombroj.

En Esperanto oni uzas komon (,) por la unua kaj punkton (.) por la dua celo. La nombro "dek milionoj kaj kvarono" estas do skribata "10.000.000,25". La grupigo povas manki, sed ĉiam grupigas po tri ciferojn.

Por la apartigo de la frakciaj pozicioj estas uzata ankaŭ la punkto, ekzemple en la angla kaj japana lingvoj. Evidente tiam necesas alia simbolo por la grupigo, kutime la komo; punkto kaj komo do interŝanĝas la rolojn. Sed ekzistas aliaj kombinoj; svisoj uzas la apostrofon por grupigi (kaj la komon por apartigi). Ankaŭ la spaceto estas uzata por grupigi.

La reguloj pri apartigo kaj grupigo do estas simplaj: Necesas nur scii la du simbolojn uzatajn en la koncerna lingvo.

Iom grandaj nombroj skribitaj per vortoj preskaŭ ne aperas en programoj. Iam ili estis uzataj en maŝine presitaj ĉekoj, sed nun preskaŭ ne plu.

5.3 Zahlen

Viele Sprachen verwenden inzwischen die europäisch-arabischen dezimalen Ziffern, sogar Sprachen, die nicht das lateinische Alphabet verwenden. Aber diese Sprachen verwenden diese Ziffern auf verschiedene Weise. Die wichtigsten Unterschiede liegen in der Abtrennung der Kommastellen und in der Gruppierung der Ziffern bei großen Zahlen.

Im Deutschen verwendet man in der ersten Funktion (als Dezimaltrenner) das Komma (,) und in der zweiten den Punkt (.). Die Zahl "zehn Millionen ein Viertel" wird also als "10.000.000,25" geschrieben. Die Gruppierung kann fehlen, fasst aber immer je drei Ziffern zusammen.

Zur Abtrennung der Kommastellen (Bruchstellen) wird auch der Punkt verwendet, zum Beispiel im Englischen und Japanischen. Dann ist natürlich ein anderes Symbol für die Gruppierung erforderlich, gewöhnlich das Komma; Punkt und Komma tauschen also die Rollen. Aber es gibt auch andere Kombinationen; in der Schweiz verwendet man den Apostroph zur Gruppierung (und das Komma zur Abtrennung). Auch das Leerzeichen wird zur Gruppierung verwendet.

Die Regeln zur Abtrennung und Gruppierung sind einfach. Es genügt zu wissen, welche beiden Symbole eine Sprache dazu verwendet.

Größere Zahlen in Worten (Zahlwörter) treten in Rechnerprogrammen fast nicht auf. Frührer wurden sie auf maschinell ausgestellten Schecks benutzt, jetzt jedoch fast nicht mehr.

5.4 Datoj

Ekzistas multaj manieroj skribi daton: Por la sinsekvo de jaro, monato kaj tago ekzistas ses ebloj, la jaron eblas skribi per du aŭ kvar ciferoj, la tagon per du aŭ (parte) per unu, la monaton same aŭ eĉ per literoj (monata nomo) aŭ romiaj nombroj. Kaj eblas uzi diversajn disigilojn: punkton, ligo-strekon (-), stangon (/), ktp.

Por internaciigo gravas, ke la programo neniam mem transformu daton al legebla formo, sed uzu por tio iun bibliotekon (kadraĵon), kiu scias, en kiu maniero la uzulo deziras vidi datojn.

Aparta problemo estas la ekzisto de diversaj tempozonoj sur la Tero. Necesas distingi inter vera datoj (kiuj signifas precizan tagon) kaj tempoj (kiuj signifas precizan tempon ene de tago kaj do povas varii laŭ la tempo-zono). Ekzemploj:

  • La novjara tago estas la unua de januaro. Tiu indiko ne dependas de la tempozono.
  • Komence de majo 2004 okazis lun-eklipso, kies maksimumo laux mez-eŭropa somera tempo estis je 2004-05-04, 22:30. Laŭ la tempo de Moskvo ĝi okazis ke 2004-05-05. 0:30, do je alia tago.

En negoca organizado festotagoj estas ekzemplo por la unua kategorio (datoj), tempe interkonsentitaj aferoj (ekz. telefonaj konferencoj) estas ekzemplo por la dua (tempoj).

5.4 Datumsangaben

Es gibt viele Arten, ein Datum zu schreiben: Für die Reihenfolge von Jahr, Monat und Tag gibt es sechs Möglichkeiten, das Jahr kann man mit zwei oder vier Ziffern schreiben, manche Tage kann man mit einer oder zwei Ziffern schreiben, die Monate ebenso oder auch in Worten (Monatsname) oder mit römischen Zahlen. Und es gibt verschiedene Trennzeichen: Punkt, Bindestrich (-), Schrägstrich (/) usw.

Für die Internationalisierung ist es wichtig, dass Programme nie selbst ein Datum in eine lesbare Darstellung verwandeln, sondern dazu eine Bibliotheksfunktion (Rahmen) verwenden, die weiß, in welcher Form der Benutzer ein Datum dargestellt haben will.

Ein besonderes Problem stellt die Existenz verschiedener Zeitzonen auf der Erde dar. Man muss unterscheiden zwischen echten Datumsangaben (die einen festen Tag angeben und von Zeitzonen unabhängig sind) und Zeitangaben (die eine bestimmte Tageszeit angeben und daher je nach Zeitzone variieren können). Beispiele:

  • Der Neujahrstag ist der 1. Januar. Diese Angabe hängt nicht von der Zeitzone ab.
  • Anfang Mai 2004 fand eine Mondfinsternis statt, deren Maximum nach mitteleuropäischer Sommerzeit am 4. Mai um 22:30 Uhr war. Nach Moskauer Zeit war sie am 5. Mai um 0:30 Uhr, also an einem anderen Tag.

In der Geschäftswelt sind Feiertage ein Beispiel für den ersten Fall (Datum), vereinbarte Termine (z. B. Telefonkonferenz) für den zweiten Fall (Zeitangabe).

5.5 Tempoj (tagaj)

Tagaj tempoj kutime estas indikataj per horoj kaj minutoj, foje ankaŭ sekundoj. Kutime almenaŭ la minutojn oni skribas per du ciferoj. Disigilo ofte estas punkto aŭ dupunkto (:).

Sed ekzistas grava diferenco inter la 12-hora sistemo, uzata precipe en Usono, kaj la 24-hora sistemo uzata en aliaj landoj (kie la 12-hora sistemo estas ofte uzata en neformala konversacio): La 12-hora sistemo bezonas, por sendube difini tempon, distingi inter la du 12-horaj duonoj de tago. En Usono oni distingas inter la horoj 00:00:00 ĝis 11:59:59 (antaŭtagmeze, latine ante meridiem, mallonge am) kaj la horoj 12:00:00 ĝis 23:59:59 (posttagmeze, latine post meridiem, mallonge pm). Plia malfacilaĵo estas, ke la horo inter 00:00:00 kaj 00:59:59 estas skribata kiel "0", sed la horo inter 12:00:00 kaj 12:59:59 kiel "12".

Ankaŭ tie ĉi necesas, ke programoj lasu la aranĝon de tempoj al biblioteka programo.

5.5 (Tages-)Zeiten

Zeitangaben bestehen normalerweise aus Stunden und Minuten, manchmal auch Sekunden. Gewöhnlich schreibt man zumindest die Minuten immer mit zwei Ziffern. Trennzeichen ist häufig der Doppelpunkt (:).

Es gibt jedoch die Unterscheidung zwischen dem Zwöf-Stunden-System, das vor allem in den USA verwendet wird, und dem 24-Stunden-System der anderen Länder (wo das Zwöf-Stunden-System nur im informellen Gespräch verwendet wird): Das Zwöf-Stunden-System erfordert zur eindeutigen Zeitangabe eine Unterscheidung zwischen den beiden zwölfstündigen Tageshälften. In den USA unterscheidet man zwischen den Stunden von 00:00:00 bis 11:59:59 (vormittags, lateinisch ante meridiem, abgekürzt "am") und den Stunden von 12:00:00 bis 23:59:59 (nachmittags, lateinisch post meridiem, abgekürzt "pm"). Eine weitere Schwierigkeit ist, dass die Stunde zwischen 00:00:00 und 00:59:59 als "0" geschrieben wird, dagegen die Stunde zwischen 12:00:00 und 12:59:59 als "12".

Auch hier gilt, dass Programme die Darstellung von Uhrzeiten einer Bibliotheksfunktion überlassen müsen.

5.6 Alfabeta ordigo

La kodo Askio aranĝis la literojn laŭ ilia alfabeta sinsekvo. Tial oni povis kompari du literojn subtrahante iliajn Aski-valorojn. Ekzemple "G=71", "K=75", 75−71 estas pozitiva, do "K" venas post "G".

Tiu simpla algoritmo eĉ ne funkcias por la angla lingvo, se aperas majuskloj (A–Z) kaj minuskloj (a–z), ĉar en Askio ĉiuj majuskloj staras antaŭ ĉiuj minuskloj. Necesas do speciala traktado de majuskloj. Iam estis kutime por ordigo minuskligi ĉiujn literojn, tio okazis per adicio de 32 (A=65, a=97 ktp.). Aŭ pli simple, oni metis la biton por "32" al "1".

Tiu metodo tute ne funkcias por lingvoj, kiuj havas ne-askiajn literojn. Ĝi eĉ ne funkcias, se lingvo havas specialajn regulojn por la alfabeta ordigo de askiaj literoj. Jen kelkaj ekzemploj:

  • La hispana lingvo ordigas la liter-kombinon "ll" (duobla "l") post "l" kaj la kombinon "ch" post "c". Oni ordigas ekzemple jene: "cura" / "champán" / "luna" / "llave".
  • La ĉeĥa lingvo ordigas la liter-kombinon "ch" post "h". Oni ordigas ekzemple jene: "hydrant" / "chirurg" / "ikona".

Jen kelkaj reguloj por ne-askiaj literoj:

  • La sveda lingvo ordigas la literon "ä" post "z" (kaj "å"); la germana ordigas ĝin kvazaŭ "a" en leksikonoj kaj kvazaŭ "ae" en telefonlibroj.
  • En la ĉeĥa lingvo hoketo (haĉeko) sur vokalo estas sensignifa por ordigo; "e" kaj "ĕ" estas ordigataj egale. Hoketo sur "c" aŭ "s" igas ĝin alia litero, ordigata post "c" resp. "s": "cylindr" / "čaj" / "dáma".
  • En la rumana lingvo ankaŭ ĉe vokaloj estas ordiga diferenco inter "a" und "ă": "cazarmă" / "că" / "cădea".
  • La germana lingvo ordigas la literon "ß" kiel la kombinon "ss": "muss" / "Muße" / "musste".

5.6 Alphabetische Ordnung

Der ASCII-Kode ordnet die Buchstaben nach ihrer alphabetischen Reihenfolge an. Daher kann man dort zwei Buchstaben vergleichen, indem man ihre ASCII-Werte voneinander abzieht. Beispiel: "G=71", "K=75", 75−71 ist positiv, also kommt "K" hinter "G".

Dieser einfache Algorithmus funktioniert nicht einmal für das Englische, wenn Großbuchstaben (A–Z) und Kleinbuchstaben (a–z) vorkommen. In ASCII stehen nämlich die Großbuchstaben vor allen Kleinbuchstaben. Man muss also die Großbuchstaben gesondert behandeln. Früher war es üblich, zur alphabetischen Ordnung (Sortierung) alles in Kleinbuchstaben umzuwandeln; das geschah durch Addition von 32 (A=65, a=97 usw.). Oder, noch einfacher, man setzte das Bit für "32" auf "1".

Diese Methode funktioniert natürlich nicht, wenn eine Sprache Nicht-ASCII-Zeichen hat. Sie funktioniert nicht einmal für ASCII-Zeichen, wenn eine Sprache spezielle Sortierregeln für solche Zeichen hat. Hier einige Beispiele:

  • Die spanische Sprache ordnet die Buchstabenkombination "ll" (Doppel-"l") hinter dem "l" und die Kombination "ch" hinter dem "c" ein. Man ordnet zu Beispiel so: "cura" / "champán" / "luna" / "llave".
  • Die tschechische Sprache ordnet "ch" hinter "h" ein. Man ordnet zu Beispiel so: "hydrant" / "chirurg" / "ikona".

Hier einige Regeln für Nicht-ASCII-Buchstaben:

  • Das Schwedische ordnet den Buchstaben "ä" hinter "z" (und "å") ein; das Deutsche dagegen wie "a" in Lexika und wie "ae" in Telefonbüchern.
  • Im Tschechischen ist ein Hatschek (Haken) auf einem Vokal ohne Bedeutung für die Sortierung; "e" und "ĕ" werden gleich eingeordnet. Ein Hatschek auf einem "c" oder "s" dagegen macht aus diesem einen eigenen Buchstaben, der hinter "c" bzw. "s" kommt: "cylindr" / "čaj" / "dáma".
  • Im Rumänischen sind auch bei Vokalen "a" und "ă" verschiedene Buchstaben mit eigener Sortierung: "cazarmă" / "că" / "cădea".
  • Im Deutschen wird der Buchstabe "ß" wie die Kombination "ss" sortiert: "muss" / "Muße" / "musste".

La diversajn diferencojn inter literoj kaj ilian efikon al la ordigo oni povas klasi jene:

  • Diferencoj unuarangaj estas la plej gravaj. Se du vortoj havas diferencon unuarangan, la unua tia diferenco decidas pri la alfabeta ordo. Ekzemplo estas la diferenco inter malsamaj bazaj latinaj literoj: La diferenco inter "a" kaj "k" estas unuaranga. En kelkaj lingvoj ankaŭ aliaj diferencoj estas unuarangaj: Ekzemple en la rumana ankaŭ la diferenco inter "a" kaj "ă".
  • Diferencoj duarangaj efikas, se du vortoj ne havas unuarangan diferencon. Tiam la unua duagrada diferenco decidas pri la ordo. Ekzemploj estas la diferenco inter "e" kaj "é" en la ĉeĥa kaj la diferenco inter "a" kaj "ä" en la germana.
  • Diferencoj triarangaj efikas, se du vortoj ne havas unua- aŭ duarangan diferencon. Tia diferenco estas en multaj lingvoj la diferenco inter minusklo kaj majusklo.

Eblas aldoni pliajn rangojn por interpunkcioj, se ili aperas en aŭ ĉirkaŭ vortoj. La rangoj de la diferencoj dependas de la lingvo. Eĉ dependas de la lingvo, ĉu diferencoj maldekstraj estas pli gravaj ol dekstraj aŭ inverse.

Pri detaloj ekzistas artikolo (anglalingva) de la Unikoda konsorcio:

Die Unterschiede zwischen Buchstaben und ihre Bedeutung für die alphabetische Ordnung lassen sich folgendermaßen einteilen:

  • Unterschiede der ersten Stufe (primäre Unterschiede) haben die höchste Bedeutung. Der erste solche Unterschied zwischen zwei Wörtern entscheidet über die alphabetische Reihenfolge. Ein Beispiel sind die Unterschiede zwischen verschiedenen Buchstaben des lateinischen Grundalphabets: "a" und "g" unterscheiden sich auf der ersten Stufe. In manchen Sprachen sind auch andere Unterschiede auf der ersten Stufe: im Rumänischen etwa der Unterschied zwischen "a" und "ă".
  • Unterschiede der zweiten Stufe wirken sich aus, wenn zwei Wörter sich auf der ersten Stufe nicht unterscheiden. Dann entscheidet der erster Unterschied auf der zweiten Stufe über die Ordnung. Ein Beispiel ist der Unterschied zwischen "e" und "é" im Tschechischen oder zwischen "a" und "ä" im Deutschen.
  • Unterschiede auf der dritten Stufe kommen zur Wirkung, wenn sich zwei Wörter weder auf der ersten noch auf der zweiten Stufe unterscheiden. Ein solcher Unterschied ist in vielen Sprachen der Unterschied zwischen Klein- und Großbuchstaben.

Man kann eine weitere Stufe für Satzzeichen einführen, wenn sie in Wörtzern oder um Wörter herum auftreten (Bindestrich, Anführungszeichen). Die Stufen der Unterschiede sind sprachabhängig. Sogar ob links stehende Unterschiede mehr Bedeutung als rechts stehende haben oder umgekehrt, ist sprachabhängig.

Zu den Einzelheiten existiert ein (englischer) Artikel des Unicode-Konsortiums:

Unicode Collation Algorithm

5.7 Majuskligo kaj minuskligo

La latina alfabeto ekzistas en du variantoj: Majuskla (A-Z) kaj minuskla (a-z). Ekzistas situacioj, kie necesas konverti majusklojn al minuskloj aŭ inverse. La plej simpla estas, ke komence de frazo oni uzas majusklon. Por alfabete ordigi oni kutime ignoras la "usklecon" kaj, ekzemple, konvertas ĉion al majuskloj.

En Askio estis simple transformi inter majuskloj kaj minuskloj: necesis nur adicii resp. subtrahi 32 de la kod-valoroj. En Unikodo ne nur estas variaj diferencoj inter la kod-valoroj de majuskloj kaj minuskloj; eĉ ne ĉiam estas unika rilato inter majuskloj kaj minuskloj. Ekzemplo estas la germana lingvo, kie litero "ß" majuskliĝas kiel "SS". Tiu majuskligo ne estas facile inversigebla, ĉar "SS" povas minuskle esti ankaŭ "ss" (FUSS -> Fuß, FLUSS -> Fluss). En ne-latinaj alfabetoj eĉ mankas la distingo de uskleco.

5.7 Groß- und Kleinschreibung

Das lateinische Alphabet existiert in zwei Varianten: Großbuchstaben (A-Z) und Kleinbuchstaben (a-z). In bestimmten Situationen ist eine Umwandlung zwischen Groß- und Kleinbuchstaben notwendig. Der einfachste Fall ist, dass man am Anfang eines Satzes groß schreibt. Zur alphabetischen Ordnung ignoriert man den Unterschied und wandelt zum Beispiel alles in Großbuchstaben um.

In ASCII ist es einfach, zwischen Groß- und Kleinbuchstaben umzuwandeln: Es genügt, zum Kode-Wert einfach 32 zu addieren bzw. abzuziehen. In Unicode gibt es nicht nur unterschiedliche Differenzen zwischen den Kode-Werten von Groß- und Kleinbuchstaben, es gibt nicht einmal immer eine eindeutige Beziehung zwischen Groß- und Kleinbuchstaben. Ein Beispiel ist die deutsche Sprache, bei der "ß" in Großbuchstaben zu "SS" wird. Diese Umwandlung kann man nicht einfach umkehren, da "SS" in Kleinbuchstaben auch zu "ss" werden kann (FUSS -> Fuß, FLUSS -> Fluss). In nicht-lateinischen Alphabeten fehlt die Unterscheidung zwischen Groß- und Kleinbuchstaben.

5.8 Kiel elekti lingvon?

Uzuloj devas iel komuniki al programo, en kiu lingvo ili volas dialogi. Ekestas la demando, kiel elekti lingvon kaj kiel montri elektitan lingvon. Pluraj metodoj estas uzataj:

  • En retpaĝoj oni ofte indikas lingvoj per la flago de lando, en kiu oni parolas la lingvon. Tio estas problema, ĉar estas landoj kun pluraj lingvoj kaj lingvoj kun pluraj landoj.
  • Foje oni indikas la lingvojn en iu centra lingvo, ekzemple la angla, kies scion oni postulas. Tio kontraŭas la celon de internaciigo, nome dialogi kun uzulo en ties propra lingvo.
  • Kelkaj programoj prezentas nomojn de lingvoj en la lingvo uzata de la lasta uzulo. Tio malfaciligas al nova uzulo la elekton de sia lingvo, kaj al uzulo, kiu erare ŝanĝis la lingvon, la reiron.
  • Ofte oni prezentas lingvojn tiel, ke ĉiu lingvo estas nomata en tiu lingvo mem. La konsidero malantaŭ tio estas, ke ne utilas elekti lingvon, kiun oni ne komprenas. Aliflanke tiel oni ĉiam komprenas, kiel elekti sian propran aŭ deziratan lingvon. Tiun metodon uzas ekzemple la reta enciklopedio "Vikipedio".
  • Eblas precize difini lingvojn per ilia kodo normigita laŭ ISO 639. Tiu normo difinas du-literajn kaj tri-literajn kodojn por lingvoj. Kvankam oni eble ne postulu ilian uzon de la uzulo, ene de komputilo tiuj kodoj estas tre taŭgaj. Eblas eĉ distingi landajn variaĵojn de lingvoj, per aldono de lando-kodo (laŭ ISO 3166): "fr_CH" indikas la svisan variaĵon de la franca lingvo.

Resume, oni prezentu al uzulo ĉiujn lingvonomojn en la lingvo mem, kaj en komputilo uzu kodojn laŭ ISO 639.

5.8 Auswahl einer Sprache

Benutzer müssen einem Programm mitteilen, in welcher Sprache sie es bedienen wollen. Dabei erhebt sich die Frage, wie man eine Sprache auswählt und wie eine ausgewählte oder auswählbare Sprache angezeigt wird. Hier sind verschiedene Möglichkeiten gebräuchlich:

  • In WWW-Seiten werden Sprachen oft durch die Flaggen von Ländern angezeigt, in denen diese Sprachen gesprochen werden. Das ist problematisch, weil es Länder mit mehreren Sprachen und Sprachen mit mehreren Ländern gibt.
  • Manchmal werden die Sprachen in einer zentralen Sprache angeboten, deren Kenntnis vorausgesetzt wird, zum Beispiel Englisch. Das widerspricht dem Ziel der Internationalisierung, mit dem Benutzer in dessen Sprache zu sprechen.
  • Oft werden Sprachen so dargestellt, dass jede Sprache in der Sprache selbst bezeichnet wird. Dahinter steckt der Gedanke, dass man eine Sprache, die man nicht versteht, ohnehin nicht auswählt. Andererseits ist sichergestellt, dass man die Anzeige der eigenen Sprache immer versteht. Diese Methode verwendet zum Beispiel die Internet-Enzyklopädie Wikipedia.
  • Sprachen können exakt festgelegt werden durch ihren nach ISO 639 genormten Kode. Diese Norm legt zwei- und drei-buchstabige Kodes für Sprachen fest. Auch wenn man vom Benutzer vielleicht die Kenntnis dieser Kodes nicht verlangen will, sind sie doch für die Verwendung im Rechner sehr gut geeignet. Sie erlauben auch die Unterscheidung landesspezifischer Sprach-Varianten durch das Anhängen eines Landeskodes nach ISO 3166: "fr_CH" bedeutet die schweizerische Variante des Französischen.

Zusammenfassend kann man empfehlen, dem Benutzer Sprachennamen in der jeweiligen Sprache anzuzeigen und innerhalb des Rechners die Kodes nach ISO 639 zu verwenden.

Malbona metodo elekti lingvojn Bona metodo elekti lingvojn
Schlechte Technik der Sprachauswahl Gute Technik der Sprachauswahl
deeoitja ĉiam/immer
ktp. / usw.

5.9 Fina rimarkigo

La diskutitaj problemoj montras, ke necesas konsideri multajn aferojn por bone internaciigi programon. Aliflanke en la praktiko aperas malpli da problemoj, ol oni eble kredus. La kialo estas, ke komputilaj programoj ne uzas poezion aŭ altnivelan prozon, sed sufiĉe simplan lingvaĵon, kaj ke multaj tekstoj estas fiksaj kaj ne enhavas variajn elementojn.

5.9 Abschließende Bemerkung

Die behandelten Probleme zeigen, dass man viele Dinge berücksichtigen muss, um ein Programm wirklich gut zu internationalisieren. Andererseits treten in der Praxis weniger Probleme auf, als man vielleicht annehmen würde. Der Grund dafür ist, dass Rechnerprogramme keine dichterische Sprache oder hochgestochene Prosa verwenden, sondern eher einfache Sprache, und dass viele Texte konstant sind und keine variablen Elemente enthalten.


Specimenaj demandoj:

  • Kiel diferencas la reprezentado de nombroj en diversaj lingvoj?
  • Kial oni ne povas por ĉiuj lingvoj uzi la saman metodon (algoritmon) de alfabeta ordigo?
  • Por kio oni transformas minusklojn al majuskloj?
  • Kiel oni skribas en Eŭropo la horon, kiu en Usono oni skribas "3.45 pm"?
  • Kiel oni prefere distingu lingvojn ene de komputiloj?
  • Kiel oni prefere montru diversajn lingvojn, inter kiuj povas elekti la uzulo?
  • Kie malsama vort-ordo en lingvoj povas kaŭzi problemojn?

Beispielfragen:

  • Wie unterscheidet sich die Darstellung von Zahlen in verschiedenen Sprachen?
  • Warum kann man nicht für alle Sprachen dieselbe Methode (Algorithmus) zur alphabetischen Sortierung benutzen?
  • Wozu wandelt man Kleinbuchstaben in Großbuchstaben um?
  • Wie schreibt man in Europa die Zeitangabe, die man in den USA als "3:45 pm" schreibt?
  • Wie unterscheidet man am besten Sprachen innerhalb des Rechners?
  • Wie zeigt man am besten verschiedene Sprachen an, zwischen denen der Benutzer auswählen kann?
  • Wo kann unterschiedliche Wortstellung in Sprachen ein Problem sein?

>>>