Symfony2 で特定の言語の個人プロジェクト用の Web サイトを開発しました。私はコードを開発する際に安全なアプローチに従うのが好きなので、たとえそれが最もばかげたことであっても、すべてをプログラムするには通常長い時間がかかります。私の現在の計画は、ディレクトリ ビジネス Web サイト (楽器会社としましょう) を実装して、世界中の誰もがアカウントを作成してビジネスを登録できるようにすることです。
私が行ったことは、すべてをゼロから実装したことです。セキュリティ バンドル、Business {name, location, phone, email, information, etc.}、BusinessCategory {name, information etc.} などのいくつかの基本的なエンティティ、およびいくつかのカスタムですが、それらの間の単純な関係。ユーザーは、アカウントを正常に登録してから、ビジネスを登録できます。また、config.yml のロケールと英語のカスタム翻訳を使用して、ウェブサイトに表示されるすべての単語またはフレーズの翻訳を実装しました。たとえば、中国語またはスペイン語です。ユーザーが「英語」または「スペイン語」のリンクをクリックすると、すべてが選択した言語に翻訳され、Web サイトのエイリアスが website.com/en から website.com/es に変更されます。
私の次のステップは次のとおりです。
ユーザーが英語またはスペイン語で登録できるようにしたい。現在、mysql データベースにはそのビジネスのエントリが 1 つしかなく、翻訳は Web サイトのテキストに対してのみ存在します。ビジネスの「名前」、住所など、ユーザーが同じフィールドに英語のデータとスペイン語のデータを入力できるようにしたいと考えています。これには、異なるロケールと同じビジネスで 2 つのエントリが必要になる可能性があります。
Web サイトを、ユーザーの翻訳に現在存在するラベルの翻訳と一致させたい。これは、「スペイン語」を選択すると、すべてがスペイン語に翻訳され、そのビジネスのスペイン語の行が表示されることを意味します。
言語用に購入したドメインを使用したい 可能であれば、Website.com、Website.es、Website.it など。ブラウザのアドレスバーに website.it と入力すると、すべてイタリア語で自動的に表示されます。
私の主な懸念事項は次のとおりです。
翻訳可能なバンドルを使用すると、ビジネスごとに追加の行が作成されます。それらはどのように接続されますか?つまり、ID 1234 の X ビジネスはスペイン語になり、名前が Y に翻訳された同じビジネスは ID 1235 になります。symfony2 は、これら 2 つのビジネスが別のロケールで同じものであることをどうやって知るのでしょうか?
結合されたテーブルはどうなりますか? User テーブルは、Group テーブルにリンクされている Business テーブルにリンクされています。ビジネス テーブルのみに翻訳可能な拡張機能を使用すると、他のテーブルにどのような影響がありますか?