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]