Django基翻译文件未使用?

2024-10-06 12:50:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个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路径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


Tags: 文件djangopybasedirlocaleposun