【iOS/Xcode】ローカライズのdeprecatedが気になるので消す方法を【Unity】
UnityでiOS向けにXcodeのプロジェクトをビルドすると、デフォルトでいくつかのローカライズが選択されています。
去年(2019年)あたりは出ていなかった気もしますが、最近では使っているUnityのバージョンによっては言語名の後ろに「deprecated」がついています。
例えばUnity2018.4.23.f1でビルドしたプロジェクトをXcode11.5で開くと以下のように表示されます。
French, German, Japaneseで「deprecated」が確認できます。あ、Development LanguageのEnglishも「deprecated」ですね。
実際に使う時にはLocalizationに新しく追加すればいいので放っておいてもいいっちゃいいのですが、「deprecated」になっている設定が残っているのはちょっと気持ち悪いので、これを削除する方法をこのページで解説します。Development Languageの切り替え方についても一緒に解説します。
環境
macOS 10.15 Catalina
Unity2018.4.23.f1
Xcode11.5
「deprecated」になる原因
Unity側でXcodeのプロジェクトを書き出す際、ローカライズの言語を言語名で指定しているためです。
書き出された直後のプロジェクトについて、プロジェクトファイルを見てみましょう。
エクスポートしたディレクトリにある『Unity-iPhone.xcodeproj』を選択してコンテキストメニューを開き、[パッケージの内容を表示] を選択します。
パッケージの内容が表示されたら、『project.pbxproj』のファイルをテキストエディタで開きます。私の場合はVS Codeを使って開きました。
『project.pbxproj』のファイルの中盤あたりに、ローカライズファイルに関する設定が記載されています。「developmentRegion」などで検索すると簡単にたどり着けると思います。
上の記述を見てもらうと、勘の良い方は気付いたかもしれません。
このファイルでローカライズの対象となるリージョンが言語名(JapaneseやEnglishなど)で指定されている部分が、Xcodeで「deprecated」として表示されています。
言語名ではなく言語コードで指定するのが今風のやり方なので、「en」と言語コードで指定されたものについては「deprecated」がついていないんです。
この部分はUnityが自動的に書き出している部分なので、ユーザー側でどうこうできる部分ではない……という認識でいますが、ビルドスクリプトとか書いたら行けるんですかね? コマンドライン引数を見てもそれっぽいものがなかったので、もし情報を持っている人がいたらコメント欄でご指摘いただけると嬉しいです。
単純に消せばOK
Unity側で言語名で書き出しているのが原因なので、手動で消しちゃえばOKです。削除したい行を選択して、[-] をクリックすればリストから消えてくれます。
あとは [+] から追加したい言語を選択すれば、「deprecated」がついていない行が追加されます。日本語を追加する場合は、[+] をクリックしてすぐに表示される [Japanese(ja)」と、一番下にある「other」から追加で表示される「Japanese(ja-JP)」を追加しておくとグッド。
というのも、iOS13だと [Japanese(ja)」だけではローカライズされないという報告がいくつか見られたためです。
他の「deprecated」も消してすっきり……! といきたいところですが、Development Languageとして指定されている「English」を選択しても、[-] をクリックできないんですよねぇ……。
Development Languageの切り替えはプロジェクトファイルから
という訳で言語コードで指定した「English」をDevelopment Languageとして指定します。切り替えは上の方で開いたプロジェクトファイルを書き換えるのが良いかと思います。念のためバックアップを作成しておくとなおよろし。
この切り替え方法は以下のサイトを参考にさせていただきました。
一度Xcodeのプロジェクトを閉じ、『「deprecated」になる原因』の章で解説した手順でプロジェクトファイルを開きます。
developmentRegionの項目は言語名の「English」で指定されています。
これを言語コードの「en」に書き換えます。
プロジェクトファイルを保存後、再度プロジェクトを開いてみると以下のようにDevelopment Languageが切り替わっています。
これで「deprecated」となった側の「English」を削除できるようになります。すっきり。
※プロジェクトを上書きすると設定が消える
ここで重要なのが、Xcode側で設定を行っても、再度Unityからプロジェクトを書き出してしまうと設定が消えてしまうこと。
Unity側では最初と同様に言語名で指定しているので、再び「deprecated」の嵐が……。
「よし、これはリリース候補のビルドだからローカライズ部分も直しておこう!」→「実機でエラー出るやんけ!」→(修正して再度Unityでビルド)→「あっ(察し)」
のループもよく発生するので、これらの設定を入れるのはかなり後回しにした方が良いと思います。
Unity側で設定を変えない限りは同じことが起きてしまうので仕方ないとはいえ、リリース前のテンパっている時期にこうした作業はもどかしいものです。
この辺はそのうち調べてみましょうかね。いつも手動でやってたので、流石にめんどくさいと感じてきましたし。
Unityのバージョンアップで解消されていれば嬉しいです。
(Unity2018.4、Unity2019.2、Unity2019.4では「deprecated」が出ました)
まとめ
UnityでiOS向けにビルドしたXcodeのプロジェクトにおいて、ローカライズの項目で表示される「deprecated」はUnity側で言語名で指定されているためだと考えられます。
消す場合は単純に対象の行を消せばOKかと思いますが、Development Languageで指定されている言語(多くの場合English, deprecated)を消す場合は一度Development Languageを切り替える必要があります。
ただし、これらの設定はUnityビルドしてプロジェクトをエクスポートするたびに消えてしまうので、やるとしたらなるべく後半のフェーズが良いと思います。
ゲーム開発の攻略チャートを作りました!
-
前の記事
【Unity】ゲームは見た目が9割だけど試作品は別です【速さ命】 2020.06.01
-
次の記事
【iOS/Xcode】アプリ名をローカライズする時の設定【Unity】 2020.06.25
コメントを書く