Xcode 、Android開発でローカライズ判定

Xcode (objective-c,swift)、Android開発でローカライズ判定

 使用端末の言語環境に合わせて、言語をセットする。

Objective-c

1//選択可能な言語設定の配列を取得
2 NSArray *langs = [NSLocale preferredLanguages];
3 
4 //取得した配列から先頭の文字列を取得(先頭が現在の設定言語)
5 NSString *currentLanguage = [langs objectAtIndex:0];
6 
7//ios9以前
8 if([currentLanguage compare:@"ja"] == NSOrderedSame) { //日本語以外の対応
9 
10 //日本語固有処理
11       self.title.text = @"タイトル";
12 };
13 
14//ios 9以降
15 if(([currentLanguage compare:@"ja"] == NSOrderedSame) || //ios 9以前の判定
16 ([currentLanguage compare:@"ja-JP"] == NSOrderedSame)) { ///ios 9以降の対応
17 
18 //日本語固有処理
19       self.title.text = @"タイトル";
20 }

ios9からの定義として、

 ja-JP: 「言語 - 地域」(設定の言語と地域の値を取得)での判定が必要になったようです。

言語は、日本語でシミュレーションのテリトリがアメリカになっていて、「ja-US」としてリリースしたところ
実機NGで再度調査して判明しました。
対応機種をios7.1以上にした場合、両方の判定でローカライズ対応する必要があります。

Swift
・アプリ内で、使用端末の状態を判断して、該当する言語で文字をセットする。

1    if let languageCode = NSLocale.currentLocale().objectForKey
2(NSLocaleLanguageCode) as? String {
3    //日本語固有処理
4    languageCode == "ja"
5 
6    }

・ローカライズ機能でセットする。

local1Object IDを確認
local2
・日本語環境における、Object IDに該当する文字をセットする

ViewController.swift

1c_lass ViewController: UIViewController {
2 
3@IBOutlet weak var titleX: UILabel!
4 
5@IBAction func ButtonX(sender: UIButton) {
6titleX.text = NSLocalizedString("Title", comment: "")
7}
8 
9override func viewDidLoad() {
10super.viewDidLoad()
11// Do any additional setup after loading the view, typically from a nib.
12}
13 
14override func didReceiveMemoryWarning() {
15super.didReceiveMemoryWarning()
16// Dispose of any r_esources that can be recreated.
17}

Localizable.s_trings

1/*
2Localizable.s_trings
3Localization
4*/
5 
6"Title" = "押した!";
Android
1if (Locale.JAPAN.equals(Locale.getDefault())) {
2 
3//日本語固有処理
4 
5} else {
6 
7//日本語以外固有処理
8 
9}
Verified by MonsterInsights