Switch to own language code validation in backend, for #1933
This commit is contained in:
parent
4b6300daff
commit
03fef3d7b4
@ -25,6 +25,7 @@ package org.openrefine.wikidata.schema;
|
||||
|
||||
import org.apache.commons.lang.Validate;
|
||||
import org.openrefine.wikidata.schema.exceptions.SkipSchemaExpressionException;
|
||||
import org.openrefine.wikidata.utils.LanguageCodeStore;
|
||||
import org.wikidata.wdtk.datamodel.interfaces.WikimediaLanguageCodes;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonCreator;
|
||||
@ -59,10 +60,13 @@ public class WbLanguageConstant implements WbExpression<String> {
|
||||
*/
|
||||
public static String normalizeLanguageCode(String lang) {
|
||||
try {
|
||||
WikimediaLanguageCodes.getLanguageCode(lang);
|
||||
return WikimediaLanguageCodes.fixLanguageCodeIfDeprecated(lang);
|
||||
if (LanguageCodeStore.ALLOWED_LANGUAGE_CODES.contains(lang)) {
|
||||
return WikimediaLanguageCodes.fixLanguageCodeIfDeprecated(lang);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
} catch (IllegalArgumentException e) {
|
||||
return null;
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -0,0 +1,529 @@
|
||||
package org.openrefine.wikidata.utils;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* A store for the allowed language code for terms and monolingual text values
|
||||
* in Wikidata.
|
||||
*
|
||||
* @todo generalize for other Wikibase instances (fetch it dynamically via
|
||||
* https://stackoverflow.com/questions/46507037/how-to-get-all-allowed-languages-for-wikidata/46562061)
|
||||
* @todo separate the languages allowed for terms from the ones allowed for monolingual text.
|
||||
* Currently the list is for monolingual texts (which is larger).
|
||||
*
|
||||
* Query to update this list:
|
||||
* curl "https://www.wikidata.org/w/api.php?action=query&meta=wbcontentlanguages&wbclprop=code&wbclcontext=monolingualtext&format=json" | jq ".query.wbcontentlanguages[].code" | sed -e "s/$/,/"
|
||||
*
|
||||
* @author Antonin Delpeuch
|
||||
*
|
||||
*/
|
||||
public class LanguageCodeStore {
|
||||
public static Set<String> ALLOWED_LANGUAGE_CODES = Arrays.asList(
|
||||
"aa",
|
||||
"ab",
|
||||
"abs",
|
||||
"ace",
|
||||
"ady",
|
||||
"ady-cyrl",
|
||||
"aeb",
|
||||
"aeb-arab",
|
||||
"aeb-latn",
|
||||
"af",
|
||||
"ak",
|
||||
"aln",
|
||||
"als",
|
||||
"am",
|
||||
"an",
|
||||
"ang",
|
||||
"anp",
|
||||
"ar",
|
||||
"arc",
|
||||
"arn",
|
||||
"arq",
|
||||
"ary",
|
||||
"arz",
|
||||
"as",
|
||||
"ase",
|
||||
"ast",
|
||||
"atj",
|
||||
"av",
|
||||
"avk",
|
||||
"awa",
|
||||
"ay",
|
||||
"az",
|
||||
"azb",
|
||||
"ba",
|
||||
"ban",
|
||||
"bar",
|
||||
"bbc",
|
||||
"bbc-latn",
|
||||
"bcc",
|
||||
"bcl",
|
||||
"be",
|
||||
"be-tarask",
|
||||
"bg",
|
||||
"bgn",
|
||||
"bh",
|
||||
"bho",
|
||||
"bi",
|
||||
"bjn",
|
||||
"bm",
|
||||
"bn",
|
||||
"bo",
|
||||
"bpy",
|
||||
"bqi",
|
||||
"br",
|
||||
"brh",
|
||||
"bs",
|
||||
"btm",
|
||||
"bto",
|
||||
"bug",
|
||||
"bxr",
|
||||
"ca",
|
||||
"cbk-zam",
|
||||
"cdo",
|
||||
"ce",
|
||||
"ceb",
|
||||
"ch",
|
||||
"cho",
|
||||
"chr",
|
||||
"chy",
|
||||
"ckb",
|
||||
"co",
|
||||
"cps",
|
||||
"cr",
|
||||
"crh",
|
||||
"crh-cyrl",
|
||||
"crh-latn",
|
||||
"cs",
|
||||
"csb",
|
||||
"cu",
|
||||
"cv",
|
||||
"cy",
|
||||
"da",
|
||||
"de",
|
||||
"de-at",
|
||||
"de-ch",
|
||||
"din",
|
||||
"diq",
|
||||
"dsb",
|
||||
"dtp",
|
||||
"dty",
|
||||
"dv",
|
||||
"dz",
|
||||
"ee",
|
||||
"egl",
|
||||
"el",
|
||||
"eml",
|
||||
"en",
|
||||
"en-ca",
|
||||
"en-gb",
|
||||
"eo",
|
||||
"es",
|
||||
"es-419",
|
||||
"et",
|
||||
"eu",
|
||||
"ext",
|
||||
"fa",
|
||||
"ff",
|
||||
"fi",
|
||||
"fit",
|
||||
"fj",
|
||||
"fo",
|
||||
"fr",
|
||||
"frc",
|
||||
"frp",
|
||||
"frr",
|
||||
"fur",
|
||||
"fy",
|
||||
"ga",
|
||||
"gag",
|
||||
"gan",
|
||||
"gan-hans",
|
||||
"gan-hant",
|
||||
"gcr",
|
||||
"gd",
|
||||
"gl",
|
||||
"glk",
|
||||
"gn",
|
||||
"gom",
|
||||
"gom-deva",
|
||||
"gom-latn",
|
||||
"gor",
|
||||
"got",
|
||||
"grc",
|
||||
"gsw",
|
||||
"gu",
|
||||
"gv",
|
||||
"ha",
|
||||
"hak",
|
||||
"haw",
|
||||
"he",
|
||||
"hi",
|
||||
"hif",
|
||||
"hif-latn",
|
||||
"hil",
|
||||
"ho",
|
||||
"hr",
|
||||
"hrx",
|
||||
"hsb",
|
||||
"ht",
|
||||
"hu",
|
||||
"hy",
|
||||
"hyw",
|
||||
"hz",
|
||||
"ia",
|
||||
"id",
|
||||
"ie",
|
||||
"ig",
|
||||
"ii",
|
||||
"ik",
|
||||
"ike-cans",
|
||||
"ike-latn",
|
||||
"ilo",
|
||||
"inh",
|
||||
"io",
|
||||
"is",
|
||||
"it",
|
||||
"iu",
|
||||
"ja",
|
||||
"jam",
|
||||
"jbo",
|
||||
"jut",
|
||||
"jv",
|
||||
"ka",
|
||||
"kaa",
|
||||
"kab",
|
||||
"kbd",
|
||||
"kbd-cyrl",
|
||||
"kbp",
|
||||
"kea",
|
||||
"kg",
|
||||
"khw",
|
||||
"ki",
|
||||
"kiu",
|
||||
"kj",
|
||||
"kjp",
|
||||
"kk",
|
||||
"kk-arab",
|
||||
"kk-cn",
|
||||
"kk-cyrl",
|
||||
"kk-kz",
|
||||
"kk-latn",
|
||||
"kk-tr",
|
||||
"kl",
|
||||
"km",
|
||||
"kn",
|
||||
"ko",
|
||||
"ko-kp",
|
||||
"koi",
|
||||
"kr",
|
||||
"krc",
|
||||
"kri",
|
||||
"krj",
|
||||
"krl",
|
||||
"ks",
|
||||
"ks-arab",
|
||||
"ks-deva",
|
||||
"ksh",
|
||||
"ku",
|
||||
"ku-arab",
|
||||
"ku-latn",
|
||||
"kum",
|
||||
"kv",
|
||||
"kw",
|
||||
"ky",
|
||||
"la",
|
||||
"lad",
|
||||
"lb",
|
||||
"lbe",
|
||||
"lez",
|
||||
"lfn",
|
||||
"lg",
|
||||
"li",
|
||||
"lij",
|
||||
"liv",
|
||||
"lki",
|
||||
"lmo",
|
||||
"ln",
|
||||
"lo",
|
||||
"loz",
|
||||
"lrc",
|
||||
"lt",
|
||||
"ltg",
|
||||
"lus",
|
||||
"luz",
|
||||
"lv",
|
||||
"lzh",
|
||||
"lzz",
|
||||
"mai",
|
||||
"map-bms",
|
||||
"mdf",
|
||||
"mg",
|
||||
"mh",
|
||||
"mhr",
|
||||
"mi",
|
||||
"min",
|
||||
"mk",
|
||||
"ml",
|
||||
"mn",
|
||||
"mni",
|
||||
"mnw",
|
||||
"mo",
|
||||
"mr",
|
||||
"mrj",
|
||||
"ms",
|
||||
"mt",
|
||||
"mus",
|
||||
"mwl",
|
||||
"my",
|
||||
"myv",
|
||||
"mzn",
|
||||
"na",
|
||||
"nah",
|
||||
"nan",
|
||||
"nap",
|
||||
"nb",
|
||||
"nds",
|
||||
"nds-nl",
|
||||
"ne",
|
||||
"new",
|
||||
"ng",
|
||||
"niu",
|
||||
"nl",
|
||||
"nn",
|
||||
"no",
|
||||
"nod",
|
||||
"nov",
|
||||
"nqo",
|
||||
"nrm",
|
||||
"nso",
|
||||
"nv",
|
||||
"ny",
|
||||
"nys",
|
||||
"oc",
|
||||
"olo",
|
||||
"om",
|
||||
"or",
|
||||
"os",
|
||||
"ota",
|
||||
"pa",
|
||||
"pag",
|
||||
"pam",
|
||||
"pap",
|
||||
"pcd",
|
||||
"pdc",
|
||||
"pdt",
|
||||
"pfl",
|
||||
"pi",
|
||||
"pih",
|
||||
"pl",
|
||||
"pms",
|
||||
"pnb",
|
||||
"pnt",
|
||||
"prg",
|
||||
"ps",
|
||||
"pt",
|
||||
"pt-br",
|
||||
"qu",
|
||||
"qug",
|
||||
"rgn",
|
||||
"rif",
|
||||
"rm",
|
||||
"rmy",
|
||||
"rn",
|
||||
"ro",
|
||||
"roa-tara",
|
||||
"ru",
|
||||
"rue",
|
||||
"rup",
|
||||
"ruq",
|
||||
"ruq-cyrl",
|
||||
"ruq-latn",
|
||||
"rw",
|
||||
"rwr",
|
||||
"sa",
|
||||
"sah",
|
||||
"sat",
|
||||
"sc",
|
||||
"scn",
|
||||
"sco",
|
||||
"sd",
|
||||
"sdc",
|
||||
"sdh",
|
||||
"se",
|
||||
"sei",
|
||||
"ses",
|
||||
"sg",
|
||||
"sgs",
|
||||
"sh",
|
||||
"shi",
|
||||
"shi-latn",
|
||||
"shi-tfng",
|
||||
"shn",
|
||||
"shy-latn",
|
||||
"si",
|
||||
"sje",
|
||||
"sk",
|
||||
"skr",
|
||||
"skr-arab",
|
||||
"sl",
|
||||
"sli",
|
||||
"sm",
|
||||
"sma",
|
||||
"smj",
|
||||
"smn",
|
||||
"sms",
|
||||
"sn",
|
||||
"so",
|
||||
"sq",
|
||||
"sr",
|
||||
"sr-ec",
|
||||
"sr-el",
|
||||
"srn",
|
||||
"srq",
|
||||
"ss",
|
||||
"st",
|
||||
"stq",
|
||||
"sty",
|
||||
"su",
|
||||
"sv",
|
||||
"sw",
|
||||
"szl",
|
||||
"ta",
|
||||
"tay",
|
||||
"tcy",
|
||||
"te",
|
||||
"tet",
|
||||
"tg",
|
||||
"tg-cyrl",
|
||||
"tg-latn",
|
||||
"th",
|
||||
"ti",
|
||||
"tk",
|
||||
"tl",
|
||||
"tly",
|
||||
"tn",
|
||||
"to",
|
||||
"tpi",
|
||||
"tr",
|
||||
"tru",
|
||||
"ts",
|
||||
"tt",
|
||||
"tt-cyrl",
|
||||
"tt-latn",
|
||||
"tum",
|
||||
"tw",
|
||||
"ty",
|
||||
"tyv",
|
||||
"tzm",
|
||||
"udm",
|
||||
"ug",
|
||||
"ug-arab",
|
||||
"ug-latn",
|
||||
"uk",
|
||||
"ur",
|
||||
"uz",
|
||||
"uz-cyrl",
|
||||
"uz-latn",
|
||||
"ve",
|
||||
"vec",
|
||||
"vep",
|
||||
"vi",
|
||||
"vls",
|
||||
"vmf",
|
||||
"vo",
|
||||
"vot",
|
||||
"vro",
|
||||
"wa",
|
||||
"war",
|
||||
"wo",
|
||||
"wuu",
|
||||
"xal",
|
||||
"xh",
|
||||
"xmf",
|
||||
"xsy",
|
||||
"yi",
|
||||
"yo",
|
||||
"yue",
|
||||
"za",
|
||||
"zea",
|
||||
"zgh",
|
||||
"zh",
|
||||
"zh-cn",
|
||||
"zh-hans",
|
||||
"zh-hant",
|
||||
"zh-hk",
|
||||
"zh-mo",
|
||||
"zh-my",
|
||||
"zh-sg",
|
||||
"zh-tw",
|
||||
"zu",
|
||||
"und",
|
||||
"mis",
|
||||
"mul",
|
||||
"zxx",
|
||||
"abe",
|
||||
"abq",
|
||||
"ami",
|
||||
"bnn",
|
||||
"brx",
|
||||
"chn",
|
||||
"cnr",
|
||||
"cop",
|
||||
"el-cy",
|
||||
"ett",
|
||||
"eya",
|
||||
"fkv",
|
||||
"fos",
|
||||
"fr-ca",
|
||||
"frm",
|
||||
"fro",
|
||||
"fuf",
|
||||
"gez",
|
||||
"gmy",
|
||||
"hai",
|
||||
"haz",
|
||||
"hbo",
|
||||
"kjh",
|
||||
"koy",
|
||||
"lag",
|
||||
"lkt",
|
||||
"lld",
|
||||
"mid",
|
||||
"mnc",
|
||||
"moe",
|
||||
"non",
|
||||
"nr",
|
||||
"nxm",
|
||||
"ood",
|
||||
"otk",
|
||||
"pjt",
|
||||
"ppu",
|
||||
"pwn",
|
||||
"pyu",
|
||||
"quc",
|
||||
"qya",
|
||||
"rar",
|
||||
"shy",
|
||||
"sia",
|
||||
"sjd",
|
||||
"sjk",
|
||||
"sjn",
|
||||
"sjt",
|
||||
"sju",
|
||||
"ssf",
|
||||
"syc",
|
||||
"tlb",
|
||||
"trv",
|
||||
"tzl",
|
||||
"uga",
|
||||
"umu",
|
||||
"uun",
|
||||
"xpu",
|
||||
"yap",
|
||||
"zun"
|
||||
).stream().collect(Collectors.toSet());
|
||||
}
|
@ -50,6 +50,7 @@ public class WbLanguageConstantTest extends WbExpressionTest<String> {
|
||||
assertEquals("de", WbLanguageConstant.normalizeLanguageCode("de"));
|
||||
assertEquals("nb", WbLanguageConstant.normalizeLanguageCode("no"));
|
||||
assertEquals("nb", WbLanguageConstant.normalizeLanguageCode("nb"));
|
||||
assertEquals("mul", WbLanguageConstant.normalizeLanguageCode("mul"));
|
||||
assertNull(WbLanguageConstant.normalizeLanguageCode("non-existent language code"));
|
||||
assertNull(WbLanguageConstant.normalizeLanguageCode(null));
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user