Mormegil has uploaded a new change for review.
https://gerrit.wikimedia.org/r/55816
Change subject: (bug 1495) Include the site language in the fallback list
......................................................................
(bug 1495) Include the site language in the fallback list
In Iaaf6ccebd8c40c9602748c58c3a5c73c29e7aa4d, the behavior of MessageCache
was changed so that it iterates over all possible on-wiki fallbacks including
the site language fallbacks. However, it omitted the site language itself.
Obviously, the problem appears only when the site language is not English,
because English is included always as the fallback language of last resort.
But in other cases, we need to add it explicitly.
Bug: 1495
Change-Id: Ib607a446d3499a3c042dce408db5cbaf12fa9e3d
---
M languages/Language.php
M tests/phpunit/includes/cache/MessageCacheTest.php
2 files changed, 29 insertions(+), 8 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/core
refs/changes/16/55816/1
diff --git a/languages/Language.php b/languages/Language.php
index 42883b5..16de816 100644
--- a/languages/Language.php
+++ b/languages/Language.php
@@ -4006,8 +4006,9 @@
if ( end( $fallbacks ) === 'en' ) {
array_pop( $fallbacks );
}
- // Append the site's fallback chain
+ // Append the site's fallback chain, including the site
language itself
$siteFallbacks = self::getFallbacksFor( $wgLanguageCode
);
+ array_unshift( $siteFallbacks, $wgLanguageCode );
// Eliminate any languages already included in the chain
$siteFallbacks = array_intersect( array_diff(
$siteFallbacks, $fallbacks ), $siteFallbacks );
diff --git a/tests/phpunit/includes/cache/MessageCacheTest.php
b/tests/phpunit/includes/cache/MessageCacheTest.php
index eda06d4..3b3e4a6 100644
--- a/tests/phpunit/includes/cache/MessageCacheTest.php
+++ b/tests/phpunit/includes/cache/MessageCacheTest.php
@@ -8,24 +8,43 @@
protected function setUp() {
parent::setUp();
+ $this->configureLanguages();
MessageCache::singleton()->enable();
}
- function addDBData() {
- // be sure english messages under $key, not $key/en
- $this->setMwGlobals( array(
- 'wgLanguageCode' => 'en',
- 'wgContLang' => Language::factory( 'en' ),
- ) );
+ /**
+ * Helper function -- setup site language for testing
+ */
+ protected function configureLanguages() {
+ // for the test, we need the content language to be anything
but English,
+ // let's choose e.g. German (de)
+ $langCode = 'de';
+ $langObj = Language::factory( $langCode );
- // Set up messages and fallbacks ab -> ru -> en
+ $this->setMwGlobals( array(
+ 'wgLanguageCode' => $langCode,
+ 'wgLang' => $langObj,
+ 'wgContLang' => $langObj,
+ ) );
+ }
+
+ function addDBData() {
+ $this->configureLanguages();
+
+ // Set up messages and fallbacks ab -> ru -> de -> en
$this->makePage( 'FallbackLanguageTest-Full', 'ab' );
$this->makePage( 'FallbackLanguageTest-Full', 'ru' );
+ $this->makePage( 'FallbackLanguageTest-Full', 'de' );
$this->makePage( 'FallbackLanguageTest-Full', 'en' );
// Fallbacks where ab does not exist
$this->makePage( 'FallbackLanguageTest-Partial', 'ru' );
+ $this->makePage( 'FallbackLanguageTest-Partial', 'de' );
$this->makePage( 'FallbackLanguageTest-Partial', 'en' );
+
+ // Fallback to the content language
+ $this->makePage( 'FallbackLanguageTest-ContLang', 'de' );
+ $this->makePage( 'FallbackLanguageTest-ContLang', 'en' );
// Fallback to english
$this->makePage( 'FallbackLanguageTest-English', 'en' );
@@ -67,6 +86,7 @@
return array(
array( 'FallbackLanguageTest-Full', 'ab', 'ab' ),
array( 'FallbackLanguageTest-Partial', 'ab', 'ru' ),
+ array( 'FallbackLanguageTest-ContLang', 'ab', 'de' ),
array( 'FallbackLanguageTest-English', 'ab', 'en' ),
array( 'FallbackLanguageTest-None', 'ab', false ),
);
--
To view, visit https://gerrit.wikimedia.org/r/55816
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ib607a446d3499a3c042dce408db5cbaf12fa9e3d
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/core
Gerrit-Branch: master
Gerrit-Owner: Mormegil <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits