# 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:** ```yaml # 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:** ```xml Load {output_folder}/wds-workflow-status.yaml Extract config.specification_language → "EN" Extract config.product_languages → ["EN", "SE"] Store in session context ``` **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:** ```xml Load product_languages from config → ["EN", "SE"] ``` **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` ```markdown # 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:** ```markdown ### 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` ```yaml config: product_languages: - EN - SE ``` **Developer implements:** ```typescript // 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:** ```markdown ### 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:** ```yaml product_languages: - EN - SE ``` **User needs Norwegian:** 1. **Update config:** ```yaml product_languages: - EN - SE - NO # Added ``` 2. **Add to existing specs:** ```markdown #### Primary Headline - **Content**: - EN: "Every walk. on time." - SE: "Varje promenad. i tid." - NO: "Hver tur. i tide." ← Add to all text objects ``` 3. **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!** 🌍✨