2012-05-03 9 views
5

私はgettextを使っていくつかのtranslataionsを持っているWebアプリケーションを持っています。しかし、今ではアプリケーションの大規模な書き直しを行っていますが、文字列の大部分は同じですが、大幅に変更されたり削除されたりする文字列もあります。未使用のgettext文字列を自動的に削除するにはどうすればいいですか?

私はxgettextを使用して.poファイルを作成します。コード内に新しい文字列を見つけて.poファイルに追加することは可能ですが、そうでない文字列を削除するオプションはありませんコード内にあります。

コードに含まれていない.poファイルから文字列を削除する自動化された方法はありますか?

+1

自動化されていませんが、私の回避策はxgettextを2回実行することです。最初の実行では、パラメータ--no-locationを使用します。 2回目の実行では、その場所がファイルに戻されます。今や使用されなくなったテキスト文字列は場所を持たず、削除のために容易に識別することができます。 – getSurreal

答えて

0

Сanので

あなたはあなたができる、 messages.potというファイルに、最終的なPOカタログにする必要があります 文字列のみが含まれている新鮮なPOテンプレートファイルを持っている、とmessage.poでPOカタログをターゲット仮に
find . -name '*.po' -print0 | while read -d '' -r file; do msgattrib --output-file="$file" --no-obsolete "$file"; done 
3

これを行う:

msgattrib --set-obsolete --ignore-file=messages.pot -o messages.po messages.po 

これは古い文字列をマークします。 --set-obsoleteスイッチでは、msg385は、ターゲットファイルのすべての文字列にのフラグを適用します。--ignore-fileは、指定されたファイル(ここではPOテンプレート)に表示される文字列を無視するように指示します。

あなたはまた、それらを完全に削除したい場合は、一歩があります:

msgattrib --no-obsolete -o messages.po messages.po 

はあなたがmsgattribコマンドhereについての詳細を読むことができます。

関連する問題