mirror of
https://github.com/pagefaultgames/pokerogue.git
synced 2025-07-05 16:02:20 +02:00
added generator script in case of future need
This commit is contained in:
parent
74fa79c8b0
commit
78aab4d356
227
src/locales/fusion-affixes-generator.py
Normal file
227
src/locales/fusion-affixes-generator.py
Normal file
@ -0,0 +1,227 @@
|
||||
#This script produces the list of affixes (prefix and suffix) used to create the fusion names.
|
||||
# Run it from the folder in which the pokemon.ts file is located, ex. "src\locales\de\"
|
||||
# If the language doesn't use roman characters but uses an alphabet, it's possible to include the vowel/consonant characters to the script and use it's functionalities
|
||||
# For ideographic languages, a different approach is needed. For now, the "universal-fusion-affixes-generator" is how I made it work (found at the bottom)
|
||||
# The zh affixes have all been manually fixed so replace it with care. In case a new zh file is needed, prefixes and suffixes also need to be swapped due to differences in syntax. For that, use the very last script
|
||||
|
||||
import re
|
||||
import unicodedata
|
||||
|
||||
# Function to check if a word is in the extended Latin alphabet
|
||||
def is_latin(word):
|
||||
for char in word:
|
||||
# Get the Unicode code point of the character
|
||||
code_point = ord(char)
|
||||
# Check if the code point is in the range of the Latin Alphabet or Special Characters (for nidoran male and female symbols)
|
||||
# This was meant to integrate another script that could behave differently for non Latin languages. Not implemented
|
||||
if not (0x0020 <= code_point <= 0x02AF or 0x2600 <= code_point <= 0x26FF):
|
||||
return False
|
||||
return True
|
||||
|
||||
#Compare Name Prefixes (to first consonant)
|
||||
def find_prefixes(word_list):
|
||||
result = []
|
||||
for word in word_list:
|
||||
prefix = ""
|
||||
for other_word in word_list:
|
||||
if word != other_word:
|
||||
temp_prefix = ""
|
||||
for w, o in zip(word, other_word):
|
||||
if w == o:
|
||||
temp_prefix += w
|
||||
else:
|
||||
break
|
||||
if len(temp_prefix) > len(prefix):
|
||||
prefix = temp_prefix
|
||||
# Find the first consonant after the prefix
|
||||
suffix = ""
|
||||
for i, char in enumerate(word[len(prefix):]):
|
||||
suffix += char
|
||||
if char.lower() in "bcdfghjklmnpqrstvwxzçßñ":
|
||||
# Check if the next character is a hyphen
|
||||
if i+1 < len(word[len(prefix):]) and word[len(prefix)+i+1] == '-':
|
||||
suffix += '-'
|
||||
break
|
||||
result.append(prefix + suffix)
|
||||
return result
|
||||
|
||||
#Compare Name Suffixes (to vowel)
|
||||
def find_suffixes(pokemon_name):
|
||||
result = []
|
||||
for word in pokemon_name:
|
||||
suffix = ""
|
||||
for other_word in pokemon_name:
|
||||
if word != other_word:
|
||||
temp_suffix = ""
|
||||
for w, o in zip(word[::-1], other_word[::-1]):
|
||||
if w == o:
|
||||
temp_suffix = w + temp_suffix
|
||||
else:
|
||||
break
|
||||
if len(temp_suffix) > len(suffix):
|
||||
suffix = temp_suffix
|
||||
# Find the first vowel before the suffix
|
||||
prefix = ""
|
||||
for i, char in enumerate(word[len(word)-len(suffix)-1::-1]):
|
||||
prefix = char + prefix
|
||||
if char.lower() in "aeiouyáééíóúàèìòùâêîôûäëïöüãẽĩõũæœøýỳÿŷỹ":
|
||||
# Check if the next character is a hyphen
|
||||
if i+1 < len(word) and word[len(word)-len(suffix)-i-2] == '-':
|
||||
prefix = '-' + prefix
|
||||
break
|
||||
# Make sure the first character is lowercase
|
||||
output = (prefix + suffix)
|
||||
output = output[0].lower() + output[1:]
|
||||
result.append(output)
|
||||
return result
|
||||
|
||||
def generate_pokemon(file_path):
|
||||
with open(file_path, 'r', encoding='utf-8') as file: # Specify the encoding here
|
||||
lines = file.readlines()
|
||||
|
||||
pokemon = {}
|
||||
pattern = r'\"(.*?)\"'
|
||||
|
||||
for line in lines:
|
||||
matches = re.findall(pattern, line)
|
||||
if matches and ':' in line:
|
||||
# Keep the key and value from the input
|
||||
key = matches[0]
|
||||
value = matches[1]
|
||||
pokemon[key] = value
|
||||
|
||||
return pokemon
|
||||
|
||||
def combine_scripts(file_path):
|
||||
pokemon_dict = generate_pokemon(file_path)
|
||||
|
||||
prefixes = find_prefixes(list(pokemon_dict.values()))
|
||||
suffixes = find_suffixes(list(pokemon_dict.values()))
|
||||
|
||||
output = "import { FusionTranslationEntries } from \"#app/interfaces/locales\";\n\n"
|
||||
output += "export const fusionAffixes: FusionTranslationEntries = {\n"
|
||||
|
||||
for word, prefix, suffix in zip(pokemon_dict.keys(), prefixes, suffixes):
|
||||
output += f" {word}: {{\n"
|
||||
output += f" fusionPrefix: \"{prefix}\",\n"
|
||||
output += f" fusionSuffix: \"{suffix}\",\n"
|
||||
output += " },\n"
|
||||
|
||||
output += "} as const;"
|
||||
|
||||
# Write the output to a file
|
||||
with open('pokemon-fusion-affixes.ts', 'w', encoding='utf-8') as file: # Specify the encoding here
|
||||
file.write(output)
|
||||
|
||||
print ("pokemon-fusion-affixes.ts created")
|
||||
|
||||
# Specify the path to your file
|
||||
file_path = r"pokemon.ts"
|
||||
|
||||
# Call the combined function
|
||||
combine_scripts(file_path)
|
||||
|
||||
#universal-fusion-affixes-generator
|
||||
""""import re
|
||||
|
||||
def find_prefixes(word_list):
|
||||
result = []
|
||||
for word in word_list:
|
||||
prefix = ""
|
||||
for other_word in word_list:
|
||||
if word != other_word:
|
||||
temp_prefix = ""
|
||||
for w, o in zip(word, other_word):
|
||||
if w == o:
|
||||
temp_prefix += w
|
||||
else:
|
||||
break
|
||||
if len(temp_prefix) > len(prefix):
|
||||
prefix = temp_prefix
|
||||
if len(prefix) < len(word):
|
||||
result.append(prefix + word[len(prefix)])
|
||||
else:
|
||||
result.append(prefix)
|
||||
return result
|
||||
|
||||
def find_suffixes(word_list):
|
||||
result = []
|
||||
for word in word_list:
|
||||
suffix = ""
|
||||
for other_word in word_list:
|
||||
if word != other_word:
|
||||
temp_suffix = ""
|
||||
for w, o in zip(word[::-1], other_word[::-1]):
|
||||
if w == o:
|
||||
temp_suffix = w + temp_suffix
|
||||
else:
|
||||
break
|
||||
if len(temp_suffix) > len(suffix):
|
||||
suffix = temp_suffix
|
||||
if len(suffix) < len(word):
|
||||
result.append(word[-len(suffix)-1] + suffix)
|
||||
else:
|
||||
result.append(suffix)
|
||||
return result
|
||||
|
||||
def generate_pokemon(file_path):
|
||||
with open(file_path, 'r', encoding='utf-8') as file: # Specify the encoding here
|
||||
lines = file.readlines()
|
||||
|
||||
pokemon = {}
|
||||
pattern = r'\"(.*?)\"'
|
||||
|
||||
for line in lines:
|
||||
matches = re.findall(pattern, line)
|
||||
if matches and ':' in line:
|
||||
# Keep the key and value from the input
|
||||
key = matches[0]
|
||||
value = matches[1]
|
||||
pokemon[key] = value
|
||||
|
||||
return pokemon
|
||||
|
||||
def combine_scripts(file_path):
|
||||
pokemon_dict = generate_pokemon(file_path)
|
||||
|
||||
prefixes = find_prefixes(list(pokemon_dict.values()))
|
||||
suffixes = find_suffixes(list(pokemon_dict.values()))
|
||||
|
||||
output = "import { FusionTranslationEntries } from \"#app/interfaces/locales\";\n\n"
|
||||
output += "export const fusionAffixes: FusionTranslationEntries = {\n"
|
||||
for word, prefix, suffix in zip(pokemon_dict.keys(), prefixes, suffixes):
|
||||
output += f" {word}: {{\n"
|
||||
output += f" fusionPrefix: \"{prefix}\",\n"
|
||||
output += f" fusionSuffix: \"{suffix}\",\n"
|
||||
output += " },\n"
|
||||
|
||||
output += "} as const;\n"
|
||||
|
||||
# Write the output to a file
|
||||
with open('pokemon-fusion-affixes.ts', 'w', encoding='utf-8') as file: # Specify the encoding here
|
||||
file.write(output)
|
||||
|
||||
print ("pokemon-fusion-affixes.ts created")
|
||||
|
||||
# Specify the path to your file
|
||||
file_path = r"pokemon.ts"
|
||||
|
||||
# Call the combined function
|
||||
combine_scripts(file_path)"""
|
||||
|
||||
#change the order of affixes and suffixes (requested for zh translations)
|
||||
"""import re
|
||||
|
||||
def swap_fusion_entries(file_path):
|
||||
with open(file_path, 'r', encoding='utf-8') as file:
|
||||
content = file.read()
|
||||
|
||||
pattern = r'(fusionPrefix: ")(.*?)(",\n fusionSuffix: ")(.*?)(")'
|
||||
swapped_content = re.sub(pattern, r'\1\4\3\2\5', content)
|
||||
|
||||
with open(file_path, 'w', encoding='utf-8') as file:
|
||||
file.write(swapped_content)
|
||||
|
||||
# Call the function with the path to your file
|
||||
swap_fusion_entries('[zh]pokemon-fusion-affixes.ts')
|
||||
"""
|
Loading…
Reference in New Issue
Block a user