【Swift4】iPhone(iOS)の言語設定を取得して多言語対応する方法【Objective-C】

2020年8月27日

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の設定がそれ以外の言語設定だった場合
}