11import os , json , requests
2- from lib import data , init
2+ from lib import data , init , log
33from sys import stdout
44from translate import Translator
55
6- env = init .env ()
76cli = init .cli (__file__ )
87
98if cli .args .init : # create config file
2423 print (f'Default config created at { cli .config_path } ' )
2524 exit ()
2625
27- def print_trunc (msg , end = '\n ' ):
28- truncated_lines = [
29- line if len (line ) < env .terminal_width else line [:env .terminal_width - 4 ] + '...' for line in msg .splitlines () ]
30- print ('\n ' .join (truncated_lines ), end = end )
31- def overwrite_print (msg ) : stdout .write ('\r ' + msg .ljust (env .terminal_width )[:env .terminal_width ])
32-
3326print ('' )
3427
3528# Prompt user for keys to ignore
@@ -41,7 +34,7 @@ def overwrite_print(msg) : stdout.write('\r' + msg.ljust(env.terminal_width)[:en
4134 ignore_keys .append (key )
4235
4336# Determine closest locales dir
44- print_trunc (f'\n Searching for { cli .locales_dir } ...' )
37+ log . trunc (f'\n Searching for { cli .locales_dir } ...' )
4538script_dir = os .path .abspath (os .path .dirname (__file__ ))
4639for root , dirs , files in os .walk (script_dir ): # search script dir recursively
4740 if cli .locales_dir in dirs :
@@ -57,8 +50,8 @@ def overwrite_print(msg) : stdout.write('\r' + msg.ljust(env.terminal_width)[:en
5750 else : cli .locales_dir = None
5851
5952# Print result
60- if cli .locales_dir : print_trunc (f'_locales directory found!\n \n >> { cli .locales_dir } \n ' )
61- else : print_trunc (f'Unable to locate a { cli .locales_dir } directory.' ) ; exit ()
53+ if cli .locales_dir : log . trunc (f'_locales directory found!\n \n >> { cli .locales_dir } \n ' )
54+ else : log . trunc (f'Unable to locate a { cli .locales_dir } directory.' ) ; exit ()
6255
6356# Load en/messages.json
6457msgs_filename = 'messages.json'
@@ -87,7 +80,7 @@ def overwrite_print(msg) : stdout.write('\r' + msg.ljust(env.terminal_width)[:en
8780
8881 # Skip English locales
8982 if lang_code .startswith ('en' ):
90- print_trunc (f'Skipped { folder } /messages.json...' )
83+ log . trunc (f'Skipped { folder } /messages.json...' )
9184 langs_skipped .append (lang_code ) ; langs_not_translated .append (lang_code ) ; continue
9285
9386 # Initialize target locale folder
@@ -102,7 +95,7 @@ def overwrite_print(msg) : stdout.write('\r' + msg.ljust(env.terminal_width)[:en
10295 else : messages = {}
10396
10497 # Attempt translations
105- print_trunc (f"{ 'Adding' if not messages else 'Updating' } { folder } /messages.json..." , end = '' )
98+ log . trunc (f"{ 'Adding' if not messages else 'Updating' } { folder } /messages.json..." , end = '' )
10699 stdout .flush ()
107100 en_keys = list (en_messages .keys ())
108101 fail_flags = ['INVALID TARGET LANGUAGE' , 'TOO MANY REQUESTS' , 'MYMEMORY' ]
@@ -119,7 +112,7 @@ def overwrite_print(msg) : stdout.write('\r' + msg.ljust(env.terminal_width)[:en
119112 if any (flag in translated_msg for flag in fail_flags ):
120113 translated_msg = original_msg
121114 except Exception as e :
122- print_trunc (f'Translation failed for key "{ key } " in { lang_code } /messages.json: { e } ' )
115+ log . trunc (f'Translation failed for key "{ key } " in { lang_code } /messages.json: { e } ' )
123116 translated_msg = original_msg
124117 translated_msgs [key ] = { 'message' : translated_msg }
125118 else : translated_msgs [key ] = messages [key ]
@@ -138,14 +131,12 @@ def overwrite_print(msg) : stdout.write('\r' + msg.ljust(env.terminal_width)[:en
138131 if translated_msgs == messages : langs_skipped .append (lang_code ) ; lang_skipped = True
139132 elif translated_msgs != messages : langs_translated .append (lang_code ) ; lang_translated = True
140133 if not lang_translated : langs_not_translated .append (lang_code )
141- overwrite_print (f"{ 'Added' if lang_added else 'Skipped' if lang_skipped else 'Updated' } { folder } /messages.json" )
142-
143- # Print final summary
144- print_trunc ('\n All messages.json files updated successfully!\n ' )
145- lang_data = [langs_translated , langs_skipped , langs_added , langs_not_translated ]
146- for data in lang_data :
147- if data :
148- list_name = next (name for name , value in globals ().items () if value is data )
149- status = list_name .split ('langs_' )[- 1 ].replace ('_' , ' ' )
150- print (f'Languages { status } : { len (data )} \n ' ) # print tally
151- print ('[ ' + ', ' .join (data ) + ' ]\n ' ) # list languages
134+ log .overwrite_print (
135+ f"{ 'Added' if lang_added else 'Skipped' if lang_skipped else 'Updated' } { folder } /messages.json" )
136+
137+ log .finalSummary ({
138+ 'translated' : langs_translated ,
139+ 'skipped' : langs_skipped ,
140+ 'added' : langs_added ,
141+ 'not translated' : langs_not_translated ,
142+ })
0 commit comments