Lang.Avalonia
Avalonia 插件化多语言(i18n)库
XAML 标记扩展 + C# 统一入口,运行时切换语言;JSON/XML/RESX 三种资源插件,父文化/默认文化回退,源生成器编译期生成强类型资源 Key。
net8.0net10.0net11.0 i18nAvalonia源生成器 开源免费
> dotnet add package Lang.Avalonia
GitHub ↗ GitHub Star ★ —
NuGet 下载 3.9w+
子包数量 5
为什么选它
Features🏷️
XAML 标记扩展 {c:I18n …} 直接绑定资源 Key,XAML 里完成多语言。
🔄
运行时切换 I18nManager.Instance.Culture 一行切换,全站即时生效。
🧩
三种资源插件 JSON / XML / RESX 按喜好选择,ILangPlugin 还能自己扩展。
🪜
文化回退链 父文化 → 默认文化 → 原始 Key,缺翻译也不开天窗。
🛠️
源生成器 Lang.Avalonia.Analysis 编译期生成强类型 Key,拼写错误编译就报。
🌐
浏览器可用 Browser Demo 验证,Avalonia Web 跑多语言没问题。
Lang.Avalonia
Lang.Avalonia.Json
Lang.Avalonia.Xml
Lang.Avalonia.Resx
Lang.Avalonia.Analysis
> dotnet add package Lang.Avalonia
核心包按需引入;目标框架 net8.0 / net10.0 / net11.0。全部包在 nuget.org 与 GitHub 同步发布。
注册 JSON 资源并切换语言
csharp
using Lang.Avalonia;
using Lang.Avalonia.Json;
using System.Globalization;
I18nManager.Instance.Register(new JsonLangPlugin(), new CultureInfo("en-US"), out var error);
if (!string.IsNullOrWhiteSpace(error))
{
// 记录或展示初始化错误。
} XAML 标记扩展
xml
xmlns:c="https://codewf.com"
xmlns:mainLangs="clr-namespace:Localization.Main"
<SelectableTextBlock Text="{c:I18n {x:Static mainLangs:MainView.Title}}" />
<SelectableTextBlock Text="{c:I18n {x:Static mainLangs:MainView.Title}, CultureName=ja-JP}" /> 包列表
Packages按需安装,版本与核心包保持同步发布
| 包名 | 说明 | |
|---|---|---|
| Lang.Avalonia | 核心包 | |
| Lang.Avalonia.Json | 集成 / 扩展包 | |
| Lang.Avalonia.Xml | 集成 / 扩展包 | |
| Lang.Avalonia.Resx | 集成 / 扩展包 | |
| Lang.Avalonia.Analysis | 集成 / 扩展包 |
Lang.Avalonia 技术说明与设计文档
本文档面向维护者和集成方,合并说明 Lang.Avalonia 的设计目标、核心类型、插件契约、资源加载、运行时解析流程和示例项目组织方式。快速上手请先看 README.md。文中的图示均以独立 SVG 文件存放在 docs/assets,方便在 README、NuGet 文档或站点中复用。
阅读 → 浏览器(WebAssembly)支持指南本文基于 Lang.Avalonia.Json.BrowserDemo 在 Avalonia 12.1.3 + .NET 10(net10.0-browser)下的实测结论,说明各插件在 Avalonia Browser 上的可用性、工程配置要求与常见问题。
阅读 → Issue #9 回复草稿(web 似乎无法使用)感谢反馈,问题已定位并在浏览器中复现与验证。
阅读 → 12.1.2.13 🛠️[修复]-统一运行时与 Source Generator 的文化元数据校验和名称规范化,并正确识别 RESX 的中性文化文件名。
12.1.2.12 🛠️[修复]-让 Source Generator 按稳定顺序生成 namespace、class 和资源属性,避免 AdditionalFiles 顺序变化导致生成结果漂移。
12.1.2.11 🛠️[修复]-移除四个 Demo trimming root 中不存在的程序集声明,并同步清理过时的 Prism 扩展依赖说明。
谁在使用
Used By码坊自家的应用都在用它,问题反馈与修复路径最短