Skip to content

Commit

Permalink
1.6
Browse files Browse the repository at this point in the history
  • Loading branch information
3093FengMing committed Mar 3, 2024
1 parent 26c8f28 commit c439921
Show file tree
Hide file tree
Showing 4 changed files with 52 additions and 38 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
## World Translation Extractor Modified (WTEM) 1.5
## World Translation Extractor Modified (WTEM) 1.6
Forked by [WorldTranslationExtractor](https://github.com/5uso/AmuletScripts/blob/main/WorldTranslationExtractor.py)

### Information
Expand Down
2 changes: 1 addition & 1 deletion README_zh_cn.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
## 存档翻译提取器魔改版 (WTEM) 1.5
## 存档翻译提取器魔改版 (WTEM) 1.6
World Translation Extractor Modified

Forked by [WorldTranslationExtractor](https://github.com/5uso/AmuletScripts/blob/main/WorldTranslationExtractor.py)
Expand Down
64 changes: 39 additions & 25 deletions WorldTranslationExtractor.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,16 +55,24 @@ def get_key():
def sub_replace(pattern: re.Pattern, string: str, repl, dupe=False, search_all=True):
ls = list(string)
if search_all:
endless_count = 0
last_match = None
last_pos = 0
match = pattern.search(string, last_pos)
# can delete the 2 lines below
# if match is None:
# return string
while match is not None:
if last_match is not None and last_match.string == match.string:
endless_count += 1
if endless_count >= 200:
print("ENDLESS LOOP HERE: " + string)
break # prevent endless loop
span = match.span()
ls[span[0]:span[1]] = repl(match, dupe=dupe)
last_pos = span[1]
match = pattern.search(''.join(ls), last_pos)
last_match = match
return ''.join(ls)
else:
match = pattern.match(string)
Expand All @@ -88,9 +96,10 @@ def match_text(match, escaped=False, dupe=False):
if plain == '':
return f'\\"translate\\":\\"empty\\"' if escaped else f'"translate":"empty"'
rel_lang[rk] = plain
print(f'[text] put key: {rk}: {rel_lang[rk]}')
if dupe:
print(f'[text dupeIf] put key: {rk}: {rel_lang[rk]}')
return f'\\"translate\\":\\"{rk}\\"' if escaped else f'"translate":"{rk}"'
print(f'[text dupeElse] put key: {rev_lang[plain]}: {plain}')
return f'\\"translate\\":\\"{rev_lang[plain]}\\"' if escaped else f'"translate":"{rev_lang[plain]}"'


Expand All @@ -102,10 +111,11 @@ def match_plain_text(match, dupe=False):
if plain == '':
return f'{{"translate":"empty"}}'
rel_lang[rk] = plain
print(f'[plain] put key: {rk}: {rel_lang[rk]}')
if not dupe:
return f'{{"translate":"{rev_lang[plain]}"}}'
return f'{{"translate":"{rk}"}}'
if dupe:
print(f'[plain dupeIf] put key: {rk}: {rel_lang[rk]}')
return f'{{"translate":"{rk}"}}'
print(f'[plain dupeElse] put key: {rev_lang[plain]}: {plain}')
return f'{{"translate":"{rev_lang[plain]}"}}'


def match_contents(match, dupe=False):
Expand All @@ -116,10 +126,11 @@ def match_contents(match, dupe=False):
if plain == '':
return f'"contents":{{"translate":"empty"}}'
rel_lang[rk] = plain
print(f'[contents] put key: {rk}: {rel_lang[rk]}')
if not dupe:
return f'"contents":{{"translate":"{rev_lang[plain]}"}}'
return f'"contents":{{"translate":"{rk}"}}'
if dupe:
print(f'[contents dupeIf] put key: {rk}: {rel_lang[rk]}')
return f'"contents":{{"translate":"{rk}"}}'
print(f'[contents dupeElse] put key: {rev_lang[plain]}: {plain}')
return f'"contents":{{"translate":"{rev_lang[plain]}"}}'


def match_bossbar(match, dupe=False):
Expand All @@ -131,10 +142,11 @@ def match_bossbar(match, dupe=False):
if plain == '':
return f'bossbar set {name} name {{"translate":"empty"}}'
rel_lang[rk] = plain
print(f'[bossbar1] put key: {rk}: {rel_lang[rk]}')
if not dupe:
return f'bossbar set {name} name {{"translate":"{rev_lang[plain]}"}}'
return f'bossbar set {name} name {{"translate":"{rk}"}}'
if dupe:
print(f'[bossbar set dupeIf] put key: {rk}: {rel_lang[rk]}')
return f'bossbar set {name} name {{"translate":"{rk}"}}'
print(f'[bossbar set dupeElse] put key: {rev_lang[plain]}: {plain}')
return f'bossbar set {name} name {{"translate":"{rev_lang[plain]}"}}'


def match_bossbar2(match, dupe=False):
Expand All @@ -146,10 +158,11 @@ def match_bossbar2(match, dupe=False):
if plain == '':
return f'bossbar add {name} {{"translate":"empty"}}'
rel_lang[rk] = plain
print(f'[bossbar2] put key: {rk}: {rel_lang[rk]}')
if not dupe:
return f'bossbar add {name} {{"translate":"{rev_lang[plain]}"}}'
return f'bossbar add {name} {{"translate":"{rk}"}}'
if dupe:
print(f'[bossbar add dupeIf] put key: {rk}: {rel_lang[rk]}')
return f'bossbar add {name} {{"translate":"{rk}"}}'
print(f'[bossbar add dupeElse] put key: {rev_lang[plain]}: {plain}')
return f'bossbar add {name} {{"translate":"{rev_lang[plain]}"}}'


def match_text_escaped(match, dupe=False):
Expand All @@ -163,7 +176,7 @@ def replace_component(text, dupe=False):


# handler
def handle_item(item, dupe):
def handle_item(item, dupe=False):
changed = False
if len(item) == 0:
return False
Expand Down Expand Up @@ -202,12 +215,13 @@ def handle_item(item, dupe):
# TODO remember to sync it when match_text changed
rk = f"item.{id}.{item_counts[id]}.title.1"
rel_lang[rk] = title
print(f'[json book title] put key: {rk}: {rel_lang[rk]}')
if title not in rev_lang:
rev_lang[title] = rk
if dupe | cfg_dupe["items_title"] or cfg_dupe["items_all"]:
if dupe or cfg_dupe["items_title"] or cfg_dupe["items_all"]:
print(f'[json book title dupeIf] put key: {rk}: {rel_lang[rk]}')
item['tag']['display']['Name'] = n.TAG_String(f'{{"translate":"{rk}","italic":false}}')
else:
print(f'[json book title dupeElse] put key: {rev_lang[title]}: {title}')
item['tag']['display']['Name'] = n.TAG_String(f'{{"translate":"{rev_lang[title]}","italic":false}}')
changed = True
except KeyError:
Expand Down Expand Up @@ -276,9 +290,9 @@ def handle_command_block(command_block):
set_key(f"block.command_block.{block_counts['command_block']}.command")

command = str(command_block['Command'])
txt = sub_replace(REG_COMPONENT_PLAIN, command, match_text, cfg_dupe["datapacks"])
txt = sub_replace(REG_COMPONENT, txt, match_text, cfg_dupe["command_blocks"])
txt = sub_replace(REG_COMPONENT, command, match_text, cfg_dupe["command_blocks"])
txt = sub_replace(REG_COMPONENT_ESCAPED, txt, match_text_escaped, cfg_dupe["command_blocks"])
txt = sub_replace(REG_COMPONENT_PLAIN, txt, match_text, cfg_dupe["command_blocks"], False)
txt = sub_replace(REG_DATAPACK_CONTENTS, txt, match_contents, cfg_dupe["command_blocks"])
txt = sub_replace(REG_BOSSBAR_SET_NAME, txt, match_bossbar, cfg_dupe["command_blocks"])
result_command = sub_replace(REG_BOSSBAR_ADD, txt, match_bossbar2, cfg_dupe["command_blocks"])
Expand Down Expand Up @@ -543,9 +557,9 @@ def scan_file(path, start):
for i in range(len(line)):
if line[i].startswith('#'):
continue
txt = sub_replace(REG_COMPONENT_PLAIN, line[i], match_text, cfg_dupe["datapacks"])
txt = sub_replace(REG_COMPONENT, txt, match_text, cfg_dupe["datapacks"])
txt = sub_replace(REG_COMPONENT, line[i], match_text, cfg_dupe["datapacks"])
txt = sub_replace(REG_COMPONENT_ESCAPED, txt, match_text_escaped, cfg_dupe["datapacks"])
txt = sub_replace(REG_COMPONENT_PLAIN, txt, match_text, cfg_dupe["datapacks"], False)
txt = sub_replace(REG_DATAPACK_CONTENTS, txt, match_contents, cfg_dupe["datapacks"])
txt = sub_replace(REG_BOSSBAR_SET_NAME, txt, match_bossbar, cfg_dupe["datapacks"])
line[i] = sub_replace(REG_BOSSBAR_ADD, txt, match_bossbar2, cfg_dupe["datapacks"])
Expand Down Expand Up @@ -579,7 +593,7 @@ def backup_saves(path, source):

def main():
print("+===========[Chinese]===========+")
print("{0}\t{1:<20}\t{2:^1}".format("|", "存档翻译提取器(魔改) 1.5", "|"))
print("{0}\t{1:<20}\t{2:^1}".format("|", "存档翻译提取器(魔改) 1.6", "|"))
print("{0}\t{1:<20}\t{2:^9}".format("|", "原作者Suso", "|"))
print("{0}\t{1:<20}\t{2:^9}".format("|", "魔改作者FengMing3093", "|"))
print("{0}\t{1:<20}\t{2:^9}".format("|", "使用Amulet核心", "|"))
Expand Down
22 changes: 11 additions & 11 deletions config.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,22 +7,22 @@
"sort_keys": false
},
"keep_duplicate_keys": {
"datapacks": true,
"command_blocks": true,
"bossbar": true,
"scores_all": true,
"scores_name": true,
"scores_teams_name": true,
"scores_teams_prefix": true,
"scores_teams_suffix": true,
"signs": false,
"datapacks": false,
"command_blocks": false,
"bossbar": false,
"scores_all": false,
"scores_name": false,
"scores_teams_name": false,
"scores_teams_prefix": false,
"scores_teams_suffix": false,
"signs": true,
"containers_name": false,
"entities_name": false,
"show_entity_text": false,
"items_in_same": true,
"items_in_same": false,
"items_all": false,
"items_name": false,
"items_lore": false,
"items_lore": true,
"items_pages": false,
"items_title": false
}
Expand Down

0 comments on commit c439921

Please sign in to comment.