如何在asp.net的javascript文件中使用本地化的消息

use*_*312 6 javascript asp.net localization

如何在asp.net的javascript文件中使用本地化的消息.

我有一个Javascript文件(global-Scripts.js),其中包含我的所有脚本.我使用另一个文件(messages.js),其中包含所有静态错误消息(例如:"你确定要删除吗?"),这样就可以进行本地化.

是否可以在没有其他文件(messages.js)的情况下本地化此主脚本文件,以便我可以删除一个脚本引用?

Tra*_*lig 5

ASP.NET ScriptManager控件能够以多种方式为脚本提供本地化.

如果您的脚本 使用WebResourceAttribute作为资源嵌入到程序集中,那么您可以使用ScriptResourceAttribute让ScriptManager知道您有一些本地化字符串存储在.resx文件中,您希望在任何时候提供脚本服务.这些字符串作为JSON对象注入页面,然后在主脚本中输出对JSON对象的引用,而不是文字字符串.

例如,您可以像这样嵌入脚本:

[assembly: System.Web.UI.WebResource("ProjectNamespace.MyScript.js", "application/x-javascript")]
[assembly: System.Web.UI.ScriptResource("ProjectNamespace.MyScript.js", "ProjectNamespace.MyScriptResources", "Messages")]
Run Code Online (Sandbox Code Playgroud)

"ProjectNamespace.MyScript.js"是作为脚本的嵌入式资源的完整路径.在ScriptResourceAttribute中,第二个参数是包含所有本地化消息的嵌入式.resx文件(减去.resx扩展名)的完整路径.您可以像处理任何其他.resx一样对待它,因此您可以使用MyScriptResources.resx作为默认文化,然后使用MyScriptResources.es-MX.resx进行墨西哥语西班牙语覆盖,等等.ScriptResourceAttribute中的最后一个参数是JSON的名称将生成的对象.

在脚本中,引用JSON对象:

function DoSomething()
{
  alert(Messages.ErrorMessage);
}
Run Code Online (Sandbox Code Playgroud)

在上面的代码片段中,"ErrorMessage"是.resx文件中某个字符串资源的名称.

如果嵌入脚本,请使用指定程序集和名称的标记从ScriptManager引用它.

或者,您可以保留脚本的完全本地化副本,例如"MyScript.js","MyScript.es-MX.js","MyScript.en-UK.js"等,其中本地化逻辑和消息是硬编码的权利进入脚本.

如果执行此本地化方法,请使用指定路径的ScriptManager从ScriptManager引用它.

有一个非常好的概述,并通过MSDN上的代码示例链接到详细的演练.

请注意,如果您使用的是ASP.NET MVC,则ScriptManager控件无法正常使用它.在这种情况下,您将需要查看不同的解决方案,例如jQuery全球化插件,或者可能是用于MVC的自定义ScriptManager替换.