Localizar la biblioteca de interfaz de usuario en una aplicación
La localización es clave para crear productos que se puedan usar en todo el mundo y por personas que hablan diferentes idiomas. La biblioteca de interfaz de usuario de Azure Communication Services proporciona compatibilidad integrada con algunos lenguajes y funcionalidades, como derecha a izquierda (RTL). Los desarrolladores pueden proporcionar sus propios archivos de localización para la biblioteca de interfaz de usuario.
En este artículo, aprenderá a configurar la localización correctamente mediante la biblioteca de interfaz de usuario de la aplicación.
- Una cuenta de Azure con una suscripción activa. Cree una cuenta gratuita.
- Un recurso de Communication Services implementado. Cree un recurso de Communication Services.
- Un token de acceso de usuario para habilitar el cliente de llamada. Obtenga un token de acceso de usuario.
- Opcional: Finalización del inicio rápido de para empezar a trabajar con compuestos de la biblioteca de interfaz de usuario.
Para obtener documentación detallada e inicios rápidos sobre la biblioteca de interfaz de usuario web, consulte el libro gráfico de la biblioteca de interfaz de usuario web.
Para obtener más información, consulte Localización en la biblioteca de interfaz de usuario web.
Para más información, consulte la Biblioteca de interfaz de usuario de código abierto de Android y el código de aplicación de ejemplo.
En la tabla siguiente se enumeran los identificadores de CallCompositeSupportedLocale
de las traducciones integradas. Si desea localizar el compuesto, pase un objeto de Locale
de CallCompositeSupportedLocale
a CallCompositeLocalizationOptions
como opciones en CallComposite
.
Lenguaje | CallCompositeSupportedLocale |
---|---|
Árabe (Arabia Saudí) | CallCompositeSupportedLocale.AR_SA |
Alemán (Alemania) | CallCompositeSupportedLocale.DE_DE |
Inglés (EE. UU.) | CallCompositeSupportedLocale.EN_US |
English (Reino Unido) | CallCompositeSupportedLocale.EN_UK |
Español (España) | CallCompositeSupportedLocale.ES_ES |
Español | CallCompositeSupportedLocale.ES |
Finés (Finlandia) | CallCompositeSupportedLocale.FI_FI |
Francés (Francia) | CallCompositeSupportedLocale.FR_FR |
Francés | CallCompositeSupportedLocale.FR |
Hebreo (Israel) | CallCompositeSupportedLocale.IW_IL |
Italiano (Italia) | CallCompositeSupportedLocale.IT_IT |
Italiano | CallCompositeSupportedLocale.IT |
Japonés (Japón) | CallCompositeSupportedLocale.JA_JP |
Japonés | CallCompositeSupportedLocale.JA |
Coreano (Corea) | CallCompositeSupportedLocale.KO_KR |
Coreano | CallCompositeSupportedLocale.KO |
Neerlandés (Países Bajos) | CallCompositeSupportedLocale.NL_NL |
Neerlandés | CallCompositeSupportedLocale.NL |
Noruego (Bokmål) | CallCompositeSupportedLocale.NB_NO |
Polaco (Polonia) | CallCompositeSupportedLocale.PL_PL |
Polaco | CallCompositeSupportedLocale.PL |
Portugués (Brasil) | CallCompositeSupportedLocale.PT_BR |
Portugués | CallCompositeSupportedLocale.PT |
Ruso (Rusia) | CallCompositeSupportedLocale.RU_RU |
Ruso | CallCompositeSupportedLocale.RU |
Sueco (Suecia) | CallCompositeSupportedLocale.SV_SE |
Turco (Turquía) | CallCompositeSupportedLocale.TR_TR |
Turco | CallCompositeSupportedLocale.TR |
Chino (simplificado) | CallCompositeSupportedLocale.ZH_CN |
Chino (tradicional) | CallCompositeSupportedLocale.ZH_TW |
Chino | CallCompositeSupportedLocale.ZH |
CallCompositeLocalizationOptions
es un contenedor de opciones que establece todas las cadenas para los componentes de la biblioteca de interfaz de usuario de Android mediante CallCompositeSupportedLocale
. De forma predeterminada, todas las etiquetas de texto usan cadenas en inglés. Puede usar CallCompositeLocalizationOptions
para establecer un idioma diferente pasando un objeto Locale
de CallCompositeSupportedLocale
. Lista para usar, la biblioteca de interfaz de usuario incluye un conjunto de objetos Locale
que se pueden usar con los componentes y compuestos de la interfaz de usuario.
También puede obtener una lista de objetos Locale
mediante la función estática CallCompositeSupportedLocale.getSupportedLocales()
.
Para usar CallCompositeLocalizationOptions
, especifique CallCompositeSupportedLocale
y páselo a CallCompositeBuilder
. En el ejemplo siguiente se localiza el compuesto en francés.
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()
Algunas referencias culturales (por ejemplo, árabe y hebreo) pueden necesitar localización para tener un diseño de derecha a izquierda. Puede especificar layoutDirection
como parte de CallCompositeLocalizationOptions
. El diseño de la composición se reflejará, pero el texto permanecerá en la dirección de la cadena.
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 |
---|---|
Hay dos opciones para personalizar las traducciones de idioma que proporcionamos. Puede usar la lista de claves de localización para invalidar una cadena determinada para el par clave-valor. Puede especificar la configuración regional como uno de los idiomas admitidos. Cuando no se proporciona una clave, se revertirá a una cadena de traducción admitida. Si especifica un idioma no admitido, debe proporcionar traducciones para todas las claves de ese idioma (mediante el archivo string.xml
) y, a continuación, revertir a cadenas en inglés cuando no se proporciona una clave.
Supongamos que quiere que la barra de control use cadenas de la configuración regional inglés (EE. UU.), pero quiere cambiar la etiqueta del botón Unirse a la llamada a Iniciar reunión en la vista de configuración. Cree un archivo string.xml
(u otro nombre de archivo) con el par clave-valor para las claves seleccionadas que desea invalidar. En el ejemplo siguiente se invalida la clave azure_communication_ui_calling_setup_view_button_join_call
.
Para más información, consulte la Biblioteca de interfaz de usuario de código abierto de iOS y el código de aplicación de ejemplo.
Si la aplicación admite la localización, la biblioteca de interfaz de usuario se muestra en función del idioma preferido por el sistema del usuario si forma parte de los idiomas disponibles enumerados en la sección siguiente. De lo contrario, el idioma tiene como valor predeterminado las cadenas predefinidas en inglés (en
).
En la tabla siguiente se enumeran las traducciones listas para usar para locale
. Si desea localizar el compuesto, pase locale
a LocalizationOptions
como opciones en CallComposite
.
Lenguaje | SupportedLocale | Identificador |
---|---|---|
Chino, simplificado | zh |
zh |
Chino, simplificado | zhHans |
zh-Hans |
Chino simplificado (China continental) | zhHansCN |
zh-Hans-CN |
Chino (tradicional) | zhHant |
zh-Hant |
Chino, tradicional (Taiwán) | zhHantTW |
zh-Hant-TW |
Neerlandés | nl |
nl |
Neerlandés (Países Bajos) | nlNL |
nl-NL |
English | en |
en |
Inglés (Reino Unido) | enGB |
en-GB |
Inglés (Estados Unidos) | enUS |
en-US |
Francés | fr |
fr |
Francés (Francia) | frFR |
fr-FR |
Alemán | de |
de |
Alemán (Alemania) | deDE |
de-DE |
Italiano | it |
it |
Italiano (Italia) | itIT |
it-IT |
Japonés | ja |
ja |
Japonés (Japón) | jaJP |
ja-JP |
Coreano | ko |
ko |
Coreano (Corea del Sur) | koKR |
ko-KR |
Portugués | pt |
pt |
Portugués (Brasil) | ptBR |
pt-BR |
Ruso | ru |
ru |
Ruso (Rusia) | ruRU |
ru-RU |
Español | es |
es |
Español (España) | esES |
es-ES |
Turco | tr |
tr |
Turco (Turquía) | trTR |
tr-TR |
También puede obtener una lista de estructuras de locale
mediante la función estática 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
es un contenedor de opciones que establece todas las cadenas de los componentes de la biblioteca de interfaz de usuario mediante locale
. De forma predeterminada, todas las etiquetas de texto usan cadenas en inglés (en
). Puede usar LocalizationOptions
para establecer una estructura de locale
diferente. Lista para usar, la biblioteca de interfaz de usuario incluye un conjunto de estructuras de locale
que se pueden usar con los componentes y compuestos de la interfaz de usuario.
Para usar LocalizationOptions
, especifique una estructura de locale
Swift (con o sin código de región) y pásela a CallCompositeOptions
. En el ejemplo siguiente se localiza el compuesto en francés para Francia (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)
Algunas referencias culturales (por ejemplo, árabe y hebreo) pueden necesitar localización para tener un diseño de derecha a izquierda. Puede especificar layoutDirection
como parte de LocalizationOptions
. El diseño de la composición se reflejará, pero el texto permanecerá en la dirección de la cadena.
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)
En el ejemplo siguiente se muestra la creación de reflejo del diseño de derecha a izquierda. Si no especifica layoutDirection
, el valor predeterminado es false
(diseño de izquierda a derecha).
layoutDirection = .leftToRight (valor predeterminado) |
layoutDirection = .rightToLeft |
---|---|
Hay dos opciones para personalizar las traducciones de idioma que proporcionamos. Para invalidar una cadena determinada, puede usar la lista de claves de localización para el par clave-valor. Puede especificar locale
como uno de los idiomas admitidos. Cuando no se proporciona una clave, vuelve a una cadena de traducción admitida. Si especifica un idioma no admitido, debe proporcionar traducciones para todas las claves de ese idioma (mediante el archivo Localizable.strings
) y, a continuación, revertir a cadenas en inglés cuando no se proporciona una clave.
Supongamos que quiere que la barra de control use cadenas de la configuración regional inglés (EE. UU.), pero quiere cambiar la etiqueta del botón Unirse a la llamada a Iniciar reunión en la vista de configuración. Habilite la localización en el proyecto para la instancia de locale
que desea invalidar. Cree un archivo Localizable.strings
(u otro nombre de archivo con la extensión .strings
) con el par clave-valor para las claves seleccionadas que desea invalidar. En el ejemplo siguiente se invalida la clave AzureCommunicationUI.SetupView.Button.JoinCall
.
Para especificar que está reemplazando con Localizable.strings
, cree un objeto LocalizationOptions
para especificar locale
y localizationFilename
. O cuando se usa el inicializador de locale
, examina las claves de Localizable.strings
para locale.collatorIdentifier
como lenguaje del proyecto.
let localizationOptions = LocalizationOptions(locale: Locale(identifier: "fr"),
localizableFilename: "Localizable")
let callCompositeOptions = CallCompositeOptions(localization: localizationOptions)
let callComposite = CallComposite(withOptions: callCompositeOptions)
Para que VoiceOver funcione correctamente para una localización, asegúrese de que el idioma se agrega a las localización de la aplicación. Después, la VoiceOver detecta que la aplicación admite el idioma especificado en LocalizationOptions
para locale
. Selecciona la voz de voz del idioma mediante la voz que se encuentra en Configuración>Accesibilidad>voz en el dispositivo. Puede comprobar que el lenguaje se agrega al proyecto, como se muestra en el ejemplo siguiente.