[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [websites/wiki-kde-org/develop] extensions/LanguageSelector: update languageselector extension
From: Ingo Malchow <imalchow () kde ! org>
Date: 2012-03-31 21:17:17
Message-ID: 20120331211717.7243CA60A9 () git ! kde ! org
[Download RAW message or body]
Git commit 4ee4350219ea7bbdd4049635e21262b8d981f007 by Ingo Malchow.
Committed on 31/03/2012 at 23:17.
Pushed by imalchow into branch 'develop'.
update languageselector extension
M +122 -28 extensions/LanguageSelector/LanguageSelector.i18n.php
M +2 -2 extensions/LanguageSelector/LanguageSelector.js
M +141 -174 extensions/LanguageSelector/LanguageSelector.php
http://commits.kde.org/websites/wiki-kde-org/4ee4350219ea7bbdd4049635e21262b8d981f007
diff --git a/extensions/LanguageSelector/LanguageSelector.i18n.php \
b/extensions/LanguageSelector/LanguageSelector.i18n.php index df2b504..ab3013d 100644
--- a/extensions/LanguageSelector/LanguageSelector.i18n.php
+++ b/extensions/LanguageSelector/LanguageSelector.i18n.php
@@ -29,6 +29,27 @@ $messages['qqq'] = array(
'languageselector-setlang' => 'Part of the "LanguageSelector" extension. This is \
the text of a submit button to select your user interface language. Mostly the button \
is not shown, but sometimes it appears next to the language selector (a dropdown box \
like in your [[Special:Preferences|user preferences]]).', );
+/** Goan Konkani (Latin script) (Konknni)
+ * @author The Discoverer
+ */
+$messages['gom-latn'] = array(
+ 'languageselector' => 'Bhas',
+);
+
+/** толышә зывон (толышә зывон)
+ * @author Гусейн
+ */
+$messages['tly'] = array(
+ 'languageselector' => 'Зывон',
+);
+
+/** Ṫuroyo (Ṫuroyo)
+ * @author Ariyo
+ */
+$messages['tru'] = array(
+ 'languageselector' => 'Leşono',
+);
+
/** Abkhazian (Аҧсуа)
* @author Temuri rajavi
*/
@@ -106,7 +127,15 @@ $messages['ast'] = array(
'languageselector-setlang' => 'establecer',
);
-/** Bashkir (Башҡорт)
+/** Azerbaijani (Azərbaycanca)
+ * @author Proger
+ */
+$messages['az'] = array(
+ 'languageselector' => 'Dil',
+ 'languageselector-setlang' => 'Seç',
+);
+
+/** Bashkir (Башҡортса)
* @author Assele
* @author устам Нурыев
*/
@@ -118,14 +147,15 @@ $messages['ba'] = array(
/** Bavarian (Boarisch)
* @author Man77
+ * @author Mucalexx
*/
$messages['bar'] = array(
- 'languageselector' => 'Språch',
- 'languageselector-desc' => 'Språchnauswåih auf jeda Seitn, aa fia Bsuacha',
- 'languageselector-setlang' => 'setzn',
+ 'languageselector' => 'Sprooch',
+ 'languageselector-desc' => 'Sproochnauswoi auf jeeder Seiten, aa fyr Bsuacher',
+ 'languageselector-setlang' => 'sétzen',
);
-/** Belarusian (Taraškievica orthography) (Беларуская \
(тарашкевіца)) +/** Belarusian (Taraškievica orthography) \
(Беларуская (тарашкевіца))
* @author Jim-by
* @author Red Winged Duck
*/
@@ -142,6 +172,14 @@ $messages['bg'] = array(
'languageselector' => 'Език',
);
+/** Bhojpuri (भोजपुरी)
+ * @author Anshumangupta21
+ */
+$messages['bho'] = array(
+ 'languageselector' => 'भाषा',
+ 'languageselector-setlang' => 'गुट',
+);
+
/** Bengali (বাংলা)
* @author Bellayet
*/
@@ -151,6 +189,15 @@ $messages['bn'] = array(
'languageselector-setlang' => 'স্থাপন',
);
+/** Tibetan (བོད་ཡིག)
+ * @author Freeyak
+ */
+$messages['bo'] = array(
+ 'languageselector' => 'སྐད་རིགས།',
+ 'languageselector-desc' => 'ཤོག་ངོས་སོ་སོ \
ི་སྐད་རིགས་ དེམས་ཚན་དང་། \
གཞན་ལྟ་ཀློག་བྱེད་མཁན་གྱི་ཆེད་དུ \
ང་ཡིན།', + 'languageselector-setlang' => 'སྒྲིག',
+);
+
/** Breton (Brezhoneg)
* @author Fulup
*/
@@ -169,6 +216,13 @@ $messages['bs'] = array(
'languageselector-setlang' => 'postavi',
);
+/** Буряад (Буряад)
+ * @author ОйЛ
+ */
+$messages['bxr'] = array(
+ 'languageselector' => 'Хэлэн',
+);
+
/** Catalan (Catal )
* @author Jordi Roqué
* @author SMP
@@ -225,9 +279,12 @@ $messages['cy'] = array(
/** Danish (Dansk)
* @author Jon Harald Søby
+ * @author Peter Alberti
*/
$messages['da'] = array(
'languageselector' => 'Sprog',
+ 'languageselector-desc' => 'Sprogvælger på alle sider, også for gæster',
+ 'languageselector-setlang' => 'vælg',
);
/** German (Deutsch)
@@ -528,13 +585,13 @@ $messages['kk-arab'] = array(
'languageselector-setlang' => 'انىقتاۋ',
);
-/** Kazakh (Cyrillic) (Қазақша (Cyrillic)) */
+/** Kazakh (Cyrillic script) (Қазақша (кирил)) */
$messages['kk-cyrl'] = array(
'languageselector' => 'Тіл',
'languageselector-setlang' => 'анықтау',
);
-/** Kazakh (Latin) (Қазақша (Latin)) */
+/** Kazakh (Latin script) (Qazaqşa (latın)) */
$messages['kk-latn'] = array(
'languageselector' => 'Til',
'languageselector-setlang' => 'anıqtaw',
@@ -583,7 +640,14 @@ $messages['ksh'] = array(
'languageselector-setlang' => 'Setze',
);
-/** Cornish (Kernewek)
+/** Kurdish (Latin script) (Kurdî (latînî))
+ * @author George Animal
+ */
+$messages['ku-latn'] = array(
+ 'languageselector' => 'Ziman',
+);
+
+/** Cornish (Kernowek)
* @author Kw-Moon
*/
$messages['kw'] = array(
@@ -638,6 +702,7 @@ $messages['lt'] = array(
*/
$messages['ltg'] = array(
'languageselector' => 'Volūda',
+ 'languageselector-setlang' => 'nūstateit',
);
/** Macedonian (Македонски)
@@ -698,9 +763,19 @@ $messages['myv'] = array(
/** Nahuatl (Nāhuatl)
* @author Fluence
+ * @author Teòtlalili
*/
$messages['nah'] = array(
- 'languageselector' => 'Tlahtōlli',
+ 'languageselector' => 'Tlâtòlli',
+);
+
+/** Norwegian (bokmål) (Norsk (bokmål))
+ * @author Jon Harald Søby
+ */
+$messages['nb'] = array(
+ 'languageselector' => 'Språk',
+ 'languageselector-desc' => 'Valg av språk på alle sider, også for gjester',
+ 'languageselector-setlang' => 'sett',
);
/** Low German (Plattdüütsch)
@@ -730,15 +805,6 @@ $messages['nn'] = array(
'languageselector-setlang' => 'set',
);
-/** Norwegian (bokmål) (Norsk (bokmål))
- * @author Jon Harald Søby
- */
-$messages['no'] = array(
- 'languageselector' => 'Språk',
- 'languageselector-desc' => 'Valg av språk på alle sider, også for gjester',
- 'languageselector-setlang' => 'sett',
-);
-
/** Northern Sotho (Sesotho sa Leboa)
* @author Mohau
*/
@@ -755,7 +821,16 @@ $messages['oc'] = array(
'languageselector-setlang' => 'Definir',
);
-/** Ossetic (Иронау)
+/** Oriya (ଓଡ଼ିଆ)
+ * @author Jnanaranjan Sahu
+ */
+$messages['or'] = array(
+ 'languageselector' => 'ଭାଷା',
+ 'languageselector-desc' => 'ଭାଷା ଚୟନକାରୀ ସବୁ \
ପୃଷ୍ ାରେ, ଅତିଥି ମାନଙ୍କ ପାଇଁ \
ମଧ୍ୟ', + 'languageselector-setlang' => 'ସେଟ କରନ୍ତୁ',
+);
+
+/** Ossetic (Ирон)
* @author Amikeco
*/
$messages['os'] = array(
@@ -862,7 +937,16 @@ $messages['ru'] = array(
'languageselector-setlang' => 'установить',
);
-/** Yakut (Саха тыла)
+/** Rusyn ( усиньскый)
+ * @author Gazeb
+ */
+$messages['rue'] = array(
+ 'languageselector' => 'Язык',
+ 'languageselector-desc' => 'Выбер языка на каждій \
сторінцї і тыж про навщівників', \
+ 'languageselector-setlang' => 'становити', +);
+
+/** Sakha (Саха тыла)
* @author HalanTul
*/
$messages['sah'] = array(
@@ -871,7 +955,7 @@ $messages['sah'] = array(
'languageselector-setlang' => 'туруор',
);
-/** Tachelhit (Tašlḥiyt)
+/** Tachelhit (Tašlḥiyt/ⵜⴰⵛⵍⵃⵉⵜ)
* @author Zanatos
*/
$messages['shi'] = array(
@@ -916,7 +1000,7 @@ $messages['sli'] = array(
'languageselector-setlang' => 'setza',
);
-/** Serbian Cyrillic ekavian (Српски (ћирилица))
+/** Serbian (Cyrillic script) (Српски (ћирилица))
* @author Sasa Stefanovic
* @author Михајло Анђелковић
*/
@@ -926,7 +1010,7 @@ $messages['sr-ec'] = array(
'languageselector-setlang' => 'постави',
);
-/** Serbian Latin ekavian (Srpski (latinica))
+/** Serbian (Latin script) (Srpski (latinica))
* @author Michaello
*/
$messages['sr-el'] = array(
@@ -963,6 +1047,15 @@ $messages['sv'] = array(
'languageselector-setlang' => 'välj',
);
+/** Tamil (தமிழ்)
+ * @author Karthi.dr
+ * @author Mahir78
+ */
+$messages['ta'] = array(
+ 'languageselector' => 'மொழி',
+ 'languageselector-setlang' => 'அமை',
+);
+
/** Telugu (తెలుగు)
* @author Veeven
*/
@@ -981,7 +1074,7 @@ $messages['tet'] = array(
'languageselector-setlang' => 'hili',
);
-/** Tajik (Cyrillic) (Тоҷикӣ (Cyrillic))
+/** Tajik (Cyrillic script) (Тоҷикӣ)
* @author Ibrahim
*/
$messages['tg-cyrl'] = array(
@@ -989,7 +1082,7 @@ $messages['tg-cyrl'] = array(
'languageselector-desc' => 'Забон интихобкунанда дар ҳар \
саҳифа, барои ташрифоварандагон низ', );
-/** Tajik (Latin) (Тоҷикӣ (Latin))
+/** Tajik (Latin script) (tojikī)
* @author Liangent
*/
$messages['tg-latn'] = array(
@@ -1030,7 +1123,7 @@ $messages['tr'] = array(
'languageselector-setlang' => 'ayar',
);
-/** Tatar (Cyrillic) (Татарча/Tatarça (Cyrillic))
+/** Tatar (Cyrillic script) (Татарча)
* @author Ильнар
*/
$messages['tt-cyrl'] = array(
@@ -1038,7 +1131,7 @@ $messages['tt-cyrl'] = array(
'languageselector-setlang' => 'урнаштыру',
);
-/** Uighur (Latin) (ئۇيغۇرچە / Uyghurche (Latin))
+/** Uyghur (Latin script) (Uyghurche)
* @author Jose77
*/
$messages['ug-latn'] = array(
@@ -1117,11 +1210,12 @@ $messages['zh-hans'] = array(
/** Traditional Chinese (中文(繁體))
* @author Liangent
+ * @author Mark85296341
* @author Shinjiman
*/
$messages['zh-hant'] = array(
'languageselector' => '語言',
- 'languageselector-desc' => '在每一 面上添 語言選擇 \
,對匿名訪問者亦有效', + 'languageselector-desc' => '在每一 面上 \
入語言選擇 ,對匿名訪問者亦有效', 'languageselector-setlang' => \
'設定', );
diff --git a/extensions/LanguageSelector/LanguageSelector.js \
b/extensions/LanguageSelector/LanguageSelector.js index 860ca95..34665e2 100644
--- a/extensions/LanguageSelector/LanguageSelector.js
+++ b/extensions/LanguageSelector/LanguageSelector.js
@@ -1,4 +1,4 @@
-addOnloadHook(function() {
+$( function() {
var i = 1;
while ( true ) {
var btn = document.getElementById("languageselector-commit-"+i);
@@ -21,4 +21,4 @@ addOnloadHook(function() {
i++;
}
-});
\ No newline at end of file
+});
diff --git a/extensions/LanguageSelector/LanguageSelector.php \
b/extensions/LanguageSelector/LanguageSelector.php index e334035..dd05a96 100644
--- a/extensions/LanguageSelector/LanguageSelector.php
+++ b/extensions/LanguageSelector/LanguageSelector.php
@@ -44,8 +44,7 @@ $wgLanguageSelectorDetectLanguage = \
LANGUAGE_SELECTOR_PREFER_CLIENT_LANG;
/**
* Languages to offer in the language selector. Per default, this includes all \
languages MediaWiki knows
-* about by virtue of $wgLanguageNames. A shorter list may be more usable, though.
-* If the Polyglot extension is installed, $wgPolyglotLanguages is used as fallback.
+* about by virtue of languages/Names.php. A shorter list may be more usable, though.
*/
$wgLanguageSelectorLanguages = null;
@@ -75,150 +74,177 @@ $wgHooks['AddNewAccount'][] = \
'wfLanguageSelectorAddNewAccount'; $wgHooks['BeforePageDisplay'][] = \
'wfLanguageSelectorBeforePageDisplay'; $wgHooks['GetCacheVaryCookies'][] = \
'wfLanguageSelectorGetCacheVaryCookies'; $wgHooks['ParserFirstCallInit'][] = \
'wfLanguageSelectorSetHook'; +$wgHooks['UserGetLanguageObject'][] = \
'wfLanguageSelectorGetLanguageCode';
$wgExtensionFunctions[] = 'wfLanguageSelectorExtension';
$wgParserOutputHooks['languageselector'] = 'wfLanguageSelectorAddJavascript';
-$wgLanguageSelectorRequestedLanguage = null;
-$wgLanguageSelectorFormUsed = false;
-
+$wgResourceModules['ext.languageSelector'] = array(
+ 'scripts' => 'LanguageSelector.js',
+ 'localBasePath' => dirname( __FILE__ ),
+ 'remoteExtPath' => 'LanguageSelector'
+);
$dir = dirname(__FILE__) . '/';
$wgExtensionMessagesFiles['LanguageSelector'] = $dir . 'LanguageSelector.i18n.php';
$wgJSAutoloadClasses['LanguageSelector'] = \
'extensions/LanguageSelector/LanguageSelector.js';
-function wfLanguageSelectorSetHook() {
- global $wgParser;
- $wgParser->setHook( 'languageselector', 'wfLanguageSelectorTag' );
+/**
+ * @param $parser Parser
+ * @return bool
+ */
+function wfLanguageSelectorSetHook( $parser ) {
+ $parser->setHook( 'languageselector', 'wfLanguageSelectorTag' );
return true;
}
function wfLanguageSelectorExtension() {
- wfLoadExtensionMessages( 'LanguageSelector' );
- global $wgLanguageSelectorLanguages, $wgLanguageSelectorDetectLanguage,
- $wgLanguageSelectorRequestedLanguage, $wgLanguageSelectorLocation,
- $wgLanguageSelectorShowAll, $wgCommandLineMode;
- global $wgUser, $wgLang, $wgRequest, $wgCookiePrefix, $wgCookiePath, $wgHooks;
+ global $wgLanguageSelectorLocation,
+ $wgLanguageSelectorShowAll, $wgHooks;
- if ( $wgCommandLineMode ) {
- return true;
- }
+ // We'll probably be beaten to this by the call in \
wfLanguageSelectorGetLanguageCode(), + // but just in case, call this to make sure \
the global is properly initialised + wfGetLanguageSelectorLanguages();
- if ( $wgLanguageSelectorLanguages === null ) {
- $wgLanguageSelectorLanguages = @$GLOBALS['wgPolyglotLanguages'];
+ if ( $wgLanguageSelectorLocation != LANGUAGE_SELECTOR_MANUAL && \
$wgLanguageSelectorLocation != LANGUAGE_SELECTOR_AT_TOP_OF_TEXT ) { + switch ( \
$wgLanguageSelectorLocation ) { + case LANGUAGE_SELECTOR_IN_TOOLBOX:
+ $wgHooks['SkinTemplateToolboxEnd'][] = 'wfLanguageSelectorSkinHook';
+ break;
+ default:
+ $wgHooks['SkinTemplateOutputPageBeforeExec'][] = \
'wfLanguageSelectorSkinTemplateOutputPageBeforeExec'; + break;
+ }
}
+}
+function wfGetLanguageSelectorLanguages(){
+ global $wgLanguageSelectorLanguages, $wgLanguageSelectorShowAll;
if ( $wgLanguageSelectorLanguages === null ) {
$wgLanguageSelectorLanguages = array_keys( Language::getLanguageNames( \
!$wgLanguageSelectorShowAll ) ); sort( $wgLanguageSelectorLanguages );
}
+ return $wgLanguageSelectorLanguages;
+}
+
+/**
+ * Hook to UserGetLanguageObject
+ * @param $user User
+ * @param $code String
+ * @return bool
+ */
+function wfLanguageSelectorGetLanguageCode( $user, &$code ) {
+ global $wgLanguageSelectorDetectLanguage,
+ $wgCommandLineMode, $wgRequest, $wgContLang;
+
+ if ( $wgCommandLineMode ) {
+ return true;
+ }
$setlang = $wgRequest->getVal( 'setlang' );
- if ( $setlang && !in_array( $setlang, $wgLanguageSelectorLanguages ) )
- $setlang = null; //ignore invalid
+ if ( $setlang && !in_array( $setlang, wfGetLanguageSelectorLanguages() ) ) {
+ $setlang = null; // ignore invalid
+ }
if ( $setlang ) {
- setcookie( $wgCookiePrefix . 'LanguageSelectorLanguage', $setlang, 0, \
$wgCookiePath );
- $wgLanguageSelectorRequestedLanguage = $setlang;
+ $wgRequest->response()->setcookie( 'LanguageSelectorLanguage', $setlang );
+ $requestedLanguage = $setlang;
} else {
- $wgLanguageSelectorRequestedLanguage = \
@$_COOKIE[$wgCookiePrefix.'LanguageSelectorLanguage']; + $requestedLanguage = \
$wgRequest->getCookie( 'LanguageSelectorLanguage' ); }
- if ( $setlang && !$wgUser->isAnon() ) {
- if ( $setlang != $wgUser->getOption( 'language' ) ) {
- $wgUser->setOption( 'language', $wgLanguageSelectorRequestedLanguage );
- $wgUser->saveSettings();
- // Reset $wgLang so that user's language is immediately changed
- $wgLang = new StubUserLang;
+ if ( $setlang && !$user->isAnon() ) {
+ if ( $setlang != $user->getOption( 'language' ) ) {
+ $user->setOption( 'language', $requestedLanguage );
+ $user->saveSettings();
+ $code = $requestedLanguage;
}
}
- if ( !$wgRequest->getVal( 'uselang' ) && $wgUser->isAnon() ) {
-
- //NOTE: we need this for anons, so squids don't get confused.
- // but something is still wrong with caching...
- header( 'Vary: Cookie', false ); //hrm, this is pretty BAD.
- header( 'Vary: Accept-Language', false );
-
- if ( $wgLanguageSelectorRequestedLanguage || $wgLanguageSelectorDetectLanguage != \
LANGUAGE_SELECTOR_USE_CONTENT_LANG ) {
-
- if ( !class_exists( 'StubAutoLang' ) ) {
- class StubAutoLang extends StubObject {
- function __construct() {
- parent::__construct( 'wgLang' );
- }
-
- function __call( $name, $args ) {
- return $this->_call( $name, $args );
+ if ( !$wgRequest->getVal( 'uselang' ) && $user->isAnon() ) {
+ if ( $wgLanguageSelectorDetectLanguage != LANGUAGE_SELECTOR_USE_CONTENT_LANG ) {
+ if ( $requestedLanguage ) {
+ $code = $requestedLanguage;
+ } else {
+ $languages = $wgRequest->getAcceptLang();
+
+ // see if the content language is accepted by the client.
+ if ( $wgLanguageSelectorDetectLanguage != LANGUAGE_SELECTOR_PREFER_CONTENT_LANG
+ || !array_key_exists( $wgContLang->getCode(), $languages ) )
+ {
+
+ $supported = wfGetLanguageSelectorLanguages();
+ // look for a language that is acceptable to the client
+ // and known to the wiki.
+ foreach( $languages as $reqCode => $q ) {
+ if ( in_array( $reqCode, $supported ) ) {
+ $code = $reqCode;
+ break;
+ }
}
-
- //partially copied from StubObject.php. There should be a better way...
- function _newObject() {
- global $wgContLanguageCode, $wgContLang, $wgLanguageSelectorDetectLanguage, \
$wgLanguageSelectorRequestedLanguage;
-
- $code = $wgLanguageSelectorRequestedLanguage;
- if (!$code) $code = wfLanguageSelectorDetectLanguage( \
$wgLanguageSelectorDetectLanguage );
-
- if( $code == $wgContLanguageCode ) {
- return $wgContLang;
- } else {
- $obj = Language::factory( $code );
- return $obj;
+
+ // Apparently Safari sends stupid things like "de-de" only.
+ // Try again with stripped codes.
+ foreach( $languages as $reqCode => $q ) {
+ $stupidPHP = explode( '-', $reqCode, 2 );
+ $bareCode = array_shift( $stupidPHP );
+ if ( in_array( $bareCode, $supported ) ) {
+ $code = $bareCode;
+ break;
}
}
}
}
-
- $wgLang = new StubAutoLang;
- }
- }
-
- if ( $wgLanguageSelectorLocation != LANGUAGE_SELECTOR_MANUAL && \
$wgLanguageSelectorLocation != LANGUAGE_SELECTOR_AT_TOP_OF_TEXT ) {
- switch ( $wgLanguageSelectorLocation ) {
- case LANGUAGE_SELECTOR_IN_TOOLBOX:
- $wgHooks['SkinTemplateToolboxEnd'][] = 'wfLanguageSelectorSkinHook';
- break;
- default:
- $wgHooks['SkinTemplateOutputPageBeforeExec'][] = \
'wfLanguageSelectorSkinTemplateOutputPageBeforeExec';
- break;
}
}
+ return true;
}
+/**
+ * @param $out OutputPage
+ * @return bool
+ */
function wfLanguageSelectorBeforePageDisplay( &$out ) {
- global $wgExtensionAssetsPath, $wgLanguageSelectorLocation, \
$wgLanguageSelectorFormUsed; + global $wgLanguageSelectorLocation;
+
+ if ( $wgLanguageSelectorLocation == LANGUAGE_SELECTOR_MANUAL ) {
+ return true;
+ }
if ( $wgLanguageSelectorLocation == LANGUAGE_SELECTOR_AT_TOP_OF_TEXT ) {
- $html = wfLanguageSelectorHTML();
+ $html = wfLanguageSelectorHTML( $out->getTitle() );
$out->mBodytext = $html . $out->mBodytext;
}
- if ( $wgLanguageSelectorFormUsed ||
- $wgLanguageSelectorLocation != LANGUAGE_SELECTOR_MANUAL )
- {
- $out->addScriptFile( $wgExtensionAssetsPath .
- '/LanguageSelector/LanguageSelector.js' );
- }
+ $out->addModules( 'ext.languageSelector' );
return true;
}
-function wfLanguageSelectorGetCacheVaryCookies( &$cookies ) {
+function wfLanguageSelectorGetCacheVaryCookies( $out, &$cookies ) {
global $wgCookiePrefix;
-
$cookies[] = $wgCookiePrefix.'LanguageSelectorLanguage';
-
return true;
}
-function wfLanguageSelectorSkinHook( &$out ) {
- $html = wfLanguageSelectorHTML();
+/**
+ * @param $skin Skin
+ * @return bool
+ */
+function wfLanguageSelectorSkinHook( &$skin ) {
+ $html = wfLanguageSelectorHTML( $skin->getTitle() );
print $html;
return true;
}
+/**
+ * @param $input String
+ * @param $args Array
+ * @param $parser Parser
+ * @return string
+ */
function wfLanguageSelectorTag( $input, $args, $parser ) {
$style = @$args['style'];
$class = @$args['class'];
@@ -243,7 +269,7 @@ function wfLanguageSelectorTag( $input, $args, $parser ) {
$showcode = strtolower( $showcode );
if ( $showcode == "true" || $showcode == "yes" || $showcode == "on" ) {
$showcode = true;
- } else if ( $showcode == "false" || $showcode == "no" || $showcode == "off" ) {
+ } elseif ( $showcode == "false" || $showcode == "no" || $showcode == "off" ) {
$showcode = false;
} else {
$showcode = null;
@@ -255,26 +281,31 @@ function wfLanguageSelectorTag( $input, $args, $parser ) {
# So that this also works with parser cache
$parser->getOutput()->addOutputHook( 'languageselector' );
- return wfLanguageSelectorHTML( $style, $class, $selectorstyle, $buttonstyle, \
$showcode ); + return wfLanguageSelectorHTML( $parser->getTitle(), $style, $class, \
$selectorstyle, $buttonstyle, $showcode ); }
+/**
+ * @param $skin Skin
+ * @param $tpl QuickTemplate
+ * @return bool
+ */
function wfLanguageSelectorSkinTemplateOutputPageBeforeExec( &$skin, &$tpl ) {
- global $wgLanguageSelectorLocation, $wgLanguageSelectorLanguages;
- global $wgLang, $wgContLang, $wgTitle;
+ global $wgLanguageSelectorLocation;
+ global $wgLang, $wgContLang;
if ($wgLanguageSelectorLocation == LANGUAGE_SELECTOR_AS_PORTLET) {
$code = $wgLang->getCode();
$lines = array();
- foreach ($wgLanguageSelectorLanguages as $ln) {
+ foreach ( wfGetLanguageSelectorLanguages() as $ln ) {
$lines[] = array(
- $href = $wgTitle->getFullURL( 'setlang=' . $ln ),
+ $href = $skin->getTitle()->getFullURL( 'setlang=' . $ln ),
'text' => $wgContLang->getLanguageName($ln),
'href' => $href,
'id' => 'n-languageselector',
'active' => ($ln == $code),
);
}
-
+
$tpl->data['sidebar']['languageselector'] = $lines;
return true;
}
@@ -287,85 +318,19 @@ function wfLanguageSelectorSkinTemplateOutputPageBeforeExec( \
&$skin, &$tpl ) { case LANGUAGE_SELECTOR_INTO_SUBTITLE: $key = 'subtitle'; break;
case LANGUAGE_SELECTOR_INTO_CATLINKS: $key = 'catlinks'; break;
}
-
+
if ($key) {
- $html = wfLanguageSelectorHTML();
+ $html = wfLanguageSelectorHTML( $skin->getTitle() );
$tpl->set( $key, $tpl->data[ $key ] . $html );
}
return true;
}
-function wfLanguageSelectorDetectLanguage( $mode ) {
- global $wgContLang, $wgLanguageSelectorLanguages;
-
- $contLang = $wgContLang->getCode();
-
- if ( !$mode || $mode == LANGUAGE_SELECTOR_USE_CONTENT_LANG ) {
- return $contLang;
- }
-
- /**
- * get accepted languages from Accept-Languages
- * HTTP header.
- */
- $accept = @$_SERVER["HTTP_ACCEPT_LANGUAGE"];
-
- if ( empty( $accept ) )
- return $contLang;
-
- $accept = explode( ',', $accept );
-
- /**
- * normalize accepted languages
- */
- $languages = array();
- foreach ( $accept as $lan ) {
- @list( $value, $qpart ) = explode( ';', trim( $lan ) );
- $match = array();
- if( !isset( $qpart ) ) {
- $languages[$value] = 1.0;
- } elseif( preg_match( '/q\s*=\s*(\d*\.\d+)/', $qpart, $match ) ) {
- $languages[$value] = floatval( $match[1] );
- }
- }
-
- /**
- * see if the content language is accepted by the
- * client.
- */
- if ( $mode == LANGUAGE_SELECTOR_PREFER_CONTENT_LANG && array_key_exists( $contLang, \
$languages ) ) {
- return $contLang;
- }
-
- arsort( $languages, SORT_NUMERIC );
-
- /**
- * look for a language that is acceptable to the client
- * and known to the wiki.
- */
- foreach( $languages as $code => $q ) {
- /**
- * TODO: only accept languages for which an implementation exists.
- * this is disabled, because it's slow. Note that this code is
- * executed for every page request!
- */
- /*
- global $IP;
- $langfile="$IP/languages/Language".str_replace('-', '_', ucfirst($code)).".php";
- if(!file_exists($langfile)) {
- continue;
- }
- */
-
- if ( in_array( $code, $wgLanguageSelectorLanguages ) ) {
- return $code;
- }
- }
-
- return $contLang;
-}
-
+/**
+ * @param $u User
+ * @return bool
+ */
function wfLanguageSelectorAddNewAccount( $u ) {
global $wgUser, $wgLang;
@@ -380,20 +345,23 @@ function wfLanguageSelectorAddNewAccount( $u ) {
return true;
}
+/**
+ * @param $outputPage OutputPage
+ * @param $parserOutput ParserOutput
+ * @param $data
+ * @return void
+ */
function wfLanguageSelectorAddJavascript( $outputPage, $parserOutput, $data ) {
- global $wgLanguageSelectorFormUsed;
-
- $wgLanguageSelectorFormUsed = true;
+ $outputPage->addModules( 'ext.languageSelector' );
}
-function wfLanguageSelectorHTML( $style = null, $class = null, $selectorstyle = \
null, $buttonstyle = null, $showCode = null ) {
- global $wgLanguageSelectorLanguages, $wgTitle, $wgLang, $wgContLang, $wgScript,
- $wgLanguageSelectorShowCode, $wgLanguageSelectorFormUsed;
+function wfLanguageSelectorHTML( Title $title, $style = null, $class = null, \
$selectorstyle = null, $buttonstyle = null, $showCode = null ) { + global $wgLang, \
$wgContLang, $wgScript, + $wgLanguageSelectorShowCode;
if ( $showCode === null ) {
$showCode = $wgLanguageSelectorShowCode;
}
- $wgLanguageSelectorFormUsed = true;
static $id = 0;
$id += 1;
@@ -413,14 +381,14 @@ function wfLanguageSelectorHTML( $style = null, $class = null, \
$selectorstyle = 'action' => $wgScript,
'style' => 'display:inline;'
) );
- $html .= Xml::hidden( 'title', $wgTitle->getPrefixedDBKey() );
+ $html .= Html::Hidden( 'title', $title->getPrefixedDBKey() );
$html .= Xml::openElement('select', array(
'name' => 'setlang',
'id' => 'languageselector-select-' . $id,
'style' => $selectorstyle
) );
- foreach ( $wgLanguageSelectorLanguages as $ln ) {
+ foreach ( wfGetLanguageSelectorLanguages() as $ln ) {
$name = $wgContLang->getLanguageName( $ln );
if ( $showCode ) $name = wfBCP47( $ln ) . ' - ' . $name;
@@ -435,4 +403,3 @@ function wfLanguageSelectorHTML( $style = null, $class = null, \
$selectorstyle =
return $html;
}
-
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic