Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Ich muss ein Swing-GUI implementieren, welches mehrere Sprachen unterstützt. Ich habe bereits die Internalization Seiten von sun gelesen, die Locale sind mir ebenfalls geläufig und einige Prototypen mit ResourceBundle habe ich ebenfalls bereits geschrieben, aber der bis anhin vorliegende Java-Code ist für die Implementierung einer grösseren Anwendung eher untauglich, geschweige denn wartungsfreundlich. Bin für jeden Hinweis dankbar.
Ich möchte nicht für jeden Text den ich in einer Componente verwende mit einem ellenlangen IF-Kontrukt wenn Sprache=Deutsch dann diesen Text else wenn Sprache=English dann diesen Text usw. aufblasen. Ich suche nach einer Möglichkeit, alle Textfelder an einem Ort zu initialisieren und dann diese mit getText zu verwenden, ohne wissen zu müssen, um welche Sprache es sich handelt.
Ich möchte nicht für jeden Text den ich in einer Componente verwende mit einem ellenlangen IF-Kontrukt wenn Sprache=Deutsch dann diesen Text else wenn Sprache=English dann diesen Text usw. aufblasen. Ich suche nach einer Möglichkeit, alle Textfelder an einem Ort zu initialisieren und dann diese mit getText zu verwenden, ohne wissen zu müssen, um welche Sprache es sich handelt.
Du kannst dir auch mal von Eclipse die "Externalize Strings" - Methode anschauen, die nimmt einem VIEL Arbeit ab. Mit dem ResourceBundleEditor (Plugin für Eclipse) kannst du auch auf einfache Weise andere Sprachen hinzufuegen.
Naja das ist keine Unterstellungen,sondern ein Ergebnis deiner Aussage von oben. Ich mein der Link beschreibt dein Problem schon nach 2 Sätzen und da steht nirgends etwas von ifs... Also bei mir ist das so, wenn ich etwas nicht kapier versuch ich es nochmal und nochmal zu lesen und dein Problem ist mit den Tips nicht all zu schwer zu lösen, da SOGAR Programmcode zum Ausführen dabei ist. Und Eclipse generiert dir sogar dein Code für dein ResourceBundle den musst du nicht mal selber schreiben ... Also du wirst es schaffen ...
Ok, ich werde folgendes versuchen: Pro Sprache werde ich eine Ressource-Datei anlegen mit den in den GUIs zu verwendenden Texte. Sämtliche Texte in den Komponenten werden über bundle.getString gesetzt und sobald die Sprache in der Applikation geändert wird, wird entsprechend ResourceBundle.getBundle aufgerufen und dann werden die Texte in den Komponenten in die Sprache des geholten Bundle geändert. Ist so ok resp. hat jemand sowas schon mal erfolgreich realisiert? Werde es mit einem keinen Protypen versuchen und berichten. Jedenfalls danke an alle für die Hinweise.
Ok, ich werde folgendes versuchen: Pro Sprache werde ich eine Ressource-Datei anlegen mit den in den GUIs zu verwendenden Texte. Sämtliche Texte in den Komponenten werden über bundle.getString gesetzt und sobald die Sprache in der Applikation geändert wird, wird entsprechend ResourceBundle.getBundle aufgerufen und dann werden die Texte in den Komponenten in die Sprache des geholten Bundle geändert. Ist so ok resp. hat jemand sowas schon mal erfolgreich realisiert? Werde es mit einem keinen Protypen versuchen und berichten. Jedenfalls danke an alle für die Hinweise.
Klar funktinioniert das Prinzip sonst wäre es kein Standard ...Wie gesagt wenn du Eclipse nutzt gibt es ein ResourceBundleEditor mit dem du einfach die properties Dateien anlegen kannst... und eclipse generiert dir auch den Code für die Klasse...
Sämtliche Texte in den Komponenten werden über bundle.getString gesetzt und sobald die Sprache in der Applikation geändert wird, wird entsprechend ResourceBundle.getBundle aufgerufen und dann werden die Texte in den Komponenten in die Sprache des geholten Bundle geändert
Die Sprache zur Laufzeit zu ändern ist für nicht-triviale Anwendungen ein ganz enormer Aufwand. Du machst dir das Leben wesentlich leichter wenn du den Benutzer
a)nur vor dem Start die Sprache festlegen lässt, oder
b)eine Änderung der Sprache einen Neustart der Anwendung zur Folge hat
Man darf nicht vergessen das die Sprache zu ändern ein feature ist das die meisten Anwender genau 0 mal in ihrem Leben verwenden werden. Daher sollte man sich schon überlegen ob man wirklich bereit ist einige Mannmonate zu investieren nur um diesen Wechsel ohne Neustart zu ermöglichen
Die Sprache zur Laufzeit zu ändern ist für nicht-triviale Anwendungen ein ganz enormer Aufwand. Du machst dir das Leben wesentlich leichter wenn du den Benutzer
a)nur vor dem Start die Sprache festlegen lässt, oder
b)eine Änderung der Sprache einen Neustart der Anwendung zur Folge hat
Man darf nicht vergessen das die Sprache zu ändern ein feature ist das die meisten Anwender genau 0 mal in ihrem Leben verwenden werden. Daher sollte man sich schon überlegen ob man wirklich bereit ist einige Mannmonate zu investieren nur um diesen Wechsel ohne Neustart zu ermöglichen
Wieso sollte das so schwer sein? Einfach eine Methode retranslateUi() machen, und falls man die Sprache ändert einfach ein Event feuern, auf das jede Gui Komponente hört und eben diese Methode retranslateUi aufruft. Stelle ich mir nicht so schwer vor
Ob so was viel Sinn macht ist natürlich fraglich, da die VM ja eh dir richtige Sprache setzt.
Wieso sollte das so schwer sein? Einfach eine Methode retranslateUi() machen, und falls man die Sprache ändert einfach ein Event feuern, auf das jede Gui Komponente hört und eben diese Methode retranslateUi aufruft. Stelle ich mir nicht so schwer vor
Ob so was viel Sinn macht ist natürlich fraglich, da die VM ja eh dir richtige Sprache setzt.
Ich habe bewusst von nicht trivialen Anwendungen gesprochen.
Ein paar Buttons, Labels, ... bekommt man mit (meiner Meinung nach viel zu hohem Aufwand) noch dazu sich zu aktualisieren in dem man durch den ganzen Code eine hässliche Language Listener Infrastruktur zieht. Es hört dann aber auf bei Bäumen, Listen, Tabelle, selbst gezeichneten Objekten,...
Stell dir nur mal eine Art Log View vor. Wenn du entscheidest die Sprache zu wechseln hast du die ursprungsdaten gar nicht mehr um die Einträge in der Log View noch nachträglich übersetzen zu können á la
Selbst mit sehr vielen Aufwand lässt sich das also für nicht triviale Anwendungen nur partiell lösen.
Wenn man es sowieso nur partiell lösen kann, kann man sich die Arbeit auch gleich sparen...
Ich werde mir gut überlegen, wo der Anwender die Sprache ändern kann. Beim SignOn ist es bestimmt am einfachsten und innerhalb der Applikation gibt es auch Stellen, wo das einfacher gehen wird.
Grundsätzlich stimme ich mit Dir überein und ich danke Dir für den Hinweis.