【问题标题】:Using resource files (.resx) in javascript在 javascript 中使用资源文件 (.resx)
【发布时间】:2013-03-02 13:56:46
【问题描述】:

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

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

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

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

【问题讨论】:

  • 你的 js 代码在外部 .js 文件中吗?
  • resx 文件驻留在服务器上,JavaScript 驻留在客户端上。你需要提供一种通信方式,是隐藏字段还是ajax取决于你,但是javascript无法读取resx文件。
  • @dakait:是的,这有关系吗?如果有一种解决方法需要我的代码是内部的,那么我可以这样做吗?利亚姆嗯,好的。我对使用资源文件有点陌生,所以感谢您的解释

标签: javascript jquery asp.net razor resx


【解决方案1】:

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

在你的部分观点中:

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

【讨论】:

  • 像魅力一样工作!创建了一个局部视图。并在您的示例中列出一个列表。然后在我需要的地方使用它们!希望我能加倍投票!
【解决方案2】:

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

@using Resources

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

*/
</script>

【讨论】:

    【解决方案3】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多