all lists on lists.proxmox.com
 help / color / mirror / Atom feed
* [pve-devel] [PATCH proxmox-i18n 1/2] makefile: prefer using xgettext over msgcat
@ 2025-01-22 12:20 Maximiliano Sandoval
  2025-01-22 12:20 ` [pve-devel] [PATCH proxmox-i18n 2/2] make: add proxmox-datacenter-manager translations Maximiliano Sandoval
  0 siblings, 1 reply; 6+ messages in thread
From: Maximiliano Sandoval @ 2025-01-22 12:20 UTC (permalink / raw)
  To: pve-devel

For concatenating .pot files. From [1]:

> To concatenate POT files, better use xgettext, not msgcat, because
> msgcat would choke on the undefined charsets in the specified POT
> files.

[1] https://www.gnu.org/software/gettext/manual/html_node/msgcat-Invocation.html

Signed-off-by: Maximiliano Sandoval <m.sandoval@proxmox.com>
---
 Makefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Makefile b/Makefile
index 717203e..90a7453 100644
--- a/Makefile
+++ b/Makefile
@@ -129,7 +129,7 @@ init-%.po: messages.pot
 
 .INTERMEDIATE: messages.pot
 messages.pot: proxmox-widget-toolkit.pot proxmox-mailgateway.pot pve-manager.pot proxmox-backup.pot
-	msgcat $^ > $@
+	xgettext $^ --msgid-bugs-address="<support@proxmox.com>" --output $@
 
 .PHONY: distclean
 distclean: clean
-- 
2.39.5



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


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [pve-devel] [PATCH proxmox-i18n 2/2] make: add proxmox-datacenter-manager translations
  2025-01-22 12:20 [pve-devel] [PATCH proxmox-i18n 1/2] makefile: prefer using xgettext over msgcat Maximiliano Sandoval
@ 2025-01-22 12:20 ` Maximiliano Sandoval
  2025-01-22 12:22   ` Maximiliano Sandoval
  0 siblings, 1 reply; 6+ messages in thread
From: Maximiliano Sandoval @ 2025-01-22 12:20 UTC (permalink / raw)
  To: pve-devel

The catalog-{lang}.mo files are generated only with strings that are
relevant to the proxmox-datacenter-manager instead of the whole
{lang}.po file. The msgmerge command will produce all strings containing
in the {lang}.po file but the ones that do not concern
proxmox-datacenter-manager.pot will be written without a source file,
then msgattrib will discard all those strings with --no-obsolete. We
throw a --no-fuzzy to further decrease the resulting catalog-{lang}.mo's
file size.

One thing to note is that xtr, unlike our script to extract translations
will add comments, context, and plural forms.

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

At the moment this won't compile without changes to proxmox-yew-widget-toolkit
since the msgid "Warning" is both used for a plural and singular string. Adding
a context to the plural variant fixes this:

```diff
modified   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 string with plural form" => "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>});
```

There is already a patch in the yew-devel with this patch.

Additionally, it might make sense to revisit using xgettext instead of the perl
script for the rest of translations.


 .gitmodules                |  9 +++++++++
 Makefile                   | 33 ++++++++++++++++++++++++++++++---
 debian/control             |  6 ++++++
 debian/pdm-i18n.install    |  1 +
 proxmox-datacenter-manager |  1 +
 proxmox-yew-comp           |  1 +
 proxmox-yew-widget-toolkit |  1 +
 7 files changed, 49 insertions(+), 3 deletions(-)
 create mode 100644 debian/pdm-i18n.install
 create mode 160000 proxmox-datacenter-manager
 create mode 160000 proxmox-yew-comp
 create mode 160000 proxmox-yew-widget-toolkit

diff --git a/.gitmodules b/.gitmodules
index a81a7e3..885b6e1 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -12,3 +12,12 @@
 [submodule "proxmox-backup"]
 	path = proxmox-backup
 	url = ../proxmox-backup
+[submodule "proxmox-datacenter-manager"]
+	path = proxmox-datacenter-manager
+	url = ../proxmox-datacenter-manager
+[submodule "proxmox-yew-widget-toolkit"]
+	path = proxmox-yew-widget-toolkit
+	url = ../proxmox-yew-widget-toolkit
+[submodule "proxmox-yew-comp"]
+	path = proxmox-yew-comp
+	url = ../proxmox-yew-comp
diff --git a/Makefile b/Makefile
index 90a7453..ca98ef9 100644
--- a/Makefile
+++ b/Makefile
@@ -37,16 +37,19 @@ DSC=$(DEB_SOURCE)_$(DEB_VERSION_UPSTREAM_REVISION).dsc
 PVE_I18N_DEB=pve-i18n_$(DEB_VERSION)_all.deb
 PMG_I18N_DEB=pmg-i18n_$(DEB_VERSION)_all.deb
 PBS_I18N_DEB=pbs-i18n_$(DEB_VERSION)_all.deb
+PDM_I18N_DEB=pdm-i18n_$(DEB_VERSION)_all.deb
 
-DEBS=$(PMG_I18N_DEB) $(PVE_I18N_DEB) $(PBS_I18N_DEB)
+DEBS=$(PMG_I18N_DEB) $(PVE_I18N_DEB) $(PBS_I18N_DEB) $(PDM_I18N_DEB)
 
 PMGLOCALEDIR=$(DESTDIR)/usr/share/pmg-i18n
 PVELOCALEDIR=$(DESTDIR)/usr/share/pve-i18n
 PBSLOCALEDIR=$(DESTDIR)/usr/share/pbs-i18n
+PDMLOCALEDIR=$(DESTDIR)/usr/share/pdm-i18n
 
 PMG_LANG_FILES=$(patsubst %, pmg-lang-%.js, $(LINGUAS))
 PVE_LANG_FILES=$(patsubst %, pve-lang-%.js, $(LINGUAS))
 PBS_LANG_FILES=$(patsubst %, pbs-lang-%.js, $(LINGUAS))
+PDM_LANG_FILES=$(patsubst %, catalog-%.mo, $(LINGUAS))
 
 all:
 
@@ -78,13 +81,16 @@ submodule:
 	    || git submodule update --init
 
 .PHONY: install
-install: $(PMG_LANG_FILES) $(PVE_LANG_FILES) $(PBS_LANG_FILES)
+install: $(PMG_LANG_FILES) $(PVE_LANG_FILES) $(PBS_LANG_FILES) $(PDM_LANG_FILES)
 	install -d $(PMGLOCALEDIR)
 	install -m 0644 $(PMG_LANG_FILES) $(PMGLOCALEDIR)
 	install -d $(PVELOCALEDIR)
 	install -m 0644 $(PVE_LANG_FILES) $(PVELOCALEDIR)
 	install -d $(PBSLOCALEDIR)
 	install -m 0644 $(PBS_LANG_FILES) $(PBSLOCALEDIR)
+	install -d $(PDMLOCALEDIR)
+	install -m 0644 $(PDM_LANG_FILES) $(PDMLOCALEDIR)
+
 # compat symlinks for kr -> ko correction.
 	ln -s pmg-lang-ko.js $(PMGLOCALEDIR)/pmg-lang-kr.js
 	ln -s pve-lang-ko.js $(PVELOCALEDIR)/pve-lang-kr.js
@@ -99,18 +105,35 @@ pve-lang-%.js: %.po
 pbs-lang-%.js: %.po
 	./po2js.pl -t pbs -v "$(DEB_VERSION)" -o pbs-lang-$*.js $?
 
+catalog-%.mo: %.po proxmox-datacenter-manager.pot
+	msgmerge $< proxmox-datacenter-manager.pot | msgattrib --no-fuzzy --no-obsolete | msgfmt --verbose --output-file $@ $<;
+
 # parameter 1 is the name
 # parameter 2 is the directory
 define potupdate
     ./jsgettext.pl -p "$(1) $(shell cd $(2);git rev-parse HEAD)" -o $(1).pot $(2)
 endef
 
+# parameter 1 is the name
+# parameter 2 is the directory
+define xtrpotupdate
+	xtr --package-name "$(1)" \
+		--package-version="$(shell cd $(2);git rev-parse HEAD)" \
+        --msgid-bugs-address="<support@proxmox.com>" \
+		--copyright-holder="Copyright (C) Proxmox Server Solutions GmbH <support@proxmox.com> & the translation contributors." \
+		--output $(1).pot \
+        $(2)*.rs
+endef
+
 .PHONY: update update_pot do_update
 update_pot: submodule
 	$(call potupdate,proxmox-widget-toolkit,proxmox-widget-toolkit/)
 	$(call potupdate,pve-manager,pve-manager/www/manager6/)
 	$(call potupdate,proxmox-mailgateway,pmg-gui/js/)
 	$(call potupdate,proxmox-backup,proxmox-backup/www/)
+	$(call xtrpotupdate,proxmox-datacenter-manager-ui,proxmox-datacenter-manager/ui/src/)
+	$(call xtrpotupdate,proxmox-yew-comp,proxmox-yew-comp/src/)
+	$(call xtrpotupdate,proxmox-yew-widget-toolkit,proxmox-yew-widget-toolkit/src/)
 
 do_update:
 	$(MAKE) update_pot
@@ -128,7 +151,11 @@ init-%.po: messages.pot
 	msginit -i $^ -l $^ -o $*.po --no-translator
 
 .INTERMEDIATE: messages.pot
-messages.pot: proxmox-widget-toolkit.pot proxmox-mailgateway.pot pve-manager.pot proxmox-backup.pot
+messages.pot: proxmox-widget-toolkit.pot proxmox-mailgateway.pot pve-manager.pot proxmox-backup.pot proxmox-datacenter-manager-ui.pot proxmox-yew-comp.pot proxmox-yew-widget-toolkit.pot
+	xgettext $^ --msgid-bugs-address="<support@proxmox.com>" --output $@
+
+.INTERMEDIATE: proxmox-datacenter-manager.pot
+proxmox-datacenter-manager.pot: proxmox-datacenter-manager-ui.pot proxmox-yew-comp.pot proxmox-yew-widget-toolkit.pot
 	xgettext $^ --msgid-bugs-address="<support@proxmox.com>" --output $@
 
 .PHONY: distclean
diff --git a/debian/control b/debian/control
index 4fa8cfb..e27b3b6 100644
--- a/debian/control
+++ b/debian/control
@@ -23,3 +23,9 @@ Architecture: all
 Depends: ${misc:Depends},
 Description: Internationalization support for Proxmox VE
  This package provides the translations into all available languages.
+
+Package: pdm-i18n
+Architecture: all
+Depends: ${misc:Depends},
+Description: Internationalization support for Proxmox Datacenter Manager
+ This package provides the translations into all available languages.
diff --git a/debian/pdm-i18n.install b/debian/pdm-i18n.install
new file mode 100644
index 0000000..628332b
--- /dev/null
+++ b/debian/pdm-i18n.install
@@ -0,0 +1 @@
+/usr/share/pdm-i18n/
diff --git a/proxmox-datacenter-manager b/proxmox-datacenter-manager
new file mode 160000
index 0000000..2009982
--- /dev/null
+++ b/proxmox-datacenter-manager
@@ -0,0 +1 @@
+Subproject commit 2009982928cde8d4e0e3de26fd4bf15d1b1feab3
diff --git a/proxmox-yew-comp b/proxmox-yew-comp
new file mode 160000
index 0000000..66b80c2
--- /dev/null
+++ b/proxmox-yew-comp
@@ -0,0 +1 @@
+Subproject commit 66b80c208add1004b97c6af716696985db861e67
diff --git a/proxmox-yew-widget-toolkit b/proxmox-yew-widget-toolkit
new file mode 160000
index 0000000..72e721c
--- /dev/null
+++ b/proxmox-yew-widget-toolkit
@@ -0,0 +1 @@
+Subproject commit 72e721c070676c08ef731a62a3b14c6d046ca540
-- 
2.39.5



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


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [pve-devel] [PATCH proxmox-i18n 2/2] make: add proxmox-datacenter-manager translations
  2025-01-22 12:20 ` [pve-devel] [PATCH proxmox-i18n 2/2] make: add proxmox-datacenter-manager translations Maximiliano Sandoval
@ 2025-01-22 12:22   ` Maximiliano Sandoval
  2025-01-22 13:05     ` Thomas Lamprecht
  0 siblings, 1 reply; 6+ messages in thread
From: Maximiliano Sandoval @ 2025-01-22 12:22 UTC (permalink / raw)
  To: Maximiliano Sandoval; +Cc: pve-devel


Maximiliano Sandoval <m.sandoval@proxmox.com> writes:

> The catalog-{lang}.mo files are generated only with strings that are
> relevant to the proxmox-datacenter-manager instead of the whole
> {lang}.po file. The msgmerge command will produce all strings containing
> in the {lang}.po file but the ones that do not concern
> proxmox-datacenter-manager.pot will be written without a source file,
> then msgattrib will discard all those strings with --no-obsolete. We
> throw a --no-fuzzy to further decrease the resulting catalog-{lang}.mo's
> file size.
>
> One thing to note is that xtr, unlike our script to extract translations
> will add comments, context, and plural forms.

I forgot to mention that xtr is not bundled at the moment for Debian and
this is a blocker.


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


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [pve-devel] [PATCH proxmox-i18n 2/2] make: add proxmox-datacenter-manager translations
  2025-01-22 12:22   ` Maximiliano Sandoval
@ 2025-01-22 13:05     ` Thomas Lamprecht
  2025-01-22 13:15       ` Maximiliano Sandoval
  2025-01-24 14:37       ` Maximiliano Sandoval
  0 siblings, 2 replies; 6+ messages in thread
From: Thomas Lamprecht @ 2025-01-22 13:05 UTC (permalink / raw)
  To: Proxmox VE development discussion, Maximiliano Sandoval

Am 22.01.25 um 13:22 schrieb Maximiliano Sandoval:
> Maximiliano Sandoval <m.sandoval@proxmox.com> writes:
>> One thing to note is that xtr, unlike our script to extract translations
>> will add comments, context, and plural forms.
> 
> I forgot to mention that xtr is not bundled at the moment for Debian and
> this is a blocker.

FWIW: we package xtr [0] and make it available through our devel apt
package repo.

[0]: https://git.proxmox.com/?p=debcargo-conf.git;a=tree;f=src/xtr;h=45d8d5ddae1d677a5cb85c8fa10098d000376b2e;hb=3bbe1e6cf6f1280522daa83ce286cba1427e4003


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


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [pve-devel] [PATCH proxmox-i18n 2/2] make: add proxmox-datacenter-manager translations
  2025-01-22 13:05     ` Thomas Lamprecht
@ 2025-01-22 13:15       ` Maximiliano Sandoval
  2025-01-24 14:37       ` Maximiliano Sandoval
  1 sibling, 0 replies; 6+ messages in thread
From: Maximiliano Sandoval @ 2025-01-22 13:15 UTC (permalink / raw)
  To: Thomas Lamprecht; +Cc: Proxmox VE development discussion

Thomas Lamprecht <t.lamprecht@proxmox.com> writes:

> Am 22.01.25 um 13:22 schrieb Maximiliano Sandoval:
>> Maximiliano Sandoval <m.sandoval@proxmox.com> writes:
>>> One thing to note is that xtr, unlike our script to extract translations
>>> will add comments, context, and plural forms.
>>
>> I forgot to mention that xtr is not bundled at the moment for Debian and
>> this is a blocker.
>
> FWIW: we package xtr [0] and make it available through our devel apt
> package repo.
>
> [0]: https://git.proxmox.com/?p=debcargo-conf.git;a=tree;f=src/xtr;h=45d8d5ddae1d677a5cb85c8fa10098d000376b2e;hb=3bbe1e6cf6f1280522daa83ce286cba1427e4003

I noticed after I started doing `apt search` inside the container 🥲. I
have ready a v2 fixing this, but I was hoping to send it after for more
comments.


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

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [pve-devel] [PATCH proxmox-i18n 2/2] make: add proxmox-datacenter-manager translations
  2025-01-22 13:05     ` Thomas Lamprecht
  2025-01-22 13:15       ` Maximiliano Sandoval
@ 2025-01-24 14:37       ` Maximiliano Sandoval
  1 sibling, 0 replies; 6+ messages in thread
From: Maximiliano Sandoval @ 2025-01-24 14:37 UTC (permalink / raw)
  To: Thomas Lamprecht; +Cc: Proxmox VE development discussion


Thomas Lamprecht <t.lamprecht@proxmox.com> writes:

> Am 22.01.25 um 13:22 schrieb Maximiliano Sandoval:
>> Maximiliano Sandoval <m.sandoval@proxmox.com> writes:
>>> One thing to note is that xtr, unlike our script to extract translations
>>> will add comments, context, and plural forms.
>>
>> I forgot to mention that xtr is not bundled at the moment for Debian and
>> this is a blocker.
>
> FWIW: we package xtr [0] and make it available through our devel apt
> package repo.
>
> [0]: https://git.proxmox.com/?p=debcargo-conf.git;a=tree;f=src/xtr;h=45d8d5ddae1d677a5cb85c8fa10098d000376b2e;hb=3bbe1e6cf6f1280522daa83ce286cba1427e4003

v2 sent.


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


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2025-01-24 14:38 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-01-22 12:20 [pve-devel] [PATCH proxmox-i18n 1/2] makefile: prefer using xgettext over msgcat Maximiliano Sandoval
2025-01-22 12:20 ` [pve-devel] [PATCH proxmox-i18n 2/2] make: add proxmox-datacenter-manager translations Maximiliano Sandoval
2025-01-22 12:22   ` Maximiliano Sandoval
2025-01-22 13:05     ` Thomas Lamprecht
2025-01-22 13:15       ` Maximiliano Sandoval
2025-01-24 14:37       ` Maximiliano Sandoval

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