美文网首页
Unity 使用I2工具完成自动化翻译

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

作者: Razy西南 | 来源:发表于2021-12-07 15:30 被阅读0次
    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);
            }
    

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

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

    相关文章

      网友评论

          本文标题:Unity 使用I2工具完成自动化翻译

          本文链接:https://www.haomeiwen.com/subject/cwtaxrtx.html