Локализация: Как узнать текущий язык пользователя? - PullRequest
9 голосов
/ 19 января 2011

Я собираюсь локализовать приложение для iPhone.Я хочу использовать другой URL-адрес, когда язык пользователя (язык системы iOS) является немецким.

Я хочу знать, правильно ли это сделать:

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

Я понимаю[NSLocale currentLocale] возвращает язык, основанный на текущем регионе, но не язык системы, а также [NSLocale systemLocale] не работает.

(я не хочу использовать NSLocalizedString здесь!)

Ответы [ 3 ]

13 голосов
/ 19 января 2011
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSArray *languages = [defaults objectForKey:@"AppleLanguages"];
NSString *currentLanguage = [languages objectAtIndex:0];

Ваш код в порядке. Но я сделаю так:

    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 голосов
/ 05 апреля 2011

Я бы просто использовал NSLocalizedString для поиска локализованного URL-адреса следующим образом:

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

Тогда в ваших файлах Localizable.strings вы можете просто сделать:

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

И

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

соответственно.

2 голосов
/ 31 октября 2014

Лучше использовать

[[NSLocale currentLocale] objectForKey:NSLocaleLanguageCode];

, если вы хотите протестировать его с новой функцией Xcode 6 для тестирования другого языка без изменения системных настроек.

...