codegen i18n ts for launcher

This commit is contained in:
llama 2025-10-14 09:14:27 +08:00
parent 3b3dce1105
commit 8c6607ff2a
No known key found for this signature in database
GPG key ID: 0B7543854B9413C3
4 changed files with 7 additions and 3 deletions

View file

@ -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 }

View file

@ -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",

View file

@ -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(())
}

View file

@ -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)?;