I run temp-mail.you, a disposable email service. It works in 20 languages. I don't have a translation team. It's messier than you'd think.
The i18n setup
Every string the user sees lives in a JSON file. There's one per language: translations/en.json, translations/pt-br.json, translations/ja.json, and so on. Same keys, different values. The app reads the right file based on the URL prefix.
Routes look like /pt-br/blog, /ja/contact, /de/about. English is the default at the root. Astro handles this with dynamic [lang] route parameters so I didn't have to create separate page files for each language. One template, 20 outputs.
Blog posts are the hard part
The UI strings were straightforward. Blog content was not. I have 14 blog posts, each in 20 languages. That's 280 markdown files. Each one is a separate file organized by language folder.
The English versions are the source of truth. I wrote those myself. For the other 19 languages, I generated first drafts with AI and then had the top 5 languages reviewed by native speakers. Portuguese, Spanish, German, French, and Japanese got human eyes on them. The rest I spot-checked but they're mostly AI output with light editing.
Is that ideal? No. But having a Japanese version of "What Is Temp Mail?" that's 90% accurate is better than not having one at all, especially for SEO. Google serves the right language version to the right users and I get traffic from countries I'd never reach with English only.
SEO gains from going multilingual
Before adding languages, the site had about 20 indexable pages. After: 400+. Each language version has its own URL, its own meta tags, its own hreflang tags pointing to every other version. Google treats each one as a separate page.
The keywords I'm targeting in English have massive competition. "Temp mail" in English is brutal. But "correo temporal" in Spanish? Way less competition. Some of these keywords have thousands of monthly searches and almost no one is targeting them with actual content in that language.
I also added native content for PT-BR and Spanish, not just translations. A guide written specifically for Brazilian users searching "gerador de email temporario" performs better than a translated version of an English guide because the search intent and examples are different.
The annoying parts
Right-to-left languages (Arabic) broke my layout in ways I didn't expect. CSS logical properties helped but I still had to add specific RTL overrides for the email viewer and sidebar.
CJK languages (Chinese, Japanese, Korean) have different word length distributions which messed up my title tag optimization. A title that fits in 60 characters in English might be 20 characters in Japanese. I had to add per-language logic for meta title generation.
Some languages inflate the UI. German words are notoriously long. Buttons that look fine in English overflow in German. I ended up setting min-width on interactive elements and letting text wrap where needed.
The numbers after 3 months
The site gets traffic from 40+ countries now. Before the i18n push, it was 90% US/UK. The build still takes under 3 seconds for all 400 pages because Astro is fast and the pages are mostly static.
If you're building a web tool and your only barrier to international traffic is translation, it's worth doing even imperfectly. Ship 20 languages at 85% quality and fix the important ones over time.
Top comments (0)