Release: 30.0 translations update #33275

pull hebasto wants to merge 1 commits into bitcoin:master from hebasto:250901-tr changing 123 files +10140 −26645
  1. hebasto commented at 3:10 pm on September 1, 2025: member

    This PR follows our Release Process and concludes the translation-specific efforts for this release cycle. It follows two previous translation-related PRs, #33152 and #33193.

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

    A previous similar PR: #32004.

    Notes for reviewers:

    1. The actual translations on Transifex is a moving target. As a result, your diff after running bitcoin-maintainer-tools/update-translations.py may differ.

    2. The Polish translation update has been discarded. See #33275 (comment) and #33275 (comment).

  2. hebasto added this to the milestone 30.0 on Sep 1, 2025
  3. hebasto added the label GUI on Sep 1, 2025
  4. DrahtBot commented at 3:10 pm on September 1, 2025: contributor

    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/33275.

    Reviews

    See the guideline for information on the review process.

    Type Reviewers
    ACK fanquake

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

  5. hebasto commented at 3:15 pm on September 1, 2025: member
    I’ve manually removed from Transifex, before pulling into this branch, all malicious translations, such as Bitcoin addresses etc. Translation coordinators, both seasoned and newly assigned, did a great job on keeping their translations safe and consistent. @maflcko Could you please run your LLM-based checks on this branch?
  6. hebasto force-pushed on Sep 1, 2025
  7. hebasto force-pushed on Sep 1, 2025
  8. hebasto commented at 12:56 pm on September 2, 2025: member

    Sure, see https://github.com/maflcko/b-c-gui-translations-review/tree/99bf41c4e5ab74eee8c248b240e8e940e47e09ec/reviews

    Friendly ping to coordinators for addressing issues:

    UPD. French (fr) and Spanish (es) coordinators have been notified via Transifex messages.

    UPD2: https://groups.google.com/g/bitcoin-translators/c/LdAZJO9Oj1E

  9. hebasto commented at 2:06 pm on September 2, 2025: member

    Sure, see https://github.com/maflcko/b-c-gui-translations-review/tree/99bf41c4e5ab74eee8c248b240e8e940e47e09ec/reviews

    Many thanks, @maflcko! This is indeed very useful.

    I discarded only a few suggestions for the Ukrainian translation:

    1.

    0        <source>Copy &amp;raw transaction</source>
    1        <translation>Копіювати &amp;всю транзакцію</translation>
    2    
    3ERR
    4The term "raw transaction" in the Bitcoin context refers specifically to the transaction in its raw (serialized) hexadecimal form rather than the entire transaction or all its details. The Ukrainian "всю транзакцію" means "entire transaction," which is not precise.
    5
    6Correct translation:
    7Копіювати &amp;сиру транзакцію
    

    The term “raw transaction” is indeed non-trivial to translate, but it’s definitely not “сира транзакція” :)

    2.

     0       <source>Recommended:</source>
     1       <translation>Рекомендована:</translation>
     2   
     3ERR
     4The Ukrainian translation uses the feminine adjective form "Рекомендована:" which is unnatural as a standalone label. Use the neutral/adverbial form.
     5
     6Correct translation:
     7Рекомендовано: (or alternatively: Рекомендується:)
     8
     9       <source>Custom:</source>
    10       <translation>Власна:</translation>
    11   
    12ERR
    13"Власна:" is ambiguous and may use the wrong gender form. A more standard Ukrainian UI translation for "Custom:" is "Користувацький:".
    14
    15Correct translation:
    16Користувацький:
    

    LLM seems unable to consider enough context here.

    3.

    0        <source>&amp;Change Passphrase…</source>
    1        <translation>Змінити парол&amp;ь…</translation>
    2    
    3ERR
    4The ampersand (&) for the shortcut key is positioned incorrectly in the Ukrainian translation, splitting the word "пароль" into "парол&amp;ь". It should precede the correct letter in the word, typically the first letter, such as "&Змінити пароль…" or "З&мінити пароль…", but should not break up a word. Also, Ukrainian convention often uses "Змінити &пароль…".
    5
    6Correct translation:
    7Змінити &пароль…
    

    LLM seems confused about splitting a word.

    4.

    0        <source>Transaction needs a change address, but we can't generate it.</source>
    1        <translation>Транзакція потребує адресу для решти, але неможливо створити таку адресу.</translation>
    2    
    3ERR
    4The Ukrainian is grammatically incorrect and awkward ("Транзакція потребує адресу..." is ungrammatical; word order and subject for "can't generate it" are unclear).
    5
    6Correct translation:
    7Транзакції потрібна адреса для решти, але ми не можемо її згенерувати.
    

    In Ukrainian, it’s often more natural to use the Passive Voice rather than referring to an unspecified “we”.

  10. maflcko commented at 3:19 pm on September 2, 2025: member

    LLM seems unable to consider enough context here.

    Is there some additional context that translators have? If yes, it could make sense to somehow pass it to the llm. Other than that, my recommendation would be to use extra comments, like here:

    0        <source>Inbound</source>
    1        <extracomment>An inbound connection from a peer. An inbound connection is a connection initiated by a peer.</extracomment>
    2        <translation type="unfinished">Вхідний</translation>
    

    The term “raw transaction” is indeed non-trivial to translate, but it’s definitely not “сира транзакція” :)

    Yeah, sadly there are very few LLMs that can handle diverse languages well. I’ve re-run the uk.ts one using a model that is claimed to support uk (https://ai.google.dev/gemini-api/docs/models#supported-languages):

    https://github.com/maflcko/b-c-gui-translations-review/tree/9578049fc684d5a1f4c8c8994abbf096e6f02d2e/reviews

  11. jesterhodl commented at 3:47 pm on September 2, 2025: none

    Apologies, but is WalletDescriptor an internal name or is it a typo and should be Wallet Descriptor?

    “Cannot add WalletDescriptor to a non-descriptor wallet”

  12. jesterhodl commented at 3:50 pm on September 2, 2025: none

    What is a “rescan reserver”?

    “Failed to acquire rescan reserver during wallet initialization”

  13. hebasto commented at 4:04 pm on September 2, 2025: member

    Apologies, but is WalletDescriptor an internal name or is it a typo and should be Wallet Descriptor?

    “Cannot add WalletDescriptor to a non-descriptor wallet”

    An internal name.

  14. hebasto commented at 4:09 pm on September 2, 2025: member

    What is a “rescan reserver”?

    “Failed to acquire rescan reserver during wallet initialization”

    I commented this string on Transifex, but for some reason my explanation has gone.

    Here it is now:

    It’s a special internal object that holds (or “reserves”) the wallet’s “rescan” state.

    While the wallet is rescanning, no unrelated access should be allowed. The “rescan reserver” makes sure of that.

  15. maflcko commented at 4:20 pm on September 2, 2025: member

    Apologies, but is WalletDescriptor an internal name or is it a typo and should be Wallet Descriptor?

    “Cannot add WalletDescriptor to a non-descriptor wallet”

    An internal name.

    There are more instances of this. I’d say, generally it is best to avoid internal names and instead use the normal/general word. Here, it could be “Cannot add descriptor to a non-descriptor wallet”, or “Cannot add output script descriptor to a non-descriptor wallet”?

  16. hebasto commented at 4:22 pm on September 2, 2025: member

    Apologies, but is WalletDescriptor an internal name or is it a typo and should be Wallet Descriptor?

    “Cannot add WalletDescriptor to a non-descriptor wallet”

    An internal name.

    There are more instances of this. I’d say, generally it is best to avoid internal names and instead use the normal/general word. Here, it could be “Cannot add descriptor to a non-descriptor wallet”, or “Cannot add output script descriptor to a non-descriptor wallet”?

    Yes, the original message should be improved to avoid internal names.

    cc @achow101

  17. l0rinc commented at 5:22 pm on September 2, 2025: contributor

    Is there some additional context that translators have?

    We could probably get more accurate translations by creating a bot that goes through each translation (<2000 values I think, we could batch them by files) fetches the source code context for the given translations and gives 3-4 examples for translations that we think are close to how we want it to translate and ask for the missing languages from the AI (based on the English + source code usage + 3-4 other correct translations)

  18. sr-gi commented at 6:02 pm on September 2, 2025: member
    I’ve reviewed the Catalan version (and updated) the Catalan version issues, plus a few more pending strings
  19. in src/qt/locale/bitcoin_hu.ts:1156 in 0007ef191d outdated
    1152@@ -1161,7 +1153,7 @@ A migrációs folyamat készít biztonsági mentést a tárcáról migrálás el
    1153     <message>
    1154         <source>Open Wallet</source>
    1155         <extracomment>Title of window indicating the progress of opening of a wallet.</extracomment>
    1156-        <translation type="unfinished">Tárca megnyitása</translation>
    1157+        <translation type="unfinished">Tárca Megnyitása</translation>
    


    l0rinc commented at 6:14 pm on September 2, 2025:

    the previous one was correct:

    0        <translation type="unfinished">Tárca megnyitása</translation>
    

    l0rinc commented at 7:43 pm on September 2, 2025:
    Fixed
  20. in src/qt/locale/bitcoin_hu.ts:1982 in 0007ef191d outdated
    1978@@ -2011,31 +1979,31 @@ A migrációs folyamat készít biztonsági mentést a tárcáról migrálás el
    1979     </message>
    1980     <message>
    1981         <source>Cannot sign inputs while wallet is locked.</source>
    1982-        <translation type="unfinished">Nem írhatók alá a bemenetek míg a tárca zárolva van.</translation>
    1983+        <translation type="unfinished">Nem írhatók alá a bejövők míg a tárca zárolva van.</translation>
    


    l0rinc commented at 6:15 pm on September 2, 2025:
    previous one was better

    l0rinc commented at 7:42 pm on September 2, 2025:
    reverted in Transifex
  21. AO-LocLab commented at 6:16 pm on September 2, 2025: none
    The LLM check is an interesting tool that we should definitely use. However, language coordinators and translators should not just apply the LLM’s suggestions as they can be misleading. It can miss the nuances and claim the translation is wrong. It also sometimes misses the context. Like anything AI powered, a great tool to use when properly checked by a human. I have addressed the errors that need to be in the Fr translation :)
  22. in src/qt/locale/bitcoin_hu.ts:3371 in 0007ef191d outdated
    3366@@ -3403,8 +3367,8 @@ Megjegyzés: Mivel a díj bájtonként van kiszámítva, egy "100 satoshi kvB-nk
    3367         <translation type="unfinished">Aláírás</translation>
    3368     </message>
    3369     <message>
    3370-        <source>Copy the current signature to the system clipboard</source>
    3371-        <translation type="unfinished">A jelenleg kiválasztott aláírás másolása a rendszer-vágólapra</translation>
    3372+        <source>Copy the current signature to the clipboard</source>
    3373+        <translation type="unfinished">A kiválasztott cím másolása a vágólapra</translation>
    


    l0rinc commented at 6:17 pm on September 2, 2025:

    this is incorrect, cím means address:

    0        <translation type="unfinished">A jelenleg kiválasztott aláírás másolása a vágólapra</translation>
    

    l0rinc commented at 7:42 pm on September 2, 2025:
    Fixed in Transifex, please resolve
  23. l0rinc commented at 6:20 pm on September 2, 2025: contributor
    Left some notes for the Hungarian translations, they’re mostly ok (though they all sound very mechanical), there’s one definite mistake and a few ones where the previous one was better
  24. hebasto commented at 6:57 pm on September 2, 2025: member

    Left some notes for the Hungarian translations, they’re mostly ok (though they all sound very mechanical), there’s one definite mistake and a few ones where the previous one was better

    Mind adjusting the mentioned translations on Transifex directly?

  25. l0rinc commented at 7:45 pm on September 2, 2025: contributor

    I have adjusted and finished the remaining ones in Hungarian. I have tried if other languages (+ existing Hungarian translations) help with the context (as I suggested in #33275 (comment)) and the translations were pretty spot-on this way, e.g.

    0_msg1037
    1• Source (en): Option '-checkpoints' is set but checkpoints were removed. This option has no effect.
    2Context:
    3  • fr: L’option « -checkpoints » est activée, mais les points de contrôle ont été supprimés. Cette option n’a aucun effet.
    4  • es: La opción '-checkpoints' está activa pero los puntos de guardado han sido eliminados. Esta opción no tiene efecto.
    5  • pl: Opcja "-checkpoints" jest zaznaczona, ale punkty zaczepienia zostały usunięte. Ta opcja nie ma efektu.
    6  • de: Die Option '-checkpoints' ist gesetzt, aber die Checkpoints wurden entfernt. Diese Option hat keine Auswirkungen.
    7• Hungarian Translation:
    8A '-checkpoints' opció be van állítva, de az ellenőrzőpontok el lettek távolítva. Ennek az opciónak nincs hatása.
    
  26. cryptomeow commented at 10:40 pm on September 2, 2025: none

    Great! Regarding the Greek translation, I’ve gone one round and did some fixes based on the review and it certainly is helpful and provides actionable issues.

    One false positive group of issues I noticed is the disagreement on translating terms.

    For example one example is Peers, it seems the LLM insists on suggesting Ομότιμοι which is more about comparing people, while Κόμβοι is more commonly accepted in our case. Not sure how to address this so these issues don’t show up, but fwiw I found Transifex’s Glossary very interesting to help have long-running async consistency on term translations, but I don’t see any option to export them in order to possibly provide it as a context to the LLM.

    Either way, there are mostly nits left to address but I’d still like to go properly through them. Is there a specific datetime deadline? Weekdays are rough. I saw the 2025-09-06 but I’m not familiar how the exact process goes. Thanks

  27. l0rinc commented at 10:55 pm on September 2, 2025: contributor
    @cryptomeow you can check out this PR having the translations in an XML format and feed the whole file to an LLM. http://aistudio.google.com lets you work with multiple complete translations. You could ask it to extract the key/value pairs you want and feed that to the other LLM of yours choice.
  28. hebasto commented at 8:24 am on September 3, 2025: member

    @cryptomeow

    Great! Regarding the Greek translation, I’ve gone one round and did some fixes based on the review and it certainly is helpful and provides actionable issues.

    One false positive group of issues I noticed is the disagreement on translating terms.

    For example one example is Peers, it seems the LLM insists on suggesting Ομότιμοι which is more about comparing people, while Κόμβοι is more commonly accepted in our case. Not sure how to address this so these issues don’t show up, but fwiw I found Transifex’s Glossary very interesting to help have long-running async consistency on term translations, but I don’t see any option to export them in order to possibly provide it as a context to the LLM.

    As noted earlier, LLM-generated suggestions are only useful hints for translators and coordinators to consider.

    We have started using this technology in addition to the many hardcoded checks performed by the update-translations.py script.

    Either way, there are mostly nits left to address but I’d still like to go properly through them. Is there a specific datetime deadline? Weekdays are rough. I saw the 2025-09-06 but I’m not familiar how the exact process goes. Thanks

    2025-09-06 is the date when we plan to create the “30.x” branch from the “master”. To ensure translations are useful in both branches, we aim to pull them from Transifex just before this branching off. This is not a strict deadline, in the past it has sometimes happened a few days later.

    We do not expect every translation to be perfect, but we must ensure that none are malicious, phishing, or deceptive.

  29. hebasto commented at 8:30 am on September 3, 2025: member

    @l0rinc

    @cryptomeow you can check out this PR having the translations in an XML format and feed the whole file to an LLM. http://aistudio.google.com let’s you work with multiple complete translations. You could ask it to extract the key/value pairs you want and feed that to the other LLM of yours choice.

    This is an interesting idea.

    However, I don’t think it’s reasonable to ask volunteer coordinators to review the entire PR.

  30. hebasto commented at 8:32 am on September 3, 2025: member

    … but fwiw I found Transifex’s Glossary very interesting to help have long-running async consistency on term translations, but I don’t see any option to export them in order to possibly provide it as a context to the LLM.

    I’m not aware of such an option either.

  31. maflcko commented at 9:15 am on September 3, 2025: member

    WalletDescriptor

    This is fixed (removed) in #33082.

  32. jesterhodl commented at 12:39 pm on September 3, 2025: none

    checkpoints

    Don’t see it yet, I suppose it needs a sync?

  33. hebasto commented at 6:23 pm on September 4, 2025: member

    @jesterhodl

    checkpoints

    Don’t see it yet, I suppose it needs a sync?

    The PR mentioned in #33275 (comment) has not been merged yet. It is not part of this release cycle.

  34. hebasto force-pushed on Sep 4, 2025
  35. hebasto commented at 8:52 pm on September 4, 2025: member
    Rebased and updated using the latest version of the tool.
  36. Emzy commented at 11:24 am on September 5, 2025: contributor

    Sure, see https://github.com/maflcko/b-c-gui-translations-review/tree/99bf41c4e5ab74eee8c248b240e8e940e47e09ec/reviews

    I checked the file reviews/de.md. The useful fixes are already put on transifex.com. I just changed one changed translation from “Sie” to impersonal writing. Because of consistency.

  37. hebasto force-pushed on Sep 5, 2025
  38. hebasto marked this as ready for review on Sep 5, 2025
  39. hebasto commented at 11:04 pm on September 5, 2025: member

    Rebased. Updated.

    Ready for review.

  40. hebasto force-pushed on Sep 8, 2025
  41. jesterhodl commented at 9:55 am on September 8, 2025: none

    Hey @hebasto I’m curious why the 30.x resources have a lot of untranslated labels. I know I completed 29.x Could it be that they have been copied from 29.x to 30.x before I finished?

    In screenshot below, the first one is a 29.x resource, the lower one is 30.x

    Aside from the brand new labels, I can sync them up manually in Transifex, but just wanted to ask where this is coming from.

  42. hebasto commented at 10:36 am on September 8, 2025: member

    @jesterhodl

    Hey @hebasto I’m curious why the 30.x resources have a lot of untranslated labels. I know I completed 29.x Could it be that they have been copied from 29.x to 30.x before I finished?

    In screenshot below, the first one is a 29.x resource, the lower one is 30.x

    Aside from the brand new labels, I can sync them up manually in Transifex, but just wanted to ask where this is coming from.

    It was vandalised by successpedro9 at 15:57 on 2025-08-08:

  43. hebasto commented at 10:39 am on September 8, 2025: member

    @jesterhodl

    Do you want me to drop the update for src/qt/locale/bitcoin_pl.ts to keep the Polish translation at least as good as it was in v29.0?

  44. jesterhodl commented at 11:19 am on September 8, 2025: none
    Yes, if you don’t mind, please. There’s more much more missing in 30, than the delta of new stuff between 29 and 30.
  45. qt: 30.0 translations update b320f5efa1
  46. hebasto force-pushed on Sep 8, 2025
  47. hebasto commented at 11:25 am on September 8, 2025: member

    Yes, if you don’t mind, please. There’s more much more missing in 30, than the delta of new stuff between 29 and 30.

    Done.

  48. fanquake commented at 9:17 am on September 9, 2025: member
    ACK b320f5efa1753aead857d4cddd742af16e51d8d1
  49. fanquake merged this on Sep 9, 2025
  50. fanquake closed this on Sep 9, 2025

  51. hebasto deleted the branch on Sep 9, 2025
  52. jesterhodl commented at 6:33 pm on September 14, 2025: none

    An internal name.

    How about uacomments in Total length of network version string () exceeds maximum length (). Reduce the number or size of uacomments. _msg1028

    Similar to WalletDescriptor

  53. alexanderwiederin referenced this in commit 49e068b15b on Sep 16, 2025
  54. alexanderwiederin referenced this in commit 4b0c2f2a8f on Sep 17, 2025
  55. alexanderwiederin referenced this in commit 2edb618ffe on Sep 17, 2025
  56. stringintech referenced this in commit fb8510ba20 on Sep 17, 2025
  57. BitByBitByBitByBit commented at 9:28 pm on September 20, 2025: none

    Sure, see https://github.com/maflcko/b-c-gui-translations-review/tree/99bf41c4e5ab74eee8c248b240e8e940e47e09ec/reviews

    Friendly ping to coordinators for addressing issues:

    UPD. French (fr) and Spanish (es) coordinators have been notified via Transifex messages.

    UPD2: https://groups.google.com/g/bitcoin-translators/c/LdAZJO9Oj1E

    I went through all the suggestions for Spanish and made the necessary edits. Thank you for this input! It is a very useful tool even though it requires some fine tuning. It would be helpful to take glossaries into account, as long as they are up-to-date for each language.

  58. ostruvek commented at 7:18 pm on September 21, 2025: none
    Hello, sorry for a delay on my side. I have reviewed the Czech suggestions and made the edits.
  59. fanquake referenced this in commit 52bcf62c0b on Sep 23, 2025
  60. hebasto commented at 2:41 pm on September 23, 2025: member

    @BitByBitByBitByBit

    I went through all the suggestions for Spanish and made the necessary edits. Thank you for this input! It is a very useful tool even though it requires some fine tuning. It would be helpful to take glossaries into account, as long as they are up-to-date for each language. @ostruvek

    Hello, sorry for a delay on my side. I have reviewed the Czech suggestions and made the edits.

    Thank you for your contributions! Both updated translations have been fetched from Transifex in #33452.

  61. jesterhodl commented at 3:54 pm on September 24, 2025: none

    Sure, see https://github.com/maflcko/b-c-gui-translations-review/tree/99bf41c4e5ab74eee8c248b240e8e940e47e09ec/reviews

    Friendly ping to coordinators for addressing issues:

    UPD. French (fr) and Spanish (es) coordinators have been notified via Transifex messages. UPD2: https://groups.google.com/g/bitcoin-translators/c/LdAZJO9Oj1E

    I went through all the suggestions for Spanish and made the necessary edits. Thank you for this input! It is a very useful tool even though it requires some fine tuning. It would be helpful to take glossaries into account, as long as they are up-to-date for each language.

    I resolved the 22 issues listed in the Polish translation


github-metadata-mirror

This is a metadata mirror of the GitHub repository bitcoin/bitcoin. This site is not affiliated with GitHub. Content is generated from a GitHub metadata backup.
generated: 2025-09-26 15:13 UTC

This site is hosted by @0xB10C
More mirrored repositories can be found on mirror.b10c.me