2015-10-02 4 views
0

Je développe une application qui permet à l'utilisateur de changer la langue dans les paramètres de l'application. Mais tant que certains pays ont deux langues ou plus et que certaines langues sont utilisées dans plus d'un pays, je dois utiliser le format xx-XX. Par exemple, les utilisateurs de Belgique peuvent sélectionner le français ou le néerlandais.android - Changer la langue et le pays par programme

J'utilise l'extrait de code suivant pour changer la langue:

protected void setLocale() { 
    Resources res = getResources(); 
    DisplayMetrics dm = res.getDisplayMetrics(); 
    Configuration conf = res.getConfiguration(); 
    Locale locale = new Locale(dataManager.getLocale().toLowerCase()); 
    Locale.setDefault(locale); 
    conf.locale = locale; 
    res.updateConfiguration(conf, dm); 
} 

dataManager.getLocale() retours String comme "fr-BE" ou "nl-BE".

J'ai des fichiers de ressources suivants:

values-fr/strings.xml values-fr-rBE/strings.xml values-nl/strings.xml values-nl-rBE/strings.xml

Mais même si je mets locale à nl-BE, il utilise les chaînes de values-nl répertoire, mais pas de values-nl-rBE. Donc, ma question est: "Comment puis-je faire en sorte que mon application utilise des ressources pour certaines langues et certaines régions dans l'exécution?"

+0

Savez-vous que l'application locale d'être sélectionné automatiquement en fonction locale de l'appareil. –

+0

@RahulTiwari Je sais, mais toutes mes activités invoquent la méthode 'setLocale()' dans 'onResume()'. Et cela fonctionne, il utilise la chaîne pour le bon langage, mais il n'utilise pas d'informations sur la région. –

Répondre

1

Vous devez spécifier le pays dans le second paramètre du constructeur Locale.

Locale (String language, String country)
construit un nouveau en utilisant les paramètres régionaux langue spécifiés et les codes pays.

Par exemple:

Locale locale = new Locale("nl", "BE");