Localizar a biblioteca da interface do usuário em um aplicativo
A localização é a chave para criar produtos que podem ser usados em todo o mundo e por pessoas que falam idiomas diferentes. A Biblioteca de Interface do Usuário dos Serviços de Comunicação do Azure fornece suporte pronto para alguns idiomas e recursos, como RTL (da direita para a esquerda). Os desenvolvedores podem fornecer seus próprios arquivos de localização para a Biblioteca da Interface do Usuário.
Neste artigo, você aprenderá a configurar a localização corretamente usando a biblioteca da interface do usuário em seu aplicativo.
Pré-requisitos
- Uma conta do Azure com uma subscrição ativa. Crie uma conta gratuitamente.
- Um recurso de Serviços de Comunicação implantado. Crie um recurso de Serviços de Comunicação.
- Um token de acesso de usuário para habilitar o cliente de chamada. Obtenha um token de acesso de usuário.
- Opcional: conclusão do início rápido para começar a usar os compostos da Biblioteca da Interface do Usuário.
Configurar localização
Para obter documentação detalhada e guias de início rápido sobre a Biblioteca da Interface do Usuário da Web, consulte o Storybook da Biblioteca da Interface do Usuário da Web.
Para saber mais, consulte Localização na Biblioteca da Interface do Usuário da Web.
Para obter mais informações, consulte a biblioteca de interface do usuário do Android de código aberto e o código do aplicativo de exemplo.
Idiomas disponíveis
A tabela a seguir lista CallCompositeSupportedLocale
IDs para traduções prontas para uso. Se você quiser localizar o composto, passe um Locale
objeto de CallCompositeSupportedLocale
para como CallCompositeLocalizationOptions
opções para CallComposite
.
Idioma | CallCompositeSupportedLocale |
---|---|
Árabe (Arábia Saudita) | CallCompositeSupportedLocale.AR_SA |
Alemão (Alemanha) | CallCompositeSupportedLocale.DE_DE |
English (US) | CallCompositeSupportedLocale.EN_US |
English (UK) | CallCompositeSupportedLocale.EN_UK |
Espanhol (Espanha) | CallCompositeSupportedLocale.ES_ES |
Espanhol | CallCompositeSupportedLocale.ES |
Finlandês (Finlândia) | CallCompositeSupportedLocale.FI_FI |
Francês (França) | CallCompositeSupportedLocale.FR_FR |
Francês | CallCompositeSupportedLocale.FR |
Hebraico (Israel) | CallCompositeSupportedLocale.IW_IL |
Italiano (Itália) | CallCompositeSupportedLocale.IT_IT |
Italiano | CallCompositeSupportedLocale.IT |
Japonês (Japão) | CallCompositeSupportedLocale.JA_JP |
Japonês | CallCompositeSupportedLocale.JA |
Coreano (Coreia do Sul) | CallCompositeSupportedLocale.KO_KR |
Coreano | CallCompositeSupportedLocale.KO |
Neerlandês (Países Baixos) | CallCompositeSupportedLocale.NL_NL |
Neerlandês | CallCompositeSupportedLocale.NL |
Norueguês (Bokmål) | CallCompositeSupportedLocale.NB_NO |
Polaco (Polónia) | CallCompositeSupportedLocale.PL_PL |
Polaco | CallCompositeSupportedLocale.PL |
Português (Brasil) | CallCompositeSupportedLocale.PT_BR |
Português | CallCompositeSupportedLocale.PT |
Russo (Rússia) | CallCompositeSupportedLocale.RU_RU |
Russo | CallCompositeSupportedLocale.RU |
Sueco (Suécia) | CallCompositeSupportedLocale.SV_SE |
Turco (Turquia) | CallCompositeSupportedLocale.TR_TR |
Turco | CallCompositeSupportedLocale.TR |
Chinês (Simplificado) | CallCompositeSupportedLocale.ZH_CN |
Chinês (Tradicional) | CallCompositeSupportedLocale.ZH_TW |
Chinês | CallCompositeSupportedLocale.ZH |
Provedor de localização
CallCompositeLocalizationOptions
é um wrapper de opções que define todas as cadeias de caracteres para componentes da Biblioteca da Interface do Usuário do Android usando CallCompositeSupportedLocale
o . Por padrão, todos os rótulos de texto usam cadeias de caracteres em inglês. Você pode usar CallCompositeLocalizationOptions
para definir um idioma diferente passando um Locale
objeto de CallCompositeSupportedLocale
. Pronta para uso, a Biblioteca da Interface do Usuário inclui um conjunto de Locale
objetos que podem ser usados com os componentes e compostos da interface do usuário.
Você também pode obter uma lista de Locale
objetos usando a função CallCompositeSupportedLocale.getSupportedLocales()
estática .
Para usar CallCompositeLocalizationOptions
, especifique CallCompositeSupportedLocale
e passe para CallCompositeBuilder
. O exemplo a seguir localiza o composto para 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()
Direção do layout
Certas culturas (por exemplo, árabe e hebraico) podem precisar de localização para ter um layout da direita para a esquerda. Você pode especificar layoutDirection
como parte do CallCompositeLocalizationOptions
. O layout do composto será espelhado, mas o texto permanecerá na direção da cadeia de caracteres.
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 |
---|---|
Personalização de traduções
Há duas opções para personalizar as traduções de idiomas que fornecemos. Você pode usar a lista de chaves de localização para substituir uma cadeia de caracteres específica para o par chave/valor. Você pode especificar a localidade como um dos idiomas suportados. Quando uma chave não é fornecida, ela retornará a uma cadeia de caracteres de tradução suportada. Se você especificar um idioma sem suporte, deverá fornecer traduções para todas as chaves desse idioma (usando o string.xml
arquivo) e, em seguida, retornar às cadeias de caracteres em inglês quando uma chave não for fornecida.
Digamos que você queira que a barra de controle use cadeias de caracteres da localidade Inglês (EUA), mas queira alterar o rótulo do botão Ingressar na Chamada para Iniciar Reunião no modo de exibição de configuração. Crie um string.xml
arquivo (ou outro nome de arquivo) com o par chave/valor para as chaves selecionadas que você deseja substituir. O exemplo a seguir substitui a chave azure_communication_ui_calling_setup_view_button_join_call
.
Para obter mais informações, consulte a biblioteca de interface do usuário do iOS de código aberto e o código de aplicativo de exemplo.
Deteção de idioma
Se o seu aplicativo oferecer suporte à localização, a Biblioteca da Interface do Usuário será exibida com base no idioma preferido do sistema do usuário, se fizer parte dos idiomas disponíveis listados na próxima seção. Caso contrário, o idioma assume como padrão as cadeias de caracteres predefinidas em inglês (en
).
Idiomas disponíveis
A tabela a seguir lista traduções prontas para locale
o . Se você quiser localizar o composto, passe locale
LocalizationOptions
como opções para CallComposite
.
Idioma | SupportedLocale | Identificador |
---|---|---|
Chinês simplificado | zh |
zh |
Chinês simplificado | zhHans |
zh-Hans |
Chinês, Simplificado (China continental) | zhHansCN |
zh-Hans-CN |
Chinês tradicional | zhHant |
zh-Hant |
Chinesa, tradicional (Taiwan) | zhHantTW |
zh-Hant-TW |
Neerlandês | nl |
nl |
Neerlandês (Países Baixos) | nlNL |
nl-NL |
Inglês | en |
en |
Inglês (Reino Unido) | enGB |
en-GB |
Inglês (Estados Unidos) | enUS |
en-US |
Francês | fr |
fr |
Francês (França) | frFR |
fr-FR |
Alemão | de |
de |
Alemão (Alemanha) | deDE |
de-DE |
Italiano | it |
it |
Italiano (Itália) | itIT |
it-IT |
Japonês | ja |
ja |
Japonês (Japão) | jaJP |
ja-JP |
Coreano | ko |
ko |
Coreano (Coreia do Sul) | koKR |
ko-KR |
Português | pt |
pt |
Português (Brasil) | ptBR |
pt-BR |
Russo | ru |
ru |
Russo (Rússia) | ruRU |
ru-RU |
Espanhol | es |
es |
Espanhol (Espanha) | esES |
es-ES |
Turco | tr |
tr |
Turco (Türkiye) | trTR |
tr-TR |
Você também pode obter uma lista de locale
estruturas usando a função SupportedLocale.values
estática .
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"]
LocalizaçãoOpções
LocalizationOptions
é um wrapper de opções que define todas as cadeias de caracteres para componentes da Biblioteca da Interface do Usuário usando locale
. Por padrão, todos os rótulos de texto usam cadeias de caracteres em inglês (en
). Você pode usar LocalizationOptions
para definir uma estrutura diferente locale
. Pronta para uso, a biblioteca da interface do usuário inclui um conjunto de locale
estruturas que podem ser usadas com os componentes e compostos da interface do usuário.
Para usar LocalizationOptions
o , especifique uma estrutura Swift locale
(com ou sem um código de região) e passe-a para CallCompositeOptions
. O exemplo a seguir localiza o composto para francês para França (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)
Direção do layout
Certas culturas (por exemplo, árabe e hebraico) podem precisar de localização para ter layout da direita para a esquerda. Você pode especificar layoutDirection
como parte do LocalizationOptions
. O layout do composto será espelhado, mas o texto permanecerá na direção da cadeia de caracteres.
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)
O exemplo a seguir mostra o espelhamento de layout da direita para a esquerda. Se você não especificar layoutDirection
, o padrão será false
(layout da esquerda para a direita).
layoutDirection = .leftToRight (padrão) |
layoutDirection = .rightToLeft |
---|---|
Personalização de traduções
Há duas opções para personalizar as traduções de idiomas que fornecemos. Para substituir uma cadeia de caracteres específica, você pode usar a lista de chaves de localização para o par chave/valor. Você pode especificar locale
como um dos idiomas suportados. Quando uma chave não é fornecida, ela retorna a uma cadeia de caracteres de tradução suportada. Se você especificar um idioma sem suporte, deverá fornecer traduções para todas as chaves desse idioma (usando o Localizable.strings
arquivo) e, em seguida, retornar às cadeias de caracteres em inglês quando uma chave não for fornecida.
Digamos que você queira que a barra de controle use cadeias de caracteres da localidade Inglês (EUA), mas queira alterar o rótulo do botão Ingressar na Chamada para Iniciar Reunião no modo de exibição de configuração. Habilite a localização no projeto para a locale
instância que você deseja substituir. Crie um Localizable.strings
arquivo (ou outro nome de arquivo com a extensão .strings
) com o par chave/valor para as chaves selecionadas que você deseja substituir. O exemplo a seguir substitui a chave AzureCommunicationUI.SetupView.Button.JoinCall
.
Para especificar que você está substituindo com Localizable.strings
, crie um LocalizationOptions
objeto para especificar locale
e localizationFilename
. Ou, quando você está usando o locale
inicializador, ele examina as teclas como Localizable.strings
locale.collatorIdentifier
o idioma em seu projeto.
let localizationOptions = LocalizationOptions(locale: Locale(identifier: "fr"),
localizableFilename: "Localizable")
let callCompositeOptions = CallCompositeOptions(localization: localizationOptions)
let callComposite = CallComposite(withOptions: callCompositeOptions)
Locução de acessibilidade para localização
Para que o voiceover funcione corretamente para uma localização, certifique-se de que o idioma foi adicionado às localizações da sua aplicação. Em seguida, o voiceover deteta que a aplicação suporta o idioma especificado em LocalizationOptions
.locale
Ele seleciona a voz de fala para o idioma usando a voz encontrada em Configurações>de Acessibilidade>: Fala no dispositivo. Você pode verificar se o idioma foi adicionado ao seu projeto, conforme mostrado no exemplo a seguir.