イントロダクション#
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 ファイルが含まれるようになります:
次に、Web
プロジェクトのWebModule
に以下のコードを追加します:
public override void ConfigureServices(ServiceConfigurationContext context)
{
ConfigureLocalization();
}
private void ConfigureLocalization()
{
Configure<AbpLocalizationOptions>(options =>
{
options.Resources
.Get<AbpUiResource>()//.Get("AbpUi")
.AddVirtualJson("/Localization/AbpUi");
});
}