Skip to content

Migrate translations from Transifex to AI-based workflow #2359

@m3nu

Description

@m3nu

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 .ts files are pulled back and compiled to .qm format

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 configuration
  • Makefile targets: 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 .ts and .qm files structure
  • Continue using Qt Linguist format for compatibility
  • Maintain translations-from-source and translations-to-qm Makefile targets

2. Remove Transifex integration

  • Delete .tx/config
  • Remove translations-push and translations-pull from Makefile
  • Remove translations-update target (or repurpose for AI workflow)
  • Update com.borgbase.Vorta.appdata.xml to 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 .ts files and identify untranslated/fuzzy strings
  • Generate translations with full application context
  • Review existing translations for consistency and accuracy
  • Update .ts files with new translations
  • Compile to .qm format after updates

4. Ensure context-aware translations

The AI translation system should have access to:

  • String context: The <context> element in .ts files (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

  1. Phase 1: Cleanup

    • Remove Transifex configuration and Makefile targets
    • Update documentation
  2. Phase 2: AI Skill Development

    • Create skill to parse Qt .ts files
    • Implement translation generation with context
    • Add review/update capabilities
    • Integrate with existing translations-to-qm workflow
  3. 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 - DELETE
  • Makefile - Remove Transifex targets, add AI workflow targets
  • src/vorta/assets/metadata/com.borgbase.Vorta.appdata.xml - Remove translate URL
  • CONTRIBUTORS.md - Update translation contributor acknowledgments
  • Documentation site - Update translation workflow docs

Open Questions

  1. Should we maintain a way for community members to contribute translations manually (PRs with .ts file changes)?
  2. What review process should AI-generated translations go through before merging?
  3. Should we expand to additional languages now that the barrier to entry is lower?

Related Links

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    status:planningFor large features, plan it out before implementationtype:translationsProblem with the translations

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions