struts2國際化

java國際化

資源包

格式:
<包名>_<語言代碼>_<國家/地區代碼>
<包名>_<語言代碼>
屬性文件
純文本文件,保存字符串的鍵-值對信息,每行一條,
使用ResourceBundle加載獲取資源,這是一個抽象類,
提供了綁定資源的靜態方法。

資源綁定類
繼承抽象類ListResourceBundle
				public class Text_ja_JP extends ListResourceBundle{
				String[][] str = new String[][]{
					{"name","小明"}
				};
				
				@Override
				//重寫getContents方法返回一個二維數組
				protected Object[][] getContents() {
					return str;
				}
			}



查找規則
查找包含語言和地區的資源包,如果沒有找到就找包含語言的資源包,
再沒有找到就直接用默認資源包,如果默認資源包不存在就報錯,
默認是在類路徑下查找,如果包含在包裏,指定資源包名時要加包名。

消息格式化

使用MessageFormate進行消息格式化,指定一個消息模式,"{0}~{9}"進行標識
作爲佔位符,佔位符出現的順序,和次數不限制,
	public class TextI18N {
		
			public static void main(String[] args) {
				Locale defaultlocale = Locale.getDefault();
				ResourceBundle bundle = ResourceBundle.getBundle("Text");
				String format = bundle.getString("format");
				//format="{0} is a {1}";
				MessageFormat mf = new MessageFormat(format,defaultlocale);
				Object[] obj = {"xiaoming","student"};
				String  str = mf.format(obj);
				System.out.println(str);
				//xiaoming is a student
			}
		}


佔位符樣式{index,type,style},

Struts2國際化

資源文件的加載

這裏和Java國際化不同的是sturts2會自動尋找國際化資源文件

Action範圍的資源文件,資源文件名是Action類名,當然資源包和類是在同一路徑下的。

這裏也是先查找 _語言_地區 後 _語言 最後 直接加載沒有地區和語言的資源包

然後是包範圍的,注意包範圍的資源文件,

資源包名就是package,是在包的根路徑下,就是包的.class文件路徑

沒有再是使用默認設置的資源包。

在紅色地方是sturts2配置的一些默認的常量,可以找到配置國際化資源的全局常量,

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


jsp中訪問國際化資源文件

<s:i18n/>標籤

用於指定是哪個資源文件

<s:text/>標籤

可以單獨使用,用param標籤指定資源文件中的佔位符,這裏單獨使用

訪問的資源文件和是否是直接訪問的jsp頁面還是通過action跳轉的有關
注意標籤裏面的value屬性會進行ognl解析,要傳String要用''括起來

<s:textfield key=""/>

這裏的key訪問的資源文件和是否是直接訪問的jsp頁面還是通過action跳轉的有關,

label屬性是將標籤寫死的,但可以進行強制Ognl解析,進行國際化


通過action跳轉到jsp頁面的<s:text/>標籤訪問的資源文件和Action一樣,

單獨訪問jsp頁面的<s:text>標籤訪問的是全局的資源文件

jsp中消息格式化

使用<s:param/>標籤傳入參數替換佔位符

Action中訪問國際化資源文件

使用getText()函數讀取,可以接參數

Action中消息格式化

getText()方法可以傳入一個數組類型的參數替換佔位符

在國際化資源文件中訪問本地化消息

age = 20
name = xiaoming
msg = ${getText("name")} is ${getText("age")} and ${msg}
後面的${msg}是從值棧中去值進行匹配

設置默認的資源文件包

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