我已经在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文件中实现该目标?
答案 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.lang
或Default.aspx
(如果有)中,在MasterPage
之前加载Culture.js
,如下所示:
Main.js