Format numbers in translations

This commit is contained in:
Jakub Vrana 2012-06-04 17:44:04 -07:00
parent a2378af008
commit 7f1fcc2286
3 changed files with 10 additions and 3 deletions

View file

@ -45,7 +45,7 @@ function get_lang() {
*/ */
function lang($idf, $number = null) { function lang($idf, $number = null) {
global $LANG, $translations; global $LANG, $translations;
$translation = $translations[$idf]; $translation = (isset($translations[$idf]) ? $translations[$idf] : $idf);
if (is_array($translation)) { if (is_array($translation)) {
$pos = ($number == 1 ? 0 $pos = ($number == 1 ? 0
: ($LANG == 'cs' || $LANG == 'sk' ? ($number && $number < 5 ? 1 : 2) // different forms for 1, 2-4, other : ($LANG == 'cs' || $LANG == 'sk' ? ($number && $number < 5 ? 1 : 2) // different forms for 1, 2-4, other
@ -60,7 +60,11 @@ function lang($idf, $number = null) {
} }
$args = func_get_args(); $args = func_get_args();
array_shift($args); array_shift($args);
return vsprintf(($translation !== null ? $translation : $idf), $args); $format = str_replace("%d", "%s", $translation);
if ($format != $translation) {
$args[0] = number_format($number, 0, ".", lang(','));
}
return vsprintf($format, $args);
} }
function switch_lang() { function switch_lang() {

View file

@ -5,6 +5,7 @@ Link to descending order
Warn about selecting data without index Warn about selecting data without index
Allow specifying database in login form Allow specifying database in login form
Link to original table in EXPLAIN of SELECT * FROM table t Link to original table in EXPLAIN of SELECT * FROM table t
Format numbers in translations
MySQL: inform about disabled event_scheduler MySQL: inform about disabled event_scheduler
SQLite: support binary data SQLite: support binary data
PostgreSQL: approximate row count in table overview PostgreSQL: approximate row count in table overview

View file

@ -51,7 +51,9 @@ function put_file($match) {
function lang(\$translation, \$number) { function lang(\$translation, \$number) {
\$pos = $match2[2]\t\t: " . (preg_match("~\\\$LANG == '$_SESSION[lang]'.* \\? (.+)\n~U", $match2[1], $match3) ? $match3[1] : "1") . ' \$pos = $match2[2]\t\t: " . (preg_match("~\\\$LANG == '$_SESSION[lang]'.* \\? (.+)\n~U", $match2[1], $match3) ? $match3[1] : "1") . '
); );
return sprintf($translation[$pos], $number); $translation = str_replace("%d", "%s", $translation[$pos]);
$number = number_format($number, 0, ".", lang(\',\'));
return sprintf($translation, $number);
} }
'; ';
} else { } else {