Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Web应用程序国际化,是服务器端还是客户端?_Javascript_Asp.net_Internationalization_Client Side_Server Side - Fatal编程技术网

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

Javascript Web应用程序国际化,是服务器端还是客户端?,javascript,asp.net,internationalization,client-side,server-side,Javascript,Asp.net,Internationalization,Client Side,Server Side,我们希望将web应用程序国际化。输出翻译最好是服务器端(用.NET4c#编写)还是客户端(Javascript) 我们已经开始在客户端通过创建一个JS文件来实现这一点,该文件包含一个包含英语短语作为键的对象(这样开发人员就可以理解每个消息在上下文中的含义),其中的值是向客户端显示的任何警报和提示的字符串。我们正在考虑将此扩展到整个前端的所有措辞 这是一个好主意还是最好在服务器端执行这种工作 更新:如果这有助于改变论点,我们在web应用程序中不会大量使用服务器端控件,我们的大多数控件都是基于jQu

我们希望将web应用程序国际化。输出翻译最好是服务器端(用.NET4c#编写)还是客户端(Javascript)

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

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

更新:如果这有助于改变论点,我们在web应用程序中不会大量使用服务器端控件,我们的大多数控件都是基于jQuery/JS的


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

SEO方面,我建议在服务器端执行此操作,并在单独的url下提供该应用程序

例如:

www.application/en/

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

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

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

正如您所看到的,最好的方法是混合方法。出于许多原因,最好对整个应用程序使用一个本地化模型,即仅使用*.resx文件。

此外,国际化不仅仅是简单的字符串外部化

我会投票给服务器端,但有投票的感觉。是的,不幸的是,我可以看出这可能是高度有争议的,但理想情况下,我希望听到过去可能不得不做出类似决定的人的意见。客户端===可访问性失败如果客户端关闭JavaScript,客户端的东西就无法工作。有些人喜欢。我看不出客户端有什么好处。网站本身需要Javascript作为入门的最低要求,因为绝大多数控件都是jQuery/Ajax控件。在JS中执行翻译意味着我们不必将现有的Javascript转换为动态生成的文件。感谢Daniel,此应用程序仅在订阅的基础上可用,因此其内容不可公开访问。但是我很感激你的评论。我不知道。如果您选择在客户端执行,我已经看到一些将语言键/值存储在json文件中的解决方案。这种方式很容易处理和编辑。祝你好运。谢谢大牛,对不起,我刚才没有说明。我也见过一些JS翻译工具,它们引导我走上这条道路。特别是对于所有基于jQuery的控件。您好,shreyas,user locale是Web应用程序中的用户设置(这意味着如果他们从国外访问,他们仍然可以在自己的时区/语言中看到这一切),从服务器端(通过Ajax)发送的错误消息会与Javascript中的键/值对象进行比较,以及向用户显示的相关值。为此,我同意最好将所有翻译保持在一种格式中,以交付给翻译人员。我没有想到从resx文件中检索单个字符串的AJAX。但是,我想我会有一个脚本,它将所有需要的翻译排队,并在加载完所有控件后,作为单个请求发送页面上所有控件的所有特定需要的翻译字符串。这将意味着只获取一次所需的翻译,而不单独收集,因为请求开销将对控制繁重的表单造成沉重负担。