複数の言語Webサイトのデザインパターン?
-
28-09-2019 - |
質問
私たちが英語、フランス語、スペイン語、ドイツ語、韓国を持っているウェブサイトを設計しているとしましょう(私はそうではありませんが、私はふりをしましょう)。
Webサイトの性質は娯楽ではなくビジネスのためであるため、Google Translateなどのサービスに頼ることはできません。私が別の言語にコンテキストで何かを翻訳し、そのテキストを私に与えることができるプロの翻訳者にアクセスできるとしましょう。
Webサイトで複数の言語でコンテンツを提供するためのいくつかの既知の簡単な方法は何ですか?
個別のページ、データベースなどを使用するなど、多くのオプションがあります...しかし、私は実際に何が最善か、コンセプトがどのように拡大するか、何を考慮する必要があり、失われた翻訳に対処する方法を決定することはできませんか?
これについて十分に確立されたプラクティスはありますか?
解決
あなたが尋ねている広範なトピックは、「国際化とローカリゼーション」(または略してI18NおよびL10N)と呼ばれます。覚えておくべき重要なことは、そうだということです いいえ メッセージの翻訳について。ウェブサイトを国際化することになることは他にもたくさんあります。
あなたが必要とするより明白なことは次のとおりです:
- 英語だけでなく、すべての言語のキャラクターで機能するキャラクターエンコード(これは、データベースまでのすべてがUTFエンコードを使用する必要があることを意味します)
- ユーザーを表す何らかの方法 ロケール (つまり:Java's ロケール クラス)
- そのユーザーのロケールでメッセージを作成するための一般的なパターン(つまり、Spring's MessagesSource
あなたが考慮する必要がある他のこと:
- ロケールに基づいて文字列を適切に並べ替えます
- ロケールに基づくフォーマット日
- ユーザーのタイムゾーンで常に時間を表示します
- ユーザーのロケールの距離測定値を表示します(つまり、マイル対キロメートル?)
- ヘブライ語のような言語のために右から左へのウェブサイトをレイアウトする
- メッセージをどのように複数化するかを考えてください。
String message = "Please fix the following error" + (errors.size() > 1 ? "s" : "");
国際化されたプログラムでは機能しません。 - テキストの長さが大きく異なる可能性がある場合、Webページをレイアウトする方法を考えてください。キャラクターが多かれ少なかれ特定の幅であると仮定しないでください(漢字の単一のキャラクターは小文字よりも8倍広いかもしれません。私')
これのために私が見つけることができる最良のリソースは ICUライブラリのユーザーガイド. 。 Javaを使用する場合、これは使用するライブラリです。
うまくいけば、この答えが役立つスタートです!
他のヒント
Googleの推奨事項をご覧ください 多領域および多言語サイト. 。情報が便利であることを願っています。幸運を祈ります。
@michael Dや、回答を投稿した他の開発者に完全に同意します。この質問はすでに受け入れられていますが、次のような小さなオプションは次のとおりです。 :lang()pseudoクラスでは、さまざまなドキュメントで言語を決定できます。
CSSコード:
q:lang(fr) { /* Quotations for French */ quotes: "\00AB" "\00BB"; } q:lang(en) { quotes: "\201C" "\201D"; /* Quotations for English */ }
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".
複雑なフォーマットを実行するため、テキストではなく、ドキュメントについて話していることに注意してください。
特定のウィジェット/モジュールのすべての文字列を含むファイルのセットがあり、言語ごとのファイルを分離します。
foo.strings == generic (happens to be US english)
foo.fr.strings == french
foo.fr-CA.strings == canadian french
foo.en-CA.strings == canadian english
クライアントの受け入れ言語ヘッダーに基づいて、彼が望む言語を決定します。
特定の言語が最初に要求されたら、ファイルシステムを押して、その言語の大きな文字列マッピングを構築し、メモリでキャッシュします。特定の文字列がFR-CAで定義されていない場合は、スタックをFRにホップし、最終的にはジェネリックにホップします。
ページは動的に生成され、各URLの生成されたバージョンはユーザーの言語ヘッダー(とりわけ)に応じてキャッシュされます。
それが役立つことを願っています