我即将本地化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
!)
答案 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测试其他语言的新功能,而不更改系统首选项。