More ace changes and other

This commit is contained in:
dazedanon 2025-04-28 01:34:21 -05:00
parent 06106315ff
commit ceda9b5fbf
5 changed files with 506 additions and 86 deletions

View file

@ -63,7 +63,7 @@ THREADS = int(os.getenv("fileThreads"))
# [Display name, file extension, handle function] # [Display name, file extension, handle function]
MODULES = [ MODULES = [
["RPGMaker MV/MZ", ["json"], handleMVMZ], ["RPGMaker MV/MZ", ["json"], handleMVMZ],
["RPGMaker Plugins", ["js"], handlePlugin], ["RPGMaker Plugins", ["js", "rb"], handlePlugin],
["RPGMaker ACE", ["yaml"], handleACE], ["RPGMaker ACE", ["yaml"], handleACE],
["CSV (From Translator++)", ["csv"], handleCSV], ["CSV (From Translator++)", ["csv"], handleCSV],
["Eushully", ["txt"], handleEushully], ["Eushully", ["txt"], handleEushully],

View file

@ -8,6 +8,7 @@ import time
import traceback import traceback
import tiktoken import tiktoken
import openai import openai
import copy
from concurrent.futures import ThreadPoolExecutor, as_completed from concurrent.futures import ThreadPoolExecutor, as_completed
from pathlib import Path from pathlib import Path
from colorama import Fore from colorama import Fore
@ -82,9 +83,9 @@ POSITION = 0
LEAVE = False LEAVE = False
# Dialogue / Scroll / Choices (Main Codes) # Dialogue / Scroll / Choices (Main Codes)
CODE401 = True CODE401 = False
CODE405 = True CODE405 = False
CODE102 = True CODE102 = False
# Optional # Optional
CODE101 = False # Turn this one when names exist in 101 CODE101 = False # Turn this one when names exist in 101
@ -94,8 +95,8 @@ CODE408 = False # Warning, translates comments and can inflate costs.
CODE122 = False CODE122 = False
# Other # Other
CODE355655 = False CODE355655 = True
CODE357 = True CODE357 = False
CODE657 = False CODE657 = False
CODE356 = False CODE356 = False
CODE320 = False CODE320 = False
@ -271,6 +272,11 @@ def parseMap(data, filename):
with ThreadPoolExecutor(max_workers=THREADS) as executor: with ThreadPoolExecutor(max_workers=THREADS) as executor:
for key in events: for key in events:
if key is not None: if key is not None:
# This translates ID of events. (May break the game)
if "<namepop" in events[key]["name"]:
response = translateNoteOmitSpace(events[key], r"<namepop\s(.*?)\s?\d?>.*")
totalTokens[0] += response[0]
totalTokens[1] += response[1]
futures = [executor.submit(searchCodes, page, pbar, [], filename) for page in events[key]["pages"] if page is not None] futures = [executor.submit(searchCodes, page, pbar, [], filename) for page in events[key]["pages"] if page is not None]
for future in as_completed(futures): for future in as_completed(futures):
try: try:
@ -311,9 +317,10 @@ def translateNote(event, regex, wrap=True):
# Textwrap # Textwrap
if wrap: if wrap:
translatedText = textwrap.fill(translatedText, width=NOTEWIDTH) translatedText = textwrap.fill(translatedText, width=NOTEWIDTH)
translatedText = translatedText.replace("\n", "\\n") # translatedText = translatedText.replace("\n", "\\n")
translatedText = translatedText.replace('"', "") translatedText = translatedText.replace('"', "")
translatedText = translatedText.replace(' ', "_")
jaString = jaString.replace(initialJAString, translatedText) jaString = jaString.replace(initialJAString, translatedText)
event["note"] = jaString event["note"] = jaString
i += 1 i += 1
@ -324,7 +331,7 @@ def translateNote(event, regex, wrap=True):
# For notes that can't have spaces. # For notes that can't have spaces.
def translateNoteOmitSpace(event, regex): def translateNoteOmitSpace(event, regex):
# Regex that only matches text inside LB. # Regex that only matches text inside LB.
jaString = event["note"] jaString = event["name"]
match = re.findall(regex, jaString, re.DOTALL) match = re.findall(regex, jaString, re.DOTALL)
if match: if match:
@ -342,7 +349,7 @@ def translateNoteOmitSpace(event, regex):
translatedText = translatedText.replace('"', "") translatedText = translatedText.replace('"', "")
translatedText = translatedText.replace(" ", "_") translatedText = translatedText.replace(" ", "_")
event["note"] = event["note"].replace(oldJAString, translatedText) event["name"] = event["name"].replace(oldJAString, translatedText)
return response[1] return response[1]
return [0, 0] return [0, 0]
@ -654,6 +661,10 @@ def searchNames(data, pbar, context):
tokensResponse = translateNote(data[i], r"ADTs?:(.+?)>") tokensResponse = translateNote(data[i], r"ADTs?:(.+?)>")
totalTokens[0] += tokensResponse[0] totalTokens[0] += tokensResponse[0]
totalTokens[1] += tokensResponse[1] totalTokens[1] += tokensResponse[1]
if "=前提スキル" in data[i]["note"]:
tokensResponse = translateNote(data[i], r"<習得ヘルプ=前提スキル:(.+?)>")
totalTokens[0] += tokensResponse[0]
totalTokens[1] += tokensResponse[1]
i += 1 i += 1
else: else:
@ -763,7 +774,7 @@ def searchNames(data, pbar, context):
translatedNameBatch.pop(0) translatedNameBatch.pop(0)
if "description" in data[j] and data[j]["description"] != "": if "description" in data[j] and data[j]["description"] != "":
translatedText = textwrap.fill(translatedDescriptionBatch[0], LISTWIDTH) translatedText = textwrap.fill(translatedDescriptionBatch[0], LISTWIDTH)
translatedText = translatedText.replace("\n", "\\n") # translatedText = translatedText.replace("\n", "\\n")
data[j]["description"] = translatedText data[j]["description"] = translatedText
translatedDescriptionBatch.pop(0) translatedDescriptionBatch.pop(0)
@ -941,6 +952,10 @@ def searchCodes(page, pbar, jobList, filename):
else: else:
speakerList = [speakerList[0][1]] speakerList = [speakerList[0][1]]
# Diamonds
if len(speakerList) == 0:
speakerList = re.findall(r"^◆(.*)", jaString)
# Colors # Colors
if len(speakerList) == 0: if len(speakerList) == 0:
speakerList = re.findall( speakerList = re.findall(
@ -1144,10 +1159,10 @@ def searchCodes(page, pbar, jobList, filename):
if FIXTEXTWRAP is True and "_ABL" in nametag: if FIXTEXTWRAP is True and "_ABL" in nametag:
translatedText = textwrap.fill(translatedText, width=100) translatedText = textwrap.fill(translatedText, width=100)
translatedText = translatedText.replace("\n", "\\n") # # translatedText = translatedText.replace("\n", "\\n")
elif FIXTEXTWRAP is True: elif FIXTEXTWRAP is True:
translatedText = textwrap.fill(translatedText, width=WIDTH) translatedText = textwrap.fill(translatedText, width=WIDTH)
translatedText = translatedText.replace("\n", "\\n") # # translatedText = translatedText.replace("\n", "\\n")
# BR Flag # BR Flag
if BRFLAG is True: if BRFLAG is True:
@ -1178,19 +1193,42 @@ def searchCodes(page, pbar, jobList, filename):
translatedText = translatedText + endtag translatedText = translatedText + endtag
endtag = "" endtag = ""
# Set Data # Set Code
codeList[j]["p"] = [translatedText]
codeList[j]["c"] = code codeList[j]["c"] = code
# Handle 405
if codeList[j]["c"] == 405:
# 1. Split translatedText by newlines
lines = [line for line in translatedText.split('\n') if line.strip() != ""]
# 2. Set the first string to codeList[j]["p"]
codeList[j]["p"] = [lines[0]]
# 3. Make copies for each additional line and insert them
for idx, line in enumerate(lines[1:]):
new_item = copy.deepcopy(codeList[j])
new_item["p"] = [line]
codeList.insert(j + idx + 1, new_item)
# 4. Update syncIndex to the last modified/added position
syncIndex = j + len(lines)
# Handle 401
else:
codeList[j]["p"] = [translatedText]
codeList[j]["c"] = code
syncIndex = i + 1
# Reset
speaker = "" speaker = ""
match = [] match = []
currentGroup = [] currentGroup = []
syncIndex = i + 1
list401.pop(0) list401.pop(0)
## Event Code: 122 [Set Variables] ## Event Code: 122 [Set Variables]
if "c" in codeList[i] and codeList[i]["c"] == 122 and CODE122 is True: if "c" in codeList[i] and codeList[i]["c"] == 122 and CODE122 is True:
# This is going to be the var being set. (IMPORTANT) # This is going to be the var being set. (IMPORTANT)
if codeList[i]["p"][0] not in list(range(20, 150)): if codeList[i]["p"][0] not in list(range(0, 1500)):
i += 1 i += 1
continue continue
@ -1237,16 +1275,16 @@ def searchCodes(page, pbar, jobList, filename):
translatedText = jaString.replace(jaString, translatedText) translatedText = jaString.replace(jaString, translatedText)
# Remove characters that may break scripts # Remove characters that may break scripts
charList = ['"', "\\n"] charList = ['"', "\\n", "'"]
for char in charList: for char in charList:
translatedText = translatedText.replace(char, "") translatedText = translatedText.replace(char, "")
# Textwrap # Textwrap
translatedText = textwrap.fill(translatedText, width=WIDTH) translatedText = textwrap.fill(translatedText, width=WIDTH)
translatedText = translatedText.replace("\n", "\\n") # translatedText = translatedText.replace("\n", "\\n")
# Set # Set
codeList[i]["p"][4] = f"`{translatedText}`" codeList[i]["p"][4] = f'"{translatedText}"'
list122.pop(0) list122.pop(0)
## Event Code: 357 [Picture Text] [Optional] ## Event Code: 357 [Picture Text] [Optional]
@ -1295,7 +1333,7 @@ def searchCodes(page, pbar, jobList, filename):
# Textwrap # Textwrap
# translatedText = textwrap.fill(translatedText, 80) # translatedText = textwrap.fill(translatedText, 80)
# translatedText = translatedText.replace("\n", "\\n") # # translatedText = translatedText.replace("\n", "\\n")
# translatedText = re.sub(r"[\\]+c", r"\\\\c", translatedText) # translatedText = re.sub(r"[\\]+c", r"\\\\c", translatedText)
translatedText = re.sub(r"[\\]+\*item", r"\\\\*item", translatedText) translatedText = re.sub(r"[\\]+\*item", r"\\\\*item", translatedText)
@ -1344,7 +1382,7 @@ def searchCodes(page, pbar, jobList, filename):
# Textwrap & Set # Textwrap & Set
translatedText = textwrap.fill(translatedText, width=WIDTH) translatedText = textwrap.fill(translatedText, width=WIDTH)
translatedText = translatedText.replace("\n", "\\n") # translatedText = translatedText.replace("\n", "\\n")
codeList[i]["p"][3]["messageText"] = translatedText codeList[i]["p"][3]["messageText"] = translatedText
### Choices ### Choices
@ -1417,7 +1455,7 @@ def searchCodes(page, pbar, jobList, filename):
# Textwrap # Textwrap
translatedText = textwrap.fill(translatedText, width=WIDTH) translatedText = textwrap.fill(translatedText, width=WIDTH)
translatedText = translatedText.replace("\n", "\\n") # translatedText = translatedText.replace("\n", "\\n")
translatedText = startString + translatedText + endString translatedText = startString + translatedText + endString
# Set Data # Set Data
@ -1515,19 +1553,28 @@ def searchCodes(page, pbar, jobList, filename):
## Event Code: 355 or 655 Scripts [Optional] ## Event Code: 355 or 655 Scripts [Optional]
if "c" in codeList[i] and (codeList[i]["c"] == 355 or codeList[i]["c"] == 655) and CODE355655 is True: if "c" in codeList[i] and (codeList[i]["c"] == 355 or codeList[i]["c"] == 655) and CODE355655 is True:
jaString = codeList[i]["p"][0] jaString = codeList[i]["p"][0]
regexPatterns = [r'^"?([^=+_$]+[^")])"?\)?$']
# Iterate over the list of regex patterns if "テキスト-" in jaString:
for regex in regexPatterns: jaString = codeList[i]["p"][0]
regex = r"テキスト-(.+)"
# Check Exist
match = re.search(regex, jaString) match = re.search(regex, jaString)
if re.search(regex, jaString): if match:
if match.group(1) and match.group(1) != "\u3000": replaceString = match.group(1)
finalJAString = match.group(1) finalJAString = replaceString
# Remove Textwrap # Remove Textwrap
finalJAString = finalJAString.replace("\\n", " ") # finalJAString = finalJAString.replace("\n", " ")
# Remove Spaces
finalJAString = finalJAString.replace("\u3000", "")
finalJAString = finalJAString.strip()
# Final Set
if finalJAString:
# Pass 1 # Pass 1
if setData is False: if setData:
list355655.append(finalJAString) list355655.append(finalJAString)
# Pass 2 # Pass 2
@ -1535,14 +1582,228 @@ def searchCodes(page, pbar, jobList, filename):
# Grab and Replace # Grab and Replace
translatedText = list355655[0] translatedText = list355655[0]
translatedText = re.sub(r"(?<!\\)'", r"\\'", translatedText) translatedText = re.sub(r"(?<!\\)'", r"\\'", translatedText)
# Textwrap
# translatedText = textwrap.fill(translatedText, width=WIDTH)
# Set
codeList[i]["p"][0] = codeList[i]["p"][0].replace(replaceString, translatedText)
list355655.pop(0)
elif "logtxt = " in jaString:
jaString = codeList[i]["p"][0]
regex = r"logtxt\s=\s'(.+)'"
# Check Exist
match = re.search(regex, jaString)
if match:
replaceString = match.group(1)
finalJAString = replaceString
# Remove Textwrap
# finalJAString = finalJAString.replace("\n", " ")
# Remove Spaces
finalJAString = finalJAString.replace("\u3000", "")
finalJAString = finalJAString.strip()
# Final Set
if finalJAString:
# Pass 1
if setData:
list355655.append(finalJAString)
# Pass 2
else:
# Grab and Replace
translatedText = list355655[0]
translatedText = re.sub(r"(?<!\\)'", r"\\'", translatedText)
# Textwrap
# translatedText = textwrap.fill(translatedText, width=WIDTH)
# Set
codeList[i]["p"][0] = codeList[i]["p"][0].replace(replaceString, translatedText)
list355655.pop(0)
elif ".setNickname" in jaString:
jaString = codeList[i]["p"][0]
regex = r'.setNickname\(\\?"(.+?)\\?"\)'
# Check Exist
match = re.search(regex, jaString)
if match:
replaceString = match.group(1)
finalJAString = replaceString
# Remove Textwrap
# finalJAString = finalJAString.replace("\n", " ")
# Remove Spaces
finalJAString = finalJAString.replace("\u3000", "")
finalJAString = finalJAString.strip()
# Final Set
if finalJAString:
# Pass 1
if setData:
list355655.append(finalJAString)
# Pass 2
else:
# Grab and Replace
translatedText = list355655[0]
translatedText = re.sub(r"(?<!\\)'", r"\\'", translatedText)
# Textwrap
# translatedText = textwrap.fill(translatedText, width=WIDTH)
# Set
codeList[i]["p"][0] = codeList[i]["p"][0].replace(replaceString, translatedText)
list355655.pop(0)
elif "_subject=" in jaString:
jaString = codeList[i]["p"][0]
regex = r'_subject=(.+?)_'
# Check Exist
match = re.search(regex, jaString)
if match:
replaceString = match.group(1)
finalJAString = replaceString
# Remove Textwrap
# finalJAString = finalJAString.replace("\n", " ")
# Remove Spaces
finalJAString = finalJAString.replace("\u3000", "")
finalJAString = finalJAString.strip()
# Final Set
if finalJAString:
# Pass 1
if setData:
list355655.append(finalJAString)
# Pass 2
else:
# Grab and Replace
translatedText = list355655[0]
translatedText = re.sub(r"(?<!\\)'", r"\\'", translatedText)
# Textwrap
# translatedText = textwrap.fill(translatedText, width=WIDTH)
# Set
codeList[i]["p"][0] = codeList[i]["p"][0].replace(replaceString, translatedText)
list355655.pop(0)
elif "\")" in jaString:
jaString = codeList[i]["p"][0]
regex = r'^([^(]+)"\)$'
# Check Exist
match = re.search(regex, jaString)
if match:
replaceString = match.group(1)
finalJAString = replaceString
# Remove Textwrap
# finalJAString = finalJAString.replace("\n", " ")
# Remove Spaces
finalJAString = finalJAString.replace("\u3000", "")
finalJAString = finalJAString.strip()
# Final Set
if finalJAString:
# Pass 1
if not setData:
list355655.append(finalJAString)
# Pass 2
else:
# Grab and Replace
translatedText = list355655[0]
translatedText = re.sub(r"(?<!\\)'", r"\\'", translatedText)
# Textwrap
# translatedText = textwrap.fill(translatedText, width=WIDTH)
# Set
codeList[i]["p"][0] = codeList[i]["p"][0].replace(replaceString, translatedText)
list355655.pop(0)
# elif "$game_variables" in jaString:
# jaString = codeList[i]["p"][0]
# regex = r'^\$game_variables\[\d+\]\s=\s"(.+)"'
# # Check Exist
# match = re.search(regex, jaString)
# if match:
# replaceString = match.group(1)
# finalJAString = replaceString
# # Remove Textwrap
# # finalJAString = finalJAString.replace("\n", " ")
# # Remove Spaces
# finalJAString = finalJAString.replace("\u3000", "")
# finalJAString = finalJAString.strip()
# # Final Set
# if finalJAString:
# # Pass 1
# if not setData:
# list355655.append(finalJAString)
# # Pass 2
# else:
# # Grab and Replace
# translatedText = list355655[0]
# translatedText = re.sub(r"(?<!\\)'", r"\\'", translatedText)
# # Textwrap
# # translatedText = textwrap.fill(translatedText, width=WIDTH)
# # Set
# codeList[i]["p"][0] = codeList[i]["p"][0].replace(replaceString, translatedText)
# list355655.pop(0)
elif "text =" in jaString:
jaString = codeList[i]["p"][0]
regex = r'text\s=\s"(.+)"'
# Check Exist
match = re.search(regex, jaString)
if match:
replaceString = match.group(1)
finalJAString = replaceString
# Remove Textwrap
# finalJAString = finalJAString.replace("\n", " ")
# Remove Spaces
finalJAString = finalJAString.replace("\u3000", "")
finalJAString = finalJAString.strip()
# Final Set
if finalJAString:
# Pass 1
if not setData:
list355655.append(finalJAString)
# Pass 2
else:
# Grab and Replace
translatedText = list355655[0]
translatedText = re.sub(r'(?<!\\)"', r'\\"', translatedText) translatedText = re.sub(r'(?<!\\)"', r'\\"', translatedText)
# Textwrap # Textwrap
translatedText = textwrap.fill(translatedText, width=WIDTH) # translatedText = textwrap.fill(translatedText, width=WIDTH)
translatedText = translatedText.replace("\n", "\\n")
# Set # Set
codeList[i]["p"][0] = codeList[i]["p"][0].replace(finalJAString, translatedText) codeList[i]["p"][0] = codeList[i]["p"][0].replace(replaceString, translatedText)
list355655.pop(0) list355655.pop(0)
## Event Code: 408 (Script) ## Event Code: 408 (Script)
@ -1587,7 +1848,7 @@ def searchCodes(page, pbar, jobList, filename):
# Textwrap # Textwrap
translatedText = textwrap.fill(translatedText, width=WIDTH) translatedText = textwrap.fill(translatedText, width=WIDTH)
translatedText = translatedText.replace("\n", "\\n") # translatedText = translatedText.replace("\n", "\\n")
# Set Data # Set Data
codeList[i]["p"][0] = translatedText codeList[i]["p"][0] = translatedText
@ -1610,6 +1871,8 @@ def searchCodes(page, pbar, jobList, filename):
regex = r"event_text\s*:\s*(.*)" regex = r"event_text\s*:\s*(.*)"
elif "拡張選択肢" in jaString: elif "拡張選択肢" in jaString:
regex = r"拡張選択肢.+?\[(.+)" regex = r"拡張選択肢.+?\[(.+)"
elif "namepop" in jaString:
regex = r"<namepop(.+)>"
else: else:
i += 1 i += 1
continue continue
@ -1639,7 +1902,7 @@ def searchCodes(page, pbar, jobList, filename):
# Textwrap # Textwrap
# if codeList[i + 1]["c"] == 408: # if codeList[i + 1]["c"] == 408:
# translatedText = textwrap.fill(translatedText, WIDTH) # translatedText = textwrap.fill(translatedText, WIDTH)
# translatedText = translatedText.replace("\n", "\\n") # # translatedText = translatedText.replace("\n", "\\n")
# Remove characters that may break scripts # Remove characters that may break scripts
charList = ['"'] charList = ['"']
@ -1647,6 +1910,12 @@ def searchCodes(page, pbar, jobList, filename):
translatedText = translatedText.replace(char, "") translatedText = translatedText.replace(char, "")
translatedText = translatedText.replace('"', '"') translatedText = translatedText.replace('"', '"')
# translatedText = translatedText.replace(" ", "_") # translatedText = translatedText.replace(" ", "_")
# Namepop
if "namepop" in jaString:
translatedText = translatedText.replace(" ", "_")
# Replace Original String
translatedText = jaString.replace(match.group(1), translatedText) translatedText = jaString.replace(match.group(1), translatedText)
# Add > # Add >
@ -1793,7 +2062,7 @@ def searchCodes(page, pbar, jobList, filename):
# Textwrap & Replace Whitespace # Textwrap & Replace Whitespace
translatedText = textwrap.fill(translatedText, width=WIDTH) translatedText = textwrap.fill(translatedText, width=WIDTH)
translatedText = translatedText.replace("\n", "\\n") # translatedText = translatedText.replace("\n", "\\n")
translatedText = translatedText.replace(" ", "_") translatedText = translatedText.replace(" ", "_")
# Replace and Set # Replace and Set
@ -2248,7 +2517,7 @@ Translate 'Taroを倒した' as 'Taro was defeated!'",
# Textwrap # Textwrap
translatedText = descriptionResponse[0] translatedText = descriptionResponse[0]
translatedText = textwrap.fill(translatedText, width=LISTWIDTH) translatedText = textwrap.fill(translatedText, width=LISTWIDTH)
translatedText = translatedText.replace("\n", "\\n") # translatedText = translatedText.replace("\n", "\\n")
state["description"] = translatedText.replace('"', "") state["description"] = translatedText.replace('"', "")
if "message1" in state: if "message1" in state:
state["message1"] = message1Response[0].replace('"', "").replace("Taro", "") state["message1"] = message1Response[0].replace('"', "").replace("Taro", "")

View file

@ -8,6 +8,7 @@ import time
import traceback import traceback
import tiktoken import tiktoken
import openai import openai
import copy
from concurrent.futures import ThreadPoolExecutor, as_completed from concurrent.futures import ThreadPoolExecutor, as_completed
from pathlib import Path from pathlib import Path
from colorama import Fore from colorama import Fore
@ -1201,13 +1202,36 @@ def searchCodes(page, pbar, jobList, filename):
translatedText = translatedText + endtag translatedText = translatedText + endtag
endtag = "" endtag = ""
# Set Data # Set Code
codeList[j]["parameters"] = [translatedText]
codeList[j]["code"] = code codeList[j]["code"] = code
# Handle 405
if codeList[j]["code"] == 405:
# 1. Split translatedText by newlines
lines = [line for line in translatedText.split('\n') if line.strip() != ""]
# 2. Set the first string to codeList[j]["p"]
codeList[j]["parameters"] = [lines[0]]
# 3. Make copies for each additional line and insert them
for idx, line in enumerate(lines[1:]):
new_item = copy.deepcopy(codeList[j])
new_item["parameters"] = [line]
codeList.insert(j + idx + 1, new_item)
# 4. Update syncIndex to the last modified/added position
syncIndex = j + len(lines)
# Handle 401
else:
codeList[j]["parameters"] = [translatedText]
codeList[j]["code"] = code
syncIndex = i + 1
# Reset
speaker = "" speaker = ""
match = [] match = []
currentGroup = [] currentGroup = []
syncIndex = i + 1
list401.pop(0) list401.pop(0)
## Event Code: 122 [Set Variables] ## Event Code: 122 [Set Variables]
@ -1565,44 +1589,6 @@ def searchCodes(page, pbar, jobList, filename):
codeList[i]["parameters"][0] = codeList[i]["parameters"][0].replace(replaceString, translatedText) codeList[i]["parameters"][0] = codeList[i]["parameters"][0].replace(replaceString, translatedText)
list355655.pop(0) list355655.pop(0)
# Grab Next Instead if Text
elif "テキスト" in jaString:
i += 1
jaString = codeList[i]["parameters"][0]
# Regex
regex = r'setValue\(\d+,[\\]?"([^_]+)"'
match = re.search(regex, jaString)
if match:
replaceString = match.group(1)
finalJAString = replaceString
# Remove Textwrap
# finalJAString = finalJAString.replace("\n", " ")
# Remove Spaces
finalJAString = finalJAString.replace("\u3000", "")
finalJAString = finalJAString.strip()
# Pass 1
if finalJAString:
if setData:
list355655.append(finalJAString)
# Pass 2
else:
# Grab and Replace
translatedText = list355655[0]
translatedText = re.sub(r"(?<!\\)'", r"\\'", translatedText)
# Textwrap
# translatedText = textwrap.fill(translatedText, width=WIDTH)
# Set
codeList[i]["parameters"][0] = codeList[i]["parameters"][0].replace(replaceString, translatedText)
list355655.pop(0)
elif "logtxt = " in jaString: elif "logtxt = " in jaString:
jaString = codeList[i]["parameters"][0] jaString = codeList[i]["parameters"][0]
regex = r"logtxt\s=\s'(.+)'" regex = r"logtxt\s=\s'(.+)'"
@ -2609,6 +2595,8 @@ def cleanTranslatedText(translatedText):
"this guy": "this bastard", "this guy": "this bastard",
"This guy": "This bastard", "This guy": "This bastard",
"Placeholder Text": "", "Placeholder Text": "",
"```json": "",
"```": "",
# Add more replacements as needed # Add more replacements as needed
} }
for target, replacement in placeholders.items(): for target, replacement in placeholders.items():

View file

@ -207,7 +207,7 @@ def translatePlugin(data, pbar, filename, translatedList):
colorCode = r"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\C" colorCode = r"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\C"
# Custom # Custom
regex = r'"description":\s"(.+?)",?$' regex = r'=\s\[".+?",\s"(.+)"\]'
matchList = re.findall(regex, data[i]) matchList = re.findall(regex, data[i])
if len(matchList) > 0: if len(matchList) > 0:
for match in matchList: for match in matchList:
@ -243,7 +243,7 @@ def translatePlugin(data, pbar, filename, translatedList):
translatedText = re.sub(r"([^\\'])\"", r"\1\\'", translatedText) translatedText = re.sub(r"([^\\'])\"", r"\1\\'", translatedText)
# Textwrap # Textwrap
# translatedText = textwrap.fill(translatedText, WIDTH) translatedText = textwrap.fill(translatedText, WIDTH)
# Replace \n and \c # Replace \n and \c
translatedText = re.sub(r"\\+n", re.escape(newline), translatedText) translatedText = re.sub(r"\\+n", re.escape(newline), translatedText)

173
vocab.txt
View file

@ -1,7 +1,153 @@
Here are some vocabulary and terms so that you know the proper spelling and translation. Here are some vocabulary and terms so that you know the proper spelling and translation.
``` ```
# Game Characters # Game Characters
愛里沙 (Arisa) - Female ネイビス (Neibis) - Male
ビダール (Bidal) - Male
エルニン (Elnin) - Female
メマ (Mema) - Female
教皇 (Pope) - Female
ボルカヌス (Volcanus) - Male
トリスリタン (Trisritan) - Female
ノビッサ (Novissa) - Male
ルー (Rue) - Female
エルニン (Elnin) - Female
ギロ (Giro) - Female
クスミ (Kusumi) - Female
パラコーン (Paracon) - Female
チヤ (Chiya) - Female
コアンタ (Koanta) - Female
ハイプリ神官長 (High Priest Haipri) - Female
メマ (Mema) - Female
ハノン (Hanon) - Female
ミッシェル (Michelle) - Female
エクスキューショナー (Executioner) - Female
オーガトゥース (Ogretooth) - Female
ミステルテイン (Misteltein) - Female
シャシー (Shashi) - Female
ルセーダ (Luceda) - Female
プリン (Purin) - Female
アンベル (Amber) - Female
アンカープ (Anchorp) - Female
ヨルク (Yoruku) - Female
ハーター (Harter) - Female
コキューン (Cocoon) - Male
ビルドルフ - Male
ゼロジー (Zero-G) - Male
ベルマ (Belma) - Male
ヴォルゼブ (Volzeb) - Male
# Enemies (Mostly Female)
透明君 (Transparent-kun)
ゼリン (Zerin)
ミリア (Milia)
マヤ (Maya)
ミステルテイン (Misteltein)
怪しい二人組 (Suspicious Duo)
ガレオン (Galion)
グリフォン (Griffon)
キッスプラント (Kiss Plant)
ゴーレム (Golem)
所属不明(ゴーグル) (Unknown Affiliation (Goggles))
所属不明(マスク) (Unknown Affiliation (Mask))
憲兵 (Military Police)
トニオ (Tonio)
ロベルタ (Roberta)
アモーレ (Amore)
ビタラ (Vitata)
軍隊砂漠蟻 (Desert Army Ant)
盗賊 (Thief)
鳥人間(槍) (Birdman (Spear))
鳥人間 (Birdman)
ガーツ (Gartz)
アイスアー (Ice Arrow)
フリーズゴーレム (Freeze Golem)
ハーティー (Harty)
トリスリタン (Trisritan)
ハノン (Hanon)
マグゼリン (Magzellin)
バーストリアー (Burstrier)
インプ (Imp)
フェーニ (Feny)
トールドラゴン (Thor Dragon)
イフリート (Ifrit)
ターゼリン (Tazerin)
ハーパキャット (Harpercat)
ヨヨ (Yoyo)
野良ガーディアン (Stray Guardian)
グルームの牙 (Groom's Fang)
ハプリコーン (Harpricorn)
聖十字隊 (Holy Cross Squad)
フレイア教徒 (Freya Cultist)
プリースト (Priest)
フレイア神官 (Freya Priest)
チヤ (Chiya)
コアンタ (Koanta)
パラコーン (Paracon)
ムラタン (Muratan)
コアハンター (Core Hunter)
イヴ (Eve)
レタ (Leta)
ダークレタ (Dark Leta)
ババヤン (Babayan)
沼の魔女 (Swamp Witch)
マヴィチャ (Mavicha)
ビヨンド (Beyond)
セイバーガーディアン (Saber Guardian)
アーチャーガーディアン (Archer Guardian)
エクスキューショナー (Executioner)
オーガトゥース (Orgatous)
ギロ (Giro)
ドイレン=ベッシェ (Doiren=Besshe)
エレメェス=ショーサ (Eremees=Shosa)
ローレンス=ランブル (Lawrence=Rumble)
グレムリン (Gremlin)
ドゲザエ (Dogezae)
心を失った者 (The Heartless)
エキューオ (Equio)
エルニン (Elnin)
グルームの夜 (Gloom's Night)
ラギッドグール (Ragged Ghoul)
デスプードル (Death Poodle)
グールデストロイ (Ghoul Destroyer)
ヴァンシィ (Banshee)
ネクロマンサー (Necromancer)
ヘルチョンチョニ (Hell Chonchoni)
羽蟲の魔物 (Winged Insect Monster)
堕ちた大神官フィーヴァム (Fallen High Priest Fivam)
ヴィージヨ (Vijyo)
ヴェルセブブ (Versebub)
親衛隊トニオ (Royal Guard Tonio)
親衛隊ロベルタ (Royal Guard Roberta)
親衛隊アモーレ (Royal Guard Amore)
女王親衛隊 (Queen's Royal Guard)
マヤゴールド (Mayagold)
クィーンハーピー (Queen Harpy)
イクリプス (Eclipse)
マスクドフレイア (Masked Freya)
クルトラナッソス (Cultranassus)
サイドワインダー (Sidewinder)
マーリン (Merlin)
トレント=イニー (Trent=Inny)
アストロス (Astros)
タンクウガ (Tankuga)
ヴィーゴニク (Vigonik)
スラムのゴロツキ (Slum Thug)
スライム娘 (Slime Girl)
ジェネラルマーメイド (General Mermaid)
ヴァルキリー (Valkyrie)
防衛装置 (Defense Device)
ヘルヴァンシー (Helvancy)
マーガレット=ソニア (Margaret=Sonia)
ガーディアン改修型 (Modified Guardian)
イグゼニム (Igzenim)
アビスガード (Abyss Guard)
ルカ=ドッペル (Luca=Doppel)
シグルドリーヴァ (Sigurdrieva)
オニール (O'Neill)
訓練兵たち (Trainees)
没オニール (Dead O'Neill)
没オニール使う枠 (Dead O'Neill Slot)
聖十字隊副隊長 (Holy Cross Squad Vice-Captain)
# Lewd Terms # Lewd Terms
マンコ (pussy) マンコ (pussy)
@ -44,6 +190,8 @@ Here are some vocabulary and terms so that you know the proper spelling and tran
舐めた (Lick) 舐めた (Lick)
舐められ (Licked By) 舐められ (Licked By)
衣装ごとの性行為回数 (Sex Acts per Outfit) 衣装ごとの性行為回数 (Sex Acts per Outfit)
回 (x)
人 (x)
# Honorifics # Honorifics
さん (san) さん (san)
@ -92,8 +240,7 @@ ME 音量 (ME Volume)
破滅 (Destruction) 破滅 (Destruction)
魂 (Soul) 魂 (Soul)
巫女 (Shrine Maiden) 巫女 (Shrine Maiden)
回 (x) 刀 (Sword)
人 (x)
# Demons/Angels/Monsters # Demons/Angels/Monsters
悪魔 (Devil) 悪魔 (Devil)
@ -117,6 +264,7 @@ ME 音量 (ME Volume)
妖怪 (Yokai) 妖怪 (Yokai)
式神 (Shikigami) 式神 (Shikigami)
幽霊 (Ghost) 幽霊 (Ghost)
幽鬼 (Revenant)
デーモン (Daemon) デーモン (Daemon)
ローバー (Roper) ローバー (Roper)
@ -127,6 +275,21 @@ w ((lol))
』 (』) 』 (』)
# Game Specific # Game Specific
エロザウルス (Erozaurus) フレイア大神殿 (Freya Grand Temple)
スードリ草原 (Sudri Grasslands)
ポルナトル渓谷 (Polnator Valley)
ホテル・ドラゴンエンペラー (Hotel Dragon Emperor)
バレルゼン路地裏 (Barrelzen Back Alley)
ビルドルフの部屋 (Bildolf's Room)
ベインスゥ・酒場 (Veins Tavern)
ムジョルニア火山01 (Mujornia Volcano 01)
ラ・フェール歓楽街 (Ra Feele Pleasure District)
ジェマの部屋 (Jema's Room)
ベルマの研究室 (Belma's Laboratory)
エユタヤー (Eyutaya)
ヴォルゼブの部屋 (Wolfchev's Room)
モスフィア島 (Mosfia Island)
バー・止まり木 (Bar・Perch)
バー・スクサマッド (Bar・Sukusamadd)
ラフェルムーン (Rafel Moon)
``` ```