#bevy #plugin #localization #gamedev

bevy-translation-table

一个为bevy提供泛型数据、CSV和ODS的超级基础的翻译表系统

1个不稳定版本

0.1.0 2024年7月12日

#420国际化(i18n)

MIT/Apache

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