繁体   English   中英

在javascript中使用资源文件(.resx)

[英]Using resource files (.resx) in javascript

我正在尝试在我的项目中使用本地化,但我找不到从javascript访问我的resx文件的方法。 我一直在四处寻找,我不认为'AJAX调用'方法对我的项目来说是理想的,因为我已经安静了许多需要获取的字符串,它只需要垃圾邮件服务器!

如果我只是把它放在我的HTML中,那么它适用于这段代码:

@using Resources
<p>@Html.Raw(ISt_Localization.January)</p>

我想我可以做的一件事就是将所有字符串放在一个隐藏的div中,然后在我的javascript中从div中获取内容,但这不会非常有效。

我有类似的情况,在我的情况下,我创建了一个单独的局部视图,其中只包含一个javascript块,我将所有需要的资源字符串放在客户端逻辑中。 每个资源字符串都定义为javascript变量。 您还可以创建关联数组。

在您的局部视图中:

var Resources = {
        January : "@Html.Raw(ISt_Localization.January)",
        February : "@Html.Raw(ISt_Localization.February)",
        ...
};

你也可以直接尝试以下的东西

@using Resources

<script>
var value = '@Resource.January';
/* work with value 
.......
.....

*/
</script>

我采取了完全不同的方法。

我想让我的Javascript文件所需的资源字符串成为我的resx文件的一部分。

我的资源文件中以js开头的每个键都必须在Javascript中可用。

在global.asax中,在Application_OnStart中,我动态地为所有支持的语言构建Javascript文件。 因为这只发生在应用程序的开始,所以如果需要几秒钟则无关紧要。

好处:

  • 所有翻译都在一个地方(在您用于.NET应用程序的rex文件中(C#或VB),也适用于您的Javascript代码
  • 始终保持最新状态
  • 非常快,因为我们将使用变量来获得翻译

构建Javascript文件很简单。 遍历所有resx文件中的所有键值对。 只需挑选以_js_开头的密钥。 将键值对保存在Javascript文件中。

因此,如果resx文件(languageSupport_es.resx)中的键值对是'_js_Hello','Hola',我在我的Javascript文件(languageSupport_es.js)中写入var Hello = 'Hola';

如果当前语言是西班牙语,那么alert(Hello)会给你'Hola'。

我现在唯一需要处理的是使用正确的'语言Javascript文件'在我的其他Javascript文件之前加载。 因此,如果语言是西班牙语,我首先只包括我的“西班牙语Javascript文件”(languageSupport_es.js)。

容易没? 如果有人感兴趣,我可以展示一些示例代码......

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM