Im Rahmen meines LazUpdater-Projektes, war ich neulich erstmals mit der Lokalisierung beschäftigt. Nachdem es bei mir anfänglich, wegen eines trivialen Fehlers, nicht funktionierte und ich feststellte, dass die Hilfen im Netz zum Teil sehr verworren sind, entschloss ich mich dieses kleine Tutorial zu schreiben.
Ich benutzte Lazarus 0.9.31, aber es sollte auch mit der kommenden 0.9.30 so funktionieren.
1. Unter "Projekt/Projekteinstellungen/i18n" "i18n einschalten", ".po Dateien beim speichern..." aktivieren und bei "PO-Ausgabeverzeichnis" einen Verzeichnis eintragen.
[INFO]Das Verzeichnis darf NICHT "lang" heißen (das war mein Fehler), muss selber angelegt werden und ist relativ zum Projektpfad. Die übliche Bezeichnung ist anscheinend "languages".
2. Die Unit "defaulttranslator" in die uses einer Unit oder der Projektdatei hinzufügen.
[INFO]So weit ich es gelesen und probiert habe genügt der Eintrag in einer einzigen, beliebigen Unit und das gesamte Projekt wird übersetzt. Möchte man eine Unit/Form nicht übersetzt haben, kann man sie im Projektinspektor, über das Kontextmenü, ausschließen.
3. Damit Lazarus die gewünschte .po Datei erstellt, müssen alle Forms/Units eine Veränderung erfahren.
[INFO]Es reicht schon einen Button oder die Form geringfügig zu verschieben. Wird jetzt das Projekt kompiliert, erstellt Lazarus eine <Projektname>.po im angegebenen Verzeichnis. Sie beinhaltet alle(?) Strings die in der Form gespeichert werden (also über den Objektinspektor bearbeitet werden können).
4. Strings die nicht in der Form gespeichert sind, z.B. der Text eines MessageDlg(), müssen als Resourcestrings angelegt werden, um in der .po-Datei zu landen.
[INFO]Lazarus hilft hier erheblich. Einfach im Kopf der Unit (oder einer eingebunden Unit) das Schlüsselwort "resourcestring" schreiben, den Carret auf dem zu übersetzenden String platzieren und unter "Werkzeuge" "Resourcestring erzeugen..." wählen. Selbst im String eingebettete Variablen werden automatisch berücksichtigt!
5. Um sein Programm nun zu übersetzten, kopiert man die erzeugte .po-Datei mit dem entsprechenden Sprachkürzel im Namen.
[INFO]Also <Projektname>.de.po für deutsch oder <Projektname>.fr.po für französisch. Diese Datei kann nun mit einem praktischen Tool wie POEdit oder auch mit einem einfachen Texteditor bearbeitet werden.
Fertig!
[INFO] Die Wahl der Sprache geschieht automatisch anhand der Systemeinstellung, man kann jedoch eine Sprache forcieren, in dem man das Projekt mit dem Parameter "-l <Kürzel>" aufruft. <Kürzel> ist dabei wieder de/fr/en/es....
Weiterführende Links:
http://wiki.lazarus.freepascal.org/Tran ... rograms/de
http://www.lazarusforum.de/viewtopic.php?f=9&t=4082
[Tutorial]i18n
-
- Beiträge: 476
- Registriert: Do 15. Nov 2007, 16:58
- OS, Lazarus, FPC: Win11/Ubuntu Budgie (L 3.0 FPC 3.2.2)
- CPU-Target: i386, x64
- Wohnort: Gera
[Tutorial]i18n
mfg Ingo