ひとりでのアプリ開発 - fineの備忘録 -

ひとりでアプリ開発をするなかで起こったことや学んだことを書き溜めていきます

Unity:UniLang - Unity 上で Google 翻訳を使う -

初めに

 Unity 上で Google 翻訳を使うためのパッケージである「UniLang」を紹介します。

ダウンロード・インポート

github.com

 上記リンク先からダウンロード、インポートできます。

インポートの仕方
  1. Code→Download ZIP をクリックし、ZIPファイルをダウンロード
  2. ZIPファイルを展開
  3. フォルダを Unity プロジェクトの Assets 内に入れる

UniLang について

 UniLang は Google Translation API を使用して言語間の翻訳をします。 Google サービスでサポートされているすべての言語は、UniLang でもサポートされています。

使い方

名前空間

 名前空間に下記のように UniLang を記入して使用します。

namespace UniLang{
      //この間に記入
}
クラス・関数

 次の3つのクラスがあります。

  • Translator
  • TranslatedTextPair
  • Language

 Translator 内には次の関数が定義されています。

(Translator 内の関数)

//翻訳前の言語(source language)と翻訳後の言語(target language)を指定する
Translator.Create(source language, target language)

//翻訳
Translator.Run(original string, translated string)

 TranslatedTextPair は Translator 内の関数 Translator.Run の返り値で使われます。自分で記述することはあまりないでしょう。

 Language には次の言語が書かれています。

public class Language {
        public const string Auto = "auto";
        public const string English = "en";
        public const string French = "fr";
        public const string German = "de";
        public const string Dutch = "nl";
        public const string Greek = "el";
        public const string Hebrew = "iw";
        public const string Hindi = "hi";
        public const string Indonesian = "id";
        public const string Italian = "it";
        public const string Japanese = "ja";
        public const string Korean = "ko";
        public const string Latin = "la";
        public const string Polish = "pl";
        public const string Portuguese = "pt";
        public const string Russian = "ru";
        public const string Spanish = "sv";
        public const string Urdu = "ur";
    }
使ってみた

 次のスクリプトをゲームオブジェクトに付けて、実行してみます。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

namespace UniLang {
    public class MyExample : MonoBehaviour {
	    void Start () {
            var myText = "むかしむかし浦島は助けた亀に連れられて、竜宮城へ行ったとさ";
            Translator translator = Translator.Create(Language.Auto, Language.English);
            translator.Run(myText, results => {
                foreach (var result in results)
                    Debug.Log(result.original + " => " + result.translated);
            });
	    }
    }
}

(実行結果)

最後に

 以前、多言語対応のためのパッケージである Localization についての記事を挙げましたが、Google 翻訳が Unity 上で使えるとローカライズに便利な場面もあると思います。Excel で読み込んだ日本語のテキストを Unity 上で翻訳し、取得、表示させるようなこともできるでしょう。

fineworks-fine.hatenablog.com