3

私は多言語のウェブサイトに取り組んでおり、ウェブサイトのすべての言語で書かれている場合とそうでない場合がある記事があります。また、ユーザーは登録して好みの言語を選択することもできます。

私の問題は次のとおりです。記事を表示するときに、このように表示したいのです。ユーザーがログインしている場合は、選択した言語を表示し、記事が自分の言語でない場合は、英語で表示してみてください存在しない場合はフランス語、ドイツ語など。

これは私の記事の表です:

news_id |  lang  |   title  |  text  |
      1 |    en  |  News en |  bla.. |
      1 |    fr  |  News fr |  bla.. |
      2 |    en  |   New en |  bla.. |
      3 |    fr  |   Nws fr |  bla.. |

mysqlでこれを行う方法がわかりません。

そして、あなたが私の問題を理解してくれることを願っています。それをもっと明確に説明する方法が本当にわかりません。

4

2 に答える 2

1

ゴードンの答えは技術的には正しいですが、少し異なるアプローチをお勧めします。使用される言語のセットに対して半順序languageを定義する別のテーブルを追加できます (それを と呼びましょう) 。

        language
--------------------------
|  id  |  name  |  rank  |
--------------------------
    1      en       1
    2      fr       2
    3      de       3
    4      nl       4

このテーブルのデータ セットによって、サイトの言語の半順序が決定されます。クエリで使用するには、次のようにします。

  SELECT a.*
    FROM article a
       , language b
   WHERE a.id = [xxx]
     AND a.lang = b.name
ORDER BY (a.lang = [session.lang]) DESC,
         b.rank ASC
   LIMIT 1

あなたが尋ねるポイントは何ですか?
このように設定すると、一連の言語の半順序を別のものに変更する必要が生じた場合、その変更を反映するためにクエリを更新する必要はありません。確かに、これはほんの数個のクエリではそれほど面倒ではありませんが、言語を意識したクエリを数十個構築すると、足を痛めます。

于 2012-08-03T15:07:59.367 に答える