use fluent::FluentError;
use fluent_syntax::parser::ParserError;
use lib_humus_configuration::HumusConfigError;
use std::fmt::Debug;
use std::path::PathBuf;
use crate::language::UnicodeLanguageIdentifier;
#[derive(Debug, thiserror::Error)]
pub enum LanguageEngineLoaderError {
#[error("Language base directory {path:?} is not a directory or does not exist.")]
BaseDirectoryDoesNotExist {
path: PathBuf,
is_other: bool,
},
#[error("Problem reading languages manifest file: {0}")]
ErrorReadingManifest(#[source] HumusConfigError),
#[error(
"The default language {default_language} is not declared as a valid language in the manifest file. Please correct the `default_language` or add a `[language.{default_language}]` section."
)]
DefaultLanguageNotInManifest {
default_language: UnicodeLanguageIdentifier,
},
#[error(
"The default language {default_language} is declared in the manifest file with the is_hidden flag set, this is not allowed. Please correct the `default_language` or remove its is_hidden flag."
)]
DefaultLanguageMustNotBeHidden {
default_language: UnicodeLanguageIdentifier,
},
#[error("Problem reading language file for {language} at {path:?}: {io_error}")]
ErrorReadingLanguageFile {
language: UnicodeLanguageIdentifier,
path: PathBuf,
#[source]
io_error: std::io::Error,
},
#[error("Error parsing language file for language {language} at {path:?}: {errors:#?}")]
ErrorParsingLanguageFile {
language: UnicodeLanguageIdentifier,
path: PathBuf,
errors: Vec<ParserError>,
},
#[error(
"Error adding language file to bundle for language {language} at {path:?}: {errors:#?}"
)]
ErrorAddingLanguageFile {
language: UnicodeLanguageIdentifier,
path: PathBuf,
errors: Vec<FluentError>,
},
}