2011-08-12 5 views
0

英語を主語とするSymfon 1.4/Doctrineの多言語ウェブサイトを構築しています。 他の言語のコンテンツ翻訳は徐々に追加され、要求された言語の翻訳が要求された言語で利用できなくなる状況が非常によくあります。そのような場合には、要求されたコンテンツを英語で表示したいと考えています。 これはグローバルレベルで達成可能ですか?すべてのi18nコンテンツのために?Symfony/Doctrine:i18nコンテンツのデフォルトカルチャへの置き換え

Grad van Horckが指摘しているように、これはインターフェイスの変換ではデフォルトで問題なく動作します。 私が必要とするのは、DBに格納されたコンテンツ(actAs i18nの動作を持つモデル)と同じ機能です。

答えて

0

デフォルトの方法でこれを完全に行うことができます。すべてのテキストがデフォルトで英語になっていることを確認し、必要に応じて翻訳してください。だから<?php echo __('Hello'); ?>を実行し、必要に応じて翻訳してください。翻訳が見つからない場合、翻訳は元の言語に戻ってしまいます。

データベース内で同じことを行うには、おそらくi18nの動作(テンプレート/リスナー)をコピーし、独自のロジックを追加して英語に戻すことをお勧めします。

+0

ありがとうございますが、私はDBの中身を同じようにする方法を意味します。私の質問をより正確に編集しました。 –

+0

私の更新された答えを見てください:) –

0

それは翻訳がデータベースで使用できないとき、これは国際化フォールバックを変更する

sfDoctrineRecord::setDefaultCulture('nl'); // default = 'en' 

http://trac.symfony-project.org/ticket/5458を参照)sfDoctrineRecord上の既定のカルチャを設定することが可能です。

+1

これは適切な方法ではありません:)、デフォルトでは、今見ているようにsettings.ymlで 'sf_default_culture'を使用しています。しかし、ちょっと混乱しているのは正規化された文化の使​​用です。 'en'対 'en_EN'最終的には同じ文化ですが、symfonyのドキュメントでも混在しています... –

関連する問題