> For the complete documentation index, see [llms.txt](https://docs.rainmad.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.rainmad.com/resources/bank-truck-robbery-4-in-1/translate-strings.md).

# Translate Strings

All player-facing text (notifications, menus, prompts) lives in one locale file.

{% stepper %}
{% step %}

### Copy the locale file

Copy `rm_banktruckrobbery/locales/en.json` to `rm_banktruckrobbery/locales/<code>.json` (e.g. `de.json`).
{% endstep %}

{% step %}

### Translate the values

Translate the values. Keys stay as they are; `%s` placeholders must survive, and in the same order.
{% endstep %}

{% step %}

### Set the locale

```lua
cfg.locale = 'de'
```

{% endstep %}
{% endstepper %}

Missing keys fall back to showing the key name, so a partial translation still runs.

## Item names

The locale file does not cover the four items. Those names come from your inventory, so rename them where you added them (`ox_inventory/data/items.lua`, your `qb-core` shared items, or the ESX database).

The labels in the NPC's shop menu are separate again, and live in `data/prices.lua`:

```lua
cfg.prices.buy = {
    ['WEAPON_DRILL'] = { label = 'Portable Drill', price = 5000, moneyType = 'cash' },
    ...
}
```
