2011-01-21 38 views
5

许多我都需要建设网站时,支持多国语言次,但还没有拿出从服务器传送中的语言字符串的好方法给客户,让他们能在JavaScript中用于对话框,消息等什么是推荐的方式,使多语言支持Javascript的显示文本

你有什么建议或经验,用这个?

编辑:我倾向于动态生成JavaScript语言文件,并希望如果有人知道任何第三方库可以做到这一点。

回答

2

我通常将所有字符串规范独立的文件,然后包括在页面上一个合适的,这样的事情:

在ST/JS /消息-ru.js:

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

在ST/JS /消息-en.js:

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

当生成页面,您可以确定语言和在页面上插入相应的JS文件。

0

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

1

生成JavaScript的上飞处理语言环境依赖于语言的部分。为性能缓存语言特定的JavaScript,一旦它为给定的语言环境生成。这样可以节省从维护太多的语言特定的JavaScript

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(); %>);' 

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

+0

目前我使用一个命名空间的数组存储使用数字键的字符串,主要是因为服务器端已经使用这种格式,但它是不是很适合开发者都在大量的评论,指出那些关键的是指结果。我试图设计的东西更通用 – eaglestorm 2011-01-22 10:46:09

0

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

+0

无definetly不使用ScriptManager – eaglestorm 2011-01-22 10:41:27

+0

我明白这一点来看;-)我认为你必须自己编写或找到一个第三方工具,然后。 – 2011-01-22 18:48:17