Leer en inglés

Compartir vía


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.

Requisitos previos

Configurar la localización

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.

Idiomas disponibles

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

Proveedor de localización

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().

Captura de pantalla que muestra la localización de Android.

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()

Dirección de diseño

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
Captura de pantalla del diseño de derecha a izquierda de Android. Captura de pantalla del diseño de izquierda a derecha de Android.

Personalización de traducciones

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.

En esta captura de pantalla, se muestra el proyecto de configuración del proceso de localización para Android.

En esta captura de pantalla, se muestra una etiqueta personalizada de ejemplo para Android.

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.

Detección de idioma

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).

Idiomas disponibles

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

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)

Captura de pantalla que muestra la localización de iOS.

Dirección de diseño

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
Captura de pantalla que muestra una dirección de diseño de iOS de izquierda a derecha. Captura de pantalla que muestra una dirección de diseño de iOS de derecha a izquierda.

Personalización de traducciones

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.

Captura de pantalla que muestra un proyecto de instalación de iOS.

Captura de pantalla que muestra una cadena personalizada de iOS.

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)

VoiceOver de accesibilidad para la localización

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.

Captura de pantalla que muestra las localización del proyecto de Xcode de iOS.

Pasos siguientes