This is a knock-on issue from #220. (I hope you won't regret adding that already!)
An XLIFF file may contain several units with the same translation content... (silly example but you get the point)
<unit id="am.permanently">
<segment>
<source>am</source>
<target>soy</target>
</segment>
</unit>
<unit id="am.temporarily">
<segment>
<source>am</source>
<target>estoy</target>
</segment>
</unit>
However, when loading the translation from the XLIFF file, only one gets loaded into $translations. This is because the two will have the same ID, based only on the source text ("am"), without considering the unit ID.
Thus trying to save the loaded XLIFF again will drop one of the two entries.