2011-01-11 22 views
2

私は英語をサポートするためにStruts2国際化を使用しています&アラビア語。Struts2 +国際化+ Java

ロケールが変更されたときに入力(テキスト、日付など)の前に来るラベルの位置を動的にまたは自動的に変更することは可能ですか?

など。

LTR - >英語 - >姓 - "入力テキストボックス"

RTL - >アラビア語 - > "入力テキストボックス" - أولاسم

このための任意の可能な解決策?

BR SC

答えて

4

いずれ(AB)java.awt.ComponentOrientation

String direction = ComponentOrientation.getOrientation(locale).isLeftToRight() ? "ltr" : "rtl"; 

使用

public static ComponentOrientation getOrientation(Locale locale) { 
    String lang = locale.getLanguage(); 
    if ("iw".equals(lang) || "ar".equals(lang) || "fa".equals(lang) || "ur".equals(lang)) { 
     return RIGHT_TO_LEFT; 
    } else { 
     return LEFT_TO_RIGHT; 
    } 
} 

(RTLにのみ4言語があり、そのソースコードはかなりも自明であり、ここで関連性の抽出物'S) または自分でrecourcebundleに入れてください。

this.direction = ltr 

そして

String direction = bundle.getString("this.direction"); 

を次のようにいずれかの方法でそれを読んで、あなたはそれに応じて方向を変更するには、このを利用することができます。 <html dir="ltr">または生成されたHTMLで<html dir="rtl">として終わるでしょう

<html dir="${direction}"> 

+0

こんにちは、ありがとうございます。私は両方のリソースバンドル 'en'と 'ar'に "this.direction"を追加しました。そして私はこのようなテーブルレベルで使用しています "

"。しかし、これは機能しません。私は何かを逃していますか?私はいくつかのクラスを拡張する必要がありますか?その部分を詳しく説明してください。私はロケールを切り替えるときにその部分を変更したいと思います。 BR SC – SmoothCriminel

+0

'$ {direction}'を設定しましたか? – BalusC

+0

私の知らないことは残念です。しかし、私はそれを設定する必要がありますか? jspの中に?それとも別の方法で? BR。 SC。 – SmoothCriminel

0

ない私の知る限り。

メッセージは、ローカライズされ、通貨記号などを処理する引数を持つことができますが、ページの左から右および右から左への並べ替えを処理できる既製の利用可能なフレームワークは見ていません。

私の推測では、タイルを使ってページやページの一部を提供しなければならないか、あなた自身がif else文を書く必要があります。