2011-01-11 89 views
2

我正在使用Struts2國際化來支持英語&阿拉伯語。Struts2 +國際化+ Java

我想知道的是它可以動態地或自動改變標籤的任何輸入(文本,日期等)之前,其自帶的語言環境發生變化時的位置?

E.g.

LTR - >英語 - >名字 - 「文本框中輸入」

RTL - >阿拉伯語 - > 「文本框中輸入」 - أولاسم

這個任何可能的解決方案?

BR SC

回答

4

要麼(AB)使用java.awt.ComponentOrientation

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

(它的源代碼是非常瑣碎雖然只有4種語言這是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; 
    } 
} 

自己把它放在一個recourcebundle。

this.direction = ltr 

而且如下

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

無論哪種方式閱讀它,你可以利用這點來相應地改變方向。

<html dir="${direction}"> 

這將最終成爲<html dir="ltr">或在生成的HTML <html dir="rtl">

+0

嗨,非常感謝。我已將「this.direction」添加到我的資源包「en」和「ar」中。我在桌面上使用這樣的「

」。但這不起作用。我錯過了一些事情嗎?我需要延長一些課程嗎?請詳細說明該部分,我希望在切換語言環境時對其進行更改。 BR SC – SmoothCriminel2011-01-11 19:27:51

0

不受限制,只要我知道了。

消息可以本地化,並有論據來處理貨幣符號等,但我還沒有看到任何現成可用的框架,可以處理頁面的左到右,右到左的順序。

我的猜測是,你必須以服務頁面,使用瓷磚頁面的部分或者寫你自己的,如果else語句。