Merge pull request #55 from amire80/langdb_aliases_cleanup

Add basic support for redirects
This commit is contained in:
Santhosh Thottingal
2012-12-24 02:32:32 -08:00
4 changed files with 199 additions and 99 deletions

View File

@@ -2,11 +2,10 @@ languages:
aa: [Latn, [AF], Qafár af]
ab: [Cyrl, [EU], Аҧсшәа]
ace: [Latn, [AS, PA], Acèh]
ady-cyrl: [Cyrl, [EU], Адыгэбзэ]
ady-latn: [Latn, [EU], Adygabze]
# XXX multiple script
# ady: [[Cyrl, Latn], [EU], [Адыгэбзэ, Adygabze]]
ady: [Cyrl, [EU], Адыгэбзэ]
# FIXME: alias
ady: [Cyrl, [EU, ME], Адыгэбзэ]
ady-cyrl: [Cyrl, [EU, ME], Адыгэбзэ]
ady-latn: [Latn, [EU, ME], Adygabze]
aeb: [Arab, [AF], زَوُن]
af: [Latn, [AF], Afrikaans]
ahr: [Deva, [AS], अहिराणी]
@@ -30,8 +29,12 @@ languages:
av: [Cyrl, [EU], авар]
avk: [Latn, [WW], Kotava]
ay: [Latn, [AM], Aymar aru]
# also Arab, and in the past - Cyrl
# Latin is the default in Azerbaijani Wikipedia
# FIXME: alias
az: [Latn, [EU, ME], azərbaycanca]
az-latn: [Latn, [EU, ME], azərbaycanca]
az-arab: [Arab, [EU, ME], آذربايجانجا]
az-cyrl: [Latn, [EU, ME], азәрбајҹанҹа]
ba: [Cyrl, [EU], башҡортса]
bar: [Latn, [EU], Boarisch]
bbc-latn: [Latn, [AS], Batak Toba]
@@ -39,13 +42,14 @@ languages:
bbc: [Batk, [AS], Batak Toba/Batak autonym unknown]
bcc: [Arab, [AS, ME], بلوچی مکرانی]
bcl: [Latn, [AS], Bikol Central]
# FIXME: which is the correct code?
# FIXME: alias
be-tarask: [Cyrl, [EU], беларуская (тарашкевіца)]
be-x-old: [Cyrl, [EU], беларуская (тарашкевіца)]
be: [Cyrl, [EU], беларуская]
bew: [Latn, [AS], Bahasa Betawi]
bfq: [Taml, [AS], படகா]
bg: [Cyrl, [EU], български]
# FIXME - currently says Bhojpuri, but it's a macrolanguage.
bh: [Deva, [AS], भोजपुरी]
bho: [Deva, [AS], भोजपुरी]
bi: [Latn, [PA], Bislama]
@@ -73,17 +77,14 @@ languages:
ckb: [Arab, [ME], کوردی]
co: [Latn, [EU], corsu]
cps: [Latn, [AS], Capiceño]
# FIXME: alias
cr: [Cans, [AM], ᓀᐦᐃᔭᐍᐏᐣ]
cr-cans: [Cans, [AM], ᓀᐦᐃᔭᐍᐏᐣ]
cr-latn: [Latn, [AM], Nēhiyawēwin]
# XXX multiple script
# cr: [[Latn, Cans], [AM], [Nēhiyawēwin, ᓀᐦᐃᔭᐍᐏᐣ]]
cr: [Cans, [AM], Nēhiyawēwin / ᓀᐦᐃᔭᐍᐏᐣ]
crh-cyrl: [Cyrl, [EU], къырымтатарджа (Кирилл)]
crh-latn: [Latn, [EU], qırımtatarca (Latin)]
# XXX multiple script
# Latn is default in Wikipedia, Cyrl is common IRL
# crh: [[Cyrl, Latn], [EU], [къырымтатарджа, qırımtatarca]]
crh: [Latn, [EU], къырымтатарджа / qırımtatarca]
# FIXME: alias
crh: [Latn, [EU], qırımtatarca]
crh-cyrl: [Cyrl, [EU], къырымтатарджа]
crh-latn: [Latn, [EU], qırımtatarca]
cs: [Latn, [EU], česky]
csb: [Latn, [EU], kaszëbsczi]
# FIXME: what script?
@@ -106,7 +107,6 @@ languages:
eml: [Latn, [EU], emiliàn e rumagnòl]
en-ca: [Latn, [AM], Canadian English]
en-gb: [Latn, [EU, AS, PA], British English]
# world?
en: [Latn, [EU, AM, AF, ME, AS, PA, WW], English]
eo: [Latn, [WW], Esperanto]
es-419: [Latn, [AM], español de America Latina]
@@ -133,6 +133,7 @@ languages:
ga: [Latn, [EU], Gaeilge]
gag: [Latn, [EU], Gagauz]
gah: [Latn, [AS], Alekano]
# FIXME: alias
gan-hans: [Hans, [AS], 赣语(简体)]
gan-hant: [Hant, [AS], 贛語(繁體)]
gan: [Hant, [AS], 贛語]
@@ -142,12 +143,10 @@ languages:
gl: [Latn, [EU], galego]
glk: [Arab, [ME], گیلکی]
gn: [Latn, [AM], "Avañe'ẽ"]
# FIXME: alias
gom: [Deva, [AS], कोंकणी]
gom-deva: [Deva, [AS], कोंकणी]
gom-latn: [Latn, [AS], Konknni]
# XXX multiple script
# gom: [[Deva, Latn], [AS], [कोंकणी, Konknni]]
gom: [Deva, [AS], कोंकणी / Konknni]
# hmph?..
got: [Goth, [EU], 𐌲𐌿𐍄𐌹𐍃𐌺]
grc: [Grek, [EU], Ἀρχαία ἑλληνικὴ]
gsw: [Latn, [EU], Alemannisch]
@@ -155,19 +154,18 @@ languages:
guc: [Latn, [AM], Wayúu]
gur: [Latn, [AF], Gurenɛ]
gv: [Latn, [EU], Gaelg]
# FIXME: alias
ha-arab: [Arab, [AF], هَوُسَ]
ha-latn: [Latn, [AF], Hausa]
ha: [Latn, [AF], Hausa]
hak: [Latn, [AS], Hak-kâ-fa]
haw: [Latn, [AM, PA], Hawai`i]
he: [Hebr, [ME], עברית]
# Or maybe world?
hi: [Deva, [AS], हिन्दी]
# FIXME: alias
hif: [Latn, [PA, AS], Fiji Hindi]
hif-deva: [Deva, [AS], फ़ीजी हिन्दी]
hif-latn: [Latn, [PA, AS], Fiji Hindi]
# XXX multiple script
# hif: [[Deva, Latn], [PA, AS], [फ़ीजी हिन्दी, Fiji Hindi]]
hif: [Latn, [PA, AS], फ़ीजी हिन्दी / Fiji Hindi]
hil: [Latn, [AS], Ilonggo]
hne: [Deva, [AS], छत्तीसगढ़ी]
ho: [Latn, [PA], Hiri Motu]
@@ -194,13 +192,14 @@ languages:
is: [Latn, [EU], íslenska]
it: [Latn, [EU], italiano]
# For variants ike-* is used
iu: [Cans, [AM], ᐃᓄᒃᑎᑐᑦ/inuktitut]
iu: [Cans, [AM], ᐃᓄᒃᑎᑐᑦ]
ja: [Jpan, [AS], 日本語]
jam: [Latn, [AM], Patois]
jbo: [Latn, [WW], Lojban]
jut: [Latn, [EU], jysk]
# also in the Javanese script (Java), but the Wikipedia is in Latn
jv: [Latn, [AS, PA], Basa Jawa]
# For support in webfonts.
jv-java: [Java, [AS, PA], ꦧꦱꦗꦮ]
ka: [Geor, [EU], ქართული]
kaa: [Latn, [AS], Qaraqalpaqsha]
# Can also be Tfng, but the Wikipedia is mostly Latn
@@ -215,15 +214,14 @@ languages:
ki: [Latn, [AF], Gĩkũyũ]
kiu: [Latn, [EU, ME], Kırmancki]
kj: [Latn, [AF], Kwanyama]
# FIXME: alias
kk: [Cyrl, [EU, AS], қазақша]
kk-arab: [Arab, [EU, AS], قازاقشا (تٴوتە)]
kk-cn: [Arab, [EU, AS, ME], قازاقشا (جۇنگو)]
kk-cyrl: [Cyrl, [EU, AS], қазақша (кирил)]
kk-cyrl: [Cyrl, [EU, AS], қазақша]
kk-kz: [Cyrl, [EU, AS], қазақша (Қазақстан)]
kk-latn: [Latn, [EU, AS, ME], qazaqşa (latın)]
kk-latn: [Latn, [EU, AS, ME], qazaqşa]
kk-tr: [Latn, [EU, AS, ME], qazaqşa (Türkïya)]
# XXX multiple script
# kk: [[Arab, Cyrl, Latn] [EU, AS], [قازاقشا, қазақша, qazaqşa]]
kk: [Cyrl, [EU, AS], қазақша / قازاقشا / qazaqşa]
kl: [Latn, [AM, EU], kalaallisut]
km: [Khmr, [AS], ភាសាខ្មែរ]
kn: [Knda, [AS], ಕನ್ನಡ]
@@ -239,25 +237,22 @@ languages:
krl: [Latn, [EU], Karjala]
ks-arab: [Arab, [AS], کٲشُر]
ks-deva: [Deva, [AS], कॉशुर]
# XXX multiple script
# Arab is first here just because it's the current default in the Wikipedia. Deva may be needed, too.
# ks: [[Deva, Arab], [AS], [कॉशुर, کٲشُر]]
ks: [Arab, [AS], कॉशुर / کٲشُر]
# FIXME: alias
ks: [Arab, [AS], کٲشُر]
ksf: [Latn, [AF], Bafia]
ksh: [Latn, [EU], Ripoarisch]
ku-arab: [Arab, [EU, ME], كوردي (عەرەبی)]
ku-latn: [Latn, [EU, ME], Kurdî (latînî)]
# XXX multiple script
# ku: [[Arab, Latn], [EU, ME], [كوردي , Kurdî]]
ku: [Latn, [EU, ME], كوردي / Kurdî]
# FIXME: alias
ku: [Latn, [EU, ME], Kurdî]
ku-arab: [Arab, [EU, ME], كوردي]
ku-latn: [Latn, [EU, ME], Kurdî]
kv: [Cyrl, [EU], коми]
kw: [Latn, [EU], kernowek]
ky: [Cyrl, [AS], Кыргызча]
la: [Latn, [EU], Latina]
# Most identified with Turkey, Bulgaria, Greece, Spain and Israel,
# but also spoken in Latin America and elsewhere.
# Wikipedia is mostly in Latn, but also in Hebr. (Comparable to az.)
# FIXME: alias
lad: [Latn, [ME, EU, AM], Ladino]
lad-latn: [Latn, [ME, EU, AM], Ladino]
lad-hebr: [Hebr, [ME, EU, AM], לאדינו]
lb: [Latn, [EU], Lëtzebuergesch]
lbe: [Cyrl, [EU], лакку]
lez: [Cyrl, [EU], лезги]
@@ -333,7 +328,8 @@ languages:
om: [Latn, [AF], Oromoo]
or: [Orya, [AS], ଓଡ଼ିଆ]
os: [Cyrl, [EU], Ирон]
pa: [Guru, [AS], ਪੰਜਾਬੀ]
pa: [pa-guru]
pa-guru: [Guru, [AS], ਪੰਜਾਬੀ]
pag: [Latn, [AS], Pangasinan]
pam: [Latn, [AS], Kapampangan]
pap: [Latn, [AM], Papiamentu]
@@ -354,7 +350,6 @@ languages:
pru: [Latn, [EU], Prūsiskan]
ps: [Arab, [AS, ME], پښتو]
pt-br: [Latn, [AM], português do Brasil]
# world?
pt: [Latn, [EU, AM, AS, PA, AF, WW], português]
qu: [Latn, [AM], Runa Simi]
qug: [Latn, [AM], Runa shimi]
@@ -397,13 +392,11 @@ languages:
sgs: [Latn, [EU], žemaitėška]
sh-cyrl: [Cyrl, [EU], српскохрватски]
sh-latn: [Latn, [EU], srpskohrvatski]
# XXX multiple script
# sh: [[Latn, Cyrl], [EU], [srpskohrvatski, српскохрватски]]
sh: [Latn, [EU], srpskohrvatski / српскохрватски]
# FIXME: alias
sh: [Latn, [EU], srpskohrvatski]
shi-latn: [Latn, [AF], Tašlḥiyt]
shi-tfng: [Tfng, [AF], ⵜⴰⵛⵍⵃⵉⵜ]
# XXX multiple script
# shi: [[Latn, Tfng], [AF], [Tašlḥiyt, ⵜⴰⵛⵍⵃⵉⵜ]]
# FIXME: which one to pick and alias?
shi: [Latn, [AF], Tašlḥiyt / ⵜⴰⵛⵍⵃⵉⵜ]
shn: [Mymr, [AS], လိၵ်ႈတႆး]
si: [Sinh, [AS], සිංහල]
@@ -421,11 +414,12 @@ languages:
sn: [Latn, [AF], chiShona]
so: [Latn, [AF], Soomaaliga]
sq: [Latn, [EU], shqip]
sr-ec: [Cyrl, [EU], српски (ћирилица)]
sr-el: [Latn, [EU], srpski (latinica)]
# XXX multiple script
# sr: [[Cyrl, Latn], [EU], [српски, srpski]]
sr: [Cyrl, [EU], српски / srpski]
# FIXME: do we need the double name here?
sr: [Cyrl, [EU], српски]
sr-ec: [sr-cyrl]
sr-cyrl: [Cyrl, [EU], српски]
sr-el: [sr-latn]
sr-latn: [Latn, [EU], srpski]
srn: [Latn, [AM, EU], Sranantongo]
ss: [Latn, [AF], SiSwati]
st: [Latn, [AF], Sesotho]
@@ -461,9 +455,10 @@ languages:
tsd: [Grek, [EU], Τσακωνικά]
tt-cyrl: [Cyrl, [EU], татарча]
tt-latn: [Latn, [EU], tatarça]
# XXX multiple script
# tt: [[Cyrl, Latn] [EU], [татарча, tatarça]]
tt: [Cyrl, [EU], татарча / tatarça]
# FIXME: alias
tt: [Cyrl, [EU], татарча]
tt-cyrl: [Cyrl, [EU], татарча]
tt-latn: [Latn, [EU], tatarça]
ttt: [Cyrl, [AS], Tati]
tum: [Latn, [AF], chiTumbuka]
tw: [Latn, [AF], Twi]
@@ -472,11 +467,10 @@ languages:
tyv: [Cyrl, [AS], тыва дыл]
tzm: [Tfng, [AF], ⵜⴰⵎⴰⵣⵉⵖⵜ]
udm: [Cyrl, [EU], удмурт]
ug-arab: [Arab, [AS], ئۇيغۇرچە]
ug-latn: [Latn, [AS], Uyghurche]
# XXX multiple script
# ug: [[Arab, Latn], [AS], [ئۇيغۇرچە, Uyghurche]]
ug: [Arab, [AS], ئۇيغۇرچە / Uyghurche ]
# FIXME: alias
ug: [Arab, [AS], ئۇيغۇرچە ]
ug-arab: [Arab, [AS], ئۇيغۇرچە ]
ug-latn: [Latn, [AS], Uyghurche ]
uk: [Cyrl, [EU], українська]
ur: [Arab, [AS, ME], اردو]
uz: [Latn, [AS], oʻzbekcha]
@@ -507,6 +501,8 @@ languages:
yue: [Hant, [AS], 粵語]
za: [Latn, [AS], Vahcuengh]
zea: [Latn, [EU], Zeêuws]
# world? (may apply to many varieties of Chinese)
zh: [Hans, [AS], 中文]
zh-classical: [Hant, [AS], 文言]
zh-cn: [Hans, [AS], 中文(中国大陆)]
zh-hans: [Hans, [AS], 中文(简体)]
@@ -518,17 +514,21 @@ languages:
zh-sg: [Hans, [AS], 中文(新加坡)]
zh-tw: [Hant, [AS], 中文(台灣)]
zh-yue: [Hans, [AS], 粵語]
zh: [Hans, [AS], 中文]
zu: [Latn, [AF], isiZulu]
# All the supported scripts, grouped logically.
#
# The codes are taken from http://unicode.org/iso15924/iso15924-codes.html .
#
# The classification is roughly based on http://www.unicode.org/charts/
# with some practical corrections.
# The order of the groups affects display. It was suggested by Pau to distance
# the largest groups from one another to improve discoverability.
scriptgroups:
#
# The order of the groups affects display. Pau Giner suggested the order;
# the rationale of the order is to distance the largest groups from
# one another to improve discoverability.
#
# The group name "Other" is reserved.
scriptgroups:
# It's hard to find a better place for Goth except the Latin group.
Latin: [Latn, Goth]
# Greek is probalby different enough from Latin and Cyrillic, but user testing

File diff suppressed because one or more lines are too long

View File

@@ -18,28 +18,44 @@
*/
( function ( $ ) {
"use strict";
'use strict';
/**
* Log deprecated functions
*/
function deprecated( oldFunc, newFunc ) {
if ( window.console && window.console.log ) {
window.console.log( oldFunc + " is deprecated. Please use " + newFunc );
window.console.log( oldFunc + ' is deprecated. Please use ' + newFunc );
}
}
/**
* Is this language a redirect to another language?
* @param string language code
* @return Target language code if it's a redirect or false if it's not
*/
$.uls.data.isRedirect = function( language ) {
return ( $.uls.data.languages[language] !== undefined &&
$.uls.data.languages[language].length === 1 ) ? $.uls.data.languages[language][0] : false;
};
/**
* Returns the script of the language.
* @param string language code
* @return string
*/
$.uls.data.getScript = function( language ) {
var target = $.uls.data.isRedirect( language );
if ( target ) {
return $.uls.data.getScript( target );
}
return $.uls.data.languages[language][0];
};
$.uls.data.script = function( language ) { // deprecated
deprecated( "script", "getScript" );
deprecated( 'script', 'getScript' );
return $.uls.data.getScript( language );
};
@@ -49,11 +65,17 @@
* @return array|string 'UNKNOWN'
*/
$.uls.data.getRegions = function( language ) {
var target = $.uls.data.isRedirect( language );
if ( target ) {
return $.uls.data.getRegions( target );
}
return ( $.uls.data.languages[language] && $.uls.data.languages[language][1] ) || 'UNKNOWN';
};
$.uls.data.regions = function( language ) { // deprecated
deprecated( "regions", "getRegions" );
deprecated( 'regions', 'getRegions' );
return $.uls.data.getRegions( language );
};
@@ -63,11 +85,17 @@
* @return string
*/
$.uls.data.getAutonym = function( language ) {
var target = $.uls.data.isRedirect( language );
if ( target ) {
return $.uls.data.getAutonym( target );
}
return ( $.uls.data.languages[language] && $.uls.data.languages[language][2] ) || language;
};
$.uls.data.autonym = function( language ) { // deprecated
deprecated( "autonym", "getAutonym" );
deprecated( 'autonym', 'getAutonym' );
return $.uls.data.getAutonym( language );
};
@@ -79,6 +107,10 @@
var autonymsByCode = {};
for ( var language in $.uls.data.languages ) {
if ( $.uls.data.isRedirect( language ) ) {
continue;
}
autonymsByCode[language] = $.uls.data.getAutonym( language );
}
@@ -86,7 +118,7 @@
};
$.uls.data.autonyms = function() { // deprecated
deprecated( "autonyms", "getAutonyms" );
deprecated( 'autonyms', 'getAutonyms' );
return $.uls.data.getAutonyms();
};
@@ -105,7 +137,7 @@
};
$.uls.data.allRegions = function() { // deprecated
deprecated( "allRegions", "getAllRegions" );
deprecated( 'allRegions', 'getAllRegions' );
return $.uls.data.getAllRegions();
};
@@ -119,7 +151,7 @@
};
$.uls.data.languagesInScript = function( script ) { // deprecated
deprecated( "languagesInScript", "getLanguagesInScript" );
deprecated( 'languagesInScript', 'getLanguagesInScript' );
return $.uls.data.getLanguagesInScript( script );
};
@@ -132,6 +164,10 @@
var languagesInScripts = [];
for ( var language in $.uls.data.languages ) {
if ( $.uls.data.isRedirect( language ) ) {
continue;
}
for ( var i = 0; i < scripts.length; i++ ) {
if ( scripts[i] === $.uls.data.getScript( language ) ) {
languagesInScripts.push( language );
@@ -144,7 +180,7 @@
};
$.uls.data.languagesInScripts = function( scripts ) { // deprecated
deprecated( "languagesInScripts", "getLanguagesInScripts" );
deprecated( 'languagesInScripts', 'getLanguagesInScripts' );
return $.uls.data.getLanguagesInScripts( scripts );
};
@@ -158,7 +194,7 @@
};
$.uls.data.languagesInRegion = function( region ) { // deprecated
deprecated( "languagesInRegion", "getLanguagesInRegion" );
deprecated( 'languagesInRegion', 'getLanguagesInRegion' );
return $.uls.data.getLanguagesInRegion( region );
};
@@ -171,6 +207,10 @@
var languagesInRegions = [];
for ( var language in $.uls.data.languages ) {
if ( $.uls.data.isRedirect( language ) ) {
continue;
}
for ( var i = 0; i < regions.length; i++ ) {
if ( $.inArray( regions[i], $.uls.data.getRegions( language ) ) !== -1 ) {
languagesInRegions.push( language );
@@ -183,7 +223,7 @@
};
$.uls.data.languagesInRegions = function( regions ) { // deprecated
deprecated( "languagesInRegions", "getLanguagesInRegions" );
deprecated( 'languagesInRegions', 'getLanguagesInRegions' );
return $.uls.data.getLanguagesInRegions( regions );
};
@@ -197,7 +237,7 @@
};
$.uls.data.languagesInRegionGroup = function( groupNum ) { // deprecated
deprecated( "languagesInRegionGroup", "getLanguagesInRegionGroup" );
deprecated( 'languagesInRegionGroup', 'getLanguagesInRegionGroup' );
return $.uls.data.getLanguagesInRegionGroup( groupNum );
};
@@ -211,6 +251,10 @@
var languagesByScriptInRegion = {};
for ( var language in $.uls.data.languages ) {
if ( $.uls.data.isRedirect( language ) ) {
continue;
}
if ( $.inArray( region, $.uls.data.getRegions( language ) ) !== -1 ) {
var script = $.uls.data.getScript( language );
if ( languagesByScriptInRegion[script] === undefined ) {
@@ -224,7 +268,7 @@
};
$.uls.data.languagesByScriptInRegion = function( region ) { // deprecated
deprecated( "languagesByScriptInRegion", "getLanguagesByScriptInRegion" );
deprecated( 'languagesByScriptInRegion', 'getLanguagesByScriptInRegion' );
return $.uls.data.getLanguagesByScriptInRegion( region );
};
@@ -239,7 +283,7 @@
};
$.uls.data.languagesByScriptGroupInRegion = function( region ) { // deprecated
deprecated( "languagesByScriptGroupInRegion", "getLanguagesByScriptGroupInRegion" );
deprecated( 'languagesByScriptGroupInRegion', 'getLanguagesByScriptGroupInRegion' );
return $.uls.data.getLanguagesByScriptGroupInRegion( region );
};
@@ -253,7 +297,7 @@
};
$.uls.data.allLanguagesByScriptGroup = function() { // deprecated
deprecated( "allLanguagesByScriptGroup", "getAllLanguagesByScriptGroup" );
deprecated( 'allLanguagesByScriptGroup', 'getAllLanguagesByScriptGroup' );
return $.uls.data.getAllLanguagesByScriptGroup();
};
@@ -285,7 +329,7 @@
};
$.uls.data.languagesByScriptGroup = function( languages ) { // deprecated
deprecated( "languagesByScriptGroup", "getLanguagesByScriptGroup" );
deprecated( 'languagesByScriptGroup', 'getLanguagesByScriptGroup' );
return $.uls.data.getLanguagesByScriptGroup( languages );
};
@@ -299,12 +343,18 @@
var languagesByScriptGroupInRegions = {};
for ( var language in $.uls.data.languages ) {
if ( $.uls.data.isRedirect( language ) ) {
continue;
}
for ( var i = 0; i < regions.length; i++ ) {
if ( $.inArray( regions[i], $.uls.data.getRegions( language ) ) !== -1 ) {
var scriptGroup = $.uls.data.getScriptGroupOfLanguage( language );
if ( languagesByScriptGroupInRegions[scriptGroup] === undefined ) {
languagesByScriptGroupInRegions[scriptGroup] = [];
}
languagesByScriptGroupInRegions[scriptGroup].push( language );
break;
}
@@ -315,7 +365,7 @@
};
$.uls.data.languagesByScriptGroupInRegions = function( regions ) { // deprecated
deprecated( "languagesByScriptGroupInRegions", "getLanguagesByScriptGroupInRegions" );
deprecated( 'languagesByScriptGroupInRegions', 'getLanguagesByScriptGroupInRegions' );
return $.uls.data.getLanguagesByScriptGroupInRegions( regions );
};
@@ -331,13 +381,19 @@
for ( region in $.uls.data.regiongroups ) {
regionGroup = $.uls.data.regiongroups[region];
if ( allLanguagesByRegionAndScript[regionGroup] === undefined ) {
allLanguagesByRegionAndScript[regionGroup] = {};
}
allLanguagesByRegionAndScript[regionGroup][region] = {};
}
for ( var language in $.uls.data.languages ) {
if ( $.uls.data.isRedirect( language ) ) {
continue;
}
var script = $.uls.data.getScript( language );
var scriptGroup = $.uls.data.getGroupOfScript( script );
var regions = $.uls.data.getRegions( language );
@@ -362,7 +418,7 @@
};
$.uls.data.allLanguagesByRegionAndScript = function() { // deprecated
deprecated( "allLanguagesByRegionAndScript", "getAllLanguagesByRegionAndScript" );
deprecated( 'allLanguagesByRegionAndScript', 'getAllLanguagesByRegionAndScript' );
return $.uls.data.getAllLanguagesByRegionAndScript();
};
@@ -384,7 +440,7 @@
};
$.uls.data.regionsInGroup = function( groupNum ) { // deprecated
deprecated( "regionsInGroup", "getRegionsInGroup" );
deprecated( 'regionsInGroup', 'getRegionsInGroup' );
return $.uls.data.getRegionsInGroup( groupNum );
};
@@ -405,7 +461,7 @@
};
$.uls.data.groupOfScript = function( script ) { // deprecated
deprecated( "groupOfScript", "getGroupOfScript" );
deprecated( 'groupOfScript', 'getGroupOfScript' );
return $.uls.data.getGroupOfScript( script );
};
@@ -419,7 +475,7 @@
};
$.uls.data.scriptGroupOfLanguage = function( language ) { // deprecated
deprecated( "scriptGroupOfLanguage", "getScriptGroupOfLanguage" );
deprecated( 'scriptGroupOfLanguage', 'getScriptGroupOfLanguage' );
return $.uls.data.getScriptGroupOfLanguage( language );
};
@@ -462,7 +518,7 @@
};
$.uls.data.languagesInTerritory = function( territory ) { // deprecated
deprecated( "languagesInTerritory", "getLanguagesInTerritory" );
deprecated( 'languagesInTerritory', 'getLanguagesInTerritory' );
return $.uls.data.getLanguagesInTerritory( territory );
};
} ( jQuery ) );

View File

@@ -34,6 +34,23 @@
return result;
};
/*
* Runs over all languages and checks that all redirects have a valid target.
*/
var badRedirects = function () {
var result = [];
for ( var language in $.uls.data.languages ) {
var target = $.uls.data.isRedirect( language );
if ( target && !$.uls.data.languages[target] ) {
result.push( language );
}
}
return result;
};
/*
* Runs over all script codes mentioned in langdb and checks whether
* they have something that looks like an autonym.
@@ -54,13 +71,18 @@
assert.ok( $.fn.uls, "$.fn.uls is defined" );
} );
test( "-- $.uls.data testing", 27, function ( assert ) {
test( "-- $.uls.data testing", 40, function ( assert ) {
assert.strictEqual( $.uls.data.getAutonyms()['he'], 'עברית', 'Correct autonym is returned for Hebrew using getAutonyms().' );
assert.strictEqual( $.uls.data.isRedirect( 'sr-ec' ), 'sr-cyrl', "'sr-ec' is a redirect to 'sr-cyrl'" );
var autonyms = $.uls.data.getAutonyms();
assert.strictEqual( autonyms['he'], 'עברית', 'Correct autonym is returned for Hebrew using getAutonyms().' );
assert.strictEqual( autonyms['pa'], undefined, "Language 'pa' is not listed in autonyms, because it's a redirect" );
assert.strictEqual( autonyms['pa-guru'], 'ਪੰਜਾਬੀ', "Language 'pa-guru' has the correct autonym" );
// This test assumes that we don't want any scripts to be in the 'Other'
// group. Actually, this may become wrong some day.
assert.deepEqual( orphanScripts(), [], 'All scripts belong to script groups.' );
assert.deepEqual( badRedirects(), [], 'All redirects have valid targets.' );
assert.deepEqual( languagesWithoutAutonym(), [], 'All languages have autonyms.' );
assert.strictEqual(
@@ -84,20 +106,27 @@
assert.deepEqual( allLanguagesByRegionAndScript['4']['AS']['SouthEastAsian']['Bugi'], [
'bug'
], 'All languages in the Buginese script in Asia were selected' );
assert.deepEqual( allLanguagesByRegionAndScript['4']['AS']['SouthAsian']['Guru'], [
'pa-guru'
], 'Only language pa-guru appears as a language in script Guru in SouthAsian languages in Asia' );
var languagesInEU = $.uls.data.getLanguagesInRegion( 'EU' );
assert.strictEqual( $.inArray( 'sr-ec', languagesInEU ), -1, "Language 'sr-ec' doesn't appear in languages of region EU, because it's a redirect" );
assert.ok( $.inArray( 'sr-cyrl', languagesInEU ) > -1, "Language 'sr-cyrl' appears in languages of region EU, because it's not a redirect" );
assert.deepEqual( $.uls.data.getLanguagesInRegion( "PA" ),
[
"ace", "bi", "ch", "en-gb", "en", "fj", "haw", "hif-latn", "hif", "ho", "jv",
"ace", "bi", "ch", "en-gb", "en", "fj", "haw", "hif", "hif-latn", "ho", "jv", "jv-java",
"mh", "mi", "na", "niu", "pih", "pis", "pt", "rtm", "sm", "tet",
"to", "tpi", "ty", "wls"
],
"languages of region PA are selected correctly" );
assert.deepEqual( $.uls.data.getLanguagesInRegions( ["AM", "WW"] ),
[
"akz", "arn", "aro", "ase", "avk", "ay", "cho", "chr", "chy", "cr-cans", "cr-latn",
"cr", "en-ca", "en", "eo", "es-419", "es-formal", "es", "esu", "fr", "gcf", "gn",
"akz", "arn", "aro", "ase", "avk", "ay", "cho", "chr", "chy", "cr", "cr-cans", "cr-latn",
"en-ca", "en", "eo", "es-419", "es-formal", "es", "esu", "fr", "gcf", "gn",
"guc", "haw", "ht", "ia", "ie", "ik", "ike-cans", "ike-latn", "io", "iu", "jam",
"jbo", "kgp", "kl", "lad", "lfn", "mfe", "mic", "mus", "nah", "nl-informal", "nl",
"jbo", "kgp", "kl", "lad", "lad-latn", "lad-hebr", "lfn", "mfe", "mic", "mus", "nah", "nl-informal", "nl",
"nov", "nv", "pap", "pdc", "pdt", "ppl", "pt-br", "pt", "qu", "qug", "rap", "sei",
"simple", "srn", "tokipona", "vo", "yi", "yrl", "yua"
],
@@ -107,6 +136,10 @@
assert.deepEqual( $.uls.data.getLanguagesInScript( 'Knda' ), [
"kn", "tcy"
], "languages in script Knda are selected correctly" );
assert.deepEqual( $.uls.data.getLanguagesInScript( 'Guru' ),
["pa-guru"],
"'pa-guru' is written in script Guru, and 'pa' is skipped as a redirect"
);
assert.deepEqual( $.uls.data.getLanguagesInScripts( ['Geor', 'Armn'] ),
["hy", "ka", "xmf"],
"languages in scripts Geor and Armn are selected correctly"
@@ -124,15 +157,26 @@
var languagesByScriptInAM = $.uls.data.getLanguagesByScriptInRegion( "AM" );
assert.deepEqual( languagesByScriptInAM['Cans'], [
"cr-cans", "cr", "ike-cans", "iu"
"cr", "cr-cans", "ike-cans", "iu"
], "correct languages in Cans in AM selected" );
assert.strictEqual( $.uls.data.getAutonym( 'pa' ), 'ਪੰਜਾਬੀ', 'Correct autonym of the Punjabi language was selected' );
var languagesByScriptInEU = $.uls.data.getLanguagesByScriptInRegion( "EU" );
assert.strictEqual( $.inArray( 'sr-el', languagesByScriptInEU['Latn'] ), -1,
"Language 'sr-el' doesn't appear as a Latin-script language in EU, because it's a redirect" );
assert.ok( $.inArray( 'sr-latn', languagesByScriptInEU['Latn'] ) > -1,
"Language 'sr-latn' appears as a Latin-script language in EU, because it's not a redirect" );
assert.strictEqual( $.uls.data.getAutonym( 'pa' ), 'ਪੰਜਾਬੀ', 'Correct autonym of the Punjabi language was selected using code pa.' );
assert.strictEqual( $.uls.data.getAutonym( 'pa-guru' ), 'ਪੰਜਾਬੀ', 'Correct autonym of the Punjabi language was selected using code pa.' );
var languagesByScriptGroupInEMEA = $.uls.data.getLanguagesByScriptGroupInRegions( $.uls.data.getRegionsInGroup( 3 ) );
assert.deepEqual( languagesByScriptGroupInEMEA['WestCaucasian'], [
'hy', 'ka', 'xmf'
], 'Correct languages in WestCaucasian script group in EMEA selected' );
assert.strictEqual( $.inArray( 'sr-ec', languagesByScriptGroupInEMEA['Cyrillic'] ), -1,
"Language 'sr-ec' doesn't appear as a Cyrillic-scriptgroup language in EMEA, because it's a redirect" );
assert.ok( $.inArray( 'sr-cyrl', languagesByScriptGroupInEMEA['Cyrillic'] ) > -1,
"Language 'sr-cyrl' appears as a Cyrillic-scriptgroup language in EMEA, because it's not a redirect" );
var allLanguagesByScriptGroup = $.uls.data.getAllLanguagesByScriptGroup();
assert.deepEqual( allLanguagesByScriptGroup['Greek'], [