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

Fel*_*lix 9 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
}
Run Code Online (Sandbox Code Playgroud)

据我所知,[NSLocale currentLocale]返回基于当前区域的语言,但不是系统语言,也不起作用[NSLocale systemLocale].

(我不想在NSLocalizedString这里使用!)

Ale*_*nte 13

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSArray *languages = [defaults objectForKey:@"AppleLanguages"];
NSString *currentLanguage = [languages objectAtIndex:0];
Run Code Online (Sandbox Code Playgroud)

你的代码没问题.但我会这样做:

    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]];
Run Code Online (Sandbox Code Playgroud)


Mor*_*itz 9

我只想使用NSLocalizedString来查找本地化的URL,如下所示:

NSString* urlString = NSLocalizedString(@"myUrlKey", nil);
Run Code Online (Sandbox Code Playgroud)

然后在您的Localizable.strings文件中,您可以这样做:

// German
"myUrlKey" = "http://www.example.com/de/myapp";
Run Code Online (Sandbox Code Playgroud)

// English
"myUrlKey" = "http://www.example.com/en/myapp";
Run Code Online (Sandbox Code Playgroud)

分别.

  • 我不知道你是否想将网址的责任留给翻译团队. (3认同)