UE4制作多语言游戏(本地化功能详解)

          本文参考:

          http://blog.csdn.net/lzt20007/article/details/51308702  

          https://www.indienova.com/u/trombe/blogread/1642

         参考两位大牛文章,亲自测试使用以后重新整理相关操作文档,补齐了一些相关影音图片资源本地化操作,希望能给涉及到多语言版本游戏的UE4开发者同学们一些引导,毕竟UE4相关开发文档相对来讲比较缺乏,有好的东西当大家一起分享。

         

          1.在编辑器设置界面,打开本地化功能。

         

        2.在窗口中打开本地化面板

       3.设置本地化需要读取的文本路径

备注一下,如果是非C++项目,那么Gather from Text Files是不需要的,因为你没有这些文件,如果勾选的话,可能会导致失败,毕竟本地化属于非正式功能,多少会有些不能理解的bug之类的。

      5.添加新语言,并设置原生语言。 这里我默认是编辑器英文语言,所以添加中文语言,并且把中文设置为原生语言。

     6. 点击Gather Text开始搜索文本

       7. 搜索完毕,点击非原生语言的edit选项

 

在Untranslated选项卡下边翻译你需要翻译的选项,然后点击Save。这里不需要全部都翻译,有些其实是没用的

         8.统计文字,并且编译

 

          那么我们的本地化功能已经完成了,下面可以测试一下。

          这里要注意一点,在加载策略上,如果你是新添加的方案的话,默认是Never,这时候是永远不加载的,所以要改变一下,game或者always都行

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

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

 

          10.打包相关设置。在localization to package中把需要打包进去的语言勾选上,这里我们选上 English和Chinese,Internationalization Support选择EFIGSCJK(多语言集合), package default localization 设置为 zh

        11. 如果还有音频,视频,图片,各种数据文件相关的本地化操作,可以直接右键其蓝图文件,选择Asset localization操作.

      创建以后会在本地化文件夹位置自动生成一个对应的文件副本,然后把该文件副本改成你需要替换的本地化文件就好了,注意该副本的文件名一定要与原件文件名一致,这样才能自动调用到本地化版本的文件。测试和使用方法与9步和10步相同。

//本文为CSDN博主执手画眉弯原创,未经允许不得转载!

      12. C++中设置动态切换语言的函数库。

           创建UBlueprintFunctionLibrary的子类,具体内容如下

 

.h文件

#pragma once

 

#include "Kismet/BlueprintFunctionLibrary.h"

#include "MyBlueprintFunctionLibrary.generated.h"

 

UCLASS()

class LOCALIZATIONTEST_API UMyBlueprintFunctionLibrary : public UBlueprintFunctionLibrary

{

GENERATED_BODY()

public:

/* Change Localization at Runtime. */

UFUNCTION(BlueprintCallable, meta = (DisplayName = "Change Localization"), Category = "Locale")

static void ChangeLocalization(FString target);

UFUNCTION(BlueprintCallable, meta = (DisplayName = "Get Localization"), Category = "Locale")

static FString GetLocalization();

};

 

.cpp

#include "localizationTest.h"

#include "MyBlueprintFunctionLibrary.h"

 

void UMyBlueprintFunctionLibrary::ChangeLocalization(FString target)

{

FInternationalization::Get().SetCurrentCulture(target);

}

 

FString UMyBlueprintFunctionLibrary::GetLocalization()

{

return FInternationalization::Get().GetCurrentCulture().Get().GetName();

}

 

 

 

         之前写的一些步骤在其实是有些问题的,也是因为我自己理解不深导致的,今天在一位新同学的帮助下才重新整理和修复了原来步骤的错误,给大家造成的一些误解和不便多有抱歉,希望改后的文章对大家有些帮助。

 

       本文到此结束,希望对大家有所帮助,最后再次感谢两位大牛的文章。

        http://blog.csdn.net/lzt20007/article/details/51308702  

        https://www.indienova.com/u/trombe/blogread/1642

 

 

 

  • 8
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值