LoginSignup
6
4

More than 5 years have passed since last update.

iOS9でNSLocale preferredLanguagesの戻り値が変わった

Posted at

言語コードのみから、言語コード+国コードへ

Getting Preferred Languages

  • iOS9の戻り値
    • "ja-JP", "en-JP"
    • 言語コード(ISO 639-1)+ 国名コード(ISO 3166-1 alpha-2)
  • iOS8以前の戻り値
    • "en", "ja", "es"
    • 言語コード(ISO 639-1)の2文字コード

リファレンスの戻り値には、Stringの配列が返ってくるとしか書いてない……。
明記しなくても、"当然、ISOでしょ?"ってことなのかな。
一応、日本には、JIS Xって規格もあるんだけど。

日本語判別方法変更

  • iOS9
Environment.m
@implementation Environment

+ (BOOL)isLocaleJapanise {
    NSArray *languages = [NSLocale preferredLanguages];
    NSString *languageID = [languages objectAtIndex:0];
    if ([languageID hasPrefix:@"ja-"]) {
        return YES;
    }
    return NO;
}

@end
  • iOS8以前
Environment.m
@implementation Environment

+ (BOOL)isLocaleJapanise {
    NSArray *languages = [NSLocale preferredLanguages];
    NSString *languageID = [languages objectAtIndex:0];
    if ([languageID isEqualToString:@"ja"]) {
        return YES;
    }
    return NO;
}

@end

完全一致から、前方一致にしただけ。
言語で区別するのか、 で区別するのかで、前方一致、後方一致を決めればよい。

一つの国で、公用語が複数あるなんて状態が今後は増えていくのかなぁ。
昔、カナダに旅行した時、バンクーバーは英語だったけど、VIA鉄道でジャスパーに行ったら、フランス語だった。
レストランの店員が、接客の時は英語で、おしゃべりする時はフランス語を話しているのを見て、器用だな、と思ったのを思い出した。

6
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4