Jack d980ce6ede docs(readme): 更新国际化使用示例和文档说明
- 添加资源定义示例表格说明
- 补充 ViewModel 属性绑定示例代码
- 修正 Hello 文本绑定示例为 UserName
- 增加绑定语法使用示例
- 完善国际化标签使用说明
2026-01-19 03:51:53 +08:00
2025-01-23 18:55:08 +08:00

JackCraft.I18N

一个适用于 Avalonia 的自己觉得怎么好用怎么写的 I18N 库

使用方法

安装

在 Avalonia 组件完全加载完成前的任意地方声明一个 I18NManager

public class App : Application
{
    // 例子: (不包含文件扩展名)
    // Test.Resources
    // TestAvaloniaProject.Assets.Languages.Resources
    public static I18NManager I18NManager { get; } = new("程序命名空间.路径.语言资源文件名");

    public override void Initialize()
    ...
}

使用

切换语言/文化

I18NManager.Culture = new CultureInfo("zh-cn");

获取当前存在的语言/文化

var totalCultures = I18NManager.GetCultures();

从资源文件中获取特定类型的资源

// 标准示例: var value = I18NManager.Get<类型>("资源名称", 文化信息, ...如果是字符串且需要格式化的话需要传入的格式化参数);
// 假设 Hello 的中文资源为 "你好, {0}",默认资源为 "Hello, {0}"Username 为 "User"
var value = I18NManager.Get<string>("Hello", new CultureInfo("zh-cn"), Username);   // value = "你好, User"
var value = I18NManager.Get<string>("Hello", CultureInfo.InvariantCulture, Username);   // value = "Hello, User"

Avalonia 中的使用

<Window xmlns="https://github.com/avaloniaui"
        xmlns:i18N="clr-namespace:JackCraft.I18N;assembly=JackCraft.I18N">
    <StackPanel>
        <!-- Resources:
        资源名称 | 默认值 | 中文
        Test | Test | 测试
        Hello | Hello, {0} | 你好, {0}
        -->
        <!-- ViewModel:
        public string UserText { get; set; } = "UserName";
        public string TestKey { get; set; } = "Test";
        public string HelloKey { get; set; } = "Hello";
        -->
        <TextBlock Text="{i18N:I18N Test}" /> <!-- 输出: 测试 -->
        <TextBlock Text="{i18N:I18N Hello, UserName}" /> <!-- 输出: 你好, UserName -->
        <TextBlock Text="{i18N:I18N Hello, {Binding UserText}}" /> <!-- 输出: 你好, UserName -->
        <TextBlock Text="{i18N:I18N {Binding Test}}" /> <!-- 输出: 测试 -->
        <TextBlock Text="{i18N:I18N {Binding HelloKey}, {Binding HelloKey}}" /> <!-- 输出: 你好, Hello -->
    </StackPanel>
</Window>
Description
一个适用于 Avalonia 的自己觉得怎么好用怎么写的 I18N 库
Readme LGPL-3.0 176 KiB
Languages
C# 100%