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));
}
}
}
アセットのものに比べ、使い勝手は悪いとは思いますが…まぁ自分にはこれでいいかなと。 ^^;

