Choose your operating system:
Windows
macOS
Linux
在虚幻引擎4(UE4)中,文本本地化的主要组件是 FText 类。此类通过提供下列功能支持文本本地化,因此面向用户的所有文本都应使用此类:
Ftext 同时具有 AsCultureInvariant 函数(或 INVTEXT 宏),可创建非本地化的(即"语言不变")文本。这在进行如将玩家名从外部API转换为可在用户界面显示的文本等操作时,十分有用。
可使用 FText::GetEmpty() 或仅使用 FText(),创建空白 FText。
转换
FText 和 Fstring`` 间可相互转换。但 FText 包含与本地化数据关联的字符串,而 FString` 仅包含一条字符串,因此以上方法固然会造成损失,将废弃(或无法创建)本地化数据。另一方法是文本值整理,其可提供无损转换,但该方法产生的数据更适合内部整理,而非供用户查看。
下列转换函数可生成不含本地化数据的 FText 字符串:
|
|
描述 |
|---|---|
|
|
以现有 |
|
|
通过现有的 此效果等同于非编辑器版本中的 |
|
|
以现有 |
要从 FText 转换为 FString,请使用 ToString 函数。得到的 FString 将包含 FText 的字符串数据,但不包含本地化数据。
比较
FText 数据比简单字符串复杂,因此其不支持重载运算符比较。相反,其提供多个函数,以执行识别其中细微数据的比较。可用下列比较函数:
|
|
描述 |
|---|---|
|
|
此函数使用 |
|
|
此函数为包装,用于以 |
|
|
此函数使用 |
|
|
此函数为包装,用于以 |
在用户界面中使用FText
Slate/UMG
Slate和UMG使用内置控件的 FText 属性或参数,此类内置控件显示或控制面向用户文本。建议使用用户构建的自定义控件的 FText。
HUD/画布
要利用带画布的HUD系统显示 FText,新建 FCanvasTextItem 并将其 Text 变量设为要显示的文本,如下放范例代码所示:
// Create a new FCanvasTextItem instance to contain the text.
FCanvasTextItem TextItem(FVector2D::ZeroVector, TestHUDText, BigFont, FLinearColor::Black);
// Add the text into the FCanvasTextItem.
TextItem.Text = FText::Format(LOCTEXT("ExampleFText", "You currently have {0} health left."), CurrentHealth);
// Draw the text to the screen with FCanvas::DrawItem.
Canvas->DrawItem(TextItem, 10.0f, 10.0f);
在HUD中使用画布时,须在 DrawHUD 函数中调用 DrawItem,或者在以 DrawHUD 开头的函数链中调用该函数。