Skip to content

Commit 746d5bd

Browse files
committed
1 parent ce955c8 commit 746d5bd

File tree

3 files changed

+39
-35
lines changed

3 files changed

+39
-35
lines changed

translate-messages/__main__.py

Lines changed: 16 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
import os, json, requests
2-
from lib import data, init
2+
from lib import data, init, log
33
from sys import stdout
44
from translate import Translator
55

6-
env = init.env()
76
cli = init.cli(__file__)
87

98
if cli.args.init: # create config file
@@ -24,12 +23,6 @@
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-
3326
print('')
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'\nSearching for {cli.locales_dir}...')
37+
log.trunc(f'\nSearching for {cli.locales_dir}...')
4538
script_dir = os.path.abspath(os.path.dirname(__file__))
4639
for 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
6457
msgs_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('\nAll 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+
})

translate-messages/lib/init.py

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
def cli(callerFile):
66
cli = sns(
77
name='translate-messages',
8-
version='2026.2.10.42',
8+
version='2026.2.10.43',
99
author=sns(name='Adam Lui', email='adam@kudoa.com', url='https://github.com/adamlui'),
1010
description='Translate en/messages.json to other locales',
1111
urls=sns(
@@ -53,12 +53,3 @@ def cli(callerFile):
5353
cli.target_locales = [lang for lang in cli.target_locales if lang not in exclude_langs]
5454

5555
return cli
56-
57-
def env():
58-
env = sns()
59-
try:
60-
env.terminal_width = os.get_terminal_size()[0]
61-
except OSError:
62-
env.terminal_width = 80
63-
64-
return env

translate-messages/lib/log.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import os
2+
from sys import stdout
3+
4+
try:
5+
terminal_width = os.get_terminal_size()[0]
6+
except OSError:
7+
terminal_width = 80
8+
9+
def finalSummary(summary_dict):
10+
trunc('\nAll JSON files updated successfully!\n\n')
11+
for name, lang_set in summary_dict.items():
12+
if lang_set:
13+
status = name.replace('_', ' ')
14+
print(f'Languages {status}: {len(lang_set)}')
15+
print(f"[ {', '.join(lang_set)} ]")
16+
17+
def overwrite_print(msg) : stdout.write('\r' + msg.ljust(terminal_width)[:terminal_width])
18+
19+
def trunc(msg, end='\n'):
20+
truncated_lines = [
21+
line if len(line) < terminal_width else line[:terminal_width -4] + '...' for line in msg.splitlines() ]
22+
print('\n'.join(truncated_lines), end=end)

0 commit comments

Comments
 (0)