go-translate
go-translate copied to clipboard
能否像浏览器翻译插件那样一个段落一个段落显示翻译结果?
比如像这样:

我看了下文档,以及源代码,还是不知道如何定制这个 render
。如果你可以添加的话,能否添加下这个功能代码呢?感谢。
这里有我以前给 google-translate 实现的代码PR。可以参考下。
- https://github.com/atykhonov/google-translate/pull/119
- https://github.com/atykhonov/google-translate/pull/108
- https://github.com/atykhonov/google-translate/pull/88
后面有时间研究以下哈。不过我觉得在 emacs 中完全可以通过录制宏的方式来实现类似功能。
使用宏也是一个办法,不过它不会按照段落相间的形式显示。主要还是这个显示形式,方便一段一段看翻译进行对照。浏览器的页面翻译基本使用这种方式。
后面有时间研究以下哈。不过我觉得在 emacs 中完全可以通过录制宏的方式来实现类似功能。
宏可以录制翻译一段的动作,然后手动重复下去,但因为翻译动作是异步的,没法批量操作。
我的需求是翻译电影字幕,有几百个段落,这就不太现实了。
~~有没有办法在 texter 和 render 共享值呢,这样就可以在执行 texter 时储存位置,在 render 被调用时在原位置插入翻译。~~
试过了不行,相对位置会变化。
简单实现了一下 (#43 ),当下支持在单引擎模式下,buffer 中显式混排的原文和译文。
@lorniu 拉取了 split-text 分子测试了下,正常使用。完美了。感谢感谢,等待合并到master
@stardiviner 请测试
拉取最新的 master 分支更新,重载库,弹出报错。启用 toggle-debug-on-error:
Debugger entered--Lisp error: (wrong-type-argument listp #<gts-bing-engine gts-bing-engine-c51bf898>)
cdr(#<gts-bing-engine gts-bing-engine-c51bf898>)
(if (cdr (slot-value object 'engines)) nil (eieio-oref (car (slot-value object 'engines)) 'tag))
(gts-buffer-init-header-line (slot-value object 'path) (if (cdr (slot-value object 'engines)) nil (eieio-oref (car (slot-value object 'engines)) 'tag)))
(progn (deactivate-mark) (visual-line-mode -1) (set (make-local-variable 'cursor-type) 'hbar) (set (make-local-variable 'cursor-in-non-selected-windows) nil) (set (make-local-variable 'gts-buffer-version) (slot-value object 'version)) (gts-buffer-init-header-line (slot-value object 'path) (if (cdr (slot-value object 'engines)) nil (eieio-oref (car (slot-value object 'engines)) 'tag))) (erase-buffer) (if (gts-childframe-of-buffer (current-buffer)) nil (insert "\n")) (insert (slot-value object 'text)) (set (make-local-variable 'gts-buffer-source-text) (slot-value object 'text)) (setq gts-buffer-local-map (make-sparse-keymap)) (progn (define-key gts-buffer-local-map (kbd "C-x C-q") #'(lambda nil (interactive) (progn (read-only-mode -1) (use-local-map nil) (local-set-key ... ...)))) (if "Toggle-Readonly" (progn (cl-delete "C-x C-q" gts-buffer-keybinding-messages :key #'car :test #'string=) (setq gts-buffer-keybinding-messages (cons (cons "C-x C-q" "Toggle-Readonly") gts-buffer-keybinding-messages))))) (progn (define-key gts-buffer-local-map (kbd "M-n") #'(lambda nil (interactive) (gts-translate translator (slot-value object ...) (gts-next-path ... ... ...)))) (if "Next direction" (progn (cl-delete "M-n" gts-buffer-keybinding-messages :key #'car :test #'string=) (setq gts-buffer-keybinding-messages (cons (cons "M-n" "Next direction") gts-buffer-keybinding-messages))))) (progn (define-key gts-buffer-local-map (kbd "M-p") #'(lambda nil (interactive) (gts-translate translator (slot-value object ...) (gts-next-path ... ... ... t)))) (if "Prev direction" (progn (cl-delete "M-p" gts-buffer-keybinding-messages :key #'car :test #'string=) (setq gts-buffer-keybinding-messages (cons (cons "M-p" "Prev direction") gts-buffer-keybinding-messages))))) (progn (define-key gts-buffer-local-map (kbd "y") #'(lambda nil (interactive) (let* (...) (if eg ... ...)))) (if "TTS" (progn (cl-delete "y" gts-buffer-keybinding-messages :key #'car :test #'string=) (setq gts-buffer-keybinding-messages (cons (cons "y" "TTS") gts-buffer-keybinding-messages))))) (progn (define-key gts-buffer-local-map (kbd "g") #'(lambda nil (interactive) (gts-translate translator (slot-value object ...) (slot-value object ...)))) (if "Refresh" (progn (cl-delete "g" gts-buffer-keybinding-messages :key #'car :test #'string=) (setq gts-buffer-keybinding-messages (cons (cons "g" "Refresh") gts-buffer-keybinding-messages))))) (progn (define-key gts-buffer-local-map (kbd "x") #'(lambda nil (interactive) (gts-translate translator (slot-value object ...) (cons ... ...)))) (if "Reverse-Translate" (progn (cl-delete "x" gts-buffer-keybinding-messages :key #'car :test #'string=) (setq gts-buffer-keybinding-messages (cons (cons "x" "Reverse-Translate") gts-buffer-keybinding-messages))))) (progn (define-key gts-buffer-local-map (kbd "C") #'(lambda nil (interactive) (gts-clear-all gts-default-cacher))) (if "Clean Cache" (progn (cl-delete "C" gts-buffer-keybinding-messages :key #'car :test #'string=) (setq gts-buffer-keybinding-messages (cons (cons "C" "Clean Cache") gts-buffer-keybinding-messages))))) (progn (define-key gts-buffer-local-map (kbd "q") #'kill-buffer-and-window) (if "Quit" (progn (cl-delete "q" gts-buffer-keybinding-messages :key #'car :test #'string=) (setq gts-buffer-keybinding-messages (cons (cons "q" "Quit") gts-buffer-keybinding-messages))))) (progn (define-key gts-buffer-local-map (kbd "p") #'previous-line) (if nil (progn (cl-delete "p" gts-buffer-keybinding-messages :key #'car :test #'string=) (setq gts-buffer-keybinding-messages (cons (cons "p" nil) gts-buffer-keybinding-messages))))) (progn (define-key gts-buffer-local-map (kbd "n") #'next-line) (if nil (progn (cl-delete "n" gts-buffer-keybinding-messages :key #'car :test #'string=) (setq gts-buffer-keybinding-messages (cons (cons "n" nil) gts-buffer-keybinding-messages))))) (progn (define-key gts-buffer-local-map (kbd "C-g") #'(lambda nil (interactive) (unwind-protect (gts-tts-try-interrupt-playing-process) (keyboard-quit)))) (if nil (progn (cl-delete "C-g" gts-buffer-keybinding-messages :key #'car :test #'string=) (setq gts-buffer-keybinding-messages (cons (cons "C-g" nil) gts-buffer-keybinding-messages))))) (progn (define-key gts-buffer-local-map (kbd "t") #'(lambda nil (interactive) (message "Now, buffer following %s." (if ... "allowed" "disabled")))) (if "Toggle-Follow" (progn (cl-delete "t" gts-buffer-keybinding-messages :key #'car :test #'string=) (setq gts-buffer-keybinding-messages (cons (cons "t" "Toggle-Follow") gts-buffer-keybinding-messages))))) (progn (define-key gts-buffer-local-map (kbd "h") #'(lambda nil (interactive) (message (mapconcat ... ... " ")))) (if nil (progn (cl-delete "h" gts-buffer-keybinding-messages :key #'car :test #'string=) (setq gts-buffer-keybinding-messages (cons (cons "h" nil) gts-buffer-keybinding-messages))))) (read-only-mode 1) (use-local-map gts-buffer-local-map) (run-hooks 'gts-after-buffer-prepared-hook))
(let* ((object translator)) (progn (deactivate-mark) (visual-line-mode -1) (set (make-local-variable 'cursor-type) 'hbar) (set (make-local-variable 'cursor-in-non-selected-windows) nil) (set (make-local-variable 'gts-buffer-version) (slot-value object 'version)) (gts-buffer-init-header-line (slot-value object 'path) (if (cdr (slot-value object 'engines)) nil (eieio-oref (car (slot-value object 'engines)) 'tag))) (erase-buffer) (if (gts-childframe-of-buffer (current-buffer)) nil (insert "\n")) (insert (slot-value object 'text)) (set (make-local-variable 'gts-buffer-source-text) (slot-value object 'text)) (setq gts-buffer-local-map (make-sparse-keymap)) (progn (define-key gts-buffer-local-map (kbd "C-x C-q") #'(lambda nil (interactive) (progn (read-only-mode -1) (use-local-map nil) (local-set-key ... ...)))) (if "Toggle-Readonly" (progn (cl-delete "C-x C-q" gts-buffer-keybinding-messages :key #'car :test #'string=) (setq gts-buffer-keybinding-messages (cons (cons "C-x C-q" "Toggle-Readonly") gts-buffer-keybinding-messages))))) (progn (define-key gts-buffer-local-map (kbd "M-n") #'(lambda nil (interactive) (gts-translate translator (slot-value object ...) (gts-next-path ... ... ...)))) (if "Next direction" (progn (cl-delete "M-n" gts-buffer-keybinding-messages :key #'car :test #'string=) (setq gts-buffer-keybinding-messages (cons (cons "M-n" "Next direction") gts-buffer-keybinding-messages))))) (progn (define-key gts-buffer-local-map (kbd "M-p") #'(lambda nil (interactive) (gts-translate translator (slot-value object ...) (gts-next-path ... ... ... t)))) (if "Prev direction" (progn (cl-delete "M-p" gts-buffer-keybinding-messages :key #'car :test #'string=) (setq gts-buffer-keybinding-messages (cons (cons "M-p" "Prev direction") gts-buffer-keybinding-messages))))) (progn (define-key gts-buffer-local-map (kbd "y") #'(lambda nil (interactive) (let* (...) (if eg ... ...)))) (if "TTS" (progn (cl-delete "y" gts-buffer-keybinding-messages :key #'car :test #'string=) (setq gts-buffer-keybinding-messages (cons (cons "y" "TTS") gts-buffer-keybinding-messages))))) (progn (define-key gts-buffer-local-map (kbd "g") #'(lambda nil (interactive) (gts-translate translator (slot-value object ...) (slot-value object ...)))) (if "Refresh" (progn (cl-delete "g" gts-buffer-keybinding-messages :key #'car :test #'string=) (setq gts-buffer-keybinding-messages (cons (cons "g" "Refresh") gts-buffer-keybinding-messages))))) (progn (define-key gts-buffer-local-map (kbd "x") #'(lambda nil (interactive) (gts-translate translator (slot-value object ...) (cons ... ...)))) (if "Reverse-Translate" (progn (cl-delete "x" gts-buffer-keybinding-messages :key #'car :test #'string=) (setq gts-buffer-keybinding-messages (cons (cons "x" "Reverse-Translate") gts-buffer-keybinding-messages))))) (progn (define-key gts-buffer-local-map (kbd "C") #'(lambda nil (interactive) (gts-clear-all gts-default-cacher))) (if "Clean Cache" (progn (cl-delete "C" gts-buffer-keybinding-messages :key #'car :test #'string=) (setq gts-buffer-keybinding-messages (cons (cons "C" "Clean Cache") gts-buffer-keybinding-messages))))) (progn (define-key gts-buffer-local-map (kbd "q") #'kill-buffer-and-window) (if "Quit" (progn (cl-delete "q" gts-buffer-keybinding-messages :key #'car :test #'string=) (setq gts-buffer-keybinding-messages (cons (cons "q" "Quit") gts-buffer-keybinding-messages))))) (progn (define-key gts-buffer-local-map (kbd "p") #'previous-line) (if nil (progn (cl-delete "p" gts-buffer-keybinding-messages :key #'car :test #'string=) (setq gts-buffer-keybinding-messages (cons (cons "p" nil) gts-buffer-keybinding-messages))))) (progn (define-key gts-buffer-local-map (kbd "n") #'next-line) (if nil (progn (cl-delete "n" gts-buffer-keybinding-messages :key #'car :test #'string=) (setq gts-buffer-keybinding-messages (cons (cons "n" nil) gts-buffer-keybinding-messages))))) (progn (define-key gts-buffer-local-map (kbd "C-g") #'(lambda nil (interactive) (unwind-protect (gts-tts-try-interrupt-playing-process) (keyboard-quit)))) (if nil (progn (cl-delete "C-g" gts-buffer-keybinding-messages :key #'car :test #'string=) (setq gts-buffer-keybinding-messages (cons (cons "C-g" nil) gts-buffer-keybinding-messages))))) (progn (define-key gts-buffer-local-map (kbd "t") #'(lambda nil (interactive) (message "Now, buffer following %s." (if ... "allowed" "disabled")))) (if "Toggle-Follow" (progn (cl-delete "t" gts-buffer-keybinding-messages :key #'car :test #'string=) (setq gts-buffer-keybinding-messages (cons (cons "t" "Toggle-Follow") gts-buffer-keybinding-messages))))) (progn (define-key gts-buffer-local-map (kbd "h") #'(lambda nil (interactive) (message (mapconcat ... ... " ")))) (if nil (progn (cl-delete "h" gts-buffer-keybinding-messages :key #'car :test #'string=) (setq gts-buffer-keybinding-messages (cons (cons "h" nil) gts-buffer-keybinding-messages))))) (read-only-mode 1) (use-local-map gts-buffer-local-map) (run-hooks 'gts-after-buffer-prepared-hook)))
(let ((inhibit-read-only t)) (let* ((object translator)) (progn (deactivate-mark) (visual-line-mode -1) (set (make-local-variable 'cursor-type) 'hbar) (set (make-local-variable 'cursor-in-non-selected-windows) nil) (set (make-local-variable 'gts-buffer-version) (slot-value object 'version)) (gts-buffer-init-header-line (slot-value object 'path) (if (cdr (slot-value object 'engines)) nil (eieio-oref (car (slot-value object ...)) 'tag))) (erase-buffer) (if (gts-childframe-of-buffer (current-buffer)) nil (insert "\n")) (insert (slot-value object 'text)) (set (make-local-variable 'gts-buffer-source-text) (slot-value object 'text)) (setq gts-buffer-local-map (make-sparse-keymap)) (progn (define-key gts-buffer-local-map (kbd "C-x C-q") #'(lambda nil (interactive) (progn ... ... ...))) (if "Toggle-Readonly" (progn (cl-delete "C-x C-q" gts-buffer-keybinding-messages :key #'car :test #'string=) (setq gts-buffer-keybinding-messages (cons ... gts-buffer-keybinding-messages))))) (progn (define-key gts-buffer-local-map (kbd "M-n") #'(lambda nil (interactive) (gts-translate translator ... ...))) (if "Next direction" (progn (cl-delete "M-n" gts-buffer-keybinding-messages :key #'car :test #'string=) (setq gts-buffer-keybinding-messages (cons ... gts-buffer-keybinding-messages))))) (progn (define-key gts-buffer-local-map (kbd "M-p") #'(lambda nil (interactive) (gts-translate translator ... ...))) (if "Prev direction" (progn (cl-delete "M-p" gts-buffer-keybinding-messages :key #'car :test #'string=) (setq gts-buffer-keybinding-messages (cons ... gts-buffer-keybinding-messages))))) (progn (define-key gts-buffer-local-map (kbd "y") #'(lambda nil (interactive) (let* ... ...))) (if "TTS" (progn (cl-delete "y" gts-buffer-keybinding-messages :key #'car :test #'string=) (setq gts-buffer-keybinding-messages (cons ... gts-buffer-keybinding-messages))))) (progn (define-key gts-buffer-local-map (kbd "g") #'(lambda nil (interactive) (gts-translate translator ... ...))) (if "Refresh" (progn (cl-delete "g" gts-buffer-keybinding-messages :key #'car :test #'string=) (setq gts-buffer-keybinding-messages (cons ... gts-buffer-keybinding-messages))))) (progn (define-key gts-buffer-local-map (kbd "x") #'(lambda nil (interactive) (gts-translate translator ... ...))) (if "Reverse-Translate" (progn (cl-delete "x" gts-buffer-keybinding-messages :key #'car :test #'string=) (setq gts-buffer-keybinding-messages (cons ... gts-buffer-keybinding-messages))))) (progn (define-key gts-buffer-local-map (kbd "C") #'(lambda nil (interactive) (gts-clear-all gts-default-cacher))) (if "Clean Cache" (progn (cl-delete "C" gts-buffer-keybinding-messages :key #'car :test #'string=) (setq gts-buffer-keybinding-messages (cons ... gts-buffer-keybinding-messages))))) (progn (define-key gts-buffer-local-map (kbd "q") #'kill-buffer-and-window) (if "Quit" (progn (cl-delete "q" gts-buffer-keybinding-messages :key #'car :test #'string=) (setq gts-buffer-keybinding-messages (cons ... gts-buffer-keybinding-messages))))) (progn (define-key gts-buffer-local-map (kbd "p") #'previous-line) (if nil (progn (cl-delete "p" gts-buffer-keybinding-messages :key #'car :test #'string=) (setq gts-buffer-keybinding-messages (cons ... gts-buffer-keybinding-messages))))) (progn (define-key gts-buffer-local-map (kbd "n") #'next-line) (if nil (progn (cl-delete "n" gts-buffer-keybinding-messages :key #'car :test #'string=) (setq gts-buffer-keybinding-messages (cons ... gts-buffer-keybinding-messages))))) (progn (define-key gts-buffer-local-map (kbd "C-g") #'(lambda nil (interactive) (unwind-protect ... ...))) (if nil (progn (cl-delete "C-g" gts-buffer-keybinding-messages :key #'car :test #'string=) (setq gts-buffer-keybinding-messages (cons ... gts-buffer-keybinding-messages))))) (progn (define-key gts-buffer-local-map (kbd "t") #'(lambda nil (interactive) (message "Now, buffer following %s." ...))) (if "Toggle-Follow" (progn (cl-delete "t" gts-buffer-keybinding-messages :key #'car :test #'string=) (setq gts-buffer-keybinding-messages (cons ... gts-buffer-keybinding-messages))))) (progn (define-key gts-buffer-local-map (kbd "h") #'(lambda nil (interactive) (message ...))) (if nil (progn (cl-delete "h" gts-buffer-keybinding-messages :key #'car :test #'string=) (setq gts-buffer-keybinding-messages (cons ... gts-buffer-keybinding-messages))))) (read-only-mode 1) (use-local-map gts-buffer-local-map) (run-hooks 'gts-after-buffer-prepared-hook))))
(save-current-buffer (set-buffer (get-buffer-create buffer)) (let ((inhibit-read-only t)) (let* ((object translator)) (progn (deactivate-mark) (visual-line-mode -1) (set (make-local-variable 'cursor-type) 'hbar) (set (make-local-variable 'cursor-in-non-selected-windows) nil) (set (make-local-variable 'gts-buffer-version) (slot-value object 'version)) (gts-buffer-init-header-line (slot-value object 'path) (if (cdr (slot-value object ...)) nil (eieio-oref (car ...) 'tag))) (erase-buffer) (if (gts-childframe-of-buffer (current-buffer)) nil (insert "\n")) (insert (slot-value object 'text)) (set (make-local-variable 'gts-buffer-source-text) (slot-value object 'text)) (setq gts-buffer-local-map (make-sparse-keymap)) (progn (define-key gts-buffer-local-map (kbd "C-x C-q") #'(lambda nil ... ...)) (if "Toggle-Readonly" (progn (cl-delete "C-x C-q" gts-buffer-keybinding-messages :key ... :test ...) (setq gts-buffer-keybinding-messages ...)))) (progn (define-key gts-buffer-local-map (kbd "M-n") #'(lambda nil ... ...)) (if "Next direction" (progn (cl-delete "M-n" gts-buffer-keybinding-messages :key ... :test ...) (setq gts-buffer-keybinding-messages ...)))) (progn (define-key gts-buffer-local-map (kbd "M-p") #'(lambda nil ... ...)) (if "Prev direction" (progn (cl-delete "M-p" gts-buffer-keybinding-messages :key ... :test ...) (setq gts-buffer-keybinding-messages ...)))) (progn (define-key gts-buffer-local-map (kbd "y") #'(lambda nil ... ...)) (if "TTS" (progn (cl-delete "y" gts-buffer-keybinding-messages :key ... :test ...) (setq gts-buffer-keybinding-messages ...)))) (progn (define-key gts-buffer-local-map (kbd "g") #'(lambda nil ... ...)) (if "Refresh" (progn (cl-delete "g" gts-buffer-keybinding-messages :key ... :test ...) (setq gts-buffer-keybinding-messages ...)))) (progn (define-key gts-buffer-local-map (kbd "x") #'(lambda nil ... ...)) (if "Reverse-Translate" (progn (cl-delete "x" gts-buffer-keybinding-messages :key ... :test ...) (setq gts-buffer-keybinding-messages ...)))) (progn (define-key gts-buffer-local-map (kbd "C") #'(lambda nil ... ...)) (if "Clean Cache" (progn (cl-delete "C" gts-buffer-keybinding-messages :key ... :test ...) (setq gts-buffer-keybinding-messages ...)))) (progn (define-key gts-buffer-local-map (kbd "q") #'kill-buffer-and-window) (if "Quit" (progn (cl-delete "q" gts-buffer-keybinding-messages :key ... :test ...) (setq gts-buffer-keybinding-messages ...)))) (progn (define-key gts-buffer-local-map (kbd "p") #'previous-line) (if nil (progn (cl-delete "p" gts-buffer-keybinding-messages :key ... :test ...) (setq gts-buffer-keybinding-messages ...)))) (progn (define-key gts-buffer-local-map (kbd "n") #'next-line) (if nil (progn (cl-delete "n" gts-buffer-keybinding-messages :key ... :test ...) (setq gts-buffer-keybinding-messages ...)))) (progn (define-key gts-buffer-local-map (kbd "C-g") #'(lambda nil ... ...)) (if nil (progn (cl-delete "C-g" gts-buffer-keybinding-messages :key ... :test ...) (setq gts-buffer-keybinding-messages ...)))) (progn (define-key gts-buffer-local-map (kbd "t") #'(lambda nil ... ...)) (if "Toggle-Follow" (progn (cl-delete "t" gts-buffer-keybinding-messages :key ... :test ...) (setq gts-buffer-keybinding-messages ...)))) (progn (define-key gts-buffer-local-map (kbd "h") #'(lambda nil ... ...)) (if nil (progn (cl-delete "h" gts-buffer-keybinding-messages :key ... :test ...) (setq gts-buffer-keybinding-messages ...)))) (read-only-mode 1) (use-local-map gts-buffer-local-map) (run-hooks 'gts-after-buffer-prepared-hook)))))
gts-render-buffer-prepare("*Go-Translate*" #<gts-translator gts-translator-c509ecd8>)
(progn (gts-render-buffer-prepare gts-buffer-name translator) (let ((split-width-threshold (or gts-split-width-threshold split-width-threshold))) (display-buffer gts-buffer-name gts-buffer-window-config)))
(progn (progn (gts-render-buffer-prepare gts-buffer-name translator) (let ((split-width-threshold (or gts-split-width-threshold split-width-threshold))) (display-buffer gts-buffer-name gts-buffer-window-config))))
(closure (url-http-end-of-headers t) (_ translator) (progn (progn (gts-render-buffer-prepare gts-buffer-name translator) (let ((split-width-threshold (or gts-split-width-threshold split-width-threshold))) (display-buffer gts-buffer-name gts-buffer-window-config)))))(#<gts-buffer-render gts-buffer-render-c16df8a8> #<gts-translator gts-translator-c509ecd8>)
apply((closure (url-http-end-of-headers t) (_ translator) (progn (progn (gts-render-buffer-prepare gts-buffer-name translator) (let ((split-width-threshold (or gts-split-width-threshold split-width-threshold))) (display-buffer gts-buffer-name gts-buffer-window-config))))) (#<gts-buffer-render gts-buffer-render-c16df8a8> #<gts-translator gts-translator-c509ecd8>))
#f(compiled-function (&rest args) #<bytecode 0x170935f3e3f50c41>)(#<gts-buffer-render gts-buffer-render-c16df8a8> #<gts-translator gts-translator-c509ecd8>)
apply(#f(compiled-function (&rest args) #<bytecode 0x170935f3e3f50c41>) #<gts-buffer-render gts-buffer-render-c16df8a8> #<gts-translator gts-translator-c509ecd8>)
#f(compiled-function (arg &rest args) #<bytecode -0x179cfeaea7ea84fc>)(#<gts-buffer-render gts-buffer-render-c16df8a8> #<gts-translator gts-translator-c509ecd8>)
apply(#f(compiled-function (arg &rest args) #<bytecode -0x179cfeaea7ea84fc>) #<gts-buffer-render gts-buffer-render-c16df8a8> #<gts-translator gts-translator-c509ecd8> nil)
gts-pre(#<gts-buffer-render gts-buffer-render-c16df8a8> #<gts-translator gts-translator-c509ecd8>)
(let ((task (car tasks))) (gts-pre render this) (gts-translate (car engines) task #'(lambda nil (save-current-buffer (set-buffer buf) (gts-out render task)))))
(if (not (cdr engines)) (let ((task (car tasks))) (gts-pre render this) (gts-translate (car engines) task #'(lambda nil (save-current-buffer (set-buffer buf) (gts-out render task))))) (gts-me-pre render this) (let ((tail tasks)) (while tail (let ((task (car tail))) (condition-case er (gts-translate (eieio-oref task 'engine) task #'(lambda nil ...)) (error (gts-render-fail task er))) (setq tail (cdr tail))))) (gts-me-out render (gts-task :text text :from (car path) :to (cdr path) :translator this)))
(let ((buf (current-buffer)) (render-name (eieio-object-class-name render))) (if (not (cdr engines)) (let ((task (car tasks))) (gts-pre render this) (gts-translate (car engines) task #'(lambda nil (save-current-buffer (set-buffer buf) (gts-out render task))))) (gts-me-pre render this) (let ((tail tasks)) (while tail (let ((task (car tail))) (condition-case er (gts-translate (eieio-oref task ...) task #'...) (error (gts-render-fail task er))) (setq tail (cdr tail))))) (gts-me-out render (gts-task :text text :from (car path) :to (cdr path) :translator this))))
(let* ((--cl-var-- (gts-get this 'engines 'render 'task-queue 'text 'path)) (engines (nth 0 --cl-var--)) (render (nth 1 --cl-var--)) (tasks (nth 2 --cl-var--)) (text (nth 3 --cl-var--)) (path (nth 4 --cl-var--))) (let ((buf (current-buffer)) (render-name (eieio-object-class-name render))) (if (not (cdr engines)) (let ((task (car tasks))) (gts-pre render this) (gts-translate (car engines) task #'(lambda nil (save-current-buffer ... ...)))) (gts-me-pre render this) (let ((tail tasks)) (while tail (let ((task ...)) (condition-case er (gts-translate ... task ...) (error ...)) (setq tail (cdr tail))))) (gts-me-out render (gts-task :text text :from (car path) :to (cdr path) :translator this)))))
(progn (setq gts-current-command this-command) (gts-init this text path) (let* ((--cl-var-- (gts-get this 'engines 'render 'task-queue 'text 'path)) (engines (nth 0 --cl-var--)) (render (nth 1 --cl-var--)) (tasks (nth 2 --cl-var--)) (text (nth 3 --cl-var--)) (path (nth 4 --cl-var--))) (let ((buf (current-buffer)) (render-name (eieio-object-class-name render))) (if (not (cdr engines)) (let ((task (car tasks))) (gts-pre render this) (gts-translate (car engines) task #'(lambda nil ...))) (gts-me-pre render this) (let ((tail tasks)) (while tail (let (...) (condition-case er ... ...) (setq tail ...)))) (gts-me-out render (gts-task :text text :from (car path) :to (cdr path) :translator this))))))
(progn (progn (setq gts-current-command this-command) (gts-init this text path) (let* ((--cl-var-- (gts-get this 'engines 'render 'task-queue 'text 'path)) (engines (nth 0 --cl-var--)) (render (nth 1 --cl-var--)) (tasks (nth 2 --cl-var--)) (text (nth 3 --cl-var--)) (path (nth 4 --cl-var--))) (let ((buf (current-buffer)) (render-name (eieio-object-class-name render))) (if (not (cdr engines)) (let ((task ...)) (gts-pre render this) (gts-translate (car engines) task #'...)) (gts-me-pre render this) (let ((tail tasks)) (while tail (let ... ... ...))) (gts-me-out render (gts-task :text text :from (car path) :to (cdr path) :translator this)))))))
(closure (t) (this &optional text path) "Fire a translation for THIS translator instance.\nI..." (progn (progn (setq gts-current-command this-command) (gts-init this text path) (let* ((--cl-var-- (gts-get this ... ... ... ... ...)) (engines (nth 0 --cl-var--)) (render (nth 1 --cl-var--)) (tasks (nth 2 --cl-var--)) (text (nth 3 --cl-var--)) (path (nth 4 --cl-var--))) (let ((buf ...) (render-name ...)) (if (not ...) (let ... ... ...) (gts-me-pre render this) (let ... ...) (gts-me-out render ...)))))))(#<gts-translator gts-translator-c509ecd8>)
apply((closure (t) (this &optional text path) "Fire a translation for THIS translator instance.\nI..." (progn (progn (setq gts-current-command this-command) (gts-init this text path) (let* ((--cl-var-- (gts-get this ... ... ... ... ...)) (engines (nth 0 --cl-var--)) (render (nth 1 --cl-var--)) (tasks (nth 2 --cl-var--)) (text (nth 3 --cl-var--)) (path (nth 4 --cl-var--))) (let ((buf ...) (render-name ...)) (if (not ...) (let ... ... ...) (gts-me-pre render this) (let ... ...) (gts-me-out render ...))))))) #<gts-translator gts-translator-c509ecd8> nil)
gts-translate(#<gts-translator gts-translator-c509ecd8>)
gts-do-translate()
funcall-interactively(gts-do-translate)
call-interactively(gts-do-translate nil nil)
command-execute(gts-do-translate)
@stardiviner 已修正
已验证可用正常了。感谢🙏大佬