| Crates.io | language_atlas |
| lib.rs | language_atlas |
| version | 0.1.2 |
| created_at | 2025-02-25 22:40:30.720859+00 |
| updated_at | 2025-02-28 13:42:18.026758+00 |
| description | This crate provides a macro to generate a language atlas. The Atlas provides functions that return different strings depending on the selected language. |
| homepage | |
| repository | https://github.com/Tomyyy-1337/language_atlas |
| max_upload_size | |
| id | 1569767 |
| size | 18,074 |
This macro generates functions for a given enum that return language variants of a String or &'static str type.
Add this to your Cargo.toml:
[dependencies]
language_atlas = "0.1.2"
String type, while non-parameter functions return a &'static str type.Display trait.use language_atlas::generate_language_functions;
enum Language {
English,
Spanish,
French,
}
generate_language_functions! {
LanguageEnum: Language
// returns a `&'static str`
greeting {
English: "Hello"
Spanish: "Hola"
French: "Bonjour"
}
// Returns a `String`
// name is a parameter that implements `std::fmt::Display`. Parameter types are optional.
farewell(name) {
English: "Goodbye, {name}"
Spanish: "Adios, {name}"
French: "Au revoir, {name}"
}
// Returns a `String`. English is the default value for all languages.
// day, month, and year have types u8, u8, and u16 respectively
date(day: u8, month: u8, year: u16) {
French: "{day}/{month}/{year}"
English: "{month}/{day}/{year}"
}
// Generates a deprecated placeholder function returning `ToDo!`
dummy { }
}
fn main() {
let mut lang = Language::English;
assert_eq!(lang.greeting(), "Hello");
assert_eq!(lang.farewell("John"), "Goodbye, John");
assert_eq!(lang.date(1, 2, 2021), "2/1/2021");
assert_eq!(lang.dummy(), "ToDo!");
lang = Language::Spanish;
assert_eq!(lang.greeting(), "Hola");
assert_eq!(lang.farewell("Juan"), "Adios, Juan");
assert_eq!(lang.date(1, 2, 2021), "1/2/2021");
assert_eq!(lang.dummy(), "ToDo!");
lang = Language::French;
assert_eq!(lang.greeting(), "Bonjour");
assert_eq!(lang.farewell("Jean"), "Au revoir, Jean");
assert_eq!(lang.date(1, 2, 2021), "1/2/2021");
assert_eq!(lang.dummy(), "ToDo!");
}
This project is licensed under the MIT License.