3个版本

0.1.2 2020年5月6日
0.1.1 2020年5月6日
0.1.0 2020年5月6日

#854 in 数据结构

MIT/Apache

16KB
281

traduki

一个Rust的资产翻译工具包,它将资产文件编译到二进制文件中,但通过LANG环境区域选择适当的翻译以在运行时进行。

可能目前仅在Linux/MacOS上工作。

include!(concat!(env!("OUT_DIR"), "/traduki.rs"));

fn main() {
    use traduki::app;
    println!("{}: {}", app::name(), app::description());
}

项目状态

该项目非常新,以qaul.net作为测试平台,作为Rust CLI-WG的一部分开发。如果您有任何反馈,请随时发送到我们的邮件列表

上述示例手动访问翻译数据,但在将来,如果库(如CLI解析器、Web服务器等)也能访问这些数据,将使某些集成更容易。所有这些都是仍在进行中的工作。

问题

我们都构建过处理面向用户文本的应用程序。无论是错误消息、帮助消息、一般UI文本,几乎所有应用程序文本都可以翻译成用户的首选语言,以便尽可能使使用软件更加易于访问。

但是,管理翻译很困难,尤其是在访问应用程序不同部分的字符串或同一工作空间中的多个crate中的字符串时。

此外,可翻译的不仅仅是应用程序:手册页、帮助文本,甚至静态网站都可以用特定语言的文本进行翻译和生成。

概述

traduki添加了一个“语言资产”目录,用户可以在其中创建一个松散管理的文本和资产文件结构,用于翻译。

资产目录结构

处理翻译资产的一种流行方法是在顶级语言部分之后,有一个自定义的对象树。这种方法的缺点是它使得不同语言树之间不同步变得非常容易。

相反,traduki使用“维基百科模式”:在顶级是一组类别,包含子类别和“页面”(资产)。每个资产都是一个包含特定语言文件的文件夹。

这样,就更容易直观地比较每种语言的翻译状态,并鼓励页面或部分存在于多种语言中。

格式

以下是如何使用taduki的非常简单的目录布局。对于更复杂的示例,请查看examples目录。

assets/
├── clap
│   ├── create
│   │   ├── en_GB.yml
│   │   ├── eo.yml
│   │   └── fr_FR.yml
│   └── default
│       ├── en_GB.yml
│       ├── eo.yml
│       └── fr_FR.yml
└── manual
    ├── en_GB.yml
    ├── eo.yml
    └── fr_FR.yml

在此示例中,clap目录包含有关CLI的数据,按子命令分组(default/包含通用参数、应用程序名称、版本、免责声明等。)

手册部分没有子部分,是一个简单的叶子节点(包含三种语言)。

在你的 build.rs 文件中应添加以下行

fn main() {
    set_var("TRADUKI_DEFAULT_LANG", "en_GB");
    traduki::bootstrap("assets");

}

在你的 Rust 程序中(初始化 taduki 之后),你可以使用 crate::taduki::clap::create::my_key_here)来获取资源。

依赖项

~185KB