Multi-language support with locale switching, string lookup, and variable interpolation. Ships with English, Spanish, and French.
The i18n system uses a key-based translation approach:
1. Each string has a dotted key (e.g., app.welcome, chat.send)
app.welcome
chat.send
2. Keys are organized by namespace: app, chat, nav, error
app
chat
nav
error
3. Variable interpolation: {name} placeholders are replaced at lookup time
{name}
4. Unknown keys return the key itself as fallback
| Locale | Language | Strings |
|--------|----------|---------|
| en | English | 11 |
en
| es | Spanish (Español) | 11 |
es
| fr | French (Français) | 11 |
fr
| Endpoint | Method | Description |
|----------|--------|-------------|
| /api/i18n/locales | GET | List available locales |
/api/i18n/locales
| /api/i18n/strings/{locale} | GET | Get all strings for a locale |
/api/i18n/strings/{locale}
| /api/i18n/translate | POST | Translate a key with optional variables |
/api/i18n/translate
| /api/i18n/locale | GET | Get current default locale |
/api/i18n/locale
| /api/i18n/locale | POST | Set default locale |