Overview
Obsidian Chess Studio is committed to making professional chess analysis accessible to players worldwide. The application supports 17+ languages with community-contributed translations.Supported Languages
🇺🇸 English (US)
100% - Base language
🇪🇸 Spanish
99% - Nearly complete
🇩🇪 German
77% - Partial
🇫🇷 French
77% - Partial
🇯🇵 Japanese
77% - Partial
🇷🇺 Russian
77% - Partial
🇨🇳 Chinese
77% - Partial
🇮🇹 Italian
77% - Partial
🇵🇱 Polish
77% - Partial
Translation percentages are automatically calculated based on the number of translated keys compared to English (US).
Translation Structure
Translations are organized insrc/locales/ with one directory per language:
common.json file with nested translation keys:
Adding a New Language
Follow these steps to add a new language to Obsidian Chess Studio:Create Language Directory
Create a new directory using the language code:Language codes:
- Use ISO 639-1 codes (e.g.,
ko,vi,th) - For regional variants, use
language-REGION(e.g.,pt-BR,en-GB)
Update Missing Translations
Run the script to add any missing keys:This automatically adds missing keys with placeholder values.
Updating Existing Translations
Check for Missing Keys
Run the update script:This finds keys in
en-US that are missing from your language.Translation Scripts
Update Missing Translations
- Compares each language to
en-US - Adds missing keys with
"[MISSING]"placeholders - Preserves existing translations
- Updates all language files
Update README
- Calculates translation percentage for each language
- Updates the translation table in
README.md - Sorts languages by completion percentage
Translation Guidelines
General Rules
Preserve Formatting
Preserve Formatting
Keep special syntax unchanged:Translate to:Don’t remove
{{variables}}!Chess Terminology
Chess Terminology
Use standard chess terms in your language:English → Spanish:
- “Checkmate” → “Jaque mate”
- “Stalemate” → “Ahogado”
- “Castle” → “Enroque”
- “Pawn” → “Peón”
- “Knight” → “Caballo”
- “Checkmate” → “Schachmatt”
- “Castle” → “Rochade”
- “Knight” → “Springer”
Context Matters
Context Matters
Some words have different meanings based on context:Check where the key is used before translating.
Keep Similar Length
Keep Similar Length
Try to keep translations roughly the same length as English to avoid UI overflow:
- Short: Button labels, menu items
- Can be longer: Descriptions, help text
Special Cases
- Pluralization
- Date/Time Formats
- Chess Notation
- Keyboard Shortcuts
Testing Translations
In Development
Change Language
In the app:
- Go to Settings → Appearance
- Select your language from the dropdown
- The app reloads with your translations
Automated Testing
Submitting Translations
Translation Progress
Check current translation status:Getting Help
Translation Issues
Report missing or incorrect translations
Discussions
Ask questions about translations
Next Steps
Contributing Guide
Learn the full contribution workflow
Development Overview
Understand the codebase
