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):
"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
/viewplayeraccountsis 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:
setr ox:locale esThis 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
%sand%dexactly 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
- Restart
oxide-banking. - Open the bank — menus and labels should be translated.
- Make a deposit or withdrawal — the notification should be translated.
- Walk to an ATM — the prompt/target label should be translated.
- Watch the server console on startup for JSON or locale errors.
Exports And Integration Guide
Server and client exports, client events, legacy qb-banking compatibility exports, and the callback surface for developers integrating with oxide-banking.
Troubleshooting Guide
Common oxide-banking problems and fixes — startup, database migrations, the bank not opening, ATMs and cards, money and data, the banking schedule, translations, and conflicts.