无法在Satchmo中设置商店语言

1 投票
2 回答
592 浏览
提问于 2025-04-16 12:58

我正在尝试把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 个回答

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的相关文档。

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文件(如果源文件有变化)时需要……

但是如果你需要更新翻译,我建议你看看rosetta……它非常好!有时候新生成的翻译文件会有一些小错误(只是头部的问题,我需要根据django-src中的现有文件手动添加一些头部:"Content-Type: text/plain; charset=UTF-8\n" 和 "Content-Transfer-Encoding: 8bit\n"),但在给新文件添加了头部后,它就能很好地工作。而且你不需要自己编译po文件,因为rosetta在你保存时会自动处理。

撰写回答