Projects

Lang.Avalonia

Avalonia UIプラグイン型多言語ライブラリ

项目说明

Lang.Avalonia

Lang.Avalonia

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

エンベロープ線

バッグバッグ。 説明書の作成
Lang.Avalonia トークン拡張、バインディングリフレッシュ、リソース管理を含むコア機能。
Lang.Avalonia.Json JSONリソースプロバイダ。
Lang.Avalonia.Xml XMLリソースプロバイダ。
Lang.Avalonia.Resx RESXリソースプロバイダ。
Lang.Avalonia.Analysis AdditionalFiles 编译期生成强类型 Key。

機能性は

  • AXAMLとC#の統合多言語ポータル。
  • 通过 I18nManager.Instance.Culture 运行时切换语言。
  • JSON、XML、RESX 资源提供器统一实现 ILangPlugin
  • デフォルトの文化的ロールバックとrawキーのロールバックをサポートします。
  • 支持 T4 模板或 Lang.Avalonia.Analysis 生成强类型资源 Key。
  • 固定文化プレビュー、書式付き文字列、動的バインディングパラメータをサポートします。

早速開始。

コアパッケージとリソースプロバイダをインストールするには、次の手順に従います。

dotnet add package Lang.Avalonia
dotnet add package Lang.Avalonia.Json

I18n 目录创建语言文件,并将 JSON/XML 文件复制到输出目录:

<ItemGroup>
  <None Update="I18n\*.json" CopyToOutputDirectory="PreserveNewest" />
</ItemGroup>

アプリケーション起動時にプラグインを登録するには、次の手順に従います。

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#で同じキーを使用する:

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");

注目に値する。

  • Avaloniaプロジェクトでは、JSON、XML、RESX 多言語リソースをサポートする必要があります。
  • AXAMLとC#でUnified APIを使用して翻訳文字列を読み込みたい場合。
  • T 4またはソースジェネレータを使用して強型付きキーを生成し、ハードコードされた文字列を減らしたい。
  • 言語切り替え時にインターフェイスバインディングを自動的に更新します。

倉庫の倉庫