Localization Table Updates

This topic was automatically opened after 11 minutes.

Would this make a significant difference in real time performance?

9 Likes

Bless, my scraped tables are a total mess from user generated strings. AutoLocalize being on by default is a disaster for me because I started my game a long time ago without thinking about localization at all. Now with everything powered by a mixture of React and conventional UI programming, it’s a major undertaking to make sure everything except for static labels have it turned off. At least with this change, I can purge the nonsense strings and have more control over the new garbage that gets fired into my tables and when. I can explore a new feature in Studio and just push what gets scraped for that session, rather than sending an entire session of user generated text.

10 Likes

Hey @Quackback - strings will no longer be scraped in real time when players see them in-experience; it may take up to a few days for them to be added.

If you need strings to be added to your localization table in real time, you can use the automatic text capture system in Studio. The performance of this real-time system is the same as the former in-experience system.

6 Likes

its 2024 and i still dont know how localization tables work, like, at all.

besides that, I noticed one of these two engines would consistently spit out “TextScraper: too large” errors depending on some games, has this been fixed by any chance because its hard to debug stuff when it gets spammed with text scraper errors.

15 Likes

you can prevent these warnings in your console by just turning off the AutoLocalize property for the textlabel, it happens because the text it’s trying to capture for translation is too long

8 Likes

I don’t really know a lot about localization tables myself, but if I am correctly aware the LocalizationTable is supposed to store translations (more information here). It does not however, translate text automatically in real time; at least as far as I know of. For example, if you wanted to translate user inputs after the game loads if they are not in a desired language, I believe you would still need to send the text to a third-party site.

The LocalizationService and Translator system can be used to automatically replace text with translations, but it’s not a real-time process.

A LocalizationTable is not inherently designed to automatically translate text in real-time. It’s more of a centralized storage for translations that can be used to replace text in-game.


You can’t really predetermine every possible translation inside LocalizationTable though so I may be questioning the use of it. Not just personally, because every time I have tried to make positive use of it, it doesn’t work. This is especially true, because Roblox translates text into your game anyways, based on a user’s preferences, so long as it’s not in real time or where the text that needs to be translated is saved and loaded separately from a datastore; (this would be an example of real time text translation if it were to be translated, requiring a separate third-party to translate the text).

What is the point of including every translated word inside LocalizationService to be replaced in your game? Such use would become impractical and time-consuming. Am I missing something here?

7 Likes

When are we getting language detection that the player set in the in-game Roblox settings menu?

7 Likes

I’ve been familiarizing myself with the Translations category in Create because I can definitely see it’s potential effects, but I have a question:

For in-game translations on TextLabels, is this handeled manually or through this Translation feature?

6 Likes

I’ve noticed the prints from system, I don’t think they’re supposed to show up

image

7 Likes

Hey @lostresosostedyIII - are you referring to the “Experience Language” dropdown in the in-game settings menu? For any GUI object that has the AutoLocalize property set to True, it will automatically be translated to the player’s selected experience language, even if they change it mid-session.

However, if you are performing localization via scripting (using Localization APIs), you’ll need to listen to the GetPropertyChangedSignal event for changes in the LocaleID property of the Translator instance returned by LocalizationService.GetTranslatorForPlayerAsync.

You can read more and see an example of how to do this in our localization guide docs.

5 Likes

HI there, you are correct - a LocalizationTable stores the translations for your in-experience strings.

You are also right in saying that the translation is not a real-time process, and it could take up to a couple of hours for automatic translations to be generated (if it is enabled in the first place). However, we are looking at enabling a real time translation API in the near future.

When a player encounters an in-experience strings, we look up the the source in your localization table and try to find a match. If a match is found, the translation is rendered, or else we will just show the source string.

I hope this clears up some of your confusion around our translation systems!

7 Likes

Hey @Damp - TextLabels can be handled through our translation system.

If you want the whole process to be automatic, you can use the automatic text capture system described in the above post to add the text to your localization table. If automatic translation is enabled for your experience, these strings will then be translated for you. Learn more about automatic translation here.

You can also add the text manually if you would like - learn how to do that here.

7 Likes

Hi, @hydr0h0mie/@melonwhine

Can this Studio context print be turned off, or in some way hidden/minimized, please?

Every localized string in our experiences are being printed by Studio, despite being non-pertinent.

2 Likes

Thank you so much! :kissing_heart: I was looking for this everywhere.

3 Likes

Hey @hello42 - thanks for flagging this! Seems like this is a bug from our end. We’re working on a solution now, and it should be fixed by next week.

In the meantime, you can work around this by setting your log level to Warning instead of Info until the fix is in. Sorry for the inconvenience!

4 Likes

I think this is great. It is also very good that it does not affect the performance of the game in real time because strings will no longer be scraped in real time when players see them in experience. It may take up to a few days for them to be added. :grin:

1 Like

Can we please get an API to explicitly add an entry to the cloud table if it doesn’t exist? We have to manually upload strings now and it’s a pain.

1 Like

Any insight to localisations being enforced in some way via policy or a setting that developers can’t control? My team has built a translation library that we use in our experience rather than any of the localisation items Roblox provides. Basically just an easy, fully-under-our-control way to localise certain content in our experiences instead of leaving it to Roblox’s tools.

We also check it all into version control (translated strings, language folders, etc) so we can work on translations and code content all in one area.

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.