【Swift4】iPhone(iOS)の言語設定を取得して多言語対応する方法【Objective-C】
iPhone(iOS)の言語設定を取得する方法をご紹介します。
iOS9とiOS8以前で若干違うので気をつけてください。
- iOS9以降の場合
["ja-JP", "en-JP"]
言語コード + 国コード でpreferredLanguagesが取得できる - iOS8以前の場合
["ja", "en"]
言語コードのみでpreferredLanguagesが取得できる
iOS9からは先頭の2文字だけを取得して多言語の分岐を行います。
iOS9以降
Swift4
let languages = NSLocale.preferredLanguages
print(languages) // ["ja-JP", "en-JP"]
let language = languages[0].prefix(2)
print(language) // ja
if language == "ja" {
// iPhoneの設定が日本語設定だった場合
}
else {
// iPhoneの設定がそれ以外の言語設定だった場合
}
Objective-C
NSArray *languages = [NSLocale preferredLanguages];
NSLog(@"%@",languages); // ( "en-JP","ja-JP")
NSString *language = [[languages objectAtIndex:0] substringToIndex:2];
NSLog(@"%@",language); // ja
if ([language isEqualToString:@"ja"]) {
// iPhoneの設定が日本語設定だった場合
}
else {
// iPhoneの設定がそれ以外の言語設定だった場合
}
iOS8
Swift4
let languages = NSLocale.preferredLanguages
print(languages) // ["ja-JP", "en-JP"]
let language = languages[0]
print(language) // ja
if language == "ja" {
// iPhoneの設定が日本語設定だった場合
}
else {
// iPhoneの設定がそれ以外の言語設定だった場合
}
Objective-C
NSArray *languages = [NSLocale preferredLanguages];
NSLog(@"%@",languages); // ( "en-JP","ja-JP")
NSString *language = [languages objectAtIndex:0];
NSLog(@"%@",language); // ja
if ([language isEqualToString:@"ja"]) {
// iPhoneの設定が日本語設定だった場合
}
else {
// iPhoneの設定がそれ以外の言語設定だった場合
}