<<< [=] >>>

3 Unuaj provoj pri plurlingveco

Por kompreni la malfacilaĵojn de internaciigo kaj la bezonon je specialaj tekniko kaj procedoj, ni iom rigardu historiajn alirojn al plurlingveco in komputiloj.

3 Erste Versuche mit Mehrsprachigkeit

Um die Schwierigkeiten der Internationalisierung und den Bedarf an speziellen Techniken und Vorgehensweisen zu verstehen, betrachten wir historische Ansätze zu Mehrsprachigkeit in Rechnern.

3.1 Uzula plurlingveco

El la vidpunkto de la programanto estas plej simple, se la uzuloj scipovas "la" lingvon de la programo. Tiu metodo estas tre ofte uzata. Ekzemple multaj firmaoj postulas, ke uzuloj en Eŭropo, Afriko kaj Ameriko komprenu la anglan lingvon; ofte ili spertis, ke tio ne nepre funkcias en Azio, kaj ofertas apartan subtenon por iuj aziaj lingvoj.

Ekzemplo estas la programada ilaro de la programlingvo Gxavo (Java), ofertata de firmao Sun Microsystems. Gxi estas havebla nur en la lingvoj angla kaj japana.

3.1 Mehrsprachigkeit der Benutzer

Aus der Sicht des Programmierers ist es am einfachsten, wenn alle Benutzer "die" Sprache des Programms verstehen. Diese Methode wird sehr oft verwendet. Zum Beispiel setzen viele Firmen voraus, dass Benutzer in Europa, Afrika und Amerika das Englische verstehen; oft machen sie die Erfahrung, dass das in Asien nicht unbedingt funktioniert, und bieten spezielle Unterstützung für bestimmte asiatische Sprachen an.

Ein Beispiel sind die Programmierwerkzeuge für die Programmiersprache Java, die die Firma Sun Microsystems anbietet. Sie sind nur auf Englisch und Japanisch verfügbar.

3.2 Ekster-programaj solvoj

La unuaj aliroj al teknika plurlingveco estis provoj ŝanĝi la uzulan lingvon de programo. Precipe temis pri erar-mesaĝoj; eĉ matematikaj programoj, kiuj normale traktas nur nombrojn, povas renkonti situaciojn, en kiuj ili devas raporti problemon, kaj estas pli agrable ricevi tekstan problem-mesaĝon ol nuran kodo-numeron. Sed kiam oni ne komprenas la lingvon de la teksto, la mesaĝo ne helpas.

Kelkaj firmaoj metis kod-numeron antaŭ la mesaĝojn, ekzemple "17: divido per nul". Tiam oni povis presi listojn de la kodoj kun la tekstaj mesaĝoj tradukitaj en aliaj lingvoj. La tradukadon kaj presadon de la listoj eĉ povis fari ĉiu ajn, ne nur la produktanto de la programo. Tio estas grava eco: Se iu "malgranda" lingvo ne estas suficxe grava por la produktanto, tamen iu alia povas fari tiun "lokecigon sur papero".

Numerado de la mesaĝoj estas do baza, rudimenta internaciigo.

Kie tiaj numeroj ne ekzistis, oni tamen povis produkti listojn kun tradukoj, alfabete ordigitaj laŭ la originala lingvo, kiun la programo eligis. Uzulo povis serĉi ricevitan mesaĝon en la listo kaj apude trovi sian tradukon. Kondiĉo estis, ke li almenaŭ scipovis legi la skribon de la originala lingvo kaj orientiĝi en ties alfabeta ordigo (se ĝi havis alfabeton).

3.2 Lösungen außerhalb des Programms

Die ersten Ansätze zu einer technischen Mehrsprachigkeit waren Versuche, die Dialogsprache (Benutzersprache) eines Programms zu verändern. Es handelte sich vor allem um Fehlermeldungen; auch mathematische Programme, die normalerweise nur mit Zahlen umgehen, können auf Situationen stoßen, in denen sie ein Problem melden müssen; und es ist angenehmer, einen Meldungstext angezeigt zu bekommen als nur eine Kode-Nummer. Wenn man allerdings die Sprache des Textes nicht versteht, hilft die Meldung nicht weiter.

Manche Firmen setzten eine Kode-Nummer vor die Meldungen, etwa in der Art "17: Division durch Null". Dann konnte man Listen der Kode-Nummern mit den Meldungstexten in verschiedenen Sprachen drucken. Due Übersetzung und den Druck der Listen konnte jeder übernehmen, nicht nur der Hersteller des Programms. Das ist ein wichtiger Punkt: Wenn eine "kleine" Sprache dem Hersteller nicht wichtig genug ist, kann jemand anderer trotzdem diese Art der "Lokalisierung auf Papier" durchführen.

Die Nummerierung der Meldungen ist also schon eine rudimentäre Art der Internationalisierung.

Wo es solche Nummern nicht gab oder gibt, Konnte man trotzdem Listen mit Übersetzungen herstellen, die dann alphabetisch nach der Sprache geordnet waren, die das Programm direkt ausgab. Ein Benutzer konnte die erhaltene Meldung in der Liste suchen und fanden daneben die Übersetzung in seiner Sprache. Bedingung war, dass er zumindest die Schrift der Originalsprache lesen konnte und sich in deren alphabetischer Ordnung zurecht fand (wenn die Sprache ein Alphabet hatte).

3.3 Modifo de la maŝinkoda programo

Komence en multaj okazoj la uzuloj mem ekaktivis por ŝanĝi la uzulan lingvon de programo. Kutime ili ne havis la fonto-kodon de la programo (en altnivela aŭ asembla lingvo), sed nur la maŝinkodan programon.

En maŝinkoda programo eblas trovi la tekstojn, kiujn uzas tiu programo, sed preskaŭ ne eblas vidi, kiel kaj kiam tiuj tekstoj estas uzataj. Tamen oni povas traduki la trovitajn tekstojn kaj per specialaj iloj enmeti la tradukaĵojn en la maŝinkodon. Post tio la programo ofte (ne ĉiam) ankoraŭ funkcias kaj uzas la tradukitajn tekstojn.

Tiu procedo ofte estis uzata, sed enhavas multajn problemojn, kiujn ni sube traktos. Jen eta ekzemplo: Programo, en kiu troviĝas la germana teksto "Division durch Null"; tiu teksto estu anstatauŭigita per la traduko "divido per nulo". La "signoj" antaŭ kaj post la teksto apartenas al la program-instrukcioj kaj devas resti sen-ŝanĝaj:

3.3 Modifikation des Maschinenprogramms

Früher wurden in vielen Fällen die Benutzer selbst aktiv, um die Benutzersprache ihres Programms zu ändern. Gewöhnlich hatten sie den Quell-Kode des Programms (in einer höheren Programmiersprache oder in Assemblersprache) nicht zur Verfügung, sondern nur das Programm in Maschinenkode.

In so einem Maschinenprogramm kann man die Texte finden, die das Programm verwendet, es ist aber fast unmöglich, zu sehen, wie und wann diese Texte verwendet werden. Trotzdem kann man die gefundenen Texte übersetzen und mit besonderen Werkzeugen die Übersetzung wieder in den Maschinenkode einfügen. Danach funktioniert das Programm oft (nicht immer) noch und verwendet die übersetzten Texte.

Dieses Verfahren wurde oft verwendet, es hat aber viele Nachteile, die wir noch behandeln werden. Hier ein kleines Beispiel: Ein Programm, in dem sich der deutsche Text "Division durch Null" befindet; dieser Text soll durch die Übersetzung "divido per nulo" ersetzt werden. Die "Zeichen" vor und nach dem Text gehören zu den Programmbefehlen und dürfen nicht verändert werden:

  ' 014 000   ( 000   ) 007 000   * 014 000   + 000   , 001 000
023   D   i   v   i   s   i   o   n       d   u   r   c   h
  N   u   l   l 007 000   - 014 000   . 000   / 014 000 060 000
estas tradukita al / wird übersetzt zu
  ' 014 000   ( 000   ) 007 000   * 014 000   + 000   , 001 000
023   d   i   v   i   d   o       p   e   r       n   u   l   o
                007 000   - 014 000   . 000   / 014 000 060 000

La bildo montras la "videblajn" signojn (literoj, ciferoj ktp.) en originala formo kun spaco antauxe kaj poste; tri-ciferaj nombroj ("000", "007" ktp.) montras programkodan simbolon. Sed ankaux inter programkodaj simboloj foje povas aperi videbla signo.

Das Bild zeigt die "sichtbaren" Zeichen (Buchstaben, Ziffern usw.) in ihrer Originalform mit Leerzeichen davor und danach; dreistellige Zahlen ("000", "007" usw.) stehen für Programmkode. Aber auch zwischen den Programmkode-Symbolen tauchen manchmal sichtbare Zeichen auf.

3.4 Modifo de la fontokoda programo

Se oni disponas pri la fonto-kodo de programo, la manipulado de tekstoj estas pli facila. La tuta fonto-kodo ja estas teksto legebla por homoj, kaj la mesaĝo-tekstoj estas facile distingeblaj de la programaj instrukcioj.

Ni poste vidos, ke kelkaj problemoj de la modifado de maŝin-kodo ne aperas pri la fonto-kodo.

La produktanto de programo kutime disponas pri la fonto-kodo kaj do povas apliki tiun procedon. Ofte li tamen ne volas doni la kodon al aliaj personoj, por ne perdi ekonomian avantaĝon.

La ĉi-supra ekzemplo aspektas jene en fonto-kodo:

3.4 Modifikation des Quell-Kodes

Wenn der Quell-Kode eines Programms verfügbar ist, ist die Änderung von Texten einfacher. Der ganze Quell-Kode ist ja für Menschen lesbarer Text, und die Meldungstexte sind leicht von den Programmbefehlen zu unterscheiden.

Wir werden später sehen, dass einige Probleme der Modifikation des Maschinenkodes beim Quell-Kode nicht auftreten.

Der Hersteller eines Programms verfügt gewöhnlich über den Quell-Kode und kann daher dieses Verfahren anwenden. Oft will er den Kode aber nicht an andere Personen weitergeben, um nicht einen wirtschaftlichen Vorteil zu verlieren.

Das obige Beispiel sieht im Quell-Kode folgendermaßen aus:

        if (divizoro == 0) {
            System.err.println("Division durch Null");
estas tradukita al / wird übersetzt zu
        if (divizoro == 0) {
            System.err.println("divido per nulo");

Tiuj metodoj funkcias kaj estis multe aplikataj. Tamen ili havas certajn malavantagxojn, kiujn diskutos la sekva leciono.

Diese Methoden funktionieren und wurden vielfach angewandt. Allerdings weisen sie bestimmte Nachteile auf, die in der nächsten Lektion behandelt werden.


Specimenaj demandoj:

  • Kiuj principaj metodoj ekzistas, por ebligi al diverslingvaj uzantoj la uzon de programo?
  • Kiu diferenco estas inter la modifado de maŝin-kodo kaj de fonto-kodo?

Beispielfragen:

  • Welche grundsätzlichen Methoden gibt es, um verschiedensprachigen Benutzern die Benutzung eines Programms zu ermöglichen?
  • Welcher Unterschied besteht zwischen der Modifikation des Maschinen-Kodes und des Quell-Kodes?

>>>