# Add a translation Visual reference: `RenewCMS Screens Localization.dc.html`, group "L4 Add a translation". Read [localization.md](../localization.md) first. Its integration decisions supersede conflicting board annotations. These states describe target behavior, not shipped behavior. Route: `/article/{id}/edit?dialog=add-translation&lang=fr` ### Add a translation (group "L4 Add a translation", 8 states) | # | State | Trigger | Stable ID | Frame selector | |---|---|---|---|---| | 1 | Copy from source | Editor → language menu → Add translation | `loc.l4.form` | `at:form` | | 2 | Start empty | Title only | `loc.l4.empty` | `at:empty` | | 3 | Creating | Submit in flight | `loc.l4.saving` | `at:saving` | | 4 | Exists, readable | 409 language_exists, Open offered | `loc.l4.dup` | `at:dup` | | 5 | Exists, not readable | Neutral 409, no Open | `loc.l4.dupHidden` | `at:dupHidden` | | 6 | Failed | 5xx, entries kept | `loc.l4.fail` | `at:fail` | | 7 | Source unavailable | Source deleted or access lost mid-flow | `loc.l4.gone` | `at:gone` | | 8 | Long dialog | Long title, many authors and images; body scrolls | `loc.l4.long` | `at:long` | Exact rendered copy and geometry are in `source/LocaleFrame.dc.html` for the selector above. Use Nuxt UI mappings in `components.md`; the frame markup is a visual reference, not production component code. The standard captures are 1440×900 and 390×844 in light and dark. The narrow reference state also uses 1024×768. The visual harness must support these sources and sizes before this screen can pass its gate. No visual exceptions or new clock-sensitive skips are approved.