Skip to content

Commit 4f29ea5

Browse files
committed
Fix ignore-printer-id when generating headers
Some printers need different text for error screen, so we duplicate entire error code. Those duplicates are usually filtered by printer id. However, we are ignoring this when generating header files for i18n text extraction. Such texts are missing from translation. BFW-8142
1 parent 33b80f0 commit 4f29ea5

File tree

1 file changed

+17
-6
lines changed

1 file changed

+17
-6
lines changed

generate_buddy_headers.py

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -103,12 +103,21 @@
103103
}};
104104
"""
105105

106+
107+
def check_duplicates(err_list):
108+
seen = set()
109+
for err in err_list:
110+
err_code = err['code']
111+
assert err_code not in seen, f"Duplicate error code {err}."
112+
seen.add(err_code)
113+
114+
106115
def generate_header_file(yaml_file_name, header_file_name, printer_id, printer_code, mmu, list, includes, ignore_printer_id):
107116
with open(yaml_file_name, "r") as yaml_file:
108117
parsed_file = yaml.safe_load(yaml_file)
109118

110119
err_id_cache = set()
111-
err_dict = {}
120+
err_list = []
112121

113122
for err in parsed_file["Errors"]:
114123
if ("deprecated" in err) and err["deprecated"] == True:
@@ -131,7 +140,6 @@ def generate_header_file(yaml_file_name, header_file_name, printer_id, printer_c
131140
err_id_cache.add(err_id)
132141

133142
err_code = int(code)
134-
assert ignore_printer_id or err_code not in err_dict, f"Duplicate error code {code}."
135143

136144
btns = []
137145
if "action" in err:
@@ -163,24 +171,27 @@ def generate_header_file(yaml_file_name, header_file_name, printer_id, printer_c
163171
extra_text = f",\n {{{', '.join(btns)}}}"
164172
extra_text += f",\n ErrType::{err['type']}"
165173

166-
err_dict[err_code] = {
174+
err_list.append({
167175
"id": err_id,
168176
"code": err_code,
169177
"title": err["title"],
170178
"text": err["text"].translate(str.maketrans({"\n": "\\n", "\"": "\\\""})),
171179
"extra_text": extra_text
172-
}
180+
})
173181

174182
os.makedirs(header_file_name.parent, exist_ok=True)
175183

176-
enum_items = ",\n ".join(f"{err['id']} = {err['code']}" for err in err_dict.values())
184+
if not ignore_printer_id:
185+
check_duplicates(err_list)
186+
187+
enum_items = ",\n ".join(f"{err['id']} = {err['code']}" for err in err_list)
177188

178189
list_items = ",".join(f"""
179190
{{
180191
N_("{err['title']}"),
181192
N_("{err['text']}"),
182193
ErrCode::{err['id']}{err['extra_text']}
183-
}}""" for err in err_dict.values())
194+
}}""" for err in err_list)
184195

185196
include_items = "\n".join([f"#include <{item}>" for item in includes])
186197

0 commit comments

Comments
 (0)