C#是mvc-4项目中客户端用户资源文件的最佳方式
本文关键字:源文件 资源 最佳 方式 用户 客户端 mvc-4 项目 | 更新日期: 2023-09-27 18:29:32
我正在处理一个项目,为了国际化,我使用资源文件(.resx)来处理我的验证消息和信息消息。它在服务器端运行良好,对于客户端,我也希望使用相同的方法。我对这类东西很陌生。我学习了这些很棒的博客,并获得了有关这方面的信息:
http://www.hanselman.com/blog/GlobalizationInternationalizationAndLocalizationInASPNETMVC3JavaScriptAndJQueryPart1.aspx
http://afana.me/post/aspnet-mvc-internationalization.aspx
对于客户端,我想进行ajax调用,以获取json形式的资源文件。而不是在客户端使用它。我只是想知道我在想什么方法。它是好的和优化的,还是有其他更好的方法来实现它?
请告诉我实现这一目标的最佳方法是什么?
感谢
我显然在这里谈了一点,简短的版本是,如果你需要Javascript中的本地化字符串,那么我建议使用隐藏字段来保存翻译后的值并从中抓取。
处理多种语言有两个部分,全球化和本地化。
全球化是在当前文化规范的基础上处理数字和相关事物。例如,在美国,我们会写1000.00美元,而在德国,他们会(假设我的谷歌搜索是正确的)写1.000,00美元(货币也是一个复杂的话题,但不属于国际海事组织)。
这是我们有很多Javascript库的地方,因为Javascript经常需要将一些复合数据呈现为用户输出(例如,在不需要页面加载的情况下汇总购物车中的项目)
本地化是处理页面的文本,这是Javascript非常薄弱的地方。它之所以弱是因为你真的不需要它。唯一需要Javascript本地化的地方是当你从Javascript呈现文本输出时,Javascript是在网页上显示文本的奇怪来源。
当我需要本地化Javascript字符串(比如提示)时,我所做的是使用一个由服务器端本地化工具填充的隐藏字段。它似乎与当时的正常流程很好地结合在一起,并干净地解决了问题。虽然不理想,但它也有助于最小化Javascript中的常量字符串,这是一场本地化噩梦。
我对这个问题有一些想法:
- 一个想法是制作一个控制器来渲染一个java脚本文件,该文件有一个对象和页面所需的所有资源(您也可以用另一种方式对它们进行分组,但在应用程序中有一个大的js资源文件不是一个好主意)
这个控制器生成这样一个对象:
var resources = {};
resources.Yes = 'Yes';
resources.No = 'No';
resources.DeleteUser = 'Delete User?';
你可以在你的脚本中很容易地访问这个:
if (alert(resources.DeleteUser)) {
// Delete User
}
您需要一种聪明的方法来生成这些文件,例如,您可以自动扫描jscript中的资源访问语句并生成这些文件。
- 为您的jscript文件编写一个自定义处理程序,扫描它以查找所有资源访问语句,例如resources。[…]并将其替换为本地化版本。为每种语言提供一个jscript文件,并使用缓存和对jsscript文件的缓存依赖关系来提高性能