Hugo新手教程创建了content/posts目录存放页面,罗列这个目录下多个页面的汇总页面路径为baseURL/posts。但这个页面H1标题Posts并没有因为设置默认语言defaultContentLanguage = zh自动变成中文,如果打开了面包屑(ShowBreadCrumbs = true),还会显示成不伦不类的首页 » Posts

首先想到通过模板去改。比如到layouts/_default/list.html中,把H1标题从{{ .Title }}改为{{ i18n .Title | default .Title }};再去处理一下layouts/partials/breadcrumbs.html,把{{ $bc_pg.Name }}改为{{ i18n $bc_pg.Name | default $bc_pg.Name }};然后创建i18n/zh.yaml,利用i18nPosts翻译成中文。

- id: Posts
  translation: "文章"

感觉这么干应该能成(官方文档说是list.html,没试过,只是想了想),但肉眼可见比较费事。改list.html这种内容很多的模板应该不是个好办法,万一哪天官方主题更新了呢?其他可能会出现Posts的地方也都还得一一找出来处理。

有个简单的办法:创建一个content/posts/_index.md,内容为:

+++
title = "文章"
+++

搞定。这还顺带把面包屑也改掉了,现在变成了预期的首页 » 文章。可以想象其他可能会出现Posts的地方都变成文章了。

顺手把标签页也这么改了,创建一个content/tags/_index.md,内容形式同上。一开始尝试仿照时间轴(Archives)创建content/tags.md,但发现只有标题没有内容,把PaperMod列出来的几个模板用来设置layout都没有用。所以还是要吃透官方文档才行的。