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 frazoLa 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 SatzDie 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). | ||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||
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: | ||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||
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: | ||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||
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:
|
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.
| ||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||
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. | ||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||
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. | ||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||
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: | ||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||
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 NombrojMultaj 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 ZahlenViele 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 DatojEkzistas 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:
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 DatumsangabenEs 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:
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-)ZeitenZeitangaben 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 ordigoLa 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:
Jen kelkaj reguloj por ne-askiaj literoj:
|
5.6 Alphabetische OrdnungDer 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:
Hier einige Regeln für Nicht-ASCII-Buchstaben:
| ||||||||||||||||||||||||||||||||||||||||||||
La diversajn diferencojn inter literoj kaj ilian efikon al la ordigo oni povas klasi jene:
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:
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 minuskligoLa 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 |
5.7 Groß- und KleinschreibungDas 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 | ||||||||||||||||||||||||||||||||||||||||||||
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:
Resume, oni prezentu al uzulo ĉiujn lingvonomojn en la lingvo mem, kaj en komputilo uzu kodojn laŭ ISO 639. |
5.8 Auswahl einer SpracheBenutzer 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:
Zusammenfassend kann man empfehlen, dem Benutzer Sprachennamen in der jeweiligen Sprache anzuzeigen und innerhalb des Rechners die Kodes nach ISO 639 zu verwenden. | ||||||||||||||||||||||||||||||||||||||||||||
5.9 Fina rimarkigoLa 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 BemerkungDie 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:
|
Beispielfragen:
|