簡體   English   中英

如何在 JavaScript 中利用全球化?

[英]How to utilize globalization in JavaScript?

我在asp.net項目的App_GlobalResources文件夾中創建了 3 個 resx 文件,以便創建一個多語言網站,正如您所知,它是一種key-value集,在我想在 JavaScript 中使用值的其他情況下,一切似乎都很好。

如果我在 aspx 文件中使用內聯 JavaScript,則可以使用這種方式或

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

或者

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

但是我應該如何在無法使用服務器端代碼的 JavaScript 文件中實現這一點?

我使用的結構類似於我們在ASP.Net使用的結構,並且我應用了 JavaScript 對象,就像CKEditor在多語言功能中使用的一樣。

想象一下你有這些文件:

Culture.js
Main.js
Default.aspx

文化.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組合來區分它們,最后定義一個與您在 ASP.Net 中使用的名為getGlobalResourceObject()

 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 (我更喜歡在window.lang設置當前文化)。

默認.aspx

Default.aspxMasterPage如果有)中,在Main.js之前加載Culture.js ,如下所示:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM