L10N(Localization)関連でハマったこと

SysStats LITEの現バージョン(0.5)は、日本語環境のみに対応していますが、現在申請中の次バージョン(1.0)では、英語環境にも対応するよう、ローカライズしました。
そのときに、ハマったところがあったので、ここに書いておこうと思います。


Localizable.stringsの文字コード
Xcodeの、[ファイル]→[新規ファイル...]から、空のstringsファイルを作ると、そのエンコーディングUTF-8です。そのファイルに、日本語の値を持つキーを登録し、それを、NSLocalizedString(...)関数で取得して、TableViewのセクション名に表示するようにしました。

"System Memory Status" = "メモリ使用状況";


Simulatorで実行したところ、問題なく、”メモリ使用状況”と表示されました。しばらく、Simulatorでのデバッグを行った後に、iPhoneに入れて実行してみたところ、キーの値がそのまま、"System Memory Status"と表示されてしまいました。いろいろ、ドキュメントを探っていたところ、CocoaInternationalization Programming Topics にたどりつきました。

Note: It is recommended that you save strings files using the UTF-16 encoding, which is the default encoding for standard strings files....

という記述を見つけたので、とりあえず、UTF-16に変えてみたところ、うまく表示されました


iTunesConnectのアプリケーションの説明文とスクリーンショット
AppStoreで表示されるアプリケーションの説明文をローカライズできるようになっています。われわれ日本人の場合、日本語がデフォルトになっています。今回、英語の説明文を何とか作ったので、英語圏にもリリースすることにしました。
とりあえず、Localizationのページで、Englishを選択して、説明文を入力し、スクリーンショットをアップロードして保存しました。
次に、Pricingで、まずは、United States, United Kingdom, Australia, New Zealandあたりを選択してみました。
そして、Reviewのページで、New Zealandを選んでみたところ、なぜか、日本語の説明文が表示されます。結局、ちゃんと英語で表示してくれたのは、United Statesだけでした。
Localizationのページで、もう一度確認したところ、UK English、Australian English、Canadian Englishというのがあることに気づきました。
Australian Englishでも、説明文を入力して保存したところ、New Zealandにも英語で表示されるようになりました。
適切な言語で説明文を登録しないと、デフォルトの言語になってしまうようです。
私の場合、国ごとに説明文やスクリーンショットを変える必然性はないので、かなり、面倒な作業に感じました。できれば、日本以外の国には、すべて英語で公開するようなモードがほしいと思います。
あとから気づいたのですが、デフォルトのところに、日本語と英語を両方書いてしまうのが、一番楽にできるかもしれないですね(説明文の文字数や、スクリーンショットの数に制約ができますが。。。)。