Web应用程序国际化,服务器端还是客户端?

时间:2012-07-05 13:54:09

标签: javascript asp.net internationalization client-side server-side

我们希望将Web应用程序国际化。是否最好输出翻译服务器端(用.net 4 C#编写)或客户端(Javascript)?

我们已经开始通过创建一个JS文件来实现客户端,这个文件包含一个包含英语短语作为键的对象(因此开发人员了解每个消息在上下文中的含义),其值是显示的字符串向客户端发送任何警报和提示。我们正在考虑将这一点扩展到整个前端的所有措辞。

这是一个好主意还是最好在服务器端执行这种工作?

更新:如果它有助于影响参数,我们不会在Web应用程序中大量使用服务器端控件,我们的大多数控件都是基于jQuery / JS的。

更新:此特定应用程序未公开显示(除登录页面外),因此SEO问题不适用。

3 个答案:

答案 0 :(得分:5)

SEO明智,我建议在服务器端执行,并使应用程序在单独的URL下可用。

例如:

www.application / EN /

www.application / ES / ...

答案 1 :(得分:2)

I18n的第一条规则:遵循标准方式。不要重新发明轮子。对于Asp.Net,这意味着服务器端国际化。

好吧,有点儿。如果碰巧有大量动态创建的控件,则仍需要一些客户端脚本的本地化机制。你可以集中它,即创建一个全局翻译字符串数组和模型+控制器,这样你就可以通过AJAX调用填充它(尽管X最好用J代替JSON ......)。 无论如何,你的模型应该只是从资源文件中检索适当的字符串,控制器应该将JSON提供给客户端(好主意是实际请求较小的块,即只是给定视图/屏幕的转换而不是整个应用程序的转换)。

正如你所看到的,最好的是一些混合方法。出于多种原因,最好是为整个应用程序使用一个本地化模型,即仅使用* .resx文件。
此外,国际化只有much more而不仅仅是普通的字符串外部化......

答案 2 :(得分:0)

如果您只向用户显示静态内容,请转到客户端国际化。 如果你显示那些是动态的内容/消息,你应该使用服务器端。 但是你如何检测用户区域设置?