2017-02-10 16 views
0

Я читал this google doc.поддержка нескольких языков в студии android

Он говорит, что мы должны использовать этот формат:

<resource type>-b+<language code>[+<country code>] 

, например: value-b+es/string.xml Но где-то использовать value-es/string.xml

Это правда?

также как система может понять, какой язык должен выбрать?

, например, я называю струна этим:

String hello = getResources().getString(R.string.hello_world); 

Должен ли я использовать условие? (если да, то как?) ... Я не мог отказаться от документа.

ответ

3

Да. Android OS может выбрать лучший язык для пользователя из вашего приложения, выполнив поиск в папке res.

Например, вы можете определить значения испанской строки в res/values-es/strings.xml.

Итак, если пользователь установил свой основной язык в качестве испанского в телефоне, ОС Android будет читать строки из папки res/values-es/strings.xml сначала вместо res/values ​​/ strings.xml.

Если некоторые строки отсутствует в рес/значений-эс/strings.xml, то он будет ссылочных из Рез/значений/strings.xml

1

Android нагрузки текстовых и медийных ресурсов из каталога проекта "Рез. на основе текущей конфигурации устройства и локали.

Например, если код загружает строку с именем ‘R.string.title’, Android выберет правильное значение для этой строки во время выполнения, загрузив соответствующий файл strings.xml из соответствующего каталога ‘res/values’.

AndroidAppProject/ 
res/ 
    values/ 
     strings.xml 
    values-es/ 
     strings.xml 
    values-fr/ 
     strings.xml 

Во время работы система Android использует соответствующий набор строковых ресурсов на основе локали, установленной в настоящее время для устройства пользователя.

Теперь и может загружать определенные региональные строки из Реза папки с помощью:

getResources().getString(R.string.hello_world); 

Для экс:

Configuration conf = getResources().getConfiguration(); 
conf.locale = new Locale("fr"); //french language locale 
DisplayMetrics metrics = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(metrics); 
Resources resources = new Resources(getAssets(), metrics, conf); 
/* get localized string */ 
String str = resources.getString(R.string.hello_world); 

это загрузит R.string.hello_world из values-fr/ каталога.

Doc

 Смежные вопросы

  • Нет связанных вопросов^_^