# Sprache auslesen



## Guest (2. Okt 2007)

Hi,

ich möchte mein Programm prüfen lassen ob der Anwender deutsch spricht. Dafür habe ich folgenden code:


```
package languages;

import java.util.Locale;

public class Main {
    
    public Main() {
    }
    
    public static void main(String[] args) {
        if( Locale.getDefault().getLanguage().toString().startsWith("de") ) System.out.println("Hallo! Wie gehts?");
        else System.out.println("Hey! How are you?");
    }
    
}
```

Das geht auch, sieht aber sehr unsauber aus. Gibt es eine kürzere/übersichtlicherere variante?


----------



## Wildcard (2. Okt 2007)

Hier ein Einstieg:
http://java.sun.com/developer/technicalArticles/Intl/ResourceBundles/


----------



## Guest (2. Okt 2007)

Okay, dankeschön.

Nach deren Anleitung habe ich nun folgendes Programm:


```
package languages;

import java.util.Locale;
import java.util.ResourceBundle;

public class Main {
    
    public Main() {
    }
    
    public static void main(String[] args) {
        
        String language;
        String country;

        if (args.length != 2) {
            language = new String("en");
            country = new String("US");
        } else {
            language = new String(args[0]);
            country = new String(args[1]);
        }

        Locale currentLocale;
        ResourceBundle messages;

        currentLocale = new Locale(language, country);

        messages = ResourceBundle.getBundle("MessagesBundle",
                                           currentLocale);
        System.out.println(messages.getString("greetings"));
        System.out.println(messages.getString("inquiry"));
        System.out.println(messages.getString("farewell"));
    }
    
}
```

Aber kann es da jeh zu etwas anderem als en_US kommen? Wissen tue ichs nicht denn beim erstellen sagt mir Netbeans:

```
Exception in thread "main" java.util.MissingResourceException: Can't find bundle for base name MessagesBundle, locale en_US
        at java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:1508)
        at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1262)
        at java.util.ResourceBundle.getBundle(ResourceBundle.java:789)
        at languages.Main.main(Main.java:29)
```

Die Dateien sind aber im src-Verzeichnis und werden auch in der Netbeans-übersicht angezeigt. Wo ist der Fehler? :cry: [/quote]


----------



## Guest (2. Okt 2007)

Lösung:

Die Dateien müssen ins Default-Paket und nicht in das gleichnamige damit sie im verzeichnis src und nicht src/paketname sind 

Mein angepasster Code lautet jetzt:


```
package languages;

import java.util.Locale;
import java.util.ResourceBundle;

public class Main {
    
    public Main() {
    }
    
    public static void main(String[] args) {
        
        String language = new String(Locale.getDefault().getLanguage().toString());

        Locale currentLocale;
        ResourceBundle messages;

        currentLocale = new Locale(language);
        messages = ResourceBundle.getBundle("MessagesBundle", currentLocale);
        
        System.out.println(messages.getString("greetings"));
        System.out.println(messages.getString("inquiry"));
        System.out.println(messages.getString("farewell"));
    }
    
}
```

Das berücksichtigt NICHT MEHR die Länder, was für mich eh überflüssig ist. Ich glaube ich bin damit zufrieden aber Tipps nehme ich dankbar entgegen.

Danke für die bisherige Hilfe.

Gruß


----------

