]> git.mxchange.org Git - friendica.git/blobdiff - util/po2php.php
Merge remote branch 'upstream/master'
[friendica.git] / util / po2php.php
old mode 100644 (file)
new mode 100755 (executable)
index 66edd29..c703172
@@ -10,7 +10,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;
@@ -26,14 +33,18 @@ function po2php_run($argv, $argc) {
        $arr = False;
        $ink = False;
        $inv = False;
+       $escape_s_exp = '|[^\\\\]\$[a-z]|';
+       function escape_s($match){
+               return str_replace('$','\$',$match[0]);
+       }
        foreach ($infile as $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";
                }
@@ -46,6 +57,7 @@ function po2php_run($argv, $argc) {
                        if ($inv) {     $inv = False; $out .= '"'.$v.'"'; }
                        
                        $v = substr($l,8,$len-10);
+                       $v = preg_replace_callback($escape_s_exp,'escape_s',$v);
                        $inv = True;
                        //$out .= $v;
                }
@@ -59,7 +71,10 @@ function po2php_run($argv, $argc) {
                        }
                        $match=Array();
                        preg_match("|\[([0-9]*)\] (.*)|", $l, $match);
-                       $out .= "\t". $match[1]." => ". $match[2] .",\n";
+                       $out .= "\t". 
+                               preg_replace_callback($escape_s_exp,'escape_s',$match[1])
+                               ." => "
+                               .preg_replace_callback($escape_s_exp,'escape_s',$match[2]) .",\n";
                }
        
                if (substr($l,0,6)=="msgid_") { $ink = False; $out .= '$a->strings["'.$k.'"] = '; };
@@ -67,6 +82,7 @@ function po2php_run($argv, $argc) {
 
                if ($ink) {
                        $k .= trim($l,"\"\r\n"); 
+                       $k = preg_replace_callback($escape_s_exp,'escape_s',$k);
                        //$out .= '$a->strings['.$k.'] = ';
                }
                
@@ -80,17 +96,20 @@ function po2php_run($argv, $argc) {
                        } else {
                                $k = "";
                        }
+                       
+                       $k = preg_replace_callback($escape_s_exp,'escape_s',$k);
                        $ink = True;
                }
                
                if ($inv && substr($l,0,6)!="msgstr") {
                        $v .= trim($l,"\"\r\n"); 
+                       $v = preg_replace_callback($escape_s_exp,'escape_s',$v);
                        //$out .= '$a->strings['.$k.'] = ';
                }
        
                
        }
-       
+
        if ($inv) {     $inv = False; $out .= '"'.$v.'"'; }
        if ($k!="") $out .= $arr?");\n":";\n";
        
@@ -100,4 +119,4 @@ function po2php_run($argv, $argc) {
 
 if (array_search(__file__,get_included_files())===0){
   po2php_run($argv,$argc);
-}
\ No newline at end of file
+}