Hugo根据语种展示不同内容
本站开启了多语言支持,主要提供简体中文、繁体中文和英语,不同语言服务不同地区的用户。由于最近开通了微信公众号,并做了简单的公众号开发工作,能提供一些文本问答服务,后续逐步添加功能。
于是我想把公众号信息图放在文末,并只告知简体中文读者(毕竟其它地区的人使用微信不多),好做进一步交流。
这样问题就来了,在 hugo 下怎么面对不同语种的用户提供不同内容呢?
下面是我的简单解决方式:
1. 确定内容放在哪里
我看了文章页布局,放在 "落款" 和 "版权申明" 中间,也即内容末尾比较合适。
hugo theme 的相关文件 layouts/_default/single.html
改动如下图所示
不同皮肤,读者需要根据自己情况修改。
2. 根据不同语种判断展示特定内容
这一步就是核心,判断当前语种为简体中文 zh-cn
,则展示微信公众号图片。
layouts/partials/wechat.html
代码如下:
1{{ if eq .Site.LanguageCode "zh-cn" }}
2 <img src="/logos/qr_wechat.webp" class="" />
3 <small> 简体中文读者,欢迎关注微信公众号,留言交流。</small>
4{{ end }}
如果当前页面是中文,变量.Site.LanguageCode
返回字符串(string)就等于 zh-cn
,具体信息查看 Hugo官方文档。
如果你写成 .Site.Language
返回的是要个对象,对象和字符串并不相等,逻辑错了就不会走到正确分支。
.Site.Language
Returns the language object for the given site.
{{ .Site.Language }}
在模板上是可以直接渲染成 zh-cn,但是不能用在 if 判定中 😮💨,没注意这些细节的话会让人迷惑,我踩过坑,调试了一段时间才搞清楚的。
读者可以在本站的文末切换语言试试看,只有切换到简体中文的时候,才会展示对应图片,功能简单,但是真的有效。
理解原理后,可以根据情况针对不同语种用户,展示不同内容。
特别说明,一般情况下,本站针对所有语种用户提供一样的内容,平等公开。但这和因地制宜,入乡随俗并不冲突,毕竟世界是多彩的。
版权申明:
- 未标注来源的内容全部为原创,未经授权请勿转载(因转载后排版往往错乱、内容不可控、无法持续更新等);
- 非营利为目的,演绎本博客任何内容,请以'原文出处'或者'参考链接'等方式给出本站相关网页地址(方便读者)。