New behaviour for translations. Function takes variable number of arguments.

The old string,array usage is still supported however. (for now)

Signed-off-by: Loui Chang <louipc.ist@gmail.com>
Signed-off-by: Simo Leone <simo@archlinux.org>
This commit is contained in:
Loui Chang 2008-03-26 14:22:12 -04:00 committed by Simo Leone
parent 04dae8d94f
commit ba9eda5503

View file

@ -17,31 +17,47 @@
# $_t["es"]["My cat is large."] = "Mi gato esta grande.";
#
# examples:
# print __("%s has %s apples.", "Bill", "5");
# print __("This is a %h%s%h problem!", "<b>","major","</b>");
#
# deprecated usage:
# print __("%s has %s apples.", array("Bill", "5"));
# print __("This is a %h%s%h problem!", array("<b>","major","</b>"));
include_once("common_po.inc");
function __($tag, $args=array()) {
function __() {
global $_t;
global $LANG;
# create the translation, if it doesn't exist, highlight it
#
$args = func_get_args();
# First argument is always string to be translated
$tag = $args[0];
$translated = $_t[$LANG][$tag];
if (!$translated) {
if (empty($translated)) {
# if it's a supported language, but there isn't a translation,
# alert the visitor to the missing translation.
#
$translated = "<font color=\"red\"><b>_" . $tag . "_</b></font>";
$translated = "<b style=\"color: red\">_${tag}_</b>";
}
# replace escape substitutions
#
if (!empty($args)) {
while (list($k, $v) = each($args)) {
$translated = preg_replace("/\%[sh]/", $v, $translated, 1);
# This condition is to reorganise the arguments in case of
# deprecated usage. __("string", array("string","string"))
if (!empty($args[1]) && is_array($args[1])) {
array_unshift($args[1], $tag);
$args = $args[1];
}
$num_args = sizeof($args);
# Subsequent arguments are strings to be formatted
if ( $num_args > 1 ) {
for ($i = 1; $i < $num_args; $i++) {
$translated = preg_replace("/\%[sh]/", $args[$i], $translated, 1);
}
}
return $translated;