Multi-Language Support

Serve documentation in multiple languages with a language switcher. Each language gets its own navigation structure and translated content.

If your docs need to reach users in more than one language, you can define separate navigation trees per locale and let readers switch with a dropdown in the top bar.

Configuration

Wrap your navigation in a languages array, with each language containing its own navigation structure:

docs.json
{
  "navigation": {
    "languages": [
      {
        "language": "en",
        "tabs": [
          {
            "tab": "Documentation",
            "groups": [
              {
                "group": "Getting Started",
                "pages": ["introduction", "quickstart"]
              }
            ]
          }
        ]
      },
      {
        "language": "es",
        "tabs": [
          {
            "tab": "Documentación",
            "groups": [
              {
                "group": "Comenzar",
                "pages": ["es/introduction", "es/quickstart"]
              }
            ]
          }
        ]
      }
    ]
  }
}

Supported Languages

CodeLanguageCodeLanguage
enEnglishkoKorean
esSpanishpt-BRPortuguese (Brazil)
frFrenchruRussian
deGermanarArabic
itItalianhiHindi
jpJapaneseidIndonesian
cnChinese (Simplified)trTurkish
zh-HantChinese (Traditional)viVietnamese
nlDutchplPolish
svSwedishcsCzech
noNorwegianroRomanian
heHebrewuaUkrainian
lvLatvianuzUzbek

Directory Structure

Organize translated content in language-prefixed directories:

my-docs/
├── docs.json
├── introduction.mdx          # English (default)
├── quickstart.mdx
├── es/
│   ├── introduction.mdx      # Spanish
│   └── quickstart.mdx
├── fr/
│   ├── introduction.mdx      # French
│   └── quickstart.mdx
└── de/
    ├── introduction.mdx      # German
    └── quickstart.mdx

Reference pages in navigation using their full path (with the language prefix):

{
  "language": "es",
  "tabs": [
    {
      "tab": "Documentación",
      "groups": [
        {
          "group": "Comenzar",
          "pages": ["es/introduction", "es/quickstart"]
        }
      ]
    }
  ]
}

Language-Specific Settings

Each language can have its own configuration:

{
  "navigation": {
    "languages": [
      {
        "language": "en",
        "banner": {
          "content": "Version 2.0 is now live! See our [changelog](/changelog).",
          "dismissible": true
        },
        "tabs": [...]
      },
      {
        "language": "es",
        "banner": {
          "content": "¡La versión 2.0 está disponible! Ver [registro de cambios](/es/changelog).",
          "dismissible": true
        },
        "tabs": [...]
      }
    ]
  }
}

Default Language

The first language in the array is the default. Users landing on your docs see this language first. The language switcher allows them to change.

URL Structure

Language prefixes appear in URLs:

LanguageURL
English (default)docs.example.com/introduction
Spanishdocs.example.com/es/introduction
Frenchdocs.example.com/fr/introduction

Partial Translations

You don't need to translate every page. If a page doesn't exist in a language, users see a fallback message with a link to the English version.

For pages that shouldn't be translated (like API reference), you can reference the same page across languages:

{
  "language": "es",
  "tabs": [
    {
      "tab": "API",
      "groups": [
        {
          "group": "Endpoints",
          "pages": ["api/users", "api/posts"]  // Same as English
        }
      ]
    }
  ]
}

Translation Workflow

1
Start with English

Write your docs in English first. This becomes your source of truth.

2
Add language directories

Create directories for each target language (es/, fr/, etc.).

3
Translate content

Copy English files to language directories and translate. Keep filenames the same.

4
Update docs.json

Add language entries to your navigation config.

RTL Languages

Right-to-left languages like Arabic and Hebrew are supported. Jamdesk automatically applies RTL styling when these languages are active.

What's Next?

Navigation Overview

Configure tabs, groups, and page structure

docs.json Reference

Full configuration options