2011-04-01 3 views
11

J'ai cette application Android localisée dans plusieurs langues. Si la chaîne appropriée pour les paramètres régionaux du périphérique existe, l'application l'affiche automatiquement. Jusqu'ici tout va bien.Comment restaurer les paramètres régionaux par défaut d'une application Android

Ensuite, je souhaite permettre aux utilisateurs de l'application de passer à l'une des langues que j'ai fournies. Je peux le faire en remplaçant les paramètres régionaux par défaut. Pas de problème ici non plus.

La question ici: Y at-il un moyen pour moi de fournir une option "par défaut" dans la liste des langues qui permettrait aux utilisateurs de restaurer les paramètres régionaux automatiques par défaut? Envisagez le scénario suivant:
1. Les paramètres régionaux du périphérique sont définis sur Allemand. App affiche tout en allemand.
2. L'utilisateur souhaite que l'application soit en français, donc il change la langue depuis l'application, et l'application devient française.
3. Le même utilisateur modifie les paramètres régionaux du périphérique en espagnol. App est toujours français.
4. Ils sélectionnent le paramètre "Default". L'application passe en espagnol et ne cesse de changer lorsque les paramètres régionaux sont modifiés.

Si ce n'est pas faisable automatiquement, alors est-ce qu'il y a un moyen pour moi d'obtenir les paramètres régionaux à l'échelle de l'appareil afin que je puisse définir mon application si mon option "par défaut" est sélectionnée?

Répondre

16

J'ai résolu ce problème en stockant le paramètre existant lors de la première exécution de l'application (avant toute modification apportée aux paramètres régionaux par défaut). Dans un bloc qui ne fonctionne que la première fois que mon application fonctionne, je l'appelle:

m_preferences.edit().putString(
         MyConstants.PREFERENCE_SYSTEM_LANGUAGE, 
         getResources().getConfiguration().locale.getLanguage() 
         ).commit(); 

Plus tard, quand je dois récupérer:

languageToLoad = m_preferences.getString(
         MyConstants.PREFERENCE_SYSTEM_LANGUAGE, 
         MyConstants.LANGUAGE_DEFAULT); 

Lorsque vous changez la langue, je sauverai que dans une autre préférence et gérer les mises à jour de la vue.

Édition: Après avoir piqué un peu plus, j'ai trouvé le réglage du système. Je suis passé à utiliser ceci, plutôt que le code ci-dessus.

Resources.getSystem().getConfiguration().locale.getLanguage(); 
+2

La partie ci-dessus ne fait pas vraiment pour moi, étant donné que les paramètres régionaux de l'appareil peut encore changer après est enregistrée la langue de mon application. La deuxième partie semble être exactement ce que je cherchais, cependant. Merci! – Goldsmith

2
Locale defaultLocale = Locale.getDefault(); 

Edit: Désolé, je viens de réaliser cela ne en fait répondre à votre question, puisque vous surchargeons la valeur par défaut pour effectuer votre changement.

Questions connexes