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

Reply via email to