| Crates.io | es-fluent-lang |
| lib.rs | es-fluent-lang |
| version | 0.6.0 |
| created_at | 2025-10-20 12:08:11.187993+00 |
| updated_at | 2026-01-16 12:03:48.69534+00 |
| description | Opinionated crate for adding variants to a Language Enum. |
| homepage | |
| repository | https://github.com/stayhydated/es-fluent |
| max_upload_size | |
| id | 1891824 |
| size | 40,485 |
Runtime support for es-fluent language management.
This crate provides the core language types (re-exporting unic-langid) and the optional "Language Enum" generator macro.
#[es_fluent_language]Generates a strongly-typed enum of all available languages in your project. It automatically scans your i18n.toml assets directory to find supported locales.
use es_fluent_lang::es_fluent_language;
use es_fluent::EsFluent;
use strum::EnumIter;
// Define an empty enum, and the macro fills it
#[es_fluent_language]
#[derive(Debug, Clone, Copy, PartialEq, Eq, EsFluent, EnumIter)]
pub enum Languages {}
If your assets_dir contains en, fr, and de folders, this generates:
pub enum Languages {
En,
Fr,
De,
}
It also implements:
Default: Uses the fallback_language from your config.FromStr: Parses string codes (e.g., "en-US") into the enum variant.Into<LanguageIdentifier>: Converts back to a standard locale ID.The crate also includes a built-in module for translating language names themselves (e.g., "English", "Français", "Deutsch"). This means you can easily build a "Language Picker" UI without manually translating the names of every language.