Product documentation including reference and guides for Unreal Engine 4


In Unreal Engine 4 (UE4) the primary component for text localization is the FText class. All user-facing text should use this class, as it supports text localization by providing the following features:

FText also features the AsCultureInvariant function (or the INVTEXT macro), which creates non-localized, or "culture invariant" text. This is useful for things like converting a player name from an external API into something you can display in your user interface.

You can create a blank FText using either FText::GetEmpty(), or by using just FText().


FText can be converted to and from FString. However, because FText contains character strings linked to localization data, while FString only contains a character string, these methods are inherently lossy and will discard (or fail to create) localization data. An alternative method, Text Value Marshalling provides lossless conversion, although this method produces data more suitable for internal marshalling than human consumption.

The following conversion functions produce FText strings, but without localization data:

FText Function



Creates a non-localized and culture invariant FText instance from an existing FString.


Creates a non-localized FText instance from an existing FString.

This is identical to AsCultureInvariant in non-editor builds. In editor builds, this function does not flag the text as culture invariant, which means it could still become localizable if assigned to an FText property in a saved Asset.


Creates a non-localized FText instance from an existing FName. This is the same as calling FromString on the output of the FName parameter's ToString function.

To convert from FText to FString, use the ToString function. The resulting FString will hold the string data from the FText, but not the localization data.


Because FText data is more complex than simple strings, it does not support overloaded-operator comparisons. Instead, it provides several functions to perform comparisons that recognize the nuanced data that it contains. The following comparison functions are available:

FText Function



This function takes an ETextComparisonLevel value to determine what comparison rules to use. It returns a bool indicating whether or not the calling FText matches the other under those comparison rules.


This function is a wrapper for calling EqualTo with an ETextComparisonLevel value of Second. The return value comes directly from EqualTo.


This function takes an ETextComparisonLevel value to determine what comparison rules to use. It returns an int32 like most string- or memory-comparison functions, where zero indicates equality, and negative or positive values indicate that the calling FText sorts lower or higher, respectively, relative to the FText parameter.


This function is a wrapper for calling CompareTo with an ETextComparisonLevel value of Second. The return value comes directly from CompareTo.

Using FText in User Interfaces


Slate and UMG use FText attributes or arguments for any built-in Widgets that show or manage user-facing text. We recommend using FText for any custom Widgets that you build.


To display FText through the HUD system with Canvas, create a new FCanvasTextItem and set its Text variable to the text you want to display, as in the following example code:

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

When using Canvas in a HUD, you must call DrawItem within the DrawHUD function, or call it in a function chain that begins with DrawHUD.

Select Skin
Help shape the future of Unreal Engine documentation! Tell us how we're doing so we can serve you better.
Take our survey

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback