Santhosh has uploaded a new change for review. https://gerrit.wikimedia.org/r/71990
Change subject: jquery.i18n messagestore for ULS ...................................................................... jquery.i18n messagestore for ULS Change-Id: Iddef0805abbf9b4ff0e606fc311c57e9dfa7107d --- M resources/js/ext.uls.displaysettings.js M resources/js/ext.uls.init.js 2 files changed, 58 insertions(+), 18 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/UniversalLanguageSelector refs/changes/90/71990/1 diff --git a/resources/js/ext.uls.displaysettings.js b/resources/js/ext.uls.displaysettings.js index 7de1345..a639288 100644 --- a/resources/js/ext.uls.displaysettings.js +++ b/resources/js/ext.uls.displaysettings.js @@ -196,6 +196,8 @@ function buttonHandler( button ) { return function () { + var i18n; + displaySettings.enableApplyButton(); displaySettings.uiLanguage = button.data( 'language' ) || displaySettings.uiLanguage; $( 'div.uls-ui-languages button.button' ).removeClass( 'down' ); @@ -204,8 +206,11 @@ // set the language for the settings panel so that webfonts // are correctly applied. displaySettings.$template.attr( 'lang', displaySettings.uiLanguage ); - $.i18n().locale = displaySettings.uiLanguage; - displaySettings.i18n(); + i18n = $.i18n(); + i18n.locale = displaySettings.uiLanguage; + i18n.messageStore.load( i18n.locale, function() { + displaySettings.i18n(); + } ) ; }; } diff --git a/resources/js/ext.uls.init.js b/resources/js/ext.uls.init.js index dee92b8..2a1a010 100644 --- a/resources/js/ext.uls.init.js +++ b/resources/js/ext.uls.init.js @@ -32,6 +32,7 @@ }; var initialized = false, + MWMessageStore, currentLang = mw.config.get( 'wgUserLanguage' ); mw.uls = mw.uls || {}; mw.uls.previousLanguagesCookie = 'uls-previous-languages'; @@ -115,7 +116,7 @@ function isBrowserSupported() { // Blacklist Grade B browsers IE 6, 7 and IE60-IE79 return !/MSIE [67]/i.test( navigator.userAgent ); - }; + } /** * Local wrapper for 'mw.eventLog.logEvent' which handles default params @@ -145,28 +146,57 @@ } /** - * i18n initialization + * jquery.i18n message store for MediaWiki + * */ - function i18nInit() { - var jsonLoader = mw.util.wikiScript( 'api' ) + '?action=ulslocalization&language='; + MWMessageStore = function () { + this.messages = {}; + }; - $.i18n( { - locale: currentLang, - messageLocationResolver: function ( locale ) { - return jsonLoader + locale; + MWMessageStore.prototype = { + init: function () {}, + get: function ( locale, messageKey ) { + return ( this.isLoaded( locale ) + && this.messages[locale][messageKey] ) + || '<' + messageKey + '>'; + }, + set: function( locale, messages ) { + this.messages[locale] = messages; + }, + isLoaded:function ( locale ) { + if ( this.messages[locale] ) { + return true; } - } ) - // Preload i18n for current language. - .load( jsonLoader + currentLang, currentLang ); - } + return false; + }, + load: function( locale, callback ) { + var store = this, + url = mw.util.wikiScript( 'api' ) + '?action=ulslocalization&language='; - mw.uls.init = function( callback ) { + callback = callback || $.noop; + if ( store.isLoaded( locale ) ) { + callback.call( this ); + return; + } + $.getJSON( url + locale ).done( function ( data ) { + store.set( locale, data); + callback.call( store ); + } ).fail( function ( jqxhr, settings, exception ) { + mw.log( 'Error in loading messages from ' + url + ' Exception: ' + exception ); + } ); + } + }; + + mw.uls.init = function ( callback ) { + var messageStore = new MWMessageStore(); + callback = callback || $.noop; if ( initialized ) { callback.call( this, false ); return; } + if ( !isBrowserSupported() ) { $( '#pt-uls' ).hide(); return; @@ -183,10 +213,15 @@ $.uls.data.addLanguage( 'als', { target: 'gsw' } ); // JavaScript side i18n initialization - i18nInit(); + $.i18n( { + locale: currentLang, + messageStore: messageStore + } ); initialized = true; - callback.call( this, true ); - } + messageStore.load( currentLang, function () { + callback.call( this, true ); + } ); + }; $( document ).ready( function () { mw.uls.init(); -- To view, visit https://gerrit.wikimedia.org/r/71990 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Iddef0805abbf9b4ff0e606fc311c57e9dfa7107d Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/UniversalLanguageSelector Gerrit-Branch: master Gerrit-Owner: Santhosh <santhosh.thottin...@gmail.com> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits