- Add intelligent content-game compatibility system with visual badges - Fix Adventure Reader to work with Dragon's Pearl content structure - Implement multi-column games grid for faster navigation - Add pronunciation display for Chinese vocabulary and sentences - Fix navigation breadcrumb to show proper hierarchy (Home > Levels > Content) - Add back buttons to all navigation pages - Improve JSONContentLoader to preserve story structure - Add comprehensive debugging and diagnostic tools 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
620 lines
28 KiB
JSON
620 lines
28 KiB
JSON
{
|
||
// ========================================
|
||
// EDUCATIONAL CONTENT MODULE SPECIFICATION
|
||
// ========================================
|
||
// This JSON defines a complete content module for language learning applications.
|
||
// All fields are OPTIONAL unless explicitly marked as REQUIRED.
|
||
// Systems should gracefully handle missing fields and adapt functionality accordingly.
|
||
|
||
// === CORE METADATA (REQUIRED) ===
|
||
// Essential identification and configuration data
|
||
"id": "english_class_demo_complete_example", // REQUIRED: Unique identifier (lowercase, underscores)
|
||
"name": "English Class Demo - Complete Example", // REQUIRED: Human-readable display name
|
||
"description": "Comprehensive example showcasing all content structure possibilities", // REQUIRED: Brief description
|
||
"difficulty": 6, // REQUIRED: Integer 1-10 (1=absolute beginner, 10=native level)
|
||
"original_lang": "english", // REQUIRED: ISO language code of source content
|
||
"user_lang": "french", // REQUIRED: ISO language code for translations
|
||
"icon": "assets/icons/uk-flag.svg", // OPTIONAL: Path to icon file (relative or absolute)
|
||
"icon_fallback": "🇬🇧", // REQUIRED if icon specified: Emoji fallback for missing files
|
||
|
||
// === CLASSIFICATION SYSTEM ===
|
||
// Used for content discovery, filtering, and game compatibility assessment
|
||
"tags": [
|
||
// Content characteristics - systems can filter/search using these
|
||
"beginner-friendly", // Suitable for beginners (difficulty ≤ 4)
|
||
"audio-rich", // Contains significant audio content (>50% items have audio)
|
||
"grammar-focus", // Emphasizes grammar learning (has grammar section)
|
||
"cultural-content", // Includes cultural context (has cultural section)
|
||
"interactive", // Has interactive exercises (matching, corrections, etc.)
|
||
"daily-life", // Real-world applicable content
|
||
"conversation", // Dialogue-based learning (has dialogues section)
|
||
"multimedia" // Multiple content types (text, audio, visual)
|
||
],
|
||
|
||
// === LEARNING OBJECTIVES ===
|
||
// Skills and competencies this module addresses - used for progress tracking
|
||
"skills_covered": [
|
||
"vocabulary_recognition", // Identifying and understanding words
|
||
"vocabulary_production", // Using words correctly in context
|
||
"listening_comprehension", // Understanding spoken language
|
||
"reading_comprehension", // Understanding written text
|
||
"pronunciation", // Correct sound production
|
||
"grammar_application", // Using grammar rules correctly
|
||
"cultural_awareness", // Understanding cultural context
|
||
"conversation_skills", // Interactive dialogue ability
|
||
"translation", // Converting between languages
|
||
"pattern_recognition", // Identifying linguistic patterns
|
||
"error_correction", // Identifying and fixing mistakes
|
||
"audio_discrimination" // Distinguishing between sounds
|
||
],
|
||
|
||
// ========================================
|
||
// VOCABULARY SECTION - PROGRESSIVE COMPLEXITY
|
||
// ========================================
|
||
// Word definitions with varying levels of detail. Systems should adapt based on available data.
|
||
"vocabulary": {
|
||
|
||
// LEVEL 1: MINIMAL (Translation only)
|
||
// Simplest form - just word and translation string
|
||
// Usage: Basic vocabulary games, simple matching
|
||
"cat": "chat",
|
||
"dog": "chien",
|
||
"house": "maison",
|
||
|
||
// LEVEL 2: BASIC (Essential data)
|
||
// Translation + grammatical type
|
||
// Usage: Games that need word categorization
|
||
"book": {
|
||
"translation": "livre",
|
||
"type": "noun" // Values: noun, verb, adjective, adverb, greeting, number, etc.
|
||
},
|
||
|
||
"read": {
|
||
"translation": "lire",
|
||
"type": "verb"
|
||
},
|
||
|
||
// LEVEL 3: MEDIUM (Enhanced with media OR pronunciation)
|
||
// Add ONE media type: pronunciation OR image
|
||
// Usage: Games with visual or audio components
|
||
"apple": {
|
||
"translation": "pomme",
|
||
"type": "noun",
|
||
"pronunciation": "/ˈæp.əl/", // IPA phonetic notation (recommended format)
|
||
"image": "images/vocabulary/apple.jpg" // Path to image file
|
||
},
|
||
|
||
"beautiful": {
|
||
"translation": "beau/belle",
|
||
"type": "adjective",
|
||
"pronunciation": "/ˈbjuː.tɪ.fəl/",
|
||
"examples": ["The sunset is beautiful"] // Array of usage examples
|
||
},
|
||
|
||
// LEVEL 4: RICH (Multi-media)
|
||
// Multiple media types for enhanced learning
|
||
// Usage: Advanced vocabulary games, multimedia lessons
|
||
"elephant": {
|
||
"translation": "éléphant",
|
||
"type": "noun",
|
||
"pronunciation": "/ˈel.ɪ.fənt/",
|
||
"audio": "audio/vocabulary/elephant.mp3", // Audio pronunciation file
|
||
"image": "images/vocabulary/elephant.jpg", // Visual representation
|
||
"examples": [
|
||
"The elephant is huge",
|
||
"Elephants have good memory"
|
||
]
|
||
},
|
||
|
||
// LEVEL 5: COMPREHENSIVE (Full linguistic data)
|
||
// Maximum detail for advanced language learning
|
||
// Usage: Professional language learning, detailed grammar games
|
||
"run": {
|
||
"translation": "courir",
|
||
"type": "verb",
|
||
"pronunciation": "/rʌn/",
|
||
"audio": "audio/vocabulary/run.mp3",
|
||
"image": "images/vocabulary/run_action.gif", // Can be GIF for actions
|
||
"examples": [
|
||
"I run in the park every morning",
|
||
"She runs faster than me",
|
||
"They ran to catch the bus"
|
||
],
|
||
"grammarNotes": "Irregular verb: run/runs/running/ran/run", // Teaching notes
|
||
"conjugation": { // Verb forms for grammar games
|
||
"present": ["run", "runs"],
|
||
"past": "ran",
|
||
"participle": "run",
|
||
"continuous": "running"
|
||
},
|
||
"difficulty_context": "Physical action verb - easy to demonstrate" // Teaching hints
|
||
},
|
||
|
||
// LEVEL 6: ADVANCED (Cultural context)
|
||
// Includes cultural and contextual information
|
||
// Usage: Cultural awareness games, advanced language courses
|
||
"breakfast": {
|
||
"translation": "petit-déjeuner",
|
||
"type": "noun",
|
||
"pronunciation": "/ˈbrek.fəst/",
|
||
"audio": "audio/vocabulary/breakfast.mp3",
|
||
"image": "images/vocabulary/breakfast.jpg",
|
||
"examples": [
|
||
"I have breakfast at 7 AM",
|
||
"What did you have for breakfast?",
|
||
"Breakfast is the most important meal"
|
||
],
|
||
"cultural_note": "Traditional English breakfast includes eggs, bacon, beans, and toast"
|
||
}
|
||
},
|
||
|
||
// ========================================
|
||
// GRAMMAR SYSTEM - STRUCTURED LESSONS
|
||
// ========================================
|
||
// Step-by-step grammar instruction with alternating explanations and exercises
|
||
// NOTE: This system is for dedicated grammar games/apps, not general content games
|
||
"grammar": {
|
||
"present_simple_be": { // Lesson identifier (must be unique)
|
||
"id": "present_simple_be", // Same as key for validation
|
||
"title": "Present Simple - Verb 'to be'", // Display title
|
||
"difficulty": 3, // 1-10 scale
|
||
"prerequisite": null, // null = no prerequisite, or reference another lesson id
|
||
"estimated_time": 15, // Estimated minutes to complete
|
||
"learning_objectives": [ // Clear, measurable goals
|
||
"Conjugate 'to be' in present tense",
|
||
"Use 'to be' in affirmative sentences",
|
||
"Form questions with 'to be'"
|
||
],
|
||
|
||
// Sequential learning steps - MUST be in order
|
||
"steps": [
|
||
{
|
||
"type": "explanation", // Types: "explanation" or "exercise"
|
||
"order": 1, // Integer ordering (must be sequential)
|
||
"title": "Introduction to 'be'",
|
||
"content": "The verb 'to be' is the most important verb in English. It has three forms in present tense.",
|
||
"translation": "Le verbe 'être' est le verbe le plus important en anglais. Il a trois formes au présent.",
|
||
"examples": [ // Array of example objects
|
||
{ "original": "I am happy", "userLanguage": "Je suis heureux" },
|
||
{ "original": "You are smart", "userLanguage": "Tu es intelligent" },
|
||
{ "original": "She is tall", "userLanguage": "Elle est grande" }
|
||
]
|
||
},
|
||
{
|
||
"type": "exercise",
|
||
"order": 2,
|
||
"exercise_type": "multiple_choice", // Exercise types: multiple_choice, transformation, fill_blanks, classification, conjugation
|
||
"title": "Choose the correct form",
|
||
"questions": [ // Array of question objects
|
||
{
|
||
"question": "I ___ a student",
|
||
"options": ["am", "is", "are"], // Array of choices
|
||
"correct": "am", // Single correct answer
|
||
"explanation": "Use 'am' with 'I'" // Feedback for learner
|
||
},
|
||
{
|
||
"question": "She ___ my friend",
|
||
"options": ["am", "is", "are"],
|
||
"correct": "is",
|
||
"explanation": "Use 'is' with 'she', 'he', 'it'"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"type": "explanation",
|
||
"order": 3,
|
||
"title": "Negative forms",
|
||
"content": "To make negative sentences with 'be', add 'not' after the verb. We often use contractions.",
|
||
"translation": "Pour faire des phrases négatives avec 'être', ajoutez 'not' après le verbe. On utilise souvent des contractions.",
|
||
"examples": [
|
||
{
|
||
"original": "I am not tired",
|
||
"userLanguage": "Je ne suis pas fatigué",
|
||
"contraction": "I'm not tired" // Optional contraction form
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"type": "exercise",
|
||
"order": 4,
|
||
"exercise_type": "transformation",
|
||
"title": "Make these sentences negative",
|
||
"questions": [
|
||
{
|
||
"original": "I am busy", // Source sentence
|
||
"correct": "I am not busy", // Primary correct answer
|
||
"alternative_correct": ["I'm not busy"] // Array of acceptable alternatives
|
||
}
|
||
]
|
||
}
|
||
],
|
||
|
||
// Lesson summary and reinforcement
|
||
"summary": {
|
||
"key_points": [ // Main takeaways
|
||
"I am, you are, he/she/it is, we are, they are",
|
||
"Negative: add 'not' after 'be'",
|
||
"Questions: put 'be' before subject"
|
||
],
|
||
"common_mistakes": [ // Frequent errors with corrections
|
||
{
|
||
"incorrect": "I are happy",
|
||
"correct": "I am happy",
|
||
"explanation": "Use 'am' with 'I'"
|
||
}
|
||
]
|
||
}
|
||
}
|
||
},
|
||
|
||
// ========================================
|
||
// TEXT CONTENT - FLEXIBLE USAGE
|
||
// ========================================
|
||
// Text-based content that can optionally include exercises
|
||
"texts": [
|
||
{
|
||
"title": "My Daily Routine", // Display title
|
||
"content": "I wake up at 7 AM every day. First, I brush my teeth and take a shower...", // Main text
|
||
"translation": "Je me réveille à 7h tous les jours. D'abord, je me brosse les dents...", // Full translation
|
||
|
||
// OPTIONAL: Add comprehension questions to any text
|
||
"questions": [
|
||
{
|
||
"question": "What time does the person wake up?",
|
||
"type": "multiple_choice", // Types: multiple_choice, ai_interpreted
|
||
"options": ["6 AM", "7 AM", "8 AM", "9 AM"],
|
||
"correctAnswer": "7 AM"
|
||
},
|
||
{
|
||
"question": "Describe the person's evening routine",
|
||
"type": "ai_interpreted", // Requires AI evaluation
|
||
"evaluationPrompt": "Check if answer mentions cooking dinner and watching TV" // Prompt for AI evaluator
|
||
}
|
||
],
|
||
|
||
// OPTIONAL: Add fill-in-the-blank exercises to any text
|
||
"fillInBlanks": [
|
||
{
|
||
"sentence": "I wake up ___ 7 AM every day",
|
||
"options": ["at", "in", "on"], // Multiple choice options
|
||
"correctAnswer": "at",
|
||
"explanation": "Use 'at' with specific times"
|
||
},
|
||
{
|
||
"sentence": "The routine is very ___",
|
||
"type": "open_ended", // Open-ended answer
|
||
"acceptedAnswers": ["good", "nice", "healthy", "regular"], // Acceptable answers
|
||
"aiPrompt": "Check if answer describes routine positively" // AI evaluation prompt
|
||
}
|
||
]
|
||
}
|
||
],
|
||
|
||
// ========================================
|
||
// AUDIO-ONLY CONTENT
|
||
// ========================================
|
||
// Pure listening exercises WITHOUT transcripts
|
||
// NOTE: Audio WITH text should go in texts[] or dialogues[] sections
|
||
"audio": [
|
||
{
|
||
"title": "Mystery Conversation - Restaurant",
|
||
"audioFile": "audio/listening/restaurant_sounds.mp3", // Audio file path
|
||
"type": "ambient_listening", // Types: ambient_listening, sound_identification, pronunciation_exercise
|
||
"description": "Listen to the ambient sounds and conversation", // Optional description
|
||
"questions": [ // Listening comprehension questions
|
||
{
|
||
"question": "Where does this conversation take place?",
|
||
"type": "multiple_choice",
|
||
"options": ["Restaurant", "Office", "School", "Park"],
|
||
"correctAnswer": "Restaurant"
|
||
},
|
||
{
|
||
"question": "How many people are speaking?",
|
||
"type": "ai_interpreted",
|
||
"evaluationPrompt": "Accept numeric answers indicating number of distinct voices"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"title": "Pronunciation Discrimination",
|
||
"audioFile": "audio/pronunciation/minimal_pairs.mp3",
|
||
"type": "pronunciation_exercise",
|
||
"description": "Listen to similar sounding words and identify differences",
|
||
"word_pairs": [ // For pronunciation exercises
|
||
["ship", "sheep"],
|
||
["live", "leave"],
|
||
["cat", "cut"]
|
||
]
|
||
}
|
||
],
|
||
|
||
// ========================================
|
||
// CULTURAL CONTENT - RICH CONTEXT
|
||
// ========================================
|
||
// Cultural material with educational value and context
|
||
"cultural": {
|
||
// Poetry and literary works
|
||
"poems": [
|
||
{
|
||
"title": "Roses Are Red",
|
||
"content": "Roses are red,\nViolets are blue,\nSugar is sweet,\nAnd so are you.",
|
||
"translation": "Les roses sont rouges,\nLes violettes sont bleues...",
|
||
"audio": "audio/poems/roses.mp3", // Optional audio recitation
|
||
"image": "images/cultural/roses_poem_illustration.jpg", // Optional illustration
|
||
"type": "nursery_rhyme", // Types: nursery_rhyme, classic_poem, song, etc.
|
||
"cultural_context": "Traditional English nursery rhyme pattern...",
|
||
"learning_focus": ["rhyme_patterns", "basic_vocabulary", "rhythm"] // Educational objectives
|
||
}
|
||
],
|
||
|
||
// Proverbs and sayings
|
||
"proverbs": [
|
||
{
|
||
"original": "The early bird catches the worm",
|
||
"userLanguage": "L'avenir appartient à ceux qui se lèvent tôt",
|
||
"meaning": "People who wake up early and start working have better chances of success",
|
||
"image": "images/cultural/early_bird_illustration.jpg",
|
||
"cultural_context": "Common English saying emphasizing the value of being proactive...",
|
||
"equivalent_proverbs": { // Cross-cultural equivalents
|
||
"french": "L'avenir appartient à ceux qui se lèvent tôt",
|
||
"literal": "Le premier oiseau attrape le ver"
|
||
}
|
||
}
|
||
],
|
||
|
||
// Unified cultural facts system
|
||
"culture_facts": [
|
||
{
|
||
"name": "Tea Time",
|
||
"category": "tradition", // Categories: tradition, holiday, food, custom, etc.
|
||
"description": "Traditional British custom of drinking tea in the afternoon, usually around 4 PM",
|
||
"translation": "L'heure du thé - tradition britannique...",
|
||
"image": "images/cultural/tea_time.jpg",
|
||
"cultural_significance": "Social ritual that brings people together...",
|
||
"vocabulary_related": ["tea", "biscuit", "afternoon", "tradition", "social"], // Related vocabulary
|
||
"region": "uk" // Geographic association (uk, us, global, etc.)
|
||
},
|
||
{
|
||
"name": "Christmas",
|
||
"category": "holiday",
|
||
"date": "December 25th", // Optional date field for holidays
|
||
"description": "Major Christian holiday celebrating the birth of Jesus Christ",
|
||
"translation": "Noël - grande fête chrétienne...",
|
||
"image": "images/cultural/christmas_celebration.jpg",
|
||
"customs": ["gift_giving", "family_gatherings", "christmas_tree", "caroling"], // Associated customs
|
||
"vocabulary_related": ["Christmas", "gift", "tree", "family", "celebration"],
|
||
"region": "global"
|
||
},
|
||
{
|
||
"name": "Fish and Chips",
|
||
"category": "food",
|
||
"description": "Traditional British dish of battered fish with fried potatoes",
|
||
"translation": "Poisson-frites - plat britannique traditionnel...",
|
||
"image": "images/cultural/fish_and_chips.jpg",
|
||
"cultural_context": "Popular working-class meal, often served in newspaper wrapping",
|
||
"vocabulary_related": ["fish", "chips", "batter", "traditional", "popular"],
|
||
"region": "uk",
|
||
"ingredients": ["fish", "potatoes", "batter", "oil"], // For food items
|
||
"typical_sides": ["mushy_peas", "tartar_sauce", "malt_vinegar"]
|
||
}
|
||
]
|
||
},
|
||
|
||
// ========================================
|
||
// SENTENCES WITH PARAMETERS
|
||
// ========================================
|
||
// Generic sentence structure used for various exercises including corrections
|
||
"sentences": [
|
||
{
|
||
"original": "Hello, how are you?", // Source language sentence
|
||
"userLanguage": "Bonjour, comment allez-vous?", // Target language translation
|
||
"type": "greeting", // Sentence classification
|
||
"formality": "neutral" // Additional parameter
|
||
},
|
||
{
|
||
"original": "I like to read books",
|
||
"userLanguage": "J'aime lire des livres",
|
||
"type": "preference_statement",
|
||
"tense": "present_simple"
|
||
},
|
||
|
||
// Sentences with correction exercise data
|
||
{
|
||
"original": "I am happy today", // CORRECT version
|
||
"userLanguage": "Je suis heureux aujourd'hui",
|
||
"type": "correction_target", // Indicates this is for correction exercises
|
||
"correction_data": {
|
||
"incorrect_versions": [ // Array of common mistakes
|
||
{
|
||
"text": "I are happy today", // Incorrect version
|
||
"error_type": "subject_verb_agreement", // Classification of error
|
||
"explanation": "Use 'am' with pronoun 'I', not 'are'",
|
||
"difficulty": 2 // Difficulty of catching this error (1-10)
|
||
},
|
||
{
|
||
"text": "I is happy today",
|
||
"error_type": "subject_verb_agreement",
|
||
"explanation": "Use 'am' with pronoun 'I', not 'is'",
|
||
"difficulty": 1 // Easier to spot
|
||
}
|
||
],
|
||
"grammar_focus": "be_verb_conjugation", // Grammar topic
|
||
"common_mistake": true // Boolean: is this a frequent error?
|
||
}
|
||
}
|
||
],
|
||
|
||
// ========================================
|
||
// MATCHING EXERCISES - DUAL SYSTEM
|
||
// ========================================
|
||
// Two types of matching exercises: traditional 2-column and flexible multi-column
|
||
"matching": [
|
||
|
||
// TYPE 1: Traditional two-column matching (backward compatibility)
|
||
{
|
||
"title": "Match Animals to Their Sounds",
|
||
"type": "two_column_matching", // Explicit type declaration
|
||
"leftColumn": ["Cat", "Dog", "Cow", "Bird"], // Left side items
|
||
"rightColumn": ["Woof", "Meow", "Tweet", "Moo"], // Right side items
|
||
"correctPairs": [ // Valid connections
|
||
{ "left": "Cat", "right": "Meow" },
|
||
{ "left": "Dog", "right": "Woof" },
|
||
{ "left": "Cow", "right": "Moo" },
|
||
{ "left": "Bird", "right": "Tweet" }
|
||
]
|
||
},
|
||
|
||
// TYPE 2: Multi-column matching (new flexible system)
|
||
{
|
||
"title": "Build Correct Sentences",
|
||
"type": "multi_column_matching", // Flexible N-column system
|
||
"columns": [ // Array of columns (minimum 2, no maximum)
|
||
{
|
||
"id": 1, // REQUIRED: Numeric identifier for referencing
|
||
"name": "Subject", // OPTIONAL: Display label (can be omitted)
|
||
"items": ["I", "She", "They", "We"] // REQUIRED: Items in this column
|
||
},
|
||
{
|
||
"id": 2,
|
||
"name": "Verb",
|
||
"items": ["am", "is", "are", "are"]
|
||
},
|
||
{
|
||
"id": 3,
|
||
"name": "Complement",
|
||
"items": ["happy", "a teacher", "students", "friends"]
|
||
}
|
||
],
|
||
"valid_combinations": [ // Valid combinations using column IDs
|
||
{"1": "I", "2": "am", "3": "happy"}, // References by column ID
|
||
{"1": "I", "2": "am", "3": "a teacher"},
|
||
{"1": "She", "2": "is", "3": "happy"},
|
||
{"1": "She", "2": "is", "3": "a teacher"},
|
||
{"1": "They", "2": "are", "3": "students"},
|
||
{"1": "They", "2": "are", "3": "friends"},
|
||
{"1": "We", "2": "are", "3": "students"},
|
||
{"1": "We", "2": "are", "3": "friends"}
|
||
]
|
||
},
|
||
|
||
// TYPE 2 Example without column names (demonstrates flexibility)
|
||
{
|
||
"title": "Match Country Information",
|
||
"type": "multi_column_matching",
|
||
"columns": [
|
||
{
|
||
"id": 1,
|
||
"name": "Country",
|
||
"items": ["France", "Spain", "Italy", "Germany"]
|
||
},
|
||
{
|
||
"id": 2,
|
||
"name": "Capital",
|
||
"items": ["Paris", "Madrid", "Rome", "Berlin"]
|
||
},
|
||
{
|
||
"id": 3,
|
||
// NO "name" field - demonstrates optional nature
|
||
"items": ["French", "Spanish", "Italian", "German"]
|
||
}
|
||
],
|
||
"valid_combinations": [
|
||
{"1": "France", "2": "Paris", "3": "French"},
|
||
{"1": "Spain", "2": "Madrid", "3": "Spanish"},
|
||
{"1": "Italy", "2": "Rome", "3": "Italian"},
|
||
{"1": "Germany", "2": "Berlin", "3": "German"}
|
||
]
|
||
}
|
||
],
|
||
|
||
// ========================================
|
||
// DIALOGUES - CONVERSATIONAL CONTENT
|
||
// ========================================
|
||
// Structured conversations between speakers
|
||
// NOTE: Audio WITH text belongs here, not in audio[] section
|
||
"dialogues": [
|
||
{
|
||
"title": "At the Restaurant", // Dialogue title
|
||
"conversation": [ // Array of turns in conversation
|
||
{
|
||
"speaker": "Waiter", // Speaker identification
|
||
"original": "Good evening! Welcome to our restaurant.",
|
||
"userLanguage": "Bonsoir! Bienvenue dans notre restaurant."
|
||
},
|
||
{
|
||
"speaker": "Customer",
|
||
"original": "Thank you. Can I see the menu please?",
|
||
"userLanguage": "Merci. Puis-je voir le menu s'il vous plaît?"
|
||
}
|
||
]
|
||
},
|
||
|
||
// Dialogue with synchronized audio
|
||
{
|
||
"title": "Daily Routine Conversation",
|
||
"audio": "audio/conversations/daily_routine.mp3", // Audio file with spoken dialogue
|
||
"conversation": [
|
||
{
|
||
"speaker": "A",
|
||
"original": "What time do you wake up?",
|
||
"userLanguage": "À quelle heure te réveilles-tu?",
|
||
"timestamp": 0.5 // OPTIONAL: Time in audio file (seconds)
|
||
},
|
||
{
|
||
"speaker": "B",
|
||
"original": "I usually wake up at 7 AM.",
|
||
"userLanguage": "Je me réveille habituellement à 7h.",
|
||
"timestamp": 3.2
|
||
}
|
||
]
|
||
}
|
||
]
|
||
|
||
// ========================================
|
||
// IMPLEMENTATION NOTES FOR AI SYSTEMS
|
||
// ========================================
|
||
/*
|
||
FIELD OPTIONALITY:
|
||
- All fields are optional unless marked REQUIRED
|
||
- Systems should gracefully handle missing fields
|
||
- Adapt functionality based on available data richness
|
||
|
||
VOCABULARY LEVELS:
|
||
- Level 1 (string): Basic games only
|
||
- Level 2-3 (basic object): Standard games
|
||
- Level 4-6 (rich object): Advanced features
|
||
|
||
EXERCISE TYPES:
|
||
- multiple_choice: Fixed options with single correct answer
|
||
- transformation: Convert one form to another
|
||
- fill_blanks: Complete sentences with missing words
|
||
- classification: Categorize items into groups
|
||
- conjugation: Verb form exercises
|
||
- ai_interpreted: Requires AI evaluation with prompt
|
||
|
||
AUDIO PLACEMENT:
|
||
- audio[]: ONLY for content without transcripts
|
||
- texts[]/dialogues[]: For content WITH transcripts
|
||
- vocabulary.*.audio: Individual word pronunciation
|
||
|
||
MATCHING SYSTEMS:
|
||
- two_column_matching: Traditional left-right matching
|
||
- multi_column_matching: Flexible N-column system with numeric IDs
|
||
|
||
CULTURAL CONTENT:
|
||
- poems[]: Literary works with cultural context
|
||
- proverbs[]: Sayings with cross-cultural equivalents
|
||
- culture_facts[]: Unified system for traditions, holidays, food, customs
|
||
|
||
ERROR HANDLING:
|
||
- Missing files (audio, images): Use fallbacks or skip features
|
||
- Invalid references: Ignore and continue with available content
|
||
- Malformed data: Log errors but don't crash, use defaults
|
||
|
||
EXTENSIBILITY:
|
||
- New exercise types can be added without breaking existing systems
|
||
- Additional fields can be added to any section
|
||
- New sections can be added at root level
|
||
- Systems should ignore unknown fields gracefully
|
||
*/
|
||
} |