A truly European software forge would fully respect the diversity of natural languages. In addition to having a fully localized user interface, it would support automatically translating all user-generated texts, so that people could work in their native or preferred language instead of having to use English.
Internationalise The Fediverse
https://shkspr.mobi/blog/2024/02/internationalise-the-fediverse/
We live in the future now. It is OK to use Unicode everywhere.
It seems bizarre to me that modern Internet services sometimes "forget" that there's a world outside the Anglosphere. Some people have the temerity to speak foreign languages! And some of those languages have accents on their letters!! Even worse, some don't use English letters at all!!!
A decade ago, I was miffed that GitHub only supported some ASCII characters in its project names. There's no technical reason why your repo can't be called "ഹലോ വേൾഡ്".
Similarly, I'm frustrated that Mastodon (the largest ActivityPub service) doesn't allow Unicode usernames and has resisted efforts to change.
So I built a small ActivityPub server which publishes content from an Actor called @你好@i18n.viii.fi - it is only a demo account, but it works!
Some ActivityPub clients report that they are able to follow it and receive messages from it. Others - like Mastodon - simply can't see anything from it. Take a look at the replies on Mastodon to see which services work. You can also see some of its posts on the Fediverse.
What Does The Fox Spec Say?
The ActivityPub specification says:
Building an international base of users is important in a federated network.Internationalization
I can't find anything in the specifications which limits what languages a username can be written in. But there are a few clues scattered about.
The user's @ name is defined by preferredUsername which is:
A short username which may be used to refer to the actor, with no uniqueness guarantees. 4.1 Actor objects
There's nothing in there about what scripts it can contain. However, later on, the spec says:
Properties containing natural language values, such as
name,preferredUsername, orsummary, make use of natural language support defined in ActivityStreams.4. Actors
So it is expected that a preferred username could be written in multiple scripts. Which implies that the default need not be limited to A-Z0-9.
The ActivityStreams specification talks about language mapping.
Finally, the ActivityPub specification has some examples on non-Latin text in names.
So, I think that it is acceptable for usernames to be written in a variety of non-Latin scripts.
But What About...?
There are usually a few objections to "Unicode Everywhere" zealots like me. I'd like to forestall any arguments.
What about homograph attacks?
Well, what about them? ASCII has plenty of similar looking characters. I doubt most people would notice when a capital i is replaced by a lower L - and vice-versa. Similarly the kerning issue of an r and n looking like an m is well known. Are mixed language homographs more dangerous? I don't think so.
What if people make names that can't be typed?
Well, what if they do? Maybe not being found by people who can't type your language is a feature, not a bug. But, anyway, clients can let users search for other people, or copy and paste their names.
What about weird "Zalgo" text?
It is up to a client to decide how they want to render text input. The "problems" of strange Unicode combinations are well known. This is not a hard computer-science problem.
What about bi-directional text?
The spec makes clear this is allowed.
Do people even want a username in their own script?
I have no evidence for this. But I bet you'd get pretty frustrated if you had to switch keyboard just to type your own name, wouldn't you? In any case, why can't I have a username of @😉
What's Next?
If you build ActivityPub software, give some thought to the billions of people who don't have names which easily fit into ASCII.
If your software can see @你好@i18n.viii.fi and its posts, please let me know.
The Internationalization Working Group @webi18n 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.
#i18n #internationalization
https://www.w3.org/news/2026/group-note-draft-ruby-tts-req/
Thank you !!! (!)
JS Intl is probably the most underestimated thing in the web :)
Try to ask devs. where in the browser you find the name in all the languages of all ISO stuff like countries, regions, languages currency.
Try to ask where all the timezones of the world are or how you give people internationalized lists, number expressions or relative time …
This is all https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl and in #ActivityPub we just need to federate e.g. id: "DE" for Germany.
It is crazy nice for https://martinfowler.com/bliki/Datensparsamkeit.html as well - our preview of the countries tsv incl. all stats like Pressfreedom Index is around 50kb …
Die AI, die.
We just dropped two super useful articles:
- Addresses look wildly different around the world (order, details, even postal codes). This one explains the chaos and how to build forms/apps that don't frustrate international users.
- Easy guide to JavaScript's built-in Intl API, with real examples for formatting dates, numbers, currencies, etc., the right way for any language/region.
🔗 Addresses: https://www.w3.org/International/questions/qa-address-formats
🔗 Intl guide: https://www.w3.org/International/articles/intl/index
Thank you !!! (!)
JS Intl is probably the most underestimated thing in the web :)
Try to ask devs. where in the browser you find the name in all the languages of all ISO stuff like countries, regions, languages currency.
Try to ask where all the timezones of the world are or how you give people internationalized lists, number expressions or relative time …
This is all https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl and in #ActivityPub we just need to federate e.g. id: "DE" for Germany.
It is crazy nice for https://martinfowler.com/bliki/Datensparsamkeit.html as well - our preview of the countries tsv incl. all stats like Pressfreedom Index is around 50kb …
Die AI, die.
The Internationalization Working Group @webi18n 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.
#i18n #internationalization
https://www.w3.org/news/2026/group-note-draft-ruby-tts-req/
Resources, le logiciel de monitoring par défaut du futur Ubuntu, sort une nouvelle version le 1er février.
Essayez de faire monter les pourcentages avant cette date !
Offpunk is now "translatable". If you want to help translate #offpunk in your language before the 3.0, release, join us !
instructions :
https://offpunk.net/translation.html
Announcement:
https://lists.sr.ht/~lioploum/offpunk-users/%3C20260127191329.7981d3b160d0f121882dffc3@gmail.com%3E
#i18n #gemini_protocol #smolnet #cli #python #smallweb #gemini
Offpunk is now "translatable". If you want to help translate #offpunk in your language before the 3.0, release, join us !
instructions :
https://offpunk.net/translation.html
Announcement:
https://lists.sr.ht/~lioploum/offpunk-users/%3C20260127191329.7981d3b160d0f121882dffc3@gmail.com%3E
#i18n #gemini_protocol #smolnet #cli #python #smallweb #gemini
Does anyone have experience using the i18n node.js package? I could really use some help fixing this issue with incorrect language being detected:
https://github.com/jointhefediverse-net/jointhefediverse.net/issues/99
#node #NodeJS #i18n #internationalization #WebDev #WebDevHelp
Здравей - hello there! Keila, the Open Source newsletter tool, is now available in Bulgarian thanks to another wonderful volunteer contribution!
#buildinpublic #opensource #i18n #translation #bulgaria #bulgarian
Здравей - hello there! Keila, the Open Source newsletter tool, is now available in Bulgarian thanks to another wonderful volunteer contribution!
#buildinpublic #opensource #i18n #translation #bulgaria #bulgarian
We have been revamping the inline-help feature that provides users with contextual help throughout the application.
While we were at it we have updated the content of many of the help pages.
To make things easier for translators, we have separated inline-help strings from the app strings.
See the new weblate component here https://hosted.weblate.org/projects/liberaforms/inline-help/
Thank you very much to all of you who are dedicating your time to bring LiberaForms to users in their native tongue! ♥️
We have been revamping the inline-help feature that provides users with contextual help throughout the application.
While we were at it we have updated the content of many of the help pages.
To make things easier for translators, we have separated inline-help strings from the app strings.
See the new weblate component here https://hosted.weblate.org/projects/liberaforms/inline-help/
Thank you very much to all of you who are dedicating your time to bring LiberaForms to users in their native tongue! ♥️
Good morning - Jó reggelt! Keila is now available in Hungarian!
Thank you to TrueQAP on GitHub for contributing this. 🇭🇺
Would you like to help translate the 'Send' button, messages, and notifications from LiberaForms?
We have separated the texts that are seen on the Internet (those seen on published forms) from the hundreds of others texts included in LiberaForms.
We hope that this small subset of texts with encourage you to translate them.
Thank you!
https://usem.liberaforms.org/public-form-translations
Please reboost 🙃