]> git.mxchange.org Git - friendica.git/commitdiff
Convert .mo file to strings.php
authorfabrixxm <fabrix.xm@gmail.com>
Thu, 10 Mar 2011 23:21:05 +0000 (00:21 +0100)
committerfabrixxm <fabrix.xm@gmail.com>
Thu, 10 Mar 2011 23:21:05 +0000 (00:21 +0100)
util/po2php.php [new file with mode: 0644]

diff --git a/util/po2php.php b/util/po2php.php
new file mode 100644 (file)
index 0000000..15ee1cd
--- /dev/null
@@ -0,0 +1,72 @@
+<?php
+
+function po2php_run($argv, $argc) {
+
+       if ($argc!=2) {
+               print "Usage: ".$argv[0]." <file.mo>\n\n";
+               return;
+       }
+       
+       $mofile = $argv[1];
+       $outfile = dirname($mofile)."/strings.php";
+       
+       if (!file_exists($mofile)){
+               print "Unable to find '$mofile'\n";
+               return;
+       }
+       
+       print "Out to '$outfile'\n";
+       
+       $out="<?php\n\n";
+       
+       $infile = file($mofile);
+       $k="";
+       $arr = False;
+       
+       foreach ($infile as $l) {
+               $len = strlen($l);
+               if (substr($l,0,15)=='"Plural-Forms: '){
+                       $match=Array();
+                       preg_match("|nplurals=([0-9]*); plural=(.*);|", $l, $match);
+                       $cond = str_replace('n','$n',$match[2]);
+                       $out .= 'function string_plural_select($n){'."\n";
+                       $out .= '       return '.$cond.';'."\n";
+                       $out .= '}'."\n";
+               }
+               
+               if (substr($l,0,6)=="msgid "){
+                       if ($k!="") $out .= $arr?");\n":";\n";
+                       $arr=False;
+                       $k = substr($l,6, $len-7);
+                       if ($k != '""' ) {
+                               $out .= '$a->strings['.$k.'] = ';
+                       } else {
+                               $k = "";
+                       }
+               }
+
+               if ($k!="" && substr($l,0,7)=="msgstr "){
+                       $v = substr($l,7,$len-8);
+                       $out .= $v;
+               }
+               if ($k!="" && substr($l,0,7)=="msgstr["){
+                       if (!$arr) {
+                               $arr=True;
+                               $out .= "array(\n";
+                       }
+                       $match=Array();
+                       preg_match("|\[([0-9]*)\] (.*)|", $l, $match);
+                       $out .= "\t". $match[1]." => ". $match[2] .",\n";
+               }
+               
+       }
+       
+       if ($k!="") $out .= $arr?");\n":";\n";
+       
+       file_put_contents($outfile, $out);
+       
+}
+
+if (array_search(__file__,get_included_files())===0){
+  po2php_run($argv,$argc);
+}
\ No newline at end of file