jenkins-bot has submitted this change and it was merged.

Change subject: Allow loading redirects in Common languages
......................................................................


Allow loading redirects in Common languages

Bug: 49847
Change-Id: Ia2380a77ebad789a2f70a7a88a1bb9970199b1c5
---
M resources/js/ext.uls.init.js
M tests/qunit/ext.uls.tests.js
2 files changed, 55 insertions(+), 5 deletions(-)

Approvals:
  Nikerabbit: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/resources/js/ext.uls.init.js b/resources/js/ext.uls.init.js
index 083711f..3c5f389 100644
--- a/resources/js/ext.uls.init.js
+++ b/resources/js/ext.uls.init.js
@@ -75,9 +75,20 @@
                return mw.config.get( 'wgULSAcceptLanguageList' );
        };
 
-       mw.uls.getFrequentLanguageList = function () {
-               var countryCode,
-                       unique = [],
+       /**
+        * Get a list of codes for languages to show in
+        * the "Common languages" section of the ULS.
+        * The list consists of the user's current selected language,
+        * the wiki's content language, the browser' UI language
+        * and Accept-Language, user's previous selected languages
+        * and finally, the languages of countryCode taken from the CLDR,
+        * taken by default from the user's geolocation.
+        *
+        * @param {String} [countryCode] Uppercase country code.
+        * @return {Array} List of language codes without duplicates.
+        */
+       mw.uls.getFrequentLanguageList = function ( countryCode ) {
+               var unique = [],
                        list = [
                                mw.config.get( 'wgUserLanguage' ),
                                mw.config.get( 'wgContentLanguage' ),
@@ -86,7 +97,7 @@
                                .concat( mw.uls.getPreviousLanguages() )
                                .concat( mw.uls.getAcceptLanguageList() );
 
-               countryCode = mw.uls.getCountryCode();
+               countryCode = countryCode || mw.uls.getCountryCode();
 
                if ( countryCode ) {
                        list = list.concat( $.uls.data.getLanguagesInTerritory( 
countryCode ) );
@@ -100,7 +111,24 @@
 
                // Filter out unknown and unsupported languages
                unique = $.grep( unique, function ( langCode ) {
-                       return $.fn.uls.defaults.languages[langCode];
+                       var target;
+
+                       // If the language is already known and defined, just 
use it
+                       if ( $.fn.uls.defaults.languages[langCode] !== 
undefined ) {
+                               return true;
+                       }
+
+                       // If the language is not immediately known,
+                       // try to check is as a redirect
+                       target = $.uls.data.isRedirect( langCode );
+
+                       if ( target ) {
+                               // Check that the redirect's target is known
+                               // to this instance of ULS
+                               return $.fn.uls.defaults.languages[target] !== 
undefined;
+                       }
+
+                       return false;
                } );
 
                return unique;
diff --git a/tests/qunit/ext.uls.tests.js b/tests/qunit/ext.uls.tests.js
index ffb6974..4d9d211 100644
--- a/tests/qunit/ext.uls.tests.js
+++ b/tests/qunit/ext.uls.tests.js
@@ -63,4 +63,26 @@
                prefs.set( prefName, undefined );
                prefs.save();
        } );
+
+       QUnit.test( '-- Common languages', 1, function ( assert ) {
+               var i, foundTagalog, languagesInPH;
+
+               // Bug 49847
+               foundTagalog = false;
+               languagesInPH = mw.uls.getFrequentLanguageList( 'PH' );
+
+               for ( i = 0; i < languagesInPH.length; i++ ) {
+                       if ( $.uls.data.isRedirect( languagesInPH[i] ) === 'tl' 
||
+                               languagesInPH[i] === 'tl'
+                       ) {
+                               foundTagalog = true;
+
+                               break;
+                       }
+               }
+               assert.ok(
+                       foundTagalog,
+                       'Tagalog is one of the languages presented to users in 
the Philippines.'
+               );
+       } );
 }( jQuery, mediaWiki ) );

-- 
To view, visit https://gerrit.wikimedia.org/r/69613
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Ia2380a77ebad789a2f70a7a88a1bb9970199b1c5
Gerrit-PatchSet: 7
Gerrit-Project: mediawiki/extensions/UniversalLanguageSelector
Gerrit-Branch: master
Gerrit-Owner: Amire80 <amir.ahar...@mail.huji.ac.il>
Gerrit-Reviewer: Nikerabbit <niklas.laxst...@gmail.com>
Gerrit-Reviewer: Santhosh <santhosh.thottin...@gmail.com>
Gerrit-Reviewer: jenkins-bot

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to