你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

本地化应用程序中的 UI 库

本地化是制作能够在世界各地使用并且适用于不同语言使用者的产品的关键。 Azure 通信服务 UI 库为某些语言和功能(例如从右到左(RTL)提供现成的支持。 开发人员可以为 UI 库提供自己的本地化文件。

本文介绍如何在应用程序中使用 UI 库正确设置本地化。

先决条件

设置本地化

有关 Web UI 库的详细文档和快速入门,请参阅 Web UI Library Storybook

若要了解详细信息,请参阅 Web UI 库中的 本地化

有关详细信息,请参阅 开源 Android UI 库示例应用程序代码

可用语言

下表列出了现用翻译的 CallCompositeSupportedLocale ID。 如果要本地化复合项,请将 Locale 对象从 CallCompositeSupportedLocale 传递到 CallCompositeLocalizationOptions 用作 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
Korean CallCompositeSupportedLocale.KO
荷兰语(荷兰) CallCompositeSupportedLocale.NL_NL
荷兰语 CallCompositeSupportedLocale.NL
挪威语(博克马尔语) CallCompositeSupportedLocale.NB_NO
波兰语(波兰) CallCompositeSupportedLocale.PL_PL
波兰语 CallCompositeSupportedLocale.PL
葡萄牙语(巴西) CallCompositeSupportedLocale.PT_BR
Portuguese CallCompositeSupportedLocale.PT
俄语(俄罗斯) CallCompositeSupportedLocale.RU_RU
Russian CallCompositeSupportedLocale.RU
瑞典语(瑞典) CallCompositeSupportedLocale.SV_SE
土耳其(土耳其语) CallCompositeSupportedLocale.TR_TR
土耳其语 CallCompositeSupportedLocale.TR
中文(简体) CallCompositeSupportedLocale.ZH_CN
中文(传统) CallCompositeSupportedLocale.ZH_TW
Chinese CallCompositeSupportedLocale.ZH

本地化服务提供商

CallCompositeLocalizationOptions 是一个选项包装器,它通过使用 CallCompositeSupportedLocale设置 Android UI 库组件的所有字符串。 默认情况下,所有文本标签都使用英语字符串。 可以通过CallCompositeLocalizationOptionsLocale中传递CallCompositeSupportedLocale对象来设置其他语言。 开箱即用的 UI 库包括一组 Locale 可用于 UI 组件和复合体的对象。

还可以使用静态函数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 UI 库示例应用程序代码

语言检测

如果应用程序支持本地化,则 UI 库将根据用户的系统首选语言显示(如果它是下一部分中列出的可用语言的一部分)。 否则,语言默认为预定义的英语 (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
Korean ko ko
韩国语(韩国) koKR ko-KR
Portuguese pt pt
葡萄牙语(巴西) ptBR pt-BR
Russian ru ru
俄语(俄罗斯) ruRU ru-RU
西班牙语 es es
西班牙语(西班牙) esES es-ES
土耳其语 tr tr
土耳其语 (Türkiye) 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"]

LocalizationOptions

LocalizationOptions 是一个选项包装器,它通过使用 locale设置 UI 库组件的所有字符串。 默认情况下,所有文本标签都使用英语 (en) 字符串。 您可以使用 LocalizationOptions 设置不同的 locale 结构。 现成的 UI 库包含一组可用于 UI 组件和复合项的 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 对象来指定 localelocalizationFilename。 或者,使用 locale 初始值设定项时,它会在 Localizable.stringslocale.collatorIdentifier 中查找键作为项目中的语言。

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

用于本地化的辅助功能旁白

若要使语音转换能够正常进行本地化,请确保语言已添加到应用的本地化中。 然后,VoiceOver 检测到应用支持 LocalizationOptionslocale 中指定的语言。 它通过在设备上的“设置”“辅助功能”>“语音”中找到的语音来选择语言的语音。> 可以验证语言是否已添加到项目,如以下示例所示。

显示 iOS Xcode 项目本地化的屏幕截图。

后续步骤