Локализация библиотеки пользовательского интерфейса в приложении

Локализация является ключом к созданию продуктов, которые могут использоваться по всему миру и людьми, которые говорят на разных языках. Библиотека пользовательского интерфейса Службы коммуникации Azure предоставляет поддержку некоторых языков и возможностей, таких как справа налево (RTL). Разработчики могут предоставлять собственные файлы локализации для библиотеки пользовательского интерфейса.

Из этой статьи вы узнаете, как правильно настроить локализацию с помощью библиотеки пользовательского интерфейса в приложении.

Необходимые компоненты

Настройка локализации

Подробную документацию и краткие руководства по библиотеке веб-интерфейса см. в статье " История библиотеки веб-интерфейса".

Дополнительные сведения см. в статье "Локализация " в библиотеке веб-пользовательского интерфейса.

Дополнительные сведения см. в библиотеке пользовательского интерфейса Android с открытым исходным кодом и образце кода приложения.

Доступные языки

В следующей таблице перечислены CallCompositeSupportedLocale идентификаторы для встроенных переводов. Если вы хотите локализовать составной объект, передайте Locale объект в CallCompositeLocalizationOptionsCallCompositeSupportedLocale качестве параметровCallComposite.

Язык CallCompositeSupportedLocale
Арабский (Саудовская Аравия) CallCompositeSupportedLocale.AR_SA
Немецкий (Германия) CallCompositeSupportedLocale.DE_DE
Английский (США) CallCompositeSupportedLocale.EN_US
Английский (Соединенное Королевство) CallCompositeSupportedLocale.EN_UK
испанский (Испания) CallCompositeSupportedLocale.ES_ES
Испанский CallCompositeSupportedLocale.ES
Финский (Финляндия) CallCompositeSupportedLocale.FI_FI
Французский (Франция) CallCompositeSupportedLocale.FR_FR
Французский CallCompositeSupportedLocale.FR
Иврит (Израиль) CallCompositeSupportedLocale.IW_IL
Итальянский (Италия) CallCompositeSupportedLocale.IT_IT
Итальянский CallCompositeSupportedLocale.IT
Японский (Япония) CallCompositeSupportedLocale.JA_JP
Японский CallCompositeSupportedLocale.JA
корейский (Корея) CallCompositeSupportedLocale.KO_KR
Корейский CallCompositeSupportedLocale.KO
нидерландский (Нидерланды) CallCompositeSupportedLocale.NL_NL
Голландский CallCompositeSupportedLocale.NL
Норвежский (букмол) CallCompositeSupportedLocale.NB_NO
Польский (Польша) CallCompositeSupportedLocale.PL_PL
Польский CallCompositeSupportedLocale.PL
португальский (Бразилия) CallCompositeSupportedLocale.PT_BR
Португальский CallCompositeSupportedLocale.PT
Русский (Россия) CallCompositeSupportedLocale.RU_RU
русский CallCompositeSupportedLocale.RU
шведский (Швеция) CallCompositeSupportedLocale.SV_SE
Турецкий (Турция) CallCompositeSupportedLocale.TR_TR
Турецкий CallCompositeSupportedLocale.TR
Китайский (упрощенное письмо) CallCompositeSupportedLocale.ZH_CN
Китайский (традиционное письмо) CallCompositeSupportedLocale.ZH_TW
Китайский CallCompositeSupportedLocale.ZH

Поставщик локализации

CallCompositeLocalizationOptions — это оболочка параметров, которая задает все строки для компонентов библиотеки пользовательского интерфейса Android с помощью CallCompositeSupportedLocale. По умолчанию все текстовые метки используют английские строки. Можно использовать CallCompositeLocalizationOptions для задания другого Locale языка, передав объект из CallCompositeSupportedLocale. Из поля библиотека пользовательского интерфейса включает набор Locale объектов, доступных для использования с компонентами и составными элементами пользовательского интерфейса.

Вы также можете получить список Locale объектов с помощью статической функции CallCompositeSupportedLocale.getSupportedLocales().

Снимок экрана: локализация Android.

Чтобы использовать CallCompositeLocalizationOptions, укажите и передайте CallCompositeSupportedLocale его CallCompositeBuilderв . В следующем примере выполняется локализация составного на французский язык.

import com.azure.android.communication.ui.calling.models.CallCompositeLocalizationOptions
import com.azure.android.communication.ui.calling.models.CallCompositeSupportedLocale

// CallCompositeSupportedLocale provides a list of supported locales
val callComposite: CallComposite =
            CallCompositeBuilder().localization(
                CallCompositeLocalizationOptions(CallCompositeSupportedLocale.FR)
            ).build()

Направление макета

Для некоторых языков и региональных параметров (например, арабского и иврита) может потребоваться локализация для макета справа налево. Можно указать layoutDirection как часть CallCompositeLocalizationOptions. Макет составного элемента будет зеркало, но текст останется в направлении строки.

import com.azure.android.communication.ui.calling.models.CallCompositeLocalizationOptions
import com.azure.android.communication.ui.calling.models.CallCompositeSupportedLocale

// CallCompositeSupportedLocale provides a list of supported locales
val callComposite: CallComposite =
            CallCompositeBuilder().localization(
                CallCompositeLocalizationOptions(CallCompositeSupportedLocale.FR, LayoutDirection.LTR)
            ).build()
LayoutDirection.RTL LayoutDirection.LTR
Снимок экрана: макет Android справа налево. Снимок экрана: макет Android слева направо.

Настройка переводов

Существует два варианта настройки предоставленных переводов на язык. Список ключей локализации можно использовать для переопределения определенной строки для пары "ключ-значение ". Языковой стандарт можно указать как один из поддерживаемых языков. Если ключ не указан, он вернется к поддерживаемой строке перевода. Если указать неподдерживаемый язык, необходимо предоставить переводы всех ключей для этого языка (с помощью string.xml файла), а затем вернуться к английским строкам, если ключ не указан.

Предположим, что вы хотите использовать строки на панели управления из языкового стандарта английского языка (США), но вы хотите изменить метку кнопки "Присоединиться к вызову ", чтобы начать собрание в режиме установки. string.xml Создайте файл (или другое имя файла) с парой "ключ-значение" для выбранных ключей, которые необходимо переопределить. В следующем примере переопределяется ключ azure_communication_ui_calling_setup_view_button_join_call.

Снимок экрана: проект настройки локализации Android.

Снимок экрана: пример пользовательской метки Android.

Дополнительные сведения см. в библиотеке пользовательского интерфейса iOS с открытым исходным кодом и образце кода приложения.

Распознавание языка

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

Доступные языки

В следующей таблице перечислены встроенные переводы.locale Если вы хотите локализовать составной элемент, перейдите locale в LocalizationOptions качестве параметров CallComposite.

Язык SupportedLocale Идентификатор
Китайский упрощенный zh zh
Китайский упрощенный zhHans zh-Hans
Китайский, упрощенный (материкОвый Китай) zhHansCN zh-Hans-CN
Китайский (традиционный) zhHant zh-Hant
Китайский, традиционный (Тайвань) zhHantTW zh-Hant-TW
Голландский nl nl
нидерландский (Нидерланды) nlNL nl-NL
Английский en en
Английский (Великобритания) enGB en-GB
Английский (США) enUS en-US
Французский fr fr
Французский (Франция) frFR fr-FR
Немецкий de de
Немецкий (Германия) deDE de-DE
Итальянский it it
Итальянский (Италия) itIT it-IT
Японский ja ja
Японский (Япония) jaJP ja-JP
Корейский ko ko
Корейский (Южная Корея) koKR ko-KR
Португальский pt pt
португальский (Бразилия) ptBR pt-BR
русский ru ru
Русский (Россия) ruRU ru-RU
Испанский es es
испанский (Испания) esES es-ES
Турецкий tr tr
Турецкий (Турция) trTR tr-TR

Вы также можете получить список locale структур с помощью статической функции SupportedLocale.values.

let locales: [Locale] = SupportedLocale.values.map{ $0.identifier }
print(locales)

// ["de", "de-DE", "en", "en-GB", "en-US", "es", "es-ES", "fr", "fr-FR", "it", "it-IT", "ja", "ja-JP", "ko", "ko-KR", "nl", "nl-NL", "pt", "pt-BR", "ru", "ru-RU", "tr", "tr-TR", "zh", "zh-Hans", "zh-Hans-CN", "zh-Hant", "zh-Hant-TW"]

ЛокализацияOptions

LocalizationOptions — это оболочка параметров, которая задает все строки для компонентов библиотеки пользовательского интерфейса с помощью locale. По умолчанию все текстовые метки используют строки английского языка (en). Можно использовать LocalizationOptions для задания другой locale структуры. Из поля библиотека пользовательского интерфейса включает набор locale структур, которые можно использовать с компонентами и составными элементами пользовательского интерфейса.

Чтобы использовать LocalizationOptions, укажите структуру Swift locale (с кодом региона или без нее) и передайте ее CallCompositeOptionsв . В следующем примере локализован составной составной части для Франции (fr-FR).

// Creating a Swift locale structure
var localizationOptions = LocalizationOptions(locale: Locale(identifier: "fr-FR"))

// Use IntelliSense SupportedLocale to get supported locale structures
localizationOptions = LocalizationOptions(locale: SupportedLocale.frFR)

let callCompositeOptions = CallCompositeOptions(localization: localizationOptions)
let callComposite = CallComposite(withOptions: callCompositeOptions)

Снимок экрана: локализация iOS.

Направление макета

Некоторые региональные параметры (например, арабский и иврит) могут потребовать локализации, чтобы иметь правый налево макет. Можно указать layoutDirection как часть LocalizationOptions. Макет составного элемента будет зеркало, но текст останется в направлении строки.

var localizationOptions: LocalizationOptions

// Initializer with locale and layoutDirection
localizationOptions = LocalizationOptions(locale: Locale(identifier: "en"),
                                          layoutDirection: .rightToLeft)

// Initializer with locale, localizableFilename, and layoutDirection
localizationOptions = LocalizationOptions(locale: Locale(identifier: "en"),
                                          localizableFilename: "Localizable",
                                          layoutDirection: .rightToLeft)

// Add localizationOptions as an option
let callCompositeOptions = CallCompositeOptions(localization: localizationOptions)
let callComposite = CallComposite(withOptions: callCompositeOptions)

В следующем примере показана зеркало макета справа налево. Если не указать layoutDirection, по умолчанию используется false макет слева направо.

layoutDirection = .leftToRight (по умолчанию) layoutDirection = .rightToLeft
Снимок экрана: направление макета iOS слева направо. Снимок экрана: направление макета iOS справа налево.

Настройка переводов

Существует два варианта настройки предоставленных переводов на язык. Чтобы переопределить определенную строку, можно использовать список ключей локализации для пары "ключ-значение ". Можно указать locale как один из поддерживаемых языков. Если ключ не указан, он возвращается в поддерживаемую строку перевода. Если указать неподдерживаемый язык, необходимо предоставить переводы всех ключей для этого языка (с помощью Localizable.strings файла), а затем вернуться к английским строкам, если ключ не указан.

Предположим, что вы хотите использовать строки на панели управления из языкового стандарта английского языка (США), но вы хотите изменить метку кнопки "Присоединиться к вызову ", чтобы начать собрание в режиме установки. Включите локализацию в проекте для экземпляра locale , который требуется переопределить. Localizable.strings Создайте файл (или другое имя файла с расширением.strings) с парой "ключ-значение" для выбранных ключей, которые необходимо переопределить. В следующем примере переопределяется ключ AzureCommunicationUI.SetupView.Button.JoinCall.

Снимок экрана: проект установки iOS.

Снимок экрана: настраиваемая строка iOS.

Чтобы указать, что переопределяется, Localizable.stringsсоздайте LocalizationOptions объект для указания locale и localizationFilename. Или при использовании инициализатора locale он смотрит на ключи Localizable.strings в locale.collatorIdentifier качестве языка в проекте.

let localizationOptions = LocalizationOptions(locale: Locale(identifier: "fr"),
                                              localizableFilename: "Localizable")
let callCompositeOptions = CallCompositeOptions(localization: localizationOptions)
let callComposite = CallComposite(withOptions: callCompositeOptions)

Голосовая связь со специальными возможностями для локализации

Чтобы голосовая связь работала правильно для локализации, убедитесь, что язык добавляется в локализации приложения. Затем голосовая связь обнаруживает, что приложение поддерживает язык, указанный для LocalizationOptionslocale. Он выбирает голос речи для языка с помощью голоса, найденного в Параметры> Accessibility>Speech на устройстве. Вы можете убедиться, что язык добавляется в проект, как показано в следующем примере.

Снимок экрана: локализации проекта xcode для iOS.

Следующие шаги