SuperAPI AI 工具集

dotnet-localization

通用与其它

查看项目

更新于 10-16 07:24

技能介绍

用途:为 .NET 应用提供完整的国际化与本地化方案,基线为 .NET 8.0+,并标注 .NET 9+ 特性。

主要能力:

  1. .resx 资源文件与附属程序集,按文化回退链解析(如 sr-Cyrl-RS → sr-Cyrl → sr → 默认资源)。默认 .resx 为唯一事实来源,翻译文件不得含默认文件之外的键。
  2. IStringLocalizer 模式与 DI 注册,通过 AddLocalization 与 UseRequestLocalization 配置支持文化。IViewLocalizer、IHtmlLocalizer 仅适用于 MVC,Blazor 不支持。
  3. 现代替代方案:JSON 资源(如 Senlin.Mo.Localization、Embedded.Json.Localization)与面向 AOT/裁剪的源生成器(ResXGenerator、VocaDb.ResXFileCodeGenerator),避免运行时反射。
  4. 使用 CultureInfo 进行日期、数字、货币格式化;CurrentCulture 控制格式,CurrentUICulture 控制资源查找;服务端建议 useUserOverride: false。
  5. RTL 支持:通过 TextInfo.IsRightToLeft 检测;Blazor 用 CSS dir 属性,MAUI 用 FlowDirection,Uno 与 WPF 用 FlowDirection 属性。
  6. 复数处理:MessageFormat.NET(CLDR 合规)与 SmartFormat.NET(可扩展),避免简单字符串拼接。
  7. 框架集成:Blazor(IStringLocalizer、WASM 全球化数据、动态切换文化)、MAUI(.resx 与 x:Static 绑定、平台清单配置)、Uno(.resw 与 x:Uid,注意切换文化需重启)、WPF(.resx 加 DynamicResource,避免 LocBaml)。

使用方式:在 csproj 中设置 NeutralLanguage 并包含 EmbeddedResource;注册本地化服务与请求本地化中间件;通过注入 IStringLocalizer<T> 访问资源;按框架选择对应绑定与切换方式。

限制:不涵盖 Blazor 组件、MAUI 开发、Uno 项目结构、WPF MVVM、源生成器编写等深层主题,需参考对应技能。Uno 的 x:Uid 绑定在切换文化后需重启应用才生效。JSON 资源缺少 .resx 的内置工具支持。Blazor WASM 需启用 BlazorWebAssemblyLoadAllGlobalizationData 才能获得完整 ICU 数据。具体版本、价格与效果暂未提供。