Localization の苦手意識・・・

App を審査に提出したら、reject。理由は、Location 機能を使うならちゃんと利用者に説明しろとのこと。具体的には、info.plist に記述してということ。実は、審査に提出した後、あ、やってなかったなと思ってたんだけどやっぱ見逃してくれないね。指摘事項はこれだけだから、修正すればめでたく上市となるだろう。そういえば、日本語環境の場合は日本語の説明文を出した方がいいよねって、この考えは正しいようで、ネットの記事を見ると、日本語の場合日本語でメッセージ出せよで reject された例もあるようだ。

さて、こういうのを localization というのだけど、以前からこれ苦手で、理由は正当なやり方がよくわからない、色々試しても上手く行った試しがない、という・・・今回も、例の如くすんなりいかず・・・後学のため、手順を書いておこう。

まず、New file... でファイルを追加。追加するのは strings file。ファイル名は InfoPlist.strings。ちなみに、ファイル名は InfoPlist.strings でないとダメで、それ以外のファイル名だとうまく動かないそうだ。「そうだ」というのはあるアプリでは infoPlist.strings でも大丈夫だったんだけど、他のアプリでは InfoPlist.strings でないとうまく動かないという症状に出くわしたので、えーなんでーーーと時間を浪費しないために、初めから InfoPlist.strings にした方が良いだろう。ファイルを追加したら、inspector で、Localization ボタンを押す。Japanese を選択する。すると、Storyboard に Main.strings も追加される。そして、InfoPlist.string を開き、Location を使用するなら、次のような記述を行う。

NSLocationWhenInUseUsageDescription = "Start, Stop, Lap ボタンをタッチすると、日付、時刻、位置を同時に記録します。";

これで、日本語環境ならこのメッセージが表示されるはずなんだけど、英語のメッセージが出る。上手くいかない・・・色々試してみるけどダメだ・・・

と、通常ファイルを追加すると、ファイル名の横に「A」と表示される。その表示がなぜか「-」となっている。変更した場合は「M」だ。「-」はなんだこれ?

しょうがないのでもう一度、InfoPlist.strings を追加してみる。ファイルあるんだけど?みたいな confirm が出て、replace する。今度は、ファイル名の横の表記は「A」となった。

その後、build してみたらちゃんと動いた。

よくわからないけど、解決できたのでよかった。

 

===後日談===

その後、また Appleから連絡があり、Localize を United State にしているのに日本語でメッセージが出るんだけど?とのこと。うーん、日本語の localization を追加したはずなのに、どの言語でもそれが使われてしまうという・・・info.plist には英語を入れているのにそれが表示されない。うーん、localization は鬼門だ(というか、やり方話からねぇ。。。)。というか、事前にちゃんとテストしないから悪いのか。色々いじって、次のように解決。

追加した InfoPlist.strings の inspector をみると、Japanese にチェックがついているけれども、English というチェックボックスもある。試しに、English にもチェックをつけてみると、InfoPlist.strings の中に、InfoPlist.strings (Japanese), InfoPlist.strings (English) ができる。それぞれファイルを編集できるので、Japanese には日本語を、English には英語のメッセージを記入。

動作させてみると無事、メッセージを切り替えることができた。

もう、文句言われないだろう。