Mehrere Sprachen im Programm

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
alexander
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

Beitrag von alexander »

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
Du magst Freiheit? Gönne es auch deinem Computer mit Linux!
www.alexanderroth.eu

piper62
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

Beitrag von piper62 »

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
Dateianhänge
multilang_support_draft.pdf
(203.04 KiB) 145-mal heruntergeladen

alexander
Beiträge: 423
Registriert: Di 5. Feb 2008, 12:45
OS, Lazarus, FPC: Linux, Lazarus svn, FPC svn
CPU-Target: 64Bit
Kontaktdaten:

Beitrag von alexander »

piper62 hat geschrieben:anbei ein Auszug aus dem Buch an dem ich arbeite.
wow ein buch. Klasse! Sieht interessant aus...

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

piper62
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

Beitrag von piper62 »

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
Dateianhänge
hello_world.tar.gz
(23.69 KiB) 116-mal heruntergeladen

alexander
Beiträge: 423
Registriert: Di 5. Feb 2008, 12:45
OS, Lazarus, FPC: Linux, Lazarus svn, FPC svn
CPU-Target: 64Bit
Kontaktdaten:

Beitrag von alexander »

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

piper62
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

Beitrag von piper62 »

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

alexander
Beiträge: 423
Registriert: Di 5. Feb 2008, 12:45
OS, Lazarus, FPC: Linux, Lazarus svn, FPC svn
CPU-Target: 64Bit
Kontaktdaten:

Beitrag von alexander »

klar. ok ich schaue mir das beispiel genau an.
danke.
Du magst Freiheit? Gönne es auch deinem Computer mit Linux!
www.alexanderroth.eu

alexander
Beiträge: 423
Registriert: Di 5. Feb 2008, 12:45
OS, Lazarus, FPC: Linux, Lazarus svn, FPC svn
CPU-Target: 64Bit
Kontaktdaten:

Beitrag von alexander »

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?
Dateianhänge
project.zip
(43.53 KiB) 85-mal heruntergeladen
Du magst Freiheit? Gönne es auch deinem Computer mit Linux!
www.alexanderroth.eu

monta
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:

Beitrag von monta »

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
Warum auch immer nimmt er scheinbar das TranslateUnitResourceString aus der Unit gettext, obwohl diese als letztes aufgeführt ist.

setze stattdessen mal die entsprechende Unit davor:

Code: Alles auswählen

translations.TranslateUnitResourceStrings('project1',PODirectory+'project1.po', Lang, FallbackLang);
Ich hab das jetzt nicht durchprobiert, aber so passt es mit den Parametern, also sollte der rest auch passen.
Johannes

alexander
Beiträge: 423
Registriert: Di 5. Feb 2008, 12:45
OS, Lazarus, FPC: Linux, Lazarus svn, FPC svn
CPU-Target: 64Bit
Kontaktdaten:

Beitrag von alexander »

ahh danke.
Du magst Freiheit? Gönne es auch deinem Computer mit Linux!
www.alexanderroth.eu

alexander
Beiträge: 423
Registriert: Di 5. Feb 2008, 12:45
OS, Lazarus, FPC: Linux, Lazarus svn, FPC svn
CPU-Target: 64Bit
Kontaktdaten:

Beitrag von alexander »

hmmm trotzdem habe ich noch keine ahnung wied as ganz funktioniert:
ich habe jetzt eine project1.po Die kann ich mit poedit übersetzten.
was dann? Wie kann ich es testen? Wie kann ich weitere Sprachen hinzufügen?
Du magst Freiheit? Gönne es auch deinem Computer mit Linux!
www.alexanderroth.eu

piper62
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

Beitrag von piper62 »

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
Dateianhänge
projekteinstellungen.png
projekteinstellungen.png (8.57 KiB) 2402 mal betrachtet
Zuletzt geändert von piper62 am Sa 28. Jun 2008, 17:55, insgesamt 2-mal geändert.

alexander
Beiträge: 423
Registriert: Di 5. Feb 2008, 12:45
OS, Lazarus, FPC: Linux, Lazarus svn, FPC svn
CPU-Target: 64Bit
Kontaktdaten:

Beitrag von alexander »

hmmm hatte ich gemacht..... sehr seltsam...
Du magst Freiheit? Gönne es auch deinem Computer mit Linux!
www.alexanderroth.eu

Benutzeravatar
theo
Beiträge: 10927
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

monta hat geschrieben: Warum auch immer nimmt er scheinbar das TranslateUnitResourceString aus der Unit gettext, obwohl diese als letztes aufgeführt ist.
Nicht obwohl, sondern weil ;-)
Bei gleichnamigen Deklarationen wird immer die von der hintersten Unit genommen.
Unit.Funktion etc. ist natürlich immer der sichere Weg.

monta
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:

Beitrag von monta »

theo hat geschrieben:Nicht obwohl, sondern weil ;-)
Bei gleichnamigen Deklarationen wird immer die von der hintersten Unit genommen.
Unit.Funktion etc. ist natürlich immer der sichere Weg.
:oops: ich dachte immer, die erste wird genohmen, bis jetzt gings aber gut.
Johannes

Antworten