BMAD-METHOD/src/modules/wds/workflows/00-system/language-flow-diagram.md

10 KiB

Language Flow: Setup to Specification

How Language Configuration Flows Through WDS


1. Workflow Initialization

File: workflows/workflow-init/instructions.md (Step 4)

User is asked:

Specification Language - What language should WDS write the design specifications in?

1. English (EN)
2. Swedish (SE)
3. Norwegian (NO)
4. Danish (DK)
5. Other

Choice: 1

Product Languages - What languages will the final product support?

(e.g., "EN, SE" or "EN, SE, NO, DK")

Product languages: EN, SE

Agent stores:

  • specification_language = "EN"
  • product_languages = ["EN", "SE"]

2. Config File Creation

File: docs/wds-workflow-status.yaml

Generated from template:

# WDS Workflow Status
generated: "2025-12-05"
project: "Dog Week"
project_type: "full-product"

config:
  folder_prefix: "letters"
  folder_case: "title"
  brief_level: "complete"
  include_design_system: true
  component_library: "custom"
  specification_language: "EN"     ← Stored here
  product_languages:                ← Stored here
    - EN
    - SE

3. Phase 4 Agent Reads Config

Agent: Freyja (WDS Designer)

When starting Phase 4:

<action>Load {output_folder}/wds-workflow-status.yaml</action>
<action>Extract config.specification_language → "EN"</action>
<action>Extract config.product_languages → ["EN", "SE"]</action>
<action>Store in session context</action>

Agent now knows:

  • Write specs in English
  • Request content in English AND Swedish for all text

4. Sketch Analysis (4B)

File: substeps/4b-sketch-analysis.md

Agent analyzes sketch:

Detected text placeholder:
- 2 horizontal lines
- ~50-60 characters capacity
- Appears to be headline

→ Routes to heading-text.md

Language not needed yet - analyzing visual structure only.


5. Object Documentation (heading-text.md)

File: object-types/heading-text.md

Step 1: Purpose-Based Naming

What is the PURPOSE of this text on the page?

User: "Primary headline"

→ Generates Object ID: start-hero-headline

Step 2: Position & Style

Text element specifications:

Type: H1
Position: Center of hero
Font size: 42px
Line height: 1.2
...

Spec written in English (specification_language)

Step 3: Content with Translations

Agent reads config:

<action>Load product_languages from config → ["EN", "SE"]</action>

Agent asks:

Content for this Primary Headline:

Based on sketch: 2 lines, ~50-60 characters total
Project languages: EN, SE

EN:

SE:

User provides:

EN: Every walk. on time. Every time.

SE: Varje promenad. i tid. Varje gång.

Agent validates:

✅ EN content: 37 characters (fits 60 capacity)
✅ SE content: 36 characters (fits 60 capacity)

6. Generate Specification

Agent writes to: docs/C-Scenarios/01-Customer-Onboarding/1.1-Start-Page/1.1-Start-Page.md

# 1.1 Start Page

The start page serves as the primary entry point...    ← English (spec language)

## Page Sections

### Hero Object
**Purpose**: Primary value proposition                 ← English (spec language)

#### Primary Headline
**OBJECT ID**: `start-hero-headline`
- **Component**: H1 heading (`.text-heading-1`)
- **Position**: Center of hero section                 ← English (spec language)
- **Style**: Bold, 42px, line-height 1.2               ← English (spec language)
- **Behavior**: Updates with language toggle           ← English (spec language)
- **Content**:                                         ← Product languages
  - EN: "Every walk. on time. Every time."
  - SE: "Varje promenad. i tid. Varje gång."

7. Complete Text Group

For a full section with multiple text elements:

### Hero Object
**Purpose**: Primary value proposition                 ← Spec language

#### Primary Headline
**OBJECT ID**: `start-hero-headline`
- **Component**: H1 heading
- **Position**: Center of hero, top                    ← Spec language
- **Content**:
  - EN: "Every walk. on time. Every time."            ← Product languages
  - SE: "Varje promenad. i tid. Varje gång."

#### Supporting Text
**OBJECT ID**: `start-hero-supporting`
- **Component**: Body text
- **Position**: Below headline                         ← Spec language
- **Content**:
  - EN: "Never miss a walk again."                    ← Product languages
  - SE: "Missa aldrig en promenad."

#### Primary CTA
**OBJECT ID**: `start-hero-cta`
- **Component**: Button Primary
- **Position**: Center, below text                     ← Spec language
- **Content**:
  - EN: "Get Started"                                 ← Product languages
  - SE: "Kom Igång"

Reading in English:

Every walk. on time. Every time. Never miss a walk again. [Get Started]

Reading in Swedish:

Varje promenad. i tid. Varje gång. Missa aldrig en promenad. [Kom Igång]


8. Developer Handoff

Developer reads: docs/wds-workflow-status.yaml

config:
  product_languages:
    - EN
    - SE

Developer implements:

// i18n config
const supportedLanguages = ['en', 'se'];

// Text content from specs
const translations = {
  'start-hero-headline': {
    en: 'Every walk. on time. Every time.',
    se: 'Varje promenad. i tid. Varje gång.'
  },
  'start-hero-supporting': {
    en: 'Never miss a walk again.',
    se: 'Missa aldrig en promenad.'
  },
  'start-hero-cta': {
    en: 'Get Started',
    se: 'Kom Igång'
  }
};

// Language toggle
function setLanguage(lang: 'en' | 'se') {
  // All translations ready to use!
}

Flow Diagram

┌─────────────────────────────────────┐
│  1. Workflow Init (Step 4)          │
│  User selects:                      │
│  - Spec Language: EN                │
│  - Product Languages: EN, SE        │
└──────────────┬──────────────────────┘
               │
               ▼
┌─────────────────────────────────────┐
│  2. Generate Config File            │
│  docs/wds-workflow-status.yaml      │
│  config:                            │
│    specification_language: "EN"     │
│    product_languages: [EN, SE]      │
└──────────────┬──────────────────────┘
               │
               ▼
┌─────────────────────────────────────┐
│  3. Phase 4: UX Design              │
│  Freyja agent loads config           │
│  Knows: Specs in EN, Content in     │
│         EN + SE                     │
└──────────────┬──────────────────────┘
               │
               ▼
┌─────────────────────────────────────┐
│  4. Sketch Analysis                 │
│  Analyze visual structure           │
│  (Language-agnostic)                │
└──────────────┬──────────────────────┘
               │
               ▼
┌─────────────────────────────────────┐
│  5. Text Object Documentation       │
│  heading-text.md                    │
│  - Purpose naming (in spec lang)    │
│  - Position/style (in spec lang)    │
│  - Content (in ALL product langs)   │
└──────────────┬──────────────────────┘
               │
               ▼
┌─────────────────────────────────────┐
│  6. Generate Page Specification     │
│  docs/C-Scenarios/.../page.md       │
│  - Structure/logic in EN            │
│  - All text in EN + SE              │
└──────────────┬──────────────────────┘
               │
               ▼
┌─────────────────────────────────────┐
│  7. Developer Implementation        │
│  - Read config                      │
│  - Extract translations             │
│  - Implement i18n                   │
│  - All languages ready!             │
└─────────────────────────────────────┘

Key Principles

Two Distinct Languages

Specification Language:

  • Documentation language
  • For designers, PMs, developers
  • Describes structure, behavior, logic

Product Languages:

  • User-facing content
  • What end users see
  • Can be multiple languages

Early Configuration

Set during workflow init - before any design work

  • No mid-project surprises
  • All stakeholders aligned
  • Complete from day one

Automatic Propagation

Config flows through all phases:

  • Phase 1: Brief in spec language
  • Phase 2: Trigger Map in spec language
  • Phase 4: Specs in spec language, content in ALL product languages
  • Phase 5: Design System docs in spec language, examples in all product languages
  • Phase 6: PRD in spec language

Grouped for Coherence

Each text group reads naturally in each language:

### Hero Object

#### Headline + Body + CTA

EN reads: "Every walk. Never miss a walk. Get Started"
SE reads: "Varje promenad. Missa aldrig. Kom Igång"

Each language complete and coherent!


Example: Adding Norwegian Mid-Project

Original config:

product_languages:
  - EN
  - SE

User needs Norwegian:

  1. Update config:
product_languages:
  - EN
  - SE
  - NO  # Added
  1. Add to existing specs:
#### Primary Headline
- **Content**:
  - EN: "Every walk. on time."
  - SE: "Varje promenad. i tid."
  - NO: "Hver tur. i tide."  ← Add to all text objects
  1. Future text objects automatically include NO

Agents read updated config and request 3 languages going forward.


Language configuration ensures complete, production-ready translations from the very beginning! 🌍