Running a temp mail service in 20 languages without a translation team
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 ...

Source: DEV Community
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 l