MediaWiki:Gadget-TranslationAdder-Data.js: difference between revisions
Appearance
Content deleted Content added
{{User:Apisite]]: +lld (Ladin), lmo (Lombard), rgn (Romagnol) |
|||
Line 1,705: | Line 1,705: | ||
/** Roman to Cyrillic**/ |
/** Roman to Cyrillic**/ |
||
cv: { |
cv: { |
||
from: " |
from: "ĂăĔĕÇç", |
||
to: " |
to: "ӐӑӖӗҪҫ", |
||
}, |
}, |
||
kv: { |
kv: { |
Revision as of 03:48, 20 October 2020
// {{documentation}}
// <nowiki>
// implicit dependencies : ext.gadget.LanguageUtils
/* jshint maxerr:1048576, strict:true, undef:true, latedef:true, es5:true */
/* global $, ScriptUtils */
window.LangMetadata = function() {
//Singleton
if (arguments.callee.instance)
return arguments.callee.instance;
else
arguments.callee.instance = this;
// {{{ Metadata dictionaries
// FIXME: Is it possible to query this information directly from [[Module:languages]]?
var metadata = {
aa: {
haswikt: 1,
sc: ["Latn", "Ethi"]
},
ab: {
haswikt: 1,
sc: ["Cyrl", "Latn", "Geor"]
},
aer: {
sc: "Latn"
},
af: {
g: ["s", "p"],
haswikt: 1
},
ak: {
haswikt: 1
},
akk: {
g: ["m", "f", "m-p", "f-p"],
sc: "Xsux"
},
als: {
haswikt: 1
},
am: {
g: ["m", "f", "m-p", "f-p"],
haswikt: 1,
sc: "Ethi"
},
an: {
g: ["m", "f", "m-p", "f-p"],
haswikt: 1
},
ang: {
alt: 1,
g: ["m", "f", "n", "m-p", "f-p", "n-p"],
haswikt: 1
},
ar: {
alt: 1,
g: ["m", "f", "m-p", "f-p"],
haswikt: 1,
sc: "Arab"
},
arc: {
g: ["m", "f", "m-p", "f-p"],
sc: ["Hebr", "Syrc"]
},
are: {},
arz: {
alt: 1,
g: ["m", "f", "m-p", "f-p"],
sc: "Arab"
},
as: {
haswikt: 1,
sc: "Beng"
},
ast: {
g: ["m", "f", "m-p", "f-p"],
haswikt: 1
},
av: {
haswikt: 1
},
ay: {
haswikt: 1
},
az: {
g: ["s", "p"],
haswikt: 1,
sc: ["Latn", "Cyrl", "Arab"]
},
ba: {
sc: "Cyrl"
},
bar: {},
"bat-smg": {
g: ["m", "f", "m-p", "f-p"]
},
bbl: {
sc: "Geor"
},
be: {
g: ["m", "f", "n", "m-p", "f-p", "n-p", "impf", "pf"],
haswikt: 1,
sc: "Cyrl"
},
"be-x-old": {
sc: "Cyrl"
},
bg: {
g: ["m", "f", "n", "m-p", "f-p", "n-p", "impf", "pf"],
haswikt: 1,
sc: "Cyrl"
},
bh: {
haswikt: 1,
sc: "Deva"
},
bhb: {
sc: "Deva"
},
bi: {
haswikt: 1
},
blt: {
sc: "Tavt"
},
bm: {
haswikt: 1,
sc: ["Latn", "Nkoo", "Arab"]
},
bn: {
haswikt: 1,
sc: "Beng"
},
bo: {
haswikt: 1,
sc: "Tibt"
},
br: {
g: ["m", "f"],
haswikt: 1
},
ca: {
g: ["m", "f", "m-p", "f-p"],
haswikt: 1
},
cdo: {
sc: "Hani"
},
ce: {
sc: "Cyrl"
},
ch: {
haswikt: 1
},
chr: {
haswikt: 1,
sc: "Cher"
},
cjy: {
sc: "Hani"
},
ckb: {
wiktprefix: "ku",
sc: "Arab",
wsc: "ku-Arab"
},
cmn: {
sc: "Hani",
wiktprefix: "zh"
},
co: {
haswikt: 1
},
cpx: {
sc: "Hani"
},
cr: {
haswikt: 1,
sc: "Cans"
},
crh: {},
cs: {
g: ["m", "f", "n", "m-p", "f-p", "n-p", "impf", "pf"],
haswikt: 1
},
csb: {
g: ["m", "f", "n", "m-p", "f-p", "n-p", "impf", "pf"],
haswikt: 1
},
cu: {
g: ["m", "f", "n", "m-p", "f-p", "n-p", "impf", "pf"],
sc: ["Cyrs", "Glag"]
},
cv: {
sc: "Cyrl"
},
cy: {
g: ["m", "f", "m-p", "f-p"],
haswikt: 1
},
czh: {
sc: "Hani"
},
czo: {
sc: "Hani"
},
da: {
g: ["c", "n", "c-p", "n-p"],
haswikt: 1
},
dax: {},
de: {
g: ["m", "f", "n", "p"],
haswikt: 1
},
dhg: {},
djb: {},
dji: {},
djr: {},
dng: {
sc: "Cyrl"
},
dsb: {
g: ["m", "f", "n", "m-p", "f-p", "n-p", "impf", "pf"]
},
dsx: {},
duj: {},
dv: {
g: ["s", "p"],
haswikt: 1,
sc: "Thaa"
},
dz: {
haswikt: 1,
sc: "Tibt"
},
el: {
g: ["m", "f", "n", "m-p", "f-p", "n-p"],
haswikt: 1
},
en: {
g: ["s", "p"],
haswikt: 1
},
eo: {
g: ["s", "p"],
haswikt: 1
},
es: {
g: ["m", "f", "m-p", "f-p"],
haswikt: 1
},
et: {
g: ["s", "p"],
haswikt: 1
},
ett: {
g: ["s", "p"],
sc: "Ital"
},
eu: {
g: ["s", "p"],
haswikt: 1
},
fa: {
haswikt: 1,
sc: "Arab",
wsc: "fa-Arab"
},
fi: {
g: ["s", "p"],
haswikt: 1
},
fil: {},
fj: {
haswikt: 1
},
fo: {
g: ["m", "f", "n"],
haswikt: 1
},
fr: {
g: ["m", "f", "m-p", "f-p"],
haswikt: 1
},
frm: {
g: ["m", "f", "m-p", "f-p"]
},
fro: {
g: ["m", "f", "m-p", "f-p"]
},
fy: {
g: ["c", "n", "p"],
haswikt: 1
},
ga: {
g: ["m", "f", "m-p", "f-p"],
haswikt: 1
},
gan: {
sc: "Hani"
},
gd: {
g: ["m", "f", "m-p", "f-p"],
haswikt: 1
},
gez: {
sc: "Ethi"
},
gl: {
g: ["m", "f", "m-p", "f-p"],
haswikt: 1
},
gmy: {
sc: "Linb"
},
gn: {
haswikt: 1
},
gnn: {
sc: "Latn"
},
got: {
g: ["m", "f", "n", "m-p", "f-p", "n-p"],
sc: "Goth"
},
grc: {
g: ["m", "f", "n", "m-p", "f-p", "n-p"]
},
gu: {
g: ["m", "f", "n", "m-p", "f-p", "n-p"],
haswikt: 1,
sc: "Gujr"
},
guf: {
sc: "Latn"
},
gv: {
haswikt: 1
},
ha: {
haswikt: 1
},
hak: {
sc: "Hani"
},
har: {
sc: "Ethi"
},
he: {
alt: 1,
g: ["m", "f", "m-p", "f-p"],
haswikt: 1,
sc: "Hebr"
},
hi: {
g: ["m", "f", "m-p", "f-p"],
haswikt: 1,
sc: "Deva"
},
hif: {
sc: ["Latn", "Deva"]
},
hit: {
sc: "Xsux"
},
hrx: {
g: ["m", "f", "n", "m-p", "f-p", "n-p"],
haswikt: 1
},
hsb: {
g: ["m", "f", "n", "m-p", "f-p", "n-p", "impf", "pf"],
haswikt: 1
},
hsn: {
sc: "Hani"
},
hu: {
g: ["s", "p"],
haswikt: 1
},
hy: {
haswikt: 1,
sc: "Armn"
},
ia: {
haswikt: 1
},
id: {
haswikt: 1
},
ie: {
haswikt: 1
},
ik: {
haswikt: 1
},
ike: {
sc: "Cans"
},
ikt: {
sc: "Cans"
},
io: {
haswikt: 1
},
is: {
g: ["m", "f", "n", "m-p", "f-p", "n-p"],
haswikt: 1
},
it: {
g: ["m", "f", "m-p", "f-p"],
haswikt: 1
},
iu: {
haswikt: 1,
sc: "Cans"
},
ja: {
haswikt: 1,
sc: "Jpan"
},
jay: {
sc: "Latn"
},
jbo: {
haswikt: 1
},
jv: {
haswikt: 1
},
ka: {
haswikt: 1
}, // script should include "Geok" for Asomtavruli & Nuskhuri but prevents automatic transliteration?
khb: {
sc: ["Talu", "Lana", "Thai"]
},
kjh: {
sc: "Cyrl"
},
kk: {
haswikt: 1,
sc: "Cyrl"
},
kkh: {
sc: ["Lana", "Thai"]
},
kl: {
haswikt: 1
},
km: {
haswikt: 1,
sc: "Khmr"
},
kn: {
haswikt: 1,
sc: "Knda"
},
kmr: {
wiktprefix: "ku"
},
ko: {
haswikt: 1,
sc: "Kore"
},
krc: {
g: ["s", "p"],
sc: "Cyrl"
},
ks: {
haswikt: 1,
sc: ["Arab", "Deva"],
wsc: "ks-Arab"
},
ku: {
g: ["m", "f", "n", "m-p", "f-p", "n-p"],
haswikt: 1,
sc: ["Arab", "Latn"],
wsc: "ku-Arab"
},
kw: {
haswikt: 1
},
ky: {
haswikt: 1,
sc: "Cyrl"
},
la: {
alt: 1,
g: ["m", "f", "n", "m-p", "f-p", "n-p"],
haswikt: 1
},
lb: {
g: ["m", "f", "n", "p"],
haswikt: 1
},
lez: {
sc: "Cyrl"
},
li: {
haswikt: 1
},
lki: {
wiktprefix: "ku"
},
lld: {
g: ["m", "f", "m-p", "f-p"],
haswikt: 1
},
lmo: {
g: ["m", "f", "m-p", "f-p"],
haswikt: 1
},
ln: {
haswikt: 1
},
lo: {
haswikt: 1,
sc: "Laoo"
},
lt: {
alt: 1,
g: ["m", "f", "m-p", "f-p"],
haswikt: 1
},
lv: {
g: ["m", "f", "m-p", "f-p"],
haswikt: 1
},
lzz: {
sc: "Geor"
},
mg: {
haswikt: 1
},
mh: {
haswikt: 1
},
mi: {
g: 0,
haswikt: 1
},
mk: {
g: ["m", "f", "n", "m-p", "f-p", "n-p", "impf", "pf"],
haswikt: 1,
sc: "Cyrl"
},
ml: {
haswikt: 1,
sc: "Mlym"
},
mn: {
haswikt: 1,
sc: ["Cyrl", "Mong"]
},
mnp: {
sc: "Hani"
},
mo: {
haswikt: 1,
sc: "Cyrl"
},
mol: {
sc: "Cyrl"
},
mr: {
g: ["m", "f", "n"],
haswikt: 1,
sc: "Deva"
},
ms: {
haswikt: 1,
sc: ["Latn", "Arab"]
},
mt: {
g: ["m", "f"],
haswikt: 1
},
mwp: {
sc: "Latn"
},
my: {
haswikt: 1,
sc: "Mymr"
},
na: {
haswikt: 1
},
nah: {
haswikt: 1
},
nan: {
wiktprefix: "zh-min-nan",
sc: "Hani"
},
nb: {
g: ["m", "f", "n", "m-p", "f-p", "n-p"],
wiktprefix: "no"
},
"nds-de": {
g: ["m", "f", "n", "m-p", "f-p", "n-p"],
wiktprefix: "nds"
},
"nds-nl": {
g: ["m", "f", "n", "m-p", "f-p", "n-p"],
wiktprefix: "nds"
},
ne: {
haswikt: 1,
sc: "Deva"
},
nl: {
g: ["m", "f", "n", "p"],
haswikt: 1
},
nn: {
g: ["m", "f", "n", "m-p", "f-p", "n-p"],
haswikt: 1
},
no: {
g: ["m", "f", "n", "m-p", "f-p", "n-p"],
haswikt: 1
},
nod: {
sc: "Lana"
},
non: {
g: ["m", "f", "n", "m-p", "f-p", "n-p"]
},
oc: {
g: ["m", "f", "m-p", "f-p"],
haswikt: 1
},
om: {
haswikt: 1
},
or: {
haswikt: 1,
sc: "Orya"
},
orv: {
g: ["m", "f", "n", "m-p", "f-p", "n-p", "impf", "pf"],
sc: "Cyrs"
},
osc: {
sc: "Ital"
},
ota: {
sc: "Arab",
wsc: "ota-Arab"
},
pa: {
g: ["m", "f", "m-p", "f-p"],
haswikt: 1,
sc: ["Guru", "Arab"]
},
pdt: {
g: ["m", "f", "n", "m-p", "f-p", "n-p"],
wiktprefix: "nds"
},
peo: {
sc: "Xpeo"
},
phn: {
sc: "Phnx"
},
pi: {
g: ["m", "f", "n", "m-p", "f-p", "n-p"],
haswikt: 1
},
pjt: {
sc: "Latn"
},
pl: {
g: ["m", "f", "n", "m-p", "f-p", "n-p", "impf", "pf"],
haswikt: 1
},
pms: {
g: ["m", "f", "m-p", "f-p"],
haswikt: 1
},
pox: {
g: ["m", "f", "n", "m-p", "f-p", "n-p", "impf", "pf"]
},
ps: {
g: ["m", "f", "m-p", "f-p", "p"],
haswikt: 1,
sc: "Arab",
wsc: "ps-Arab"
},
pt: {
g: ["m", "f", "m-p", "f-p"],
haswikt: 1
},
qu: {
haswikt: 1
},
rgn: {
g: ["m", "f", "m-p", "f-p"],
},
rit: {
sc: "Latn"
},
rm: {
g: ["m", "f"],
haswikt: 1
},
rn: {
haswikt: 1
},
ro: {
g: ["m", "f", "n", "m-p", "f-p", "n-p"],
haswikt: 1,
sc: ["Latn", "Cyrl"]
},
"roa-rup": {
haswikt: 1
},
ru: {
alt: 1,
g: ["m", "f", "n", "m-p", "f-p", "n-p", "impf", "pf"],
haswikt: 1,
sc: "Cyrl"
},
rue: {
g: ["m", "f", "n", "m-p", "f-p", "n-p", "impf", "pf"],
sc: "Cyrl"
},
ruo: {
g: ["m", "f", "n", "m-p", "f-p", "n-p"]
},
rup: {
g: ["m", "f", "n", "m-p", "f-p", "n-p"],
wiktprefix: "roa-rup"
},
ruq: {
g: ["m", "f", "n", "m-p", "f-p", "n-p"]
},
rw: {
haswikt: 1
},
sa: {
g: ["m", "f", "n", "m-p", "f-p", "n-p"],
haswikt: 1,
sc: "Deva"
},
sah: {
sc: "Cyrl"
},
sc: {
haswikt: 1
},
scn: {
g: ["m", "f", "m-p", "f-p"],
haswikt: 1
},
sco: {
sc: "Latn"
},
sd: {
haswikt: 1,
sc: "Arab",
wsc: "sd-Arab"
},
sdh: {
wiktprefix: "ku"
},
sg: {
haswikt: 1
},
sh: {
alt: 1,
g: ["m", "f", "n", "m-p", "f-p", "n-p", "impf", "pf"],
haswikt: 1,
sc: ["Latn", "Cyrl"]
},
si: {
haswikt: 1,
sc: "Sinh"
},
simple: {
haswikt: 1
},
sk: {
g: ["m", "f", "n", "m-p", "f-p", "n-p", "impf", "pf"],
haswikt: 1
},
sl: {
alt: 1,
g: ["m", "f", "n", "m-p", "f-p", "n-p", "impf", "pf"],
haswikt: 1
},
sm: {
haswikt: 1
},
sn: {
haswikt: 1
},
so: {
haswikt: 1
},
spx: {
sc: "Ital"
},
sq: {
g: ["m", "f"],
haswikt: 1
},
ss: {
haswikt: 1
},
st: {
haswikt: 1
},
su: {
haswikt: 1
},
sux: {
sc: "Xsux"
},
sv: {
g: ["c", "n", "c-p", "n-p"],
haswikt: 1
},
sva: {
sc: "Geor"
},
sw: {
nclass: 1,
haswikt: 1
},
syc: {
sc: "Syrc"
},
syr: {
sc: "Syrc"
},
szl: {
g: ["m", "f", "n", "m-p", "f-p", "n-p", "impf", "pf"]
},
ta: {
haswikt: 1,
sc: "Taml"
},
tdd: {
sc: "Tale"
},
te: {
haswikt: 1,
sc: "Telu"
},
tg: {
haswikt: 1
},
th: {
haswikt: 1,
sc: "Thai"
},
ti: {
haswikt: 1,
sc: "Ethi"
},
tig: {
sc: "Ethi"
},
tiw: {
sc: "Latn"
},
tk: {
haswikt: 1
},
tl: {
haswikt: 1,
sc: ["Latn", "Tglg"]
},
tmr: {
sc: "Hebr"
},
tn: {
haswikt: 1
},
to: {
haswikt: 1
},
tpi: {
haswikt: 1
},
tr: {
g: ["s", "p"],
alt: 1,
haswikt: 1
},
ts: {
haswikt: 1
},
tt: {
haswikt: 1
},
tts: {
sc: "Thai"
},
tw: {
haswikt: 1
},
udi: {
sc: ["Cyrl", "Latn", "Armn", "Geor"]
},
ug: {
haswikt: 1,
sc: "Arab",
wsc: "ug-Arab"
},
uga: {
sc: "Ugar"
},
uk: {
g: ["m", "f", "n", "m-p", "f-p", "n-p", "impf", "pf"],
haswikt: 1,
sc: "Cyrl"
},
ulk: {
sc: "Latn"
},
ur: {
g: ["m", "f", "m-p", "f-p"],
haswikt: 1,
sc: "Arab",
wsc: "ur-Arab"
},
uz: {
haswikt: 1
},
vec: {
g: ["m", "f", "m-p", "f-p"],
haswikt: 1
},
vi: {
haswikt: 1
},
vls: {
g: ["m", "f", "n", "m-p", "f-p", "n-p"]
},
vo: {
haswikt: 1
},
wa: {
haswikt: 1
},
wbp: {
sc: "Latn"
},
wo: {
haswikt: 1
},
wuu: {
sc: "Hani"
},
xae: {
sc: "Ital"
},
xcr: {
sc: "Cari"
},
xfa: {
sc: "Ital"
},
xh: {
alt: 1,
nclass: 1,
haswikt: 1
},
xlc: {
sc: "Lyci"
},
xld: {
sc: "Lydi"
},
xlu: {
sc: "Xsux"
},
xmf: {
sc: "Geor"
},
xno: {
g: ["m", "f", "m-p", "f-p"]
},
xrr: {
sc: "Ital"
},
xst: {
sc: "Ethi"
},
xum: {
sc: "Ital"
},
xve: {
sc: "Ital"
},
xvo: {
sc: "Ital"
},
yi: {
g: ["m", "f", "n", "m-p", "f-p", "n-p"],
haswikt: 1,
sc: "Hebr"
},
yo: {
haswikt: 1
},
yua: {
g: ["s", "p"],
alt: 1
},
yue: {
sc: "Hani"
},
za: {
haswikt: 1,
sc: "Latn"
},
"zh-classical": {
sc: "Hani"
},
"zh-min-nan": {
haswikt: 1
},
"zh-yue": {
sc: "Hani"
},
zu: {
alt: 1,
nclass: 1,
haswikt: 1
}
};
var clean = {
aar: "aa",
afar: "aa",
abk: "ab",
abkhazian: "ab",
afr: "af",
afrikaans: "af",
aka: "ak",
akan: "ak",
amh: "am",
amharic: "am",
ara: "ar",
arabic: "ar",
arg: "an",
aragonese: "an",
asm: "as",
assamese: "as",
ava: "av",
avaric: "av",
ave: "ae",
avestan: "ae",
aym: "ay",
aymara: "ay",
aze: "az",
azerbaijani: "az",
bak: "ba",
bashkir: "ba",
bam: "bm",
bambara: "bm",
bel: "be",
belarusian: "be",
ben: "bn",
bengali: "bn",
bis: "bi",
bislama: "bi",
bod: "bo",
tibetan: "bo",
bs: "sh",
bos: "sh",
bosnian: "sh",
bre: "br",
breton: "br",
bul: "bg",
bulgarian: "bg",
cat: "ca",
catalan: "ca",
ces: "cs",
czech: "cs",
cha: "ch",
chamorro: "ch",
che: "ce",
chechen: "ce",
chu: "cu",
churchslavic: "cu",
chv: "cv",
chuvash: "cv",
cor: "kw",
cornish: "kw",
cos: "co",
corsican: "co",
cre: "cr",
cree: "cr",
cym: "cy",
welsh: "cy",
dan: "da",
danish: "da",
deu: "de",
german: "de",
div: "dv",
dhivehi: "dv",
dzo: "dz",
dzongkha: "dz",
ekk: "et",
ell: "el",
greek: "el",
eng: "en",
english: "en",
epo: "eo",
esperanto: "eo",
est: "et",
estonian: "et",
eus: "eu",
basque: "eu",
ewe: "ee",
fao: "fo",
faroese: "fo",
fas: "fa",
persian: "fa",
fij: "fj",
fijian: "fj",
fil: "tl",
fin: "fi",
finnish: "fi",
fra: "fr",
french: "fr",
fry: "fy",
westernfrisian: "fy",
ful: "ff",
fulah: "ff",
gla: "gd",
scottishgaelic: "gd",
gle: "ga",
irish: "ga",
glg: "gl",
galician: "gl",
glv: "gv",
manx: "gv",
grn: "gn",
guarani: "gn",
guj: "gu",
gujarati: "gu",
hat: "ht",
haitian: "ht",
hau: "ha",
hausa: "ha",
heb: "he",
hebrew: "he",
her: "hz",
herero: "hz",
hin: "hi",
hindi: "hi",
hmo: "ho",
hirimotu: "ho",
hr: "sh",
hrv: "sh",
croatian: "sh",
hun: "hu",
hungarian: "hu",
hye: "hy",
armenian: "hy",
ibo: "ig",
igbo: "ig",
ido: "io",
iii: "ii",
sichuanyi: "ii",
iku: "iu",
inuktitut: "iu",
ile: "ie",
interlingue: "ie",
ina: "ia",
interlingua: "ia",
ind: "id",
indonesian: "id",
ipk: "ik",
inupiaq: "ik",
isl: "is",
icelandic: "is",
ita: "it",
italian: "it",
jav: "jv",
javanese: "jv",
jpn: "ja",
japanese: "ja",
kal: "kl",
kalaallisut: "kl",
kan: "kn",
kannada: "kn",
kas: "ks",
kashmiri: "ks",
kat: "ka",
georgian: "ka",
kau: "kr",
kanuri: "kr",
kaz: "kk",
kazakh: "kk",
khm: "km",
centralkhmer: "km",
kik: "ki",
kikuyu: "ki",
kin: "rw",
kinyarwanda: "rw",
kir: "ky",
kirghiz: "ky",
kom: "kv",
komi: "kv",
kon: "kg",
kongo: "kg",
kor: "ko",
korean: "ko",
ksh: "gmw-cfr",
kua: "kj",
kuanyama: "kj",
kur: "ku",
kurdish: "ku",
kv: "kpv",
lao: "lo",
lat: "la",
latin: "la",
lav: "lv",
latvian: "lv",
lim: "li",
limburgan: "li",
lin: "ln",
lingala: "ln",
lit: "lt",
lithuanian: "lt",
ltz: "lb",
luxembourgish: "lb",
lub: "lu",
lubakatanga: "lu",
lug: "lg",
ganda: "lg",
mah: "mh",
marshallese: "mh",
mal: "ml",
malayalam: "ml",
mar: "mr",
marathi: "mr",
mhr: "chm",
mari: "chm",
mkd: "mk",
macedonian: "mk",
mlg: "mg",
malagasy: "mg",
mlt: "mt",
maltese: "mt",
mon: "mn",
mongolian: "mn",
mri: "mi",
maori: "mi",
msa: "ms",
malay: "ms",
mya: "my",
burmese: "my",
nau: "na",
nauru: "na",
wep: "nds-de",
westphalian: "nds-de",
germanlowgerman: "nds-de",
dutchlowsaxon: "nds-nl",
act: "nds-nl",
achterhoeks: "nds-nl",
drt: "nds-nl",
drents: "nds-nl",
gos: "nds-nl",
gronings: "nds-nl",
sdz: "nds-nl",
sallands: "nds-nl",
stl: "nds-nl",
stellingwerfs: "nds-nl",
twd: "nds-nl",
twents: "nds-nl",
vel: "nds-nl",
veluws: "nds-nl",
nav: "nv",
navajo: "nv",
nbl: "nr",
southndebele: "nr",
nde: "nd",
northndebele: "nd",
ndo: "ng",
ndonga: "ng",
nep: "ne",
nepali: "ne",
nld: "nl",
dutch: "nl",
flemish: "nl",
nno: "nn",
norwegiannynorsk: "nn",
nob: "nb",
norwegianbokmal: "nb",
nor: "no",
norwegian: "no",
nya: "ny",
nyanja: "ny",
oci: "oc",
occitan: "oc",
oji: "oj",
ojibwa: "oj",
ori: "or",
oriya: "or",
orm: "om",
oromo: "om",
oss: "os",
ossetian: "os",
pan: "pa",
panjabi: "pa",
pfl: "gmw-rfr",
pli: "pi",
pali: "pi",
pol: "pl",
polish: "pl",
por: "pt",
portuguese: "pt",
pus: "ps",
pushto: "ps",
que: "qu",
quechua: "qu",
roh: "rm",
romansh: "rm",
ron: "ro",
romanian: "ro",
rn: "rw",
run: "rw",
rundi: "rw",
rus: "ru",
russian: "ru",
sag: "sg",
sango: "sg",
san: "sa",
sanskrit: "sa",
sin: "si",
sinhala: "si",
slk: "sk",
slovak: "sk",
slv: "sl",
slovenian: "sl",
sme: "se",
northernsami: "se",
smo: "sm",
samoan: "sm",
sna: "sn",
shona: "sn",
snd: "sd",
sindhi: "sd",
som: "so",
somali: "so",
sot: "st",
southernsotho: "st",
spa: "es",
spanish: "es",
sqi: "sq",
albanian: "sq",
srd: "sc",
sardinian: "sc",
sr: "sh",
srp: "sh",
serbian: "sh",
ssw: "ss",
swati: "ss",
sun: "su",
sundanese: "su",
swa: "sw",
swahili: "sw",
swe: "sv",
swedish: "sv",
tah: "ty",
tahitian: "ty",
tam: "ta",
tamil: "ta",
tat: "tt",
tatar: "tt",
tel: "te",
telugu: "te",
tgk: "tg",
taishanese: "zhx-tai",
tajik: "tg",
tgl: "tl",
tagalog: "tl",
teochew: "zhx-teo",
tha: "th",
thai: "th",
tir: "ti",
tigrinya: "ti",
ton: "to",
tonga: "to",
tsn: "tn",
tswana: "tn",
tso: "ts",
tsonga: "ts",
tuk: "tk",
turkmen: "tk",
tur: "tr",
turkish: "tr",
twi: "tw",
uig: "ug",
uighur: "ug",
ukr: "uk",
ukrainian: "uk",
urd: "ur",
urdu: "ur",
uzb: "uz",
uzbek: "uz",
ven: "ve",
venda: "ve",
vie: "vi",
vietnamese: "vi",
westflemish: "vls",
vol: "vo",
volapuk: "vo",
wln: "wa",
walloon: "wa",
wol: "wo",
wolof: "wo",
xho: "xh",
xhosa: "xh",
yid: "yi",
yiddish: "yi",
yor: "yo",
yoruba: "yo",
zbc: "lod",
zbe: "lod",
zbw: "lod",
zha: "za",
zhuang: "za",
zh: "cmn",
zho: "cmn",
chinese: "cmn",
zul: "zu",
zulu: "zu"
};
// }}}
// FIXME: merge into above
var c = 'Chinese';
var a = 'Arabic';
var nesting = {
aae: 'Albanian/Arbëresh',
aat: 'Albanian/Arvanitika',
als: 'Albanian/Tosk',
aln: 'Albanian/Gheg',
apj: 'Apache',
apm: 'Apache',
apw: 'Apache',
syr: 'Aramaic',
syc: 'Aramaic',
xcl: 'Armenian',
axm: 'Armenian',
// ang:'English',enm:'English', don't nest English (Encyclopetey)
fro: 'French',
frm: 'French',
oge: 'Georgian',
gsw: 'German',
ksh: 'German',
pfl: 'German',
//gmh:'German',goh:'German', don't nest OHG/MHG (-sche)
grc: 'Greek/Ancient',
gmy: 'Greek/Mycenaean', //el:'Greek/Modern', don't nest Modern Greek (Atelaes)
chm: 'Mari/Eastern Mari',
sga: 'Irish',
mga: 'Irish',
kmr: 'Kurdish/Northern Kurdish',
ckb: 'Kurdish/Central Kurdish',
sdh: 'Kurdish/Southern Kurdish',
lki: 'Kurdish/Laki',
"nds-de": 'Low German',
"nds-nl": 'Low German',
nb: 'Norwegian/Bokmål',
nn: 'Norwegian/Nynorsk',
mhr: 'Mari',
mrj: 'Mari/Western Mari',
cmg: 'Mongolian',
cst: 'Ohlone/Northern Ohlone',
css: 'Ohlone/Southern Ohlone',
rmn: 'Romani',
rml: 'Romani',
rmc: 'Romani',
rmf: 'Romani',
rmo: 'Romani',
rmy: 'Romani',
rmw: 'Romani',
dsb: 'Sorbian',
hsb: 'Sorbian',
osp: 'Spanish',
tji: 'Tujia/Northern Tujia',
tjs: 'Tujia/Southern Tujia',
owl: 'Welsh',
wlm: 'Welsh',
"nai-ply": 'Yokuts',
"nai-bvy": 'Yokuts',
"nai-tky": 'Yokuts',
"nai-kry": 'Yokuts',
"nai-svy": 'Yokuts',
"nai-nvy": 'Yokuts',
"nai-dly": 'Yokuts',
zh: c,
yue: c,
dng: c,
gan: c,
hak: c,
czh: c,
cjy: c,
cmn: c,
mnp: c,
cdo: c,
nan: c,
czo: c,
cpx: c,
wuu: c,
hsn: c,
lzh: c,
"zhx-teo": c,
"zhx-tai": c,
arq: a,
aao: a,
bbz: a,
abv: a,
shu: a,
acy: a,
adf: a,
avl: a,
arz: a,
afb: a,
ayh: a,
acw: a,
ayl: a,
acm: a,
ary: a,
ars: a,
apc: a,
ayp: a,
acx: a,
aec: a,
ayn: a,
ssh: a,
ajp: a,
arb: a,
apd: a,
pga: a,
acq: a,
abh: a,
aeb: a,
auz: a
};
var stripArabicDiacritics = { strip: "\u064B\u064C\u064D\u064E\u064F\u0650\u0651\u0652" };
var stripGraveAndAcute = { strip: "\u0300\u0301" };
var fullToHalfWidthNumbers = {
from: "0123456789",
to: "0123456789"
};
// These should reflect the replacements made in [[Module:languages]], but should not necessarily be equal.
var diacriticStrippers = {
ang: {
from: "ĀāǢǣĊċĒēĠġĪīŌōŪūȲȳ",
to: "AaÆæCcEeGgIiOoUuYy",
strip: "\u0304\u0307",
}, //macron and above dot
ar: stripArabicDiacritics,
aao: stripArabicDiacritics,
acm: stripArabicDiacritics,
acx: stripArabicDiacritics,
adf: stripArabicDiacritics,
aeb: stripArabicDiacritics,
afb: stripArabicDiacritics,
ajp: stripArabicDiacritics,
apc: stripArabicDiacritics,
apd: stripArabicDiacritics,
arq: stripArabicDiacritics,
ary: stripArabicDiacritics,
arz: stripArabicDiacritics,
fa: stripArabicDiacritics,
ps: stripArabicDiacritics,
sd: stripArabicDiacritics,
ur: stripArabicDiacritics,
chl: {
from: "ÁáÉéÍíÓóÚú",
to: "AaEeIiOoUu",
strip: "\u0304",
}, //acute accent
he: {
strip: "\u05B0\u05B1\u05B2\u05B3\u05B4\u05B5\u05B6\u05B7\u05B8\u05B9\u05BA\u05BB\u05BC\u05BD\u05BF\u05C1\u05C2",
from: "-'\"",
to: "־׳״",
},
la: {
from: "ĀāĒēĪīŌōŪūȲȳ",
to: "AaEeIiOoUuYy",
strip: "\u0304",
}, //macron
lt: {
from: "áãàéẽèìýỹñóõòúù",
to: "aaaeeeiyynooouu",
strip: "\u0340\u0301\u0303",
},
nci: {
from: "ĀāĒēĪīŌōŪūȲȳ",
to: "AaEeIiOoUu",
strip: "\u0304",
}, //macron
//strip ́ and ̀ on Cyrillic Slavic languages, Serbo-Croatian has a longer list
ru: stripGraveAndAcute,
uk: stripGraveAndAcute,
be: stripGraveAndAcute,
bg: stripGraveAndAcute,
orv: stripGraveAndAcute,
cu: stripGraveAndAcute,
rue: stripGraveAndAcute,
mk: stripGraveAndAcute,
sh: {
from: "ȀȁÀàȂȃÁáĀāȄȅÈèȆȇÉéĒēȈȉÌìȊȋÍíĪīȌȍÒòȎȏÓóŌōȐȑȒȓŔŕȔȕÙùȖȗÚúŪūѝӣ",
to: "AaAaAaAaAaEeEeEeEeEeIiIiIiIiIiOoOoOoOoOoRrRrRrUuUuUuUuUuии",
strip: "\u030F\u0300\u0311\u0301\u0304",
},
sl: {
from: "áÁàÀâÂȃȂȁȀéÉèÈêÊȇȆȅȄíÍìÌîÎȋȊȉȈóÓòÒôÔȏȎȍȌŕŔȓȒȑȐúÚùÙûÛȗȖȕȔệỆộỘẹẸọỌəł",
to: "aAaAaAaAaAeEeEeEeEeEiIiIiIiIiIoOoOoOoOoOrRrRrRuUuUuUuUuUeEoOeEoOel",
strip: "\u0301\u0300\u0302\u0311\u030f\u0323",
},
kk: stripGraveAndAcute,
ky: stripGraveAndAcute,
tg: stripGraveAndAcute,
sa: {
strip: "ः",
},
/** visarga **/
bo: {
strip: "།",
},
/** shad **/
tr: {
from: "ÂâÛû",
to: "AaUu",
strip: "\u0302",
},
ja: fullToHalfWidthNumbers,
cmn: fullToHalfWidthNumbers,
yue: fullToHalfWidthNumbers,
nan: fullToHalfWidthNumbers,
ko: fullToHalfWidthNumbers,
zu: {
strip_init_hyphen: true,
}
};
function stringOrNull(val) {
return typeof val == "string" ? val : null;
}
function makeMap(obj) {
var from = stringOrNull(obj.from);
var to = stringOrNull(obj.to);
var strip = stringOrNull(obj.strip);
var map = {};
if (from && to) {
for (var i = 0; i < from.length; i++) {
map[from.charAt(i)] = to.charAt(i);
}
}
if (strip) {
for (var ii = 0; ii < strip.length; ii++) {
map[strip.charAt(ii)] = "";
}
}
return map;
}
/** letters and number 1 are used instead of palochka **/
var palochkaCorrections = {
from: "Il1",
to: "ӏӏӏ"
};
//
var arabicYa = "ي"; // Arabic letter yāʾ (U+064A ARABIC LETTER YEH)
var arabicKaf = "ك"; // Arabic letter kāf (U+0643 ARABIC LETTER KAF)
var farsiYe = "ی"; // Persian letter ye (U+06CC ARABIC LETTER FARSI YEH)
var farsiKaf = "ک"; // Persian letter kâf (U+06A9 ARABIC LETTER KEHEH)
var alifMaqsura = "ى"; // Arabic letter ʾalif maqṣūra (U+0649 ARABIC LETTER ALEF MAKSURA)
// These replacements will be applied when a word is submitted.
var orthographicalCorrections = {
// Replace grave accents with acute accents for translations
// into Bulgarian per Wiktionary policy
bg: {
map: { "\u0300": "\u0301", "Ѐ": "Е́", "Ѝ": "И́", "ѐ": "е́", "ѝ": "и́" },
},
abq: palochkaCorrections,
ady: palochkaCorrections,
av: palochkaCorrections,
ce: palochkaCorrections,
dar: palochkaCorrections,
inh: palochkaCorrections,
kbd: palochkaCorrections,
lbe: palochkaCorrections,
lez: palochkaCorrections,
tab: palochkaCorrections,
/** Roman to Cyrillic**/
cv: {
from: "ĂăĔĕÇç",
to: "ӐӑӖӗҪҫ",
},
kv: {
from: "ÖöIi",
to: "ӦӧІі",
},
koi: {
from: "ÖöIi",
to: "ӦӧІі",
},
kpv: {
from: "ÖöIi",
to: "ӦӧІі",
},
os: {
from: "Ææ",
to: "Ӕӕ",
},
/* Obsolete or incorrectly used letters */
mn: {
from: "ЄєѲѳЇїVv",
to: "ӨөӨөҮүҮү",
strip: "\u0300\u0301",
},
/* cedilla to comma below */
ro: {
from: "ŞŢşţ",
to: "ȘȚșț",
},
/** ʻ is a standard symbol in Uzbek but is often replaced with ' or ` **/
uz: {
from: "'`",
to: "ʻʻ",
},
/** commonly misspelled Persian letters (Arabic instead of Persian) (to be expanded) **/
fa: {
from: arabicKaf + arabicYa + alifMaqsura,
to: farsiKaf + farsiYe + farsiYe,
},
ur: {
from: arabicKaf + arabicYa + alifMaqsura,
to: farsiKaf + farsiYe + farsiYe,
},
/** commonly misspelled Arabic letters (Persian instead of Arabic) (to be expanded) **/
ar: {
from: farsiKaf + farsiYe,
to: arabicKaf + arabicYa,
},
ota: {
from: farsiKaf + arabicYa + alifMaqsura,
to: arabicKaf + farsiYe + farsiYe,
},
ps: {
from: arabicKaf,
to: farsiKaf,
},
/** some letters are considered more standard (to be expanded) **/
cu: {
from: "ыѹ",
to: "ꙑу",
},
/** some letters are considered more standard (to be expanded) **/
orv: {
from: "ыѹ",
to: "ꙑу",
},
/** obsolete letters **/
ab: {
from: "ҔҕҦҧ",
to: "ӶӷԤԥ",
},
};
//Returns true if a Wiktionary exists for the specified language
this.hasWiktionary = function(lang) {
if (metadata[lang] && (metadata[lang].haswikt || metadata[lang].wiktprefix))
return true;
};
//Returns the domain-name prefix of the Wiktionary for the specified language
this.getWiktionaryPrefix = function(lang) {
if (metadata[lang])
return metadata[lang].wiktprefix || (metadata[lang].haswikt && lang);
};
// Keep this in sync with ignore_caps in [[Module:translations]].
this.ignoreCaps = { "ko": true };
// Calls the callback with a boolean indicating whether the specified language
// has a Wiktionary with the specified entry. The callback might be called
// synchronously, or it might be called asynchronously.
this.hasWiktionaryWithEntry = function(lang, title, callback) {
if (this.hasWiktionary(lang)) {
if (this.ignoreCaps[lang])
title = title.replace(/^\^/, "");
$.getJSON(
'//' + this.getWiktionaryPrefix(lang) + '.wiktionary.org/w/api.php' +
'?format=json&action=query&titles=' + encodeURIComponent(title) +
'&converttitles=1&callback=?',
function(data) {
data = data && data.query && data.query.pages;
if (data) {
callback(!data[-1]);
return;
}
callback(false);
}
);
} else
callback(false);
};
//Given a language code return a default script code.
this.guessScript = function(lang) {
var scripts = (new ScriptUtils()).GetScriptsByLangCode(lang);
if (scripts && scripts.length > 0) return scripts[0];
else return false;
if (metadata[lang]) {
// enwikt language template? (ur-Arab, polytonic)
if (metadata[lang].wsc) {
return metadata[lang].wsc;
}
// ISO script code? (Arab, Grek)
if (metadata[lang].sc) {
if (typeof metadata[lang].sc == 'object')
return metadata[lang].sc[0];
else
return metadata[lang].sc;
}
}
return false;
};
// In a given language, would we expect a translation of the title to have the capitalisation
// of word?
this.expectedCase = function(lang, title, word) {
if (lang == 'de' || lang == 'lb')
return true;
if (title.substr(0, 1).toLowerCase() != title.substr(0, 1))
return true;
return word.substr(0, 1).toLowerCase() == word.substr(0, 1);
};
//Returns a string of standard gender letters (mfnc) or an empty string
this.getGenders = function(lang) {
if (metadata[lang])
return metadata[lang].g;
};
//Returns a string of standard noun class numbers or an empty string
this.hasNounClasses = function(lang) {
if (metadata[lang])
return metadata[lang].nclass;
};
//Returns true if the specified lang uses optional vowels or diacritics
this.needsRawPageName = function(lang) {
if (metadata[lang])
return metadata[lang].alt && !diacriticStrippers[lang];
};
function applyMap(map, str) {
var input = str.split("");
var output = "";
for (var i = 0; i < input.length; i++) {
var char = input[i];
var repl = map[char];
output += repl ? repl : char;
}
return output;
}
this.applyOrthographicalCorrections = function(lang, word) {
var corrections = orthographicalCorrections[lang];
if (corrections) {
var map = corrections.map ? corrections.map : makeMap(corrections);
return applyMap(map, word);
}
return word;
};
// Computes the raw page name by removing diacritics (for Latin, etc.)
this.computeRawPageName = function(lang, word) {
var stripper = diacriticStrippers[lang];
if (stripper) {
var map = makeMap(stripper);
var output = applyMap(map, word);
if (stripper.strip_init_hyphen && output.length > 0 && output.charAt(0) == '-')
output = output.substr(1);
return output;
}
};
// Calls [[Module:links]]'s 'remove_diacritics' method on word and rawPageName,
// and invokes callback with two arguments: (1) the *real* raw page name
// (superseding even rawPageName), and (2) whether this real raw page name
// needs to be explicitly specified in the wikitext (i.e., whether the raw page
// name computed from rawPageName is different from the one that would have been
// computed from just word).
this.retrieveRawPageName = function(lang, word, rawPageName, callback) {
var ents = {
'<': 'lt',
'&': 'amp',
'>': 'gt'
};
var temps = {
'|': '!',
'=': '=',
'{': '(',
'}': ')'
};
function encode(s) {
s = s || '';
s = s.replace(/[|={}]/g, function(c) {
return '{{' + temps[c] + '}}';
});
s = s.replace(/[<&>]/g, function(c) {
return '&' + ents[c] + ';';
});
s = s.replace(/\t/g, ' ');
//s = encodeURIComponent(s);
return s;
}
function removeDiacritics(s) {
return '{{#invoke:languages/templates|getByCode|' + lang + '|makeEntryName|' + encode(s) + '}}';
}
var text = removeDiacritics(word) + '\t' + removeDiacritics(rawPageName || word);
$.ajax({
dataType: "json",
url: '/w/api.php',
data: {
format: 'json',
action: 'expandtemplates',
prop: 'wikitext',
text: text
},
success: function(data) {
data = data && data.expandtemplates && data.expandtemplates.wikitext;
if (/<!--/.test(data)) {
data = false;
}
if (data) {
data = data && data.split('\t');
var wordMinus = data[0];
var rawPageNameMinus = data[1];
callback(rawPageNameMinus || wordMinus, rawPageNameMinus != wordMinus);
} else {
callback(rawPageName || word, rawPageName && rawPageName != word);
}
}
});
};
//Given user input, return a language code. Normalises ISO 639-1 codes and names to 639-3.
this.cleanLangCode = function(lang) {
var key = lang.toLowerCase().replace(' ', '');
if (clean[key])
return clean[key];
else
return lang;
};
// Get the nesting for a given sub-language
this.getNested = function(lang) {
if (nesting[lang])
return nesting[lang];
else
return "";
};
function temporalSortKey(langname) {
return langname.replace(/^(Ancient|Classical|Old|Middle|Early Modern|Modern) (.*)/, function(m, modifier, name) {
return ({
Ancient: 0,
Old: 1,
Middle: 2,
"Early Modern": 3,
Modern: 4
})[modifier] + name;
});
}
// For enforcing an ordering on nested languages.
this.nestsBefore = function(a, b) {
return temporalSortKey(a) < temporalSortKey(b);
};
this.getScripts = function(lang) {
var scripts = (new window.ScriptUtils()).GetScriptsByLangCode(lang) || [];
return scripts;
};
};
//</nowiki>