Create some TextLabel with a text for translation, translate it and run.
Expected Behavior
The translated text should be shown immediately
Actual Behavior
The original (untranslated) text is displayed and only after some delay (in some cases more than 1 second) the text is replaced by the translated version:
Issue Area: Engine Issue Type: Display Impact: High Frequency: Constantly
I am pretty sure this is normal, because Roblox needs some time to translate the words in your game into a new language, so this delay should not be classified as a bug. This has happened to me in the past. Hope this helps.
It IS a bug because the player shouldn’t see the untranslated version before and then see the translated version.
The development team should create a mechanism to load translations BEFORE the translated text is displayed, not after.
I will agree with @afampany . You can’t magically fetch all translations in the span of a millisecond. And judging from the video you provided, this causes minor to zero problems or confusion to the player, as it translates it in less than a second. If you are necessarily looking for a fix, then they should make the loading screen stall until all translations have loaded in.
This loading screen is just an example.
This problem occurs on ANY INTERFACE in the experience, so I would have to create a control for each interface, which is not feasible.
Although some do not consider this to be a serious problem, it is still a problem and, as we must strive for excellence, it must be resolved.
This problem likely cannot be fixed however, it’s unreasonable to think that a client would be able to fetch translations the millisecond the game started up. It would be like reporting datastore service taking a second to save data as a bug, it’s something that has to happen and you are expected to make your game around these limitations.
This is not a bug. The correct way to translate text is to detect if the translation is needed. If so, remove the non-translated text, and then show the translated text as soon as loaded. This preferred method takes some coding though.
I disagree again.
By script, when a player joins the game, I have to manually load the instance Translator through LocalizationService:GetTranslatorForPlayerAsync so that the system can do the translations in advance.
Now, once the system knows which player has joined, it should automatically load the Translator instance for this player AT THE TIME THIS PLAYER GOES ONLINE and not wait to load it just when there is a need for some translation to be displayed .
But I realize that this discussion is useless, because, as I said before, Roblox ignores even the most serious bugs, so it certainly won’t pay attention to this matter.
I will stop here and close this topic.
Don’t be so dramatic – a significant percentage of all bug reports you have filed have been looked into and most have been resolved (from a rough glance at least 60-70%).
This post is not a real solution to the bug and it’s not constructive to end the post that way. This is a valid concern and the topic should stay open.
The client can load the translations prior to putting the player into the game or the initial replication snapshot can include the translations. The locale is known when the player presses the Play button so this is technically feasible.
There are solutions to this problem that don’t involve lazily loading the translations that can mitigate some of the concerns of the first poster. Please don’t backseat-engineer and focus on issues when discussing in feature request and bug report categories.
Hey @rogeriodec_games thanks for the report. What people are saying above is correct for the loading screen translation delay. Translation assets need to load in and that happens very shortly after the loading screen comes up. It is something we are looking into.
Can you clarify the delay you are seeing on in experience strings? There should not be a noticeable untranslated delay. There is a chance you are introducing a delay on accident when using the lua APIs. Any additional information on how you are handling translation helps.
@AceBookMarker you mentioned translating the typewriter effect. The recommended way to do this is to first get the translation for the entire string with the lua APIs and apply the typewriter effect over that string rather than setting a partial translation in your localization table.
The image shown in the video refers to a simple Frame with a TextLabel (with AutoLocalize turned on), in which I insert a string one line before doing a Teleport:
FrameCarregando.TextLabel.Text = 'Entrando no Mapa: ' .. Map .. '\n\nAguarde...'
… Now that I’m seeing this, I realize the string is inside the script, so it “doesn’t exist” for the Roblox interface until it’s injected in the TextLabel.Text.
So, really, there’s no way to do the translation ahead of time and I’ll have to take care of it within the script.
Thank you for your attention and I apologize to everyone for the confusion.