Локализация библиотеки пользовательского интерфейса в приложении
Локализация является ключом к созданию продуктов, которые могут использоваться по всему миру и людьми, которые говорят на разных языках. Библиотека пользовательского интерфейса Службы коммуникации Azure предоставляет поддержку некоторых языков и возможностей, таких как справа налево (RTL). Разработчики могут предоставлять собственные файлы локализации для библиотеки пользовательского интерфейса.
Из этой статьи вы узнаете, как правильно настроить локализацию с помощью библиотеки пользовательского интерфейса в приложении.
Необходимые компоненты
- Учетная запись Azure с активной подпиской. Создайте учетную запись бесплатно .
- Развернутый ресурс Служб коммуникации. Создайте ресурс Служб коммуникации.
- Маркер доступа пользователя для включения клиента для вызовов. Получите маркер доступа пользователя.
- Необязательно. Завершение краткого руководства по началу работы с составными компонентами библиотеки пользовательского интерфейса.
Настройка локализации
Подробную документацию и краткие руководства по библиотеке веб-интерфейса см. в статье " История библиотеки веб-интерфейса".
Дополнительные сведения см. в статье "Локализация " в библиотеке веб-пользовательского интерфейса.
Дополнительные сведения см. в библиотеке пользовательского интерфейса Android с открытым исходным кодом и образце кода приложения.
Доступные языки
В следующей таблице перечислены CallCompositeSupportedLocale
идентификаторы для встроенных переводов. Если вы хотите локализовать составной объект, передайте Locale
объект в CallCompositeLocalizationOptions
CallCompositeSupportedLocale
качестве параметров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()
.
Чтобы использовать 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 |
---|---|
Настройка переводов
Существует два варианта настройки предоставленных переводов на язык. Список ключей локализации можно использовать для переопределения определенной строки для пары "ключ-значение ". Языковой стандарт можно указать как один из поддерживаемых языков. Если ключ не указан, он вернется к поддерживаемой строке перевода. Если указать неподдерживаемый язык, необходимо предоставить переводы всех ключей для этого языка (с помощью string.xml
файла), а затем вернуться к английским строкам, если ключ не указан.
Предположим, что вы хотите использовать строки на панели управления из языкового стандарта английского языка (США), но вы хотите изменить метку кнопки "Присоединиться к вызову ", чтобы начать собрание в режиме установки. string.xml
Создайте файл (или другое имя файла) с парой "ключ-значение" для выбранных ключей, которые необходимо переопределить. В следующем примере переопределяется ключ azure_communication_ui_calling_setup_view_button_join_call
.
Дополнительные сведения см. в библиотеке пользовательского интерфейса 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)
Направление макета
Некоторые региональные параметры (например, арабский и иврит) могут потребовать локализации, чтобы иметь правый налево макет. Можно указать 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 |
---|---|
Настройка переводов
Существует два варианта настройки предоставленных переводов на язык. Чтобы переопределить определенную строку, можно использовать список ключей локализации для пары "ключ-значение ". Можно указать locale
как один из поддерживаемых языков. Если ключ не указан, он возвращается в поддерживаемую строку перевода. Если указать неподдерживаемый язык, необходимо предоставить переводы всех ключей для этого языка (с помощью Localizable.strings
файла), а затем вернуться к английским строкам, если ключ не указан.
Предположим, что вы хотите использовать строки на панели управления из языкового стандарта английского языка (США), но вы хотите изменить метку кнопки "Присоединиться к вызову ", чтобы начать собрание в режиме установки. Включите локализацию в проекте для экземпляра locale
, который требуется переопределить. Localizable.strings
Создайте файл (или другое имя файла с расширением.strings
) с парой "ключ-значение" для выбранных ключей, которые необходимо переопределить. В следующем примере переопределяется ключ AzureCommunicationUI.SetupView.Button.JoinCall
.
Чтобы указать, что переопределяется, 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)
Голосовая связь со специальными возможностями для локализации
Чтобы голосовая связь работала правильно для локализации, убедитесь, что язык добавляется в локализации приложения. Затем голосовая связь обнаруживает, что приложение поддерживает язык, указанный для LocalizationOptions
locale
. Он выбирает голос речи для языка с помощью голоса, найденного в Параметры> Accessibility>Speech на устройстве. Вы можете убедиться, что язык добавляется в проект, как показано в следующем примере.