UE4C++中英文切换实现(各国语言切换的实现形式)(包括打包问题处理)
UE4的多语言支持其实是对FText进行识别,因此在蓝图c++使用FText时候,都会支持本地化文本内容
创建Text
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
/**
*
*/
class GAME_SANDBOX_API GameSandIntermation
{
public:
static void Register(FText Value)
{
return;
};
};
这种定义方式和下面注释的一样
#define LOCTEXT_NAMESPACE "GameSandMenu"
GameSandIntermation::Register(LOCTEXT("Menu", "Menu"));
#undef LOCTEXT_NAMESPACE
//GameSandIntermation::Register(NSLOCTEXT("GameSandMenu", "Menu", "Menu"));
使用当前Text
打开:window->Localization Dashboard窗口
选择查找路径,用于查找代码定义的Text
收集所有的Text
编辑此语种对应的翻译成的文字
点击时候报错
是因为之前添加之后又删除了,找到对应路径删除缓存文件
重新收集完成点OK
此类语种对应文本如下:
下图所圈的俩个为此语种在代码中对应的字段,切换语言时使用
此语种为计数
点击Count Words记录Text个数
等待期完成之后点Ok
如果还是白色的,请删除上面步骤的路径中的缓存数据即可
点击编译文本
编译成功之后独立运行即可
代码中语言切换方式,切换之前记住的对应字段则为对应语言
必须以独立运行才能看见正确的结果 FInternationalization::Get().SetCurrentCulture(TEXT("en")); FInternationalization::Get().SetCurrentCulture(TEXT("zh"));
语言已正确切换
点击此处可以切换默认语言
打包时候要勾选上自己支持的本地化语言集