4 个稳定版本
1.1.2 | 2024年5月9日 |
---|---|
1.1.1 | 2022年3月24日 |
1.1.0 |
|
1.0.6 | 2022年1月20日 |
1.0.5 | 2021年12月1日 |
#66 在 国际化 (i18n) 中
37 每月下载量
用于 3 crates
180KB
4K SLoC
poreader
Rust 库,用于读取 Uniforum/Gettext PO 格式的翻译目录。类似于 Python translate.storage 包 Translate Toolkit。
仅计划支持 PO 和 Xliff。对于其他任何内容,只需使用 Translate Toolkit 转换即可。没有必要替换那个优秀的库;Rust 解析器和编写器的主要原因是将它们作为 Rust 程序构建过程的一部分,特别是在需要用 Rust 编写的过程宏中。
文档
在 Docs.rs 上。
安装
它使用 Cargo,Rust 的包管理器。您可以通过将 poreader
添加到您的 Cargo 依赖项中来依赖此库
[dependencies]
poreader = "1.1"
或者,直接使用 Git 仓库
[dependencies.poreader]
git = "https://github.com/corebreaker/poreader.git"
如何使用
首先从新的 PO 解析器创建一个 PO 读取器,然后迭代读取器
use poreader::PoParser;
use std::{env::args, fs::File, io::{Result, Error, ErrorKind}};
struct NoArg;
impl std::error::Error for NoArg {}
impl std::fmt::Display for NoArg {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { std::fmt::Debug::fmt(self, f) }
}
impl std::fmt::Debug for NoArg {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { write!(f, "No file specified") }
}
fn main() -> Result<()> {
// Filename
let filename = match args().skip(1).next() {
Some(v) => v,
None => { return Err(Error::new(ErrorKind::Other, NoArg)); }
};
// Open a file
let file = File::open(filename)?;
// Create PO parser
let parser = PoParser::new();
// Create PO reader
let reader = parser.parse(file)?;
// Read PO file by iterating on units
for unit in reader {
let unit = unit?;
// Show `msgid`
println!(" - {}", unit.message().get_id())
}
Ok(())
}
项目状态
该项目可以工作。
未来的更改直接与 PO 文件格式的更改相关。
然而,它将根据贡献者的需求进行更新。如果您看到可以改进的地方,可以提交问题或拉取请求。
依赖项
~2.9–5.5MB
~86K SLoC