5

LTR と RTL の 2 つの言語で表示できる Web サイトを作成したいと考えています。これは、すべてのコンテンツを 2 つの言語のいずれかで表示する必要があることを意味します。

私のフレームワークは Spring で、Tiles2 を使用していますが、この質問はフレームワーク固有のものではないと思います。

2 つの言語をサポートするための明白な解決策は、すべて (すべての JSP、フラグメントなど) を 2 倍にして、選択した言語に適合するツリーの部分を取得することです。しかし、これは Web サイトを変更するときに問題を引き起こし (他の JSP の更新を忘れる可能性があります)、スケーラブルではありません (5 つか 10 の言語で試してみてください)。

プロパティ ファイルを使用してさまざまな言語の文字列をホストできることはわかっていますが、そうすると、私の Web サイトは spring:message タグの膨大なコレクションになり、維持するのがはるかに難しくなります (100 行の段落があるとどうなるか、これはすべて単一のプロパティ行に入りますか?)

この問題を解決するフレームワーク、プラグイン、その他の種類はありますか? この問題に対する巧妙な解決策に出くわした人はいますか?

4

6 に答える 6

4

いくつかのテストだけで、完全なプロジェクトを実現したことはありません。この問題は、いくつかの簡単なルールに従えば、それほど大きくないと思います。これが私がやろうとしていることです:

  • で方向を指定し<body dir='ltr/rtl'>ます。これは、CSS 方向属性よりも優先されます。

  • すべての CSS で左右のマージンやパディングが異なるのは避けてください。この規則を破る必要がある場合は、おそらく、これらすべての異なる要素を含む 2 つの異なるファイル (ltr.css と rtl.css) を使用する必要があります。

  • 場合によっては、一部の要素を左から右に、またはその逆に移動する必要があります。たとえば、LTR では左側にメニューが必要ですが、RTL では右側にメニューが必要です。これは CSS を使用して実現できますが、専門家でない場合は複雑な場合があり、すべてのブラウザーでテストする必要があります。別のオプションは、ケースに応じて IF を使用することです。この最後のオプションは、Bootstrap などのグリッド ベースの CSS ライブラリを使用する場合に非常に適しています。

  • 使用する CSS および JS ライブラリは慎重に選択してください。明らかに、RTL/LTR をサポートするものを選択してください。

  • 画像はあまり気にしないでください。言語に応じて 1 つの画像を変更する必要がある場合は、おそらくテキストが含まれているためです。したがって、とにかく異なる画像を使用する必要があります。これは i18n に関連する問題であり、テキストの方向の問題ではありません。

  • あなたの顧客がそれについてあまりうるさくならないようにしてください。これらのルール (およびその他のルール) を使用すると、良い結果が得られると思います。しかし、顧客がここにあるピクセルとそこにある別のピクセルについて不満を言い始めた場合、これらすべてを複雑にする必要があり、おそらく必要ありません.

  • 言語プロパティ ファイルについて。はい、それらを使用します。いつも。これは、1 つの言語のみを使用している場合でも有効な方法です。HTML 構造がコンテンツから分離されているため、修正や翻訳が非常に簡単で、一部の単語や文が 1 つのファイルにしか含まれていない...

于 2013-01-03T15:26:29.307 に答える
2

通常、Web フレームワークは Web サイトではなく Web アプリケーションの構築に使用され、長い静的な段落はほとんどありません。ほとんどのコンテンツは動的で、データベースから取得されます。しかし、はい、通常の方法は、通常はプロパティ ファイルの形式で、すべてをリソース バンドルに外部化することです。

各行をバックスラッシュで終了することにより、長い段落を複数の行に分割できるため、プロパティ ファイルに長い段落を入れても大きな問題は発生しません。

home.welcomeParagraph=This is a long \
    paragraph splitted into several lines \
    thanks to backslashes.
于 2012-12-29T13:58:55.653 に答える
1

ここで提供される解決策のほとんどに同意します。あなたの問題は、技術的なものではなく、より設計 (アーキテクチャ) 指向です。この国際化のロジックをサーバー (Java) 側または静的ファイルに保持する必要があるかどうか、パスを選択する必要があります。

Java 側 (望ましい解決策) を使用する場合は、2 つのプロパティ ファイルを保持し、jstl タグを使用する必要があります。これにより、将来別の言語を追加する場合に備えて、作業を最小限に抑えることができます。これは保守可能なソリューションです。15 を超える言語とタイム ゾーンをサポートするアプリケーションを見てきました。実際、リリースプロセスはかなり簡単になります。

複数のcssやその他の静的ファイルを保持したい場合は、すぐに手に負えないことがすぐにわかります。これは保守可能なソリューションだとは思いません。

とはいえ、この選択はアプリケーションのアーキテクトに任せます。彼は、アプリケーションの性質と彼に与えられた制約に基づいて、どちらの道を進むべきかを判断することができます.

于 2013-01-07T13:57:27.557 に答える
1

RTL と LTR は、i18n の上位の、より難しい問題の 1 つです。

基本的には、MVC モデルのビュー スコープの問題です。これには、写真や人の肌の色などの感情的な違いも含まれる場合があります。この場合、HTML+CSS が提供する解決策を放棄したほうがよいでしょう。

例:

<style type="text/css">
    *:lang(ar) { direction:rtl }
    *:lang(de) { direction:ltr }
</style>

ベスト プラクティスは、ウェブページが彼らにどのような影響を与えるかについて、オーディエンス グループのメンバーに尋ねることです。

于 2013-01-01T19:49:16.087 に答える
0

どこでも使用したくありません。それはあなたがやるべき方法だからです。国際化が必要な場合、ハードコードされたテキストを jsp に保持するのは悪い習慣です。

さらに、最新の IDE のほとんどでは、Ctrl キーを押しながら左クリック (またはキーをホバー) することで変数宣言に移動できるため、コードに多くの変数が含まれていてもメンテナンスの問題は発生しません。

于 2013-01-10T11:25:26.233 に答える
0

まず、テキスト要素ごとに、それがユーザー インターフェイス要素 (ボタン ラベルなど) であるか編集コンテンツであるかを区別する必要があります。

ユーザー インターフェイス要素のラベルは、サポートされている言語ごとに翻訳する必要があるプロパティ ファイルに格納されます (フォールバックとしてデフォルト値を提供します)。

編集コンテンツは、コンテンツのローカライズされたバージョンを簡単に見つけるために組織するコンテンツ管理システムに保存されます。

于 2013-01-10T11:38:58.773 に答える