aboutsummaryrefslogtreecommitdiffstats
path: root/util/po2php.php
diff options
context:
space:
mode:
Diffstat (limited to 'util/po2php.php')
-rw-r--r--util/po2php.php26
1 files changed, 16 insertions, 10 deletions
diff --git a/util/po2php.php b/util/po2php.php
index c703172af..d3e6d190c 100644
--- a/util/po2php.php
+++ b/util/po2php.php
@@ -30,6 +30,7 @@ function po2php_run($argv, $argc) {
$infile = file($pofile);
$k="";
$v="";
+ $ctx="";
$arr = False;
$ink = False;
$inv = False;
@@ -44,9 +45,10 @@ function po2php_run($argv, $argc) {
$match=Array();
preg_match("|nplurals=([0-9]*); *plural=(.*)[;\\\\]|", $l, $match);
$cond = str_replace('n','$n',$match[2]);
+ $out .= 'if(! function_exists("' . 'string_plural_select_' . $lang .'")) {' . "\n";
$out .= 'function string_plural_select_' . $lang . '($n){'."\n";
$out .= ' return '.$cond.';'."\n";
- $out .= '}'."\n";
+ $out .= '}}'."\n";
}
@@ -91,23 +93,27 @@ function po2php_run($argv, $argc) {
if ($k!="") $out .= $arr?");\n":";\n";
$arr=False;
$k = str_replace("msgid ","",$l);
- if ($k != '""' ) {
- $k = trim($k,"\"\r\n");
- } else {
- $k = "";
- }
-
+ $k = trim($k,"\"\r\n");
+ $k = $ctx.$k;
+ // echo $ctx ? $ctx."\nX\n":"";
$k = preg_replace_callback($escape_s_exp,'escape_s',$k);
+ $ctx = "";
$ink = True;
}
- if ($inv && substr($l,0,6)!="msgstr") {
+ if ($inv && substr($l,0,6)!="msgstr" && substr($l,0,7)!="msgctxt") {
$v .= trim($l,"\"\r\n");
$v = preg_replace_callback($escape_s_exp,'escape_s',$v);
//$out .= '$a->strings['.$k.'] = ';
}
-
-
+
+ if (substr($l,0,7)=="msgctxt") {
+ $ctx = str_replace("msgctxt ","",$l);
+ $ctx = trim($ctx,"\"\r\n");
+ $ctx = "__ctx:".$ctx."__ ";
+ $ctx = preg_replace_callback($escape_s_exp,'escape_s',$ctx);
+ }
+
}
if ($inv) { $inv = False; $out .= '"'.$v.'"'; }