http://www.mediawiki.org/wiki/Special:Code/MediaWiki/73773
Revision: 73773
Author: nikerabbit
Date: 2010-09-26 13:29:41 +0000 (Sun, 26 Sep 2010)
Log Message:
-----------
Allow translation of titles of translatable pages
Added some encapsulation of getting message group for a translatable page
Modified Paths:
--------------
trunk/extensions/Translate/tag/PageTranslationHooks.php
trunk/extensions/Translate/tag/TPParse.php
trunk/extensions/Translate/tag/TranslatablePage.php
Modified: trunk/extensions/Translate/tag/PageTranslationHooks.php
===================================================================
--- trunk/extensions/Translate/tag/PageTranslationHooks.php 2010-09-26
13:03:16 UTC (rev 73772)
+++ trunk/extensions/Translate/tag/PageTranslationHooks.php 2010-09-26
13:29:41 UTC (rev 73773)
@@ -34,6 +34,10 @@
if ( $page = TranslatablePage::isTranslationPage( $title ) ) {
list( , $code ) = TranslateUtils::figureMessage(
$title->getText() );
$parser->getOptions()->setTargetLanguage(
Language::factory( $code ) );
+ $name = $page->getPageDisplayTitle( $code );
+ if ( $name ) {
+ $parser->getOutput()->setDisplayTitle( $name );
+ }
}
return true;
@@ -394,7 +398,7 @@
if ( $marked && $wgUser->isAllowed( 'translate' ) ) {
$par = array(
- 'group' => 'page|' . $title->getPrefixedText(),
+ 'group' => $page->getMessageGroupId(),
'language' => $wgLang->getCode(),
'task' => 'view'
);
@@ -462,7 +466,7 @@
$wgOut->wrapWikiMsg( $wrap, array( 'tpt-translation-intro',
$url, $titleText, $per ) );
if ( ((int) $per) < 100 ) {
- $group = MessageGroups::getGroup( 'page|' .
$page->getTitle()->getPrefixedText() );
+ $group = $page->getMessageGroup();
$collection = $group->initCollection( $code );
$collection->filter( 'fuzzy', false );
if ( count( $collection ) ) {
Modified: trunk/extensions/Translate/tag/TPParse.php
===================================================================
--- trunk/extensions/Translate/tag/TPParse.php 2010-09-26 13:03:16 UTC (rev
73772)
+++ trunk/extensions/Translate/tag/TPParse.php 2010-09-26 13:29:41 UTC (rev
73773)
@@ -76,10 +76,12 @@
$sections = $this->sections;
$highest = 0;
foreach ( array_keys( $this->dbSections ) as $key ) {
+ if ( !is_int( $key ) ) continue;
$highest = max( $highest, $key );
}
foreach ( $sections as $_ ) {
+ if ( !is_int( $_->id ) ) continue;
$highest = max( $_->id, $highest );
}
Modified: trunk/extensions/Translate/tag/TranslatablePage.php
===================================================================
--- trunk/extensions/Translate/tag/TranslatablePage.php 2010-09-26 13:03:16 UTC
(rev 73772)
+++ trunk/extensions/Translate/tag/TranslatablePage.php 2010-09-26 13:29:41 UTC
(rev 73773)
@@ -39,6 +39,8 @@
*/
protected $init = false;
+ protected $displayTitle = 'Page display title';
+
/**
* @param title Title object for the page
*/
@@ -146,6 +148,34 @@
// Public functions //
/**
+ * Returns MessageGroup id (to be) used for translating this page.
+ * @return \string
+ */
+ public function getMessageGroupId() {
+ return 'page|' . $this->getTitle()->getPrefixedText();
+ }
+
+ /**
+ * Returns MessageGroup used for translating this page. It may still be
empty
+ * if the page has not been ever marked.
+ * @return \type{WikiPageMessageGroup}
+ */
+ public function getMessageGroup() {
+ return MessageGroups::getGroup( $this->getMessageGroupId() );
+ }
+
+ /**
+ * Get translated page title.
+ * @param $code \string Language code.
+ * @return \string or null
+ */
+ public function getPageDisplayTitle( $code ) {
+ $section = str_replace( ' ', '_', $this->displayTitle );
+ $page = $this->getTitle()->getPrefixedDBKey();
+ return $this->getMessageGroup()->getMessage( "$page/$section",
$code );
+ }
+
+ /**
* Returns a TPParse object which represents the parsed page.
* Throws TPExcetion if the page is malformed as a translatable
* page.
@@ -161,6 +191,13 @@
$text = self::armourNowiki( $nowiki, $text );
$sections = array();
+
+ // Add section to allow translating the page name
+ $displaytitle = new TPSection;
+ $displaytitle->id = $this->displayTitle
+ $displaytitle->text = $this->getTitle()->getPrefixedText();
+ $sections[self::getUniq()] = $displaytitle;
+
$tagPlaceHolders = array();
while ( true ) {
@@ -500,7 +537,7 @@
$titles = $this->getTranslationPages();
// Calculate percentages for the available translations
- $group = MessageGroups::getGroup( 'page|' .
$this->getTitle()->getPrefixedText() );
+ $group = $this->getMessageGroup();
if ( !$group instanceof WikiPageMessageGroup ) {
return null;
}
@@ -629,7 +666,6 @@
$codes = Language::getLanguageNames( false );
global $wgTranslateDocumentationLanguageCode, $wgContLang;
unset( $codes[$wgTranslateDocumentationLanguageCode] );
- unset( $codes[$wgContLang->getCode()] );
if ( !isset( $codes[$code] ) ) {
return false;
_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs