myesn

myEsn2E9

hi
github

ABP:如何覆蓋依賴模塊的本地化字符串

介紹#

重寫 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

參考#

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。