用途:为 .NET MAUI 应用提供本地化(多语言)实现指导,覆盖资源文件组织、区域性解析、运行时语言切换、RTL 布局与各平台声明。
主要能力与要点:
- 资源文件:用 .resx 存放多语言字符串,每种目标语言对应 AppResources.{culture}.resx,默认 AppResources.resx 需包含全部键。
- 必设 NeutralLanguage:在 .csproj 中设置 <NeutralLanguage>en-US</NeutralLanguage>,否则 ResourceManager 对默认区域性返回 null。
- 平台声明:iOS/Mac Catalyst 需在 Info.plist 添加 CFBundleLocalizations 列出支持语言,否则系统设置不显示应用语言;Windows 需在 Package.appxmanifest 的 Resources 中声明 <Resource Language="..." />;Android 自动识别 .resx,无需额外清单项。
- 运行时切换:x:Static 为一次性绑定,切换语言不更新;应使用 LocalizationResourceManager 配合 INotifyPropertyChanged 的绑定方式。切换区域性时需同时设置 CultureInfo.CurrentUICulture(资源查找)、CultureInfo.CurrentCulture(日期/数字)与 AppResources.Culture(ResourceManager),只设 CurrentUICulture 会导致日期数字格式不一致。
- RTL:在页面级设置 FlowDirection="RightToLeft",子元素用 MatchParent 继承;仅设在子元素上会破坏布局。可用 TextInfo.IsRightToLeft 检测。
- 区域性图片:按 banner_{culture}.png 命名,或在 .resx 中存路径。
- VS Code 注意:.Designer.cs 可能保存时不重新生成,需在 .csproj 添加 <CoreCompileDependsOn>PrepareResources;$(CoreCompileDependsOn)</CoreCompileDependsOn> 并在修改 .resx 后运行 dotnet build。
适用场景:需要多语言支持、运行时切换语言、RTL 语言适配或按区域性格式化日期数字的 MAUI 项目。
限制:资料未提供具体版本要求、性能数据或收费信息;示例代码需按项目实际结构调整。