# Content Localization - Manual and Automatic with Discourse AI

**URL:** https://meta.discourse.org/t/content-localization-manual-and-automatic-with-discourse-ai/370969
**Category:** Site Management
**Tags:** ai, content-localization
**Created:** [July 10, 2025, 2:57am UTC](https://meta.discourse.org/t/content-localization-manual-and-automatic-with-discourse-ai/370969 "2025-07-10T02:57:18Z")
**Posts on this page:** 1
**Showing post:** 1

<div class="post-metadata">

### Author: ![nat](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/nat/32/235063_2.png) [@nat](https://meta.discourse.org/u/nat)
#### Post date: [July 10, 2025, 2:57am UTC](https://meta.discourse.org/t/content-localization-manual-and-automatic-with-discourse-ai/370969/1 "2025-07-10T02:57:18Z")

</div>

In this topic, we will walk you through the Content Localization features and how to enable them. The features are split into two parts: What is available by default in Discourse; and Discourse AI for automatic translations.

⚠ For quick access to the relevant sections, use the wiki headings 👉🏻

> [@](#):
>
> :discourse: **Hosted by Discourse?**
> 
> This feature is available to you! Read on to learn more about how to configure this for your community.

 

# Localizing Your Community’s Content

Discourse gives you access to several localization features available for configuration at:

- `<your-site-url>/admin/site_settings/category/content_localization`

> **Content Localization in Site Settings 📸**
>
> ![content localization settings](https://global.discourse-cdn.com/meta/original/4X/3/4/6/3467b596811351db3a3c90bfde8a3187b4cc4071.png)

## Preparation

Firstly, it is good to get some information on your community via [data explorer](https://meta.discourse.org/t/32566?silent=true).

#### Locale via user preferences

The following query can give you an idea of how many users may have set their locale in `/my/preferences/interface`.

```plaintext
SELECT locale, count(*) as count
FROM users
WHERE (locale IS NOT null AND locale <> '')
GROUP BY locale
ORDER BY count DESC

```

> **Sample results from Data Explorer**
>
> ![example results](https://global.discourse-cdn.com/meta/original/4X/2/7/9/279edd6ccf9cafe58d4cf41fe7696bfca961e6e9.png)

#### Where your users are coming from

A better solution, if you have `Browser pageview events enabled` (site setting), is this query that tells you which country your user is from:

```sql
SELECT
  e.country_code AS country_code,
  COUNT(*) AS pageviews
FROM browser_pageview_events e
WHERE e.country_code IS NOT NULL
  AND e.country_code <> ''
GROUP BY e.country_code
ORDER BY pageviews DESC

```

> **Sample results**
>
> ![Screenshot 2026-08-07 at 3.53.00 PM](https://global.discourse-cdn.com/meta/original/4X/7/0/5/7059641c07ce2c2159502f65897363f9eca1783f.png)

## Setup

With the information above, you are now more informed about which locales your community should support.

In `<your-site-url>/admin/site_settings/category/content_localization`, start setting this up.

- `Content localization enabled` - turns on the feature that replaces original written user content with localized content. Read on for auto (AI) and manual (human) modes of localizing.
- `Content localization supported locales` - the list of languages your site supports
- `Content localization crawler param` - covered in the crawlers section below
- `Content localization language switcher` - covered just below

> **List of locales in Site Settings 📸**
>
> ![list of supported locales](https://global.discourse-cdn.com/meta/original/4X/c/5/7/c57edd296bca8921c45baf3a2e89d3009a41fd5a.png)

### Language switcher

Enabling the subsequent setting `Content localization language switcher` also allows you to make your community more accessible to non-logged-in users by showing the list of languages you’ve chosen in the list of supported locales:

 ![list of languages at top right](https://global.discourse-cdn.com/meta/original/4X/7/b/a/7baf3afc92cf08c499fc0257919874687c8d458d.jpeg)

Language switcher at the top right of the page

### Viewing localized content

 ![indicator](https://global.discourse-cdn.com/meta/original/4X/f/9/7/f976d02e52d2d2124585f9e17b92bf1dd9bf861c.jpeg)

 ![content languages selection](https://global.discourse-cdn.com/meta/original/4X/4/4/d/44d525b552866cb84de2dac4bc912d977fd17050.jpeg)

For viewers of localized content ( **all site visitors** ), they may cursor over the indicator next to the post’s date to view the original language of the post. This indicator only shows up if the post is not in their language. They may simply tap on the indicator to see the original post as well.

For our multilingual logged-in viewers, they may indicate that they understand multiple languages, so content in those languages won’t be translated.

## Automatic translations with Discourse AI ✨

Discourse AI is highly essential for the localization feature, and takes away the need to do manual translations.

As an admin, you’d want to head to our dedicated area in Discourse AI for **Translations**. This dedicated area covers:

- translation progress
- AI settings
- app language settings

 ![main page](https://global.discourse-cdn.com/meta/original/4X/0/b/c/0bced9d46c1f8fc21f94123229f2b3a43d73be29.png)  
 ![ai settings](https://global.discourse-cdn.com/meta/original/4X/f/3/d/f3d46962ea436ef840d9a7872b72d51b5c201437.jpeg)  
 ![app language](https://global.discourse-cdn.com/meta/original/4X/7/3/2/7327b8dae9ba67282c3680ae2135c3be6de299df.jpeg)

To cover some important settings and recommendations:

- `AI translation backfill hourly rate` - this setting defaults to `50` - your site will translate 50 posts, 50 topics, 50 categories, 50 tags per hour, to the locales you have set in `Content localization supported locales`. Keep this to a low number when starting out.
- `AI translation category scope` - defaults to `Public categories`. You may change this to all categories, or a specific selection.
- `AI translation personal messages` and `AI translation include bot content` are self-explanatory.
- `AI translation backfill start date` - this value is empty by default. If you enable the AI translation feature “today”, the date is automatically set to “today - 5 days”
- `AI translation post raw translator agent` (and other agents) - In more formal communities, admins may choose to create their own agent. This allows you to set a prompt that is more fine-tuned to the language or vocabulary you prefer.

You can refer to [AI bot - Agents](https://meta.discourse.org/t/ai-bot-agents/306099) on how to configure suitable agents and fine-tune prompts for each function.

## Manual localization

As localization is a core feature in Discourse, we provide the ability for you to fill in and edit localizations manually in the event automatic translations with Discourse AI is not available.

By default, admins and moderators are set up to edit localizations.

 ![group setting](https://global.discourse-cdn.com/meta/original/4X/e/e/e/eee909af8fd0c7fb5fd3db072cc5889781f11957.png)

Currently, we have post content, topic title, category name, category description, tag name, tag description, and sidebar localizations. Subsequent sections below will show you how they work.

### Category localization

Localized categories are visible in the following areas, with both category name and description localized:

> **Places where categories are localized 📸**
>
> 1. Homepage, sidebar, and category dropdown
> 
> ![Discourse homepage](https://global.discourse-cdn.com/meta/original/4X/1/5/6/15627a434bd0e6a5ffc661eca7dfc60c702d9d48.jpeg)
> 
> 1. Categories page
> 
> ![Category page at /categories](https://global.discourse-cdn.com/meta/original/4X/a/0/b/a0bf06dccf43fb758406814657d756f35e1bf4d1.jpeg)
> 
> 1. A specific category with subcategories
> 
> ![the c/documentation/10 page with subcategories](https://global.discourse-cdn.com/meta/original/4X/a/8/e/a8ee06adb3aee4e0ac0a1862bf7287dde36e51f2.jpeg)

As an admin, you should be able to access category settings as usual, and find the new “Localizations” nav item on the left.

> **Editing category localizations in Category Settings 📸**
>
> ![category settings - localizations](https://global.discourse-cdn.com/meta/original/4X/0/f/f/0ff2f3d4cf9d9ad9541db579390ee8031125b87a.jpeg)

### Topic and Post localization

From the screenshots above in **Category localization** , you may have noticed topic titles and excerpts being localized.

There are some pre-requisite settings

- Ensure your user is in `content localization allowed groups`
- The `addTranslation` button is automatically added to `post menu` and `post menu hidden items` when `Content localization enabled` is turned on. This allows the 🌐 to show up in the post menu for users in `content localization allowed groups`.
- `Content localization allow author localization` is enabled by default, and allows post authors to localize their own content using the same post menu as above.

> **post menu setting**
>
> ![post menu](https://global.discourse-cdn.com/meta/original/4X/d/4/8/d48944d3ad43278e3da5f09b5e231a5ca0b268d5.png)

 ![see translations via post menu](https://global.discourse-cdn.com/meta/original/4X/b/c/6/bc6ca299adc7fb72a6c11103ab5e53d4c633d96a.jpeg)  
 ![set and see topic or post language](https://global.discourse-cdn.com/meta/original/4X/2/9/0/2908819069e58f41f666dae3dca372812d008395.jpeg)  
 ![add a new translation](https://global.discourse-cdn.com/meta/original/4X/1/b/9/1b9bd0936105162b49d957e399524c48b5d5d320.jpeg)

#### Editing a localized post

In the event the user might be viewing a localized post, and wants to edit the post, a dialog will appear to ask which version they would prefer to edit:

 ![editing a localized post](https://global.discourse-cdn.com/meta/original/4X/c/1/8/c1887da94c9d8cb4d4d2d7de0185f8bc8405c773.jpeg)

The appropriate composer will appear after deciding.

### Custom sidebar localization

Sidebar sections that are “visible to everyone” also show additional translations controls:

 ![sidebar](https://global.discourse-cdn.com/meta/original/4X/0/4/4/044d30b33b8ba9ccc7148d09a945bfb1e6dde2a9.jpeg)

 ![sidebar part two](https://global.discourse-cdn.com/meta/original/4X/4/a/d/4ade3924c293393212ca35b80352cecbe25c1701.jpeg)

## Crawlers

You can allow crawlers to see your site in the various languages you’ve configured in `Content localization supported locales`. The site setting resides in “Content localization” section as `Content localization crawler param`:

 ![site setting](https://global.discourse-cdn.com/meta/original/4X/3/e/5/3e52072b7c7a648221497b390a7328ab1540a0d4.png)

The result would be that crawlers can see the following, where each supported language has a corresponding hreflang in each topic’s head:

 ![crawler view](https://global.discourse-cdn.com/meta/original/4X/f/2/f/f2f16358318abbb6a6cc49b6c6c902a6202b2334.png)

> **For extra proof / verification**
>
> We’ve tested this feature extensively, and can confirm that we are getting indexed properly after introducing X numbers of supported languages
> 
> ![gsc](https://global.discourse-cdn.com/meta/original/4X/d/9/9/d999b7c77f59b14f01730d3f2d267a010e59728f.png)

# FAQ

**I’ve set things up, but automatic translation is still not working for me**  
Confirm if you’ve these set up

- `Content localization supported locales` has at least one language
- `Content localization enabled` is ✔
  - `Allow user locale` is ✔ (enabled by default)
  - `Set locale from cookie` is ✔

- `Ai translation enabled` is ✔
- You must have a working LLM set for each translation agent

If all else fails, you can enable `SiteSetting.ai_translation_verbose_logs`.

**Are the automatic translations saved, or is it being sent to the LLM each time someone views a topic?**  
The translations are saved, each post is only sent once per language and the translations are reused.

**If my forum supports English and Japanese (via `Content localization supported locales`), and someone writes in Spanish, will their post be translated?**  
Yes. All topics and posts will be translated to English and Japanese, regardless of the written language.

**If the original post is edited, is it re-translated?**  
Yes – with a maximum of 2 times per day. When a post is edited, it gets sent to re-translation after a delay of the greater of 5 minutes or the `SiteSetting.editing_grace_period` to account for ninja edits. Authorized users in `Content localization allowed groups` have the option to send a post to re-translate immediately.

**Will translations be deleted if I change the Agent or LLM?**  
No, translations will typically persist across settings changes unless explicitly deleted using the post menu item or the translation composer.

* * *

> [@](#):
>
> :discourse: **Hosted by Discourse?**
> 
> The number of supported locales is limited by your plan:
> 
> - Starter: 3
> - Pro: 4
> - Business: 5
> - Enterprise: 10
> 
> The backfill limit per hour is currently 100 for all.

---

_[View the full topic](https://meta.discourse.org/t/content-localization-manual-and-automatic-with-discourse-ai/370969)._
