您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

设置Django翻译的正确方法是什么?

设置Django翻译的正确方法是什么?

添加LOCALE_PATHSsettings.py并将其设置如下:

import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__))

LOCALE_PATHS = (
    os.path.join(BASE_DIR, 'locale'),
)

请注意,它LOCALE_PATHS必须是一个元组(请查看路径末尾的逗号)。

现在基于LOCALE_PATHS,该locale文件夹应该位于项目的根目录中。

而且可以肯定的是你运行的命令django-admin.py makemessages -l de,并django-admin.py compilemessages从项目的根。

djPrj
  |
  +---> djPrj
  |
  +---> djApp
  |
  +---> locale
  |
  +---> templates

还重新安排你的MIDDLEWARE_CLASSES是LocaleMiddleware后SessionMiddleware和之前CommonMiddleware提到这里:

MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.locale.LocaleMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
)

重新启动服务(python manage.py runserver),然后再次检查。

只是为了确保将本地化应用到具有Django认django.mo文件的Django 管理页面,请执行以下测试:

首先将主要urls.py项目替换patterns为i18n_patterns:

from django.conf.urls.i18n import i18n_patterns

urlpatterns = i18n_patterns('',
    url(r'^admin/', include(admin.site.urls)),
    # ...
)

现在转到带有de前缀的管理页面,例如:http://127.0.0.1:8000/de/admin/ 并且该管理页面应以德语显示

好的,你能够以德语查看Django的管理页面吗?

还要检查你的de前缀视图。

根据你的项目代码,有些句子不是成trans块的。将它们作为:

{% trans "your sentence" %}

另外,你还必须在视图和模型的代码中使用ugettext_lazy而不是(请ugettext在此处和此处阅读)。

替换为:

from django.utils.translation import ugettext as _ 

与:

from django.utils.translation import ugettext_lazy as _

现在一切正常。

Go 2022/1/1 18:19:04 有461人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶