#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.

Reply via email to