Hugo 多语言博客搭建,如何优雅地管理多语言 md 内容
这个网站是用 Hugo 建设的,部署在 Github 。 通常写一篇新的文章,我只需要把 Markdown 文件编辑好,上传到 Github ,GitHub Actions 就会自动帮我把网页生成好。 整个流程非常简单,手机上都可以更新博文。
随着博文数量增多,如何管理 Markdown 文件倒是成了一个问题。
以前没有好的习惯,都是直接放在 post/
目录下。
后来文件多了,就在 post/
目录下新建了一些 post/2024/
之类的子目录。
博文的 URL 与文件的存放位置是相关的,比如 post/2024/example.md
这篇博文, URL 地址就是 /post/2024/example/
。
为了不改变已发布博文的 URL ,旧的 Markdown 文件位置,我就懒的改了。
多语言站点
Hugo 很多年前就支持多语言站点,我也曾考虑过创建一个英文站,但翻译始终是个问题。 这两年随着 AI 的发展,文章的翻译质量提升了许多。 最近我突发奇想,要不就创建一个多语言站点吧。
在 Hugo 中,对于多语言站点,一篇博文如果要有多个语言,通常要创建相应语言版本的 md 文件。
比如, blog.md
这篇博文的英文版,就是 blog.en.md
,其他语言以此类推。
如果没有合适的整理方案,随着时间推移,就会导致 post/
目录下的文件越来越多,也就越难管理。
并且,以后再修改博文的 URL 也就越麻烦。
为此,如何整理 post/ 目录下的文件,有必要把这个问题尽早解决。
要有个合适的整理方案
根据我过往的经验,每年创建一个新的文件夹, post/2022/
、 post/2023/
、 post/2024/
等等,这样基本就够我使用了。
而对于多语言站点,如果把所有的 blog.md
、 blog.language.md
都放在一个文件夹下,这样也不好管理。
最好是把同一篇博文的多个语言版本,统一放在一个文件夹,比如 post/2024/blog/blog.md
, post/2024/blog/blog.language.md
等等。但是生成的 URL 就成了 /post/2024/blog/blog
,有点儿重复。为了解决这个问题, Hugo 提供了一个 slug
的参数,可以修改 URL 的结尾部分的路径。
同时,为了排序方便,我会在文件夹前加上日期 。
比如这篇文章的目录结构是这样的:
post
├───2017
├───2018
├───2019
├───2020
├───2021
├───2022
├───2023
└───2024
├───20240920-jane-theme-v3-major-update
└───20241105-hugo-multilingual-blog-structure
hugo-multilingual-blog-structure.en.md
hugo-multilingual-blog-structure.md
这篇文章的 Front Matter
结构是这样的:
---
title: Hugo 多语言博客搭建,如何优雅地管理多语言 Markdown 内容
date: 2024-11-05T11:04:39+08:00
draft: true
tags:
- Hugo
- 多语言
- 博客搭建
- 网站优化
- 文件管理
- URL 结构
- 内容管理
- 站点迁移
categories:
- 计算机
lastmod: 2024-11-05T11:04:39+08:00
slug: ../hugo-multilingual-blog-structure/
summary: 本文介绍使用 Hugo 搭建多语言站点后的文件组织方案、URL 结构优化,以及如何安全迁移现有博客内容。适合想要构建多语言博客的 Hugo 用户参考。
---
整理旧的 Markdown 文件
有了合适的整理方案,那么就应该先把旧有的文件也重新整理,把它们放到合适的位置。
这里需要特别注意的是: 避免 URL 变更 。 Hugo 提供了 url
这个参数,可以把 URL 写成一个固定值。
这里我分享一下我的流程:
第一步:删除 public/
目录,基于旧有博文,用 Hugo 生成一个新的 public/
,重命名为 public_old/
。
第二步:一个一个转移文件,为转移的文件添加上原有的 url
地址。
第三步:转移完成后,重新生成 public/
。
第四步:比较 public/sitemap.xml
和 public_old/sitemap.xml
,检查 URL 是否一致。
第五步:使用 Beyond Compare
比较 public/
和 public_old/
是否一致。
手动修改 URL 还需要注意: URL 的大小写是否一致。
参考链接
文章作者 贤民
上次更新 2024-11-05
许可协议 原创文章,如需转载请注明文章作者和出处。谢谢!