Локализуйте ваше приложение (Views)

Концепции и реализация Jetpack Compose

Android работает на множестве устройств в разных регионах. Чтобы охватить как можно больше пользователей, убедитесь, что ваше приложение обрабатывает текст, аудиофайлы, числа, валюту и графику способами, соответствующими языковым особенностям регионов, где оно используется.

На этой странице описаны некоторые рекомендации по локализации приложений для Android.

Вам необходимо иметь практические знания языка программирования Kotlin или Java, а также быть знакомым с загрузкой ресурсов Android , объявлением элементов пользовательского интерфейса в XML , особенностями разработки, такими как жизненный цикл активности , и общими принципами интернационализации и локализации.

Рекомендуется использовать фреймворк ресурсов Android, чтобы максимально отделить локализованные аспекты вашего приложения от основной функциональности.

  • Разместите большую часть или все содержимое пользовательского интерфейса вашего приложения в файлах ресурсов, как описано на этой странице и в обзоре ресурсов приложения .
  • Поведение пользовательского интерфейса, с другой стороны, определяется вашим кодом на Kotlin или Java. Например, если пользователи вводят данные, которые необходимо форматировать или сортировать по-разному в зависимости от локали, то для обработки этих данных программным способом используется язык программирования Kotlin или Java. На этой странице не рассматривается вопрос локализации кода на Kotlin или Java.

Краткое руководство по локализации строк в вашем приложении см. в разделе «Поддержка различных языков и культур» .

Используйте ресурсы для локализации.

В этом разделе обсуждается, как создавать ресурсы по умолчанию, а также альтернативные ресурсы. Также объясняется, как назначается приоритет ресурсам и как ссылаться на ресурсы в коде.

Создать ресурсы по умолчанию

Поместите текст по умолчанию для приложения в файл res/values/strings.xml . Для этих строк используйте язык по умолчанию — язык, на котором, как ожидается, говорит большинство пользователей вашего приложения.

В набор ресурсов по умолчанию также входят любые стандартные изображения и макеты, а также могут включаться другие типы ресурсов, такие как анимации. Эти ресурсы размещаются в следующих каталогах:

  • res/drawable/ : обязательная директория, содержащая как минимум один графический файл для значка приложения в Google Play.
  • res/layout/ : необходимая директория, содержащая XML-файл, определяющий макет по умолчанию.
  • res/anim/ : требуется, если у вас есть папки res/anim- <qualifiers>
  • res/xml/ : требуется, если у вас есть папки res/xml- <qualifiers>
  • res/raw/ : требуется, если у вас есть какие-либо папки res/raw- <qualifiers>

Совет: В своем коде проверьте каждое упоминание ресурса Android. Убедитесь, что для каждого из них определен ресурс по умолчанию. Также убедитесь, что файл строк по умолчанию является полным: локализованный файл строк может содержать подмножество строк, но файл строк по умолчанию должен содержать их все.

Советы по локализации

Следуйте этим советам при локализации вашего приложения.

Разработайте гибкую планировку.

Если вам нужно изменить структуру макета, чтобы он соответствовал определенному языку, вы можете создать альтернативный макет для этого языка, например, res/layout-de/main.xml для немецкоязычного макета. Однако это может усложнить поддержку вашего приложения. Лучше создать единый, более гибкий макет.

Ещё одна типичная ситуация — это язык, требующий иного оформления. Например, у вас может быть форма обратной связи, которая включает два поля для имени, когда приложение работает на японском языке, и три поля для имени, когда приложение работает на другом языке. Это можно решить двумя способами:

  • Создайте один макет с полем, которое можно программно включать или отключать в зависимости от языка.
  • Основной макет должен включать в себя еще один макет, содержащий изменяемое поле. Второй макет может иметь различные конфигурации для разных языков.

Для ручного определения локали используйте объект Android Context.

Вы можете определить языковые настройки, используя объект Context , предоставляемый Android, как показано в следующем примере:

Котлин

val primaryLocale: Locale = context.resources.configuration.locales[0]
val locale: String = primaryLocale.displayName

Java

Locale primaryLocale = context.getResources().getConfiguration().getLocales().get(0);
String locale = primaryLocale.getDisplayName();