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 判定中 😮💨,沒注意這些細節的話會讓人迷惑,我踩過坑,調試了一段時間才搞清楚的。
讀者可以在本站的文末切換語言試試看,只有切換到簡體中文的時候,纔會展示對應圖片,功能簡單,但是真的有效。
理解原理後,可以根據情況針對不同語種用戶,展示不同內容。
特別說明,一般情況下,本站針對所有語種用戶提供一樣的內容,平等公開。但這和因地制宜,入鄉隨俗並不衝突,畢竟世界是多彩的。
版權申明:
- 未標註來源的內容皆為原創,未經授權請勿轉載(因轉載後排版往往錯亂、內容不可控、無法持續更新等);
- 非營利為目的,演繹本博客任何內容,請以'原文出處'或者'參考鏈接'等方式給出本站相關網頁地址(方便讀者)。