UE 国际化实战操作

项目基于UE4.27.2版本Unlua开发,展示下基于国际化的一些操作和遇到的一些问题

一、基础操作

基本概念和操作大部分都来自官方文档,写的确实蛮详细,开发前建议先看看官方说明

本地化 | 虚幻引擎文档 (unrealengine.com)

文字提取、测试、应用到游戏具体可以参考这个博客,也比较详细,基本可以熟悉大部分流程

UE4 自带多语言切换---国际化和本地化语言的转化_Yuulily的博客-CSDN博客_ue4 csv 国际化

需要注意的是,测试语言切换一定要 先ComplieText,然后用独立进程窗口运行游戏

编辑切换为居中

添加图片注释,不超过 140 字(可选)

二、Lua或项目配置(比如csv文件,或者其他lua配置等)中的中文

UMG、C++中的中文都比较好处理直接用UE自带的工具提取即可

对于lua中的中文需要我们自己提取出来,导出成UE可以识别的文件,就可以利用Localization Dashboard相关的功能

保存成带有UE的FText的资产可以,不过我们可以用更基础的UStringTable来处理

UStringTable包含一个FStringTable可以以Key、Value的形式保存字符串

编辑切换为居中

添加图片注释,不超过 140 字(可选)

这样就可以导出让Localization Dashboard识别到的资源

FString packageName = TEXT("/Game/Editor/ExportLuaCN");
UPackage package = CreatePackage(*packageName);
package->FullyLoad(0);
UStringTable CNStringTable = NewObject<UStringTable>(package,TEXT("ExportLuaCN"),RF_Public|RF_Standalone);
FAssetRegistryModule::AssetCreated(package);
//添加相应的key、value
CNStringTable->GetMutableStringTable()->SetSourceString("your key","your value");
UEditorAssetLibrary::SaveLoadedAsset(CNStringTable,true);

UStringTable也可在运行时使用,不过要注意先把资产加载进内存,当然也可以直接给UMG使用

编辑切换为居中

添加图片注释,不超过 140 字(可选)

切换语言后显示内容就是StringTable Key对应的翻译后的内容

三、将UE翻译内容导出为Lua或项目配置

可以运行时使用FText:: FindText动态获取

可能需要导出一份翻译表给服务器用。

开始我的想法也是使用FText:: FindText获取到翻译内容导出到服务器,但是这个方法基于当前Culture,每次切换消耗比较大,而且在编辑器下是不会生效的。

这里看源码了解到,可以参考FTranslationDataManager::Initialize()内的实现,拿到具体的UTranslationUnit来导出我们想要的翻译表

如果想更彻底些,在"编译文本"后导出我们的内容,可以在引擎翻译工具处加上我们自己想要的回调来触发

引擎翻译工具执行接口都在这里:

编辑切换为居中

添加图片注释,不超过 140 字(可选)

四、手机包无法加载当前使用文化的资产

首先确定L10N目录下,放好了同名目录的资源,独立进程游戏测试没问题

确保文化资产已经打到包内:

可以用这个工具看到包内的内容 UnrealPakViewer可视化Pak分析工具 - 知乎 (zhihu.com)

编辑切换为居中

添加图片注释,不超过 140 字(可选)

这个地方去掉UE_EDITOR宏,重编引擎后生效,我用的是4.27.2版本,估计UE5已经改了实现方式,不确定还有没有打包后无法加载的问题,看了UE5的代码确实改动挺多的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值