VOOZH about

URL: https://www.nuget.org/packages/Lang.Avalonia.Resx/

⇱ NuGet Gallery | Lang.Avalonia.Resx 12.0.4.1




👁 Image
Lang.Avalonia.Resx 12.0.4.1

dotnet add package Lang.Avalonia.Resx --version 12.0.4.1
 
 
NuGet\Install-Package Lang.Avalonia.Resx -Version 12.0.4.1
 
 
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Lang.Avalonia.Resx" Version="12.0.4.1" />
 
 
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Lang.Avalonia.Resx" Version="12.0.4.1" />
 
Directory.Packages.props
<PackageReference Include="Lang.Avalonia.Resx" />
 
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Lang.Avalonia.Resx --version 12.0.4.1
 
 
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Lang.Avalonia.Resx, 12.0.4.1"
 
 
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Lang.Avalonia.Resx@12.0.4.1
 
 
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Lang.Avalonia.Resx&version=12.0.4.1
 
Install as a Cake Addin
#tool nuget:?package=Lang.Avalonia.Resx&version=12.0.4.1
 
Install as a Cake Tool
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

Lang.Avalonia

Lang.Avalonia 是面向 Avalonia UI 的插件化多语言库。核心包提供 XAML 标记扩展、绑定刷新流程、转换器、I18nManagerILangPlugin 契约;资源加载由 JSON、XML、RESX 插件实现,也可以使用 Source Generator 生成强类型资源 Key。

NuGet 下载量
Lang.Avalonia 👁 NuGet
👁 NuGet
Lang.Avalonia.Json 👁 NuGet
👁 NuGet
Lang.Avalonia.Xml 👁 NuGet
👁 NuGet
Lang.Avalonia.Resx 👁 NuGet
👁 NuGet
Lang.Avalonia.Analysis 👁 NuGet
👁 NuGet

仓库规范

  • 当前版本:12.0.3.5,版本号统一维护在根目录 Directory.Build.props<Version> 节点。
  • NuGet 包项目统一支持 net8.0;net10.0;Demo、App、测试与内部应用项目统一使用 net11.0 / net11.0-windows
  • 根目录 logo.svglogo.pnglogo.ico 是唯一图标源,子工程只通过 MSBuild Link 引用,不维护图标副本。
  • 运行时帮助、Markdown 示例、内置备忘录、设计说明等业务文档按功能保留;仓库级入口文档使用根目录 README.mdUpdateLog.md

功能

  • 统一的 XAML 与 C# 多语言入口。
  • 通过 I18nManager.Instance.Culture 运行时切换语言。
  • JSON、XML、RESX 资源提供器统一实现 ILangPlugin
  • 支持默认文化回退和原始 Key 回退。
  • 支持 T4 模板或 Lang.Avalonia.Analysis 生成强类型资源 Key。
  • 支持固定文化预览、格式化字符串和动态绑定参数。

选择包

资源格式 适用场景
JSON Lang.Avalonia + Lang.Avalonia.Json 可编辑文件、跨平台工具链、Source Generator 示例
XML Lang.Avalonia + Lang.Avalonia.Xml 层级清晰的语言文件
RESX Lang.Avalonia + Lang.Avalonia.Resx .NET ResourceManager 和卫星程序集
强类型 Key Lang.Avalonia.Analysis AdditionalFiles 编译期生成常量

快速开始

安装核心包和一个资源提供器:

dotnet add package Lang.Avalonia.Json

应用启动时注册插件:

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))
{
 // 记录或展示初始化错误。
}

在 AXAML 中使用生成的常量:

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}" />

在 C# 中使用相同 Key:

var title = I18nManager.Instance.GetResource(Localization.Main.MainView.Title);
var englishTitle = I18nManager.Instance.GetResource(Localization.Main.MainView.Title, "en-US");

运行时切换语言:

I18nManager.Instance.Culture = new CultureInfo("zh-CN");

JSON 提供器

安装:

dotnet add package Lang.Avalonia.Json

每个文化一个文件,并将 JSON 文件复制到输出目录:

I18n/en-US.json
I18n/zh-CN.json
I18n/zh-Hant.json
I18n/ja-JP.json
<ItemGroup>
 <None Update="I18n\*.json" CopyToOutputDirectory="PreserveNewest" />
</ItemGroup>

每个 JSON 文件都必须包含 languagedescriptioncultureName 元数据:

{
 "language": "English",
 "description": "English resources",
 "cultureName": "en-US",
 "Localization": {
 "Main": {
 "MainView": {
 "Title": "Lang.Avalonia localization workspace",
 "ChangeLanguage": "Language"
 }
 }
 }
}

如果发现无效 JSON 文件,JsonLangPlugin.LoadDiagnostics 会包含被跳过文件的诊断信息。

XML 提供器

安装:

dotnet add package Lang.Avalonia.Xml

每个文化一个文件,并将 XML 文件复制到输出目录:

I18n/en-US.xml
I18n/zh-CN.xml
I18n/zh-Hant.xml
I18n/ja-JP.xml
<ItemGroup>
 <None Update="I18n\*.xml" CopyToOutputDirectory="PreserveNewest" />
</ItemGroup>

每个 XML 文件都必须在根节点上包含 languagedescriptioncultureName 元数据:

<?xml version="1.0" encoding="utf-8"?>
<Localization language="English" description="English resources" cultureName="en-US">
 <Main>
 <MainView>
 <Title>Lang.Avalonia localization workspace</Title>
 <ChangeLanguage>Language</ChangeLanguage>
 </MainView>
 </Main>
</Localization>

叶子节点路径会成为资源 Key。上面的示例会生成 Localization.Main.MainView.Title。 如果发现无效 XML 文件,XmlLangPlugin.LoadDiagnostics 会包含被跳过文件的诊断信息。

RESX 提供器

安装:

dotnet add package Lang.Avalonia.Resx

使用标准 .NET RESX 命名:

I18n/Resources.resx
I18n/Resources.zh-CN.resx
I18n/Resources.zh-Hant.resx
I18n/Resources.ja-JP.resx

建议使用完整资源 Key 作为 RESX 数据名称:

<data name="Localization.Main.MainView.Title" xml:space="preserve">
 <value>Lang.Avalonia localization workspace</value>
</data>

ResxLangPlugin 按文化同步资源,并通过与 JSON、XML 提供器相同的 ILangPlugin 契约对外提供资源。裁剪发布时建议显式传入生成的 ResourceManager,这样应用不需要为了 Lang.Avalonia.Resx 额外配置链接器 Root 文件:

using MyApp.I18n;

I18nManager.Instance.Register(
 new ResxLangPlugin(Resources.ResourceManager),
 new CultureInfo("zh-CN"),
 out var error);

也可以传入生成的资源 Designer 类型:

I18nManager.Instance.Register(
 new ResxLangPlugin(typeof(Resources)),
 new CultureInfo("zh-CN"),
 out var error);

ResxLangPlugin.Mark 默认值为 i18n。请让生成的资源 Designer 类型位于包含 I18n 的命名空间或文件夹下,或者显式设置 Mark

I18nManager.Instance.Register(
 new ResxLangPlugin { Mark = "Resources" },
 new CultureInfo("en-US"),
 out var error);

按约定扫描保留用于兼容旧用法,但裁剪应用推荐使用显式注册。

强类型 Key

支持两种生成路径:

  • 示例项目中的 T4 模板会从 JSON、XML 或 RESX 资源生成 I18n/Language.cs
  • Lang.Avalonia.Analysis 会从 AdditionalFiles 在编译期生成 Language.g.cs

在应用项目中建议将 Lang.Avalonia.Analysis 作为私有构建期分析器:

<PackageReference Include="Lang.Avalonia.Analysis" Version="*" PrivateAssets="all" />

将 JSON、XML 或 RESX 语言文件注册为 AdditionalFiles

<ItemGroup>
 <AdditionalFiles Include="I18n\*.json" />
 <AdditionalFiles Include="I18n\*.xml" />
 <AdditionalFiles Include="I18n\*.resx" />
</ItemGroup>

生成字段的值会保留原始资源 Key,只有 C# 标识符名称会被清洗。

对于以下资源 Key:

Localization.Main.MainView.Title

生成器会输出类似常量:

namespace Localization.Main;

public static class MainView
{
 public static readonly string Title = "Localization.Main.MainView.Title";
}

示例和设计说明

仓库包含四个示例:

示例 用途
Lang.Avalonia.Json.Demo JSON 文件复制到输出目录并由 JsonLangPlugin 加载
Lang.Avalonia.Xml.Demo XML 文件复制到输出目录并由 XmlLangPlugin 加载
Lang.Avalonia.Resx.Demo 通过 ResourceManager 加载 RESX 资源
Lang.Avalonia.Analysis.Demo JSON 资源加 Source Generator 生成 Key

设计文档和 SVG 图示见 docs/design.md

回退规则

资源查找顺序如下:

  1. 显式 CultureName;未提供时使用 I18nManager.Instance.Culture
  2. Register 时传入的默认文化。
  3. 原始资源 Key。

注意事项

  • JSON 和 XML 提供器默认扫描 AppDomain.CurrentDomain.BaseDirectory
  • JSON 和 XML 提供器也可以通过 AddResource 读取嵌入资源。
  • RESX 提供器在显式注册 ResourceManager 或资源 Designer 类型时,裁剪发布不需要为 Lang.Avalonia.Resx 配置 Root.xml。
  • 资源 Key 和格式化参数均支持动态 Avalonia Binding。

第三方开源组件审计(2026-05-20)

检查方式:dotnet restore Lang.Avalonia.slnxdotnet list package --include-transitive、NuGet .nuspec、NuGet.org 与源码仓库信息。优先接受 MIT / Apache-2.0 / BSD;其它开源协议在源码与传递依赖均可追溯时单独标注。

整改:

  • 四个 Demo 已移除 AvaloniaUI.DiagnosticsSupport
  • Avalonia / Avalonia.Desktop12.0.2 升级到 12.0.3
  • System.Drawing.Common 固定到 10.0.8
  • System.Text.Json10.0.2 升级到 10.0.8
  • Prism.AvaloniaPrism.DryIoc.Avalonia 以及配套的 Irihi.Ursa.PrismExtension 继续保留在当前 8.x 兼容开源线,不升级到 Prism 9.x 商业化版本线。
使用范围 协议 源码/项目地址 结论
Avalonia / Avalonia.Desktop Demo UI 与核心 Avalonia 集成 MIT https://github.com/AvaloniaUI/Avalonia 通过,已升级到 12.0.3
Semi.Avalonia Demo 主题 MIT https://github.com/irihitech/Semi.Avalonia 通过,仅使用开源主体包
Irihi.Ursa / Irihi.Ursa.PrismExtension / Irihi.Ursa.Themes.Semi Demo 控件与 Prism 扩展 MIT https://github.com/irihitech/Ursa.Avalonia 通过,Prism 扩展保留在当前 8.x 兼容线
Prism.Avalonia / Prism.DryIoc.Avalonia 8.1.97.11073 Demo DI / Prism shell MIT https://github.com/AvaloniaCommunity/Prism.Avalonia 通过,保留 8.x 开源线
ReactiveUI.Avalonia Demo MVVM MIT https://github.com/reactiveui/reactiveui 通过
Microsoft.CodeAnalysis.* Lang.Avalonia.Analysis 源码生成 MIT https://github.com/dotnet/roslyn 通过
System.Drawing.Common / System.Text.Json RESX 与 JSON 支持 MIT https://github.com/dotnet/dotnet 通过,固定到 10.0.8
VC-LTL Windows 兼容 EPL-2.0 https://github.com/Chuyu-Team/VC-LTL5 源码开放,按“非优先但可追溯”通过
YY-Thunks Windows 兼容 MIT https://github.com/Chuyu-Team/YY-Thunks 源码开放,通过

传递依赖检查结论:Avalonia / Ursa / Semi / Prism / ReactiveUI / Roslyn / .NET 运行时与类库链路均有公开源码;有效项目文件中不再包含 AvaloniaUI.DiagnosticsSupport 或其它黑盒组件。

Product Versions Compatible and additional computed target framework versions.
.NET net8.0 net8.0 is compatible.  net8.0-android net8.0-android was computed.  net8.0-browser net8.0-browser was computed.  net8.0-ios net8.0-ios was computed.  net8.0-maccatalyst net8.0-maccatalyst was computed.  net8.0-macos net8.0-macos was computed.  net8.0-tvos net8.0-tvos was computed.  net8.0-windows net8.0-windows was computed.  net9.0 net9.0 was computed.  net9.0-android net9.0-android was computed.  net9.0-browser net9.0-browser was computed.  net9.0-ios net9.0-ios was computed.  net9.0-maccatalyst net9.0-maccatalyst was computed.  net9.0-macos net9.0-macos was computed.  net9.0-tvos net9.0-tvos was computed.  net9.0-windows net9.0-windows was computed.  net10.0 net10.0 is compatible.  net10.0-android net10.0-android was computed.  net10.0-browser net10.0-browser was computed.  net10.0-ios net10.0-ios was computed.  net10.0-maccatalyst net10.0-maccatalyst was computed.  net10.0-macos net10.0-macos was computed.  net10.0-tvos net10.0-tvos was computed.  net10.0-windows net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on Lang.Avalonia.Resx:

Package Downloads
Shinya.Avalonia

Shinya.Framework

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
12.0.4.1 149 6/8/2026
12.0.3.3 253 5/27/2026
12.0.3.1 238 5/20/2026
12.0.2.1 313 5/8/2026
12.0.2 136 5/2/2026
11.3.12.1 145 2/13/2026
11.3.9 249 11/22/2025
1.0.0.3 323 11/12/2025
1.0.0.2 243 8/11/2025
1.0.0.1 218 8/11/2025
1.0.0 202 8/9/2025
0.0.0.2 270 8/8/2025