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

あなたのコードはOKです。しかし、私は次のようにします:

    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 に答える