我正在尝试在我的项目中使用本地化,但我找不到从javascript访问我的resx文件的方法。我一直在寻找一下,我不认为'AJAX调用'方法对我的项目来说是理想的,因为我已经安静了很多需要获取的字符串,它只需要给服务器发垃圾邮件! / p>
如果我只是将它放在我的HTML中,那么它可以使用这段代码:
@using Resources
<p>@Html.Raw(ISt_Localization.January)</p>
我想我可以做的一件事就是将所有字符串放在一个隐藏的div中,然后在我的javascript中从div中获取内容,但这不会非常有效..
答案 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文件。 因为这只发生在应用程序的开始,所以如果需要几秒钟就没关系。
优点:
构建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)。
容易没有?如果有人感兴趣,我可以展示一些示例代码...