在MVC-4项目中,使用资源文件的最佳方式是什么?

5
我正在进行一个项目,为了国际化,我使用资源文件(.resx)来处理验证消息和信息消息。它在服务器端运行良好,对于客户端,我也想使用相同的方法。我在这些优秀的博客中学习了相关信息:

http://www.hanselman.com/blog/GlobalizationInternationalizationAndLocalizationInASPNETMVC3JavaScriptAndJQueryPart1.aspx

http://afana.me/post/aspnet-mvc-internationalization.aspx

对于客户端,我想通过Ajax调用获取资源文件并将其作为JSON在客户端使用。我只是想知道我考虑的方法是否好和优化,或者是否有其他更好的方法来实现相同的目标?

请告诉我实现这一点的最佳方法是什么?

谢谢

2个回答

0

我对这个问题有一些想法:

  1. 一个想法是创建一个控制器,它可以渲染一个包含所有页面所需资源的对象的 JavaScript 文件(你也可以以其他方式进行分组,但在应用程序中拥有一个大的 JS 资源文件并不是一个好主意)。

这个控制器会生成一个像这样的对象:

var resources = {};
resources.Yes = 'Yes';
resources.No = 'No';
resources.DeleteUser = 'Delete User?';

你可以在你的脚本中轻松访问它:

if (alert(resources.DeleteUser)) {
   // Delete User
}

你需要一种聪明的方法来生成这些文件,例如你可以自动扫描你的jscript文件以查找资源访问语句,并生成这些文件。

  1. 为你的jscript文件编写一个自定义处理程序,扫描其中所有的资源访问语句,例如resources.[...],并将其替换为本地化版本。为每种语言提供一个jscript文件,并使用缓存和缓存依赖项来提高性能。

0

我在这里显然有点啰嗦了,简短的版本是,如果您需要在Javascript中使用本地化字符串,则建议使用隐藏字段来保存翻译后的值并从中获取。

处理多种语言有两个部分,全球化和本地化。

全球化是根据当前文化规范处理数字和相关事项。例如,在美国,我们会写成$1,000.00,而在德国,他们会(假设我的谷歌搜索是正确的)写成$1.000,00(货币也是一个复杂的话题,但不属于任何一方)。

这是我们有许多Javascript库的部分,因为Javascript经常必须将一些复合数据呈现为用户输出(例如,在不需要页面加载的情况下对购物车中的项目进行求和)

本地化是处理页面文本的部分,这是Javascript非常薄弱的领域。之所以它薄弱,是因为您真的不应该需要它。仅当您从Javascript渲染文本输出时,才需要Javascript本地化,这是在网页上显示文本的奇怪来源。

当我需要本地化JavaScript字符串(例如提示)时,我所做的是使用一个隐藏字段,该字段由服务器端本地化工具填充。它似乎很好地与正常流程融合,并干净地解决了问题。虽然不是理想的解决方案,但它也有助于最小化JavaScript中的常量字符串,这些字符串是本地化的噩梦。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接