本地化:如何获取当前的用户语言?

时间:2011-01-19 15:58:46

标签: iphone localization nslocale

我即将本地化iPhone应用程序。当用户的语言(iOS系统语言)是德语时,我想使用不同的URL。

我想知道这是否是正确的方法:

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 个答案:

答案 0 :(得分:13)

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]];

答案 1 :(得分:9)

我只想使用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 :(得分:2)

最好使用

[[NSLocale currentLocale] objectForKey:NSLocaleLanguageCode];

如果您想使用Xcode 6测试其他语言的新功能,而不更改系统首选项。