Index: wp-includes/locale.php
===================================================================
--- wp-includes/locale.php	(revision 19786)
+++ wp-includes/locale.php	(working copy)
@@ -186,14 +186,15 @@
 		/* translators: $dec_point argument for http://php.net/number_format, default is . */
 		$trans = __('number_format_decimal_point');
 		$this->number_format['decimal_point'] = ('number_format_decimal_point' == $trans) ? '.' : $trans;
+	}
 
-		// Locale-specific tweaks
-		if ( self::is_locale_rtl( get_locale() ) )
-			$this->text_direction = 'rtl';
-
+	function set_text_direction() {
 		// Import the $text_direction global.
 		if ( isset( $GLOBALS['text_direction'] ) )
 			$this->text_direction = $GLOBALS['text_direction'];
+		// Check against our defined RTL list.
+		elseif ( self::is_locale_rtl( get_locale() ) )
+			$this->text_direction = 'rtl';
 	}
 
 	/**
Index: wp-includes/l10n.php
===================================================================
--- wp-includes/l10n.php	(revision 19786)
+++ wp-includes/l10n.php	(working copy)
@@ -380,11 +380,11 @@
 function load_default_textdomain() {
 	$locale = get_locale();
 
-	load_textdomain( 'default', WP_LANG_DIR . "/$locale.mo" );
+	$result = load_textdomain( 'default', WP_LANG_DIR . "/$locale.mo" );
 
 	if ( ( is_multisite() || ( defined( 'WP_INSTALLING_NETWORK' ) && WP_INSTALLING_NETWORK ) ) && ! file_exists(  WP_LANG_DIR . "/admin-$locale.mo" ) ) {
 		load_textdomain( 'default', WP_LANG_DIR . "/ms-$locale.mo" );
-		return;
+		return $result;
 	}
 
 	if ( is_admin()  )
@@ -393,6 +393,7 @@
 	if ( is_network_admin() || ( defined( 'WP_INSTALLING_NETWORK' ) && WP_INSTALLING_NETWORK ) )
 		load_textdomain( 'default', WP_LANG_DIR . "/admin-network-$locale.mo" );
 
+	return $result;
 }
 
 /**
Index: wp-settings.php
===================================================================
--- wp-settings.php	(revision 19786)
+++ wp-settings.php	(working copy)
@@ -258,16 +258,14 @@
 wp_templating_constants(  );
 
 // Load the default text localization domain.
-load_default_textdomain();
-
-// Find the blog locale.
 $locale = get_locale();
-$locale_file = WP_LANG_DIR . "/$locale.php";
-if ( ( 0 === validate_file( $locale ) ) && is_readable( $locale_file ) )
-	require( $locale_file );
-unset($locale_file);
+if ( $locale_loaded = load_default_textdomain() ) {
+	$locale_file = WP_LANG_DIR . "/$locale.php";
+	if ( ( 0 === validate_file( $locale_file ) ) && is_readable( $locale_file ) )
+		require( $locale_file );
+	unset( $locale_file );
+}
 
-// Pull in locale data after loading text domain.
 require_once( ABSPATH . WPINC . '/locale.php' );
 
 /**
@@ -277,6 +275,10 @@
  */
 $GLOBALS['wp_locale'] = new WP_Locale();
 
+if ( $locale_loaded )
+	$GLOBALS['wp_locale']->set_text_direction();
+unset( $locale_loaded );
+
 // Load the functions for the active theme, for both parent and child theme if applicable.
 if ( ! defined( 'WP_INSTALLING' ) || 'wp-activate.php' === $pagenow ) {
 	if ( TEMPLATEPATH !== STYLESHEETPATH && file_exists( STYLESHEETPATH . '/functions.php' ) )
