Skip to main content
 首页 » 编程设计

python之Django-CMS 静态占位符不能在带有翻译的站点中工作

2025年02月15日56开发

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

更新:

这是从 pt 页面打印的我的插件 ID:

这是en页面的ID:

我的静态占位符是这样定义的:

{% 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, 
        }, 
    ], 
} 

请您参考如下方法:

我相信这是由 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)