struts2之I18N

---恢復內容開始---app

寫兩個properties文件,命名時要注意後面的中文的則以zh_CN結尾,英文的以en_US結尾。eclipse

在測試驅動類中寫jsp

ResourceBundle res = ResourceBundle.getBundle("app", Locale.CHINA);測試

System.out.println(res.getString("welcome.msg"));spa

welcome.msg爲properties文件中的信息。插件

這裏Locale用的是國家名code

可是在ch_ZN裏面寫中文仍是不行的,用properties editor打開便可,它會自動將輸入的中文轉爲unicode字符。xml

properties插件:解壓,feafures pligin覆蓋到Myeclipse中的eclipse目錄裏blog

---恢復內容結束---ip

Action級別I18N問題

寫好資源文件後,在jsp頁面能夠用s 標籤取出如:<s:property value="getText('login.username')"/>

properties裏面調用方法,只能針對action來調。LoginAction裏面雖然沒有getText方法,可是它的父類ActionSupport裏面有getText方法。

包級別的I18N,前綴名只能叫package,如package_zh_CN.properties。只能它所在的包才能用

action級別的前綴名只能叫XXAction,只有它對應的action才能用。

全局級別的I18N前綴名不收限制,整個項目均可以用,爲了找到它,要在struts.xml裏面配置它的前綴名。怎麼配參考defualt.properties

如:<constant name="struts.custom.i18n.resources" value="bbs2"/>

處理資源文件中的參數

{0}{1}{2}分表明一個佔位符,裏面的數字表示它們的參數位置,從0開始 如welcome.msg = welcome:{0}! 在jsp頁面能夠往裏面傳參數

<s:text name="welcome.msg">
<s:param value="username"></s:param>
</s:text>

動態語言的切換

只要在地址後面加上?request_locale=en_US就能夠切換爲英文,加?request_locale=zh_CN就能夠切換爲中文

咱們能夠寫個LangAction

1 package com.lch.bbs2009.action;
2 
3 import com.opensymphony.xwork2.ActionSupport;
4 
5 public class LangAction extends ActionSupport {
6     public String execute(){
7         return "success";
8     }
9 }

在struts.xml中配置

  <action name="lang" class="com.lch.bbs2009.action.LangAction">
            <result name="success">/admin/Login-input.jsp</result>
        </action>

在jsp頁面中添加連接

1 <a href="admin/lang?request_locale=en_US">en</a>
2     <a href="admin/lang?request_locale=zh_CN">cn</a>
相關文章
相關標籤/搜索