Skip to content

Translating documentation

Contributor guide for translating OpenQuok docs into other languages — locale folders, URL paths, Markdown authoring, and pull requests.

4 min read

Connect your agent today

Draft from chat, review in your calendar, and publish only what you approve.

Start for $0

Overview

OpenQuok documentation is Markdown-first and supports multiple languages. English is the default under web/src/content/docs/ and is served at /docs/.... Translations live in sibling folders named docs-<locale> — for example web/src/content/docs-es/ for Spanish at /docs/es/....

Readers switch languages from the language picker in the docs header. It keeps the same page slug and swaps only the locale prefix (/docs/getting-started/docs/es/getting-started).

web/src/content/
  docs/                          # English (default) → /docs/<slug>
    getting-started/
      index.md
      quickstart.md
    channels/
      connect.md
  docs-es/                       # Spanish → /docs/es/<slug>
    getting-started-for-dev/
      installation.md
    documentation-contribution/
      writing-content.md

What you translate vs what stays the same

Keep in English (or unchanged)Translate
Repo paths, env var names, CLI flags, HTTP routes, JSON keysHeadings, body copy, table labels, callout text
openquok CLI commands and code samplesLinkCard title and description
Product name OpenQuok (brand casing)Sentences that explain concepts to readers
import paths and component names in <script> blocksFAQ answers, step instructions, intro paragraphs
GitHub URLs and third-party doc linksSidebar label overrides when the English title does not fit

Leave fenced bash blocks copy-pasteable — translate comments inside them only when it helps, not the commands themselves.

Contributor checklist

Pick a source page and locale

  1. Choose an English page under web/src/content/docs/ — start with a section you know well (for example getting-started/quickstart.md or channels/connect.md).
  2. Confirm the target locale is registered in web/src/lib/docs/constants/config.ts under docsI18n.locales. Today that includes en (English) and es (Español).

To add a new language (for example French), append a row to docsI18n.locales and create web/src/content/docs-fr/. Use a short ISO-style code (es, fr) — the folder suffix and URL segment must match.

Mirror the English file path

Copy the relative path from docs/ into docs-<locale>/:

English sourceSpanish translationURL
docs/getting-started/index.mddocs-es/getting-started/index.md/docs/es/getting-started
docs/documentation-contribution/writing-content.mddocs-es/documentation-contribution/writing-content.md/docs/es/documentation-contribution/writing-content

Section roots use index.md inside a folder (slug is the folder name, not index).

Write the translated Markdown

Create the file with the same frontmatter keys as English. Translate title and description; keep order aligned so sidebar order matches.

Minimal example — English introduction (docs/getting-started/index.md):

---
title: Introduction
description: OpenQuok social scheduler — volume without the headache.
order: 0
sidebar:
  label: Overview
---

Spanish counterpart (docs-es/getting-started/index.md — illustrative; add this file when you translate the page):

---
title: Introducción
description: OpenQuok, programador de redes sociales — volumen sin complicaciones.
order: 0
sidebar:
  label: Resumen
---
<script>
import { CardGrid, LinkCard } from '$lib/ui/components/docs/mdx/index.js';
</script>

OpenQuok es un **programador de redes sociales** para publicar a escala sin perder el control.
Los agentes redactan y encolan publicaciones; tú revisas y apruebas en el **calendario**
y el **tablero kanban** antes de que se publique algo.

## Elige tu camino

<CardGrid>
<LinkCard title="Inicio rápido" description="Primer canal, primera publicación y aprobación en calendario o kanban." href="/docs/es/getting-started/quickstart" />
<LinkCard title="Cloud" description="Prueba, límites del plan y facturación en la versión alojada." href="/docs/es/cloud" />
<LinkCard title="Autoalojamiento" description="Sin factura de Cloud. Instala y ejecuta OpenQuok tú mismo." href="/docs/es/installation" />
</CardGrid>

Reuse the same MDX components as English — Callout, Steps, CardGrid, LinkCard, Badge. Follow Writing content and Built-in components; inside <Callout> bodies use HTML (<strong>, <p>) instead of Markdown emphasis.

Preview locally

From the monorepo root:

pnpm --filter ./web run dev

Open the translated URL (for example http://localhost:5173/docs/es/documentation-contribution/writing-content). Use the header language picker to confirm slug parity with English.

Open a pull request

Follow Submit a pull request. In the PR description, list:

  • English source path(s) you translated
  • Locale code and new files under docs-<locale>/
  • Any new locale registration in docsI18n (only when adding a language)

Existing Spanish translations

The docs-es tree is the live reference for Spanish contributors:

PathNotes
docs-es/getting-started-for-dev/Self-hosting intro, installation, project structure (shows docs/ vs docs-es/ layout)
docs-es/documentation-contribution/Localized authoring guides — configuration, writing content, components

Browse Escribir contenido for a full Spanish page that uses code blocks and frontmatter in context.

PR review prompts

Before opening a PR, confirm:

  • File path under docs-<locale>/ matches the English slug you translated.
  • Frontmatter includes title, description, and order where the English page has them.
  • In-site links use the locale prefix (/docs/es/... for Spanish).
  • Code, CLI, env vars, and API paths are unchanged unless the prose around them requires a translated comment.
  • MDX <script> imports match English when you reuse components.
  • You previewed the page locally at the correct /docs/<locale>/... URL.
Search documentation
Find a docs page
Discord Support