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
- Konto platformy Azure z aktywną subskrypcją. Utwórz konto bezpłatnie.
- Wdrożony zasób usług komunikacyjnych. Utwórz zasób usług komunikacyjnych.
- Token dostępu użytkownika umożliwiający włączenie klienta wywołania. Uzyskiwanie tokenu dostępu użytkownika.
- Opcjonalnie: ukończenie przewodnika Szybki start dotyczącego rozpoczynania pracy z złożonymi bibliotekami interfejsu użytkownika.
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 .
Aby użyć polecenia CallCompositeLocalizationOptions
, określ CallCompositeSupportedLocale
i przekaż go do CallCompositeBuilder
elementu . 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 |
---|---|
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
.
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.values
statycznej .
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ć LocalizationOptions
metody , 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)
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 layoutDirection
wartości , wartość domyślna false
to (układ od lewej do prawej).
layoutDirection = .leftToRight (domyślne) |
layoutDirection = .rightToLeft |
---|---|
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
.
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.strings
locale.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.