`
j2ee_zhongqi
  • 浏览: 208932 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Dojo的国际化dojo.i18n.getLocalization

    博客分类:
  • Dojo
阅读更多
<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会根据浏览器的locale对这个属性赋值。和Java不同,目前在dojo中locale并没有对应对象,只是一个String对象,典型的格式应该是 "zh","zh-cn"。注意后者用的是 "-" ,而不是Java中的 "_"。
  
   现在来看最让人心动的 message bundle 机制, 首先分成三步来把message文件组织好:

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

        2) 和在java中一样,为不同的locale建立存放message文件的文件夹,比如我建的是"en","fr","zh-cn"; 这里要注意文件夹的名称必须要全部小写,原因是dojo从文件装载消息会把传入的locale属性进行 toLowerCase() 的处理(晕,不知道作者怎么想的)。

        3) 把翻译完并用native2ascii转换好的消息文件放入对应的文件夹内。和Java不同的是,dojo用 JSON 格式来组织message文件,所以要把property文件转换到JSON格式的js文件, 不过这也很容易: 在文件开始的位置加入一个"{", 结尾的地方加入"}", 将所有的 "=" 替换成 ":" , 然后在每一行结尾处加入一个"," ,最后把文件改成js结尾便可以了。一个典型的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() 调用这些文件了,对应的代码是:
//下载需要的locale的消息文件到客户端
dojo.requireLocalization("g11n.messages","salutations","en");
dojo.requireLocalization("g11n.messages","salutations","fr");
dojo.requireLocalization("g11n.messages","salutations","zh-cn");
//调用国际化包
dojo.require('dojo.i18n.common');  

现在就可以调用指定locale的 message 了!在示例代码中举了两个简单的例子:
//调用 dojo.locale 指定的locale中对应的消息文件中 hello 那条消息
    var salutations_default = dojo.i18n.getLocalization("g11n.messages", "salutations");
    dojo.debug("default language: " + salutations_default.hello);

    //调用"zh-cn"中 hello 那条消息
    var salutations_zh = dojo.i18n.getLocalization("g11n.messages", "salutations", "zh-cn");
    dojo.debug("Chinese: "+salutations_zh.hello); 


转自:http://www.blogjava.net/weidy/archive/2006/09/19/70460.html
分享到:
评论

相关推荐

    dojo.js.uncompressed.js 1.4.2

    dojo.js.uncompressed.js 1.4.2dojo.js.uncompressed.js 1.4.2dojo.js.uncompressed.js 1.4.2

    struts2-dojo-plugin-2.2.1.jar

    1. Dojo的模块化系统(AMD,Asynchronous Module Definition):了解如何导入和使用Dojo模块,这将帮助你有效地组织和加载代码。 2. Dojo的Dijit部件:掌握常见的Dijit部件,如Button、TextBox、Grid等,以及如何在...

    Dojo基础3国际化

    最后,使用`dojo.i18n.getLocalization()`获取并使用本地化文本。 二、日期国际化 Dojo的日期国际化通过`dojo.date`模块实现,提供以下功能: 1. 获取月份的天数:使用`dojo.date.getDaysInMonth(date)`。 2. 判断...

    struts2-dojo-plugin-2.1.8.jar

    struts2-dojo 跨域时解决拒绝访问的问题

    dojo学习...........

    2. 引入Dojo核心库:通过`&lt;script&gt;`标签引入`dojo.js`,这是Dojo的基础文件,可能已经包含了部分常用模块。 3. 声明需要使用的模块:使用`dojo.require()`来引入所需的包或模块,确保它们在运行时可用。 Dojo为了...

    Dojo.The.Definitive.Guide

    Dojo支持多语言和本地化,通过`dojo.i18n`模块,开发者可以轻松地为应用程序添加不同语言的支持。 9. **Dojo Build System** Dojo的构建系统允许开发者优化和打包代码,合并多个模块为单个文件,减少HTTP请求,...

    Pragmatic.Bookshelf.Mastering.Dojo.Jun.2008.pdf

    7. **国际化与本地化**:Dojo支持多语言环境,通过dojo/i18n模块可以轻松实现应用程序的国际化和本地化。 8. **Dojo工具**:除了库本身,Dojo还提供了一些开发工具,如Dojo Build System用于优化和打包代码,Dojo ...

    struts2-dojo-plugin-2.1.6.jar 解决了datetimepicker显示月份乱码的问题

    struts2-dojo-plugin-2.1.6.jar 解决了datetimepicker显示月份乱码的问题,显示9、10、11、12月份时出现乱码,本包修改了该bug

    Dojo 入门 + Dojo 工具包系列 + Dojo 使用技巧 ......

    在使用Dojo进行Ajax通信时,Dojo的`dojo.xhr`模块提供了与服务器端进行异步数据交换的接口。它可以处理各种HTTP请求类型,如GET、POST、PUT和DELETE,支持JSON、XML等多种数据格式,为开发者提供了统一的API。 Dojo...

    dojo-release-1.1.1.tar.gz

    6. **国际化和本地化**:Dojo 提供了强大的国际化和本地化功能,支持多语言环境,方便开发面向全球用户的Web应用。 7. **网络通信**:Dojo 提供了XMLHttpRequest(XHR)的封装,支持Ajax请求以及JSONP等跨域通信...

    Dojo.GUI_v6.zip for pencil

    【Dojo.GUI_v6.zip for pencil】是一款专为Pencil设计的GUI模板资源包,它扩展了Pencil这款优秀的Web原型设计工具的功能和视觉元素。Pencil是一个免费且开源的应用程序,允许用户创建各种交互式原型,适用于网页、...

    Addison.Wesley.Dojo.Using.the.Dojo.JavaScript.Library.to.Build.Ajax.Applications.Jun.2008.pdf

    Dojo支持模块化开发,拥有强大的DOM操作、事件处理、AJAX调用、动画效果以及多种UI控件等功能。它还提供了一个强大的数据网格组件,可以轻松地处理大量数据,并具有高度可定制性。 ### 二、AJAX技术与Dojo的关系 ...

    dojo-release-1.4.0.zip

    6. **国际化和本地化**:Dojo提供了i18n(Internationalization)和l10n(Localization)支持,方便开发者构建多语言应用。 二、Dojo 1.4.0的新特性和改进 1. **Dojo Core增强**:1.4.0版本增强了Dojo核心功能,...

    struts2-dojo-plugin-2.3.1.2.jar

    struts2-dojo-plugin-2.3.1.2.jar

    DOJO TableContainer实现表单布局.js

    DOJO TableContainer实现表单布局.js

    dojo-release-1.4.0.tar

    4. **国际化(i18n)**:Dojo 1.4支持多语言环境,提供了`dojo/i18n`模块来处理不同地区的本地化数据,帮助开发者创建全球化应用。 5. **数据绑定**:Dojo的`dojo/Stateful`和`dojo/observe`模块提供了数据模型和...

    dojo-0.4.3-ajax.rar

    Dojo 是一个强大的JavaScript工具包,它为Web开发提供了丰富的功能,包括AJAX、DOM操作、动画效果、数据存储、国际化等。在这个0.4.3版本中,我们可以探讨一下dojo的核心特性和与AJAX技术的结合。 1. **Dojo 框架...

    struts2-dojo-plugin-2.2.3.jar

    struts2-dojo-plugin-2.2.3.jar struts2-dojo-plugin-2.2.3.jar

    dojo-release-1.3.0.tar

    1. **dojo.js**:这是Dojo的核心库文件,包含基础对象、事件处理、Ajax通信、DOM操作等核心功能。 2. **dijit**:Dijit是Dojo的UI组件库,提供了各种可复用的、符合WAI-ARIA标准的富用户界面组件,如按钮、表单控件...

Global site tag (gtag.js) - Google Analytics