cometlj / hexo-translate-title

使用Google翻译,百度翻译和有道翻译将Hexo文章中的汉字标题转成英文标题
https://cometlj.github.io
Other
43 stars 17 forks source link

发现一个小问题 #13

Open happyjared opened 6 years ago

happyjared commented 6 years ago

  当_config.yml配置使用google翻译(无代理),然后某一文章标题中带有标点符号+,使用hexo g会出错,生成的文件是异常(文件名为空,最终url后缀是.html),谷歌翻译返回的状态码是403,输出实际请求及错误例如:https://translate.google.cn/translate_a/t?client=t&sl=zh-CN&tl=en&hl=zh-CN$dt=at&dt=bd&dt=ex&dt=ld&dt=md&dt=qca&dt=rw&dt=rm&dt=ss&dt=t&ie=UTF-8&oe=UTF-8&clearbtn=1&otf=1&pc=1&ssel=0&tsel=0&kc=2&v=1.0&source=is&tk=71458.468060&q=Docker%20+%20MySQL%20(8.0.11)%20%E4%B8%BB%E4%BB%8E%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA ,查看源码中的util.js,看到那里只是对title进行了encodeURI(),但该方法似乎只作用于纯字符串。

20180703135917

注:当使用baidu_no_appid不会出错,但是url会保留这些有点小丑的标点符号

cometlj commented 6 years ago

谢谢反馈,近期会做修复

0x4C43 commented 6 years ago

每次使用 Hexo g 生成新 blog 时,会对所有的文章标题进行翻译,而 google 对同一个标题的翻译结果不同,会导致已有文章的阅读数量丢失。 image

能否对已翻译标题文章不进行再次翻译,避免该问题发生。

cometlj commented 6 years ago

@0x4C43 你好,插件在进行翻译标题时,源标题是按照blog内容中的title字段进行抓取的,不是文件名称。请确认下你的title字段有没有修改过,另外按照你的标题我在本地做了重现,翻译了几次后标题均一致。

image

image

happyjared commented 6 years ago

你好,标题中有中文冒号的情况下无法在public下生成正确的html,util.js有对title去除特殊符号但未包括中文冒号,括号和逗号等

cometlj commented 6 years ago

@happyjared 你好,同楼上问题一样,翻译的标题来源是从md文件的title字段读取的,我添加了中英文的冒号后,可以正常翻译。见下图

image

请看下你的title 设置的是什么

happyjared commented 6 years ago

@cometlj 你好,像下面这个就不行了。 hexo new HELLO+测试(一):你好 hexo g 翻译后原文是这样: 20180720163334 public目录对应是这样: 20180720163453 这种html是生成失败的。 请问把标题的所有中英文符号和英文都去掉,然后再翻译是否会更好?

happyjared commented 6 years ago

@cometlj 原文中已存在translate_title的情况下,当翻译结果跟原文里的不一致时,是否不进行覆盖会更好,这样有一部分老文章和更方便手动调整翻译?

0x4C43 commented 6 years ago

标题中存在 "+" 不能翻译的情况我也碰到过,只好把标题改了。两次翻译不一致的问题确实是存在的,赞同 @cometlj 的解决方案。 image