

設定画面の言語、国の情報を取得したいのですが、

ios9系だと

NSLocale.preferredLanguages().first  
を使うと、  
「ja-JP」と出力されます。

ios8以下だと、  
「ja」と出力されます。

欲しい情報としては、「ja-JP」なのですが、ios8以下ではどのように「言語ー国」  
を取得できるでしょうか。


CC BY-SA 3.0
2016-04-10T05:08:33.833
23888
2016-04-10T10:10:04.297
14760
question
ios swift objective-c swift2
iOS 設定情報の言語取得、国情報取得方法


別々に取り出して、必要に応じてつなげれば良いのではないでしょうか?

[code]

            let locale = NSLocale.currentLocale()
            let languageCode = locale.objectForKey(NSLocaleLanguageCode) as! String //->ja
            let countryCode = locale.objectForKey(NSLocaleCountryCode) as! String //->JP
    
[/code]


CC BY-SA 3.0
2016-04-10T05:42:05.583
23890
2016-04-10T05:42:05.583
13972
23888
answer


`NSLocale.preferredLanguages()`はもともと **言語コード**
を返すAPIですので、デバイスの言語と地域の設定を取得する場合は、`NSLocale.currentLocale()`の方がより適切です。

iOS8までとiOS9以降での言語コードの扱い変化については、[Technical Note
TN2418](https://developer.apple.com/library/ios/technotes/tn2418/_index.html)を参照してみてください。

対して、`currentLocale()`は端末のロケール設定を取得するものですので、iOS8以前でも一貫して言語と地域を取得できます。

[code]

    NSLocale.currentLocale().localeIdentifier
    
[/code]

を用いると、`ja_JP`が取得できます。ハイフンではなくアンダーバーで結合されています。


CC BY-SA 3.0
2016-04-10T10:10:04.297
23894
2016-04-10T10:10:04.297
5337
23888
answer