最近,我給個人部落格來了次「大動作」—— 從單語言版本升級到了 多語言站點(簡體中文、繁體中文、英語、日語), 並且全流程實現了自動化。💪
主要包括:
- 自動同步主站文章
- 自動 AI 翻譯內容
- 自動建構與部署多語言站點
為何選擇 Hugo?
因為它那句自信的口號:
「The world’s fastest framework for building websites.」
—— 就這句話,我就決定是它了 😆。
不過我沒有採用「一套主題多語言切換」的傳統做法, 而是讓 每種語言都有獨立主題。 這樣每個語言版本都能保留自己的美學與排版風格, 真正做到「文化層面的在地化」。
設計目標與約束 🎯
- 語言:支援簡中、繁中、英文、日文,未來還可擴展。
- 主題:每種語言使用最合適的 Hugo 主題,而非強行複用。
- 內容同步:所有語言共用一份內容儲存庫,按需翻譯。
- 部署策略:各語言獨立建構與發布,可部署到不同分支或網域。
- 客製化頁面:像「友鏈」、「書房」、「歸檔」等頁面要在多語言下保持一致體驗。
多語言配置策略 🧩
我為每個語言單獨準備了一個設定檔:
config/<lang>.toml,它們主要負責:
- 指定主題(例如
theme = "PaperMod")。 - 定義該語言特有的
title/description/keywords。 - 重寫選單設定
[[params.menu]],以匹配不同主題的導航結構。 - 注入客製化樣式,確保整體視覺一致。
這種結構非常清晰,也方便未來擴展更多語言版本。
GitHub Actions 自動部署矩陣 ⚙️
CI/CD 部分完全交給 GitHub Actions 來處理。
在 .github/workflows/hugo.yml 中,我使用了 矩陣建構,
為每種語言獨立建構、發布:
matrix:
include:
- lang: en
config: config/en.toml
publish_branch: dist-en
- lang: zh-cn
config: config/zh.toml
publish_branch: dist-zh
- lang: ja
config: config/ja.toml
publish_branch: dist-ja
- lang: zh-hant
config: config/zh-hant.toml
publish_branch: dist-zh-hant
建構階段 👇
- name: Build ${{ matrix.lang }}
working-directory: hugo-site
run: |
hugo \
--config "${{ matrix.config }}" \
--destination "public/${{ matrix.lang }}"
發布階段 👇
- name: Publish
uses: peaceiris/actions-gh-pages@v3
with:
publish_branch: ${{ matrix.publish_branch }}
publish_dir: hugo-site/public/${{ matrix.lang }}
最終效果 🌐
部署完成後,我得到了以下結構:
| 語言 | 分支 | 網域 |
|---|---|---|
| 英語 | dist-en |
en.moejue.cn |
| 簡體中文 | dist-zh |
zh.moejue.cn |
| 日語 | dist-ja |
ja.moejue.cn |
| 繁體中文 | dist-zh-hant |
tw.moejue.cn |
整個流程實現了從內容同步 → 自動翻譯 → 獨立建構 → 自動部署的完整閉環。 接下來只要寫文章,剩下的都交給腳本去跑就好。✨

後記 🪶
在此之前包括 MoeKoe Music Web 和 MoeKoe Music 都開始做國際化方案了。 部落格始終沒能跟上,這次總算補上了。😄
最大的收穫不是多語言網站本身,而是: 我重新審視了「如何讓內容更容易被世界看到」這件事。
或許這就是折騰部落格的意義吧。😉
