Skip to content

Commit

Permalink
fix: 多语言
Browse files Browse the repository at this point in the history
  • Loading branch information
yuhldr committed Nov 21, 2024
1 parent 8d9fca2 commit c950496
Show file tree
Hide file tree
Showing 9 changed files with 526 additions and 362 deletions.
4 changes: 3 additions & 1 deletion lfy-qt.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,8 @@
icon = QIcon.fromTheme(APP_ID)
window = TranslateWindow()
window.setWindowIcon(icon)
TrayIcon(window, app, icon).show()
tray = TrayIcon(window, app, icon)
tray.show()
window.tray = tray
window.show()
sys.exit(app.exec())
21 changes: 21 additions & 0 deletions lfy/api/utils/__init__.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,26 @@
'工具'
import hashlib
import re


# pylint: disable=E1101
def process_text(text):
"""文本预处理
Args:
text (str): _description_
Returns:
str: _description_
"""
# 删除空行
s_from = re.sub(r'\n\s*\n', '\n', text)
# 删除多余空格
s_from = re.sub(r' +', ' ', s_from)
# 删除所有换行,除了句号后面的换行
s_from = re.sub(r"-[\n|\r]+", "", s_from)
s_from = re.sub(r"(?<!\.|-|。)[\n|\r]+", " ", s_from)
return s_from


def s2ks(s):
Expand Down
35 changes: 9 additions & 26 deletions lfy/gtk/translate.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
'''翻译主窗口'''

import re
import threading
import time
import traceback
Expand All @@ -13,33 +12,13 @@
lang_n2j, server_key2i)
from lfy.api.constant import NO_TRANSLATED_TXTS
from lfy.api.server import Server
from lfy.api.utils import cal_md5
from lfy.api.utils import cal_md5, process_text
from lfy.api.utils.debug import get_logger
from lfy.api.utils.settings import Settings
from lfy.gtk.notify import nf_t
from lfy.gtk.widgets.theme_switcher import ThemeSwitcher


# pylint: disable=E1101
def process_text(text):
"""文本预处理
Args:
text (str): _description_
Returns:
str: _description_
"""
# 删除空行
s_from = re.sub(r'\n\s*\n', '\n', text)
# 删除多余空格
s_from = re.sub(r' +', ' ', s_from)
# 删除所有换行,除了句号后面的换行
s_from = re.sub(r"-[\n|\r]+", "", s_from)
s_from = re.sub(r"(?<!\.|-|。)[\n|\r]+", " ", s_from)
return s_from


@Gtk.Template(resource_path='/cool/ldr/lfy/translate.ui')
class TranslateWindow(Adw.ApplicationWindow):
"""翻译窗口
Expand Down Expand Up @@ -84,15 +63,18 @@ def __init__(self, **kwargs):
self.toast.set_timeout(2)

i = server_key2i(self.setting.g("server-selected-key"))
self.tran_server = create_server_t(self.setting.g("server-selected-key"))
self.ocr_server = create_server_o(self.setting.g("server-ocr-selected-key"))
self.tran_server = create_server_t(
self.setting.g("server-selected-key"))
self.ocr_server = create_server_o(
self.setting.g("server-ocr-selected-key"))
self.jn = True

self.dd_server.set_model(Gtk.StringList.new(get_server_names_t()))
self.dd_server.set_selected(i)

self.dd_lang.set_model(Gtk.StringList.new(get_lang_names(i)))
self.dd_lang.set_selected(lang_n2j(i, self.setting.g("lang-selected-n")))
self.dd_lang.set_selected(
lang_n2j(i, self.setting.g("lang-selected-n")))

self.menu_btn.props.popover.add_child(ThemeSwitcher(), 'theme')

Expand Down Expand Up @@ -170,7 +152,8 @@ def save_settings(self, _a):
print("......", self.paned_position, h,
h-self.paned_position, h1)
if self.paned_position not in (0, h1, int(h/5*2)):
self.setting.s("translate-paned-position", self.paned_position/1.0)
self.setting.s("translate-paned-position",
self.paned_position/1.0)
print("xxxx")

i = self.dd_server.get_selected()
Expand Down
File renamed without changes.
57 changes: 34 additions & 23 deletions lfy/qt/translate.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,9 @@
get_lang_names, get_server_names_t, get_server_t,
lang_n2j, server_key2i)
from lfy.api.server import Server
from lfy.api.utils import process_text
from lfy.api.utils.settings import Settings
from lfy.qt.utils import MyThread
from lfy.qt import MyThread


class TranslateWindow(QMainWindow):
Expand Down Expand Up @@ -45,9 +46,14 @@ def __init__(self):
self.cb_lang.currentIndexChanged.connect(self._on_lang_changed)

# 右边的两个选择按钮
self.cb_del_wrapping = QCheckBox("", self)
self.cb_add_old = QCheckBox("", self)
# 普通按钮
self.cb_del_wrapping = QCheckBox(_("Process"), self)
self.cb_del_wrapping.setToolTip(_(
"Alt + D: Remove symbols such as line breaks"))

self.cb_add_old = QCheckBox(_("Append"), self)
self.cb_add_old.setToolTip(_(
"Alt + C: Splice the next copied text with the previous text"))

self.btn_translate = QPushButton(_("translate"), self)

middle_layout.addWidget(self.cb_server)
Expand All @@ -71,19 +77,16 @@ def __init__(self):
self.jn = False
self.server_t = None
self.lang_t = None
self.thread = None
self.my_thread = None
self.tray = None
self.text_last = ""

self.set_data()

def set_data(self):
self.s = Settings()

self.btn_translate.clicked.connect(self.translate_text)
self.cb_add_old.setToolTip(_(
"Alt + C: Splice the next copied text with the previous text"))

self.cb_del_wrapping.setToolTip(_(
"Alt + D: Remove symbols such as line breaks"))

server_key_t = self.s.g("server-selected-key", "bing")
server_key_o = self.s.g("server_ocr_selected_key", "baidu")
Expand All @@ -98,6 +101,7 @@ def set_data(self):
j = lang_n2j(i, n)
self.lang_t = get_lang(i, j)
self.cb_lang.setCurrentIndex(j)
self.cb_del_wrapping.setChecked(True)

def _on_server_changed(self):
i = self.cb_server.currentIndex()
Expand Down Expand Up @@ -127,44 +131,51 @@ def _on_lang_changed(self):

def ocr_image(self, img_path):
def oo(p=None):
print(p)
_ok, text_from = self.server_o.ocr_image(
img_path, self.lang_t.key)
return (_ok, text_from)

def next_(param):
_ok, s = param
if not _ok:
self.set_ui((s, "文本识别失败!"))
self.set_text_from_to((s, "文本识别失败!"))
return
self.set_ui((s, "文本识别成功!"))
self.set_text_from_to((s, "文本识别成功!"))
self.translate_text()

self.set_ui(("识别中", "..."))
self.thread = MyThread(oo)
self.thread.signal.connect(next_)
self.thread.start()
self.set_text_from_to(("识别中...", "识别中..."))
self.my_thread = MyThread(oo)
self.my_thread.signal.connect(next_)
self.my_thread.start()

def set_text_from_to(self, text):
text_from, text_to = text
self.te_from.setPlainText(text_from)
self.te_to.setPlainText(text_to)
self.thread = None

if "..." != text_to[-3:]:
self.my_thread = None
self.tray.show_msg("翻译成功!", text_to)
self.text_last = text_from

def translate_text(self):
text_from = self.te_from.toPlainText()
if self.cb_del_wrapping.isChecked():
text_from = process_text(text_from)

if self.cb_add_old.isChecked():
text_from = self.text_last + text_from

if not text_from:
print("no")
return

def tt(p=None):
print(p)
_ok, text_to = self.server_t.translate_text(
text_from, self.lang_t.key)
return (text_from, text_to)

self.set_text_from_to((text_from, "翻译中..."))

self.thread = MyThread(tt)
self.thread.signal.connect(self.set_text_from_to)
self.thread.start()
self.my_thread = MyThread(tt)
self.my_thread.signal.connect(self.set_text_from_to)
self.my_thread.start()
4 changes: 4 additions & 0 deletions lfy/qt/tray.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,10 @@ def show_about_window(self):
def show_setting_window(self):
PreferenceWindow().exec()

def show_msg(self, title, msg):
self.showMessage(
title, msg, QSystemTrayIcon.MessageIcon.Information, 2000)


class AboutWindow(QDialog):
def __init__(self):
Expand Down
26 changes: 16 additions & 10 deletions po/POTFILES
Original file line number Diff line number Diff line change
@@ -1,12 +1,19 @@
data/cool.ldr.lfy.in.in.desktop
data/cool.ldr.lfy.in.gschema.xml
data/resources/cool.ldr.lfy.in.appdata.xml
data/gtk/cool.ldr.lfy.in.gschema.xml
data/gtk/cool.ldr.lfy.in.appdata.xml

lfy.py
lfy/main.py
lfy/code.py
lfy/preference.py
lfy/translate.py

lfy/gtk/main.py
lfy/gtk/notify.py
lfy/gtk/preference.py
lfy/gtk/translate.py
lfy/gtk/widgets/server_preferences.py

lfy/qt/preference.py
lfy/qt/translate.py
lfy/qt/tray.py

lfy/api/__init__.py
lfy/api/utils/__init__.py
Expand All @@ -23,9 +30,8 @@ lfy/api/server/tra/huoshan.py
lfy/api/server/ocr/baidu.py
lfy/api/server/ocr/easyocr.py
lfy/api/server/ocr/pytesseract.py
lfy/widgets/server_preferences.py

data/resources/translate.ui
data/resources/server-preferences.ui
data/resources/preference.ui
data/resources/help-overlay.ui
data/gtk/translate.ui
data/gtk/server-preferences.ui
data/gtk/preference.ui
data/gtk/help-overlay.ui
Loading

0 comments on commit c950496

Please sign in to comment.