SDLXLIFF: Improve handling of seg-def @conf values

Issue #597 resolved
Chase Tingley created an issue

SDLXLIFF has a custom set of segment states, such as "ApprovedForSignoff", "Draft", "Translated", etc. However, these are not stored in the state attribute on <target>. Instead, they are stored in the custom segment definition metadata:

<sdl:seg id="723" conf="Translated" origin="tm" ...>

The current behavior of the okf_xliff-sdl filter is to update this attribute when the file is merged. However, the value is fixed as part of the configuration, so for example we automatically set all segments conf values to "Translated" by default. This is bad for a number of use cases (see for example issue #588).

A better way to handle this (suggested by Saša Hasan of Lilt) would be to:

  • On extraction, parse out the seg conf values and store them using Property.STATE on the target TextContainer that references the segdef, just like we do for normal segment states. We can either map these values directly to approved XLIFF 1.2 spec values, or we can just prefix everything with x- as a custom value, eg <target state="x-sdl-Draft">. This will preserve the original status value and expose it to the translator.
  • The translator or whatever else processes the file can modify these statuses normally.
  • On merge, we reverse the process. We update the seg conf values based on the live STATE property value on the target, again mapping to SDL values if necessary.

This will let us pass the status values through the workflow in a way that actually gives people fine-grained control over them.

Comments (3)

  1. Log in to comment