免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
利用資源文件實現(xiàn)java web國際化
通過指定資源文件實現(xiàn)java web國際化
一、簡介:
軟件本地化(Localization L10N):一個軟件在某國家或地區(qū)使用時,采用該國家或地區(qū)的語言,數(shù)字,貨幣,日期等。
軟件的國際化(I18n):軟件開發(fā)時,讓它能夠支持多個國家和地區(qū)的本地化應用。
(1)軟件國際化的解決方案
?  文本信息不能編碼在程序代碼中,而需要將它們從應用程序中分離出來,在軟件運行時根據(jù)本地信息讀取相應的文本內(nèi)容進行顯示。
?  數(shù)值、貨幣、日期、時間等本地敏感數(shù)據(jù)可能在程序中動態(tài)產(chǎn)生,無需從應用程序中分離出來需特殊處理,java提供解決這些問題的API類。
(2)java web國際化主要有兩種方式:
?  加載全局資源文件實現(xiàn)國際化-à在struts.xml文件中進行配置。
?  臨時指定資源文件完成國際化(2種)-à通過<fmt:i18n>標簽指定臨時文件。(或?qū)懘a獲取鍵的值      第四章詳細講)
ü  針對不同語言和地區(qū)的用戶開發(fā)出不同的JSP網(wǎng)頁版本,當用戶請求資源時,根據(jù)請求信息中攜帶的本地信息為用戶提供合適的版本。
ü  對本地環(huán)境中的靜態(tài)文本信息從網(wǎng)頁中分離出來,放在.properities屬性的資源文件中。對于數(shù)值、貨幣等本地敏感數(shù)據(jù),課采用占位符的方式設(shè)置它們的格式類型。
?  采用資源文件在Spring中配置實現(xiàn)國際化。
二、資源包簡介
(1)利用指定資源包實現(xiàn)靜態(tài)文本的國際化簡介:
?  在設(shè)計一個國際化應用時,應該把程序顯示的文本內(nèi)容從源程序中分離出來,放在獨立的資源文件中,并針對不同的本地環(huán)境編寫不同的資源文件。這些資源文件被稱為應用程序的資源包。
?  應用程序在運行時,將從與用戶本地環(huán)境相應的資源文件中讀取名稱項對應的值內(nèi)容,由于同一名稱項在各個資源文件中對應的值內(nèi)容是隨本地環(huán)境信息而改變的,這就實現(xiàn)了靜態(tài)文本內(nèi)容的國際化。
?  當為應用程序添加某個新的本地化支持時,只需要編寫一個適合的本地環(huán)境的資源文件即可,不用修改源程序代碼。
(2)資源包的介紹:
一個應用程序可以有多個資源包,一個資源包中的每一個資源文件都擁有相同的基名,并標示其本地信息。其格式為“自定義名_語言代碼_國別代碼.properties”,每個資源包中都有一個默認的資源文件,如果是默認的,直接寫為:“自定義名.properties”。
例子:
一個資源包的基名是“myproperties”,則中文、英文對應的本地化資源文件為“myproperties_zh_CN. properties”,“myproperties_en_US.properties”.
注意:若應用程序在資源包中找不到匹配的本地資源文件,最后將選擇該資源包中的默認資源文件。
(3)資源文件的內(nèi)部格式
  資源文件通常采用java.util.Properties類的要求的文件格式。
  資源文件的內(nèi)容通常采用“關(guān)鍵字=值”的形式,軟件根據(jù)關(guān)鍵字檢索值顯示在頁面上。一個資源包中的所有資源文件的關(guān)鍵字必須相同,值則為相應國家的文字。
  java.util.Properties類的要求資源文件中的字符全部為有效的ASCII字符。若資源文件中像中文這樣的非ASCII的字符,必須將它們轉(zhuǎn)化成“\uXXXX”形式的轉(zhuǎn)義字符。其中XXXX是該字符的Unicode編碼的十六進制數(shù)值。
(4)如何將本地字符集轉(zhuǎn)換成ASCII的字符編碼?
2  JDK中提供一個native2ascii工具,它可以將某種本地字符集編碼轉(zhuǎn)換成Unicode轉(zhuǎn)移字符序列。調(diào)用 native2ascii.exe,這個文件位于jdk的bin目錄下.可以先寫一個properties文件如:myproperties_zh_CN. properties里面寫上一些中文。在DOS下,運行下列命令:
native2ascii –encoding  gb2312  myproperties_zh_CN.properties myproperties_zh_CN1. Properties
原資源的編碼                         原資源文件名                                   轉(zhuǎn)碼后產(chǎn)生的文件名
這種方法很不靈活,對于比較復雜的項目這并不適用。
2  進入native2ascii2.exe中,將事先編號的文件的內(nèi)容拷到里面,回車就可得到編碼后的資源文件。
2   由于上述方法并不適用,所以有人開發(fā)了MyEclipse和Eclipse下的properties文件編輯器,這個編輯器可以很方便的進行轉(zhuǎn)換。你可以在properties文件中直接寫中文,它會自動轉(zhuǎn)換為utf-8編碼。這個非常方便。
(5)資源包通常放在src目錄下或者自己建立的classpath即/WEB-INF/classes里。
三、實現(xiàn)國際化的配置
如何在Spring 中配置國際化配置。
1、首先我們要準備資源文件,messages.properties,作為默認的資源文件,另外準備了3個版本的資源文件:messages_en_US.propertiesmessages_zh_CN.properties  messages_zh_TW.properties。放在class-path也就是/WEB-INF/classes里  。
注意:中文的資源,需要將文字轉(zhuǎn)化為下,可以使用native2ascii.exe工具,在JDK的bin目錄下,帶有這個工具。
2、web.xml 加入代碼用來定義messages文件
<context-param>
<param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
<param-value>messages</param-value>
</context-param>
3、建立個新的JSP頁面:
加入標簽庫:<%@taglib uri="
然后設(shè)置 國際化配置語言:<fmt:setLocalevalue="zh_CN"/>  這樣就會加載 messages_zh_CN.properties 的資源文件。
在用引用的國際化的屬性的時候 使用<fmt:message key="title"/> 就可以了,其中的title 為資源文件中定義的屬性
這樣就完成了一個最基本的國際化配置。
四、在java web國際化的應用
(使用臨時資源文件配置國際化)
1、使用代碼來取得國際化配置
裝載資源包并讀取信息
(1)Java.util.ResourceBundle類提供了存放盒管理資源包的功能。(需引入的類)
(2)將local對象與資源文件相關(guān)聯(lián)(加載資源文件):當應用程序需獲取特定local對象關(guān)聯(lián)的資源包時,可以調(diào)用ResourceBundle的getBundle方法,并將local對象作為參數(shù)傳入。
Locale currentLocale=Locale.getDefault();//或者Locale currentLocale=new Locale("zh","CN");
ResourceBundle myResource=ResourceBundle.getBundle(“myproperties”,currentLocale);   //實際讀取的文件應該是myproperties_en_US.properties,但是只需要告訴ResourceBundle文件名是"myproperties"就足夠了。下劃線和后面的"en"表示的是本地化信息。這里的en代表"ENGLISH",后綴properties是默認的。
注意:如果與該local對象匹配的資源包子類找不到,getBundle將試著查找最匹配的一個子類。
或者
獲取web應用中本地信息
首先獲得客戶端瀏覽器的本地信息,在servlet中調(diào)用HttpServletRequest對象的方法獲得代表客戶端本地信息的Locale對象:
request.getLocale():返回客戶端首選本地信息的Local對象。
Request.getLocales():范圍一個包含客戶端支持的所有本地信息的Local對象的Enumeration對象。
(3)讀取資源信息:加載資源文件后,ResourceBundle的實例對象就可以使用getString的方法獲取指定的資源信息名稱所對應的值。
String okKey=myResource.getString(“okKey”);
2、I18N formatting 標簽庫就是用于在 JSP 頁面中做國際化的動作
在該標簽庫中的標簽一共有 12 個,被分為了兩類,分別是:
國際化核心標簽: <fmt:setLocale>、<fmt:bundle>、<fmt:setBundle>、<fmt:message>、<fmt:param>、<fmt:requestEncoding>
格式化標簽: <fmt:timeZone>、<fmt:setTimeZone> 、<fmt:formatNumber> 、<fmt:parseNumber>、<fmt:formatDate>、<fmt:parseDate>
1、<fmt:setLocale>標簽 :
<fmt:setLocale> 標簽用于設(shè)置Locale 環(huán)境。有兩個屬性:
屬性
描述
value
Locale 環(huán)境的指定,可以是 java.util.Locale 或 String 類型的實例
scope
Locale 環(huán)境變量的作用范圍(可選)
<fmt:setLocale value="zh_CN"/> 表示設(shè)置本地環(huán)境為簡體中文。
2、<fmt:bundle> 、<fmt:setBundle> 標簽 :
這兩組標簽用于資源配置文件的綁定,唯一不同的是 <fmt:bundle> 標簽將資源配置文件綁定于它標簽體中的顯示, <fmt:setBundle> 標簽則允許將資源配置文件保存為一個變量,在之后的工作
可以根據(jù)該變量來進行。有3個屬性:
屬性
描述
basename
資源配置文件的指定,只需要指定文件名而無須擴展名,二組標簽共有的屬性
var
<fmt:setBundle> 獨有的屬性,用于保存資源配置文件為一個變量
scope
變量的作用范圍
<fmt:setLocalevalue="zh_CN"/>
<fmt:setBundle basename="applicationMessage"var="applicationBundle"/>
該示例將會查找一個名為 applicationMessage_zh_CN.properties 的資源配置文件,來作為顯示的 Resource 綁定。
3、<fmt:message> 標簽 :
用于信息顯示的標簽,將顯示資源配置文件中定義的信息。有四個屬性:
屬性
描述
key
資源配置文件的“鍵”指定
bundle
若使用 <fmt:setBundle> 保存了資源配置文件,該屬性就可以從保存的資源配置文件中進行查找
var
將顯示信息保存為一個變量
scope
變量的作用范圍
<fmt:setBundlebasename="applicationMessage" var="applicationBundle"/>
<fmt:bundlebasename="applicationAllMessage">
<fmt:messagekey="userName" />
<fmt:messagekey="passWord" bundle="${applicationBundle}"/>
</fmt:bundle>
該示例使用了兩種資源配置文件的綁定的做法,“ applicationMessage ”資源配置文件利用 <fmt:setBundle> 標簽被賦于了變量“ applicationBundle ”,而作為 <fmt:bundle> 標簽定義的“
applicationAllMessage”資源配置文件作用于其標簽體內(nèi)的顯示。
第一個 <fmt:message> 標簽將使用“ applicationAllMessage ”資源配置文件中“鍵”為“ userName ”的信息顯示。
第二個 <fmt:message> 標簽雖然被定義在 <fmt:bundle> 標簽體內(nèi),但是它使用了 bundle 屬性,因此將指定之前由 <fmt:setBundle> 標簽保存的“ applicationMessage ”資源配置文件,該“鍵”為“ passWord ”的信息顯示。
4、<fmt:param> 標簽:
<fmt:param> 標簽應該位于 <fmt:message> 標簽內(nèi),將為該消息標簽提供參數(shù)值。它只有一個屬性 value 。
<fmt:param> 標簽有兩種使用版本,一種是直接將參數(shù)值寫在 value 屬性中,另一種是將參數(shù)值寫在標簽體內(nèi)。
5、<fmt:requestEncoding> 標簽:
用于為請求設(shè)置字符編碼。它只有一個屬性 value ,在該屬性中可以定義字符編碼。 <fmt:timeZone>、<fmt:setTimeZone> 標簽 :
這 兩組標簽都用于設(shè)定一個時區(qū)。唯一不同的是 <fmt:timeZone> 標簽將使得在其標簽體內(nèi)的工作可以使用該時區(qū)設(shè)置, <fmt:setBundle> 標簽則允許將時區(qū)設(shè)置保存為一個變量,在之后的工作可以根據(jù)該變量來進行。有3個屬性:
屬性
描述
value
時區(qū)的設(shè)置
var
<fmt:setTimeZone> 獨有的屬性,用于保存時區(qū)為一個變量
scope
變量的作用范圍
6 、<fmt:formatNumber>標簽 :用于格式化數(shù)字。
屬性
描述
value
格式化的數(shù)字,該數(shù)值可以是 String 類型或 java.lang.Number類型的實例
type
格式化的類型
pattern
格式化模式
var
結(jié)果保存變量
scope
變量的作用范圍
maxIntegerDigits
指定格式化結(jié)果的最大值
minIntegerDigits
指定格式化結(jié)果的最小值
maxFractionDigits
指定格式化結(jié)果的最大值,帶小數(shù)
minFractionDigits
指定格式化結(jié)果的最小值,帶小數(shù)
<fmt:formatNumber>標簽對應 java.util.NumberFormat 類, type 屬性的可能值包括 currency (貨幣)、 number (數(shù)字)和 percent (百分比)。
<fmt:formatNumbervalue="1000.888" type="currency" var="money"/>
該結(jié)果將被保存在“ money ”變量中,將根據(jù) Locale 環(huán)境顯示當?shù)氐呢泿鸥袷健?div style="height:15px;">
7、<fmt:parseNumber> 標簽 :
用于解析一個數(shù)字,并將結(jié)果作為 java.lang.Number 類的實例返回。 <fmt:parseNumber> 標簽看起來和 <fmt:formatNumber> 標簽的作用正好相反。
屬性
描述
value
將被解析的字符串
type
解析格式化的類型
pattern
解析格式化模式
var
結(jié)果保存變量,類型為 java.lang.Number
scope
變量的作用范圍
parseLocale
以本地化的形式來解析字符串,該屬性的內(nèi)容應為 String 或 java.util.Locale類型的實例
<fmt:parseNumbervalue="15%" type="percent" var="num"/> 解析之后的結(jié)果為“ 0.15 ”。
8 、<fmt:formatDate> 標簽:用于格式化日期。
屬性
描述
value
格式化的日期,該屬性的內(nèi)容應該是 java.util.Date 類型的實例
type
格式化的類型
pattern
格式化模式
var
結(jié)果保存變量
scope
變量的作用范圍
timeZone
指定格式化日期的時區(qū)
<fmt:formatDate>標簽與 <fmt:timeZone> 、 <fmt:setTimeZone> 兩組標簽的關(guān)系密切。若沒有???定 timeZone屬性, 也可以通過 <fmt:timeZone> 、 <fmt:setTimeZone> 兩組標簽設(shè)定的時區(qū)來格式化最后的結(jié)果。
9、 <fmt:parseDate> 標簽
<fmt:parseDate> 標簽用于解析一個日期,并將結(jié)果作為 java.lang.Date 類型的實例返回。 <fmt:parseDate> 標簽看起來和<fmt:formatDate> 標簽的作用正好相反。
屬性
描述
value
將被解析的字符串
type
解析格式化的類型
pattern
解析格式化模式
var
結(jié)果保存變量,類型為 java.lang.Date
scope
變量的作用范圍
parseLocale
以本地化的形式來解析字符串,該屬性的內(nèi)容為 String 或 java.util.Locale類型的實例
timeZone
指定解析格式化日期的時區(qū)
<fmt:parseNumber>和 <fmt:parseDate> 兩組標簽都實現(xiàn)解析字符串為一個具體對象實例的工作,因此,這兩組解析標簽對 var 屬性的字符串參數(shù)要求非常嚴格。就 JSP 頁面的表示層前段來說,處理這種解析本不屬于份內(nèi)之事,因此 <fmt:parseNumber> 和 <fmt:parseDate> 兩組標簽應該盡量少用,替代工作的地方應該在服務器端表示層的后段,比如在 Servlet 中。
五、利用資源文件、jstl的格式化標簽實現(xiàn)jsp頁面的國際化步驟
(1)準備資源文件
(2)在jsp頁面中:
加入標簽庫:<%@ taglib uri="
然后設(shè)置 國際化配置語言:<fmt:setLocale value="zh_CN"/>  這樣就會加載 messages_zh_CN.properties 的資源文件。
在用引用的國際化的屬性的時候 使用 <fmt:message key="title"/> 就可以了,其中的title 為資源文件中定義的屬性
這樣就完成了一個最基本的國際化配置。
本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
SpringMVC基于瀏覽器國際化實現(xiàn)
ANT介紹及安裝及配置
兩種方法,輕松上手ConfigMap!
使用<context:property-placeholder>標簽導入多個properties文件
Struts1.x系列教程(13):國際化
Apache Commons Configuration 包使用
更多類似文章 >>
生活服務
分享 收藏 導長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服