-
Notifications
You must be signed in to change notification settings - Fork 15
/
validate.py
73 lines (56 loc) · 3.14 KB
/
validate.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
import json
import sys
ERROR_FLAG_MISSING_TRANSLATION = 1
ERROR_FLAG_EMPTY_TRANSLATION = 2
ERROR_FLAG_EXTRA_TRANSLATION = 0 # 3
CONSOLE_COLOR_ERROR = '\033[31m'
CONSOLE_COLOR_RESET = '\033[0m'
required_phrases = ['New Game', 'Publisher Deals', 'Game Contracts', 'Topic and Genre', 'Topic', 'Genre',
'Game Size', 'Royalties', 'Penalty', 'Up-front Pay', 'No License', 'Money', 'Payroll',
'Games', 'Consoles', 'Weekly', 'Monthly', 'Annually', 'Level', 'No Specialization', 'Energy',
'Game History', 'Game Info', 'Development', 'Current Engine', 'No Engine', 'Dialogues',
'Statistics', 'Units Sold', 'Costs', 'Revenue', 'Released', 'Top Sales Rank', 'Platforms',
'Stage', 'Stage 1', 'Stage 2', 'Stage 3', 'Time Allocation', 'Features', 'Cost', 'Overall Score',
'Cost to Make', 'Fans Gained', 'Time', 'Pay', 'Salary', 'Info & Stats', 'Generate Report',
'Dev. Cost', 'License Cost', 'Market Share', 'Rating', 'Profit',
'Need to generate a report first.', 'Time has elapsed to generate a report.', 'Insights',
'Engine Development', 'Budget', 'Select Staff', 'Choose Engine', 'Develop Expansion Pack',
'Y{0}', 'Y{0} M{1}']
def run_test():
with open('tagmod-translations.json', encoding='utf-8-sig') as f:
translations = json.load(f)
error_flag = 0
value_string = "['"
for language, value_holder in translations.items():
print(f'CHECKING LANGUAGE: {language}')
values = value_holder['values']
provided_phrases = []
for translation_pair in values:
phrase = translation_pair['value']
translation = translation_pair['translation']
provided_phrases.append(phrase)
new_flag = check_translation(phrase, translation)
error_flag = new_flag if new_flag != 0 else error_flag
new_flag = check_missing_translations(provided_phrases)
error_flag = new_flag if new_flag != 0 else error_flag
print('DONE')
print()
return error_flag
def check_translation(phrase, translation):
error_flag = 0
if len(translation) == 0:
error_flag = ERROR_FLAG_EMPTY_TRANSLATION
print(f'{CONSOLE_COLOR_ERROR}Phrase \'{phrase}\' has an empty translation.{CONSOLE_COLOR_RESET}')
return error_flag
def check_missing_translations(provided_phrases):
error_flag = 0
for required_phrase in required_phrases:
if required_phrase not in provided_phrases:
error_flag = ERROR_FLAG_MISSING_TRANSLATION
print(f'{CONSOLE_COLOR_ERROR}Phrase \'{required_phrase}\' is missing.{CONSOLE_COLOR_RESET}')
for provided_phrase in provided_phrases:
if provided_phrase not in required_phrases:
error_flag = ERROR_FLAG_EXTRA_TRANSLATION
print(f'{CONSOLE_COLOR_ERROR}Extra phrase \'{provided_phrase}\' provided.{CONSOLE_COLOR_RESET}')
return error_flag
sys.exit(run_test())