溫故知新:struts2_07其他功能:國(guó)際化

          說(shuō)起國(guó)際化,第一次接觸的時(shí)候感到這個(gè)功能很神奇,起初很天真的以為是什么國(guó)際通訊之類(lèi)的功能,其實(shí)不是的。。。這個(gè)功能用中文叫國(guó)際化,英文里就有一個(gè)很高大上的稱(chēng)呼,叫i18n,其實(shí)i18n就是internationalization的偷懶寫(xiě)法,聽(tīng)起來(lái)很有逼格。除了i18n,L10n(localization),g11n(globalization),還有m17n(multilingualization),這些解決方案都是為了能讓站點(diǎn)的頁(yè)面能夠適應(yīng)多國(guó)語(yǔ)言,當(dāng)然,如果有必要的話(huà)。

          其實(shí)多語(yǔ)言問(wèn)題,Java本身就提供了解決方案,util工具包中ResourceBundle就可以解決該問(wèn)題,ResourceBundle的說(shuō)明如下寫(xiě)道
          ......
          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
          ......
          顯然,為了能使用國(guó)家化,我們需要為每一個(gè)需要使用的語(yǔ)言單獨(dú)配置他們的語(yǔ)言?xún)?nèi)容。分別新建中文和英文的語(yǔ)言配置文件置于src下
          Message_zh.properties
          1 username=\u7528\u6237\u540D(用戶(hù)名)
          2 password=\u5BC6\u7801(密碼)
          Message_en.properties
          1 username=username
          2 password=password
          由于properties只支持iso-8859格式的編碼,所以在輸入中文的時(shí)候會(huì)有些問(wèn)題,只是Eclipse自帶的properties編輯器可以進(jìn)行可視化的文本輸入,不需要關(guān)注編碼。另外我們可以通過(guò)Java自帶的轉(zhuǎn)碼工具native2ascii進(jìn)行轉(zhuǎn)碼。
          測(cè)試類(lèi)如下,getBundle方法接收兩個(gè)參數(shù),第一個(gè)是BaseName,可以理解為資源的基礎(chǔ)名,第二個(gè)是語(yǔ)言碼,中文是zh,英文是en等等,測(cè)試類(lèi)運(yùn)行完畢之后會(huì)給出英文資源文件中username所對(duì)應(yīng)的值,同理Locale設(shè)置為中文則輸出中文的值。所以資源文件我們以Message_en.properties這種格式來(lái)命名,其中en之后還可以添加下劃線跟第三個(gè)值區(qū)域碼,但是一般可以省略。
           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 

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







          posted on 2014-11-02 15:13 都較瘦 閱讀(135) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): MVCFramework

          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          導(dǎo)航

          統(tǒng)計(jì)

          公告

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

          常用鏈接

          留言簿

          隨筆分類(lèi)

          隨筆檔案

          文章分類(lèi)

          文章檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 龙里县| 武夷山市| 合山市| 黔西| 栖霞市| 青河县| 友谊县| 天柱县| 全南县| 青岛市| 古丈县| 三河市| 合肥市| 嘉兴市| 延寿县| 北辰区| 英吉沙县| 崇信县| 理塘县| 清流县| 连云港市| 石家庄市| 夏河县| 华亭县| 莱州市| 定襄县| 溆浦县| 嘉定区| 定安县| 五寨县| 汝阳县| 太保市| 乌拉特前旗| 胶州市| 蒙山县| 平塘县| 澄城县| 清水县| 长宁区| 富锦市| 东台市|