You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 8 Razor项目中如何配置共享本地化资源?

实现RShared.resx作为共享本地化资源的步骤

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 13:44:52