#!/usr/bin/env python import csv import pathlib root = pathlib.Path(__file__).resolve().parent.parent translation_dummy_path = root.joinpath("Source/translation_dummy.cpp") monstdat_path = root.joinpath("assets/txtdata/monsters/monstdat.tsv") unique_monstdat_path = root.joinpath("assets/txtdata/monsters/unique_monstdat.tsv") itemdat_path = root.joinpath("assets/txtdata/items/itemdat.tsv") unique_itemdat_path = root.joinpath("assets/txtdata/items/unique_itemdat.tsv") item_prefixes_path = root.joinpath("assets/txtdata/items/item_prefixes.tsv") item_suffixes_path = root.joinpath("assets/txtdata/items/item_suffixes.tsv") spelldat_path = root.joinpath("assets/txtdata/spells/spelldat.tsv") with open(translation_dummy_path, 'w') as temp_source: temp_source.write(f'/**\n') temp_source.write(f' * @file translation_dummy.cpp\n') temp_source.write(f' *\n') temp_source.write(f' * Do not edit this file manually, it is automatically generated\n') temp_source.write(f' * and updated by the extract_translation_data.py script.\n') temp_source.write(f' */\n') temp_source.write(f'#include "utils/language.h"\n') temp_source.write(f'\n') with open(monstdat_path, 'r') as tsv: reader = csv.DictReader(tsv, delimiter='\t') for row in reader: name = row['name'] var_name = row['_monster_id'] + "_NAME" temp_source.write(f'const char *{var_name} = P_("monster", "{name}");\n') with open(unique_monstdat_path, 'r') as tsv: reader = csv.DictReader(tsv, delimiter='\t') for row in reader: name = row['name'] var_name = name.upper().replace(' ', '_').replace('-', '_') + "_NAME" temp_source.write(f'const char *{var_name} = P_("monster", "{name}");\n') with open(itemdat_path, 'r') as tsv: reader = csv.DictReader(tsv, delimiter='\t') for i, row in enumerate(reader): id = row['id'] name = row['name'] if name == 'Scroll of None' or name == 'Non Item' or name == 'Book of ': continue shortName = row['shortName'] var_name = id if id else f'ITEM_{i}' temp_source.write(f'const char *{var_name}_NAME = N_("{name}");\n') if shortName: temp_source.write(f'const char *{var_name}_SHORT_NAME = N_("{shortName}");\n') with open(unique_itemdat_path, 'r') as tsv: reader = csv.DictReader(tsv, delimiter='\t') for i, row in enumerate(reader): name = row['name'] var_name = f'UNIQUE_ITEM_{i}' temp_source.write(f'const char *{var_name}_NAME = N_("{name}");\n') with open(item_prefixes_path, 'r') as tsv: reader = csv.DictReader(tsv, delimiter='\t') for i, row in enumerate(reader): name = row['name'] var_name = f'ITEM_PREFIX_{i}' temp_source.write(f'const char *{var_name}_NAME = N_("{name}");\n') with open(item_suffixes_path, 'r') as tsv: reader = csv.DictReader(tsv, delimiter='\t') for i, row in enumerate(reader): name = row['name'] var_name = f'ITEM_SUFFIX_{i}' temp_source.write(f'const char *{var_name}_NAME = N_("{name}");\n') with open(spelldat_path, 'r') as tsv: reader = csv.DictReader(tsv, delimiter='\t') for i, row in enumerate(reader): name = row['name'] var_name = 'SPELL_' + name.upper().replace(' ', '_').replace('-', '_') temp_source.write(f'const char *{var_name}_NAME = P_("spell", "{name}");\n')