2015-03-10 5 views
0

Я пытаюсь сделать свое приложение интернациональным с поддержкой нескольких языков. Я использую подход к файлу ресурсов. До сих пор так хорошо, но есть ли способ использовать строки ресурсов в моем JS-файле?Использование строк ресурсов в JS-файле

Могу ли я получить к ним доступ в JS-файле или это невозможно?

+0

возможно дубликат [Как использовать файлы ресурсов .NET в JavaScript] (http://stackoverflow.com/questions/3785568/how-to-use-net-resource -files-in-javascript) – Alberto

+0

Я видел этот пост, но он не дает ответа на то, что мне нужно. Предлагаемое там решение ajax будет похоже на спам сервера. – mohsinali1317

+0

Проверьте это: http://stackoverflow.com/questions/940769/use-asp-net-resource-strings-from-within-javascript-files и, в частности, ответ Доменика. Надеюсь, это поможет вам! – Alberto

ответ

0

Общий подход к локализации в JavaScript заключается в переопределении полей локализованным файлом JavaScript, который загружается после основного.

т.е. ваши основные app.js или что вы называете это объявляет объект:

DateTime = {} 
DateTime.days = ["Sunday", "Monday", "Tuesday", ...]; 
DateTime.dateFormat = "m/d/Y"; 
DateTime.getToday = function(date) { 
    var dayOfWeek = ...; 
    return DateTime.days[dayofWeek]; 
} 

Затем в файле локализации, давайте назовем его locale_de-de.js добавить

DateTime.days = ["Sonntag", "Montag", "Dienstag", ...]; 
DateTime.dateFormat = "d.m.Y"; 

Это также как большинство javascript-фреймворков (т.е. ExtJS, AngularJS) выполняют свои локализации. В шаблонах просто сделать

@Scripts.Render("~/bundles/app") 
@Scripts.Render("~/bundles/locale_de-de") 

Нет необходимости для строк ресурсов и «разбора» файлы JavaScript, чтобы заменить значения с единицами из ресурсов натягивает

0

Простейший способ я нашел, чтобы создать яваскрипта ключ-значение пара в _Layout.cshtml используя бритву с ресурсами:

var resourceData = { 'register_account_pesel_incorrect': '@LanguageResources.register_account_login_incorrect', 'register_account_password_incorrect': '@LanguageResources.register_account_password_incorrect' } 

Тогда в ваших * .js файл, который вы просто использовать resourceData так:

options.messages["isLogin"] = resourceData['register_account_login_incorrect']; 

Или даже проще:

options.messages["isLogin"] = resourceData.register_account_login_incorrect; 
Смежные вопросы