-
Type:
Bug
-
Resolution: Unresolved
-
Priority:
Low
-
Component/s: Work Item - Change History
-
None
-
Severity 3 - Minor
Issue Summary
When a user whose Jira profile language is set to something other than English changes a
work item, the resulting change history record stores the translated field name. The
field value therefore varies depending on the language preference of the user who made
the change, while fieldId remains stable and correct.
This produces mixed-language change history within a single site. Consumers that filter or
group issue history by field name miss records created by users whose language is not
English. This affects REST changelog clients, CSV exports, and issue history data in
Atlassian Analytics.
Steps to Reproduce
- Set your personal language to French under Profile and visibility > Language. Any
non-English language reproduces this; French is used here for illustration. - Open any work item and transition it to a different status.
- Set your personal language back to English.
- Using a second account whose language is English, transition another work item to a
different status. - Retrieve the change history for both work items via
GET /rest/api/3/issue/{issueIdOrKey}/changelog.
Expected Results
The field value is identical for both records, because the same field changed in both
cases:
"items": [ { "field": "status", "fieldId": "status", ... } ]
Actual Results
The field value differs according to the language of the user who made the change,
while fieldId is correct in both cases:
// changed by the French-language user "items": [ { "field": "\u00c9tat", "fieldId": "status", ... } ] // changed by the English-language user "items": [ { "field": "status", "fieldId": "status", ... } ]
The stored value is not re-resolved for the viewing user, so everyone sees the language of
the original author regardless of their own settings. The same behaviour affects other
fields and other languages, for example Estado in Spanish.
Workaround
Filter and group on fieldId rather than field. fieldId is stable across
languages and across field renames.
For issue history in Atlassian Analytics, use the field_id column instead of field:
where lower(split(field_id, '::')[1]) = 'status'
JQL historical operators (WAS, WAS IN, CHANGED) are unaffected, as they resolve on the
field ID rather than the stored display name.