Ilingis 发表于 2021-12-7 15:49

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.IsEnabled() && string.IsNullOrEmpty(parsedTerm.termData.Languages))                  {                        isHaveKong = true;                        break;                  }                }                if (isHaveKong)                {                  data.Add(parsedTerm.termData);                }            }            Debug.Log("LinneaTerms 自动翻译开始 总数目 " + data.Count);            doTranslate(0, data);      }
代码中我加了过滤,如果已经翻译了的资源,不会再次翻译,需要重新翻译,需屏蔽过滤代码。

执行以上代码,即可实现自动化翻译所有资源。
页: [1]
查看完整版本: Unity 使用I2工具完成自动化翻译