rush_sync_server/commands/lang/
config.rs1use super::persistence::LanguagePersistence;
4use crate::core::config::Config;
5use crate::core::prelude::*;
6
7pub struct LanguageConfig;
9
10impl LanguageConfig {
11 pub async fn set_in_config(config: &mut Config, lang: &str) -> Result<()> {
13 if !crate::i18n::AVAILABLE_LANGUAGES.contains(&lang) {
15 return Err(AppError::Validation(format!(
16 "Ungültige Sprache: {}. Verfügbar: {:?}",
17 lang,
18 crate::i18n::AVAILABLE_LANGUAGES
19 )));
20 }
21
22 config.language = lang.to_lowercase();
24
25 config.save().await?;
27
28 crate::i18n::set_language(lang)?;
30
31 log::debug!("Language set in config: {}", lang.to_uppercase());
32 Ok(())
33 }
34
35 pub async fn load_and_apply_from_config(config: &Config) -> Result<()> {
37 let lang = &config.language;
38
39 if let Err(e) = crate::i18n::set_language(lang) {
41 log::warn!(
42 "{}",
43 get_translation("system.config.language_set_failed", &[&e.to_string()])
44 );
45
46 let _ = crate::i18n::set_language(crate::i18n::DEFAULT_LANGUAGE);
48 }
49
50 Ok(())
51 }
52
53 pub async fn create_config_with_language(lang: &str) -> Result<Config> {
55 let mut config = Config::default();
56 config.language = lang.to_lowercase();
57
58 config.save().await?;
60
61 Ok(config)
62 }
63
64 pub async fn sync_config_with_current_language() -> Result<()> {
66 let current_lang = crate::i18n::get_current_language().to_lowercase();
67 LanguagePersistence::save_to_config(¤t_lang).await
68 }
69
70 pub fn is_config_in_sync_with_i18n(config: &Config) -> bool {
72 let config_lang = config.language.to_lowercase();
73 let current_lang = crate::i18n::get_current_language().to_lowercase();
74 config_lang == current_lang
75 }
76
77 pub async fn repair_config_sync(config: &mut Config) -> Result<bool> {
79 if !Self::is_config_in_sync_with_i18n(config) {
80 let current_lang = crate::i18n::get_current_language().to_lowercase();
81 config.language = current_lang.clone();
82 config.save().await?;
83
84 log::debug!(
85 "Config language repaired to: {}",
86 current_lang.to_uppercase()
87 );
88 return Ok(true);
89 }
90 Ok(false)
91 }
92}