端末のシステム言語にゲーム内言語を設定する
みたいな感じで端末のシステム言語は簡単に取得できます。
// 端末のシステム言語を取得
var systemLanguage = Application.systemLanguage;
端末言語 != I2Localization初期言語
I2Localizationで中国語を設定する際、I2 Languagesのプレハブから言語を追加すると思うのですが、
中国語の初期設定がシステム言語と一致していないので注意。
となっており、
void Start()
{
// 端末のシステム言語を取得
var systemLanguage = Application.systemLanguage;
// システム言語に対応する文字列を用意
string language = systemLanguage.ToString();
// システム言語がI2ローカライズで使用可能か確認
if (LocalizationManager.HasLanguage(language))
{
// 現在のUIテキスト言語をシステム言語に設定
LocalizationManager.CurrentLanguage = language;
}
else
{
// ローカライズ不可なものは英語に設定
LocalizationManager.CurrentLanguage = "English";
}
}
とした際、
システム言語が仮に中国語(簡体)だった時
LocalizationManager.CurrentLanguage = language;
はlanguage == ChineseSimplified
なのですが、I2Localization的には
language == Chinese (Simplified)
でないといけないのでこのコードだと英語にローカライズされてしまう。
対応
I2Localizationのプレハブを変更する
LanguagesからChinese (Simplified)
になっている個所をChineseSimplified
にしたら終了
設定ボタンなどで言語を切り替えたい際も、
// このボタンが押されたら言語変更
simplifiedChineseButton.onClick.AddListener(() => LocalizationManager.CurrentLanguage = "ChineseSimplified");
I2Localizationに設定した文字列と同じものをLocalizationManager.CurrentLanguageに入れてやると、中国語対応できました。