没有使用Django基本翻译文件?

时间:2017-05-21 19:23:24

标签: python django django-i18n

我有一个Django项目,并希望使用i18n来支持不同的语言。 在我的模板中,我写道:

{% load i18n l10n %}
<span>{% trans 'Sun' %}</span>

然后我在BASE_DIR

中创建了所需的目录
./locale/LC_MESSAGES/ar
./locale/LC_MESSAGES/ru

我的设置:

LANGUAGE_CODE = 'en-us'

LANGUAGES = (
    ('en', _('English')),
    ('ar', _('Arabic')),
    ('ru', _('Russian')),
)

LOCALE_PATHS = (
    join(BASE_DIR, 'locale'),
)

然后我运行python manage.py makemessages -a,正在创建.po个文件。到目前为止,这么好..

检查.po文件,我看到了下面的内容(在大量其他行中):

#: myproject/web/templates/reports/mycalendar.html:24
#: venv/lib/python3.5/site-packages/django/utils/dates.py:11
msgid "Sun"
msgstr ""

嘿,他们是否希望我自己翻译来自Django的所有消息 ??

让我们打开一个文件venv/lib/python3.5/site-packages/django/conf/locale/ar/LC_MESSAGES/django.po

msgid "Sun"
msgstr "أحد"

所以,这个单词的翻译已经存在!

正在运行python manage.py compilemessages - 这对这个单词没有影响,它变成了英语。

我试图包含原生django的语言环境路径LOCALE_PATHS

from django.conf import locale as django_locale
DJANGO_LOCALE_PATH = abspath(dirname(django_locale.__file__))
LOCALE_PATHS = (
    DJANGO_LOCALE_PATH,
    join(BASE_DIR, 'locale'),
)

没办法。仍然在我的.po文件中显示该行,并且msgstr仍为空。我尝试从.po文件中删除这些行,但在makemessages之后它们又出现了。

现在问题是:为什么忽略原生.po文件以及如何使用它?

的Django == 1.8.12

0 个答案:

没有答案