-
Notifications
You must be signed in to change notification settings - Fork 170
Description
Summary
Move translation management from Transifex to an AI-based workflow that keeps translations fully within our repository. This will reduce external dependencies, enable faster iteration on translations, and provide better context-aware translations.
Background
Currently, Vorta uses Transifex for community translation management:
- Translatable strings are extracted from Python/UI files using
pylupdate5 - English source file (
vorta.en.ts) is pushed to Transifex - Community translators work on Transifex's web interface
- Translated
.tsfiles are pulled back and compiled to.qmformat
While this has worked well, it introduces:
- External service dependency
- Friction for quick translation updates
- Inconsistent translation quality across languages
- Difficulty maintaining context for technical strings
Current State
Translation files already in repo:
- Source files:
src/vorta/i18n/ts/vorta.{lang}.ts(13 languages) - Compiled files:
src/vorta/i18n/qm/vorta.{lang}.qm
Supported languages: Arabic, Czech, German, English, Spanish, Finnish, French, Galician, Italian, Dutch, Russian, Slovak, Swedish
Transifex integration to remove:
.tx/config- Transifex configurationMakefiletargets:translations-push,translations-pull,translations-update- Reference in
com.borgbase.Vorta.appdata.xml(translate URL) - Contributor references in
CONTRIBUTORS.md - Documentation at https://vorta.borgbase.com/contributing/translations/
Proposed Changes
1. Confirm translations remain in repository
- Keep existing
.tsand.qmfiles structure - Continue using Qt Linguist format for compatibility
- Maintain
translations-from-sourceandtranslations-to-qmMakefile targets
2. Remove Transifex integration
- Delete
.tx/config - Remove
translations-pushandtranslations-pullfrom Makefile - Remove
translations-updatetarget (or repurpose for AI workflow) - Update
com.borgbase.Vorta.appdata.xmlto remove Transifex URL - Update documentation to reflect new workflow
3. Set up AI translation skill
Create a Claude Code skill (or similar) that can:
- Parse
.tsfiles and identify untranslated/fuzzy strings - Generate translations with full application context
- Review existing translations for consistency and accuracy
- Update
.tsfiles with new translations - Compile to
.qmformat after updates
4. Ensure context-aware translations
The AI translation system should have access to:
- String context: The
<context>element in.tsfiles (e.g., "RepoTab", "ArchiveTab") - UI location: Where the string appears (button, label, menu, tooltip)
- Application domain: Backup software terminology (repository, archive, prune, etc.)
- Style guide: Title case for buttons, colon suffixes for labels, etc.
- Existing translations: Maintain consistency with already-translated strings
5. Model selection considerations
Choose a model that:
- Handles technical terminology well
- Supports all 13 target languages
- Can maintain consistent tone/style across translations
- Is cost-effective for periodic batch updates
Implementation Tasks
-
Phase 1: Cleanup
- Remove Transifex configuration and Makefile targets
- Update documentation
-
Phase 2: AI Skill Development
- Create skill to parse Qt
.tsfiles - Implement translation generation with context
- Add review/update capabilities
- Integrate with existing
translations-to-qmworkflow
- Create skill to parse Qt
-
Phase 3: Validation
- Test translations in running application
- Verify RTL support (Arabic) works correctly
- Ensure no regressions in existing translations
Files to Modify
.tx/config- DELETEMakefile- Remove Transifex targets, add AI workflow targetssrc/vorta/assets/metadata/com.borgbase.Vorta.appdata.xml- Remove translate URLCONTRIBUTORS.md- Update translation contributor acknowledgments- Documentation site - Update translation workflow docs
Open Questions
- Should we maintain a way for community members to contribute translations manually (PRs with
.tsfile changes)? - What review process should AI-generated translations go through before merging?
- Should we expand to additional languages now that the barrier to entry is lower?
Related Links
- Current translation docs: https://vorta.borgbase.com/contributing/translations/
- Qt Linguist format: https://doc.qt.io/qt-6/linguist-ts-file-format.html
Notes for Implementation
The skill should be able to run commands like:
# Review and update German translations
/translate-review de
# Generate missing translations for all languages
/translate-missing
# Full translation update cycle
/translate-update