Audit and retrieval of mltext properties depend on the language the request is on
ACS supports ML values for OOTB properties such as cm:title and cm:description and customers may also set their custom mltext properties through their custom models.
To set a property value in a different language we can, for example:
Change our browser language to the desired target language, go to Share and update the property value
Update the node through the REST API sending the "Accept-Language" with the target language to set
Retrieving values in a certain language follow the same principals as before. If no "Accept-Language" header is sent in the request if will fallback to english and you will retrieve the english-set property values. Setting a property value without setting the "Accept-Language" header will also save the value in the default locale (english).
While testing for an ML related issue, where I was using 2 browsers, one set to english and the other set to spanish, I encountered the following issues doing the following use case, using Share:
In english browser, upload document, set the title to X and description to Y
In the spanish browser, go to same document and change title to Z and description to T
As a user, navigating in Share:
When using the english browser I see the properties set to X and Y
When using the spanish browser I see the properties set to Z and T
Problem #1: As an Admin, I would expect to see all values set on mltext properties, even if only through node browser, however
Going to node-browser, when using the english browser I see the properties set to X and Y
Going to node-browser, when using the spanish browser I see the properties set to Z and T
I have no indication that I have multiple values for title and description, through any of the node browsers (alfresco or share). I also have no indication of what locales are used on that node, so i don't even know what languages I should set my browser to in order to see the other values.
Problem #2: I hardly found any documentation on the ML features of Alfresco. It is not clear anywhere in the documentation that having your browser set to a certain language will influence how your properties are set. In European companies it is very common to have some users have their browser set to english as default and other users to have their browser set to the local language, this can cause mixed property values without anyone noticing unless they trade screenshots.
Problem #3: I can't find any documentation on the REST API that the 'Accept-Language' header influences how we set and retrieve property values. I also can't find any setting that allows me to retrieve the values in all locales. Also using the wildcard for any language "Accept-Language: *" will output any other than english if other languages are set, with some languages with higher priority than others, not sure why (I have a node with that I set in english, portuguese, spanish, german and french values in description - updated in that exact order and when i use * I get the german value)
Problem #4: Auditing also seems to be tied to the language (at least in AGS, haven't tested audir reports in ACS). When I trigger an audit report I only see the values set on the language I am running the report on. The use case for this one is:
Declare a record
In english browser set the title to X
In the spanish browser, go to same record and change title to Z
Still on the spanish browser, change the value of the title again, but to T.
In the english browser, on the document-details page, you will still see title as X and if if run the audit log you will see that the properties were updated twice, but both entries show:
Title was changed from X to X.
In the spanish browser, on the document-details page, you will still see title as T and if if run the audit log you will see that the properties were updated twice:
Title was changed from X to Z.
Title was changed from Z to T.
All further updates using the english browser will appear as "Updated from T to T" if we use the spanish browser.
I believe this is the biggest issue regarding the overall problem given that:
Auditors have no way of knowing what languages were used to update the node. They have no indication that there are other values beyond the ones they are seeing.
Audit logs fill up so a usual practice is to archive these logs. When archived, they are generated on the current language, so the logs of all changes in different languages get lost.
These are only some of the tests I've made, there can be other issues related to this that I'm not aware of.
Our handling of multi lingual properties is causing a lot of confusion.
There is a risk that they way how multi linguality is handled by our current auditing is not cmpliant with certain regulations.
You mentioned that this came up as part of a HF request, but I couldn’t find any MNT linked up against this issue.
We need to be careful to change anything here, as this is exactly how it is supposed to work.
If the current behaviour is fit for purpose is a completely different topic.
can you please review if all is clear? thanks