/**
* Get default variant.
- * This function would not be affected by user's settings or headers
+ * This function would not be affected by user's settings
* @return String: the default variant code
*/
public function getDefaultVariant() {
$req = $this->getURLVariant();
+ if ( !$req ) {
+ $req = $this->getHeaderVariant();
+ }
+
if ( $wgDefaultLanguageVariant && !$req ) {
$req = $this->validateVariant( $wgDefaultLanguageVariant );
}
$attr = $attrs[$attrName];
// Don't convert URLs
if ( !strpos( $attr, '://' ) ) {
- $attr = $this->translate( $attr, $toVariant );
+ $attr = $this->convertTo( $attr, $toVariant );
}
// Remove HTML tags to avoid disrupting the layout
public function convertTitle( $title ) {
$variant = $this->getPreferredVariant();
$index = $title->getNamespace();
- if ( $index === NS_MAIN ) {
+ if ( $index !== NS_MAIN ) {
+ $text = $this->convertNamespace( $index ) . ':';
+ } else {
$text = '';
+ }
+ $text .= $this->translate( $title->getText(), $variant );
+ return $text;
+ }
+
+ /**
+ * Get the namespace display name in the preferred variant.
+ *
+ * @param $index int namespace id
+ * @return String: namespace name for display
+ */
+ public function convertNamespace( $index ) {
+ $variant = $this->getPreferredVariant();
+ if ( $index === NS_MAIN ) {
+ return '';
} else {
- // first let's check if a message has given us a converted name
+ // First check if a message gives a converted name in the target variant.
+ $nsConvMsg = wfMessage( 'conversion-ns' . $index )->inLanguage( $variant );
+ if ( $nsConvMsg->exists() ) {
+ return $nsConvMsg->plain();
+ }
+ // Then check if a message gives a converted name in content language
+ // which needs extra translation to the target variant.
$nsConvMsg = wfMessage( 'conversion-ns' . $index )->inContentLanguage();
if ( $nsConvMsg->exists() ) {
- $text = $nsConvMsg->plain();
- } else {
- // the message does not exist, try retrieve it from the current
- // variant's namespace names.
- $langObj = $this->mLangObj->factory( $variant );
- $text = $langObj->getFormattedNsText( $index );
+ return $this->translate( $nsConvMsg->plain(), $variant );
}
- $text .= ':';
+ // No message exists, retrieve it from the target variant's namespace names.
+ $langObj = $this->mLangObj->factory( $variant );
+ return $langObj->getFormattedNsText( $index );
}
- $text .= $title->getText();
- $text = $this->translate( $text, $variant );
- return $text;
}
/**
if ( $wgDisableLangConversion ) {
return $text;
}
+ // Reset converter state for a new converter run.
+ $this->mConvRuleTitle = false;
return $this->recursiveConvertTopLevel( $text, $variant );
}
/**
* Guess if a text is written in a variant. This should be implemented in subclasses.
*
- * @param string $text the text to be checked
- * @param string $variant language code of the variant to be checked for
- * @return bool true if $text appears to be written in $variant, false if not
+ * @param string $text the text to be checked
+ * @param string $variant language code of the variant to be checked for
+ * @return bool true if $text appears to be written in $variant, false if not
*
* @author Nikola Smolenski <smolensk@eunet.rs>
* @since 1.19
* @param $revision Object: new Revision object or null
* @return Boolean: true
*/
- function OnArticleContentSaveComplete( $page, $user, $content, $summary, $isMinor,
+ function OnPageContentSaveComplete( $page, $user, $content, $summary, $isMinor,
$isWatch, $section, $flags, $revision ) {
$titleobj = $page->getTitle();
if ( $titleobj->getNamespace() == NS_MEDIAWIKI ) {
$bidtable[$v] = $to;
} elseif ( count( $u ) == 2 ) {
$from = trim( $u[0] );
- $v = trim( $u[1] );
+ $v = trim( $u[1] );
if ( array_key_exists( $v, $unidtable )
&& !is_array( $unidtable[$v] )
&& $to