Quiero obtener el código de idioma del dispositivo (en, es ...) en mi aplicación escrito con Swift. ¿Cómo puedo conseguir esto?
Estoy intentando esto:
var preferredLanguages : NSLocale!
let pre = preferredLanguages.displayNameForKey(NSLocaleIdentifier, value: preferredLanguages)
Pero esto vuelve nulo.
Es importante marcar la diferencia entre el idioma de la aplicación y el idioma de la configuración regional del dispositivo (el código a continuación se encuentra en Swift 3 )
Devolverá el idioma del dispositivo :
Devolverá el idioma de la aplicación :
fuente
Locale.current.languageCode: de Locale.current.identifier: de_DE Locale.preferredLanguages[0]: de
cuando mi lenguaje de desarrollo de aplicaciones es la norma EN y ejecuta en un dispositivo de FR configurado, por lo que he no localizada la aplicación el resultado es:Locale.current.languageCode: en Locale.current.identifier: en_FR Locale.preferredLanguages[0]: fr
Swift 4 y 5:
fuente
Locale(identifier: Locale.current.identifier)
;Locale.autoupdatingCurrent.languageCode
también está disponibleEn Swift 3:
fuente
Para obtener el idioma actual utilizado en su aplicación (diferente de los idiomas preferidos)
fuente
Swift 3 y 4 y 4.2 y 5
Locale.current.languageCode
no se compila regularmente Porque no implementó la localización para su proyecto.Tienes dos posibles soluciones
1)
String(Locale.preferredLanguages[0].prefix(2))
Devuelve el teléfono correctamente.Si desea obtener el tipo
en-En
, puede usarLocale.preferredLanguages[0]
2) Seleccione
Project(MyApp)
->Project (not Target)
-> presione el botón +Localizations
, luego agregue el idioma que desee.fuente
rápido 3
fuente
let langStr = Locale.preferredLanguages.first!
Esto es lo que he hecho al revisar esta publicación. Está funcionando, y lo comparo con mis idiomaslangStr.lowercased().contains("es")
para todas las variaciones del idioma español, por ejemplo.puede usar el siguiente código, funciona bien con swift 3
fuente
Quiero hacer un seguimiento del idioma elegido por el usuario en la aplicación Configuración cada vez que el usuario inicia mi aplicación, que aún no está localizado (mi aplicación está solo en inglés). Adopté esta lógica:
crear una enumeración para facilitar el manejo de los idiomas en una matriz
crear un par de extensiones para Locale
Cuando lo necesite, simplemente puede usar la extensión
fuente
En Swift, puede obtener la configuración regional utilizando.
fuente
Locale.current.languageCode
me devuelve un código incorrecto, así que uso estas extensiones:fuente
Esto es lo que uso en Swift 5 Xcode 11:
Dentro de las variables de clase:
Esto viene como una cuerda. Devuelve 2 caracteres, es decir, "en", "es", "de" ...
A partir de esto, puedo determinar fácilmente qué idioma mostrar:
Si desea la información completa del idioma, elimine? .Prefex (2)
fuente