如何在 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.aspx
或 MasterPage
中,如果有的话,在 Main.js
之前加载 Culture.js
,像这样:
<script src="Culture.js"></script>
<script src="Main.js"></script>
我在 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.aspx
或 MasterPage
中,如果有的话,在 Main.js
之前加载 Culture.js
,像这样:
<script src="Culture.js"></script>
<script src="Main.js"></script>