-1

基本的に、私の zend フレームワーク Web サイト全体を多言語に変換しようとしています。当初、その計画はなく、ビュー コードは、接合点で使用できる単一のラッパー関数を使用せずに記述されました。zf プロジェクトのすべての phtml ファイルのコードを表示すると、次のようになります。

<div class="contact">
  <span class="edit">
    <a href="javascript:void(0);">edit</a></span>
    <h2>Job Board Info</h2>
    <div class="info-grid">
      <div class="field">Contact Name: </div>
      <div class="field-info">
           <?php echo "Good Guy";?>
      </div>
    </div>
    <div class="info-grid">
     <div class="field">Description: </div>
     <div class="field-info">
      <?php echo "He is a very good guy";?>
     </div>
    </div>
</div>

editContact NameGood GuyDescriptionHe is avery good guyなどのテキストのすべての phtml ファイルを検索し、 それらを次のように置き換えたい

<? echo translate("edit") ?>
<? echo translate("Contact Name") ?>
translate("Good Guy");
<? echo translate("Description") ?>
translate("He is avery good guy");

Zend Studioを使用して、すべての phtml ファイルで正規表現の検索と置換を実行できますが、これを実現するための正しい正規表現パターンがわかりません。上記のテキストは、すべてのテンプレートで固定されているわけではなく、単なる例です。正規表現は、すべての html コードをスキップし、テキストのみを見つけて、それらを次のように置き換える必要があります。. echo "text"のようにエコーされるテキストをtranslate("text")に置き換える必要がある場合。

または、できるだけ早くこれを達成するために、他の方法を提案してください。

4

1 に答える 1

1

私がすることは、たとえばTextCrawler(一度に複数のファイルを検索して置換するため)を使用して、単に

  • >edit<
  • >contact name: <
  • >Description: <

大文字と小文字の区別 をオフにして

  • ><?php echo translate("edit"); ?><
  • ><?php echo translate("Contact Name"); ?><
  • ><?php echo translate("Description"); ?><

(これは、翻訳したい単語のグループの数によって異なります。これは手動の方法です。このように「処理」するさまざまなものが膨大にある場合は、これにも正規表現を使用することをお勧めします)

..そして、エコー内のすでにPHP化されたテキストに関しては、実際に正規表現を使用します:

を検索し (.*)<.*echo.*["\'](.*)["\'].*>ます(これは多くの誤検知を引き起こす可能性があるため、もう少し具体的にしたい場合があります-具体的に「処理」したいファイルの内容に適していることを確認してください)

と置き換えます $1<?php echo translate("$2"); ?>

.. $1 ('search for' 条件の最初の括弧) は、行の空白など (インデントを維持しようとしている) を表し、 $2 (2 番目の括弧) は、最初にエコーされた文字列を表します。また、エコーされたテキストの正しい引用として"s とs の両方を取ります。'

そして科学への愛のために:

すべてのコードをバックアップしてください!

..このようなことをする前に:D

于 2013-08-19T11:32:17.233 に答える