`
xxqn
  • 浏览: 74893 次
  • 性别: Icon_minigender_1
  • 来自: 广东韶关
社区版块
存档分类
最新评论

javascript国际化终极方法

阅读更多
    最近本人被如何使用在JSF中使用JAVASCRIPT框架的国际化资源问题一度困扰。国际化问题常常困扰着我们,特别是像我这样在使用jsf的同行们,在这里跟大家探讨一下如何更好实现项目的国际化。
    jsf在发布的时候就已经充分考虑了国际化的实现,其实现方法是将国际化部分从页面中分离出去单独实现,jsf页面最好只保留iso-8859-1编码格式的页面代码,由于存在这样的缺省情况,编辑器不使用其他代码来编辑JSF页面是正确的,只是对于我们这些母语不是西文的中国同行带来了一些不变,所以网上有许多关于如何在页面上直接实现中文支持的方法,多不太理想,也许不知道什么时候又会重新出现不支持的问题。我个人不认为突破jsf原有的国际化方案是明智的选择,既然采用jsf就尽量采用规范的做法,基本不会出问题。
    也许大家对jsf的国际化可能比较熟悉了,这里我简略的说一下。
    国际化缩写为"il8n",jsf使用Java的国际化处理方式:使用ResourceBundle
    首先创建ResourceBundle文件,例如我们的项目需要国际化,创建一个名为"test.bundle1"的国际化资源文件,其实是一组文件,包括一个缺省资源文件以及各个语言版本的资源文件,各国的资源文件由该国文字书写,然后经由工具native2ascii(或者IDE的相关插件)把各个语言资源文件转换为统一的Unicode的编码字串,例如“密码修改”编码输出显式的编码字符串"\u66F4\u6539\u8D26\u6237",jsf根据客户端的本地格式选配相应的资源文件嵌入页面。
    这些Unicode编码字符串可以被所有通用的浏览器支持,不管你的原始页面使用什么代码写的,混合其中Unicode编码总可以被正确解释,包括在javascript中的Unicode编码文字。
    最近想在客户端直接使用javascripe,以提高项目的用户体验,为此选用了一些框架,例如jquery、dojo等都遇到国际化问题,一直未能解决,致使开发停滞不前。这些框架应该讲国际化还是做得不错的,国际化资源均是UTF-8编码的,在许多情况下没有问题,但是通过jsf容器发布出去就遇到了iso-8859-1编码问题,页面以iso-8859-1的编码读UTF-8的javsscript资源文件肯定是乱码啦。
    找出原因以后,参照jsf国际化的原理处理同样可以将javascript国际化问题完善解决掉。以dojo为例,它的资源文件均是UTF-8的,使用
  
native2ascii -encoding UTF-8 in.js out.js
可以转换单个文件,使用ant脚本可以批量处理
   
<target name="native2ascii">
	   <native2ascii encoding="UTF-8" src="E:\dojo\dojo-release-1.1.0" dest="E:\dojo\native"
	    includes="**/*.js" />
	  </target>

    希望浏览本文的各位仁兄可从中获益。
分享到:
评论
6 楼 xinxian 2012-11-12  
bs lz,哎……
5 楼 thinkintime 2008-10-14  
看不出终极在哪,LZ以后不要把标题搞得那么大好不好
4 楼 xxqn 2008-09-09  
本文讨论的不是本地化,而是国际化,融合dojo的国际化以及jsf国际化的内容以更加方便使用。
3 楼 mike98 2008-09-04  
老兄,你这是本地化,不是国际化,只能中文用了,英文或其它文字又怎么办呢?
2 楼 xxqn 2008-04-15  
采用dojo 这样的javacript框架,里面有许多器件都是已经国际化了的,拿来使用必然存在国际化问题,我们不可能另外重写一套方案来替代框架提供的国际化方案,这样成本太高了,也不现实。
javacript有其固有的效率问题,其实java的国际化也同样有效率问题,只是Java效率比javascript高许多而已,提供的方案也比较统一规范,所以我们不太感觉性能问题。
dojo在使用中确实还存在着许多问题,我现在也只是正在学习阶段,还不能给出太多评价。不过javascript框架可以充分利用客户端的cpu资源,只要客户端浏览器能够承受就应该没问题,优点是大大减少网络数据传输,减小服务器端的压力,对于大型分布式网络系统应用应该更加有利的。
另外dojo性能应该比ext好。
1 楼 jelly 2008-04-15  
我们的项目没有用js做国际化,而是用java的国际化。js的国际化会不会有效率的问题,使用dojo之后的效率问题好令人头疼啊!

相关推荐

    FBT是一个来自Facebook的JavaScript国际化框架强大又灵活而且简单直观

    FBT(Facebook Translation Bundle Tool)是Facebook开源的一个JavaScript国际化框架,它旨在简化Web应用的多语言支持,同时保持代码的可读性和维护性。在深入理解FBT之前,我们需要先了解一些基本的国际化(i18n)...

    js使用i18n实现页面国际化的方法

    本文将详细探讨如何使用JavaScript(简称js)中的i18n库实现页面国际化。 首先,需要理解i18n的含义。"i18n"是一个行业术语,代表“internationalization”,是指软件或文档在设计阶段就考虑了不同地区和语言的用户...

    JavaScript数字格式化

    该文档为javascript的数字格式化方法,可用于保留小数位,强制添0等操作

    javascript方法和技巧大全

    ### JavaScript方法和技巧详解 #### 一、基本概念与语法结构 **JavaScript**是一种轻量级的编程语言,被广泛应用于网页开发中,用于增强网页的交互性与动态效果。以下是一些基本的语法和使用技巧。 ##### 1. 嵌入...

    file input 按钮国际化

    在IT行业中,"国际化"(Internationalization)是一个重要的概念,特别是在开发支持多语言的应用程序时。这个过程涉及设计和构建应用程序的方式,使得它可以适应不同地区的文化、语言和格式要求。"file input 按钮...

    Javascript/Vue/React/ReactNative的国际化解决方案

    JavaScript作为浏览器端的主要脚本语言,本身并不直接提供国际化功能,但有多个库如`Intl` API和社区维护的i18n库如`i18next`、`format.js`等可以用来实现国际化。`Intl` API是ECMAScript的一个内置对象,提供了基本...

    javascript实现序列化serializable unserializable

    在JavaScript中,序列化(Serialization)和反序列化(Unserialization)是两个关键概念,用于将数据对象转换为可传输的字符串格式,以及将这种字符串还原回原始对象。这一过程在许多场景下都非常有用,例如在存储...

    fbt:JavaScript国际化框架

    FBT是JavaScript的国际化框架,其设计不仅功能强大且灵活,而且简单直观。 它有助于以下方面: 整理源文本进行翻译 组成语法正确的可翻译UI 消除用于生成UI的详细样板 例子 要求 建立fbt库 git clone git@github....

    JavaScript代码格式化工具

    JavaScript代码格式化工具是开发过程中不可或缺的辅助软件,主要用于整理和优化JS(JavaScript)源代码的格式,使得代码更易读、易维护。在实际工作中,我们常常会遇到从网络上下载或者他人分享的JavaScript代码,...

    JavaScript插件化开发教程(六)

    ## JavaScript 插件化开发概述 JavaScript 插件化开发是一种将应用程序分割成可复用、可维护的代码块的开发模式。在本文中,我们将继续探讨 JavaScript 插件化开发的进阶知识,并对之前教程中提出的概念和代码进行...

    STRUTS2+JavaScript 的分页,而且国际化

    接下来,我们将深入探讨STRUTS2如何与JavaScript结合实现分页以及国际化。 首先,让我们关注"STRUTS2+JavaScript 的分页"。STRUTS2通过Action类和结果类型来控制页面跳转和数据处理。在分页场景下,Action类通常会...

    基于Javascript的大数据大屏可视化设计源码

    本资源提供了一套基于Javascript的大数据大屏可视化设计源码,包含107个文件,其中包括48个JavaScript脚本文件,27个PNG图片文件,以及8个CSS样式文件。此外,还包括5个JSON配置文件,5个EJS模板文件,以及3个HTML...

    JavaScript日期和时间格式化全指南

    JavaScript提供了多种方式来格式化日期和时间,包括原生的Date对象方法、国际化API(Intl对象)以及第三方库。本文将详细介绍这些方法,并提供实际代码示例。 在JavaScript中格式化日期和时间是一个涉及多种方法和...

    cefsharp JavaScript调用C#方法并返回参数

    在IT领域,CEFSharp是一个非常重要的库,它允许开发者在.NET环境中嵌入Chromium...通过理解和应用上述步骤,开发者可以在.NET应用中构建出高度定制化的浏览器体验,同时充分利用JavaScript的便利性和C#的强大功能。

    基于Javascript的voerka-i18n一健国际化全流程解决方案设计源码

    voerka-i18n是一个基于Javascript开发的一键国际化全流程解决方案,包含654个文件,其中包括174个JavaScript文件、123个Markdown文件、117个TypeScript文件、103个JSON文件、35个PNG图片文件、17个Vue文件、13个HTML...

    JavaScript中文转码国际化

    用JavaScript脚本在网页实现的中文Unicode码转换

    JavaScript bom操作 window对象的方法 示例代码

    JavaScript bom操作 window对象的方法 示例代码JavaScript bom操作 window对象的方法 示例代码JavaScript bom操作 window对象的方法 示例代码JavaScript bom操作 window对象的方法 示例代码JavaScript bom操作 ...

    基于JavaScript的青藏高原城市化和生态环境迫切化大屏数据可视化系统源码.zip

    基于JavaScript的青藏高原城市化和生态环境迫切化大屏数据可视化系统源码.zip 基于JavaScript的青藏高原城市化和生态环境迫切化大屏数据可视化系统源码.zip 基于JavaScript的青藏高原城市化和生态环境迫切化大屏数据...

    JavaScript实现的可视化表单设计器源码.zip

    JavaScript实现的可视化表单设计器源码.zip JavaScript实现的可视化表单设计器源码.zip JavaScript实现的可视化表单设计器源码.zip JavaScript实现的可视化表单设计器源码.zip JavaScript实现的可视化表单设计器源码...

Global site tag (gtag.js) - Google Analytics