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);
}
代码中我加了过滤,如果已经翻译了的资源,不会再次翻译,需要重新翻译,需屏蔽过滤代码。
执行以上代码,即可实现自动化翻译所有资源。
网友评论