Hexo - Icarus 多國語系
目前Hexo並沒有支援多國語系,網路上的方式都是以Next主題實做多國語系為主,本篇將以Icarus主題來實做多國語系的Blog。
Step 1: 建立英文站點
在原本Hexo的根目錄下建立en 資料夾(在此命名為blog_en),將原本Hexo根目錄下的所有檔案/資料夾複製一份到en資料夾中。
node_modules不必複製到en資料夾中
Step 2: 修改Config檔
修改blog_en中的 _config.yml (非icarus主題的config.yml),修改language為en, url 設定為英文站台的網址
1 | # Site |
在en 資料夾(blog_en)中執行npm install就會自動安裝Hexo所需的插件,安裝完畢後,就可執行hexo g命令產生英文站點。
1 | nick@Nick-Lin:~/Blog/blog_en$ npm install |
Step 3: 增加語言切換按鈕
本篇設定在navigation bar的search按鈕旁邊,首先我們先增加英文站點的連結。
修改icarus的 _config.icarus.yml, 在最後一行增加
1 | blog_en: https://nickcarter9.github.io/en/ |
並在blog_en/themes/icarus 的 _config.icarus.yml, 增加中文站點連結
1 | blog_tw: https://nickcarter9.github.io/ |
在中文站點 themes/icarus/layout/common/navbar.jsx的module.exports增加config的對應(blog_en)
1 | const { logo, title, navbar, widgets, search, blog_en } = config; |
在英文站點也增加其對應(blog_en/themes/icarus/layout/common/navbar.jsx)
1 | const { logo, title, navbar, widgets, search, blog_tw } = config; |
在return時,返回url(中文站點及英文站點都要設定)
1 | return { |
在中文站點及英文站點增加menu文字(/themes/icarus/languages/en.yml, zh-TW.yml)
1 | menu: |
1 | menu: |
在search按鈕旁邊增加語系按鈕(/themes/icarus/layout/common/navbar.jsx)
在render中增加const變數: langTitle
1 | const { |
在 module.exports return 時,傳回變數langTitle
1 | return { |
search按鈕旁邊增加語系按鈕
1 | {showSearch ? <a class="navbar-item search" title={searchTitle} href="javascript:;"> |
Step 4: Build & Push 中文及英文站點
由於執行的步驟有點多,所以撰寫了一隻可執行的script。
在中文站點Hexo的根目錄下,建立build.sh,並將權限設定為可執行檔
1 | nick@Nick-Lin:~/Blog$ chmod 777 build.sh |
build.sh的內容為
1 | echo "clean en blog..." |
執行此script後,再執行hexo d即完成發布,就可實現多國語系的Blog了。
Reference