# `bevy_easy_localize`
[](https://crates.io/crates/bevy_easy_localize)
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:
|word|comment|translation0|translation1|...|

In your project:
```rust
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:
```rust
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`](examples/simple.rs) – Reading from a file to initialize the resource.
- [`asset`](examples/asset.rs) – Using asset handles to initialize the resource.
- [`text`](examples/text.rs) – Using the `LocalizeText` component to update text.
- [`sys_locale`](examples/sys_locale.rs) - 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`](https://github.com/kgv/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.