Django-CMS静态占位符不在具有翻译的站点中工作

时间:2016-11-22 11:06:55

标签: python django translation django-cms

我有一个Django / Django-CMS网站,有3种语言,我有一个静态占位符用于新闻通讯表格。问题是我在pt页面中将插件添加到此占位符,然后编辑其他页面(enes)中的内容,以便翻译文本并发布我的更改。问题是在编辑模式下会出现更改,但在发布模式下,它始终采用pt转换。在其他占位符(非静态)中,这不会发生。我不能拥有带翻译的静态占位符吗?

更新:

以下是pt页面中我的插件ID的打印件:

<code>pt</code> ID of my plugin

这里是en页面的ID:

<code>en</code>ID of my plugin

我的静态占位符定义如下:

{% static_placeholder "subscribe" %}

我定义了3种语言:

LANGUAGES = [
    ('pt', gettext('pt')),
    ('en', gettext('en')),
    ('es', gettext('es')),
]

CMS_LANGUAGES = {
    ## Customize this
    'default': {
        'public': True,
        'hide_untranslated': False,
        'redirect_on_fallback': True,
    },
    1: [
        {
            'public': True,
            'code': 'pt',
            'hide_untranslated': False,
            'name': gettext('pt'),
            'redirect_on_fallback': True,
        },
        {
            'public': True,
            'code': 'en',
            'hide_untranslated': False,
            'name': gettext('en'),
            'redirect_on_fallback': True,
        },
        {
            'public': True,
            'code': 'es',
            'hide_untranslated': False,
            'name': gettext('es'),
            'redirect_on_fallback': True,
        },
    ],
}

1 个答案:

答案 0 :(得分:0)

我认为这是由https://github.com/divio/django-cms/issues/5760造成的。

与此同时,对于每种语言,请尝试编辑/保存插件,然后发布。

保存插件会将静态占位符标记为脏,这将允许您使用该语言发布它。一旦发布,静态占位符就会被标记为不脏,因此您需要为每种语言执行此操作。

修改

尝试在shell中运行以下命令:

spl = StaticPlaceholder.objects.get(code='subscribe')
spl.publish(None, 'pt', force=True)
spl.publish(None, 'en', force=True)
spl.publish(None, 'es', force=True)