6

PostgreSQL データベースがあります。また、特定のデータを複数の言語で保持する必要があるテーブルがいくつかあります (ありがたいことに、可能な言語のリストはシステム全体で定義されています)。

たとえば、次から始めましょう。

create table blah (id serial, foo text, bar text);

では、多言語化してみましょう。どうですか:

create table blah (id serial, foo_en text, foo_de text, foo_jp text,
                              bar_en text, bar_de text, bar_jp text);

これは、Postgres での全文検索に適しています。言語ごとに tsvector 列を追加するだけです。

しかし、それは最適ですか?翻訳を保持するために別のテーブルを使用する必要がありますか? お気に入り:

create table texts (id serial, colspec text, obj_id int, language text, data text);

ひょっとしたら、何か他のもの、つまり SQL の世界からかけ離れたものを使用する必要があるのではないでしょうか? どんな助けでも大歓迎です。

4

2 に答える 2

1

テーブルを2つ作るのがベストだと思います。1 つは言語用、もう 1 つは ID 用などです。first_table( id ) second_table( s_id, id_first_table, language_id, language_text)

于 2010-03-28T21:39:58.223 に答える
0

これは、Mozilla 開発者がデータベースの多言語化についてまとめた素晴らしい記事です。これは CakePHP に固有のものですが、この情報は他のシステムにも簡単に適用できます。また、SQL クエリが非常に複雑になることにも注意してください。これは欠点です。ただし、これは一般に、i18n の実装に関係なく当てはまります。

  1. パート1
  2. パート2
  3. パート 3
于 2010-03-28T21:34:23.100 に答える