2017-01-26 1 views
0

J'ai besoin de trouver combien string.xml de la langue est présent dans mon application au moment de l'exécution. Exemple: J'ai string.xml pour en, zh, fr .. et maintenant mon serveur m'envoie le type de langue comme salut alors je devrais vérifier si salut présent dans le dossier de valeurs ou pas ???Comment trouver combien string.xml de la langue est présent dans mon application

Merci d'avance.

+0

ce que vous voulez faire en fonction du serveur envoie? Et comment ça compte si vous avez ou n'avez pas de traduction? –

+0

[Cette question] (http://stackoverflow.com/a/1495767/515948) devrait vous permettre de démarrer si les fichiers se trouvent dans le chemin de ressources. –

+0

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. –

Répondre

0

É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.