myesn

myEsn2E9

hi
github

ABP: How to override localization strings of depending modules

介绍#

重写 Resource 需要注意,一般来说是在 Domain.Shared 层,但有一些例外情况,比如 AbpUiResource(framework/src/Volo.Abp.UI) 就只能在 Web 层重写,从名称可以看出,它的使用范围仅在 UI 层。

首先大致阅读以下文档,了解大概的技术细节:
https://community.abp.io/posts/how-to-override-localization-strings-of-depending-modules-ba1oy03l

覆写 AbpUiResource#

首先在 Domain.Shared 项目创建 Localization/AbpUi 目录,然后该目录下创建 zh-Hans.json 文件,里面的内容如下:

{
  "culture": "zh-Hans",
  "texts": {
    "Logout": "退出登录"
  }
}

打开 Domain.Shared 工程文件,在其中加入以下代码:

<ItemGroup>
  <EmbeddedResource Include="Localization\MiaoXin\*.json" />
  <EmbeddedResource Include="Localization\AbpUi\*.json" />
  <Content Remove="Localization\MiaoXin\*.json" />
</ItemGroup>

注意:是基于现有配置添加一行 <EmbeddedResource Include="Localization\AbpUi\*.json" />,只有这样,才能在发布后的 dll 中包含 json 文件:
image

接着,在 Web 项目的 WebModule 中添加以下代码:

public override void ConfigureServices(ServiceConfigurationContext context)
{
    ConfigureLocalization();
}
private void ConfigureLocalization()
{
    Configure<AbpLocalizationOptions>(options =>
    {
        options.Resources
           .Get<AbpUiResource>()//.Get("AbpUi")
           .AddVirtualJson("/Localization/AbpUi");
    });
}

image

image

参考#

Loading...
Ownership of this post data is guaranteed by blockchain and smart contracts to the creator alone.