Udostępnij przez


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 Azure Communication Services zapewnia domyślną obsługę niektórych języków i funkcji, 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 szybkie starty dotyczące biblioteki interfejsu użytkownika Web, zobacz Web UI Library Storybook.

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ń standardowych. Jeśli chcesz zlokalizować kompozyt, przekaż obiekt Locale z CallCompositeSupportedLocale do CallCompositeLocalizationOptions jako opcje do CallComposite.

Język Obsługiwana Lokalizacja Call Composite
Arabski (Arabia Saudyjska) CallCompositeSupportedLocale.AR_SA
Niemiecki (Niemcy) CallCompositeSupportedLocale.DE_DE
Język angielski (USA) 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
Niderlandzki (Holandia) CallCompositeSupportedLocale.NL_NL
Holenderski CallCompositeSupportedLocale.NL
norweski (Bokmål) CallCompositeSupportedLocale.NB_NO
Język 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 opakowanie opcji, które ustawia wszystkie napisy dla składników Biblioteki Interfejsu Użytkownika Android za pomocą CallCompositeSupportedLocale. Domyślnie wszystkie etykiety tekstowe używają ciągów w języku angielskim. Możesz użyć CallCompositeLocalizationOptions, aby ustawić inny język, przekazując Locale obiekt z CallCompositeSupportedLocale. Od razu biblioteka interfejsu użytkownika Locale zawiera zestaw obiektów, które mogą być używane z komponentami i kompozytami interfejsu użytkownika.

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

Zrzut ekranu przedstawiający lokalizację systemu Android.

Aby użyć CallCompositeLocalizationOptions, określ CallCompositeSupportedLocale i przekaż go do CallCompositeBuilder. Poniższy przykład lokalizuje złożony do 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 arabskie i hebrajskie) mogą wymagać lokalizacji dla układu 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 znaków w parze klucz/wartość. Można określić locale jako jedno 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 w języku angielskim (USA), ale chcesz zmienić etykietę przycisku Dołącz do połączenia na Rozpocznij spotkanie w trybie 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 przełącza się na wcześniej zdefiniowane angielskie ciągi znaków (en).

Dostępne języki

W poniższej tabeli wymieniono gotowe tłumaczenia dla locale. Jeśli chcesz zlokalizować złożony element, przekaż locale do LocalizationOptions jako opcje do 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
Holenderski nl nl
Niderlandzki (Holandia) nlNL nl-NL
angielski en en
Angielski (Wielka Brytania) 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
Turcja (Türkiye) trTR tr-TR

Listę struktur można również uzyskać przy użyciu statycznej funkcji localeSupportedLocale.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"]

Opcje lokalizacji

LocalizationOptions to opakowanie opcji, które ustawia wszystkie ciągi dla składników biblioteki interfejsu użytkownika przy użyciu locale. Domyślnie wszystkie etykiety tekstowe używają ciągów angielskich (en). Możesz użyć LocalizationOptions polecenia , aby ustawić inną locale strukturę. Biblioteka interfejsu użytkownika locale od razu po instalacji zawiera zestaw struktur, które mogą być używane ze składnikami interfejsu użytkownika i kompozytami.

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 odwzorowanie układu od prawej do lewej. Jeśli nie określisz layoutDirection, domyślnie jest to false (układ od lewej do prawej).

layoutDirection = .leftToRight (ustawienie 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 do zdefiniowania 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 w języku angielskim (USA), ale chcesz zmienić etykietę przycisku Dołącz do połączenia na Rozpocznij spotkanie w trybie 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ępujesz element Localizable.strings, utwórz obiekt LocalizationOptions, aby określić locale i localizationFilename. Lub gdy używasz inicjatora locale, analizuje klucze w Localizable.strings dla locale.collatorIdentifier jako języka 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 lektora wykrywa następnie, że aplikacja obsługuje język określony w LocalizationOptions dla locale. Wybiera głos dla języka przy użyciu opcji znajdującej się w Ustawienia>Ułatwienia dostępu>Mowa 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