lorniu / go-translate

Translator on Emacs. Supports multiple engines such as Google, Bing, deepL, ChatGPT, StarDict, Youdao and so on.
GNU General Public License v3.0
274 stars 37 forks source link

reuse last translate path #37

Closed QiangF closed 1 year ago

QiangF commented 2 years ago

Fix https://github.com/lorniu/go-translate/issues/35

QiangF commented 2 years ago

The issue is that the gts-matched-paths is not always correct, the user's choice should be respected and remembered in case the guessed path is wrong. Instead of starting from the wrong match every time.

lorniu commented 2 years ago

You can turn off auto judge by executing (setq gts-picker-lang-match-alist nil).

Please test and report the result.

QiangF commented 2 years ago

auto judge is nice. I would rather keep it. My fix just adds the fallback behavior.

lorniu commented 1 year ago

你看看我最新的修改 95804f3 能不能符合预期。

QiangF commented 1 year ago

好像不行,比如下面的俄文:

Товары

重现步骤

  1. 配置 (setq gts-translate-list '(("en" . "zh") ("ru" . "en") ("ja" . "en") ("de" . "en") ("fr" . "en")))
  2. put point on Товары and do gts-do-translate
  3. 移到下一个ru->en:M-n
  4. 退出重来 put point on Товары and do gts-do-translate

See? ru->en选项没有在最前面

想要的状态,步骤4,不需要再使用移到下一个ru->en:M-n

QiangF commented 1 year ago

你可以试试我的改动,是可以的。你的包用了很多高级功能,对初学者不太友好,难度这就是所谓的:lisp的诅咒 :-)

lorniu commented 1 year ago

我这里测试可以啊?试了好几次,ru->en 都会到最前面。奇怪。

QiangF commented 1 year ago

我这边还是不行 :

1. emacs -q
2. load go-translate
3. config :
(setq gts-google-rpc-base-url "https://translate.google.cn"
      gts-translate-list '(("en" . "zh")
                           ("ru" . "en")
                           ("ja" . "en")
                           ("de" . "en")
                           ("fr" . "en")))
(setq gts-default-translator
      (gts-translator
       :picker (gts-noprompt-picker)
       :engines (gts-google-engine)
       :render (gts-buffer-render)))
4. gts-do-translate on Товары
QiangF commented 1 year ago

找到问题了,在那个translate buffer, 按M-n,应该保存当前的path到last path

出现的时间顺序

  1. gts-do-translate 此时默认 zh-en
  2. 在popup buffer里M-n ,此时是 ru-en
  3. q 用户退出,我希望把 ru-en 保存到 last path

实际根本没有保存,原代码很绕,没看明白:

    (gts-buffer-set-key ("M-n" "Next direction")
      (let* ((picker (let ((op (oref translator picker)))
                       (if (functionp op) (funcall op) op)))
             (next (gts-next-path picker text from to)))
        (gts-translate translator text (car next) (cdr next))))
QiangF commented 1 year ago

如果加上自动识别,默认最好是 picker (gts-noprompt-picker),至少每次少敲个回车键,所以这个不合理,M-n后保存才合理 “是不是只有 gts-picker 选取之后再修改 gts-picker-last-path 才更合理”

 (setq gts-default-translator
       (gts-translator
        :picker (gts-noprompt-picker)
        :engines (gts-google-engine)
        :render (gts-buffer-render)))
lorniu commented 1 year ago

明白了。已更新,请测试。

QiangF commented 1 year ago

高手,厉害!