ACHTUNG: Thema hat sich selbst erledigt, siehe Unten!
-----
Hallo!
Ich kann es selbst nicht glauben, dass ich so ein schwachsinniges Thema schreibe, aber vielleicht bin ich immernoch im Halbschlaf und habe was nicht richtig gemacht.
Ich verwende dxGetText und bin damit sehr zufrieden. Ich extrahiere die String der Delphi-Projekte, lagere die Übersetzungen im locale\en\LC_MESSAGES (etc.) Ordner, und vor dem Release der neuen Version rufe ich "C:\Program Files\dxgettext\assemble.exe" --dxgettext c:\pfad\meinprojekt.exe auf. Ich kann auch während der Laufzeit problemlos zwischen verschiedenen Sprachen umschalten. Alles Super.
Ein Kunde meldet sich heute, dass das Programm nur auf Englisch startet und lässt sich auch nicht umschalten. Es wurde ursprünglich in Deutsch programmiert (nicht optimal, aber naja...) und mit den .po und .mo Dateien nach Englisch übersetzt. Sehr merkwürdig. Laut meinem eigenen Protokoll (was die .exe generiert) dürfte das garnicht sein. Nun kann es sein, dass dies mit Windows Embedded zusammenhängt. Ansich ja auch egal.
Jetzt will ich diesem Kunden meine .exe Dateien testhalber ausliefern, ohne dass die Übersetzungen mit Assemble eingebaut sind. Ich also alle .exe im Debug-Ordner gelöscht, in Delphi sichergestellt das keine Pre- oder Post-Build Befehle vorhanden sind (in den Projekt-Optionen. Gibt's noch welche für die Projekt-Gruppe oder Delphi generell?). Programm compiliert (Strg+F9), .exe auf einem anderen PC ausgeführt: Ich kann immer noch erfolgreich die Sprachen ändern! "Wtf" denke ich mir - andere Leute bekommen die Übersetzung nicht in die .exe rein - ich bekomm sie nicht raus. Der freigegebene Ordner hat _nicht_ die Unterordner mit LC_MESSAGES etc. Nur die .exe Datei.
Tja...
Habe eben noch gedacht "Ah, ich habs: ich verwende ja .dll Dateien die auch lokalisiert sind, von da kann er wohl die Übersetzunen laden!": .dll neu kompiliert, .exe neu kompiliert, auf anderen PC (garantiert ohne .po und .mo!) kopiert. Gestartet: Programm in Englisch. Ich glaubs ja nicht...
-Wo kann ich noch nach Post-Build Befehlen suchen?
-Wo speichert dxGetText die Übersetzungen (außer in .po und .mo), die in der .exe Verwendet werden, wenn ich _nicht_ assemble.exe aufrufe?
-Hilfe??
Danke im Vorraus, bin mir aber ziemlich sicher, dass das ganze ein schwerwiegender Anwender-Fehler ist. Einfachste Lösung ist meistens drüber schlafen und/oder Kaffee nachkippen
---------------------
Edit: Wie schon befürchtet, ein Anwenderfehler der schlimmsten Sorte. Man möge mich aus dem Forum verstoßen und meine originalen Lizenzen den Obdachlosen spenden...
Ich hatte "aus früherer Zeit" -bevor ich dxGetText eingesetzt habe- noch Code-Überreste aus meinen ersten selbstgestrickten Übersetzungsversuchen. Diese haben nach wie vor die Übersetzung durchgeführt; mit dxGetText habe ich nur die neuen Änderungen im Programm übersetzt, der Rest "war ja schon Englisch".
Überreste gelöscht, Strings nochmal ordentlich neu extrahiert und übersetzt, nun klappt das auch alles wie es soll. Könnte auch das Problem erklären, dass der Kunde das Programm nicht mehr auf Deutsch umstellen konnte, weil mein altes Übersetzungsverfahren bei dieser englischen Version von Windows-Embedded automatisch und ohne Nachfrage auf Englisch gestellt hat.
Asche auf mein Haupt, man sollte seinen Code doch des öfteren Mal bereinigen, wenn man ältere Passagen vorhat, nicht mehr zu nutzen.
Möge dieser Thread gelöscht werden, oder allen anderen Codern auf Kaffeeentzug als "Sticky Post" für immer eine Lehre sein!
Trotzdem Allen Danke fürs Lesen!