NGUIでの文字列ローカライズ
NGUIで文字列(Label)のローカライズをしようとネットで検索をかけた時に、最近のバージョンの情報がなかったので、使い方をメモしておきます。
NGUIの使用バージョンは3.8.2、Unityは5.0.2です。
ここでは、こんな感じのボタンを作成したいとします。
日本語の時はこれ。
英語の時はこれ。
①翻訳ファイルの作成
まずは、ローカライズしたい内容を記入したtxtかcsvのファイルを用意します。
一番上の行に、「KEY,言語1,言語2…」というように使用したい言語を記入しておきます。
その後は下の画像のように、KEY列に任意の文字、各言語の列に入力したい文字列を記入します。
文字コードはShift-JISなんかだと日本語が正常に表示されないみたいなので、UTF-8にしておくのが無難なようです。
僕はGoogleスプレッドシートで作成したものをcsvとしてDLして使いました。
DLしたファイルは、「Localization.csv」とリネームしておきます。
②翻訳ファイルのインポート
csvを用意できたら、NGUIのExamplesフォルダにある「Localization.txt」を削除するか、違う名前に変更します。試してはいないですが、複数の設定ファイルがあるのも良くない気がしますので。
その後、先ほど用意したcsvを任意の場所に追加します。「Localization.txt」があったのと同じ場所でも別に問題はありません。
③翻訳ファイルの実装
ここまで来たら、ほぼ終わったも同然です。
NGUIでUI Labelを適当に作成し、「Add Component」から「Localize」を適用します。
適用された「UI Localize」の「Key」欄に、csvで入力したKEYの文字を入れると、Preview欄に設定した情報が表示されます。
Preview欄の言語設定の右のボックス(上の画像の「Close」や「閉じる」がある場所)をクリックすると、Scene、Gameウィンドウで表示が変わります。
あとは、ゲームの起動時にシステム言語設定を取得し、任意のローカライズ言語に処理を振り分ければ完了です。下記ではシステムが日本語なら日本語、それ以外なら英語に振り分けています。
void Start () {
if (Application.systemLanguage == SystemLanguage.Japanese) {
Localization.language = JP;
}else{
Localization.language = EN;
}
}
手順さえ覚えれば、わりと簡単に実装出来ます。