資源文件的定義:
在struts2里,資源文件被分成了三個級別:類級別,包級別,全局級別。
執行時,將按照從小到大的順序依次搜索資源文件里的key值,直至找到。
類級別的文件名定義:Action類名_語言碼_國家碼.properties,比如:LoginAction_en_US.properties,LoginAction_zh_CN.properties;
如果是在全局中定義資源文件,則需要在struts.xml里配置,例子:<constant name="struts.custom.i18n.resources" value="message" />,其中message為資源文件的起始名;
全局資源文件的位置在src\下。
如何寫中文的資源文件:
對于用于中文顯示的資源文件,以前需要使用java自帶的native2ascii.exe將中文內容轉換成對應的unicode,比較麻煩,而現在可以使用eclipse的插件自動轉換。
eclipse插件:
propertieEdit(一款由日本人開發的開源插件,可直接輸入中文,自動轉換)
本地下載link:
/Files/koradji/propertieEdit.zip
下載后,將里面的目錄拷貝到eclipse下對應的目錄里,重新啟動eclipse就可以了。(可能需要在啟動命令里加上-clean)。
在jsp里讀取資源文件的方法:
畫面上的文字采用<s:text name="key" />寫;
其他的,比如按鈕的value,textfield的label等采用<%{getText('key')}>寫,例子:<s:submit action="confirm" value="%{getText('confirm.button.label')}" /> ;
或者,也可以使用這樣的寫法:<s:textfield name="username"
key="page.index.text.username"></s:textfield>
使用<s:i18n>可以指定臨時的資源文件,
例子1:
<s:i18n name="temp"> ----- baseName對應名稱的資源文件名
<s:text name="info"> ----- info為資源文件中的key
<s:param>張三</s:param> ---- 指定第一個參數 {0}
<s:param>23</s:param> ---- 指定第二個參數 {1}
</s:text>
</s:i18n>
例子2:
<s:i18n name="org.scorpio.jh.struts2.i18n.web.action.LoginAction">
<s:text name="page.index.text.username"></s:text>
<s:text name="page.index.text.password"></s:text>
</s:i18n>
沒有實際應用過,猜測可能是在頁面上指定某個區域可以顯示與default locale不同的語言文字?
在java里讀取資源文件的方法:
Action類里(需要繼承ActionSupport),使用getText(String key)方法就能取得資源文件里的值;
Business Services類里,使用ResourceBundle.getBundle(資源文件名).getString(key)方法取得值;
如何切換畫面語言:
在jsp里,在適當的位置放入下面的代碼:
<s:url id="url" action="UnsubscribeNL_language">
<s:param name="
request_locale">en_US</s:param>
</s:url>
<s:a href="%{url}">English</s:a><br>
<s:url id="url" action="UnsubscribeNL_language">
<s:param name="
request_locale">zh_CN</s:param>
</s:url>
<s:a href="%{url}">簡體中文</s:a>
在發送請求時,struts會搜索攔截request_locale變量,并將該變量值設為default locale;
在Action類里加入一個方法:public String language(),運行初始化返回本畫面即可;