Jekyll 不使用插件支持多语言
实现目标 支持多语言,英文为主,中文为辅; 当访问 / 根目录下页面,比如 /about.html /posts/hello-world 显示英文页面; 当访问 /zh/ 目录下页面,比如 /zh/about.html /zh/posts/hello-world 显示中文页面; 当访问 ../hello-world 文章时,可以通过链接跳转到对应语言页面; archive 和 index 页面中仅显示出当前语言页面。 相关缺陷 404 页面无法配置,只能在 404.html 页面写上两种语言; 支持多语言文章的分页插件 jekyll-paginate-v2 没在 GitHub Pages 支持的插件白名单内,目前本博客首页不支持分页。多语言分页详见下文; 多语言时间表示有点麻烦,需要做一些字符串处理工作,能实现但是不太优雅,具体可以参考 Jekyll-Date-Formatting。 开始配置 最初,我搜索到 i18n 插件 Jekyll-Multiple-Languages-Plugin。 该仓库的 Star 数是多语言插件中最多的,同时里面也列出了相关其他多语言插件,已经比较完善,不想折腾的可以直接使用。 目前我为了简单和可定制化,同时省略掉插件中不必要的功能,选择使用自定义规则来实现多语言功能。 1. 单个博文配置 每一篇文章和页面需要定义两个属性: uid 标示文章唯一,一篇文章的中文版本和英文版本 uid 相同; 注意:uid 可以设置为任意命名,比如 document_id 。 locale 标示文章语言,一篇文章被渲染后作为哪种语言展示。 所以每篇文章的 Front Matter 新增如下设置 --- uid: hello-world locale: zh --- 2. 对于文章 posts 每篇文章都需要在 Front Matter 中写上 locale 重复多余。不要重复自己。我准备使用不同文件夹来区分不同语言的文章,然后在配置文件设置 locale 的默认值。 ...