如何在 JavaScript 中利用全球化?

How to utilize globalization in JavaScript?

我在 asp.net 项目的 App_GlobalResources 文件夹中创建了 3 个 resx 文件,以便制作一个多语言网站,如你所知,它有点 key-value 设置,其他一切似乎都很好我想在 JavaScript.

中使用值的情况

如果我在 aspx 文件中使用内联 JavaScript,可以使用 this 方式或

来完成
alert('<%= GetGlobalResourceObject([ResourceClassName],[ResourceKey]) %>');

<asp:Literal runat="server" Text="<%$ Resources:[ResourceClassName], [ResourceKey] %>"/>

但是我应该如何在无法使用服务器端代码的 JavaScript 文件中实现这一点?

我使用的结构类似于我们在 ASP.Net 中使用的结构,并且我应用 JavaScript 对象就像 CKEditor 在多语言功能中使用的那样。

假设您有这些文件:

Culture.js
Main.js
Default.aspx

Culture.js

将与翻译相关的所有单词和短语像这样放置:

  if (typeof resource == "undefined") {
    resource = {}// = new Object();
    resource.lang = {};
  }

    //English language, United States culture
    resource.lang['en-US'] = {
        "lable": {
            "clickHere": "Click here",
            "enterYourName": "Enter your name"
        },
        "message": {
            "deleteConfimation": "Are You sure you want to delete?",
            "accessIsDenied": "Access is denied"
        }
    }

    //Farsi language, Iran culture 
    resource.lang['fa-IR'] = {
        "lable": {
            "clickHere": "اینجا کلیک کنید",
            "enterYourName": "نام خود را وارد کنید"
        },
        "message": {
            "deleteConfimation": "آیا از حذف این مورد اطمینان دارید؟",
            "accessIsDenied": "دسترسی مقدور نیست"
        }
    }

你可以添加你需要的语言和文化,只需在resourse.lang['language-culture']中使用language-culture组合来区分它们,最后定义一个函数就像你在[=53=中使用的那样] 名为 getGlobalResourceObject()

 var getGlobalResourceObject = function (resourceClassName, resourceKey)
{
    return resourse.lang[window.lang][resourceClassName][resourceKey];
}

Main.js

window.lang = "en-US";//Or "fa-IR"
alert(getGlobalResourceObject("message", "deleteConfimation"));

如果 window.lang 等于 en-US,它将提示一条消息说 "Are You sure you want to delete?"。 (我更喜欢在 window.lang 中设置当前文化)。

Default.aspx

Default.aspxMasterPage 中,如果有的话,在 Main.js 之前加载 Culture.js,像这样:

<script src="Culture.js"></script>
<script src="Main.js"></script>