Help make Ultra Card accessible to users worldwide! We welcome translation contributions from the community.
- 🇨🇿 Czech (
cs.json) - 🇩🇰 Danish (
da.json) - 🇩🇪 German (
de.json) - 🇬🇧 British English (
en-GB.json) - 🇺🇸 English (
en.json) - Base language - 🇪🇸 Spanish (
es.json) - 🇫🇷 French (
fr.json) - 🇮🇹 Italian (
it.json) - 🇳🇴 Norwegian Bokmål (
nb.json) - 🇳🇱 Dutch (
nl.json) - 🇳🇴 Norwegian Nynorsk (
nn.json) - 🇳🇴 Norwegian (
no.json) - 🇵🇱 Polish (
pl.json) - 🇸🇪 Swedish (
sv.json)
- Navigate to translations: Go to
src/translations/on GitHub - Choose your language: Click on your language file (e.g.,
de.jsonfor German) - Edit directly: Click the pencil icon (✏️) to edit
- Make changes: Update the translation values (right side of colons only)
- Commit changes: Scroll down, add a commit message like "Update German translations"
- Create Pull Request: GitHub will automatically prompt you to create a PR
- Fork this repository to your GitHub account
- Clone your fork:
git clone https://github.com/YOUR-USERNAME/Ultra-Card.git - Edit translation files in
src/translations/ - Test locally (optional): Run
npm run validate:translations - Commit and push:
git add src/translations/ git commit -m "Translation: Update [Language] translations" git push origin main - Create Pull Request from your fork to the main repository
- Translate values only: Only change text on the right side of colons
- Keep JSON structure: Maintain exact same hierarchy and keys
- Use appropriate tone: Match Home Assistant's UI language style
- Preserve placeholders: Keep
{count},{value},{ratio}unchanged - Test your JSON: Ensure valid JSON syntax (use online validator if needed)
- Use proper terminology: Use established Home Assistant terms in your language
- Change JSON keys: Never modify the left side of colons
- Translate technical terms: Keep "Home Assistant", "Jinja2", "YAML" as-is
- Remove placeholders: Keep
{count},{value}, etc. in place - Modify HTML tags: Keep
<br/>,<strong>, etc. unchanged - Change file structure: Don't add/remove sections
English (en.json):
{
"editor": {
"modules": {
"icons_configured": "{count} icons configured"
}
}
}German translation (de.json):
{
"editor": {
"modules": {
"icons_configured": "{count} Symbole konfiguriert"
}
}
}- Copy base file: Copy
src/translations/en.jsontosrc/translations/[language-code].json - Use ISO 639-1 codes:
de(German),fr(French),pt(Portuguese), etc. - Translate all values: Go through each section systematically
- Submit PR: Create pull request with title "Translation: Add [Language] support"
Use JSONLint to validate your JSON syntax.
If you have Node.js installed:
npm install
npm run validate:translationsBefore submitting your PR:
- JSON syntax is valid (no trailing commas, proper quotes)
- All placeholders preserved (
{count},{value},{ratio}) - No keys were modified (left side of colons)
- Appropriate tone and terminology used
- Tested in a JSON validator
- New language:
Translation: Add [Language] support - Updates:
Translation: Update [Language] translations - Fixes:
Translation: Fix [Language] translation errors
## Translation Contribution
**Language**: [Language Name] (`[code].json`)
**Type**: [New language / Update / Fix]
### Changes Made:
- [Describe your changes]
### Testing:
- [ ] JSON syntax validated
- [ ] Placeholders preserved
- [ ] Appropriate terminology used
### Notes:
[Any additional context or questions]- Questions? Open an issue with the
translationlabel - Join Discord: [Link to Discord server]
- Discussions: Use GitHub Discussions for translation coordination
All contributors will be credited in our release notes and README. Thank you for helping make Ultra Card accessible worldwide! 🌍
Need help? Don't hesitate to ask questions in the issues or discussions section. We're here to help!
src/translations/, not dist/. The maintainer will handle the build process.