Stop Managing Translations in JSON Files — There's a Better Way
Every multilingual app starts the same way: locales/ ├── en.json ← 12 keys ├── tr.json ← 12 keys └── de.json ← 12 keys Six months later: locales/ ├── en.json ← 847 keys ├── tr.json ← 791 keys (56 missing, nobody knows which) ├── de.json ← 823 keys (24 orphaned from a deleted feature) ├── ja.json ← 402 keys (translator quit halfway) └── ar.json ← 0 keys (we said we'd get to it) If this looks familiar, keep reading. The Real Problem The issue isn't JSON files. JSON is fine. The problem is that translations live outside your development workflow . Your code goes through pull requests, CI checks, type checking, and automated tests. Your translations? Someone exports a spreadsheet, a translator fills in cells, and someone else copies the values into JSON files. No review. No validation. No automated checks. This means: Keys drift — a developer renames save_draft to save_as_draft in code, but the translation files still have save_draft Dead keys accumulate — features get deleted, translation
Continue reading on Dev.to React
Opens in a new tab

