4

Web サイト (PHP でコーディング) を別の言語に翻訳する必要があります。これを処理するために Drupal とその機能を使用してきましたが、まだハードコーディングされた文字列が散らばっています。

ソースコードディレクトリ全体でそれらを見つけるのに役立つスクリプトまたはソフトウェアを知っていますか? 一番いいのは、それらを変更できることです。

4

2 に答える 2

1

i18nの文字列抽出を実行するための半自動化された方法はありますか?を参照してください。この問題を自動化して処理する方法について。リンク先の回答はJavaに固有ですが、同じエンジン/スキームがPHPでも正常に機能します。

それが多すぎる場合は、ソースコード検索エンジン(SCSE)でこれらを簡単に識別できるため、各文字列をどうするかを決めることができます。

SCSEは、生の文字テキストではなく言語構造に基づいて動作する一種のスーパーgrepです。クエリは、文字列ではなく言語トークンで表されます。SCSEは、ソースコードベースの多数のファイルのすべてのトークンにインデックスを付け、そのインデックスを使用して検索を最適化します。言語精度の高いレクサーを使用しているため、文字列、コメント、数値、キーワード、および空白の正確な境界を理解します。クエリは(言語)whitesphaceに依存しません。したがって、中央に「foo」が含まれる識別子に定数が割り当てられているすべての場所を見つけるには、次のクエリを記述します。

I=*foo* '=' N

ここで、クエリは、「ワイルドカード制約のあるI(識別子)を検索し、その後に言語トークン=、続いて任意のN(数値)を検索します。

これは、簡単なクエリでプログラム内のすべての文字列リテラルを見つけるのにすべて関係があります。

S

つまり、タイプや構文に関係なく、制約なしですべてのリテラルS(trings)を検索できます(PHPには多くのタイプの文字列リテラルがあります)。

結果のヒットはUIに表示できますが、OPの目的で、ロギングをオンにして、ツールにヒットとその場所を正確なファイルと行番号で提供させることができます。

SCSEには、PHPおよび他の多くの言語用のスキャナーがあります。

于 2011-11-18T04:15:12.560 に答える
0

いくつかのオプションが思い浮かびます。

EclipseなどのIDEを使用している場合、多くの場合、すべてのソースコードを検索できる検索機能があります。Eclipseでは、「検索」->「ファイル」に移動できます。

検索機能を備えたIDEを使用していないが、UNIXベースのサーバーのコマンドラインにアクセスできる場合は、再帰的なgrepを使用できます。例えば:

grep -r "sometext" /path/to/code

コマンドラインから再帰的な検索と置換を実行する場合は、findとsedを組み合わせて使用​​できます。

find /path/to/code -type f -print0 | xargs -0 sed -i 's/sometext/newtext/g'
于 2011-11-18T04:15:21.267 に答える