X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=util%2Fpo2php.php;h=e1d3f50366e40805cb37c45e35b49c81cf96b02b;hb=c4d3ab68785122ff070c65a444aaa0833b746b2b;hp=15ee1cd2c22184ca7e0cea25bc6a6dba2b08ff60;hpb=89781ba428f553e8eb4f415832e7e575adf141e0;p=friendica.git diff --git a/util/po2php.php b/util/po2php.php index 15ee1cd2c2..e1d3f50366 100644 --- a/util/po2php.php +++ b/util/po2php.php @@ -1,72 +1,151 @@ \n\n"; + print "Usage: ".$argv[0]." \n\n"; return; } - - $mofile = $argv[1]; - $outfile = dirname($mofile)."/strings.php"; - - if (!file_exists($mofile)){ - print "Unable to find '$mofile'\n"; + + $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; } - + print "Out to '$outfile'\n"; - - $out="strings['.$k.'] = '; - } else { - $k = ""; - } + if (substr($l, 0, 15) == '"Plural-Forms: ') { + $match = []; + preg_match("|nplurals=([0-9]*); *plural=(.*)[;\\\\]|", $l, $match); + $cond = str_replace('n', '$n', $match[2]); + // define plural select function if not already defined + $fnname = 'string_plural_select_' . $lang; + $out .= 'if(! function_exists("' . $fnname . '")) {' . "\n"; + $out .= 'function '. $fnname . '($n){' . "\n"; + $out .= ' return ' . $cond . ';' . "\n"; + $out .= '}}' . "\n"; } - if ($k!="" && substr($l,0,7)=="msgstr "){ - $v = substr($l,7,$len-8); - $out .= $v; + if ($k != "" && substr($l, 0, 7) == "msgstr ") { + if ($ink) { + $ink = false; + $out .= '$a->strings["' . $k . '"] = '; + } + 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; } - if ($k!="" && substr($l,0,7)=="msgstr["){ + if ($k != "" && substr($l, 0, 7) == "msgstr[") { + if ($ink) { + $ink = false; + $out .= '$a->strings["' . $k . '"] = '; + } + if ($inv) { + $inv = false; + $out .= '"' . $v . '"'; + } + if (!$arr) { $arr=True; - $out .= "array(\n"; + $out .= "[\n"; } - $match=Array(); + $match = []; 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 . '"] = '; } - + + if ($ink) { + $k .= trim($l, "\"\r\n"); + $k = preg_replace_callback($escape_s_exp, 'escape_s', $k); + //$out .= '$a->strings['.$k.'] = '; + } + + if (substr($l, 0, 6) == "msgid ") { + if ($inv) { + $inv = false; + $out .= '"' . $v . '"'; + } + if ($k != "") { + $out .= ($arr) ? "];\n" : ";\n"; + } + $arr = false; + $k = str_replace("msgid ", "", $l); + if ($k != '""') { + $k = trim($k, "\"\r\n"); + } 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"); } - - if ($k!="") $out .= $arr?");\n":";\n"; - + + $out = str_replace(DQ_ESCAPE, '\"', $out); file_put_contents($outfile, $out); - + } -if (array_search(__file__,get_included_files())===0){ - po2php_run($argv,$argc); -} \ No newline at end of file +if (array_search(__FILE__, get_included_files()) === 0) { + po2php_run($_SERVER["argv"],$_SERVER["argc"]); +}