all lists on lists.proxmox.com
 help / color / mirror / Atom feed
From: Lukas Wagner <l.wagner@proxmox.com>
To: pdm-devel@lists.proxmox.com
Subject: [pdm-devel] [PATCH datacenter-manager] ui: use explicit parameter indices in tr macros
Date: Mon,  1 Dec 2025 17:06:26 +0100	[thread overview]
Message-ID: <20251201160626.377139-1-l.wagner@proxmox.com> (raw)

The order of parameters can change in translations, so it is important
to use explicit indexing. The gettext runtime shows warnings in the
browser console for these:

"... multiple non-indexed, non-named arguments - order is implicit"

Signed-off-by: Lukas Wagner <l.wagner@proxmox.com>
---
 ui/src/remotes/firewall/columns.rs    |  2 +-
 ui/src/remotes/firewall/ui_helpers.rs |  6 +++---
 ui/src/sdn/evpn/add_zone.rs           |  2 +-
 ui/src/sdn/evpn/remote_tree.rs        | 23 +++++++++++++----------
 ui/src/sdn/evpn/vrf_tree.rs           | 22 +++++++++++-----------
 5 files changed, 29 insertions(+), 26 deletions(-)

diff --git a/ui/src/remotes/firewall/columns.rs b/ui/src/remotes/firewall/columns.rs
index 454fd814..71c233c9 100644
--- a/ui/src/remotes/firewall/columns.rs
+++ b/ui/src/remotes/firewall/columns.rs
@@ -42,7 +42,7 @@ fn create_name_column(
         .render(move |entry: &TreeEntry| {
             let (icon, text) = match entry {
                 TreeEntry::Root if loading => {
-                    let loading_text = tr!("Loading {}...", scope.loading_description());
+                    let loading_text = tr!("Loading {0}...", scope.loading_description());
                     (
                         Container::from_tag("i").class("pwt-loading-icon"),
                         loading_text,
diff --git a/ui/src/remotes/firewall/ui_helpers.rs b/ui/src/remotes/firewall/ui_helpers.rs
index 741064d8..d251797d 100644
--- a/ui/src/remotes/firewall/ui_helpers.rs
+++ b/ui/src/remotes/firewall/ui_helpers.rs
@@ -78,7 +78,7 @@ impl PanelConfig {
         let mut rules = proxmox_yew_comp::FirewallRules::cluster(remote.to_string());
         rules.reload_token = reload_token;
         Self {
-            title: create_panel_title("list", tr!("Cluster Firewall Rules - {}", remote)),
+            title: create_panel_title("list", tr!("Cluster Firewall Rules - {0}", remote)),
             key: format!("cluster-{}", remote),
             content: rules.into(),
             title_prefix: None,
@@ -89,7 +89,7 @@ impl PanelConfig {
         let mut rules = proxmox_yew_comp::FirewallRules::node(remote.to_string(), node.to_string());
         rules.reload_token = reload_token;
         Self {
-            title: create_panel_title("list", tr!("Node Firewall Rules - {}/{}", remote, node)),
+            title: create_panel_title("list", tr!("Node Firewall Rules - {0}/{1}", remote, node)),
             key: format!("node-{}-{}", remote, node),
             content: rules.into(),
             title_prefix: None,
@@ -115,7 +115,7 @@ impl PanelConfig {
             title: create_panel_title(
                 "list",
                 tr!(
-                    "Guest Firewall Rules - {}/{}/{} {}",
+                    "Guest Firewall Rules - {0}/{1}/{2} {3}",
                     remote,
                     node,
                     vmtype.to_uppercase(),
diff --git a/ui/src/sdn/evpn/add_zone.rs b/ui/src/sdn/evpn/add_zone.rs
index 7685511c..23bf7da3 100644
--- a/ui/src/sdn/evpn/add_zone.rs
+++ b/ui/src/sdn/evpn/add_zone.rs
@@ -230,7 +230,7 @@ impl ManagedField for ControllerTableComponent {
                     controller: controller.controller.controller.clone(),
                     asn: controller.controller.asn.ok_or_else(|| {
                         format_err!(tr!(
-                            "EVPN controller {} has no ASN",
+                            "EVPN controller {0} has no ASN",
                             controller.controller.controller
                         ))
                     })?,
diff --git a/ui/src/sdn/evpn/remote_tree.rs b/ui/src/sdn/evpn/remote_tree.rs
index 17999174..e5570cf9 100644
--- a/ui/src/sdn/evpn/remote_tree.rs
+++ b/ui/src/sdn/evpn/remote_tree.rs
@@ -159,7 +159,7 @@ fn zones_to_remote_view(
 
         let zone_controller_id = zone_data.controller.as_ref().ok_or_else(|| {
             anyhow!(tr!(
-                "EVPN zone {} has no controller defined!",
+                "EVPN zone {0} has no controller defined!",
                 zone_data.zone
             ))
         })?;
@@ -172,7 +172,7 @@ fn zones_to_remote_view(
             })
             .ok_or_else(|| {
                 anyhow!(tr!(
-                    "Could not find Controller for EVPN zone {}",
+                    "Could not find Controller for EVPN zone {0}",
                     zone_data.zone
                 ))
             })?;
@@ -180,12 +180,15 @@ fn zones_to_remote_view(
         let route_target = EvpnRouteTarget {
             asn: controller.controller.asn.ok_or_else(|| {
                 anyhow!(tr!(
-                    "EVPN controller {} has no ASN defined!",
+                    "EVPN controller {0} has no ASN defined!",
                     controller.controller.controller
                 ))
             })?,
             vni: zone.zone.vrf_vxlan.ok_or_else(|| {
-                anyhow!(tr!("EVPN Zone {} has no VXLAN ID defined!", zone_data.zone))
+                anyhow!(tr!(
+                    "EVPN Zone {0} has no VXLAN ID defined!",
+                    zone_data.zone
+                ))
             })?,
         };
 
@@ -231,7 +234,7 @@ fn zones_to_remote_view(
         let vnet_zone_id = vnet_data
             .zone
             .as_ref()
-            .ok_or_else(|| anyhow!(tr!("VNet {} has no zone defined!", vnet_data.vnet)))?;
+            .ok_or_else(|| anyhow!(tr!("VNet {0} has no zone defined!", vnet_data.vnet)))?;
 
         let Some(zone) = zones
             .iter()
@@ -243,7 +246,7 @@ fn zones_to_remote_view(
 
         let zone_controller_id = zone.zone.controller.as_ref().ok_or_else(|| {
             anyhow!(tr!(
-                "EVPN zone {} has no controller defined!",
+                "EVPN zone {0} has no controller defined!",
                 &zone.zone.zone
             ))
         })?;
@@ -256,14 +259,14 @@ fn zones_to_remote_view(
             })
             .ok_or_else(|| {
                 anyhow!(tr!(
-                    "Controller of EVPN zone {} does not exist",
+                    "Controller of EVPN zone {0} does not exist",
                     zone.zone.zone
                 ))
             })?;
 
         let controller_asn = controller.controller.asn.ok_or_else(|| {
             anyhow!(tr!(
-                "EVPN controller {} has no ASN defined!",
+                "EVPN controller {0} has no ASN defined!",
                 controller.controller.controller
             ))
         })?;
@@ -273,14 +276,14 @@ fn zones_to_remote_view(
             vni: zone
                 .zone
                 .vrf_vxlan
-                .ok_or_else(|| anyhow!(tr!("EVPN Zone {} has no VRF VNI", zone.zone.zone)))?,
+                .ok_or_else(|| anyhow!(tr!("EVPN Zone {0} has no VRF VNI", zone.zone.zone)))?,
         };
 
         let vnet_target = EvpnRouteTarget {
             asn: controller_asn,
             vni: vnet_data
                 .tag
-                .ok_or_else(|| anyhow!(tr!("VNet {} has no VNI", vnet_data.vnet)))?,
+                .ok_or_else(|| anyhow!(tr!("VNet {0} has no VNI", vnet_data.vnet)))?,
         };
 
         for mut remote_entry in root.children_mut() {
diff --git a/ui/src/sdn/evpn/vrf_tree.rs b/ui/src/sdn/evpn/vrf_tree.rs
index 0de41454..e839a91e 100644
--- a/ui/src/sdn/evpn/vrf_tree.rs
+++ b/ui/src/sdn/evpn/vrf_tree.rs
@@ -123,7 +123,7 @@ fn zones_to_vrf_view(
 
         let zone_controller_id = zone_data.controller.as_ref().ok_or_else(|| {
             anyhow!(tr!(
-                "EVPN zone {} has no controller defined!",
+                "EVPN zone {0} has no controller defined!",
                 &zone_data.zone
             ))
         })?;
@@ -136,14 +136,14 @@ fn zones_to_vrf_view(
             })
             .ok_or_else(|| {
                 anyhow!(tr!(
-                    "Controller of EVPN zone {} does not exist",
+                    "Controller of EVPN zone {0} does not exist",
                     zone_data.zone
                 ))
             })?;
 
         let controller_asn = controller.controller.asn.ok_or_else(|| {
             anyhow!(tr!(
-                "EVPN controller {} has no ASN defined!",
+                "EVPN controller {0} has no ASN defined!",
                 controller.controller.controller
             ))
         })?;
@@ -153,7 +153,7 @@ fn zones_to_vrf_view(
             vni: zone
                 .zone
                 .vrf_vxlan
-                .ok_or_else(|| anyhow!(tr!("EVPN Zone {} has no VRF VNI", zone_data.zone)))?,
+                .ok_or_else(|| anyhow!(tr!("EVPN Zone {0} has no VRF VNI", zone_data.zone)))?,
         };
 
         if !existing_vrfs.insert(route_target) {
@@ -170,7 +170,7 @@ fn zones_to_vrf_view(
         let vnet_zone_id = vnet_data
             .zone
             .as_ref()
-            .ok_or_else(|| anyhow!(tr!("VNet {} has no zone defined!", vnet_data.vnet)))?;
+            .ok_or_else(|| anyhow!(tr!("VNet {0} has no zone defined!", vnet_data.vnet)))?;
 
         let Some(zone) = zones
             .iter()
@@ -182,7 +182,7 @@ fn zones_to_vrf_view(
 
         let zone_controller_id = zone.zone.controller.as_ref().ok_or_else(|| {
             anyhow!(tr!(
-                "EVPN zone {} has no controller defined!",
+                "EVPN zone {0} has no controller defined!",
                 &zone.zone.zone
             ))
         })?;
@@ -195,14 +195,14 @@ fn zones_to_vrf_view(
             })
             .ok_or_else(|| {
                 anyhow!(tr!(
-                    "Controller of EVPN zone {} does not exist",
+                    "Controller of EVPN zone {0} does not exist",
                     zone.zone.zone
                 ))
             })?;
 
         let controller_asn = controller.controller.asn.ok_or_else(|| {
             anyhow!(tr!(
-                "EVPN controller {} has no ASN defined!",
+                "EVPN controller {0} has no ASN defined!",
                 controller.controller.controller
             ))
         })?;
@@ -212,14 +212,14 @@ fn zones_to_vrf_view(
             vni: zone
                 .zone
                 .vrf_vxlan
-                .ok_or_else(|| anyhow!(tr!("EVPN Zone {} has no VRF VNI", zone.zone.zone)))?,
+                .ok_or_else(|| anyhow!(tr!("EVPN Zone {0} has no VRF VNI", zone.zone.zone)))?,
         };
 
         let vnet_target = EvpnRouteTarget {
             asn: controller_asn,
             vni: vnet_data
                 .tag
-                .ok_or_else(|| anyhow!(tr!("VNet {} has no VNI", vnet_data.vnet)))?,
+                .ok_or_else(|| anyhow!(tr!("VNet {0} has no VNI", vnet_data.vnet)))?,
         };
 
         for mut vrf_entry in root.children_mut() {
@@ -249,7 +249,7 @@ fn zones_to_vrf_view(
 
                 let vnet_zone =
                     vnet.vnet.zone.as_ref().ok_or_else(|| {
-                        anyhow!(tr!("VNet {} has no zone defined!", vnet.vnet.vnet))
+                        anyhow!(tr!("VNet {0} has no zone defined!", vnet.vnet.vnet))
                     })?;
 
                 fdb_entry.append(VrfTreeEntry::Remote(RemoteData {
-- 
2.47.3



_______________________________________________
pdm-devel mailing list
pdm-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pdm-devel


             reply	other threads:[~2025-12-01 16:06 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-12-01 16:06 Lukas Wagner [this message]
2025-12-01 16:36 ` Lukas Wagner
2025-12-01 16:47 ` [pdm-devel] superseded: " Lukas Wagner

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20251201160626.377139-1-l.wagner@proxmox.com \
    --to=l.wagner@proxmox.com \
    --cc=pdm-devel@lists.proxmox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal