最近,我给个人博客来了次“大动作”——
从单语言版本升级到了 多语言站点(简体中文、繁体中文、英语、日语),
并且全流程实现了自动化。💪
主要包括:
- 自动同步主站文章
- 自动 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 都开始做国际化方案了.
博客始终没能跟上,这次总算补上了。😄
最大的收获不是多语言网站本身,而是:
我重新审视了“如何让内容更容易被世界看到”这件事。
或许这就是折腾博客的意义吧。😉







最新评论