Maximiliano Sandoval <[email protected]> writes:
> Note that it is up to the translator to translate the singular using
> {1}, for example one could translate it as "{0}% of one CPU" in British
> English.
>
> The string will be extracted as:
>
> ```
> #. TRANSLATORS: For example "5% of 24 CPUs"
> #: proxmox-widget-toolkit/src/Utils.js:1123
> #, javascript-format
> msgid "{0}% of {1} CPU"
> msgid_plural "{0}% of {1} CPUs"
> msgstr[0] "{0}% de {1} CPU"
> msgstr[1] "{0}% de {1} CPUs"
> ```
>
> xgettext has some understanding of javascript and mistakenly thinks that
> '%' will reference a variable, hence the javascript-format hint, but
> this is a pre-existing issue.
>
> [1]
> https://www.gnu.org/software/gettext/manual/html_node/javascript_002dformat.html
>
> Signed-off-by: Maximiliano Sandoval <[email protected]>
> ---
> src/Utils.js | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/src/Utils.js b/src/Utils.js
> index 5457ffa..ed51ce5 100644
> --- a/src/Utils.js
> +++ b/src/Utils.js
> @@ -1118,7 +1118,8 @@ Ext.define('Proxmox.Utils', {
>
> render_cpu_usage: function (val, max) {
> return Ext.String.format(
> - `${gettext('{0}% of {1}')} ${gettext('CPU(s)')}`,
> + // TRANSLATORS: For example "5% of 24 CPUs"
> + ngettext('{0}% of {1} CPU', '{0}% of {1} CPUs', max),
> (val * 100).toFixed(2),
> max,
> );
Since this is, perhaps, the first use of ngettext in our javascript
codebase I tested:
- Extracted the strings in proxmox-i18n
- translated the string
- See that it is translated both in ts singular and plural forms
Note that one way around to getting the javascript-format (this is the
only string that gets this hint, and wrongly at it) would be to escape
the % sign as %% but Ext.String.format does not understand this escape
and would display it literally. The javascript-format hint seems to be
ultimately harmless in this context.
Note however that when the format hint, gettext understating of the
language, and our use of it align, then it would be actually helpful.
For example, `msgfmt --check` would check that strings with rust-format
are properly formatted. For example:
#: somewhere
#, rust-format
msgid "Hello {0}"
msgstr "Hola {1}"
would throw an error while building proxmox-i18n instead of crashing at
runtime and multiple times errors like this one have been spotted during
review of translations.
We would get this for free for Debian 14 if gettext is bumped to 0.24 or
newer.
--
Maximiliano
_______________________________________________
pve-devel mailing list
[email protected]
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel