I've been wrestling with implementing #multilingual content support in Hackers' Pub, our #ActivityPub-powered platform for software engineers.
While ActivityPub theoretically supports multilingual content through the contentMap
property, the reality is that most server implementations (Mastodon, Misskey, etc.) don't properly handle this content as of April 2025. This creates a significant challenge for us.
We want our users to share their knowledge in multiple languages, but we need to ensure compatibility with existing ActivityPub servers. I'm considering several approaches:
- Creating separate posts for each language with clear language indicators, linking them through
inReplyTo
relationships (so translations appear as replies to the original post)
- Using the primary language in
content
while storing translations in contentMap
- Adding "View in other languages" links at the bottom of each post
- Implementing inline language dividers that degrade gracefully on non-supporting servers, for example:
<div lang="en">
<h3>English</h3>
<p>This is the English content…</p>
</div>
<hr>
<div lang="ko">
<h3>한국어</h3>
<p>한국어 내용입니다…</p>
</div>
I'm leaning toward a hybrid approach—showing content in the user's preferred language when possible while providing easy access to other language versions.
Has anyone tackled this problem effectively? I'd love to hear about your experiences or ideas for making multilingual content work well in the fediverse, especially when dealing with server implementations that don't fully support ActivityPub's multilingual features.
#fedidev #federation #i18n