Mohsen Saboorian a écrit :
Hi list,
I'm trying to make a multilingual wiki, using Languages template provided on mediawiki.org: http://www.mediawiki.org/wiki/Template:Languages.
- Is there any way to change the whole wiki UI, as user chooses a
page on a sample language? 2. How can I support right to left languages?
Regards, Mohsen.
MediaWiki-l mailing list MediaWiki-l@lists.wikimedia.org http://lists.wikimedia.org/mailman/listinfo/mediawiki-l
1- I do that in my MultiLanguage Manager Extenssion : http://www.mediawiki.org/wiki/Extension:MultiLanguageManager
I only do it for guest user. the logged in users can choose their language in their account settings. there is no reason to overload their choice
if you use mediawiki >= 1.7.0
you can use the 'BeforePageDisplay' hooks to change the UI language
$wgHooks['BeforePageDisplay'][] = 'mlChangeLanguageForGuest'; //1.7.0
function mlChangeLanguageForGuest($out) { global $wgLang; global $wgUser; global $wgLanguageCode; if (!$wgUser->isLoggedIn()) { $page=Title::newFromText($out->getPageTitle()); if (get_class($page)=="Title") { $i=$page->getArticleID(); $controller=new MultiLanguageManager_controller();
MultiLanguageManager_controller::setUILanguage($controller->getPageLanguage($i)); } } }
public static function setUILanguage($lang) { global $wgLanguageCode,$wgLang,$wgLangClass; global $mgVersion; if ($mgVersion<10800) {
$wgLangClass = 'Language' . str_replace( '-', '_', ucfirst( $lang ) ); $wgLang = setupLangObj( $wgLangClass ); $wgLang->initEncoding(); $wgLanguageCode = $wgLang->getCode(); } else { $wgLang=Language::factory($lang); $wgLanguageCode = $wgLang->getCode();
} }
($mgVersion is contruct from the wiki version (x.y.z => (((x*100)+y)*100) +z
you can simplify this code if you don't want backward compatibility
Marc