The translator who emailed me
If you want your app translated, the conventional wisdom is: lower the barrier. Don’t make people file pull requests against a strings file. Give them a web UI where they can see the English, type the translation, and submit — no git, no build, no friction. So I did the thorough thing and stood up my own Weblate instance, self-hosted next to everything else I run, wired to Calendula’s repo. The pipeline was ready. Then it sat there, empty, because building the invitation is not the same as being invited.
The bug that only a person could find
The first translator didn’t come through the polished pipeline. He came through my inbox.
Roberto — Italian, and generous enough to lead with why rather than what. He’d been waiting years, he said, for a well-made Android calendar that was open source and privacy-focused, and he wanted to help translate it.
But he couldn’t register on my Weblate. The registration page told him there were problems with the server. He’d signed up fine on the public Weblate site, so he rightly suspected the fault was on my self-hosted end and asked whether it could be fixed.
It was, and the cause was almost funny in how mundane it was: I’d never configured email for the instance. Weblate sends a verification message on registration; with no mail server behind it, that step failed silently, for everyone. My own testing never caught it because I was already an admin. The carefully-built front door had no doorbell, and I had no way of knowing until someone stood outside it and told me.
Same day, I set up mail, verified that registration worked end to end, and wrote back. His reply, once he was in, was simply that it was working — he’d started translating.
What the infrastructure couldn’t do
Here’s the part I keep thinking about. I’d invested in the scalable solution — a hosted platform anyone in the world could use without talking to me. And its first real outcome was a silent failure that turned every prospective contributor away, invisibly, until one person chose the un-scalable path of emailing a stranger to say “your thing is broken, I’d like to help anyway.”
The tooling is still worth it. But the tooling didn’t get Calendula translated — a person who cared did, and who cared enough to push past a broken sign-up instead of shrugging and closing the tab. No form submission would have told me the form was broken.
By morning
I fixed the mail config in the evening. By the next morning the Italian translation was at 40% and Spanish had appeared at 34% — two languages moving, from basically nothing, within a day of the sign-up actually working.
That’s the whole arc of a small open-source project in miniature: you build the proper infrastructure because it’s the right thing to do, it fails in some dumb invisible way, someone who genuinely wants the thing to exist reaches through the gap to tell you, you fix it in an evening, and suddenly your calendar speaks Italian. Not because the pipeline was clever. Because Roberto wrote an email.
If you’re the kind of person who emails the developer instead of quietly giving up: thank you. You are worth more than the analytics.
Want to help translate Calendula? The door works now — weblate.dev.jeanlucmakiola.de.