<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    溫故知新:struts2_07其他功能:國際化

    說起國際化,第一次接觸的時候感到這個功能很神奇,起初很天真的以為是什么國際通訊之類的功能,其實不是的。。。這個功能用中文叫國際化,英文里就有一個很高大上的稱呼,叫i18n,其實i18n就是internationalization的偷懶寫法,聽起來很有逼格。除了i18n,L10n(localization),g11n(globalization),還有m17n(multilingualization),這些解決方案都是為了能讓站點的頁面能夠適應多國語言,當然,如果有必要的話。

    其實多語言問題,Java本身就提供了解決方案,util工具包中ResourceBundle就可以解決該問題,ResourceBundle的說明如下寫道
    ......
    This allows you to write programs that can:
    • be easily localized, or translated, into different languages 
    • handle multiple locales at once 
    • be easily modified later to support even more locales
    ......
    顯然,為了能使用國家化,我們需要為每一個需要使用的語言單獨配置他們的語言內容。分別新建中文和英文的語言配置文件置于src下
    Message_zh.properties
    1 username=\u7528\u6237\u540D(用戶名)
    2 password=\u5BC6\u7801(密碼)
    Message_en.properties
    1 username=username
    2 password=password
    由于properties只支持iso-8859格式的編碼,所以在輸入中文的時候會有些問題,只是Eclipse自帶的properties編輯器可以進行可視化的文本輸入,不需要關注編碼。另外我們可以通過Java自帶的轉碼工具native2ascii進行轉碼。
    測試類如下,getBundle方法接收兩個參數,第一個是BaseName,可以理解為資源的基礎名,第二個是語言碼,中文是zh,英文是en等等,測試類運行完畢之后會給出英文資源文件中username所對應的值,同理Locale設置為中文則輸出中文的值。所以資源文件我們以Message_en.properties這種格式來命名,其中en之后還可以添加下劃線跟第三個值區域碼,但是一般可以省略。
     1 package demo.i18n;
     2 
     3 import java.util.Locale;
     4 import java.util.ResourceBundle;
     5 
     6 public class I18nTest {
     7 
     8     public static void main(String[] args) {
     9         ResourceBundle rb = ResourceBundle.getBundle("Message", Locale.ENGLISH);
    10         System.out.println(rb.getString("username"));
    11     }
    12     
    13 }
    14 

    基于上面的內容,struts2使用它們配置全局國際化資源,在struts.xml中添加國家化的配置,其中value就是資源的基礎名
    1 <constant name="struts.custom.i18n.resources" value="Message" />
    之后,在頁面上使用struts2的標簽進行對應語言內容的顯示,當然,顯示哪種語言需要顯式的將語言碼作為參數傳入,請求地址需要寫作/XXX.action?request_locale=en
    1 全局國際化<br/>
    2 <s:text name="username"/><br/>
    除了全局國際化的配置,struts2還提供了包范圍和action范圍的國際化,其中包范圍的國際化,需要將資源文件命名為“package_語言碼.properties”的形式,然后置于需要的包下,struts2會優先取得較小范圍的國際化資源文件,同時定義全局國際化資源和包國際化資源,那么包范圍的資源會優先生效。至于action范圍的國際化,因為國際化在日常的開發中本來用的就不是很多,就算真的碰到需要雙語開發的情況,或許也是做兩套頁面,或者直接做兩套網站,除非是那種跨國性質的“因特噗啦一吇”,否則不要說struts2的全局國際化的使用,針對包范圍和action范圍的國際化,都是少有問津。







    posted on 2014-11-02 15:13 都較瘦 閱讀(132) 評論(0)  編輯  收藏 所屬分類: MVCFramework

    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    導航

    統計

    公告

    博客定位:囿于目前的水平,博客定位在記錄自己的學習心得和隨手的練習

    常用鏈接

    留言簿

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲AV日韩AV高潮无码专区| 182tv免费视频在线观看| 亚洲中文字幕无码中文| **一级一级毛片免费观看| 亚洲国产二区三区久久| 最近免费中文字幕大全免费版视频 | 国产精品免费久久| 久久久久久A亚洲欧洲AV冫| 精品国产污污免费网站入口在线| 国产精品亚洲玖玖玖在线观看 | 亚洲av纯肉无码精品动漫| 国产成人免费a在线资源| 青娱乐在线免费观看视频| 亚洲欧洲精品成人久久奇米网 | 91热久久免费精品99| 国产伦精品一区二区三区免费下载| 亚洲AV午夜成人影院老师机影院 | 国产乱妇高清无乱码免费| 亚洲精品无码精品mV在线观看| 免费国产午夜高清在线视频| 亚洲精品高清视频| 无人在线观看完整免费版视频| 亚洲av永久无码精品秋霞电影秋| 久久精品国产精品亚洲艾草网美妙 | 伊人久久亚洲综合影院| 亚洲AV成人片色在线观看| 亚洲 暴爽 AV人人爽日日碰| a在线视频免费观看在线视频三区 a毛片成人免费全部播放 | 亚洲精品123区在线观看| 亚洲精品NV久久久久久久久久| 日本视频免费高清一本18| 亚洲精品国产精品国自产网站| 国产精品久久免费视频| 中文字幕无码免费久久9一区9| 亚洲日本国产精华液| 四虎永久成人免费影院域名| 中文在线观看永久免费| 亚洲一区二区三区国产精品无码| 免费大片黄手机在线观看 | 成人毛片18女人毛片免费| 中文字幕在线免费看|