Before we launched into a new country rollout, I took a hard look at our i18n workflow. Nobody was complaining loudly. But every time a translation task came up, you could feel the quiet dread in the team. The bottleneck wasn't technical. It was a responsibility boundary that had been drawn in the wrong place. The Workflow Nobody Questioned Our UX designer used a Figma plugin to export translations as a JSON attachment, which she uploaded to the corresponding ticket. Dev would download it, do a local replace, then manually wire up strings in the codebase by matching layer names and context fields. The exported JSON looked like this: { "items" : [ { "nodeId" : "12:345" , "layerName" : "Button Label" , "context" : "Homepage → Hero → CTA" , "figmaFile" : "Translation_EN_US_v3" , "lastUpdated" : "2024-01-15" , "value" : "Get Started" } ] } Enter fullscreen mode Exit fullscreen mode The codebase only needed { "button.label": "Get Started" } . Everything else was noise that came along for the ride.…