博客第一次上线,我把链接发给一个朋友,想听句夸奖。朋友看了半天,回我一句:“你这博客挺洋气的啊,全英文的。“我打开一看:菜单上写着 Home、Archives、Search,日期是 “Oct 12, 2026” 的格式,阅读时间写着 “3 min”。一个中文博客,长着一张英文脸,确实有点不伦不类——就像在美国中餐馆看到全英文菜单,总觉得哪里不对。

这些配置的前提是 Hugo 和 Nginx 已经跑起来了,搭站全过程我写过一篇,从装 Hugo 到踩的两个坑都在里面。

于是花了一个晚上,把 PaperMod 改成了中文博客该有的样子。下面这几个细节,改完之后朋友再看,说了句:“这回对味了。”

语言:告诉 Hugo 这是个中文站

hugo.toml 里加两行:

languageCode = "zh-CN"
defaultContentLanguage = "zh-CN"

languageCode 影响 HTML 的 lang 属性和主题内部的一些文案判断,defaultContentLanguage 告诉 Hugo 默认内容语言是中文。PaperMod 对中文支持不错,设完之后,主题自带的一些小文案(比如"阅读时间"的单位)会自动适配。这两行是地基,先砌好。

日期格式也顺手改了。PaperMod 默认的日期显示是英文格式,我在 params 里改成国人习惯的:

[params]
  DateFormat = "2006-01-02"

Go 的日期格式化用的是神奇的参考时间 2006-01-02 15:04:05,记住这个就行。改完文章日期显示成 “2026-10-12”,清爽。

菜单:Home 改成"首页”

PaperMod 的菜单在 hugo.toml 里这样定义:

[[menu.main]]
  identifier = "home"
  name = "首页"
  url = "/"
  weight = 1

[[menu.main]]
  identifier = "archives"
  name = "归档"
  url = "/archives/"
  weight = 2

[[menu.main]]
  identifier = "search"
  name = "搜索"
  url = "/search/"
  weight = 3

[[menu.main]]
  identifier = "tags"
  name = "标签"
  url = "/tags/"
  weight = 4

name 就是显示出来的文字,直接写中文。weight 控制顺序,数字越小越靠前。我就留了四个:首页、归档、搜索、标签。菜单这东西跟家里厨房的调料架一样,常用的摆出来,不常用的收进抽屉,四个够了。

选 PaperMod 之前,我在 WordPress 和 Hugo 之间纠结了两周,选了 Hugo 的理由写在另一篇里,简单说就是:我只想写字,不想当运维。

首页:换成 profile 模式

PaperMod 默认首页是文章列表,我改成了 profile 模式——一张大标题、一句介绍、几个社交链接,像名片一样。个人博客嘛,先让人知道你是谁,再看你写了啥。

[params]
  profileMode.enabled = true
  profileMode.title = "我的博客"
  profileMode.subtitle = "一个在美国定居的中年人,折腾 VPS,写中文博客。"
  profileMode.imageUrl = "/avatar.jpg"
  profileMode.imageTitle = "头像"

subtitle 写一句人话介绍自己,别写"欢迎来到我的博客"这种正确的废话。头像图扔到 static 目录下就行。改完首页从"文章仓库"变成了"会客厅”,朋友说看着顺眼多了。

文章页:几个顺手的开关

[params]
  ShowReadingTime = true
  ShowShareButtons = true
  ShowPostNavLinks = true
  showtoc = true
  toc.open = false

ShowReadingTime 显示"阅读时长 X 分钟",中文读者对这个很受用,一眼判断这篇要不要现在看。showtoc 是文章目录,toc.open = false 让它默认折叠,长文章才不会一打开就被目录糊脸。这几个开关都是 PaperMod 自带的,改个 true/false 就行,不用碰模板。

面包屑导航也建议打开:

[params]
  ShowBreadCrumbs = true

文章页顶部会显示"首页 / 归档 / 文章标题",读者点进一篇文章,随手就能跳回上一级。别小看这一行小字,它决定了读者迷路时能不能自己走回来。

评论我暂时没开。博客刚起步,评论系统是下一个阶段的事——先把内容写出来,再考虑装修会客厅。顺序别反了。

归档和搜索页:别让它们穿帮

菜单里有"归档"和"搜索",点进去要是英文界面,前面汉化就白做了。PaperMod 的归档页标题默认跟语言走,languageCode = "zh-CN" 设好之后,归档页的年月、搜索页的提示文字会自动变成中文,基本不用操心。

搜索功能需要单独确认一下:PaperMod 的搜索依赖一个 index.json,要在 hugo.toml 里开启 JSON 输出:

[outputs]
  home = ["HTML", "RSS", "JSON"]

没加这行,搜索页打开是空的,啥也搜不出来。我当时就卡在这里十分钟,对着空白的搜索框发呆,还以为主题坏了。加上之后 hugo 重新生成,搜索框里敲中文,文章标题、内容都能命中。这是个容易漏的细节,单独拎出来说一句。

改完检查一遍

每次改完配置,本地先预览:

hugo server -D

浏览器打开 http://localhost:1313,从首页点到文章页,把菜单、日期、目录都点一遍。确认没问题再 hugo 生成、同步到服务器。这个习惯是之前"多一个配置文件"的坑教我的:改配置不动手验证,等于没改。

中文排版的洁癖:空格、标点和阅读时长

汉化完了,还有三处"中文感"的细节,改完博客气质会变。

第一,中英文之间加空格。写"我的 Hugo 博客"而不是"我的Hugo博客",这是中文排版的基本礼仪。我在编辑器里装了个插件,保存时自动检查:中英文、中文和数字之间没空格就标出来。刚开始觉得矫情,习惯后回头看没空格的文章,眼睛疼。

第二,阅读时长对中文不准。PaperMod 的"阅读时长 X 分钟"是按英文单词数估的,中文虽然按字算、但系数不对。我实测过:一篇 2000 字的中文文章,它显示"4 分钟",我实际读了 8 分钟。别太当真,也别去改源码调系数——读者对这个数字的容忍度很高,差一倍没人投诉。这条就是告诉你:别纠结。

第三,日期显示再往前一步。DateFormat = "2006-01-02" 改完,列表页清爽了,但有的版本文章页顶部日期后面会带星期,中文博客里"2026-10-12 星期一"看着累赘。顺眼就留,不顺眼就去模板里把那一行注释掉。博客是自己的,顺眼优先。

这三处改完,我那个朋友又看了一眼,说:“这次像那么回事了。"——来自朋友的"像那么回事”,是中文博客能拿到的最高评价。

补个冷知识:PaperMod 的中文搜索对分词不敏感,搜“备份”能命中“备份习惯”,但搜“备”这种单个字,结果会多到没法看。告诉读者尽量搜两个字以上的词,体验好很多——这条是我被朋友问“你这搜索是不是坏了”之后才发现的。

一句话总结

中文博客的"中文感",藏在语言、菜单、日期格式这几个细节里:languageCode = "zh-CN" 打底,菜单 name 直接写中文,DateFormat 改成 “2006-01-02”,首页换 profile 模式。改完本地 hugo server 预览一遍,没问题再发布。