Programm Multilangualfähig machen

TerraTux

Grünschnabel
Hallo Javagemeinde,

ich muss gleich zu vornweg sagen das ich nicht allzuviel plan von Java habe und noch aktiv beim lernen bin :)

Nun aber mein Problem, das derzeitige Programm was ich schreib, zieht sich seine Einstellungen aus einer externen Datei "config.properties" (funktioniert auch)
Nun soll in diese config.properties ein weiterer Parameter "language=german" oder eben english, french und soweiter...

Was ich nun suche sind Lösungsansätze, wie ich das ganze organisiere und es dabei aber einfach bleibt. Ich möchte letztlich nicht für jede Sprache eine eigene Klasse zusammenschreiben. Klasse wär es, wenn ich dann einfach ein Array aus einer externen Datei auslesen kann.

z.b. das jede "language.lang" einfach nur folgende Strunktur enthält:
_lang[0] = "text1";
_lang[1] = "text2";
...
_lang[400] = "text400";

Ferner das überhaupt geht, kann ich gut Hilfe gebrauchen :)

Eine Klasse, auf die ich auch zugreifen kann, existiert schon, von der sache her brauch ich nur noch den Weg die Dateien einzulesen, und innerhalb des Programms "global" verfügbar zu machen.

Gruß,
TT
 
Hallo Schnuffie,

danke für die schnelle Antwort. Hab mal danach gegoogled, soweit wie ich bisher sehen konnte, brauch ich damit aber trotzdem Sprachentsprechende Klassen.
Es soll aber nach Möglichkeit zur Laufzeit nur eine einzigste Datei geladen werden, und nicht alle Möglichen, wenn nur mit einer gearbeitet wird...

Wenn ich doch nicht genaustens gelesen haben sollte, wär ich für ein simples Beispiel dankbar, mit dem ich weiterarbeiten kann. Ein hinweis wie die Files dann aussehen müssen, wär auch nicht verkehrt. (Irgendwie orientier ich mich da wohl zusehr an PHP :rolleyes: )

Danke & Gruß,
TT
 
Hi,

hab jetzt:

Code:
...
try
{
    ResourceBundle textbundle = ResourceBundle.getBundle("lang", new Locale("de"));
}
catch(MissingResourceException e)
{
    System.err.println(e);
}
...

Das Schnipsel sitzt in einer Klasse MyLang

im Hauptprogramm hab ich drin:
private MyLang MyLang;

in der Main-Class:
MyLang = new MyLang;

und den simplen Aufruf:
System.out.println(MyLang.getString("Hello"));

die Ausgabe:
java.util.MissingResourceException: Can't find bundle for base name lang, locale de

:(

ich denk ich kann es nun an die Namenskonventionen schieben, momentan gibt es Dateien "lang_de", "lang_de.properties", "lang.de", "lang_de.class" (mit der function lang_de)

Gruß,
TT
 
Strike :)

Ich hatte das Tut von Thomas zwar schon gelesen, aber weiter geholfen hat es mir nicht.
Aber etwas hin und her, und es geht, nun kann ich Locale beim Initialisieren setzen, und die Key's per ML.getLang("keyxxx"); abrufen :)

Ich dank euch!

Gruß,
TT
 
Zurück