Spec-Zone.ru › Kotlin 2

Локализация строк

Локализация — это процесс адаптации приложения к разным языкам, регионам и культурным особенностям. В этом руководстве объясняется, как настроить каталоги переводов, работать с региональными форматами, обрабатывать языки с письмом справа налево (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() поддерживают передачу таких параметров.

Что дальше

  • Узнайте, как управлять региональными форматами

  • Узнайте об обработке языков с письмом справа налево

2 сентября 2026 г.
Тестирование пользовательского интерфейса Compose MultiplatformУправление региональными форматами

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API