日期:2014-05-16  浏览次数:20455 次

JS国际化解决方案
这是我在别一个站看到的,做个记号,http://www.javatang.com/archives/2008/04/20/5034268.html

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

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

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

/* base.js */
 
if (javatang== null) var javatang= {};
 
if (javatang.lang == null) javatang.lang = new function(){
    this.sampleText= "This is sample text";
    // 设置下面的属性 ...
};
 
/* zh_CN.js */
this.sampleText = "例子";



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

<!doctype html public "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="gbk" >
<head>
<meta http-equiv="content-type" content="text/html; charset=gbk" />
<title> Title </title>
<script type="text/javascript" src="base.js"></script>
<script type="text/javascript" src="zh_CN.js"></script>
<script type="text/javascript">
// 下面开始在页面中调用
</script>
</head>
 
<body>
 
</body>
</html>
1 楼 wj_126mail 2011-04-25  
我们当初是这样做的,将翻译的文本放到全局资源文件中,在js中通过var gettitle=<%= 获取资源文件%>。然后使用这个变量就可以了。