go-translate icon indicating copy to clipboard operation
go-translate copied to clipboard

能否像浏览器翻译插件那样一个段落一个段落显示翻译结果?

Open stardiviner opened this issue 2 years ago • 4 comments

比如像这样:

Screen Shot 2022-03-21 at 18 12 38

我看了下文档,以及源代码,还是不知道如何定制这个 render 。如果你可以添加的话,能否添加下这个功能代码呢?感谢。

stardiviner avatar Mar 21 '22 10:03 stardiviner

这里有我以前给 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

stardiviner avatar Mar 21 '22 10:03 stardiviner

后面有时间研究以下哈。不过我觉得在 emacs 中完全可以通过录制宏的方式来实现类似功能。

lorniu avatar Apr 04 '22 12:04 lorniu

使用宏也是一个办法,不过它不会按照段落相间的形式显示。主要还是这个显示形式,方便一段一段看翻译进行对照。浏览器的页面翻译基本使用这种方式。

stardiviner avatar Apr 04 '22 12:04 stardiviner

后面有时间研究以下哈。不过我觉得在 emacs 中完全可以通过录制宏的方式来实现类似功能。

宏可以录制翻译一段的动作,然后手动重复下去,但因为翻译动作是异步的,没法批量操作。

我的需求是翻译电影字幕,有几百个段落,这就不太现实了。

~~有没有办法在 texter 和 render 共享值呢,这样就可以在执行 texter 时储存位置,在 render 被调用时在原位置插入翻译。~~

试过了不行,相对位置会变化。

whitemuu avatar Sep 25 '22 12:09 whitemuu

简单实现了一下 (#43 ),当下支持在单引擎模式下,buffer 中显式混排的原文和译文。

lorniu avatar Nov 02 '22 16:11 lorniu

@lorniu 拉取了 split-text 分子测试了下,正常使用。完美了。感谢感谢,等待合并到master

stardiviner avatar Nov 03 '22 01:11 stardiviner

@stardiviner 请测试

lorniu avatar Nov 07 '22 14:11 lorniu

拉取最新的 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 avatar Nov 07 '22 15:11 stardiviner

@stardiviner 已修正

lorniu avatar Nov 07 '22 16:11 lorniu

已验证可用正常了。感谢🙏大佬

stardiviner avatar Nov 07 '22 23:11 stardiviner