xmlファイルから文字列を抽出するようにpoeditを設定するには?
次のような .xml に Zend Framework ナビゲーション項目があります。
<entry-i>
<label>Text to translate</label>
<params>
...
<params>
<entry-i>
そして、poedit に<label>
s からのメッセージだけを読んでもらいたいのです。
xmlファイルから文字列を抽出するようにpoeditを設定するには?
次のような .xml に Zend Framework ナビゲーション項目があります。
<entry-i>
<label>Text to translate</label>
<params>
...
<params>
<entry-i>
そして、poedit に<label>
s からのメッセージだけを読んでもらいたいのです。
私も解決策を探していましたが、うまくいきました!
Poedit (私は 1.4.2 を持ってEdit > Preferences
います) で、次のプロパティを持つ新しいパーサー ( ) を追加します。
XML
*.xml
xgettext --force-po -o %o %C %K %F -L glade
-k%k
%f
--from-code=%c
翻訳プロジェクトで、キーワード リストに と を追加し、カタログを更新しますlabel
。title
Gladeエクストラクタを悪用して Glade以外のXML ファイルを解析するという上記のアドバイスは誤りです。うまく機能することは決してありません (適切な例: ここにいくつかのコメントがあります)。もちろん、2010 年に何もないよりはましでした。
gettext 0.19.7 (1.8.7 以降 Poedit にバンドルされています) から、より良い方法があります: ITS rulesによるカスタム XML ファイルの gettext のサポートが組み込まれました。
カスタム XML ファイルから文字列を抽出する最良の方法は、
-L glade
.its
の場所に配置します。.loc
Windows での Poedit の設定で問題が発生した場合、特に、glade と expat が利用できないというエラー メッセージが表示された場合は、提供されている xgettext.exe を gnuwin32 プロジェクトの最新のものに置き換えてください。
http://gnuwin32.sourceforge.net/packages/gettext.htm
バイナリと依存関係をダウンロードする必要があります。ただし、バイナリの xgettext.exe と関連ファイルのみを抽出する必要があります (実行するだけで何が足りないかがわかります)
PoEditはまだXMLをサポートしていないようです。
PoEditが理解できる.phpファイルにラベルを抽出するための小さなphpスクリプトを作成しました。
$xml = simplexml_load_file("../application/configs/navigation.xml")
or die("Error: Cannot open XML file");
echo '<?';
foreach($xml->xpath('//label') as $label){
echo 'echo _("'.$label.'");'. PHP_EOL;
}
うまくいきました!! Windows 7 で Poedit 1.4.6 を使用して「グレードがサポートされていません」という問題を見つけましたが、user496209 が言ったように、最後の gnuwin32 バイナリと依存関係をダウンロードして修正しました。PoEdit には独自の gettext ライブラリが付属しているため、完全なパッケージをダウンロードしないでください。バイナリと依存関係をダウンロードして、要求されたファイルを poedit フォルダーに置き換えます。