Создайте файлы ресурсов для разных языков
В папке "res" вашего проекта создайте отдельные директории для каждого языка по шаблону
values-<код_языка>.Примеры:
- "values" — язык по умолчанию (обычно английский);
- "values-ru" — русский;
- "values-es" — испанский;
- "values-de" — немецкий.
Добавьте строки в strings.xml
В каждой папке создайте файл "strings.xml" и заполните его переводами. Ключи (
name) должны совпадать во всех файлах!Пример для "values/strings.xml" (английский):
ВыделитьXML
<resources>
<string name="app_name">My App</string>
<string name="welcome">Welcome!</string>
<string name="button_text">Click me</string>
</resources>Пример для "values-ru/strings.xml" (русский):
ВыделитьXML
<resources>
<string name="app_name">Моё приложение</string>
<string name="welcome">Добро пожаловать!</string>
<string name="button_text">Нажми меня</string>
</resources>Используйте строки в Compose
В Composable‑функциях обращайтесь к строкам через
stringResource():
ВыделитьKotlin
@Composable
fun MyScreen() {
Column {
Text(text = stringResource(R.string.welcome))
Button(onClick = { /* ... */ }) {
Text(text = stringResource(R.string.button_text))
}
}
}Поддерживайте строки с переменными
Если в тексте есть динамические части (имя пользователя, число), используйте плейсхолдеры:
В "strings.xml":
ВыделитьXML
<string name="greeting">Hello, %1$s!</string>
<string name="items_count">You have %1$d items</string>В Compose:
ВыделитьKotlin
Text(text = stringResource(R.string.greeting, "Alice"))
Text(text = stringResource(R.string.items_count, 5))Тестируйте локализацию
Вариант 1: Через эмулятор
- Откройте настройки эмулятора → System → Languages & input → Languages.
- Добавьте нужный язык и переместите его наверх.
- Запустите приложение — текст должен измениться.
Вариант 2: Через предпросмотр в Android Studio
Добавьте аннотацию
@Preview с указанием локали:
ВыделитьKotlin
@Preview(locale = "ru")
@Composable
fun PreviewMyScreen() {
MyScreen()
}Дополнительные настройки (опционально)
1. Поддержка RTL‑языков (справа налево)
Для арабского, иврита и др. создайте папки:
- "values-ar-rSA" (арабский, Саудовская Аравия);
- "values-iw-rIL" (иврит, Израиль).
2. Локализация изображений
Поместите изображения для разных языков в папки:
- "drawable-ru"
- "drawable-es"
Распространённые ошибки и их решение
«Не найдено resource»
- Проверьте, что файл "strings.xml" есть во всех языковых папках.
- Убедитесь, что ключи (
name) совпадают.
«Текст не обновляется»
- Перезапустите приложение после смены языка на устройстве.
- Очистите кэш: Build → Clean Project.
«Плейсхолдеры не подставляются»
- Проверьте порядок аргументов в stringResource().
- Убедитесь, что типы совпадают (
%1$s— строка,%1$d— число).
Итог
Вы настроили мультиязычность за 7 шагов:
- Создали папки
values-<язык>. - Заполнили "strings.xml" переводами.
- Использовали
stringResource()в Compose. - Добавили поддержку переменных.
- Протестировали через эмулятор или предпросмотр.
- Учитывали RTL и изображения.
- Исправили типичные ошибки.
Теперь приложение автоматически отображает текст на языке устройства пользователя.