Quero obter o código do idioma do dispositivo (en, es ...) no meu aplicativo, escrito com Swift. Como conseguir isso?
Estou tentando isso:
var preferredLanguages : NSLocale!
let pre = preferredLanguages.displayNameForKey(NSLocaleIdentifier, value: preferredLanguages)
Mas isso retorna nulo.
É importante fazer a diferença entre o idioma do aplicativo e o idioma do local do dispositivo (o código abaixo está no Swift 3 )
Retornará o idioma do dispositivo :
Retornará o idioma do aplicativo :
fonte
Locale.current.languageCode: de Locale.current.identifier: de_DE Locale.preferredLanguages[0]: de
Quando meu idioma de desenvolvimento de aplicativo é EN e eu corro em um dispositivo configurado para FR, para o qual não localizei o O resultado é:Locale.current.languageCode: en Locale.current.identifier: en_FR Locale.preferredLanguages[0]: fr
Swift 4 e 5:
fonte
Locale(identifier: Locale.current.identifier)
;Locale.autoupdatingCurrent.languageCode
também está disponívelNo Swift 3:
fonte
Para usar o idioma atual no seu aplicativo (diferente dos idiomas preferidos)
fonte
Swift 3 e 4 e 4.2 e 5
Locale.current.languageCode
não compila regularmente. Porque você não implementou a localização para o seu projeto.Você tem duas soluções possíveis
1)
String(Locale.preferredLanguages[0].prefix(2))
Ele retorna o telefone corretamente.Se você deseja obter o tipo
en-En
, pode usarLocale.preferredLanguages[0]
2) Selecione
Project(MyApp)
->Project (not Target)
-> pressione o botão +Localizations
e adicione o idioma desejado.fonte
rápido 3
fonte
let langStr = Locale.preferredLanguages.first!
Foi isso que fiz ao revisar este post. Está funcionando e eu comparo com meus idiomas comlangStr.lowercased().contains("es")
todas as variações de idioma espanhol, por exemplo.você pode usar o código abaixo funciona bem com o swift 3
fonte
Desejo acompanhar o idioma escolhido pelo usuário no aplicativo Configurações toda vez que o usuário inicia o meu aplicativo - que ainda não está localizado (meu aplicativo está apenas em inglês). Eu adotei essa lógica:
criar uma enumeração para facilitar o manuseio dos idiomas na matriz
crie algumas extensões para o Locale
Quando precisar, você pode simplesmente usar a extensão
fonte
No Swift, você pode obter o código do idioma usando.
fonte
Locale.current.languageCode
retorna um código errado, então eu uso essas extensões:fonte
É isso que eu uso no Swift 5 Xcode 11:
Dentro das variáveis de classe:
Isso vem como uma string. Retorna 2 caracteres, ou seja, "en", "es", "de" ...
A partir disso, posso determinar facilmente qual idioma exibir:
Se você deseja obter as informações completas do idioma, remova? .Prefex (2)
fonte