From 903747071d919ec9688f23d6557b237f7177cc44 Mon Sep 17 00:00:00 2001 From: lifegpc Date: Fri, 26 Sep 2025 13:24:29 +0800 Subject: [PATCH] Add new options for scn script to disable chat message multiple language support --- src/args.rs | 4 ++++ src/main.rs | 2 ++ src/scripts/kirikiri/scn.rs | 14 ++++++++++++-- src/types.rs | 5 +++++ 4 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/args.rs b/src/args.rs index 007c4b7..b7d6677 100644 --- a/src/args.rs +++ b/src/args.rs @@ -233,6 +233,10 @@ pub struct Arg { /// Whether to handle title in Kirikiri SCN script. pub kirikiri_title: bool, #[cfg(feature = "kirikiri")] + #[arg(long, global = true, action = ArgAction::SetTrue, visible_alias = "kr-chat-no-multilang")] + /// Disable multi-language support for Kirikiri chat messages. (for Kirikiri SCN script.) + pub kirikiri_chat_no_multilang: bool, + #[cfg(feature = "kirikiri")] #[arg(long, global = true, action = ArgAction::SetTrue, visible_alias = "kr-no-empty-lines", visible_alias = "kirikiri-no-empty-lines")] /// Remove empty lines in Kirikiri KS script. pub kirikiri_remove_empty_lines: bool, diff --git a/src/main.rs b/src/main.rs index 166ecd5..faaf7ac 100644 --- a/src/main.rs +++ b/src/main.rs @@ -2736,6 +2736,8 @@ fn main() { pgd_fake_compress: !arg.pgd_compress, #[cfg(feature = "softpal")] softpal_add_message_index: arg.softpal_add_message_index, + #[cfg(feature = "kirikiri")] + kirikiri_chat_multilang: !arg.kirikiri_chat_no_multilang, }); match &arg.command { args::Command::Export { input, output } => { diff --git a/src/scripts/kirikiri/scn.rs b/src/scripts/kirikiri/scn.rs index 4d7efe9..d89f905 100644 --- a/src/scripts/kirikiri/scn.rs +++ b/src/scripts/kirikiri/scn.rs @@ -117,6 +117,7 @@ pub struct ScnScript { chat_json: Option>>, custom_yaml: bool, title: bool, + chat_multilang: bool, } impl ScnScript { @@ -154,6 +155,7 @@ impl ScnScript { chat_json: config.kirikiri_chat_json.clone(), custom_yaml: config.custom_yaml, title: config.kirikiri_title, + chat_multilang: config.kirikiri_chat_multilang, }) } } @@ -214,7 +216,11 @@ impl Script for ScnScript { let mut comu = if self.export_chat { Some(ExportMes::new( self.chat_key.clone().unwrap_or("comumode".to_string()), - language.clone(), + if self.chat_multilang { + language.clone() + } else { + None + }, )) } else { None @@ -441,7 +447,11 @@ impl Script for ScnScript { json, replacement, self.chat_key.clone().unwrap_or("comumode".to_string()), - language.clone(), + if self.chat_multilang { + language.clone() + } else { + None + }, ) }); for (i, scene) in scenes.members_mut().enumerate() { diff --git a/src/types.rs b/src/types.rs index cf35343..d7b8333 100644 --- a/src/types.rs +++ b/src/types.rs @@ -465,6 +465,11 @@ pub struct ExtraConfig { #[cfg(feature = "softpal")] /// Whether to add message index to Softpal src script when exporting. pub softpal_add_message_index: bool, + #[cfg(feature = "kirikiri")] + #[default(true)] + /// Enable multi-language support for Kirikiri chat messages. Default is true. + /// Note: This requires [Self::kirikiri_language_index] and [Self::kirikiri_languages] to be set correctly. + pub kirikiri_chat_multilang: bool, } #[derive(Clone, Copy, Debug, ValueEnum, PartialEq, Eq, PartialOrd, Ord)]