2011-09-20 71 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']) 

警告这段代码没有按做已经存在的任何翻译检查(如果当前对象在该语言会打破东西翻译)。但是从一种语言复制粘贴到另一种语言是一种不好的行为,可能是我们应该尽量使它们失​​败,并引发异常。