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

相關文章:

翻譯: