假期的时候,打算改造下现有的博客系统。目标之一是实现多语言(主要是中英)切换,要求: 沉浸式阅读 。
查找了一下,Hexo 有如下几种工具与国际化有关:
更多是在解决模板翻译问题
可以通过指定如下参数,对响应的模块,产生多语言文件夹。
i18n:
type: [page, post]
generator: [index, archive, category, tag]
最大的问题,是会在 tag 和 archive 等文件夹中,将多个语言的博客文章混在一起,达不到沉浸式阅读的要求。
通过将:
"hexo-generator-archive": "^0.1.4",
"hexo-generator-category": "^0.1.3",
"hexo-generator-index": "^0.2.0",
替换成:
"hexo-generator-multilingual-archive": "^0.2.0",
"hexo-generator-multilingual-category": "^0.3.2",
"hexo-generator-multilingual-index": "^0.3.1",
在生成的页面中,添加当前语言的信息,并通过在 source
文件夹下添加 _data
文件夹,并添加覆盖下面文件:
├── source
│ ├── _data
│ │ ├── config_cn.yml
│ │ ├── config_en.yml
│ │ ├── theme_cn.yml
│ │ └── theme_en.yml
│ ├── _posts
│ │ ├── cn
│ │ └── en
其中 config_xx.yml
中的配置,可以覆盖根目录下 _config
文件的配置,
theme_xx.yml
可以覆盖主题 themes/xxx/_config
文件的配置。
以此方式实现配置的覆盖和区分。
解决了一部分沉浸式阅读的问题,进行较为整齐的分割,但是有个重要的 Bug,运行
hexo serve
能够很好的进行语言之间的隔离,但是运行
hexo g
导出的 public
文件夹里面的文件,有如下问题:
需要同步改造所有的插件,才可以达到完美的效果
。 个人不打算花费很多的在这个事情上面。
我的博客是使用 Hexo 生成了静态文件,使用 Nginx 进行代理的。回想起,Nginx 在 vhost 配置中实现根据 location 规则使用不同的 alias
。
总体思路是:
最后方案如下。
├── kvh.io.cn
├── kvh.io.en
分别配置中文和英文的博客,这样所有的插件都可以用了,注意 _config
文件的配置分别为:
language:
- cn
root: /cn
和
language:
- en
root: /en
然后你就可以愉快的写博客了。
server {
root /home/changbinhe/kvh.io.cn/public;
location /cn {
alias /www/kvh.io.cn/public;
}
location /en {
alias /www/kvh.io.en/public;
}
error_page 404 = @missing;
location @missing {
rewrite .* / permanent;
}
}
对 Nginx 配置感兴趣的朋友,可以参考一下 这里 。
可以看我的博客:http://kvh.io。
本文使用了多个 Hexo 博客,加上 Nginx 配置访问路径定位不同的文件目录的方式,实现了完全的隔离处理和沉浸式阅读的多语言博客。
相关文章推荐
No related post.