JSP頁面引入:<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
?
用于支持國際化和本地化開發的標簽包括:?
????? <fmt:setLocale>:用于設置當前本地化環境,其實為對應的Java類javax.servlet.jsp.jstl.fmt.locale
配置參數值,這個指定的參數由JSP運行時維護,用于確定各個JSTL標記使用的本地化環境。???
????? <fmt:bundle>:指定消息資源使用的文件。?
????? <fmt:message>:顯示消息資源文件中指定key的消息,支持帶參數消息。???
????? <fmt:param>:給帶參數的消息設置參數值。???
????? <fmt:setBundle>:設置消息資源文件。
?
??? 1.<fmt:setLocale>
??????? <fmt:setLocale>標簽用于設置當前本地化環境。
??????? 使用格式如下:?
??????????? <fmt:setLocale?value="...locale?value..."?[variant="...?variant?value..."]
??????????????????[scope="page|request|session|application"]?/>
??????? 參數:
??????????? value:這個屬性是必須要設置的,它用來設置本地化環境名,例如en_US或者zh_HK。???
??????????? variant:這個屬性設置是可選的,而且很少使用,?
??????????? scope:即指定value設置的本地化環境名所在的有效范圍,默認值為page,即本頁面。如果把
???????????????????????? scope設置為session,則表示同一個用戶發出的所有請求都有相同的本地化環境。
??? 2.<fmt:bundle>
??????? 使用格式一般如下:?
??????????? <fmt:bundle?basename=”…the?bundle’s?base?name”?[prefix=”…prefix?name…”]?>?
??????????????? <fmt:message?key=”…key?name…”?/>?
??????????? </fmt:bundle>
??????? 參數:
??????????? Basename:資源文件的基名,例如資源文件Res_zh_CN.property,則基名為Res。?
??????????? Prefix:這一設置是可選的,如果指定這個屬性,就會為標簽體中的嵌套的<fmt:message>標簽
??????????????????????? 附加了一個前綴。
??????? 說明:
??????????? 當<fmt:bundle>標簽體中嵌套<fmt:message>標簽時,這時<fmt:message>標簽默認就是使用<fmt:bundle>標簽中basename所指定的資源文件
???
??? 3.<fmt:message>
??????? 用于顯示本地化的文本,它通過key屬性來取得資源文件中相應的消息。
??????? 使用格式如下:?
??????????? <fmt:message?key=”…name?of?property…”?[bundle=”…resourceBundle…”]?
?????????????????? [var=”…variable?name…”]?[scope=”…scope?of?var…”]?/>?
??????? 參數:
??????????? key:用于查找資源文件中相應的關鍵字名,它對應著一條特定的消息。?
??????????? bundle:如果設置了這個屬性,就會使用這個屬性指定的資源文件。否則若嵌套在<fmt:bundle>
標簽中,就會直接使用<fmt:bundle>標簽中basename屬性指定的資源文件。???
??????????? var:如果指定這個屬性,則把取出的消息字符串存儲在這個變量當中。?
??????????? scope:這個屬性指定了var設置變量所在的有效范圍,默認為page,有可以設置為session。
???
??? 4.<fmt:setBundle>
??????? 用于設置一個資源文件,并給定一個標記,以便可以通過在<fmt:message>標簽中指定bundle屬性值來取得這個資源文件中的消息。
??????? 使用的格式如下:?
??????????? <fmt:setBundle?basename=”…the?bundle’s?base?name…”?var=”?…var?name…”?
????????????????????? [scope=”page|request|session|application”]?/>
??????? 參數:
??????????? basename:該屬性與<set:bundle>標簽中的basename屬性類似。?
??????????? var:給指定的資源文件取一個變量名,以便<fmt:message>標簽可以通過這個變量名來讀取該資
源文件中消息。?
??????????? scope:設置var屬性所指定變量的有效范圍。?
??????? 該標簽與<fmt:bundle>標簽功能相類似,只是<fmt:bundle>標簽一般在體中嵌套使用<fmt:message>,而<fmt:setBundle>標簽用來先定義一個資源文件,并給它指定一個變量,以便在后面通過這個變量來單獨使用<fmt:message>標簽獲取資源文件中的消息。
?
??? 5.<fmt:param>
??????? 該標簽一般和<fmt:message>標簽配套使用,用來給獲取的消息中插入一個值。
??????? 使用格式如下:?
??????????? <fmt:message?…>?
??????????????? <fmt:param?value=”?value”?/>?
??????????? </fmt:message>?
?
??? 6.實例
???????
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> <%@ page language="java" import="test.jstl.Test"%> <html> <head> <title>JSTL 國際化標簽</title> </head> <body> <c:if test="${param.locale!=null}"> <c:set var="locale" value="${param.locale}" /> <fmt:setLocale value="${locale }" /> </c:if> <form action="jstl_i18n.jsp"> <select name="locale"> <option value="zh_CN">中文</option> <option value="en_US" <c:if test="${locale=='en_US'}"> selected="selected" </c:if>>英文</option> </select> <input type="submit" value="設置" /> </form> <fmt:bundle basename="res.jstl.app"> <fmt:message var="male" key="male"></fmt:message> <fmt:message var="female" key="female"></fmt:message> </fmt:bundle> <fmt:setBundle var="bundle" basename="res.jstl.res" /> <fmt:bundle basename="res.jstl.app"> <fmt:message key="msg"> <fmt:param value="張三"></fmt:param> <fmt:param value="${male}"></fmt:param> </fmt:message> </fmt:bundle> <br /> <fmt:message key="chinese" bundle="${bundle}" /> <fmt:message key="results" bundle="${bundle}"> <fmt:param value="100"></fmt:param> </fmt:message> <fmt:message key="math" bundle="${bundle}" /> <fmt:message key="results" bundle="${bundle}"> <fmt:param value="95"></fmt:param> </fmt:message> <fmt:message key="english" bundle="${bundle}" /> <fmt:message key="results" bundle="${bundle}"> <fmt:param value="98"></fmt:param> </fmt:message> <hr /> <fmt:bundle basename="res.jstl.app"> <fmt:message key="msg"> <fmt:param value="李四"></fmt:param> <fmt:param value="${female}"></fmt:param> </fmt:message> </fmt:bundle> <br /> <fmt:message key="chinese" bundle="${bundle}" /> <fmt:message key="results" bundle="${bundle}"> <fmt:param value="95"></fmt:param> </fmt:message> <fmt:message key="math" bundle="${bundle}" /> <fmt:message key="results" bundle="${bundle}"> <fmt:param value="99"></fmt:param> </fmt:message> <fmt:message key="english" bundle="${bundle}" /> <fmt:message key="results" bundle="${bundle}"> <fmt:param value="99"></fmt:param> </fmt:message> </body> </html>
?資源文件:
//app_en_US.properties female = female male = male msg = Name {0}, sex {1}. //app_zh_CN.properties female = 女 male = 男 msg = 姓名 {0},性別 {1}。 //res_en_US.properties chinese = Chinese english = English math = Math results = Results is {0}. //res_zh_CN.properties chinese = 語文 english = 英語 math = 數學 results = 成績為 {0}。
?
輸出:

?

?
?
???
???????
?
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
