Hugo で Disqus を多言語対応させる
結論
window.disqus_config = function() {
this.language = '{{ .Lang }}';
}
解説
Disqus 公式のヘルプを見ると、
var disqus_config = function () {
this.language = "ja";
};
このように言語設定を上書きできるとあります。
なので HTML テンプレートのどこかに
var disqus_config = function () {
this.language = '{{ .Lang }}';
};
こう書いておけば基本的には良いんですが、これだと hugo --minify
した時に変数名 disqus_config
が短縮されて違う名前になってしまうので意味が無くなります。
しかし、JavaScript におけるグローバル変数は window
オブジェクトのプロパティとして扱えるので以下のような書き方が可能です。
window.disqus_config = function() {
this.language = '{{ .Lang }}'
}
これなら minify
しても名前が変わってしまうことはありません。
参考:
Global object (グローバルオブジェクト) - MDN Web Docs 用語集: ウェブ関連用語の定義 | MDN
developer.mozilla.org
おまけ
Hugo には公式の Disqus テンプレートがありますが、そこでも var disqus_config
が使われていたのでプルリクを送ったところマージされました。 ショボいけど初めて OSS に直接コントリビュートできたので嬉しいです。
Change `disqus_config` to `window.disqus_config` by akimon658 · Pull Request #9550 · gohugoio/hugo
github.com