|
1 | 1 | ''' |
2 | 2 | Script: translate-en-messages.py |
3 | | -Version: 2024.5.14.1 |
| 3 | +Version: 2025.2.7 |
4 | 4 | Description: Translate msg's from en/messages.json to [[output_langs]/messages.json] |
5 | 5 | Author: Adam Lui |
6 | 6 | Homepage: https://github.com/adamlui/python-utils |
|
11 | 11 | from translate import Translator |
12 | 12 |
|
13 | 13 | locales_folder = '_locales' ; provider = '' |
14 | | -target_langs = ['af', 'am', 'ar', 'az', 'be', 'bem', 'bg', 'bn', 'bo', 'bs', 'ca', 'ceb', 'cs', 'cy', 'da', 'de', 'dv', 'dz', 'el', 'en', 'en-GB', 'eo', 'es', 'et', 'eu', 'fa', 'fi', 'fo', 'fr', 'gd', 'gl', 'gu', 'haw', 'he', 'hi', 'hr', 'ht', 'hu', 'hy', 'id', 'is', 'it', 'ja', 'ka', 'kab', 'kk', 'km', 'kn', 'ko', 'ku', 'ky', 'la', 'lb', 'lo', 'lt', 'lv', 'mg', 'mi', 'mk', 'ml', 'mn', 'ms', 'mt', 'my', 'ne', 'nl', 'no', 'ny', 'pa', 'pap', 'pl', 'ps', 'pt', 'ro', 'ru', 'rw', 'sg', 'si', 'sk', 'sl', 'sm', 'sn', 'so', 'sr', 'sv', 'sw', 'ta', 'te', 'tg', 'th', 'ti', 'tk', 'tn', 'to', 'tpi', 'tr', 'uk', 'ur', 'uz', 'vi', 'xh', 'yi', 'zh', 'zh-CN', 'zh-HK', 'zh-SG', 'zh-TW', 'zu'] |
| 14 | +target_langs = [ |
| 15 | + 'af', 'am', 'ar', 'az', 'be', 'bem', 'bg', 'bn', 'bo', 'bs', 'ca', 'ceb', 'cs', 'cy', 'da', 'de', 'dv', 'dz', 'el', |
| 16 | + 'en', 'en-GB', 'eo', 'es', 'et', 'eu', 'fa', 'fi', 'fo', 'fr', 'gd', 'gl', 'gu', 'haw', 'he', 'hi', 'hr', 'ht', |
| 17 | + 'hu', 'hy', 'id', 'is', 'it', 'ja', 'ka', 'kab', 'kk', 'km', 'kn', 'ko', 'ku', 'ky', 'la', 'lb', 'lo', 'lt', 'lv', |
| 18 | + 'mg', 'mi', 'mk', 'ml', 'mn', 'ms', 'mt', 'my', 'ne', 'nl', 'no', 'ny', 'pa', 'pap', 'pl', 'ps', 'pt', 'ro', 'ru', |
| 19 | + 'rw', 'sg', 'si', 'sk', 'sl', 'sm', 'sn', 'so', 'sr', 'sv', 'sw', 'ta', 'te', 'tg', 'th', 'ti', 'tk', 'tn', 'to', |
| 20 | + 'tpi', 'tr', 'uk', 'ur', 'uz', 'vi', 'xh', 'yi', 'zh', 'zh-CN', 'zh-HK', 'zh-SG', 'zh-TW', 'zu' |
| 21 | +] |
15 | 22 |
|
16 | 23 | # UI initializations |
17 | 24 | terminal_width = os.get_terminal_size()[0] |
18 | | -def print_trunc(msg, end='\n') : print(msg if len(msg) < terminal_width else msg[0:terminal_width-4] + '...', end=end) |
| 25 | +def print_trunc(msg, end='\n'): |
| 26 | + truncated_lines = [ |
| 27 | + line if len(line) < terminal_width else line[:terminal_width - 4] + '...' for line in msg.splitlines() ] |
| 28 | + print('\n'.join(truncated_lines), end=end) |
19 | 29 | def overwrite_print(msg) : stdout.write('\r' + msg.ljust(terminal_width)[:terminal_width]) |
20 | 30 |
|
21 | 31 | print('') |
@@ -70,8 +80,8 @@ def overwrite_print(msg) : stdout.write('\r' + msg.ljust(terminal_width)[:termin |
70 | 80 | lang_added, lang_skipped, lang_translated = False, False, False |
71 | 81 | folder = lang_code.replace('-', '_') ; translated_msgs = {} |
72 | 82 | if '-' in lang_code: # cap suffix |
73 | | - sep_index = folder.index('_') |
74 | | - folder = folder[:sep_index] + '_' + folder[sep_index+1:].upper() |
| 83 | + sep_idx = folder.index('_') |
| 84 | + folder = folder[:sep_idx] + '_' + folder[sep_idx+1:].upper() |
75 | 85 |
|
76 | 86 | # Skip English locales |
77 | 87 | if lang_code.startswith('en'): |
@@ -114,11 +124,11 @@ def overwrite_print(msg) : stdout.write('\r' + msg.ljust(terminal_width)[:termin |
114 | 124 |
|
115 | 125 | # Format messages |
116 | 126 | formatted_msgs = '{\n' |
117 | | - for index, (key, message_data) in enumerate(translated_msgs.items()): |
| 127 | + for idx, (key, message_data) in enumerate(translated_msgs.items()): |
118 | 128 | formatted_msg = json.dumps(message_data, ensure_ascii=False) \ |
119 | 129 | .replace('{', '{ ').replace('}', ' }') # add spacing |
120 | 130 | formatted_msgs += ( f' "{key}": {formatted_msg}' |
121 | | - + ( ',\n' if index < len(translated_msgs) - 1 else '\n' )) # terminate line |
| 131 | + + ( ',\n' if idx < len(translated_msgs) - 1 else '\n' )) # terminate line |
122 | 132 | formatted_msgs += '}' |
123 | 133 | with open(msgs_path, 'w', encoding='utf-8') as output_file : output_file.write(formatted_msgs + '\n') |
124 | 134 |
|
|
0 commit comments