コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】【I2 Localization】Language Source に登録したすべてのタームを一括で自動翻訳するエディタ拡張

アセット

はじめに

f:id:baba_s:20180817094345p:plain

「I2 Localization」を使用して多言語のローカライズ対応を行う場合、

f:id:baba_s:20180817094356p:plain

「Terms」タブでタームを選択して、「Translate All」ボタンを押すと

f:id:baba_s:20180817094513p:plain

各言語に合わせてテキストを自動で翻訳してくれるので、
仮で文言を設定することができて、とても便利なのですが、
ひとつひとつのタームを選択して「Translate All」ボタンを押す必要があり、少し大変です

なので、すべてのタームを一括で自動翻訳する機能を作成しました

ソースコード

using UnityEditor;

namespace I2.Loc
{
    public partial class LocalizationEditor
    {
        [MenuItem( "Tools/I2 Localization/Translate All" )]
        private static void TranslateAll()
        {
            var path = "Assets/Resources/I2Languages.prefab";
            var source = AssetDatabase.LoadAssetAtPath<LanguageSource>( path );

            if ( source == null ) return;

            foreach ( var term in source.mTerms )
            {
                TranslateLanguage( term.Term, term, null, source );
            }
        }
    }
}

上記のスクリプトを Unity の「Editor」フォルダに追加して、

f:id:baba_s:20180817094851p:plain

「Tools>I2 Localization>Translate All」を選択することで、
「Language Source」に登録したすべてのタームを一括で自動翻訳できます