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."; # $_t["es"]["My cat is large."] = "Mi gato esta grande.";
# #
# examples: # examples:
# print __("%s has %s apples.", array("Bill", "5")); # print __("%s has %s apples.", "Bill", "5");
# print __("This is a %h%s%h problem!", array("<b>","major","</b>")); # print __("This is a %h%s%h problem!", "<b>","major","</b>");
#
# deprecated usage:
# print __("%s has %s apples.", array("Bill", "5"));
include_once("common_po.inc"); include_once("common_po.inc");
function __($tag, $args=array()) { function __() {
global $_t; global $_t;
global $LANG; global $LANG;
# create the translation, if it doesn't exist, highlight it # 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]; $translated = $_t[$LANG][$tag];
if (!$translated) { if (empty($translated)) {
# if it's a supported language, but there isn't a translation, # if it's a supported language, but there isn't a translation,
# alert the visitor to the missing 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 # This condition is to reorganise the arguments in case of
# # deprecated usage. __("string", array("string","string"))
if (!empty($args)) { if (!empty($args[1]) && is_array($args[1])) {
while (list($k, $v) = each($args)) { array_unshift($args[1], $tag);
$translated = preg_replace("/\%[sh]/", $v, $translated, 1); $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; return $translated;