Localization Guide

Translate the oxide-banking screen, ATM, prompts, command help, and notifications with ox_lib JSON locale files.

The banking screen, the ATM, the bank and ATM prompts, command help, and most notifications can be translated by editing simple text files. No coding needed.

Where The Text Lives

Translations are JSON files in the locales/ folder. The resource ships with English:

  • locales/en.json

Each line is a key (the name the code looks up) and a value (the text players see):

locales/en.json
"success_withdraw": "Successfully withdrew $%s",
"target_open_bank": "Open Bank",
"tiers_basic": "Basic"

You only ever change the part after the colon. Never change the key on the left.

What Is Not In The Locale Files

Some text does not come from locales/:

  • Names set in the config files, such as bank location names, loan and investment product names, savings goal categories, and expense categories. Translate these by editing them in config/.
  • Some notifications and messages are still English-only. For example, several loan, investment, interest, and security notifications, and many error messages the server sends back to the banking screen (such as "Insufficient funds"). They cannot be changed from locales/ in this version.
  • Server console output from admin commands such as /viewplayeraccounts is English.

Adding A New Language

Copy locales/en.json and name the copy after your language code — for example locales/es.json for Spanish.

Translate the values (right side only). Keep every key unchanged.

Tell ox_lib which language your server uses, if you haven't already, by adding this to server.cfg:

server.cfg
setr ox:locale es

This is the same setting used by all your other ox_lib-based resources.

Restart oxide-banking and check the bank in game.

New locale files are picked up automatically — you don't need to edit the manifest.

Translation Tips

  • Keep placeholders like %s and %d exactly where they make sense in your language — they get replaced with amounts, names, and numbers at runtime. Removing one breaks the message.
  • JSON is picky: every line except the last needs a comma at the end, and text must stay inside double quotes. If the bank suddenly shows raw key names like ui_services_tab_bills, your file probably has a syntax error — paste it into an online JSON checker to find it.
  • If you update the resource later, compare your language file against the new en.json — new features may add new keys.

Missing keys behave differently by place

A key missing from your language file shows as English in chat notifications, but as the raw key name on the banking screen. The banking screen does not fill in missing keys from English.

Checking Your Translation

  1. Restart oxide-banking.
  2. Open the bank — menus and labels should be translated.
  3. Make a deposit or withdrawal — the notification should be translated.
  4. Walk to an ATM — the prompt/target label should be translated.
  5. Watch the server console on startup for JSON or locale errors.