2012-12-03 21 views
7

Tôi đang viết một số mã sự kiện tùy chỉnh trong SDL Tridion 2011 SP 1-1 mà sẽ thay đổi lĩnh vực của một phần trên lưu hoặc bản địa hoá, trong giai đoạn khởi tạo:Tuỳ chỉnh sự kiện mã để cập nhật một phần trên Localize

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

Sự kiện lưu hoạt động tốt nhưng cùng một mã không hoạt động trên sự kiện bản địa hóa - bất kỳ thay đổi nào được thực hiện cho XML của Thành phần đều bị loại bỏ. Tôi đang sử dụng mã khá đơn giản:

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

Cách duy nhất tôi có thể nhận được những thay đổi để tồn tại trên địa hóa là nếu tôi làm điều đó trong một bài viết/Commit pha và làm một tấm séc ra/cập nhật & lưu/kiểm tra trong Đây không phải là tuyệt vời vì phải mất vài giây để thực hiện & thực hiện nó trong một giao dịch riêng biệt sau khi Thành phần đã được bản địa hóa. Có ai biết một cách sang trọng hơn để làm điều này?

+0

Mã của bạn có kích hoạt khi sự kiện bản địa hóa xảy ra không? –

+0

Có, Im ghi lại rất nhiều đầu ra, bao gồm XML thành phần có vẻ chính xác. – richeym

Trả lời

5

Tôi nghĩ hành động bản địa hóa sẽ chỉ thay đổi trạng thái kế hoạch chi tiết của mặt hàng và cung cấp cho bạn phiên bản số 1 của mục trong ấn phẩm mới. Tôi không nghĩ bạn có thể thực hiện bất kỳ sửa đổi nào cho mục đó mà không tạo phiên bản mới (tức là phiên bản 2).

Đây có vẻ là những gì bạn đã tìm thấy. Tôi nghĩ tùy chọn duy nhất của bạn (mà bạn đã phát hiện ra) sẽ là sửa đổi và lưu lại mục sau khi bản địa hóa đã xảy ra.

Các vấn đề liên quan