TapTapTap!!!(47)~多言語化対応を行う2~
TapTapTap!!!(46)~多言語化対応を行う~では海外のユーザにも使用できるよう多言語化対応を行ったが、多言語化を行うにあたって上手くいかない点が出てきた。今回はうまく行かなかった点について修正を行う。
1.現状把握
前回の対応で以下のような画面となり、言語ファイルをうまく読み込めていないことがわかった。現象としてはファイルの読み込みが行えず、すべてのテキストが “Localized text not found”となってしまっている。今回はこれに対する修正を行う。
2.修正方法
修正方法については以下のサイトが参考となった。今回、多言語化を行うにあたって「StreamingAssets」フォルダを用いて行ったが、この中にあるデータは直接操作を行うことができないとのことだ。操作するためには「WWW」クラスを用いてアクセスしなければならないとのことなので「WWW」クラスを用いるよう修正を行う。
3.修正内容
修正したスクリプトは以下の通り。前回作成した「LocalizationManager 」クラス内で json ファイルを参照していた部分に「WWW」クラスの処理を加えている。これによって、言語ファイルが正しく読み込めるようになるはずだ。
[cce_csharp]/// <summary> /// 言語ファイルの読込 /// </summary> /// <param name="fileName">言語ファイル名</param> public void LoadLocalizedText(string fileName) { MyLogger.GetInstance().StartLog(this.GetType().Name, MethodBase.GetCurrentMethod().Name); localizedText = new Dictionary<string, string>(); string filePath = Path.Combine(Application.streamingAssetsPath, fileName); WWW www = new WWW(filePath); MyLogger.GetInstance().DebugLog(this.GetType().Name, MethodBase.GetCurrentMethod().Name, "load file Path : " + filePath); if (www.text != null) { string dataAsJson = www.text; LocalizationData loadedData = JsonUtility.FromJson<LocalizationData>(dataAsJson); for (int i = 0; i < loadedData.items.Length; i++) { localizedText.Add(loadedData.items[i].key, loadedData.items[i].value); } MyLogger.GetInstance().DebugLog(this.GetType().Name, MethodBase.GetCurrentMethod().Name, "Data loaded, dictionary contains: " + localizedText.Count + " entries"); } else { MyLogger.GetInstance().WorningLog(this.GetType().Name, MethodBase.GetCurrentMethod().Name, "Data loaded, dictionary contains: " + localizedText.Count + " entries"); } isReady = true; MyLogger.GetInstance().EndLog(this.GetType().Name, MethodBase.GetCurrentMethod().Name); }[/cce_csharp]
4.Google Play コンソールにアップロードし動作確認を行う
Google Play コンソール上では問題なく動作していることが確認できたので、後はじっきで問題なく動作が行われるか確認を行う。相も変わらずテスターさんを募集しておりますので、テスターをご希望いただける方はお問い合わせまたは以下のフォームからご連絡ください。