2.國際化處理步驟
<1>建立資源文件
資源文件的命名規則:
默認的命名為:
文件名前綴.properties
根據語言的命名為:
文件名前綴.語言種類.properties
例如:
分別為英文(美國)、中文、默認的命名規則
Csdn_zh_CN.progperties內容:
注意:資源文件中的內容不能出現中文,所以要對中文進行轉換。
轉換:
對於中文的屬性文件,我們編寫好後,應該使用jdk提供的native2ascii命令把文件轉換為unicode編碼的文件。命令的使用方式如下:
native2ascii 源文件.properties 目標文件.properties
但是 Myeclipse智能,自動轉化。
<2>在struts.xml文件中配置常量
A.當資源文件位於src路徑下:
<!-- 國際化資源文件的基本名稱 csdn就是基礎名稱-->
<constant name="struts.custom.i18n.resources" value="csdn"/>
B.當資源文件位於包中:
<!-- 國際化資源文件的基本名稱-->
<constant name="struts.custom.i18n.resources" value="包名.csdn"/>
<3>獲取國際化標簽
A.在jsp頁面中獲取國際化標簽
<body>
登陸頁面
<br>第一種方法(xhml);
<s:form action="" namespace="/csdn"method="post" theme="xhtml">
<!-- key:指定國際化資源中的值 -->
<s:textfield name="name"key="name"></s:textfield>
<!-- showPassword是否顯示密碼 -->
<s:password name="pass"key="pass" showPassword="true"></s:password>
<!-- submit中用OGNL標簽來獲取國際化的值 OGNL標簽:%{getText("name")} -->
<s:submit value="%{getText('login')}"></s:submit>
</s:form>
第二種方法(simple);
<s:form ation="" namespace="/csdn"method="post" theme="simple">
<!-- 獲取國際化資源中的值 -->
<s:text name="name"></s:text>
<s:textfield name="name"></s:textfield>
<br />
<s:text name="pass"></s:text>
<s:password name="pass"value="123" showPassword="true"></s:password>
<br />
<!-- submit中用OGNL標簽來獲取國際化的值 OGNL標簽:%{getText("name")} -->
<s:submit value="%{getText('login')}"></s:submit>
</s:form>
</body>
B.在action中獲取國際化標簽
System.out.println(getText("nameeorr"));
采用getText("nameeorr")方法獲取
注:如果在配置文件中有點位符的情況,處理方法如下:
資源文件的內容:
A.在jsp頁面中獲取占位符:
<s:text name="wellcome">
<!-- 第一個值 -->
<s:param>
<s:property value="aa"/>
</s:param>
<!-- 第二個值 -->
<s:param>中國java</s:param>
</s:text>
效果圖:
B.在action中獲取點位符:
System.out.println("帶占位符:");
List<String> args= new ArrayList<String>();
args.add("ww");
args.add("坑你坑你坑死你");
System.out.println("第一種方法。。。"+getText("wellcome",args));
System.out.println("第二種方法。。。"+getText("wellcome",new String[]{"花花","小貓小狗"}));
效果圖:
3.包范圍資源文件
在一個大型應用中,整個應用有大量的內容需要實現國際化,如果我們把國際化的內容都放置在全局資源屬性文件中,顯然會導致資源文件變的過於龐大、臃腫,不便於維護,這個時候我們可以針對不同模塊,使用包范圍來組織國際化文件。
方法如下:
在java的包下放置package_language_country.properties資源文件,package為固定寫法,處於該包及子包下的action都可以訪問該資源。當查找指定key的消息時,系統會先從package資源文件查找,當找不到對應的key時,才會從常量struts.custom.i18n.resources指定的資源文件中尋找