- You can set the name of the culture in the
*Engine.ini
files. In theInternationalization
section, addCulture=
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 iszh_CN
. American English isen_US
. - 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. - 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!”. - 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. - 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. - From C++, you can call
FInternationalization::SetCulture
and provide the locale ID as was described in answer 1.FInternationalization
is a singleton, so callGet
, then callSetCulture
.
Does this suffice?