+
+wfProfileOut( $fname.'-User' );
+wfProfileIn( $fname.'-language2' );
+
+function setupLangObj(&$langclass) {
+ global $wgUseLatin1, $IP;
+
+ if( ! class_exists( $langclass ) ) {
+ # Default to English/UTF-8, or for non-UTF-8, to latin-1
+ $baseclass = 'LanguageUtf8';
+ if( $wgUseLatin1 )
+ $baseclass = 'LanguageLatin1';
+ require_once( "$IP/languages/$baseclass.php" );
+ $lc = strtolower(substr($langclass, 8));
+ $snip = "
+ class $langclass extends $baseclass {
+ function getVariants() {
+ return array(\"$lc\");
+ }
+
+ }";
+
+ eval($snip);
+ }
+
+ $lang = new $langclass();
+
+ return $lang;
+}
+
+# $wgLanguageCode may be changed later to fit with user preference.
+# The content language will remain fixed as per the configuration,
+# so let's keep it.
+$wgContLanguageCode = $wgLanguageCode;
+$wgContLangClass = 'Language' . str_replace( '-', '_', ucfirst( $wgContLanguageCode ) );
+
+$wgContLang = setupLangObj( $wgContLangClass );
+
+// set default user option from content language
+if( !$wgUser->mDataLoaded ) {
+ $wgUser->loadDefaultFromLanguage();
+}
+
+// wgLanguageCode now specifically means the UI language
+$wgLanguageCode = $wgUser->getOption('language');
+
+$wgLangClass = 'Language'. str_replace( '-', '_', ucfirst( $wgLanguageCode ) );
+
+if( $wgLangClass == $wgContLangClass ) {
+ $wgLang = &$wgContLang;
+} else {
+ wfSuppressWarnings();
+ include_once("$IP/languages/$wgLangClass.php");
+ wfRestoreWarnings();
+
+ $wgLang = setupLangObj( $wgLangClass );
+}
+
+wfProfileOut( $fname.'-language' );
+wfProfileIn( $fname.'-MessageCache' );
+
+$wgMessageCache = new MessageCache;
+$wgMessageCache->initialise( $messageMemc, $wgUseDatabaseMessages, $wgMsgCacheExpiry, $wgDBname);
+
+wfProfileOut( $fname.'-MessageCache' );
+
+#
+# I guess the warning about UI switching might still apply...
+#
+# FIXME: THE ABOVE MIGHT BREAK NAMESPACES, VARIABLES,
+# SEARCH INDEX UPDATES, AND MANY MANY THINGS.
+# DO NOT USE THIS MODE EXCEPT FOR TESTING RIGHT NOW.
+#
+# To disable it, the easiest thing could be to uncomment the
+# following; they should effectively disable the UI switch functionality
+#
+# $wgLangClass = $wgContLangClass;
+# $wgLanguageCode = $wgContLanguageCode;
+# $wgLang = $wgContLang;
+#
+# TODO: Need to change reference to $wgLang to $wgContLang at proper
+# places, including namespaces, dates in signatures, magic words,
+# and links
+#
+# TODO: Need to look at the issue of input/output encoding
+#
+
+
+wfProfileIn( $fname.'-OutputPage' );
+
+$wgOut = new OutputPage();
+wfDebug( "\n\n" );
+
+wfProfileOut( $fname.'-OutputPage' );
+wfProfileIn( $fname.'-DateFormatter' );
+
+if ( $wgUseDynamicDates ) {
+ require_once( 'DateFormatter.php' );
+ global $wgDateFormatter;
+ $wgDateFormatter = new DateFormatter;
+}
+
+wfProfileOut( $fname.'-DateFormatter' );
+wfProfileIn( $fname.'-BlockCache' );
+
+$wgBlockCache = new BlockCache( true );
+
+wfProfileOut( $fname.'-BlockCache' );
+wfProfileIn( $fname.'-misc2' );
+