Mehrsprachige Programme in Java

Zilchinger

Mitglied
Hi,
ich implementiere gerade ein Tool, welches in mehreren Sprachen verfügbar sein soll.
Ich wollte mal fragen welche Lösungen es für die Mehrsprachigkeit gibt.
Zur Zeit mach ich das über Properties! Gibt es da noch was eleganteres?

Danke schonmal...
 
Fest steht, dass die Texte während der Laufzeit eingelesen werden müssen. Ich finde ein Property-File für jede angebotene Sprache eine gute Lösung. Die sind einfach zu lesen und vor allem auch einfach zu erstellen.
 
Hallo man koennte es auch mittels eines Ressourcebundles loesen:

Code:
import java.util.*;

public class Dictionary extends ResourceBundle{
        protected Hashtable<String,String> words = new Hashtable<String,String>();

        public Enumeration<String> getKeys(){
                return words.keys();
        }

        public String handleGetObject(String key){
                return words.get(key);
        }

        public ResourceBundle getParent(){
                return parent;
        }
}

Code:
public class MyDictionary extends Dictionary{
        public MyDictionary(){
                words.put("Hi", "Hello");
                words.put("To", "World");

        }
}

Code:
public class MyDictionary_de extends Dictionary{
        public MyDictionary_de(){
                words.put("Hi", "Hallo");
                words.put("To", "Welt");
        }
}

Code:
public class MyDictionary_de_CH extends Dictionary{
        public MyDictionary_de_CH(){
                words.put("Hi", "Gruezi");
                words.put("To", "Schwiez");
        }
}

Code:
public class MyDictionaryTest{
        private static void sayHello(Locale loc){
                ResourceBundle dictbundle = ResourceBundle.getBundle("MyDictionary", loc);
                if(dictbundle != null){
                        System.out.print(dictbundle.getString("Hi") + ", ");
                        System.out.println(dictbundle.getString("To"));
                }
        }

        public static void main(String[] args){
                sayHello(Locale.getDefault());
                sayHello(new Locale("de", "CH"));
                sayHello(new Locale("us", "US"));

        }
}

Die unterschiedlichen Endungen der Klasse (die Locales) stellen eine
Hierarchie dar. Ganz oben steht MyDictionary, MyDictionary_de_CH
ist eine sublocale von MyDictionary_de.
Wenn das angeforderte Resourcebundle in dieser Hierarchie nicht
vorhanden ist (sayHello(new Locale("us", "US"));) wird automatisch das
das Bundle dahergenommen welches in der Hierarchie ganz oben steht
(Defaultverhalten) nämlich MyDictionary...

Gruß

RedWing
 
Zuletzt bearbeitet:
Zurück