Skip to content

Commit ac77894

Browse files
committed
upgrade 0.1.4, support english and chinese language.
1 parent a8d8fe3 commit ac77894

File tree

6 files changed

+81
-27
lines changed

6 files changed

+81
-27
lines changed

README.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ News
22
====
33

44
- June 2023: thonny-quecpython 0.1.1 released! (for those -- and only those -- who use Python >= 3.7).
5-
5+
- October 2023: thonny-quecpython 0.1.4 released!
66

77
Overview
88
========

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
0.1.3
1+
0.1.4

thonnycontrib/quecpython/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
from thonny import get_workbench
2-
from thonny.languages import tr
32
from thonny.plugins.micropython.mp_front import (
43
add_micropython_backend,
54
GenericBareMetalMicroPythonConfigPage,
65
GenericBareMetalMicroPythonProxy,
76
)
87
from .view import QuecView, open_quecview
8+
from .locale import tr
99

1010

1111
def load_plugin():
1212
add_micropython_backend(
1313
"GenericQuecPython",
1414
GenericBareMetalMicroPythonProxy,
15-
tr("QuecPython (generic)"),
15+
"QuecPython (generic)",
1616
GenericBareMetalMicroPythonConfigPage,
1717
sort_key="51",
1818
)
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import json
2+
from pathlib import Path
3+
from thonny import get_workbench
4+
5+
6+
LANGUAGE_NAME = get_workbench().get_option("general.language")
7+
TRANSLATION_MAP = {}
8+
9+
10+
def init_translation_map():
11+
global TRANSLATION_MAP
12+
language_file_path = Path(__file__).parent / (LANGUAGE_NAME + '.lag')
13+
if language_file_path.exists():
14+
with open(str(language_file_path), 'r', encoding='utf8') as f:
15+
TRANSLATION_MAP = json.load(f)
16+
17+
18+
# load translation file to a dict
19+
init_translation_map()
20+
21+
22+
def tr(stringvar):
23+
temp = None
24+
if LANGUAGE_NAME == 'zh_CN':
25+
temp = TRANSLATION_MAP.get(stringvar, None)
26+
temp = temp or stringvar
27+
return temp
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
{
2+
"QuecPython Kits": "QuecPython套件",
3+
"Serial Settings": "串口配置",
4+
"Serial": "串口",
5+
"Baudrate": "波特率",
6+
"Stopbits": "停止位",
7+
"Parity": "校验位",
8+
"Bytesize": "数据位",
9+
"Flow": "流控",
10+
"OpenPort": "打开串口",
11+
"Firmware Download": "固件下载",
12+
"firmware path": "固件路径",
13+
"select": "选择文件",
14+
"download": "开始下载",
15+
"progress": "下载进度",
16+
"logging": "运行日志",
17+
"ready": "就绪",
18+
"Respect": "注意",
19+
"click RESET button, and then click \"OK\" continue.": "请按RESET重启板子,点击“确定”继续。",
20+
"Error": "错误",
21+
"Download Firmware Error": "固件下载错误",
22+
"download process exited.": "下载进程已退出。",
23+
"Information": "通知",
24+
"Download Firmware Progress Finished!": "固件下载成功!",
25+
"downloading...": "正在下载..."
26+
}

thonnycontrib/quecpython/view.py

Lines changed: 24 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
from thonny import get_workbench
1111
from .api import DownLoadFWApi
1212
from .fw.utils import get_com_port
13+
from .locale import tr
1314

1415

1516
logger = getLogger(__name__)
@@ -27,75 +28,75 @@ def __init__(self, *args, **kwargs):
2728
for index in range(14):
2829
serial_label_frame.columnconfigure(index, weight=1)
2930

30-
serial_label = tk.Label(serial_label_frame, text='Serial:')
31+
serial_label = tk.Label(serial_label_frame, text=tr('Serial')+':')
3132
serial_label.grid(row=0, column=0, sticky=tk.N, padx=(5, 0), pady=(5, 5))
3233
self.port_combobox = ttk.Combobox(master=serial_label_frame, postcommand=self.list_valid_ports)
3334
self.port_combobox.grid(row=0, column=1, ipadx=40, sticky=tk.W, padx=(0, 5), pady=(5, 5))
3435
self.list_valid_ports()
3536

36-
baudrate_label = tk.Label(serial_label_frame, text='Baudrate:')
37+
baudrate_label = tk.Label(serial_label_frame, text=tr('Baudrate')+':')
3738
baudrate_label.grid(row=0, column=2, sticky=tk.N, padx=(5, 0), pady=(5, 5))
3839
self.baudrate_combobox = ttk.Combobox(master=serial_label_frame, values=Serial.BAUDRATES, width=7)
3940
self.baudrate_combobox.set('115200')
4041
self.baudrate_combobox.grid(row=0, column=3, sticky=tk.W, padx=(0, 5), pady=(5, 5))
4142

42-
stopbits_label = tk.Label(serial_label_frame, text='Stopbits:')
43+
stopbits_label = tk.Label(serial_label_frame, text=tr('Stopbits')+':')
4344
stopbits_label.grid(row=0, column=4, sticky=tk.N, padx=(5, 0), pady=(5, 5))
4445
self.stopbits_combobox = ttk.Combobox(master=serial_label_frame, values=Serial.STOPBITS, width=5)
4546
self.stopbits_combobox.set('1')
4647
self.stopbits_combobox.grid(row=0, column=5, sticky=tk.W, padx=(0, 5), pady=(5, 5))
4748

48-
parity_label = tk.Label(serial_label_frame, text='Parity:')
49+
parity_label = tk.Label(serial_label_frame, text=tr('Parity')+':')
4950
parity_label.grid(row=0, column=6, sticky=tk.N, padx=(5, 0), pady=(5, 5))
5051
self.parity_combobox = ttk.Combobox(master=serial_label_frame, values=Serial.PARITIES, width=5)
5152
self.parity_combobox.set('N')
5253
self.parity_combobox.grid(row=0, column=7, sticky=tk.W, padx=(0, 5), pady=(5, 5))
5354

54-
bytesize_label = tk.Label(serial_label_frame, text='Bytesize:')
55+
bytesize_label = tk.Label(serial_label_frame, text=tr('Bytesize')+':')
5556
bytesize_label.grid(row=0, column=8, sticky=tk.N, padx=(5, 0), pady=(5, 5))
5657
self.bytesize_combobox = ttk.Combobox(master=serial_label_frame, values=Serial.BYTESIZES, width=5)
5758
self.bytesize_combobox.set('8')
5859
self.bytesize_combobox.grid(row=0, column=9, sticky=tk.W, padx=(0, 5), pady=(5, 5))
5960

60-
flow_control_label = tk.Label(serial_label_frame, text='Flow:')
61+
flow_control_label = tk.Label(serial_label_frame, text=tr('Flow')+':')
6162
flow_control_label.grid(row=0, column=10, sticky=tk.N, padx=(5, 0), pady=(5, 5))
6263
self.flow_control_combobox = ttk.Combobox(master=serial_label_frame, values=['No', 'HW', 'SW'], width=5)
6364
self.flow_control_combobox.set('No')
6465
self.flow_control_combobox.grid(row=0, column=11, sticky=tk.W, padx=(0, 5), pady=(5, 5))
6566

6667
self.open_serial_button = tk.Button(
67-
serial_label_frame, text='Open',
68+
serial_label_frame, text=tr('OpenPort'),
6869
command=self.switch_serial_handler
6970
)
7071
self.open_serial_button.grid(row=0, column=12, sticky=tk.EW, padx=(5, 5), pady=(5, 5))
7172
# <<<
7273

7374
# >>> 固件下载
74-
fw_label_frame = tk.LabelFrame(master=self, text='Firmware Download', labelanchor=tk.N)
75+
fw_label_frame = tk.LabelFrame(master=self, text=tr('Firmware Download'), labelanchor=tk.N)
7576
fw_label_frame.pack(anchor=tk.NW, expand=False, fill=tk.X, pady=(5, 5))
7677
for index in range(14):
7778
fw_label_frame.columnconfigure(index, weight=1)
7879

79-
fw_file_path_label = tk.Label(fw_label_frame, text='firmware path:')
80+
fw_file_path_label = tk.Label(fw_label_frame, text=tr('firmware path')+':')
8081
fw_file_path_label.grid(row=1, column=0, sticky=tk.EW, padx=(5, 0), pady=(5, 5))
8182
self.firmware_file_path_stringvar = tk.StringVar()
8283
self.firmware_file_path_stringvar.trace_variable('w', self.on_fw_file_path_write)
8384
fw_file_path_entry = tk.Entry(fw_label_frame, textvariable=self.firmware_file_path_stringvar, state='readonly')
8485
fw_file_path_entry.grid(row=1, column=1, columnspan=11, sticky=tk.EW, padx=(0, 5), pady=(5, 5))
8586

8687
self.fw_file_choose_button = tk.Button(
87-
fw_label_frame, text='select',
88+
fw_label_frame, text=tr('select'),
8889
command=self.ask_for_firmware_file_path
8990
)
9091
self.fw_file_choose_button.grid(row=1, column=12, sticky=tk.EW, padx=(5, 5), pady=(5, 5))
9192

9293
self.fw_download_button = tk.Button(
93-
fw_label_frame, text='download',
94+
fw_label_frame, text=tr('download'),
9495
command=self.download_firmware_handler
9596
)
9697
self.fw_download_button.grid(row=1, column=13, sticky=tk.EW, padx=(5, 5), pady=(5, 5))
9798

98-
progress_label = tk.Label(fw_label_frame, text='progress:')
99+
progress_label = tk.Label(fw_label_frame, text=tr('progress')+':')
99100
progress_label.grid(row=2, column=0, sticky=tk.EW, padx=(5, 0), pady=(5, 5))
100101
self.bar = ttk.Progressbar(master=fw_label_frame, maximum=100)
101102
self.bar.grid(row=2, column=1, columnspan=11, sticky=tk.EW, padx=(0, 5), pady=(5, 5))
@@ -105,10 +106,10 @@ def __init__(self, *args, **kwargs):
105106
progress_entry = tk.Label(fw_label_frame, textvariable=self.progress_stringvar)
106107
progress_entry.grid(row=2, column=12, sticky=tk.W, padx=(5, 5), pady=(5, 5))
107108

108-
log_label = tk.Label(fw_label_frame, text='logging:')
109+
log_label = tk.Label(fw_label_frame, text=tr('logging')+':')
109110
log_label.grid(row=3, column=0, sticky=tk.EW, padx=(5, 0), pady=(5, 5))
110111
self.log_stringvar = tk.StringVar()
111-
self.log_stringvar.set('ready')
112+
self.log_stringvar.set(tr('ready'))
112113
log_entry = tk.Label(fw_label_frame, textvariable=self.log_stringvar)
113114
log_entry.grid(row=3, column=1, sticky=tk.W, padx=(0, 5), pady=(5, 5))
114115
# <<<
@@ -236,7 +237,7 @@ def download_widgets_ready(self):
236237
self.fw_download_button.config(state=tk.DISABLED)
237238
self.bar["value"] = 0
238239
self.progress_stringvar.set("{}%".format(0))
239-
self.log_stringvar.set("ready")
240+
self.log_stringvar.set(tr("ready"))
240241
self.update()
241242

242243
def download_firmware_handler(self):
@@ -255,27 +256,27 @@ def update_progress(self, payload):
255256
if payload.code == DownLoadFWApi.OK:
256257
if payload.data == "RESET":
257258
messagebox.showinfo(
258-
title='Respect!',
259-
message='请按RESET重启板子,点击“确定”继续。',
259+
title=tr('Respect'),
260+
message=tr('click RESET button, and then click "OK" continue.'),
260261
master=self
261262
)
262263
return
263264
self.progress_stringvar.set("{}%".format(payload.data))
264265
self.bar["value"] = payload.data
265-
self.log_stringvar.set('downloading...')
266+
self.log_stringvar.set(tr('downloading...'))
266267
self.update()
267268
elif payload.code == DownLoadFWApi.EXIT:
268269
if payload.exec:
269270
messagebox.showerror(
270-
title='Error',
271-
message='Download Firmware Error!\n{}'.format(str(payload.exec)),
271+
title=tr('Error'),
272+
message='{}!\n{}'.format(tr('Download Firmware Error'), str(payload.exec)),
272273
master=self
273274
)
274275
else:
275-
self.log_stringvar.set('download process exited.')
276+
self.log_stringvar.set(tr('download process exited.'))
276277
messagebox.showinfo(
277-
title='Information',
278-
message='Download Firmware Progress Finished!',
278+
title=tr('Information'),
279+
message=tr('Download Firmware Progress Finished!'),
279280
master=self
280281
)
281282
self.fw_file_choose_button.config(state=tk.ACTIVE)

0 commit comments

Comments
 (0)