转载自:https://blog.csdn.net/l346242498/article/details/72911539
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步相同。
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();
}
--------------------- 本文来自 执手画眉弯 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/l346242498/article/details/72911539?utm_source=copy