.NET 8 Razor项目中如何配置共享本地化资源?
1. 放置共享资源文件
根据你program.cs里配置的ResourcesPath = "LocalizationResources",按以下结构创建文件:
- 在项目根目录新建文件夹
LocalizationResources - 在此文件夹下添加资源文件:
RShared.resx(默认语言资源,比如英文)RShared.zh-CN.resx(中文简体资源,按需添加其他语言版本)
- 选中所有resx文件,在属性面板设置:
- 生成操作:
嵌入的资源 - 自定义工具:
ResXFileCodeGenerator(可选,用于生成强类型资源类)
- 生成操作:
2. 调整本地化服务配置(二选一)
方案A:直接注入共享资源的StringLocalizer(推荐)
修改_ViewImports.cshtml,替换原有的IViewLocalizer注入:
@using SE.Web @using Microsoft.AspNetCore.Mvc.Localization @using Microsoft.Extensions.Localization @using SE.Web.LocalizationResources // 对应RShared.resx所在的命名空间,按需调整 @inject IStringLocalizer<RShared> Localizer @namespace SE.Web.Pages @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
方案B:配置全局ViewLocalizer使用共享资源
如果想继续使用IViewLocalizer,修改program.cs中的AddViewLocalization配置:
builder.Services.AddRazorPages(options => { options.Conventions.Add(new CustomRouteModelConvention()); }).AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix, options => { // 指定默认使用RShared作为本地化资源 options.ResourceType = typeof(RShared); });
3. 添加请求本地化中间件
确保program.cs中启用请求本地化(放在app.UseRouting()之后,app.UseAuthorization()之前):
var supportedCultures = new[] { "en", "zh-CN" }; // 按需添加支持的语言 var localizationOptions = new RequestLocalizationOptions() .SetDefaultCulture(supportedCultures[0]) .AddSupportedCultures(supportedCultures) .AddSupportedUICultures(supportedCultures); app.UseRequestLocalization(localizationOptions);
4. 在视图中使用共享资源
在任意页面(比如Index.cshtml)中直接通过Localizer调用资源键:
<h1>@Localizer["WelcomeTitle"]</h1> <p>@Localizer["WelcomeContent"]</p>
只需在RShared.resx及对应语言版本中添加WelcomeTitle、WelcomeContent等键值对即可。
内容的提问来源于stack exchange,提问作者dudeinco
相关产品推荐
相关产品推荐

