In Bitcoin Core v22.0, we switched from Qt TS to XLIFF translation source file to provide more context, specifically developer notes, to translators on Transifex. That was very useful for translators back then, even though it required some extra complexity on our side.
Since then, Transifex has enabled support for developer notes in Qt TS files as well.
Therefore, I believe we should thank XLIFF for its service and retire it.
In addition to switching back to Qt TS, this PR introduces a few tweaks to the lupdate command (see the corresponding commit messages).
To summarize, this PR brings the following benefits:
-
Removal of obsolete code from the build system.
-
Minimal diffs during translation updates. For a recent example, see https://github.com/bitcoin-core/gui/pull/931. One can also apply the changes from bitcoin/bitcoin#34301 and run
cmake -B build --fresh -DBUILD_GUI=ON && cmake --build build -t translateto observe the new minimal diff. -
More stable string hashes on Transifex. They no longer include string
ids, which makes this PR an alternative to #33270.
As a potential drawback, we are tying ourselves back to Qt’s proprietary translation file format.
I’ve created an experimental resource on Transifex based on this branch: https://app.transifex.com/bitcoin/bitcoin/experimental-do-not-translate. Reviewers can use it to observe Transifex’s support for the various features on the following messages:
- # 11 - Developer Notes
- # 144 - Plurals
- # 510 - A disambiguation string (provided as a second argument to the
tr()function) added to the string context.