В своем приложении я добавил поддержку мультиязычности, следуя этой документации.
Теперь я столкнулся с проблемой: мне нужно перевести также некоторые плагины javascript, поэтому мне нужно использовать строку .resx внутри jsлогика.
Фрагмент с моими строками:
Для доступа к этим строкам я могу использовать IStringLocalizer в конкретном контроллере,давайте предположим, что приведенная выше строка является частью UserController, я могу получить доступ к объявлению в View:
@inject IStringLocalizer<UserController> Localizer
, а затем:
<h2>@Localizer["LastName"]</h2>
Предположим, теперь мне нужно передать строку LastNameв чем-то вроде локализации плагина JQuery.Для этого я фактически нашел обходной путь, который заключается в объявлении переменной javascript в необходимом представлении:
@inject IStringLocalizer<UserController> Localizer
@section UserScript{
<script>
var Lang = {
PasswordEqual: '@Localizer["PasswordEqual"]',
PasswordMismatch: '@Localizer["PasswordMismatch"]',
}
</script>
}
, чтобы я мог получить доступ внутри кода javascript к объекту Lang и локализовать плагин, например:
$('#birthDate').daterangepicker({
singleDatePicker: true,
locale: {
format: 'DD/MM/YYYY',
daysOfWeek: [
Lang.Sunday,
Lang.Monday,
Это работает, но очень сложно поддерживать по следующей причине:
Мне нужно объявить в каждом файле .cshtml, который требует локализации скрипта, объект Lang, который мне нужно установить для каждоговремя ключ объекта для конкретной строки, доступной в IStringLocalizer. Если я изменяю ключ строки, мне также необходимо обновить все файлы вручную.Что я ищу:
Я ищу решение, которое автоматически заполняет объект Lang всеми свойствами, доступными в файле .resx, загруженном в текущем представлении.Я думаю, что лучшее место для обработки это _Layout.
Кто-то может мне помочь?