diff options
author | xue <> | 2006-04-26 21:18:01 +0000 |
---|---|---|
committer | xue <> | 2006-04-26 21:18:01 +0000 |
commit | 8ab196ce6c2d5de323bdd8ebcc11a73814c0cdca (patch) | |
tree | e77b1306648d03920439290bb8f3e27821410804 /framework/I18N/core | |
parent | 5ba6cd4be568f686d890835a77586077cde1a943 (diff) |
Merge from 3.0 branch till 971.
Diffstat (limited to 'framework/I18N/core')
-rw-r--r-- | framework/I18N/core/DateFormat.php | 12 | ||||
-rw-r--r-- | framework/I18N/core/NumberFormat.php | 7 | ||||
-rw-r--r-- | framework/I18N/core/NumberFormatInfo.php | 18 |
3 files changed, 33 insertions, 4 deletions
diff --git a/framework/I18N/core/DateFormat.php b/framework/I18N/core/DateFormat.php index 9caca03b..142926f4 100644 --- a/framework/I18N/core/DateFormat.php +++ b/framework/I18N/core/DateFormat.php @@ -128,7 +128,12 @@ class DateFormat if($pattern{0} == "'"
&& $pattern{strlen($pattern)-1} == "'")
{
- $tokens[$i] = preg_replace('/(^\')|(\'$)/','',$pattern);
+ $sub = preg_replace('/(^\')|(\'$)/','',$pattern);
+ $tokens[$i] = str_replace('``````','\'',$sub);
+ }
+ else if($pattern == '``````')
+ {
+ $tokens[$i] = '\'';
}
else
{
@@ -145,7 +150,7 @@ class DateFormat throw new
Exception('function '.$function.' not found.');
}
- }
+ }
}
return I18N_toEncoding(implode('',$tokens), $charset);
@@ -269,6 +274,7 @@ class DateFormat $token = null;
$text = false;
+ $pattern = preg_replace("/''/", '``````', $pattern);
for($i = 0; $i < strlen($pattern); $i++)
{
@@ -278,7 +284,7 @@ class DateFormat }
else
{
- $tokens[] = str_replace("''","'",$token);
+ $tokens[] = str_replace("","'",$token);
$token = $pattern{$i};
}
diff --git a/framework/I18N/core/NumberFormat.php b/framework/I18N/core/NumberFormat.php index bde87e65..d1184f86 100644 --- a/framework/I18N/core/NumberFormat.php +++ b/framework/I18N/core/NumberFormat.php @@ -63,7 +63,7 @@ require_once(dirname(__FILE__).'/util.php'); * $ja = new NumberFormat('ja_JP');
*
* //Japanese currency pattern, and using Japanese Yen symbol
- * $ja->format(123.14,'c','JPY'); //ï¿?123 (Yen 123)
+ * $ja->format(123.14,'c','JPY'); //�?123 (Yen 123)
* </code>
* For each culture, the symbol for each currency may be different.
*
@@ -166,12 +166,17 @@ class NumberFormat $string = substr($string, 0, $dp);
$integer = '';
+
+ $digitSize = $this->formatInfo->getDigitSize();
+
+ $string = str_pad($string, $digitSize, '0',STR_PAD_LEFT);
$len = strlen($string);
$groupSeparator = $this->formatInfo->GroupSeparator;
$groupSize = $this->formatInfo->GroupSizes;
+
$firstGroup = true;
$multiGroup = is_int($groupSize[1]);
$count = 0;
diff --git a/framework/I18N/core/NumberFormatInfo.php b/framework/I18N/core/NumberFormatInfo.php index 15b9ee5d..3531cc7f 100644 --- a/framework/I18N/core/NumberFormatInfo.php +++ b/framework/I18N/core/NumberFormatInfo.php @@ -324,6 +324,13 @@ class NumberFormatInfo }
}
}
+
+ if(is_int($decimalPos))
+ $digitPattern = substr($pattern,0,$decimalPos);
+ else
+ $digitPattern = $pattern;
+
+ $digitPattern = preg_replace('/[^0]/','',$digitPattern);
$info['groupPos1'] = $groupPos1;
$info['groupSize1'] = $groupSize1;
@@ -331,6 +338,7 @@ class NumberFormatInfo $info['groupSize2'] = $groupSize2;
$info['decimalPos'] = $decimalPos;
$info['decimalPoints'] = $decimalPoints;
+ $info['digitSize'] = strlen($digitPattern);
return $info;
}
@@ -365,6 +373,16 @@ class NumberFormatInfo return $this->pattern['decimalPoints'] = $value;
}
+ function getDigitSize()
+ {
+ return $this->pattern['digitSize'];
+ }
+
+ function setDigitSize($value)
+ {
+ $this->pattern['digitSize'] = $value;
+ }
+
/**
* Gets the string to use as the decimal separator.
* @return string decimal separator.
|