首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >翻译“Django-Oscar”

翻译“Django-Oscar”
EN

Stack Overflow用户
提问于 2017-12-30 10:56:07
回答 1查看 898关注 0票数 1

我想学习如何建立一个开放资源的电子商务网站。为此,我使用了带有Oscar扩展的'Django‘框架。

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

代码语言:javascript
复制
mkdir locale i18n
ln -s $PATH_TO_OSCAR i18n/oscar

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

代码语言:javascript
复制
./manage.py makemessages --symlinks --locale=<language code>

这是正确的,但除此之外,您还必须编译.po文件,以便在locale文件夹(.mo文件)中获得最终的折衷。在此之后,您必须将导入到项目(或app)的settings.py中。这是通过以下代码完成的:

  • 在终端(来自项目根目录):$ django-admin.py compilemessages
  • settings.py中添加: 语言= ('de',_(‘德文’),('en',_(‘英语’),('es',_(‘西班牙语’)),

(注:--这是我的情况,我想把商店翻译成德文、西班牙文和英文)

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

代码语言:javascript
复制
"POST /i18n/setlang/ HTTP/1.1" 302 0
"GET / HTTP/1.1" 200 8379

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

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-30 11:37:13

我找到了一个部分(几乎完全)的解决方案。由于我想使用的语言非常普遍,所以我直接使用Django翻译中间件,而不使用Oscar提供的中间件。因此,我的解决方案是编辑settings.py,方法是在MIDDLEWARE (或MIDDLEWARE_CLASES中取决于Django版本)中包含Django内部化中间件:django.middleware.locale.LocaleMiddleware

在此之后,不导入ugettext (from django.utils.translation import ugettext as _),可以按以下方式添加语言:

代码语言:javascript
复制
LANGUAGES = [
    ('es', 'Spanish'),
    ('de', 'German'),
    ('en', 'English'),
    ('pt-br', 'Brazilian'),
    #... and so on
]

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48033256

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档