1个不稳定版本
0.1.0 | 2024年7月12日 |
---|
#420 在 国际化(i18n) 中
35KB
390 行
Bevy Translation Table
此包允许在Bevy引擎中使用全局 Resource
(Translations
) 实现简单的翻译。支持不同文件格式是完全可选的,允许删除不需要的实现和依赖。
设计目标
此插件的目标是允许从类似于CSV和Open Document Spreadsheet(ODS)文件的表格样式文件中加载字符串翻译数据。此外,如果需要,还支持注入原始键值数据以进行更多定制。
此包的功能包括:
- 简单易用
- 全局可从bevy系统访问
- 支持易于编辑和开放文档类型,允许任何团队成员或第三方翻译人员轻松进行翻译,而无需太多技术经验。
非目标
- 使用外部工具进行自动翻译
- 生成翻译表的创作系统
- 基于表格列的简单键值映射之外的任何内容。
快速入门
来自 examples/minimal.rs
的代码
初始化资源
// Here you can replace 'world' with 'app' if using bevy instead of just bevy-ecs
world.insert_resource(
// initialize as default
Translations::default()
// select a CSV file and a default locale
.csv_file(&Path::new("assets/lang.csv"), &"en".into())
// optionally switch the current locale
.use_locale("es")
// Strips mutability to easily finish inserting into the world.
.build(),
);
轮询已翻译字符串
// A system that uses a read-only reference to the translations table.
// This allows better parallelization of translation lookups when not needing to change the tables
fn system_use_translation(trans: Res<Translations>) {
for key in ["hello", "green", "invalid"] {
// using Res<Translations>.tr('key') to perform the key-value lookup.
// Without the feature `catch-missing-values` enabled, this will simply provide the key again when failing to find a matching value for the current locale.
println!("{} = {}", key, trans.tr(key))
}
}
许可证
遵循 bevy本身 设定的先例,此包采用MIT或Apache-2.0双重许可
依赖项
~10–42MB
~628K SLoC