Xcode (objective-c,swift)、Android開発でローカライズ判定
使用端末の言語環境に合わせて、言語をセットする。
Objective-c
2 | NSArray *langs = [ NSLocale preferredLanguages]; |
5 | NSString *currentLanguage = [langs objectAtIndex:0]; |
8 | if ([currentLanguage compare: @"ja" ] == NSOrderedSame ) { |
11 | self .title.text = @"タイトル" ; |
15 | if (([currentLanguage compare: @"ja" ] == NSOrderedSame ) || |
16 | ([currentLanguage compare: @"ja-JP" ] == NSOrderedSame )) { |
19 | self .title.text = @"タイトル" ; |
ios9からの定義として、
ja-JP: 「言語 - 地域」(設定の言語と地域の値を取得)での判定が必要になったようです。
言語は、日本語でシミュレーションのテリトリがアメリカになっていて、「ja-US」としてリリースしたところ
実機NGで再度調査して判明しました。
対応機種をios7.1以上にした場合、両方の判定でローカライズ対応する必要があります。
Swift
・アプリ内で、使用端末の状態を判断して、該当する言語で文字をセットする。
1 | if let languageCode = NSLocale.currentLocale().objectForKey |
2 | (NSLocaleLanguageCode) as? String { |
・ローカライズ機能でセットする。
・Object IDを確認

・日本語環境における、Object IDに該当する文字をセットする
ViewController.swift
1 | c_lass ViewController: UIViewController { |
3 | @IBOutlet weak var titleX: UILabel! |
5 | @IBAction func ButtonX(sender: UIButton) { |
6 | titleX.text = NSLocalizedString( "Title" , comment: "" ) |
9 | override func viewDidLoad() { |
14 | override func didReceiveMemoryWarning() { |
15 | super .didReceiveMemoryWarning() |
Localizable.s_trings
Android
1 | if (Locale.JAPAN.equals(Locale.getDefault())) { |
「これってすごい」「みんなに教えたい!」と思ったらぜひ共有してみてください