Internationalisierbarkeit / Mehrsprachigkeit

Hi, ich habe für die Mehrsprachigkeit eines Java Programmes die eingebaute Funktion von eclipse benutzt.

Java:
package model;

import java.util.MissingResourceException;
import java.util.ResourceBundle;

public class LanguageChooser {
	
	public static String BUNDLE_NAME = "model.de_language"; //$NON-NLS-1$

	private static ResourceBundle RESOURCE_BUNDLE = ResourceBundle
			.getBundle(BUNDLE_NAME);

	public static String getString(String key) {
		try {
			return RESOURCE_BUNDLE.getString(key);
		} catch (MissingResourceException e) {
			return '!' + key + '!';
		}
	}
}

Das funktioniert ja auch schön und gut.

Aber ich möchte, dass der Benutzer es selbst festlegen kann welche Sprache das Programm hat (ohne dass er im Code es manuell ändert). Dafür habe ich mir überlegt eine Konfigurationsdatei zu benutzen. Bei jedem Start soll zuerst der Inhalt der Datei gelesen werden und daraufhin entschieden werden, welche properties Datei er zu benutzen hat. Leider klappt es nicht.

Java:
private static String location = System.getProperty("user.dir");

	public static void loadConfig() {

		try {
			BufferedReader datei = new BufferedReader(new FileReader(location +".conf"));
			while ((content = datei.readLine()) != null) {
				text = content;
			}
			datei.close();
			
			if (text == "german")
			{
				model.LanguageChooser.BUNDLE_NAME = "model.de_language";
			}
			else if (text == "english")
			{
				model.LanguageChooser.BUNDLE_NAME = "model.en_language";
			}
			else if (text == "french")
			{
				model.LanguageChooser.BUNDLE_NAME = "model.fr_language";
			}
			else if (text == "italian")
			{
				model.LanguageChooser.BUNDLE_NAME = "model.it_language";
			}
			else if (text == "italian")
			{
				model.LanguageChooser.BUNDLE_NAME = "model.ru_language";
			}
			//Konfigurationsdatei hat einen ungueltigen Wert fuehrt zur Standartsprache deutsch
			else
			{
				model.LanguageChooser.BUNDLE_NAME = "model.de_language";
			}
		} catch (FileNotFoundException e) {
			// kann nicht vorkommen, da dies bereits davor abgefangen wird
		} catch (IOException e) {
      	  JOptionPane.showMessageDialog(null, "Fehler beim Laden der Konfigurationsdatei.");
		}
	}

Ich denke jetzt, dass ich mit dieser Idee leider vermutlich komplett auf dem Holzweg bin und brauche deshalb Hilfe...

Also beim Wechseln der Sprache innerhalb des Programmes soll dann nur der Inhalt der Konfigurationsdatei verändert werden und beim erneuten Start des Programmes die "neue" Sprache geladen und auch benutzt werden...

Vielen Dank bereits fuer das Lesen und (hoffentlich) weiterhelfen.. :)
 

fastjack

Top Contributor
Vergiß dabei nicht, das Du bereits einmal erzeugte Komponenten mit der neuen Sprache mit den neuen Ressourcen "updaten" mußt, sonst bringt die Sprachänderung nix.
 

fastjack

Top Contributor
also updaten z.b. in der Form, das ein Label früher "Create" angezeigt hat, und durch die Sprachänderung nun "Erzeugen" anzeigen soll.
 
Für andere die auf dieses Problem gestoßen sind:

Ergänzung LanguageChooser
Java:
	public static void Update(){
		RESOURCE_BUNDLE = ResourceBundle
		.getBundle(BUNDLE_NAME);
	}

Funktioniert jetzt einwandfrei. Vielen Dank!!! :)
 

Ähnliche Java Themen

Neue Themen


Oben