在对象中存储.resx字符串的最佳方法?

时间:2018-10-16 12:37:47

标签: javascript asp.net asp.net-core

在我的应用程序中,我根据this文档添加了多语言支持。

现在我面临一个问题:我还需要翻译一些javascript插件,因此我需要在.resx逻辑中使用js字符串:

enter image description here

要访问这些字符串,我可以在特定控制器中使用IStringLocalizer,让我们假设上面的字符串是UserController的一部分,我可以访问View中的声明:

@inject IStringLocalizer<UserController> Localizer

然后:

<h2>@Localizer["LastName"]</h2>

假设现在我需要在类似LastName的插件中传递JQuery字符串 本土化。为此,我实际上找到了一种解决方法,该方法包括在所需的javascript中声明一个View变量:

@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本地化的script对象的Lang文件中声明
  • 我每次需要为IStringLocalizer
  • 中可用的特定字符串设置对象键
  • 如果更改字符串键,还需要手动更新所有文件。

我在寻找什么

我正在寻找一种解决方案,该解决方案会自动使用当前Lang中加载的.resx文件中的所有可用属性填充View对象。 我想最好的解决方法是_Layout

有人可以帮助我吗?

0 个答案:

没有答案