ASP.NET Core 5.0 本地化功能变更:移除ResourceManagerWithCultureStringLocalizer类与WithCulture方法...

ASP.NET Core 5.0 本地化功能变更:移除ResourceManagerWithCultureStringLocalizer类与WithCulture方法

docs This repository contains .NET Documentation. docs 项目地址: https://gitcode.com/gh_mirrors/docs2/docs

概述

在ASP.NET Core 5.0中,微软对本地化功能进行了重要调整,移除了ResourceManagerWithCultureStringLocalizer类和ResourceManagerStringLocalizer.WithCulture方法。这一变更旨在简化本地化API的使用方式,消除开发者在实现自定义本地化时可能遇到的困惑。

变更背景

被移除的成员

  • Microsoft.Extensions.Localization.ResourceManagerWithCultureStringLocalizer
  • Microsoft.Extensions.Localization.ResourceManagerStringLocalizer.WithCulture方法

这些成员实际上在.NET Core 3.0中就已经被标记为过时(obsolete),而在.NET 5.0中则被完全移除。

变更原因

微软做出这一变更主要基于以下考虑:

  1. 设计理念冲突:这些API给开发者造成了"每个语言每个资源都需要单独实例"的误解,而实际上本地化实例应该只是"每个资源"一个实例。

  2. 使用困惑:在实现自定义IStringLocalizer时,这些API常常成为混淆的源头。

  3. 运行时机制:正确的设计应该是依赖CultureInfo.CurrentUICulture属性在运行时决定使用的语言,而不是为每种语言创建单独的实例。

新旧行为对比

旧行为

在.NET Core 3.0及之前版本中:

  • 可以使用ResourceManagerWithCultureStringLocalizer
  • 可以使用ResourceManagerStringLocalizer.WithCulture方法
  • 这些API已被标记为过时

新行为

在.NET 5.0及以后版本中:

  • 上述类和接口方法已被完全移除
  • 开发者需要采用新的推荐方式实现本地化

迁移建议

对于正在使用这些API的项目,建议采取以下措施:

  1. 检查代码库:搜索项目中是否使用了ResourceManagerWithCultureStringLocalizerWithCulture方法。

  2. 移除相关调用:直接删除对这些API的调用。

  3. 采用标准实践:依赖CultureInfo.CurrentUICulture来决定当前UI文化,而不是为每种语言创建单独的本地化实例。

  4. 简化实现:在自定义IStringLocalizer实现时,只需关注资源管理,无需处理特定文化的实例化。

技术细节

正确的本地化实现方式

在ASP.NET Core中,本地化应该这样实现:

  1. 创建资源文件(如.resx文件)
  2. 注入IStringLocalizer<T>服务
  3. 让框架根据当前UI文化自动选择正确的资源
// 正确用法示例
public class MyService
{
    private readonly IStringLocalizer<MyService> _localizer;
    
    public MyService(IStringLocalizer<MyService> localizer)
    {
        _localizer = localizer;
    }
    
    public string GetLocalizedString()
    {
        return _localizer["HelloWorld"];
    }
}

文化切换机制

文化切换应该通过以下方式之一实现:

  • 中间件设置CultureInfo.CurrentUICulture
  • 查询字符串参数
  • Cookie或用户首选项

而不是通过创建特定文化的本地化实例来实现。

总结

这一变更体现了ASP.NET Core团队对API设计的持续改进,移除了容易引起混淆的API,使本地化功能的实现更加直观和一致。开发者应该遵循新的推荐实践,简化本地化实现,让框架自动处理文化相关的资源查找。

对于从旧版本迁移的项目,这一变更主要影响那些直接使用了这些特定API的自定义本地化实现,标准用法通常不受影响。检查并更新代码后,项目将能够顺利迁移到ASP.NET Core 5.0及更高版本。

docs This repository contains .NET Documentation. docs 项目地址: https://gitcode.com/gh_mirrors/docs2/docs

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

齐飞锴Timothea

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值