我想学习如何建立一个开放资源的电子商务网站。为此,我使用了带有Oscar扩展的'Django‘框架。
我在这里阅读了整个教程: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文件)中获得最终的折衷。在此之后,您必须将导入到项目(或app)的settings.py中。这是通过以下代码完成的:
$ django-admin.py compilemessagessettings.py中添加:
语言= ('de',_(‘德文’),('en',_(‘英语’),('es',_(‘西班牙语’)),(注:--这是我的情况,我想把商店翻译成德文、西班牙文和英文)
这样做后,我运行我的服务器,只有这三种语言出现在选中的语言框中,但是当我按下按钮以翻译页面时,它每次都会返回默认语言(英语),在每个翻译请愿书中都会得到这一点:
"POST /i18n/setlang/ HTTP/1.1" 302 0
"GET / HTTP/1.1" 200 8379我有跳过的步骤吗?或者我做错了什么?
提前谢谢。
发布于 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 _),可以按以下方式添加语言:
LANGUAGES = [
('es', 'Spanish'),
('de', 'German'),
('en', 'English'),
('pt-br', 'Brazilian'),
#... and so on
]此解决方案不需要创建符号链接或附加文件夹。
https://stackoverflow.com/questions/48033256
复制相似问题