言語コードのみから、言語コード+国コードへ
- 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鉄道でジャスパーに行ったら、フランス語だった。
レストランの店員が、接客の時は英語で、おしゃべりする時はフランス語を話しているのを見て、器用だな、と思ったのを思い出した。