Skip to content

Translations · CC BY 4.0

Translate a guide, keep the credit

All 91 guides are published under CC BY 4.0, which means translation is explicitly allowed — you do not need to ask. What you do need is the attribution line, which is why the workflow below is short and the glossary is long.

Honest status: there are zero community translations today. The Spanish landing page at /es is ours, written to test the localisation route — it is not a community contribution and is not counted as one below.

The workspace

Translation is a form of remixing, and remixing is a form of review: the best translation note is the one that tells us where the original was unclear. Translate the file faithfully, then list the sentences you had to invent a term for.

  1. Pick a guide, and say which locale you are taking — a comment is enough, one translator per locale per guide avoids collisions.
  2. Translate the prose, the headings and the alt-equivalents. Do not translate slugs, component names, model names or the audit numbers.
  3. Keep the attribution block and the CC BY 4.0 note in the translated file, plus a line saying it is a translation of the English original.
  4. Include the glossary decisions you made, so the next translator of that locale does not re-litigate them.
  5. Send it through the submit flow with the guide slug in the “based on” field.

Status by guide · all locales

Status by guide · all locales — data table
GuideMinutesCommunity translationsStatus
Build a hero that breathes — in 20 minutes200needs a translator
Easing is a language — a field guide to curves120needs a translator
Write AI prompts that reproduce — not ones that 'inspire'150needs a translator
Before you copy that component: the a11y checklist80needs a translator
Glass is a material — not a trend100needs a translator
3D that costs nothing: CSS depth in five moves40needs a translator
Scroll choreography that respects the reader50needs a translator
Gradients that don't look cheap90needs a translator
The 60fps handshake: what devtools is really telling you100needs a translator
Design the empty state first90needs a translator
Easing cheatsheet, deep dive110needs a translator
Springs are not easings120needs a translator
The choreography question: story or decoration?80needs a translator
Micro-interactions that pay rent90needs a translator
Will-change is a promise — keep it or break it100needs a translator
Why 60fps feels like 24fps110needs a translator
Animating on the GPU without asking120needs a translator
Scroll speed is a type choice90needs a translator
The 200ms click window80needs a translator
Reduced motion beyond the switch110needs a translator
Glass, part two: when glass belongs100needs a translator
Shadow discipline90needs a translator
Grid systems that don't shout80needs a translator
Fluid type without magic numbers90needs a translator
CSS nesting, now80needs a translator
Container queries cookbook100needs a translator
:has() is finally useful90needs a translator
scroll-timeline, honestly100needs a translator
In defence of the button80needs a translator
Colour contrast you can compute100needs a translator
Writing a brief the model can't ignore100needs a translator
The retry loop: from fidelity 84 to 9290needs a translator
One palette, three moods80needs a translator
When to say 'no gradients' in a prompt80needs a translator
Model personality drift90needs a translator
Design tokens inside prompts100needs a translator
Prompting for reduced motion80needs a translator
From prompt to component110needs a translator
The 5-line prompt myth90needs a translator
Fidelity is a claim100needs a translator
The keyboard walk90needs a translator
Screen-reader poetry80needs a translator
Focus order is layout80needs a translator
Contrast on brand colours90needs a translator
Touch targets beyond 44px80needs a translator
Autoplay is a decision90needs a translator
Designing for cognitive load100needs a translator
Forms that fail kindly90needs a translator
The invisible header80needs a translator
Testing with one hand90needs a translator
Building a personal UI library110needs a translator
Copy-paste guilt is a feature80needs a translator
Designing in the open90needs a translator
The first 90 days of a content site100needs a translator
Performance budgets for solo builders90needs a translator
Portfolio pieces that get you hired100needs a translator
Freemium that isn't a lie90needs a translator
Animated storytelling for non-profits90needs a translator
Dark mode is a design system110needs a translator
Naming is design90needs a translator
Reading a diff as a reviewer90needs a translator
Why your hero LCP is a font problem70needs a translator
The three questions a changelog must answer60needs a translator
Colour tokens are an API80needs a translator
Empty states are onboarding60needs a translator
A form is a conversation80needs a translator
Tables that survive 10,000 rows90needs a translator
When animation is documentation70needs a translator
The cost of one dependency80needs a translator
Version numbers people trust70needs a translator
Writing error messages that name the fix60needs a translator
A11y is a spec, not a vibe100needs a translator
Lighthouse is a smoke test70needs a translator
The layout shift that wasn't60needs a translator
Design review for engineers60needs a translator
Search is a product80needs a translator
Dark mode is a theme, not an inversion70needs a translator
Progressive disclosure on long pages70needs a translator
The economics of a copy button50needs a translator
Feature flags are communication80needs a translator
Charts without a chart library60needs a translator
Naming a component60needs a translator
The retriable request70needs a translator
Licensing for frontend snippets60needs a translator
Ship the boring version first70needs a translator
Anatomy of a false claim80needs a translator
What a build cannot see70needs a translator
The rule that had to be first60needs a translator
Recorded numbers need labels60needs a translator
Auditing the crawl surface70needs a translator
Five passes over a finished site80needs a translator

The zero column is the honest one. We would rather show 91 rows reading zero than seed the table with shadow translations to look international.

Do-not-translate glossary

Motif UI

Never translated — it is the name.

Translated brands read as a different product.

audit score / a11y score

Keep the English term in Latin scripts; gloss it once on first use.

It is a link target and a label on every card.

fidelity

Translate, but keep the English in brackets on first use.

Every prompt page is scored with this exact word.

component slugs (combo-box, halo-button…)

Never translated or re-cased.

They are URLs.

reduced motion

Use the platform term of your locale, not a literal translation.

It is an OS setting name users already see.

bundle budget

Translate the phrase, keep the KB numbers exactly as published.

The numbers are the claim.

Translation credits work exactly like remix credits: the English original keeps its author, the translation adds a translator name, and both stay on the page.