2

MySQL テーブルから情報を取得して英語とフランス語の Web サイトを構築しようとしていますが、行き詰っています。そのような質問は、私には先回りしすぎていると思います。私の考えは、両方の言語が翻訳されたテーブルを作成し、それらに ID を割り当てることです。

これがテーブルラングです

+--------+-------------------+----------------------+
| id     | English           | French               |
+--------+-------------------+----------------------+
| 1      | Verbal Warning    | Avis verbal          |
| 2      | Written Warning   | Avis écrit           |
| 3      | Evaluation        | Évaluation           |
| 4      | Other (specify)   | Autres (spécifiez)   |
+--------+-------------------+----------------------+

次に、人々が「トピック」をデータベースに入力する別のテーブルがあります。そのため、ページをフランス語に切り替えると、表の内容がフランス語で表示されます。

+-----------+---------+
| EMP_ID    | Topic   |
+-----------+---------+
| 845689    |  4      |
| 185648    |  3      |
| 485497    |  1      |
| 416798    |  2      |
+-----------+---------+

英語のページを表示しているときに、出力を次の表に表示したい

+-----------+------------------+
| EMP_ID    | Topic            |
+-----------+------------------+
| 845689    |  Other (specify) |
| 185648    |  Evaluation      |
| 485497    |  Verbal Warning  |
| 416798    |  Written Warning |
+-----------+------------------+

これは、フランス語のページが選択されている場合です。

+-----------+---------------------+
| EMP_ID    | Topic               |
+-----------+---------------------+
| 845689    |  Autres (spécifiez) |
| 185648    |  Évaluation         |
| 485497    |  Avis verbal        |
| 416798    |  Avis écrit         |
+-----------+---------------------+

それを機能させる方法はありますか、または表示する簡単な方法はありますか

4

5 に答える 5

3

別の回答で示唆されているように、言語文字列をファイルに保存し、Javascript を使用してそれらをロードすることをお勧めします。非常に便利で使いやすい JS ライブラリであるi18nextを使用することをお勧めします。それは本当に簡単です:

/* en.json */
{
    "home":{
        "title":"Hello, world !",
        "welcomeMessage":"Welcome to my great website !"
    }
}

/* fr.json */
{
    "home":{
        "title":"Bonjour !",
        "welcomeMessage":"Bienvenue sur mon superbe site web"
    }
}

あなたのHTMLコードで:

<!-- head and other stuffs... -->
<script type="text/javascript" src="i18next.js"></script>

<body onload="translate()">
    <h1 i18n-data="home.title"></h1>
    <p i18n-data="home.welcomeMessage"></p>
</body>

あなたの関数JSファイルで:

function translate() {
    i18n.init({
        resGetPath:'en.json',
        getAsync:false
    }).done(function(){
        $('[data-i18n]').i18n();
    });
}

このようにして、Web サイトの実行が高速になり (データベース呼び出しが少なくなります)、文字列の追加/更新が簡単になります。それが役立つことを願っています:)

于 2013-08-30T09:23:35.180 に答える
0

最も簡単な方法は、言語ごとにビューを作成することだと思います。

フランス語の場合:

CREATE VIEW empl_fr 
    AS 
    SELECT 
         emp.EMP_ID as EMP_ID
       , lang.French as Topic
    FROM employee emp, language lang
    WHERE emp.Topic = lang.id

英語の場合:

CREATE VIEW empl_en 
    AS 
    SELECT 
         emp.EMP_ID as EMP_ID
       , lang.English as Topic
    FROM employee emp, language lang
    WHERE emp.Topic = lang.id

次に、次のようにトピックをクエリできます。

SELECT * FROM empl_fr 

また

SELECT * FROM empl_en

より充実した方法は、両方の言語でビューを作成し、言語パラメータでビューをクエリすることです

于 2013-08-30T09:12:57.340 に答える