[Localization] Questions About How Localization Works In a Final Game Release

#Localization Questions

Hi there!

  1. How do you change the language of the game using Epic’s Localization System?

  2. Epic code is simply taking all of our FText in the language we enter it and converting it for us?

  3. How can I test whether Localization is working?

  4. Do I have to do the translations myself by exporting / importing text, or does UE4 do this for me?

Do I have to change my OS language and Epic code detects this?

5 How do I change the language within a game menu while in game from C++ or BP ?



  1. You can set the name of the culture in the *Engine.ini files. In the Internationalization section, add Culture= where `` is, at minimum, an ISO-639 two or three letter language code, an optional script code, and an optional country code, underscore delimited. Chinese for China is zh_CN. American English is en_US.
  2. There is no automatic translation system. That’s outside the domain of the Unreal Engine and modern machine translation is… lacking. We do have some early support for translation services like OneSky, however, by supporting exporting and importing *.po files.
  3. You can test if a string is going through the localization system at all by passing -leet on the commandline - it will be procedurally translated to “leet speak”. The same can be done for strings using the system that aren’t localized by passing -leetifyunlocalized. IE: “Hello, Rama!” will become “H3110, R4m4!”.
  4. Someone will have to do the actual translation process, but using the GatherText family of commandlets alows you to export text to a JSON-style *.manifest for English and *.archive files for all target cultures. Translations for each specific language go in the respective *.archive files. The *.manifest and culture-specific *.archive files are then used to generate a binary *.locres file used by UE4 at runtime.
  5. I think you missed numbering a question, so this is more like answer 4.5: You do not need to change your OS language. However, if you do not specify a culture in the *Engine.ini, UE4 will default back to whatever language the OS is using if possible.
  6. From C++, you can call FInternationalization::SetCulture and provide the locale ID as was described in answer 1. FInternationalization is a singleton, so call Get, then call SetCulture.

Does this suffice?

Yes your answers were very helpful! Especially 1, 3, and 6

Thanks Sheevok!