何時,紗窗外,風搖翠竹

          常用鏈接

          統(tǒng)計

          最新評論

          • 1.?re: 慎用AJAX框架
          • AJAX是中國技術(shù)領域的紅燈區(qū)。。想爽,但又怕潛伏著危險。。。
          • --阿斯頓飛
          • 2.?re: 慎用AJAX框架
          • 評論內(nèi)容較長,點擊標題查看
          • --夏如嘏
          • 3.?re: 慎用AJAX框架
          • ajax 要懂的原理,同意樓主,框架慎用
          • --驕傲
          • 4.?re: 慎用AJAX框架
          • @讀書、思考、生活
            2、bug滿天飛,那就說明是水平不到家
            您的水平能高到?jīng)]有bug?
          • --樓主
          • 5.?re: 慎用AJAX框架
          • 只要你懂xmlhttp,為什么非要用ajax呢,我從2000年開始使用xmlhttp,ajax剛出來的時候看了一眼,冷笑一聲。所以爭論沒有意義,到處都是新瓶裝老酒的故事
          • --挨踢的貨

          Dojo 0.3.1 的國際化支持

          ??? 這兩天花了點時間看 Dojo 0.3.1 的新功能, 發(fā)現(xiàn)Dojo果然兌現(xiàn)承諾, 在0.3.1加入了一點國際化支持的功能。最主要的是改動是引進了 dojo.locale 屬性和 dojo.i18n 包, 從而于 javascript 實現(xiàn)了Client端的本地 message bundle 機制,從現(xiàn)在起,我們可以在客戶端根據(jù)locale裝載JS消息文件了! 完整的示例代碼如下:

          <script?type="text/javascript">????????????????????????
          ????????djConfig?
          =?{
          ????????????????isDebug:?
          true
          ????????};
          </script>
          <script?type="text/javascript"?src="../../dojo.js"></script>
          <script?type="text/javascript"?src="../_bootstrap.js"></script>
          <script?type="text/javascript">
          ????????dojo.locale?
          =?"fr";
          ????????dojo.requireLocalization(
          "g11n.messages","salutations","en");
          ????????dojo.requireLocalization(
          "g11n.messages","salutations","fr");
          ????????dojo.requireLocalization(
          "g11n.messages","salutations","zh-cn");
          ????????dojo.require(
          'dojo.i18n.common');????????
          </script>

          <script?type="text/javascript">
          ????????function?init()?{
          ????????????????var?salutations_default?
          =?dojo.i18n.getLocalization("g11n.messages",?"salutations");
          ????????????????dojo.debug(
          "default?language:?"+salutations_default.hello);
          ????????????????
          ????????????????var?salutations_zh?
          =?dojo.i18n.getLocalization("g11n.messages",?"salutations",?"zh-cn");
          ????????????????dojo.debug(
          "Chinese:?"+salutations_zh.hello);????????????????
          ????????}
          ????????dojo.addOnLoad(init);
          </script>


          ?? 首先是 dojo.locale 這個屬性,這個屬性是一個全局,作為用戶默認的locale,如果用戶不明確指定,dojo會根據(jù)瀏覽器的locale對這個屬性賦值。和Java不同,目前在dojo中l(wèi)ocale并沒有對應對象,只是一個String對象,典型的格式應該是 "zh","zh-cn"。注意后者用的是 "-" ,而不是Java中的 "_"。
          ? ?
          ?? 現(xiàn)在來看最讓人心動的 message bundle 機制, 首先分成三步來把message文件組織好:

          ??????? 1) 要建立一個集中存放message文件的目錄,我建的是 g11n\messages;

          ??????? 2) 和在java中一樣,為不同的locale建立存放message文件的文件夾,比如我建的是"en","fr","zh-cn"; 這里要注意文件夾的名稱必須要全部小寫,原因是dojo從文件裝載消息會把傳入的locale屬性進行 toLowerCase() 的處理(暈,不知道作者怎么想的)。

          ??????? 3) 把翻譯完并用native2ascii轉(zhuǎn)換好的消息文件放入對應的文件夾內(nèi)。和Java不同的是,dojo用 JSON 格式來組織message文件,所以要把property文件轉(zhuǎn)換到JSON格式的js文件, 不過這也很容易: 在文件開始的位置加入一個"{", 結(jié)尾的地方加入"}", 將所有的 "=" 替換成 ":" , 然后在每一行結(jié)尾處加入一個"," ,最后把文件改成js結(jié)尾便可以了。一個典型的JSON格式的文件如下(假設文件名叫 salutations.js ) :


          {
          ?hello:?
          "Hello",
          ?dojo:?
          "Dojo",
          ?hello_dojo:?
          "%{hello},?%{dojo}!",
          ?file_not_found:
          "The?file?you?requested,?%{0},?is?not?found."
          }

          ?
          ?? 把消息文件放好后,便可以在 dojo 中通過 dojo.requireLocalization() 調(diào)用這些文件了,對應的代碼是:

          ??????
          //下載需要的locale的消息文件到客戶端
          dojo.requireLocalization("g11n.messages","salutations","en");
          dojo.requireLocalization(
          "g11n.messages","salutations","fr");
          dojo.requireLocalization(
          "g11n.messages","salutations","zh-cn");
          //調(diào)用國際化包
          dojo.require('dojo.i18n.common');??

          ?
          ?? 現(xiàn)在就可以調(diào)用指定locale的 message 了!在示例代碼中我舉了兩個簡單的例子:

          ???
          //調(diào)用?dojo.locale?指定的locale中對應的消息文件中?hello?那條消息
          ????var?salutations_default?=?dojo.i18n.getLocalization("g11n.messages",?"salutations");
          ????dojo.debug(
          "default?language:?"?+?salutations_default.hello);

          ????
          //調(diào)用"zh-cn"中?hello?那條消息
          ????var?salutations_zh?=?dojo.i18n.getLocalization("g11n.messages",?"salutations",?"zh-cn");
          ????dojo.debug(
          "Chinese:?"+salutations_zh.hello);?


          ?? 怎么樣,非常簡單吧?

          ??? 除了message bundle, dojo 還聲明要支持其他的一些國際化功能,比如Date,Number,Currency等等,在0.3.1中我只發(fā)現(xiàn)Date有一定的實現(xiàn),但是基本就是對 Javascript Date 對象的幾個locale相關的方法進行了一下封裝,沒有多少實質(zhì)性的提高,看來dojo在國際化的支持方面還有很長的路要走。無論如何0.3.1中提供的message bundle已經(jīng)有了一個良好的開端,值得期待。

          posted on 2006-09-19 11:19 weidy 閱讀(1682) 評論(1)  編輯  收藏 所屬分類: WEB & AJAX

          評論

          # re: Dojo 0.3.1 的國際化支持 2006-09-21 16:23 123bingbing

          這里是全新的競爭方式,讓你在無數(shù)的程序員中脫穎而出!www.mylinux.com  回復  更多評論   

          主站蜘蛛池模板: 襄城县| 金沙县| 林州市| 双鸭山市| 天镇县| 灯塔市| 麻城市| 乌兰县| 尚志市| 宜春市| 三亚市| 深圳市| 墨竹工卡县| 互助| 无棣县| 濮阳县| 修水县| 云和县| 汤阴县| 通化市| 蒙城县| 牡丹江市| 芮城县| 巴彦淖尔市| 汾阳市| 于田县| 大悟县| 长海县| 大关县| 柳河县| 炉霍县| 永清县| 涪陵区| 佛学| 泌阳县| 宜宾市| 英超| 二连浩特市| 资阳市| 舟曲县| 玉田县|