我有一个包含 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)
