Unity 使用I2工具完成自动化翻译

12E38C99-D838-41D5-BB7F-3307F328949B.jpeg

1,首先在网上下载I2 Language 工具,获取全套源码

2,进入LocalizationEditor

找到UpdateTermsToShownInList方法,此方法会在加载资源时候触发一次,翻译当前资源文件

        static void UpdateTermsToShownInList()
        {
            EditorApplication.update -= UpdateTermsToShownInList;
            mUpdateShowTermIsScheduled = false;

            mShowableTerms.Clear();
            mSelectedCategories.Sort();
            foreach (KeyValuePair<string, ParsedTerm> kvp in mParsedTerms)
            {
                var parsedTerm = kvp.Value;
                if (ShouldShowTerm(parsedTerm.Term, parsedTerm.Category, parsedTerm.Usage, parsedTerm))
                    mShowableTerms.Add(parsedTerm);
            }

            GUITools.RepaintInspectors();
            GUITools.ScheduleRepaintInspectors();
            
            // if (GameManager.Instance == null) return;
            //Timer.Schedule(GameManager.Instance, 3, () =>
            //{
            //    Translate();
            //});
        }

下面需要写自动翻译代码:

        static void Translate()
        {
            Debug.Log("LinneaTerms 准备总数目 = " + mParsedTerms.Count);
            var data = new List<TermData>();
            foreach (var kvp in mParsedTerms)
            {
                var parsedTerm = kvp.Value;
                if (parsedTerm.termData == null || mLanguageSource == null) continue;
                var isHaveKong = false;
                //排除已翻译完成的资源
                for (var i = 0; i < mLanguageSource.mLanguages.Count; ++i)
                {
                    if (mLanguageSource.mLanguages[i].IsEnabled() && string.IsNullOrEmpty(parsedTerm.termData.Languages[i]))
                    {
                        isHaveKong = true;
                        break;
                    }
                }
                if (isHaveKong)
                {
                    data.Add(parsedTerm.termData);
                }
            }
            Debug.Log("LinneaTerms 自动翻译开始 总数目 " + data.Count);
            doTranslate(0, data);
        }

代码中我加了过滤,如果已经翻译了的资源,不会再次翻译,需要重新翻译,需屏蔽过滤代码。

执行以上代码,即可实现自动化翻译所有资源。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容