我在我的个人网站上使用LinguaPlone
,我使用语言文件夹进行了设置。
当我尝试将图像从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 :(得分: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'])
警告此代码不对现有翻译进行任何检查(如果当前对象具有该语言的翻译,则会破坏事物)。但是从一种语言到另一种语言进行复制粘贴是一种不好的行为,可能我们应该尝试使它们在加注异常时失败。