Skip to content

Conversation

@hebasto
Copy link
Member

@hebasto hebasto commented Mar 5, 2025

This PR follows our Release Process and concludes the translation-specific efforts for this release cycle. It follows two previous translation-related PRs, #31809 and bitcoin-core/gui#854.

It is one of the steps required before branch-off, as scheduled in #31029.

The previous similar PR: #30715.

Notes for reviewers:

  1. This is the first release process conducted after migrating the build system to CMake. The bitcoin-maintainer-tools/update-translations.py tool, which is used to fetch translations from Transifex.com, still generates the no-longer-needed src/Makefile.qt_locale.include file. Please ignore it.
  2. The actual translations on Transifex is a moving target. Therefore, your diff after running bitcoin-maintainer-tools/update-translations.py might differ.
  3. The translations for the following languages, which appear to be the result of a mistake or an act of vandalism, have been discarded:
    • Czech (cs)
    • Danish (da)
    • Dutch (nl)
  4. Changes to the Thai (th) translation have been discarded due to multiple unsolicited pronunciation notes.

@hebasto hebasto added the GUI label Mar 5, 2025
@hebasto hebasto added this to the 29.0 milestone Mar 5, 2025
@DrahtBot
Copy link
Contributor

DrahtBot commented Mar 5, 2025

The following sections might be updated with supplementary metadata relevant to reviewers and maintainers.

Code Coverage & Benchmarks

For details see: https://corecheck.dev/bitcoin/bitcoin/pulls/32004.

Reviews

See the guideline for information on the review process.

Type Reviewers
ACK glozow
Stale ACK pablomartin4btc

If your review is incorrectly listed, please react with 👎 to this comment and the bot will ignore it on the next update.

@hebasto
Copy link
Member Author

hebasto commented Mar 5, 2025

cc @stickies-v @pablomartin4btc @johnny9 @jarolrod as regular reviewers of similar previous PRs.

cc @glozow as the 29.0 release manager.

@Sjors
Copy link
Member

Sjors commented Mar 7, 2025

I would be useful if the PR describes any major intended changes.

It adds several new languages: ast_ES, ay, or, ps, sa, sm, tn, ve, xh, yi

It almost completely drops Dutch, Czech, Danish and perhaps others (Github can barely load the diff).


It would be great if, in the future, the strings can have canonical ordering, so the XML files are easier to diff (without going to Transifex)

E.g.

git show 5a52e0946d399fa467073c44752a5ce68b2a9008 src/qt/locale/bitcoin_de.ts

show a lot of movement, which even --color-moved=dimmed-zebra doesn't seem able to solve for.

Copy link
Member

@pablomartin4btc pablomartin4btc left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

tACK 5a52e09

Tested sync'ing master (doc) and generating the translate (doc) from both master and this PR.

No diffs.

@hebasto
Copy link
Member Author

hebasto commented Mar 7, 2025

I would be useful if the PR describes any major intended changes.

It adds several new languages: ast_ES, ay, or, ps, sa, sm, tn, ve, xh, yi

It almost completely drops Dutch, Czech, Danish and perhaps others (Github can barely load the diff).

As a PR author, I take responsibility for committing changes that are generated by the bitcoin-maintainer-tools/update-translations.py script, which in turn fetches translations from the Transifex website. When a translation file is removed, I do check whether a translation has been vandalized.

Otherwise, it is translators' and language coordinators' responsibility for the completeness and quality of the translations.

I'd like to reiterate my point that Transifex is poorly suited for Bitcoin Core translations, and I'm keen to use GitHub to track translation changes (as was done many years ago). This seems doable in the context of the recently discussed separation of the GUI repository.

It would be great if, in the future, the strings can have canonical ordering, so the XML files are easier to diff (without going to Transifex)

E.g.

git show 5a52e0946d399fa467073c44752a5ce68b2a9008 src/qt/locale/bitcoin_de.ts

show a lot of movement, which even --color-moved=dimmed-zebra doesn't seem able to solve for.

I agree.

Copy link
Member

@pablomartin4btc pablomartin4btc left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

re-ACK 86a28b6

(no diffs - verified spam was removed from /src/qt/locale/bitcoin_gl_ES.ts)
$ git branch
  250305-tr
* master
$ git reset --hard
$ python3 ../bitcoin-maintainer-tools/update-translations.py
...
$ git diff --cached master -- src/qt/bitcoin_locale.qrc src/qt/locale/
$

<message>
<source>&amp;New</source>
<translation type="unfinished">&amp;Ny</translation>
<translation type="unfinished"> Về   Tải về   blog   phát hành   Phát triển   Liên hệ                             Tiếng Anh                                                                                                    Tiếng Tây Ban Nha                                                  Nhật Bản                                                  Tiếng Trung giản thể                                                  繁體中文                                                                          Phát hành Bitcoin Core 28.0 Bitcoin Core 27.1 Bitcoin Core 27.0 Bitcoin Core 26.2 Bitcoin Core 26.1 Bitcoin Core 26.0 Bitcoin Core 25.2 Bitcoin Core 25.1 Bitcoin Core 25.0 Bitcoin Core 24.2 Bitcoin Core 24.1 Lõi Bitcoin 24.0.1 Bitcoin Core 23.2 Bitcoin Core 23.1 Bitcoin Core 23.0 Bitcoin Core 22.1 Bitcoin Core 22.0 Bitcoin Core 0.21.2 Bitcoin Core 0.21.1 Bitcoin Core 0.21.0 Bitcoin Core 0.20.2 Bitcoin Core 0.20.1 Bitcoin Core 0.20.0 Bitcoin Core 0.19.1 Lõi Bitcoin 0.19.0.1 Bitcoin Core 0.18.1 Bitcoin Core 0.18.0 Lõi Bitcoin 0.17.1 Lõi Bitcoin 0.17.0.1 Bitcoin Core 0.17.0 Lõi Bitcoin 0.16.3 Lõi Bitcoin 0.16.2 Lõi Bitcoin 0.16.1 Bitcoin Core 0.16.0 Bitcoin Core 0.15.2 Lõi Bitcoin 0.15.1 Lõi Bitcoin 0.15.0.1 Bitcoin Core 0.15.0 Lõi Bitcoin 0.14.3 Bitcoin Core 0.14.2 Bitcoin Core 0.14.1 Bitcoin Core 0.14.0 Bitcoin Core 0.13.2 Lõi Bitcoin 10.11.12.8333 Bitcoin Core 0.13.0 Bitcoin Core 0.12.1 Bitcoin Core 0.12.0 Bitcoin Core 0.11.2 Bitcoin Core 1010568.11.1 Bitcoin Core 10.11.0.. Twitter Pháp lý | Chính sách bảo mật | RSS  © 2024 Lõi Bitcoin</translation>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks like spam.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removed this one and other cases (bitcoin addresses) from this translation.

Comment on lines 287 to 294
<translation type="unfinished">یو داخلي تېروتنه رامنځته شوه %1به هڅه وکړي چې په خوندي توګه دوام وکړي. دا یوه ناپېژندل شوې تېروتنه ده چې کولای شي د لاندې په توګه راپور شي."






.</translation>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This seems like an excessive number of new lines, probably spam?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I removed this translation on Transifex.

Additionally, I promoted the following translation checks from warning to errors:

  • "New lines at the beginning of a source string are preserved in its translations."
  • "New lines at the end of a source string are preserved in its translations."

Comment on lines 86 to 93
<translation type="unfinished">ଠିକଣା ତାଲିକାକୁ ନିର୍ୟାତ କରନ୍ତୁ






</translation>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Extra newlines, although google translate thinks the translation is correct. It seems like the newlines do render in the gui.

There are a number of these in this file.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed on Transifex.

<source>Port of the proxy (e.g. 9050)</source>
<translation type="unfinished">พอร์ตของพร็อกซี (เช่น 9050)

4o mini</translation>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

AI generated?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removed on Transifex.

<message>
<source>Use separate SOCKS&amp;5 proxy to reach peers via Tor onion services:</source>
<translation type="unfinished">ใช้พร็อกซี่ SOCKS5 แยกต่างหากเพื่อเชื่อมต่อกับเพื่อนผ่านบริการ Tor onion

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Extra newline

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed on Transifex.

Comment on lines 1963 to 1970
<translation type="unfinished">ธุรกรรมที่ยังไม่ได้รับการยืนยันไปยังที่อยู่ที่ดูได้เท่านั้น

4o




 </translation>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A lot of extra newlines, and the 4o makes me think this was AI generated.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removed on Transifex.

<source>User Agent</source>
<extracomment>Title of Peers Table column which contains the peer's User Agent string.</extracomment>
<translation type="unfinished">ตัวแทนผู้ใช้
(Pronounced: Dtua-Thaen Phu-Chai)</translation>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I noticed a couple of translations have these pronunciations, is that expected according to our translation guidelines (do we have any)?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, it is not expected. Removed on Transifex.

@hebasto
Copy link
Member Author

hebasto commented Mar 10, 2025

Feedback from @achow101 has been addressed.

Copy link
Member

@pablomartin4btc pablomartin4btc left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

re-ACK d95d1dd

Minor diffs against sync'ed (updated translations) master on:

	src/qt/locale/bitcoin_et.ts
	src/qt/locale/bitcoin_ru.ts
	src/qt/locale/bitcoin_sv.ts

Checked that the changes on those files were done after the latest PR's refresh.

@Sjors
Copy link
Member

Sjors commented Mar 11, 2025

It almost completely drops Dutch, Czech, Danish and perhaps others (Github can barely load the diff).

As a PR author, I take responsibility for committing changes that are generated by the bitcoin-maintainer-tools/update-translations.py script, which in turn fetches translations from the Transifex website. When a translation file is removed, I do check whether a translation has been vandalized.

Otherwise, it is translators' and language coordinators' responsibility for the completeness and quality of the translations.

It would still be good to point to some place on Transifex where reviewers can see that discussion. There's nothing on the public page, is it all behind a login? https://explore.transifex.com/bitcoin/bitcoin/


Turns out I still have an account.

Between 28.x and 29.x there's almost no difference in string count:

Scherm­afbeelding 2025-03-11 om 13 14 44 Scherm­afbeelding 2025-03-11 om 13 14 20

So maybe there's a bug in the script or an API change?

@hebasto
Copy link
Member Author

hebasto commented Mar 11, 2025

It almost completely drops Dutch, Czech, Danish and perhaps others (Github can barely load the diff).

As a PR author, I take responsibility for committing changes that are generated by the bitcoin-maintainer-tools/update-translations.py script, which in turn fetches translations from the Transifex website. When a translation file is removed, I do check whether a translation has been vandalized.
Otherwise, it is translators' and language coordinators' responsibility for the completeness and quality of the translations.

It would still be good to point to some place on Transifex where reviewers can see that discussion. There's nothing on the public page, is it all behind a login? https://explore.transifex.com/bitcoin/bitcoin/

Turns out I still have an account.

Between 28.x and 29.x there's almost no difference in string count:
Scherm­afbeelding 2025-03-11 om 13 14 44 Scherm­afbeelding 2025-03-11 om 13 14 20

So maybe there's a bug in the script or an API change?

From reviewing the Dutch (nl) translation history, I can see that the user ApeEstess1971 replaced translated strings with the original ones for 28.x, either by mistake or as an act of vandalism. As a result, 29.x automatically picked up these broken translations from 28.x via Translation Memory. Our fetching script treats such strings as untranslated and discards them.

When this happens, people who care about a particular language's translation usually restore the damage, as @Emzy did for German (de) and as I did for Ukrainian (uk).

@Sjors
Copy link
Member

Sjors commented Mar 11, 2025

people who care about a particular language's translation usually restore the damage

They'd have to know about it first and understand how Transifex works. Is it safe to omit these large changes from this PR entirely? I'd rather have a slightly stale translation than a completely broken one.

cc @laanwj

@hebasto
Copy link
Member Author

hebasto commented Mar 11, 2025

people who care about a particular language's translation usually restore the damage

They'd have to know about it first and understand how Transifex works.

Caring about a particular language's translation implies both, doesn’t it?

Is it safe to omit these large changes from this PR entirely? I'd rather have a slightly stale translation than a completely broken one.

I believe it is safe. Which languages are you referring to?

@Sjors
Copy link
Member

Sjors commented Mar 11, 2025

Based on git show --stat, looking for files with massive deletions:

  • src/qt/locale/bitcoin_cs.ts
  • src/qt/locale/bitcoin_da.ts
  • src/qt/locale/bitcoin_nl.ts

When I undo the changes to those files, at least Dutch looks fine to me.

@hebasto
Copy link
Member Author

hebasto commented Mar 11, 2025

Based on git show --stat, looking for files with massive deletions:

* `src/qt/locale/bitcoin_cs.ts`

* `src/qt/locale/bitcoin_da.ts`

* `src/qt/locale/bitcoin_nl.ts`

When I undo the changes to those files, at least Dutch looks fine to me.

Thanks! Updated.

@hebasto
Copy link
Member Author

hebasto commented Mar 11, 2025

It would still be good to point to some place on Transifex where reviewers can see that discussion.

I've posted an announcement, which refers to this PR:

@hebasto
Copy link
Member Author

hebasto commented Mar 11, 2025

cc @darosior for sanity check of French (fr) translation.

The translations for the following languages, which appear to be the
result of a mistake or an act of vandalism, have been discarded:
- Czech (cs)
- Danish (da)
- Dutch (nl)

Changes to the Thai (th) translation have been discarded due to multiple
unsolicited pronunciation notes.
@hebasto hebasto requested review from fanquake and removed request for fanquake March 11, 2025 17:48
Copy link
Member

@darosior darosior left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sanity checked the three French translation files (bitcoin_fr.ts, bitcoin_fr_CM.ts and bitcoin_fr_LU.cs) and i did not find anything malicious as of 9132824. There is a lot of unnecessary churn however.