如何在 asp.net 的 javascript 文件中使用本地化消息。
我有一个 Javascript 文件 (global-Scripts.js),其中包含我所有的脚本。我使用另一个文件 (messages.js),其中包含所有静态错误消息(例如:“您确定要删除吗?”),以便可以对其进行本地化。
是否可以在没有其他文件 (messages.js) 的情况下本地化此主脚本文件,以便我可以删除一个脚本引用?
最佳答案
ASP.NET ScriptManager 控件能够提供 localization以几种方式为您的脚本。
如果您的脚本嵌入到程序集中 as a resource using the WebResourceAttribute然后 you can use the ScriptResourceAttribute让 ScriptManager 知道您有一些本地化的字符串存储在 .resx 文件中,您希望在任何时候为您的脚本提供服务。这些字符串作为 JSON 对象注入(inject)到页面中,然后在您的主脚本中输出对 JSON 对象的引用而不是文字字符串。
例如,您可以像这样嵌入脚本:
[assembly: System.Web.UI.WebResource("ProjectNamespace.MyScript.js", "application/x-javascript")]
[assembly: System.Web.UI.ScriptResource("ProjectNamespace.MyScript.js", "ProjectNamespace.MyScriptResources", "Messages")]
“ProjectNamespace.MyScript.js”是作为脚本的嵌入式资源的完整路径。在 ScriptResourceAttribute 中,第二个参数是包含所有本地化消息的嵌入式 .resx 文件(减去 .resx 扩展名)的完整路径。您可以像对待任何其他 .resx 一样对待它,因此您将拥有默认文化的 MyScriptResources.resx,然后是墨西哥西类牙语覆盖的 MyScriptResources.es-MX.resx,等等。ScriptResourceAttribute 中的最后一个参数是 JSON 的名称将生成的对象。
在您的脚本中,您引用了 JSON 对象:
function DoSomething()
{
alert(Messages.ErrorMessage);
}
在上面的代码片段中,“ErrorMessage”是 .resx 文件中字符串资源之一的名称。
如果嵌入脚本,请使用指定程序集和名称的标记从 ScriptManager 引用它。
或者,您可以保留脚本的完全本地化副本,例如“MyScript.js”、“MyScript.es-MX.js”、“MyScript.en-UK.js”等. 本地化逻辑和消息被硬编码到脚本中。
如果您执行此本地化方法,请使用指定路径的 ScriptManager 引用它。
请注意,如果您使用的是 ASP.NET MVC,则 ScriptManager 控件实际上并不适用于它。在这种情况下,您需要查看不同的解决方案,例如 jQuery globalization plugin或者可能是 a custom ScriptManager replacement for use in MVC .
关于javascript - 如何在 asp.net 的 javascript 文件中使用本地化消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3351687/