This guide explains how Cable Modem Monitor handles internationalization (i18n) with AI-assisted translations and community contributions.
| Code | Language | Status |
|---|---|---|
| en | English (US) | Source |
| de | German | ✓ |
| nl | Dutch | ✓ |
| fr | French | ✓ |
| zh-CN | Chinese (Simplified) | ✓ |
| it | Italian | ✓ |
| es | Spanish | ✓ |
| pl | Polish | ✓ |
| sv | Swedish | ✓ |
| ru | Russian | ✓ |
| pt-BR | Portuguese (Brazil) | ✓ |
| uk | Ukrainian | ✓ |
Languages are selected based on Home Assistant user demographics.
custom_components/cable_modem_monitor/translations/
├── en.json # Source of truth (English)
├── de.json # German
├── nl.json # Dutch
├── fr.json # French
├── zh-CN.json # Chinese (Simplified)
├── it.json # Italian
├── es.json # Spanish
├── pl.json # Polish
├── sv.json # Swedish
├── ru.json # Russian
├── pt-BR.json # Portuguese (Brazil)
└── uk.json # Ukrainian
Home Assistant automatically loads the appropriate translation file based on the user's language setting. The translation files contain strings for:
- Config flow: Setup wizard titles, descriptions, field labels, and error messages
- Options flow: Settings page titles, descriptions, and field labels
If you find an error in a translation:
- Fork the repository
- Edit the translation file directly (e.g.,
translations/de.json) - Only change the string values that need correction
- Submit a PR with your correction
Example: Fixing a German error message
// Before
"invalid_auth": "Authentifizierung fehlgeschlagen..."
// After (corrected)
"invalid_auth": "Anmeldung fehlgeschlagen..."Keep these terms unchanged:
- Cable Modem Monitor
- Home Assistant
- DOCSIS
- HNAP
- IP address formats (192.168.100.1)
- Technical terms: ping, HTTP, VPN, WiFi
- Use formal but approachable tone
- Match Home Assistant's existing terminology for your language
- Keep error messages helpful and actionable
- Preserve placeholders like
{detected_modem}and{parser_selected_at} - Test that the JSON is valid before submitting
- Copy
en.jsonto{language_code}.json - Translate all string values
- Test the integration with Home Assistant in that language
- Submit a PR
# Check all translation files are valid JSON
for f in custom_components/cable_modem_monitor/translations/*.json; do
python3 -c "import json; json.load(open('$f'))" && echo "OK: $f"
doneThe translation files follow Home Assistant's translation format:
{
"config": {
"step": {
"user": {
"title": "...",
"description": "...",
"data": { ... },
"data_description": { ... }
}
},
"error": { ... },
"abort": { ... },
"progress": { ... }
},
"options": {
"step": {
"init": { ... }
}
}
}- Install the integration in Home Assistant
- Change your HA language setting to the target language
- Add a new Cable Modem Monitor instance
- Verify all strings display correctly in the config flow
- Check the options page for the integration
Open an issue or reach out on GitHub.