use crate::commands::process::Language;
use std::path::PathBuf;
#[derive(Debug, Clone)]
pub enum LanguageSource {
BuiltIn(Language),
External {
path: PathBuf,
language_code: Option<String>,
},
}
impl LanguageSource {
pub fn display_name(&self) -> String {
match self {
LanguageSource::BuiltIn(lang) => format!("Built-in: {}", lang.as_str()),
LanguageSource::External {
path,
language_code,
} => {
if let Some(code) = language_code {
format!("External: {} (code: {})", path.display(), code)
} else {
format!("External: {}", path.display())
}
}
}
}
}
impl Language {
pub fn as_str(&self) -> &'static str {
match self {
Language::English => "English",
Language::Japanese => "Japanese",
}
}
pub fn code(&self) -> &'static str {
match self {
Language::English => "en",
Language::Japanese => "ja",
}
}
}