<p>I've been wrestling with implementing <a href="/tags/multilingual/" rel="tag">#multilingual</a> content support in <a href="https://hackers.pub/" rel="nofollow">Hackers' Pub</a>, our <a href="/tags/activitypub/" rel="tag">#ActivityPub</a>-powered platform for software engineers.</p><p>While <a href="https://www.w3.org/TR/activitystreams-vocabulary/#ex131-jsonld" rel="nofollow">ActivityPub theoretically supports multilingual content through the contentMap property</a>, 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.</p><p>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:</p><p>Creating separate posts for each language with clear language indicators, linking them through inReplyTo relationships (so translations appear as replies to the original post)<br>Using the primary language in content while storing translations in contentMap<br>Adding "View in other languages" links at the bottom of each post<br>Implementing inline language dividers that degrade gracefully on non-supporting servers, for example:<p><div lang="en"> <h3>English</h3> <p>This is the English content…</p></div><hr><div lang="ko"> <h3>한국어</h3> <p>한국어 내용입니다…</p></div></p></p><p>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.</p><p>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.</p><p><a href="/tags/fedidev/" rel="tag">#fedidev</a> <a href="/tags/federation/" rel="tag">#federation</a> <a href="/tags/i18n/" rel="tag">#i18n</a></p>
i18n
<p>Help us test internationalization for Fedora 42! Testing is running from Mar 4-10.</p><p>➡️ <a href="https://fedoramagazine.org/contribute-at-the-fedora-linux-42-i18n-test-week/" rel="nofollow" class="ellipsis" title="fedoramagazine.org/contribute-at-the-fedora-linux-42-i18n-test-week/"><span class="invisible">https://</span><span class="ellipsis">fedoramagazine.org/contribute-</span><span class="invisible">at-the-fedora-linux-42-i18n-test-week/</span></a></p><p><a href="/tags/fedora/" rel="tag">#Fedora</a> <a href="/tags/i18n/" rel="tag">#i18n</a> <a href="/tags/linux/" rel="tag">#Linux</a> <a href="/tags/opensource/" rel="tag">#OpenSource</a></p>
<p>« Econception logicielle, pourquoi et comment coder "green" » <img src="https://neodb.social/media/emoji/framapiaf.org/blobcatcoffee.png" class="emoji" alt=":blobcatcoffee:" title=":blobcatcoffee:"> </p><p><a href="https://speakerdeck.com/pylapp/econception-logicielle-pourquoi-et-comment-coder-green-masterclass-universite-toulouse-iii" rel="nofollow" class="ellipsis" title="speakerdeck.com/pylapp/econception-logicielle-pourquoi-et-comment-coder-green-masterclass-universite-toulouse-iii"><span class="invisible">https://</span><span class="ellipsis">speakerdeck.com/pylapp/econcep</span><span class="invisible">tion-logicielle-pourquoi-et-comment-coder-green-masterclass-universite-toulouse-iii</span></a></p><p><a href="/tags/ecodesign/" rel="tag">#ecodesign</a> <a href="/tags/ecoconception/" rel="tag">#ecoconception</a> <a href="/tags/opensource/" rel="tag">#opensource</a> <a href="/tags/a11y/" rel="tag">#a11y</a> <a href="/tags/i18n/" rel="tag">#i18n</a> <a href="/tags/androiddev/" rel="tag">#androiddev</a> <a href="/tags/iosdev/" rel="tag">#iosdev</a> <a href="/tags/webdev/" rel="tag">#webdev</a> <a href="/tags/viededev/" rel="tag">#VieDeDev</a></p><p>Support sous CC-BY-SA<br> <img src="https://neodb.social/media/emoji/framapiaf.org/cc.png" class="emoji" alt=":cc:" title=":cc:"> <img src="https://neodb.social/media/emoji/framapiaf.org/ccby.png" class="emoji" alt=":ccby:" title=":ccby:"> <img src="https://neodb.social/media/emoji/framapiaf.org/cc_sa.png" class="emoji" alt=":cc_sa:" title=":cc_sa:"></p>
<p>Quite annoyed that i18next has many versions of its own JSON format (now v4) <a href="https://www.i18next.com/misc/json-format" rel="nofollow" class="ellipsis" title="www.i18next.com/misc/json-format"><span class="invisible">https://</span><span class="ellipsis">www.i18next.com/misc/json-form</span><span class="invisible">at</span></a> — every time there's a new version, devs have to convert existing translation files to the new format *and* ensure that their translation management platform (e.g. Crowdin) already supports it (and older versions).</p><p>Glad that I use Lingui for Phanpy which uses the widely-adopted ICU MessageFormat (<a href="https://lingui.dev/guides/message-format" rel="nofollow" class="ellipsis" title="lingui.dev/guides/message-format"><span class="invisible">https://</span><span class="ellipsis">lingui.dev/guides/message-form</span><span class="invisible">at</span></a>)</p><p>Note: my other projects use i18next, thus the rant.<br><a href="/tags/webdev/" rel="tag">#WebDev</a> <a href="/tags/i18n/" rel="tag">#i18n</a></p>
<p>The Internationalization Working Group <span class="h-card"><a href="https://w3c.social/@webi18n" class="u-url mention" rel="nofollow noopener noreferrer" target="_blank">@<span>webi18n</span></a></span> has published the first draft of a Group Note titled "Text-to-Speech Rendering of Electronic Documents Containing Ruby: User Requirements". This document describes user requirements related to text-to-speech rendering of electronic documents containing ruby annotations. <br><a href="/tags/i18n/" rel="tag">#i18n</a> <a href="/tags/internationalization/" rel="tag">#internationalization</a> <br><a href="https://www.w3.org/news/2026/group-note-draft-ruby-tts-req/" rel="nofollow" class="ellipsis" title="www.w3.org/news/2026/group-note-draft-ruby-tts-req/"><span class="invisible">https://</span><span class="ellipsis">www.w3.org/news/2026/group-not</span><span class="invisible">e-draft-ruby-tts-req/</span></a></p>
<p><span class="h-card"><a href="https://w3c.social/@w3c" class="u-url mention" rel="nofollow noopener noreferrer" target="_blank">@<span>w3c</span></a></span> recharters its Internationalization <a href="/tags/workinggroup/" rel="tag">#WorkingGroup</a> through March 2029<br>▶️ <a href="https://www.w3.org/International/groups/wg/charter-2026.html" rel="nofollow" class="ellipsis" title="www.w3.org/International/groups/wg/charter-2026.html"><span class="invisible">https://</span><span class="ellipsis">www.w3.org/International/group</span><span class="invisible">s/wg/charter-2026.html</span></a></p><p>The group's new work includes HTML Ruby Markup Extensions (better support for phonetic annotations), Ruby Text-to-Speech (<a href="/tags/a11y/" rel="tag">#a11y</a> support for <a href="/tags/ruby/" rel="tag">#ruby</a> annotations) and Message Resources (for easier localization) <a href="/tags/i18n/" rel="tag">#i18n</a> <span class="h-card"><a href="https://w3c.social/@webi18n" class="u-url mention" rel="nofollow noopener noreferrer" target="_blank">@<span>webi18n</span></a></span></p><p>📢 If you believe the Web should speak your language, join or rejoin the group!<br><a href="https://www.w3.org/groups/wg/i18n-core/join/" rel="nofollow" class="ellipsis" title="www.w3.org/groups/wg/i18n-core/join/"><span class="invisible">https://</span><span class="ellipsis">www.w3.org/groups/wg/i18n-core</span><span class="invisible">/join/</span></a></p>