Store metadata per segment (SetMetaData)

Hi,

I would like to store some metadata in a project per segment (e.g. an additional identifier). For example, for segment 10, this would look like: ActiveDocument.SegmentPairs.ElementAt(10).Target.Properties.TranslationOrigin.SetMetaData("MyKey", "Meta data information");


This used to work in the past. However, after doing this on a Japanese translation segment, it does not seem to work anymore. After executing this code, "MyKey" is not added.

However, in the debugger, when I invoke this method, the item is added to MetaData.

Does anyone has a clue?

Are there other (better) ways to store information at a segment?

Best regards,
Henk
Parents Reply
  • Hi Romulus, I added the following class. When you call the contructor, then it will add the metadata to the specified segment id.

    public class SegmentpairMetadata
    {
    int _segmentid = 0;
    string _key = null;
    string _value = null;

    /// <summary>
    /// Ctor. Set the meta data for the segment.
    /// </summary>
    public SegmentpairMetadata(Document activeDocument, int segmentId, string key, string value)
    {
    _segmentid = segmentId;
    _key = key;
    _value = value;

    activeDocument.ProcessSegmentPairs("DQF_metadata", UpdateSegmentPairProperties);
    }

    private void UpdateSegmentPairProperties(ISegmentPair segmentPair, CancelEventArgs e)
    {
    if (segmentPair.Properties.Id.Id == _segmentid.ToString(CultureInfo.InvariantCulture))
    {
    segmentPair.Properties.TranslationOrigin.SetMetaData(_key, _value);
    }
    }
    }
Children