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;
|
) ) + $personal_urls;
|
||||||
return true;
|
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.
|
* Add the template for the ULS to the body.
|
||||||
* Hooks: SkinAfterContent
|
* Hooks: SkinAfterContent
|
||||||
|
|||||||
@@ -60,6 +60,7 @@ $wgHooks['PersonalUrls'][] = 'UniversalLanguageSelectorHooks::addTrigger';
|
|||||||
$wgHooks['SkinAfterContent'][] = 'UniversalLanguageSelectorHooks::addTemplate';
|
$wgHooks['SkinAfterContent'][] = 'UniversalLanguageSelectorHooks::addTemplate';
|
||||||
$wgHooks['ResourceLoaderTestModules'][] = 'UniversalLanguageSelectorHooks::addTestModules';
|
$wgHooks['ResourceLoaderTestModules'][] = 'UniversalLanguageSelectorHooks::addTestModules';
|
||||||
$wgAPIModules['languagesearch'] = 'ApiLanguageSearch';
|
$wgAPIModules['languagesearch'] = 'ApiLanguageSearch';
|
||||||
|
$wgHooks['UserGetLanguageObject'][] = 'UniversalLanguageSelectorHooks::getLanguage';
|
||||||
|
|
||||||
$wgResourceModules['ext.uls.init'] = array(
|
$wgResourceModules['ext.uls.init'] = array(
|
||||||
'scripts' => 'resources/ext.uls.init.js',
|
'scripts' => 'resources/ext.uls.init.js',
|
||||||
|
|||||||
Reference in New Issue
Block a user