lang-lib 1.0.0

A lightweight, high-performance localization library for Rust. Loads TOML language files, supports runtime locale switching, configurable paths, and automatic fallback chains.
Documentation
use lang_lib::Lang;

#[path = "common/mod.rs"]
mod shared;

struct Request {
    id: u64,
    accept_language: &'static str,
}

struct Response {
    locale: &'static str,
    title: String,
    action: String,
    error: String,
}

fn main() -> Result<(), lang_lib::LangError> {
    shared::configure_i18n()?;

    let requests = [
        Request {
            id: 101,
            accept_language: "en-US,en;q=0.9",
        },
        Request {
            id: 102,
            accept_language: "es-ES,es;q=0.9,en;q=0.5",
        },
        Request {
            id: 103,
            accept_language: "fr-FR,fr;q=0.9",
        },
    ];

    for request in requests {
        let response = handle_request(&request);

        println!("request {} -> locale {}", request.id, response.locale);
        println!("  title: {}", response.title);
        println!("  action: {}", response.action);
        println!("  error: {}", response.error);
    }

    Ok(())
}

fn handle_request(request: &Request) -> Response {
    let locale = shared::resolve_request_locale(request.accept_language, shared::DEFAULT_LOCALE);

    Response {
        locale,
        title: Lang::translate("app_title", Some(locale), Some("Acme Dashboard")),
        action: Lang::translate("save_button", Some(locale), Some("Save changes")),
        error: Lang::translate(
            "network_error",
            Some(locale),
            Some("We could not reach the server."),
        ),
    }
}