Polyglot is an open-source Jekyll plugin tool that adds full multilingual (i18n) support to Jekyll blogs by building a separate static site for each configured language from a single codebase.
What is Polyglot?
Polyglot is a Ruby gem (jekyll-polyglot) that extends Jekyll 3.0 and 4.0 to generate one site per language. It takes Jekyll posts and pages tagged with a lang frontmatter variable and outputs language-prefixed static sites (e.g. /fr/, /de/) with fallback content from a configured default language. The plugin is maintained by Samuel Volin and distributed under the MIT license.
Key Features
Polyglot's distinguishing capabilities are its parallel builds, fallback handling, URL rewriting, and SEO automation.
- Parallel builds — Overrides Jekyll's
Site.processto spawn a separate build process per language, so all language versions are generated simultaneously. - Fallback language support — Missing translations automatically fall back to
default_lang, and the sitemap of every language site stays aligned with the default site's URLs. - URL relativization — Rewrites relative and absolute links so visitors stay on their language version; individual links can be excluded with the
{% static_href %}block tag. - SEO tools — The
{% I18n_Headers %}tag generateshreflangand canonical URLs, advertising only languages that actually have a translation. - Localized site.data — Put translated strings in
_data/:lang/strings.ymland access them in layouts viasite.data[site.active_lang].strings. - Localized collections — Define collections with permalinks and create per-language files to get language-specific collection items under
site.projects. - Netlify redirects localization — Optionally generates language-prefixed versions of Netlify
_redirectsrules, with anexclude_from_redirect_localizationlist. - Liquid helpers — Provides
site.languages,site.active_lang,site.default_lang,page.rendered_lang,page.available_languages,page.missing_languages, andpage.permalink_langfor menus and fallback detection.
Who is it for?
The intended users are Jekyll site owners and developers who need multilingual publishing without maintaining separate codebases.
- Jekyll bloggers who want to publish in multiple languages without maintaining separate Jekyll projects.
- Web developers building multilingual company or marketing sites on Jekyll who need localized URLs and link rewriting.
- SEO-focused content teams who need correct
hreflangtags, canonical URLs, and a single rootsitemap.xml. - Open-source documentation maintainers using Jekyll who want to serve docs in several languages with fallback to English.
What can you do with Polyglot?
These are the concrete publishing workflows Polyglot supports.
- Multilingual blogging: write posts with
lang: svfrontmatter, and Polyglot builds a Swedish site version alongside the default. - Automatic translation menus: read
page.permalink_langandsite.languagesto build language switcher links in any layout. - Translation coverage notices: use
page.missing_languagesandpage.rendered_langto show "This page isn't translated yet" alerts. - Localized UI strings: store translated labels in
_data/:lang/strings.ymland render them withsite.data[site.active_lang].strings.
How does Polyglot work?
Polyglot overwrites Jekyll::Site.process to spawn a separate process per language, each running the original Jekyll build with a specific language. Documents are matched to their translations via lang frontmatter and either identical permalinks or a shared page_id. After all languages finish building, Polyglot fires a :polyglot, :post_write hook exactly once.
Pricing
Polyglot is free and open-source software released under the MIT license. You install it as a Ruby gem (gem install jekyll-polyglot) or via Bundler.
Alternatives
A known alternative in the Jekyll i18n space is jekyll-multiple-languages-plugin — an earlier plugin Polyglot was modeled after; Polyglot's author chose a different execution approach, focusing on parallel builds and automated URL rewriting.
FAQ
Is Polyglot free?
Yes. Polyglot is distributed under the MIT license, so it can be used freely in personal and commercial Jekyll projects.
What Jekyll versions does Polyglot support?
Polyglot currently supports Jekyll 3.0 and Jekyll 4.0. On Jekyll 4.0, SCSS source maps generate incorrectly, so the workaround is to set sass.sourcemap: never in _config.yml.
Does Polyglot work on Windows?
Polyglot works on Windows, but you must set parallel_localization: false in _config.yml, because Windows hosts can't run the per-language build processes in parallel.
How do I configure the languages?
Add a languages array to _config.yml, e.g. languages: ["en", "sv", "de", "fr"], plus a default_lang and your production url. Files not meant for sublanguage sites go in exclude_from_localization.
How does Polyglot know which pages are translations?
Polyglot pairs documents with the same lang frontmatter and identical permalinks. Alternatively, you can set a shared page_id in frontmatter to link translations that have different permalinks, and even generate redirects automatically when used with jekyll-redirect-from.








