0

ファイルに翻訳する文字列を自動的に抽出する方法がわかりません。

たとえば、レイアウトとビューがいくつかecho $this->translate('my_string');あり、比較配列を使用してファイル「en_US.php」、「fr_FR.php」、「es_ES.php」を作成したいとします。

<?php return array('my_string' => 'translation of my string'); ?>

出来ますか ?

ありがとう。

4

3 に答える 3

1

Zend_Translateアダプターを見て、1つを選択します。gettextアダプターを強くお勧めします。

ZendFrameworkアプリケーションにi18nを実装する方法は次のとおりです。

  1. ブートストラップ中に翻訳アダプターをセットアップする
  2. Zend_Registry :: set('Zend_Translate'、$ translate);を使用して、アダプタオブジェクトをレジストリに保存します。
  3. すべてのテキストを$translate->translate('これは翻訳可能なテキストです');と同等にラップします。
  4. 開発マシンに「gettext」をインストールします。
  5. poEditをインストールしてセットアップします。poEditはアプリケーションをスキャンし、翻訳可能なすべての文字列を検索します。次に、それらを.poファイルに保存します。このファイルは、他の言語用に編集および乗算できます。
  6. 完了したら、それを保存すると、poEditストアが.moファイルを作成します。Zend_Translategettextアダプターにはそれらが必要です。
于 2011-03-19T20:45:18.787 に答える
0

PHP を使用してプロジェクトを翻訳することは、小規模なプロジェクトでは便利であり、したがって、そのようなツールは必要ありません。

プロジェクトを解析し、指定された関数/メソッド ( ) を検索するpoeditなどのgettext用のツールがあります。POedit は、基本的に次のようなプレーン/テキスト ファイルで構成される .po ファイルを生成します。translate()

#: src/name.c:36
msgid "My name is %s.\n"
msgstr ""

翻訳に PHP ファイルを本当に使用する必要がある場合は、次のようなものを試してみてください(grep未テスト) :sedawk

echo "return array(" > mytranslation.php | \
grep "translate(" * | \
cut -f1 | \
sed -r 's@.*translate\((.*)\).*@\1 => "Not translated yet",@' >> mytranslation.php && \
echo ");" >> mytranslation.php 
于 2011-03-19T19:14:46.417 に答える