Android•iOSでのローカライズ
Androidでのローカライズ
リソースファイル
英語 res/values/string.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">Hello.</string> </resources>
日本語 res/values-ja/string.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">こんちは</string> </resources>
プログラムコードから参照
getPackageName()はandroid.content.Contextクラスのメソッド
Resources res = getResources(); int strId1 = R.string.hello; //直接idを得る int strId2 = res.getIdentifier("hello", "string", getPackageName()); //文字列でキーを指定して、idを得る String s1 = getString(strId1); //android.content.Context.getString()を使う String s2 = res.getString(strId1); //android.content.res.Resources.getString()を使う
レイアウト定義から文字列リソース参照
res/layout/xxx.xml
<?TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" />
iOSでのローカライズ
リソースファイル
Localizable.strings (English)
"hello" = "hello";
Localizable.strings (Japanese)
"hello" = "こんちは";
Error.string (English)
"error" = "error";
Error.string (Japanese)
"error" = "エラー";
プログラムコードから参照
NSString *hello = NSLocalizedString(@"hello", @"コメント"); NSString *err1 = NSLocalizedStringFromTable(@"error", @"Error", @"コメント"); NSString *err2 = [[NSBundle mainBundle] localizedStringForKey:@"error" value:@"コメント" table:@"Error"]
アプリ名称のローカライズ
InfoPlist.strings(English)
"app" = "Sample";
InfoPlist.strings(Japanese)
"app" = "サンプル";