JavaScript多语言实现

      首先澄清下多语言不等于国际化。国际化包含了更多的内容,如时间格式的显示、货币符号等。这里只讲解多语言的实现。

      这里的多语言只是JavaScript的多语言实现,而不是Java(JSP、Servlet)的多语言实现。

 

      Step 1 编写多语言资源文件

      将中英文资源分别写到两个Js脚本中,如

    zh_CN.js

var ip_invalid = "如: 192.168.0.1";
var can_not_empty = "必填";
var must_be_int = "必须是整数";
var must_big_than = "必须大于{0}";
var must_small_than = "必须小于{0}"
var str_too_short = "字符长度必须大于{0}";
var str_too_long = "字符长度必须小于{0}";
var str_regExp_unmatch = "格式错误";

 

    en_US.js

var ip_invalid = "As 192.168.0.1";
var can_not_empty = "Required";
var must_be_int = "Must be an integer";
var must_big_than = "Must bigger than {0}";
var must_small_than = "Must smaller than {0}"
var str_too_short = "str_too_short {0}";
var str_too_long = "str_too_long {0}";
var str_regExp_unmatch = "str_regExp_unmatch";

 

  Step 2 根据语言环境导入对应的资源文件脚本

  更上层的语言如JSP,根据当前的语言类型导入zh_CN.js 活 en_US.js

 

<script type="text/javascript" src="<%=HttpUtil.getJavaScriptLang(request)%>.js"></script>

 

     /**
     * 获得javascript脚本的语言类型
     * 当语言类型对应的文件不存在时,就采用英文(en_us)
     * @param request
     * @return 语言文件
     */
    public static String getJavaScriptLang(HttpServletRequest request)
    {
        HttpSession session = request.getSession();
        
        Locale locale = null;
        if (session != null)
        {
            locale = (Locale)session.getAttribute(Globals.LOCALE_KEY);
        }
                
        // 默认地区语言
        if (locale == null)
        {
            locale = request.getLocale();
        }
        
        String lang = locale.toString();
        
        String file = lang + ".js";
        File langFile = new File(file);
        if (langFile.exists())
        {
            return lang;
        }
        
        // 返回默认值 
        return Locale.ENGLISH.toString();        
    }

 

    Step 3 格式化函数

   为JavaScript字符串参数增加格式化函数。

/*
 * var str0 = "{0} must smaller than {1}"
 * var str1 = str0.fillArgs("apple", "watermelon");
 * srt1 equals to "apple must smaller than watermelon"
 */
String.prototype.fillArgs = function()
{
    var formated = this;
    for ( var i=0;i<arguments.length;i++)
    {
        var param = "\{"+i+"\}";
        formated = formated.replace(param,arguments[i])
    }
    return formated;
}

 

   Step 4 Html的样子

<html>
<head>
<script type="text/javascript" src="language.js"></script> 
<script type="text/javascript" src="<%=HttpUtil.getJavaScriptLang(request)%>.js"></script>
</head>
<body>
<script>
	document.write(must_big_than.fillArgs(99));
</script>
</body>
</html>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值