I18NEdit merges always by walking through the foreign project file tree. It looks for each properties bundle whether it exists in the local tree or not. If not, it is copied in verbatim. If it exists, each property is compared one by one. I18NEdit always only touches the locales which have been explicitly enabled! For each of these locales, own and foreign incarnation are compared. The following alternatives exist:
If the property does not exist in the local tree, it is copied verbatim.
If the property does exist in both trees and does not differ, it is not touched.
If the property does exist in both trees, but is older by timestamp in the foreign one, nothing happens.
If the property exists in both trees and is newer by timestamp in the foreign one, it is copied into the local tree. The timestamp remains in the local tree as it was in the foreign one.
If the property exists in both trees, differs by content but has same timestamp, behaviour is dependant on the role of the user: For an integrator, the property is copied into the local tree. For a translator, it is not.
The last alternative should be explained a little bit more. There are always two possibilities for editing the properties: Either in I18NEdit or apart of it in any arbitrary editor. In the later case, I18NEdit has no knowledge about these changes, therefore it cannot change the locally preserved timestamp in the meta-properties.
In case a translator works on its project tree with an independant editor and then merges a new tree from somewhere else into his own file tree, he might need to turn on merging on his own target locale. In this case, I18NEdit could find such locally changed properties without changed timestamp. Those ones are not overwritten for a translator - he is assumed to be more clever on his target locale than anyone else.
An integrator, however, must incorporate such changes to properties without changed timestamp into his file tree. Its exactly the opposite situation: The translator changed the value well-founded, even though the timestamp has not changed. There integrator has the old value by principle, and therefore, it has to be overwritten. So, for an integrator I18NEdit overwrites the local value with the merged one in such a situation.
If all parties do their changes in I18NEdit itself, the described situation won't creep up at all, however.