Index: functions.php
===================================================================
--- functions.php	(revision 11705)
+++ functions.php	(working copy)
@@ -140,13 +140,55 @@
 	// let the user override the precision only
 	$decimals = ( is_null( $decimals ) ) ? $wp_locale->number_format['decimals'] : intval( $decimals );
 
-	$num = number_format( $number, $decimals, $wp_locale->number_format['decimal_point'], $wp_locale->number_format['thousands_sep'] );
+	$num = wp_number_format( $number, $decimals, $wp_locale->number_format['decimal_point'], $wp_locale->number_format['thousands_sep'] );
 
 	// let the user translate digits from latin to localized language
 	return apply_filters( 'number_format_i18n', $num );
 }
 
 /**
+ * Format number according to localization
+ *
+ * PHP native function number_format unfortunatelly does not support
+ * decimal point or thousand separator longer than one character, e.g.
+ * like &nbsp;
+ * This function does support multi-char decimal point and thousands
+ * separator.
+ * Source code copied from http://www.php.net/number_format, comment
+ * by team at glossword dot biz. Thank you!
+ *
+ * @param mixed $number The number to convert based on locale.
+ * @param int $decimals Precision of the number of decimal places.
+ * @param string $dec_point Decimal point string
+ * @param string $thousands_sep Thousands separator
+ * @return string Converted number in string format.
+ */
+function wp_number_format($n, $decimals = 0, $dec_point = '.', $thousands_sep = ',') 
+{
+    $b = explode('.', $n);
+    $fract = sprintf('%0.'.$decimals.'f', '0.'.$b[1]);
+ 		if ($fract[0] == '1') {
+    	$b[0] = $b[0] + ($b[0] >= 0 ? 1 : -1);
+    	$fract[0] = '0';
+    }
+    $rn = '';
+    $l = strlen($b[0]);
+    /* Reverse string */
+    for ($i = $l; $i > 3; $i -= 3)
+    { 
+        $rn = $thousands_sep . substr($b[0], $i - 3, 3) . $rn;
+    }
+    /* sprintf() used to correct 0.79 to 0.790 */
+    /* str_replace() used to correct decimals */
+    /* str_repeat() used to correct decimals */
+    return substr($b[0], 0, $i) . $rn . ($decimals 
+            ? $dec_point.(isset($b[1]) 
+                ? str_replace('0.', '', $fract)
+                : str_repeat(0, $decimals))
+            : '');
+}
+
+/**
  * Convert number of bytes largest unit bytes will fit into.
  *
  * It is easier to read 1kB than 1024 bytes and 1MB than 1048576 bytes. Converts

