Add multilingual field exceptions (#9124)

* Add multilingual field exceptions

* Add name:etymology

* Match language code in regex

* Restrict ISO 15924 code to 4 letters

* Allow country codes in name subkeys; match key case sensitively

Co-authored-by: Minh Nguyễn <mxn@1ec5.org>
This commit is contained in:
William Edmisten
2022-05-21 18:09:41 -04:00
committed by GitHub
parent 3743179707
commit 67bd692bc0

View File

@@ -122,7 +122,10 @@ export function uiFieldLocalized(field, context) {
var existingLangs = new Set(existingLangsOrdered.filter(Boolean));
for (var k in tags) {
var m = k.match(/^(.*):(.*)$/);
// matches for field:<code>, where <code> is a BCP 47 locale code
// motivation is to avoid matching on similarly formatted tags that are
// not for languages, e.g. name:left, name:source, etc.
var m = k.match(/^(.*):([a-z]{2,3}(?:-[A-Z][a-z]{3})?(?:-[A-Z]{2})?)$/);
if (m && m[1] === field.key && m[2]) {
var item = { lang: m[2], value: tags[k] };
if (existingLangs.has(item.lang)) {