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

・日本語環境における、Object IDに該当する文字をセットする
ViewController.swift
c_lass ViewController: UIViewController {
@IBOutlet weak var titleX: UILabel!
@IBAction func ButtonX(sender: UIButton) {
titleX.text = NSLocalizedString("Title", comment: "")
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any r_esources that can be recreated.
}
Localizable.s_trings
/* Localizable.s_trings Localization */ "Title" = "押した!";
Android
if (Locale.JAPAN.equals(Locale.getDefault())) {
//日本語固有処理
} else {
//日本語以外固有処理
}
