Немного о том, с чем мне пришлось побороться, чтобы запустить этот сайт.

Замечание: Я использую YAML для настройки Hugo, потому что у TOML всё плохо с древовидными структурами типа конфигурации меню (они трудно читаемы), а JSON вообще плохо подходит для человеческих задач :) Формат по умолчанию для метаинформации в начале нового поста можно настроить, отредактировав шаблон archetypes/default.md.

  1. Настраиваем i18n в Hugo как обычно:

    defaultContentLanguage: en
    defaultContentLanguageInSubdir: false
    params.displayFullLangName: false
    

    params.displayFullLangName: false говорит PaperMod показывать язык в селекторе в виде двухбуквенного кода вместо полного названия.

  2. Переводим пункты главного меню.

    Пример:

    languages:
        en:
            weight: 10
            languageName: English
            menu:
            main:
                -
                weight: 10
                name: Posts
                pageRef: /posts
                -
                weight: 20
                name: Tags
                pageRef: /tags
                -
                weight: 30
                name: Categories
                pageRef: /categories
                -
                weight: 40
                name: Search
                pageRef: /search
        ru:
            weight: 20
            languageName: Русский
            menu:
            main:
                -
                weight: 10
                name: Посты
                title: Посты
                pageRef: /posts
                -
                weight: 20
                name: Теги
                title: Теги
                url: /tags
                -
                weight: 30
                name: Категории
                title: Категории
                pageRef: /categories
                -
                weight: 40
                name: Поиск
                title: Поиск
                pageRef: /search
    
  3. Добавляем JSON в выхлоп, чтобы заработал поиск:

    outputs:
        home: [HTML, RSS, JSON]
    
  4. Добавляем перевод для страницы со списком постов: создаём файл content/_index.<language ID>.md и поле метаинформации title добавляем перевод слова «Posts»:

    Например:

    content/_index.ru.md

    ---
    title: Посты
    ---
    
  5. Добавляем страницу поиска content/search.md и её переводы content/search.<код языка>.md.

    Например:

    content/search.md:

    ---
    title: Search
    layout: search
    summary: Search
    placeholder: Search the site
    ---
    

    content/search.ru.md:

    ---
    title: Поиск
    layout: search
    summary: Страница поиска по сайту
    placeholder: Поиск по сайту
    ---
    
  6. Добавляем переводы для вспомогательных страниц «Tags», «Categories» and «Search»: создаём content/categories.<код языка>.md, content/tags.<код языка>.md and content/search.<код языка>.md. Внутри достаточно будет блока метаинформации с единственным полем title.

  7. Добавляем новые посты на языке по умолчанию posts/some-new-post.md и соответствущий перевод на другой язык posts/some-new-post.<код языка>.md.