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

标签 javascript asp.net localization

如何在 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 引用它。

There is a really nice overview and links to detailed walkthroughs on this with code examples on MSDN.

请注意,如果您使用的是 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/

相关文章:

java - Spring Thymeleaf 中枚举的本地化

javascript - 你如何动态地将 React 组件插入 DOM(例如对话框)?

c# - 通过 javascript 启用/禁用 asp.net 复选框

javascript - Bootstrap 折叠按钮在单击时不显示内容

c# - 我可以以编程方式更改 asp.net 控件的 ID - ASP.NET

Android 应用程序在中国无法运行

javascript - NodeJS 脚本 - npm 在 exec() 上不显示当前安装的版本

c# - 在 asp.net 中使用 ID 仅更新一列

javascript - 如何在表中的最后一行之后添加行

ios - 从右到左语言中基于百分比的自动布局布局