Lokalizowanie biblioteki interfejsu użytkownika w aplikacji

Lokalizacja jest kluczem do tworzenia produktów, które mogą być używane na całym świecie i przez ludzi, którzy mówią w różnych językach. Biblioteka interfejsu użytkownika usług Azure Communication Services zapewnia wbudowaną obsługę niektórych języków i możliwości, takich jak od prawej do lewej (RTL). Deweloperzy mogą udostępniać własne pliki lokalizacji dla biblioteki interfejsu użytkownika.

Z tego artykułu dowiesz się, jak poprawnie skonfigurować lokalizację przy użyciu biblioteki interfejsu użytkownika w aplikacji.

Wymagania wstępne

Konfigurowanie lokalizacji

Aby uzyskać szczegółową dokumentację i przewodniki Szybki start dotyczące biblioteki interfejsu użytkownika sieci Web, zobacz artykuł Storybook biblioteki interfejsu użytkownika sieci Web.

Aby dowiedzieć się więcej, zobacz Lokalizacja w bibliotece interfejsu użytkownika sieci Web.

Aby uzyskać więcej informacji, zobacz bibliotekę interfejsu użytkownika systemu Android typu open source i przykładowy kod aplikacji.

Dostępne języki

W poniższej tabeli wymieniono CallCompositeSupportedLocale identyfikatory tłumaczeń wbudowanych. Jeśli chcesz zlokalizować złożony obiekt, przekaż Locale obiekt z CallCompositeSupportedLocale do CallCompositeLocalizationOptions opcji w formacie CallComposite.

Język CallCompositeSupportedLocale
Arabski (Arabia Saudyjska) CallCompositeSupportedLocale.AR_SA
Niemiecki (Niemcy) CallCompositeSupportedLocale.DE_DE
English (US) CallCompositeSupportedLocale.EN_US
Angielski (Wielka Brytania) CallCompositeSupportedLocale.EN_UK
Hiszpański (Hiszpania) CallCompositeSupportedLocale.ES_ES
Hiszpański CallCompositeSupportedLocale.ES
Fiński (Finlandia) CallCompositeSupportedLocale.FI_FI
Francuski (Francja) CallCompositeSupportedLocale.FR_FR
Francuski CallCompositeSupportedLocale.FR
Hebrajski (Izrael) CallCompositeSupportedLocale.IW_IL
Włoski (Włochy) CallCompositeSupportedLocale.IT_IT
Włoski CallCompositeSupportedLocale.IT
Japoński (Japonia) CallCompositeSupportedLocale.JA_JP
japoński CallCompositeSupportedLocale.JA
Koreański (Korea) CallCompositeSupportedLocale.KO_KR
Koreański CallCompositeSupportedLocale.KO
Holenderski (Holandia) CallCompositeSupportedLocale.NL_NL
Niderlandzki CallCompositeSupportedLocale.NL
norweski (Bokmål) CallCompositeSupportedLocale.NB_NO
Polski (Polska) CallCompositeSupportedLocale.PL_PL
polski CallCompositeSupportedLocale.PL
portugalski (Brazylia) CallCompositeSupportedLocale.PT_BR
Portugalski CallCompositeSupportedLocale.PT
Rosyjski (Rosja) CallCompositeSupportedLocale.RU_RU
Rosyjski CallCompositeSupportedLocale.RU
Szwedzki (Szwecja) CallCompositeSupportedLocale.SV_SE
Turecki (Turcja) CallCompositeSupportedLocale.TR_TR
Turecki CallCompositeSupportedLocale.TR
Chiński (uproszczony) CallCompositeSupportedLocale.ZH_CN
Chiński (tradycyjny) CallCompositeSupportedLocale.ZH_TW
Chiński CallCompositeSupportedLocale.ZH

Dostawca lokalizacji

CallCompositeLocalizationOptions to otoka opcji, która ustawia wszystkie ciągi dla składników biblioteki interfejsu użytkownika systemu Android przy użyciu polecenia CallCompositeSupportedLocale. Domyślnie wszystkie etykiety tekstowe używają ciągów w języku angielskim. Możesz użyć CallCompositeLocalizationOptions polecenia , aby ustawić inny język, przekazując Locale obiekt z CallCompositeSupportedLocale. Poza tym biblioteka interfejsu Locale użytkownika zawiera zestaw obiektów, które mogą być używane ze składnikami interfejsu użytkownika i składnikami złożonymi.

Listę obiektów można również uzyskać Locale przy użyciu funkcji CallCompositeSupportedLocale.getSupportedLocales()statycznej .

Zrzut ekranu przedstawiający lokalizację systemu Android.

Aby użyć polecenia CallCompositeLocalizationOptions, określ CallCompositeSupportedLocale i przekaż go do CallCompositeBuilderelementu . Poniższy przykład lokalizuje złożony z języka francuskiego.

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

Kierunek układu

Niektóre kultury (na przykład arabski i hebrajski) mogą wymagać lokalizacji, aby mieć układ od prawej do lewej. Możesz określić layoutDirection jako część .CallCompositeLocalizationOptions Układ złożonego zostanie zdublowany, ale tekst pozostanie w kierunku ciągu.

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
Zrzut ekranu przedstawiający układ systemu Android od prawej do lewej. Zrzut ekranu przedstawiający układ systemu Android od lewej do prawej.

Dostosowywanie tłumaczeń

Dostępne są dwie opcje dostosowywania tłumaczeń językowych, które udostępniamy. Możesz użyć listy kluczy lokalizacji, aby zastąpić określony ciąg dla pary klucz/wartość. Ustawienia regionalne można określić jako jeden z obsługiwanych języków. Jeśli klucz nie zostanie podany, wróci do obsługiwanego ciągu tłumaczenia. Jeśli określisz nieobsługiwany język, należy podać tłumaczenia wszystkich kluczy dla tego języka (przy użyciu string.xml pliku), a następnie wrócić do ciągów w języku angielskim, gdy klucz nie zostanie podany.

Załóżmy, że chcesz, aby pasek sterowania używał ciągów z ustawień regionalnych języka angielskiego (USA), ale chcesz zmienić etykietę przycisku Połącz połączenie na Rozpocznij spotkanie w widoku konfiguracji. string.xml Utwórz plik (lub inną nazwę pliku) z parą klucz/wartość dla wybranych kluczy, które chcesz zastąpić. Poniższy przykład zastępuje klucz azure_communication_ui_calling_setup_view_button_join_call.

Zrzut ekranu przedstawiający projekt konfiguracji lokalizacji systemu Android.

Zrzut ekranu przedstawiający przykładową etykietę niestandardową systemu Android.

Aby uzyskać więcej informacji, zobacz bibliotekę interfejsu użytkownika systemu iOS typu open source i przykładowy kod aplikacji.

Wykrywanie języka

Jeśli aplikacja obsługuje lokalizację, biblioteka interfejsu użytkownika jest wyświetlana na podstawie preferowanego przez system języka użytkownika, jeśli jest częścią dostępnych języków wymienionych w następnej sekcji. W przeciwnym razie język jest domyślny dla wstępnie zdefiniowanych ciągów języka angielskiego (en).

Dostępne języki

W poniższej tabeli wymieniono gotowe tłumaczenia dla elementu locale. Jeśli chcesz zlokalizować złożony element, przejdź locale do LocalizationOptions opcji w formacie CallComposite.

Język SupportedLocale Identyfikator
Chiński uproszczony zh zh
Chiński uproszczony zhHans zh-Hans
Chiński, uproszczony (Chiny kontynentalne) zhHansCN zh-Hans-CN
Chiński tradycyjny zhHant zh-Hant
Chiński, tradycyjny (Tajwan) zhHantTW zh-Hant-TW
Niderlandzki nl nl
Holenderski (Holandia) nlNL nl-NL
angielski en en
Angielski (Zjednoczone Królestwo) enGB en-GB
Angielski (Stany Zjednoczone) enUS en-US
Francuski fr fr
Francuski (Francja) frFR fr-FR
Niemiecki de de
Niemiecki (Niemcy) deDE de-DE
Włoski it it
Włoski (Włochy) itIT it-IT
japoński ja ja
Japoński (Japonia) jaJP ja-JP
Koreański ko ko
Koreański (Korea Południowa) koKR ko-KR
Portugalski pt pt
Portugalski (Brazylia) ptBR pt-BR
Rosyjski ru ru
Rosyjski (Rosja) ruRU ru-RU
Hiszpański es es
Hiszpański (Hiszpania) esES es-ES
Turecki tr tr
Turecki (Türkiye) trTR tr-TR

Listę struktur można również uzyskać locale przy użyciu funkcji SupportedLocale.valuesstatycznej .

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"]

LokalizacjaOpcje

LocalizationOptions to otoka opcji, która ustawia wszystkie ciągi dla składników biblioteki interfejsu użytkownika przy użyciu polecenia locale. Domyślnie wszystkie etykiety tekstowe używają ciągów angielskich (en). Możesz użyć LocalizationOptions polecenia , aby ustawić inną locale strukturę. Poza tym biblioteka interfejsu locale użytkownika zawiera zestaw struktur, które mogą być używane ze składnikami interfejsu użytkownika i składnikami złożonymi.

Aby użyć LocalizationOptionsmetody , określ strukturę Swift locale (z kodem regionu lub bez niego) i przekaż ją do CallCompositeOptions. Poniższy przykład lokalizuje złożony język francuski dla Francji (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)

Zrzut ekranu przedstawiający lokalizację systemu iOS.

Kierunek układu

Niektóre kultury (na przykład arabski i hebrajski) mogą wymagać lokalizacji, aby mieć układ od prawej do lewej. Możesz określić layoutDirection jako część .LocalizationOptions Układ złożonego zostanie zdublowany, ale tekst pozostanie w kierunku ciągu.

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)

W poniższym przykładzie pokazano dublowanie układu od prawej do lewej. Jeśli nie określisz layoutDirectionwartości , wartość domyślna false to (układ od lewej do prawej).

layoutDirection = .leftToRight (domyślne) layoutDirection = .rightToLeft
Zrzut ekranu przedstawiający kierunek układu systemu iOS od lewej do prawej. Zrzut ekranu przedstawiający kierunek układu systemu iOS od prawej do lewej.

Dostosowywanie tłumaczeń

Dostępne są dwie opcje dostosowywania tłumaczeń językowych, które udostępniamy. Aby zastąpić określony ciąg, możesz użyć listy kluczy lokalizacji dla pary klucz/wartość. Można określić locale jako jeden z obsługiwanych języków. Gdy klucz nie zostanie podany, wróci do obsługiwanego ciągu tłumaczenia. Jeśli określisz nieobsługiwany język, należy podać tłumaczenia wszystkich kluczy dla tego języka (przy użyciu Localizable.strings pliku), a następnie wrócić do ciągów w języku angielskim, gdy klucz nie zostanie podany.

Załóżmy, że chcesz, aby pasek sterowania używał ciągów z ustawień regionalnych języka angielskiego (USA), ale chcesz zmienić etykietę przycisku Połącz połączenie na Rozpocznij spotkanie w widoku konfiguracji. Włącz lokalizację w projekcie dla locale wystąpienia, które chcesz zastąpić. Localizable.strings Utwórz plik (lub inną nazwę pliku z rozszerzeniem .strings) z parą klucz/wartość dla wybranych kluczy, które chcesz zastąpić. Poniższy przykład zastępuje klucz AzureCommunicationUI.SetupView.Button.JoinCall.

Zrzut ekranu przedstawiający projekt konfiguracji systemu iOS.

Zrzut ekranu przedstawiający ciąg niestandardowy systemu iOS.

Aby określić, że zastąpisz element Localizable.strings, utwórz LocalizationOptions obiekt do określenia locale i localizationFilename. Lub gdy używasz inicjatora locale , analizuje klucze jako Localizable.stringslocale.collatorIdentifier język w projekcie.

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

Funkcja voiceover ułatwień dostępu do lokalizacji

Aby funkcja voiceover działała prawidłowo w przypadku lokalizacji, upewnij się, że język został dodany do lokalizacji aplikacji. Funkcja voiceover wykrywa następnie, że aplikacja obsługuje język określony w elemlocale.LocalizationOptions Wybiera głos mowy dla języka przy użyciu głosu znalezionego w usłudze Ustawienia> Accessibility>Speech na urządzeniu. Możesz sprawdzić, czy język został dodany do projektu, jak pokazano w poniższym przykładzie.

Zrzut ekranu przedstawiający lokalizacje projektu Xcode dla systemu iOS.

Następne kroki