Language Stickiness
* use setlang parameter to change language preference * language preference will be persistant for all users * for anonymous users, cookie 'language' will be used * for logged in users, preference 'language' will be used * uselang parameter can be used for temporary switching * language codes will be sanitized. Change-Id: I2472aee9a7dcd824b622edd38e83f20212f09945
This commit is contained in:
@@ -60,6 +60,39 @@ class UniversalLanguageSelectorHooks {
|
||||
) ) + $personal_urls;
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Hook to UserGetLanguageObject
|
||||
* @param $user User
|
||||
* @param $code String
|
||||
* @return bool
|
||||
*/
|
||||
public static function getLanguage( $user, &$code ) {
|
||||
global $wgRequest;
|
||||
if ( $wgRequest->getVal( 'uselang' ) ) {
|
||||
// uselang can be used for temporary override of language preference
|
||||
return true;
|
||||
}
|
||||
$setlang = $wgRequest->getVal( 'setlang' );
|
||||
if ( $setlang ) {
|
||||
if ( $user->isAnon() ) {
|
||||
$wgRequest->response()->setcookie( 'language', $setlang );
|
||||
} else {
|
||||
$user->setOption( 'language', $setlang );
|
||||
$user->saveSettings();
|
||||
}
|
||||
$code = $setlang;
|
||||
} else {
|
||||
if ( $user->isAnon() ) {
|
||||
$code = $wgRequest->getCookie( 'language' );
|
||||
} else {
|
||||
$code = $user->getOption( 'language' );
|
||||
}
|
||||
}
|
||||
$code = RequestContext::sanitizeLangCode( $code );
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add the template for the ULS to the body.
|
||||
* Hooks: SkinAfterContent
|
||||
|
||||
@@ -60,6 +60,7 @@ $wgHooks['PersonalUrls'][] = 'UniversalLanguageSelectorHooks::addTrigger';
|
||||
$wgHooks['SkinAfterContent'][] = 'UniversalLanguageSelectorHooks::addTemplate';
|
||||
$wgHooks['ResourceLoaderTestModules'][] = 'UniversalLanguageSelectorHooks::addTestModules';
|
||||
$wgAPIModules['languagesearch'] = 'ApiLanguageSearch';
|
||||
$wgHooks['UserGetLanguageObject'][] = 'UniversalLanguageSelectorHooks::getLanguage';
|
||||
|
||||
$wgResourceModules['ext.uls.init'] = array(
|
||||
'scripts' => 'resources/ext.uls.init.js',
|
||||
|
||||
Reference in New Issue
Block a user