NativeScriptは海外の方が作ったので、英語が正義なのです。
何も考えずにストア申請すると、対応言語が英語、となってしまいます。
これは何故かというと、執筆時点でのiOS用テンプレートにen.lprojというフォルダが存在するからなのです。
ここでいうテンプレートとは、
tns platform add ios
でplatforms以下に作成されるものを指します。
iTunes Connectでは、*.lprojが存在する言語を全て対応言語としてしまうようなのです。
今回は日本語のみ対応とストアに表示したいので、これをja.lprojとすれば良さそうに思えますが、自力でファイルシステムを直接書き換えるとビルドに失敗します。
めんどくさいですが、platforms/ios以下のXcode用プロジェクトをXcodeから開いて、<プロジェクト名>/Supporting Filesグループに入っているInfoPlist.stringsを選択し、右のFile InspectorでLocalizedの部分のEnglishのチェックを外します。
すると削除して良いか聞かれるので、ばっさり削除しちゃいましょう。
え、いいのか? と思われるかもしれませんが、これ元々空っぽですから。
InfoPlist.stringをローカライズしたいケースはアプリ名くらいだと思うので、次の手順で解決できます。
ずばり、nativescript-i18nプラグインを導入します。
https://github.com/rborn/nativescript-i18n
導入方法は上記に書いてありますが、一応解説します。
プロジェクトフォルダトップで、
npm install nativescript-i18n --save
を実行してプラグインをインストールします。
次に、プロジェクトフォルダトップ内にi18nという名前でフォルダを作ります。
さらに、jaというフォルダを作り、中にstrings.xmlというファイルで文字列ローカライズ用のファイルを用意します。
app/
├ i18n/
│ └ ja/
│ └ strings.xml/
これでstrings.xmlがAndroidの場合はそのままコピーされ、iOSの場合はLocalizedStringに変換されてja.lprojフォルダに格納されます。
strings.xmlの最低限のひな形は次のようになります。
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">アプリ名</string>
<string name="title_activity_kimera">Android用アクションバーのタイトル</string>
</resources>
公式ドキュメントではstringタグだけあれば良いような印象を受けますが、前述の通り
tns prepare android
ではこのファイルがコピーされるだけですので、きちんとresoucesタグ等も記述しないといけません。
これで日本語のみ対応のiOSアプリのできあがりです!
なお、当然のごとく、英語と日本語対応にしたければ、i18nフォルダにenフォルダを追加してローカライズしていけば良いです。