Discourse-multilingual-post

AI-generated summary

Discourse Multilingual Plugin Discussion

syl has developed a proof-of-concept plugin for Discourse that allows multiple localized versions of post content. The plugin uses [lang=xx] blocks to define translations. However, it lacks the ability to localize topic titles.

syl requests help from the Discourse team to localize topic titles by defining a language order and allowing users to write titles with multiple languages. Falco and angus suggest handling titles server-side in Rails, using custom topic fields and serializers to send the selected language title.

angus is also working on a separate multilingual plugin that allows translations of tags, category names, and descriptions, and suggests combining forces. jadenfreude requests support for decorating Discourse pages (FAQ/Guidelines, TOS, Privacy Policy), but notes that rewriting the plugin to use decorateWidget() might be necessary. syl agrees that decorating static pages would be a nice feature, but is unsure if decorateWidget has a hook into static pages.

discourse-multilingual-post

A Discourse plugin that allows multiple localized versions of post content.

This plugin is a proof-of-concept : without the possibility to localize topic titles, it is not very useful.

How to use

In a post, use [lang=xx] blocks:

[lang=en]
Hello World!
[/lang]
[lang=fr]
Bonjour monde !
[/lang]
[lang=de]
Hallo Welt !
[/lang]

Result:

Hallo Welt !

Country codes must be 2-letter long (regions are not supported).

How it works

When rendering a post, the plugin seeks one [lang=xx] block to display. It will stop seeking once it has found:

  1. the block set for the language of the user (as selected by Discourse)
  2. the block set for the default language of the Discourse instance
  3. the first block

Repository

https://github.com/sylque/discourse-multilingual-post

13 Likes

Discourse team, any idea how I could localize topic titles?

What I would like to do is this:

  • Define a language order, for example “en,fr,de”
  • Allow users to write topic titles like this: Hello World#Bonjour monde#Hallo Welt
  • When Discourse displays a topic title, modify it to only keep the right language

However, I found no client-side hook to modify the title. Any idea?

6 Likes

Did you consider handling titles in Rails? Default language is the existing one, while additional titles are custom topic fields. Then you change serializers to send the selected language title in the payload.

8 Likes

Great work!

I would second this. I think server-side is the way to go for titles.

I’m actually in the process of building a multilingual plugin (almost finished) that allows for translations of:

  1. Tags
  2. Category names
  3. Caegory descriptions

As well as an admin panel to administer languages and locales and a bunch of other things like user specific language content filters.

https://github.com/paviliondev/discourse-multilingual

There could be scope to combine forces here.

14 Likes

Hello! I love this plugin and how simple it is and I feel that it’d be more useful if it supported decorating discourse pages (FAQ/Guidelines, TOS, Privacy Policy) since the headings get translated anyways. I’ve tried forking and expanding on it myself, but to tell you the truth I’m an absolute novice. Although I have a feeling that it needs to be rewritten around decorateWidget() instead of decorateCooked().

1 Like

Decorating a Discourse static page (FAQ/Guidelines, TOS, Privacy Policy) would be a nice feature. However, I’m not sure decorateWidget has a hook into static pages. Someone, any hint on this?