Como podemos selecionar o idioma atual no dispositivo Android?
android
localization
Pinki
fonte
fonte
Respostas:
Se você deseja obter o idioma selecionado do seu dispositivo, isso pode ajudá-lo:
fonte
Locale.getDefault().getLanguage();
para obter o código de idioma usual (por exemplo, "de", "en").Locale.setDefault("ru")
, e o idioma nas configurações do sistema estiver definido como inglês, o métodoLocale.getDefault().getLanguage()
retornará "ru" , mas não "en" . Existe outro método para obter a localidade / idioma do SYSTEM real? Encontrei uma solução não documentada aqui , mas existe uma solução mais elegante?Locale.getDefault().toString()
que fornece uma string que identifica completamente o código do idioma, por exemplo "en_US".Verifiquei os métodos de localidade no meu dispositivo Android 4.1.2 e os resultados:
fonte
Locale.getDefault().getDisplayLanguage()
que retorna"English"
O que funcionou para mim foi:
Resources.getSystem()
retorna um objeto Global compartilhado de Recursos que fornece acesso apenas aos recursos do sistema (sem recursos do aplicativo) e não está configurado para a tela atual (não pode usar unidades de dimensão, não muda com base na orientação, etc.).Como
getConfiguration.locale
agora foi descontinuado, a maneira preferida de obter o local principal no Android Nougat é:Para garantir a compatibilidade com as versões anteriores do Android, uma solução possível seria uma verificação simples:
Atualizar
Começando com a biblioteca de suporte,
26.1.0
você não precisa verificar a versão do Android, pois oferece um método conveniente compatível com versões anterioresgetLocales()
.Basta ligar para:
fonte
ConfigurationCompat.getLocales(Resources.getSystem().getConfiguration())
getLocales
é o caminho a percorrer. Eu atualizei minha resposta.Você pode 'extrair' o idioma da localidade atual. Você pode extrair o código do idioma por meio da API Java padrão ou usando o Contexto do Android. Por exemplo, as duas linhas abaixo são equivalentes:
fonte
Locale.setDefault()
com outro local anteriormente e obter resultados diferentes.Para economizar tempo e / ou confusão para outras pessoas, eu gostaria de compartilhar que tentei as duas alternativas propostas por Johan Pelgrim acima e, no meu dispositivo, elas são equivalentes - independentemente de o local padrão ser alterado ou não.
Portanto, a configuração padrão do meu dispositivo é inglês (United Kindom) e, nesse estado, como esperado, as duas seqüências de caracteres na resposta de Johan fornecem o mesmo resultado. Se eu mudar o código de idioma nas configurações do telefone (digamos para italiano (Italia)) e executar novamente, as duas Strings na resposta de Johan fornecerão o código de idioma como italiano (Italia).
Portanto, acredito que o post original de Johan esteja correto e o comentário de gregm incorreto.
fonte
Você pode usar isso
quando "xx" é qualquer código de idioma como "en", "fr", "sp", "ar" .... e assim por diante
fonte
Conforme descrito na referência de localidade, a melhor maneira de obter o idioma é:
esse método retorna string com o ID do idioma de acordo com o padrão ISO 639-1
fonte
se o nível da API for 24 ou superior, use
LocaleList.getDefault().get(0).getLanguage()
else useLocale.getDefault.getLanguage()
referência: https://developer.android.com/guide/topics/resources/multilingual-support
fonte
Para adicionar à resposta de Johan Pelgrim
são equivalentes porque a
android.text.format.DateFormat
classe usa ambos de forma intercambiável, por exemploe
fonte
Você pode tentar obter a localidade dos recursos do sistema:
fonte
As respostas acima não fazem distinção entre chinês simples e chinês tradicional.
Locale.getDefault().toString()
funciona que retorna "zh_CN", "zh_TW", "en_US" e etc.Referências a: https://developer.android.com/reference/java/util/Locale.html , ISO 639-1 é ANTIGO.
fonte
Esta solução funcionou para mim. Isso retornará o idioma do dispositivo Android (não o idioma local do aplicativo)
Isso retornará "en" ou "de" ou "fr" ou o idioma do seu dispositivo.
fonte
Você pode usar esse código para descobrir a atualidade do teclado
fonte
Existem dois idiomas.
Idioma padrão do SO:
Idioma atual da aplicação:
fonte
Se você escolher um idioma, não poderá digitar este grego, pode ser útil.
Agora tente com grego
fonte
Se você deseja verificar um idioma atual, use a resposta de @Sarpe (@Thorbear):
fonte
DateFormat.getDateInstance(DateFormat.LONG, Locale.getDefault()).format(Date())
.fonte
A maneira correta de obter o idioma do seu dispositivo é o seguinte:
Espero que ajude.
fonte
lhe dará um
Written
nome para o idioma, por exemplo,English, Dutch, French
lhe dará
language code
, por exemplo:en, nl, fr
Ambos os métodos retornam String
fonte
fonte
Os outros deram boas respostas para o idioma do dispositivo,
se você deseja que o idioma do aplicativo seja a maneira mais fácil, adicione uma
app_lang
chave ao seustrings.xml
arquivo e especifique o idioma para cada um deles.Dessa forma, se o idioma padrão do seu aplicativo for diferente do idioma do dispositivo, você poderá enviá-lo como parâmetro para seus serviços.
fonte
fonte
Minha solução é assim
e depois
mostrado ---> pt
fonte
aqui está o código para obter o país do dispositivo. Compatível com todas as versões do Android mesmo oreo.
Solução: se o usuário não tiver um cartão SIM, obtenha o país em que ele é usado durante a configuração do telefone ou a seleção de idioma atual.
fonte
Se você deseja executar tarefas específicas para os usuários que residem na Índia que falam hindi, use abaixo se a condição
fonte