翻译'Django-Oscar'

问题描述 投票:1回答:1

我想学习如何构建一个开源电子商务网站。为此,我使用'Django'框架和'Oscar'扩展。

我在这里阅读整个教程:https://django-oscar.readthedocs.io/en/releases-1.5/index.html,其中有一个Translation教程。我跟着它(必须说它缺少步骤)。这部分说明,为了翻译页面,您必须创建两个文件夹和一个符号链接:

mkdir locale i18n
ln -s $PATH_TO_OSCAR i18n/oscar

然后,对于您要翻译的每种语言:

./manage.py makemessages --symlinks --locale=<language code>

这是正确的,但除此之外,你必须编译.po文件,以便在locale文件夹(.mo文件)中获得最终的转录。之后,您必须将traductions包含在项目(或应用程序)的settings.py中。这是通过以下代码完成的:

  • 在终端(从项目的根目录):$ django-admin.py compilemessages
  • settings.py添加: LANGUAGES = [('de',_('German')),('en',_('English')),('es',_('Spanish')),]

(注意:这是我的情况,我希望将商店翻译成德语,西班牙语和英语)

在这之后,我运行我的服务器,只有这三种语言出现在选择语言框中,但是当我按下按钮以翻译页面时,它每次都返回默认语言(英语),在每次翻译请求中都会这样做:

"POST /i18n/setlang/ HTTP/1.1" 302 0
"GET / HTTP/1.1" 200 8379

我有什么步骤正在跳过或者我做错了什么吗?

提前致谢。

python django translation django-oscar
1个回答
1
投票

我有一个部分(几乎完整)的解决方案。由于我想使用的语言很常见,我直接使用Django翻译中间件,而不使用奥斯卡提供的。因此,我的解决方案是编辑settings.py,包括在MIDDLEWARE(或在MIDDLEWARE_CLASES,取决于Django版本)Django internacionalization中间件:django.middleware.locale.LocaleMiddleware

之后,如果没有导入ugettextfrom django.utils.translation import ugettext as _),请随意添加以下语言:

LANGUAGES = [
    ('es', 'Spanish'),
    ('de', 'German'),
    ('en', 'English'),
    ('pt-br', 'Brazilian'),
    #... and so on
]

此解决方案不需要创建符号链接或其他文件夹。

© www.soinside.com 2019 - 2024. All rights reserved.