struts2的國際化標籤

1.      java的國際化

Java國際化主要靠三個類實現:

java.util.ResourceBundle加載資源包,

java.util.Local語言環境

java.text.MessageFormat格式化消息

資源文件的三種形式:

baseName_language_contry.properties,

baseName_language.properties,

baseName.properties其中baseName表示資源文件的基本名

Locale local=Locale.getDefault();//獲得Locale對象,默認當前國際和語言

ResourceBundle bundle=ResourceBundle.getBundle("test/message",locale);//根據當前環境加載資源文件

System.out.println(bundle.getString("hello"));//在message_zh_CN.properties中找,找不到在message_zh.properties中找,找不到在message.properties中找,再找不到就報錯誤

如果在資源文件中帶了佔位符,例如:msg={0},你好,今天是{1}

那麼就要使用MessageFormat了,這個類裏有個format(String pattern,Object … values)方法

還有一種方式是以實現了ListResourceBundle的類爲資源文件,例如baseName_zh_CN.class,這種方式這裏不介紹

2.      jsp的國際化實現

參考:http://blog.csdn.net/sqs201/article/details/7204244

 

3.      struts2的國際化

a)        全局範圍

配置常量struts.custom.i18n.resources=baseName國際化資源文件的位置,那麼在任何地方都可以使用資源文件中的內容,在頁面上可使用<s:text name=”msg” ><s:param ...></s:text> 在action中使用getText(msg,newString[]{…})

在struts2中資源文件中可以使用ognl表達式作爲佔位符,例如welcome_msg=${username},welcome you!,但是這種佔位符功能有限,也只能直接取action中的屬性的值

b)        包範圍

在action所在包的路徑下定義資源文件,package_language_country.properties 那麼該包下所有的action可使用,這裏記住一定是”package”字符串,而不是com.other.xxx.propertis,package_xx_xx.properties和action並行存放

c)        Actioin範圍

在action的java文件所在的路徑下存放ActionClassName_language_country.properties,則只有類名爲ActionClassName的action和轉發到的頁面可以使用.

d)        臨時

把<s:i18n ..> 作爲<s:text..>的父標籤, 在s:i18n中指定資源文件,那麼也只有在這個標籤裏可以使用

 

如果在UserAction中使用國際化,查找key的順序如下:

UserAction.properties->UserAction的父接口.properties->package.properties->全局

如果在UserAction轉發到的頁面上使用國際化,那麼順序就是:臨時->類範圍->包範圍->全局


發佈了46 篇原創文章 · 獲贊 26 · 訪問量 26萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章