【iOS/Xcode】ローカライズのdeprecatedが気になるので消す方法を【Unity】

【iOS/Xcode】ローカライズのdeprecatedが気になるので消す方法を【Unity】

UnityでiOS向けにXcodeのプロジェクトをビルドすると、デフォルトでいくつかのローカライズが選択されています。

去年(2019年)あたりは出ていなかった気もしますが、最近では使っているUnityのバージョンによっては言語名の後ろに「deprecated」がついています。

例えばUnity2018.4.23.f1でビルドしたプロジェクトをXcode11.5で開くと以下のように表示されます。

Deprecatedの表示が
Deprecatedの表示が

 

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)」だけではローカライズされないという報告がいくつか見られたためです。

+をクリックしたメニュー
+をクリックしたメニュー

 

otherから選択
otherから選択

 

他の「deprecated」も消してすっきり……! といきたいところですが、Development Languageとして指定されている「English」を選択しても、[-] をクリックできないんですよねぇ……。

消せない行がいる……
消せない行がいる……

 

Development Languageの切り替えはプロジェクトファイルから

という訳で言語コードで指定した「English」をDevelopment Languageとして指定します。切り替えは上の方で開いたプロジェクトファイルを書き換えるのが良いかと思います。念のためバックアップを作成しておくとなおよろし。

この切り替え方法は以下のサイトを参考にさせていただきました。

 

一度Xcodeのプロジェクトを閉じ、『「deprecated」になる原因』の章で解説した手順でプロジェクトファイルを開きます。

developmentRegionの項目は言語名の「English」で指定されています。

 

これを言語コードの「en」に書き換えます。

 

プロジェクトファイルを保存後、再度プロジェクトを開いてみると以下のようにDevelopment Languageが切り替わっています。

Development Languageが切り替わった
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ビルドしてプロジェクトをエクスポートするたびに消えてしまうので、やるとしたらなるべく後半のフェーズが良いと思います。

 

     

ゲーム開発の攻略チャートを作りました!

CTA-IMAGE

「ゲームを作ってみたいけど、何から手を付けていいか分からない!」


そんなお悩みをお持ちの方向けに、todoがアプリをリリースした経験を中心に、ゲーム作りの手順や考慮すべき点をまとめたe-bookを作成しました。ゲーム作りはそれ自体がゲームのように楽しいプロセスなので、「攻略チャート」と名付けています。


ゲームを作り始めた時にぶつかる壁である「何をしたら良いのか分からない」という悩みを吹き飛ばしましょう!