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

时间:2013-03-14 09:32:14

标签: javascript jquery asp.net razor resx

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

如果我只是将它放在我的HTML中,那么它可以使用这段代码:

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

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

3 个答案:

答案 0 :(得分:3)

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

在您的局部视图中:

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

答案 1 :(得分:3)

您也可以直接尝试以下内容

@using Resources

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

*/
</script>

答案 2 :(得分:0)

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

我想让我的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)。

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