[yew-devel] [PATCH proxmox-yew-comp v2] apt_repositories: Add context to conflicting string with plural form

Maximiliano Sandoval m.sandoval at proxmox.com
Mon Jan 27 10:46:51 CET 2025


The combination of `msgid` and `msgctxt` uniquely identifies a
translatable string. At the moment there is a message:

```
msgid "Warning"
msgstr ""
```

that conflicts with
```
msgid "Warning"
msgid_plural "Warnings"
msgstr[0] ""
msgstr[1] ""
```

Normally, `msgmerge` or similar will merge messages containing the same
`msgid` and `msgctxt`, but in this case these two cannot be merged as
one has plurals forms and the other does not. On the app-side one will
be retrieved with `gettext("Warning")` while the other by
`ngettext("Warning", 1)` which explains why they can't be merged.

Additionally, xgettext will throw the following error message:

```sh
$ xgettext proxmox-yew-comp.pot proxmox-widget-toolkit.pot
proxmox-widget-toolkit.pot:2080: duplicate message definition...
proxmox-yew-comp.pot:187: ...this is the location of the first definition
xgettext: found 1 fatal error
```

By adding a context, we can go around the issue without the need to
replace either string.

More info on contexts can be found at [1].

[1] https://www.gnu.org/software/gettext/manual/html_node/Contexts.html

Signed-off-by: Maximiliano Sandoval <m.sandoval at proxmox.com>
---

Differences from v1:
 - Expand commit message

 src/apt_repositories.rs | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/apt_repositories.rs b/src/apt_repositories.rs
index b671d01e..487ca7f 100644
--- a/src/apt_repositories.rs
+++ b/src/apt_repositories.rs
@@ -873,7 +873,8 @@ fn render_text_with_warnings(text: &str, warnings: &[String]) -> Html {
                 <i class="fa fa-fw fa-exclamation-circle"/>
             </span>
         };
-        let title = tr!("Warning" | "Warnings" % warnings.len());
+        let title =
+            tr!("This is a title" => "Warning" | "Warnings" % warnings.len());
         let mut tip = Container::new().with_child(html! {<h4>{title}</h4>});
         for message in warnings {
             tip.add_child(html! {<p>{message}</p>});
-- 
2.39.5





More information about the yew-devel mailing list