Seven locales and one JSON file per namespace make drift a matter of time — and
vue-i18n answers a missing key by printing the key, so a gap surfaces as a button
labelled `duxt.nav.open` on a page nobody opened in that language.

::devtools-panel{tab="i18n"}
::

## Columns

| Column            | What it says                                                     |
| :---------------- | :--------------------------------------------------------------- |
| `Directory`       | A folder under `i18n/locales`; `base` marks the one compared against |
| `Keys`            | How many keys it defines in total                                 |
| `Missing vs base` | Keys the base has and this one does not                           |
| `Not in base`     | Keys this one has and the base does not — usually a rename        |

## Notes

**Missing is a fact, not a verdict.** A locale file may deliberately hold only its
deviations: `pt-BR` overrides a handful of strings and reads the rest from `pt`
through the base-language fallback, so a long "missing" list there is the design
working.

**"Not in base" is the one to read twice.** A key nothing else has is usually a
typo or a rename that stopped halfway, and it will print itself on the page.

The line above the table lists the locales the site actually serves, which is a
different list from the folders on disk — several locales can share one folder.