2012-06-08 79 views
5

Deseo obtener el idioma predeterminado del sistema y la configuración regional del sistema.Cómo obtener la configuración regional del sistema y el idioma del sistema en cocoa

He intentado el siguiente fragmento de código para obtener el sistema de localización actual de la siguiente manera

NSLocale *locale; 
locale = [NSLocale systemLocale]; 

NSString * localLanguage = [locale objectForKey:NSLocaleIdentifier]; 
NSLog (@"Language : %@", localLanguage); 

NSLog(@"System locale Identifier %@",[locale localeIdentifier]); 

Pero nada se muestra con la configuración regional del sistema Identifier.If es currentLocale se está dando a la región del sistema correcta result.Why no está dando ningún valor y cómo obtener el idioma predeterminado del sistema no el idioma preferido por el usuario? por favor ayuda

Respuesta

4

El NSLocaleIdentifier predeterminado es intencionalmente @"" para indicar que no hay una selección actual. Según Apple, systemLocale es solo una alternativa para las claves que no están implementadas en la configuración regional seleccionada del usuario (currentLocale), y como eso siempre está establecido y siempre está bajo el control del usuario, tiene sentido.

Si desea seguir la lista de idiomas preferidos del usuario, desea utilizar + preferredLanguages, que devuelve una lista de los idiomas que prefiere el usuario, en el orden en que los prefiere. Esto funciona tanto para OSX como para iOS, y sirve para proporcionar una alternativa apropiada para el sistema al elegir idiomas.

Para la prueba, se puede utilizar el interruptor de línea de comandos -AppleLanguages con un valor de a, matriz separada por comas paréntesis-rodeado (ejemplo: (DE,FR,EN)) y Xcode simulará que ser la lista de idiomas preferido para el usuario.

Como el usuario establece los idiomas preferidos (al menos en OSX), el sistema operativo seguirá la lista cuando elija datos localizados para el usuario. En general, hacer algo más que usar las macros se considera innecesario debido a este hecho. Sin embargo, puede ver manualmente el valor si tiene información que no necesita recursos y necesita localizar.

+0

Gracias por su response.Do usted tiene alguna idea de cómo puedo obtener el idioma del sistema. – Akbar

+0

Realmente no hay uno para OS X. Todo está determinado por el usuario. ¿Para qué estás tratando de usarlo? Tal vez hay otro mecanismo al que te puedo apuntar. – gaige

+0

Mi req. es mostrar el texto en el idioma preferido del usuario, se obtiene de los servicios de back-end, si el usuario no se elige un idioma específico, entonces tengo que mostrar el texto en el idioma predeterminado del sistema. Por eso estoy tratando de averiguar cómo puedo Busque el idioma predeterminado del sistema. ¿Puede decirme cuál es el otro mecanismo? – Akbar

8

Usted puede simplemente utilizar: NSString* language = [[NSLocale preferredLanguages] objectAtIndex:0];

+0

¡Esta es la mejor solución que podría usar, gracias! – thibmaek

Cuestiones relacionadas