4

多言語を提供したい Web サイト (Coldfusion) がありますが、これを行う最善の方法がわかりません。

私が持っている2つの計画があります:

1:

もちろん、すべてのコンテンツ (テキスト) はデータベースにあります。

ユーザーが別の言語を希望する場合、ユーザーはリンク/フラグをクリックします。これにより、要求された言語がセッション変数に入れられます。例: session.language = "es"

データベースには2つの列があり(すべての言語には1つの列があります)、「es」に属するテキストを選択します

次に、すべてのページがデータベースにリクエストを送信して、session.language にログを記録するテキストを取得します。

長所: 実装が比較的簡単

短所:SEOに関しては、これはあまり良いとは思えません。http://www.domain.com/page.cfm は、英語のテキストまたはスペイン語のテキスト (または他の言語) を提供します。Google は重複する URL を追加しません

2:

英語の場合は http://www.domain.com/en/page.cfm で、英語の場合は http://www.domain.com/es/page.cfm で何かをしてください。

URL 書き換えルールを使用すると、URL http://www.domain.com/en/page.cfm の言語値は、実際にはページ http://www.domain.com/page.cfm?language=en になります。

url.language 変数は、データベースから正しい言語を選択します。

長所: 各言語に固有の URL。SEO や Google のインデックス登録に適しています。

短所: 実装が少し難しい。(おもう)

または、他の/より良いアイデアを持っている人はいますか?

ありがとう!!

4

5 に答える 5

1

多言語サイトを効果的に行うには、ハードコードされたテキストをソースに挿入しないというルールを自分で設定する必要があります。データベースおよび/またはリソースバンドルから取得する必要があります。

データベースからのテキスト

データを保存している列がユニコードであることを確認する必要があります。そうしないと、アクセント付きの文字に問題が発生します。また、これはスケーラブルではないため、言語ごとに列を持たないでください。@jan が提案することを行い、項目が参照と言語に基づいている翻訳テーブルを用意してください。

リソースバンドル

データベースからすべてのテキストを取得する必要はないので、リソース バンドルを利用できます。これは確かに古いリンクhttp://www.sustainablegis.com/blog/cfg11n/index.cfm?mode=entry&entry=FD48909C-50FC-543B-1FE177C1B97E8CC1で、リソース バンドルのソリューションに関する Paul Hastings のブログに掲載されています。正直なところ、彼のブログはまさにこの主題に関する優れたリソースです。

URL の処理方法に関しては、オプション 1 を実行しないでください。ページの SEO ランキングに問題が発生し、ユーザーがページを正しく共有したり、ページに戻ったりできないことを意味することを正しく認識しているためです。

オプション 1 で特定したように、URL に言語コードを含める 2 つの方法があります。

長所

  • 設定が簡単

短所

  • アプリケーションが 1 つある場合、言語を追加すると、そのアプリケーションのメモリの複雑さと重みが増します。

または、アプリケーションごとに異なるサブドメインまたはドメインを持つことができます。たとえば、es.yourdomain.com または yourdomain.es はすべて同じコードベースにすることができます。

長所

  • 各言語はスタンドアロン アプリケーションであり、独自のメモリを持っています。

短所

  • より多くの労力をかけて構成する
于 2012-04-12T15:00:04.327 に答える
1

常に最初にブラウザ ヘッダーの "Accept-Language" で既定の言語を確認し (これを行うための正しい標準的な方法)、代替手段としてのみリンク (直感的に正しいように見える方法) を提供する必要があります。

データベースでそれを行うことは、あまり標準的ではないようです。MVC アーキテクチャ (model-view-controller) を使用したいとします。ほとんどのソフトウェアは、プレゼンテーション レイヤー (ビュー) (例: html) でキーを使用し、プレゼンテーション レイヤーと共に、ファイル名によって単純にマップされ、コンピュータスキルのないプロの翻訳者など、特別なスキルを持たない通常のユーザー。確かにそれをデータベースに入れることもできますが、そうすると、より多くの作業が必要になり、情報がプレゼンテーション レイヤーから移動されます。

これを行うためのさまざまなライブラリがあります。アプリケーションの通常のものを見つける必要があります。質問を編集して、アプリケーションの開発に使用しているものを含めてください。(例: JSP、Tapestry、Wicket、ASP、PHP など) したがって、たとえば、JSP を使用する場合は、JSTL タグ ライブラリの言語サポートを使用することをお勧めします。または、Tapestry を使用している場合は、http://tapestry.apache.org/localization.htmlまたはhttp://tapestry.apache.org/tapestry4.1/UsersGuide/localization.htmlを参照してください。

それを調べるには、「国際化」、別名「i18n」、または「ローカリゼーション」という用語を探すことができます。(用語は同じ意味ではありませんが、正しく使用する人はほとんどいないため、どちらでも機能します。http://www.w3.org/International/questions/qa-i18n )

于 2012-04-12T11:30:44.427 に答える
1

オプション 2 を使用します。すべての翻訳には独自の URL が必要です。あなたのウェブサイトへのリンクは、すでに意図した翻訳になっています。

翻訳をデータベースに保存するには、すべての翻訳を別の列に入れるのではなく、別のテーブルに入れます。

表の投稿:
- id
- title_id
- ...

表の翻訳:
- label_id
- 値
- country_code
- language_code

title_id が label_id と一致する場所

これにより、新しい翻訳が追加されたときにテーブル構造を変更する必要がなくなります。これにより、任意のラベルまたはテキストを無限に翻訳できます。

于 2012-04-12T11:32:34.140 に答える
1

http://i18n.riaforge.org/には i18n のダウンロードがあります。すべての文字列ラベルが一致することを確認するために使用できます。そうすれば、誰かが「保存」を「更新」に変更したい場合、すべてを 1 か所で行うことができます。

翻訳を行う人の技術的背景を考慮することも重要です。多くの場合、データベースを更新するよりも、翻訳チームにメモ帳でファイルを編集してもらう方が簡単です。テキスト ファイルは、バージョン管理に適しています。

于 2012-11-28T01:16:21.627 に答える