aboutsummaryrefslogtreecommitdiffstats
path: root/util/php2po.php
diff options
context:
space:
mode:
Diffstat (limited to 'util/php2po.php')
-rw-r--r--util/php2po.php127
1 files changed, 68 insertions, 59 deletions
diff --git a/util/php2po.php b/util/php2po.php
index c165006a1..99578a12d 100644
--- a/util/php2po.php
+++ b/util/php2po.php
@@ -7,65 +7,74 @@
}
}
- if ($argc!=2) {
- print "Usage: ".$argv[0]." <hstrings.php>\n\n";
- return;
- }
-
- $phpfile = $argv[1];
- $pofile = dirname($phpfile)."/hmessages.po";
+ 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";
- if (!file_exists($phpfile)){
- print "Unable to find '$phpfile'\n";
- return;
- }
+ $out = "";
+ $infile = file($pofile);
+ $k="";
+ $ink = False;
+ foreach ($infile as $l) {
- include_once($phpfile);
+ 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];
+ }
+ 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";
+ }
+ }
+ }
- print "Out to '$pofile'\n";
-
- $out = "";
- $infile = file($pofile);
- $k="";
- $ink = False;
- foreach ($infile as $l) {
-
- if ($k!="" && substr($l,0,7)=="msgstr "){
- $ink = False;
- $v = '';
- //echo "DBG: k:'$k'\n";
- if (isset(App::$strings[$k])) {
- $v= App::$strings[$k];
- //echo "DBG\n";
- //var_dump($k, $v, App::$strings[$k], $v);
- //echo "/DBG\n";
-
- }
- //echo "DBG: v:'$v'\n";
- $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");
- $k = str_replace('\"','"',$k);
- }
-
- if (substr($l,0,6)=="msgid "){
- $arr=False;
- $k = str_replace("msgid ","",$l);
- if ($k != '""' ) {
- $k = trim($k,"\"\r\n");
- $k = str_replace('\"','"',$k);
- } else {
- $k = "";
- }
- $ink = True;
- }
-
- $out .= $l;
- }
- //echo $out;
- file_put_contents($pofile, $out);
-?> \ No newline at end of file
+ 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);
+?>