to stop it from replace an already existing default sort, and suppress error.
* (bug 18578) Rewrote revision delete related messages to allow better
localisation
+* (bug 30364) LanguageConverter now depends on the page content language
+ instead of the wiki content language
=== Bug fixes in 1.19 ===
* $wgUploadNavigationUrl should be used for file redlinks if
* /w/index.php?title=Main_page&variant=zh-cn should never be served.
*/
function addAcceptLanguage() {
- global $wgContLang;
- if( !$this->getRequest()->getCheck( 'variant' ) && $wgContLang->hasVariants() ) {
- $variants = $wgContLang->getVariants();
+ $lang = $this->getTitle()->getPageLanguage();
+ if( !$this->getRequest()->getCheck( 'variant' ) && $lang->hasVariants() ) {
+ $variants = $lang->getVariants();
$aloption = array();
foreach ( $variants as $variant ) {
- if( $variant === $wgContLang->getCode() ) {
+ if( $variant === $lang->getCode() ) {
continue;
} else {
$aloption[] = 'string-contains=' . $variant;
* have to be purged on configuration changes.
*/
protected function getJSVars() {
- global $wgUseAjax, $wgEnableMWSuggest, $wgContLang;
+ global $wgUseAjax, $wgEnableMWSuggest;
$title = $this->getTitle();
$ns = $title->getNamespace();
'wgCategories' => $this->getCategories(),
'wgBreakFrames' => $this->getFrameOptions() == 'DENY',
);
- if ( $wgContLang->hasVariants() ) {
- $vars['wgUserVariant'] = $wgContLang->getPreferredVariant();
- }
+ $lang = $this->getTitle()->getPageLanguage();
+ if ( $lang->hasVariants() ) {
+ $vars['wgUserVariant'] = $lang->getPreferredVariant();
+ }
foreach ( $title->getRestrictionTypes() as $type ) {
$vars['wgRestriction' . ucfirst( $type )] = $title->getRestrictions( $type );
}
global $wgUniversalEditButton, $wgFavicon, $wgAppleTouchIcon, $wgEnableAPI,
$wgSitename, $wgVersion, $wgHtml5, $wgMimeType,
$wgFeed, $wgOverrideSiteFeed, $wgAdvertisedFeedTypes,
- $wgDisableLangConversion, $wgCanonicalLanguageLinks, $wgContLang,
+ $wgDisableLangConversion, $wgCanonicalLanguageLinks,
$wgRightsPage, $wgRightsUrl;
$tags = array();
) );
}
+ $lang = $this->getTitle()->getPageLanguage();
+
# Language variants
if ( !$wgDisableLangConversion && $wgCanonicalLanguageLinks
- && $wgContLang->hasVariants() ) {
+ && $lang->hasVariants() ) {
- $urlvar = $wgContLang->getURLVariant();
+ $urlvar = $lang->getURLVariant();
if ( !$urlvar ) {
- $variants = $wgContLang->getVariants();
+ $variants = $lang->getVariants();
foreach ( $variants as $_v ) {
$tags[] = Html::element( 'link', array(
'rel' => 'alternate',
$s = '';
/* show links to different language variants */
- global $wgDisableLangConversion, $wgLang, $wgContLang;
+ global $wgDisableLangConversion, $wgLang;
- $variants = $wgContLang->getVariants();
+ $lang = $this->getSkin()->getTitle()->getPageLanguage();
+ $variants = $lang->getVariants();
- if ( !$wgDisableLangConversion && sizeof( $variants ) > 1 ) {
+ if ( !$wgDisableLangConversion && sizeof( $variants ) > 1
+ && $title->getNamespace() != NS_SPECIAL ) {
foreach ( $variants as $code ) {
- $varname = $wgContLang->getVariantname( $code );
+ $varname = $lang->getVariantname( $code );
if ( $varname == 'disable' ) {
continue;
array( &$this, &$content_navigation ) );
}
+ $pageLang = $title->getPageLanguage();
+
// Gets list of language variants
- $variants = $wgContLang->getVariants();
+ $variants = $pageLang->getVariants();
// Checks that language conversion is enabled and variants exist
- if( !$wgDisableLangConversion && count( $variants ) > 1 ) {
- // Gets preferred variant
- $preferred = $wgContLang->getPreferredVariant();
+ // And if it is not in the special namespace
+ if( !$wgDisableLangConversion && count( $variants ) > 1
+ && $title->getNamespace() != NS_SPECIAL ) {
+ // Gets preferred variant (note that user preference is
+ // only possible for wiki content language variant)
+ $preferred = $pageLang->getPreferredVariant();
// Loops over each variant
foreach( $variants as $code ) {
// Gets variant name from language code
- $varname = $wgContLang->getVariantname( $code );
+ $varname = $pageLang->getVariantname( $code );
// Checks if the variant is marked as disabled
if( $varname == 'disable' ) {
// Skips this variant
*/
public function getLocalURL( $query = '', $variant = false ) {
global $wgArticlePath, $wgScript, $wgServer, $wgRequest;
- global $wgVariantArticlePath, $wgContLang;
+ global $wgVariantArticlePath;
if ( is_array( $query ) ) {
$query = wfArrayToCGI( $query );
} else {
$dbkey = wfUrlencode( $this->getPrefixedDBkey() );
if ( $query == '' ) {
- if ( $variant != false && $wgContLang->hasVariants() ) {
+ if ( $variant != false && $this->getPageLanguage()->hasVariants() ) {
if ( !$wgVariantArticlePath ) {
$variantArticlePath = "$wgScript?title=$1&variant=$2"; // default
} else {
* to internalParse() which does all the real work.
*/
- global $wgUseTidy, $wgAlwaysUseTidy, $wgContLang, $wgDisableLangConversion, $wgDisableTitleConversion;
+ global $wgUseTidy, $wgAlwaysUseTidy, $wgDisableLangConversion, $wgDisableTitleConversion;
$fname = __METHOD__.'-' . wfGetCaller();
wfProfileIn( __METHOD__ );
wfProfileIn( $fname );
# The position of the convert() call should not be changed. it
# assumes that the links are all replaced and the only thing left
# is the <nowiki> mark.
-
- $text = $wgContLang->convert( $text );
+ $text = $this->getFunctionLang()->convert( $text );
}
/**
|| isset( $this->mDoubleUnderscores['notitleconvert'] )
|| $this->mOutput->getDisplayTitle() !== false ) )
{
- $convruletitle = $wgContLang->getConvRuleTitle();
+ $convruletitle = $this->getFunctionLang()->getConvRuleTitle();
if ( $convruletitle ) {
$this->mOutput->setTitleText( $convruletitle );
} else {
- $titleText = $wgContLang->convertTitle( $title );
+ $titleText = $this->getFunctionLang()->convertTitle( $title );
$this->mOutput->setTitleText( $titleText );
}
}
* @private
*/
function makeFreeExternalLink( $url ) {
- global $wgContLang;
wfProfileIn( __METHOD__ );
$trail = '';
$text = $this->maybeMakeExternalImage( $url );
if ( $text === false ) {
# Not an image, make a link
- $text = Linker::makeExternalLink( $url, $wgContLang->markNoConversion($url), true, 'free',
+ $text = Linker::makeExternalLink( $url, $this->getFunctionLang()->markNoConversion($url), true, 'free',
$this->getExternalLinkAttribs( $url ) );
# Register it in the output object...
# Replace unnecessary URL escape codes with their equivalent characters
* @return string
*/
function replaceExternalLinks( $text ) {
- global $wgContLang;
wfProfileIn( __METHOD__ );
$bits = preg_split( $this->mExtLinkBracketedRegex, $text, -1, PREG_SPLIT_DELIM_CAPTURE );
list( $dtrail, $trail ) = Linker::splitTrail( $trail );
}
- $text = $wgContLang->markNoConversion( $text );
+ $text = $this->getFunctionLang()->markNoConversion( $text );
$url = Sanitizer::cleanUrl( $url );
* @private
*/
function replaceInternalLinks2( &$s ) {
- global $wgContLang;
-
wfProfileIn( __METHOD__ );
wfProfileIn( __METHOD__.'-setup' );
$line = $a->current(); # Workaround for broken ArrayIterator::next() that returns "void"
$s = substr( $s, 1 );
- $useLinkPrefixExtension = $wgContLang->linkPrefixExtension();
+ $useLinkPrefixExtension = $this->getFunctionLang()->linkPrefixExtension();
$e2 = null;
if ( $useLinkPrefixExtension ) {
# Match the end of a line for a word that's not followed by whitespace,
$prefix = '';
}
- if ( $wgContLang->hasVariants() ) {
- $selflink = $wgContLang->autoConvertToAllVariants( $this->mTitle->getPrefixedText() );
+ if ( $this->getFunctionLang()->hasVariants() ) {
+ $selflink = $this->getFunctionLang()->autoConvertToAllVariants( $this->mTitle->getPrefixedText() );
} else {
$selflink = array( $this->mTitle->getPrefixedText() );
}
# Link not escaped by : , create the various objects
if ( $noforce ) {
+ global $wgContLang;
# Interwikis
wfProfileIn( __METHOD__."-interwiki" );
}
$sortkey = Sanitizer::decodeCharReferences( $sortkey );
$sortkey = str_replace( "\n", '', $sortkey );
- $sortkey = $wgContLang->convertCategoryKey( $sortkey );
+ $sortkey = $this->getFunctionLang()->convertCategoryKey( $sortkey );
$this->mOutput->addCategory( $nt->getDBkey(), $sortkey );
/**
* @private
*/
function braceSubstitution( $piece, $frame ) {
- global $wgContLang, $wgNonincludableNamespaces, $wgEnableInterwikiTranscluding, $wgEnableInterwikiTemplatesTracking;
+ global $wgNonincludableNamespaces, $wgEnableInterwikiTranscluding, $wgEnableInterwikiTemplatesTracking;
wfProfileIn( __METHOD__ );
wfProfileIn( __METHOD__.'-setup' );
$function = $this->mFunctionSynonyms[1][$function];
} else {
# Case insensitive functions
- $function = $wgContLang->lc( $function );
+ $function = $this->getFunctionLang()->lc( $function );
if ( isset( $this->mFunctionSynonyms[0][$function] ) ) {
$function = $this->mFunctionSynonyms[0][$function];
} else {
}
$titleText = $title->getPrefixedText();
# Check for language variants if the template is not found
- if ( $wgContLang->hasVariants() && $title->getArticleID() == 0 ) {
- $wgContLang->findVariantLink( $part1, $title, true );
+ if ( $this->getFunctionLang()->hasVariants() && $title->getArticleID() == 0 ) {
+ $this->getFunctionLang()->findVariantLink( $part1, $title, true );
}
# Do recursion depth check
$limit = $this->mOptions->getMaxTemplateDepth();
*
* @since 1.17
* @param $forOptions Array
- * @param $title Title: will be used to get the page content language (since r97636)
+ * @param $title Title: used to get the content language of the page (since r97636)
* @return \string Page rendering hash
*/
public function optionsHash( $forOptions, $title = null ) {
- global $wgContLang, $wgRenderHashAppend;
+ global $wgRenderHashAppend;
$confstr = '';
// add in language specific options, if any
// @todo FIXME: This is just a way of retrieving the url/user preferred variant
- $confstr .= $wgContLang->getExtraHashOptions();
+ if( !is_null( $title ) ) {
+ $confstr .= $title->getPageLanguage()->getExtraHashOptions();
+ } else {
+ global $wgContLang;
+ $confstr .= $wgContLang->getExtraHashOptions();
+ }
$confstr .= $wgRenderHashAppend;