Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tridion 用于在本地化时更新组件的自定义事件代码_Tridion_Tridion 2011 - Fatal编程技术网

Tridion 用于在本地化时更新组件的自定义事件代码

Tridion 用于在本地化时更新组件的自定义事件代码,tridion,tridion-2011,Tridion,Tridion 2011,我正在SDL Tridion 2011 SP 1-1中编写一些自定义事件代码,在初始化阶段修改组件的保存或本地化字段: var localize = EventSystem.Subscribe<Component, LocalizeEventArgs>(OnComponentLocalize, EventPhases.Initiated); var save = EventSystem.Subscribe<Component, SaveEventArgs>(OnCompo

我正在SDL Tridion 2011 SP 1-1中编写一些自定义事件代码,在初始化阶段修改组件的保存或本地化字段:

var localize = EventSystem.Subscribe<Component, LocalizeEventArgs>(OnComponentLocalize, EventPhases.Initiated);
var save = EventSystem.Subscribe<Component, SaveEventArgs>(OnComponentSave, EventPhases.Initiated);
_subscriptions.Add(localize);
_subscriptions.Add(save);

我能够在本地化过程中保持更改的唯一方法是在发布/提交阶段执行更改,并执行签出/更新&保存/签入。这并不好,因为执行它需要几秒钟&在组件本地化后在单独的事务中执行。有人知道更简单的方法吗?

我认为本地化操作只会更改项目的蓝图状态,并在新出版物中为您提供项目的版本1。我不认为您可以在不创建新版本(即版本2)的情况下对该项目进行任何修改


这似乎就是你发现的。我想您唯一的选择(您已经发现)是在本地化发生后修改并重新保存该项。

本地化事件发生时是否触发代码?是的,我记录了大量输出,包括看起来正确的组件XML。
var fields = new ItemFields(component.Content, component.Schema);
var translatedSummary = fields["summary"] as MultiLineTextField;
translatedSummary.Value = translation;
component.Content = fields.ToXml();