翻译 'Django-Oscar'
Translating 'Django-Oscar'
我想学习如何构建开源电子商务网站。为此,我使用 'Django' 框架和 'Oscar' 扩展名。
我在这里阅读了整个教程:https://django-oscar.readthedocs.io/en/releases-1.5/index.html,其中有一个 Translation
教程。我跟着它(必须说它缺少步骤)。这部分说,为了翻译一个页面,你必须创建两个文件夹和一个符号 link:
mkdir locale i18n
ln -s $PATH_TO_OSCAR i18n/oscar
然后,对于您要翻译的每种语言:
./manage.py makemessages --symlinks --locale=<language code>
这是正确的,但除此之外,您必须编译 .po
文件才能在 locale
文件夹(.mo
文件)中获得最终翻译。之后,您必须将译文包含到项目(或应用程序)的 settings.py
中。这是通过以下代码完成的:
- 在终端中(从项目的根目录):
$ django-admin.py compilemessages
在settings.py
中添加:
语言 = [
('de', _('German')),
('en', _('English')),
('es', _('Spanish')),
]
(注意:这是我的情况,我想将商店翻译成德语、西班牙语和英语)
这样做之后,我 运行 我的服务器只有这三种语言出现在 select 语言框中,但是当我按下按钮以翻译页面时,它 returns 每次都是默认语言(英语),在每个翻译请愿书中得到这个:
"POST /i18n/setlang/ HTTP/1.1" 302 0
"GET / HTTP/1.1" 200 8379
我是否跳过了任何步骤或做错了什么?
提前致谢。
我得到了部分(几乎完整)的解决方案。由于我想用的语言比较普遍,所以直接用了Django翻译中间件,没有用Oscar提供的。因此,我的解决方案是通过在 MIDDLEWARE
(或 MIDDLEWARE_CLASES
中,具体取决于 Django 版本)来编辑 settings.py
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
]
此解决方案不需要创建符号链接或其他文件夹。
我想学习如何构建开源电子商务网站。为此,我使用 'Django' 框架和 'Oscar' 扩展名。
我在这里阅读了整个教程:https://django-oscar.readthedocs.io/en/releases-1.5/index.html,其中有一个 Translation
教程。我跟着它(必须说它缺少步骤)。这部分说,为了翻译一个页面,你必须创建两个文件夹和一个符号 link:
mkdir locale i18n
ln -s $PATH_TO_OSCAR i18n/oscar
然后,对于您要翻译的每种语言:
./manage.py makemessages --symlinks --locale=<language code>
这是正确的,但除此之外,您必须编译 .po
文件才能在 locale
文件夹(.mo
文件)中获得最终翻译。之后,您必须将译文包含到项目(或应用程序)的 settings.py
中。这是通过以下代码完成的:
- 在终端中(从项目的根目录):
$ django-admin.py compilemessages
在
settings.py
中添加:语言 = [ ('de', _('German')), ('en', _('English')), ('es', _('Spanish')), ]
(注意:这是我的情况,我想将商店翻译成德语、西班牙语和英语)
这样做之后,我 运行 我的服务器只有这三种语言出现在 select 语言框中,但是当我按下按钮以翻译页面时,它 returns 每次都是默认语言(英语),在每个翻译请愿书中得到这个:
"POST /i18n/setlang/ HTTP/1.1" 302 0
"GET / HTTP/1.1" 200 8379
我是否跳过了任何步骤或做错了什么?
提前致谢。
我得到了部分(几乎完整)的解决方案。由于我想用的语言比较普遍,所以直接用了Django翻译中间件,没有用Oscar提供的。因此,我的解决方案是通过在 MIDDLEWARE
(或 MIDDLEWARE_CLASES
中,具体取决于 Django 版本)来编辑 settings.py
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
]
此解决方案不需要创建符号链接或其他文件夹。