2012-01-26 7 views
2

現在、私が取り組んでいるプロジェクトにZend_Translateを適用しようとしています。通常のテキストは完璧に機能しますが、フォームの翻訳に問題があります。Zend_Translateを使った句読点の処理

翻訳アダプタは、Zend_TranslateをキーとしてZend_Registryに登録されています。フォームを表示する前に翻訳が行われる場合を除いて、ほとんどの場合、これは正常に動作します。

コードの例:下部ライン出力のビジネス情報 'に対し、「Bedrijfsgegevens」を仮定

$subformBusiness->setLegend(_('Bedrijfsgegevens') . ':'); 
$subformBusiness->setLegend(_('Bedrijfsgegevens')); 

が対応する翻訳ソースファイルに変換され、上側の線は「Bedrijfsgegevens」として出力されます。

私が知る限り、これを解決する方法は3つあります。これは、格納されたZend_Translate_Adapterをコロンと連結する前に呼び出すことで解決できますが、不要なコードがたくさんあります。もう1つの選択肢は、句読点を翻訳ファイルに組み込むことですが、それは句読点の種類ごとに翻訳が必要であることを意味します。 3番目のオプションは、単に凡例からコロンを削除することですが、それは私が探しているものではありません。

私の質問:Zend_Translateに句読点を無視するよう指示する方法はありますか?

+0

それは動作しませんか? $ subformBusiness-> setLegend(_( 'Bedrijfsgegevens:'));この休憩は翻訳されますか? – RockyFord

+0

それはうまくいくが、私は 'Bedrijfsgegevens'、 'Bedrijfsgegevens'を追加したくない。と 'Bedrijfsgegevens:'。別の方法が欠けていますが、これを使用していますが、もっと一般的なものを使用することをお勧めします。 – Lex

答えて

0

私が知る限り、Zend_Translateはリテラル文字列でのみ機能し、句読点機能は含まれていません。私が行うことは、伝説(あなたの3番目のオプション)からコロンを削除し、後でそれを何らかの形で追加するだけです(例えば、:after CSSプロパティを使用する)。

希望すると、

0

なぜ文字列に句読点を追加しないのですか?そうです、あなたは「伝説」と「伝説」の両方を翻訳する必要がありますが、それは私のためには完全に機能します。

例えば:あなたはコロンを連結していない場合

$subformBusiness->setLegend(_('Bedrijfsgegevens:')); 
$element->setLabel('This is a great label:'); 
+0

これはうまく動作しますが、私はむしろ句読点をフィルタリングする何かを使用したいと思います。 – Lex

+0

次に、Zend_Form_Elementを編集し、句読点を無視/置き換えるカスタム翻訳メソッドを作成することができます。 – guhemama

+0

PS:$ this-> getTranslator()オカレンスを探します。 – guhemama