summaryrefslogtreecommitdiff
path: root/rt/lib/RT/I18N
diff options
context:
space:
mode:
Diffstat (limited to 'rt/lib/RT/I18N')
-rw-r--r--rt/lib/RT/I18N/cs.pm40
-rw-r--r--rt/lib/RT/I18N/fr.pm10
-rwxr-xr-xrt/lib/RT/I18N/ru.pm4
3 files changed, 16 insertions, 38 deletions
diff --git a/rt/lib/RT/I18N/cs.pm b/rt/lib/RT/I18N/cs.pm
index 9b1573dee..59057d3ae 100644
--- a/rt/lib/RT/I18N/cs.pm
+++ b/rt/lib/RT/I18N/cs.pm
@@ -81,43 +81,21 @@ sub quant {
# Normal case:
# Note that the formatting of $num is preserved.
- #return( $handle->numf($num) . ' ' . $handle->numerate($num, @forms) );
- return( $handle->numerate($num, @forms) );
- # Most human languages put the number phrase before the qualified phrase.
+ return( $handle->numf($num) . ' ' . $handle->numerate($num, @forms) );
}
sub numerate {
- # return this lexical item in a form appropriate to this number
- my($handle, $num, @forms) = @_;
- my $s = ($num == 1);
-
- return '' unless @forms;
- return
- $s ? $forms[0] :
- ( $num > 1 && $num < 5 ) ? $forms[1] :
- $forms[2];
-}
-
-#--------------------------------------------------------------------------
+ # return this lexical item in a form appropriate to this number
+ my($handle, $num, @forms) = @_;
-sub numf {
- my($handle, $num) = @_[0,1];
- if($num < 10_000_000_000 and $num > -10_000_000_000 and $num == int($num)) {
- $num += 0; # Just use normal integer stringification.
- # Specifically, don't let %G turn ten million into 1E+007
- } else {
- $num = CORE::sprintf("%G", $num);
- # "CORE::" is there to avoid confusion with the above sub sprintf.
- }
- while( $num =~ s/^([-+]?\d+)(\d{3})/$1,$2/s ) {1} # right from perlfaq5
- # The initial \d+ gobbles as many digits as it can, and then we
- # backtrack so it un-eats the rightmost three, and then we
- # insert the comma there.
+ return '' unless @forms;
- $num =~ tr<.,><,.> if ref($handle) and $handle->{'numf_comma'};
- # This is just a lame hack instead of using Number::Format
- return $num;
+ my $fallback = (grep defined, @forms)[0];
+ return $forms[0] // $fallback if $num == 1;
+ return $forms[1] // $fallback
+ if $num > 1 and $num < 5;
+ return $forms[2] // $fallback;
}
RT::Base->_ImportOverlays();
diff --git a/rt/lib/RT/I18N/fr.pm b/rt/lib/RT/I18N/fr.pm
index 225376884..cd1273d7a 100644
--- a/rt/lib/RT/I18N/fr.pm
+++ b/rt/lib/RT/I18N/fr.pm
@@ -56,11 +56,11 @@ use strict;
use warnings;
sub numf {
- my ($handle, $num) = @_[0,1];
- my $fr_num = $handle->SUPER::numf($num);
- # French prefer to print 1000 as 1(nbsp)000 rather than 1,000
- $fr_num =~ tr<.,><,\x{A0}>;
- return $fr_num;
+ my ($handle, $num) = @_[0,1];
+ my $fr_num = $handle->SUPER::numf($num);
+ # French prefer to print 1000 as 1(nbsp)000 rather than 1,000
+ $fr_num =~ tr<.,><,\x{A0}>;
+ return $fr_num;
}
RT::Base->_ImportOverlays();
diff --git a/rt/lib/RT/I18N/ru.pm b/rt/lib/RT/I18N/ru.pm
index 783a0b174..c77e864e1 100755
--- a/rt/lib/RT/I18N/ru.pm
+++ b/rt/lib/RT/I18N/ru.pm
@@ -61,7 +61,7 @@ sub quant {
return $num unless @forms;
return $forms[3] if !$num && $forms[3];
- return $num .' '. $handle->numerate($num, @forms);
+ return $handle->numf($num) .' '. $handle->numerate($num, @forms);
}
sub numerate {
@@ -75,7 +75,7 @@ sub numerate {
} else {
$form = 2;
}
- return $forms[$form];
+ return $forms[$form] || (grep defined, @forms)[0];
}
RT::Base->_ImportOverlays();