ios locale local setting

ios - locale identifier swift



iOS: ¿Cómo obtener la configuración de idioma actual del dispositivo? (10)

Hay algunas funciones dentro de mi aplicación que se supone que están basadas en la configuración de idioma del dispositivo donde se ejecuta.

Quiero obtener el idioma real y no algunos ajustes de país. Por ejemplo, si el idioma es el inglés, no me importa si es EE. UU., Reino Unido, Australia, etc.

Estoy familiarizado con el objeto NSLocale , pero parece estar relacionado con la configuración del Region Format y no con la configuración de Idioma (vea la captura de pantalla a continuación), por lo que cuando intento recuperar el idioma utilizando el valor de [locale displayNameForKey:NSLocaleIdentifier value:[locale localeIdentifier] Obtengo cosas como el English (United States) lugar del English ; Además, creo que lo que necesito son los datos de idioma y no el formato de región (¿tengo razón?).

¿Alguien puede indicarme cómo recuperar la configuración de idioma?


En Swift 4 :

let currentLanguage = Locale.current.languageCode

Le dará solo el código de idioma, no el código de país.


Encuentre la solución en el documento auxiliar de XCode, que escribió:

Obtención del idioma actual

Para obtener el idioma que usa la aplicación del paquete principal de aplicaciones, use el método preferredLocalizations en la clase NSBundle:

NSString *languageID = [[NSBundle mainBundle] preferredLocalizations].firstObject;


Los idiomas preferidos del usuario que se almacenan se pueden recuperar de la configuración regional como matriz y el identificador de idioma actual es el primer objeto de esa matriz:

NSString *currentLanguage = [[NSLocale preferredLanguages] objectAtIndex:0];

Si desea un lenguaje en una forma más legible, entonces utilice aforforForKey: displayNameForKey:value: método de NSLocale:

NSString *langID = [[NSLocale preferredLanguages] objectAtIndex:0]; NSString *lang = [[NSLocale currentLocale] displayNameForKey:NSLocaleLanguageCode value:langID];


Obtener idioma y región en Swift :

LF.log("language", NSLocale.preferredLanguages()) LF.log("locale", NSBundle.mainBundle().preferredLocalizations)

En mi caso estoy recibiendo:

language: ''( "zh-Hans" )'' locale: ''( en )''


Para conocer el idioma actual seleccionado dentro de tus localizaciones utiliza.

[[NSBundle mainBundle] preferredLocalizations]

Ejemplo:

NSString *language = [[[NSBundle mainBundle] preferredLocalizations] objectAtIndex:0];

Para obtener la palabra de dos letras

NSString *language = [[[[NSBundle mainBundle] preferredLocalizations] objectAtIndex:0] substringToIndex:2];

Rápido:

let language = NSBundle.mainBundle().preferredLocalizations.first as NSString


Prueba esto:

NSUserDefaults* userDefaults = [NSUserDefaults standardUserDefaults]; NSArray* arrayLanguages = [userDefaults objectForKey:@"AppleLanguages"]; NSString* currentLanguage = [arrayLanguages objectAtIndex:0];


Rápido:

let language = NSBundle.mainBundle().preferredLocalizations[0] as NSString


Solución de trabajo:

let language = NSLocale.preferredLanguages()[0] let languageDic = NSLocale.componentsFromLocaleIdentifier(language) as NSDictionary //let countryCode = languageDic.objectForKey("kCFLocaleCountryCodeKey") let languageCode = languageDic.objectForKey("kCFLocaleLanguageCodeKey") as! String print(languageCode)


Use el siguiente código para obtener el idioma localizado sin tener problemas con la en-india, en-us, etc.

NSString *Ph = [[[NSBundle mainBundle] preferredLocalizations] objectAtIndex:0];

En y después de iOS9, este código debe tener en cuenta.


NSString * language = [[NSLocale preferredLanguages] objectAtIndex:0];