Урок на Kotlin в Android Studio: локализация в приложении

Пользователи вашего приложения живут в разных странах и говорят на разных языках. Если программа говорит с ними на родном языке, доверия к ней гораздо больше. Сегодня в Android Studio мы разберёмся, как добавить поддержку нескольких языков. Этот урок на языке Kotlin покажет, что локализация — это не сложная магия, а аккуратная работа с ресурсами. Вы увидите, как текст автоматически подстраивается под язык устройства.


Как Android понимает, какой язык нужен

Всё строится на папках с ресурсами. Основные строки хранятся в res/values/strings.xml. Если система обнаруживает, что язык устройства — русский, она берёт их оттуда. Но если создать ещё одну папку, например res/values-en/strings.xml, и перевести строки на английский, система сама выберет нужный файл, когда язык устройства — английский. Никакого кода для этого писать не нужно — Android делает это автоматически.


Создаём английскую версию ресурсов

Откройте проект и найдите папку res/values. Щёлкните правой кнопкой по values, выберите New → Values resource file. В поле Filename укажите strings.xml, а в поле Directory name оставьте values-en. Android Studio сама создаст нужную папку и файл. Теперь скопируйте в новый файл те же ключи, но с английскими значениями.

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">My Application</string>
    <string name="hello">Hello, World!</string>
    <string name="button_label">Click me</string>
</resources>

В исходном файле res/values/strings.xml оставляем русский текст:

<string name="hello">Привет, мир!</string>
<string name="button_label">Нажми меня</string>

Используем строки в разметке и коде

В XML-разметке ссылайтесь на строки по имени ключа. Например, для TextView укажите android:text="@string/hello". Для кнопки — android:text="@string/button_label". В Kotlin-коде, если нужно получить строку программно, используйте getString(R.string.hello). Система сама подставит нужный перевод.

val greeting = getString(R.string.hello)
myText.text = greeting

Проверяем на эмуляторе

Запустите приложение с системным языком по умолчанию (скорее всего, русским) — вы увидите русский текст. Теперь поменяйте язык устройства: зайдите в настройки эмулятора, найдите раздел Язык и ввод и добавьте английский, переместив его на первое место. Перезапустите приложение — весь текст станет английским. Магия! На самом деле, это просто правильная организация ресурсов.


Что делать, если нужен ещё и украинский

Аналогично создайте папку values-uk и файл strings.xml с украинскими строками. Если у пользователя в настройках выбран украинский язык, система возьмёт строки оттуда. Если для какого-то языка файла нет, Android откатится к папке values по умолчанию, поэтому важно иметь базовый набор строк.


Несколько полезных советов

  • Всегда выносите весь текст в ресурсы. Даже если вы пока поддерживаете только русский, привычка хранить строки в strings.xml сэкономит часы, когда решите добавить ещё язык.
  • Не переводите ключи. Ключи вроде R.string.hello остаются теми же, меняется только значение — это позволяет легко ссылаться на них в коде.
  • Используйте профессиональный перевод. Машинный перевод годится для прототипа, но пользователи сразу замечают неестественные фразы. Для публичного приложения лучше обратиться к носителю языка.

Чему мы научились

Сегодняшний урок в Android Studio на языке Kotlin показал, как сделать приложение доступным для пользователей из разных стран. Вы создали английскую версию строковых ресурсов и увидели, как система автоматически выбирает нужный перевод. Теперь ваше приложение может заговорить на любом языке, а вы знаете, как это реализовать. Попробуйте добавить ещё один язык — это займёт пять минут, но существенно расширит аудиторию.