Internationalization

Status
Nicht offen für weitere Antworten.
M

m.a.k.

Gast
Hallo zusammen.

Ich hatte diese Frage nebenläufig in einem anderen Thread bereits gestellt, aber sie scheint aufgrund der Überschrift und des Hauptthemas untergegangen zu sein. Da da Frage allerdings für mich sehr wichtig ist, mache ich dafür noch einmal einen neuen Thread auf:

Also, es geht darum dass ich ein Programm schreiben möchte, welches von Anfang an mehrere Sprachen unterstützt. Hierfür benutze ich ListResourceBundles, auf welche ich über einen selbstgeschriebenen TextProvider zugreife. Diesem übergebe ich den Namen des Objekts und der Basisklasse, welche das Objekt enthält, und der TextProvider liefert mir den Text für das Objekt in der aktuell ausgewählten Sprache zurück.
Mein Problem ist nun folgendes: Wenn ich die Klassen für die ListResourceBundles in den Hauptpfad meiner Anwendung lege, dann läuft alles problemlos. Sobald ich diese allerdings in ein Package auslagere, werden sie nicht mehr gefunden. Ich erhalte dann folgende Fehlermeldung:
"Can't find bundle for base name MainMenu, locale de"
Ich weiß nicht, was ich falsch mache und die Code-Samples auf der offziellen SUN Seite helfen mir da leider auch nicht weiter. Hier ein paar Code Schnipsel um zu illustrieren, wie ich das ganze realisiert habe:

Eine meiner Ressourcen-Dateien:
Code:
public class MainMenu_de extends ListResourceBundle
{
	public Object[][] getContents()
	{
		return contents;
	}
	
	static final Object[][] contents =
	{
		// LOCALIZE THIS
		//window title
		{"MainMenu", "Hauptmenü"},
		//u.s.w.                  
		// END OF MATERIAL TO LOCALIZE
	};
}

Der Ausschnitt aus dem Text-Provider, wo ich auf die Ressourcen zugreife:
Code:
ResourceBundle res; //resource bundle for specified base and selected language
			
try
{
	//get the resource bundle
	if(strCurrentLanguage == GERMAN)
		res = ResourceBundle.getBundle(strBaseName, Locale.GERMAN);
	else
		res = ResourceBundle.getBundle(strBaseName, Locale.ENGLISH);
	
	//get the string for the specified object
	return(res.getString(strObj));
}
catch(java.util.MissingResourceException e)
{
	System.out.println(e.getMessage());
	return(getDefaultCaption());
}

Ich hoffe, jemand findet da den Fehler und kann mir bei meinem Problem weiterhelfen. Ich sitze da jetzt schon einige Tage dran und komme nicht vorwärts ;(

Gruß
Markus
 

DeepBlue

Aktives Mitglied
Ich weiß nicht, ob sich das Problem schon erledigt hat, aber hatte das gleiche Problem. Die Lösung ist einfach, dass du bei der Methode getBundle() den Pfad des package mitangeben musst.

Code:
ResourceBundle.getBundle(package.bundlename);

Bei mir hat das funktioniert. So kann ich die Resource Files alle in einem package unterbringen :)

mfg DeeP
 
R

raphk

Gast
Hallo

ich habe ungefähr dasselbe Problem. Ich will eine JSP Seite machen wo der User am Anfang eine Sprache wählt und je nach gewählter Sprache die Buttons usw. in der jeweiligen Sprache beschriftet sind.

Dazu verwende ich ne Propertie Datei und implementiere die mit Hilfe der bundle Funktion. Problem ist dabei nur das Tomcat jedesmal sagt das er die Datei nicht findet. Hab schon versucht mit Package im Namen und auch die Datei an alle möglichen Orte kopiert. Aber er will sie einfach net finden.

Wo muss ich die Propertie Datei denn ablegen bzw wie geb ich den Pfad in der Bundle Funktion an?

Danke für eure Hilfe!

Mfg Raph
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben