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
|
||||
|
||||
Reference in New Issue
Block a user