2011-01-19 21 views
9

Estoy a punto de localizar una aplicación para iPhone. Quiero utilizar una URL diferente cuando el idioma del usuario (idioma del sistema iOS) es alemán.Localización: ¿cómo obtener el idioma actual del usuario?

Quiero saber si esta es la forma correcta de hacerlo:

NSURL *url = [NSURL URLWithString:@"http://..."]; // english URL 
NSString* languageCode = [[NSLocale preferredLanguages] objectAtIndex:0]; 
if ([languageCode isEqualToString:@"de"]) { 
    url = [NSURL URLWithString:@"http://..."]; // german URL 
} 

entiendo que [NSLocale currentLocale] devuelve el lenguaje basado en la región actual, pero no el idioma del sistema, tampoco lo hace [NSLocale systemLocale] trabajo.

(no quiero usar NSLocalizedString aquí!)

Respuesta

13
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
NSArray *languages = [defaults objectForKey:@"AppleLanguages"]; 
NSString *currentLanguage = [languages objectAtIndex:0]; 

Su código es correcto. Pero voy a doIT así:

NSString *urlString = nil; 
    NSString *languageCode = [[NSLocale preferredLanguages] objectAtIndex:0]; 
    if ([languageCode isEqualToString:@"de"]) { 
     urlString = @"http://..."; 
    }else{ 
     urlString = @"http://..."; 
    } 
    NSURL *url = [NSURL URLWithString:[urlString stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding]]; 
9

me acaba de utilizar NSLocalizedString para buscar la URL localizada como esto:

NSString* urlString = NSLocalizedString(@"myUrlKey", nil); 

Luego, en sus Localizable.strings archivos que acaba podría hacer:

// German 
"myUrlKey" = "http://www.example.com/de/myapp"; 

Y

// English 
"myUrlKey" = "http://www.example.com/en/myapp"; 

respectivamente.

+3

No sé si quiere dejar la responsabilidad de las URL al equipo de traducción. –

+0

Creo que esta solución es la mejor – jimwan

2

Es mejor usar

[[NSLocale currentLocale] objectForKey:NSLocaleLanguageCode]; 

si quieres probarlo con Xcode 6 nueva característica de probar otro idioma sin el cambio del sistema de preferencias de.

+0

Precaución: ¡La configuración regional actual no es la misma que la del idioma preferido! La configuración regional es lo que define cómo se compara el texto y cómo se formatean los números y las fechas. El idioma preferido es el idioma real. Por lo tanto, un usuario (como yo) podría estar utilizando la configuración regional alemana (para obtener las fechas alemanas y un reloj de 24 horas), pero aún prefiere usar OS X en inglés. Si desea determinar qué traducciones mostrar, ¡utilice el idioma preferido, no la configuración regional! (Muchas aplicaciones lo hacen mal, y es bastante molesto cuando obtengo una aplicación en alemán, aunque prefiero el inglés). –

Cuestiones relacionadas