Go Side Project - Symlink Generator for Multi-lang Hugo Site

Multilingual Mode in Hugo 這篇文章中有提到目前使用 Hugo site generator 產生 multi-lang site 的問題,使用者必須要為每個語言都建立一個檔案,才不會造成最後在產生網站後,發生某一個語言的頁面遺失問題。(例如,使用者一定要建立 about.md, about.tw.md,這樣當瀏覽者在選擇中文語言的網站時,才會顯示出 about 頁面)。這樣其實會造成不少困擾,因為不是每個語言都可以這麼即時的被翻譯完成,但我們又不希望有頁面遺失,因此需要透過一些方式來解決這個問題。

而其中一個方法就是建立一個 symbolic link,當某個語言還沒被翻譯時,就建立一個 symbolic link 來代表這個檔案,然後實際檔案則指向預設語言的檔案。

因此,side project github.com/YuShuanHsieh/hugo-langs-symlink 就是為了這個目的而誕生的,用我熟悉的 Go 語言來編寫,使用者可以透過參數來決定要建立 symbolic link 的語言和檔案對象。Project 簡單地提供 createremove 兩個 sub command ,這樣用戶就能直接在 local 端操作和刪除 symbolic link,避免產生過多的 symbolic link 而影響到 git commit。

使用範例:

./hslink --dir=/home/user/site/content --langs="zh" --langs="zh-tw" --skips="images" create

相關參數設定可以查閱 README.md,其實功能很單純,而且可以用在 CI/CD 流程上,對於我們目前在處理網站來說已經很夠用了。

因為是小 side project,有些功能沒有寫的很齊全,例如可以直接讀 folder 中的 hugo config 檔案,這樣就可以省掉使用者需要輸入 langs 的問題;以及目前只支援同一時間進行一個 content file extension 的轉換,有些使用者可能有 markdown 以及其他的內容檔案,那就要無法一次轉換完成,這些都是可以改善的地方。

就這樣~最近都在做 operation 的工作,整天 gcloud 和 kubectl,現在能寫點 code 還蠻開心的 :D