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