From f87d151447ba1c983877577090ea9058151f909d Mon Sep 17 00:00:00 2001 From: 魏曹先生 <1992414357@qq.com> Date: Thu, 18 Jun 2026 04:03:58 +0800 Subject: feat(shakehand): add sub-module locale support Include `use super::*` in generated sub-modules to allow access to imported locale traits. Add locale files and tests for the sub-module in shakehand-test. --- shakehand-test/locale/sub/sub.toml | 5 +++++ shakehand-test/src/lib.rs | 16 +++++++++++++++- shakehand/src/shakehand.rs | 1 + 3 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 shakehand-test/locale/sub/sub.toml diff --git a/shakehand-test/locale/sub/sub.toml b/shakehand-test/locale/sub/sub.toml new file mode 100644 index 0000000..3fcdb2f --- /dev/null +++ b/shakehand-test/locale/sub/sub.toml @@ -0,0 +1,5 @@ +[en] +test = "test submod" + +[zh_CN] +test = "测试子模块" diff --git a/shakehand-test/src/lib.rs b/shakehand-test/src/lib.rs index a59d993..7162f75 100644 --- a/shakehand-test/src/lib.rs +++ b/shakehand-test/src/lib.rs @@ -1,6 +1,6 @@ #[cfg(test)] mod test { - use crate::locale::{Global, Languages, set_lang}; + use crate::locale::{Global, Languages, set_lang, sub::Sub}; use std::sync::{Mutex, MutexGuard}; /// Global lock to serialize tests that mutate `__SHAKE_HAND_LANG`. @@ -244,6 +244,20 @@ mod test { fn test_from_str_unknown() { let _ = Languages::from("klingon"); } + + #[test] + fn test_sub_module_english() { + let _lock = lock_lang(); + set_lang(Languages::en); + assert_eq!(Sub::test(), "test submod"); + } + + #[test] + fn test_sub_module_chinese() { + let _lock = lock_lang(); + set_lang(Languages::zh_CN); + assert_eq!(Sub::test(), "测试子模块"); + } } mod locale { diff --git a/shakehand/src/shakehand.rs b/shakehand/src/shakehand.rs index 8f614cc..83678b4 100644 --- a/shakehand/src/shakehand.rs +++ b/shakehand/src/shakehand.rs @@ -726,6 +726,7 @@ pub fn generate_module( quote! { pub mod #mod_ident { + use super::*; #(#sub_structs)* } } -- cgit