From 1cbcd244cbfc9cd4d32bed80f9e2754b2a74bb69 Mon Sep 17 00:00:00 2001 From: llama Date: Wed, 24 Sep 2025 23:33:50 +0800 Subject: [PATCH] add support for `launcher` rustcfg to trim translations --- rslib/i18n/build.rs | 16 +++++++++++++--- rslib/i18n/src/generated.rs | 4 ++++ rslib/i18n/write_strings.rs | 6 ++++-- 3 files changed, 21 insertions(+), 5 deletions(-) diff --git a/rslib/i18n/build.rs b/rslib/i18n/build.rs index 4baa6a709..8331ca9ec 100644 --- a/rslib/i18n/build.rs +++ b/rslib/i18n/build.rs @@ -23,10 +23,10 @@ use write_strings::write_strings; fn main() -> Result<()> { // generate our own requirements - let map = get_ftl_data(); + let mut map = get_ftl_data(); check(&map); - let modules = get_modules(&map); - write_strings(&map, &modules); + let mut modules = get_modules(&map); + write_strings(&map, &modules, "strings.rs"); typescript::write_ts_interface(&modules)?; python::write_py_interface(&modules)?; @@ -41,5 +41,15 @@ fn main() -> Result<()> { write_file_if_changed(path, meta_json)?; } } + + // allow passing in "--cfg launcher" for the launcher + println!("cargo::rustc-check-cfg=cfg(launcher)"); + + // generate strings for the launcher + map.iter_mut() + .for_each(|(_, modules)| modules.retain(|module, _| module == "launcher")); + modules.retain(|module| module.name == "launcher"); + write_strings(&map, &modules, "strings_launcher.rs"); + Ok(()) } diff --git a/rslib/i18n/src/generated.rs b/rslib/i18n/src/generated.rs index f3fa71ce8..e9985e4bb 100644 --- a/rslib/i18n/src/generated.rs +++ b/rslib/i18n/src/generated.rs @@ -5,4 +5,8 @@ #![allow(clippy::all)] +#[cfg(not(launcher))] include!(concat!(env!("OUT_DIR"), "/strings.rs")); + +#[cfg(launcher)] +include!(concat!(env!("OUT_DIR"), "/strings_launcher.rs")); diff --git a/rslib/i18n/write_strings.rs b/rslib/i18n/write_strings.rs index 33905d98f..04b0499a2 100644 --- a/rslib/i18n/write_strings.rs +++ b/rslib/i18n/write_strings.rs @@ -15,7 +15,7 @@ use crate::extract::VariableKind; use crate::gather::TranslationsByFile; use crate::gather::TranslationsByLang; -pub fn write_strings(map: &TranslationsByLang, modules: &[Module]) { +pub fn write_strings(map: &TranslationsByLang, modules: &[Module], out_fn: &str) { let mut buf = String::new(); // lang->module map @@ -28,14 +28,16 @@ pub fn write_strings(map: &TranslationsByLang, modules: &[Module]) { write_methods(modules, &mut buf); let dir = PathBuf::from(std::env::var("OUT_DIR").unwrap()); - let path = dir.join("strings.rs"); + let path = dir.join(out_fn); fs::write(path, buf).unwrap(); } fn write_methods(modules: &[Module], buf: &mut String) { buf.push_str( r#" +#[allow(unused_imports)] use crate::{I18n,Number}; +#[allow(unused_imports)] use fluent::{FluentValue, FluentArgs}; use std::borrow::Cow;