dioxus-translate

Crates.iodioxus-translate
lib.rsdioxus-translate
version0.1.3
created_at2025-01-06 07:05:49.769329+00
updated_at2025-02-05 00:24:16.900622+00
descriptionLibraries for internalization on Dioxus
homepage
repositoryhttps://github.com/biyard/rust-sdk/tree/main/packages/dioxus-translate
max_upload_size
id1505357
size13,066
hackartist (hackartists)

documentation

README

Dioxus Translate

Usage

Add dependancy

  • Cargo.toml
[dependencies]
dioxus-translate = { version = "0.1.0" }

[features]
web-only = ["dioxus-translate/web"]

Define translate

  • Define i18n translates.
use dioxus_translate::translate;

translate! {
    HeaderTranslate;

    signup: {
        en: "Sign up",
    },

    login: {
        en: "Login",
    },
}
  • The above macro will be expanded to the below code
#[derive(Debug, Clone, PartialEq)]
pub struct HeaderTranslate {
    pub signup: &'static str,
    pub login: &'static str,
}

impl dioxus_translate::Translator for HeaderTranslate {
    fn en() -> Self {
        Self {
            signup: "Sign up",
            login: "Login",
        }
    }
}
  • At this, Translator define the below Translator.
pub trait Translator {
    fn en() -> Self;
}

Getting translate

#![allow(non_snake_case)]
use dioxus::prelude::*;
use dioxus_translate::*;

#[component]
pub fn Component(lang: Language) -> Element {
    let i18n_header: HeaderTranslate = translate(&lang);

    rsx! { "{i18n_header.signup}" }
}

Define additional language spec

  • Currently, only ko language is supported with ko feature

Add ko feature

  • Add ko feature in Cargo.toml
[dependencies]
dioxus-translate = { version = "0.1.0", features = ["ko"] }

Define translate

use dioxus_translate::translate;

translate! {
    HeaderTranslate;

    signup: {
        ko: "회원가입",
        en: "Sign up",
    },

    login: {
        ko: "로그인",
        en: "Login",
    },
}
Commit count: 608

cargo fmt