Hexo 实现多语言站点
条评论 | 0次浏览心血来潮想做一下多语言站点,于是上网查了一下如何实现都没有找到觉得简单又合适的。但是在 SaltyLeo 老师关于《Hexo 添加多语言支持「国际化 i18n」》的文章中找到了思路,文章中采用了两个 hexo 站点的形式,将多语言的网站放置在不同的路径下。当要发布的时候,再将多语言的生成的 public 文件夹复制到主语言的 public/xx 对应语言文件夹中。是查到现在比较适合我的一种方法。
我将我的英文站点创建在我的源文件夹下的/en/
目录,其实只要把当前文件夹的内容复制到/en/
下就可以了。这时候我们的流程还是:
生成主站点 > 生成 en 站点 > 复制 en 站点到主站点 public > 发布。
清楚步骤后,再结合我自身的实际情况,开始了多语言站点的改造。
第一步:修改配置,分别生成各自站点
配置文件中的需要修改的地方并不多。主题方面我是用的是 maupassant 主题,我选择是在 menu 上添加多语言的入口(可以在右上角的菜单项看到),所以只要分别在两处主题文件夹的配置文件 _config.yml
中添加:
1 | menu: |
最后在 en 站点中,修改 hexo 配置的路径即可。
1 | language: en # 原来为 zh-CN |
第二步:创建脚本,自动生成文章文件
作为一个博客,最重要的还是文章。前期准备结束后,需要考虑的一点是:如果按照之前的方式使用
1 | hexo new article-name |
的话,在新增的多语言文件夹下还需要再手动复制或者新建同名的文件。通过脚本自动生成是个更合理的做法。我创建了 npm run create artilce-name
命令,接受文章标题来生成需要的文件。运行需要的逻辑如下(有待修改):
1 | const { exec } = require("child_process"); |
这样就可以在对应的目录下正常生成文章文件了。
第三步:发布部署
文章写完了打算部署了,按照上面的流程我们需要按顺序分别生成主、次语言的 public 目录,再做复制的操作。我也写了个脚本进行操作:
1 | const { exec } = require("child_process"); |
因为 window 下无法使用 spawn 的 cp 命令,所以只好使用 fs 进行遍历复制。命令执行后会运行部署命令,在这里可以根据需要修改。这样一来,多语言站点的开发和部署就完成了。
本文采用上文所述方式进行部署。之前的文章也会慢慢翻译后更新。
以上。
- 本文链接:https://blog.decay.fun/2019/08/21/implementing-multilingual-in-hexo/
- 版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 CN 许可协议。转载请注明出处!
分享View this article in English