11

英語、フランス語、スペイン語、ドイツ語、韓国語のウェブサイトをデザインしているとしましょう (そうではありませんが、そうであるとしましょう)。

ウェブサイトの性質は娯楽ではなくビジネスであるため、Google 翻訳などのサービスに頼ることはできません。コンテキスト内の何かを別の言語に翻訳してそのテキストを提供できるプロの翻訳者にアクセスできるとしましょう。

Web サイトで複数の言語でコンテンツを提供する既知の簡単な方法は何ですか?

ページを分けたり、データベースを使用したりするなど、さまざまなオプションがありますが、どれが最適か、コンセプトをどのように拡張するか、何を考慮する必要があるか、翻訳が欠落している場合はどのように対処すればよいか、本当に判断できません。

これに対して確立された慣行はありますか?

4

4 に答える 4

14

あなたが尋ねている幅広いトピックは、「国際化とローカリゼーション」(または略してI18NとL10N)と呼ばれています。覚えておくべき重要なことは、メッセージを翻訳するだけではないということです。ウェブサイトの国際化には他にも多くのことがあります。

あなたが必要とするより明白なものは次のとおりです。

  • 英語だけでなく、すべての言語の文字で機能する文字エンコーディング (これは、データベースに至るまですべてが UTF エンコーディングを使用する必要があることを意味します)
  • ユーザーのロケールを表す何らかの方法(つまり、Java のLocaleクラス)
  • そのユーザーのロケールでメッセージを生成するための一般的なパターン (つまり、Spring のMessageSource

その他の考慮事項:

  • ロケールに基づいて文字列を適切に並べ替える
  • ロケールに基づく日付の書式設定
  • 常にユーザーのタイムゾーンで時間を表示する
  • ユーザーのロケールの距離測定値を表示する (例: マイルとキロメートル?)
  • ヘブライ語などの言語の右から左への Web サイトのレイアウト
  • メッセージを複数形にする方法を考えてみてください。 String message = "Please fix the following error" + (errors.size() > 1 ? "s" : "");国際化されたプログラムでは機能しません。
  • テキストの長さが大きく異なる場合に、Web ページをどのようにレイアウトするかを考えてみてください..そして、文字が多かれ少なかれ特定の幅であると想定しないでください (漢字の 1 文字は、小文字の 8 倍の幅である可能性があります)。私')

これについて私が見つけることができる最良のリソースは、ICU ライブラリのユーザー ガイドです。Java を使用する場合は、これが使用するライブラリです。

うまくいけば、この答えが役に立つスタートです!

于 2010-10-06T21:57:40.370 に答える
3

多地域および多言語サイトに関する Google の推奨事項をご覧ください。情報が役立つことを願っています。幸運を祈ります。

于 2014-03-15T14:36:57.390 に答える
2

回答を投稿した@Michael Dおよび他の開発者に完全に同意します。この質問に対する回答は既に受け入れられていますが、:lang() 疑似クラスなどの小さなオプションが多言語サイトの作成にも役立つと思います。:lang() 疑似クラスを使用すると、さまざまなドキュメントの言語を判別できます。

CSS コード:


    q:lang(fr) { /* フランス語の引用 */
     引用符: "\00AB" "\00BB";
    }

    q:lang(ja) {
     引用符: "\201C" "\201D"; /* 英語の引用 */
    }


HTML コード:

 <html>
 <body>
 <pre>
     <p>Quote in French: <q lang="fr">То être ou ne pas être</q>.</p>
     <p>Quote in English: <q lang="en">То be or not to be</q>.</p>
 </pre>
 </body>
 </html>

出力は次のようになります。

Quote in French language: << То être ou ne pas être >>.

Quote in English language: "То be or not to be".

ドキュメントは複雑な書式設定を行うため、テキストではなくドキュメントについて話していることに注意してください。

于 2015-06-29T13:24:18.060 に答える
1

特定のウィジェット/モジュール/その他のすべての文字列を含む一連のファイルがディスク上にあり、言語ごとに個別のファイルがあります。つまり、次のようになります。

foo.strings == generic (happens to be US english)
foo.fr.strings == french
foo.fr-CA.strings == canadian french 
foo.en-CA.strings == canadian english

クライアントの Accept-Language ヘッダーに基づいて、クライアントが希望する言語を決定します。

特定の言語が最初に要求されると、ファイル システムにアクセスしてその言語の大きな文字列マッピングを作成し、それをメモリにキャッシュします。特定の文字列が fr-CA で定義されていない場合、スタックを fr にホップし、最終的にジェネリックにホップします。

ページは動的に生成され、各 URL の生成されたバージョンは、ユーザーの言語ヘッダーに応じて (とりわけ) キャッシュされます。

それが役立つことを願っています

于 2010-10-06T22:08:12.510 に答える