[pve-devel] [PATCH proxmox-i18n v2 2/2] make: add proxmox-datacenter-manager translations

Maximiliano Sandoval m.sandoval at proxmox.com
Tue Feb 25 16:48:32 CET 2025


"Shannon Sterz" <s.sterz at proxmox.com> writes:

> On Fri Jan 24, 2025 at 3:37 PM CET, Maximiliano Sandoval wrote:
>> 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 at proxmox.com>
>> ---
>>  .gitmodules                |  9 +++++++++
>>  Makefile                   | 33 ++++++++++++++++++++++++++++++---
>>  debian/control             |  8 +++++++-
>>  debian/pdm-i18n.install    |  1 +
>>  proxmox-datacenter-manager |  1 +
>>  proxmox-yew-comp           |  1 +
>>  proxmox-yew-widget-toolkit |  1 +
>>  7 files changed, 50 insertions(+), 4 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 $@ $<;
>
> this could be `msmerge $^ | msgattrib ..` since you basically want to
> pass all prerequisits to `msmerge`, no?

I think you are correct, but with my make knowledge I cannot be 100%
sure. I will look into this if there is a v2.

>> +
>>  # 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 at proxmox.com>" \
>> +		--copyright-holder="Copyright (C) Proxmox Server Solutions GmbH <support at 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 at 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 at proxmox.com>" --output $@
>>
>>  .PHONY: distclean
>> diff --git a/debian/control b/debian/control
>> index cdd04a8..346c34c 100644
>> --- a/debian/control
>> +++ b/debian/control
>> @@ -2,7 +2,7 @@ Source: proxmox-i18n
>>  Section: perl
>>  Priority: optional
>>  Maintainer: Proxmox Support Team <support at proxmox.com>
>> -Build-Depends: debhelper-compat (= 13), libjson-perl, liblocale-po-perl, gettext,
>> +Build-Depends: debhelper-compat (= 13), libjson-perl, liblocale-po-perl, gettext, xtr,
>>  Standards-Version: 4.6.2
>>  Homepage: https://www.proxmox.com
>>
>> @@ -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,1 @@
>> +/usr/share/pdm-i18n/
>
>
>
> _______________________________________________
> pve-devel mailing list
> pve-devel at lists.proxmox.com
> https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel





More information about the pve-devel mailing list