Update jquery.i18n from upstream

Change-Id: Id533eb69c2c192f2cb42749214e5bb23d379e404
This commit is contained in:
Santhosh Thottingal
2012-11-01 16:34:23 +05:30
committed by Gerrit Code Review
parent ef8bad5754
commit 63d98b05ea
2 changed files with 77 additions and 24 deletions

View File

@@ -49,7 +49,7 @@
// Override String.localeString method // Override String.localeString method
String.prototype.toLocaleString = function () { String.prototype.toLocaleString = function () {
var localeParts, messages, localePartIndex, value, locale, fallbackIndex; var localeParts, messageLocation, localePartIndex, value, locale, fallbackIndex;
value = this.valueOf(); value = this.valueOf();
locale = i18n.locale; locale = i18n.locale;
@@ -64,22 +64,25 @@
do { do {
var _locale = localeParts.slice( 0, localePartIndex ).join( "-" ); var _locale = localeParts.slice( 0, localePartIndex ).join( "-" );
if ( !i18n.messageStore.messages[_locale] && i18n.options.messageLocationResolver ) { if ( i18n.options.messageLocationResolver ) {
messages = i18n.options.messageLocationResolver( _locale, value ); messageLocation = i18n.options.messageLocationResolver( _locale, value );
if ( messages ) { if ( messageLocation
i18n.messageStore.load( messages, _locale ); && ( !i18n.messageStore.isLoaded(_locale ,messageLocation ) ) )
{
i18n.messageStore.load( messageLocation, _locale );
} }
} }
var message = i18n.messageStore.get( _locale, value ); var message = i18n.messageStore.get( _locale, value );
if ( message ) { if ( message ) {
return message; return message;
} }
localePartIndex--; localePartIndex--;
} while (localePartIndex); } while (localePartIndex);
if ( locale === "en" ) { if ( locale === 'en' ) {
break; break;
} }
@@ -294,10 +297,8 @@
messageStore.load( $link.attr( "href" ) ); messageStore.load( $link.attr( "href" ) );
} else if ( $.inArray( "localization", rel ) !== -1 ) { } else if ( $.inArray( "localization", rel ) !== -1 ) {
// single localization // single localization
var localization = {}; messageStore.queue( ( $link.attr( "hreflang" ) || "" )
localization[ ( $link.attr( "hreflang" ) || "" ).toLowerCase()] = $link .toLowerCase(), $link.attr( "href" ) );
.attr( "href" );
messageStore.load( localization );
} }
} }
}, },
@@ -332,7 +333,7 @@
messageStore.messages = {}; messageStore.messages = {};
return; return;
} }
/*
// Only process this data load if the locale is our current // Only process this data load if the locale is our current
// locale. Otherwise, put in the source queue for later. // locale. Otherwise, put in the source queue for later.
if ( locale && messageStore.locale !== locale ) { if ( locale && messageStore.locale !== locale ) {
@@ -340,17 +341,16 @@
if ( ! ( locale in messageStore.sources ) ) { if ( ! ( locale in messageStore.sources ) ) {
messageStore.sources[locale] = []; messageStore.sources[locale] = [];
} }
messageStore.log( "Queueing: " + locale + " Current locale " + messageStore.locale ); this.queue( locale, data );
messageStore.sources[locale].push( data );
return; return;
} }*/
if ( typeof data === 'string' ) { if ( typeof data === 'string' ) {
// This is a URL to the messages file. // This is a URL to the messages file.
messageStore.log( "Loading messages from: " + data ); messageStore.log( "Loading messages from: " + data );
messageStore.jsonMessageLoader( data ).done( function ( localization, textStatus ) { messageStore.jsonMessageLoader( data ).done( function ( localization, textStatus ) {
messageStore.load( localization, locale ); messageStore.load( localization, locale );
delete messageStore.sources[locale]; messageStore.markLoaded( locale, data );
} ); } );
} else { } else {
// Data is either a group of messages for {locale}, // Data is either a group of messages for {locale},
@@ -387,6 +387,43 @@
} }
}, },
markLoaded: function ( locale, messageLocation ) {
var i, queue = this.sources[locale];
if ( !queue ) {
this.queue( locale, messageLocation );
queue = this.sources[locale];
}
this.sources[locale] = this.sources[locale] || [];
for (i = 0; i < queue.length; i++) {
if ( queue[i].source.url === messageLocation ) {
queue[i].source.loaded = true;
return;
}
}
},
queue: function ( locale, messageLocation ) {
var i,
queue = this.sources[locale];
this.sources[locale] = this.sources[locale] || [];
if ( queue ) {
for (i = 0; i < queue.length; i++) {
if ( queue[i].source.url === messageLocation ) {
return;
}
}
}
this.log( 'Source for: ' + locale + ' : ' + messageLocation + ' registered' );
this.sources[locale].push( {
source: {
url: messageLocation,
loaded: false
}
} );
},
/** /**
* Load the messages from the source queue for the locale * Load the messages from the source queue for the locale
* *
@@ -395,10 +432,29 @@
loadFromQueue: function ( locale ) { loadFromQueue: function ( locale ) {
var i, var i,
queue = this.sources[locale]; queue = this.sources[locale];
for ( i = 0; i < queue.length; i++ ) {
this.load( queue[i], locale );
if ( queue ) {
for (i = 0; i < queue.length; i++) {
if ( !queue[i].source.loaded ) {
this.load( queue[i].source.url, locale );
this.sources[locale][i].source.loaded = true;
} }
delete this.sources[locale]; }
}
},
isLoaded: function ( locale, messageLocation ) {
var i, sources = this.sources[locale], result = false;
if ( sources ) {
for (i = 0; i < sources.length; i++) {
if ( sources[i].source.url === messageLocation ) {
result = true;
}
}
}
return result;
}, },
jsonMessageLoader: function ( url ) { jsonMessageLoader: function ( url ) {
@@ -421,9 +477,7 @@
*/ */
get: function ( locale, messageKey ) { get: function ( locale, messageKey ) {
// load locale if not loaded // load locale if not loaded
if ( this.sources[locale] ) { if ( !this.messages[locale] ) {
// We need to switch to this locale
this.locale = locale;
this.loadFromQueue( locale ); this.loadFromQueue( locale );
} }
return this.messages[locale] && this.messages[locale][messageKey]; return this.messages[locale] && this.messages[locale][messageKey];
@@ -1688,7 +1742,8 @@
*/ */
digitTransformTable: function ( language ) { digitTransformTable: function ( language ) {
var tables = { var tables = {
ar: '۰۱۲۳۴۵۶۷۸۹', ar: '٠١٢٣٤٥٦٧٨٩',
fa: '۰۱۲۳۴۵۶۷۸۹',
ml: '൦൧൨൩൪൫൬൭൮൯', ml: '൦൧൨൩൪൫൬൭൮൯',
kn: '೦೧೨೩೪೫೬೭೮೯', kn: '೦೧೨೩೪೫೬೭೮೯',
lo: '໐໑໒໓໔໕໖໗໘໙', lo: '໐໑໒໓໔໕໖໗໘໙',

View File

@@ -124,8 +124,6 @@
} }
} ); } );
// localization for mediaWiki ULS - fallback locale
i18n.load( extensionPath + 'i18n/en.json', 'en' );
} }
$( document ).ready( function () { $( document ).ready( function () {