如何使用Plone设置复制事件的语言
我正在为我的个人网站使用如何使用Plone设置复制事件的语言,plone,linguaplone,Plone,Linguaplone,我正在为我的个人网站使用LinguaPlone,我已经设置了使用语言文件夹 当我尝试将图像从en language文件夹复制并粘贴到'fr'文件夹时,该语言不会更改。所以我想修正这个行为 我正在尝试用我自己的代码修复这个问题,但我不知道为什么它不起作用 所以问题是:我如何做到这一点?我在做这件事的好方法上吗?这里少了什么 from zope import component from zope.globalrequest import getRequest def updatelang(ob,
LinguaPlone
,我已经设置了使用语言文件夹
当我尝试将图像从en language文件夹复制并粘贴到'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\u catalog
上抛出一个属性错误
请注意,我正在编写Plone4.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'])
警告:此代码不检查已经存在的翻译(如果当前对象有该语言的翻译,它将破坏内容)。但是从一种语言复制粘贴到另一种语言是一种不好的行为,可能是我们应该尝试让它们失败,并引发一个异常。自我回答:
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'])
警告:此代码不检查已经存在的翻译(如果当前对象有该语言的翻译,它将破坏内容)。但是从一种语言复制粘贴到另一种语言是一种不好的行为,可能是我们应该尝试使用raise异常使它们完全失败。如果出现异常,提供回溯总是有帮助的-如果您遇到异常,PIt提供回溯总是很有帮助的:-P