Heute Mittag wurde im Groundspeak-Forum die Frage gestellt, ob es möglich wäre, mit Urwigo eine mehrsprachige Datei zu erstellen. Bei Earwigo ist das ja schon lange möglich
Dazu habe ich mir jetzt einige Gedanken gemacht und wollte mal nachfragen, ob der eine oder andere Interessierte Lust hat, sich das anzuschauen, ob man das Ergebnis auf die Menschheit loslassen kann.
Im Prinzip ist es ganz einfach:
1. Das Lua Author Script in die eigene Cartridge kopieren
2. Alle Texte in der Cartridge, die übersetzt werden sollen, in der Form "Sprache 1@@Sprach 2@@Sprache 3" schreiben
3. Am Anfang gleich beim Benutzer die Sprache abfrage
4. Die gewünschte Sprache und das Trennzeichen (in obigen Beispiel "@@") beim Aufruf der Initialisierungsroutine angebn. diese lautet dann z.B. "Language.Init(2, "@@")" für die zweite Sprache
5. Fertig
Wo funktioniert das? Bei Zonen, Items, Charactern und Tasks im Namen und bei der Beschreibung. Bei Commands natürlich auch. Bei Messages und Dialogen (auch die Buttons). Bei Eingaben (Name und Text) mit Mehrfachauswahlen (alle Auswahlen). Die Eingaben werden anschließend wieder zurückgewandelt, so dass auf "Answer 1@@Antwort 1" überprüft werden kann, obwohl im Display nur "Antwort 1" ausgewählt werden kann.
Was passiert, wenn einmal nur ein Text ohne "@@" hinterlegt ist? Dann wird einfach dieser Text genommen (Sprache 1 ist der Vorgabewert).
Verschlüsselung sollte auch kein Problem sein, da die Sprachauswahl nach der Entschlüsselung ansetzt.
Ich habe noch einen kleinen Nebeneffekt eingebaut: Umlaute können in Urwigo normal eingegeben werden. Dann beim Erzeugen der GWZ Datei die Option mit UTF-8 verwenden und mit dem http://www.wherigo.com Compiler die GWC erzeugen lassen (wie beim normalen Herunterladen). Und schon sollte der Garmin auch äöüß können . Natürlich auch bei Texteingaben. Dort werden Freitexte wieder in UTF-8 zum Vergleich konvertiert. Das klappt auch, wenn man gar keine weitere Sprache hat. Nur mit "Language.Init(1, "@@")" am Anfang (OnStart der Cartridge) initialisieren. Leider sind die Umlaute nicht im Emulator mit Direktaufruf zu sehen . Aber bei Handcompilierung und manuellem Aufruf im Emulator geht es.
Der Code ist in der beiliegenden Urwigo Datei zu finden. Alles was im Lua Author Script hinterlegt ist, wird benötigt. Nicht mehr und nicht weniger. Mit dieser Cartridge kann man auch gleich etwas testen und herumprobieren.
All zu viel habe ich nicht getestet, da ich gerade erst fertig geworden bin. Auch die anderen Devices außer dem Emulator habe ich noch nicht ausprobiert.
Über positive wie negative Rückmeldungen würde ich mich freuen.
Viele Grüße und weiterhin viel Spaß
Dirk (Charlenni)
Dazu habe ich mir jetzt einige Gedanken gemacht und wollte mal nachfragen, ob der eine oder andere Interessierte Lust hat, sich das anzuschauen, ob man das Ergebnis auf die Menschheit loslassen kann.
Im Prinzip ist es ganz einfach:
1. Das Lua Author Script in die eigene Cartridge kopieren
2. Alle Texte in der Cartridge, die übersetzt werden sollen, in der Form "Sprache 1@@Sprach 2@@Sprache 3" schreiben
3. Am Anfang gleich beim Benutzer die Sprache abfrage
4. Die gewünschte Sprache und das Trennzeichen (in obigen Beispiel "@@") beim Aufruf der Initialisierungsroutine angebn. diese lautet dann z.B. "Language.Init(2, "@@")" für die zweite Sprache
5. Fertig
Wo funktioniert das? Bei Zonen, Items, Charactern und Tasks im Namen und bei der Beschreibung. Bei Commands natürlich auch. Bei Messages und Dialogen (auch die Buttons). Bei Eingaben (Name und Text) mit Mehrfachauswahlen (alle Auswahlen). Die Eingaben werden anschließend wieder zurückgewandelt, so dass auf "Answer 1@@Antwort 1" überprüft werden kann, obwohl im Display nur "Antwort 1" ausgewählt werden kann.
Was passiert, wenn einmal nur ein Text ohne "@@" hinterlegt ist? Dann wird einfach dieser Text genommen (Sprache 1 ist der Vorgabewert).
Verschlüsselung sollte auch kein Problem sein, da die Sprachauswahl nach der Entschlüsselung ansetzt.
Ich habe noch einen kleinen Nebeneffekt eingebaut: Umlaute können in Urwigo normal eingegeben werden. Dann beim Erzeugen der GWZ Datei die Option mit UTF-8 verwenden und mit dem http://www.wherigo.com Compiler die GWC erzeugen lassen (wie beim normalen Herunterladen). Und schon sollte der Garmin auch äöüß können . Natürlich auch bei Texteingaben. Dort werden Freitexte wieder in UTF-8 zum Vergleich konvertiert. Das klappt auch, wenn man gar keine weitere Sprache hat. Nur mit "Language.Init(1, "@@")" am Anfang (OnStart der Cartridge) initialisieren. Leider sind die Umlaute nicht im Emulator mit Direktaufruf zu sehen . Aber bei Handcompilierung und manuellem Aufruf im Emulator geht es.
Der Code ist in der beiliegenden Urwigo Datei zu finden. Alles was im Lua Author Script hinterlegt ist, wird benötigt. Nicht mehr und nicht weniger. Mit dieser Cartridge kann man auch gleich etwas testen und herumprobieren.
All zu viel habe ich nicht getestet, da ich gerade erst fertig geworden bin. Auch die anderen Devices außer dem Emulator habe ich noch nicht ausprobiert.
Über positive wie negative Rückmeldungen würde ich mich freuen.
Viele Grüße und weiterhin viel Spaß
Dirk (Charlenni)