kanetaiの二次記憶装置

プログラミングに関するやってみた、調べた系のものをQitaに移して、それ以外をはてブでやる運用にしようと思います。http://qiita.com/kanetai

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" = "サンプル";