Merge branch 'master' of github.com:wikimedia/jquery.uls
Conflicts: examples/index-i18n.html
This commit is contained in:
@@ -180,7 +180,7 @@ input:focus#languagefilter {
|
||||
float: right;
|
||||
}
|
||||
|
||||
span#languagefilter-clear {
|
||||
#languagefilter-clear {
|
||||
/* @embed */
|
||||
background: url('../images/clear.png') no-repeat scroll left center
|
||||
transparent;
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
}
|
||||
|
||||
.uls-language-block ul {
|
||||
margin: 0px 0px 1.6em;
|
||||
margin: 0 0 1.6em;
|
||||
}
|
||||
|
||||
.uls-language-list ul li {
|
||||
|
||||
@@ -29,9 +29,9 @@
|
||||
onReady: function ( ) {
|
||||
this.i18n();
|
||||
},
|
||||
onSelect: function ( language ) {
|
||||
var languageName = $.uls.data.autonym( language );
|
||||
$( 'a#pageLanguage' ).text( languageName );
|
||||
onSelect : function( language ) {
|
||||
var languageName = $.uls.data.getAutonym( language );
|
||||
$('a#pageLanguage').text( languageName );
|
||||
i18n.locale = language;
|
||||
// For ULS
|
||||
i18n.load( '../i18n/' + language + '.json', language );
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
$( document ).ready( function() {
|
||||
$( '.uls-trigger' ).uls( {
|
||||
onSelect : function( language ) {
|
||||
var languageName = $.uls.data.autonym( language );
|
||||
var languageName = $.uls.data.getAutonym( language );
|
||||
$('a#pageLanguage').text( languageName );
|
||||
},
|
||||
quickList: ['en', 'hi', 'he', 'ml', 'ta','fr'] //FIXME
|
||||
|
||||
@@ -318,7 +318,7 @@
|
||||
menu: template,
|
||||
onSelect: null, // Callback function to be called when a language is selected
|
||||
searchAPI: null, // Language search API
|
||||
languages: $.uls.data.autonyms(), // Languages to be used for ULS, default is all languages
|
||||
languages: $.uls.data.getAutonyms(), // Languages to be used for ULS, default is all languages
|
||||
quickList: null // Array of language codes of function that returns such
|
||||
};
|
||||
|
||||
|
||||
@@ -20,52 +20,81 @@
|
||||
( function ( $ ) {
|
||||
"use strict";
|
||||
|
||||
/**
|
||||
* Log deprecated functions
|
||||
*/
|
||||
function deprecated( oldFunc, newFunc ) {
|
||||
if ( window.console && window.console.log ) {
|
||||
window.console.log( oldFunc + " is deprecated. Please use " + newFunc );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the script of the language.
|
||||
* @param string language code
|
||||
* @return string
|
||||
*/
|
||||
$.uls.data.script = function( language ) {
|
||||
$.uls.data.getScript = function( language ) {
|
||||
return $.uls.data.languages[language][0];
|
||||
};
|
||||
|
||||
$.uls.data.script = function( language ) { // deprecated
|
||||
deprecated( "script", "getScript" );
|
||||
return $.uls.data.getScript( language );
|
||||
};
|
||||
|
||||
/**
|
||||
* Returns the regions in which a language is spoken.
|
||||
* @param string language code
|
||||
* @return array of strings
|
||||
* @return array|string 'UNKNOWN'
|
||||
*/
|
||||
$.uls.data.regions = function( language ) {
|
||||
$.uls.data.getRegions = function( language ) {
|
||||
return ( $.uls.data.languages[language] && $.uls.data.languages[language][1] ) || 'UNKNOWN';
|
||||
};
|
||||
|
||||
$.uls.data.regions = function( language ) { // deprecated
|
||||
deprecated( "regions", "getRegions" );
|
||||
return $.uls.data.getRegions( language );
|
||||
};
|
||||
|
||||
/**
|
||||
* Returns the autonym of the language.
|
||||
* @param string language code
|
||||
* @return string
|
||||
*/
|
||||
$.uls.data.autonym = function( language ) {
|
||||
$.uls.data.getAutonym = function( language ) {
|
||||
return ( $.uls.data.languages[language] && $.uls.data.languages[language][2] ) || language;
|
||||
};
|
||||
|
||||
$.uls.data.autonym = function( language ) { // deprecated
|
||||
deprecated( "autonym", "getAutonym" );
|
||||
return $.uls.data.getAutonym( language );
|
||||
};
|
||||
|
||||
/**
|
||||
* Returns all language codes and corresponding autonyms
|
||||
* @return array
|
||||
*/
|
||||
$.uls.data.autonyms = function() {
|
||||
$.uls.data.getAutonyms = function() {
|
||||
var autonymsByCode = {};
|
||||
|
||||
for ( var language in $.uls.data.languages ) {
|
||||
autonymsByCode[language] = $.uls.data.autonym( language );
|
||||
autonymsByCode[language] = $.uls.data.getAutonym( language );
|
||||
}
|
||||
|
||||
return autonymsByCode;
|
||||
};
|
||||
|
||||
$.uls.data.autonyms = function() { // deprecated
|
||||
deprecated( "autonyms", "getAutonyms" );
|
||||
return $.uls.data.getAutonyms();
|
||||
};
|
||||
|
||||
/**
|
||||
* Returns an array of all region codes.
|
||||
* @return array
|
||||
*/
|
||||
$.uls.data.allRegions = function() {
|
||||
$.uls.data.getAllRegions = function() {
|
||||
var allRegions = [];
|
||||
|
||||
for( var region in $.uls.data.regiongroups ) {
|
||||
@@ -75,26 +104,36 @@
|
||||
return allRegions;
|
||||
};
|
||||
|
||||
$.uls.data.allRegions = function() { // deprecated
|
||||
deprecated( "allRegions", "getAllRegions" );
|
||||
return $.uls.data.getAllRegions();
|
||||
};
|
||||
|
||||
/**
|
||||
* Returns all languages written in script.
|
||||
* @param script string
|
||||
* @return array of strings (languages codes)
|
||||
*/
|
||||
$.uls.data.languagesInScript = function( script ) {
|
||||
$.uls.data.getLanguagesInScript = function( script ) {
|
||||
return $.uls.data.languagesInScripts( [ script ] );
|
||||
};
|
||||
|
||||
$.uls.data.languagesInScript = function( script ) { // deprecated
|
||||
deprecated( "languagesInScript", "getLanguagesInScript" );
|
||||
return $.uls.data.getLanguagesInScript( script );
|
||||
};
|
||||
|
||||
/**
|
||||
* Returns all languages written in the given scripts.
|
||||
* @param scripts array of strings
|
||||
* @return array of strings (languages codes)
|
||||
*/
|
||||
$.uls.data.languagesInScripts = function( scripts ) {
|
||||
$.uls.data.getLanguagesInScripts = function( scripts ) {
|
||||
var languagesInScripts = [];
|
||||
|
||||
for ( var language in $.uls.data.languages ) {
|
||||
for ( var i = 0; i < scripts.length; i++ ) {
|
||||
if ( scripts[i] === $.uls.data.script(language) ) {
|
||||
if ( scripts[i] === $.uls.data.getScript( language ) ) {
|
||||
languagesInScripts.push( language );
|
||||
break;
|
||||
}
|
||||
@@ -104,13 +143,23 @@
|
||||
return languagesInScripts;
|
||||
};
|
||||
|
||||
$.uls.data.languagesInScripts = function( scripts ) { // deprecated
|
||||
deprecated( "languagesInScripts", "getLanguagesInScripts" );
|
||||
return $.uls.data.getLanguagesInScripts( scripts );
|
||||
};
|
||||
|
||||
/**
|
||||
* Returns all languages in a given region.
|
||||
* @param region string
|
||||
* @return array of strings (languages codes)
|
||||
*/
|
||||
$.uls.data.languagesInRegion = function( region ) {
|
||||
return $.uls.data.languagesInRegions( [ region ] );
|
||||
$.uls.data.getLanguagesInRegion = function( region ) {
|
||||
return $.uls.data.getLanguagesInRegions( [ region ] );
|
||||
};
|
||||
|
||||
$.uls.data.languagesInRegion = function( region ) { // deprecated
|
||||
deprecated( "languagesInRegion", "getLanguagesInRegion" );
|
||||
return $.uls.data.getLanguagesInRegion( region );
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -118,12 +167,12 @@
|
||||
* @param region array of strings.
|
||||
* @return array of strings (languages codes)
|
||||
*/
|
||||
$.uls.data.languagesInRegions = function( regions ) {
|
||||
$.uls.data.getLanguagesInRegions = function( regions ) {
|
||||
var languagesInRegions = [];
|
||||
|
||||
for ( var language in $.uls.data.languages ) {
|
||||
for ( var i = 0; i < regions.length; i++ ) {
|
||||
if ( $.inArray( regions[i], $.uls.data.regions( language ) ) !== -1 ) {
|
||||
if ( $.inArray( regions[i], $.uls.data.getRegions( language ) ) !== -1 ) {
|
||||
languagesInRegions.push( language );
|
||||
break;
|
||||
}
|
||||
@@ -133,13 +182,23 @@
|
||||
return languagesInRegions;
|
||||
};
|
||||
|
||||
$.uls.data.languagesInRegions = function( regions ) { // deprecated
|
||||
deprecated( "languagesInRegions", "getLanguagesInRegions" );
|
||||
return $.uls.data.getLanguagesInRegions( regions );
|
||||
};
|
||||
|
||||
/**
|
||||
* Returns all languages in a region group.
|
||||
* @param groupNum number.
|
||||
* @return array of strings (languages codes)
|
||||
*/
|
||||
$.uls.data.languagesInRegionGroup = function( groupNum ) {
|
||||
return $.uls.data.languagesInRegions( $.uls.data.regionsInGroup( groupNum ) );
|
||||
$.uls.data.getLanguagesInRegionGroup = function( groupNum ) {
|
||||
return $.uls.data.getLanguagesInRegions( $.uls.data.getRegionsInGroup( groupNum ) );
|
||||
};
|
||||
|
||||
$.uls.data.languagesInRegionGroup = function( groupNum ) { // deprecated
|
||||
deprecated( "languagesInRegionGroup", "getLanguagesInRegionGroup" );
|
||||
return $.uls.data.getLanguagesInRegionGroup( groupNum );
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -148,12 +207,12 @@
|
||||
* @param string region code
|
||||
* @return associative array
|
||||
*/
|
||||
$.uls.data.languagesByScriptInRegion = function( region ) {
|
||||
$.uls.data.getLanguagesByScriptInRegion = function( region ) {
|
||||
var languagesByScriptInRegion = {};
|
||||
|
||||
for ( var language in $.uls.data.languages ) {
|
||||
if ( $.inArray( region, $.uls.data.regions( language ) ) !== -1 ) {
|
||||
var script = $.uls.data.script( language );
|
||||
if ( $.inArray( region, $.uls.data.getRegions( language ) ) !== -1 ) {
|
||||
var script = $.uls.data.getScript( language );
|
||||
if ( languagesByScriptInRegion[script] === undefined ) {
|
||||
languagesByScriptInRegion[script] = [];
|
||||
}
|
||||
@@ -164,14 +223,24 @@
|
||||
return languagesByScriptInRegion;
|
||||
};
|
||||
|
||||
$.uls.data.languagesByScriptInRegion = function( region ) { // deprecated
|
||||
deprecated( "languagesByScriptInRegion", "getLanguagesByScriptInRegion" );
|
||||
return $.uls.data.getLanguagesByScriptInRegion( region );
|
||||
};
|
||||
|
||||
/**
|
||||
* Returns an associative array of languages in a region,
|
||||
* grouped by script group.
|
||||
* @param string region code
|
||||
* @return associative array
|
||||
*/
|
||||
$.uls.data.languagesByScriptGroupInRegion = function( region ) {
|
||||
return $.uls.data.languagesByScriptGroupInRegions( [ region ] );
|
||||
$.uls.data.getLanguagesByScriptGroupInRegion = function( region ) {
|
||||
return $.uls.data.getLanguagesByScriptGroupInRegions( [ region ] );
|
||||
};
|
||||
|
||||
$.uls.data.languagesByScriptGroupInRegion = function( region ) { // deprecated
|
||||
deprecated( "languagesByScriptGroupInRegion", "getLanguagesByScriptGroupInRegion" );
|
||||
return $.uls.data.getLanguagesByScriptGroupInRegion( region );
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -179,8 +248,13 @@
|
||||
* grouped by script group.
|
||||
* @return associative array
|
||||
*/
|
||||
$.uls.data.allLanguagesByScriptGroup = function() {
|
||||
return $.uls.data.languagesByScriptGroupInRegions( $.uls.data.allRegions() );
|
||||
$.uls.data.getAllLanguagesByScriptGroup = function() {
|
||||
return $.uls.data.getLanguagesByScriptGroupInRegions( $.uls.data.getAllRegions() );
|
||||
};
|
||||
|
||||
$.uls.data.allLanguagesByScriptGroup = function() { // deprecated
|
||||
deprecated( "allLanguagesByScriptGroup", "getAllLanguagesByScriptGroup" );
|
||||
return $.uls.data.getAllLanguagesByScriptGroup();
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -188,7 +262,7 @@
|
||||
* @param languages Array of language codes
|
||||
* @return {Object} Array of languages indexed by script codes
|
||||
*/
|
||||
$.uls.data.languagesByScriptGroup = function( languages ) {
|
||||
$.uls.data.getLanguagesByScriptGroup = function( languages ) {
|
||||
var languagesByScriptGroup = {},
|
||||
scriptGroup,
|
||||
language,
|
||||
@@ -196,7 +270,7 @@
|
||||
|
||||
for ( scriptGroup in $.uls.data.scriptgroups ) {
|
||||
for ( language in languages ) {
|
||||
langScriptGroup = $.uls.data.scriptGroupOfLanguage( language );
|
||||
langScriptGroup = $.uls.data.getScriptGroupOfLanguage( language );
|
||||
if( langScriptGroup !== scriptGroup ) {
|
||||
continue;
|
||||
}
|
||||
@@ -210,19 +284,24 @@
|
||||
return languagesByScriptGroup;
|
||||
};
|
||||
|
||||
$.uls.data.languagesByScriptGroup = function( languages ) { // deprecated
|
||||
deprecated( "languagesByScriptGroup", "getLanguagesByScriptGroup" );
|
||||
return $.uls.data.getLanguagesByScriptGroup( languages );
|
||||
};
|
||||
|
||||
/**
|
||||
* Returns an associative array of languages in several regions,
|
||||
* grouped by script group.
|
||||
* @param array of strings - region codes
|
||||
* @return associative array
|
||||
*/
|
||||
$.uls.data.languagesByScriptGroupInRegions = function( regions ) {
|
||||
$.uls.data.getLanguagesByScriptGroupInRegions = function( regions ) {
|
||||
var languagesByScriptGroupInRegions = {};
|
||||
|
||||
for ( var language in $.uls.data.languages ) {
|
||||
for ( var i = 0; i < regions.length; i++ ) {
|
||||
if ( $.inArray( regions[i], $.uls.data.regions( language ) ) !== -1 ) {
|
||||
var scriptGroup = $.uls.data.scriptGroupOfLanguage( language );
|
||||
if ( $.inArray( regions[i], $.uls.data.getRegions( language ) ) !== -1 ) {
|
||||
var scriptGroup = $.uls.data.getScriptGroupOfLanguage( language );
|
||||
if ( languagesByScriptGroupInRegions[scriptGroup] === undefined ) {
|
||||
languagesByScriptGroupInRegions[scriptGroup] = [];
|
||||
}
|
||||
@@ -235,12 +314,17 @@
|
||||
return languagesByScriptGroupInRegions;
|
||||
};
|
||||
|
||||
$.uls.data.languagesByScriptGroupInRegions = function( regions ) { // deprecated
|
||||
deprecated( "languagesByScriptGroupInRegions", "getLanguagesByScriptGroupInRegions" );
|
||||
return $.uls.data.getLanguagesByScriptGroupInRegions( regions );
|
||||
};
|
||||
|
||||
/**
|
||||
* Returns an array of languages grouped by region group,
|
||||
* region, script group and script.
|
||||
* @return associative array
|
||||
*/
|
||||
$.uls.data.allLanguagesByRegionAndScript = function() {
|
||||
$.uls.data.getAllLanguagesByRegionAndScript = function() {
|
||||
var allLanguagesByRegionAndScript = {},
|
||||
region,
|
||||
regionGroup;
|
||||
@@ -254,9 +338,9 @@
|
||||
}
|
||||
|
||||
for ( var language in $.uls.data.languages ) {
|
||||
var script = $.uls.data.script( language );
|
||||
var scriptGroup = $.uls.data.groupOfScript( script );
|
||||
var regions = $.uls.data.regions( language );
|
||||
var script = $.uls.data.getScript( language );
|
||||
var scriptGroup = $.uls.data.getGroupOfScript( script );
|
||||
var regions = $.uls.data.getRegions( language );
|
||||
|
||||
for ( var regionNum = 0; regionNum < regions.length; regionNum++ ) {
|
||||
region = regions[regionNum];
|
||||
@@ -277,12 +361,17 @@
|
||||
return allLanguagesByRegionAndScript;
|
||||
};
|
||||
|
||||
$.uls.data.allLanguagesByRegionAndScript = function() { // deprecated
|
||||
deprecated( "allLanguagesByRegionAndScript", "getAllLanguagesByRegionAndScript" );
|
||||
return $.uls.data.getAllLanguagesByRegionAndScript();
|
||||
};
|
||||
|
||||
/**
|
||||
* Returns all regions in a region group.
|
||||
* @param number groupNum
|
||||
* @return array of strings
|
||||
*/
|
||||
$.uls.data.regionsInGroup = function( groupNum ) {
|
||||
$.uls.data.getRegionsInGroup = function( groupNum ) {
|
||||
var regionsInGroup = [];
|
||||
|
||||
for ( var region in $.uls.data.regiongroups ) {
|
||||
@@ -294,13 +383,18 @@
|
||||
return regionsInGroup;
|
||||
};
|
||||
|
||||
$.uls.data.regionsInGroup = function( groupNum ) { // deprecated
|
||||
deprecated( "regionsInGroup", "getRegionsInGroup" );
|
||||
return $.uls.data.getRegionsInGroup( groupNum );
|
||||
};
|
||||
|
||||
/**
|
||||
* Returns the script group of a script or 'Other' if it doesn't
|
||||
* belong to any group.
|
||||
* @param string script code
|
||||
* @return string script group name
|
||||
*/
|
||||
$.uls.data.groupOfScript = function( script ) {
|
||||
$.uls.data.getGroupOfScript = function( script ) {
|
||||
for ( var group in $.uls.data.scriptgroups ) {
|
||||
if ( $.inArray( script, $.uls.data.scriptgroups[group] ) !== -1 ) {
|
||||
return group;
|
||||
@@ -310,13 +404,23 @@
|
||||
return 'Other';
|
||||
};
|
||||
|
||||
$.uls.data.groupOfScript = function( script ) { // deprecated
|
||||
deprecated( "groupOfScript", "getGroupOfScript" );
|
||||
return $.uls.data.getGroupOfScript( script );
|
||||
};
|
||||
|
||||
/**
|
||||
* Returns the script group of a language.
|
||||
* @param string language code
|
||||
* @return string script group name
|
||||
*/
|
||||
$.uls.data.scriptGroupOfLanguage = function( language ) {
|
||||
return $.uls.data.groupOfScript( $.uls.data.script( language ) );
|
||||
$.uls.data.getScriptGroupOfLanguage = function( language ) {
|
||||
return $.uls.data.getGroupOfScript( $.uls.data.getScript( language ) );
|
||||
};
|
||||
|
||||
$.uls.data.scriptGroupOfLanguage = function( language ) { // deprecated
|
||||
deprecated( "scriptGroupOfLanguage", "getScriptGroupOfLanguage" );
|
||||
return $.uls.data.getScriptGroupOfLanguage( language );
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -325,8 +429,8 @@
|
||||
* @param two language codes
|
||||
*/
|
||||
$.uls.data.sortByAutonym = function( a, b ) {
|
||||
var autonymA = $.uls.data.autonym( a ) || a,
|
||||
autonymB = $.uls.data.autonym( b ) || b;
|
||||
var autonymA = $.uls.data.getAutonym( a ) || a,
|
||||
autonymB = $.uls.data.getAutonym( b ) || b;
|
||||
return ( autonymA.toLowerCase() < autonymB.toLowerCase() ) ? -1 : 1;
|
||||
};
|
||||
|
||||
@@ -336,7 +440,7 @@
|
||||
* @return boolean
|
||||
*/
|
||||
$.uls.data.isRtl = function( language ) {
|
||||
return $.inArray( $.uls.data.script( language ), $.uls.data.rtlscripts ) !== -1;
|
||||
return $.inArray( $.uls.data.getScript( language ), $.uls.data.rtlscripts ) !== -1;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -353,7 +457,12 @@
|
||||
* @param string Territory code
|
||||
* @return list of language codes
|
||||
*/
|
||||
$.uls.data.languagesInTerritory = function( territory ) {
|
||||
$.uls.data.getLanguagesInTerritory = function( territory ) {
|
||||
return $.uls.data.territories[territory];
|
||||
};
|
||||
|
||||
$.uls.data.languagesInTerritory = function( territory ) { // deprecated
|
||||
deprecated( "languagesInTerritory", "getLanguagesInTerritory" );
|
||||
return $.uls.data.getLanguagesInTerritory( territory );
|
||||
};
|
||||
} ( jQuery ) );
|
||||
|
||||
@@ -135,7 +135,7 @@
|
||||
|
||||
search: function() {
|
||||
var query = $.trim( this.$element.val() ),
|
||||
languages = $.uls.data.languagesByScriptGroup( this.options.languages ),
|
||||
languages = $.uls.data.getLanguagesByScriptGroup( this.options.languages ),
|
||||
scriptGroup, langNum, langCode;
|
||||
this.resultCount = 0;
|
||||
for ( scriptGroup in languages ) {
|
||||
@@ -208,7 +208,7 @@
|
||||
suggestion = userInput + languageName.substring( userInput.length, languageName.length );
|
||||
if ( suggestion.toLowerCase() !== languageName.toLowerCase() ) {
|
||||
// see if it was autonym match
|
||||
autonym = $.uls.data.autonym( langCode ) || '';
|
||||
autonym = $.uls.data.getAutonym( langCode ) || '';
|
||||
suggestion = userInput + autonym.substring( userInput.length, autonym.length );
|
||||
if ( suggestion !== autonym ) {
|
||||
// Give up. It may be iso/script code match.
|
||||
@@ -247,9 +247,9 @@
|
||||
var matcher = new RegExp( "^" + this.escapeRegex( searchTerm ), 'i' ),
|
||||
languageName = this.options.languages[langCode];
|
||||
return matcher.test( languageName ) ||
|
||||
matcher.test( $.uls.data.autonym( langCode ) ) ||
|
||||
matcher.test( $.uls.data.getAutonym( langCode ) ) ||
|
||||
matcher.test( langCode ) ||
|
||||
matcher.test( $.uls.data.script( langCode ) );
|
||||
matcher.test( $.uls.data.getScript( langCode ) );
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
@@ -74,13 +74,13 @@
|
||||
addToRegion: function( langCode, region ) {
|
||||
var that = this;
|
||||
var language = that.options.languages[langCode],
|
||||
langName = $.uls.data.autonym( langCode ) || language || langCode,
|
||||
langName = $.uls.data.getAutonym( langCode ) || language || langCode,
|
||||
regions = [];
|
||||
|
||||
if ( region ) {
|
||||
regions.push( region );
|
||||
} else {
|
||||
regions = $.uls.data.regions( langCode );
|
||||
regions = $.uls.data.getRegions( langCode );
|
||||
}
|
||||
|
||||
// World wide languages need not be repeated in all regions.
|
||||
@@ -106,8 +106,8 @@
|
||||
var lastLanguage = $column.find( 'li:last' ).data( 'code' );
|
||||
|
||||
if ( lastLanguage ) {
|
||||
var lastScriptGroup = $.uls.data.scriptGroupOfLanguage( lastLanguage ),
|
||||
currentScriptGroup = $.uls.data.scriptGroupOfLanguage( langCode );
|
||||
var lastScriptGroup = $.uls.data.getScriptGroupOfLanguage( lastLanguage ),
|
||||
currentScriptGroup = $.uls.data.getScriptGroupOfLanguage( langCode );
|
||||
|
||||
if ( lastScriptGroup !== currentScriptGroup ) {
|
||||
if ( $column.find( 'li' ).length > 2 ) {
|
||||
@@ -206,7 +206,7 @@
|
||||
var $column = this.getColumn( 'quick', i % 4 === 0 );
|
||||
var langCode = quickList[i];
|
||||
var language = this.options.languages[langCode];
|
||||
var langName = $.uls.data.autonym( langCode ) || language || langCode;
|
||||
var langName = $.uls.data.getAutonym( langCode ) || language || langCode;
|
||||
var $li = $( '<li>' )
|
||||
.data( 'code', langCode )
|
||||
.attr( {
|
||||
@@ -249,37 +249,42 @@
|
||||
},
|
||||
|
||||
listen: function () {
|
||||
var that = this;
|
||||
var lcd = this;
|
||||
|
||||
if ( this.options.clickhandler ) {
|
||||
this.$element.on( 'click', 'div.row li', function() {
|
||||
that.options.clickhandler.call( this, $( this ).data( 'code' ) );
|
||||
lcd.options.clickhandler.call( this, $( this ).data( 'code' ) );
|
||||
} );
|
||||
}
|
||||
|
||||
// The region section need to be in sync with the map filter.
|
||||
that.$element.scroll( function () {
|
||||
var scrollTop = $( this ).position().top;
|
||||
var scrollBottom = $( this ).height();
|
||||
if ( this.offsetHeight + this.scrollTop >= this.scrollHeight/2 ) {
|
||||
that.$element.trigger( 'scrollend' );
|
||||
lcd.$element.scroll( function () {
|
||||
var $ulsLanguageList = $( this ),
|
||||
scrollTop = $ulsLanguageList.position().top,
|
||||
scrollBottom = $ulsLanguageList.height();
|
||||
|
||||
if ( this.offsetHeight + this.scrollTop >= this.scrollHeight / 2 ) {
|
||||
lcd.$element.trigger( 'scrollend' );
|
||||
}
|
||||
|
||||
// The region section need to be in sync with the map filter.
|
||||
var inviewRegion = 'WW';
|
||||
that.$element.find( 'div.uls-lcd-region-section' ).each( function () {
|
||||
var top = $( this ).position().top;
|
||||
var height = $( this ).height();
|
||||
lcd.$element.find( 'div.uls-lcd-region-section' ).each( function () {
|
||||
var $lcdRegionSection = $( this ),
|
||||
top = $lcdRegionSection.position().top,
|
||||
height = $lcdRegionSection.height();
|
||||
|
||||
if ( top < scrollTop && height > scrollBottom ) {
|
||||
inviewRegion = $( this ).attr( 'id' );
|
||||
inviewRegion = $lcdRegionSection.attr( 'id' );
|
||||
return true;
|
||||
}
|
||||
} );
|
||||
|
||||
var inview = $.uls.data.regiongroups[inviewRegion];
|
||||
$( '.regionselector' ).removeClass( 'active' );
|
||||
$( '#uls-region-' + inview ).addClass( 'active' );
|
||||
} );
|
||||
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
$.fn.lcd = function( option ) {
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
* @licence MIT License
|
||||
*/
|
||||
|
||||
(function ( $ ) {
|
||||
( function ( $ ) {
|
||||
"use strict";
|
||||
|
||||
/* RegionSelector plugin definition */
|
||||
@@ -44,14 +44,14 @@
|
||||
|
||||
init: function() {
|
||||
var region = this.$element.data( 'region' );
|
||||
this.regions = $.uls.data.regionsInGroup( this.regionGroup );
|
||||
this.regions = $.uls.data.getRegionsInGroup( this.regionGroup );
|
||||
if ( region ) {
|
||||
this.regions.push( region );
|
||||
}
|
||||
},
|
||||
|
||||
test: function( langCode ) {
|
||||
var langRegions = $.uls.data.regions( langCode ),
|
||||
var langRegions = $.uls.data.getRegions( langCode ),
|
||||
region;
|
||||
|
||||
for ( var i = 0; i < this.regions.length; i++ ) {
|
||||
@@ -74,7 +74,7 @@
|
||||
} else {
|
||||
this.cache = {};
|
||||
// Get the languages grouped by script group
|
||||
var languagesByScriptGroup = $.uls.data.languagesByScriptGroup( this.options.languages );
|
||||
var languagesByScriptGroup = $.uls.data.getLanguagesByScriptGroup( this.options.languages );
|
||||
for ( var scriptGroup in languagesByScriptGroup ) {
|
||||
// Get the languages for the script group
|
||||
var languages = languagesByScriptGroup[scriptGroup];
|
||||
@@ -125,12 +125,11 @@
|
||||
},
|
||||
|
||||
click: function( e ) {
|
||||
// Don't do anything if a region is selected already
|
||||
if( this.$element.hasClass( 'active' ) ) {
|
||||
this.$element.removeClass( 'active' );
|
||||
if ( this.options.noresults ) {
|
||||
this.options.noresults.call();
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
|
||||
// Re-populate the list of languages
|
||||
this.options.$target.empty();
|
||||
this.show();
|
||||
@@ -141,7 +140,6 @@
|
||||
this.$element.addClass( 'active' );
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/* RegionSelector plugin definition */
|
||||
|
||||
@@ -25,8 +25,8 @@
|
||||
var result = [];
|
||||
|
||||
for ( var language in $.uls.data.languages ) {
|
||||
var script = $.uls.data.script( language );
|
||||
if ( $.uls.data.groupOfScript( script ) === 'Other' ) {
|
||||
var script = $.uls.data.getScript( language );
|
||||
if ( $.uls.data.getGroupOfScript( script ) === 'Other' ) {
|
||||
result.push( script );
|
||||
}
|
||||
}
|
||||
@@ -42,7 +42,7 @@
|
||||
var result = [];
|
||||
|
||||
for ( var language in $.uls.data.languages ) {
|
||||
if ( typeof $.uls.data.autonym( language ) !== 'string' ) {
|
||||
if ( typeof $.uls.data.getAutonym( language ) !== 'string' ) {
|
||||
result.push( language );
|
||||
}
|
||||
}
|
||||
@@ -56,7 +56,7 @@
|
||||
|
||||
test( "-- $.uls.data testing", 27, function ( assert ) {
|
||||
|
||||
assert.strictEqual( $.uls.data.autonyms()['he'], 'עברית', 'Correct autonym is returned for Hebrew using autonyms().' );
|
||||
assert.strictEqual( $.uls.data.getAutonyms()['he'], 'עברית', 'Correct autonym is returned for Hebrew using getAutonyms().' );
|
||||
|
||||
// This test assumes that we don't want any scripts to be in the 'Other'
|
||||
// group. Actually, this may become wrong some day.
|
||||
@@ -64,35 +64,35 @@
|
||||
assert.deepEqual( languagesWithoutAutonym(), [], 'All languages have autonyms.' );
|
||||
|
||||
assert.strictEqual(
|
||||
$.uls.data.groupOfScript( 'Beng' ),
|
||||
$.uls.data.getGroupOfScript( 'Beng' ),
|
||||
'SouthAsian',
|
||||
'Bengali script belongs to the SouthAsian group.'
|
||||
);
|
||||
assert.strictEqual(
|
||||
$.uls.data.scriptGroupOfLanguage( 'iu' ),
|
||||
$.uls.data.getScriptGroupOfLanguage( 'iu' ),
|
||||
'NativeAmerican',
|
||||
'The script of the Inupiaq language belongs to the NativeAmerican group.'
|
||||
);
|
||||
|
||||
assert.strictEqual( $.uls.data.script( 'ii' ), 'Yiii', 'Correct script of the Yi language was selected' );
|
||||
assert.deepEqual( $.uls.data.regions( 'lzz' ), [
|
||||
assert.strictEqual( $.uls.data.getScript( 'ii' ), 'Yiii', 'Correct script of the Yi language was selected' );
|
||||
assert.deepEqual( $.uls.data.getRegions( 'lzz' ), [
|
||||
'EU', 'ME'
|
||||
], 'Correct regions of the Laz language were selected' );
|
||||
assert.strictEqual( $.uls.data.regions( 'no-such-language' ), 'UNKNOWN', "The region of an invalid language is 'UNKNOWN'" );
|
||||
assert.strictEqual( $.uls.data.getRegions( 'no-such-language' ), 'UNKNOWN', "The region of an invalid language is 'UNKNOWN'" );
|
||||
|
||||
var allLanguagesByRegionAndScript = $.uls.data.allLanguagesByRegionAndScript();
|
||||
var allLanguagesByRegionAndScript = $.uls.data.getAllLanguagesByRegionAndScript();
|
||||
assert.deepEqual( allLanguagesByRegionAndScript['4']['AS']['SouthEastAsian']['Bugi'], [
|
||||
'bug'
|
||||
], 'All languages in the Buginese script in Asia were selected' );
|
||||
|
||||
assert.deepEqual( $.uls.data.languagesInRegion( "PA" ),
|
||||
assert.deepEqual( $.uls.data.getLanguagesInRegion( "PA" ),
|
||||
[
|
||||
"ace", "bi", "ch", "en-gb", "en", "fj", "haw", "hif-latn", "hif", "ho", "jv",
|
||||
"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.languagesInRegions( ["AM", "WW"] ),
|
||||
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",
|
||||
@@ -104,42 +104,42 @@
|
||||
"languages of regions AM and WW are selected correctly"
|
||||
);
|
||||
|
||||
assert.deepEqual( $.uls.data.languagesInScript( 'Knda' ), [
|
||||
assert.deepEqual( $.uls.data.getLanguagesInScript( 'Knda' ), [
|
||||
"kn", "tcy"
|
||||
], "languages in script Knda are selected correctly" );
|
||||
assert.deepEqual( $.uls.data.languagesInScripts( ['Geor', 'Armn'] ),
|
||||
assert.deepEqual( $.uls.data.getLanguagesInScripts( ['Geor', 'Armn'] ),
|
||||
["hy", "ka", "xmf"],
|
||||
"languages in scripts Geor and Armn are selected correctly"
|
||||
);
|
||||
|
||||
assert.deepEqual( $.uls.data.regionsInGroup( 3 ), [
|
||||
assert.deepEqual( $.uls.data.getRegionsInGroup( 3 ), [
|
||||
"EU", "ME", "AF"
|
||||
], "regions in group 3 are selected correctly" );
|
||||
assert.deepEqual( $.uls.data.regionsInGroup( 2 ), [
|
||||
assert.deepEqual( $.uls.data.getRegionsInGroup( 2 ), [
|
||||
"AM"
|
||||
], "regions in group 2 are selected correctly" );
|
||||
assert.deepEqual( $.uls.data.regionsInGroup( 1 ), [
|
||||
assert.deepEqual( $.uls.data.getRegionsInGroup( 1 ), [
|
||||
"WW"
|
||||
], "regions in group 1 are selected correctly" );
|
||||
|
||||
var languagesByScriptInAM = $.uls.data.languagesByScriptInRegion( "AM" );
|
||||
var languagesByScriptInAM = $.uls.data.getLanguagesByScriptInRegion( "AM" );
|
||||
assert.deepEqual( languagesByScriptInAM['Cans'], [
|
||||
"cr-cans", "cr", "ike-cans", "iu"
|
||||
], "correct languages in Cans in AM selected" );
|
||||
|
||||
assert.strictEqual( $.uls.data.autonym( 'pa' ), 'ਪੰਜਾਬੀ', 'Correct autonym of the Punjabi language was selected' );
|
||||
assert.strictEqual( $.uls.data.getAutonym( 'pa' ), 'ਪੰਜਾਬੀ', 'Correct autonym of the Punjabi language was selected' );
|
||||
|
||||
var languagesByScriptGroupInEMEA = $.uls.data.languagesByScriptGroupInRegions( $.uls.data.regionsInGroup( 3 ) );
|
||||
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' );
|
||||
|
||||
var allLanguagesByScriptGroup = $.uls.data.allLanguagesByScriptGroup();
|
||||
var allLanguagesByScriptGroup = $.uls.data.getAllLanguagesByScriptGroup();
|
||||
assert.deepEqual( allLanguagesByScriptGroup['Greek'], [
|
||||
'el', 'grc', 'pnt', 'ruq-grek', 'tsd'
|
||||
], 'All languages in the Greek script found' );
|
||||
|
||||
assert.deepEqual( $.uls.data.allRegions(), [
|
||||
assert.deepEqual( $.uls.data.getAllRegions(), [
|
||||
"WW", "AM", "EU", "ME", "AF", "AS", "PA"
|
||||
], "All regions found" );
|
||||
|
||||
@@ -153,7 +153,7 @@
|
||||
assert.strictEqual( $.uls.data.getDir( "mzn" ), "rtl", "Mazandarani language is RTL" );
|
||||
assert.strictEqual( $.uls.data.getDir( "uk" ), "ltr", "Ukrainian language is LTR" );
|
||||
|
||||
assert.ok( $.inArray( "sah", $.uls.data.languagesInTerritory( "RU" ) )
|
||||
assert.ok( $.inArray( "sah", $.uls.data.getLanguagesInTerritory( "RU" ) )
|
||||
> -1, "Sakha language is spoken in Russia" );
|
||||
} );
|
||||
|
||||
|
||||
Reference in New Issue
Block a user