4 个稳定版本

1.1.2 2024年5月9日
1.1.1 2022年3月24日
1.1.0 2022年3月21日
1.0.6 2022年1月20日
1.0.5 2021年12月1日

#66国际化 (i18n)

37 每月下载量
用于 3 crates

MIT 许可证

180KB
4K SLoC

Crates.io Docs.rs CircleCI Coverage Status

poreader

Rust 库,用于读取 Uniforum/Gettext PO 格式的翻译目录。类似于 Python translate.storageTranslate 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