]> git.mxchange.org Git - friendica.git/blobdiff - util/po2php.php
catch stragglers in "chunked" delivery mode
[friendica.git] / util / po2php.php
index 1aa8adc1f8adbb28d96a416cf6bd9f6498efa9a2..147c4a58d0fb33036bbc8f88f3ab7634f4612572 100644 (file)
@@ -1,7 +1,8 @@
 <?php
+define("DQ_ESCAPE", "__DQ__");
 
 
-function po2php_run($argv, $argc) {
+function po2php_run(&$argv, &$argc) {
 
        if ($argc!=2) {
                print "Usage: ".$argv[0]." <file.po>\n\n";
@@ -10,7 +11,14 @@ function po2php_run($argv, $argc) {
        
        $pofile = $argv[1];
        $outfile = dirname($pofile)."/strings.php";
-       
+
+       if(strstr($outfile,'util'))
+               $lang = 'en';
+       else
+               $lang = str_replace('-','_',basename(dirname($pofile)));
+
+
+
        if (!file_exists($pofile)){
                print "Unable to find '$pofile'\n";
                return;
@@ -31,13 +39,14 @@ function po2php_run($argv, $argc) {
                return str_replace('$','\$',$match[0]);
        }
        foreach ($infile as $l) {
+               $l = str_replace('\"', DQ_ESCAPE, $l);
                $len = strlen($l);
                if ($l[0]=="#") $l="";
                if (substr($l,0,15)=='"Plural-Forms: '){
                        $match=Array();
-                       preg_match("|nplurals=([0-9]*); *plural=(.*)|", $l, $match);
+                       preg_match("|nplurals=([0-9]*); *plural=(.*)[;\\\\]|", $l, $match);
                        $cond = str_replace('n','$n',$match[2]);
-                       $out .= 'function string_plural_select($n){'."\n";
+                       $out .= 'function string_plural_select_' . $lang . '($n){'."\n";
                        $out .= '       return '.$cond.';'."\n";
                        $out .= '}'."\n";
                }
@@ -47,7 +56,7 @@ function po2php_run($argv, $argc) {
 
                if ($k!="" && substr($l,0,7)=="msgstr "){
                        if ($ink) { $ink = False; $out .= '$a->strings["'.$k.'"] = '; }
-                       if ($inv) {     $inv = False; $out .= '"'.$v.'"'; }
+                       if ($inv) { $inv = False; $out .= '"'.$v.'"'; }
                        
                        $v = substr($l,8,$len-10);
                        $v = preg_replace_callback($escape_s_exp,'escape_s',$v);
@@ -102,10 +111,11 @@ function po2php_run($argv, $argc) {
        
                
        }
-       
+
        if ($inv) {     $inv = False; $out .= '"'.$v.'"'; }
        if ($k!="") $out .= $arr?");\n":";\n";
        
+       $out = str_replace(DQ_ESCAPE, '\"', $out);
        file_put_contents($outfile, $out);
        
 }