UE4(Unreal Engine)本地化资源功能
🗓️发布日期:2021-11-07 · 🗺️总字数: 992 字 · ⏱️阅读时间: 2 Minute编辑器及自动化工具设置
- 编辑器设置中确认是否开启本地化,如过未开启勾选 ☑️ 进行启用自动化本地化工具
窗口→本地化控制面板
中进行配置- ☑️
从文本收集
选框,增加搜索目录: Source
确认文件扩展名*.h/*.cpp/ *.ini
- ☑️
从包收集
选框, 增加包含路径通配符,增加路径Content/*
确认文件扩展名 : _.umap /_.uasset
*
- ☑️
自动化本地工具及预览操作
- 点击语系,添加新语言,然后选择
收集文本
进行筛选收集。 - 收集完毕后点击对应语言文本后边的
编辑
按钮进行翻译文本后,点击编译文本
按钮进行生成语言 - 预览语言包
- 设置编辑器的播放选项增加启动参数
-culture=<语言简称>
进行预览对应语言 - 在关卡蓝图启动事件中设置当前语系进行更改预览的语言。
- 设置编辑器的播放选项增加启动参数
在 C++中使用本地化语言包
参考网址 → 文本本地化
-
通过 以下方法来格式化设置文本字符串,文本字符串格式化动态文字是包含在花括号中,如:“您还剩 {CurrentHealth} 点生命值。” ,CurrentHealth 可以是字符串或数字
FText::Format
:一般文本格式化。- FText::FormatOrdered :基于可变索引的格式化。
- FText::FormatNamed:基于可变名称的格式化。
-
格式占位符还可以指定一个函数(称为"参数修饰符")在其参数数据上运行。它们被指定为一个管道,后面跟着函数名和参数。例如:
"Result `{ {Res} }"如果将Res设置为10,则会生成"Result{10}" "Result \\{Res}\\"如果将Res设置为10,则会生成"Result\10\"
-
在 C++中引入字符串表
- C++创建和填充字符串表使用以下宏定义
// 仅使用C++创建和填充字符串表 LOCTABLE_NEW("CodeStringTable","CodeStringTable"); LOCTABLE_SETSTRING("CodeStringTable","HelloWorld","Hello World!"); LOCTABLE_SETMETA("CodeStringTable","HelloWorld","Comment","This is a comment about hello world"); LOCTABLE_SETSTRING("CodeStringTable","GoodbyeWorld","Goodbye World!"); LOCTABLE_SETMETA("CodeStringTable","GoodbyeWorld","Comment","This is a comment about goodbye world");
- 使用"LOCTABLE"宏或静态“FText::FromStringTable”函数引用字符串表
- 在 INI 文件中,可以使用"LOCTABLE"宏语法引用字符串表。
- 从 CSV 文件创建并填充字符串表
CSV 文本格式实例
// 从CSV文件创建并填充字符串表 LOCTABLE_FROMFILE_GAME("CSVStringTable","CSVStringTable","StringTableCSV/TestStrings.csv");
Key,SourceString,Comment "HelloWorld","Hello World!","This is a comment about hello world" "GoodbyeWorld","Goodbye World!","This is a comment about goodbye world"
- 重定义字符串表
- 修改
INI文件
重定向整个字符串表指向另一个字符串表[Core.StringTable] +StringTableRedirects=(OldStringTable="Foo",NewStringTable="Bar")
- 将一个字符串表中的一个条目重定向到另一个字符串表中的一个条目
[Core.StringTable] +StringTableRedirects=(StringTable="Foo",OldKey="Bar",NewKey="Baz")
- 修改
资源本地化
- 本地化资源就是将资源替换成另外一种语言的资源,可直接在内容中选中资源 右键菜单:
资源本地化→新建本地化资源→选择预设的语言
- 在项目目录:
L10N→对应语言版本目录下→资源路径
替换本地化的资源就行。
- C++创建和填充字符串表使用以下宏定义