Language & Localization¶
Jinbocho is fully translated into four languages. Each family member can use the app in their preferred language.
Supported Languages¶
| Language | Code | Coverage |
|---|---|---|
| 🇬🇧 English | en |
100% |
| 🇮🇹 Italian | it |
100% |
| 🇪🇸 Spanish | es |
100% |
| 🇫🇷 French | fr |
100% |
All screens, buttons, error messages, form validations, and notifications are translated in all four languages.
Changing Your Language¶
From Profile¶
- Click your name or avatar (top-right corner)
- Select Profile (or Profilo / Perfil / Profil)
- Under Language, select your preferred language from the dropdown
- Click Save — the interface switches immediately
From the Language Menu¶
A language selector is also available:
- Click the globe icon (🌐) in the top-right corner
- Select your language from the list
- The change is applied immediately, no reload required
How Language Preference is Saved¶
Your language preference is stored in two places:
flowchart LR
A[User selects language] --> B[Saved to localStorage]
A --> C[Saved to user profile on server]
B --> D[Applied on next page load\neven before login]
C --> E[Restored when logging in\nfrom a new device]
- localStorage — the language is remembered in your browser, even before you log in
- Server profile — the language travels with your account to other devices
When you log in on a new device, the app uses your saved language preference automatically.
Form Validation Messages¶
Validation messages (for example, "Title is required" or "Invalid email") are also translated. They appear in the same language as the interface.
Title is required.
Email address is not valid.
Password must be at least 8 characters.
Il titolo è obbligatorio.
L'indirizzo email non è valido.
La password deve contenere almeno 8 caratteri.
El título es obligatorio.
La dirección de correo no es válida.
La contraseña debe tener al menos 8 caracteres.
Le titre est obligatoire.
L'adresse e-mail n'est pas valide.
Le mot de passe doit contenir au moins 8 caractères.
Mixed-Language Families¶
Each family member chooses their own language independently. The library data (book titles, authors) is not translated — it reflects whatever was stored when the book was added (usually the language of the book itself).
The interface language is what changes per-user, not the content.
Book Metadata Language vs Interface Language¶
These are two separate things:
| Thing | What it is | Set by |
|---|---|---|
| Interface language | The language of buttons, menus, messages | User preference |
| Book language | The language the book is written in | Set during book entry |
When filtering by "language", you filter by the book's language (the language field in the metadata), not by your interface language.
Reporting Translation Issues¶
If you find an incorrect or missing translation:
- Open a GitHub issue at
https://github.com/carmelolagamba/workspace-jinbocho/issues - Include: the screen where you found it, your language setting, what you expected
- Translations are in
jinbocho-fe/src/locales/— contributions welcome!
Translation files location¶
jinbocho-fe/src/locales/
├── en.json ← English (reference)
├── it.json ← Italian
├── es.json ← Spanish
└── fr.json ← French