0

PHP と MySQL を使用して Web サイトを開発しています 静的データに XML を使用して、多言語 Web サイトを作成できるようにしました データベース内の他のコンテンツに問題があります 各テーブルのすべての言語の列を作成する方が良いですか、それとも何ですか? テンプレートエンジンを使用していないので、この問題を解決するための良いアプローチを知りたいです。

前もって感謝します

4

3 に答える 3

2

languageデータベース テーブルに列を追加することをお勧めします。新しいコンテンツがデータベースに保存されるとき、言語を設定する必要があります。フロントエンドでは、ユーザーが選択した言語に基づいてコンテンツをプルします。

SELECT * FROM ContentTable WHERE ContentID=<pageid> AND Language='en'
SELECT * FROM ContentTable WHERE ContentID=<pageid> AND Language='fr'
于 2012-07-18T15:13:10.373 に答える
1

多分あなたはここで答えを見つけるでしょう:

スキーマ多言語データベース

Web サイトのアーキテクチャなどに依存します。

それが役に立てば幸い :)

于 2012-07-18T15:16:20.993 に答える
1

いいえ、言語ごとに列を作成しないでください。これは不適切な非正規化です。新しい言語ごとにテーブルを変更する必要があります。

次のような言語のテーブルを用意します。

language_id, name, code

たとえば、テーブルがある場合、次のようになりますtext_pages

page_id, language_id, title, content

次に、ページごとに言語ごとに行があります。または、なしでメインテーブルを作成することもできますlanguage_id-レコードはデフォルト言語であり、text_pages_ml保持される2番目のテーブルpage_id, language_id, title, contentは他の言語、翻訳のみです! LEFT JOIN次に、現在の言語がデフォルトの言語と異なる場合に備えて、メイン レコードを で簡単に上書きできます。

2 番目の例の利点は、翻訳してはならない多くの列を含めることができることです。たとえばauthor_id, date_created, date_updated、など - は、LEFT JOIN翻訳されたメイン フィールドのみを上書きし、翻訳の必要のないデータの重複はありません。

多くの実装がありますが、RDB 正規化について読んで、フィールド設計ごとに言語ごとの列を考慮しないでください。

于 2012-07-18T15:16:28.650 に答える