BaseDialog
, oder BaseDialogDialog
abgeleiteten Dialog mit Hilfe
der F12 Taste geöffnet werden.
Auf der Linken Seite werden nun die im Dialog enthaltenen Elemente angezeigt, die automatisch gefunden wurden. Auf der rechten Seite können nun die Übersetzungen eingepflegt werden.
Die Übersetztungen werden nun in einer Datei (APPHOME/translations/at.redeye.FrameWork.base.translation.TranslationDialog_de.properties) gespeichert. Der Dateiname ist der Name der Klasse, sowie das entsprechende Sprachkürzel.
Um die Übersetzung in die Jar Datei zu übernehmen, muß die Übersetzungsdatei in das selbe Verzeichnis kopiert werden, in dem sich auch die Klasse befindet. Alternativ kann die Datei auch im Verzeichnis translations, oder resources/translations abgelegt werden.
Die Datei muß allerdings umbenannt werden und zwar genau so, wie die Klasse heißt + die entsprechende Sprachendung.
Die Implementierungssprache wird im Konstruktor mit Hilfe der Funktion
setBaseLanguage(String language);festgelegt. Wird die implementierungssprache im Konstruktor nicht gesetzt, so wird der Wert der Root klasse übernommen. (Siehe auch:
Root.getBaseLanguage()
)
Wurde die globale Implementierungssprache in der Root Klasse nicht festgelegt, so wird automatisch englisch (en) verwendet.
Für die Element, die automatisch vom Übersetzungsdialog gefunden werden, muß der Programmierer gar nichts weiter tun.
Funktionieren tut, das folgendermaßem: die Funktion doLayout() ist im BaseDialog Überladen
und bevor doLayout() von der Parentklasse aufgerufen wird, wird in dem Dialog nach
allen Label, Buttons, etc... gesucht und der Text, wenn eine Übersetztung zur
verfügung steht ausgetauscht.
Somit können nur Element automatisch gefunden und übersetzt werden, die
im Konstruktor erzeugt wurden und an die Maske angebunden sind.
Werden allerdings Texte dynamisch erzeugt, oder geändert, so muß die Funktion MlM()
verwendet werden. zb:
jLabelFoo.setText( MlM( "Speichern" ));
Root.MlM()
verwendet werden.
Um die Übersetzungstexte für die Klasse zu finden, kann mit
Root.loadMlM4Class( Object obj, String impl_locale )eine Überstzungsdatei geladen werden.
BaseDialog.MlM()
keine Überestzung, so wird Root.MlM()
aufgerufen. Und Root sucht seinen Informationen in der globalen Überstzungsdatei,
die entweder APPHOME/translations/trans_en.properties
heißt, oder an einem Resourcepfad zu finden ist, der mit
Root.setLanguageTranslationResourcePath(String path)festgelegt wurde. Für diesen Pfad gibt es keinen standard Wert. Über diese globale Übersetzungsdatei ließe sich nur eine einige Übersetzungsdatei pflegen.