![]() |
Localizer für Delphi-Programme
Hallo zusammen,
ich möchte gerne mein Programm mehrsprachig machen. Dazu habe ich mittlerweile mehrere Localizer im Freewarebereicht ausprobiert. Hängen geblieben bin ich bei ![]() Andere Alternative wäre nur noch, den Inhalt von Items.NodeData auszulesen und da stellt sich mir die Frage, wie ? |
Re: Localizer für Delphi-Programme
Weil ich es gerade lese:
Hat jemand Infos, wie man diese "serialisierten" Daten auslesen könnte? Bitte nicht hauen, weil ich mich noch nicht groß informiert habe... |
Re: Localizer für Delphi-Programme
Zitat:
|
Re: Localizer für Delphi-Programme
Zitat:
* Entweder du deserialisierst diese Daten selber: (würde ich nicht machen, da man so sich erstmal in das Format einarbeiten und auch noch aufpassen muß, wenn sich dieses mal ändert (wie z.B. beim Sprung von D2007 nach D2009) * Dann könne man den Teil der Item.Data, bzw. die ganze TreeView aus der DFM extrahieren und diese Daten von einer temporär erstellen TreeView deserialisieren lassen, dann ändert man über den tree die Daten und serialisiert am Ende alles wieder. * Oder man läßt die komplette Form von der DFM deserialisieren, welches wohl das Beste ist, da man dann gleich alles über die VCL bearbeiten kann und ebenfalls auch hier am Ende wieder serialisieren. Die letzen Beiden haben nur einen Nachteil. Und zwar, daß man den Lokalisierer möglichst mit der selbe Delphi-Version kompiliert, womit auch diese Form serialisiert wurde. Aber mal was Anderes, willst du deine Anwendung über eine Fremdanwendung lokalisieren und alles direkt in der EXE umbauen lassen oder soll dieses zur Laufzeit und womöglich noch mit mehreren integrierten Sprachen passieren? PS: Ich hatte ja auch noch keinen Lokalisierer gefunden, welcher mit gefällt und probiere seit 'ner ganzen Weile immer mal verschiedene Methoden aus. > bei meinem ![]() > und aktuell eim Manifest-Creator wird zur Laufzeit durch die Form interirrt und da über eine XML ersatzstings gesucht, wärend Strings im Programm ebenfalls aus der XML ausgelesen werden. (bei beidem hab ich aber noch nichts, welches erstmal automatisch eine String-/Wortliste aus dem Programm erstellt, so daß man sich die übersetzen Komponenten selber anlegen muß.) Aber ganz im Ernst, Lingus hab ich irgendwie übersehn ... also k.A. wie das ist. PS: Hatte Sakura nicht auch einen Lokalisierer? |
Re: Localizer für Delphi-Programme
Zitat:
Zitat:
Zitat:
Zitat:
|
Re: Localizer für Delphi-Programme
Nja, mal sehn, wie es damit aussieht.
Aktuell reicht mir mein eigenes System, welches sich hier so langsam die letzen Jahre entwickelt, auch wenn ich noch keinen Editor hab, aber so oft brauch ich sowas noch nicht. Aber Lingus sieht schonmal nicht schlecht aus. Jup, das von Sakura (hatte ich es mir also richtig gemerkt :) ) liegt wohl wirklich auf Eis ... nichtmal das Setup läuft richtig, also vorallem das optionale Video fehlt. |
Re: Localizer für Delphi-Programme
Hallo,
RTTI und Delphi bei Google [google]+rtti +delphi[/google] Erster Treffer bei ![]() Habe vor Jahr und Tag mal eine RTTI-Komponente geschrieben, die mir zur Laufzeit alle Captions, Hints, Shortcuts... einer Anwendung rekursiv ausliest und in eine INI-Datei schreibt. Die kann man dann kopieren und "übersetzen". Über ein Menü kann man sich dann die seiner Sprache entsprechende INI-Datei auswählen, die wird dann über RTTI eingelesen und alle Captions, Hints und Shortcuts... werden im Programm entsprechend gesetzt. Natürlich merkt sich das Programm die zuletzt genutzte INI-Datei und startet beim nächsten Mal mit der zuletzt ausgewählten Sprache. Die Komponente braucht man genau einmal, bindet sie in alle Programme ein und wer seine eigene Sprache für ein Programm haben will, der kann sich seine individuelle INI-Datei erstellen, übersetzen.... Damit spar' ich mir dann auch das Übersetzen, die Texte können jederzeit angepasst werden, ohne dass man nochmal an's Programm ranmuss. Statt INI-Dateien könnte man natürlich auch XML nehmen, aber INI-Dateien haben den Vorteil, dass Notepad zum "Übersetzen" ausreicht. Die Idee kam mir, als mir mal jemand eine DOT für Word auf Bayrisch gab, und nun alles in Word auf Bayrisch beschriftet war. |
Re: Localizer für Delphi-Programme
Zitat:
(drum konnte ich bis jetzt mein diesbezügliches himXML-Addon auch noch ohne so einen schönen Spracheneditor verwenden :angel2: ) |
Re: Localizer für Delphi-Programme
Zitat:
|
Re: Localizer für Delphi-Programme
Zitat:
Code:
Das ist der Auszug aus so einer INI-Datei. Das dürfte für den Laien deutlich einfacher zu "Übersetzen" sein, als eine entsprechende XML-Datei.
fmMain.acNew.Caption=Neu
fmMain.acNew.HelpKeyword= fmMain.acNew.HelpContext=1020 fmMain.acNew.HelpType=0 fmMain.acNew.ShortCut=16462 fmMain.acNew.Hint=Neue Datei erstellen. fmMain.acOpen.Caption=Öffnen fmMain.acOpen.HelpKeyword= fmMain.acOpen.HelpContext=1021 fmMain.acOpen.HelpType=0 fmMain.acOpen.ShortCut=16463 fmMain.acOpen.Hint=Datei öffnen. fmMain.acSave.Caption=Speichern fmMain.acSave.HelpKeyword= fmMain.acSave.HelpContext=1022 fmMain.acSave.HelpType=0 fmMain.acSave.ShortCut=16467 fmMain.acSave.Hint=Datei im aktuellen Editor speichern. fmMain.acSaveAs.Caption=Speichern unter fmMain.acSaveAs.HelpKeyword= fmMain.acSaveAs.HelpContext=1023 fmMain.acSaveAs.HelpType=0 fmMain.acSaveAs.ShortCut=16469 fmMain.acSaveAs.Hint=Datei unter anderem Namen speichern. fmMain.acSaveAll.Caption=alles speichern fmMain.acSaveAll.HelpKeyword= fmMain.acSaveAll.HelpContext=1024 fmMain.acSaveAll.HelpType=0 fmMain.acSaveAll.ShortCut=0 fmMain.acSaveAll.Hint=Alle geöffneten Dateien speichern. fmMain.acClose.Caption=Ende fmMain.acClose.HelpKeyword= fmMain.acClose.HelpContext=1025 fmMain.acClose.HelpType=0 fmMain.acClose.ShortCut=32856 fmMain.acClose.Hint=Beenden des Programmes. |
Re: Localizer für Delphi-Programme
Dabei hast du doch bei XML 'ne Menge Freiheiten, um es übersichtlich zu gestalten, wenn die Datei für eine manuelle Bearbeitung vorgesehn ist?
In diesem Fall würde ich zu Ersterem oder Letzeren tendieren.
XML-Code:
<?xml version="1.0"?>
<Options> <Main> <New> <Caption>Neu</Caption> <HelpKeyword></HelpKeyword> <HelpContext>1020</HelpContext> <HelpType>0</HelpType> <ShortCut>16462</ShortCut> <Hint>Neue Datei erstellen.</Hint> </New> <Open> <Caption>Öffnen</Caption> <HelpKeyword></HelpKeyword> <HelpContext>1021</HelpContext> <HelpType>0</HelpType> <ShortCut>16463</ShortCut> <Hint>Datei öffnen.</Hint> </Open> <Save> <Caption>Speichern</Caption> <HelpKeyword></HelpKeyword> <HelpContext>1022</HelpContext> <HelpType>0</HelpType> <ShortCut>16467</ShortCut> <Hint>Datei im aktuellen Editor speichern.</Hint> </Save> <SaveAs> <Caption>Speichern unter</Caption> <HelpKeyword></HelpKeyword> <HelpContext>1023</HelpContext> <HelpType>0</HelpType> <ShortCut>16469</ShortCut> <Hint>Datei unter anderem Namen speichern.</Hint> </SaveAs> <SaveAll> <Caption>alles speichern</Caption> <HelpKeyword></HelpKeyword> <HelpContext>1024</HelpContext> <HelpType>0</HelpType> <ShortCut>0</ShortCut> <Hint>Alle geöffneten Dateien speichern.</Hint> </SaveAll> <Close> <Caption>Ende</Caption> <HelpKeyword></HelpKeyword> <HelpContext>1025</HelpContext> <HelpType>0</HelpType> <ShortCut>32856</ShortCut> <Hint>Beenden des Programmes.</Hint> </Close> </Main> <Nochwas> ... </Nochwas> </Options>
XML-Code:
<?xml version="1.0"?>
<Options> <Main> <New Caption="Neu" HelpKeyword="" HelpContext="1020" HelpType="0" ShortCut="16462" Hint="Neue Datei erstellen." /> <Open Caption="Öffnen" HelpKeyword="" HelpContext="1021" HelpType="0" ShortCut="16463" Hint="Datei öffnen." /> <Save Caption="Speichern" HelpKeyword="" HelpContext="1022" HelpType="0" ShortCut="16467" Hint="Datei im aktuellen Editor speichern." /> <SaveAs Caption="Speichern unter" HelpKeyword="" HelpContext="1023" HelpType="0" ShortCut="16469" Hint="Datei unter anderem Namen speichern." /> <SaveAll Caption="alles speichern" HelpKeyword="" HelpContext="1024" HelpType="0" ShortCut="0" Hint="Alle geöffneten Dateien speichern." /> <Close Caption="Ende" HelpKeyword="" HelpContext="1025" HelpType="0" ShortCut="32856" Hint="Beenden des Programmes." /> </Main> <Nochwas> ... </Nochwas> </Options>
XML-Code:
<?xml version="1.0"?>
<Options> <Main> <New Caption="Neu" HelpKeyword="" HelpContext="1020" HelpType="0" ShortCut="16462" Hint="Neue Datei erstellen." /> <Open Caption="Öffnen" HelpKeyword="" HelpContext="1021" HelpType="0" ShortCut="16463" Hint="Datei öffnen." /> <Save Caption="Speichern" HelpKeyword="" HelpContext="1022" HelpType="0" ShortCut="16467" Hint="Datei im aktuellen Editor speichern." /> <SaveAs Caption="Speichern unter" HelpKeyword="" HelpContext="1023" HelpType="0" ShortCut="16469" Hint="Datei unter anderem Namen speichern." /> <SaveAll Caption="alles speichern" HelpKeyword="" HelpContext="1024" HelpType="0" ShortCut="0" Hint="Alle geöffneten Dateien speichern." /> <Close Caption="Ende" HelpKeyword="" HelpContext="1025" HelpType="0" ShortCut="32856" Hint="Beenden des Programmes." /> </Main> <Nochwas> ... </Nochwas> </Options>
XML-Code:
PS: ShortCutToText macht sich nicht schlecht, für die Verständlichkeit.
<?xml version="1.0"?>
<Options> <Main> <New HelpKeyword="" HelpContext="1020" HelpType="0" ShortCut="16462"> <Caption>Neu</Caption> <Hint>Neue Datei erstellen.</Hint> </New> <Open HelpKeyword="" HelpContext="1021" HelpType="0" ShortCut="16463"> <Caption>Öffnen</Caption> <Hint>Datei öffnen.</Hint> </Open> <Save HelpKeyword="" HelpContext="1022" HelpType="0" ShortCut="16467"> <Caption>Speichern</Caption> <Hint>Datei im aktuellen Editor speichern.</Hint> </Save> <SaveAs HelpKeyword="" HelpContext="1023" HelpType="0" ShortCut="16469"> <Caption>Speichern unter</Caption> <Hint>Datei unter anderem Namen speichern.</Hint> </SaveAs> <SaveAll HelpKeyword="" HelpContext="1024" HelpType="0" ShortCut="0"> <Caption>alles speichern</Caption> <Hint>Alle geöffneten Dateien speichern.</Hint> </SaveAll> <Close HelpKeyword="" HelpContext="1025" HelpType="0" ShortCut="32856"> <Caption>Ende</Caption> <Hint>Beenden des Programmes.</Hint> </Close> </Main> <Nochwas> ... </Nochwas> </Options> PSS: Alles in der selben Sektion? (oder täuscht das nur)
Code:
fmMain.acNew.Caption=Neu
fmMain.acNew.HelpKeyword= ...
Code:
[ot]
[fmMain]
acNew.Caption=Neu acNew.HelpKeyword= ... vielleicht sollten wir langsam mal 'nen Ini-Thread aufmachen ... wird eh mal wieder Zeit für den virteljährlichen Apfel-Birnen-Vergleichs-Mecker-und-am-Ende-verlassen-User-beleidigt-das-Forum-Thread. (nja, ich glaub inzwischen wurde aber eh schon fast alles gesagt) |
Re: Localizer für Delphi-Programme
Ich verweise mal noch auf
![]() |
Re: Localizer für Delphi-Programme
Zitat:
Natürlich kann man je Formular in der INI einen Abschnitt machen... Natürlich kann man... So wie es ist, kann ich den Eigenschaftsnamen ohne weitere "Überlegung" aus der INI-Datei lesen und den Wert zuweisen und muss mir die Sachen nicht erst beim Speichern auseinanderbröseln und beim Einlesen wieder zusammen setzen. Ist reine Faulheit und erfüllt den Zweck auf eine für mich ausreichende Art und Weise. Es führen auch hier, wie so oft, viele Wege nach Rom und meiner ist halt 'ne einfache INI-Datei ohne Schnörkel ;-) |
AW: Localizer für Delphi-Programme
Guten Morgen... 8-)
auch wenn es beim Niesen hier staubt... das Thema ist nach wie vor aktuell. :P Ich stehe vor dem gleichen Problem. Lingus würde ich gern benutzen, da es sehr einfach in der Umsetzung ist. Nur will der Treeview immer noch nicht. :( Gibt es inzwischen Workarounds? Alternative Treeviews? PS: PN an Autor ist unterwegs... |
AW: Localizer für Delphi-Programme
Darf es etwas kosten?
![]() |
AW: Localizer für Delphi-Programme
Guten Morgen... 8-)
Sorry für die späte Antwort... Zitat:
TsiLang kommt mir schon persönlich entgegen. Keine externen Spachdateien etc. ... Alles in der EXE. Ausnahmsweise werde ich mal die Testversion installieren... :) Danke... |
AW: Localizer für Delphi-Programme
|
AW: Localizer für Delphi-Programme
Zitat:
|
AW: Localizer für Delphi-Programme
Moin... 8-)
Nach ein paar Testungen: i18n macht auch einen schmalen Fuß. Hier ist allerdings immer ein Language File in Benutzung. (Wer es besser weiß, bitte melden) Inzwischen kann ich mich auch mit dieser Variante anfreunden. Vor allem gefällt mir hier die Export / Import Varianten um die "Texte" an einen Übersetzer zu geben. An dieser Stelle Dank an den Entwickler für die freie Verwendungsmöglichkeit... :thumb: Nachtrag: Enttäuschung...i18n findet manchmal Strings, manchmal nicht z.B. bei einem unveränderten Formular. Probleme hatte ich auch mit Konstanten... daher für mich nicht nutzbar. Ich werde wohl auf TsiLang wechseln. Lieber für Geld Ruhe als für umsonst Probleme... |
AW: Localizer für Delphi-Programme
Du könntest dir noch mal
![]() |
AW: Localizer für Delphi-Programme
Richtig, allein schon, weil die beiden auf den Delphi-Tagen immer so freundlich und gut gelaunt sind.
|
AW: Localizer für Delphi-Programme
Hallöle...
Zitat:
|
AW: Localizer für Delphi-Programme
Sakura (Daniel W.) hatte auch mal was geschrieben. Leider finde ich seine Homepage gerade nicht wieder. Die Software war kostenlos und hat mir sehr gut gefallen. Er sagt bei den Delphi-Tagen in Hamburg das er die Software auch OpenSource machen würde.
Vielleicht hast du Lust ihn noch mal da drauf anzubohren. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:45 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz