問題タブ [zend-translate]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - Zend_Locale、Zend_Translate、Zend_Form を使用したフォームでの Zend Framework のロケールと翻訳の問題
Zend_Locale と Zend_Translate、特に htmlentities でいくつかの問題が発生しています。しかし、他にも奇妙な点がいくつかあります。
まず、Zend_Locale のドキュメントには次のように記載されています。
Zend Framework では、アプリケーション全体のロケールを使用できます。キー「Zend_Locale」を使用して、Zend_Locale のインスタンスをレジストリに設定するだけです。次に、このインスタンスは、Zend Framework のすべてのロケール対応クラス内で使用されます。
これは Zend_Translate では機能しないようです。私は、Zend_Translate が「ロケール対応」クラスではないと想定しています。そうでないのは奇妙ですが、明示的に設定するだけで大きな問題はありませんでした。以下は、私の Bootstrap の initLocale() 関数です。
ご覧のとおり、Zend_Translate には配列アダプターを使用しています。私の配列はtranslation.phpで定義されています。
Zend_Form のドキュメント (http://framework.zend.com/manual/en/zend.form.i18n.html) の Zend_Locale と同様に、Zend_Form に翻訳を追加する最も簡単な方法は、レジストリに Zend_Translate オブジェクトを設定することです。 'Zend_Translate' のキーを使用 - 簡単です。これを設定すると、配列内で一致する翻訳を含むフォーム ラベル、エラー メッセージなどが自動的に翻訳されます。問題は、私のフランス語の翻訳に多くの htmlentities があることです。私は間違っている可能性がありますが、Zend_Form の setLabel メソッドはテキストをエスケープするため、私のエンティティは 2 回変換されていると思います。翻訳からすべてのエンティティを削除しようとしましたが、これは完全に失敗し、空白の出力が表示されます。
誰にもアイデアはありますか?翻訳用の htmlentities は必須のようですね。
現在、私はこれを自動的に行っていませんが、次のことを行う中間関数をフォームに追加しました ($this->_translate は Zend_Translate オブジェクトです):
しかし、すべての setLabel と errorMessage を最初にラップする必要があるため、これは理想とはほど遠いものであり、Zend のロケールと翻訳クラスの要点が欠けています。
zend-framework - Zend_Form_Element のトランスレータを無効にしますが、バリデータは無効にします
オブジェクトがZend_Form_Element_Select
あり、約 3k の選択オプションがあります。お客様から最適化の可能性をさらに調査するように依頼されたとき、デバッグ トレースを行ったところ、 への呼び出しが 3,000 を超え、 へZend_Form_Element_Multi->_translateValue
の呼び出しが少し少ないことに気付きましたZend_Form_Element_Multi->_translateOption
。set のオプションを見つけました$elem->setDisableTranslator(true)
。これは、必要のないこれらの翻訳を処理してくれました。しかし、問題は、エラー メッセージが翻訳されなくなったことです。
私が知りたいのは、値とオプションを翻訳するのではなく、Validator メッセージを翻訳する方法があるかどうかです。
私はこれを試しました:
しかし、役に立たない。
php - gettext.moファイルを上書きする
このアプリケーションでの翻訳には、gettextアダプターでZendTranslateを使用しています。各モジュールには、translations
すべての言語の.moファイルを含むフォルダーがあります。
- da.mo
- nl.mo
- en.mo
addTranslation()
次の方法でスキャンおよび追加されます。
私のアプリケーションの文字列は、_()
メソッドを使用して変換され、現在の言語をパラメーターとして渡します(フレームワークのLanguageクラスに格納されます)。
次に、特定の顧客向けにオランダ語(nl)の言語文字列をカスタマイズする必要があります。nl.mo
他の顧客に影響を与える可能性があるため、ファイルを変更したくありません。そこで、nl_kpn.mo
(kpnは顧客名)というファイルを作成し、$this->language
を「nl_kpn」に切り替えました。Zend Transateがnl.mo
ベースファイルとして使用し、で見つかったカスタマイズされた文字列を上書きすることを期待していましたnl_kpn.mo
。しかし、残念ながら、マニュアルに記載されているように、私は経験しました:
fr_CHはfrにダウングレードされます
したがって、 「nl_kpn」に設定されていても、すべての文字列はnl.mo
ファイルからのものでした。$this->language
では、一般的な言語の文字列をオーバーライドして、より具体的なバージョンの言語を作成するにはどうすればよいでしょうか。それは可能であるに違いありませんね?同じ言語の異なる「方言」であるen_UKとen_USもあるからです。
zend-framework - ZF の gettext アダプターを使用してルート セグメントを変換する
Zend Framework でルート変換を試してみたいのですが、gettext アダプターを使用しており、ほとんどのチュートリアルには PHP 変換アダプターが含まれているため、機能させるのに問題があります。
メインの Bootstrap.php には、ルートを設定するメソッドがあります。
これは/about
パスに対して機能します。Zend_Translate を設定したコードを貼り付けますが、基本的*.mo
には現在のセッション言語に応じてファイルをロードします。
これは、多くの場合、ルーティングに呼び出さprior
れます。
私の質問: gettext をルートの変換アダプターとして使用でき@about
ますか? できる?万歳!どのように?
php - POEdit/xgettextで変数を翻訳する
PHP、Zend Framework、Zend_Translate(gettextアダプター)を使用しています。翻訳を編集するには、xgettextを利用して翻訳対象の文字列をフェッチするPOEditを使用します。
POEdit(xgettext)は、翻訳する文字列を見つけるためにキーワードを検索します。したがって、キーワードを検索する場合、テキストが次のように直接翻訳関数に渡されるときにtranslate
、POEditは文字列を問題なく見つけることができます。'Text to translate'
ただし、多くの場合、文字列は、変数をパラメーターとして使用してtranslate関数を呼び出して、変換を行うZend関数に渡されます。
これにより、POEdit(xgettext)は翻訳する文字列の検索に失敗します。上記の例では、POEditで検索したい文字列はですが、関数に'Another text to translate'
直接渡されないため、検索されません。translate
では、どのように問題を解決するのですか?
私の現在の解決策は、POEditで見つからなかったすべての文字列の長いリストを含むダミーファイルを作成することです。
ただし、このソリューションの欠点は、文字列を更新するときに、ダミーファイルを変更して元の文字列を見つける必要があることです。これにより、保守がより困難になります。
私が考えた別の解決策は、呼び出し後にコメントに翻訳文字列を追加することでしたSomeZendFunction
(上記の例を参照)が、コメントを無視するため、xgettextにそれを受け入れさせることができません。
それで、コメント内の文字列を受け入れるようにxgettextを作成する方法を知っている人はいますか?または誰かがより良いかもしれない他の解決策を持っていますか?
助けてくれてありがとう!
編集:
なぜ私が反対票を投じられたのかわかりません。しかし、私は質問を明確にしようとしました。
zend-framework - Zend_Form の multioptions の自動変換によりソート順が崩れる
次の問題があります。Zend_Select 要素を作成し、配列に multioptions を追加します。Zend は自動的にオプションを変換します。その後、複数オプションが正しくソートされません。
現在、私の唯一のオプションは次のようです。
これを行うためのより良い方法を知っている人はいますか?
zend-framework - 特別なコントローラーの変換を無効にする
コントローラの言語翻訳を無効にする可能性はありますか? この例のコントローラーは画像のみを配信します。
ティアマット
zend-framework - Zend フレームワーク - 翻訳された URL の重複
これらの URL を持っています
移動可能なルートが使用され、魅力的に機能します。しかし問題は、いつ書くかということです
それも同様に機能します。
一般的に、あなたが持っているとき
someController へのルートは、引き続き機能します
それは本当にコントローラーの名前だからです。
この重複コンテンツの問題をどのように解決しますか?
zend-framework - poEdit のフォーム内の addMultiOption テキストの ZEND 翻訳
Zend_Form で翻訳が機能しない理由がわかりません。選択のオプションを翻訳できるようにしたいと思います。今のところ、私は次のようなものを持っています:
私のフォームクラス:
私のブートストラップファイルには、次のようなものがあります。
そして、私がそれを呼び出すコントローラー、phtmlファイル、およびプラグインで正常に動作します
そしてプラグインで
しかし、それらの方法は形では機能しません。例外がスローされます:
警告: フォームによって例外がキャッチされました: キー 'translate' のエントリが登録されていませんスタック トレース: #0
php - ZF言語と翻訳
ZF 内で言語と翻訳を使用した適切な実例が必要です。
私の必要性は次のとおりです。言語が選択されていない場合、「en」をデフォルトにする必要があります。(ページの上部に lang セレクターがあります。) lang はセッションに保存する必要があります。翻訳は csv ファイルを介して行う必要があります。URLで言語を非表示にしたいので、可能であればルートを再構成する必要はありません。
いくつかのチュートリアルを見つけましたが、実際には機能していません...
どんな助けでも大歓迎です...よろしくアンドレア