We use cookies on this site to enhance your user experience

Localization Support and Troubleshooting

Localization Support and Troubleshooting

Sep 12 2018, 9:16 PM PST

This FAQ and troubleshooting guide can help you solve specific issues around Articles/Introduction to Localization on Roblox|localization.

Common Questions

What if the text scraper isn’t capturing all the text in my game?

The Articles/Roblox Localization Tools|text scraper can only capture text that is encountered during capture sessions. If you have a game with a lot of text, places, or menus, it can be difficult to scrape all the text instances. In this case, you may consider:

  • Manually add entries into the CSV file generated by the text scraper. Be sure to supply either a Key for each entry or Source + Context values.
  • Since you know how your data is structured, you can write scripts or create your own custom Studio Articles/Intro to Plugins|plugin to quickly load text into LocalizationTable|LocalizationTables.

What are the primary fields in the CSV file generated by the text scraper?

Field Purpose
Key A unique lookup value that you can assign to an entry in your LocalizationTable.
Source The exact text in the source language that you want to translate. This is what the text scraper captures from within your game.
Context The in-game Instance associated with the Source text. Auto-localization uses this to help apply the correct translation to source text that may have a different meaning based on its context.
Example This is ignored by auto-localization and can be used to provide additional notes to human translators. Notes may include the gender of NPCs referenced in the text, game-specific terms that should not be translated, etc.

Does every table entry require each primary field, along with a translated value?

No, a LocalizationTable entry just needs to have a Key value or Source + Context values. Example is optional.

  • If you’re using auto-localization, provide Source + Context values.
  • If you’re building your own localization plugin or scripts, define a Key for each of your entries. You can then look up translated text using Translator/FormatByKey|Translator:FormatByKey() from a LocalScript.

How can parameters in strings be identified and translated correctly?

Source and translation strings in your LocalizationTable can contain valid format strings. Read the Articles/Format Strings|Format Strings article about how to use these in your CSV import file or within scripts.

How can I prevent auto-localization from trying to translate a string?

If you’re not using the automatic text replacement system, or if you don’t want certain GUI elements in your game to be translated, disable GuiBase2d/AutoLocalize for that GUI. This will stop LocalizationService from trying to translate that GUI.

Can I use the system locale ID to localize my game for other languages?

LocalizationService/SystemLocaleId returns the locale code of the player’s operating system. You can use this to set the player’s language in your game, but it’s not recommended (not all players want to play games in the same language as their operating system!). It’s good practice to let players choose their language via a language selector when they enter the game.

How can I tell what language a player is using to play my game?

You can check LocalizationService/RobloxLocaleId for a player’s Roblox locale, but note that they can change the language in their account settings (Account InfoPersonal).

Currently, the only supported locale codes are en-us (English; United States) and es-es (Spanish; Castilian/Spain). Locale codes for additional languages can be found in the Articles/Roblox Localization Tools|localization tools tutorial.

How can I translate custom loading screen messages in a game?

If you’re setting up any kind of GUI in ReplicatedFirst, like a custom loading screen, the LocalizationTable for that GUI must also go in ReplicatedFirst.

In addition, if the GUI uses automatic text replacement, you must set its GuiBase2d/RootLocalizationTable|RootLocalizationTable to point to the same LocalizationTable inside ReplicatedFirst. This will ensure that the GUI has access to a fully-replicated LocalizationTable.

What if some text properly translates to an empty string?

In a LocalizationTable spreadsheet, an empty cell generally means there is no translation for that language. In very rare cases, some text might properly translate to an empty string. If so, the empty string indicator {} must be used to indicate this in the spreadsheet, differentiating it from a missing translation that would otherwise fall back to another language.

Note that there cannot be any characters before or after the empty string indicator, or it will be an invalid Articles/Format Strings|format string.

Will Roblox's matchmaking service separate different language speakers?

Not at this time. However, the matchmaking algorithm takes player language settings and location into account when matching players.

Troubleshooting / Issues

Certain text cannot be captured with the text scraper or translated with auto-localization

The current objects exempt from auto-localization include:

  • The default Roblox leaderboards and chat.
  • Items/tools in the backpack.
  • Articles/Badges Special Game Awards|Badge names and descriptions pulled from the platform.
  • Articles/Game Passes One Time Purchases|Game Pass names and descriptions pulled from the platform.
  • Default text in a TextBox, for example “Enter Code.”
  • Humanoid names, like for NPCs.
  • Decals and images with text. Note, however, that these can be “translated” by using scripts to swap in different images/decals based on the player’s LocalizationService/RobloxLocaleId|RobloxLocaleId.

Translations don't update after importing a new CSV file

If you’re having trouble seeing localization updates in your game, make sure that you do not have duplicate LocalizationTable|LocalizationTables with the same name. If you do, delete the older LocalizationTable|LocalizationTables (found under LocalizationService) to ensure that translations are populated from the latest version.

The text scraper doesn't work in Team Create mode

At this time, the text scraper does not work in Team Create mode.

TextBounds reports original text instead of localized text

You may find that TextLabel/TextBounds and TextButton/TextBounds report incorrect dimensions. This is a known issue — our engineering team is working on a solution!

Animated text isn't localized correctly or is flickering

If your game uses text animation, you’ll have to update your scripts to handle localization. There is no way for the system to automatically translate incomplete text — it needs the full text to match, or a lookup key.

Here are some tips when using animated text:

  • Make scripts translate text before animating it, looking it up by Translator/FormatByKey|Translator:FormatByKey().
  • Set GuiBase2d/AutoLocalize to false on text fields that are already translated by scripts.
  • Make sure you’re using utf8.graphemes to break up your text! A single “character” in other languages can use multiple “bytes,” so you need to be careful where you split the string.
  • localization
  • language
  • translation
  • international