2023-06-29 11:55:02 +08:00

3.4 KiB
Raw Permalink Blame History

title, date, tags, rating
title date tags rating
UE4 本地化 2021-02-05 13:55:15

参考

https://gameinstitute.qq.com/community/detail/123008 https://blog.csdn.net/u010385624/article/details/89705285

视频:

代码中的操作

在源文件中CPP文档中我们的本地化操作需要借助FTextFText本身就是为了解决显示信息的本地化而构建进行操作FText的创建方式有两种

01.声明文本空间宏方式构建 .cpp 顶端

//引号内容可以随意
#define LOCTEXT_NAMESPACE "UECppTest"
.cpp 底端
//放到同文件CPP的底端
#undef LOCTEXT_NAMESPACE

对于文本空间声明完毕后即可使用宏LOCTEXT进行FText构建。

.cpp

FText t1 = LOCTEXT("UECppGMB_T1", "Hello");//此代码需要在上面的声明宏内部

02.直接使用宏NSLOCTEXT构建 .cpp

FText t1 = NSLOCTEXT("UECppTest", "UECppGMB_T1", "Hello");

第二种方法较第一种可以省去空间声明,但是并没有丢弃空间功能,只是在声明时需要额外多提供一个空间名称作为参数传递给宏

FText

对于文字使用 本地化工具批量收集FText进行翻译。

非文件

对于音频视频图片各种数据文件相关的本地化操作可以直接右键其蓝图文件选择Asset localization操作。

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

在蓝图中动态切换语言

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();

本地化对话

本地化对话以 Dialogue Wave类型的资源为中心。该资源可以通过本地化控制板界面的GatherText 收集其中的 spoken text 和 optional subtitle overrides。

Dialogue Wave 提供了一种 根据不同说话者与倾听者,说出意思相同的一段话,却使用不同语音与显示字幕的一种方法。