#34848: Updating translations catalog for javascript files fails with
CommandError
------------------------------------------------+------------------------
Reporter: Natalia Bidart | Owner: nobody
Type: Bug | Status: new
Component: Internationalization | Version: 5.0
Severity: Normal | Keywords:
Triage Stage: Unreviewed | Has patch: 0
Needs documentation: 0 | Needs tests: 0
Patch needs improvement: 0 | Easy pickings: 0
UI/UX: 0 |
------------------------------------------------+------------------------
Running the command to update the translations catalog for the `djangojs`
domain fails with the following error:
{{{
xgettext: warning: msgid '' is used without plural and with plural.
./views/templates/i18n_catalog.js:52: Here is the
occurrence without plural.
./views/templates/i18n_catalog.js:60: Here is the
occurrence with plural.
Workaround: If the msgid is a sentence, change the
wording of the sentence; otherwise, use contexts for disambiguation.
CommandError: errors happened while running msguniq
/home/nessita/fellowship/django/django/conf/locale/djangojs.pot:22:
context separator <EOT> within string
/home/nessita/fellowship/django/django/conf/locale/djangojs.pot:23:
context separator <EOT> within string
msguniq: found 2 fatal errors
}}}
As far as I have been able to debug, these errors come from these two
lines from the `django/views/templates/i18n_catalog.js` file:
{{{
let value = django.gettext(context + '\x04' + msgid);
}}}
and
{{{
let value = django.ngettext(context + '\x04' + singular, context + '\x04'
+ plural, count);
}}}
This file
[https://github.com/ngnpope/django/blob/main/django/views/templates/i18n_catalog.js
django/views/templates/i18n_catalog.js] was upgraded to a "full
javascript" file in [https://github.com/django/django/pull/16562/files
#diff-1b9c97f5db01b8f98f017fc8727caa7c7328f1c9147a906b652127148a698ba8 PR
#16562]: before this change, the javascript for the `i18n_catalog` was
inline in the `i18n.py` module.
The generated `pot` for this file looks like this:
{{{
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-09-18 14:48-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <[email protected]>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
#: views/templates/i18n_catalog.js:52 views/templates/i18n_catalog.js:60
msgid ""
msgid_plural ""
msgstr[0] ""
msgstr[1] ""
}}}
It seems that we need to have a way to skip fetching translations for the
`i18n_catalog.js` file. An immediate workaround is to use this command:
{{{
django-admin makemessages -l en --domain=djangojs -i
views/templates/i18n_catalog.js
}}}
But I think we may need to provide a more standard/common way to generate
this catalogs so future contributors do not need to go thru this
debugging. One option would be to provide a toplevel `Makefile` with a
rule to update translations catalogs.
--
Ticket URL: <https://code.djangoproject.com/ticket/34848>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
--
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-updates/0107018aaa48c5e7-c1f5851d-6fa0-4eb4-a35c-3d6a1fca05ef-000000%40eu-central-1.amazonses.com.