function addDBData() {
$this->configureLanguages();
- // Set up messages and fallbacks ab -> ru -> de -> en
+ // Set up messages and fallbacks ab -> ru -> de
$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' );
+ // Add customizations for an existing message.
+ $this->makePage( 'sunday', 'ru' );
// Full key tests -- always want russian
$this->makePage( 'MessageCacheTest-FullKeyTest', 'ab' );
$this->makePage( 'MessageCacheTest-FullKeyTest', 'ru' );
+
+ // In content language -- get base if no derivative
+ $this->makePage( 'FallbackLanguageTest-NoDervContLang', 'de', 'de/none', false );
}
/**
*
* @param string $title Title of page to be created
* @param string $lang Language and content of the created page
+ * @param string|null $content Content of the created page, or null for a generic string
+ * @param bool $createSubPage Set to false if a root page should be created
*/
- protected function makePage( $title, $lang ) {
+ protected function makePage( $title, $lang, $content = null, $createSubPage = true ) {
global $wgContLang;
- $title = Title::newFromText(
- ($lang == $wgContLang->getCode()) ? $title : "$title/$lang",
- NS_MEDIAWIKI
- );
+ if ( $content === null ) {
+ $content = $lang;
+ }
+ if ( $lang !== $wgContLang->getCode() || $createSubPage ) {
+ $title = "$title/$lang";
+ }
+
+ $title = Title::newFromText( $title, NS_MEDIAWIKI );
$wikiPage = new WikiPage( $title );
- $content = ContentHandler::makeContent( $lang, $title );
- $wikiPage->doEditContent( $content, "$lang translation test case" );
+ $contentHandler = ContentHandler::makeContent( $content, $title );
+ $wikiPage->doEditContent( $contentHandler, "$lang translation test case" );
}
/**
$this->assertEquals( $expectedContent, $result, "Message fallback failed." );
}
- public static function provideMessagesForFallback() {
+ function provideMessagesForFallback() {
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 ),
+
+ // Existing message with customizations on the fallbacks
+ array( 'sunday', 'ab', 'амҽыш' ),
+
+ // bug 46579
+ array( 'FallbackLanguageTest-NoDervContLang', 'de', 'de/none' ),
+ // UI language different from content language should only use de/none as last option
+ array( 'FallbackLanguageTest-NoDervContLang', 'fit', 'de/none' ),
);
}
$this->assertEquals( $expectedContent, $result, "Full key message fallback failed." );
}
- public static function provideMessagesForFullKeys() {
+ function provideMessagesForFullKeys() {
return array(
array( 'MessageCacheTest-FullKeyTest/ru', 'ru', 'ru' ),
array( 'MessageCacheTest-FullKeyTest/ru', 'ab', 'ru' ),