CREATING A LOCALIZATION READY GAME IN UE4: Part 1 - Text

[=Sarge;25481]
Hi BechD,

The actual process of localizing your “localization ready game” is a little more involved. We’ll outline all the details in the near future in our documentation and probably as a blog/forum post. The short of it is that you run a commandlet that extracts the text from your assets/code and bundles them into a set of json files. You then enter translation into these json files and rerun the same commandlet which also packs a binary version of the text and it’s translation for use by the engine.

We’re going to be offering the ability to integrate with translation companies directly as well, such as OneSky, which will smooth out the process dramatically. :slight_smile:
[/]

Hi! Wondering if there has been updated documentation and posts on this yet as mentioned in this post. I could definitely use it right now! :slight_smile: Also, will all of this still be valid when using UMG and custom fonts?

Great News Localization Works Now!

As you might now I am working on Solus which requires Localization to be functional, so I’ve been tracking this matter for awhile and posted several answerhubs and worked with Epic to get Localization going.

Well

I am happy to report that now Localization works! Completely!

Yay!

Congratulations Epic!



[=;186856]
Hi! Wondering if there has been updated documentation and posts on this yet as mentioned in this post. I could definitely use it right now! :) Also, will all of this still be valid when using UMG and custom fonts?
[/]


Here is the documentation!

https://docs.unrealengine.com/latest/INT/Gameplay/Localization/Setup/index.html

Functional Error in Documentation

Also I reported a critical error in the documentation.

Please see my answerhub above if you have issues getting Localization to work :slight_smile:

As a work space for translation, I suggest you have a look at this localization app. It should also be a good candidate for smoothing out the management process.

Hi,
Glad to see localization happening this easy but from what I see no right-to-left languages (Arabic, Persian…etc) are supported? I checked the previous discussions about Arabic UE4 games but it seems nothing is actually working or the discussions are abandoned. Any work around/suggestions? My intention is to display Arabic text in my game.

[=;212449]
Hi,
Glad to see localization happening this easy but from what I see no right-to-left languages (Arabic, Persian…etc) are supported? I checked the previous discussions about Arabic UE4 games but it seems nothing is actually working or the discussions are abandoned. Any work around/suggestions? My intention is to display Arabic text in my game.

[/]

Hi ,

Currently the engine is not properly equipped to render languages like Arabic. Not only is there no right-to-left support, the font rendering system itself doesn’t perform a font shaping pass, which would allow for the flowing character script to match up properly. While these features are planned for a future iteration of the engine I can’t give you any estimates on when they may by available.

Hi

I’d like to thank who has been commenting on this so far. It has helped, but I have come across an issue with GatherText picking up strings I would not expect it to and not picking up texts I would expect it to. I’ve asked a question here if anyone knows anything about it.

Thanks,

Hi Guys,

I am a newbie from Hungary and I’d like to make a game with english and hungarian translation (localization). I found several content about how to do this but when I go to project settings and try to setup the packaging for
hungarian language I just can’t find any option to do that. I mean, there I can see the list of english, german, french, portugal, poland, etc … options for localization but no hungarian. How can I set up the localization for
hungarian language.

Thanks.

Hi AryoHu,

Thank you for your request. I have entered a feature request, UE-13521, to be assessed by the development staff.

Question on Localization

I have done a basic step of localizing the text to one language. I want to do a feature on fetching the Mobile OS for localizing the text to that language. Can we do this in Unreal? If yes how? please guide me.

Thank you!

i try localization for my project, it work fine inside the editor, and in standalone i can switch from culture “en” to “fr” and “fr” to “en”

but when i package my game, it dont work anymore,

and i saw some disturbing warning about localization in Project setting>Packaging>Localization to package

“anglais” and “français” have warning “this project does not have localization data (translations) for this culture”

so it seem that localization arent packaged… any idea why they arent detected ? :frowning:

all my project are like this, even blank new fresh project, i can do localization inside the editor or standalone, but when i package it, its look like i have 0 translation :frowning:

i have no localization files in my cooked content, how to force them to be cook even the editor wont recognize them :o ?

i have this log warning too in editor:

[]
LogTextLocalizationManager:Warning: Loaded localization resources contain conflicting entries for (Namespace:ContentBrowser, Key:ImportAssetToolTip):
Localization Resource: (E:/ue4/Unreal Engine/4.8/Engine/Content/Localization/Editor/en/Editor.locres) Source String Hash: (-630476809) Localized String: (Import to {0}…)
Localization Resource: (E:/ue4/Unreal Engine/4.8/Engine/Content/Localization/Editor/en/Editor.locres) Source String Hash: (1271782899) Localized String: (Imports an asset from file to this folder.)
[/]

i managed to fix the warning about “this project does not have localization data (translations) for this culture” by adding this line in the DefaultGame.ini

[]
[Internationalization]
+LocalizationPaths=%GAMEDIR%Content/Localization/NewTarget
[/]

i can now find in “Show Localized” english and français !!

i thought that would fix the localization missing in packaged game but no :frowning: i still have no translation working in my packaged game :frowning:

there is no folder “localization” in “Saved\Cooked.…\Content” path

is there a manual line to write somewhere that i forgot ? :o

[]
NSLOCTEXT( “Your Namespace”, “Your Key”, “Your Text” )
[/]

I am reading localization docs right now and got one question :slight_smile: Why do I need to enter “Your Text” directly inside FText variable ? From what I think namespace and key should be enough, then when I gather localization data I can specify different text for every language (just like in UDK). What is point of typing some text directly inside FText, is it used for some default language (english) or what ?

I belive I found answer: https://de45xmedrsdbp.cloudfront.net/Resources/files/UE4_DevCon2014_Cpp_Utilties-640979660.pdf
This should be in documentation too…

[]

FText TestHUDText = NSLOCTEXT( “Your Namespace”, “Your Key”, “Your Text” );
– Namespace: When a word has different meanings, e.g. “chest”
– Key: Unique identifier, e.g. “HUD_UserNameLabel”
– Text: Default text if no localization is available

[/]

So text is really some default text when no localization is available. Now there is another question, so if I enter there english text and then after gathering localization keys assign some other english text to eng language will be my old english text which I assigned directly to FText just ignored ? I belive it will be but this is quite confusing behavior and it can make debugging a bit more difficult.

@
I think the purpose of “Your Text” is to allow you to see something on the screen before actual text on any language is available. And in many cases it will not match the final version seen by players, especially in case of big texts, for example:

FText BigDescription = NSLOCTEXT(“Locations”, “MyLocationBigDescription”, “Bla bla bla”);

Texts are usually written by writers, not programmers, but this at least allows you to see that everything’s working and the text is displayed properly.

I have another question: does localization support arrays? Remember these tips that many games show when a level is being loaded? These could be stored in an array and shown randomly and they should be localized too. How would I implement something like that?

I created a basic main menu using the widget blueprint and bound the texts of the button. The binding functions use text variables.
The project is also setup for localization. But when I run the commandlets I can’t find the texts of the buttons in the generated data.

So how do I do this?

Edit: I tried the experimental localization dashboard. It finds all texts and I found out that I don’t have to bind the button texts with a text variable. But I still would like to know how I achieve this with the currently supported method.

Localization works fine in Standalone mode, but not after packaging. Here is more detailed info: https://answers.unrealengine.com/questions/320332/localization-ok-in-standalone-missing-after-packag.html

Is this a bug or do I do something wrong?

Hey Sarge,
Are the rumors true, is someone at Epic actively working on adding Arabic support?

If so…
Is there somewhere in the master branch I can view the progress?
Are you using Harfubzz to do the shaping?
Is it going to be released in stages (first text rendering, then text editing) or all in one go?