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