From c5337f852236767439614a7e52a83b17b943a203 Mon Sep 17 00:00:00 2001 From: Daniel Friesen Date: Sun, 11 Dec 2011 18:46:18 +0000 Subject: [PATCH] Introduce a Language::getHtmlLang method which returns the Bcp47 formatted language code and update code around core to output lang tags using this method instead of getCode so that we properly output things like lang="en-CA" instead of lang="en-ca" --- includes/OutputPage.php | 4 ++-- includes/Skin.php | 4 ++-- includes/SkinTemplate.php | 6 +++--- languages/Language.php | 8 ++++++++ 4 files changed, 15 insertions(+), 7 deletions(-) diff --git a/includes/OutputPage.php b/includes/OutputPage.php index 8c3d647a53..565b9bac86 100644 --- a/includes/OutputPage.php +++ b/includes/OutputPage.php @@ -2244,7 +2244,7 @@ class OutputPage extends ContextSource { 'cols' => $this->getUser()->getOption( 'cols' ), 'rows' => $this->getUser()->getOption( 'rows' ), 'readonly' => 'readonly', - 'lang' => $pageLang->getCode(), + 'lang' => $pageLang->getHtmlCode(), 'dir' => $pageLang->getDir(), ); $this->addHTML( Html::element( 'textarea', $params, $source ) ); @@ -2381,7 +2381,7 @@ $templates $this->addModuleStyles( 'mediawiki.legacy.wikiprintable' ); } - $ret = Html::htmlHeader( array( 'lang' => $this->getLanguage()->getCode(), 'dir' => $userdir, 'class' => 'client-nojs' ) ); + $ret = Html::htmlHeader( array( 'lang' => $this->getLanguage()->getHtmlCode(), 'dir' => $userdir, 'class' => 'client-nojs' ) ); if ( $this->getHTMLTitle() == '' ) { $this->setHTMLTitle( $this->msg( 'pagetitle', $this->getPageTitle() ) ); diff --git a/includes/Skin.php b/includes/Skin.php index eb890b2772..0d9338449a 100644 --- a/includes/Skin.php +++ b/includes/Skin.php @@ -775,7 +775,7 @@ abstract class Skin extends ContextSource { if ( $forContent ) { $msg = $msgObj->inContentLanguage()->text(); if ( $this->getLanguage()->getCode() !== $wgContLang->getCode() ) { - $msg = Html::rawElement( 'span', array( 'lang' => $wgContLang->getCode(), 'dir' => $wgContLang->getDir() ), $msg ); + $msg = Html::rawElement( 'span', array( 'lang' => $wgContLang->getHtmlCode(), 'dir' => $wgContLang->getDir() ), $msg ); } return $msg; } else { @@ -1392,7 +1392,7 @@ abstract class Skin extends ContextSource { } $notice = Html::rawElement( 'div', array( 'id' => 'localNotice', - 'lang' => $wgContLang->getCode(), 'dir' => $wgContLang->getDir() ), $notice ); + 'lang' => $wgContLang->getHtmlCode(), 'dir' => $wgContLang->getDir() ), $notice ); wfProfileOut( __METHOD__ ); return $notice; } diff --git a/includes/SkinTemplate.php b/includes/SkinTemplate.php index 56413fd269..cd2b387193 100644 --- a/includes/SkinTemplate.php +++ b/includes/SkinTemplate.php @@ -288,9 +288,9 @@ class SkinTemplate extends Skin { $tpl->setRef( 'logopath', $wgLogo ); $tpl->setRef( 'sitename', $wgSitename ); - $contentlang = $wgContLang->getCode(); + $contentlang = $wgContLang->getHtmlCode(); $contentdir = $wgContLang->getDir(); - $userlang = $this->getLanguage()->getCode(); + $userlang = $this->getLanguage()->getHtmlCode(); $userdir = $this->getLanguage()->getDir(); $tpl->set( 'lang', $userlang ); @@ -420,7 +420,7 @@ class SkinTemplate extends Skin { in_array( $request->getVal( 'action', 'view' ), array( 'view', 'historysubmit' ) ) && ( $title->exists() || $title->getNamespace() == NS_MEDIAWIKI ) ) { $pageLang = $title->getPageLanguage(); - $realBodyAttribs = array( 'lang' => $pageLang->getCode(), 'dir' => $pageLang->getDir(), + $realBodyAttribs = array( 'lang' => $pageLang->getHtmlCode(), 'dir' => $pageLang->getDir(), 'class' => 'mw-content-'.$pageLang->getDir() ); $out->mBodytext = Html::rawElement( 'div', $realBodyAttribs, $out->mBodytext ); } diff --git a/languages/Language.php b/languages/Language.php index d2edcefd52..c094927cf6 100644 --- a/languages/Language.php +++ b/languages/Language.php @@ -3449,6 +3449,14 @@ class Language { return $this->mCode; } + /** + * Get the code in Bcp47 format which we can use + * inside of html lang="" tags. + */ + function getHtmlCode() { + return wfBcp47( $this->getCode() ); + } + /** * @param $code string */ -- 2.20.1