Mehrsprachige Anwendungen po Dateien usw.

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Antworten
Rob
Beiträge: 34
Registriert: Fr 8. Jul 2011, 10:45
OS, Lazarus, FPC: Win7, Ubuntu 64 und 32bit Lazarus (immer aktuellstes Release) FPC 2.6.4
CPU-Target: amd_64 und i386
Kontaktdaten:

Mehrsprachige Anwendungen po Dateien usw.

Beitrag von Rob »

Hallo zusammen,

icher versuche nun schon seit einiger Zeit das Handling mit den PO dateien irgendwie in den Griff zu bekommen.
vieleicht mache ich ja was falsch. die Dokumente im Wiki kenne ich.
Prinzipiell funktioniert das Ganze auch.
Jetzt kommen die "Abers":
Meine PO Datei wird IMMER neu erzeugt, dabei wird auch die Übersetzngsdatei(en) .de.po .en.po usw. jedesmal komplett überschrieben.
Das heisst alle Übersetzungen sind nach einem kompilieren weg.
Muss ich nun, sobald eien PO Datei erzeugt ist und ich sichere alle änderungen an den PO Dateien komplett perHand nachstellen, weil sonst alle meine Übersetzungen weg sind?

Wie In den Projetkeinstellugnen kann ich einstellen welche Sprache ich kompilieren möchte.
Projekteinstellungen->Versionsinformationen dort Sprachauswahl.
Kann ich es irgendwie einstellen das mir die Sprache kompiliert wird die ich dort einstelle?
Ich arbeite nicht mit externen po Dateien, sondern will die Dateien als Resource einbinden, so wie es im Wiki beschrieben ist.
Im Wiki liest es sich aber so das man nur eine Sprache kompilieren kann, dann den Resourcenkompiler wieder starten , in der Unit mit
LazarusResources.Find('meinprogramm.de','PO'); das "de durch die andere Sprache ersetzen und dann neu kompilieren muss.

Aus den Dialogen werden immer ALLE Resourcen (über die lrt Dateien) in die PO Datei exportiert. Auch leere Eingabefelder und Labels die nicht übersetzt werden sollen. Ein Rauslöschen dieser unnutzen resozurcestrings aus den po oder lrt Dateine bringt leider nix, da sie sofort wieder angelegt werden. Gibt es hier ein Möglichkeit sich nur auf die Resourcen festzulegen die auch tatsächlich übersetzt werden sollen?

Eine weitere Frage,
Mein Projekt besteht aus fünf EXE Dateien und separaten Projektdateien die sich ein Verzeichnis teilen und über die gleiche Unit alle Resourcenstrings. Kann ich irgendwie ein "Makefile" erzeugen, das mir alle fünf Projekte hintereinander in einer Sprachversion kompiliert.

Ich verwende Lazarus Version 9.30.2 unter Windows XP.

Viele Grüße
Rob

Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Mehrsprachige Anwendungen po Dateien usw.

Beitrag von Socke »

Rob hat geschrieben:Aus den Dialogen werden immer ALLE Resourcen (über die lrt Dateien) in die PO Datei exportiert. Auch leere Eingabefelder und Labels die nicht übersetzt werden sollen. Ein Rauslöschen dieser unnutzen resozurcestrings aus den po oder lrt Dateine bringt leider nix, da sie sofort wieder angelegt werden. Gibt es hier ein Möglichkeit sich nur auf die Resourcen festzulegen die auch tatsächlich übersetzt werden sollen?
Meines Wissens: Nein.
Rob hat geschrieben:Wie In den Projetkeinstellugnen kann ich einstellen welche Sprache ich kompilieren möchte.
Projekteinstellungen->Versionsinformationen dort Sprachauswahl.
Kann ich es irgendwie einstellen das mir die Sprache kompiliert wird die ich dort einstelle?
Ich arbeite nicht mit externen po Dateien, sondern will die Dateien als Resource einbinden, so wie es im Wiki beschrieben ist.
Im Wiki liest es sich aber so das man nur eine Sprache kompilieren kann, dann den Resourcenkompiler wieder starten , in der Unit mit
LazarusResources.Find('meinprogramm.de','PO'); das "de durch die andere Sprache ersetzen und dann neu kompilieren muss.
Wäre toll, wenn du die Wiki-Seite verlinken können, damit Leute, die dir helfen möchten nicht erst lange danach suchen müssen, welche Seite du denn meinst.

In den Ressourcen-Strings wird immer die "Sprache" abgelegt, die du im Quelltext verwendest. Diese kannst du zur Laufzeit dann mit den lokalisierten Zeichenketten aus den PO-Dateien (oder auch Exe-Ressourcen) überschreiben. Du kannst eine Sprache beim kompilieren also nicht festlegen oder ändern.

Das, was du in den Projekteinstellungen festlegst, ist nur eine Information, die Windows auslesen, anzeigen und ggf. irgendwie anders weiter verwerten kann. Lazarus oder der Free Pascal Compiler tun damit gar nichts.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Rob
Beiträge: 34
Registriert: Fr 8. Jul 2011, 10:45
OS, Lazarus, FPC: Win7, Ubuntu 64 und 32bit Lazarus (immer aktuellstes Release) FPC 2.6.4
CPU-Target: amd_64 und i386
Kontaktdaten:

Re: Mehrsprachige Anwendungen po Dateien usw.

Beitrag von Rob »

Socke hat geschrieben:
Rob hat geschrieben:Wie In den Projetkeinstellugnen kann ich einstellen welche Sprache ich kompilieren möchte.
Projekteinstellungen->Versionsinformationen dort Sprachauswahl.
Kann ich es irgendwie einstellen das mir die Sprache kompiliert wird die ich dort einstelle?
Ich arbeite nicht mit externen po Dateien, sondern will die Dateien als Resource einbinden, so wie es im Wiki beschrieben ist.
Im Wiki liest es sich aber so das man nur eine Sprache kompilieren kann, dann den Resourcenkompiler wieder starten , in der Unit mit
LazarusResources.Find('meinprogramm.de','PO'); das "de durch die andere Sprache ersetzen und dann neu kompilieren muss.
Wäre toll, wenn du die Wiki-Seite verlinken können, damit Leute, die dir helfen möchten nicht erst lange danach suchen müssen, welche Seite du denn meinst.
Ok, sorry, ich dachte das Wiki von lazarus.freepascal.org wäre soweit bekannt.
Hier die eine Seite
und Getting translation strings right/de


Umgesetzt habe ich ".po Dateien in die Programmdatei kompilieren "
sowie alle relevanten Strings in Resourcen ausgelagert.

Soweit funktioniert das auch. ist aber extrem unkomfortabel für jede Version am Sourcecode was zu ändern und vor allen Dingen jede einmal übersetzte PO-Datei dann von Hand pflegen zu müssen.
Socke hat geschrieben: In den Ressourcen-Strings wird immer die "Sprache" abgelegt, die du im Quelltext verwendest. Diese kannst du zur Laufzeit dann mit den lokalisierten Zeichenketten aus den PO-Dateien (oder auch Exe-Ressourcen) überschreiben. Du kannst eine Sprache beim kompilieren also nicht festlegen oder ändern.
Ja, doch, indem ich die PO Datei als Resource kompiliere. Sicherlich wird das dann beim Programmstart erst ausgetauscht, ist aber fest mit dem Programm verbunden und das meinte ich. War etwas unglücklich von mir formuliert ;-)
Socke hat geschrieben: Das, was du in den Projekteinstellungen festlegst, ist nur eine Information, die Windows auslesen, anzeigen und ggf. irgendwie anders weiter verwerten kann. Lazarus oder der Free Pascal Compiler tun damit gar nichts.
Das hatte ich mir schon gedacht.
So wirklich befriedigend ist das allerdings nicht wenn man sein Programm mehrsprachig bauen möchte.

Vieleicht ist eine entsprechende make Datei die Lösung. Aber dann habe ich auch das problem das wenn ich über bedingte Kompilierung eine deutsche und eine italienische Programmversion kompilieren möchte, das die Sprachinfo aus der Projektdatei nicht verstellt wird.

Entweder hab ich das Thema lokalisieren wie Lazarus es vorsieht noch nciht kapiert, oder es ist noch ein wenig "unfertig".

Grüße
Rob

Antworten