五、语言切换功能实现

在SlAiInternation.h中本地化文本

#pragma once

#include "CoreMinimal.h"

/**
 * 
 */
class SLAICOURSE_API SlAiInternation
{
    
    
public:
	static void Refister(FText Value) {
    
    
		return;
	}
};


#define LOCTEXT_NAMESPACE "SlAiMenu"

//用一次可以,多了会重复定义报错
SlAiInternation::Refister(LOCTEXT("Menu", "Menu"));

//现在可以直接
//LOCTEXT("Menu", "Menu")
#undef LOCTEXT_NAMESPACE


//SlAiInternation::Refister(NSLOCTEXT("SlAiMenu", "Menu", "Menu"));
//等同于
//#define LOCTEXT_NAMESPACE "SlAiMenu"
//SlAiInternation::Refister(LOCTEXT("Menu", "Menu"));
//#undef LOCTEXT_NAMESPACE

将菜单标题文本改为本地化文本

SAssignNew(TitleText, STextBlock)
		.Font(SlAiStyle::Get().GetFontStyle("MenuItemStyle"))
		.Text(NSLOCTEXT("SlAiMenu", "Menu", "Menu"))

翻译本地化文本

打开窗口------本地化面板
在这里插入图片描述
.

获取本地文本所在位置

.

在这里插入图片描述

添加新语言

在这里插入图片描述

本地语言依旧为英文
在这里插入图片描述

获取文件路径中的本地化文本

在这里插入图片描述

手动翻译本地化文本

点击按钮
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

计算字数

在这里插入图片描述

再次翻译

在这里插入图片描述

完成后
在这里插入图片描述
运行
在这里插入图片描述

SlAiInternation.h

#pragma once

#include "CoreMinimal.h"

/**
 * 
 */



#define LOCTEXT_NAMESPACE "SlAiMenu"

//主界面
LOCTEXT("Menu", "Menu");//菜单
LOCTEXT("StartGame", "StartGame");//开始游戏
LOCTEXT("GameOption", "GameOption");//游戏设置
LOCTEXT("QuitGame", "QuitGame");//退出游戏

LOCTEXT("NewGame", "NewGame");//新游戏
LOCTEXT("LoadRecord", "LoadRecord");//加载存档

LOCTEXT("ChooseRecord", "ChooseRecord");//选择存档

//进入游戏界面
LOCTEXT("RecordName", "RecordName");//存档名
LOCTEXT("EnterGame", "EnterGame");//进入游戏
LOCTEXT("EnterRecord", "EnterRecord");//进入存档
LOCTEXT("RecordNameHint", "Input Record Name!");//输入存档名
LOCTEXT("NameRepeatedHint", "Record Name Repeated!");//输入存档名

//游戏设置界面
LOCTEXT("Chinese", "Chinese");//中文
LOCTEXT("English", "English");//英文
LOCTEXT("Music", "Music");//音乐
LOCTEXT("Sound", "Sound");//音效

//公用
LOCTEXT("GoBack", "GoBack");//返回

#undef LOCTEXT_NAMESPACE

再次进入本地化面板翻译

语言切换

...
#include"Internationalization.h"
...
//切换为中文
//FInternationalization::Get().SetCurrentCulture(TEXT("en"));
//切换为英文
//FInternationalization::Get().SetCurrentCulture(TEXT("zh"));

注意

Roboto-Regular.ttf 高版本中文可能会乱码

**SlAiInternation::Refister(LOCTEXT("Menu", "Menu"));**


报错重复定义可以改为

LOCTEXT("Menu", "Menu");//菜单

Guess you like

Origin blog.csdn.net/m0_51032168/article/details/121455312