Я использую структуру, аналогичную той, которую мы используем в 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, с именем 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
.(Я предпочитаю устанавливать текущую культуру в window.lang
).
Default.aspx
В Default.aspx
или MasterPage
, если у вас есть, загрузить Culture.js
прямо перед Main.js
, что-то вроде этого:
<script src="Culture.js"></script>
<script src="Main.js"></script>