Unity での多言語対応 は大きく分けて以下のように対応しました。
- アプリ名
- アプリ内での文言
アプリ内で使用する画像については、自分のアプリでは特に用途が思いつかなかったので、考えないことにしました。(もしあるとすれば、ヘルプ画像ぐらい…かなと思います。)
[アプリ名]
まず、アプリ名についてググりました。
Android は Assets/Plugins/Android フォルダ以下に res を用意する、ということでした。
iOS については、どうしようかと試行錯誤しましたが、Unity から XCodeエクスポートする時に InfoPlist.strings ファイルを毎回作成する方法をとりました。
[アプリ内の文言]
次に、アプリ内での文言について検討しました。
Excel表でテーブル管理の方式は管理しやすそうだが、今のところ、文言は主にツイート文ぐらいなので、そこまでの規模は考えなくていいかな。 ^^;
…ということで、Android の string.xml の要領で xmlファイルで管理することにしました。
以下のサイトを参考にしました。
実際は以下のように実装しました。
- message.xml … (日本語と英語をxml形式で登録)
- XMLMessage.cs … (xmlファイルの読み込み)
- XMLMessageName.cs … (key名を定義)
XMLMessage.cs は適当なGameObject にアタッチします。
あとは、GameObjectにアタッチするスクリプトを用意し、インスペクタでXMLMessageをアタッチしたGameObjectをLanguageに設定します。
using System.Collections; using System.Collections.Generic; using UnityEngine; /** * XMLMessage 使用例 */ public class Hoge : MonoBehaviour { [SerializeField, Tooltip("多言語対応")] private XMLMessage language = null; void Start() { if (this.language != null) { var test = this.language.getString(XMLMessageName.app_name); Debug.Log(string.Format("test ... {0}", test)); } } }
アセットのものに比べ、使い勝手は悪いとは思いますが…まぁ自分にはこれでいいかなと。 ^^;