From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [IPv6:2a01:7e0:0:424::9]) by lore.proxmox.com (Postfix) with ESMTPS id 01E421FF138 for ; Wed, 04 Feb 2026 11:41:26 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id C526210233; Wed, 4 Feb 2026 11:41:55 +0100 (CET) From: Maximiliano Sandoval To: pve-devel@lists.proxmox.com Subject: [PATCH proxmox-i18n 2/2] fix strings with wrong format Date: Wed, 4 Feb 2026 11:41:35 +0100 Message-ID: <20260204104150.178904-2-m.sandoval@proxmox.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260204104150.178904-1-m.sandoval@proxmox.com> References: <20260204104150.178904-1-m.sandoval@proxmox.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1770201634218 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.086 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment KAM_SHORT 0.001 Use of a URL Shortener for very short URL RCVD_IN_VALIDITY_CERTIFIED_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. RCVD_IN_VALIDITY_RPBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. RCVD_IN_VALIDITY_SAFE_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record WEIRD_PORT 0.001 Uses non-standard port number for HTTP Message-ID-Hash: M5IWBKBBH4T5QXIGJE7F4LKFDNSD2EK5 X-Message-ID-Hash: M5IWBKBBH4T5QXIGJE7F4LKFDNSD2EK5 X-MailFrom: m.sandoval@proxmox.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Proxmox VE development discussion List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: That would fail to be replaced at runtime. Depending on how the string was replaced at runtime having a broken format can result in either the string not being replaced at runtime or a crash. Where it was not clear how to fix the issue the string is left untranslated. After this commit the remaining errors are only in ukr.po, ru.po and a single error in pl.po that can be fixed with [2]. The reported errors in ukr.po and ru.po need more consideration due to the complexity of their plural forms. These were detected with the following script ```python import polib from pathlib import Path dirty = False def is_rust_format(entry): return ( "{}" in entry.msgid or "{0}" in entry.msgid or "{n}" in entry.msgid or "{}" in entry.msgid_plural or "{0}" in entry.msgid_plural or "{n}" in entry.msgid_plural ) def check_po_file(path): po = polib.pofile(path) for entry in po: if "javascript-format" in entry.flags: entry.flags.remove("javascript-format") if ( entry.occurrences and all([o.endswith(".rs") for (o, l) in entry.occurrences]) and is_rust_format(entry) ): entry.flags.append("rust-format") dirty = True if dirty: po.save(f"{file.stem}.with-formats.po") root = Path() for file in root.iterdir(): if file.suffix == ".po" and ".with-formats" not in file.name: check_po_file(file) ``` which attaches the `rust-format` flag to a string. Then later the new po files are checked with ``` msgfmt --check $PO_FILE ``` with gettext 0.26. This can be done, for example, with ```sh for f in *.with-formats.po; do flatpak run --command=msgfmt --filesystem=home org.freedesktop.Platform//25.08 --check $f; done ``` for example. [1] https://www.gnu.org/software/gettext/manual/html_node/Plural-forms.html#index-ngettext [2] https://lore.proxmox.com/all/20260204100736.134697-1-m.sandoval@proxmox.com/ Signed-off-by: Maximiliano Sandoval --- ar.po | 4 ++-- cs.po | 4 ++-- ja.po | 2 +- ko.po | 4 ++-- ukr.po | 4 ++-- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/ar.po b/ar.po index 66a34efa..b4ae88c8 100644 --- a/ar.po +++ b/ar.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: pve-manager 31813246103b2582162f422dc34d8077eaee1e01\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-12-10 15:47+0100\n" -"PO-Revision-Date: 2025-07-18 10:53+0200\n" +"PO-Revision-Date: 2026-02-04 10:38+0100\n" "Last-Translator: \n" "Language-Team: Arabic \n" "Language: ar\n" @@ -19109,7 +19109,7 @@ msgstr "{0} إلى {1} ({2})" #: proxmox-widget-toolkit/src/Utils.js:1121 #, javascript-format msgid "{0}% of {1}" -msgstr "{0}٪ من {1}" +msgstr "" #: proxmox-datacenter-manager/ui/src/pve/lxc/overview.rs:296 #: proxmox-datacenter-manager/ui/src/pve/qemu/overview.rs:305 diff --git a/cs.po b/cs.po index 728f23aa..3d38dd7a 100644 --- a/cs.po +++ b/cs.po @@ -12,7 +12,7 @@ msgstr "" "Project-Id-Version: proxmox-backup 254169f622d891d67de38e8c8c6b9fa8f4af5dc9\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-12-10 15:47+0100\n" -"PO-Revision-Date: 2025-12-03 08:55+0100\n" +"PO-Revision-Date: 2026-02-04 10:49+0100\n" "Last-Translator: Pavel Borecki \n" "Language-Team: Czech \n" "Language: cs\n" @@ -18882,7 +18882,7 @@ msgstr "{0} {{1} na uzlu {2})" #: proxmox-datacenter-manager/ui/src/pve/storage.rs:288 #: proxmox-datacenter-manager/ui/src/renderer.rs:76 msgid "{0}% ({1} of {2})" -msgstr "{0}% {{1} z {2})" +msgstr "{0}% ({1} z {2})" #: proxmox-widget-toolkit/src/Utils.js:1121 #, javascript-format diff --git a/ja.po b/ja.po index 485b98c8..3175e191 100644 --- a/ja.po +++ b/ja.po @@ -18710,7 +18710,7 @@ msgstr "{1}の {0}" #: proxmox-datacenter-manager/ui/src/dashboard/node_status_panel.rs:125 msgid "{0} of {1} nodes are offline" -msgstr "1}の {0} ノードがオフライン" +msgstr "{1}の {0} ノードがオフライン" #. TRANSLATORS: For example "resource on Remote 'HAL 9000'" #: proxmox-datacenter-manager/ui/src/dashboard/top_entities.rs:249 diff --git a/ko.po b/ko.po index e494cabb..64799f54 100644 --- a/ko.po +++ b/ko.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: proxmox translations\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-12-19 10:53+0100\n" -"PO-Revision-Date: 2025-12-16 23:20+0900\n" +"PO-Revision-Date: 2026-02-04 10:52+0100\n" "Last-Translator: angrystar170 \n" "Language-Team: Korean \n" "Language: ko_KR\n" @@ -12078,7 +12078,7 @@ msgstr "복구 키" #: proxmox-yew-comp/src/tfa/tfa_add_recovery.rs:119 msgid "Recovery Keys for user '{}'" -msgstr "복구 키" +msgstr "" #: proxmox-backup/www/panel/PrunePanel.js:100 msgid "Recursive" diff --git a/ukr.po b/ukr.po index 0d26066d..7a2ac42b 100644 --- a/ukr.po +++ b/ukr.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: proxmox translations\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-12-10 15:47+0100\n" -"PO-Revision-Date: 2025-09-19 09:44+0200\n" +"PO-Revision-Date: 2026-02-04 11:09+0100\n" "Last-Translator: Sviatoslav Brylenko \n" "Language-Team: Ukrainian \n" "Language: uk\n" @@ -4786,7 +4786,7 @@ msgstr "EVPN зона не має зконфігурованого VRF VNI!" #: proxmox-datacenter-manager/ui/src/sdn/evpn/vrf_tree.rs:160 #: proxmox-datacenter-manager/ui/src/sdn/evpn/vrf_tree.rs:219 msgid "EVPN Zone {} has no VRF VNI" -msgstr "EVPN зона не має VRF VNI" +msgstr "" #: proxmox-datacenter-manager/ui/src/sdn/evpn/remote_tree.rs:192 msgid "EVPN Zone {} has no VXLAN ID defined!" -- 2.47.3