1
0
mirror of https://github.com/django/django.git synced 2025-10-26 15:16:09 +00:00

Decode from UTF-8 explicitly when reading a text file in makemessages.

This shows itself with Python 3 under Windows where UTF-8 usually isn't
the default file I/O encoding and caused one failure and three errors
in our test suite under that platform setup.
This commit is contained in:
Ramiro Morales
2013-10-21 00:22:32 -03:00
parent a098bee1b9
commit b5f52647fe
2 changed files with 11 additions and 7 deletions

View File

@@ -1,5 +1,6 @@
import fnmatch
import glob
import io
import os
import re
import sys
@@ -10,6 +11,7 @@ import django
from django.core.management.base import CommandError, NoArgsCommand
from django.core.management.utils import (handle_extensions, find_command,
popen_wrapper)
from django.utils.encoding import force_str
from django.utils.functional import total_ordering
from django.utils.text import get_text_list
from django.utils.jslex import prepare_js_for_gettext
@@ -402,16 +404,17 @@ class Command(NoArgsCommand):
for domain in domains:
django_po = os.path.join(django_dir, 'conf', 'locale', locale, 'LC_MESSAGES', '%s.po' % domain)
if os.path.exists(django_po):
with open(django_po, 'rU') as fp:
with io.open(django_po, 'rU', encoding='utf-8') as fp:
m = plural_forms_re.search(fp.read())
if m:
plural_form_line = force_str(m.group('value'))
if self.verbosity > 1:
self.stdout.write("copying plural forms: %s\n" % m.group('value'))
self.stdout.write("copying plural forms: %s\n" % plural_form_line)
lines = []
found = False
for line in msgs.split('\n'):
if not found and (not line or plural_forms_re.search(line)):
line = '%s\n' % m.group('value')
line = '%s\n' % plural_form_line
found = True
lines.append(line)
msgs = '\n'.join(lines)