UE4+Locailzation本地化

这篇具有很好参考价值的文章主要介绍了UE4+Locailzation本地化。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

更多内容请查看我的个人网站
nocodeworld 的小地盘

UE4本地化

前言

环境

UE4版本 4.27.2

关于文化(cultures)

文化名称(IETF语言标记)由三个连字符分隔的部分组成

  1. 两个字母的ISO 639-1语言代码(例如“zh”)。
  2. 可选的四字母ISO 15924字符集代码(例如“Hans”)。
  3. 可选的双字母ISO 3166-1国家和地区代码(例如“CN”)。

当UE4查找特定文化的本地化数据时,它会将它们从最大特定到最不特定。例如:

zh-Hans-CN被处理为“zh-Hans-CN”,然后是“zh-CN”,然后是“zh-Hans”,然后是“zh”。

en-GB被处理为“en-GB”,然后是“en”。

为了实现特定文化的最广泛覆盖,请使用有效的最不具体的文化代码。使用“zh-Hans”进行简化本地化,使用“zh-Hant”进行传统本地化。

工具说明

默认创建工程并不会有本地化目标。本地化流程工具有两种调用方法

  1. 本地化控制板界面 Localization Dashboard
  2. 使用 Unreal Automation Tool (UAT)的Localize脚本。具体使用请看Localization Tools

Localization Dashboard

ue4 locres,UE4,ue4,虚幻,虚幻引擎,虚幻4

如果没有此选项,请按下图中打开

ue4 locres,UE4,ue4,虚幻,虚幻引擎,虚幻4

ue4 locres,UE4,ue4,虚幻,虚幻引擎,虚幻4

主界面分部分详解

ue4 locres,UE4,ue4,虚幻,虚幻引擎,虚幻4

  1. 本地化游戏目标,默认会创建一个,如果要创建新的本地化目标,请确保为其指定适当的加载策略(图上为2,通常为game或者always)。如果不这样做,则本地化目标不会在运行时加载。
  2. 本地化加载策略,纯运行的模块一般要设置为game或者always,默认为Never,是永不加载的,编辑器模块的一般选Editor,避免运行时加载浪费内存
  3. 选择要过滤的属性
  4. 文本文件,代码相关,如有不是c++项目,这里这不勾,不然可能会报错,中间内容包括添加搜索文本的目录,排除的目录
  5. 从包收集文本,蓝图等UE二进制资源,一样配置搜索目录和排除目录即可
  6. 从元数据收集文本,如果要翻译变量名,分类,工具提示等就勾上

ue4 locres,UE4,ue4,虚幻,虚幻引擎,虚幻4

  1. 所有语言进行的操作,具体的每个操作说明会后面在文本本地化 中说明,资源本地化无需用到
  2. 已添加需要翻译的地区语言,后面是每个语言单独可操作的Action
  3. 点击添加一种新的语言

本地化目标分布

前面工具说明1提到的目标添加,每个目标都会在本地生成一些配置和数据,本地化的大致原理如下:

本地化流程是基于本地化目标来进行工作的,要实现本地化,必须要有本地化目标并且加载本地化目标。本地化目标指的是经过命名的独立的本地化数据模块。目标中的文本是从一组特定来源中收集,存储在 Manifest 文件内,在针对特定语言文化 (Culture) 的存档文件(Archives)中翻译,编译成针对特定语言的本地化资源文件(LocRes),然后由系统加载以供显示。

目标创建的注意和使用

一个项目可以只有一个目标以便简化实施,也可以有多个目标以便将项目的本地化数据分成各个独立部分。Unreal 编辑器就有一个独立于虚幻引擎其他部分的目标,因此可以在对编辑器进行本地化的同时,避免将编辑器的本地化数据随游戏一起分发。通常来讲,游戏会用一个目标用于游戏本体的本地化数据,并使用额外的目标来实现游戏的扩展包内容

本地化目标由两部分组成:其配置(存储在Config/Localization/)及其数据(存储在Content/Localization/{TargetName}/)

ue4 locres,UE4,ue4,虚幻,虚幻引擎,虚幻4

ue4 locres,UE4,ue4,虚幻,虚幻引擎,虚幻4

资源本地化操作

前面有大概说明了本地化工具的使用,其实这个工具主要是针对文本本地化的操作,但是资源本地化跟这个工具生成的配置有依赖,所以需要说明一下,如果只是资源本地化的话,只需要添加要本地化的语言,然后选择下图Compile Text,会对所有语言编译二进制文件

ue4 locres,UE4,ue4,虚幻,虚幻引擎,虚幻4

这一步是为了生成各个语言的数据,也就是在Content/Localization/{CultureName}/文件夹, 需要保证每个语言文件夹不为空,最好是.Locres文件存在,上面Compile按理就会生成,然后开始分配每个资源的本地化

ue4 locres,UE4,ue4,虚幻,虚幻引擎,虚幻4

右键需要本地化的资源,然后如图分配语言

然后会生成一份副本在指定目录,您只需要替换这个资源,然后保证名字与原资源一致,生成目录会在/Game/L10N/{Culture}/{MyFolder}/{MyAsset}

如果要查看本地化资产

ue4 locres,UE4,ue4,虚幻,虚幻引擎,虚幻4

资产组

有时候需要某些资源使用其他语言,比如声音使用英文,文字使用中文等,这个时候可以把一些资产组成一个组,然后分配单独的文化

创建资产组

下面我们以音频资产作为示例:

要创建资产组,请在DefaultGame.ini类型的配置文件中设置如下内容

[Internationalization.AssetGroupClasses]
+Audio=SoundWave
+Audio=SoundCue

这里添加了SoundWave和SoundCue两种类型的资源,这个资产组的名字叫Audio

设置资产组的方式在后面设置文化语言 说明

独立窗口测试

在编辑器中可测试本地化效果,只能通过独立窗口模式测试

ue4 locres,UE4,ue4,虚幻,虚幻引擎,虚幻4

修改编辑器偏好设置,在独立窗口情况下增加启动参数 -culture=en

-culture=后边跟着的参数名字其实就是你添加的语言的简写,把鼠标放在本地化功能列表中语言名字上,tips框中会显示对应名字

ue4 locres,UE4,ue4,虚幻,虚幻引擎,虚幻4

ue4 locres,UE4,ue4,虚幻,虚幻引擎,虚幻4

文本本地化

概念说明

文本本地化的主要组件就是FText类,本地化文本由命名空间,键名,源字符串,和显示字符串组成,通过命名空间和键名能为文本定义唯一的索引

命名空间:通常表示用来当前所在的游戏模块,比如某一个页面 通过使用不同的命名空间,可以帮助在不同上下文的环境下同样的文本单来表达不同的意思

**键名:**提供了与文本有关的特定上下文

**源字符串:**是尚未翻译原文形式的字符串,通常是作为翻译的验证

**显示字符串:**是将要呈现的字符串形式,通常是根据源字符串翻译而来

ue4 locres,UE4,ue4,虚幻,虚幻引擎,虚幻4

创建可本地化的文本

C++中创建:使用LOCTEXT系列宏在C ++中创建文本文字

|
| 宏

NSLOCTEXT
LOCTEXT

简单来说使用NSLOCTEXT 可直接单独定义命名空间,LOCTEXT需要在前面加上宏定义,然后中间的文本都是用宏定义的命名空间,无需每次指定

在INI文件中创建:

可以使用NSLOCTEXT宏语法在INI文件中创建文本文字

UE资产中(蓝图等):

可以使用FText属性创建文本文字。将自动为您生成密钥,但您可以使用文本字段旁边的高级组合为文本定义自定义命名空间或密钥。使用默认命名空间或密钥也很好

配置文本本地化工具

前面工具说明 中有说明过,只需要配置Gather from Text Files和Gather from Package的搜索路径即可,可搭配排除路径去搜索到需要翻译的文本

翻译文本流程

上述配置完以后,主要操作都在Cultures中

ue4 locres,UE4,ue4,虚幻,虚幻引擎,虚幻4

  1. 先添加你需要翻译的语言地区和你本地文本默认的语言地区,然后

ue4 locres,UE4,ue4,虚幻,虚幻引擎,虚幻4

点击对应语言前面的小点设置本地使用的语言,这个Native 设置完以后收集完文本后会默认翻译

  1. 然后点击 Gather Text,收集本地需要翻译的文本,成功后

ue4 locres,UE4,ue4,虚幻,虚幻引擎,虚幻4

点击OK,如果有文本的话,下面文化列表会显示成

ue4 locres,UE4,ue4,虚幻,虚幻引擎,虚幻4

我默认语言是中文,后面的橙色进度条代表翻译的完成度,所以默认语言已显示完成10%

  1. 开始翻译文本, 这里有两种方式,一种是直接在UE工具中翻译,一种是导出使用第三方工具翻译
  2. UE工具翻译: 点击 每个文化语言后面

ue4 locres,UE4,ue4,虚幻,虚幻引擎,虚幻4

ue4 locres,UE4,ue4,虚幻,虚幻引擎,虚幻4

Untranslated显示未翻译的列表

NeedsReview需要重新确认,审查的文本列表

Completed已翻译的文件列表

ue4 locres,UE4,ue4,虚幻,虚幻引擎,虚幻4

在Translation 中写入翻译后的文本即可,然后点击保存

自行导出翻译

ue4 locres,UE4,ue4,虚幻,虚幻引擎,虚幻4

ue4 locres,UE4,ue4,虚幻,虚幻引擎,虚幻4

第一项是导出当前全部地区,第二项是导出指定地区的文本,选择路径导出后会生成.po格式文件,是包含要翻译的每种文化文本以及当前翻译的文件,是一种通用格式,可直接手动编辑

ue4 locres,UE4,ue4,虚幻,虚幻引擎,虚幻4

但是不建议这么干,这里建议使用 Poedit 翻译工具去进行编辑,里面功能很齐全,包括自动翻译,翻译提示,多人协同等

ue4 locres,UE4,ue4,虚幻,虚幻引擎,虚幻4

编辑完保存后,直接导入即可,按照你导出的方式,再导入即可

ue4 locres,UE4,ue4,虚幻,虚幻引擎,虚幻4

ue4 locres,UE4,ue4,虚幻,虚幻引擎,虚幻4

  1. 统计翻译文本

ue4 locres,UE4,ue4,虚幻,虚幻引擎,虚幻4

  1. 编译翻译文本

ue4 locres,UE4,ue4,虚幻,虚幻引擎,虚幻4

编译成功后会在Content{Target}{Culture}中.locres格式文件,代表翻译文本成功,游戏运行时本地化才会生效

TIPS: 可能会遇到不想使用PO格式文件编辑的情况,比如想用Excel之类的,这里推荐把po文件转换成excel/csv格式的文件就行了,网上有一堆Python转换的代码之类的,比如 poxls · PyPI,我们是自己写的python脚本,需要的可以下面留言讨论交流

本地化打包相关设置

翻译完了以后除了可以在引擎中直接测试独立窗口测试,当然也要把我们翻译过的文本打包到平台包里,下面会介绍打包相关设置,不设置文本本地化是不会生效的,还有重要的一步就是在游戏中设置我们翻译的文化设置文化语言

在localization to package中把需要打包进去的语言勾选上,Internationalization Support选择EFIGSCJK(多语言集合),

ue4 locres,UE4,ue4,虚幻,虚幻引擎,虚幻4

OK,至此本地化文本的部分全部结束,Enjoy it

设置文化语言

在运行时管理活动的文化

在运行时管理活动的文化

对文化的管理有三种情况:

1.language: language控制使用的本地化数据,包括文本翻译和一般的本地化资产。、

2.locale: 区域设置是用来控制数字/日期/时间/等的格式化。

3.Asset group culture: 这个控制特定资产组中的资产所使用的文化。

你可以通过SetCurrentCulture一次性将所有这些都设置成一种文化。但如果你需要使用单独的资产组,比如使用另一种文化的音频。那么你单独设置,且 在这个之后,不然会被覆盖

获取当前文化信息:

| GetCurrentLanguage
| 获取language当前使用的文化的IETF语言标记

GetCurrentLocale
获取locale当前使用的文化的IETF语言标记
GetCurrentAssetGroupCulture
获取指定资产组当前使用的文化的IETF语言标记
GetDefautCulture
获取系统指定的文化的IETF语言标记
GetNativeCulture
获取“本地”文化的IETF语言标记
GetLocalizedCultures
获取可用的文化。指在项目中添加的所有文化的IETF语言标记
GetSuitableCulture
从可用文化列表中获取最合适的文化的IETF语言标记。
GetCultureDisplayName
从IETF语言标记中获取文化的显示名称。比如zh在中文中显示为中文,在英文中显示chinese

设置正在使用的文化

| SetCurrentCulture
| 使用IETF语言标记将language,locale,和所有资产组都设置成指定文化

SetCurrentLanguage
使用IETF语言标记设置language为指定文化
SetCurrentLocale
使用IETF语言标记设置locale为指定文化
SetCurrentLanguageAndLocale
使用IETF语言标记设置language和locale为指定文化
SetCurrentAssetGroupCulture
使用IETF语言标记设置特定的资产组为指定文化
ClearCurrentAssetGroupCulture
清空指定资产组的文化,并使用当前language使用的文化

上面设置API可在c++和蓝图中调用,位置KismetInternationlizationLibrary.h中声明,这些API主要用于动态改变现有文化,上述Set语言的API有一个SavetoConfig参数,如果你需要更改后下次运行依然生效,可把这个设置为ture

如果你在运行时改变文化,本地化文本将重新加载,但本地化资产并不会在重新加载!!。已经加载过的资源将继续使用原有文化的本地化资源,还未加载的资源在加载时,将使用新的文化的本地化资源。 如果您计划在运行时支持动态文化更改,则可能需要重新启动游戏才能使这些更改生效。重新启动游戏会清除并重新加载本地化的资产

如果不需要动态修改,只是单独发布指定地区的版本包,可在ini配置中默认配置

项目的默认设置通常在DefaultGame.ini中定义,也可以在DefaultGameUserSetting.ini中定义,且DefaultGameUserSetting中的优先级更高

示例:全部设置成中文

[Internationalization]
culture=zh

语言,地区,资产组分别设置

[Internationalization]
language=zh
locale=zh
[Internationalization.AssetGroupCultures]
+Audio=ja

IOS平台本地化

设置iOS 本地化

本地化iOS项目中的”plist”和”NSLocalizedString” | 虚幻引擎文档 (unrealengine.com)

iOS 本地化配置只有在Mac机上打的iOS 15包才会生效,远程打包不会生效

其他本地化

字体,对话等,用到时再补充

总结:上面基本包含了文本和图片等的本地化全部流程处理,其他资源本地化我们暂时没用到,后面再补充,但是原理基本一样,文章写的仓促,可能有纰漏的地方,有问题可在下面留言讨论,End~文章来源地址https://www.toymoban.com/news/detail-831372.html

到了这里,关于UE4+Locailzation本地化的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【虚幻引擎】UE4/UE5 材质

      基础颜色(BaseColor) :材质本身的颜色,例如绿色蓝色等 金属度(Metallic) :金属度,材质是否含有金属光泽 粗糙度(Roughness) :粗糙或者平滑度,物体表面的粗糙程度 自发光(EmissiveColor) :物体本身是否发光 透明度(Opactity) :物体表面是否透明,适用于 半透明(Translucent)、

    2024年02月02日
    浏览(82)
  • 【虚幻引擎】UE4/UE5插件

    Blank:空白插件,可以从头开始自己定义想要的插件风格和内容,用此模板创建的插件不会有注册或者菜单输入。 BlueprintLibrary:创建一个含有蓝图函数库的插件,此模板函数都是静态全局函数,可以在蓝图中直接调用。 ContentOnly:创建一个只包含内容的空白文件 Editor Toolba

    2024年02月05日
    浏览(75)
  • UE4 UE5 一直面向屏幕

                        一直面相屏幕,方法很简单 新建一个蓝图,如下添加组件: 蓝图如下: Rotation Actor :需要跟随镜头旋转的物体 Update:一个timeline(替代event tick 只是为了循环) Timeline: 蓝图直接可以复制:网址

    2024年02月04日
    浏览(60)
  • 【虚幻引擎UE】UE4/UE5 新人科普向

    Unreal Engine是当前最为流行的游戏引擎之一,具有丰富的游戏开发功能和强大的游戏引擎渲染能力。 UE5官方文档:UE5官方文档非常详细,介绍了UE5的各个功能和应用,适合入门学习和深入探究。链接:https://docs.unrealengine.com/5.1/zh-CN/ UE5中文社区:该社区聚集了大量的UE5开发者,

    2024年02月09日
    浏览(79)
  • 幽灵行者ue4崩溃怎么解决?幽灵行者ue4崩溃原因深度解读及全套解决方案

    UE4崩溃通常是由于多种原因引起的,如虚幻引擎版本过旧、GPU驱动程序过时或损坏、注册表设置错误等。那么幽灵行者ue4崩溃怎么解决呢?下面一起来看看吧! 一、原因 1. 硬件兼容性问题 •显卡驱动不兼容:过时或错误的显卡驱动可能导致与UE4引擎的交互出现问题,引发崩

    2024年04月26日
    浏览(64)
  • UE4/5:通过Blender制作BlendShape导入【UE4/5曲线、变形目标,blender形态键】

    UE4/5里面,我们经常可以在一些骨骼模型上面看到相关的曲线,如Metahuman里面就是通过这个曲线来改变人物的脸部表情。 而这里笔者将教导如何去制作这种曲线。 这种曲线都是存在于骨骼模型上的,所以我们要么直接制作骨骼模型导入ue,要么做一个普通的模型,然后导入

    2024年02月03日
    浏览(62)
  • UE4 / UE5 内存与性能优化

    资源压缩 在图片资源上右键选择Size Map可以看到资源所占大小,将右上角切换成Memory Size,所占内存大小,如果发现这个资源所占太大,就可以考虑压缩一下图片大小,看看效果是否满足需求,这个会把引用到的资产所占用内存一同显示出来 粒子优化 很多游戏里面,粒子优化

    2024年02月04日
    浏览(53)
  • ue5,ue4(虚幻5)安卓触摸

    这个是单方向的,如果要用双方向的,就是 x和y同时运用的话建议用向量2d(变量),把它分割成x和y就可以了,我门平时在网上见到的触摸都是:按下到连续,我这个方法是按下-连续-停止,记住,y的变量要是负数,还有就是,灵敏度调大的时候,屏幕会跳动,由于x和y的屏

    2024年02月11日
    浏览(81)
  • ue4打包错误

    UATHelper: 打包 (Windows (64-bit)):   LogWindows: Error: begin: stack for UAT UATHelper: 打包 (Windows (64-bit)):   LogWindows: Error: === Critical error: === UATHelper: 打包 (Windows (64-bit)):   LogWindows: Error: UATHelper: 打包 (Windows (64-bit)):   LogWindows: Error: Fatal error! UATHelper: 打包 (Windows (64-bit)):   LogWindows: Error: UA

    2024年02月03日
    浏览(43)
  • UE4网络同步

    Actor是UE网络同步核心。所有的数据同步都是围绕Actor展开的。服务器将保留一份Actor列表并定期更新客户端,以便客户端保留每个Actor(那些需要被同步的Actor)的近似复本。(比如:玩家角色,武器等) Actor主要通过两种方式进行更新: 属性复制 和 RPC(远程过程调用) 如此

    2024年02月08日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包