LanguageManager technische Hinweise zur Verwaltung der Sprachdateien
Inhaltsverzeichnis
1 Allgemeines
Hier wird beschrieben, wie man Sprachdateien für den LanguageManager (eigentlich "Localizer") verwalten und Updates handeln kann.
Dieser Beitrag richtet sich ausschließlich an den Entwickler!
2 Sprachdateien
Für jede Sprache gibt es zwei Dateien:
{Appname}.{Sprache} | Dies ist eine DLL, in der die Ressource-Strings mit den übersetzten Texten in der jeweiligen Sprache enthalten sind. Diese DLL wird zur Laufzeit geladen. |
{Appname}.{Sprache}.LNG | Diese Datei ist für die Übersetzer in einem bestimmten Format. |
Beispiel:
REFLEX.EN REFLEX.EN.LNG
Die Ausgangssprache (Deutsch) wird als "Native Language" bezeichnet. Diese wird in den Dateien {Appname}.NTV (DLL) und {Appname}.NTV.LNG gespeichert. Diese Dateien müssen im Programmverzeichnis liegen und bei einem Update mitgeliefert werden!
Zusätzlich gibt es Dateien mit der Endung ".LEO". Dies sind Dateien, in der der LanguageManager seine Einstellungen speichert. Diese Datei darf nicht im Update enthalten sein, weil sonst die Einstellungen des Entwicklers ausgeliefert werden würden.
3 Server-Struktur, Server-Parks
In einer einfachen Umgebung kann man die Übersetzungen mit dem LanguageManager direkt mit den Dateien im Programmverzeichnis machen.
In einer komplexen Umgebung mit mehreren Remote-Servern oder gar einem Server-Park geht das nicht, weil die User auf irgendeinem Server arbeiten und so mal diese Datei übersetzen mal eine andere auf einem anderen Server. Deshalb muss man die Sprachdateien auf einem zentralen Server (-Laufwerk) ablegen.
Damit das ganze kontrolliert abläuft, gibt es das Programm "RxLangManTool". Wenn man aus REFLEX heraus im Menü "Extras" den LanguageManager startet, öffnet sich zuerst das Tool und bietet den Usern ein Menü, mit dem sie auswählen können, welches Modul und welche Sprache übersetzt werden soll. RxLangManTool überwacht auch, dass nur ein User pro Modul und Srach gleichzeitig übersetzen kann.
Dabei setzt das Programm folgendes voraus:
- Die Sprachdateien liegen auf einem Server in einem beliebigen Verzeichnis.
- Darin befinden sich Unterverzeichnisse mit dem Namen der jeweiligen Sprache
Beispiel:
Stamm-Verzeichnis:
R:\International\LanguageManager\FilesForTranslators
Unterverzeichnisse:
R:\International\LanguageManager\FilesForTranslators\EN R:\International\LanguageManager\FilesForTranslators\FRA R:\International\LanguageManager\FilesForTranslators\IT R:\International\LanguageManager\FilesForTranslators\NLD R:\International\LanguageManager\FilesForTranslators\PLK
Die Sprachdateien der Module liegen in den Unterverzeichnissen, z.B.
REFLEX.NTV.lng REFLEX.EN.lng GevitasFormPrint.NTV.lng GevitasFormPrint.EN.lng RxDispo.NTV.lng RxDispo.EN.lng
usw.
- Wichtig!
- Die .NTV-Dateien der Programme/Module müssen in jedem Unterverzeichnis liegen!!!
- Die .DLL- und .LNG-Dateien der Programme/Module müssen bei einem Update auch in das Programmverzeichnis kopiert werden!
- Wenn nicht alle aktuellen Dateien im Programmverzeichnis liegen, erzeugt der eingebaute Localizer beim Start des Programm die DLL-Datei neu! Das dauert!
- Für die User sieht es so aus, als ob sich das Programm "aufgehängt" hat!
Beispiel:
Datei | Update-Ordner | LNG-Ordner |
---|---|---|
..\exe\Reflex.exe | Ja | Nein |
..\exe\Reflex.ntv | Ja | Nein |
..\exe\Reflex.ntv.lng | Ja | Ja |
..\exe\Reflex.en | Ja | Nein |
..\exe\Reflex.en.lng | Ja | Ja |
Das Das LanguageManager-Tool für den Entwickler "weiß" das und hat eine Update-Funktion, die die Benötigten Dateien in die entsprechenden Verzeichnisse kopiert. Das Tool Server-Update Tool (ServerUp.exe) kann dabei helfen, die Dateien aus einem Update-Ordner in das Programmverzeichnis des jeweiligen Servers zu kopieren.
- REFLEX Menü Datei⇒Admin-Optionen⇒Update auf Server kopieren
4 Typischer Ablauf einer Update-Prozedur
4.1 LNG-Dateien auf Entwickler-Maschine holen, Dateien/Strings refreshen
Auf der Entwickler-Maschine das RxLangManTool mit der Online-INI starten.
Die Seite Update öffnen.
- Diese Seite ist nur sichtbar, wenn das Programm einen REFLEX-Entwickler erkannt hat!
- 1. Schritt ausführen
- Von den Übersetzern bearbeitete .LNG-Dateien in das Exe-Verzeichnis kopieren.
- Neue Strings im Code scannen und als Ressource-Strings speichern.
- Dazu alle Programm-Fenster (Forms und Units) schließen! Ganz wichtig!!! Diese Units werden vom Localizer u.U. auf Datei-Ebene geändert und müssen neu geladen werden. Delphi merkt das zwar am Ende, doch manche Forms/Units haben Nachfahren und können nicht neu geladen werden!
- Dann ausführen:
- Zuerst alle Forms abwählen mit dem Button X
- Dann die Form anwählen, die gescannt werden sollen
- Auf Scan klicken
- Im folgenden Dialog sicherheitshalber alles abwäheln mit dem Button X!
- Nur die Programm-Meldungen auswählen, die übersetzt werden dürfen.
- Achtung!
- Nicht ausgewählt/übersetzt werden dürfen:
- SQL-Befehle
- Parameter-Namen
- Feld-Namen
- Tabellen-Namen
- usw.
- 2. Schritt ausführen
- Sprachdateien einbinden/aktualisieren:
- Delphi --> Localizer --> Refresh Language Files
- Damit werden die neuen/geänderten Strings im Programm in die Ressourcen eingebunden.
- Wenn man das nicht macht und ein Update ausliefert, kommen die Texte im Programm total falsch raus!
- Delphi --> Localizer --> LanguageManager --> Snych DLLs
- Obwohl "Refresh Language Files" eigentlich alles machen soll, tut es das nicht immer. Deshalb am Ende der Programmierung (vor dem Ausrollen des Updates) dieses hier nochmal ausführen.
Wenn im Programm Strings geändert werden müssen die o.a. Schritte wiederholt werden, mindestens bevor man das Update ausrollt!
Wenn man das Refresh nicht ausführt kann es zu unsinnigen Meldungen und Fehlern kommen. Beispiel:
Diese Meldung befolgen:
4.2 LNG-Dateien veröffentlichen
Auf der Entwickler-Maschine das RxLangManTool mit der Online-INI starten.
Die Seite Update öffnen.
- 3. Schritt ausführen
- Refreshte .LNG-Dateien vom Exe-Verzeichnis in die jeweiligen LNG-Unterordner kopieren.
- Dazu auch xxx.ntv.lng mit kopieren!
4.3 Update-Dateien veröffentlichen
Auf der Entwickler-Maschine das RxLangManTool mit der Online-INI starten.
Die Seite Update öffnen.
- 4. Schritt ausführen
- Refreshte .LNG-Dateien (.XX und .XX.lng!) vom Exe-Verzeichnis in das Update-Verzeichnis kopieren.
- Dazu auch xxx.exe mit kopieren!
- Je nach Option auf Seite "Developer" wird Unterzeichnis mit dem aktuellen Datum angelegt (empfohlen!) und die EXE selbst auch kopiert.
- Wenn es neuere Modul-Exen gibt als im Update-Ordner, werden diese mit LNG-Dateien auch kopiert!
Die Update-Dateien stehen nun auf dem Server in einem Unterverzeichnis.
4.4 Update-Dateien auf jeweiligen Server kopieren
- 5. Schritt ausführen
- Nacheinander Remote auf jedem Remote-Server anmelden.
- Alle Dateien vom Update-Unterordner in das Programmverzeichnis kopieren.
- Dazu aus REFLEX heraus Datei ⇒ Admin-Optionen ⇒ Update auf Server kopieren (startet das Server-Update Tool (ServerUp.exe).