Index: wp-includes/l10n.php
===================================================================
--- wp-includes/l10n.php	(revision 12053)
+++ wp-includes/l10n.php	(working copy)
@@ -55,8 +55,10 @@
  * @return string Translated text
  */
 function translate( $text, $domain = 'default' ) {
-	$translations = &get_translations_for_domain( $domain );
-	return apply_filters('gettext', $translations->translate($text), $text, $domain);
+	global $l10n;
+
+	$translation = isset($l10n[$domain]) ? $l10n[$domain]->translate($text) : $text;
+	return apply_filters('gettext', $translation, $text, $domain);
 }
 
 function before_last_bar( $string ) {
@@ -84,8 +86,10 @@
 }
 
 function translate_with_gettext_context( $text, $context, $domain = 'default' ) {
-	$translations = &get_translations_for_domain( $domain );
-	return apply_filters( 'gettext_with_context', $translations->translate( $text, $context ), $text, $context, $domain);
+	global $l10n;
+
+	$translation = isset($l10n[$domain]) ? $l10n[$domain]->translate($text, $context) : $text;
+	return apply_filters('gettext_with_context', $translation, $text, $context, $domain);
 }
 
 /**
@@ -236,8 +240,13 @@
  * @return string Either $single or $plural translated text
  */
 function _n($single, $plural, $number, $domain = 'default') {
-	$translations = &get_translations_for_domain( $domain );
-	$translation = $translations->translate_plural( $single, $plural, $number );
+	global $l10n;
+
+	if ( isset($l10n[$domain]) )
+		$translation = $l10n[$domain]->translate_plural( $single, $plural, $number );
+	else
+		$translation = 1 == $number ? $single : $plural;
+
 	return apply_filters( 'ngettext', $translation, $single, $plural, $number, $domain );
 }
 
@@ -251,8 +260,13 @@
 }
 
 function _nx($single, $plural, $number, $context, $domain = 'default') {
-	$translations = &get_translations_for_domain( $domain );
-	$translation = $translations->translate_plural( $single, $plural, $number, $context );
+	global $l10n;
+
+	if ( isset($l10n[$domain]) )
+		$translation = $l10n[$domain]->translate_plural( $single, $plural, $number, $context );
+	else
+		$translation = 1 == $number ? $single : $plural;
+
 	return apply_filters( 'ngettext_with_context', $translation, $single, $plural, $number, $context, $domain );
 }
 
@@ -396,22 +410,6 @@
 }
 
 /**
- * Returns the Translations instance for a domain. If there isn't one,
- * returns empty Translations instance.
- *
- * @param string $domain
- * @return object A Translation instance
- */
-function &get_translations_for_domain( $domain ) {
-	global $l10n;
-	$empty = &new Translations;
-	if ( isset($l10n[$domain]) )
-		return $l10n[$domain];
-	else
-		return $empty;
-}
-
-/**
  * Translates role name. Since the role names are in the database and
  * not in the source there are dummy gettext calls to get them into the POT
  * file and this function properly translates them back.
