2016-11-22 48 views
2

我有一个网站与Django/Django的CMS有3种语言,我有一个静态占位符的通讯形式。问题是我在我的pt页面中将此插件添加到此占位符中,然后编辑其他页面中的内容(enes),以便翻译文本并发布我的更改。问题是,在编辑模式下,更改显示,但在发布模式下,它始终假定翻译为pt。在其他占位符(而不是静态),这不会发生。我不能拥有带翻译的静态占位符?Django CMS的静态占位符不工作与网站的翻译

UPDATE:

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

<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, 
     }, 
    ], 
} 
+0

快速的问题 - 你确定静态占位符存在于所有的翻译版本的即?那里有一个特定的插件吗? – petr

+0

是的,我在我的翻译版本中有特定的插件,我可以在编辑模式下看到它,但随后我发布了,并且在发布模式下看到它显示了'pt'版本。 – patricia

+0

@petr他们有不同的ID(我会把prtscr放在我的问题中) – patricia

回答

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) 
+0

我已经尝试过,它不起作用。我改变文本并将其保存在我的'en'页面,然后发布,但发布的页面不断向我显示'pt'版本。 – patricia

+0

@patricia这很奇怪..你能给我提供占位符ID吗?以及配置的所有语言代码的列表?我会通过下一步更新我的答案。 – Paulo

+0

编辑我的问题。 – patricia