Как использовать глобализацию в JavaScript? - PullRequest
0 голосов
/ 27 января 2019

Я создал 3 файла resx в папке App_GlobalResources в проекте asp.net, чтобы сделать многоязычный веб-сайт, так как вы знаете, что он установлен на key-value, все кажется хорошим, в других случаях, когда я хочу использовать значения в JavaScript.

Если я использую встроенный JavaScript в aspx-файле, это можно сделать, используя this way или

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

Или

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

но как мне добиться этого в файлах JavaScript, в которых я не могу использовать серверный код?

1 Ответ

0 голосов
/ 27 января 2019

Я использую структуру, аналогичную той, которую мы используем в 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>
...