2012-12-11 4 views
3

J'ai implémenté la localisation dans mon application android mais j'ai un petit problème. Je ne suis pas en mesure de récupérer la valeur par défaut d'une chaîne à partir du fichier strings.xml par défaut. pour par exemple. intérieur project/res/values/strings.xmlComment obtenir la valeur de chaîne par défaut dans Android?

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
     <string name="distance">distance</string> 
</resources> 

et à l'intérieur project/res/values-nl/strings.xml

<?xml version="1.0" encoding="utf-8"?> 
<resources> 

    <string name="distance">afstand</string> 
</resources> 

Mon exigence est d'obtenir la valeur de la variable 'à distance' du projet/res/valeurs/fichier strings.xml quelle que soit la locale est actuellement en utilisation.

+0

vérifier cela, il peut vous être utile http://codinglookseasy.blogspot.in/2012/07/localization.html –

+0

non, il n'a pas aidé. – Dipendra

+0

Quel est en réalité votre problème? –

Répondre

0

Nous pouvons le faire avec config de contexte et il va fonctionner de l'API +17 comme:

public static String getDefaultString(Context context, @StringRes int stringId){ 
     Resources resources = context.getResources(); 
     Configuration configuration = new Configuration(resources.getConfiguration()); 
     Locale defaultLocale = new Locale("en"); // default locale 
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { 
      LocaleList localeList = new LocaleList(defaultLocale); 
      configuration.setLocales(localeList); 
      return context.createConfigurationContext(configuration).getString(stringId); 
     } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1){ 
      configuration.setLocale(defaultLocale); 
      return context.createConfigurationContext(configuration).getString(stringId); 
     } 
     return context.getString(stringId); 
    } 

Pour les versions antérieures d'Android, vous pouvez utiliser quelque chose comme ça:

public static String getDefaultString(Context context, @StringRes int stringId){ 
    Resources resources = context.getResources(); 
    Locale defaultLocale = new Locale("en");// default locale 
    configuration.locale = newLocale; 
    resources.updateConfiguration(configuration, res.getDisplayMetrics()); 
    return resources.getString(); 
} 

Mais je suppose qu'il peut changer le contexte actuel dans l'application. Et si vous n'utilisez pas la langue par défaut dans l'application, il y aura un problème avec la localisation.

Questions connexes