Bengal supports multi-language sites with directory-based content, gettext PO/MO translation files, plural-aware translations viant(), and full RTL (right-to-left) layout support for Arabic, Hebrew, and other bidirectional languages.
Do I Need This?
Note
Skip this if: Your site is single-language only. Read this if: You need translated content, hreflang SEO, RTL layouts, or a translator workflow.
Quick Start
- Configure languages in
bengal.toml:
toml
[i18n]
default_language = "en"
strategy = "prefix"
content_structure = "dir"
languages = [
{ code = "en", name = "English", weight = 1 },
{ code = "es", name = "Español", weight = 2 },
{ code = "ar", name = "العربية", weight = 3, rtl = true },
]
- Create content per locale:
content/
├── en/
│ ├── _index.md
│ └── about.md
├── es/
│ ├── _index.md
│ └── about.md
└── ar/
├── _index.md
└── about.md
- Add PO translation files for UI strings:
i18n/
├── en/LC_MESSAGES/messages.po
├── es/LC_MESSAGES/messages.po
└── ar/LC_MESSAGES/messages.po
- Use
t()in templates:
html
<nav>
<a href="/">{{ t("Home") }}</a>
<a href="/about/">{{ t("About") }}</a>
</nav>
- Compile and build:
bengal i18n compile
bengal build
Translation Workflow
| Step | Command | Description |
|---|---|---|
| Extract | bengal i18n extract |
Scan templates fort() calls, generate .pot |
| Translate | Edit.pofiles |
Add translations with a PO editor (e.g. Poedit) |
| Compile | bengal i18n compile |
Compile.po → .mofor faster loading |
| Status | bengal i18n status |
Check translation coverage per locale |
| Build | bengal build |
Generate site |
Key Concepts
- Content structure:
dir(content/en/, content/es/) orfile(about.en.md, about.es.md) - URL strategy:
prefix(/en/, /es/) orsubdomain(en.example.com) - Fallback: When a key is missing, Bengal falls back to the default language
- RTL: Arabic and Hebrew get
dir="rtl"on<html>automatically
Guides
i18n Quickstart
Set up a bilingual site with gettext PO/MO in 5 minutes
RTL Layout Support
CSS authoring for Arabic, Hebrew, and bidirectional sites
Translator Contributor Guide
How to contribute translations and PO file conventions
Multilingual Sites
Serve your documentation in multiple languages with proper URL routing and translations
In This Section
i18n Quickstart
Set up a bilingual site with gettext PO/MO in 5 minutes
Multilingual Sites
Serve your documentation in multiple languages with proper URL routing and translations
RTL Layout Support
CSS authoring for Arabic, Hebrew, and bidirectional sites
Translator Contributor Guide
How to contribute translations and PO file conventions
Related Pages
Configuration
Configuring Bengal with bengal.toml
Ship
Build configuration, SEO/discovery, output formats, and deployment
Runtime Capabilities
Enable self-hosted diagram, math, and third-party JS capabilities
Analysis
Site structure analysis tools
Versioned Documentation
Serve multiple versions of your documentation from a single site