UE · 2023年7月3日 1

UE4插件的本地化/国际化工作

之前写了一个资源检查工具,其中对不合规资源的原因描述全是英文的,被吐槽对美术同学不够友好。因此在新版插件里对其做中文化支持,撰文简单描述下步骤:

  1. 打开UE4Editor》Window》Localization Dashboard
  2. 在Game Targets那里点击Add New Target添加一个新的翻译目标
  3. 点击NewTarget把名字修改成我们的PluginName
  4. 按需来填写收集文本:
    • Gather from Text Files 勾上,
      • SearchDirectoroes添加一个元素
      • 路径选择到插件的Source文件夹就好
    • Gather from Packages 因为我的插件不含本地化包资源,所以不勾。
    • Gather from Meta Data 如果要翻译变量名,分类,工具提示等就勾上。
      • Include Path Wildcards 和上面一样添加Source文件夹就好
      • Key Specifications 按需添加 具体可照抄 Engine Targets里面的示例,以Property Names为例:
        • Meta Data Key 填 DisplayName
        • Text Namespace 填 UObjectDisplayNames
        • Text Key Pattern 填 {FieldPath}
  5. 点击Add New Culture 添加一种支持的语言,这里我选择中文(默认语言是英文)。
  6. 点击下面的Gather Text 按钮 收集文本。
  7. 点击Actions下面的按钮Edit translations for this culture 翻译文本。
  8. 保存导出成po文件
  9. 点击Import translations for this culture 导入刚刚保存的po文件。
  10. 点击Compile Text编译成引擎可加载的资源。
  11. 找到Content/Localization/PluginName文件夹将其中构建好的翻译资源移动到Plugins/PluginName/Content/Localization/PluginName同层级这个位置
  12. 在Plugin的描述文件PluginName.uplugin中添加以下内容:
 "LocalizationTargets": [
		{
			"Name": "PluginName",
			"LoadingPolicy": "Always"
		}
	]

其中Name是之前创建的翻译资源,我们可以按实际情况填写。

LoadingPolicy是加载策略,按需填写,值可以是Always, Game, Editor等,纯运行时的模块翻译可以填Always或者Game,编辑器模块的翻译一般填Editor,避免运行时加载浪费内存。

到这里,所有的工作就基本完成了,下次美术同学再打开工具看到的提示就可以自动按照当前编辑器语言来显示了。