sys_language 0.1.0

A cross-platform Rust library for detecting system language with preferred language selection and fallback support
Documentation
# sys_language


一个跨平台的 Rust 库,用于检测系统默认语言,支持优先选择可选语言并提供回退机制。

## 作者


- [Cupnfish]https://github.com/cupnfish
- 智普AI

## 功能特性


- 🌍 **跨平台支持**: 支持 Windows、macOS 和 Linux
- 🎯 **智能匹配**: 支持精确匹配和主要语言匹配
-**灵活配置**: 支持可选语言列表和回退语言设置
- 🔧 **易于使用**: 提供简单易用的 API 和便捷函数

## 安装


在你的 `Cargo.toml` 文件中添加依赖:

```toml
[dependencies]
sys_language = "0.1.0"
```

## 使用方法


### 基本使用


```rust
use sys_language::detect_system_language;

let language = detect_system_language();
println!("系统语言: {}", language);
println!("主要语言: {}", language.primary_language());
```

### 高级使用


```rust
use sys_language::LanguageDetector;

let detector = LanguageDetector::new()
    .with_preferred_languages(&["zh-CN", "en-US", "ja-JP"])
    .with_fallback("en-US");

let language = detector.detect();
println!("检测到的语言: {}", language);
```

### 使用便捷函数


```rust
use sys_language::detect_language_with_options;

let preferred = ["zh-CN", "en-US"];
let fallback = "en-US";
let language = detect_language_with_options(&preferred, fallback);
println!("最佳语言: {}", language);
```

## 语言匹配规则


库支持智能语言匹配,包括:

1. **精确匹配**: `zh-CN` 完全匹配 `zh-CN`
2. **主要语言匹配**: `zh-CN` 匹配 `zh`
3. **相同主要语言**: `zh-CN` 匹配 `zh-TW`

```rust
use sys_language::Language;

let lang = Language::new("zh-CN");

assert!(lang.matches("zh-CN"));  // 精确匹配
assert!(lang.matches("zh"));     // 主要语言匹配
assert!(lang.matches("zh-TW"));  // 相同主要语言
assert!(!lang.matches("en-US")); // 不匹配
```

## 平台特定实现


### Windows


使用 Windows API (`GetUserDefaultLocaleName`) 获取系统语言设置。

### macOS


从环境变量 (`LANG`, `LC_ALL`, `LC_CTYPE`) 读取语言设置。

### Linux


从环境变量 (`LANG`, `LC_ALL`, `LANGUAGE`) 读取语言设置,支持冒号分隔的语言列表。

## 示例程序


运行示例程序来查看所有功能:

```bash
cargo run --example basic_usage
```

输出示例:

```
=== 系统语言检测示例 ===

1. 检测系统默认语言:
   系统语言: zh-CN
   主要语言: zh
   地区: CN

2. 使用语言检测器:
   检测到的语言: zh-CN
   首选语言列表: ["zh-CN", "zh-TW", "en-US"]
   回退语言: en-US

3. 测试语言匹配逻辑:
   情况 1 (首选: zh-CN, en-US): zh-CN
   情况 2 (首选: zh-CN, ja-JP): zh-CN
   情况 3 (无首选语言): fr-FR

4. 使用便捷函数:
   首选: ["de-DE", "fr-FR", "es-ES"], 回退: en-US
   检测结果: de-DE

5. 语言匹配规则演示:
   'zh-CN' 匹配 'zh-CN'? true
   'zh-CN' 匹配 'zh'? true
   'zh-CN' 匹配 'zh-TW'? true
   'zh-CN' 匹配 'en-US'? false

=== 示例结束 ===
```

## API 文档


### Language 结构体


```rust
pub struct Language {
    code: String,
}
```

**方法:**

- `new(code: &str) -> Language` - 创建新的语言实例
- `as_str(&self) -> &str` - 获取语言代码字符串
- `primary_language(&self) -> &str` - 获取主要语言部分
- `region(&self) -> Option<&str>` - 获取地区部分
- `matches(&self, other: &str) -> bool` - 检查是否与指定语言匹配

### LanguageDetector 结构体


```rust
pub struct LanguageDetector {
    preferred_languages: Vec<String>,
    fallback: String,
}
```

**方法:**

- `new() -> Self` - 创建新的语言检测器
- `with_preferred_languages(self, languages: &[&str]) -> Self` - 设置首选语言列表
- `with_fallback(self, fallback: &str) -> Self` - 设置回退语言
- `preferred_languages(&self) -> &[String]` - 获取首选语言列表
- `fallback(&self) -> &str` - 获取回退语言
- `detect(&self) -> Language` - 检测并返回最佳语言

### 便捷函数


- `detect_system_language() -> Language` - 快速检测系统语言
- `detect_language_with_options(preferred: &[&str], fallback: &str) -> Language` - 检测语言,支持选项

## 许可证


MIT License

## 贡献


欢迎提交 Issue 和 Pull Request!

## 更新日志


### v0.1.0

- 初始版本发布
- 支持 Windows、macOS 和 Linux 平台
- 实现基本的语言检测和匹配功能
- 提供灵活的配置选项