无法在Satchmo中设置商店语言

时间:2011-03-03 22:48:33

标签: python django satchmo webfaction

我正在尝试将Satchmo 0.9.2安装的默认和唯一商店语言设置为荷兰语。

我按照translating content上的说明操作:

从目录/home/myusername/webapps/myshop/lib/python2.7/Satchmo-0.9.2-py2.7.egg我发出以下命令来编译Dutch langauge文件:

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"),
)

用户不应该选择其他翻译,因此allow_translation_choice中的False设置为settings.py

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,
}

并在同一个文件中我启用了我的i18n网址:

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 个答案:

答案 0 :(得分:2)

我还必须将商店设置为“几乎”新语言'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文件时(如果源文件发生变化)......

但是如果你需要更新翻译,我建议你去看看罗塞塔...这太好了!有时会出现一些新生成的翻译文件的错误(只有标题,我必须根据django-src中的现有文件手动放置一些文件:"Content-Type: text/plain; charset=UTF-8\n" and "Content-Transfer-Encoding: 8bit\n")但是在将标题添加到新文件之后它很棒。并且您不必自己编译po文件,因为rosetta在您保存时会执行此操作。

答案 1 :(得分: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文档。