Fix up the babel command:
* Use `add_arguments` (`option_list` is old hat) * Add tests
This commit is contained in:
@@ -1,7 +1,6 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
import os
|
||||
from distutils.dist import Distribution
|
||||
from optparse import make_option
|
||||
from subprocess import call
|
||||
|
||||
from django.core.management.base import LabelCommand, CommandError
|
||||
@@ -15,23 +14,23 @@ class Command(LabelCommand):
|
||||
|
||||
args = '[makemessages] [compilemessages]'
|
||||
|
||||
option_list = LabelCommand.option_list + (
|
||||
make_option(
|
||||
'--locale', '-l', default=None, dest='locale', action='append',
|
||||
def add_arguments(self, parser):
|
||||
super(Command, self).add_arguments(parser)
|
||||
parser.add_argument(
|
||||
'--locale', '-l', default=[], dest='locale', action='append',
|
||||
help=(
|
||||
'Creates or updates the message files for the given locale(s)'
|
||||
' (e.g pt_BR). Can be used multiple times.'
|
||||
),
|
||||
),
|
||||
make_option(
|
||||
)
|
||||
parser.add_argument(
|
||||
'--domain', '-d', default='django', dest='domain',
|
||||
help='The domain of the message files (default: "django").',
|
||||
),
|
||||
make_option(
|
||||
parser.add_argument(
|
||||
'--mapping-file', '-F', default=None, dest='mapping_file',
|
||||
help='Mapping file',
|
||||
)
|
||||
)
|
||||
|
||||
def handle_label(self, command, **options):
|
||||
if command not in ('makemessages', 'compilemessages'):
|
||||
|
||||
1
tests/babel.cfg
Normal file
1
tests/babel.cfg
Normal file
@@ -0,0 +1 @@
|
||||
[django: templates/**.*]
|
||||
0
tests/locale/en/LC_MESSAGES/.gitkeep
Normal file
0
tests/locale/en/LC_MESSAGES/.gitkeep
Normal file
8
tests/locale/fi/LC_MESSAGES/django.po
Normal file
8
tests/locale/fi/LC_MESSAGES/django.po
Normal file
@@ -0,0 +1,8 @@
|
||||
# the header message is required to turn off the fuzzy bit for the catalog
|
||||
msgid ""
|
||||
msgstr ""
|
||||
|
||||
#: tests/templates/test.txt:2
|
||||
msgid "This could be translated."
|
||||
msgstr "Tämän voisi kääntää."
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
import os
|
||||
|
||||
SECRET_KEY = 'x'
|
||||
USE_I18N = True
|
||||
ROOT_URLCONF = 'tests.urls'
|
||||
@@ -21,3 +23,6 @@ TEMPLATES = [
|
||||
},
|
||||
},
|
||||
]
|
||||
LOCALE_PATHS = [
|
||||
os.path.join(os.path.dirname(__file__), 'locale'),
|
||||
]
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
{% load babel %}
|
||||
{% load i18n babel %}
|
||||
text={% trans "This could be translated." %}
|
||||
language_code={{ LANGUAGE_CODE }}
|
||||
language_name={{ locale.language_name }}
|
||||
date={{ date|datefmt }}
|
||||
|
||||
37
tests/test_command.py
Normal file
37
tests/test_command.py
Normal file
@@ -0,0 +1,37 @@
|
||||
import os
|
||||
|
||||
from django.core.management import call_command
|
||||
|
||||
TEST_LOCALE_DIR = os.path.join(
|
||||
os.path.dirname(__file__),
|
||||
'locale',
|
||||
)
|
||||
|
||||
|
||||
def test_babel_compilemessages():
|
||||
call_command(
|
||||
'babel',
|
||||
'compilemessages',
|
||||
'-l', 'fi',
|
||||
)
|
||||
# Assert that the .mo file was created by attempting to delete it.
|
||||
os.unlink(
|
||||
os.path.join(TEST_LOCALE_DIR, 'fi', 'LC_MESSAGES', 'django.mo')
|
||||
)
|
||||
|
||||
|
||||
def test_babel_makemessages():
|
||||
call_command(
|
||||
'babel',
|
||||
'makemessages',
|
||||
'-l', 'en',
|
||||
'-F', os.path.join(os.path.dirname(__file__), 'babel.cfg'),
|
||||
)
|
||||
# See that the expected files get populated with the discovered message
|
||||
for path in [
|
||||
os.path.join(TEST_LOCALE_DIR, 'django.pot'),
|
||||
os.path.join(TEST_LOCALE_DIR, 'en', 'LC_MESSAGES', 'django.po'),
|
||||
]:
|
||||
with open(path) as infp:
|
||||
assert '"This could be translated."' in infp.read()
|
||||
os.unlink(path) # clean up
|
||||
Reference in New Issue
Block a user