无法在Satchmo中设置商店语言
我正在尝试把Satchmo 0.9.2这个程序的默认语言设置成荷兰语。
我按照翻译内容的说明进行操作:
在这个目录下/home/myusername/webapps/myshop/lib/python2.7/Satchmo-0.9.2-py2.7.egg
,我输入了一个命令来编译荷兰语的语言文件:
find . -name locale -exec sh -c 'cd $0 && cd ../ && python2.7
/home/myusername/webapps/myshop/lib/python2.7/django/bin/django-admin.py
makemessages -l nl -e html,txt,rml' {} \;
现在我可以看到多个.../locale/nl/LC_MESSAGES/django.po
文件,这些文件里包含了翻译成荷兰语的消息字符串。
我的local_settings.py
文件里定义了一个LOCALE_PATHS
变量:
LOCALE_PATHS = ""
我用以下命令把.po
文件编译成.mo
文件:
find . -name locale -exec sh -c 'cd $0 && cd ../ && python2.7
/home/myusername/webapps/myshop/lib/python2.7/django/bin/django-admin.py
compilemessages' {} \;
我只想让文本显示为荷兰语,所以我的local_settings.py
文件里只包含:
LANGUAGE_CODE = 'nl'
LANGUAGES = (
('nl', "Nederlands"),
)
用户不应该能选择其他语言,所以在settings.py
里把allow_translation_choice
设置为False
:
L10N_SETTINGS = {
'currency_formats' : {
'EURO' : {'symbol': u'€', 'positive' : u"€%(val)0.2f", 'negative':
u"€(%(val)0.2f)",
'decimal' : ','},
},
'default_currency' : 'EURO',
'show_admin_translations': True,
'allow_translation_choice': False,
}
在同一个文件里,我还启用了我的国际化网址:
SATCHMO_SETTINGS = {
'SHOP_BASE' : '',
'MULTISHOP' : False,
'SHOP_URLS' : patterns('', (r'^i18n/', include('l10n.urls')),)
}
为了确保我的模板使用正确的语言代码,我在settings.py
里也加了:
TEMPLATE_CONTEXT_PROCESSORS = (
'satchmo_store.shop.context_processors.settings',
'django.core.context_processors.auth',
'django.core.context_processors.i18n',
)
尽管我做了这么多设置,我的商店语言还是显示成英语,右下角的“更改语言”按钮还是空的下拉框。
有没有人知道我哪里出错了?
提前谢谢大家。
2 个回答
要启用语言切换,您只需要做以下几步:
1) 在local_settings.py文件中更改语言设置:
LANGUAGE_CODE = 'nl' # not as important as would expected
LANGUAGES = (
('nl', "Nederlands"), # languages supported by you
)
2) 在settings.py文件中的SATCHMO_SETTINGS字典里添加以下一行,以启用切换功能:
'SHOP_URLS' : patterns('', (r'^i18n/', include('l10n.urls')),),
在网页上选择您的语言。
注意事项:
我已经确认了之前的步骤在您报告的日期安装的新旧Satchmo上都是有效的。(最后一次修改是在2011年2月底)
确保在settings.py或local_settings.py中没有其他地方把之前的值改成不同的值。
我不太确定LANGUAGE_CODE是否能达到大多数人的预期。它只有在用户没有手动选择语言,并且用户浏览器偏好的语言没有在网站上启用时才会使用。因此,我通常会禁用英语。
如果您要在Satchmo中添加一种新语言,请确认它在django/conf/locale
目录下。(这里有超过50种语言)否则请使用FORMAT_MODULE_PATH,并查看Django的相关文档。
我也需要把商店设置成“几乎”是新的语言‘es’西班牙语。所以我在这里写下我们安装时的任何不同之处:
在我的设置中,我还添加了:
LC_CTYPE = 'es_ES.utf8'
TIME_ZONE = 'Europe/Madrid'
'allow_translation_choice': False,
<- 这有点奇怪,这对我来说没问题……这可能是在你的本地设置文件中被覆盖了吗?
我还在settings.py中做了这个修改
#### Satchmo unique variables ####
from django.conf.urls.defaults import patterns, include
SATCHMO_SETTINGS = {
'SHOP_BASE' : '',
'MULTISHOP' : False,
#'SHOP_URLS' : patterns('satchmo_store.shop.views',)
'SHOP_URLS' : patterns('', (r'^i18n/', include('l10n.urls')),),
'CUSTOM_SHIPPING_MODULES': ['FLAT_SHIPPING_NORMAL',],
#'SSL': True
}
如果这些都没有帮助,你有没有尝试添加更多语言,比如德语(de)、英语(en),并启用语言选择器,看看是否能切换到比如德语?这样你就可以找出是不是荷兰语翻译的问题。
你有没有翻译任何缺失的消息……我刚查看了我的安装,已经有nl的po文件了。至少产品的po文件看起来不错。所以你可能不需要运行makemessages/compilemessages……这只在“新”语言时需要,或者当你想更新po文件(如果源文件有变化)时需要……
但是如果你需要更新翻译,我建议你看看rosetta……它非常好!有时候新生成的翻译文件会有一些小错误(只是头部的问题,我需要根据django-src中的现有文件手动添加一些头部:"Content-Type: text/plain; charset=UTF-8\n" 和 "Content-Transfer-Encoding: 8bit\n"
),但在给新文件添加了头部后,它就能很好地工作。而且你不需要自己编译po文件,因为rosetta在你保存时会自动处理。