docs: 添加使用说明

This commit is contained in:
2025-01-24 01:18:31 +08:00
parent 44de222ed7
commit b6db54b08e

View File

@@ -1,3 +1,59 @@
# JackCraft.I18N
一个适用于 Avalonia 的自己觉得怎么好用怎么写的 I18N 库
一个适用于 Avalonia 的自己觉得怎么好用怎么写的 I18N 库
## 使用方法
### 安装
在 Avalonia 组件完全加载完成前的任意地方声明一个 `I18NManager`
```csharp
public class App : Application
{
// 例子: (不包含文件扩展名)
// Test.Resources
// TestAvaloniaProject.Assets.Languages.Resources
public static I18NManager I18NManager { get; } = new("程序命名空间.路径.语言资源文件名");
public override void Initialize()
...
}
```
### 使用
#### 切换语言/文化
```csharp
I18NManager.Culture = new CultureInfo("zh-cn");
```
#### 获取当前存在的语言/文化
```csharp
var totalCultures = I18NManager.GetCultures();
```
#### 从资源文件中获取特定类型的资源
```csharp
// 标准示例: 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 中的使用
```xml
<Window xmlns="https://github.com/avaloniaui"
xmlns:i18N="clr-namespace:JackCraft.I18N;assembly=JackCraft.I18N">
<StackPanel>
<TextBlock Text="{i18N:I18N Test}" /> <!-- 输出: 测试 -->
<TextBlock Text="{i18N:I18N Hello, User}" /> <!-- 输出: 你好, User -->
<!-- ViewModel: public string User { get; set; } = "User"; -->
<TextBlock Text="{i18N:I18N Hello, {Binding User}}" /> <!-- 输出: 你好, User -->
</StackPanel>
</Window>
```