UE5本地化

前言

本地化一般指的是文本的本地化, UE5的本地化工具保持了UE4的风格, 当然, 文档也一如既往的渣渣, 本文对本地化进行一点的记录

使用

image-20230912141059296

上图为UE5的入口,

image-20230912141355688

打开以后的界面如下, 我们主要关注红色框框部分

代码文件

image-20230912141902700

GatherFromTextFile针对的是代码中的FText数据, 一般路径是项目的source目录和插件的source中

一般可以用宏NSLOCTEXT或者LOCTEXT, 比如

image-20230912141620470

包括函数中输入参数也会被收集到

image-20230912141819416

资源文件

image-20230912141953102

这一部分针对的就是所有的蓝图资源文件, 包含了所有蓝图中的FText数据结构, 常见的是UMG中所有的TextBlock等空间, 蓝图中的成员变量, DataTable中的FText字段等等

收集

接下来就是收集所有需要本地化的数据, 在收集之前先添加所有需要翻译的语种,

确认我们的编辑器当前语言,为然后点击Gather Text/ 收集文本

image-20230912142459657

然后执行计算字数, 等待一段时间以后, 就会出现当前语言的字数, 如上图我们的中文字数就有4150个

翻译

由于开发过程中的不确定性, 以及多员工开发的个人习惯问题, 也许我们开发的时候填写的FText变量值是中英文混杂的, 那么这里我们先要处理当前语种的翻译文件

所以非常建议, 开发之初大家就统一规范, 统一用中文或者英文, 这样后期可以减少很多翻译时间成本

打开中文翻译

image-20230912142657204

我们会看到有中英文混杂的情况

image-20230912142735052

首先先把所有非中文的都处理成中文

翻译过程可以在编辑器内直接点击输入, 也可以导出成*.po文件到外面翻译, 但是吧…似乎不能用excel打开, 用其他文本工具打开的话界面清晰度不如在编辑器内

image-20230912142951327

这个就仁者见仁了, 如果处理的是po文件, 那么外面翻译完了按单个语种导入回来即可

image-20230912143102159

翻译完了主语言后, 点击再点击生成字数+翻译文件;

然后所有其他语种的翻译文件内对应的源都会成为主语言的显示

如果其他语言没有未翻译信息, 那么再点击一次收集文本就有了

接下来就是漫长的多语种翻译过程

切换语言

切换语言可以直接调用接口

1
bool UKismetInternationalizationLibrary::SetCurrentCulture(const FString& Culture, const bool SaveToConfig)

当然为了方便, 可以自己封装一个接口, 用枚举来选择还是更方便一点

image-20230912151854392

游戏内测试切换语言需要使用standalone模式, 或者打包出来测试,否则结果不一定正确