欢迎光临散文网 会员登陆 & 注册

【Unity】关于编辑器本地化的一些学习记录

2021-05-03 14:23 作者:YouSing  | 我要投稿

前言

    本地化(Localization)就是把源语言翻译成用户语言,Unity已经做了编辑器的本地化方案。只考虑在国内范围的话,也就是常说汉化。虽说已经过了新手村,但是看到Timeline已经有日语的本地化,还是觉得挺有意思。如果你考虑做Unity插件,做个本地化还是有必要的。

相关API

相关文档少得可怜
较早版本的本地化GUI函数
除了核心函数,后面也把GUI函数整进来了

学习记录

    其实除了需要最新版本外,我觉得麻烦的是还不够简单粗暴,和只能在编辑器里面使用。所以我基于这套方案思路,简单做了一个尝试。

PortableObject

    作为本地化的翻译文件,具体格式说明请自行网络搜索,这类文件应该有工具自动生成和编辑器翻译。由于Unity已经把*.po当成编辑器资源,所以没法重写*.po的Importer。这边我用*.upo代替,文件格式都是一样的。

自己写的*.po编辑器
默认导入为json格式的TextAsset


    这样一来,Unity运行时想用*.po文件的话,可以使用Importer自动生成的TextAsset,用Newtonsoft.Json反序列化成Dictionary<string,string>就行。或者使用我封装的PortableObject类,先Open(string path),然后再CopyTo(Dictionary<string,string> other)。

切换本地化

    由于只是试验性质,我这边魔改了一下Timeline包,抛弃原本Unity本地化,转而切入我自己改的本地化方案。反正使用的po文件都一样,翻译效果也一样。

打开本地化设置,自己输入Locale即可切换

自己来本地化

编辑器界面

    如果你想做本地化,采用逐句翻译的话,你可以文本方式打开编辑,或者用专业的po编辑软件,或者用我这边做的简易编辑器。我这边由于个人习惯,编辑完词条后不会自动保存,需要手动按下Save按钮。

    想批量机翻的话,你可以使用Save Id或Save Str导出json,用谷歌翻译等的API翻译完后,再用Load Str导入。(注:原本想是整合Google翻译的功能,不过由于一些技术原因,常翻译不成功,所以阉割掉了)

本地化对比

英文
日文
中文(无良机翻)

后记

    其实Unity编辑器本地化到现在,也没有什么技术难点。官方已经有一个简单可用的雏形了,最重要的是翻译质量。当然个人没什么号召力,不可能成立汉化组,去汉化各种官方还没汉化的Package。写这篇文章的目的,只是给那些做开源库或AssetStore插件的作者,一个简单本地化的参考,多用L10n.Tr()即可,本地化靠第三方提供po文件就完事了。

【Unity】关于编辑器本地化的一些学习记录的评论 (共 条)

分享到微博请遵守国家法律