reinhardt_conf/settings/
i18n.rs1use reinhardt_core::macros::settings;
6use serde::{Deserialize, Serialize};
7
8#[settings(fragment = true, section = "i18n")]
12#[derive(Clone, Debug, Serialize, Deserialize)]
13pub struct I18nSettings {
14 #[serde(default = "default_language_code")]
16 pub language_code: String,
17 #[serde(default = "default_time_zone")]
19 pub time_zone: String,
20 #[serde(default = "default_true")]
22 pub use_i18n: bool,
23 #[serde(default = "default_true")]
25 pub use_tz: bool,
26}
27
28fn default_language_code() -> String {
29 "en-us".to_string()
30}
31
32fn default_time_zone() -> String {
33 "UTC".to_string()
34}
35
36fn default_true() -> bool {
37 true
38}
39
40impl Default for I18nSettings {
41 fn default() -> Self {
42 Self {
43 language_code: default_language_code(),
44 time_zone: default_time_zone(),
45 use_i18n: true,
46 use_tz: true,
47 }
48 }
49}
50
51#[cfg(test)]
52mod tests {
53 use super::*;
54 use crate::settings::fragment::SettingsFragment;
55 use rstest::rstest;
56
57 #[rstest]
58 fn test_i18n_settings_section() {
59 assert_eq!(I18nSettings::section(), "i18n");
61 }
62
63 #[rstest]
64 fn test_i18n_settings_default() {
65 let settings = I18nSettings::default();
67
68 assert_eq!(settings.language_code, "en-us");
70 assert_eq!(settings.time_zone, "UTC");
71 assert!(settings.use_i18n);
72 assert!(settings.use_tz);
73 }
74}