本文主要讨论Hexo如何最简单地实现国际化,而且该方法适用性很高,对使用哪种主题我个人认为没有什么要求

理想解决方案

在主页存在一个按钮,通过单击该按钮可以实现一键切换语言的页面(本博客示例将是中英文)。同时该方法的实现不需要新买一个域名。

值得注意的是,该方法不是直接翻译,所以需要同时维护N份post的博客文件(N是你的语言数量),所以如果你需要更新博客,需要同时更新N份文件。

以下的实现流程将会以中英文作为示例,更多语言参照此教程即可:

实现流程

(1)分割页面文件夹,假设你原来的文件都存放在一个叫做hexo的文件夹中,主要存放的是中文文件。现在新建一个叫做hexo-en的文件夹用于存放英文的文件夹。注意:它们是同级的!

构建好的文件夹应该如下:

文件夹位置展示

(2)复制除了node_modules外的所有文件从hexo到hexoen,将站点分开

(3)接下来修改两个hexo的 _config.yml 文件内容,下图第一个为hexo,第二个为hexo-en:(这一步是修改了hexo的主要语言)

hexo

hexo-en

(4)继续修改 _config.yml 的根目录url和root,下图第一个为hexo,第二个为hexo-en:

hexo

hexo-en

(5)修改你自己对应主题的menu的跳转链接,注意这里有个坑——你可以跳转向自己github.io/en的链接,你也可以跳转向自己域名/en的链接。我这里跳转github.io不知道为什么失败了,显示404,但是跳转域名thellu.com/en成功了。你们可以按照自己实际情况选择跳转的地址。

另外,注意如果你是中文主页,menu则应该设置English;如果你是英文主页,menu应该设置中文。

下图第一个为hexo,第二个为hexo-en:

hexo

hexo-en

(6)恭喜,现在基本的配置就完成了!现在在 hexoen文件夹执行 npm install 安装需要的插件

(7)最后,修改你每次提交文件到github的命令,你需要使用cp每次合并提交文件上去。我这里使用的是绝对路径,因此cd路径的时候方便修改地址:

1
cd /d/Blog/hexo && hexo clean && hexo g && cd /d/Blog/hexoen && hexo clean && hexo g && cd /d/Blog/hexo && cp -r /d/Blog/hexoen/public/. /d/Blog/hexo/public/en/ && hexo d

(8)恭喜,到现在配置就完成了!你可以看下检查自己的网站是否已经成功页面跳转了。唯一的缺点是点击会跳转到新页面而不是更新原页面。

常见报错

正常编写md文件后用上述代码上传的时候,有时会莫名其妙报错:

err : Error: Spawn Failed

问题一般出现在.deploy_git文件夹,这是由hexo框架渲染生成的一个Git仓库,*hexo d*命令就是将其push到github上。问题大多是因为git进行push或者hexo d的时候改变了一些.deploy_git文件下的内容导致了报错。

总而言之,删除这个文件就好。

然后调用如下命令:

1
git config --global core.autocrlf false

再执行hexo的clean g d指令即可。

但是要注意,这个报错还有两个原因:

  • 我们的提交到github代码采用的是绝对路径,如果你在hexoen打开git bash,那这个.deploy_git文件可能会保存在hexoen文件夹里,这个时候记得把它也删掉。
  • 网络波动,删了.deploy_git等一会它自己就好了