~fuzzbawls/pivx-core/+git/test:202111-translations

Last commit made on 2021-11-05
Get this branch:
git clone -b 202111-translations https://git.launchpad.net/~fuzzbawls/pivx-core/+git/test

Branch merges

Branch information

Name:
202111-translations
Repository:
lp:~fuzzbawls/pivx-core/+git/test

Recent commits

13e90f6... by Fuzzbawls

[GUI] Periodic make translate

114 new translation strings, mostly coming from the new Governance UI

b525146... by furszy <email address hidden>

Merge #2406: [GUI] New Governance Graphical User Interface

fccb4cc37a6aa281a26749d758b7f20a07802ec3 GUI: vote for proposal, disable checkbox of MNs that will not be able to vote until the minimum vote time passes. (furszy)
36461daccdede14f7d624dcd93736058f7b2596d GUI: Vote for proposal, add previous votes information in the voters' selection dialog. (furszy)
1a4acb2e89659f0f8992048713811bea7f9f5bb8 GUI: Masternode creation wizard, set max MN name length. (furszy)
dae3767697e1d9b3282799e65cab0f8b727e9822 GUI: Create proposal dialog, add key event and show event listeners. (furszy)
759036b0787b5fd8fbd89455cae1bf12ac48f9d0 GUI: Create proposal dialog accepting decimal amounts. (furszy)
162d84381bcbf24a9dc9c8e5ab2cefb353aa75fc GUI: Implement and connect proposal information dialog. (furszy)
6c404df482d2a9440de50adf5c3176d996fda53b GUI: Check time between MN votes and inform if it didn't pass the minimum vote update time. (furszy)
bc01677c2cf9afbe461a4c3e44aa94f6974121bb GUI: add proposal card menu. (furszy)
702db9f9ffcb744c78fc1b2bda94e1cc751ae8f7 GUI governance: by default, do not show finished proposals that haven't been cleared from the backend yet. (furszy)
559a0953d6f7715ef9825a7b194ddc1c83ecfbe7 GUI: governance widget, Add translations and generalize sort/filter combo-boxes view initialization. (furszy)
889a720cb699175e1f9a375babc4b079f26a1149 GUI: Adjust proposal card months label text and the status label padding to not overlap. (furszy)
e264153beb9dd569f5e308cdf20e763fe4020f82 GUI: request unlock wallet before try to create a proposal (furszy)
51d799bb143a24e4fbe5b7c7507072e3fbdc6fe6 GUI create proposal: unify amount parsing using GUIUtil::parseValue(). (furszy)
b8f0ac626c5360318772ed2e5d3ca4dd8e075f38 Connect PROPOSAL_MIN_AMOUNT constant to gov model validatePropAmount() function. (furszy)
2b11018b3d32c33b10a68677955560b629f28379 GUI: refactor GUIUtil::parseValue() to be used equally as `SendMultiRow::getAmountValue()`. (furszy)
427913ebf652c6cc0ad3b2018b5c71f6138f9ce9 GUI: Stop translating test strings in the .ui forms. (furszy)
87beffea2c124e09cc767c5d319bd6d31e71a564 GUI: accept only UTF-8 valid proposal names. (furszy)
cb73091e2ed0aef22c4636af5368ebec494658fd GUI: Add sync warning for governance screen. (furszy)
bf99df97be5ba4428eeb21e21d60cbc2f2a22ed7 GUI: Reset governance total allocated amount (furszy)
37f711806ce5f70f3bb6fd07f60a9b5b440b1595 GUI: Add cs_proposals mutex lock in governancemodel FindProposal function call. (furszy)
33b1b87cb45190e37f582073a2a7899af28d3f20 GUI: Create proposal dialog, implement months input field spinbox. (furszy)
dfaf0847b6b3ebf0e71d81d7780fc871ff16b919 GUI: add addresses selector to the proposal creation wizard. (furszy)
9b45f72dbb3de096b64efc20c46edf2da1f6dff3 GUI: Add governance empty screen image for dark theme. (Gregory Solarte)
debbed9b15d0ddbd6e381f0a419397d23f119392 GUI: governancemodel fix zombie waiting proposals check. (furszy)
b46621a13171aa257e4c7b35b6c4faac2df71d28 GUI: transactionrecord parse new wtx proposal fee comment format. (furszy)
e18972837d1c9d758dd8f18f8f5bc2e009e53284 GUI: Governance model, add waiting proposal to the hasProposals() return. (furszy)
2d15cd6a87218658faf7d3836b898307d7c52192 [GUI] dark theme mnselectiondialog. (Gregory Solarte)
ec99bae40c6276ec5ed564b613102f988c996b9c GUI: improve proposalcard status (furszy)
caa5b0ab76bbc97f8d5387e6664850e22f306a41 GUI: improve create proposal dialog subtitles. (furszy)
8800a6303fa98b1d9fafcde8844ea6eecb345888 GUI: add checkbox disabled style. (furszy)
ebb9c1fa51c059d5ac9baf942b35a1e69d189f12 GUI: proposal url copy to clipboard connected. (furszy)
d18d265101a8900f3c57606ee859aed782713803 GUI governance: add proposals filter (furszy)
6603c10cf1773a085cb6be61495e42c4ac6a1ada GovernanceModel: Do not try to broadcast proposal whose fee tx is conflicted or not accepted. (furszy)
34a982c6ed9a681f30c44dee126e479ec36b2802 GUI governance, refresh grid after vote. (furszy)
bb08e442f592fea93f751bc162872604a7ea550c active masternode do not stall if ACTIVE_MASTERNODE_NOT_CAPABLE was set. (furszy)
77bdd2ea15b98607d33de315877ab957b38945de GUI: governance, dark theme style added (Gregory Solarte)
0b3b3ec6a1a8a27aec1a62ff62615f892f68ed15 GUI: governance, proposals filter combobox. (Gregory Solarte)
de13d6f4b83d6b0cb1a116bcbb886b7f812cf0cc GUI governance: load the existent MNs votes in the mn selection dialog. (furszy)
c95219694d1456521553dc5f794590d77ebfcb01 Model governance: do not try to broadcast proposals that expired or that due a reorg lost the fee transaction. (furszy)
6c1ff96670a8fa6c9d69b50cd63ab4e6821f80b9 GUI: vote dialog, connect already broadcasted votes. (furszy)
8cd50feaac4d9119535ec98e07941aaf4a2d9c92 gui: do not open vote dialog if the proposal wasn't accepted by the network yet. (furszy)
da39a1388c0aac764bb930574cc5d1772678b5d4 wallet: encapsulate wtx extra values set. (furszy)
aa197169769800bba8a17cfc292532ee0ddfa437 GovernanceModel: implement getLocalMNsVotesForProposal to retrieve all of the wallet's MN voters for a certain proposal (furszy)
c8bdeb7b97806428178a3448ddffabe672b6858e GUI governance: emit vote for proposal connected. (furszy)
b5765b01ffe612f0098c14c6d6b3a744cb1df794 GUI vote dialog, present proposal info. (furszy)
8e41aada5484321ab99ee9cc16ad684e560a051a GUI vote dialog: connect MN selection dialog to the model. (furszy)
18ae037fc9b38254173b6e37ba24d53a57b3d378 GUI governance: calculate, cache and connect budget available and allocated amounts. (furszy)
a50276f7d096688ea323f96b8cdf327d429ec187 GUI: governancemodel load and schedule waiting for approval proposals at startup. (furszy)
f8d112bebf99f291d59e802a4ce131396d79ddb8 GUI: create proposal: summary page connected, proposal creation and automated broadcast flow added. (furszy)
0801c3c600dbe75a9b828494a72c419b6d758cca Governance model: createAndSendProposalFeeTx method created. (furszy)
112378959cf989cd796fd680d41f43553cf202a0 GUI: governance create proposal, connect field validations and error notifications. (furszy)
64dbc869eafcee01c3a408d2c37f46535b61ec21 GUI: governance, introducing create proposal dialog + navigation connected. (furszy)
61821eb0aede4b7f9aa82ae9b269941c86a3af70 GUI: add mnselectiondialog styles. (Gregory Solarte)
feab44402d2e193935fd7e3987e2273d80eed868 GUI: governance vote for proposal dialog: masternode/s selection dialog introduced. (furszy)
d67a12146a6546fe6a13dc4309c62730d711b8cd GUI: governance vote for proposal dialog introduced. (furszy)
96c63cfc7b7563b4f8ee705c76b9a602d5cc5984 GUI: add styles for governance screens. (Gregory Solarte)
ce00bcdf4dff4a693ec5081c83e49ce1c7c12660 GUI: Main governance screen introduced and navigation connected :). (furszy)
6a2ffa99082b3715b7cc44919c9881b2e050d43e governancemodel: add proposal status (furszy)
833b8d159deffa76bed8df4411b2bdabe8dae45a governancemodel introduction (furszy)

Pull request description:

  ### Adding visual interface support for the governance system.

  Work in conjunction with @Neoperol ☕ who made the wireframes, layouts organization and theme styles.

  Implementing the following points:
  * New governance screen: laying out the network proposals (name, url, votes, status) and the budget distribution (allocated and available) with filtering and sorting capabilities.
  * New proposal creation wizard making the proposal generation fairly simple with automatic proposal broadcast support.
  * New proposal voting visual flow, MN controller wallets will be able to vote for proposals using pivx-qt, with multiple MN/s voters selection and change vote capabilities.
  * Styled for both themes, light and dark.

  ### Demo videos:

  ### 1) Proposals view, budget distribution and create proposal wizard.
  (Two videos due github's 10mb maximum size restriction)

  https://user-images.githubusercontent.com/5377650/120229682-fed5cb00-c223-11eb-9910-ddbfaca2591a.mp4

  https://user-images.githubusercontent.com/5377650/120230373-8a9c2700-c225-11eb-8864-ff96b7b9becb.mp4

  --------------------------
  ### 2) Proposal voting flow:

  https://user-images.githubusercontent.com/5377650/120230967-c683bc00-c226-11eb-8c34-1b0d172c5eeb.mp4

  --------------------------
  ### 3) Proposals grid view responsiveness.

  https://user-images.githubusercontent.com/5377650/120230740-5a08bd00-c226-11eb-9314-fb7b1e9b43fe.mp4

  --------------------------

  ### Important note:
  This work is still **in-progress**, wording and visuals can change a bit moving on :), and there are some issues that i'm currently working on.
  Plus, the backend tier two synchronization process requires improvements that I'm planning to do in another PR.. all of the data forced cleanups + re-synchronizations (budget proposals, votes and MNs) are notorious now that we have visual support for it.

  #### To do:
  * X- Create Proposal, add autocomplete dropdown for the address field.
  * Add tooltip for proposal card status, disabled mn voter, forum URL copy.
  * Complete dark theme. missing checkbox disabled icon and fix for proposal card status border, mnselection list, among others (double check prototype).
  * Fix DAO nav icon location.
  * Add "sync not finished, proposal and budget data may be outdated".
  * Budget signal to trigger visual refresh (currently only refreshing in the screen's show event).
  * Lay out and connect proposals sort action.
  * Create proposal, validate name and url max length.
  * Continue testing..

ACKs for top commit:
  Fuzzbawls:
    ACK fccb4cc37a6aa281a26749d758b7f20a07802ec3
  random-zebra:
    ACK fccb4cc37a6aa281a26749d758b7f20a07802ec3

Tree-SHA512: 3bb7152859509bf8aefc6295d98843362e74a86f3ff4fabde3c8d110328fc2d27c017b52699f2d3d91d17bd388d2468bd6ad9936f8d56f097f249348ddeeaf69

b45ee56... by furszy <email address hidden>

Merge #2622: [TierTwo] Do not ask for single MN items if the node is in initial sync state

860fa5a10bc836976526abc9b5d8016d35616df2 TierTwo: do not ask for single MN items if the node is in initial synchronization state. (furszy)

Pull request description:

  Solving a last edge case race condition for the tier two initial sync process:
   if a `fbvote` or `fbs` message is received before or while we are synchronizing the MN list, there can be a race where the node will move to single items requests instead of requesting the full list (which is not what we want in the initial sync process as single items requests sync is a reactive approach while full list requests is a proactive one).

  Plus, decreased the DoS score for a bad mnb signature during the initial synchronization process, so we don't end up banning pre v5.3.3 nodes too fast for an invalidly serialized mnb (this issue was solved in #2611 removing the mnb BIP155 flag, this is only an extra guard to give a bit more time to non-updated peers to upgrade while the network is upgrading).

ACKs for top commit:
  Fuzzbawls:
    ACK 860fa5a10bc836976526abc9b5d8016d35616df2
  random-zebra:
    utACK 860fa5a10bc836976526abc9b5d8016d35616df2

Tree-SHA512: b490adddd4cf229f0a20a59b4d8402dd87b9dcbba8cfa32994d2e9dfdecb3c120f6decca22d03d91ab6892c733b954c35e0a114d27784e15863b6c740353339b

435aa72... by furszy <email address hidden>

Merge #2603: [Cleanup] Remove unused chain params

7d9ef84c46f96da78f3da8492063c89017e77058 Cleanup: Remove nPoolMaxTransactions and height_ZC_RecalcAccumulators no longer needed params. (furszy)

Pull request description:

  `nPoolMaxTransactions` and `height_ZC_RecalcAccumulators` are no longer needed.

ACKs for top commit:
  random-zebra:
    utACK 7d9ef84c46f96da78f3da8492063c89017e77058
  Fuzzbawls:
    ACK 7d9ef84c46f96da78f3da8492063c89017e77058

Tree-SHA512: e5a0d5882f4f8577490f5699ac3eeb0fcb637edde172b81b713bf8409b57546f22b0858ce2b29e3476ef188c2bf5926ddadeb45a2613219f4c9982148258d1cf

1140b7a... by furszy <email address hidden>

Merge #2617: [GUI] Force argument insertion when switching languages

61cd18e91a2af2febc97e9a835f477b426fd1ac0 [GUI] Force argument insertion when switching languages (Fuzzbawls)

Pull request description:

  On the Welcome screen, when users change the language, a call to Qt's
  internal `retranslateUi()` is made. This, however does not take into
  consideration any arguments in a source string, and instead treats them
  as string literals (ie, `%1` is not considered an argument, but rather a
  literal string)

  Fix this by adding a supplemental call to `setText()` that DOES allow
  for argument processing directly after the retranslation.

  Fixes #2570

ACKs for top commit:
  furszy:
    ACK 61cd18e91a2af2febc97e9a835f477b426fd1ac0.
  random-zebra:
    utACK 61cd18e91a2af2febc97e9a835f477b426fd1ac0

Tree-SHA512: 974734fb614bfc476c02edd6d38e2bc06fcdc34b4b176315249446ccb9dc3e59401388eabb01a393f19c4e6c3e414b981eb41cd520dd7d2d24d558f996b3289f

c2ac4e0... by furszy <email address hidden>

Merge #2589: [CMake] Further Apple M1 path improvements

4c0123f39ad5c3713e16da6138b133c36f70ba50 CMake: Add Apple Silicon homebrew Qt bin path to MOC search paths (Fuzzbawls)
4e9af5437dba3f991bdb5e02da1293cf09fe71df CMake: Add CPU based BDB root path detection for macOS (Fuzzbawls)

Pull request description:

  A couple more updates to CMake builds on Apple Silicon (M1) based systems:

  - The `BerkeleyDB_ROOT_DIR` top-level variable is expected to be only a single path, and not a list, so use build host processor logic to conditionally set it.
  - The Qt search paths in order to find the `moc` binary weren't including the apple silicon based homebrew path, which was resulting in a failure to find the program.

  Since the ability to test these changes by others on native M1 hardware is limited, and CI doesn't yet give us the opportunity to test in a M1 CI environment, it would suffice to simply verify that **non-M1** builds are unaffected by these changes.

ACKs for top commit:
  furszy:
    utACK 4c0123f39ad5c3713e16da6138b133c36f70ba50
  random-zebra:
    utACK 4c0123f39ad5c3713e16da6138b133c36f70ba50

Tree-SHA512: b2cf4d3ef2de60a68dde4de103775a4834921a448fdc79b247110105457f65f3eb20c048ea07962a821d7937ec2933d47b26c79ee7c315c1086cf9852a5610d0

0307dec... by furszy <email address hidden>

Merge #2616: [Tests] Replace usage of tostring() with tobytes()

02fc06f3984ee83fbba9a6375e83957b0b64605e tests: Replace usage of tostring() with tobytes() (Carl Dong)

Pull request description:

  Straight forward backport of https://github.com/bitcoin/bitcoin/pull/13963

  > tostring() is deprecated as of python 3.7 and results in stderr output
  > causing tests to fail

ACKs for top commit:
  random-zebra:
    utACK 02fc06f3984ee83fbba9a6375e83957b0b64605e
  furszy:
    utACK 02fc06f and merging..

Tree-SHA512: c94ad76b5344641a1adff035bfbc898fe75be0a9b45ee8259a5072bf56d66a1d101c942a7dbdcde06077aa0319e64bdca0ef6b1aef557a59798672f99ed2ce87

860fa5a... by furszy <email address hidden>

TierTwo: do not ask for single MN items if the node is in initial synchronization state.

if it happens before or while the node's tier two initial synchronization is being executed, the peer will move to single items requests instead of requesting the full list.

Plus, decrease the DoS score for a bad mnb signature during the initial synchronization process, so we don't end up banning pre v5.3.3 nodes too fast for an invalidly serialized mnb (this issue was solved in #2611 removing the mnb BIP155 flag, this is only an extra guard to give a bit more time to non-updated peers to upgrade while the network is upgrading).

729d2f9... by furszy <email address hidden>

Merge #2611: [TierTwo] Solve tier two network synchronization issues

bf345853fac6f5523a532a9d744333e4aaf3a65e refactor: rename DsegUpdate to RequestMnList (furszy)
c896407763f3a95851860f16a749b0fbad0cacfa TierTwo: when the INV is received, remove it from every peer AskFor set. (furszy)
3f5cd8bdefa3ee5fed42d8ca3e3e5fe9b0372982 net: do not relay INV messages to not successfully connected peers. (furszy)
4748176aee8173eca5bbf2efbdd9531ff5613ddb TierTwo: Only relay data if we aren't on the initial synchronization phase. (furszy)
b9cb6b6fa2a29d2039bbba5c518e1a001f4a30a3 net_processing: improve INV processing for tier two elements. (furszy)
975c1dcbdcfe04fde441a2e2d7fe0de5ff362613 Masternode: clean possible invalidly stored seen MN broadcasts at startup. (furszy)
c3139f1f699336385480b9043e5a158a41443161 Masternode: remove own mnb validation skip. (furszy)
ee99962c6f554551449cc9333100e536392f3ca2 Masternode-sync: Count local MN, in case of have it, for fallback sync issue. (furszy)
d14b991022a70560e1c268ed1f154fc127d2c4c4 Masternode: pre-v6.0 guard against an invalidly stored BIP155 masternode addr that causes a signature verification failure. (furszy)
9a6f4adbe8074a9ded16128860b60298f4e59848 Masternode: remove error-prone 'isBIP155Addr' flag, use directly the addr isCompat function. (furszy)
9c2f4e0be3c5adf3b04c42d15861a86cc21497e2 test, governance sync: increase tier two network gossip movement (furszy)
ffeabf49e6780d82d45a53769a073c9b8e798564 test: add tier two resync from scratch test case. (furszy)
4e3b90471dc0a9c97efe258d6ff2336dc1a85340 TierTwo sync: raise mn list sync time to 40 seconds. (furszy)
e77d3da97b1681e24627c9bcff8a1e6c0d1898a4 net bugfix: clear waiting for response INVs from the "askedFor" set when the item is received. (furszy)
49e01192120e57087c2c38d6f7a67eb209d63772 tier two: do not request single missing mn entries until the initial sync process is completed. (furszy)
cff4254099a2ef27d7cd0a7c5991396762dbfea5 MasternodeMan: remove mainnet only check for the "already asked mn list sync" DoS validation. (furszy)
b749305e057adf26332048f499386dd754d5013c Raise max mnlist sync threshold, increase budget sync finish timeout and document masternode-sync process. (furszy)
beea3969d37bde1c8d5080de81fd1b9476a073c6 Bump protocol version to 70924. (furszy)
1f97eaef48363606a3a3ef9b7a57c5c1b48adda7 budget sync: if budget finalization fails, not only request missing proposals, request proposals' votes as well. (furszy)
9c6bbd18d1c71536f3b025c66146f5ee6ddd03ef Cleanup: remove unused sortProposalsByHash struct. (furszy)
81c0863738a6a76a1b916841945549fb6e24223e budget sync: do not block budget full sync requests forever. (furszy)
c0dc33a1438d28e25a097020b7a77a2c70cd5fa1 mnsync: randomize the sync requests order so the node try to sync from different peers in case of needing it. (furszy)
a0021f8cadcfacae25b1def0b5b6e93d487134a6 mnsync: do not mark get_mn_list peer sync fulfilled if the request wasn't done. (furszy)
6db901f26477e5cdcea92905c0ba3a0204b1c55b Cleanup: Remove unused chainHeight argument from GetMaxTimeWindow(int chainHeight) (furszy)
a6f37b0b957defd215ab04e6d881ba9e4716eb2b Test: add test case for budget data re-synchronization. (furszy)
fbfefc00ab1c8af4dabd001f88ac77593c3207b6 [RPC] Add cleanbudget command. (furszy)

Pull request description:

  Long week.. a small summary of what have done here:

  First, the last forking reason investigation
  The issue was a not-synchronized votes count on proposals that were part of the last superblock budget payments that ended up on a rejection of the budget finalization and a never follow-up re-synchronization of it.

  This happened, once more, for a chain of events over the current tier two sync model. This PR corrects and improves a good number of topics over the area, that will briefly mention below, preventing the forking scenario from happening again during the next superblock.

  1) The initial synchronization of budget finalizations, proposals and votes are only relayed once at sync time. They are all sent together as part of the budget sync message response. In this response, the remote peer invalidly blocks any subsequent budget sync request for the entire node life cycle (there is no cleanup function). So the remote peer will not respond to any budget sync anymore, don't care how many times the local node resets the process and re-tries it.
  And, as the current initial synchronization receives the tier two data progressively, item by item, and as the node can discard budget data due lack of MN entries when the data is processed, a subsequent sync request can be needed after certain amount of time.
  (Plus, the reason why we never saw this behavior on testnet/regtest is because it has check to only block peers requests forever on mainnet..).

  2) None of the tier two inv requests are being removed from the waiting for response inv set and map when the item arrives.
  The set grows infinitely for the entire node life cycle and any subsequent inv request to specific item is locally rejected (which is not something uncommon in the current tier two sync model as an item can be discarded by a missing dependency, like for example a budget finalization that contains a proposal that hasn't arrived to the node yet. In this example, the node will reject the finalization, request the missing proposal and then retry to obtain the finalization after receiving the missing information to validate it properly).

  3) The node only send sync request messages to the same list of nodes ordered, up to a certain limit, when those nodes can already have the request fulfilled and blocked (for a certain time) for follow-up responses.

  4) There is a race condition that skips the MN list sync requests if single MN sync requests were sent and responded before reaching the get mn list message dispatch function. For example an arriving `mnwinner` that contains an unknown voter will trigger a single MN sync request that if it happens before reaching the initial `GETMNLIST` sync request (as both use the same msg response) can cause the sync process to skip the full MN list sync. Ending up, with the node, only syncing via single entry requests during msgs processing rejections, and hardily obtaining the full MN list.

  5) The node can mark peers as "request fulfilled" during the mn list sync process and increase the attempt field even when it did not send the sync request message. This happens because `DsegUpdate` function can return without doing its job.

  6) If the budget finalization fails for any sync issue post initial sync time, aside from the fact that we cannot request full sync for issue (1), the node isn't requesting budget votes sync neither, only proposals sync.

  Then, aside from the corrections and improvements for the topics above, added:

  1) A budget data re-synchronization test case to exercise the proper sync behavior after the modifications. (added a hidden RPC command to manually clean the budget data).

  2) A maximum mnlist sync threshold and budget "good" timeout increment.

  3) Documentation for the, previously totally undocumented.., masternode-sync process.

  And finally, as this work has to be released prior to the next superblock to prevent another bad forking scenario, have bumped the peer protocol version to help with the release deployment and all the network monitoring work during the superblock.

ACKs for top commit:
  random-zebra:
    re-ACK bf345853fac6f5523a532a9d744333e4aaf3a65e
  Fuzzbawls:
    ACK bf345853fac6f5523a532a9d744333e4aaf3a65e

Tree-SHA512: d3821648a1dffc00d43604f3dcd761f15af36c3c75896904b70c138c5e6f8c18c6f333455858790e82ea5534a5788e8f1d07f87dca981f4fab5f2dd73c0edb7e

61cd18e... by Fuzzbawls

[GUI] Force argument insertion when switching languages

On the Welcome screen, when users change the language, a call to Qt's
internal `retranslateUi()` is made. This, however does not take into
consideration any arguments in a source string, and instead treats them
as string literals (ie, `%1` is not considered an argument, but rather a
 literal string)

Fix this by adding a supplemental call to `setText()` that DOES allow
for argument processing directly after the retranslation.