3个版本
0.1.2 | 2020年5月6日 |
---|---|
0.1.1 | 2020年5月6日 |
0.1.0 | 2020年5月6日 |
#854 in 数据结构
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