2013-02-20 4 views
1

J'ai une question strings.xmlandroid strings.xml en plusieurs langues, scénario

Mon application est en anglais.

values/strings.xml est en anglais

il y a beaucoup d'autres langues dans l'application trop

mes dernières cordes ajouts clés sont en values-en/strings.xml, le dossier de paramètres régionaux anglais, mais pas dans values le dossier de la langue par défaut

comment cela affectera-t-il un utilisateur non anglais qui charge une vue qui tente d'accéder aux chaînes définies uniquement dans values-en? L'OS trouvera-t-il la chaîne dans ce fichier et l'affichera-t-il en anglais?

cela me est difficile parce que ce n'est pas dans les valeurs par défaut fichier xml

merci pour la perspicacité

+1

Vous pouvez le tester vous-même en ajoutant de nouvelles ressources String dans le dossier d'une autre langue (pas 'res/values' ou' res.values -en'). – Sam

+0

@Sam trueeeeee, je vais – CQM

Répondre

1

Imaginez le système de cordes comme une série de conditions si. Nous vérifions d'abord la langue de l'utilisateur, une fois que nous vérifions que le dossier de cette langue contient la chaîne que nous recherchons. Si c'est le cas, nous retournons cette chaîne, sinon nous vérifions le dossier "values" par défaut.

if (language.equals("en") { 
    stringsFolders = "values-en"; 
} else if (language.equals("es") { 
    stringsFolders = "values-es"; 
} 

if (stringsFolder.contains(key) { 
    return stringsFolder.get(key); 
} else if ("values".contains(key) { 
    return "values".get(key); 
} else { 
    throw CantFindException(); 
} 

Si une chaîne appartient à des valeurs-en et un utilisateur espagnol cherche, ils auront pas la possibilité de vérifier les valeurs-en dossier parce qu'ils ne se qualifient pas pour elle. Alternativement, le dossier "values" est toujours coché par défaut donc le placer là fonctionnera pour toutes les langues

+0

correct, j'ai testé cette théorie et l'application se bloque. Je vais m'assurer qu'ils sont dans le dossier par défaut comme je l'ai fait – CQM