Java堂  


Javascript的国际化方案

归档在: DynamicLanguage — Jet @ 6:50 上午
Tags:
原文出处: http://www.javatang.com/archives/2008/04/20/5034268.html
作者: Jet Mah from Java堂
声明: 可以非商业性任意转载, 转载时请务必以超链接形式标明文章原始出处、作者信息及此声明!

目前Ajax框架是层出不穷,而且功能变得越来越强大,从而使得Web页面发展为现在的三层结构之说:HTML + CSS + Script。在使用Javascript的时候涉及到其中一个国际化的问题。

Javascript中没有像Java那样拥有国际化的方案,但是可以使用一些技巧来达到目的。首先将在脚本中用到的文字全部保存到每个语种的文件中,比如简体中文zh_CN.js、英文en.js等等,然后使用动态语言判断客户端浏览器或Cookies的语言来决定加载对应语种的js文件,这样就实现了国际化的效果。

但是对于保存文本的变量而言有不同的形式,可以每个文本指定一个变量,也可以将所有的变量保存到一个或几个数组中。我发现ExtJS框架是采用通过覆盖对应模块的类属性来实现不同模块中文本的多语种显示。下面我就举例来说明这种方式:

  1. /* base.js */
  2.  
  3. if (javatang== null) var javatang= {};
  4.  
  5. if (javatang.lang == null) javatang.lang = new function(){
  6.     this.sampleText= "This is sample text";
  7.     // 设置下面的属性 ...
  8. };
  9.  
  10. /* zh_CN.js */
  11. this.sampleText = "例子";

在HTML页面中调用方式如下:

  1. <!doctype html public "-//W3C//DTD XHTML 1.0 Strict//EN"
  2.   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="gbk" >
  4. <head>
  5. <meta http-equiv="content-type" content="text/html; charset=gbk" />
  6. <title> Title </title>
  7. <script type="text/javascript" src="base.js"></script>
  8. <script type="text/javascript" src="zh_CN.js"></script>
  9. <script type="text/javascript">
  10. // 下面开始在页面中调用
  11. </script>
  12. </head>
  13.  
  14. <body>
  15.  
  16. </body>
  17. </html>

参考资料:
了解JavaScript类

没有评论 »

还没有评论。

发表您的评论