#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 <l...@li.org>\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 django-updates+unsubscr...@googlegroups.com. 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.