← notes

Hugo 블로그 다국어 지원 (PaperMod Theme)

2025-09-10 · misc

메인페이지

languages:
  ko:
    languageCode: ko-KR
    languageName: "한국어"
    title: "블로그 제목"
    weight: 10
    menu:
      main:
        - identifier: posts
          name: "포스트"
          url: /archives/
          weight: 10
        - identifier: search
          name: "검색"
          url: /search/
          weight: 15
    params:
      homeInfoParams:
        Title: "블로그 제목"
        Content: "태그라인"
  en:
    languageCode: en-US
    languageName: "English"
    title: "Blog Title"
    weight: 10
    menu:
      main:
        - identifier: posts
          name: "posts"
          url: /archives/
          weight: 10
        - identifier: search
          name: "search"
          url: /search/
          weight: 15
    params:
      homeInfoParams:
        Title: "Blog Title"
        Content: "blahblahblah"      

기타 레이아웃 요소들

포스팅

왜 되고 왜 안 되는지 모르겠는 폰트 사이즈 적용

그외에 다국어랑은 무관한데 나에게 필요했으나 가이드에 없었던 자잘한 것들

{{- if .Params.math }}
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.16.8/dist/katex.min.css">
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.8/dist/katex.min.js"></script>
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.8/dist/contrib/auto-render.min.js" onload="renderMathInElement(document.body, {
  delimiters: [
    {left: '$$', right: '$$', display: true},
    {left: '$', right: '$', display: false},
    {left: '\\(', right: '\\)', display: false},
    {left: '\\[', right: '\\]', display: true}
  ],
  throwOnError: false
});"></script>
{{- end }}
{{- if .Site.Params.giscus.repo }}
<div class="container_disqus">
#이부분은 giscus설정완료하면 복붙할 수 있는 그부분
</div>
<script>
    function getCurrentTheme() {
        let storedTheme = localStorage.getItem('pref-theme');
        if (storedTheme) {
            return storedTheme;
        }
        if (document.body.classList.contains('dark')) {
            return 'dark';
        }
        if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
            return 'dark';
        }
        return 'light';
    }

    function setGiscusTheme() {
        let currentTheme = getCurrentTheme();
        let giscusTheme = currentTheme === 'dark' ? 'noborder_dark' : 'noborder_light';
        let giscusScript = document.querySelector("div.container_disqus > script");
        if (giscusScript) {
            giscusScript.setAttribute('data-theme', giscusTheme);
        }
        return giscusTheme;
    }

    setGiscusTheme();

    document.addEventListener('DOMContentLoaded', function() {
        let themeToggle = document.querySelector('#theme-toggle');
        if (themeToggle) {
            themeToggle.addEventListener('click', () => {
                setTimeout(() => {
                    let newTheme = getCurrentTheme();
                    let newGiscusTheme = newTheme === 'dark' ? 'noborder_dark' : 'noborder_light';
                    let giscusFrame = document.querySelector('iframe.giscus-frame');
                    if (giscusFrame) {
                        giscusFrame.contentWindow.postMessage({
                            giscus: {
                                setConfig: {
                                    theme: newGiscusTheme
                                }
                            }
                        }, 'https://giscus.app');
                    }
                }, 100);
            });
        }
    });
</script>
{{- end }}
sitemap:
  changefreq: daily
  filename: 'sitemap.xml'
  priority: 0.5
# pygmentsUseClasses: true
markup:
  highlight:
    noClasses: true 
    anchorLineNos: false
    codeFences: true
    guessSyntax: true
    lineNos: true
    style: nord
  goldmark:
    renderer:
      unsafe: true # to allow html in markdown files