top of page

Unreal Engine Localization Guide

Writer: Jiajun Zhang
Jiajun Zhang
Oct 12
3 min read

Updated: Oct 16



For Development Teams and Publishers  ·   August 2026

This document helps development teams understand Unreal Engine’s (UE) localization system and standardize the complete workflow for working with Orbit8. It covers how to export localizable text, the required delivery format, how to import translated text, and how to verify the final result.


What is UE's Localization System?

Unreal Engine includes a built-in multilingual localization framework. No third-party software is required.

It uses FText to store all user-facing, translatable text.

At runtime, the engine automatically switches text based on the player’s language settings. No code changes are required.


Note

Plain strings (FString) are not localized. Use FText instead.


Localizable Text Formats

C++: the NSLOCTEXT macro, for example:

NSLOCTEXT("UI_MainMenu", "Btn_Start", "Start Game");

NSLOCTEXT("Item_Weapon", "Sword_Name", "Iron Sword");

Blueprints: Text variables.

The engine automatically gathers Text variables in Blueprints and their default text.


Localization files are stored in the project under Content/ Localization / <TargetName> /:

  • .manifest: text manifest (records all text IDs that require translation and their source file paths).

  • .locmeta: localization metadata (records language associations).

  • .archive: source text archive (stores untranslated source text internally).

  • .po files: plain-text files delivered to Orbit8 for translation.

  • .locres files: compiled binary resource files (for packaged/runtime use only; not editable).


> Handoff Note: The only file format you may deliver to Orbit8 is .po. Never deliver .archive or .locres files. Orbit8 cannot read or return them correctly.


How to Export Localizable Text

Open the top menu: Tools -> Localization Dashboard.

  1. Configure the search scope:

    • C++ gathering: select Gather from Text Files and set the Search Directory to the folder containing your source code.

    • Blueprint gathering: select Gather from Packages and set Include Path Wildcards to the Content Browser directory.

  2. Click Gather Text.

  3. When gathering completes, click Export Translations for This Language next to the target language. The engine will generate .po translation files automatically.

  4. Deliver the generated .po files to Orbit8 for translation and proofreading.


How to Import Translated Text

After Orbit8 completes the translation, they will deliver .po files back to the development team. Follow these steps exactly:

  1. File placement

    Make sure the .po files returned by Orbit8 use the expected naming convention (for example, Game.po) and are placed in the correct language directory (for example, Content/Localization/Game/zh-Hans/Game.po). Do not rename or relocate them.

  2. Import

    In Tools -> Localization Dashboard -> Languages, click Import Translations for This Language next to the target language, then select the translated .po file.

  3. Compile Text

    After the import completes, be sure to click Compile Text to generate the .locres binary files. These are required before the localized text can be used at runtime.


Expected Result (How to Verify)

Go to Edit -> Editor Preferences -> Region & Language -> Preview Game Language and switch to the language you want to preview (for example, zh-Hans). You can then preview the localized content in the editor in real time.


FAQ

Q1: Clicking “Gather Text” collects nothing.

  • Cause: The gather paths (Search Directory / Include Path Wildcards) are incorrect, or they do not contain any text that can be gathered. Another possibility is that the Target is not configured correctly in Project Settings -> Localization.

  • Solution: Double-check the gather paths and make sure they include source or Blueprint files. Then go back to Project Settings -> Localization and confirm the Target is registered.


Q2: When importing translation files, the window says it cannot find the .po file, or nothing happens after import.

  • Cause: You clicked the Import Text button at the top of the dashboard. That button is only for importing .archive files and does not read external .po files.

  • Solution: Use the Import Translations for This Language button next to the target language.


Q3: After importing translated text, switching the preview language still shows untranslated text.

  • Cause:

    1. Compile Text was not clicked after import.

    2. The language code in the .po header does not match the UE configuration. For example, the .po file says zh_CN, while UE is configured for zh-Hans.

    3. The engine’s localization cache has not been refreshed.

  • Solution:

    1. Click Compile Text again in the Localization Dashboard.

    2. Contact Orbit8 to verify that the Language: field in the .po header exactly matches UE.

    3. Save the project, then exit and restart Unreal Engine.


Q4: Why does Orbit8 say the files we delivered cannot be opened or translated?

  • Cause: The development team may have accidentally sent internal .archive or .locres files to Orbit8.

  • Solution: Re-export and deliver only .po files. This is the only standardized handoff format for Orbit8.



如何导出

可本地化的文本格式

可本地化的文本格式

 
 
 

Comments


bottom of page