11. Language, accessibility, themes and motion
Shared guidance (1A-X02): Current rules resolves retained theme/visual/version conflicts; Voice and content supplies the common vocabulary, state messages, localised formats and audited-action wording. These additions leave §12.1 and SW-405 as supplied.
Rule. Every user-facing string can be translated, every screen passes the accessibility floor in light and dark, and colour, loader and motion come from the shared system.
Why. Hard-coded English cannot be translated and breaks plurals. Contrast and keyboard failures lock people out.
How to apply.
- Language. Mark every string. Whole sentences with named placeholders and real plurals; never glue fragments. Identifiers (audit actions, error codes, module keys, enum values) and text written by a space are not translated. Dates and numbers use shared formatters. Regenerate catalogues with the wording. Copy is British English and says “Space Works”; no “Oops” and no “Something went wrong”.
- Accessibility floor. Text 4.5:1, icons and borders 3:1, a visible keyboard focus on every control,
44 px controls, reduced motion honoured, status always a word as well as a colour, no translucent text, full
keyboard use. Details:
lessons-learned.md. - Themes. Light and dark are both designed and checked. Colours come only from the tokens
(
tokens/tokens.json). Staff always use the Space Works palette; tenant colours are derived for members only. Implementation:theming.md. - Loading. One loader everywhere: the Space Works box that opens, a status label, a still version for reduced motion.
- Motion. Animate content, not chrome; transform and opacity only; nothing on the critical path longer
than 240 ms; reduced motion turns it all off; no hover animation on touch; tenant logos never animate.
Catalogue:
motion.md. - Help docs with screenshots. A change that alters what people see or do updates the in-app guide article and the docs in the same change, with real screenshots (light and dark where it matters). A new feature gets an article.
Across the org. SpaceWorks: translation catalogues with literal guards that must report zero. Next.js apps:
British English copy and an in-app guide (Events: MDX help with a generated index checked in CI); translation
catalogues not found. Android: string resources. iOS: Localizable.xcstrings. Design tokens are consumed by
Workspace (submodule sync), Events, Android and iOS (submodule).
Part of Space Works product rules, published from docs/product-rules.md. Edit it there.