aboutsummaryrefslogblamecommitdiffstats
path: root/util/php2po.php
blob: a29ba7459f036a020aad2b403f7a9a511c715e88 (plain) (tree)
1
2
3
4
5
6
7
8
9

     

                               

                                             
         
     
 













                                                               
 
                                   
 

                                

                

                                 
 
                                   


                                                                                                 
                                                              


                                                               

                                                                  
                                                                       
                                                                       

                                                        

                                                 
















                                                                                                                      

                         
                                                       
                                                                     
                                           


                                            
                                                         
                                                                       


                                           




                                         
<?php

    if(! class_exists('App')) {
        class App {
            static public $rtl;
            static public $strings = Array();
        }
    }

        if ($argc!=2) {
                print "Usage: ".$argv[0]." <hstrings.php>\n\n";
                return;
        }

        $phpfile = $argv[1];
        $pofile = dirname($phpfile)."/hmessages.po";

        if (!file_exists($phpfile)){
                print "Unable to find '$phpfile'\n";
                return;
        }

        include_once($phpfile);

        print "Out to '$pofile'\n";

        $out = "";
        $infile = file($pofile);
        $k = "";
        $c = "";
        $ink = False;
        foreach ($infile as $l) {

                $l = trim($l, " ");
                if (!preg_match("/^msgstr\[[1-9]/",$l)) {
                        if ($k!="" && (substr($l,0,7)=="msgstr " || substr($l,0,8)=="msgstr[0")){
                                $ink = False;
                                $k = str_replace('\"','"',$k);
                                $v = "";
                                if (isset(App::$strings[$k])) {
                                        $v = App::$strings[$k];
                                } else {
                                        $k = "__ctx:".$c."__ ".$k;
                                        if (isset(App::$strings[$k])) {
                                                $v = App::$strings[$k];
                                                $c = "";
                                        }
                                }
                                if (!empty($v)) {
                                        if (is_array($v)) {
                                                $l = "";
                                                $n = 0;
                                                foreach ($v as &$value) {
                                                        $l .= "msgstr[".$n."] \"".str_replace('"','\"',$value)."\"\n";
                                                        $n++;
                                                }
                                        } else {
                                                $l = "msgstr \"".str_replace('"','\"',$v)."\"\n";
                                        }
                                }
                        }

                        if (substr($l,0,6)=="msgid_" || substr($l,0,7)=="msgstr[") $ink = False;

                        if ($ink) {
                                $k .= trim($l,"\"\r\n");
                        }

                        if (substr($l,0,6)=="msgid ") {
                                preg_match('/^msgid "(.*)"$/',$l,$m);
                                $k = $m[1];
                                $ink = True;
                        }

                        if (substr($l,0,8)=="msgctxt ") {
                                preg_match('/^msgctxt "(.*)"$/',$l,$m);
                                $c = $m[1];
                        }

                        $out .= $l;
                }
        }
        file_put_contents($pofile, $out);
?>