2016-11-22 32 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