Mehrere Sprachen im Programm
-
- Beiträge: 423
- Registriert: Di 5. Feb 2008, 12:45
- OS, Lazarus, FPC: Linux, Lazarus svn, FPC svn
- CPU-Target: 64Bit
- Kontaktdaten:
Mehrere Sprachen im Programm
Hi,
also ich würde sehr gerne mein Programm auf englisch übersetzten, doch ich habe keine Ahnung was ich dazu brauche oder wie ich anfangen soll. Gibt es irgendwo ein Tutorial mit den richtigen programmen dazu?
Gruß Alexander
also ich würde sehr gerne mein Programm auf englisch übersetzten, doch ich habe keine Ahnung was ich dazu brauche oder wie ich anfangen soll. Gibt es irgendwo ein Tutorial mit den richtigen programmen dazu?
Gruß Alexander
Du magst Freiheit? Gönne es auch deinem Computer mit Linux!
www.alexanderroth.eu
www.alexanderroth.eu
-
- Beiträge: 131
- Registriert: Sa 5. Apr 2008, 17:57
- OS, Lazarus, FPC: Linux (Debian, Xubuntu), MacOS X, MS Win, Android, Web
- CPU-Target: 32Bit/64Bit
- Wohnort: Ulm
Hallo,
anbei ein Auszug aus dem Buch an dem ich arbeite. Ist noch sehr rudimentär aber ev. hilft es. Ausserdem gibt es auf den Lazarus-Freepascal-Wiki eine Einführung in den Multilanguage Support.
Einfach mal dort suchen.
Hoffe das hilft.
Gruss,
Tibor
anbei ein Auszug aus dem Buch an dem ich arbeite. Ist noch sehr rudimentär aber ev. hilft es. Ausserdem gibt es auf den Lazarus-Freepascal-Wiki eine Einführung in den Multilanguage Support.
Einfach mal dort suchen.
Hoffe das hilft.
Gruss,
Tibor
- Dateianhänge
-
multilang_support_draft.pdf
- (203.04 KiB) 145-mal heruntergeladen
-
- Beiträge: 423
- Registriert: Di 5. Feb 2008, 12:45
- OS, Lazarus, FPC: Linux, Lazarus svn, FPC svn
- CPU-Target: 64Bit
- Kontaktdaten:
wow ein buch. Klasse! Sieht interessant aus...piper62 hat geschrieben:anbei ein Auszug aus dem Buch an dem ich arbeite.
hmmm es erstllt beim kompilieren allerdings keine unit1.po sondern eine project1.po
und musst du nicht auch hier vorher überhaupt sagen was lang and fallbacklang ist?
GetLanguageIDs(Lang,FallbackLang); // in unit gettext
und das hat nur 2 Parameter.
TranslateUnitResourceStrings
kannst du vielleicht ein beispielproject anhängen?
Du magst Freiheit? Gönne es auch deinem Computer mit Linux!
www.alexanderroth.eu
www.alexanderroth.eu
-
- Beiträge: 131
- Registriert: Sa 5. Apr 2008, 17:57
- OS, Lazarus, FPC: Linux (Debian, Xubuntu), MacOS X, MS Win, Android, Web
- CPU-Target: 32Bit/64Bit
- Wohnort: Ulm
Na ja, ob es denn WOW wird (das Buch...) werden wir mal sehen. Hoffentlich komme ich im Juli etwas mehr dazu daran zu arbeiten. Dann würde ich eine Vorab-Version zum Forumstreffen in Nürnberg mitbringen.
Nun zum Multilanguage-Support.
Im Anhang findest Du das hello_world Projekt welches in dem Kapitel erwähnt ist.
Wahrscheinlich wird es so klarer.
Meine Studenten haben es so zumindest als Basis für eigene Multilanguage Projekte nehmen können.
Bin aber immer für Anregungen dankbar.
Momentan ist es aber noch SEHR vorläufig.
Gruss,
Tibor
Nun zum Multilanguage-Support.
Im Anhang findest Du das hello_world Projekt welches in dem Kapitel erwähnt ist.
Wahrscheinlich wird es so klarer.
Meine Studenten haben es so zumindest als Basis für eigene Multilanguage Projekte nehmen können.
Bin aber immer für Anregungen dankbar.
Momentan ist es aber noch SEHR vorläufig.
Gruss,
Tibor
- Dateianhänge
-
hello_world.tar.gz
- (23.69 KiB) 116-mal heruntergeladen
-
- Beiträge: 423
- Registriert: Di 5. Feb 2008, 12:45
- OS, Lazarus, FPC: Linux, Lazarus svn, FPC svn
- CPU-Target: 64Bit
- Kontaktdaten:
hmmmm ich bekomme:
unit1.pas(47,6) Hint: Local variable "FallbackLang" does not seem to be initialized
unit1.pas(47,6) Hint: Local variable "Lang" does not seem to be initialized
unit1.pas(48,86) Error: Wrong number of parameters specified for call to "TranslateUnitResourceStrings"
unit1.pas(63) Fatal: There were 1 errors compiling module, stopping
Du magst Freiheit? Gönne es auch deinem Computer mit Linux!
www.alexanderroth.eu
www.alexanderroth.eu
-
- Beiträge: 131
- Registriert: Sa 5. Apr 2008, 17:57
- OS, Lazarus, FPC: Linux (Debian, Xubuntu), MacOS X, MS Win, Android, Web
- CPU-Target: 32Bit/64Bit
- Wohnort: Ulm
kann mir das nur mit Inkompatibilitäten zwischen verschiedenen FPC/Lazarusversionen erklären.
Das Beispiel wurde mit FPC 2.0.4 und Lazarus 0.9.22 erstellt.
Werde leider in den nächsten 2 Woche wohl nicht dazu kommen es mit der aktuellen Version zu testen.
Tut mir leid!
Aber sobald ich etwas "Luft" habe setze ich mich dran.
Gruss,
Tibor
Das Beispiel wurde mit FPC 2.0.4 und Lazarus 0.9.22 erstellt.
Werde leider in den nächsten 2 Woche wohl nicht dazu kommen es mit der aktuellen Version zu testen.
Tut mir leid!
Aber sobald ich etwas "Luft" habe setze ich mich dran.
Gruss,
Tibor
-
- Beiträge: 423
- Registriert: Di 5. Feb 2008, 12:45
- OS, Lazarus, FPC: Linux, Lazarus svn, FPC svn
- CPU-Target: 64Bit
- Kontaktdaten:
hmmm irgendwie bekomme ich es nicht hin.... er erstllt nur eine project1.po und keine unit1.po.
kann jemand das project im anhang zu laufen bekommen?
kann jemand das project im anhang zu laufen bekommen?
- Dateianhänge
-
project.zip
- (43.53 KiB) 85-mal heruntergeladen
Du magst Freiheit? Gönne es auch deinem Computer mit Linux!
www.alexanderroth.eu
www.alexanderroth.eu
-
- Lazarusforum e. V.
- Beiträge: 2809
- Registriert: Sa 9. Sep 2006, 18:05
- OS, Lazarus, FPC: Linux (L trunk FPC trunk)
- CPU-Target: 64Bit
- Wohnort: Dresden
- Kontaktdaten:
Warum auch immer nimmt er scheinbar das TranslateUnitResourceString aus der Unit gettext, obwohl diese als letztes aufgeführt ist.alexander hat geschrieben:hmmmm ich bekomme:unit1.pas(47,6) Hint: Local variable "FallbackLang" does not seem to be initialized
unit1.pas(47,6) Hint: Local variable "Lang" does not seem to be initialized
unit1.pas(48,86) Error: Wrong number of parameters specified for call to "TranslateUnitResourceStrings"
unit1.pas(63) Fatal: There were 1 errors compiling module, stopping
setze stattdessen mal die entsprechende Unit davor:
Code: Alles auswählen
translations.TranslateUnitResourceStrings('project1',PODirectory+'project1.po', Lang, FallbackLang);
Johannes
-
- Beiträge: 131
- Registriert: Sa 5. Apr 2008, 17:57
- OS, Lazarus, FPC: Linux (Debian, Xubuntu), MacOS X, MS Win, Android, Web
- CPU-Target: 32Bit/64Bit
- Wohnort: Ulm
Ich habe Dein Projekt mal ausprobiert und als erstes gefunden, dass in den Projekteinstellungen das Verzeichnis für den Laguagesupport nicht angegeben war. Dann erzeugt die IDE nicht die entsprechenden .po Dateien.
Nach Angabe des Verzeichnisses und Speichern des Projekts hatte ich sofort eine unit1.po.
Diese kannst Du nun entsprechend meines Beispiels bearbeiten.
Im Anhang ein Screenshot der Projekteinstellungen (war ja auch schon im Draft-Kapitel).
Muss es allerdings nochmal mit den neuen FPC/Lazarusversionen probieren. Ev. komme ich nächste Woche dazu.
Wie gesagt mit FPC 2.0.4 und Lazarus 0.9.22 geht das einwandfrei.
Offensichtlich wurde die Bibliothek für die neuen Versionen geändert. Gut das zu wissen, bedeutet etwas Arbeit für uns...
Wenn die Funktionen geändert wurden und es nun über die project1.po geht müsste es analog zu den unit1.de.po und unit1.en.po gehen. D.h. kopiere die project1.po in eine project1.de.po und eine project1.en.po. In diesen Dateien kannst Du nun die Ressourcestrings bearbeiten.
Weitere Sprachen laufen im selben Schema ab: unit1..po Datei erzeugen und die Ressourcestrings bearbeiten.
Bei umfangreichen Arbeiten im Übersetzungsbereich kann man sich Programme wie KBabel zu Hilfe nehmen. Diese können unterstützen bei der Arbeit mit .po Dateien.
Gruss,
Tibor
Nach Angabe des Verzeichnisses und Speichern des Projekts hatte ich sofort eine unit1.po.
Diese kannst Du nun entsprechend meines Beispiels bearbeiten.
Im Anhang ein Screenshot der Projekteinstellungen (war ja auch schon im Draft-Kapitel).
Muss es allerdings nochmal mit den neuen FPC/Lazarusversionen probieren. Ev. komme ich nächste Woche dazu.
Wie gesagt mit FPC 2.0.4 und Lazarus 0.9.22 geht das einwandfrei.
Offensichtlich wurde die Bibliothek für die neuen Versionen geändert. Gut das zu wissen, bedeutet etwas Arbeit für uns...
Wenn die Funktionen geändert wurden und es nun über die project1.po geht müsste es analog zu den unit1.de.po und unit1.en.po gehen. D.h. kopiere die project1.po in eine project1.de.po und eine project1.en.po. In diesen Dateien kannst Du nun die Ressourcestrings bearbeiten.
Weitere Sprachen laufen im selben Schema ab: unit1..po Datei erzeugen und die Ressourcestrings bearbeiten.
Bei umfangreichen Arbeiten im Übersetzungsbereich kann man sich Programme wie KBabel zu Hilfe nehmen. Diese können unterstützen bei der Arbeit mit .po Dateien.
Gruss,
Tibor
- Dateianhänge
-
- projekteinstellungen.png (8.57 KiB) 2403 mal betrachtet
Zuletzt geändert von piper62 am Sa 28. Jun 2008, 17:55, insgesamt 2-mal geändert.
Nicht obwohl, sondern weilmonta hat geschrieben: Warum auch immer nimmt er scheinbar das TranslateUnitResourceString aus der Unit gettext, obwohl diese als letztes aufgeführt ist.

Bei gleichnamigen Deklarationen wird immer die von der hintersten Unit genommen.
Unit.Funktion etc. ist natürlich immer der sichere Weg.