bevy_easy_localize

Crates.iobevy_easy_localize
lib.rsbevy_easy_localize
version0.6.0
sourcesrc
created_at2022-12-24 21:12:48.59615
updated_at2024-11-06 20:01:04.960048
descriptionLightweight localization in bevy
homepagehttps://github.com/0crispy/bevy_easy_localize
repositoryhttps://github.com/0crispy/bevy_easy_localize
max_upload_size
id745066
size162,821
crispy (0crispy)

documentation

https://docs.rs/bevy_easy_localize

README

bevy_easy_localize

Crates.io

A simple crate to localize your game using .csv files.

Features

  • Loading from .csv files
  • Loading the translation file from the asset folder
  • Automatically updating text components
  • Hot reloading
  • Lightweight

Upcoming features

  • Per-language fonts
  • More flexible and customizable .csv file loading

How to use

The .csv file currently must be arranged in this order:

Keyword Comments Language_0 Language_1 ...
word comment translation0 translation1 ...

image

In your project:

use bevy::prelude::*;
use bevy_easy_localize::Localize;
pub fn main() {
    App::new()
        .add_plugins(DefaultPlugins)
        .add_plugins(bevy_easy_localize::LocalizePlugin)
        //Insert the resource from an asset path
        .insert_resource(Localize::from_asset_path("translations.csv"))
        .add_systems(Startup, translate)
        .run();
}
fn translate(
    keyboard:Res<ButtonInput<KeyCode>>,
    mut localize:ResMut<Localize>,
){
    //Easily set the language
    localize.set_language("German");
    if keyboard.just_pressed(KeyCode::Space){
        //Use the get() method to get a translated word for the specified keyword
        println!("{}",localize.get("start_game"));
    }
}

Using the LocalizeText component:

commands.spawn((
    TextBundle::from_section(
        "default value",
        TextStyle {
            font: asset_server.load("font.ttf"),
            font_size: 100.0,
            color: Color::WHITE,
        },
    ),
    //add this component to automatically translate text
    LocalizeText::from_section("my_keyword")
));

Examples

  • simple – Reading from a file to initialize the resource.
  • asset – Using asset handles to initialize the resource.
  • text – Using the LocalizeText component to update text.
  • sys_locale - Using the crate sys-locale to set the default language.

Bevy Compatibility

bevy bevy_easy_localize
0.14 0.6
0.13 0.5
0.12 0.4
0.11 0.3
0.10 0.2
0.9 0.1

About

I made this crate for my personal projects. The obvious alternative is bevy_fluent, but my goal is to just translate some text and I don't need all of the fancy features it offers. I will definitely be updating this crate and if you want to add a feature, please submit a pull request.

Commit count: 31

cargo fmt