<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/1-000-keys-5-000-words-12-languages-one-missing-spanish-key-broke-prod-so-i-built-i18now--h0bm6kppi" -->

---
title: 1,000+ keys. 5,000+ words. 12 languages. One missing...
description: A developer built i18now after struggling with word-based pricing on translation tools for a project with 1,000+ keys across 12 languages. The tool offers flat...
canonical: https://daily.dev/posts/1-000-keys-5-000-words-12-languages-one-missing-spanish-key-broke-prod-so-i-built-i18now--h0bm6kppi
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: 1,000+ keys. 5,000+ words. 12 languages. One missing Spanish key broke prod. So I built i18now. | daily.dev
og:description: A developer built i18now after struggling with word-based pricing on translation tools for a project with 1,000+ keys across 12 languages. The tool offers flat...
og:url: https://daily.dev/posts/1-000-keys-5-000-words-12-languages-one-missing-spanish-key-broke-prod-so-i-built-i18now--h0bm6kppi
og:image: https://api.daily.dev/og/posts/H0bM6Kppi.png
og:image:alt: 1,000+ keys. 5,000+ words. 12 languages. One missing Spanish key broke prod. So I built i18now.
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# 1,000+ keys. 5,000+ words. 12 languages. One missing Spanish key broke prod. So I built i18now.

**[uday](https://daily.dev/sources/lculyxxwga4bacmsyyucb)** · [@uday_ad](https://daily.dev/uday_ad) · 2 min read · 0 upvotes · 0 comments

## Summary

A developer built i18now after struggling with word-based pricing on translation tools for a project with 1,000+ keys across 12 languages. The tool offers flat pricing, JSON/YAML file translation, repo sync, a CLI that catches missing keys at build time, team workflows for non-dev translators, and AI-assisted draft translations. Each feature was added reactively after a real production incident or workflow breakdown. After one month live: 68 signups, 21 activated, 7 paying, $140 MRR.

## Content

```
This started as my own pain, not a startup idea.

My app had ~1,000 translation keys, ~5,000 words, 12 languages. Simple enough on paper. In practice, everything I tried charged by the word. The free tiers looked generous — until you crossed the line, then you were paying enterprise money for the one feature you actually used: translate a file, sync it back.

Switching tools wasn't the fix either. Once you've wired i18n into every view, every component, every build step, "just move to another platform" is a two-week project you don't have.

So I built the thin version I wanted. Free tier that covers a real project. Flat pricing. Translate JSON/YAML, sync it to your repo. That's it.

Then reality kept adding features for me.

One day I shipped a release without the Spanish key. Prod threw. I built an auto-sync package so the CLI catches missing keys at build time and pulls them before deploy. That's the piece I was most proud of — it saved me from the same mistake three more times that month.

A few sprints later the product team was late handing me translations and I had to push a deploy to the next sprint. So I added team workflows — roles, assignments, a way for the non-dev translator to work without me babysitting. That fixed it.

Then I wired AI in for the initial drafts, so the translator reviews instead of types.

Every one of those features came from a real thing that broke. Nothing was built because "a translation tool should have it." The product is exactly the tool I needed, and nothing else.

Month 1 live: 68 signups, 21 activated, 7 paying, $140 MRR. Every paying customer told me a version of the same story — word-based pricing, hit the limit, got stuck, now they're here.

Try it free: https://i18now.com/

Curious if other indie founders ended up in the same loop — built a thing for yourself, shipped it, and only realized afterward it was a product.
```

## Similar posts on daily.dev

- [Introducing Universally: Translate Your Entire Site with AI](https://daily.dev/posts/introducing-universally-translate-your-entire-site-with-ai-c6lugxc0t) · WordPress Beginner · 3 upvotes · 0 comments
- [Scaling localization at Atlassian: keeping translation at the pace of AI-era development](https://daily.dev/posts/scaling-localization-at-atlassian-keeping-translation-at-the-pace-of-ai-era-development-t5xyndmet) · Atlassian · 0 upvotes · 0 comments

---

Tags: [#webdev](https://daily.dev/tags/webdev), [#devtools](https://daily.dev/tags/devtools), [#cli](https://daily.dev/tags/cli), [#localization](https://daily.dev/tags/localization)

[View this post on daily.dev](https://daily.dev/posts/1-000-keys-5-000-words-12-languages-one-missing-spanish-key-broke-prod-so-i-built-i18now--h0bm6kppi)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"DiscussionForumPosting","mainEntityOfPage":"https://daily.dev/posts/1-000-keys-5-000-words-12-languages-one-missing-spanish-key-broke-prod-so-i-built-i18now--h0bm6kppi","headline":"1,000+ keys. 5,000+ words. 12 languages. One missing Spanish key broke prod. So I built i18now.","text":"A developer built i18now after struggling with word-based pricing on translation tools for a project with 1,000+ keys across 12 languages. The tool offers flat pricing, JSON/YAML file translation, repo sync, a CLI that catches missing keys at build time, team workflows for non-dev translators, and AI-assisted draft translations. Each feature was added reactively after a real production incident or workflow breakdown. After one month live: 68 signups, 21 activated, 7 paying, $140 MRR.","url":"https://daily.dev/posts/1-000-keys-5-000-words-12-languages-one-missing-spanish-key-broke-prod-so-i-built-i18now--h0bm6kppi","datePublished":"2026-04-17T13:43:52.669Z","dateModified":"2026-04-17T13:44:11.222Z","author":{"@type":"Person","name":"uday","url":"https://daily.dev/uday_ad","image":"https://avatars.githubusercontent.com/u/53214619?v=4","interactionStatistic":{"@type":"InteractionCounter","interactionType":{"@type":"EndorseAction"},"userInteractionCount":100}},"image":"https://media.daily.dev/image/upload/s--ixV1r_Js--/f_auto/v1776433433/posts/H0bM6Kppi?_a=BAMAMiWQ0","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"isPartOf":{"@type":"WebPage","url":"https://daily.dev/sources/lculyxxwga4bacmsyyucb","name":"uday"}}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"uday","item":"https://daily.dev/sources/lculyxxwga4bacmsyyucb"},{"@type":"ListItem","position":3,"name":"1,000+ keys. 5,000+ words. 12 languages. One missing Spanish key broke prod. So I built i18now."}]}
```

