Migrate translations from Transifex to AI-based workflow#2395
Conversation
|
Hi @m3nu ! So I've tested everything for phases 1 & 2 and it's all working. The Transifex stuff is removed and the new /translate skill does what it should. And I ran /translate review de to test it out and it generated German translations, but honestly I have no clue if they're actually good since I don't speak German lol. Need your help moving forward with the implementation |
|
Cool. I'll try it locally and let you know. |
|
Sure, thanks! Let me know how it goes. |
|
I worked with it a bit and made some related changes in German and added a glossary per-language to keep high level policies. And tried to rid translations of HTML chars. If you think some of my commits are too large, we can move them to another PR. Can you also update the docs to reflect the new workflow? https://vorta.borgbase.com/contributing/translations/ I guess now you can review my changes. 😄 |
|
Can you look into the test failures, @mr-raj12 ? |
|
Hi @m3nu , CI is green now, test failure was caused by his "Remove HTML chars" commit (attribute ordering bug in ssh_dialog.py) |
|
Great. Let me know what you think about the changes in general, the ones I added, and the final state—especially of the skill—so we can merge it. |
|
Hey @m3nu, reviewed your commits, all looks good to me. The glossary approach is smarter one, gives the AI clear rules to follow. Du and the Misc =>Settings rename both make sense. The richtext refactoring is the biggest piece - nice to have translations free of HTML clutter. The one bug it introduced (ssh_dialog.py) is already fixed on my end. |
|
@m3nu All feedback have been addressed, CI is all green, and docs update is up at borgbase/vorta.borgbase.com#57. Ready for your review when you get a chance! Thanking you! |
- Split into /translate translate (generate) and /translate review (QA only) - Fix inconsistent command naming throughout SKILL.md - Add detailed issue reporting for review command - Update workflow examples Addresses @m3nu feedback in PR borgbase#2395
|
Done! The
Pushed in e3f24a8. Ready for review! |
|
Hi @m3nu , shall i update the docs before finalizing this PR? |
|
@m3nu Apologies for the delayed follow-up — docs are now updated in borgbase/vorta.borgbase.com#58. It adds documentation for /translate review, per-language glossaries, quality guidelines, and the full workflow example.
Both PRs are ready whenever you get a chance to review! |
- Remove .tx/config and Transifex Makefile targets - Remove Transifex URL from appdata.xml - Add AI translation skill (/translate commands) - Update CONTRIBUTORS.md to acknowledge transition Closes borgbase#2359
…anslate subcommand
setupUi() calls retranslateUi() which accesses key_size_help_text and key_size_help_link before they were initialized, causing AttributeError in SSHAddWindow constructor.
- Correct passphrase glossary entry: unlocks the borg key, not for data encryption directly - Update FUSE link from osxfuse to macfuse (project was renamed)
…TRIBUTORS wording Replace sequential str.replace with reverse-order replacement (highest %N first) to match Qt's QString::arg() behavior and prevent double- substitution. Add logger.debug warning for unreplaced placeholders. Specify "February 2026" in CONTRIBUTORS.md Transifex note.
9c8f366 to
6608203
Compare
|
Hello. I can understand that the Vorta development team seeks the highest speed to get translations, especially for languages with fewer speakers. However, it seems like a terrible idea that reveals a disturbing future for translators and linguists. Thinking that an AI can produce high-quality translations is currently an insult to translators. English is a language that is especially dependent on context due to its polysemy and homonymy: the same word can be a noun, an adjective, a verb and even an adverb. And, furthermore, said verb may correspond to more than a verb tense, grammatical mood or subject depending on the target language. No AI today is capable of understanding the context of a native speaker to recognize what they should insert in a string, in a simple gap. An AI works statistically and with that same statistic it will fail much more than a human translator. Regards! |
|
@adrianlopezgalera In a perfect world, FOSS projects would have a lot of volunteer and good (human) translators keeping all the translations updated. I didn't follow the translation situation for vorta, but I can say from some other projects that in the real world, there is often a lack of translators and they come and go, so as a project maintainer, you are often in the situation to deal with incomplete translations, chasing translators, etc. As FOSS projects usually can't offer anything (except "fame" maybe), doing translations is often considered a not-so-exciting task (similar as updating the docs) compared to implementing exciting new features. Thus, the interest in that is limited to interested users of the tool who are also speaking English well enough, but still wanting to support a translation to their native non-English language (although they personally could just use the English locale for themselves). @mr-raj12 @m3nu Is this AI workflow able to support AI and human translators? Maybe the AI works OK overall, but does a mediocre job for some strings. If then a human translator would fix these strings manually, would that translation stay or would it likely be overwritten by AI again? |
|
Yess! We keep translations inside the repo now, so a translation update is just a PR. |
Description
This PR migrates Vorta's translation workflow from Transifex to an AI-based approach using Claude Code skills.
Changes:
.tx/config(Transifex configuration)translations-push,translations-pull,translations-update)appdata.xml/translateskill with three commands:/translate missing- Report untranslated string counts per language/translate translate <lang>- Generate translations for a specific language/translate compile- Compile .ts files to binary .qm formatCONTRIBUTORS.mdto acknowledge Transifex contributorssrc/vorta/i18n/richtext.pymodule to separate HTML formatting from translatable strings (@m3nu).claude/skills/translate/glossaries/) (@m3nu)Related Issue
Closes #2359
Motivation and Context
Transifex has been a friction point for translations - external dependency, requires account setup, and translations often lag behind development. This change enables maintainers to:
/translate missing/translate translate <lang>/translate compileHow Has This Been Tested?
Phase 1: Infrastructure removal - COMPLETE
.tx/configdeletedmake help | grep translations)appdata.xmlTransifex URL removedmake lint)Phase 2: Skill functionality - COMPLETE
/translate missingdisplays correct table of all 12 languages/translate translate desuccessfully translated 34 German strings/translate compilecompiles all .ts → .qm filesTest commands to run locally:
Phase 3: Translation generation - German translations included (by @m3nu), other languages as follow-up PRs
Types of changes
Checklist
I provide my contribution under the terms of the license of this repository and I affirm the Developer Certificate of Origin.
Note: Documentation update for vorta.borgbase.com translation guide will be done as a follow-up after this PR is merged.