Files
JackCraft.I18N/Readme.MD
2025-01-24 01:18:31 +08:00

59 lines
1.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# JackCraft.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>
```