3

これと本当に苦労しています。

私は最近、文字列を抽出、連結、重複排除してWebiteのビューページ全体(使用中のMVCフレームワーク)から変換するbashシェルスクリプトを設定しました。これは次のようになります。

for x in *.php; do xgettext --no-wrap --language=PHP -e --flag=_:1:pass-c-format -a "$x" -o "${x%.php}.pot"; done
msgcat -u -s --output-file=$WEBSITENAME-concat.pot *.pot
msguniq -u --output-file=$WEBSITENAME-unique.pot $WEBSITENAME-concat.pot
msgmerge -s -v -U $WEBSITENAME.po $WEBSITENAME-unique.pot

上記は、克服するのが難しい順に、これら2つのことを除けば完全にうまく機能しています。

  1. すべてのウェブサイトのソースコードを通して、翻訳が必要なすべての文字列が関数_('ここで翻訳する文字列')で囲まれていることを確認するように注意しましたが、xgettextコマンドはファイル内のほとんどすべての文字列を私が抽出したものから抽出しています_('')関数で囲まれているものだけでなく、わかります。これは私の結果の.potを意味しますファイルには、変数名、URL、フォーマット文字列、関数パラメーター、構成データ、およびトランスレーターに渡してはならないその他の不適切な文字列が含まれています。ウェブサイトのサイズが原因で、これらを手動で削除することは実用的ではありません。80,000近くの文字列エントリを調べています。これは、次の6日以内に同じ方法で処理する必要がある数の最初のウェブサイトにすぎません。数週間!翻訳用の文字列のみを抽出するようにxgettextを構成するにはどうすればよいですか?

  2. 抽出された文字列の多くには改行があり、文字列内に\nとして挿入されます。これを行わないようにxgettextを構成する方法、またはこれらを削除する簡単な方法はありますか?

私はドキュメントを読み、特に問題番号の解決策を見つけるために何時間も何日もWebを検索してきました。1、そしてgettextの達人からの助けを本当に感謝します!前もって感謝します..

4

2 に答える 2

4

ここで推測するだけですが、最初に発生した問題は -a オプションが原因である可能性があります。xgettext マニュアルから:

-a, --extract-all           extract all strings

補足として、xgettext の呼び出しは非常に複雑に見えます。もちろん、あなたが何をしたいのか正確にはわかりませんが、私にとっては次のコマンドで十分です。

xgettext -L PHP --from-code=utf-8 *.php -o messages.pot

_()これにより、囲まれたすべての文字列が messages.pot に保存されます。

于 2011-05-18T14:25:49.083 に答える
0

ポイント1に対する可能な答え。

使用しているバージョンについてはわかりませんが、Delphi のバージョンでは、いくつかのコンポーネントを除外するために ggexclude.cfg というファイルを追加できます。

# exclude all occurences of the specified class
# and property in all DFM files in or below the
# path where "ggexclude.cfg" is in
[exclude-form-class-property]
TField.FieldName
...
于 2011-06-09T13:57:53.877 に答える