Merge "Update jquery.i18n from upstream"

This commit is contained in:
Siebrand
2012-11-01 12:00:16 +00:00
committed by Gerrit Code Review
2 changed files with 77 additions and 24 deletions

View File

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

View File

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