2013-04-09 4 views
5

私はマルチテナント対応のSymfony2ソリューションを開発しており、テナントごとに異なる翻訳ファイルを使用する方法があるかどうか疑問に思っていました。最初のテナントの会社名などへの参照Symfony2でマルチテナント翻訳を実装するには

リテールテーマバンドル(https://github.com/liip/LiipThemeBundle)を使用して、テナントが独自のデザインを上に重ねて使用できるようにしていますが、シンプルでスケーラブルな方法では実現できません彼らは彼ら自身の翻訳ファイルを使用する。

これについてテーマバンドルgit repoに関する話がありましたが、これまで実装されたことは何も信じられません(https://github.com/liip/LiipThemeBundle/issues/12)。理想的には、そのスレッドで提案したディレクトリ構造に従っていきたいと思います。このよう

root 
    - app 
    - Resources 
     - themes 
     - <theme name> 
      - public 
      - translations (this would be new) 
      - views 

私たちは、テナントが自分自身を維持することができる自己完結型のgitのサブモジュールであることテーマの実践を続けることができるようになります。

+0

私は知らないけど、あなたのケースでは、[メッセージドメイン](http://symfony.com/doc/current/book/translation.html#using-message-ドメイン)代わりに? – cheesemacfly

+0

しかし、その方法を使用すると、各テナントはファイルを私たちに提供しなければならないので、名前の一意性を保証する必要があり、サイトのapp/Resources/translationsディレクトリに追加する必要があります。さらに、同じテンプレートファイルを保持する方法はありませんが、テナントに基づいて別の変換ファイルを使用します – tanGee

答えて

3

私は上で概説したディレクトリ構造を使用して終了し、翻訳をsymlinkしたコンソールコマンドをapp/Resources/translationsのファイルに上書きしました。このコマンドは、デプロイスクリプト中に実行され、次に、オーバーライドファイルを使用する必要があるかどうかをチェックする独自の "trans" twig関数を作成しました。

最もクリーンではありませんが、私が望むように間違いなく機能します。