阿珏的部落格的國際化之路

阿珏的部落格的國際化之路

最近,我給個人部落格來了次「大動作」—— 從單語言版本升級到了 多語言站點(簡體中文、繁體中文、英語、日語), 並且全流程實現了自動化。💪

主要包括:

  • 自動同步主站文章
  • 自動 AI 翻譯內容
  • 自動建構與部署多語言站點

為何選擇 Hugo?

因為它那句自信的口號:

「The world’s fastest framework for building websites.」

—— 就這句話,我就決定是它了 😆。

不過我沒有採用「一套主題多語言切換」的傳統做法, 而是讓 每種語言都有獨立主題。 這樣每個語言版本都能保留自己的美學與排版風格, 真正做到「文化層面的在地化」。


設計目標與約束 🎯

  • 語言:支援簡中、繁中、英文、日文,未來還可擴展。
  • 主題:每種語言使用最合適的 Hugo 主題,而非強行複用。
  • 內容同步:所有語言共用一份內容儲存庫,按需翻譯。
  • 部署策略:各語言獨立建構與發布,可部署到不同分支或網域。
  • 客製化頁面:像「友鏈」、「書房」、「歸檔」等頁面要在多語言下保持一致體驗。

多語言配置策略 🧩

我為每個語言單獨準備了一個設定檔: config/<lang>.toml,它們主要負責:

  1. 指定主題(例如 theme = "PaperMod")。
  2. 定義該語言特有的 title / description / keywords
  3. 重寫選單設定 [[params.menu]],以匹配不同主題的導航結構。
  4. 注入客製化樣式,確保整體視覺一致。

這種結構非常清晰,也方便未來擴展更多語言版本。


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

整個流程實現了從內容同步 → 自動翻譯 → 獨立建構 → 自動部署的完整閉環。 接下來只要寫文章,剩下的都交給腳本去跑就好。✨

图 0

後記 🪶

在此之前包括 MoeKoe Music WebMoeKoe Music 都開始做國際化方案了。 部落格始終沒能跟上,這次總算補上了。😄

最大的收穫不是多語言網站本身,而是: 我重新審視了「如何讓內容更容易被世界看到」這件事。

或許這就是折騰部落格的意義吧。😉 图 1

Powered by ❤️ with Hugo and Stack Theme.