2012-03-07 20 views
3

私は、cakephp(プロジェクトがそれで設定されているため、1.3バージョンを使用しています)にi18nの奇妙な概念があると言わなければなりません。 私は成功した静的な文字列を翻訳しましたが、動的な文字列を翻訳しました。ケーキのアイデアは多言語コンテンツを管理する方法が少しわかりました。 私はi18nテーブルを設定しました(後でそれをいくつかのテーブルに分割して動作させます)、翻訳動作を目的のモデルにアタッチしました。 これまでのところ、add-actionsではロケール(en_us、de_de ...)を含むselectフィールドを追加して、ユーザーが保存するかどうかを判断できるようにしました。 Bevoreはレコードを保存するために、使用するロケールをモデルに伝えるために$this->Modelname->locale = $locale;を実行しました。 レコードが正常に保存されましたが、ここで問題が発生します: - 私は多くのレコードを持つインデックスアクションを持っています。ユーザーに各アイテムごとに異なる翻訳ができるようにして欲しいです。 (私たち)とドイツ語に翻訳され、別のものが英語(私たち)、イタリア語、フランス語に翻訳されているのですが、どうすれば1つの翻訳を編集/削除することができますか? - 私は$this->Modelname->bindTranslation(...)ユーザーが編集するかどうかを決定できるようにロケール名を取得するか、これを達成するためのよりエレガントな方法がありますか?また、私がこれを行うとき:$this->Modelname->bindTranslation(...);を使用して、find() paginate()を使用すると、変換は返されません。=/Cakephp i18n翻訳ロケールを取得する

私は誰かが私の少し複雑すぎるテキストを理解し、多分私を助けてくれることを願っています;-)

ありがとうございました!!

+1

複雑な質問1つの長い段落ではなく、質問の書式設定が1つ増えました。 2ヘルパーがすべてを視覚化する必要もなく、説明から再作成しようとする必要がないように、あなたが何をしているかを示すのに役立つコードサンプル。 –

+0

さて、より簡単な方法で試してみましょう: まず、複数の翻訳を含むレコードがあります。各行に存在する既存の言語/ロケール名を取得したいと考えています。 例:私は4行のデータを持っています。各行ごとに異なる言語での翻訳が可能です。各行ごとに言語が存在することを知りたいです。 –

答えて

1

私はCakephp2.0のための解決策を持っています。これはおそらくCakephp1.3でも動作します。テストしたこともありません。名前を変更していくつかのものを編集する必要がありますが、うまくいく可能性があります。 の場合:プロジェクトの初期段階であれば、Cakephp2.0にアップデートすることをお勧めします。 1.3は、Cakephp 2.1が最終的にリリースされて以来、非難されています。 私は約2〜3回、更新プロセスを経て、仕事の日、多分2日です。私の場合は、最初からプロジェクトを再開します。本当に素晴らしい仕事をしていますが、私は更新されたシェルを本当に信じていません。

ロングストーリー。

私のメソッドは、既存のTranslateBehaviorを上書きし、新しいTranslationBehavior、ヘルパー、およびコンポーネントを追加しました。

ここにファイルのzipがあります。

http://www.func0der.de/cakephp/MultiLanguageForms.zip

できるだけ早く私はGITを適切に使用する方法を考え出したとして、私は彼らにそれを要求引っ張ってきます。 ファイルのチケットはすでにhttp://cakephp.lighthouseapp.com/projects/42648/tickets/2463-multi-language-forms#ticket-2463-4にあります。

使い方はかなり簡単です。 コントローラには、コンポーネントとヘルパーが含まれます。モデルは、翻訳と翻訳動作を取得します。 Translatioは最初にコールバックの問題が発生します。しかし、スクリプトはとにかに例外をスローします。

コンポーネントは、 "Locale"フォルダ内に存在するすべての言語を自動的に検索し、Configureクラスにそれらを安全に格納します。

ビューでは、$ this-> Translation-> inputs( 'Modelname.field');を使用します。 モデルヘルパーのFormHelperインスタンスがViewと同じであるかどうかわからないため、モデル名が重要なので、私はまだ方法を見つけていないため、自動的にそのモデルを判断します。そして私には時間があります。^^

TranslationBehaviorはEACHを検証します。フィールド名に基づいて言語フィールドの

ご質問がある場合:私は非常に頻繁にここにいないよを通じて、私はこの質問の上に見てしようとします^^ を掲載し;)

挨拶良く、この作品のような func0der

関連する問題