我们希望将Web应用程序国际化。是否最好输出翻译服务器端(用.net 4 C#编写)或客户端(Javascript)?
我们已经开始通过创建一个JS文件来实现客户端,这个文件包含一个包含英语短语作为键的对象(因此开发人员了解每个消息在上下文中的含义),其值是显示的字符串向客户端发送任何警报和提示。我们正在考虑将这一点扩展到整个前端的所有措辞。
这是一个好主意还是最好在服务器端执行这种工作?
更新:如果它有助于影响参数,我们不会在Web应用程序中大量使用服务器端控件,我们的大多数控件都是基于jQuery / JS的。
更新:此特定应用程序未公开显示(除登录页面外),因此SEO问题不适用。
答案 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)
如果您只向用户显示静态内容,请转到客户端国际化。 如果你显示那些是动态的内容/消息,你应该使用服务器端。 但是你如何检测用户区域设置?