Aqlier/ 3月 24, 2016/ Android, iPhone

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"

	}

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

local1Object IDを確認
local2
・日本語環境における、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 {

	//日本語以外固有処理

	}