Hugo根据语种展示不同内容

本站开启了多语言支持,主要提供简体中文、繁体中文和英语,不同语言服务不同地区的用户。由于最近开通了微信公众号,并做了简单的公众号开发工作,能提供一些文本问答服务,后续逐步添加功能。

于是我想把公众号信息图放在文末,并只告知简体中文读者(毕竟其它地区的人使用微信不多),好做进一步交流。

这样问题就来了,在 hugo 下怎么面对不同语种的用户提供不同内容呢?

下面是我的简单解决方式:

1. 确定内容放在哪里

我看了文章页布局,放在 "落款" 和 "版权申明" 中间,也即内容末尾比较合适。

hugo theme 的相关文件 layouts/_default/single.html 改动如下图所示

wechat location

不同皮肤,读者需要根据自己情况修改。

2. 根据不同语种判断展示特定内容

这一步就是核心,判断当前语种为简体中文 zh-cn,则展示微信公众号图片。

wechat pic

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 判定中 😮‍💨,没注意这些细节的话会让人迷惑,我踩过坑,调试了一段时间才搞清楚的。

读者可以在本站的文末切换语言试试看,只有切换到简体中文的时候,才会展示对应图片,功能简单,但是真的有效。

理解原理后,可以根据情况针对不同语种用户,展示不同内容。

特别说明,一般情况下,本站针对所有语种用户提供一样的内容,平等公开。但这和因地制宜,入乡随俗并不冲突,毕竟世界是多彩的。

最后修改于: Wednesday, January 10, 2024
欢迎关注微信公众号,留言交流。

相关文章:

翻译: