5

我正在尝试在我的项目中使用本地化,但我找不到从 javascript 访问我的 resx 文件的方法。我一直在环顾四周,我不认为“AJAX 调用”方法对我的项目来说是理想的,因为我有很多需要获取的字符串,而且它只会向服务器发送垃圾邮件!

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

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

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

4

3 回答 3

4

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

在您的部分观点中:

var Resources = {
        January : "@Html.Raw(ISt_Localization.January)",
        February : "@Html.Raw(ISt_Localization.February)",
        ...
};
于 2013-03-14T09:37:56.363 回答
3

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

@using Resources

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

*/
</script>
于 2013-03-14T11:59:44.020 回答
0

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

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

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

在 global.asax 中,在 Application_OnStart 中,我为所有支持的语言即时构建 Javascript 文件。因为这只发生在应用程序的开始,所以它是否需要几秒钟并不重要。

好处:

  • 所有翻译都集中在一个地方(在您用于 .NET 应用程序(C# 或 VB)的 rex 文件中,也用于您的 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)。

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

于 2018-04-26T14:57:42.407 回答