#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum Language {
Ru,
En,
}
impl Language {
pub fn from_code(code: &str) -> Language {
match code.trim().to_ascii_lowercase().as_str() {
"ru" | "rus" | "russian" => Language::Ru,
_ => Language::En,
}
}
}
pub struct Locale {
pub report_title: &'static str,
pub day_type_working: &'static str,
pub workday_length: &'static str,
pub header_day: &'static str,
pub header_start: &'static str,
pub header_end: &'static str,
pub header_hours: &'static str,
pub header_result: &'static str,
pub total_worked: &'static str,
pub comment: &'static str,
pub work_on_task: &'static str,
pub work_generic: &'static str,
pub break_label: &'static str,
pub months: [&'static str; 12],
pub weekdays: [&'static str; 7],
pub date_format: &'static str,
}
impl Locale {
pub fn for_language(language: Language) -> &'static Locale {
match language {
Language::Ru => &RU,
Language::En => &EN,
}
}
pub fn work_text(&self, task_name: &str) -> String {
if task_name.trim().is_empty() {
self.work_generic.to_string()
} else {
self.work_on_task.replace("{task}", task_name)
}
}
}
static RU: Locale = Locale {
report_title: "Отчет за день",
day_type_working: "рабочий",
workday_length: "Продолжительность рабочего дня",
header_day: "День",
header_start: "Начало",
header_end: "Конец",
header_hours: "Часы",
header_result: "Результат",
total_worked: "Отработано часов:",
comment: "Комментарий:",
work_on_task: "Работа по задаче [{task}]",
work_generic: "Работа",
break_label: "Перерыв",
months: [
"Январь",
"Февраль",
"Март",
"Апрель",
"Май",
"Июнь",
"Июль",
"Август",
"Сентябрь",
"Октябрь",
"Ноябрь",
"Декабрь",
],
weekdays: ["Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота", "Воскресенье"],
date_format: "%d.%m.%Y",
};
static EN: Locale = Locale {
report_title: "Daily report",
day_type_working: "working",
workday_length: "Workday length",
header_day: "Day",
header_start: "Start",
header_end: "End",
header_hours: "Hours",
header_result: "Result",
total_worked: "Hours worked:",
comment: "Comment:",
work_on_task: "Work on task [{task}]",
work_generic: "Work",
break_label: "Break",
months: [
"January",
"February",
"March",
"April",
"May",
"June",
"July",
"August",
"September",
"October",
"November",
"December",
],
weekdays: ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"],
date_format: "%Y-%m-%d",
};