如何在JavaScript中利用全球化?

时间:2019-01-27 06:11:28

标签: javascript asp.net globalization

我已经在App_GlobalResources项目的asp.net文件夹中创建了3个resx文件,以便建立一个多语言网站,正如您所知,它是key-value集,在其他情况下,一切似乎都很好我想在JavaScript中使用值。

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

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

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

但是如何在无法使用服务器端代码的JavaScript文件中实现该目标?

1 个答案:

答案 0 :(得分:1)

我使用的结构类似于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": "دسترسی مقدور نیست"
        }
    }

您可以添加所需的多种语言和文化,只需在language-culture中使用resourse.lang['language-culture']组合使其可区分,最后定义一个函数,就像在ASP.Net中使用的名为{{ 1}}

getGlobalResourceObject()

Main.js

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

它将提示“您确定要删除吗?”的消息。如果window.lang = "en-US";//Or "fa-IR" alert(getGlobalResourceObject("message", "deleteConfimation")); 等于window.lang。 (我更喜欢在en-US中设置当前的区域性。)

Default.aspx

window.langDefault.aspx(如果有)中,在MasterPage之前加载Culture.js,如下所示:

Main.js