Étant donné que vos chaînes pourraient être dans un fichier autre que string.xml
, voici une façon plus robuste pour le faire:
Prenez un identifiant de chaîne que vous connaissez est traduit dans toutes vos langues prises en charge et tester si elle est différente de la défaut.
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
Configuration configuration = new Configuration(getResources().getConfiguration());
configuration.locale = new Locale(""); // default locale
Resources resources = new Resources(getAssets(), metrics, configuration);
String defaultStr = resources.getString(R.string.hello); // default string
// lang is the two-character language code, e.g. "zh", "hi"
configuration.locale = new Locale(lang);
resources = new Resources(getAssets(), metrics, configuration);
String testStr = resources.getString(R.string.hello);
boolean supported = !defaultStr.equals(testStr);
Log.d(TAG, lang + " is " + (supported ? "" : "not ") + "supported");
Notez que Configuration.locale
est Déconseillédepuis Nougat. Voir les documents pour la mise à jour.
ce que vous voulez faire en fonction du serveur envoie? Et comment ça compte si vous avez ou n'avez pas de traduction? –
[Cette question] (http://stackoverflow.com/a/1495767/515948) devrait vous permettre de démarrer si les fichiers se trouvent dans le chemin de ressources. –
Si vous connaissez XPath, vous pouvez charger le XML et la requête avec, aboutissant à un NodeList. Si vous pouviez coller des parties du fichier XML ici, nous pourrions assembler une requête XPath pour vous. –