9

我即将本地化一个 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这里使用!)

4

3 回答 3

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]];
于 2011-01-19T16:16:16.057 回答
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";

分别。

于 2011-04-05T07:40:30.240 回答
2

更好用

[[NSLocale currentLocale] objectForKey:NSLocaleLanguageCode];

如果你想在不改变系统偏好的情况下使用 Xcode 6 测试其他语言的新功能来测试它。

于 2014-10-31T05:56:24.807 回答