为Javascript显示的文本启用多语言支持的推荐方法是什么?

时间:2011-01-21 06:35:18

标签: javascript .net web-applications

在构建网站时,我需要多次支持多种语言,但尚未提出将语言字符串从服务器传递到客户端的好方法,以便它们可以在Javascript中用于对话框,消息等。

您对此有何建议或经历?

编辑:我倾向于动态生成javascript语言文件,如果有人知道任何可以执行此操作的第三方库,我将不胜感激。

5 个答案:

答案 0 :(得分:2)

我通常会将所有字符串规范移动到单独的文件中,然后在页面上包含相应的文件,如下所示:

在st / js / messages-ru.js中:

hello = "Привет"
bye = "Пока"

在st / js / messages-en.js中:

hello = "Hello!"
bye = "Good bye!"

生成页面时,您可以确定语言并在页面上插入相应的js文件。

答案 1 :(得分:1)

在即时处理语言环境中生成javascript的语言相关部分。对于性能缓存特定于语言的javascript,一旦为给定的语言环境生成。这样可以避免维护太多特定于语言的javascripts

答案 2 :(得分:1)

我们将对象传递给需要翻译的JavaScript方法,并从服务器端代码填充该对象:

<script type="text/javascript">
    var dialogl10n = {
        caption: '<%= Resources.GetString(x => x.DialogCaption) %>',
        okButton: '<%= SharedResources.GetTerm(x => x.Ok) %>'
        cancelButton: '<%= SharedResources.GetTerm(x => x.Cancel) %>'
    };
</script>

在javascript函数中:

Foo.Bar.doSomething = function(l10n) {
    alert(l1n0.caption);
}

我们正在考虑增强此功能以自动创建JSON对象:

onClick='Foo.Bar.doSomething(<%= Resources.GetPackageAsJson(); %>);'

这将创建上面手工创建的等效对象。

答案 3 :(得分:0)

没有好方法来完成这个问题。但是我或我们的团队有一个沉重的方法,在js中为不同的语言编写不同的字符串,例如,在英国,我们写了一个名为uk.js的js,在fr中我们写了一个fr .js用于对话框或消息中的静态表达。

答案 4 :(得分:0)

如果您正在使用ASP.NET AJAX框架,则ScriptManager控件包含各种机制,用于从本地化的.resx文件自动生成javascript,并根据其余的标准CultureInfo设置向用户发送正确的语言。网站正在使用。有关教程,请参阅this MSDN article