PHPにない場合、POファイルを構造化された形式(XMLなど)に変換するコマンドラインツールを使用できますか、またはPHPで簡単に処理できますか?
質問する
6731 次
2 に答える
6
更新: 2018 年 5 月現在、最適なオプションは次のとおりです。
- https://github.com/oscarotero/Gettext
- https://symfony.com/doc/current/components/translation.html
- https://docs.zendframework.com/zend-i18n/translation/
http://www.phptherightway.com#i18n_l10n_titleを参照してください。
幾つかある:
- https://github.com/jyxo/php/tree/master/Jyxo/Gettext
- https://github.com/clinisbut/PHP-po-parser
- http://code.google.com/p/php-po-parser/
- http://pear.php.net/package/File_Gettext/redirected
- http://drupalcode.org/project/drupal.git/tree/HEAD:/core/lib/Drupal/Component/Gettext
最後の 1 つは Drupal の一部であり、おそらく最も保守されているものです。
于 2013-05-24T21:46:15.293 に答える
2
単純な正規表現を使用すると、.PO/.POT ファイルを解析できます。私も最近似たようなことをしました。最近書いたスクリプトから次の正規表現を取得します。
$poMsgIdAndMsgStrRegex = '/^#\s*(.+?)\nmsgid "(.+?)"\nmsgstr "(.+?)"/m';
これは最後のコメント行をキャプチャするだけですが、これまでのところ私の目的には適しています。適応させる必要があるかもしれません。
とにかく、上記の正規表現を使用して、すべての文字列を一致の配列にpreg_match_all()
キャプチャできます。配列を取得したら、任意の形式に配置できます。MsgId
MsgStr
これを行うためのライブラリがあるかもしれませんが、私は見たことがありません。
編集:「重複の可能性」コメントで参照されている .po ファイル .mo 形式を変換するための PHP クラスを確認することもできます。これで問題が解決するようには思えませんが (.po ファイルを XML に変換したいので)、とにかく調べる価値があります。とても助かりました。
于 2011-12-08T16:03:34.980 に答える