【问题标题】:how do I generate po file from php array?如何从 php 数组生成 po 文件?
【发布时间】:2012-01-05 22:04:52
【问题描述】:

我有一个 php 语言文件,它列出了数组中的值。

我想把它转换成 .po 文件。

php 文件如下所示:

<?php 

$LANG_ = array(

// advanced search buttons
"_search1"              => "Start Search",
"_search2"              => "Hide Search Box",
"_search3"              => "Search",

// page numbering
"_pn1"              => "Page %CURRENT_PAGE% of %TOTAL_PAGES%",
"_pn2"              => "<< First",
"_pn3"              => "Last >>",

// _tpl_article-add.php
"_tpl_article-add1"             => "Article Submission Form",
"_tpl_article-add2"             => "Submit Article",
"_tpl_article-add3"             => "Article Submitted Successfully",


// errors
"_err14"            => "Delete",
"_err144"           => "Display Image",
"_err15"            => "Edit",
"_err16"            => "View",

);
?>

这只是一个例子,文件本身很大,超过 3000 行。手动将其中的每一个都插入到 po 目录中会杀了我。有什么东西可以帮我自动完成吗?

我正在使用 poedit。

谢谢,我是新手,所以任何见解都会很有用...

【问题讨论】:

    标签: localization translation poedit po mo


    【解决方案1】:

    试试php2po,它将PHP 数组转换为PO 文件,并确保您的所有转义都是正确的。然后可以在 Poedit 或 Virtaal 等工具中编辑 PO 文件。

    【讨论】:

      【解决方案2】:

      第一个条目是文件头,查看现有的 gettext 文件 (-po) 需要什么。我对addslashes 所做的转义;也许你需要做更多。

      $fh = fopen("en.po", 'w');
      fwrite($fh, "#\n");
      fwrite($fh, "msgid \"\"\n");
      fwrite($fh,  "msgstr \"\"\n");
      
      foreach ($LANG_ as $key => $value) {
          $key = addslashes($key);
          $value = addslashes($value);
          fwrite($fh, "\n");
          fwrite($fh, "msgid \"$key\"\n");
          fwrite($fh, "msgstr \"$value\"\n");
      }
      fclose($fh);
      

      【讨论】:

      • hm,这看起来是一个很棒的解决方案......哦,如果我能理解那么多 php :))) 无论如何,我把它和我的数组放在一个 php 文件中,我得到了语法错误.关于 fclose...
      • 我没有测试代码,但fclose($fh); 看起来是正确的。此后可能会缺少换行符。
      • 我找到了,是fwrite($fh, "msgstr=\"$value\"\n);在n之后缺少"。我现在将对其进行测试并报告:)
      • hm,我得到 en.po 的文件似乎是空的 :( 我的意思是当我用 poedit 打开它时,里面什么都没有,这怎么可能?但是当我用普通的文本编辑器行查看它时有吗...嗯 :) 你已经帮我分配了。
      • 我在 msgid 和 msgstr 后面写了一个等号,应该是空白。将编辑答案
      猜你喜欢
      • 2011-01-31
      • 1970-01-01
      • 1970-01-01
      • 2013-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-14
      相关资源
      最近更新 更多