diff --git a/UniversalLanguageSelector.hooks.php b/UniversalLanguageSelector.hooks.php index fc57bdf4..015ae9dd 100644 --- a/UniversalLanguageSelector.hooks.php +++ b/UniversalLanguageSelector.hooks.php @@ -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 diff --git a/UniversalLanguageSelector.php b/UniversalLanguageSelector.php index bc485f48..83f05e78 100644 --- a/UniversalLanguageSelector.php +++ b/UniversalLanguageSelector.php @@ -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',