Краткий ответ (на ваш первый вопрос): Да, это хорошая практика "помещать только нужные файлы в папки локализации".
Вы должны убедиться, что каждый используемый вами ресурс (то есть каждый R.something.something
, на который вы ссылаетесь) определен в ваших каталогах res
по умолчанию. Затем для других языков вы определяете только те ресурсы, которые хотите локализовать.
В качестве примера, скажем, что ваши ресурсы по умолчанию на английском языке, и вы хотите локализовать часть своего приложения для хинди и гуджарати. Вы должны иметь все свои английские строки, определенные в res/values/strings.xml
, строки хинди в res/values-hi/strings.xml
(только хинди, без английского!) И строки гуджарати в res/values-gu/strings.xml
(только гуджарати, без английского!)
Когда приложение запускается на устройстве, каждая ссылка на ресурс (каждый R.string.some_string_key
) будет проверяться, чтобы найти лучшее соответствие для локали, которую использует устройство. Таким образом, если устройство находится на языке хинди, оно извлекает строковые значения из res/values-hi/strings.xml
, а если оно там не находит, оно возвращается к значению по умолчанию (английскому) в res/values/strings.xm
l. Он выдаст исключение, только если не найдет ресурс в папке /res/values
по умолчанию.