Localization

Overview

Localization is a feature designed to provide a consistent experience for players using different languages.

It allows you to translate and display not only out-of-game texts such as world names and descriptions, but also in-game texts including UI, interaction messages, and system prompts.

By leveraging this feature, you can deliver a more natural experience to players from various countries, improve world accessibility, increase user acquisition, and maximize revenue.

Features

This system provides the following features:

  • Automatically collects text displayed in UI and ProximityPrompt and registers it in the Creator Hub

  • Translation data is centrally managed in the Creator Hub

  • Automatically applies translations based on the player's language settings using the registered translation data

  • Supports translation of dynamic text via scripts

Supported Languages

Currently, OVERDARE supports English, Hindi, and Portuguese (Brazil).

Similar languages are automatically mapped to supported languages. For example, British English is mapped to English, and European Portuguese is mapped to Brazilian Portuguese.

Unsupported languages may be displayed in the original text.

Language
Language Code
Similar Language Variants

English

en

en-us, en-gb, etc.

Hindi

hi

hi-in, etc.

Portuguese (Brazil)

pt-br

pt, pt-pt, etc.

If translation text is not provided for a language, the content may be displayed in the default language (source text). To ensure proper world activation and a consistent user experience, it is recommended to provide translations for all supported languages.

How to Use

  1. The Localization feature is available after publishing your world. (If your world has not been published, you must publish it first.)

  2. In Studio, go to Game Settings > Localization and enable Automatic Text Collection (ATC) and Use Translated Content. (Clicking the Edit in Hub button will take you to the Localization management page in the Creator Hub.)

  3. Run a play test.

  4. During the test, when text appears in UI or ProximityPrompt, it is automatically registered for collection. (The collection process is handled internally, and there is a limit to the number of texts that can be collected in a single play test. If this limit is exceeded, additional texts will not be collected and a warning log will be generated.)

  5. When the play test ends, the collected texts are automatically added to the translation table in the Creator Hub, and translation entries are created for all supported languages.

  6. You can review the registered texts in the Creator Hub and enter/manage translations for each language. (Be sure to click the Save button after entering translations.)

  7. Low-frequency or conditional texts that are difficult to collect via ATC can be manually added via CSV in the Table Management tab of the Creator Hub.

  8. World metadata such as the world name and description is provided by default.

Translation Testing

You can preview translations by selecting a language in Localization Preview, and you can also change the language during gameplay.

상세

Automatic Text Collection (ATC)

During play tests in the Studio environment, when text is displayed in UI or ProximityPrompt, it is automatically collected. The collected text is then registered in the Creator Hub’s translation table when the play session ends.

Collection Targets

  • Text properties of TextLabel and TextButton (Text)

  • Interaction text properties of ProximityPrompt (ActionText, ObjectText)

Collection Conditions

Text is collected only when the following conditions are met:

  • Automatic Text Collection (ATC) is enabled

  • The environment is a Studio play test (not supported in mobile environments)

  • The AutoLocalize property is enabled for UI or ProximityPrompt

    • For UI, AutoLocalize must be enabled on both parent and child UI elements

How It Works

  • Text displayed on the screen is collected in real time during gameplay

    • In the Hub, the Location field records the path where the text was collected (e.g., StarterGui.ScreenGui.TextButton)

  • Text dynamically assigned via scripts is also included in the collection

  • Text that is already registered in the Hub will not be duplicated

  • Collected text is sent to the Hub when the play session ends

Collection Limits

  • There is a limit to the number of texts that can be collected in a single play test

  • If the limit is exceeded, additional texts will not be collected and a warning log will be generated

  • If excessive text generation occurs (e.g., repeatedly assigning text in a loop), review the structure and rerun the play test

  • For texts that should not be collected, make sure to disable the AutoLocalize property

Applying Translated Text

During a play test, when text is displayed in UI or ProximityPrompt, if that text is registered in the Creator Hub and a translated version exists, the translation is automatically applied.

Translation Targets

  • Text in TextLabel and TextButton

  • Interaction text in ProximityPrompt

Conditions for Applying Translation

  • Use Translated Content is enabled

  • The translation is applied when running a play test in Studio or when the world is accessed from a mobile environment

  • The AutoLocalize option is enabled for UI or ProximityPrompt

    • For UI, translation is applied only when AutoLocalize is enabled on both parent and child UI elements

When Changes Are Applied

  • Changes to translation data are applied after restarting the play test or rejoining the world

  • In mobile environments, changes may not appear immediately and can take up to about 5 minutes to be reflected

Context-Based Translation Rules

Translations are applied based on the Context value and the location of the UI or ProximityPrompt, as follows: (This rule also applies when using the Translate method.)

For example, if the following entries are registered in the Hub:

Source
Translated Text
Context
Notes

κ°•ν™”

Enhance

Default translation

κ°•ν™”

Item Enhance

PlayerGui.ScreenGui.ItemPopup.EnhanceButton

UI-specific

κ°•ν™”

Enhance Monster

ServerStorage.Monster.NameTag.GradeLabel

  • If the Context matches, the corresponding translation is applied

    • For example, if the path of the UI or ProximityPrompt is PlayerGui.ScreenGui.ItemPopup.EnhanceButton, β†’ Item Enhance is applied

  • If the Context does not match, the translation with only the Source (default translation) is applied

    • If the UI or ProximityPrompt path does not match any Context above, β†’ The default translation ("κ°•ν™”") is applied

  • If there is no default translation, a Context-based translation may be applied instead

    • For example, if there is no default translation for β€œκ°•ν™”β€ but only Context-based translations exist, β†’ Item Enhance or Enhance Monster may be applied

Managing Translation Data

Localization Page

In Studio, go to Game Settings > Localization and click the Edit in Hub button to navigate to the Localization management page in the Creator Hub.

Alternatively, you can access it from the Localization tab by selecting your world in the Dashboard of the Creator Hub.

Managing Translation Text

In the Languages tab, selecting a language will take you to a page where you can manage translations for both world information and in-game text for that language.

Alternatively, you can navigate to the Translation Workspace tab.

Managing World Information

In the Information tab, you can enter translated text for the World Name and Description for each supported language. All changes are recorded in the Translation History.

Managing In-Game Text

In the Strings tab, you can enter translated text for in-game data for each supported language. All changes are recorded in the Translation History.

By selecting an entry, you can edit or delete the registered translation data.

By default, texts collected during play tests via ATC are automatically registered. You can also manually add entries using the Add Entry button.

When adding entries manually, the input fields are structured as follows. After entering the required information, click the Add button to register the translation entry.

Texts with the same source can only be registered multiple times if their Context values are different.

Name
Description
Example

Text to translate

Source text used as the basis for translation

Level

Key

Unique identifier for the translation entry (optional)

UI_Text_Level

Context

UI location where the text is used (optional)

PlayerGui.PlayerHUD.TopFrame.Lv

Example

Additional description for translation reference (optional)

Text displayed for player level UI

Managing Settings

In the Settings tab, you can enable or disable options for Automatic Text Collection and Use Translated Content.

These settings are synchronized with Studio, and any changes made in Studio are also reflected in the Hub.

Table Management

In the Table Management tab, you can download translation data as a CSV file or upload a CSV file to modify it.

For low-frequency UI or conditional UI, it may be difficult to collect text using ATC alone. In such cases, it is recommended to define the required data in advance in a CSV file and upload it, rather than relying solely on ATC.

  • Upload CSV: Upload a CSV file to add or modify in-game text and translation data. Only changes based on existing data are applied.

  • Download CSV: Download the current translation table as a CSV file. You can review the translation status or modify the file and upload it again.

  • Delete Table: Deletes all in-game data registered in the translation table. This action cannot be undone, so use it with caution.

Script Features

Checking Locale Information

You can use LocalizationService to retrieve language-related information for both the player and the system.

This allows you to handle logic differently based on the player’s language settings or region.

ClientLocaleId and SystemLocaleId return the locale of the execution environment. While they reflect the player's locale on the client, they return the server's locale when used on the server.

Therefore, they are not recommended for use on the server when player-specific locale handling is required.

Getting a Translator

A Translator is an object used to perform translations based on a specific language. It is used to retrieve translated text.

Handling Translation via Script

When text varies depending on variables (such as item names or levels), or when the same source text requires different translations depending on context, you can handle translation through scripts.

Key-Based Translation (FormatByKey)

FormatByKey retrieves translated text based on a Key. Values that need to be substituted within the sentence (such as item name, level, etc.) are passed through Args.

This method is suitable for handling text where the sentence structure changes depending on context, such as item names, levels, or quantities.

The names and number of values passed in Args must exactly match those defined in the translation data in the Hub.

The following data types can be passed to Args.

  • number

  • string

  • bool

  • instance (name)

  • CFrame

  • Vector3

  • Vector2

  • Color3

  • BrickColor

  • MenuItem

Context-Based Translation (Translate)

In general, the source text used as the basis for translation must be unique. However, if the Context differs, multiple entries can be registered as separate translation data.

This allows the same source text β€œκ°•ν™”β€ to be translated differently depending on the situation, such as item enhancement (Enhance), skill enhancement (Upgrade), or enchanted enemies (Enchanted), with Context used to distinguish between them.

Retrieving Translated Text with LocalizedText

LocalizedText is a property that returns the translated text based on the current language.

It can be used to verify the actual translated text displayed in the UI. (It is not available for ProximityPrompt.)

Use Cases

  • Providing world names and descriptions in multiple languages helps effectively expose your world to global users and increase user acquisition.

  • Providing UI, buttons, and guidance messages in the player’s language improves game understanding and reduces churn.

  • Even in multilingual environments where sentence structures differ, using FormatByKey allows you to construct natural sentences for each language.

  • Applying context-based translations (Context) to identical text enables more natural expressions and improves user experience.

Last updated