7

我正在 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);

save 事件可以正常工作,但相同的代码在 localize 事件上不起作用 - 对组件的 XML 所做的任何更改都将被丢弃。我正在使用非常简单的代码:

var fields = new ItemFields(component.Content, component.Schema);
var translatedSummary = fields["summary"] as MultiLineTextField;
translatedSummary.Value = translation;
component.Content = fields.ToXml();

我可以让更改持续本地化的唯一方法是,如果我在 Post / Commit 阶段执行它并执行签出 / 更新和保存 / 签入。这不是很好,因为它需要几秒钟来执行 &在组件本地化后在单独的事务中执行此操作。有谁知道更优雅的方法来做到这一点?

4

1 回答 1

5

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

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

于 2012-12-03T17:32:22.293 回答