← Changelog

Blog posts and forum topics in other languages, and translated legal pages

2026.10.15-api
The Forumulate team
2 min read
apii18nblog+2

Added

Blog posts and forum topics have translations. A language declared with POST …/docs/locales now takes effect on a blog or a forum: each post (…/blog/{topicId}/translations/{locale}, blog.author) and each topic (…/forum/{topicId}/translations/{locale}, forum.moderate) takes a translation of its title, excerpt and opening body — PUT by hand, POST …/auto with your own DeepL key, GET for each language's state, DELETE to remove. It is the same table and shape a changelog release's translations use. Readers get the translation at the piece's own address in that language; lists show translated titles where one is published. GET /public/…/blog, …/blog/t/{slug}, …/forum and …/forum/t/{slug} take locale and answer locale (served) and locales (declared, each available or not). See Blog spaces and Community spaces.

Legal pages in every language. A policy's language twins (POST …/docs/locales) are served per language — GET /public/orgs/{org}/legal/{kind}?locale= returns the twin with locale and locales — in one language switcher that also lists region/language versions. The site's custom JavaScript now runs on legal pages, and a LEGAL space accepts theme.docs.localeSwitcher. See Legal spaces.

Feeds and markdown in every language. The blog, forum and changelog feeds (rss.xml, feed.xml, atom.xml, feed.json, forum latest.rss/top.rss/category/tag/posts.rss) and the t/{slug}.md and pages/{page}.md reads take locale: pieces published in that language are served translated at their language address, the rest as written. On a reader address the language is the path (/blog/es/rss.xml, /docs/es/page.md), and index pages link each language's feed with hreflang. See Blog spaces.

Fixed

A legal document's address could serve its translation. The plain address of a policy with a translation flipped between the original and the translation; it now always serves the original, and each language its own twin. A page has at most one translation per language: adding a language again keeps the existing one, and a second add racing the first answers 409.

Writing a translation purges the reader's copy. Writing, replacing or removing a release, post or topic translation drops the piece's page and its index from the reader cache, so a new translation shows without a manual purge.