From 973b3322a9f212586f924fe736d2d52c71f84579 Mon Sep 17 00:00:00 2001 From: dazedanon Date: Wed, 4 Mar 2026 23:55:45 -0600 Subject: [PATCH] substring check --- modules/rpgmakermvmz.py | 4 ++-- util/translation.py | 27 +++++++++++++++++++++++++-- 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/modules/rpgmakermvmz.py b/modules/rpgmakermvmz.py index 1ff4cee..3e45360 100644 --- a/modules/rpgmakermvmz.py +++ b/modules/rpgmakermvmz.py @@ -2536,7 +2536,7 @@ def searchCodes(page, pbar, jobList, filename): # Patterns: (regex, multiline) - multiline=True means it spans 355 + following 655 codes patterns = { - # "テキスト-": (r"テキスト-(.+)", False), + "テキスト-": (r"テキスト-(.+)", False), # "=": (r'=\s?(.*)",', False), # "var text": (r"var\stext\d+\s=\s\"(.+)\"", False), # "logtxt = ": (r"logtxt\s=\s'(.+)'", False), @@ -2554,7 +2554,7 @@ def searchCodes(page, pbar, jobList, filename): # "this.Menu_SexTxtSet(": (r'"(.+)"', True), # "Rn_RsltTxtArr": (r'"(.+)"', True), # "_章切り替えStart": (r'_章切り替えStart\(\s*\\?"\s?,?.+?\\?"\s?,?\s?\\?"(.+?)\\?"', False), - "SkillLogAdd": (r'SkillLogAdd\((?:.+?\+\s*)?\\?"(?:\\\\+[A-Za-z]\[\d+\])?(.+?)\\?"', False), + # "SkillLogAdd": (r'SkillLogAdd\((?:.+?\+\s*)?\\?"(?:\\\\+[A-Za-z]\[\d+\])?(.+?)\\?"', False), # "MobNameSet": (r'MobNameSet\(\\?"(.+?)\\?"\)', False), # "AddAddress": (r'AddAddress\(\d+,\s*\\?"(.+?)\\?"', False), diff --git a/util/translation.py b/util/translation.py index 803a30e..23a815e 100644 --- a/util/translation.py +++ b/util/translation.py @@ -574,6 +574,29 @@ def parseVocabWithCategories(vocabText): return pairs +def _japanese_term_in_text(term, text): + """ + Check if a Japanese term appears in text as a standalone word, not as a + substring of a longer run of the same script (katakana/hiragana/kanji). + E.g. 'キス' will NOT match inside 'テキスト' because both neighbours are katakana. + Falls back to plain substring check for non-Japanese or mixed terms. + """ + if term not in text: + return False + KATAKANA = r'ァ-ヴーヲ-゚' + HIRAGANA = r'ぁ-ゔ' + KANJI = r'一-龠' + if re.search(rf'[{KATAKANA}]', term) and not re.search(rf'[{HIRAGANA}{KANJI}]', term): + pattern = rf'(?