2011-09-20 70 views
1

我正在使用LinguaPlone作爲我的個人網站,並且我已經使用語言文件夾對其進行了設置。如何使用Plone在複製的事件上設置語言

當我嘗試從en語言文件夾複製圖像並將其粘貼到'fr'文件夾中時,語言不會更改。所以我想解決這個問題。

我想在我自己的代碼中解決此問題,但我只是不知道爲什麼它不起作用。

所以問題是:我該如何做到這一點?我在做這件事的好方法嗎?這裏缺少什麼?

from zope import component 
from zope.globalrequest import getRequest 

def updatelang(ob, event): 
    current = event.object 
    tools = component.getMultiAdapter((ob, getRequest()), name=u'plone_portal_state') 
    current_lang = current.getLanguage() 
    lang = tools.language() 
    if current_lang != lang: 
     current_object.setLanguage(lang) 
     ob.reindexObject(idxs=['Language']) 

setLanguage通話reference_catalog拋出一個屬性的錯誤。

注意,我正在Plone4.1

+0

如果發生異常,提供回溯總是有幫助的。 :-P –

回答

1

自我回答:

LinguaPlone覆蓋setLanguage移動在第一翻譯容器的內容在父鏈。

修改了一下代碼使用getfield命令模式:

from zope import component 
from zope.globalrequest import getRequest 

def updatelang(ob, event): 
    current = event.object 
    tools = component.getMultiAdapter((ob, getRequest()), name=u'plone_portal_state') 
    current_lang = current.getLanguage() 
    lang = tools.language() 
    if current_lang != lang: 
     current.getField('language').set(current, lang) 
     current.reindexObject(idxs=['Language']) 

警告這段代碼沒有按做已經存在的任何翻譯檢查(如果當前對象在該語言會打破東西翻譯)。但是從一種語言複製粘貼到另一種語言是一種不好的行爲,可能是我們應該儘量使它們失​​敗,並引發異常。