Как создать мультиязычное android приложение?

By | 10/03/2014

Здравствуйте, коллеги!

Сегодня мы добавим в приложение поддержку нескольких языков.
Я уже много раз упоминал о необходимости вынесения всех строк в отдельный файл ресурсов (res/values/strings.xml).

Чтобы добавить поддержку еще одного языка в приложение, необходимо создать еше одну папку values в папке res. Только в ее название через дефис необходимо добавить вторую часть – код страны. Например, values-es это каталога, содержащая ресурсы для языка с кодом es (Испания). ОС андроид будет подгружать необходимые ресурсы учитывая язык, указанный на мобильном устройстве.
После того, как решено, какие языки будет поддерживать приложение, необходимо создать подкаталоги и файлы с строковыми ресурсами, например:
android-multilanguage-app-structure

Далее в строковые файле необходимо добавить значения для каждого языка. Например, файл с английской локализацией будет иметь следующий вид (/values/strings.xml):
android-eng-locale
файл, содержащий испанский перевод (/values-es/strings.xml):
android-es-locale
И файл с французским переводом (/values-fr/strings.xml):
android-fr-locale

По-умолчанию (если нет файла с переводом для языка, выбранного на устройстве) будет использоваться локализация, лежащая в каталоге с названием values.

Использование строковых ресурсов

Строковые ресурсы могут быть использованы в других xml файлах и в исходном коде проекта по атрибуту имя (name), указанном в элементе <string>.

Для доступа в исходном коде, необходимо обращаться к строке следующим образом: R.string.<string_name>. Есть множество методов, которые принимают строки из ресурсов таким образом. Например,
android-getting-string-from-res
Для обращения к строке в другом xml файле, необходимо обращаться следующим образом: @string/<string_name>. Например,
android-getting-string-from-res-to-xml

Собственно, вот и все. Теперь Вы можете создавать мультиязычные андроид приложения! 😉

Автор


Комментарии:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *