Learn how game text is stored, referenced and localized.
Most tuning does not store player-facing text directly. Instead, resources reference localized strings stored in STBL resources. Understanding keys, locale tables and runtime tokens makes traits, buffs, interactions, careers, objects and UI much easier to edit safely.
1. The big picture
The Sims 4 separates most player-facing text from gameplay tuning.
A trait, buff or interaction can contain a reference to a string key, while the actual localized text lives inside an STBL resource.
Defines the gameplay resource and contains fields that reference localized text.
A numeric identifier that points to a localized string.
A String Table resource containing keys and their text for one locale.
The language/region version of that string table.
2. What is an STBL?
STBL means String Table. It stores localized text entries as key/value pairs.
Conceptually:
0x12345678 → "Certified Mechanic"
0x23456789 → "This Sim knows their way around an engine."
0x34567890 → "Repair Vehicle"
The visible text is not identified by its wording. It is identified by its key.
That allows one tuning resource to display different text depending on the player’s game language.
Trait tuning
→ display name key 0x12345678
→ EN: "Certified Mechanic"
→ DE: "Zertifizierter Mechaniker"
→ ES: "Mecánico certificado"
→ RU: "Сертифицированный механик"
→ JA: "認定メカニック"
3. Localization keys
A localization key or string key is the identifier used to find a text entry in an STBL.
Same key, different language
Key 0x12345678
EN → "Certified Mechanic"
DE → "Zertifizierter Mechaniker"
ES → "Mecánico certificado"
RU → "Сертифицированный механик"
JA → "認定メカニック"
Do not create a new key just because you are translating a string. New keys are for genuinely new strings.
4. String tokens and placeholders
Some STBL values are not complete static sentences. They contain tokens that the game replaces with runtime values such as a Sim name, number, amount of money or another string.
Hello, {0.SimFirstName}!
If token slot 0 contains Bella Goth, the displayed text can become:
Hello, Bella!
Common forms include:
| Token | Meaning |
|---|---|
{0.SimFirstName} |
First name of a Sim/value supplied in token slot 0 |
{0.SimName} |
Full Sim name from slot 0 |
{0.SimLastName} |
Last name from slot 0 |
{1.SimFirstName} |
First name from token slot 1 |
{0.Number} |
Number supplied in slot 0 |
{0.Money} |
Money value supplied in slot 0 |
{0.String} |
Another dynamic/localized string supplied in slot 0 |
What do 0, 1, 2… mean?
The number is the token argument index.
0 = first supplied token
1 = second supplied token
2 = third supplied token
3 = fourth supplied token
…
For example:
{0.SimFirstName} greeted {1.SimFirstName}.
If slot 0 contains Bella and slot 1 contains Mortimer, the result is:
Bella greeted Mortimer.
The system displaying the string decides which runtime values are placed into token slots 0, 1, 2 and so on. The mapping must be read from the caller/context.
The same index is used by grammatical branches:
{M0.He}{F0.She} → gender of token slot 0
{M1.He}{F1.She} → gender of token slot 1
{M2.He}{F2.She} → gender of token slot 2
Changing the number changes the runtime value that controls the branch.
Gender branches: M and F
Gender branches allow one string to contain alternative text for a Sim token.
{M0.actor}{F0.actress}
The letter selects the branch; the number selects whose gender controls it.
M0 / F0 → token 0
M1 / F1 → token 1
M2 / F2 → token 2
Branch only the part that changes
A branch does not need to contain a whole word. If two forms share a stem, keep the common text outside the token and put only the changing ending inside it.
| Language | Example | What changes? |
|---|---|---|
| English | {0.SimFirstName} is ready. |
No gender branch needed in this sentence. |
| German | {0.SimFirstName} ist bereit. |
No gender branch needed in this sentence. |
| Spanish | {0.SimFirstName} está cansad{M0.o}{F0.a}. |
The adjective ending changes. |
| Russian | {0.SimFirstName} устал{F0.а}. |
The feminine ending is added to the base form. |
| Japanese | {0.SimFirstName}は準備ができている。 |
No grammatical male/female branch is needed. |
Use a whole word or phrase only when the forms differ enough that a shared stem is no longer practical.
Singular and plural branches
S and P are used for singular/plural logic, not for English custom pronouns.
Craft {0.Number} {S.candle}{P.candles}
Do not confuse P1 with “pronoun 1”. The P prefix belongs to pluralization syntax; English pronoun tokens use forms such as {1.SimPronounSubjective}.
English custom-pronoun tokens
English has special dynamic pronoun placeholders because Sims can use He/Him, She/Her, They/Them or custom pronouns.
| Token | Role |
|---|---|
{0.SimPronounSubjective} |
subject pronoun |
{0.SimPronounObjective} |
object pronoun |
{0.SimPronounPossessiveDependent} |
possessive before a noun |
{0.SimPronounPossessiveIndependent} |
standalone possessive |
{0.SimPronounReflexive} |
reflexive pronoun |
The leading number still means the token index:
{0.SimPronounSubjective} → pronoun for token 0
{1.SimPronounSubjective} → pronoun for token 1
Other locales often use M/F branches or rewrite the sentence instead of reproducing the English custom-pronoun system directly.
Participants & Resolvers explains roles such as Actor and TargetSim. The caller decides which of those values, if any, are supplied as token 0, token 1, token 2 and so on.
5. How tuning connects to text
Many tuning classes expose localized string fields such as display names, descriptions, interaction names, tooltips, notification text, picker titles, career titles and buff/trait text.
The exact field name depends on the tuning class.
A custom trait can contain a display-name field pointing to string key 0x12345678. If the English STBL contains that key with the value Certified Mechanic, that is what an English game displays.
Missing strings
If the active locale does not contain the expected key/value, the player can see missing or blank text, a placeholder, raw-looking output or other fallback behavior depending on the UI path.
If an interaction executes correctly but its label is empty, inspect the string reference and locale STBL before changing the gameplay tuning.
6. Supported languages and locale codes
The Sims 4 supports 18 game locales.
| Language | Locale code |
|---|---|
| English (US) | en_US |
| German | de_DE |
| French (France) | fr_FR |
| Russian | ru_RU |
| Polish | pl_PL |
| Swedish | sv_SE |
| Spanish (Spain) | es_ES |
| Italian | it_IT |
| Dutch | nl_NL |
| Norwegian | nb_NO |
| Danish | da_DK |
| Finnish | fi_FI |
| Portuguese (Brazil) | pt_BR |
| Czech | cs_CZ |
| Chinese (Traditional) | zh_TW |
| Chinese (Simplified) | zh_CN |
| Japanese | ja_JP |
| Korean | ko_KR |
For custom Sims 4 mods, author the original strings in the English (`en_US`) STBL. Do not treat the source/primary language as an arbitrary choice when building a normal multilingual mod.
7. English fallback for untranslated locales
Every locale resource should contain a usable value for every string key your mod exposes to players.
If you do not yet have a translation for a language, copy the English text into that locale’s STBL instead of leaving the value empty.
For example:
Key 0x12345678
EN → "Certified Mechanic"
DE → "Zertifizierter Mechaniker"
ES → "Certified Mechanic" ← English fallback
RU → "Certified Mechanic" ← English fallback
JA → "認定メカニック"
The player may see English for an untranslated string, but they will not see a deliberately empty label.
STBL Studio vs Sims 4 Studio
Frankk’s Online STBL Studio handles this fallback workflow for you when creating localization projects: untranslated language entries can be populated from the English source instead of being left blank.
If you build or maintain STBL resources manually in Sims 4 Studio, you need to ensure this yourself. Create the locale STBL and copy the corresponding English values for every key that has not yet been translated.
Keeping all keys synchronized across English and every other shipped locale also makes later translation updates much easier to audit.
8. Localizing and translating mods
There are two related but different jobs:
Create stable string keys, author the English source text, reference those keys from tuning and ship synchronized locale STBLs.
Take those existing keys and replace the English fallback value with equivalent text for another supported locale.
A translator normally should not need to edit gameplay tuning. The task is to preserve every key and token relationship while translating the text values.
For the screenshot-based workflow in STBL Studio and language-specific grammar guidance, see Translating Sims 4 Mods.
9. Overrides, conflicts and custom strings
Custom string
A custom mod normally uses its own stable string keys. This avoids replacing EA text and keeps the mod self-contained.
String override
If a package provides a different value for an existing EA string key in the same locale, it can replace the displayed text wherever that key is used.
Before overriding an EA string, check where the key is referenced. Changing a shared string can alter text in multiple unrelated interfaces.
Key collisions
Two custom mods using the same custom string key for different text can conflict. Good tooling and consistent key-generation practices reduce this risk.
10. A practical localization workflow
Author the original string in the English en_US STBL.
Use the same stable string key from tuning.
Use a real translation where available; otherwise copy the English value.
Keep runtime argument numbers and grammatical relationships intact.
Check names, descriptions, tooltips, notifications, picker text and token-heavy strings in game.
Common beginner mistakes
1Using a non-English locale as the source instead of authoring the original string in en_US.2Leaving untranslated locale values empty instead of copying the English fallback.3Creating a new key for a translation instead of reusing the English key.4Changing token indices such as 0/1/2 and accidentally making grammar depend on the wrong runtime value.5Changing an EA key without checking where else it is used.6Assuming a blank UI label means the gameplay tuning itself is broken.Quick reference
| Term | Meaning |
|---|---|
| STBL | String Table resource containing localized text |
| String key | Identifier shared across locale versions of the same string |
| English STBL | Source/original text for a normal custom mod (en_US) |
| Locale | Language/region version of an STBL |
| Token index | Runtime argument slot: 0, 1, 2… |
| M/F | Gender-dependent branches tied to a token index |
| S/P | Singular/plural branch syntax |
| English fallback | English text copied into a locale until a real translation exists |
| Override | Replacing the value of an existing key |
| Key collision | Two unrelated resources unintentionally using the same key |
Gameplay tuning references a key; English defines the source text; every shipped locale provides a value for that same key; and tokens insert runtime data into the final sentence.