Sign inCreate account

For UX writers, content designers, PMs, and their teams

Your product copy shouldn’t live in four places.

Strings, context, and translations in one workspace — pulled into Figma by designers, exported as locale JSON by developers. Same words, everywhere.

Checkout Web App

Viewing locale: en

3 locales
checkout.button.submitactive

Place order

checkout.empty.titledraft

Your cart is empty

For UX writers and content designers

Write the words. Keep the why.

A button label is only part of the job. Keep the intent, the context, and the person to ask alongside the string, so your team can understand the decision behind it.

Give every string its context
Explain where the copy appears, what the user is doing, and why you chose those words.
Make the right words easy to find
Tag strings by flow or component. Add an ownership note in the description so teammates know who to ask.
Keep languages connected
Keep source copy and translations attached to the same key, with a review status for each translation.
Anatomy of a product stringIllustrative example

String key

checkout.button.submit

Place order

Context / description

Final checkout action, after the customer has reviewed the total. “Place order” confirms a purchase; avoid the generic “Submit”.

Owner: Maya, checkout content. Check wording changes with her before the next release.

Tags

  • checkout
  • button
  • purchase

One key, three languages

en

Place order

fr

Passer la commande

es

Realizar pedido

Built for developers

From product copy to your codebase.

Start with your existing JSON: import it in the workspace, keep your keys, and let the team edit copy with context. Export a flat catalog per locale or fetch catalogs during your server or build process.

Example catalog

GET /api/projects/{projectId}/strings?locale=en

Authorization: Bearer <API_KEY>

{
  "checkout.button.submit": "Place order",
  "checkout.empty.title": "Your cart is empty"
}

Use a project API key in your server or build process. Keep it out of browser code.

Copycat UI for Figma

Your product copy, right inside Figma.

Use your product copy in Figma without pasting it layer by layer.

  1. Connect your project

    Run the plugin in Figma and enter a one-time connection code from your project’s Integrations page.

  2. Insert the right words

    Choose a source string or approved translation and apply it to selected text layers.

  3. Refresh linked copy

    Keep text layers linked to their strings so you can refresh them with updated copy.

Which version of that button text is final?

One version in Figma. Another in a Google Doc. A correction buried in Slack, and an older string in the PR. Give writers, designers, PMs, and developers one place to find and update the words your product uses.

Keep your JSON. Give the whole team a workspace.

Translation platforms help teams manage localization at scale. Copycat UI is built for teams whose bottleneck isn’t the translation pipeline — it’s agreeing on the English string in the first place. Give writers, designers, and developers one place to settle the wording, then carry it into Figma and locale JSON.

Workflow

A compact process for copy that changes with the product.

Your team writes the words and reviews each translation. Copycat UI keeps that work together, from the first draft to delivery.

  1. 1Create a workspace and project for your product.
  2. 2Import existing JSON or add source strings with context and tags.
  3. 3Write and review translations with your team, keeping control of tone and meaning.
  4. 4Refresh linked Figma text and deliver locale JSON through exports or the API.

Before you connect your product

How do strings get in, and how do we ship them?

Add and edit strings in the web workspace, or import JSON catalogs. Export locale files for your repository, or fetch them from the read-only API in a server or CI build step. There is no dedicated sync CLI or automatic two-way repo sync.

Flat or nested JSON? Which frameworks?

Import flat or nested JSON; nested keys are flattened to dot notation. Exports are flat key-to-string JSON. Connect them to your own i18next, react-intl, or other translation setup; Copycat UI does not provide framework-specific adapters.

What about variables, plurals, and ICU messages?

String values can contain your message syntax. Interpolation and plural selection happen in your app’s translation library. Copycat UI does not parse or validate ICU messages, check placeholder parity, or provide a dedicated plural editor.

Are translations generated automatically?

Your team supplies translations by editing or importing them, then tracks them as missing, draft, reviewed, or approved. You control the wording and tone; built-in machine translation is not available.

How do review, roles, and approvals work?

Source strings have draft, active, and deprecated statuses. Translations have separate review statuses. Workspace access includes member, developer, admin, and owner levels. JSON exports, the catalog API, and Figma publish only approved translations. JSON and API catalogs fall back to source text when an approved translation is unavailable; Figma leaves existing layer text unchanged.

Can we browse or restore earlier versions?

Export locale catalogs and keep them in version control for release diffs and rollback. Copycat UI does not yet offer browsable version history or a restore workflow within the workspace.

Give your product copy one place to live.

Bring your strings together, keep their context, and give your team the same words to work from.

Create account