5

我正在开发一个项目,在该项目中,为了实现国际化,我将资源文件 (.resx) 用于我的验证消息和信息消息。它在服务器端和客户端运行良好,我也想使用相同的方法。我对这种东西很陌生。我学习了这些很棒的博客以获取有关此的信息:

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

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

对于客户端,我正在考虑进行 ajax 调用以将资源文件作为 json 获取。而不是在客户端使用它。我只是想知道我正在考虑的方法。它是好的和优化的还是有其他更好的方法来达到同样的效果?

请让我知道实现这一目标的最佳方法?

谢谢

4

2 回答 2

0

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

  1. 一个想法是制作一个控制器来呈现一个 java-script 文件,该文件具有一个包含页面所需所有资源的对象(您也可以以另一种方式对它们进行分组,但拥有一个大的 js 资源并不是一个好主意-文件中的应用程序)。

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

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

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

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

您需要一种巧妙的方法来生成这些文件,例如,您可以自动扫描 jscript 中的资源访问语句并生成这些文件。

  1. 为您的 jscript 文件编写一个自定义处理程序,扫描它以查找所有资源访问语句,例如 resources.[...] 并将其替换为本地化版本。为每种语言提供一个 jscript 文件,并使用缓存和对 jscript 文件的缓存依赖性来提高性能。
于 2013-08-28T16:36:51.533 回答
0

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

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

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

这是我们有很多 Javascript 库的原因,因为 Javascript 通常必须将一些复合数据呈现为用户输出(例如在不需要加载页面的情况下汇总购物车中的项目)

本地化正在处理您页面的文本,这是 Javascript 非常薄弱的​​领域。它很弱的原因是你真的不应该需要它。唯一需要 Javascript 本地化的地方是当您从 Javascript 呈现文本输出时,这是在网页上显示文本的奇怪来源。

当我需要本地化 Javascript 字符串(比如提示)时,我所做的是使用由服务器端本地化工具填充的隐藏字段。它似乎与当时的正常过程很好地结合在一起,并干净地解决了问题。虽然并不理想,但它也有助于最大限度地减少 Javascript 中的常量字符串,这是本地化的噩梦。

于 2013-08-28T15:39:49.990 回答