use super::{Language, TextKey, MonthKey, TooltipKey};
pub trait Translatable {
fn display_name(&self, lang: Language) -> &'static str;
fn display_name_current(&self) -> &'static str {
self.display_name(super::current_language())
}
}
impl Translatable for TextKey {
fn display_name(&self, lang: Language) -> &'static str {
self.get(lang)
}
}
impl Translatable for MonthKey {
fn display_name(&self, lang: Language) -> &'static str {
self.short(lang)
}
}
impl Translatable for TooltipKey {
fn display_name(&self, lang: Language) -> &'static str {
self.get(lang)
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_translatable_text_key() {
let key = TextKey::Delete;
assert_eq!(key.display_name(Language::En), "Delete");
assert_eq!(key.display_name(Language::Ru), "Удалить");
}
#[test]
fn test_translatable_month_key() {
let key = MonthKey::January;
assert_eq!(key.display_name(Language::En), "Jan");
assert_eq!(key.display_name(Language::Ru), "Янв");
}
#[test]
fn test_translatable_tooltip_key() {
let key = TooltipKey::Undo;
assert_eq!(key.display_name(Language::En), "Undo");
assert_eq!(key.display_name(Language::Ru), "Отменить");
}
}