Localizzare la libreria dell'interfaccia utente in un'applicazione

La localizzazione è una chiave per creare prodotti che possono essere usati in tutto il mondo e da persone che parlano lingue diverse. La libreria dell'interfaccia utente di Servizi di comunicazione di Azure offre supporto predefinito per alcune lingue e funzionalità, ad esempio da destra a sinistra (RTL). Gli sviluppatori possono fornire i propri file di localizzazione per la libreria dell'interfaccia utente.

Questo articolo illustra come configurare correttamente la localizzazione usando la libreria dell'interfaccia utente nell'applicazione.

Prerequisiti

Configurare la localizzazione

Per la documentazione dettagliata e gli argomenti di avvio rapido sulla libreria dell'interfaccia utente Web, vedere il libro della raccolta dell'interfaccia utente Web.

Per altre informazioni, vedere Localizzazione nella libreria dell'interfaccia utente Web.

Per altre informazioni, vedere la libreria dell'interfaccia utente Android open source e il codice dell'applicazione di esempio.

Lingue disponibili

Nella tabella seguente sono elencati CallCompositeSupportedLocale gli ID per le traduzioni predefinite. Se si vuole localizzare il composito, passare un Locale oggetto da CallCompositeSupportedLocale a come CallCompositeLocalizationOptions opzioni in CallComposite.

Lingua CallCompositeSupportedLocale
Arabo (Arabia Saudita) CallCompositeSupportedLocale.AR_SA
Tedesco (Germania) CallCompositeSupportedLocale.DE_DE
Inglese (Stati Uniti) CallCompositeSupportedLocale.EN_US
Inglese (Regno Unito) CallCompositeSupportedLocale.EN_UK
Spagnolo (Spagna) CallCompositeSupportedLocale.ES_ES
Spagnolo CallCompositeSupportedLocale.ES
Finlandese (Finlandia) CallCompositeSupportedLocale.FI_FI
Francese (Francia) CallCompositeSupportedLocale.FR_FR
Francese CallCompositeSupportedLocale.FR
Ebraico (Israele) CallCompositeSupportedLocale.IW_IL
Italiano (Italia) CallCompositeSupportedLocale.IT_IT
Italiano CallCompositeSupportedLocale.IT
Giapponese (Giappone) CallCompositeSupportedLocale.JA_JP
Giapponese CallCompositeSupportedLocale.JA
Coreano (Corea) CallCompositeSupportedLocale.KO_KR
Coreano CallCompositeSupportedLocale.KO
Olandese (Paesi Bassi) CallCompositeSupportedLocale.NL_NL
Olandese CallCompositeSupportedLocale.NL
Norvegese (Bokmål) CallCompositeSupportedLocale.NB_NO
Polacco (Polonia) CallCompositeSupportedLocale.PL_PL
Polacco CallCompositeSupportedLocale.PL
Portoghese (Brasile) CallCompositeSupportedLocale.PT_BR
Portoghese CallCompositeSupportedLocale.PT
Russo (Russia) CallCompositeSupportedLocale.RU_RU
Russo CallCompositeSupportedLocale.RU
Svedese (Svezia) CallCompositeSupportedLocale.SV_SE
Turco (Turchia) CallCompositeSupportedLocale.TR_TR
Turco CallCompositeSupportedLocale.TR
Cinese semplificato CallCompositeSupportedLocale.ZH_CN
Cinese tradizionale CallCompositeSupportedLocale.ZH_TW
Cinese CallCompositeSupportedLocale.ZH

Provider di localizzazione

CallCompositeLocalizationOptions è un wrapper di opzioni che imposta tutte le stringhe per i componenti della libreria dell'interfaccia utente Android usando CallCompositeSupportedLocale. Per impostazione predefinita, tutte le etichette di testo usano stringhe in inglese. È possibile usare CallCompositeLocalizationOptions per impostare una lingua diversa passando un Locale oggetto da CallCompositeSupportedLocale. La libreria dell'interfaccia utente include un set di Locale oggetti utilizzabili con i componenti dell'interfaccia utente e i compositi.

È anche possibile ottenere un elenco di Locale oggetti usando la funzione CallCompositeSupportedLocale.getSupportedLocales()statica .

Screenshot che mostra la localizzazione di Android.

Per usare CallCompositeLocalizationOptions, specificare CallCompositeSupportedLocale e passarlo a CallCompositeBuilder. Nell'esempio seguente la composizione viene localizzata in francese.

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

Direzione layout

Alcune impostazioni cultura (ad esempio, arabo ed ebraico) potrebbero dover disporre di un layout da destra a sinistra. È possibile specificare layoutDirection come parte di CallCompositeLocalizationOptions. Il layout del composito verrà sottoposto a mirroring, ma il testo rimarrà nella direzione della stringa.

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
Screenshot del layout da destra a sinistra di Android. Screenshot del layout da sinistra a destra di Android.

Personalizzazione delle traduzioni

Sono disponibili due opzioni per personalizzare le traduzioni della lingua fornite. È possibile usare l'elenco delle chiavi di localizzazione per eseguire l'override di una determinata stringa per la coppia chiave/valore. È possibile specificare le impostazioni locali come una delle lingue supportate. Quando non viene specificata una chiave, verrà eseguito il fallback a una stringa di traduzione supportata. Se si specifica una lingua non supportata, è necessario fornire traduzioni per tutte le chiavi per tale lingua (usando il file) e quindi eseguire il string.xml fallback alle stringhe in inglese quando non viene fornita una chiave.

Si supponga di voler usare le stringhe dalle impostazioni locali inglese (STATI UNITI), ma si vuole modificare l'etichetta del pulsante Partecipa alla chiamata a Avvia riunione nella visualizzazione configurazione. Creare un string.xml file (o un altro nome file) con la coppia chiave/valore per le chiavi selezionate di cui si vuole eseguire l'override. Nell'esempio seguente viene eseguito l'override della chiave azure_communication_ui_calling_setup_view_button_join_call.

Screenshot che mostra il progetto di installazione della localizzazione Android.

Screenshot che mostra l'etichetta personalizzata di esempio Android.

Per altre informazioni, vedere la libreria dell'interfaccia utente iOS open source e il codice dell'applicazione di esempio.

Rilevamento lingua

Se l'applicazione supporta la localizzazione, la libreria dell'interfaccia utente viene visualizzata in base alla lingua preferita dal sistema dell'utente se fa parte delle lingue disponibili elencate nella sezione successiva. In caso contrario, per impostazione predefinita la lingua corrisponde alle stringhe predefinite in inglese (en).

Lingue disponibili

Nella tabella seguente sono elencate le traduzioni predefinite per locale. Se si vuole localizzare il composito, passare locale come LocalizationOptions opzioni in CallComposite.

Lingua SupportedLocale Identificatore
Cinese semplificato zh zh
Cinese semplificato zhHans zh-Hans
Cinese semplificato (Cina continentale) zhHansCN zh-Hans-CN
Cinese tradizionale zhHant zh-Hant
Cinese, tradizionale (Taiwan) zhHantTW zh-Hant-TW
Olandese nl nl
Olandese (Paesi Bassi) nlNL nl-NL
italiano en en
Inglese (Regno Unito) enGB en-GB
Inglese (Stati Uniti) enUS en-US
Francese fr fr
Francese (Francia) frFR fr-FR
Tedesco de de
Tedesco (Germania) deDE de-DE
Italiano it it
Italiano (Italia) itIT it-IT
Giapponese ja ja
Giapponese (Giappone) jaJP ja-JP
Coreano ko ko
Coreano (Corea del Sud) koKR ko-KR
Portoghese pt pt
Portoghese (Brasile) ptBR pt-BR
Russo ru ru
Russo (Russia) ruRU ru-RU
Spagnolo es es
Spagnolo (Spagna) esES es-ES
Turco tr tr
Turco (Turchia) trTR tr-TR

È anche possibile ottenere un elenco di locale strutture usando la funzione SupportedLocale.valuesstatica .

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 è un wrapper di opzioni che imposta tutte le stringhe per i componenti della libreria dell'interfaccia utente tramite locale. Per impostazione predefinita, tutte le etichette di testo usano stringhe in inglese (en). È possibile usare LocalizationOptions per impostare una struttura diversa locale . Per impostazione predefinita, la libreria dell'interfaccia utente include un set di locale strutture utilizzabili con i componenti dell'interfaccia utente e i compositi.

Per usare LocalizationOptions, specificare una struttura Swift locale (con o senza codice di area) e passarla a CallCompositeOptions. Nell'esempio seguente viene localizzato il composto in francese per la 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)

Screenshot che mostra la localizzazione di iOS.

Direzione layout

Alcune impostazioni cultura (ad esempio, arabo ed ebraico) potrebbero dover disporre di un layout da destra a sinistra. È possibile specificare layoutDirection come parte di LocalizationOptions. Il layout del composito verrà sottoposto a mirroring, ma il testo rimarrà nella direzione della stringa.

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)

Nell'esempio seguente viene illustrato il mirroring del layout da destra a sinistra. Se non si specifica layoutDirection, l'impostazione predefinita è false (layout da sinistra a destra).

layoutDirection = .leftToRight (predefinito) layoutDirection = .rightToLeft
Screenshot che mostra una direzione del layout iOS da sinistra a destra. Screenshot che mostra una direzione del layout iOS da destra a sinistra.

Personalizzazione delle traduzioni

Sono disponibili due opzioni per personalizzare le traduzioni della lingua fornite. Per eseguire l'override di una determinata stringa, è possibile usare l'elenco di chiavi di localizzazione per la coppia chiave/valore. È possibile specificare locale come una delle lingue supportate. Quando non viene specificata una chiave, viene eseguito il fallback a una stringa di traduzione supportata. Se si specifica una lingua non supportata, è necessario fornire traduzioni per tutte le chiavi per tale lingua (usando il file) e quindi eseguire il Localizable.strings fallback alle stringhe in inglese quando non viene fornita una chiave.

Si supponga di voler usare le stringhe dalle impostazioni locali inglese (STATI UNITI), ma si vuole modificare l'etichetta del pulsante Partecipa alla chiamata a Avvia riunione nella visualizzazione configurazione. Abilitare la localizzazione nel progetto per l'istanza di cui si vuole eseguire l'override locale . Creare un Localizable.strings file (o un altro nome di file con l'estensione .strings) con la coppia chiave/valore per le chiavi selezionate di cui si vuole eseguire l'override. Nell'esempio seguente viene eseguito l'override della chiave AzureCommunicationUI.SetupView.Button.JoinCall.

Screenshot che mostra un progetto di installazione di iOS.

Screenshot che mostra una stringa personalizzata iOS.

Per specificare che si esegue l'override con Localizable.strings, creare un LocalizationOptions oggetto per specificare locale e localizationFilename. In alternativa, quando si usa l'inizializzatore locale , esamina le chiavi in Localizable.strings come locale.collatorIdentifier linguaggio nel progetto.

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

Voiceover di accessibilità per la localizzazione

Per il corretto funzionamento del voiceover per una localizzazione, assicurarsi che la lingua venga aggiunta nelle localizzazioni dell'app. Il voiceover rileva quindi che l'app supporta la lingua specificata in LocalizationOptions per locale. Seleziona la voce vocale per la lingua usando la voce presente in Impostazioni> Accessibility>Speech nel dispositivo. È possibile verificare che il linguaggio venga aggiunto al progetto, come illustrato nell'esempio seguente.

Screenshot che mostra le localizzazioni del progetto Xcode iOS.

Passaggi successivi