Opened 10 years ago

Closed 9 years ago

#21928 closed Bug (duplicate)

updating .po files with ' makemessages' under windows with russian locale fail

Reported by: gurovic@… Owned by: nobody
Component: Internationalization Version: 1.7
Severity: Normal Keywords: encoding msgmerge
Cc: Triage Stage: Accepted
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description (last modified by Aymeric Augustin)

django1.7, python 3.2, windows 7 64 bit russian

I have Windows 7 Rus, default encoding is cp1251.
If i have some translations in .po-file in russian (utf-8 encoding),
and running makemessages again to add new phrases, it uses msgmerge.exe in function write_po_file,
popen got output in cp1251 encoding instead utf-8 and crashes:

Exception in thread Thread-63:
Traceback (most recent call last):
  File "c:\python32\lib\", line 740, in _bootstrap_inner
  File "c:\python32\lib\", line 693, in run
    self._target(*self._args, **self._kwargs)
  File "c:\python32\lib\", line 1013, in _readerthread
  File "c:\python32\lib\encodings\", line 23, in decode
    return codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte 0x98 in position 1157: character maps to <undefined>

Traceback (most recent call last):
  File "c:\python32\Scripts\", line 9, in <module>
    load_entry_point('Django==1.7a1', 'console_scripts', 'django-admin')()
  File "c:\python32\lib\site-packages\django-1.7a1-py3.2.egg\django\core\management\", line 427, in execute_from_command_line
  File "c:\python32\lib\site-packages\django-1.7a1-py3.2.egg\django\core\management\", line 419, in execute
  File "c:\python32\lib\site-packages\django-1.7a1-py3.2.egg\django\core\management\", line 288, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "c:\python32\lib\site-packages\django-1.7a1-py3.2.egg\django\core\management\", line 337, in execute
    output = self.handle(*args, **options)
  File "c:\python32\lib\site-packages\django-1.7a1-py3.2.egg\django\core\management\", line 529, in handle
    return self.handle_noargs(**options)
  File "c:\python32\lib\site-packages\django-1.7a1-py3.2.egg\django\core\management\commands\", line 288, in handle_noargs
    self.write_po_file(potfile, locale)
  File "c:\python32\lib\site-packages\django-1.7a1-py3.2.egg\django\core\management\commands\", line 399, in write_po_file
    msgs, errors, status = popen_wrapper(args)
  File "c:\python32\lib\site-packages\django-1.7a1-py3.2.egg\django\core\management\", line 25, in popen_wrapper
    output, errors = p.communicate()
  File "c:\python32\lib\", line 813, in communicate
    return self._communicate(input)
  File "c:\python32\lib\", line 1050, in _communicate
    stdout = stdout[0]
IndexError: list index out of range

popen runs for the following process:

['msgmerge', '-q', 'C:\\temp\\oluch\\oluch\\locale\\ru\\LC_MESSAGES\\django.po', 'C:\\temp\\oluch\\oluch\\locale\\django.pot'] 

Change History (8)

comment:1 by Claude Paroz, 10 years ago

Is this a regression from Django 1.6?

comment:2 by Aymeric Augustin, 10 years ago

Description: modified (diff)
Triage Stage: UnreviewedAccepted

comment:3 by bbaja42, 10 years ago

Might be related to #21991, it also had issues regarding locale. If it is related, then it is not regression.

Last edited 9 years ago by Tim Graham (previous) (diff)

comment:4 by Claude Paroz, 10 years ago

Severity: Release blockerNormal

comment:5 by Tim Graham, 10 years ago

Version: 1.7-alpha-11.7

comment:6 by LennyLip, 9 years ago

got this bug (

created .po file contains:
"Content-Type: text/plain; charset=UTF-8\n"

Python 3, Django 1.7.3

any news?

comment:7 by Martin Svoboda, 9 years ago

I also have this bug. Nowadays is not possible for me runs makemessages on Windows, if some translations exist. Msgmerge probably works wrong with encoding on windows.

  • On Unix has similar problem solved with setting locale
  • It is not possible to configure Windows this way. Utf8 cannot be default locale. locale.getdefaultlocale() returns for me:
    >>> locale.getdefaultlocale()
    ('cs_CZ', 'cp1250')

in django.po

#: .\quotes\
msgid "Domain.tld: Quotes for every day"
msgstr " Citáty na každý deň"

Python 3.4.2, Django 1.8, Windows 7 64bit

Version 0, edited 9 years ago by Martin Svoboda (next)

comment:8 by daphshez, 9 years ago

Resolution: duplicate
Status: newclosed

The regression tests for #23271 now fails for the same reason, so I suggest this discussion should continue there.

Note: See TracTickets for help on using tickets.
Back to Top