---
title: Site settings
description: The miscellaneous settings block, rendering, i18n locales and WYSIWYG styles, plus the read-merge-write pattern its writes require.
updated: 2026-08-16
prev: redirections
---

Site-wide settings live in the `miscellaneous` settings block: rendering options, locales, and the WYSIWYG style palette. This is also where the site's locales are declared. Unlike the collection-shaped configs, `miscellaneous` is a single YAML document with no partial-patch path: the only write is `update-setting`, which replaces the whole file — so every write starts from a read and sends the file back complete.

[Redirections](/en/docs/redirections) are **not** part of this block, although they are often looked for here: the API rejects a `redirections` key inside `miscellaneous` outright (422, *"A Settings config can't have a 'redirections' property"*). They are a settings surface of their own.

## The `miscellaneous` block

```yaml
rendering:
  minifyHtml: false
  404: '404.liquid'
i18n:
  enabled: true
  default:
    name: Français
    slug: fr
    country: fr
  translations:
    - name: English
      slug: en
      country: gb
wysiwyg:
  styles:
    lead:
      title: 'Chapô (lead)'
      tag: p
      css: >
        font-size: 1.25em; line-height: 1.55; color: #565E50; font-weight: 380;
      attrs:
        class: lead
    callout:
      title: '<b style="color:#07761F;">Encadré (note)</b>'
      tag: div
      css: >
        border-left: 3px solid #0BBF3D; background: #F2F4ED; padding: 12px 16px;
      attrs:
        class: callout
    small:
      title: '…'
      tag: span
      css: '…'
      attrs:
        class: small-note
    dropcap:
      title: 'Lettrine (dropcap)'
      tag: p
      css: 'overflow: hidden;'
      attrs:
        class: dropcap
```

## Top-level keys

| Key | Notes |
|---|---|
| `rendering` | `minifyHtml` (bool); `404` (template path for the 404 page, live `'404.liquid'`). |
| `i18n` | `enabled` (bool); `default: {name, slug, country}`; `translations: [{name, slug, country}, …]`. **This is where locales live.** Live: default `fr/fr`, translation `en/gb`. |
| `wysiwyg.styles` | The site-wide WYSIWYG style palette. |

### `i18n`

The `i18n` key declares the site's locales. `default` is the primary locale; `translations` is the array of additional ones. Each locale is `{name, slug, country}`, where `slug` is the URL segment (`fr`, `en`) and `country` selects the flag. See [The multilingual model](/en/docs/multilingual-model) for how locales drive `locale`, `locales` and per-locale URLs.

### `wysiwyg.styles`

Each style entry is keyed by an identifier and carries:

| Key | Notes |
|---|---|
| `title` | Dropdown label in the editor. HTML allowed. |
| `tag` | The tag the style wraps the selection in. |
| `css` | Inline CSS, used for the CMS preview only. |
| `attrs` | Attribute map, typically `class`. |

Production styling comes from `attrs.class` plus front-end CSS, not from the preview `css`.

## Writing the block: read, merge, write back complete

`update-settings-partial` does not accept `miscellaneous` — its `setting_type` is limited to the collection-shaped configs (`page-types`, `content-types`, `item-set-types`). The write path for this block is `update-setting`, and it **replaces the entire file**. The safe sequence is always the same three calls:

```
get-site-settings(type: 'miscellaneous')
update-setting(setting_type: 'miscellaneous', yaml_content: <the whole file, with your change merged in>)
get-site-settings(type: 'miscellaneous')
```

<div class="q-callout q-callout-warn"><i class="fa-solid fa-triangle-exclamation lead"></i>
  <div><b>Anything you do not send back is erased.</b> Enabling <code>i18n</code> without re-sending the <code>wysiwyg</code> palette deletes the palette, silently, with a <code>success: true</code>. Start from the read, merge your change into it, and send the file back whole — including every key you have no opinion about.</div></div>

## `setting_type` values

| Value | Block | Readable (`get-site-settings`) | Patchable (`update-settings-partial`) |
|---|---|---|---|
| `content-types` | [Content-type schema](/en/docs/content-types). | yes | yes |
| `page-types` | [Page-type schema](/en/docs/page-types). | yes | yes |
| `item-set-types` | [Collection-type schema](/en/docs/itemset-types). | yes | yes |
| `global-fields` | [Global-fields schema](/en/docs/global-fields). | yes | no — `update-setting` |
| `miscellaneous` | This page. | yes | no — `update-setting` |

Routes are not a `setting_type` at all: they are read with `get-routes` and written with the dedicated `create-route` / `update-route` / `delete-route` tools.

## Related

<div class="q-cards">
  <a class="q-card reco" href="/en/docs/multilingual-model"><span class="k">Recommended</span><span class="t">The multilingual model</span><span class="d">How <code>i18n</code> locales drive URLs and context.</span></a>
  <a class="q-card" href="/en/docs/redirections"><span class="t">Redirections syntax</span><span class="d">The <code>redirections</code> scalar format.</span></a>
  <a class="q-card" href="/en/docs/multilingual-site"><span class="t">Run a multilingual site</span><span class="d">How-to: add a locale and translate.</span></a>
</div>
