6

MVC モデル全体をセットアップし、HTML ビューをテンプレートとして使用しています。しかし、ある時点で他の言語に翻訳したいドイツ語の文字列があります。

これを行う最善の方法は何ですか?Zend_Translate を使用しなければならないことはわかっていますが、ビュー テンプレートにある単語ごとに翻訳関数を 1 回呼び出す必要があるのでしょうか。

4

2 に答える 2

12

まず、翻訳の基礎として完全なフレーズを使用することをお勧めします。言葉に関しては、文の構造に関して言語が一貫していないという問題が常にあります。

次に、使用可能な Zend_Transalate アダプターのいずれかを選択する必要があります: Array、Csv、Gettext、Ini、Tbx、Tmx、Qt、Xliff、または XmlTm。それらのほとんどは、翻訳情報を格納するための業界標準へのアダプターであるため、最初と使いやすさのために Array、Csv、または Ini を選択すればおそらく十分でしょう。49.2.1を参照してください。Zend Framework マニュアルで使用する変換アダプターを決定する方法。

// setup your translation
$translate = new Zend_Translate('csv', '/my/path/source-de.csv', 'de');
$translate->addTranslation('/my/path/source-en.csv', 'en');
// add the translation adapter to the registry
Zend_Registry::set('Zend_Translate', $translate);

デフォルトの翻訳ソースとして標準化されたエントリZend_View_Helper_Translateにアクセスするがあるため、ビューで次を使用できます。Zend_RegistryZend_Translate

[...]
<title><?php echo this->translate('Title'); ?></title>
[...]
<p>You can also do <?php echo $this->translate('Hello %1$s', $this->userName); ?></p>
[...]

Zend_Translateこれは、このコンポーネントによって提供される機能の簡単な紹介であり、完全なプレゼンテーションではないことに注意してください。たとえば、翻訳アダプターが使用するロケールの決定については、多くのことが言えます。

ローカリゼーションは複雑な問題になるZend_Translate可能性があり、ここですべてを説明することはできないため、Zend Framework マニュアルの以下を読むことをお勧めします。

于 2008-11-21T08:15:44.280 に答える
1

いいえ、すべての単語を翻訳する必要はありません。この意味での翻訳のアイデアは、メッセージ翻訳のアイデアです。

私の現在のプロジェクトでは、2 種類の翻訳を行います。短いテキストになる場合は、読みやすくするためにソース コードに直接入力します。

IE

<?=$this->translate('Add');?>
<?=$this->translate('Delete');?>
<?=$this->translate('Are you sure you want to delete %1$s?', $thing);?>

ただし、メッセージがはるかに長い場合は、通常、標準に従って翻訳システム用にマークします。

<?=$this->translate('controller-action_form-information');?>

これは、翻訳ツールで非常に長いテキストに置き換えることができ、ビュー スクリプトを整然と保つことができるという考えです。

于 2008-11-21T09:06:10.497 に答える