【问题标题】:django locale is not loading correctlydjango 语言环境未正确加载
【发布时间】:2019-01-29 04:52:10
【问题描述】:

我正在使用 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

我应该去哪里看看?

【问题讨论】:

    标签: python django python-3.x locale chinese-locale


    【解决方案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 "接受语言";

    【讨论】:

    • 感谢您的回答!我错过了设置中的LOCALE_PATHS
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-17
    • 1970-01-01
    • 2021-02-12
    • 2022-11-13
    • 2014-12-07
    相关资源
    最近更新 更多