Локализация строк
Локализация — это процесс адаптации приложения к разным языкам, регионам и культурным особенностям. В этом руководстве объясняется, как настроить каталоги переводов, работать с региональными форматами, обрабатывать языки с письмом справа налево (RTL) и тестировать локализацию на разных платформах.
Чтобы локализовать строки в Compose Multiplatform, необходимо предоставить переводы элементов пользовательского интерфейса приложения на все поддерживаемые языки. Compose Multiplatform упрощает этот процесс благодаря общей библиотеке управления ресурсами и генерации кода, обеспечивающим удобный доступ к переводам.
Настройка каталогов переводов
Храните все строковые ресурсы в специальном каталоге composeResources в общем исходном наборе. Поместите тексты по умолчанию в каталог values и создайте соответствующие каталоги для каждого языка. Используйте следующую структуру:
commonMain/composeResources/ ├── values/ │ └── strings.xml ├── values-es/ │ └── strings.xml ├── values-fr/ │ └── strings.xml └── ... (other locale directories)
Если для языка используется несколько систем письма (например, для китайского или сербского), добавьте каталог без указания системы письма (values-zh) наряду с каталогами для конкретных систем письма (values-b+zh+Hans, values-b+zh+Hant). В противном случае ресурс не удастся найти, если система укажет локаль без системы письма. Подробнее см. в разделе Квалификаторы языка и региона.
В каталогах values и их локализованных вариантах задайте строковые ресурсы в файлах strings.xml, используя пары «ключ-значение». Например, добавьте английские тексты в commonMain/composeResources/values/strings.xml:
<resources>
<string name="app_name">My Application</string>
<string name="greeting">Hello, world!</string>
<string name="welcome_message">Welcome, %s!</string>
</resources>
Затем создайте соответствующие локализованные файлы с переводами. Например, добавьте испанские переводы в commonMain/composeResources/values-es/strings.xml:
<resources>
<string name="app_name">Mi Aplicación</string>
<string name="greeting">¡Hola mundo!</string>
<string name="welcome_message">¡Bienvenido, %s!</string>
</resources>
Генерация класса для статического доступа
После добавления всех переводов соберите проект, чтобы сгенерировать специальный класс для доступа к ресурсам. Compose Multiplatform обрабатывает файлы ресурсов strings.xml в каталоге composeResources и создает статические свойства-аксессоры для каждой строковой константы.
Полученный объект Res.strings позволяет безопасно получать доступ к локализованным строкам из общего кода. Чтобы отображать строки в пользовательском интерфейсе приложения, используйте компонуемую функцию stringResource(). Она извлекает нужный текст с учетом текущей локали пользователя:
import project.shared.generated.resources.Res
@Composable
fun MyApp() {
Text(stringResource(Res.strings.app_name))
Text(stringResource(Res.strings.greeting))
Text(stringResource(Res.strings.welcome_message, "User"))
}
В приведенном выше примере строка welcome_message содержит заполнитель (%s) для динамического значения. И сгенерированный аксессор, и функция stringResource() поддерживают передачу таких параметров.
Что дальше
© 2010–2026 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/docs/multiplatform/compose-localize-strings.html