Add internationalization (i18n) support with English and Russian locales

- Add translation JSON files (en.json, ru.json) with 110+ strings each
- Implement locale auto-detection from browser settings
- Add locale toggle button (EN/RU) with localStorage persistence
- Translate all user-facing text: auth, player, scripts, callbacks
- Fix dynamic content translation on locale switch (playback state, track title)
- Add comprehensive i18n documentation to CLAUDE.md
- Follow existing theme toggle pattern for consistency

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-02-06 04:27:50 +03:00
parent a0af855846
commit 9bbb8e1bd7
4 changed files with 464 additions and 46 deletions

View File

@@ -34,6 +34,43 @@ The API token is generated on first run and displayed in the console output.
Default port: `8765`
## Internationalization (i18n)
The Web UI supports multiple languages with translations stored in separate JSON files.
### Locale Files
Translation files are located in:
- `media_server/static/locales/en.json` - English (default)
- `media_server/static/locales/ru.json` - Russian
### Maintaining Translations
**IMPORTANT:** When adding or modifying user-facing text in the Web UI:
1. **Update all locale files** - Add or update the translation key in **both** `en.json` and `ru.json`
2. **Use consistent keys** - Follow the existing key naming pattern (e.g., `section.element`, `scripts.button.save`)
3. **Test both locales** - Verify translations appear correctly by switching between EN/RU
### Adding New Text
When adding new UI elements:
1. Add the English text to `static/locales/en.json`
2. Add the Russian translation to `static/locales/ru.json`
3. In HTML: use `data-i18n="key.name"` for text content
4. In HTML: use `data-i18n-placeholder="key.name"` for input placeholders
5. In HTML: use `data-i18n-title="key.name"` for title attributes
6. In JavaScript: use `t('key.name')` or `t('key.name', {param: value})` for dynamic text
### Adding New Locales
To add support for a new language:
1. Create `media_server/static/locales/{lang_code}.json` (copy from `en.json`)
2. Translate all strings to the new language
3. Add the language code to `supportedLocales` array in `index.html`
## Versioning
Version is tracked in two files that must be kept in sync: