StringList - AnsiString - Zeilenumbruch
-
Moin 2gether,
irgendwie steh ich auf'm Schlauch.
Problem: Für eine kleine App soll die GUI( inkl. MessageBox & Co. ) zweisprachig sein. Soweit kein Thema. Entspr. Strings in ein Textfile, mit StringList ->LoadFromFile und Co rein und raus. wunderbar.
Nur bei längeren Strings, z. B. bei MessageBoxen, die z. B. \n enthalten funktionierts nicht. Ständig wird zu \\n erweitert.
Auch wenns ne kleine App ist, sinds nicht wenig Strings.
Wie kann ich also der StringList bzw AnsiString klarmachen, dass \n = \n, und nicht \\n?!SuFu war ein Schuss in Sand, da zuviele Beiträge angezeigt werden, die nix mit dem Thema zu tun haben?! Falsch gesucht?
grüssle
-
Smitty schrieb:
Problem: Für eine kleine App soll die GUI( inkl. MessageBox & Co. ) zweisprachig sein. Soweit kein Thema. Entspr. Strings in ein Textfile, mit StringList ->LoadFromFile und Co rein und raus. wunderbar.
Nimm ein ordentliches Translation-Toolkit, dann hast du weniger Arbeit und außerdem dein Problem gleich mit gelöst.
-
audacia schrieb:
Nimm ein ordentliches Translation-Toolkit, dann hast du weniger Arbeit und außerdem dein Problem gleich mit gelöst.
Thx erstmal, aber genau das stimmt in diesem Fall nicht. Denn bei meiner Lösung mit der Textdatei kann der Anwender weiter Sprachen selbst erstellen. Also ich bin dann raus aus der Nummer
Ist jetzt Deutsch - Englisch. Wenn der Anwender lieber Französisch hat, überschreibt er einfach die Strings einer Sprache und gut is.
Mit der TranslationTool Variante kommt die Arbeit dann wieder auf mich zuAusserdem ist es auch eine grundlegende Frage mit dem lesen von 'formatierten' Strings aus Textdateien.
grüssle
-
Smitty schrieb:
Thx erstmal, aber genau das stimmt in diesem Fall nicht. Denn bei meiner Lösung mit der Textdatei kann der Anwender weiter Sprachen selbst erstellen. Also ich bin dann raus aus der Nummer
Ist jetzt Deutsch - Englisch. Wenn der Anwender lieber Französisch hat, überschreibt er einfach die Strings einer Sprache und gut is.
Mit der TranslationTool Variante kommt die Arbeit dann wieder auf mich zuNö. Die .po-Dateien für gettext können auch mit jedem Texteditor bearbeitet werden, und es gibt sogar halbwegs komfortable Editoren dafür (poEdit).
Außerdem geht es ja nicht nur um die Übersetzungsarbeit, sondern vor allem umMyFirstButton->Caption = IniFile->ReadString ("MainForm", "MyFirstButtonCaption"); MySecondButton->Caption = IniFile->ReadString ("MainForm", "MySecondButtonCaption"); MyThirdButton->Caption = IniFile->ReadString ("MainForm", "MyThirdButtonCaption"); ...
All solch redundanten Unsinn kannst du dir durch die Verwendung von dxgettext ersparen
Smitty schrieb:
Ausserdem ist es auch eine grundlegende Frage mit dem lesen von 'formatierten' Strings aus Textdateien.
Dazu wäre zu sagen, daß du vermutlich die Escape-Sequenzen mißverstehst. Die Ersetzung von
\n
in Stringliteralen durch das Linefeed-Zeichen führt der Compiler durch. Wenn du den String in eine Datei speicherst, steht dort auch das Linefeed-Zeichen und nicht\n
, analoges gilt für das Laden aus Dateien. Wenn du Escape-Sequenzen auch für String-Ressourcen substituieren willst, mußt du selbst dafür sorgen.