https://github.com/dioxus-community/dioxus-i18n
i18n (localization) support for all Dioxus apps and renderers
https://github.com/dioxus-community/dioxus-i18n
dioxus i18n localization
Last synced: 12 months ago
JSON representation
i18n (localization) support for all Dioxus apps and renderers
- Host: GitHub
- URL: https://github.com/dioxus-community/dioxus-i18n
- Owner: dioxus-community
- License: mit
- Created: 2024-08-31T09:42:18.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2025-05-26T17:34:29.000Z (about 1 year ago)
- Last Synced: 2025-05-26T18:39:13.999Z (about 1 year ago)
- Topics: dioxus, i18n, localization
- Language: Rust
- Homepage:
- Size: 74.2 KB
- Stars: 24
- Watchers: 1
- Forks: 3
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.md
Awesome Lists containing this project
README
# dioxus-i18n 🌍
i18n integration for Dioxus apps based on the [Project Fluent](https://github.com/projectfluent/fluent-rs).
> This crate used to be in the [Dioxus SDK](https://github.com/DioxusLabs/sdk).
## Support
- **Dioxus v0.6** 🧬
- Renderers:
- [web](https://dioxuslabs.com/learn/0.6/guides/web/),
- [desktop](https://dioxuslabs.com/learn/0.6/guides/desktop/),
- [freya](https://github.com/marc2332/freya)
- Both WASM and native targets
## Example:
```ftl
# en-US.ftl
hello = Hello, {$name}!
```
```rs
// main.rs
fn app() -> Element {
let i18 = use_init_i18n(|| {
I18nConfig::new(langid!("en-US"))
// implicit [`Locale`]
.with_locale(( // Embed
langid!("en-US"),
include_str!("./en-US.ftl")
))
.with_locale(( // Load at launch
langid!("es-ES"),
PathBuf::from("./es-ES.ftl"),
))
.with_locale(( // Locales will share duplicated locale_resources
langid!("en"), // which is useful to assign a specific region for
include_str!("./en-US.ftl") // the primary language
))
// explicit [`Locale`]
.with_locale(Locale::new_static( // Embed
langid!("en-US"),
include_str!("./en-US.ftl"),
))
.with_locale(Locale::new_dynamic( // Load at launch
langid!("es-ES"),
PathBuf::from("./es-ES.ftl"),
))
});
rsx!(
label { { t!("hello", name: "World") } }
)
}
```
## Further examples
The examples folder contains a number of working examples:
* Desktop examples:
* [Dioxus](./examples/dioxus-desktop.rs)
* [Freya](./examples/freya.rs)
* Configuration variants:
* [Auto locales](./examples/config-auto-locales.rs)
* [Dynamic (PathBuf)](./examples/config-dynamic-pathbuf.rs)
* [Static (include_str!)](./examples/config-static-includestr.rs)
* Fluent grammer:
* [Application](./examples/fluent-grammar.rs)
* [FTL file](./examples/data/fluent/en.ftl)
## Development
```bash
# Checks clean compile against `#[cfg(not(target_arch = "wasm32"))]`
cargo build --target wasm32-unknown-unknown
# Runs all tests
cargo test
```
[MIT License](./LICENSE.md)