【问题标题】:Can't set the shop language in Satchmo无法在 Satchmo 中设置商店语言
【发布时间】:2011-07-08 10:32:48
【问题描述】:

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

我正在按照translating content 上的说明进行操作:

从目录/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"),
)

用户不应该选择其他翻译,所以allow_translation_choicesettings.py中设置为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,
}

在同一个文件中我启用了我的 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',
)

跳过所有这些障碍后,我的商店语言仍然以英语显示,并且右下角仍然有“更改语言”和一个空的下拉按钮。

谁知道我哪里出错了?

提前致谢。

【问题讨论】:

  • 如果您在 Satchmo 中找到根据您所在国家/地区命名的目录(即荷兰语的“nl”),则表示您的语言在某种程度上受到支持,您可以跳过“翻译内容”现在开始测试它。 (没有制作消息,编写新翻译,编译消息)自 2010 年 8 月起支持荷兰语。您可以稍后返回以改进不完整的过时翻译。如果没有用你的语言写一行,第一步是没有用的。

标签: python django satchmo webfaction


【解决方案1】:

启用切换语言的唯一必要步骤是:

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 文件。至少 product-po 看起来不错。所以你可能不需要运行 makemessages/compilemessages ......这只需要“新”语言,或者当你想更新 po 文件(以防源文件发生变化)......

    但是,如果您需要更新翻译,我建议您看一下 Rosetta... 这很棒!有时新生成的翻译文件会出现一些错误(仅使用标题,我必须根据 django-src 中的现有文件手动放置其中一些:"Content-Type: text/plain; charset=UTF-8\n" and "Content-Transfer-Encoding: 8bit\n")但是在将标题添加到新文件后,它可以工作伟大的。而且您不必自己编译 po-files,因为 Rosetta 在您保存时会这样做。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-05
      • 1970-01-01
      • 2010-12-12
      • 2019-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多