Hexo 多语言站点配置
Hexo 就是我博客用的框架,然后最近打算搞点国际化的东东,就有了这篇文章。
官方是有什么国际化的,但是不好用。这里来说说我的做法,参考自 link。
我就是把整个博客文件夹给复制了一下,放到了博客文件夹新建的 en 文件夹中。
然后我删掉了那个 en 文件夹里的 node_modules,并在那里重新下载依赖,即npm install
。
现在问题就来了,本来 hexo clean && hexo g && hexo d
啥的就好了
现在多了这个文件夹,但是它里面的东西是不会自己生成的。
因此这个方法的原理其实是单独建英文站,然后把它生成的东西复制到主站的 public 文件夹。
所以,就有了这个代码:(不会 bash 有啥办法),写的好烂
/*
hexo 上传助手
作者:q779
*/
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define INF 0x3f3f3f3f3f3f3f3f
void up(int &x,int y) { x < y ? x = y : 0; }
void down(int &x,int y) { x > y ? x = y : 0; }
#define N ((int)())
signed main()
{
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
// freopen("check.in","r",stdin);
// freopen("check.out","w",stdout);
cout << "欢迎使用 hexo 上传助手! \n";
cout << "目前支持的操作有:\n";
cout << "[0] 查看帮助选项 (这会终止程序) \n";
cout << "[1] 本地快速调试(仅 zh-cn) [2] 本地完整调试(包括 en) \n";
cout << "[3] 完整生成 [4] en 快速合并(合并结束将自动打开调试) \n";
cout << "请注意, 不要在本地调试开启时使用该程序!!\n";
cout << "请输入操作标号: ";
int op; cin >> op;
switch(op)
{
case 0: // help
cout << "-------------------------------------\n";
cout << "[1] 不生成文件, 最基础且快速的本地调试\n";
cout << "[2] 在 zh-cn 和 en 目录下均生成文件, 并将 en 目录下的文件复制到根目录的 public 文件夹\n";
cout << "[3] 同 case2 , 只不过不开调试, 需要手动输入 hexo d 才能部署\n";
cout << "[4] 在本地调试后, 手动生成 en 站并移动到 zh-cn 的 public 目录下, 便于调试所有站\n";
cout << " 「依赖关系」: 建议在使用 [1] 之后再使用 [4]\n";
cout << "-------------------------------------\n";
cout << "程序结束!\n"; break;
case 1: // 不生成文件,最基础且快速的本地调试
system("cd /Users/qry/q779.github.io && hexo clean && hexo s");
cout << "程序结束!\n"; break;
case 2: // 在 zh-cn 和 en 目录下均生成文件,并将 en 目录下的文件复制到根目录的 public 文件夹
system("cd /Users/qry/q779.github.io && hexo clean && hexo g");
system("cd /Users/qry/q779.github.io/en && hexo clean && hexo g");
system("cd /Users/qry/q779.github.io");
system("cp -r /Users/qry/q779.github.io/en/public/. /Users/qry/q779.github.io/public/en/ && hexo s");
cout << "程序结束!\n"; break;
case 3: // 同 case2 ,只不过不开调试,需要手动输入 hexo d 才能部署
system("cd /Users/qry/q779.github.io && hexo clean && hexo g");
system("cd /Users/qry/q779.github.io/en && hexo clean && hexo g");
system("cd /Users/qry/q779.github.io");
system("cp -r /Users/qry/q779.github.io/en/public/. /Users/qry/q779.github.io/public/en/");
cout << "程序结束!\n"; break;
case 4: // 在本地调试过后,手动生成 en 站并移动到 zh-cn 的 public 目录下,便于调试所有站
system("cd /Users/qry/q779.github.io/en && hexo clean && hexo g");
system("cd /Users/qry/q779.github.io && mkdir -p public");
system("cp -r /Users/qry/q779.github.io/en/public/. /Users/qry/q779.github.io/public/en/ && hexo s");
cout << "程序结束!\n"; break;
default:
cout << "非法输入, 程序将退出! \n"; break;
}
return 0;
}