Index: wp-includes/l10n.php
===================================================================
--- wp-includes/l10n.php	(revision 5161)
+++ wp-includes/l10n.php	(working copy)
@@ -17,8 +17,7 @@
 	return $locale;
 }
 
-// Return a translated string.
-function __($text, $domain = 'default') {
+function translate($text, $domain) {
 	global $l10n;
 
 	if (isset($l10n[$domain]))
@@ -27,29 +26,24 @@
 		return $text;
 }
 
+// Return a translated string.
+function __($text, $domain = 'default') {
+	return translate($text, $domain);
+}
+
 // Echo a translated string.
 function _e($text, $domain = 'default') {
-	global $l10n;
-
-	if (isset($l10n[$domain]))
-		echo apply_filters('gettext', $l10n[$domain]->translate($text), $text);
-	else
-		echo $text;
+	echo translate($text, $domain);
 }
 
 function _c($text, $domain = 'default') {
-	global $l10n;
-
-	if ( isset($l10n[$domain]) )
-		$whole = apply_filters('gettext', $l10n[$domain]->translate($text), $text);
-	else
-		$whole = $text;
-
-	$trans = explode('|', $whole, 2); 
-	if ( isset( $trans[1] ) )
-		return $trans[1];
-	else
-		return $trans[0]; 	
+	$whole = translate($text, $domain);
+	$last_bar = strrpos($whole, '|');
+	if ( false == $last_bar ) {
+		return $whole;
+	} else {
+		return substr($whole, 0, $last_bar);
+	}
 }
 
 // Return the plural form.
@@ -57,7 +51,7 @@
 	global $l10n;
 
 	if (isset($l10n[$domain])) {
-		return $l10n[$domain]->ngettext($single, $plural, $number);
+		return apply_filters('ngettext', $l10n[$domain]->ngettext($single, $plural, $number), $single, $plural, $number);
 	} else {
 		if ($number != 1)
 			return $plural;

