From: jenkins-bot Date: Mon, 23 Jul 2018 17:22:32 +0000 (+0000) Subject: Merge "Revert "Accept BCP 47 codes as aliases for nonstandard variants"" X-Git-Tag: 1.34.0-rc.0~4680 X-Git-Url: https://git.heureux-cyclage.org/?p=lhc%2Fweb%2Fwiklou.git;a=commitdiff_plain;h=401e9b849acad8144105816b726b1ba0ab7888ff;hp=96048d6293eb47ceb967ffec5304ec2ab604bdbb Merge "Revert "Accept BCP 47 codes as aliases for nonstandard variants"" --- diff --git a/languages/FakeConverter.php b/languages/FakeConverter.php index 6d9892000e..22377c28be 100644 --- a/languages/FakeConverter.php +++ b/languages/FakeConverter.php @@ -116,10 +116,6 @@ class FakeConverter { } function validateVariant( $variant = null ) { - if ( $variant === null ) { - return null; - } - $variant = strtolower( $variant ); return $variant === $this->mLang->getCode() ? $variant : null; } diff --git a/languages/LanguageConverter.php b/languages/LanguageConverter.php index 494280cc41..dcc2cf335f 100644 --- a/languages/LanguageConverter.php +++ b/languages/LanguageConverter.php @@ -175,13 +175,11 @@ class LanguageConverter { $req = $this->validateVariant( $wgDefaultLanguageVariant ); } - $req = $this->validateVariant( $req ); - // This function, unlike the other get*Variant functions, is // not memoized (i.e. there return value is not cached) since // new information might appear during processing after this // is first called. - if ( $req ) { + if ( $this->validateVariant( $req ) ) { return $req; } return $this->mMainLanguageCode; @@ -217,25 +215,9 @@ class LanguageConverter { * @return mixed Returns the variant if it is valid, null otherwise */ public function validateVariant( $variant = null ) { - if ( $variant === null ) { - return null; - } - // Our internal variants are always lower-case; the variant we - // are validating may have mixed case. - $variant = LanguageCode::replaceDeprecatedCodes( strtolower( $variant ) ); - if ( in_array( $variant, $this->mVariants ) ) { + if ( $variant !== null && in_array( $variant, $this->mVariants ) ) { return $variant; } - // Browsers are supposed to use BCP 47 standard in the - // Accept-Language header, but not all of our internal - // mediawiki variant codes are BCP 47. Map BCP 47 code - // to our internal code. - foreach ( $this->mVariants as $v ) { - // Case-insensitive match (BCP 47 is mixed case) - if ( strtolower( LanguageCode::bcp47( $v ) ) === $variant ) { - return $v; - } - } return null; } @@ -311,7 +293,7 @@ class LanguageConverter { return $this->mHeaderVariant; } - // See if some supported language variant is set in the + // see if some supported language variant is set in the // HTTP header. $languages = array_keys( $wgRequest->getAcceptLang() ); if ( empty( $languages ) ) { @@ -563,18 +545,17 @@ class LanguageConverter { $convTable = $convRule->getConvTable(); $action = $convRule->getRulesAction(); foreach ( $convTable as $variant => $pair ) { - $v = $this->validateVariant( $variant ); - if ( !$v ) { + if ( !$this->validateVariant( $variant ) ) { continue; } if ( $action == 'add' ) { // More efficient than array_merge(), about 2.5 times. foreach ( $pair as $from => $to ) { - $this->mTables[$v]->setPair( $from, $to ); + $this->mTables[$variant]->setPair( $from, $to ); } } elseif ( $action == 'remove' ) { - $this->mTables[$v]->removeArray( $pair ); + $this->mTables[$variant]->removeArray( $pair ); } } } diff --git a/tests/phpunit/languages/LanguageConverterTest.php b/tests/phpunit/languages/LanguageConverterTest.php index b5db2ec11a..82ab7def22 100644 --- a/tests/phpunit/languages/LanguageConverterTest.php +++ b/tests/phpunit/languages/LanguageConverterTest.php @@ -20,9 +20,7 @@ class LanguageConverterTest extends MediaWikiLangTestCase { $this->lang = new LanguageToTest(); $this->lc = new TestConverter( $this->lang, 'tg', - # Adding 'sgs' as a variant to ensure we handle deprecated codes - # adding 'simple' as a variant to ensure we handle non BCP 47 codes - [ 'tg', 'tg-latn', 'sgs', 'simple' ] + [ 'tg', 'tg-latn' ] ); } @@ -40,39 +38,6 @@ class LanguageConverterTest extends MediaWikiLangTestCase { $this->assertEquals( 'tg', $this->lc->getPreferredVariant() ); } - /** - * @covers LanguageConverter::getPreferredVariant - * @covers LanguageConverter::getURLVariant - */ - public function testGetPreferredVariantUrl() { - global $wgRequest; - $wgRequest->setVal( 'variant', 'tg-latn' ); - - $this->assertEquals( 'tg-latn', $this->lc->getPreferredVariant() ); - } - - /** - * @covers LanguageConverter::getPreferredVariant - * @covers LanguageConverter::getURLVariant - */ - public function testGetPreferredVariantUrlDeprecated() { - global $wgRequest; - $wgRequest->setVal( 'variant', 'bat-smg' ); - - $this->assertEquals( 'sgs', $this->lc->getPreferredVariant() ); - } - - /** - * @covers LanguageConverter::getPreferredVariant - * @covers LanguageConverter::getURLVariant - */ - public function testGetPreferredVariantUrlBCP47() { - global $wgRequest; - $wgRequest->setVal( 'variant', 'en-simple' ); - - $this->assertEquals( 'simple', $this->lc->getPreferredVariant() ); - } - /** * @covers LanguageConverter::getPreferredVariant * @covers LanguageConverter::getHeaderVariant @@ -84,17 +49,6 @@ class LanguageConverterTest extends MediaWikiLangTestCase { $this->assertEquals( 'tg-latn', $this->lc->getPreferredVariant() ); } - /** - * @covers LanguageConverter::getPreferredVariant - * @covers LanguageConverter::getHeaderVariant - */ - public function testGetPreferredVariantHeadersBCP47() { - global $wgRequest; - $wgRequest->setHeader( 'Accept-Language', 'en-simple' ); - - $this->assertEquals( 'simple', $this->lc->getPreferredVariant() ); - } - /** * @covers LanguageConverter::getPreferredVariant * @covers LanguageConverter::getHeaderVariant @@ -144,38 +98,6 @@ class LanguageConverterTest extends MediaWikiLangTestCase { $this->assertEquals( 'tg-latn', $this->lc->getPreferredVariant() ); } - /** - * @covers LanguageConverter::getPreferredVariant - */ - public function testGetPreferredVariantUserOptionDeprecated() { - global $wgUser; - - $wgUser = new User; - $wgUser->load(); // from 'defaults' - $wgUser->mId = 1; - $wgUser->mDataLoaded = true; - $wgUser->mOptionsLoaded = true; - $wgUser->setOption( 'variant', 'bat-smg' ); - - $this->assertEquals( 'sgs', $this->lc->getPreferredVariant() ); - } - - /** - * @covers LanguageConverter::getPreferredVariant - */ - public function testGetPreferredVariantUserOptionBCP47() { - global $wgUser; - - $wgUser = new User; - $wgUser->load(); // from 'defaults' - $wgUser->mId = 1; - $wgUser->mDataLoaded = true; - $wgUser->mOptionsLoaded = true; - $wgUser->setOption( 'variant', 'en-simple' ); - - $this->assertEquals( 'simple', $this->lc->getPreferredVariant() ); - } - /** * @covers LanguageConverter::getPreferredVariant * @covers LanguageConverter::getUserVariant @@ -194,42 +116,6 @@ class LanguageConverterTest extends MediaWikiLangTestCase { $this->assertEquals( 'tg-latn', $this->lc->getPreferredVariant() ); } - /** - * @covers LanguageConverter::getPreferredVariant - * @covers LanguageConverter::getUserVariant - */ - public function testGetPreferredVariantUserOptionForForeignLanguageDeprecated() { - global $wgContLang, $wgUser; - - $wgContLang = Language::factory( 'en' ); - $wgUser = new User; - $wgUser->load(); // from 'defaults' - $wgUser->mId = 1; - $wgUser->mDataLoaded = true; - $wgUser->mOptionsLoaded = true; - $wgUser->setOption( 'variant-tg', 'bat-smg' ); - - $this->assertEquals( 'sgs', $this->lc->getPreferredVariant() ); - } - - /** - * @covers LanguageConverter::getPreferredVariant - * @covers LanguageConverter::getUserVariant - */ - public function testGetPreferredVariantUserOptionForForeignLanguageBCP47() { - global $wgContLang, $wgUser; - - $wgContLang = Language::factory( 'en' ); - $wgUser = new User; - $wgUser->load(); // from 'defaults' - $wgUser->mId = 1; - $wgUser->mDataLoaded = true; - $wgUser->mOptionsLoaded = true; - $wgUser->setOption( 'variant-tg', 'en-simple' ); - - $this->assertEquals( 'simple', $this->lc->getPreferredVariant() ); - } - /** * @covers LanguageConverter::getPreferredVariant * @covers LanguageConverter::getUserVariant @@ -259,26 +145,6 @@ class LanguageConverterTest extends MediaWikiLangTestCase { $this->assertEquals( 'tg-latn', $this->lc->getPreferredVariant() ); } - /** - * @covers LanguageConverter::getPreferredVariant - */ - public function testGetPreferredVariantDefaultLanguageVariantDeprecated() { - global $wgDefaultLanguageVariant; - - $wgDefaultLanguageVariant = 'bat-smg'; - $this->assertEquals( 'sgs', $this->lc->getPreferredVariant() ); - } - - /** - * @covers LanguageConverter::getPreferredVariant - */ - public function testGetPreferredVariantDefaultLanguageVariantBCP47() { - global $wgDefaultLanguageVariant; - - $wgDefaultLanguageVariant = 'en-simple'; - $this->assertEquals( 'simple', $this->lc->getPreferredVariant() ); - } - /** * @covers LanguageConverter::getPreferredVariant * @covers LanguageConverter::getURLVariant @@ -326,8 +192,6 @@ class TestConverter extends LanguageConverter { function loadDefaultTables() { $this->mTables = [ - 'sgs' => new ReplacementArray(), - 'simple' => new ReplacementArray(), 'tg-latn' => new ReplacementArray( $this->table ), 'tg' => new ReplacementArray() ];