yew-i18n

Crates.ioyew-i18n
lib.rsyew-i18n
version0.1.2
sourcesrc
created_at2024-01-24 08:28:38.961691
updated_at2024-02-03 18:06:12.486435
description๐ŸŒ Internationalization (i18n) component for the Yew framework.
homepagehttps://github.com/next-rs/yew-i18n
repositoryhttps://github.com/next-rs/yew-i18n
max_upload_size
id1111825
size18,779
Mahmoud (wiseaidev)

documentation

https://docs.rs/yew-i18n/

README

๐ŸŒ Yew I18n

Crates.io Crates.io Downloads Crates.io License Rust Netlify Status


Demo


๐Ÿ“œ Introduction

Yew I18n is a Yew component that provides internationalization (i18n) support for your web applications. It allows you to manage translations and switch between different languages seamlessly, enhancing the user experience for a global audience.

๐Ÿค” Why is this Component Useful?

This library offers several benefits to make i18n implementation in your Yew projects straightforward:

  1. ๐ŸŒ Multi-Language Support: Easily manage translations for various languages in your application.

  2. ๐Ÿš€ Seamless Integration: Integrate i18n seamlessly into your Yew components, providing a consistent language experience.

  3. ๐Ÿ’ฌ Dynamic Language Switching: Dynamically switch between supported languages to cater to diverse user preferences.

โš™๏ธ Installation

Integrating Yew I18n into your Yew project is a simple process. Follow these steps:

  1. Make sure you have Yew set up in your project. If not, refer to the Yew documentation for installation instructions.

  2. Install the library using your preferred package manager:

    $ cargo add yew-i18n
    
  3. Start using the library to manage translations and enhance the multilingual capabilities of your application.

๐Ÿ› ๏ธ Usage

Incorporating Yew I18n into your application is easy. Follow these steps:

  1. Set up the i18n configuration and provider:

    use crate::components::my_component::MyComponent;
    use yew_i18n::I18nProvider;
    use std::collections::HashMap;
    use yew::prelude::*;
    
    #[function_component(App)]
    pub fn app() -> Html {
        let supported_languages = vec!["en", "fr"];
        let mut translations = HashMap::new();
    
        translations.insert(
        	   // en to en
            "en".to_string(),
            serde_json::json!({
                "24 Apr, 2023": "24 Apr, 2023",
                "02 May, 2023": "02 May, 2023",
                "11 May, 2023": "11 May, 2023",
                "Trending Posts": "Trending Posts",
                "Rust: The Next Big Thing in Data Science": "Rust: The Next Big Thing in Data Science",
                "Data Science": "Data Science",
            }),
        );
    
        translations.insert(
        	   // en to fr
            "fr".to_string(),
            serde_json::json!({
                "24 Apr, 2023": "24 Avr, 2023",
                "02 May, 2023": "02 Mai, 2023",
                "11 May, 2023": "11 Mai, 2023",
                "Trending Posts": "Articles Tendances",
                "Rust: The Next Big Thing in Data Science": "Rust : La Prochaine Grande Avancรฉe en Science des Donnรฉes",
                "Data Science": "Science des Donnรฉes",
            }),
        );
    
        html! {
         	<I18nProvider supported_languages={supported_languages} translations={translations} >
         	    <MyComponent />
         	</I18nProvider>
        }
    }
    
  2. Use the use_translation hook to access the i18n context in your components:

    // ./src/components/my_component.rs
    use yew::prelude::*;
    use yew_i18n::use_translation;
    
    #[function_component(MyComponent)]
    pub fn my_component() -> Html {
        let i18n = use_translation();
    
        i18n.set_translation_language(&"fr");
    
        // Your component, states, etc.
    
        html! {
        	   <div>
                { i18n.t("Trending Posts") }
        	   </div>
        }
    }
    
  3. Customize the language and translations based on user preferences.

๐Ÿ”ง Props

Name Type Description Example Default Value
supported_languages Vec<&'static str> List of supported languages in your application. vec!["en", "fr", "de"] vec!["en"]
translations HashMap<String, serde_json::Value> Translations for different languages. Refer to the usage examples for translations An empty HashMap

๐Ÿ“™ Examples

If you're curious about how to use it with tailwind css, you can check out the examples folder for more information.

๐Ÿค Contribution

We welcome contributions from the community to enhance this Yew I18n component. Feel free to open issues, submit pull requests, or provide feedback. Let's collaborate to make multilingual support in Yew even more powerful!

๐Ÿ“œ License

Yew I18n is licensed under the MIT License, allowing you to use, modify, and distribute it freely. Refer to the LICENSE file for more details.

Commit count: 0

cargo fmt