From 8c6607ff2a983580a9a138626605cea7887968cf Mon Sep 17 00:00:00 2001 From: llama Date: Tue, 14 Oct 2025 09:14:27 +0800 Subject: [PATCH] codegen i18n ts for launcher --- .cargo/config.toml | 1 + build/configure/src/rust.rs | 1 + rslib/i18n/build.rs | 4 +++- rslib/i18n/typescript.rs | 4 ++-- 4 files changed, 7 insertions(+), 3 deletions(-) diff --git a/.cargo/config.toml b/.cargo/config.toml index 49aaa3a6c..86289d0b9 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -1,6 +1,7 @@ [env] STRINGS_PY = { value = "out/pylib/anki/_fluent.py", relative = true } STRINGS_TS = { value = "out/ts/lib/generated/ftl.ts", relative = true } +STRINGS_LAUNCHER_TS = { value = "out/ts/lib/generated/ftl-launcher.ts", relative = true } DESCRIPTORS_BIN = { value = "out/rslib/proto/descriptors.bin", relative = true } # build script will append .exe if necessary PROTOC = { value = "out/extracted/protoc/bin/protoc", relative = true } diff --git a/build/configure/src/rust.rs b/build/configure/src/rust.rs index 906ecd37e..b2bc6d577 100644 --- a/build/configure/src/rust.rs +++ b/build/configure/src/rust.rs @@ -57,6 +57,7 @@ fn prepare_translations(build: &mut Build) -> Result<()> { outputs: &[ RustOutput::Data("py", "pylib/anki/_fluent.py"), RustOutput::Data("ts", "ts/lib/generated/ftl.ts"), + RustOutput::Data("launcher_ts", "ts/lib/generated/ftl_launcher.ts"), ], target: None, extra_args: "-p anki_i18n", diff --git a/rslib/i18n/build.rs b/rslib/i18n/build.rs index f604c9167..bdfc3083c 100644 --- a/rslib/i18n/build.rs +++ b/rslib/i18n/build.rs @@ -28,7 +28,7 @@ fn main() -> Result<()> { let mut modules = get_modules(&map); write_strings(&map, &modules, "strings.rs", "All"); - typescript::write_ts_interface(&modules)?; + typescript::write_ts_interface(&modules, "STRINGS_TS")?; python::write_py_interface(&modules)?; // write strings.json file to requested path @@ -48,5 +48,7 @@ fn main() -> Result<()> { modules.retain(|module| module.name == "launcher"); write_strings(&map, &modules, "strings_launcher.rs", "Launcher"); + typescript::write_ts_interface(&modules, "STRINGS_LAUNCHER_TS")?; + Ok(()) } diff --git a/rslib/i18n/typescript.rs b/rslib/i18n/typescript.rs index ce30048e2..56fc870b6 100644 --- a/rslib/i18n/typescript.rs +++ b/rslib/i18n/typescript.rs @@ -15,14 +15,14 @@ use crate::extract::Module; use crate::extract::Variable; use crate::extract::VariableKind; -pub fn write_ts_interface(modules: &[Module]) -> Result<()> { +pub fn write_ts_interface(modules: &[Module], path_key: &str) -> Result<()> { let mut ts_out = header(); write_imports(&mut ts_out); render_module_map(modules, &mut ts_out); render_methods(modules, &mut ts_out); - if let Ok(path) = env::var("STRINGS_TS") { + if let Ok(path) = env::var(path_key) { let path = PathBuf::from(path); create_dir_all(path.parent().unwrap())?; write_file_if_changed(path, ts_out)?;