0

我正在使用 django 1.8.7。

据我了解,django 语言环境应该是从 <site_root>/locale/<lang_code>/LC_MESSAGES/django.po

我有 <site_root>/locale/zh_CN/LC_MESSAGES/django.po

然后跑了 python3 manage.py compilemessages,我得到了 <site_root>/locale/zh_CN/LC_MESSAGES/django.mo,我有 request.session[LANGUAGE_SESSION_KEY] = 'zh-cn'

但是我的 django 应用程序没有从我的加载任何内容,<site_root>/locale/zn_CN/LC_MESSAGES/django.po而只从 django 的默认翻译的语言环境翻译中加载一些翻译。

django/contrib/auth/locale/zh_CN/LC_MESSAGES/django.po

我应该去哪里看看?

4

1 回答 1

1

这是我对波斯语的 django 设置:

import environ

ROOT_DIR = environ.Path(__file__) - 3  # (my_awesome_project/config/settings/base.py - 3 = my_awesome_project/)
APPS_DIR = ROOT_DIR.path('my_awesome_project')

###### Locale settings
LOCALE_PATHS = (
    str(APPS_DIR.path('locale')),
)

gettext = lambda s: s
LANGUAGES = (
    # Translators: This message appears on the home page only
    ('fa', gettext('Persian')),
)

在我的代码中,我以这种方式使用它:

from django.utils.translation import ugettext_lazy as _

raise ValidationError(_("League dos'nt exist"))

然后在命令行中我运行这个命令:

python manage.py makemessages

然后我my_awesome_projec/my_awesome_projec/locale/fa/LC_MESSAGES/django.po根据波斯语翻译编辑文件。

然后我运行这个命令:

python manage.py compilemessages

在生产中,我将此指令添加到我的 nginx 设置中:

proxy_pass_header "接受语言";

于 2018-08-22T21:53:42.623 回答