From 63aa47f02f06534eb3311ec869659cfdffc74f42 Mon Sep 17 00:00:00 2001 From: Quincy Morgan Date: Thu, 21 May 2020 14:33:10 -0400 Subject: [PATCH] Fix issue with entering language codes directly in multilingual name fields (close #7156) --- modules/ui/fields/localized.js | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/modules/ui/fields/localized.js b/modules/ui/fields/localized.js index 1da84c267..7fcc11f01 100644 --- a/modules/ui/fields/localized.js +++ b/modules/ui/fields/localized.js @@ -404,31 +404,32 @@ export function uiFieldLocalized(field, context) { function changeLang(d) { - var lang = utilGetSetValue(d3_select(this)); - var t = {}; - var language = _languagesArray.find(function(d) { - return (d.localName && d.localName.toLowerCase() === lang.toLowerCase()) || - d.label.toLowerCase() === lang.toLowerCase() || - (d.nativeName && d.nativeName.toLowerCase() === lang.toLowerCase()); - }); + var tags = {}; + // make sure unrecognized suffixes are lowercase - #7156 + var lang = utilGetSetValue(d3_select(this)).toLowerCase(); + + var language = _languagesArray.find(function(d) { + return d.label.toLowerCase() === lang || + (d.localName && d.localName.toLowerCase() === lang) || + (d.nativeName && d.nativeName.toLowerCase() === lang); + }); if (language) lang = language.code; if (d.lang && d.lang !== lang) { - t[key(d.lang)] = undefined; + tags[key(d.lang)] = undefined; } - var value = utilGetSetValue(d3_select(this.parentNode) - .selectAll('.localized-value')); + var value = utilGetSetValue(d3_select(this.parentNode).selectAll('.localized-value')); if (lang && value) { - t[key(lang)] = value; + tags[key(lang)] = value; } else if (lang && _wikiTitles && _wikiTitles[d.lang]) { - t[key(lang)] = _wikiTitles[d.lang]; + tags[key(lang)] = _wikiTitles[d.lang]; } d.lang = lang; - dispatch.call('change', this, t); + dispatch.call('change', this, tags); }