use*_*312 6 javascript asp.net localization
如何在asp.net的javascript文件中使用本地化的消息.
我有一个Javascript文件(global-Scripts.js),其中包含我的所有脚本.我使用另一个文件(messages.js),其中包含所有静态错误消息(例如:"你确定要删除吗?"),这样就可以进行本地化.
是否可以在没有其他文件(messages.js)的情况下本地化此主脚本文件,以便我可以删除一个脚本引用?
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替换.
| 归档时间: |
|
| 查看次数: |
2754 次 |
| 最近记录: |