1
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

NativeScriptでiOSアプリのローカライズ情報を日本語のみにする方法

Posted at

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の最低限のひな形は次のようになります。

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フォルダを追加してローカライズしていけば良いです。

1
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?