diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md new file mode 100644 index 0000000..a54c5f1 --- /dev/null +++ b/.github/copilot-instructions.md @@ -0,0 +1,295 @@ +# Copilot Instructions for Polyglot Pathways + +## Project Overview +Polyglot Pathways is a multilingual language learning platform that provides a structured 50-day curriculum across 5 languages (English, Spanish, Portuguese, French, German). The platform emphasizes vanilla JavaScript, accessibility, and offline-first architecture. + +## Architecture & Technology Stack + +### Core Technologies +- **Frontend**: Vanilla JavaScript (ES6+), HTML5, CSS3 +- **No frameworks**: Prefer vanilla JavaScript over frameworks like React, Vue, or Angular +- **State Management**: localStorage for persistence +- **Audio**: Native Web Audio API and HTML5 audio elements +- **Internationalization**: Custom i18n implementation in `js/i18n.js` +- **Content Generation**: Python scripts for automated content creation + +### Key Principles +1. **Vanilla JavaScript First**: Avoid adding dependencies unless absolutely necessary +2. **Accessibility**: Full keyboard navigation, screen reader support, ARIA labels +3. **Multilingual Support**: All UI elements must support i18n +4. **Offline-First**: Application should work without internet connectivity +5. **Progressive Enhancement**: Graceful degradation when features aren't available +6. **Mobile-Responsive**: Touch-friendly interfaces for all screen sizes + +## File Structure & Naming Conventions + +### JavaScript Modules (`js/`) +- `script.js` - Main application logic and initialization +- `i18n.js` - Core internationalization engine +- `day-i18n.js` - Day-specific i18n configurations +- `language-selector.js` - Dynamic language switching +- `exercises.js` - Interactive exercise controller +- `drag-drop.js` - Drag-and-drop exercise component +- `fill-blank.js` - Fill-in-the-blank exercise component +- `matching.js` - Matching game component + +### Content Files +- `translations/*.json` - Language resource files +- `exercises/day{N}_{lang}.json` - Exercise data (e.g., `day1_en.json`, `day1_es.json`) +- `audio_files/day{N}_{lang}.mp3` - Audio content +- `text_files/` - Text transcripts + +### Content Generation Scripts +- `language_phrases_days_*.py` - Python scripts for generating course content +- Follow existing patterns when adding new content generation + +## Coding Standards + +### JavaScript +- Use ES6+ features (arrow functions, const/let, destructuring, modules) +- Prefer functional programming patterns when appropriate +- Use meaningful variable names (e.g., `currentLanguage`, `exerciseProgress`) +- Add error handling for all async operations +- Include accessibility features in all interactive components + +```javascript +// Good: Comprehensive error handling and accessibility +async function loadExerciseData(day, language) { + try { + const response = await fetch(`exercises/day${day}_${language}.json`); + if (!response.ok) { + throw new Error(`Failed to load exercise: ${response.status}`); + } + return await response.json(); + } catch (error) { + console.warn(`Exercise data not available: ${error.message}`); + return null; // Graceful degradation + } +} + +// Good: Accessibility-aware component +function createInteractiveButton(text, onClick) { + const button = document.createElement('button'); + button.textContent = text; + button.setAttribute('aria-label', text); + button.addEventListener('click', onClick); + button.addEventListener('keydown', (e) => { + if (e.key === 'Enter' || e.key === ' ') { + e.preventDefault(); + onClick(e); + } + }); + return button; +} +``` + +### CSS +- Use BEM methodology for class naming +- Include focus states for all interactive elements +- Ensure sufficient color contrast (WCAG AA compliance) +- Use relative units (rem, em) for scalability +- Include print stylesheets where appropriate + +### HTML +- Use semantic HTML5 elements +- Include proper ARIA labels and roles +- Ensure logical tab order +- Add lang attributes for multilingual content + +## Internationalization (i18n) Guidelines + +### Adding New UI Text +1. Never hardcode text strings in JavaScript or HTML +2. Add all text to appropriate translation files in `translations/` +3. Use the i18n system: `i18n.translate('key.path')` +4. Support all 5 languages: `en`, `es`, `pt`, `fr`, `de` + +```javascript +// Bad +document.querySelector('.error').textContent = 'Error loading content'; + +// Good +document.querySelector('.error').textContent = i18n.translate('errors.loading_content'); +``` + +### Translation File Structure +```json +{ + "navigation": { + "home": "Home", + "lessons": "Lessons" + }, + "exercises": { + "drag_drop": { + "instructions": "Drag the words to complete the sentence", + "word_bank": "Word Bank" + } + } +} +``` + +## Interactive Exercises + +### Exercise Types +1. **Drag-and-Drop**: Word placement with visual feedback +2. **Fill-in-the-Blank**: Text input with real-time validation +3. **Matching Games**: Two-column item association + +### Exercise Implementation Requirements +- Full keyboard navigation support +- Touch-friendly mobile interactions +- Screen reader announcements for all state changes +- Visual feedback for hover, focus, and active states +- Graceful handling when exercise data is unavailable +- Progress tracking integration with localStorage + +### Exercise Data Format +```json +{ + "type": "drag-drop", + "title": "Complete the Greetings", + "instructions": "Drag words from the bank to complete each sentence", + "sentences": [ + { + "text": "Good [morning] everyone!", + "blanks": [ + { + "placeholder": "morning", + "correct": ["morning", "afternoon", "evening"], + "position": 5 + } + ] + } + ], + "wordBank": ["morning", "afternoon", "evening", "night"], + "distractors": ["apple", "car"] +} +``` + +## Accessibility Requirements + +### Keyboard Navigation +- All interactive elements must be keyboard accessible +- Logical tab order throughout the application +- Clear focus indicators with sufficient contrast +- Support for standard keyboard shortcuts (Arrow keys, Enter, Space, Escape) + +### Screen Reader Support +- ARIA labels for all interactive elements +- Live regions for dynamic content updates +- Proper heading hierarchy (h1, h2, h3...) +- Alt text for images and meaningful icons + +### Visual Design +- Minimum contrast ratio of 4.5:1 for normal text +- Minimum contrast ratio of 3:1 for large text +- Focus indicators must be clearly visible +- Support for reduced motion preferences + +## Performance Considerations + +### Loading Strategies +- Lazy load audio files and large resources +- Cache translation files in localStorage +- Preload critical resources for next lesson +- Compress images and audio files appropriately + +### Memory Management +- Clean up event listeners when components are destroyed +- Avoid memory leaks in long-running sessions +- Use WeakMap/WeakSet for temporary references + +## Testing Guidelines + +### Manual Testing Checklist +- [ ] Test with keyboard-only navigation +- [ ] Verify screen reader announcements +- [ ] Test on mobile devices with touch interactions +- [ ] Verify offline functionality +- [ ] Check all 5 language translations +- [ ] Test with slow network connections + +### Browser Support +- Modern browsers with ES6+ support +- iOS Safari 12+ +- Android Chrome 70+ +- Desktop Chrome, Firefox, Safari, Edge (latest versions) + +## Common Patterns + +### Module Structure +```javascript +// exercises.js - Main controller pattern +(function() { + 'use strict'; + + class ExerciseController { + constructor() { + this.currentExercise = null; + this.progress = this.loadProgress(); + } + + async init(day, language) { + // Implementation + } + + loadProgress() { + // localStorage integration + } + + saveProgress() { + // localStorage integration + } + } + + window.ExerciseController = ExerciseController; +})(); +``` + +### Error Handling Pattern +```javascript +function withErrorHandling(fn, fallback = null) { + return async (...args) => { + try { + return await fn(...args); + } catch (error) { + console.warn(`Operation failed: ${error.message}`); + return fallback; + } + }; +} +``` + +## Content Guidelines + +### Language Learning Content +- Use authentic, practical phrases and vocabulary +- Include cultural context where appropriate +- Provide audio pronunciation for all content +- Ensure translations are culturally appropriate, not literal +- Include progressive difficulty across the 50-day curriculum + +### Exercise Design +- Start with simple concepts and build complexity +- Include multiple learning modalities (visual, auditory, kinesthetic) +- Provide immediate feedback on user interactions +- Allow multiple attempts with encouraging messaging +- Track progress without creating anxiety + +## Maintenance Notes + +### When Adding New Features +1. Consider impact on all 5 languages +2. Ensure accessibility compliance +3. Test offline functionality +4. Update relevant documentation +5. Follow existing file naming conventions +6. Add appropriate error handling + +### Content Updates +- Use Python scripts for bulk content generation +- Maintain consistency across all language versions +- Validate audio file availability +- Check translation accuracy with native speakers when possible + +This repository prioritizes accessibility, multilingual support, and vanilla JavaScript simplicity. When in doubt, favor solutions that enhance these core principles. \ No newline at end of file diff --git a/css/styles.css b/css/styles.css index af30a1f..2515b36 100644 --- a/css/styles.css +++ b/css/styles.css @@ -1183,6 +1183,696 @@ footer { } } +/* Interactive Exercises Styles */ +.exercises-container { + margin: 40px 0; + padding: 30px; + background: linear-gradient(135deg, #f8f9fa, #e9ecef); + border-radius: 15px; + border: 2px solid var(--accent-color); +} + +.exercises-header { + text-align: center; + margin-bottom: 30px; +} + +.exercises-header h3 { + color: var(--primary-color); + font-size: 1.8em; + margin-bottom: 10px; +} + +.exercises-header p { + color: var(--text-muted); + font-size: 1.1em; +} + +.exercise-item { + background: white; + border-radius: 12px; + padding: 25px; + margin-bottom: 25px; + box-shadow: 0 4px 12px rgba(0,0,0,0.08); + transition: all 0.3s ease; +} + +.exercise-item:hover { + box-shadow: 0 6px 20px rgba(0,0,0,0.12); + transform: translateY(-2px); +} + +.exercise-item.exercise-completed { + border: 2px solid var(--success-color); + background: linear-gradient(135deg, #ffffff, #f0fff0); + animation: completionPulse 0.6s ease-in-out; +} + +@keyframes completionPulse { + 0% { transform: scale(1); } + 50% { transform: scale(1.02); } + 100% { transform: scale(1); } +} + +.exercise-header { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 20px; + padding-bottom: 15px; + border-bottom: 2px solid #e9ecef; +} + +.exercise-header h4 { + color: var(--primary-color); + font-size: 1.4em; + margin: 0; +} + +.exercise-status { + font-weight: 500; +} + +.status-completed { + color: var(--success-color); +} + +.status-pending { + color: var(--warning-color); +} + +.exercise-instructions { + background: #e3f2fd; + padding: 15px; + border-radius: 8px; + margin-bottom: 20px; + border-left: 4px solid var(--accent-color); +} + +.exercise-actions { + display: flex; + gap: 10px; + justify-content: center; + margin-top: 25px; + flex-wrap: wrap; +} + +.exercise-actions button { + padding: 10px 20px; + border: none; + border-radius: 8px; + cursor: pointer; + font-family: 'Poppins', sans-serif; + font-weight: 500; + transition: all 0.3s ease; + display: flex; + align-items: center; + gap: 8px; +} + +.btn-primary { + background: var(--accent-color); + color: white; +} + +.btn-primary:hover { + background: #0056b3; + transform: translateY(-2px); +} + +.btn-secondary { + background: #6c757d; + color: white; +} + +.btn-secondary:hover { + background: #5a6268; + transform: translateY(-2px); +} + +/* Drag and Drop Styles */ +.drag-drop-exercise { + min-height: 400px; +} + +.drag-drop-content { + display: grid; + grid-template-columns: 2fr 1fr; + gap: 30px; + margin: 20px 0; +} + +.sentence-area { + padding: 20px; + background: white; + border-radius: 10px; + border: 2px solid #e9ecef; +} + +.sentence-item { + margin-bottom: 20px; + padding: 15px; + background: #f8f9fa; + border-radius: 8px; +} + +.drop-zone { + display: inline-block; + min-width: 80px; + min-height: 30px; + padding: 5px 10px; + margin: 0 3px; + border: 2px dashed #ced4da; + border-radius: 6px; + background: #ffffff; + text-align: center; + vertical-align: middle; + transition: all 0.3s ease; + cursor: pointer; + position: relative; +} + +.drop-zone:hover, .drop-zone:focus { + border-color: var(--accent-color); + background: #e3f2fd; +} + +.drop-zone.drag-over { + border-color: var(--accent-color); + background: #e3f2fd; + transform: scale(1.05); +} + +.drop-zone.correct { + border-color: var(--success-color); + background: #e8f5e8; +} + +.drop-zone.incorrect { + border-color: #dc3545; + background: #fdeaea; +} + +.drop-zone-placeholder { + color: #6c757d; + font-size: 0.9em; + font-style: italic; +} + +.word-bank { + padding: 20px; + background: white; + border-radius: 10px; + border: 2px solid #e9ecef; +} + +.word-bank h5 { + margin-bottom: 15px; + color: var(--primary-color); +} + +.words-container { + display: flex; + flex-wrap: wrap; + gap: 8px; +} + +.draggable-word { + padding: 8px 15px; + background: var(--accent-color); + color: white; + border-radius: 20px; + cursor: grab; + user-select: none; + transition: all 0.3s ease; + font-weight: 500; + border: 2px solid transparent; +} + +.draggable-word:hover { + background: #0056b3; + transform: translateY(-2px); +} + +.draggable-word:active, .draggable-word.dragging { + cursor: grabbing; + transform: rotate(5deg); + opacity: 0.8; +} + +.draggable-word.selected { + border-color: #ffc107; + box-shadow: 0 0 0 2px #ffc107; +} + +.draggable-word.touch-dragging { + opacity: 0.7; + transform: scale(1.1); + z-index: 1000; +} + +/* Fill in the Blank Styles */ +.fill-blank-exercise { + min-height: 300px; +} + +.sentences-container { + margin: 20px 0; +} + +.fill-blank-input { + display: inline-block; + min-width: 100px; + padding: 5px 10px; + margin: 0 3px; + border: 2px solid #ced4da; + border-radius: 6px; + font-family: 'Poppins', sans-serif; + font-size: 1em; + text-align: center; + transition: all 0.3s ease; +} + +.fill-blank-input:focus { + outline: none; + border-color: var(--accent-color); + box-shadow: 0 0 0 2px rgba(0, 123, 255, 0.25); +} + +.fill-blank-input.correct { + border-color: var(--success-color); + background: #e8f5e8; +} + +.fill-blank-input.incorrect { + border-color: #dc3545; + background: #fdeaea; +} + +.fill-blank-input.partial { + border-color: #ffc107; + background: #fff3cd; +} + +.word-bank-items { + display: flex; + flex-wrap: wrap; + gap: 8px; + margin: 10px 0; +} + +.word-bank-item { + padding: 6px 12px; + background: #e9ecef; + border: 2px solid transparent; + border-radius: 15px; + cursor: pointer; + transition: all 0.3s ease; + user-select: none; +} + +.word-bank-item:hover, .word-bank-item:focus { + background: var(--accent-color); + color: white; + transform: translateY(-1px); +} + +.word-bank-instruction { + font-size: 0.9em; + color: var(--text-muted); + margin-top: 10px; +} + +.hints-container { + margin-top: 20px; + padding: 15px; + background: #fff3cd; + border-radius: 8px; + border-left: 4px solid #ffc107; +} + +.hints-content h5 { + color: #856404; + margin-bottom: 10px; +} + +.hints-content ul { + margin: 0; + padding-left: 20px; +} + +.hints-content li { + margin-bottom: 5px; + color: #856404; +} + +.input-feedback { + font-size: 0.8em; + font-weight: 500; + padding: 2px 6px; + border-radius: 4px; + display: inline-block; + margin-top: 2px; +} + +.feedback-success { + background: #d4edda; + color: #155724; +} + +.feedback-warning { + background: #fff3cd; + color: #856404; +} + +.feedback-error { + background: #f8d7da; + color: #721c24; +} + +/* Matching Exercise Styles */ +.matching-exercise { + min-height: 500px; +} + +.matching-columns { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 30px; + margin: 20px 0; +} + +.matching-column { + padding: 20px; + background: white; + border-radius: 10px; + border: 2px solid #e9ecef; +} + +.matching-column h5 { + margin-bottom: 15px; + color: var(--primary-color); + text-align: center; +} + +.matching-items { + display: flex; + flex-direction: column; + gap: 10px; +} + +.matching-item { + padding: 15px; + background: #f8f9fa; + border: 2px solid transparent; + border-radius: 8px; + cursor: pointer; + transition: all 0.3s ease; + text-align: center; + user-select: none; +} + +.matching-item:hover, .matching-item:focus { + background: #e9ecef; + border-color: var(--accent-color); + transform: translateY(-2px); +} + +.matching-item.selected { + background: var(--accent-color); + color: white; + border-color: var(--accent-color); + transform: translateY(-2px); +} + +.matching-item.matched { + background: #e8f5e8; + border-color: var(--success-color); + cursor: default; + opacity: 0.7; +} + +.matching-item.matched:hover { + transform: none; +} + +.matching-item.correct-match { + background: #d4edda; + border-color: var(--success-color); + box-shadow: 0 0 0 2px var(--success-color); +} + +.matching-item.incorrect-match { + background: #f8d7da; + border-color: #dc3545; + box-shadow: 0 0 0 2px #dc3545; +} + +.matching-item.touch-highlight { + background: var(--accent-color); + color: white; +} + +.item-image img { + max-width: 80px; + max-height: 60px; + border-radius: 4px; + margin-bottom: 5px; +} + +.item-text { + display: block; + font-weight: 500; +} + +.matches-display { + margin-top: 30px; + padding: 20px; + background: white; + border-radius: 10px; + border: 2px solid #e9ecef; +} + +.matches-display h5 { + margin-bottom: 15px; + color: var(--primary-color); + text-align: center; +} + +.matches-list { + display: flex; + flex-direction: column; + gap: 10px; +} + +.match-item { + display: flex; + justify-content: space-between; + align-items: center; + padding: 10px 15px; + background: #f8f9fa; + border-radius: 8px; + border: 1px solid #e9ecef; +} + +.match-content { + display: flex; + align-items: center; + gap: 10px; + flex: 1; +} + +.match-arrow { + color: var(--accent-color); +} + +.match-left, .match-right { + font-weight: 500; +} + +.remove-match-btn { + background: #dc3545; + color: white; + border: none; + border-radius: 50%; + width: 30px; + height: 30px; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + transition: all 0.3s ease; +} + +.remove-match-btn:hover { + background: #c82333; + transform: scale(1.1); +} + +.no-matches { + text-align: center; + color: var(--text-muted); + font-style: italic; +} + +/* Exercise Feedback Styles */ +.exercise-feedback { + margin-top: 20px; + padding: 15px; + border-radius: 8px; + border-left: 4px solid; +} + +.feedback-success { + background: #d4edda; + border-color: var(--success-color); + color: #155724; +} + +.feedback-partial { + background: #fff3cd; + border-color: #ffc107; + color: #856404; +} + +.detailed-feedback { + margin-top: 15px; +} + +.detailed-feedback h6 { + margin-bottom: 10px; + font-weight: 600; +} + +.detailed-feedback ul { + margin: 0; + padding-left: 20px; +} + +.detailed-feedback li { + margin-bottom: 5px; +} + +/* Screen Reader Only Content */ +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border: 0; +} + +/* Mobile Responsive Styles for Exercises */ +@media (max-width: 768px) { + .exercises-container { + padding: 20px; + margin: 20px 0; + } + + .exercise-item { + padding: 20px; + } + + .exercise-header { + flex-direction: column; + text-align: center; + gap: 10px; + } + + .exercise-actions { + flex-direction: column; + align-items: stretch; + } + + .exercise-actions button { + justify-content: center; + } + + /* Drag and Drop Mobile */ + .drag-drop-content { + grid-template-columns: 1fr; + gap: 20px; + } + + .draggable-word { + padding: 10px 15px; + font-size: 0.9em; + } + + .drop-zone { + min-width: 60px; + min-height: 35px; + padding: 8px; + } + + /* Matching Mobile */ + .matching-columns { + grid-template-columns: 1fr; + gap: 20px; + } + + .matching-item { + padding: 12px; + font-size: 0.9em; + } + + .match-content { + flex-direction: column; + gap: 5px; + text-align: center; + } + + .match-arrow { + transform: rotate(90deg); + } + + /* Fill in the Blank Mobile */ + .fill-blank-input { + min-width: 80px; + margin: 2px; + display: block; + margin-bottom: 5px; + } + + .word-bank-items { + justify-content: center; + } + + .word-bank-item { + padding: 8px 12px; + font-size: 0.9em; + } +} + +@media (max-width: 480px) { + .exercises-header h3 { + font-size: 1.5em; + } + + .exercise-header h4 { + font-size: 1.2em; + } + + .draggable-word { + padding: 8px 12px; + font-size: 0.8em; + } + + .matching-item { + padding: 10px; + font-size: 0.8em; + } + + .fill-blank-input { + font-size: 0.9em; + padding: 6px 8px; + } +} + @media (max-width: 768px) { .return-to-top { bottom: 70px; diff --git a/day.html b/day.html index f466d17..c2b4a11 100644 --- a/day.html +++ b/day.html @@ -10,6 +10,10 @@ + + + +
diff --git a/exercises/day10_de.json b/exercises/day10_de.json new file mode 100644 index 0000000..f9693e1 --- /dev/null +++ b/exercises/day10_de.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Vervollständigen Sie die Daily Conversations-Phrasen", + "instructions": "Ziehen Sie die richtigen Wörter, um jede Phrase zu vervollständigen.", + "sentences": [ + { + "text": "Einen [schönen] Tag noch", + "blanks": [ + { + "placeholder": "schönen", + "correct": "schönen" + } + ] + }, + { + "text": "Wie läuft [alles]?", + "blanks": [ + { + "placeholder": "alles", + "correct": "alles" + } + ] + }, + { + "text": "Bis [später]", + "blanks": [ + { + "placeholder": "später", + "correct": "später" + } + ] + }, + { + "text": "Sehr [gut]", + "blanks": [ + { + "placeholder": "gut", + "correct": "gut" + } + ] + } + ], + "extraWords": [ + "tag" + ] + }, + { + "type": "fill-blank", + "title": "Füllen Sie die Learning Progress-Phrasen aus", + "instructions": "Vervollständigen Sie diese Phrasen, indem Sie die fehlenden Wörter einfügen.", + "sentences": [ + { + "text": "Ich [lerne]", + "blanks": [ + { + "placeholder": "lerne", + "correct": [ + "lerne" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Ich [verstehe]", + "blanks": [ + { + "placeholder": "verstehe", + "correct": [ + "verstehe" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Das ist Lektion 10", + "blanks": [ + { + "placeholder": "lektion", + "correct": [ + "lektion" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Das ist [nützlich]", + "blanks": [ + { + "placeholder": "nützlich", + "correct": [ + "nützlich" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "lerne", + "verstehe", + "lektion", + "nützlich" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day10_en.json b/exercises/day10_en.json new file mode 100644 index 0000000..8f91cf3 --- /dev/null +++ b/exercises/day10_en.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete the Daily Conversations Phrases", + "instructions": "Drag the correct words to complete each phrase.", + "sentences": [ + { + "text": "See [you] later", + "blanks": [ + { + "placeholder": "you", + "correct": "you" + } + ] + }, + { + "text": "Have a nice [day]", + "blanks": [ + { + "placeholder": "day", + "correct": "day" + } + ] + }, + { + "text": "Very [well]", + "blanks": [ + { + "placeholder": "well", + "correct": "well" + } + ] + }, + { + "text": "Good [day] 10!", + "blanks": [ + { + "placeholder": "day", + "correct": "day" + } + ] + } + ], + "extraWords": [ + "everything" + ] + }, + { + "type": "fill-blank", + "title": "Fill in Learning Progress Phrases", + "instructions": "Complete these phrases by filling in the missing words.", + "sentences": [ + { + "text": "This is [useful]", + "blanks": [ + { + "placeholder": "useful", + "correct": [ + "useful" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "I am [learning]", + "blanks": [ + { + "placeholder": "learning", + "correct": [ + "learning" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "I [understand]", + "blanks": [ + { + "placeholder": "understand", + "correct": [ + "understand" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "This is [lesson] 10", + "blanks": [ + { + "placeholder": "lesson", + "correct": [ + "lesson" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "useful", + "learning", + "understand", + "lesson" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day10_es.json b/exercises/day10_es.json new file mode 100644 index 0000000..22ae7b9 --- /dev/null +++ b/exercises/day10_es.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Completa las Frases de Daily Conversations", + "instructions": "Arrastra las palabras correctas para completar cada frase.", + "sentences": [ + { + "text": "¡Buen [día] 10!", + "blanks": [ + { + "placeholder": "día", + "correct": "día" + } + ] + }, + { + "text": "¿Cómo está [todo]?", + "blanks": [ + { + "placeholder": "todo", + "correct": "todo" + } + ] + }, + { + "text": "Hasta [luego]", + "blanks": [ + { + "placeholder": "luego", + "correct": "luego" + } + ] + }, + { + "text": "Que tengas un [buen] día", + "blanks": [ + { + "placeholder": "buen", + "correct": "buen" + } + ] + } + ], + "extraWords": [ + "bien" + ] + }, + { + "type": "fill-blank", + "title": "Completa las Frases de Learning Progress", + "instructions": "Completa estas frases llenando las palabras que faltan.", + "sentences": [ + { + "text": "Estoy [aprendiendo]", + "blanks": [ + { + "placeholder": "aprendiendo", + "correct": [ + "aprendiendo" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Esto es [útil]", + "blanks": [ + { + "placeholder": "útil", + "correct": [ + "útil" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Entiendo", + "blanks": [ + { + "placeholder": "entiendo", + "correct": [ + "entiendo" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Esta es la [lección] 10", + "blanks": [ + { + "placeholder": "lección", + "correct": [ + "lección" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "aprendiendo", + "útil", + "entiendo", + "lección" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day10_fr.json b/exercises/day10_fr.json new file mode 100644 index 0000000..0607fa6 --- /dev/null +++ b/exercises/day10_fr.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complétez les Phrases de Daily Conversations", + "instructions": "Faites glisser les mots corrects pour compléter chaque phrase.", + "sentences": [ + { + "text": "Bonne [journée] 10!", + "blanks": [ + { + "placeholder": "journée", + "correct": "journée" + } + ] + }, + { + "text": "Bonne [journée]", + "blanks": [ + { + "placeholder": "journée", + "correct": "journée" + } + ] + }, + { + "text": "Comment va tout ?", + "blanks": [ + { + "placeholder": "comment", + "correct": "comment" + } + ] + }, + { + "text": "Très [bien]", + "blanks": [ + { + "placeholder": "bien", + "correct": "bien" + } + ] + } + ], + "extraWords": [ + "tard" + ] + }, + { + "type": "fill-blank", + "title": "Remplissez les Phrases de Learning Progress", + "instructions": "Complétez ces phrases en remplissant les mots manquants.", + "sentences": [ + { + "text": "C'est la [leçon] 10", + "blanks": [ + { + "placeholder": "leçon", + "correct": [ + "leçon" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "C'est [utile]", + "blanks": [ + { + "placeholder": "utile", + "correct": [ + "utile" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Je [comprends]", + "blanks": [ + { + "placeholder": "comprends", + "correct": [ + "comprends" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "J'[apprends]", + "blanks": [ + { + "placeholder": "apprends", + "correct": [ + "apprends" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "leçon", + "utile", + "comprends", + "apprends" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day10_pt.json b/exercises/day10_pt.json new file mode 100644 index 0000000..a78db64 --- /dev/null +++ b/exercises/day10_pt.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete as Frases de Daily Conversations", + "instructions": "Arraste as palavras corretas para completar cada frase.", + "sentences": [ + { + "text": "Tenha um [bom] dia", + "blanks": [ + { + "placeholder": "bom", + "correct": "bom" + } + ] + }, + { + "text": "Como está [tudo]?", + "blanks": [ + { + "placeholder": "tudo", + "correct": "tudo" + } + ] + }, + { + "text": "Até [mais]", + "blanks": [ + { + "placeholder": "mais", + "correct": "mais" + } + ] + }, + { + "text": "Muito [bem]", + "blanks": [ + { + "placeholder": "bem", + "correct": "bem" + } + ] + } + ], + "extraWords": [ + "dia" + ] + }, + { + "type": "fill-blank", + "title": "Preencha as Frases de Learning Progress", + "instructions": "Complete essas frases preenchendo as palavras em falta.", + "sentences": [ + { + "text": "Estou [aprendendo]", + "blanks": [ + { + "placeholder": "aprendendo", + "correct": [ + "aprendendo" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Isso é [útil]", + "blanks": [ + { + "placeholder": "útil", + "correct": [ + "útil" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Esta é a [lição] 10", + "blanks": [ + { + "placeholder": "lição", + "correct": [ + "lição" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Eu [entendo]", + "blanks": [ + { + "placeholder": "entendo", + "correct": [ + "entendo" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "aprendendo", + "útil", + "lição", + "entendo" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day11_de.json b/exercises/day11_de.json new file mode 100644 index 0000000..cfd5d2c --- /dev/null +++ b/exercises/day11_de.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Vervollständigen Sie die Travel & Directions-Phrasen", + "instructions": "Ziehen Sie die richtigen Wörter, um jede Phrase zu vervollständigen.", + "sentences": [ + { + "text": "Rechts [abbiegen]", + "blanks": [ + { + "placeholder": "abbiegen", + "correct": "abbiegen" + } + ] + }, + { + "text": "Es ist [nah]", + "blanks": [ + { + "placeholder": "nah", + "correct": "nah" + } + ] + }, + { + "text": "Links [abbiegen]", + "blanks": [ + { + "placeholder": "abbiegen", + "correct": "abbiegen" + } + ] + }, + { + "text": "Geradeaus [gehen]", + "blanks": [ + { + "placeholder": "gehen", + "correct": "gehen" + } + ] + } + ], + "extraWords": [ + "weit" + ] + }, + { + "type": "fill-blank", + "title": "Füllen Sie die Transportation-Phrasen aus", + "instructions": "Vervollständigen Sie diese Phrasen, indem Sie die fehlenden Wörter einfügen.", + "sentences": [ + { + "text": "Bus", + "blanks": [ + { + "placeholder": "bus", + "correct": [ + "bus" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Zug", + "blanks": [ + { + "placeholder": "zug", + "correct": [ + "zug" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Taxi", + "blanks": [ + { + "placeholder": "taxi", + "correct": [ + "taxi" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Flughafen", + "blanks": [ + { + "placeholder": "flughafen", + "correct": [ + "flughafen" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "bus", + "zug", + "taxi", + "flughafen" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day11_en.json b/exercises/day11_en.json new file mode 100644 index 0000000..f838105 --- /dev/null +++ b/exercises/day11_en.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete the Travel & Directions Phrases", + "instructions": "Drag the correct words to complete each phrase.", + "sentences": [ + { + "text": "Go [straight]", + "blanks": [ + { + "placeholder": "straight", + "correct": "straight" + } + ] + }, + { + "text": "Turn [right]", + "blanks": [ + { + "placeholder": "right", + "correct": "right" + } + ] + }, + { + "text": "It's [far]", + "blanks": [ + { + "placeholder": "far", + "correct": "far" + } + ] + }, + { + "text": "It's [near]", + "blanks": [ + { + "placeholder": "near", + "correct": "near" + } + ] + } + ], + "extraWords": [ + "left" + ] + }, + { + "type": "fill-blank", + "title": "Fill in Transportation Phrases", + "instructions": "Complete these phrases by filling in the missing words.", + "sentences": [ + { + "text": "Bus", + "blanks": [ + { + "placeholder": "bus", + "correct": [ + "bus" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Taxi", + "blanks": [ + { + "placeholder": "taxi", + "correct": [ + "taxi" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Train", + "blanks": [ + { + "placeholder": "train", + "correct": [ + "train" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Airport", + "blanks": [ + { + "placeholder": "airport", + "correct": [ + "airport" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "bus", + "taxi", + "train", + "airport" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day11_es.json b/exercises/day11_es.json new file mode 100644 index 0000000..ff72ca5 --- /dev/null +++ b/exercises/day11_es.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Completa las Frases de Travel & Directions", + "instructions": "Arrastra las palabras correctas para completar cada frase.", + "sentences": [ + { + "text": "Gira a la [izquierda]", + "blanks": [ + { + "placeholder": "izquierda", + "correct": "izquierda" + } + ] + }, + { + "text": "Está [cerca]", + "blanks": [ + { + "placeholder": "cerca", + "correct": "cerca" + } + ] + }, + { + "text": "Gira a la [derecha]", + "blanks": [ + { + "placeholder": "derecha", + "correct": "derecha" + } + ] + }, + { + "text": "Ve [derecho]", + "blanks": [ + { + "placeholder": "derecho", + "correct": "derecho" + } + ] + } + ], + "extraWords": [ + "lejos" + ] + }, + { + "type": "fill-blank", + "title": "Completa las Frases de Transportation", + "instructions": "Completa estas frases llenando las palabras que faltan.", + "sentences": [ + { + "text": "Autobús", + "blanks": [ + { + "placeholder": "autobús", + "correct": [ + "autobús" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Aeropuerto", + "blanks": [ + { + "placeholder": "aeropuerto", + "correct": [ + "aeropuerto" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Tren", + "blanks": [ + { + "placeholder": "tren", + "correct": [ + "tren" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Taxi", + "blanks": [ + { + "placeholder": "taxi", + "correct": [ + "taxi" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "autobús", + "aeropuerto", + "tren", + "taxi" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day11_fr.json b/exercises/day11_fr.json new file mode 100644 index 0000000..a17509b --- /dev/null +++ b/exercises/day11_fr.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complétez les Phrases de Travel & Directions", + "instructions": "Faites glisser les mots corrects pour compléter chaque phrase.", + "sentences": [ + { + "text": "C'est [près]", + "blanks": [ + { + "placeholder": "près", + "correct": "près" + } + ] + }, + { + "text": "C'est [loin]", + "blanks": [ + { + "placeholder": "loin", + "correct": "loin" + } + ] + }, + { + "text": "Tournez à [droite]", + "blanks": [ + { + "placeholder": "droite", + "correct": "droite" + } + ] + }, + { + "text": "Allez tout [droit]", + "blanks": [ + { + "placeholder": "droit", + "correct": "droit" + } + ] + } + ], + "extraWords": [ + "gauche" + ] + }, + { + "type": "fill-blank", + "title": "Remplissez les Phrases de Transportation", + "instructions": "Complétez ces phrases en remplissant les mots manquants.", + "sentences": [ + { + "text": "Bus", + "blanks": [ + { + "placeholder": "bus", + "correct": [ + "bus" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Train", + "blanks": [ + { + "placeholder": "train", + "correct": [ + "train" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Aéroport", + "blanks": [ + { + "placeholder": "aéroport", + "correct": [ + "aéroport" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Taxi", + "blanks": [ + { + "placeholder": "taxi", + "correct": [ + "taxi" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "bus", + "train", + "aéroport", + "taxi" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day11_pt.json b/exercises/day11_pt.json new file mode 100644 index 0000000..95f42e3 --- /dev/null +++ b/exercises/day11_pt.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete as Frases de Travel & Directions", + "instructions": "Arraste as palavras corretas para completar cada frase.", + "sentences": [ + { + "text": "Vá em [frente]", + "blanks": [ + { + "placeholder": "frente", + "correct": "frente" + } + ] + }, + { + "text": "Está [perto]", + "blanks": [ + { + "placeholder": "perto", + "correct": "perto" + } + ] + }, + { + "text": "Vire à [esquerda]", + "blanks": [ + { + "placeholder": "esquerda", + "correct": "esquerda" + } + ] + }, + { + "text": "Está [longe]", + "blanks": [ + { + "placeholder": "longe", + "correct": "longe" + } + ] + } + ], + "extraWords": [ + "direita" + ] + }, + { + "type": "fill-blank", + "title": "Preencha as Frases de Transportation", + "instructions": "Complete essas frases preenchendo as palavras em falta.", + "sentences": [ + { + "text": "Aeroporto", + "blanks": [ + { + "placeholder": "aeroporto", + "correct": [ + "aeroporto" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Táxi", + "blanks": [ + { + "placeholder": "táxi", + "correct": [ + "táxi" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Trem", + "blanks": [ + { + "placeholder": "trem", + "correct": [ + "trem" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Ônibus", + "blanks": [ + { + "placeholder": "ônibus", + "correct": [ + "ônibus" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "aeroporto", + "táxi", + "trem", + "ônibus" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day12_de.json b/exercises/day12_de.json new file mode 100644 index 0000000..d51c6a9 --- /dev/null +++ b/exercises/day12_de.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Vervollständigen Sie die Travel & Directions-Phrasen", + "instructions": "Ziehen Sie die richtigen Wörter, um jede Phrase zu vervollständigen.", + "sentences": [ + { + "text": "Es ist [nah]", + "blanks": [ + { + "placeholder": "nah", + "correct": "nah" + } + ] + }, + { + "text": "Links [abbiegen]", + "blanks": [ + { + "placeholder": "abbiegen", + "correct": "abbiegen" + } + ] + }, + { + "text": "Rechts [abbiegen]", + "blanks": [ + { + "placeholder": "abbiegen", + "correct": "abbiegen" + } + ] + }, + { + "text": "Geradeaus [gehen]", + "blanks": [ + { + "placeholder": "gehen", + "correct": "gehen" + } + ] + } + ], + "extraWords": [ + "weit" + ] + }, + { + "type": "fill-blank", + "title": "Füllen Sie die Transportation-Phrasen aus", + "instructions": "Vervollständigen Sie diese Phrasen, indem Sie die fehlenden Wörter einfügen.", + "sentences": [ + { + "text": "Bus", + "blanks": [ + { + "placeholder": "bus", + "correct": [ + "bus" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Zug", + "blanks": [ + { + "placeholder": "zug", + "correct": [ + "zug" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Taxi", + "blanks": [ + { + "placeholder": "taxi", + "correct": [ + "taxi" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Flughafen", + "blanks": [ + { + "placeholder": "flughafen", + "correct": [ + "flughafen" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "bus", + "zug", + "taxi", + "flughafen" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day12_en.json b/exercises/day12_en.json new file mode 100644 index 0000000..94aba96 --- /dev/null +++ b/exercises/day12_en.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete the Travel & Directions Phrases", + "instructions": "Drag the correct words to complete each phrase.", + "sentences": [ + { + "text": "Turn [right]", + "blanks": [ + { + "placeholder": "right", + "correct": "right" + } + ] + }, + { + "text": "Go [straight]", + "blanks": [ + { + "placeholder": "straight", + "correct": "straight" + } + ] + }, + { + "text": "It's [far]", + "blanks": [ + { + "placeholder": "far", + "correct": "far" + } + ] + }, + { + "text": "Turn [left]", + "blanks": [ + { + "placeholder": "left", + "correct": "left" + } + ] + } + ], + "extraWords": [ + "near" + ] + }, + { + "type": "fill-blank", + "title": "Fill in Transportation Phrases", + "instructions": "Complete these phrases by filling in the missing words.", + "sentences": [ + { + "text": "Airport", + "blanks": [ + { + "placeholder": "airport", + "correct": [ + "airport" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Bus", + "blanks": [ + { + "placeholder": "bus", + "correct": [ + "bus" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Train", + "blanks": [ + { + "placeholder": "train", + "correct": [ + "train" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Taxi", + "blanks": [ + { + "placeholder": "taxi", + "correct": [ + "taxi" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "airport", + "bus", + "train", + "taxi" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day12_es.json b/exercises/day12_es.json new file mode 100644 index 0000000..c4c090e --- /dev/null +++ b/exercises/day12_es.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Completa las Frases de Travel & Directions", + "instructions": "Arrastra las palabras correctas para completar cada frase.", + "sentences": [ + { + "text": "Ve [derecho]", + "blanks": [ + { + "placeholder": "derecho", + "correct": "derecho" + } + ] + }, + { + "text": "Gira a la [izquierda]", + "blanks": [ + { + "placeholder": "izquierda", + "correct": "izquierda" + } + ] + }, + { + "text": "Está [lejos]", + "blanks": [ + { + "placeholder": "lejos", + "correct": "lejos" + } + ] + }, + { + "text": "Gira a la [derecha]", + "blanks": [ + { + "placeholder": "derecha", + "correct": "derecha" + } + ] + } + ], + "extraWords": [ + "cerca" + ] + }, + { + "type": "fill-blank", + "title": "Completa las Frases de Transportation", + "instructions": "Completa estas frases llenando las palabras que faltan.", + "sentences": [ + { + "text": "Autobús", + "blanks": [ + { + "placeholder": "autobús", + "correct": [ + "autobús" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Tren", + "blanks": [ + { + "placeholder": "tren", + "correct": [ + "tren" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Taxi", + "blanks": [ + { + "placeholder": "taxi", + "correct": [ + "taxi" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Aeropuerto", + "blanks": [ + { + "placeholder": "aeropuerto", + "correct": [ + "aeropuerto" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "autobús", + "tren", + "taxi", + "aeropuerto" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day12_fr.json b/exercises/day12_fr.json new file mode 100644 index 0000000..a9c3ea2 --- /dev/null +++ b/exercises/day12_fr.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complétez les Phrases de Travel & Directions", + "instructions": "Faites glisser les mots corrects pour compléter chaque phrase.", + "sentences": [ + { + "text": "Allez tout [droit]", + "blanks": [ + { + "placeholder": "droit", + "correct": "droit" + } + ] + }, + { + "text": "C'est [loin]", + "blanks": [ + { + "placeholder": "loin", + "correct": "loin" + } + ] + }, + { + "text": "Tournez à [droite]", + "blanks": [ + { + "placeholder": "droite", + "correct": "droite" + } + ] + }, + { + "text": "C'est [près]", + "blanks": [ + { + "placeholder": "près", + "correct": "près" + } + ] + } + ], + "extraWords": [ + "gauche" + ] + }, + { + "type": "fill-blank", + "title": "Remplissez les Phrases de Transportation", + "instructions": "Complétez ces phrases en remplissant les mots manquants.", + "sentences": [ + { + "text": "Aéroport", + "blanks": [ + { + "placeholder": "aéroport", + "correct": [ + "aéroport" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Taxi", + "blanks": [ + { + "placeholder": "taxi", + "correct": [ + "taxi" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Bus", + "blanks": [ + { + "placeholder": "bus", + "correct": [ + "bus" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Train", + "blanks": [ + { + "placeholder": "train", + "correct": [ + "train" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "aéroport", + "taxi", + "bus", + "train" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day12_pt.json b/exercises/day12_pt.json new file mode 100644 index 0000000..78bc523 --- /dev/null +++ b/exercises/day12_pt.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete as Frases de Travel & Directions", + "instructions": "Arraste as palavras corretas para completar cada frase.", + "sentences": [ + { + "text": "Está [longe]", + "blanks": [ + { + "placeholder": "longe", + "correct": "longe" + } + ] + }, + { + "text": "Vire à [esquerda]", + "blanks": [ + { + "placeholder": "esquerda", + "correct": "esquerda" + } + ] + }, + { + "text": "Vire à [direita]", + "blanks": [ + { + "placeholder": "direita", + "correct": "direita" + } + ] + }, + { + "text": "Vá em [frente]", + "blanks": [ + { + "placeholder": "frente", + "correct": "frente" + } + ] + } + ], + "extraWords": [ + "perto" + ] + }, + { + "type": "fill-blank", + "title": "Preencha as Frases de Transportation", + "instructions": "Complete essas frases preenchendo as palavras em falta.", + "sentences": [ + { + "text": "Táxi", + "blanks": [ + { + "placeholder": "táxi", + "correct": [ + "táxi" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Ônibus", + "blanks": [ + { + "placeholder": "ônibus", + "correct": [ + "ônibus" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Trem", + "blanks": [ + { + "placeholder": "trem", + "correct": [ + "trem" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Aeroporto", + "blanks": [ + { + "placeholder": "aeroporto", + "correct": [ + "aeroporto" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "táxi", + "ônibus", + "trem", + "aeroporto" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day13_de.json b/exercises/day13_de.json new file mode 100644 index 0000000..33fbef4 --- /dev/null +++ b/exercises/day13_de.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Vervollständigen Sie die Travel & Directions-Phrasen", + "instructions": "Ziehen Sie die richtigen Wörter, um jede Phrase zu vervollständigen.", + "sentences": [ + { + "text": "Links [abbiegen]", + "blanks": [ + { + "placeholder": "abbiegen", + "correct": "abbiegen" + } + ] + }, + { + "text": "Es ist [weit]", + "blanks": [ + { + "placeholder": "weit", + "correct": "weit" + } + ] + }, + { + "text": "Rechts [abbiegen]", + "blanks": [ + { + "placeholder": "abbiegen", + "correct": "abbiegen" + } + ] + }, + { + "text": "Geradeaus [gehen]", + "blanks": [ + { + "placeholder": "gehen", + "correct": "gehen" + } + ] + } + ], + "extraWords": [ + "nah" + ] + }, + { + "type": "fill-blank", + "title": "Füllen Sie die Transportation-Phrasen aus", + "instructions": "Vervollständigen Sie diese Phrasen, indem Sie die fehlenden Wörter einfügen.", + "sentences": [ + { + "text": "Bus", + "blanks": [ + { + "placeholder": "bus", + "correct": [ + "bus" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Taxi", + "blanks": [ + { + "placeholder": "taxi", + "correct": [ + "taxi" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Flughafen", + "blanks": [ + { + "placeholder": "flughafen", + "correct": [ + "flughafen" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Zug", + "blanks": [ + { + "placeholder": "zug", + "correct": [ + "zug" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "bus", + "taxi", + "flughafen", + "zug" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day13_en.json b/exercises/day13_en.json new file mode 100644 index 0000000..730f27a --- /dev/null +++ b/exercises/day13_en.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete the Travel & Directions Phrases", + "instructions": "Drag the correct words to complete each phrase.", + "sentences": [ + { + "text": "It's [far]", + "blanks": [ + { + "placeholder": "far", + "correct": "far" + } + ] + }, + { + "text": "Turn [left]", + "blanks": [ + { + "placeholder": "left", + "correct": "left" + } + ] + }, + { + "text": "It's [near]", + "blanks": [ + { + "placeholder": "near", + "correct": "near" + } + ] + }, + { + "text": "Go [straight]", + "blanks": [ + { + "placeholder": "straight", + "correct": "straight" + } + ] + } + ], + "extraWords": [ + "right" + ] + }, + { + "type": "fill-blank", + "title": "Fill in Transportation Phrases", + "instructions": "Complete these phrases by filling in the missing words.", + "sentences": [ + { + "text": "Airport", + "blanks": [ + { + "placeholder": "airport", + "correct": [ + "airport" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Bus", + "blanks": [ + { + "placeholder": "bus", + "correct": [ + "bus" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Train", + "blanks": [ + { + "placeholder": "train", + "correct": [ + "train" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Taxi", + "blanks": [ + { + "placeholder": "taxi", + "correct": [ + "taxi" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "airport", + "bus", + "train", + "taxi" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day13_es.json b/exercises/day13_es.json new file mode 100644 index 0000000..4222ef6 --- /dev/null +++ b/exercises/day13_es.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Completa las Frases de Travel & Directions", + "instructions": "Arrastra las palabras correctas para completar cada frase.", + "sentences": [ + { + "text": "Gira a la [izquierda]", + "blanks": [ + { + "placeholder": "izquierda", + "correct": "izquierda" + } + ] + }, + { + "text": "Ve [derecho]", + "blanks": [ + { + "placeholder": "derecho", + "correct": "derecho" + } + ] + }, + { + "text": "Está [cerca]", + "blanks": [ + { + "placeholder": "cerca", + "correct": "cerca" + } + ] + }, + { + "text": "Está [lejos]", + "blanks": [ + { + "placeholder": "lejos", + "correct": "lejos" + } + ] + } + ], + "extraWords": [ + "derecha" + ] + }, + { + "type": "fill-blank", + "title": "Completa las Frases de Transportation", + "instructions": "Completa estas frases llenando las palabras que faltan.", + "sentences": [ + { + "text": "Aeropuerto", + "blanks": [ + { + "placeholder": "aeropuerto", + "correct": [ + "aeropuerto" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Autobús", + "blanks": [ + { + "placeholder": "autobús", + "correct": [ + "autobús" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Tren", + "blanks": [ + { + "placeholder": "tren", + "correct": [ + "tren" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Taxi", + "blanks": [ + { + "placeholder": "taxi", + "correct": [ + "taxi" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "aeropuerto", + "autobús", + "tren", + "taxi" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day13_fr.json b/exercises/day13_fr.json new file mode 100644 index 0000000..794b201 --- /dev/null +++ b/exercises/day13_fr.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complétez les Phrases de Travel & Directions", + "instructions": "Faites glisser les mots corrects pour compléter chaque phrase.", + "sentences": [ + { + "text": "C'est [près]", + "blanks": [ + { + "placeholder": "près", + "correct": "près" + } + ] + }, + { + "text": "Allez tout [droit]", + "blanks": [ + { + "placeholder": "droit", + "correct": "droit" + } + ] + }, + { + "text": "Tournez à [droite]", + "blanks": [ + { + "placeholder": "droite", + "correct": "droite" + } + ] + }, + { + "text": "Tournez à [gauche]", + "blanks": [ + { + "placeholder": "gauche", + "correct": "gauche" + } + ] + } + ], + "extraWords": [ + "loin" + ] + }, + { + "type": "fill-blank", + "title": "Remplissez les Phrases de Transportation", + "instructions": "Complétez ces phrases en remplissant les mots manquants.", + "sentences": [ + { + "text": "Bus", + "blanks": [ + { + "placeholder": "bus", + "correct": [ + "bus" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Aéroport", + "blanks": [ + { + "placeholder": "aéroport", + "correct": [ + "aéroport" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Train", + "blanks": [ + { + "placeholder": "train", + "correct": [ + "train" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Taxi", + "blanks": [ + { + "placeholder": "taxi", + "correct": [ + "taxi" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "bus", + "aéroport", + "train", + "taxi" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day13_pt.json b/exercises/day13_pt.json new file mode 100644 index 0000000..9978927 --- /dev/null +++ b/exercises/day13_pt.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete as Frases de Travel & Directions", + "instructions": "Arraste as palavras corretas para completar cada frase.", + "sentences": [ + { + "text": "Vire à [direita]", + "blanks": [ + { + "placeholder": "direita", + "correct": "direita" + } + ] + }, + { + "text": "Vire à [esquerda]", + "blanks": [ + { + "placeholder": "esquerda", + "correct": "esquerda" + } + ] + }, + { + "text": "Está [longe]", + "blanks": [ + { + "placeholder": "longe", + "correct": "longe" + } + ] + }, + { + "text": "Vá em [frente]", + "blanks": [ + { + "placeholder": "frente", + "correct": "frente" + } + ] + } + ], + "extraWords": [ + "perto" + ] + }, + { + "type": "fill-blank", + "title": "Preencha as Frases de Transportation", + "instructions": "Complete essas frases preenchendo as palavras em falta.", + "sentences": [ + { + "text": "Táxi", + "blanks": [ + { + "placeholder": "táxi", + "correct": [ + "táxi" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Aeroporto", + "blanks": [ + { + "placeholder": "aeroporto", + "correct": [ + "aeroporto" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Trem", + "blanks": [ + { + "placeholder": "trem", + "correct": [ + "trem" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Ônibus", + "blanks": [ + { + "placeholder": "ônibus", + "correct": [ + "ônibus" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "táxi", + "aeroporto", + "trem", + "ônibus" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day14_de.json b/exercises/day14_de.json new file mode 100644 index 0000000..feaafa0 --- /dev/null +++ b/exercises/day14_de.json @@ -0,0 +1,109 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Vervollständigen Sie die Travel & Directions-Phrasen", + "instructions": "Ziehen Sie die richtigen Wörter, um jede Phrase zu vervollständigen.", + "sentences": [ + { + "text": "Geradeaus [gehen]", + "blanks": [ + { + "placeholder": "gehen", + "correct": "gehen" + } + ] + }, + { + "text": "Links [abbiegen]", + "blanks": [ + { + "placeholder": "abbiegen", + "correct": "abbiegen" + } + ] + }, + { + "text": "Es ist [weit]", + "blanks": [ + { + "placeholder": "weit", + "correct": "weit" + } + ] + }, + { + "text": "Es ist [nah]", + "blanks": [ + { + "placeholder": "nah", + "correct": "nah" + } + ] + } + ], + "extraWords": [] + }, + { + "type": "fill-blank", + "title": "Füllen Sie die Transportation-Phrasen aus", + "instructions": "Vervollständigen Sie diese Phrasen, indem Sie die fehlenden Wörter einfügen.", + "sentences": [ + { + "text": "Zug", + "blanks": [ + { + "placeholder": "zug", + "correct": [ + "zug" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Taxi", + "blanks": [ + { + "placeholder": "taxi", + "correct": [ + "taxi" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Bus", + "blanks": [ + { + "placeholder": "bus", + "correct": [ + "bus" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Flughafen", + "blanks": [ + { + "placeholder": "flughafen", + "correct": [ + "flughafen" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "zug", + "taxi", + "bus", + "flughafen" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day14_en.json b/exercises/day14_en.json new file mode 100644 index 0000000..dd60bdd --- /dev/null +++ b/exercises/day14_en.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete the Travel & Directions Phrases", + "instructions": "Drag the correct words to complete each phrase.", + "sentences": [ + { + "text": "It's [near]", + "blanks": [ + { + "placeholder": "near", + "correct": "near" + } + ] + }, + { + "text": "Turn [left]", + "blanks": [ + { + "placeholder": "left", + "correct": "left" + } + ] + }, + { + "text": "Turn [right]", + "blanks": [ + { + "placeholder": "right", + "correct": "right" + } + ] + }, + { + "text": "Go [straight]", + "blanks": [ + { + "placeholder": "straight", + "correct": "straight" + } + ] + } + ], + "extraWords": [ + "far" + ] + }, + { + "type": "fill-blank", + "title": "Fill in Transportation Phrases", + "instructions": "Complete these phrases by filling in the missing words.", + "sentences": [ + { + "text": "Taxi", + "blanks": [ + { + "placeholder": "taxi", + "correct": [ + "taxi" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Train", + "blanks": [ + { + "placeholder": "train", + "correct": [ + "train" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Bus", + "blanks": [ + { + "placeholder": "bus", + "correct": [ + "bus" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Airport", + "blanks": [ + { + "placeholder": "airport", + "correct": [ + "airport" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "taxi", + "train", + "bus", + "airport" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day14_es.json b/exercises/day14_es.json new file mode 100644 index 0000000..0418931 --- /dev/null +++ b/exercises/day14_es.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Completa las Frases de Travel & Directions", + "instructions": "Arrastra las palabras correctas para completar cada frase.", + "sentences": [ + { + "text": "Está [lejos]", + "blanks": [ + { + "placeholder": "lejos", + "correct": "lejos" + } + ] + }, + { + "text": "Gira a la [derecha]", + "blanks": [ + { + "placeholder": "derecha", + "correct": "derecha" + } + ] + }, + { + "text": "Gira a la [izquierda]", + "blanks": [ + { + "placeholder": "izquierda", + "correct": "izquierda" + } + ] + }, + { + "text": "Ve [derecho]", + "blanks": [ + { + "placeholder": "derecho", + "correct": "derecho" + } + ] + } + ], + "extraWords": [ + "cerca" + ] + }, + { + "type": "fill-blank", + "title": "Completa las Frases de Transportation", + "instructions": "Completa estas frases llenando las palabras que faltan.", + "sentences": [ + { + "text": "Autobús", + "blanks": [ + { + "placeholder": "autobús", + "correct": [ + "autobús" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Taxi", + "blanks": [ + { + "placeholder": "taxi", + "correct": [ + "taxi" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Aeropuerto", + "blanks": [ + { + "placeholder": "aeropuerto", + "correct": [ + "aeropuerto" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Tren", + "blanks": [ + { + "placeholder": "tren", + "correct": [ + "tren" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "autobús", + "taxi", + "aeropuerto", + "tren" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day14_fr.json b/exercises/day14_fr.json new file mode 100644 index 0000000..6d27caf --- /dev/null +++ b/exercises/day14_fr.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complétez les Phrases de Travel & Directions", + "instructions": "Faites glisser les mots corrects pour compléter chaque phrase.", + "sentences": [ + { + "text": "C'est [loin]", + "blanks": [ + { + "placeholder": "loin", + "correct": "loin" + } + ] + }, + { + "text": "Tournez à [gauche]", + "blanks": [ + { + "placeholder": "gauche", + "correct": "gauche" + } + ] + }, + { + "text": "C'est [près]", + "blanks": [ + { + "placeholder": "près", + "correct": "près" + } + ] + }, + { + "text": "Tournez à [droite]", + "blanks": [ + { + "placeholder": "droite", + "correct": "droite" + } + ] + } + ], + "extraWords": [ + "droit" + ] + }, + { + "type": "fill-blank", + "title": "Remplissez les Phrases de Transportation", + "instructions": "Complétez ces phrases en remplissant les mots manquants.", + "sentences": [ + { + "text": "Taxi", + "blanks": [ + { + "placeholder": "taxi", + "correct": [ + "taxi" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Aéroport", + "blanks": [ + { + "placeholder": "aéroport", + "correct": [ + "aéroport" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Bus", + "blanks": [ + { + "placeholder": "bus", + "correct": [ + "bus" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Train", + "blanks": [ + { + "placeholder": "train", + "correct": [ + "train" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "taxi", + "aéroport", + "bus", + "train" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day14_pt.json b/exercises/day14_pt.json new file mode 100644 index 0000000..59b8769 --- /dev/null +++ b/exercises/day14_pt.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete as Frases de Travel & Directions", + "instructions": "Arraste as palavras corretas para completar cada frase.", + "sentences": [ + { + "text": "Vire à [esquerda]", + "blanks": [ + { + "placeholder": "esquerda", + "correct": "esquerda" + } + ] + }, + { + "text": "Vire à [direita]", + "blanks": [ + { + "placeholder": "direita", + "correct": "direita" + } + ] + }, + { + "text": "Vá em [frente]", + "blanks": [ + { + "placeholder": "frente", + "correct": "frente" + } + ] + }, + { + "text": "Está [longe]", + "blanks": [ + { + "placeholder": "longe", + "correct": "longe" + } + ] + } + ], + "extraWords": [ + "perto" + ] + }, + { + "type": "fill-blank", + "title": "Preencha as Frases de Transportation", + "instructions": "Complete essas frases preenchendo as palavras em falta.", + "sentences": [ + { + "text": "Trem", + "blanks": [ + { + "placeholder": "trem", + "correct": [ + "trem" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Ônibus", + "blanks": [ + { + "placeholder": "ônibus", + "correct": [ + "ônibus" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Aeroporto", + "blanks": [ + { + "placeholder": "aeroporto", + "correct": [ + "aeroporto" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Táxi", + "blanks": [ + { + "placeholder": "táxi", + "correct": [ + "táxi" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "trem", + "ônibus", + "aeroporto", + "táxi" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day15_de.json b/exercises/day15_de.json new file mode 100644 index 0000000..551367c --- /dev/null +++ b/exercises/day15_de.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Vervollständigen Sie die Travel & Directions-Phrasen", + "instructions": "Ziehen Sie die richtigen Wörter, um jede Phrase zu vervollständigen.", + "sentences": [ + { + "text": "Es ist [nah]", + "blanks": [ + { + "placeholder": "nah", + "correct": "nah" + } + ] + }, + { + "text": "Rechts [abbiegen]", + "blanks": [ + { + "placeholder": "abbiegen", + "correct": "abbiegen" + } + ] + }, + { + "text": "Links [abbiegen]", + "blanks": [ + { + "placeholder": "abbiegen", + "correct": "abbiegen" + } + ] + }, + { + "text": "Geradeaus [gehen]", + "blanks": [ + { + "placeholder": "gehen", + "correct": "gehen" + } + ] + } + ], + "extraWords": [ + "weit" + ] + }, + { + "type": "fill-blank", + "title": "Füllen Sie die Transportation-Phrasen aus", + "instructions": "Vervollständigen Sie diese Phrasen, indem Sie die fehlenden Wörter einfügen.", + "sentences": [ + { + "text": "Zug", + "blanks": [ + { + "placeholder": "zug", + "correct": [ + "zug" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Taxi", + "blanks": [ + { + "placeholder": "taxi", + "correct": [ + "taxi" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Bus", + "blanks": [ + { + "placeholder": "bus", + "correct": [ + "bus" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Flughafen", + "blanks": [ + { + "placeholder": "flughafen", + "correct": [ + "flughafen" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "zug", + "taxi", + "bus", + "flughafen" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day15_en.json b/exercises/day15_en.json new file mode 100644 index 0000000..c3b6dd2 --- /dev/null +++ b/exercises/day15_en.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete the Travel & Directions Phrases", + "instructions": "Drag the correct words to complete each phrase.", + "sentences": [ + { + "text": "Turn [right]", + "blanks": [ + { + "placeholder": "right", + "correct": "right" + } + ] + }, + { + "text": "Go [straight]", + "blanks": [ + { + "placeholder": "straight", + "correct": "straight" + } + ] + }, + { + "text": "It's [near]", + "blanks": [ + { + "placeholder": "near", + "correct": "near" + } + ] + }, + { + "text": "Turn [left]", + "blanks": [ + { + "placeholder": "left", + "correct": "left" + } + ] + } + ], + "extraWords": [ + "far" + ] + }, + { + "type": "fill-blank", + "title": "Fill in Transportation Phrases", + "instructions": "Complete these phrases by filling in the missing words.", + "sentences": [ + { + "text": "Airport", + "blanks": [ + { + "placeholder": "airport", + "correct": [ + "airport" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Bus", + "blanks": [ + { + "placeholder": "bus", + "correct": [ + "bus" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Taxi", + "blanks": [ + { + "placeholder": "taxi", + "correct": [ + "taxi" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Train", + "blanks": [ + { + "placeholder": "train", + "correct": [ + "train" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "airport", + "bus", + "taxi", + "train" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day15_es.json b/exercises/day15_es.json new file mode 100644 index 0000000..93b5b12 --- /dev/null +++ b/exercises/day15_es.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Completa las Frases de Travel & Directions", + "instructions": "Arrastra las palabras correctas para completar cada frase.", + "sentences": [ + { + "text": "Ve [derecho]", + "blanks": [ + { + "placeholder": "derecho", + "correct": "derecho" + } + ] + }, + { + "text": "Está [lejos]", + "blanks": [ + { + "placeholder": "lejos", + "correct": "lejos" + } + ] + }, + { + "text": "Gira a la [izquierda]", + "blanks": [ + { + "placeholder": "izquierda", + "correct": "izquierda" + } + ] + }, + { + "text": "Gira a la [derecha]", + "blanks": [ + { + "placeholder": "derecha", + "correct": "derecha" + } + ] + } + ], + "extraWords": [ + "cerca" + ] + }, + { + "type": "fill-blank", + "title": "Completa las Frases de Transportation", + "instructions": "Completa estas frases llenando las palabras que faltan.", + "sentences": [ + { + "text": "Tren", + "blanks": [ + { + "placeholder": "tren", + "correct": [ + "tren" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Autobús", + "blanks": [ + { + "placeholder": "autobús", + "correct": [ + "autobús" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Taxi", + "blanks": [ + { + "placeholder": "taxi", + "correct": [ + "taxi" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Aeropuerto", + "blanks": [ + { + "placeholder": "aeropuerto", + "correct": [ + "aeropuerto" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "tren", + "autobús", + "taxi", + "aeropuerto" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day15_fr.json b/exercises/day15_fr.json new file mode 100644 index 0000000..490802c --- /dev/null +++ b/exercises/day15_fr.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complétez les Phrases de Travel & Directions", + "instructions": "Faites glisser les mots corrects pour compléter chaque phrase.", + "sentences": [ + { + "text": "Tournez à [gauche]", + "blanks": [ + { + "placeholder": "gauche", + "correct": "gauche" + } + ] + }, + { + "text": "Tournez à [droite]", + "blanks": [ + { + "placeholder": "droite", + "correct": "droite" + } + ] + }, + { + "text": "C'est [loin]", + "blanks": [ + { + "placeholder": "loin", + "correct": "loin" + } + ] + }, + { + "text": "Allez tout [droit]", + "blanks": [ + { + "placeholder": "droit", + "correct": "droit" + } + ] + } + ], + "extraWords": [ + "près" + ] + }, + { + "type": "fill-blank", + "title": "Remplissez les Phrases de Transportation", + "instructions": "Complétez ces phrases en remplissant les mots manquants.", + "sentences": [ + { + "text": "Taxi", + "blanks": [ + { + "placeholder": "taxi", + "correct": [ + "taxi" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Train", + "blanks": [ + { + "placeholder": "train", + "correct": [ + "train" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Bus", + "blanks": [ + { + "placeholder": "bus", + "correct": [ + "bus" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Aéroport", + "blanks": [ + { + "placeholder": "aéroport", + "correct": [ + "aéroport" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "taxi", + "train", + "bus", + "aéroport" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day15_pt.json b/exercises/day15_pt.json new file mode 100644 index 0000000..c368bee --- /dev/null +++ b/exercises/day15_pt.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete as Frases de Travel & Directions", + "instructions": "Arraste as palavras corretas para completar cada frase.", + "sentences": [ + { + "text": "Vire à [esquerda]", + "blanks": [ + { + "placeholder": "esquerda", + "correct": "esquerda" + } + ] + }, + { + "text": "Vire à [direita]", + "blanks": [ + { + "placeholder": "direita", + "correct": "direita" + } + ] + }, + { + "text": "Vá em [frente]", + "blanks": [ + { + "placeholder": "frente", + "correct": "frente" + } + ] + }, + { + "text": "Está [longe]", + "blanks": [ + { + "placeholder": "longe", + "correct": "longe" + } + ] + } + ], + "extraWords": [ + "perto" + ] + }, + { + "type": "fill-blank", + "title": "Preencha as Frases de Transportation", + "instructions": "Complete essas frases preenchendo as palavras em falta.", + "sentences": [ + { + "text": "Aeroporto", + "blanks": [ + { + "placeholder": "aeroporto", + "correct": [ + "aeroporto" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Táxi", + "blanks": [ + { + "placeholder": "táxi", + "correct": [ + "táxi" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Ônibus", + "blanks": [ + { + "placeholder": "ônibus", + "correct": [ + "ônibus" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Trem", + "blanks": [ + { + "placeholder": "trem", + "correct": [ + "trem" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "aeroporto", + "táxi", + "ônibus", + "trem" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day16_de.json b/exercises/day16_de.json new file mode 100644 index 0000000..be69ebc --- /dev/null +++ b/exercises/day16_de.json @@ -0,0 +1,109 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Vervollständigen Sie die Travel & Directions-Phrasen", + "instructions": "Ziehen Sie die richtigen Wörter, um jede Phrase zu vervollständigen.", + "sentences": [ + { + "text": "Es ist [weit]", + "blanks": [ + { + "placeholder": "weit", + "correct": "weit" + } + ] + }, + { + "text": "Es ist [nah]", + "blanks": [ + { + "placeholder": "nah", + "correct": "nah" + } + ] + }, + { + "text": "Rechts [abbiegen]", + "blanks": [ + { + "placeholder": "abbiegen", + "correct": "abbiegen" + } + ] + }, + { + "text": "Geradeaus [gehen]", + "blanks": [ + { + "placeholder": "gehen", + "correct": "gehen" + } + ] + } + ], + "extraWords": [] + }, + { + "type": "fill-blank", + "title": "Füllen Sie die Transportation-Phrasen aus", + "instructions": "Vervollständigen Sie diese Phrasen, indem Sie die fehlenden Wörter einfügen.", + "sentences": [ + { + "text": "Flughafen", + "blanks": [ + { + "placeholder": "flughafen", + "correct": [ + "flughafen" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Zug", + "blanks": [ + { + "placeholder": "zug", + "correct": [ + "zug" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Bus", + "blanks": [ + { + "placeholder": "bus", + "correct": [ + "bus" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Taxi", + "blanks": [ + { + "placeholder": "taxi", + "correct": [ + "taxi" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "flughafen", + "zug", + "bus", + "taxi" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day16_en.json b/exercises/day16_en.json new file mode 100644 index 0000000..28769c0 --- /dev/null +++ b/exercises/day16_en.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete the Travel & Directions Phrases", + "instructions": "Drag the correct words to complete each phrase.", + "sentences": [ + { + "text": "Turn [left]", + "blanks": [ + { + "placeholder": "left", + "correct": "left" + } + ] + }, + { + "text": "It's [far]", + "blanks": [ + { + "placeholder": "far", + "correct": "far" + } + ] + }, + { + "text": "Turn [right]", + "blanks": [ + { + "placeholder": "right", + "correct": "right" + } + ] + }, + { + "text": "It's [near]", + "blanks": [ + { + "placeholder": "near", + "correct": "near" + } + ] + } + ], + "extraWords": [ + "straight" + ] + }, + { + "type": "fill-blank", + "title": "Fill in Transportation Phrases", + "instructions": "Complete these phrases by filling in the missing words.", + "sentences": [ + { + "text": "Train", + "blanks": [ + { + "placeholder": "train", + "correct": [ + "train" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Taxi", + "blanks": [ + { + "placeholder": "taxi", + "correct": [ + "taxi" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Airport", + "blanks": [ + { + "placeholder": "airport", + "correct": [ + "airport" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Bus", + "blanks": [ + { + "placeholder": "bus", + "correct": [ + "bus" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "train", + "taxi", + "airport", + "bus" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day16_es.json b/exercises/day16_es.json new file mode 100644 index 0000000..26e8bac --- /dev/null +++ b/exercises/day16_es.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Completa las Frases de Travel & Directions", + "instructions": "Arrastra las palabras correctas para completar cada frase.", + "sentences": [ + { + "text": "Gira a la [derecha]", + "blanks": [ + { + "placeholder": "derecha", + "correct": "derecha" + } + ] + }, + { + "text": "Está [cerca]", + "blanks": [ + { + "placeholder": "cerca", + "correct": "cerca" + } + ] + }, + { + "text": "Ve [derecho]", + "blanks": [ + { + "placeholder": "derecho", + "correct": "derecho" + } + ] + }, + { + "text": "Está [lejos]", + "blanks": [ + { + "placeholder": "lejos", + "correct": "lejos" + } + ] + } + ], + "extraWords": [ + "izquierda" + ] + }, + { + "type": "fill-blank", + "title": "Completa las Frases de Transportation", + "instructions": "Completa estas frases llenando las palabras que faltan.", + "sentences": [ + { + "text": "Taxi", + "blanks": [ + { + "placeholder": "taxi", + "correct": [ + "taxi" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Tren", + "blanks": [ + { + "placeholder": "tren", + "correct": [ + "tren" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Aeropuerto", + "blanks": [ + { + "placeholder": "aeropuerto", + "correct": [ + "aeropuerto" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Autobús", + "blanks": [ + { + "placeholder": "autobús", + "correct": [ + "autobús" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "taxi", + "tren", + "aeropuerto", + "autobús" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day16_fr.json b/exercises/day16_fr.json new file mode 100644 index 0000000..5291117 --- /dev/null +++ b/exercises/day16_fr.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complétez les Phrases de Travel & Directions", + "instructions": "Faites glisser les mots corrects pour compléter chaque phrase.", + "sentences": [ + { + "text": "Allez tout [droit]", + "blanks": [ + { + "placeholder": "droit", + "correct": "droit" + } + ] + }, + { + "text": "C'est [près]", + "blanks": [ + { + "placeholder": "près", + "correct": "près" + } + ] + }, + { + "text": "Tournez à [droite]", + "blanks": [ + { + "placeholder": "droite", + "correct": "droite" + } + ] + }, + { + "text": "Tournez à [gauche]", + "blanks": [ + { + "placeholder": "gauche", + "correct": "gauche" + } + ] + } + ], + "extraWords": [ + "loin" + ] + }, + { + "type": "fill-blank", + "title": "Remplissez les Phrases de Transportation", + "instructions": "Complétez ces phrases en remplissant les mots manquants.", + "sentences": [ + { + "text": "Taxi", + "blanks": [ + { + "placeholder": "taxi", + "correct": [ + "taxi" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Bus", + "blanks": [ + { + "placeholder": "bus", + "correct": [ + "bus" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Train", + "blanks": [ + { + "placeholder": "train", + "correct": [ + "train" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Aéroport", + "blanks": [ + { + "placeholder": "aéroport", + "correct": [ + "aéroport" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "taxi", + "bus", + "train", + "aéroport" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day16_pt.json b/exercises/day16_pt.json new file mode 100644 index 0000000..f4bffbf --- /dev/null +++ b/exercises/day16_pt.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete as Frases de Travel & Directions", + "instructions": "Arraste as palavras corretas para completar cada frase.", + "sentences": [ + { + "text": "Está [perto]", + "blanks": [ + { + "placeholder": "perto", + "correct": "perto" + } + ] + }, + { + "text": "Está [longe]", + "blanks": [ + { + "placeholder": "longe", + "correct": "longe" + } + ] + }, + { + "text": "Vá em [frente]", + "blanks": [ + { + "placeholder": "frente", + "correct": "frente" + } + ] + }, + { + "text": "Vire à [esquerda]", + "blanks": [ + { + "placeholder": "esquerda", + "correct": "esquerda" + } + ] + } + ], + "extraWords": [ + "direita" + ] + }, + { + "type": "fill-blank", + "title": "Preencha as Frases de Transportation", + "instructions": "Complete essas frases preenchendo as palavras em falta.", + "sentences": [ + { + "text": "Trem", + "blanks": [ + { + "placeholder": "trem", + "correct": [ + "trem" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Aeroporto", + "blanks": [ + { + "placeholder": "aeroporto", + "correct": [ + "aeroporto" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Ônibus", + "blanks": [ + { + "placeholder": "ônibus", + "correct": [ + "ônibus" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Táxi", + "blanks": [ + { + "placeholder": "táxi", + "correct": [ + "táxi" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "trem", + "aeroporto", + "ônibus", + "táxi" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day17_de.json b/exercises/day17_de.json new file mode 100644 index 0000000..bf13e80 --- /dev/null +++ b/exercises/day17_de.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Vervollständigen Sie die Travel & Directions-Phrasen", + "instructions": "Ziehen Sie die richtigen Wörter, um jede Phrase zu vervollständigen.", + "sentences": [ + { + "text": "Links [abbiegen]", + "blanks": [ + { + "placeholder": "abbiegen", + "correct": "abbiegen" + } + ] + }, + { + "text": "Es ist [weit]", + "blanks": [ + { + "placeholder": "weit", + "correct": "weit" + } + ] + }, + { + "text": "Rechts [abbiegen]", + "blanks": [ + { + "placeholder": "abbiegen", + "correct": "abbiegen" + } + ] + }, + { + "text": "Es ist [nah]", + "blanks": [ + { + "placeholder": "nah", + "correct": "nah" + } + ] + } + ], + "extraWords": [ + "gehen" + ] + }, + { + "type": "fill-blank", + "title": "Füllen Sie die Transportation-Phrasen aus", + "instructions": "Vervollständigen Sie diese Phrasen, indem Sie die fehlenden Wörter einfügen.", + "sentences": [ + { + "text": "Bus", + "blanks": [ + { + "placeholder": "bus", + "correct": [ + "bus" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Flughafen", + "blanks": [ + { + "placeholder": "flughafen", + "correct": [ + "flughafen" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Zug", + "blanks": [ + { + "placeholder": "zug", + "correct": [ + "zug" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Taxi", + "blanks": [ + { + "placeholder": "taxi", + "correct": [ + "taxi" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "bus", + "flughafen", + "zug", + "taxi" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day17_en.json b/exercises/day17_en.json new file mode 100644 index 0000000..6382cc1 --- /dev/null +++ b/exercises/day17_en.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete the Travel & Directions Phrases", + "instructions": "Drag the correct words to complete each phrase.", + "sentences": [ + { + "text": "Go [straight]", + "blanks": [ + { + "placeholder": "straight", + "correct": "straight" + } + ] + }, + { + "text": "It's [far]", + "blanks": [ + { + "placeholder": "far", + "correct": "far" + } + ] + }, + { + "text": "Turn [right]", + "blanks": [ + { + "placeholder": "right", + "correct": "right" + } + ] + }, + { + "text": "It's [near]", + "blanks": [ + { + "placeholder": "near", + "correct": "near" + } + ] + } + ], + "extraWords": [ + "left" + ] + }, + { + "type": "fill-blank", + "title": "Fill in Transportation Phrases", + "instructions": "Complete these phrases by filling in the missing words.", + "sentences": [ + { + "text": "Airport", + "blanks": [ + { + "placeholder": "airport", + "correct": [ + "airport" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Bus", + "blanks": [ + { + "placeholder": "bus", + "correct": [ + "bus" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Taxi", + "blanks": [ + { + "placeholder": "taxi", + "correct": [ + "taxi" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Train", + "blanks": [ + { + "placeholder": "train", + "correct": [ + "train" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "airport", + "bus", + "taxi", + "train" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day17_es.json b/exercises/day17_es.json new file mode 100644 index 0000000..185958d --- /dev/null +++ b/exercises/day17_es.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Completa las Frases de Travel & Directions", + "instructions": "Arrastra las palabras correctas para completar cada frase.", + "sentences": [ + { + "text": "Gira a la [derecha]", + "blanks": [ + { + "placeholder": "derecha", + "correct": "derecha" + } + ] + }, + { + "text": "Está [cerca]", + "blanks": [ + { + "placeholder": "cerca", + "correct": "cerca" + } + ] + }, + { + "text": "Gira a la [izquierda]", + "blanks": [ + { + "placeholder": "izquierda", + "correct": "izquierda" + } + ] + }, + { + "text": "Está [lejos]", + "blanks": [ + { + "placeholder": "lejos", + "correct": "lejos" + } + ] + } + ], + "extraWords": [ + "derecho" + ] + }, + { + "type": "fill-blank", + "title": "Completa las Frases de Transportation", + "instructions": "Completa estas frases llenando las palabras que faltan.", + "sentences": [ + { + "text": "Tren", + "blanks": [ + { + "placeholder": "tren", + "correct": [ + "tren" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Aeropuerto", + "blanks": [ + { + "placeholder": "aeropuerto", + "correct": [ + "aeropuerto" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Taxi", + "blanks": [ + { + "placeholder": "taxi", + "correct": [ + "taxi" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Autobús", + "blanks": [ + { + "placeholder": "autobús", + "correct": [ + "autobús" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "tren", + "aeropuerto", + "taxi", + "autobús" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day17_fr.json b/exercises/day17_fr.json new file mode 100644 index 0000000..4f0635f --- /dev/null +++ b/exercises/day17_fr.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complétez les Phrases de Travel & Directions", + "instructions": "Faites glisser les mots corrects pour compléter chaque phrase.", + "sentences": [ + { + "text": "C'est [loin]", + "blanks": [ + { + "placeholder": "loin", + "correct": "loin" + } + ] + }, + { + "text": "C'est [près]", + "blanks": [ + { + "placeholder": "près", + "correct": "près" + } + ] + }, + { + "text": "Tournez à [droite]", + "blanks": [ + { + "placeholder": "droite", + "correct": "droite" + } + ] + }, + { + "text": "Tournez à [gauche]", + "blanks": [ + { + "placeholder": "gauche", + "correct": "gauche" + } + ] + } + ], + "extraWords": [ + "droit" + ] + }, + { + "type": "fill-blank", + "title": "Remplissez les Phrases de Transportation", + "instructions": "Complétez ces phrases en remplissant les mots manquants.", + "sentences": [ + { + "text": "Aéroport", + "blanks": [ + { + "placeholder": "aéroport", + "correct": [ + "aéroport" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Taxi", + "blanks": [ + { + "placeholder": "taxi", + "correct": [ + "taxi" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Train", + "blanks": [ + { + "placeholder": "train", + "correct": [ + "train" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Bus", + "blanks": [ + { + "placeholder": "bus", + "correct": [ + "bus" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "aéroport", + "taxi", + "train", + "bus" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day17_pt.json b/exercises/day17_pt.json new file mode 100644 index 0000000..3083c7e --- /dev/null +++ b/exercises/day17_pt.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete as Frases de Travel & Directions", + "instructions": "Arraste as palavras corretas para completar cada frase.", + "sentences": [ + { + "text": "Está [perto]", + "blanks": [ + { + "placeholder": "perto", + "correct": "perto" + } + ] + }, + { + "text": "Está [longe]", + "blanks": [ + { + "placeholder": "longe", + "correct": "longe" + } + ] + }, + { + "text": "Vire à [direita]", + "blanks": [ + { + "placeholder": "direita", + "correct": "direita" + } + ] + }, + { + "text": "Vá em [frente]", + "blanks": [ + { + "placeholder": "frente", + "correct": "frente" + } + ] + } + ], + "extraWords": [ + "esquerda" + ] + }, + { + "type": "fill-blank", + "title": "Preencha as Frases de Transportation", + "instructions": "Complete essas frases preenchendo as palavras em falta.", + "sentences": [ + { + "text": "Aeroporto", + "blanks": [ + { + "placeholder": "aeroporto", + "correct": [ + "aeroporto" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Ônibus", + "blanks": [ + { + "placeholder": "ônibus", + "correct": [ + "ônibus" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Trem", + "blanks": [ + { + "placeholder": "trem", + "correct": [ + "trem" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Táxi", + "blanks": [ + { + "placeholder": "táxi", + "correct": [ + "táxi" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "aeroporto", + "ônibus", + "trem", + "táxi" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day18_de.json b/exercises/day18_de.json new file mode 100644 index 0000000..7caf881 --- /dev/null +++ b/exercises/day18_de.json @@ -0,0 +1,109 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Vervollständigen Sie die Travel & Directions-Phrasen", + "instructions": "Ziehen Sie die richtigen Wörter, um jede Phrase zu vervollständigen.", + "sentences": [ + { + "text": "Es ist [nah]", + "blanks": [ + { + "placeholder": "nah", + "correct": "nah" + } + ] + }, + { + "text": "Geradeaus [gehen]", + "blanks": [ + { + "placeholder": "gehen", + "correct": "gehen" + } + ] + }, + { + "text": "Es ist [weit]", + "blanks": [ + { + "placeholder": "weit", + "correct": "weit" + } + ] + }, + { + "text": "Rechts [abbiegen]", + "blanks": [ + { + "placeholder": "abbiegen", + "correct": "abbiegen" + } + ] + } + ], + "extraWords": [] + }, + { + "type": "fill-blank", + "title": "Füllen Sie die Transportation-Phrasen aus", + "instructions": "Vervollständigen Sie diese Phrasen, indem Sie die fehlenden Wörter einfügen.", + "sentences": [ + { + "text": "Taxi", + "blanks": [ + { + "placeholder": "taxi", + "correct": [ + "taxi" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Bus", + "blanks": [ + { + "placeholder": "bus", + "correct": [ + "bus" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Flughafen", + "blanks": [ + { + "placeholder": "flughafen", + "correct": [ + "flughafen" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Zug", + "blanks": [ + { + "placeholder": "zug", + "correct": [ + "zug" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "taxi", + "bus", + "flughafen", + "zug" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day18_en.json b/exercises/day18_en.json new file mode 100644 index 0000000..f6d4076 --- /dev/null +++ b/exercises/day18_en.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete the Travel & Directions Phrases", + "instructions": "Drag the correct words to complete each phrase.", + "sentences": [ + { + "text": "It's [near]", + "blanks": [ + { + "placeholder": "near", + "correct": "near" + } + ] + }, + { + "text": "Turn [left]", + "blanks": [ + { + "placeholder": "left", + "correct": "left" + } + ] + }, + { + "text": "Go [straight]", + "blanks": [ + { + "placeholder": "straight", + "correct": "straight" + } + ] + }, + { + "text": "It's [far]", + "blanks": [ + { + "placeholder": "far", + "correct": "far" + } + ] + } + ], + "extraWords": [ + "right" + ] + }, + { + "type": "fill-blank", + "title": "Fill in Transportation Phrases", + "instructions": "Complete these phrases by filling in the missing words.", + "sentences": [ + { + "text": "Airport", + "blanks": [ + { + "placeholder": "airport", + "correct": [ + "airport" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Train", + "blanks": [ + { + "placeholder": "train", + "correct": [ + "train" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Bus", + "blanks": [ + { + "placeholder": "bus", + "correct": [ + "bus" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Taxi", + "blanks": [ + { + "placeholder": "taxi", + "correct": [ + "taxi" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "airport", + "train", + "bus", + "taxi" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day18_es.json b/exercises/day18_es.json new file mode 100644 index 0000000..c98c120 --- /dev/null +++ b/exercises/day18_es.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Completa las Frases de Travel & Directions", + "instructions": "Arrastra las palabras correctas para completar cada frase.", + "sentences": [ + { + "text": "Ve [derecho]", + "blanks": [ + { + "placeholder": "derecho", + "correct": "derecho" + } + ] + }, + { + "text": "Gira a la [izquierda]", + "blanks": [ + { + "placeholder": "izquierda", + "correct": "izquierda" + } + ] + }, + { + "text": "Está [lejos]", + "blanks": [ + { + "placeholder": "lejos", + "correct": "lejos" + } + ] + }, + { + "text": "Está [cerca]", + "blanks": [ + { + "placeholder": "cerca", + "correct": "cerca" + } + ] + } + ], + "extraWords": [ + "derecha" + ] + }, + { + "type": "fill-blank", + "title": "Completa las Frases de Transportation", + "instructions": "Completa estas frases llenando las palabras que faltan.", + "sentences": [ + { + "text": "Autobús", + "blanks": [ + { + "placeholder": "autobús", + "correct": [ + "autobús" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Tren", + "blanks": [ + { + "placeholder": "tren", + "correct": [ + "tren" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Taxi", + "blanks": [ + { + "placeholder": "taxi", + "correct": [ + "taxi" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Aeropuerto", + "blanks": [ + { + "placeholder": "aeropuerto", + "correct": [ + "aeropuerto" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "autobús", + "tren", + "taxi", + "aeropuerto" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day18_fr.json b/exercises/day18_fr.json new file mode 100644 index 0000000..f28fb9f --- /dev/null +++ b/exercises/day18_fr.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complétez les Phrases de Travel & Directions", + "instructions": "Faites glisser les mots corrects pour compléter chaque phrase.", + "sentences": [ + { + "text": "C'est [près]", + "blanks": [ + { + "placeholder": "près", + "correct": "près" + } + ] + }, + { + "text": "Allez tout [droit]", + "blanks": [ + { + "placeholder": "droit", + "correct": "droit" + } + ] + }, + { + "text": "Tournez à [droite]", + "blanks": [ + { + "placeholder": "droite", + "correct": "droite" + } + ] + }, + { + "text": "C'est [loin]", + "blanks": [ + { + "placeholder": "loin", + "correct": "loin" + } + ] + } + ], + "extraWords": [ + "gauche" + ] + }, + { + "type": "fill-blank", + "title": "Remplissez les Phrases de Transportation", + "instructions": "Complétez ces phrases en remplissant les mots manquants.", + "sentences": [ + { + "text": "Aéroport", + "blanks": [ + { + "placeholder": "aéroport", + "correct": [ + "aéroport" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Bus", + "blanks": [ + { + "placeholder": "bus", + "correct": [ + "bus" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Taxi", + "blanks": [ + { + "placeholder": "taxi", + "correct": [ + "taxi" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Train", + "blanks": [ + { + "placeholder": "train", + "correct": [ + "train" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "aéroport", + "bus", + "taxi", + "train" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day18_pt.json b/exercises/day18_pt.json new file mode 100644 index 0000000..ce3f527 --- /dev/null +++ b/exercises/day18_pt.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete as Frases de Travel & Directions", + "instructions": "Arraste as palavras corretas para completar cada frase.", + "sentences": [ + { + "text": "Vire à [esquerda]", + "blanks": [ + { + "placeholder": "esquerda", + "correct": "esquerda" + } + ] + }, + { + "text": "Vire à [direita]", + "blanks": [ + { + "placeholder": "direita", + "correct": "direita" + } + ] + }, + { + "text": "Vá em [frente]", + "blanks": [ + { + "placeholder": "frente", + "correct": "frente" + } + ] + }, + { + "text": "Está [longe]", + "blanks": [ + { + "placeholder": "longe", + "correct": "longe" + } + ] + } + ], + "extraWords": [ + "perto" + ] + }, + { + "type": "fill-blank", + "title": "Preencha as Frases de Transportation", + "instructions": "Complete essas frases preenchendo as palavras em falta.", + "sentences": [ + { + "text": "Aeroporto", + "blanks": [ + { + "placeholder": "aeroporto", + "correct": [ + "aeroporto" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Ônibus", + "blanks": [ + { + "placeholder": "ônibus", + "correct": [ + "ônibus" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Táxi", + "blanks": [ + { + "placeholder": "táxi", + "correct": [ + "táxi" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Trem", + "blanks": [ + { + "placeholder": "trem", + "correct": [ + "trem" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "aeroporto", + "ônibus", + "táxi", + "trem" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day19_de.json b/exercises/day19_de.json new file mode 100644 index 0000000..ca87d72 --- /dev/null +++ b/exercises/day19_de.json @@ -0,0 +1,109 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Vervollständigen Sie die Travel & Directions-Phrasen", + "instructions": "Ziehen Sie die richtigen Wörter, um jede Phrase zu vervollständigen.", + "sentences": [ + { + "text": "Es ist [nah]", + "blanks": [ + { + "placeholder": "nah", + "correct": "nah" + } + ] + }, + { + "text": "Rechts [abbiegen]", + "blanks": [ + { + "placeholder": "abbiegen", + "correct": "abbiegen" + } + ] + }, + { + "text": "Es ist [weit]", + "blanks": [ + { + "placeholder": "weit", + "correct": "weit" + } + ] + }, + { + "text": "Geradeaus [gehen]", + "blanks": [ + { + "placeholder": "gehen", + "correct": "gehen" + } + ] + } + ], + "extraWords": [] + }, + { + "type": "fill-blank", + "title": "Füllen Sie die Transportation-Phrasen aus", + "instructions": "Vervollständigen Sie diese Phrasen, indem Sie die fehlenden Wörter einfügen.", + "sentences": [ + { + "text": "Taxi", + "blanks": [ + { + "placeholder": "taxi", + "correct": [ + "taxi" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Bus", + "blanks": [ + { + "placeholder": "bus", + "correct": [ + "bus" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Zug", + "blanks": [ + { + "placeholder": "zug", + "correct": [ + "zug" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Flughafen", + "blanks": [ + { + "placeholder": "flughafen", + "correct": [ + "flughafen" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "taxi", + "bus", + "zug", + "flughafen" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day19_en.json b/exercises/day19_en.json new file mode 100644 index 0000000..2c84645 --- /dev/null +++ b/exercises/day19_en.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete the Travel & Directions Phrases", + "instructions": "Drag the correct words to complete each phrase.", + "sentences": [ + { + "text": "It's [far]", + "blanks": [ + { + "placeholder": "far", + "correct": "far" + } + ] + }, + { + "text": "Turn [left]", + "blanks": [ + { + "placeholder": "left", + "correct": "left" + } + ] + }, + { + "text": "Turn [right]", + "blanks": [ + { + "placeholder": "right", + "correct": "right" + } + ] + }, + { + "text": "Go [straight]", + "blanks": [ + { + "placeholder": "straight", + "correct": "straight" + } + ] + } + ], + "extraWords": [ + "near" + ] + }, + { + "type": "fill-blank", + "title": "Fill in Transportation Phrases", + "instructions": "Complete these phrases by filling in the missing words.", + "sentences": [ + { + "text": "Bus", + "blanks": [ + { + "placeholder": "bus", + "correct": [ + "bus" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Airport", + "blanks": [ + { + "placeholder": "airport", + "correct": [ + "airport" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Taxi", + "blanks": [ + { + "placeholder": "taxi", + "correct": [ + "taxi" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Train", + "blanks": [ + { + "placeholder": "train", + "correct": [ + "train" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "bus", + "airport", + "taxi", + "train" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day19_es.json b/exercises/day19_es.json new file mode 100644 index 0000000..5f9e4d0 --- /dev/null +++ b/exercises/day19_es.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Completa las Frases de Travel & Directions", + "instructions": "Arrastra las palabras correctas para completar cada frase.", + "sentences": [ + { + "text": "Está [lejos]", + "blanks": [ + { + "placeholder": "lejos", + "correct": "lejos" + } + ] + }, + { + "text": "Ve [derecho]", + "blanks": [ + { + "placeholder": "derecho", + "correct": "derecho" + } + ] + }, + { + "text": "Gira a la [derecha]", + "blanks": [ + { + "placeholder": "derecha", + "correct": "derecha" + } + ] + }, + { + "text": "Está [cerca]", + "blanks": [ + { + "placeholder": "cerca", + "correct": "cerca" + } + ] + } + ], + "extraWords": [ + "izquierda" + ] + }, + { + "type": "fill-blank", + "title": "Completa las Frases de Transportation", + "instructions": "Completa estas frases llenando las palabras que faltan.", + "sentences": [ + { + "text": "Aeropuerto", + "blanks": [ + { + "placeholder": "aeropuerto", + "correct": [ + "aeropuerto" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Taxi", + "blanks": [ + { + "placeholder": "taxi", + "correct": [ + "taxi" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Autobús", + "blanks": [ + { + "placeholder": "autobús", + "correct": [ + "autobús" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Tren", + "blanks": [ + { + "placeholder": "tren", + "correct": [ + "tren" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "aeropuerto", + "taxi", + "autobús", + "tren" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day19_fr.json b/exercises/day19_fr.json new file mode 100644 index 0000000..8a08fd3 --- /dev/null +++ b/exercises/day19_fr.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complétez les Phrases de Travel & Directions", + "instructions": "Faites glisser les mots corrects pour compléter chaque phrase.", + "sentences": [ + { + "text": "C'est [près]", + "blanks": [ + { + "placeholder": "près", + "correct": "près" + } + ] + }, + { + "text": "Allez tout [droit]", + "blanks": [ + { + "placeholder": "droit", + "correct": "droit" + } + ] + }, + { + "text": "Tournez à [droite]", + "blanks": [ + { + "placeholder": "droite", + "correct": "droite" + } + ] + }, + { + "text": "C'est [loin]", + "blanks": [ + { + "placeholder": "loin", + "correct": "loin" + } + ] + } + ], + "extraWords": [ + "gauche" + ] + }, + { + "type": "fill-blank", + "title": "Remplissez les Phrases de Transportation", + "instructions": "Complétez ces phrases en remplissant les mots manquants.", + "sentences": [ + { + "text": "Taxi", + "blanks": [ + { + "placeholder": "taxi", + "correct": [ + "taxi" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Train", + "blanks": [ + { + "placeholder": "train", + "correct": [ + "train" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Aéroport", + "blanks": [ + { + "placeholder": "aéroport", + "correct": [ + "aéroport" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Bus", + "blanks": [ + { + "placeholder": "bus", + "correct": [ + "bus" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "taxi", + "train", + "aéroport", + "bus" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day19_pt.json b/exercises/day19_pt.json new file mode 100644 index 0000000..bfa6bd8 --- /dev/null +++ b/exercises/day19_pt.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete as Frases de Travel & Directions", + "instructions": "Arraste as palavras corretas para completar cada frase.", + "sentences": [ + { + "text": "Está [perto]", + "blanks": [ + { + "placeholder": "perto", + "correct": "perto" + } + ] + }, + { + "text": "Vá em [frente]", + "blanks": [ + { + "placeholder": "frente", + "correct": "frente" + } + ] + }, + { + "text": "Vire à [direita]", + "blanks": [ + { + "placeholder": "direita", + "correct": "direita" + } + ] + }, + { + "text": "Está [longe]", + "blanks": [ + { + "placeholder": "longe", + "correct": "longe" + } + ] + } + ], + "extraWords": [ + "esquerda" + ] + }, + { + "type": "fill-blank", + "title": "Preencha as Frases de Transportation", + "instructions": "Complete essas frases preenchendo as palavras em falta.", + "sentences": [ + { + "text": "Táxi", + "blanks": [ + { + "placeholder": "táxi", + "correct": [ + "táxi" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Ônibus", + "blanks": [ + { + "placeholder": "ônibus", + "correct": [ + "ônibus" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Aeroporto", + "blanks": [ + { + "placeholder": "aeroporto", + "correct": [ + "aeroporto" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Trem", + "blanks": [ + { + "placeholder": "trem", + "correct": [ + "trem" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "táxi", + "ônibus", + "aeroporto", + "trem" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day1_de.json b/exercises/day1_de.json new file mode 100644 index 0000000..b9d6eb1 --- /dev/null +++ b/exercises/day1_de.json @@ -0,0 +1,182 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Vervollständigen Sie die Basic Greetings & Common Phrases-Phrasen", + "instructions": "Ziehen Sie die richtigen Wörter, um jede Phrase zu vervollständigen.", + "sentences": [ + { + "text": "Danke", + "blanks": [ + { + "placeholder": "danke", + "correct": "danke" + } + ] + }, + { + "text": "Entschuldigung", + "blanks": [ + { + "placeholder": "entschuldigung", + "correct": "entschuldigung" + } + ] + }, + { + "text": "Hallo", + "blanks": [ + { + "placeholder": "hallo", + "correct": "hallo" + } + ] + }, + { + "text": "Bitte", + "blanks": [ + { + "placeholder": "bitte", + "correct": "bitte" + } + ] + } + ], + "extraWords": [ + "dir", + "morgen" + ] + }, + { + "type": "fill-blank", + "title": "Füllen Sie die Numbers-Phrasen aus", + "instructions": "Vervollständigen Sie diese Phrasen, indem Sie die fehlenden Wörter einfügen.", + "sentences": [ + { + "text": "Vier", + "blanks": [ + { + "placeholder": "vier", + "correct": [ + "vier" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Zwei", + "blanks": [ + { + "placeholder": "zwei", + "correct": [ + "zwei" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Eins", + "blanks": [ + { + "placeholder": "eins", + "correct": [ + "eins" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Fünf", + "blanks": [ + { + "placeholder": "fünf", + "correct": [ + "fünf" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "vier", + "zwei", + "eins", + "fünf", + "drei" + ] + }, + { + "type": "matching", + "title": "Ordnen Sie Travel Phrases-Elemente zu", + "instructions": "Ordnen Sie jeden Gegenstand seinem entsprechenden Paar zu.", + "leftTitle": "Phrasen", + "rightTitle": "Antworten", + "leftItems": [ + { + "id": "item1", + "text": "Ich brauche Hilfe", + "type": "text" + }, + { + "id": "item2", + "text": "Wo ist die Toilette?", + "type": "text" + }, + { + "id": "item3", + "text": "Wie viel kostet das?", + "type": "text" + }, + { + "id": "item4", + "text": "Wo ist...?", + "type": "text" + } + ], + "rightItems": [ + { + "id": "response1", + "text": "brauche Hilfe", + "type": "text" + }, + { + "id": "response2", + "text": "Nein", + "type": "text" + }, + { + "id": "response3", + "text": "Ich weiß nicht", + "type": "text" + }, + { + "id": "response4", + "text": "Vielleicht", + "type": "text" + } + ], + "correctPairs": [ + { + "leftId": "item1", + "rightId": "response1" + }, + { + "leftId": "item2", + "rightId": "response2" + }, + { + "leftId": "item3", + "rightId": "response3" + }, + { + "leftId": "item4", + "rightId": "response4" + } + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day1_en.json b/exercises/day1_en.json new file mode 100644 index 0000000..9270f14 --- /dev/null +++ b/exercises/day1_en.json @@ -0,0 +1,179 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete the Travel Phrases Phrases", + "instructions": "Drag the correct words to complete each phrase.", + "sentences": [ + { + "text": "Where is the [bathroom]?", + "blanks": [ + { + "placeholder": "bathroom", + "correct": "bathroom" + } + ] + }, + { + "text": "Where is...?", + "blanks": [ + { + "placeholder": "where", + "correct": "where" + } + ] + }, + { + "text": "I need [help]", + "blanks": [ + { + "placeholder": "help", + "correct": "help" + } + ] + }, + { + "text": "How [much] does it cost?", + "blanks": [ + { + "placeholder": "much", + "correct": "much" + } + ] + } + ], + "extraWords": [] + }, + { + "type": "fill-blank", + "title": "Fill in Numbers Phrases", + "instructions": "Complete these phrases by filling in the missing words.", + "sentences": [ + { + "text": "Two", + "blanks": [ + { + "placeholder": "two", + "correct": [ + "two" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Three", + "blanks": [ + { + "placeholder": "three", + "correct": [ + "three" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "One", + "blanks": [ + { + "placeholder": "one", + "correct": [ + "one" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Five", + "blanks": [ + { + "placeholder": "five", + "correct": [ + "five" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "two", + "three", + "one", + "five", + "four" + ] + }, + { + "type": "matching", + "title": "Match Basic Greetings & Common Phrases Items", + "instructions": "Match each item with its appropriate pair.", + "leftTitle": "Phrases", + "rightTitle": "Responses", + "leftItems": [ + { + "id": "item1", + "text": "Excuse me", + "type": "text" + }, + { + "id": "item2", + "text": "Please", + "type": "text" + }, + { + "id": "item3", + "text": "How are you?", + "type": "text" + }, + { + "id": "item4", + "text": "Thank you", + "type": "text" + } + ], + "rightItems": [ + { + "id": "response1", + "text": "me", + "type": "text" + }, + { + "id": "response2", + "text": "Please", + "type": "text" + }, + { + "id": "response3", + "text": "I don't know", + "type": "text" + }, + { + "id": "response4", + "text": "you", + "type": "text" + } + ], + "correctPairs": [ + { + "leftId": "item1", + "rightId": "response1" + }, + { + "leftId": "item2", + "rightId": "response2" + }, + { + "leftId": "item3", + "rightId": "response3" + }, + { + "leftId": "item4", + "rightId": "response4" + } + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day1_es.json b/exercises/day1_es.json new file mode 100644 index 0000000..998f026 --- /dev/null +++ b/exercises/day1_es.json @@ -0,0 +1,180 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Completa las Frases de Numbers", + "instructions": "Arrastra las palabras correctas para completar cada frase.", + "sentences": [ + { + "text": "Dos", + "blanks": [ + { + "placeholder": "dos", + "correct": "dos" + } + ] + }, + { + "text": "Cinco", + "blanks": [ + { + "placeholder": "cinco", + "correct": "cinco" + } + ] + }, + { + "text": "Cuatro", + "blanks": [ + { + "placeholder": "cuatro", + "correct": "cuatro" + } + ] + }, + { + "text": "Uno", + "blanks": [ + { + "placeholder": "uno", + "correct": "uno" + } + ] + } + ], + "extraWords": [ + "tres" + ] + }, + { + "type": "fill-blank", + "title": "Completa las Frases de Travel Phrases", + "instructions": "Completa estas frases llenando las palabras que faltan.", + "sentences": [ + { + "text": "¿Cuánto [cuesta]?", + "blanks": [ + { + "placeholder": "cuesta", + "correct": [ + "cuesta" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Necesito [ayuda]", + "blanks": [ + { + "placeholder": "ayuda", + "correct": [ + "ayuda" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "¿Dónde está el [baño]?", + "blanks": [ + { + "placeholder": "baño", + "correct": [ + "baño" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "¿Dónde está...?", + "blanks": [ + { + "placeholder": "dónde", + "correct": [ + "dónde" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "cuesta", + "ayuda", + "baño", + "dónde" + ] + }, + { + "type": "matching", + "title": "Relaciona Elementos de Basic Greetings & Common Phrases", + "instructions": "Relaciona cada elemento con su pareja apropiada.", + "leftTitle": "Frases", + "rightTitle": "Respuestas", + "leftItems": [ + { + "id": "item1", + "text": "Hola", + "type": "text" + }, + { + "id": "item2", + "text": "Por favor", + "type": "text" + }, + { + "id": "item3", + "text": "Disculpe", + "type": "text" + }, + { + "id": "item4", + "text": "¿Cómo estás?", + "type": "text" + } + ], + "rightItems": [ + { + "id": "response1", + "text": "Hola", + "type": "text" + }, + { + "id": "response2", + "text": "favor", + "type": "text" + }, + { + "id": "response3", + "text": "Disculpe", + "type": "text" + }, + { + "id": "response4", + "text": "Tal vez", + "type": "text" + } + ], + "correctPairs": [ + { + "leftId": "item1", + "rightId": "response1" + }, + { + "leftId": "item2", + "rightId": "response2" + }, + { + "leftId": "item3", + "rightId": "response3" + }, + { + "leftId": "item4", + "rightId": "response4" + } + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day1_fr.json b/exercises/day1_fr.json new file mode 100644 index 0000000..3f81005 --- /dev/null +++ b/exercises/day1_fr.json @@ -0,0 +1,179 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complétez les Phrases de Travel Phrases", + "instructions": "Faites glisser les mots corrects pour compléter chaque phrase.", + "sentences": [ + { + "text": "Où [est]... ?", + "blanks": [ + { + "placeholder": "est", + "correct": "est" + } + ] + }, + { + "text": "J'ai besoin d'[aide]", + "blanks": [ + { + "placeholder": "aide", + "correct": "aide" + } + ] + }, + { + "text": "Combien ça [coûte] ?", + "blanks": [ + { + "placeholder": "coûte", + "correct": "coûte" + } + ] + }, + { + "text": "Où sont [les] toilettes ?", + "blanks": [ + { + "placeholder": "les", + "correct": "les" + } + ] + } + ], + "extraWords": [] + }, + { + "type": "fill-blank", + "title": "Remplissez les Phrases de Numbers", + "instructions": "Complétez ces phrases en remplissant les mots manquants.", + "sentences": [ + { + "text": "Cinq", + "blanks": [ + { + "placeholder": "cinq", + "correct": [ + "cinq" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Quatre", + "blanks": [ + { + "placeholder": "quatre", + "correct": [ + "quatre" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Un", + "blanks": [ + { + "placeholder": "un", + "correct": [ + "un" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Deux", + "blanks": [ + { + "placeholder": "deux", + "correct": [ + "deux" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "cinq", + "quatre", + "un", + "deux", + "trois" + ] + }, + { + "type": "matching", + "title": "Associez les Éléments de Basic Greetings & Common Phrases", + "instructions": "Associez chaque élément à sa paire appropriée.", + "leftTitle": "Phrases", + "rightTitle": "Réponses", + "leftItems": [ + { + "id": "item1", + "text": "S'il vous plaît", + "type": "text" + }, + { + "id": "item2", + "text": "Merci", + "type": "text" + }, + { + "id": "item3", + "text": "Bonjour", + "type": "text" + }, + { + "id": "item4", + "text": "Comment ça va ?", + "type": "text" + } + ], + "rightItems": [ + { + "id": "response1", + "text": "vous plaît", + "type": "text" + }, + { + "id": "response2", + "text": "Merci", + "type": "text" + }, + { + "id": "response3", + "text": "Bonjour", + "type": "text" + }, + { + "id": "response4", + "text": "Peut-être", + "type": "text" + } + ], + "correctPairs": [ + { + "leftId": "item1", + "rightId": "response1" + }, + { + "leftId": "item2", + "rightId": "response2" + }, + { + "leftId": "item3", + "rightId": "response3" + }, + { + "leftId": "item4", + "rightId": "response4" + } + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day1_pt.json b/exercises/day1_pt.json new file mode 100644 index 0000000..acbbd56 --- /dev/null +++ b/exercises/day1_pt.json @@ -0,0 +1,179 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete as Frases de Travel Phrases", + "instructions": "Arraste as palavras corretas para completar cada frase.", + "sentences": [ + { + "text": "Onde [fica]...?", + "blanks": [ + { + "placeholder": "fica", + "correct": "fica" + } + ] + }, + { + "text": "Preciso de [ajuda]", + "blanks": [ + { + "placeholder": "ajuda", + "correct": "ajuda" + } + ] + }, + { + "text": "Quanto [custa]?", + "blanks": [ + { + "placeholder": "custa", + "correct": "custa" + } + ] + }, + { + "text": "Onde [fica] o banheiro?", + "blanks": [ + { + "placeholder": "fica", + "correct": "fica" + } + ] + } + ], + "extraWords": [] + }, + { + "type": "fill-blank", + "title": "Preencha as Frases de Numbers", + "instructions": "Complete essas frases preenchendo as palavras em falta.", + "sentences": [ + { + "text": "Três", + "blanks": [ + { + "placeholder": "três", + "correct": [ + "três" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Dois", + "blanks": [ + { + "placeholder": "dois", + "correct": [ + "dois" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Quatro", + "blanks": [ + { + "placeholder": "quatro", + "correct": [ + "quatro" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Um", + "blanks": [ + { + "placeholder": "um", + "correct": [ + "um" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "três", + "dois", + "quatro", + "um", + "cinco" + ] + }, + { + "type": "matching", + "title": "Combine Itens de Basic Greetings & Common Phrases", + "instructions": "Combine cada item com seu par apropriado.", + "leftTitle": "Frases", + "rightTitle": "Respostas", + "leftItems": [ + { + "id": "item1", + "text": "Com licença", + "type": "text" + }, + { + "id": "item2", + "text": "Olá", + "type": "text" + }, + { + "id": "item3", + "text": "Bom dia", + "type": "text" + }, + { + "id": "item4", + "text": "Por favor", + "type": "text" + } + ], + "rightItems": [ + { + "id": "response1", + "text": "licença", + "type": "text" + }, + { + "id": "response2", + "text": "Olá", + "type": "text" + }, + { + "id": "response3", + "text": "dia", + "type": "text" + }, + { + "id": "response4", + "text": "favor", + "type": "text" + } + ], + "correctPairs": [ + { + "leftId": "item1", + "rightId": "response1" + }, + { + "leftId": "item2", + "rightId": "response2" + }, + { + "leftId": "item3", + "rightId": "response3" + }, + { + "leftId": "item4", + "rightId": "response4" + } + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day20_de.json b/exercises/day20_de.json new file mode 100644 index 0000000..29e8451 --- /dev/null +++ b/exercises/day20_de.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Vervollständigen Sie die Travel & Directions-Phrasen", + "instructions": "Ziehen Sie die richtigen Wörter, um jede Phrase zu vervollständigen.", + "sentences": [ + { + "text": "Geradeaus [gehen]", + "blanks": [ + { + "placeholder": "gehen", + "correct": "gehen" + } + ] + }, + { + "text": "Rechts [abbiegen]", + "blanks": [ + { + "placeholder": "abbiegen", + "correct": "abbiegen" + } + ] + }, + { + "text": "Links [abbiegen]", + "blanks": [ + { + "placeholder": "abbiegen", + "correct": "abbiegen" + } + ] + }, + { + "text": "Es ist [weit]", + "blanks": [ + { + "placeholder": "weit", + "correct": "weit" + } + ] + } + ], + "extraWords": [ + "nah" + ] + }, + { + "type": "fill-blank", + "title": "Füllen Sie die Transportation-Phrasen aus", + "instructions": "Vervollständigen Sie diese Phrasen, indem Sie die fehlenden Wörter einfügen.", + "sentences": [ + { + "text": "Taxi", + "blanks": [ + { + "placeholder": "taxi", + "correct": [ + "taxi" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Zug", + "blanks": [ + { + "placeholder": "zug", + "correct": [ + "zug" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Flughafen", + "blanks": [ + { + "placeholder": "flughafen", + "correct": [ + "flughafen" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Bus", + "blanks": [ + { + "placeholder": "bus", + "correct": [ + "bus" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "taxi", + "zug", + "flughafen", + "bus" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day20_en.json b/exercises/day20_en.json new file mode 100644 index 0000000..9be69a6 --- /dev/null +++ b/exercises/day20_en.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete the Travel & Directions Phrases", + "instructions": "Drag the correct words to complete each phrase.", + "sentences": [ + { + "text": "Go [straight]", + "blanks": [ + { + "placeholder": "straight", + "correct": "straight" + } + ] + }, + { + "text": "It's [near]", + "blanks": [ + { + "placeholder": "near", + "correct": "near" + } + ] + }, + { + "text": "It's [far]", + "blanks": [ + { + "placeholder": "far", + "correct": "far" + } + ] + }, + { + "text": "Turn [left]", + "blanks": [ + { + "placeholder": "left", + "correct": "left" + } + ] + } + ], + "extraWords": [ + "right" + ] + }, + { + "type": "fill-blank", + "title": "Fill in Transportation Phrases", + "instructions": "Complete these phrases by filling in the missing words.", + "sentences": [ + { + "text": "Train", + "blanks": [ + { + "placeholder": "train", + "correct": [ + "train" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Airport", + "blanks": [ + { + "placeholder": "airport", + "correct": [ + "airport" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Bus", + "blanks": [ + { + "placeholder": "bus", + "correct": [ + "bus" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Taxi", + "blanks": [ + { + "placeholder": "taxi", + "correct": [ + "taxi" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "train", + "airport", + "bus", + "taxi" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day20_es.json b/exercises/day20_es.json new file mode 100644 index 0000000..9225288 --- /dev/null +++ b/exercises/day20_es.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Completa las Frases de Travel & Directions", + "instructions": "Arrastra las palabras correctas para completar cada frase.", + "sentences": [ + { + "text": "Ve [derecho]", + "blanks": [ + { + "placeholder": "derecho", + "correct": "derecho" + } + ] + }, + { + "text": "Está [cerca]", + "blanks": [ + { + "placeholder": "cerca", + "correct": "cerca" + } + ] + }, + { + "text": "Gira a la [izquierda]", + "blanks": [ + { + "placeholder": "izquierda", + "correct": "izquierda" + } + ] + }, + { + "text": "Gira a la [derecha]", + "blanks": [ + { + "placeholder": "derecha", + "correct": "derecha" + } + ] + } + ], + "extraWords": [ + "lejos" + ] + }, + { + "type": "fill-blank", + "title": "Completa las Frases de Transportation", + "instructions": "Completa estas frases llenando las palabras que faltan.", + "sentences": [ + { + "text": "Aeropuerto", + "blanks": [ + { + "placeholder": "aeropuerto", + "correct": [ + "aeropuerto" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Taxi", + "blanks": [ + { + "placeholder": "taxi", + "correct": [ + "taxi" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Tren", + "blanks": [ + { + "placeholder": "tren", + "correct": [ + "tren" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Autobús", + "blanks": [ + { + "placeholder": "autobús", + "correct": [ + "autobús" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "aeropuerto", + "taxi", + "tren", + "autobús" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day20_fr.json b/exercises/day20_fr.json new file mode 100644 index 0000000..fd8bd4e --- /dev/null +++ b/exercises/day20_fr.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complétez les Phrases de Travel & Directions", + "instructions": "Faites glisser les mots corrects pour compléter chaque phrase.", + "sentences": [ + { + "text": "C'est [près]", + "blanks": [ + { + "placeholder": "près", + "correct": "près" + } + ] + }, + { + "text": "Allez tout [droit]", + "blanks": [ + { + "placeholder": "droit", + "correct": "droit" + } + ] + }, + { + "text": "C'est [loin]", + "blanks": [ + { + "placeholder": "loin", + "correct": "loin" + } + ] + }, + { + "text": "Tournez à [droite]", + "blanks": [ + { + "placeholder": "droite", + "correct": "droite" + } + ] + } + ], + "extraWords": [ + "gauche" + ] + }, + { + "type": "fill-blank", + "title": "Remplissez les Phrases de Transportation", + "instructions": "Complétez ces phrases en remplissant les mots manquants.", + "sentences": [ + { + "text": "Aéroport", + "blanks": [ + { + "placeholder": "aéroport", + "correct": [ + "aéroport" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Bus", + "blanks": [ + { + "placeholder": "bus", + "correct": [ + "bus" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Taxi", + "blanks": [ + { + "placeholder": "taxi", + "correct": [ + "taxi" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Train", + "blanks": [ + { + "placeholder": "train", + "correct": [ + "train" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "aéroport", + "bus", + "taxi", + "train" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day20_pt.json b/exercises/day20_pt.json new file mode 100644 index 0000000..90c91a1 --- /dev/null +++ b/exercises/day20_pt.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete as Frases de Travel & Directions", + "instructions": "Arraste as palavras corretas para completar cada frase.", + "sentences": [ + { + "text": "Está [longe]", + "blanks": [ + { + "placeholder": "longe", + "correct": "longe" + } + ] + }, + { + "text": "Está [perto]", + "blanks": [ + { + "placeholder": "perto", + "correct": "perto" + } + ] + }, + { + "text": "Vire à [direita]", + "blanks": [ + { + "placeholder": "direita", + "correct": "direita" + } + ] + }, + { + "text": "Vire à [esquerda]", + "blanks": [ + { + "placeholder": "esquerda", + "correct": "esquerda" + } + ] + } + ], + "extraWords": [ + "frente" + ] + }, + { + "type": "fill-blank", + "title": "Preencha as Frases de Transportation", + "instructions": "Complete essas frases preenchendo as palavras em falta.", + "sentences": [ + { + "text": "Trem", + "blanks": [ + { + "placeholder": "trem", + "correct": [ + "trem" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Ônibus", + "blanks": [ + { + "placeholder": "ônibus", + "correct": [ + "ônibus" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Aeroporto", + "blanks": [ + { + "placeholder": "aeroporto", + "correct": [ + "aeroporto" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Táxi", + "blanks": [ + { + "placeholder": "táxi", + "correct": [ + "táxi" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "trem", + "ônibus", + "aeroporto", + "táxi" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day21_de.json b/exercises/day21_de.json new file mode 100644 index 0000000..fcd171d --- /dev/null +++ b/exercises/day21_de.json @@ -0,0 +1,109 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Vervollständigen Sie die Food & Dining-Phrasen", + "instructions": "Ziehen Sie die richtigen Wörter, um jede Phrase zu vervollständigen.", + "sentences": [ + { + "text": "Das ist [köstlich]", + "blanks": [ + { + "placeholder": "köstlich", + "correct": "köstlich" + } + ] + }, + { + "text": "Ich [habe] Durst", + "blanks": [ + { + "placeholder": "habe", + "correct": "habe" + } + ] + }, + { + "text": "Ich [habe] Hunger", + "blanks": [ + { + "placeholder": "habe", + "correct": "habe" + } + ] + }, + { + "text": "Die Rechnung, [bitte]", + "blanks": [ + { + "placeholder": "bitte", + "correct": "bitte" + } + ] + } + ], + "extraWords": [] + }, + { + "type": "fill-blank", + "title": "Füllen Sie die Restaurants-Phrasen aus", + "instructions": "Vervollständigen Sie diese Phrasen, indem Sie die fehlenden Wörter einfügen.", + "sentences": [ + { + "text": "Wasser", + "blanks": [ + { + "placeholder": "wasser", + "correct": [ + "wasser" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Tisch für [zwei]", + "blanks": [ + { + "placeholder": "zwei", + "correct": [ + "zwei" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Ich [hätte] gerne", + "blanks": [ + { + "placeholder": "hätte", + "correct": [ + "hätte" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Kaffee", + "blanks": [ + { + "placeholder": "kaffee", + "correct": [ + "kaffee" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "wasser", + "zwei", + "hätte", + "kaffee" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day21_en.json b/exercises/day21_en.json new file mode 100644 index 0000000..80b8d45 --- /dev/null +++ b/exercises/day21_en.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete the Food & Dining Phrases", + "instructions": "Drag the correct words to complete each phrase.", + "sentences": [ + { + "text": "I am [thirsty]", + "blanks": [ + { + "placeholder": "thirsty", + "correct": "thirsty" + } + ] + }, + { + "text": "I am [hungry]", + "blanks": [ + { + "placeholder": "hungry", + "correct": "hungry" + } + ] + }, + { + "text": "The check, [please]", + "blanks": [ + { + "placeholder": "please", + "correct": "please" + } + ] + }, + { + "text": "The menu, [please]", + "blanks": [ + { + "placeholder": "please", + "correct": "please" + } + ] + } + ], + "extraWords": [ + "delicious" + ] + }, + { + "type": "fill-blank", + "title": "Fill in Restaurants Phrases", + "instructions": "Complete these phrases by filling in the missing words.", + "sentences": [ + { + "text": "I would [like]", + "blanks": [ + { + "placeholder": "like", + "correct": [ + "like" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Water", + "blanks": [ + { + "placeholder": "water", + "correct": [ + "water" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Coffee", + "blanks": [ + { + "placeholder": "coffee", + "correct": [ + "coffee" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Table for [two]", + "blanks": [ + { + "placeholder": "two", + "correct": [ + "two" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "like", + "water", + "coffee", + "two" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day21_es.json b/exercises/day21_es.json new file mode 100644 index 0000000..d7dee65 --- /dev/null +++ b/exercises/day21_es.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Completa las Frases de Food & Dining", + "instructions": "Arrastra las palabras correctas para completar cada frase.", + "sentences": [ + { + "text": "El menú, por [favor]", + "blanks": [ + { + "placeholder": "favor", + "correct": "favor" + } + ] + }, + { + "text": "Esto está [delicioso]", + "blanks": [ + { + "placeholder": "delicioso", + "correct": "delicioso" + } + ] + }, + { + "text": "Tengo [hambre]", + "blanks": [ + { + "placeholder": "hambre", + "correct": "hambre" + } + ] + }, + { + "text": "La cuenta, por [favor]", + "blanks": [ + { + "placeholder": "favor", + "correct": "favor" + } + ] + } + ], + "extraWords": [ + "sed" + ] + }, + { + "type": "fill-blank", + "title": "Completa las Frases de Restaurants", + "instructions": "Completa estas frases llenando las palabras que faltan.", + "sentences": [ + { + "text": "Mesa para dos", + "blanks": [ + { + "placeholder": "mesa", + "correct": [ + "mesa" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Agua", + "blanks": [ + { + "placeholder": "agua", + "correct": [ + "agua" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Café", + "blanks": [ + { + "placeholder": "café", + "correct": [ + "café" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Me [gustaría]", + "blanks": [ + { + "placeholder": "gustaría", + "correct": [ + "gustaría" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "mesa", + "agua", + "café", + "gustaría" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day21_fr.json b/exercises/day21_fr.json new file mode 100644 index 0000000..2cee8e2 --- /dev/null +++ b/exercises/day21_fr.json @@ -0,0 +1,109 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complétez les Phrases de Food & Dining", + "instructions": "Faites glisser les mots corrects pour compléter chaque phrase.", + "sentences": [ + { + "text": "J'ai [faim]", + "blanks": [ + { + "placeholder": "faim", + "correct": "faim" + } + ] + }, + { + "text": "Le menu, s'il [vous] plaît", + "blanks": [ + { + "placeholder": "vous", + "correct": "vous" + } + ] + }, + { + "text": "J'ai [soif]", + "blanks": [ + { + "placeholder": "soif", + "correct": "soif" + } + ] + }, + { + "text": "C'est [délicieux]", + "blanks": [ + { + "placeholder": "délicieux", + "correct": "délicieux" + } + ] + } + ], + "extraWords": [] + }, + { + "type": "fill-blank", + "title": "Remplissez les Phrases de Restaurants", + "instructions": "Complétez ces phrases en remplissant les mots manquants.", + "sentences": [ + { + "text": "Je [voudrais]", + "blanks": [ + { + "placeholder": "voudrais", + "correct": [ + "voudrais" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Café", + "blanks": [ + { + "placeholder": "café", + "correct": [ + "café" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Table pour [deux]", + "blanks": [ + { + "placeholder": "deux", + "correct": [ + "deux" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Eau", + "blanks": [ + { + "placeholder": "eau", + "correct": [ + "eau" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "voudrais", + "café", + "deux", + "eau" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day21_pt.json b/exercises/day21_pt.json new file mode 100644 index 0000000..466040d --- /dev/null +++ b/exercises/day21_pt.json @@ -0,0 +1,109 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete as Frases de Food & Dining", + "instructions": "Arraste as palavras corretas para completar cada frase.", + "sentences": [ + { + "text": "Isso está [delicioso]", + "blanks": [ + { + "placeholder": "delicioso", + "correct": "delicioso" + } + ] + }, + { + "text": "A conta, por [favor]", + "blanks": [ + { + "placeholder": "favor", + "correct": "favor" + } + ] + }, + { + "text": "Estou com [sede]", + "blanks": [ + { + "placeholder": "sede", + "correct": "sede" + } + ] + }, + { + "text": "Estou com [fome]", + "blanks": [ + { + "placeholder": "fome", + "correct": "fome" + } + ] + } + ], + "extraWords": [] + }, + { + "type": "fill-blank", + "title": "Preencha as Frases de Restaurants", + "instructions": "Complete essas frases preenchendo as palavras em falta.", + "sentences": [ + { + "text": "Café", + "blanks": [ + { + "placeholder": "café", + "correct": [ + "café" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Eu [gostaria]", + "blanks": [ + { + "placeholder": "gostaria", + "correct": [ + "gostaria" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Mesa para [dois]", + "blanks": [ + { + "placeholder": "dois", + "correct": [ + "dois" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Água", + "blanks": [ + { + "placeholder": "água", + "correct": [ + "água" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "café", + "gostaria", + "dois", + "água" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day22_de.json b/exercises/day22_de.json new file mode 100644 index 0000000..4ccea81 --- /dev/null +++ b/exercises/day22_de.json @@ -0,0 +1,109 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Vervollständigen Sie die Food & Dining-Phrasen", + "instructions": "Ziehen Sie die richtigen Wörter, um jede Phrase zu vervollständigen.", + "sentences": [ + { + "text": "Die Speisekarte, [bitte]", + "blanks": [ + { + "placeholder": "bitte", + "correct": "bitte" + } + ] + }, + { + "text": "Das ist [köstlich]", + "blanks": [ + { + "placeholder": "köstlich", + "correct": "köstlich" + } + ] + }, + { + "text": "Ich [habe] Hunger", + "blanks": [ + { + "placeholder": "habe", + "correct": "habe" + } + ] + }, + { + "text": "Die Rechnung, [bitte]", + "blanks": [ + { + "placeholder": "bitte", + "correct": "bitte" + } + ] + } + ], + "extraWords": [] + }, + { + "type": "fill-blank", + "title": "Füllen Sie die Restaurants-Phrasen aus", + "instructions": "Vervollständigen Sie diese Phrasen, indem Sie die fehlenden Wörter einfügen.", + "sentences": [ + { + "text": "Kaffee", + "blanks": [ + { + "placeholder": "kaffee", + "correct": [ + "kaffee" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Tisch für [zwei]", + "blanks": [ + { + "placeholder": "zwei", + "correct": [ + "zwei" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Ich [hätte] gerne", + "blanks": [ + { + "placeholder": "hätte", + "correct": [ + "hätte" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Wasser", + "blanks": [ + { + "placeholder": "wasser", + "correct": [ + "wasser" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "kaffee", + "zwei", + "hätte", + "wasser" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day22_en.json b/exercises/day22_en.json new file mode 100644 index 0000000..a650fb3 --- /dev/null +++ b/exercises/day22_en.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete the Food & Dining Phrases", + "instructions": "Drag the correct words to complete each phrase.", + "sentences": [ + { + "text": "I am [hungry]", + "blanks": [ + { + "placeholder": "hungry", + "correct": "hungry" + } + ] + }, + { + "text": "The check, [please]", + "blanks": [ + { + "placeholder": "please", + "correct": "please" + } + ] + }, + { + "text": "I am [thirsty]", + "blanks": [ + { + "placeholder": "thirsty", + "correct": "thirsty" + } + ] + }, + { + "text": "The menu, [please]", + "blanks": [ + { + "placeholder": "please", + "correct": "please" + } + ] + } + ], + "extraWords": [ + "delicious" + ] + }, + { + "type": "fill-blank", + "title": "Fill in Restaurants Phrases", + "instructions": "Complete these phrases by filling in the missing words.", + "sentences": [ + { + "text": "Coffee", + "blanks": [ + { + "placeholder": "coffee", + "correct": [ + "coffee" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Water", + "blanks": [ + { + "placeholder": "water", + "correct": [ + "water" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "I would [like]", + "blanks": [ + { + "placeholder": "like", + "correct": [ + "like" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Table for [two]", + "blanks": [ + { + "placeholder": "two", + "correct": [ + "two" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "coffee", + "water", + "like", + "two" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day22_es.json b/exercises/day22_es.json new file mode 100644 index 0000000..32f1eb2 --- /dev/null +++ b/exercises/day22_es.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Completa las Frases de Food & Dining", + "instructions": "Arrastra las palabras correctas para completar cada frase.", + "sentences": [ + { + "text": "Tengo [sed]", + "blanks": [ + { + "placeholder": "sed", + "correct": "sed" + } + ] + }, + { + "text": "La cuenta, por [favor]", + "blanks": [ + { + "placeholder": "favor", + "correct": "favor" + } + ] + }, + { + "text": "El menú, por [favor]", + "blanks": [ + { + "placeholder": "favor", + "correct": "favor" + } + ] + }, + { + "text": "Esto está [delicioso]", + "blanks": [ + { + "placeholder": "delicioso", + "correct": "delicioso" + } + ] + } + ], + "extraWords": [ + "hambre" + ] + }, + { + "type": "fill-blank", + "title": "Completa las Frases de Restaurants", + "instructions": "Completa estas frases llenando las palabras que faltan.", + "sentences": [ + { + "text": "Me [gustaría]", + "blanks": [ + { + "placeholder": "gustaría", + "correct": [ + "gustaría" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Mesa para dos", + "blanks": [ + { + "placeholder": "mesa", + "correct": [ + "mesa" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Agua", + "blanks": [ + { + "placeholder": "agua", + "correct": [ + "agua" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Café", + "blanks": [ + { + "placeholder": "café", + "correct": [ + "café" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "gustaría", + "mesa", + "agua", + "café" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day22_fr.json b/exercises/day22_fr.json new file mode 100644 index 0000000..0b1d619 --- /dev/null +++ b/exercises/day22_fr.json @@ -0,0 +1,109 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complétez les Phrases de Food & Dining", + "instructions": "Faites glisser les mots corrects pour compléter chaque phrase.", + "sentences": [ + { + "text": "Le menu, s'il [vous] plaît", + "blanks": [ + { + "placeholder": "vous", + "correct": "vous" + } + ] + }, + { + "text": "J'ai [soif]", + "blanks": [ + { + "placeholder": "soif", + "correct": "soif" + } + ] + }, + { + "text": "J'ai [faim]", + "blanks": [ + { + "placeholder": "faim", + "correct": "faim" + } + ] + }, + { + "text": "C'est [délicieux]", + "blanks": [ + { + "placeholder": "délicieux", + "correct": "délicieux" + } + ] + } + ], + "extraWords": [] + }, + { + "type": "fill-blank", + "title": "Remplissez les Phrases de Restaurants", + "instructions": "Complétez ces phrases en remplissant les mots manquants.", + "sentences": [ + { + "text": "Je [voudrais]", + "blanks": [ + { + "placeholder": "voudrais", + "correct": [ + "voudrais" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Table pour [deux]", + "blanks": [ + { + "placeholder": "deux", + "correct": [ + "deux" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Eau", + "blanks": [ + { + "placeholder": "eau", + "correct": [ + "eau" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Café", + "blanks": [ + { + "placeholder": "café", + "correct": [ + "café" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "voudrais", + "deux", + "eau", + "café" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day22_pt.json b/exercises/day22_pt.json new file mode 100644 index 0000000..3413df9 --- /dev/null +++ b/exercises/day22_pt.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete as Frases de Food & Dining", + "instructions": "Arraste as palavras corretas para completar cada frase.", + "sentences": [ + { + "text": "A conta, por [favor]", + "blanks": [ + { + "placeholder": "favor", + "correct": "favor" + } + ] + }, + { + "text": "Estou com [sede]", + "blanks": [ + { + "placeholder": "sede", + "correct": "sede" + } + ] + }, + { + "text": "O cardápio, por [favor]", + "blanks": [ + { + "placeholder": "favor", + "correct": "favor" + } + ] + }, + { + "text": "Estou com [fome]", + "blanks": [ + { + "placeholder": "fome", + "correct": "fome" + } + ] + } + ], + "extraWords": [ + "delicioso" + ] + }, + { + "type": "fill-blank", + "title": "Preencha as Frases de Restaurants", + "instructions": "Complete essas frases preenchendo as palavras em falta.", + "sentences": [ + { + "text": "Café", + "blanks": [ + { + "placeholder": "café", + "correct": [ + "café" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Água", + "blanks": [ + { + "placeholder": "água", + "correct": [ + "água" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Eu [gostaria]", + "blanks": [ + { + "placeholder": "gostaria", + "correct": [ + "gostaria" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Mesa para [dois]", + "blanks": [ + { + "placeholder": "dois", + "correct": [ + "dois" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "café", + "água", + "gostaria", + "dois" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day23_de.json b/exercises/day23_de.json new file mode 100644 index 0000000..7dd6cc2 --- /dev/null +++ b/exercises/day23_de.json @@ -0,0 +1,109 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Vervollständigen Sie die Food & Dining-Phrasen", + "instructions": "Ziehen Sie die richtigen Wörter, um jede Phrase zu vervollständigen.", + "sentences": [ + { + "text": "Ich [habe] Hunger", + "blanks": [ + { + "placeholder": "habe", + "correct": "habe" + } + ] + }, + { + "text": "Die Speisekarte, [bitte]", + "blanks": [ + { + "placeholder": "bitte", + "correct": "bitte" + } + ] + }, + { + "text": "Ich [habe] Durst", + "blanks": [ + { + "placeholder": "habe", + "correct": "habe" + } + ] + }, + { + "text": "Das ist [köstlich]", + "blanks": [ + { + "placeholder": "köstlich", + "correct": "köstlich" + } + ] + } + ], + "extraWords": [] + }, + { + "type": "fill-blank", + "title": "Füllen Sie die Restaurants-Phrasen aus", + "instructions": "Vervollständigen Sie diese Phrasen, indem Sie die fehlenden Wörter einfügen.", + "sentences": [ + { + "text": "Kaffee", + "blanks": [ + { + "placeholder": "kaffee", + "correct": [ + "kaffee" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Tisch für [zwei]", + "blanks": [ + { + "placeholder": "zwei", + "correct": [ + "zwei" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Ich [hätte] gerne", + "blanks": [ + { + "placeholder": "hätte", + "correct": [ + "hätte" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Wasser", + "blanks": [ + { + "placeholder": "wasser", + "correct": [ + "wasser" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "kaffee", + "zwei", + "hätte", + "wasser" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day23_en.json b/exercises/day23_en.json new file mode 100644 index 0000000..ded19b3 --- /dev/null +++ b/exercises/day23_en.json @@ -0,0 +1,109 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete the Food & Dining Phrases", + "instructions": "Drag the correct words to complete each phrase.", + "sentences": [ + { + "text": "The check, [please]", + "blanks": [ + { + "placeholder": "please", + "correct": "please" + } + ] + }, + { + "text": "I am [thirsty]", + "blanks": [ + { + "placeholder": "thirsty", + "correct": "thirsty" + } + ] + }, + { + "text": "This is [delicious]", + "blanks": [ + { + "placeholder": "delicious", + "correct": "delicious" + } + ] + }, + { + "text": "I am [hungry]", + "blanks": [ + { + "placeholder": "hungry", + "correct": "hungry" + } + ] + } + ], + "extraWords": [] + }, + { + "type": "fill-blank", + "title": "Fill in Restaurants Phrases", + "instructions": "Complete these phrases by filling in the missing words.", + "sentences": [ + { + "text": "Coffee", + "blanks": [ + { + "placeholder": "coffee", + "correct": [ + "coffee" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "I would [like]", + "blanks": [ + { + "placeholder": "like", + "correct": [ + "like" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Table for [two]", + "blanks": [ + { + "placeholder": "two", + "correct": [ + "two" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Water", + "blanks": [ + { + "placeholder": "water", + "correct": [ + "water" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "coffee", + "like", + "two", + "water" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day23_es.json b/exercises/day23_es.json new file mode 100644 index 0000000..837e7d5 --- /dev/null +++ b/exercises/day23_es.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Completa las Frases de Food & Dining", + "instructions": "Arrastra las palabras correctas para completar cada frase.", + "sentences": [ + { + "text": "La cuenta, por [favor]", + "blanks": [ + { + "placeholder": "favor", + "correct": "favor" + } + ] + }, + { + "text": "El menú, por [favor]", + "blanks": [ + { + "placeholder": "favor", + "correct": "favor" + } + ] + }, + { + "text": "Tengo [hambre]", + "blanks": [ + { + "placeholder": "hambre", + "correct": "hambre" + } + ] + }, + { + "text": "Esto está [delicioso]", + "blanks": [ + { + "placeholder": "delicioso", + "correct": "delicioso" + } + ] + } + ], + "extraWords": [ + "sed" + ] + }, + { + "type": "fill-blank", + "title": "Completa las Frases de Restaurants", + "instructions": "Completa estas frases llenando las palabras que faltan.", + "sentences": [ + { + "text": "Café", + "blanks": [ + { + "placeholder": "café", + "correct": [ + "café" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Mesa para dos", + "blanks": [ + { + "placeholder": "mesa", + "correct": [ + "mesa" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Agua", + "blanks": [ + { + "placeholder": "agua", + "correct": [ + "agua" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Me [gustaría]", + "blanks": [ + { + "placeholder": "gustaría", + "correct": [ + "gustaría" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "café", + "mesa", + "agua", + "gustaría" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day23_fr.json b/exercises/day23_fr.json new file mode 100644 index 0000000..a6a7472 --- /dev/null +++ b/exercises/day23_fr.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complétez les Phrases de Food & Dining", + "instructions": "Faites glisser les mots corrects pour compléter chaque phrase.", + "sentences": [ + { + "text": "Le menu, s'il [vous] plaît", + "blanks": [ + { + "placeholder": "vous", + "correct": "vous" + } + ] + }, + { + "text": "L'addition, s'il [vous] plaît", + "blanks": [ + { + "placeholder": "vous", + "correct": "vous" + } + ] + }, + { + "text": "C'est [délicieux]", + "blanks": [ + { + "placeholder": "délicieux", + "correct": "délicieux" + } + ] + }, + { + "text": "J'ai [faim]", + "blanks": [ + { + "placeholder": "faim", + "correct": "faim" + } + ] + } + ], + "extraWords": [ + "soif" + ] + }, + { + "type": "fill-blank", + "title": "Remplissez les Phrases de Restaurants", + "instructions": "Complétez ces phrases en remplissant les mots manquants.", + "sentences": [ + { + "text": "Eau", + "blanks": [ + { + "placeholder": "eau", + "correct": [ + "eau" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Je [voudrais]", + "blanks": [ + { + "placeholder": "voudrais", + "correct": [ + "voudrais" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Table pour [deux]", + "blanks": [ + { + "placeholder": "deux", + "correct": [ + "deux" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Café", + "blanks": [ + { + "placeholder": "café", + "correct": [ + "café" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "eau", + "voudrais", + "deux", + "café" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day23_pt.json b/exercises/day23_pt.json new file mode 100644 index 0000000..111b65a --- /dev/null +++ b/exercises/day23_pt.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete as Frases de Food & Dining", + "instructions": "Arraste as palavras corretas para completar cada frase.", + "sentences": [ + { + "text": "Isso está [delicioso]", + "blanks": [ + { + "placeholder": "delicioso", + "correct": "delicioso" + } + ] + }, + { + "text": "Estou com [sede]", + "blanks": [ + { + "placeholder": "sede", + "correct": "sede" + } + ] + }, + { + "text": "O cardápio, por [favor]", + "blanks": [ + { + "placeholder": "favor", + "correct": "favor" + } + ] + }, + { + "text": "A conta, por [favor]", + "blanks": [ + { + "placeholder": "favor", + "correct": "favor" + } + ] + } + ], + "extraWords": [ + "fome" + ] + }, + { + "type": "fill-blank", + "title": "Preencha as Frases de Restaurants", + "instructions": "Complete essas frases preenchendo as palavras em falta.", + "sentences": [ + { + "text": "Eu [gostaria]", + "blanks": [ + { + "placeholder": "gostaria", + "correct": [ + "gostaria" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Mesa para [dois]", + "blanks": [ + { + "placeholder": "dois", + "correct": [ + "dois" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Café", + "blanks": [ + { + "placeholder": "café", + "correct": [ + "café" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Água", + "blanks": [ + { + "placeholder": "água", + "correct": [ + "água" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "gostaria", + "dois", + "café", + "água" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day24_de.json b/exercises/day24_de.json new file mode 100644 index 0000000..544677b --- /dev/null +++ b/exercises/day24_de.json @@ -0,0 +1,109 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Vervollständigen Sie die Food & Dining-Phrasen", + "instructions": "Ziehen Sie die richtigen Wörter, um jede Phrase zu vervollständigen.", + "sentences": [ + { + "text": "Das ist [köstlich]", + "blanks": [ + { + "placeholder": "köstlich", + "correct": "köstlich" + } + ] + }, + { + "text": "Die Speisekarte, [bitte]", + "blanks": [ + { + "placeholder": "bitte", + "correct": "bitte" + } + ] + }, + { + "text": "Ich [habe] Hunger", + "blanks": [ + { + "placeholder": "habe", + "correct": "habe" + } + ] + }, + { + "text": "Ich [habe] Durst", + "blanks": [ + { + "placeholder": "habe", + "correct": "habe" + } + ] + } + ], + "extraWords": [] + }, + { + "type": "fill-blank", + "title": "Füllen Sie die Restaurants-Phrasen aus", + "instructions": "Vervollständigen Sie diese Phrasen, indem Sie die fehlenden Wörter einfügen.", + "sentences": [ + { + "text": "Tisch für [zwei]", + "blanks": [ + { + "placeholder": "zwei", + "correct": [ + "zwei" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Kaffee", + "blanks": [ + { + "placeholder": "kaffee", + "correct": [ + "kaffee" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Wasser", + "blanks": [ + { + "placeholder": "wasser", + "correct": [ + "wasser" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Ich [hätte] gerne", + "blanks": [ + { + "placeholder": "hätte", + "correct": [ + "hätte" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "zwei", + "kaffee", + "wasser", + "hätte" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day24_en.json b/exercises/day24_en.json new file mode 100644 index 0000000..b199ade --- /dev/null +++ b/exercises/day24_en.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete the Food & Dining Phrases", + "instructions": "Drag the correct words to complete each phrase.", + "sentences": [ + { + "text": "The menu, [please]", + "blanks": [ + { + "placeholder": "please", + "correct": "please" + } + ] + }, + { + "text": "The check, [please]", + "blanks": [ + { + "placeholder": "please", + "correct": "please" + } + ] + }, + { + "text": "This is [delicious]", + "blanks": [ + { + "placeholder": "delicious", + "correct": "delicious" + } + ] + }, + { + "text": "I am [hungry]", + "blanks": [ + { + "placeholder": "hungry", + "correct": "hungry" + } + ] + } + ], + "extraWords": [ + "thirsty" + ] + }, + { + "type": "fill-blank", + "title": "Fill in Restaurants Phrases", + "instructions": "Complete these phrases by filling in the missing words.", + "sentences": [ + { + "text": "Table for [two]", + "blanks": [ + { + "placeholder": "two", + "correct": [ + "two" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Water", + "blanks": [ + { + "placeholder": "water", + "correct": [ + "water" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Coffee", + "blanks": [ + { + "placeholder": "coffee", + "correct": [ + "coffee" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "I would [like]", + "blanks": [ + { + "placeholder": "like", + "correct": [ + "like" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "two", + "water", + "coffee", + "like" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day24_es.json b/exercises/day24_es.json new file mode 100644 index 0000000..84d55a7 --- /dev/null +++ b/exercises/day24_es.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Completa las Frases de Food & Dining", + "instructions": "Arrastra las palabras correctas para completar cada frase.", + "sentences": [ + { + "text": "Tengo [sed]", + "blanks": [ + { + "placeholder": "sed", + "correct": "sed" + } + ] + }, + { + "text": "El menú, por [favor]", + "blanks": [ + { + "placeholder": "favor", + "correct": "favor" + } + ] + }, + { + "text": "La cuenta, por [favor]", + "blanks": [ + { + "placeholder": "favor", + "correct": "favor" + } + ] + }, + { + "text": "Esto está [delicioso]", + "blanks": [ + { + "placeholder": "delicioso", + "correct": "delicioso" + } + ] + } + ], + "extraWords": [ + "hambre" + ] + }, + { + "type": "fill-blank", + "title": "Completa las Frases de Restaurants", + "instructions": "Completa estas frases llenando las palabras que faltan.", + "sentences": [ + { + "text": "Mesa para dos", + "blanks": [ + { + "placeholder": "mesa", + "correct": [ + "mesa" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Agua", + "blanks": [ + { + "placeholder": "agua", + "correct": [ + "agua" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Me [gustaría]", + "blanks": [ + { + "placeholder": "gustaría", + "correct": [ + "gustaría" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Café", + "blanks": [ + { + "placeholder": "café", + "correct": [ + "café" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "mesa", + "agua", + "gustaría", + "café" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day24_fr.json b/exercises/day24_fr.json new file mode 100644 index 0000000..d5fbdb7 --- /dev/null +++ b/exercises/day24_fr.json @@ -0,0 +1,109 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complétez les Phrases de Food & Dining", + "instructions": "Faites glisser les mots corrects pour compléter chaque phrase.", + "sentences": [ + { + "text": "C'est [délicieux]", + "blanks": [ + { + "placeholder": "délicieux", + "correct": "délicieux" + } + ] + }, + { + "text": "J'ai [faim]", + "blanks": [ + { + "placeholder": "faim", + "correct": "faim" + } + ] + }, + { + "text": "J'ai [soif]", + "blanks": [ + { + "placeholder": "soif", + "correct": "soif" + } + ] + }, + { + "text": "L'addition, s'il [vous] plaît", + "blanks": [ + { + "placeholder": "vous", + "correct": "vous" + } + ] + } + ], + "extraWords": [] + }, + { + "type": "fill-blank", + "title": "Remplissez les Phrases de Restaurants", + "instructions": "Complétez ces phrases en remplissant les mots manquants.", + "sentences": [ + { + "text": "Table pour [deux]", + "blanks": [ + { + "placeholder": "deux", + "correct": [ + "deux" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Je [voudrais]", + "blanks": [ + { + "placeholder": "voudrais", + "correct": [ + "voudrais" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Eau", + "blanks": [ + { + "placeholder": "eau", + "correct": [ + "eau" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Café", + "blanks": [ + { + "placeholder": "café", + "correct": [ + "café" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "deux", + "voudrais", + "eau", + "café" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day24_pt.json b/exercises/day24_pt.json new file mode 100644 index 0000000..1422883 --- /dev/null +++ b/exercises/day24_pt.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete as Frases de Food & Dining", + "instructions": "Arraste as palavras corretas para completar cada frase.", + "sentences": [ + { + "text": "Isso está [delicioso]", + "blanks": [ + { + "placeholder": "delicioso", + "correct": "delicioso" + } + ] + }, + { + "text": "A conta, por [favor]", + "blanks": [ + { + "placeholder": "favor", + "correct": "favor" + } + ] + }, + { + "text": "Estou com [sede]", + "blanks": [ + { + "placeholder": "sede", + "correct": "sede" + } + ] + }, + { + "text": "O cardápio, por [favor]", + "blanks": [ + { + "placeholder": "favor", + "correct": "favor" + } + ] + } + ], + "extraWords": [ + "fome" + ] + }, + { + "type": "fill-blank", + "title": "Preencha as Frases de Restaurants", + "instructions": "Complete essas frases preenchendo as palavras em falta.", + "sentences": [ + { + "text": "Mesa para [dois]", + "blanks": [ + { + "placeholder": "dois", + "correct": [ + "dois" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Eu [gostaria]", + "blanks": [ + { + "placeholder": "gostaria", + "correct": [ + "gostaria" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Água", + "blanks": [ + { + "placeholder": "água", + "correct": [ + "água" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Café", + "blanks": [ + { + "placeholder": "café", + "correct": [ + "café" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "dois", + "gostaria", + "água", + "café" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day25_de.json b/exercises/day25_de.json new file mode 100644 index 0000000..bf49546 --- /dev/null +++ b/exercises/day25_de.json @@ -0,0 +1,109 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Vervollständigen Sie die Food & Dining-Phrasen", + "instructions": "Ziehen Sie die richtigen Wörter, um jede Phrase zu vervollständigen.", + "sentences": [ + { + "text": "Die Rechnung, [bitte]", + "blanks": [ + { + "placeholder": "bitte", + "correct": "bitte" + } + ] + }, + { + "text": "Die Speisekarte, [bitte]", + "blanks": [ + { + "placeholder": "bitte", + "correct": "bitte" + } + ] + }, + { + "text": "Das ist [köstlich]", + "blanks": [ + { + "placeholder": "köstlich", + "correct": "köstlich" + } + ] + }, + { + "text": "Ich [habe] Hunger", + "blanks": [ + { + "placeholder": "habe", + "correct": "habe" + } + ] + } + ], + "extraWords": [] + }, + { + "type": "fill-blank", + "title": "Füllen Sie die Restaurants-Phrasen aus", + "instructions": "Vervollständigen Sie diese Phrasen, indem Sie die fehlenden Wörter einfügen.", + "sentences": [ + { + "text": "Wasser", + "blanks": [ + { + "placeholder": "wasser", + "correct": [ + "wasser" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Tisch für [zwei]", + "blanks": [ + { + "placeholder": "zwei", + "correct": [ + "zwei" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Kaffee", + "blanks": [ + { + "placeholder": "kaffee", + "correct": [ + "kaffee" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Ich [hätte] gerne", + "blanks": [ + { + "placeholder": "hätte", + "correct": [ + "hätte" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "wasser", + "zwei", + "kaffee", + "hätte" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day25_en.json b/exercises/day25_en.json new file mode 100644 index 0000000..1178997 --- /dev/null +++ b/exercises/day25_en.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete the Food & Dining Phrases", + "instructions": "Drag the correct words to complete each phrase.", + "sentences": [ + { + "text": "The menu, [please]", + "blanks": [ + { + "placeholder": "please", + "correct": "please" + } + ] + }, + { + "text": "The check, [please]", + "blanks": [ + { + "placeholder": "please", + "correct": "please" + } + ] + }, + { + "text": "This is [delicious]", + "blanks": [ + { + "placeholder": "delicious", + "correct": "delicious" + } + ] + }, + { + "text": "I am [hungry]", + "blanks": [ + { + "placeholder": "hungry", + "correct": "hungry" + } + ] + } + ], + "extraWords": [ + "thirsty" + ] + }, + { + "type": "fill-blank", + "title": "Fill in Restaurants Phrases", + "instructions": "Complete these phrases by filling in the missing words.", + "sentences": [ + { + "text": "I would [like]", + "blanks": [ + { + "placeholder": "like", + "correct": [ + "like" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Water", + "blanks": [ + { + "placeholder": "water", + "correct": [ + "water" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Coffee", + "blanks": [ + { + "placeholder": "coffee", + "correct": [ + "coffee" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Table for [two]", + "blanks": [ + { + "placeholder": "two", + "correct": [ + "two" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "like", + "water", + "coffee", + "two" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day25_es.json b/exercises/day25_es.json new file mode 100644 index 0000000..5a5ff3d --- /dev/null +++ b/exercises/day25_es.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Completa las Frases de Food & Dining", + "instructions": "Arrastra las palabras correctas para completar cada frase.", + "sentences": [ + { + "text": "Tengo [sed]", + "blanks": [ + { + "placeholder": "sed", + "correct": "sed" + } + ] + }, + { + "text": "El menú, por [favor]", + "blanks": [ + { + "placeholder": "favor", + "correct": "favor" + } + ] + }, + { + "text": "La cuenta, por [favor]", + "blanks": [ + { + "placeholder": "favor", + "correct": "favor" + } + ] + }, + { + "text": "Esto está [delicioso]", + "blanks": [ + { + "placeholder": "delicioso", + "correct": "delicioso" + } + ] + } + ], + "extraWords": [ + "hambre" + ] + }, + { + "type": "fill-blank", + "title": "Completa las Frases de Restaurants", + "instructions": "Completa estas frases llenando las palabras que faltan.", + "sentences": [ + { + "text": "Agua", + "blanks": [ + { + "placeholder": "agua", + "correct": [ + "agua" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Café", + "blanks": [ + { + "placeholder": "café", + "correct": [ + "café" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Me [gustaría]", + "blanks": [ + { + "placeholder": "gustaría", + "correct": [ + "gustaría" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Mesa para dos", + "blanks": [ + { + "placeholder": "mesa", + "correct": [ + "mesa" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "agua", + "café", + "gustaría", + "mesa" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day25_fr.json b/exercises/day25_fr.json new file mode 100644 index 0000000..c9b6d96 --- /dev/null +++ b/exercises/day25_fr.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complétez les Phrases de Food & Dining", + "instructions": "Faites glisser les mots corrects pour compléter chaque phrase.", + "sentences": [ + { + "text": "J'ai [soif]", + "blanks": [ + { + "placeholder": "soif", + "correct": "soif" + } + ] + }, + { + "text": "Le menu, s'il [vous] plaît", + "blanks": [ + { + "placeholder": "vous", + "correct": "vous" + } + ] + }, + { + "text": "L'addition, s'il [vous] plaît", + "blanks": [ + { + "placeholder": "vous", + "correct": "vous" + } + ] + }, + { + "text": "C'est [délicieux]", + "blanks": [ + { + "placeholder": "délicieux", + "correct": "délicieux" + } + ] + } + ], + "extraWords": [ + "faim" + ] + }, + { + "type": "fill-blank", + "title": "Remplissez les Phrases de Restaurants", + "instructions": "Complétez ces phrases en remplissant les mots manquants.", + "sentences": [ + { + "text": "Café", + "blanks": [ + { + "placeholder": "café", + "correct": [ + "café" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Table pour [deux]", + "blanks": [ + { + "placeholder": "deux", + "correct": [ + "deux" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Eau", + "blanks": [ + { + "placeholder": "eau", + "correct": [ + "eau" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Je [voudrais]", + "blanks": [ + { + "placeholder": "voudrais", + "correct": [ + "voudrais" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "café", + "deux", + "eau", + "voudrais" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day25_pt.json b/exercises/day25_pt.json new file mode 100644 index 0000000..12ac3d5 --- /dev/null +++ b/exercises/day25_pt.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete as Frases de Food & Dining", + "instructions": "Arraste as palavras corretas para completar cada frase.", + "sentences": [ + { + "text": "O cardápio, por [favor]", + "blanks": [ + { + "placeholder": "favor", + "correct": "favor" + } + ] + }, + { + "text": "Estou com [fome]", + "blanks": [ + { + "placeholder": "fome", + "correct": "fome" + } + ] + }, + { + "text": "Isso está [delicioso]", + "blanks": [ + { + "placeholder": "delicioso", + "correct": "delicioso" + } + ] + }, + { + "text": "A conta, por [favor]", + "blanks": [ + { + "placeholder": "favor", + "correct": "favor" + } + ] + } + ], + "extraWords": [ + "sede" + ] + }, + { + "type": "fill-blank", + "title": "Preencha as Frases de Restaurants", + "instructions": "Complete essas frases preenchendo as palavras em falta.", + "sentences": [ + { + "text": "Mesa para [dois]", + "blanks": [ + { + "placeholder": "dois", + "correct": [ + "dois" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Eu [gostaria]", + "blanks": [ + { + "placeholder": "gostaria", + "correct": [ + "gostaria" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Água", + "blanks": [ + { + "placeholder": "água", + "correct": [ + "água" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Café", + "blanks": [ + { + "placeholder": "café", + "correct": [ + "café" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "dois", + "gostaria", + "água", + "café" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day26_de.json b/exercises/day26_de.json new file mode 100644 index 0000000..d87a25f --- /dev/null +++ b/exercises/day26_de.json @@ -0,0 +1,109 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Vervollständigen Sie die Food & Dining-Phrasen", + "instructions": "Ziehen Sie die richtigen Wörter, um jede Phrase zu vervollständigen.", + "sentences": [ + { + "text": "Die Speisekarte, [bitte]", + "blanks": [ + { + "placeholder": "bitte", + "correct": "bitte" + } + ] + }, + { + "text": "Das ist [köstlich]", + "blanks": [ + { + "placeholder": "köstlich", + "correct": "köstlich" + } + ] + }, + { + "text": "Ich [habe] Durst", + "blanks": [ + { + "placeholder": "habe", + "correct": "habe" + } + ] + }, + { + "text": "Ich [habe] Hunger", + "blanks": [ + { + "placeholder": "habe", + "correct": "habe" + } + ] + } + ], + "extraWords": [] + }, + { + "type": "fill-blank", + "title": "Füllen Sie die Restaurants-Phrasen aus", + "instructions": "Vervollständigen Sie diese Phrasen, indem Sie die fehlenden Wörter einfügen.", + "sentences": [ + { + "text": "Kaffee", + "blanks": [ + { + "placeholder": "kaffee", + "correct": [ + "kaffee" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Tisch für [zwei]", + "blanks": [ + { + "placeholder": "zwei", + "correct": [ + "zwei" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Wasser", + "blanks": [ + { + "placeholder": "wasser", + "correct": [ + "wasser" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Ich [hätte] gerne", + "blanks": [ + { + "placeholder": "hätte", + "correct": [ + "hätte" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "kaffee", + "zwei", + "wasser", + "hätte" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day26_en.json b/exercises/day26_en.json new file mode 100644 index 0000000..b0d4276 --- /dev/null +++ b/exercises/day26_en.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete the Food & Dining Phrases", + "instructions": "Drag the correct words to complete each phrase.", + "sentences": [ + { + "text": "The check, [please]", + "blanks": [ + { + "placeholder": "please", + "correct": "please" + } + ] + }, + { + "text": "This is [delicious]", + "blanks": [ + { + "placeholder": "delicious", + "correct": "delicious" + } + ] + }, + { + "text": "I am [hungry]", + "blanks": [ + { + "placeholder": "hungry", + "correct": "hungry" + } + ] + }, + { + "text": "The menu, [please]", + "blanks": [ + { + "placeholder": "please", + "correct": "please" + } + ] + } + ], + "extraWords": [ + "thirsty" + ] + }, + { + "type": "fill-blank", + "title": "Fill in Restaurants Phrases", + "instructions": "Complete these phrases by filling in the missing words.", + "sentences": [ + { + "text": "Table for [two]", + "blanks": [ + { + "placeholder": "two", + "correct": [ + "two" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Coffee", + "blanks": [ + { + "placeholder": "coffee", + "correct": [ + "coffee" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Water", + "blanks": [ + { + "placeholder": "water", + "correct": [ + "water" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "I would [like]", + "blanks": [ + { + "placeholder": "like", + "correct": [ + "like" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "two", + "coffee", + "water", + "like" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day26_es.json b/exercises/day26_es.json new file mode 100644 index 0000000..7581935 --- /dev/null +++ b/exercises/day26_es.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Completa las Frases de Food & Dining", + "instructions": "Arrastra las palabras correctas para completar cada frase.", + "sentences": [ + { + "text": "La cuenta, por [favor]", + "blanks": [ + { + "placeholder": "favor", + "correct": "favor" + } + ] + }, + { + "text": "Tengo [sed]", + "blanks": [ + { + "placeholder": "sed", + "correct": "sed" + } + ] + }, + { + "text": "El menú, por [favor]", + "blanks": [ + { + "placeholder": "favor", + "correct": "favor" + } + ] + }, + { + "text": "Tengo [hambre]", + "blanks": [ + { + "placeholder": "hambre", + "correct": "hambre" + } + ] + } + ], + "extraWords": [ + "delicioso" + ] + }, + { + "type": "fill-blank", + "title": "Completa las Frases de Restaurants", + "instructions": "Completa estas frases llenando las palabras que faltan.", + "sentences": [ + { + "text": "Agua", + "blanks": [ + { + "placeholder": "agua", + "correct": [ + "agua" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Mesa para dos", + "blanks": [ + { + "placeholder": "mesa", + "correct": [ + "mesa" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Café", + "blanks": [ + { + "placeholder": "café", + "correct": [ + "café" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Me [gustaría]", + "blanks": [ + { + "placeholder": "gustaría", + "correct": [ + "gustaría" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "agua", + "mesa", + "café", + "gustaría" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day26_fr.json b/exercises/day26_fr.json new file mode 100644 index 0000000..d4435e2 --- /dev/null +++ b/exercises/day26_fr.json @@ -0,0 +1,109 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complétez les Phrases de Food & Dining", + "instructions": "Faites glisser les mots corrects pour compléter chaque phrase.", + "sentences": [ + { + "text": "C'est [délicieux]", + "blanks": [ + { + "placeholder": "délicieux", + "correct": "délicieux" + } + ] + }, + { + "text": "L'addition, s'il [vous] plaît", + "blanks": [ + { + "placeholder": "vous", + "correct": "vous" + } + ] + }, + { + "text": "J'ai [soif]", + "blanks": [ + { + "placeholder": "soif", + "correct": "soif" + } + ] + }, + { + "text": "J'ai [faim]", + "blanks": [ + { + "placeholder": "faim", + "correct": "faim" + } + ] + } + ], + "extraWords": [] + }, + { + "type": "fill-blank", + "title": "Remplissez les Phrases de Restaurants", + "instructions": "Complétez ces phrases en remplissant les mots manquants.", + "sentences": [ + { + "text": "Table pour [deux]", + "blanks": [ + { + "placeholder": "deux", + "correct": [ + "deux" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Je [voudrais]", + "blanks": [ + { + "placeholder": "voudrais", + "correct": [ + "voudrais" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Café", + "blanks": [ + { + "placeholder": "café", + "correct": [ + "café" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Eau", + "blanks": [ + { + "placeholder": "eau", + "correct": [ + "eau" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "deux", + "voudrais", + "café", + "eau" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day26_pt.json b/exercises/day26_pt.json new file mode 100644 index 0000000..46e2c27 --- /dev/null +++ b/exercises/day26_pt.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete as Frases de Food & Dining", + "instructions": "Arraste as palavras corretas para completar cada frase.", + "sentences": [ + { + "text": "Estou com [sede]", + "blanks": [ + { + "placeholder": "sede", + "correct": "sede" + } + ] + }, + { + "text": "Estou com [fome]", + "blanks": [ + { + "placeholder": "fome", + "correct": "fome" + } + ] + }, + { + "text": "O cardápio, por [favor]", + "blanks": [ + { + "placeholder": "favor", + "correct": "favor" + } + ] + }, + { + "text": "A conta, por [favor]", + "blanks": [ + { + "placeholder": "favor", + "correct": "favor" + } + ] + } + ], + "extraWords": [ + "delicioso" + ] + }, + { + "type": "fill-blank", + "title": "Preencha as Frases de Restaurants", + "instructions": "Complete essas frases preenchendo as palavras em falta.", + "sentences": [ + { + "text": "Eu [gostaria]", + "blanks": [ + { + "placeholder": "gostaria", + "correct": [ + "gostaria" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Mesa para [dois]", + "blanks": [ + { + "placeholder": "dois", + "correct": [ + "dois" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Água", + "blanks": [ + { + "placeholder": "água", + "correct": [ + "água" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Café", + "blanks": [ + { + "placeholder": "café", + "correct": [ + "café" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "gostaria", + "dois", + "água", + "café" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day27_de.json b/exercises/day27_de.json new file mode 100644 index 0000000..095d1d5 --- /dev/null +++ b/exercises/day27_de.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Vervollständigen Sie die Food & Dining-Phrasen", + "instructions": "Ziehen Sie die richtigen Wörter, um jede Phrase zu vervollständigen.", + "sentences": [ + { + "text": "Ich [habe] Hunger", + "blanks": [ + { + "placeholder": "habe", + "correct": "habe" + } + ] + }, + { + "text": "Die Speisekarte, [bitte]", + "blanks": [ + { + "placeholder": "bitte", + "correct": "bitte" + } + ] + }, + { + "text": "Ich [habe] Durst", + "blanks": [ + { + "placeholder": "habe", + "correct": "habe" + } + ] + }, + { + "text": "Die Rechnung, [bitte]", + "blanks": [ + { + "placeholder": "bitte", + "correct": "bitte" + } + ] + } + ], + "extraWords": [ + "köstlich" + ] + }, + { + "type": "fill-blank", + "title": "Füllen Sie die Restaurants-Phrasen aus", + "instructions": "Vervollständigen Sie diese Phrasen, indem Sie die fehlenden Wörter einfügen.", + "sentences": [ + { + "text": "Kaffee", + "blanks": [ + { + "placeholder": "kaffee", + "correct": [ + "kaffee" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Ich [hätte] gerne", + "blanks": [ + { + "placeholder": "hätte", + "correct": [ + "hätte" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Wasser", + "blanks": [ + { + "placeholder": "wasser", + "correct": [ + "wasser" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Tisch für [zwei]", + "blanks": [ + { + "placeholder": "zwei", + "correct": [ + "zwei" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "kaffee", + "hätte", + "wasser", + "zwei" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day27_en.json b/exercises/day27_en.json new file mode 100644 index 0000000..e002142 --- /dev/null +++ b/exercises/day27_en.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete the Food & Dining Phrases", + "instructions": "Drag the correct words to complete each phrase.", + "sentences": [ + { + "text": "This is [delicious]", + "blanks": [ + { + "placeholder": "delicious", + "correct": "delicious" + } + ] + }, + { + "text": "The menu, [please]", + "blanks": [ + { + "placeholder": "please", + "correct": "please" + } + ] + }, + { + "text": "I am [thirsty]", + "blanks": [ + { + "placeholder": "thirsty", + "correct": "thirsty" + } + ] + }, + { + "text": "The check, [please]", + "blanks": [ + { + "placeholder": "please", + "correct": "please" + } + ] + } + ], + "extraWords": [ + "hungry" + ] + }, + { + "type": "fill-blank", + "title": "Fill in Restaurants Phrases", + "instructions": "Complete these phrases by filling in the missing words.", + "sentences": [ + { + "text": "Water", + "blanks": [ + { + "placeholder": "water", + "correct": [ + "water" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Coffee", + "blanks": [ + { + "placeholder": "coffee", + "correct": [ + "coffee" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "I would [like]", + "blanks": [ + { + "placeholder": "like", + "correct": [ + "like" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Table for [two]", + "blanks": [ + { + "placeholder": "two", + "correct": [ + "two" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "water", + "coffee", + "like", + "two" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day27_es.json b/exercises/day27_es.json new file mode 100644 index 0000000..f7cdc68 --- /dev/null +++ b/exercises/day27_es.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Completa las Frases de Food & Dining", + "instructions": "Arrastra las palabras correctas para completar cada frase.", + "sentences": [ + { + "text": "La cuenta, por [favor]", + "blanks": [ + { + "placeholder": "favor", + "correct": "favor" + } + ] + }, + { + "text": "Tengo [sed]", + "blanks": [ + { + "placeholder": "sed", + "correct": "sed" + } + ] + }, + { + "text": "Tengo [hambre]", + "blanks": [ + { + "placeholder": "hambre", + "correct": "hambre" + } + ] + }, + { + "text": "El menú, por [favor]", + "blanks": [ + { + "placeholder": "favor", + "correct": "favor" + } + ] + } + ], + "extraWords": [ + "delicioso" + ] + }, + { + "type": "fill-blank", + "title": "Completa las Frases de Restaurants", + "instructions": "Completa estas frases llenando las palabras que faltan.", + "sentences": [ + { + "text": "Me [gustaría]", + "blanks": [ + { + "placeholder": "gustaría", + "correct": [ + "gustaría" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Café", + "blanks": [ + { + "placeholder": "café", + "correct": [ + "café" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Mesa para dos", + "blanks": [ + { + "placeholder": "mesa", + "correct": [ + "mesa" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Agua", + "blanks": [ + { + "placeholder": "agua", + "correct": [ + "agua" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "gustaría", + "café", + "mesa", + "agua" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day27_fr.json b/exercises/day27_fr.json new file mode 100644 index 0000000..580a210 --- /dev/null +++ b/exercises/day27_fr.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complétez les Phrases de Food & Dining", + "instructions": "Faites glisser les mots corrects pour compléter chaque phrase.", + "sentences": [ + { + "text": "J'ai [faim]", + "blanks": [ + { + "placeholder": "faim", + "correct": "faim" + } + ] + }, + { + "text": "L'addition, s'il [vous] plaît", + "blanks": [ + { + "placeholder": "vous", + "correct": "vous" + } + ] + }, + { + "text": "J'ai [soif]", + "blanks": [ + { + "placeholder": "soif", + "correct": "soif" + } + ] + }, + { + "text": "Le menu, s'il [vous] plaît", + "blanks": [ + { + "placeholder": "vous", + "correct": "vous" + } + ] + } + ], + "extraWords": [ + "délicieux" + ] + }, + { + "type": "fill-blank", + "title": "Remplissez les Phrases de Restaurants", + "instructions": "Complétez ces phrases en remplissant les mots manquants.", + "sentences": [ + { + "text": "Eau", + "blanks": [ + { + "placeholder": "eau", + "correct": [ + "eau" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Café", + "blanks": [ + { + "placeholder": "café", + "correct": [ + "café" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Je [voudrais]", + "blanks": [ + { + "placeholder": "voudrais", + "correct": [ + "voudrais" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Table pour [deux]", + "blanks": [ + { + "placeholder": "deux", + "correct": [ + "deux" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "eau", + "café", + "voudrais", + "deux" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day27_pt.json b/exercises/day27_pt.json new file mode 100644 index 0000000..9a785be --- /dev/null +++ b/exercises/day27_pt.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete as Frases de Food & Dining", + "instructions": "Arraste as palavras corretas para completar cada frase.", + "sentences": [ + { + "text": "O cardápio, por [favor]", + "blanks": [ + { + "placeholder": "favor", + "correct": "favor" + } + ] + }, + { + "text": "Isso está [delicioso]", + "blanks": [ + { + "placeholder": "delicioso", + "correct": "delicioso" + } + ] + }, + { + "text": "Estou com [fome]", + "blanks": [ + { + "placeholder": "fome", + "correct": "fome" + } + ] + }, + { + "text": "A conta, por [favor]", + "blanks": [ + { + "placeholder": "favor", + "correct": "favor" + } + ] + } + ], + "extraWords": [ + "sede" + ] + }, + { + "type": "fill-blank", + "title": "Preencha as Frases de Restaurants", + "instructions": "Complete essas frases preenchendo as palavras em falta.", + "sentences": [ + { + "text": "Café", + "blanks": [ + { + "placeholder": "café", + "correct": [ + "café" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Mesa para [dois]", + "blanks": [ + { + "placeholder": "dois", + "correct": [ + "dois" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Água", + "blanks": [ + { + "placeholder": "água", + "correct": [ + "água" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Eu [gostaria]", + "blanks": [ + { + "placeholder": "gostaria", + "correct": [ + "gostaria" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "café", + "dois", + "água", + "gostaria" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day28_de.json b/exercises/day28_de.json new file mode 100644 index 0000000..fb1d048 --- /dev/null +++ b/exercises/day28_de.json @@ -0,0 +1,109 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Vervollständigen Sie die Food & Dining-Phrasen", + "instructions": "Ziehen Sie die richtigen Wörter, um jede Phrase zu vervollständigen.", + "sentences": [ + { + "text": "Ich [habe] Hunger", + "blanks": [ + { + "placeholder": "habe", + "correct": "habe" + } + ] + }, + { + "text": "Die Rechnung, [bitte]", + "blanks": [ + { + "placeholder": "bitte", + "correct": "bitte" + } + ] + }, + { + "text": "Das ist [köstlich]", + "blanks": [ + { + "placeholder": "köstlich", + "correct": "köstlich" + } + ] + }, + { + "text": "Die Speisekarte, [bitte]", + "blanks": [ + { + "placeholder": "bitte", + "correct": "bitte" + } + ] + } + ], + "extraWords": [] + }, + { + "type": "fill-blank", + "title": "Füllen Sie die Restaurants-Phrasen aus", + "instructions": "Vervollständigen Sie diese Phrasen, indem Sie die fehlenden Wörter einfügen.", + "sentences": [ + { + "text": "Ich [hätte] gerne", + "blanks": [ + { + "placeholder": "hätte", + "correct": [ + "hätte" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Wasser", + "blanks": [ + { + "placeholder": "wasser", + "correct": [ + "wasser" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Tisch für [zwei]", + "blanks": [ + { + "placeholder": "zwei", + "correct": [ + "zwei" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Kaffee", + "blanks": [ + { + "placeholder": "kaffee", + "correct": [ + "kaffee" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "hätte", + "wasser", + "zwei", + "kaffee" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day28_en.json b/exercises/day28_en.json new file mode 100644 index 0000000..a46cef1 --- /dev/null +++ b/exercises/day28_en.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete the Food & Dining Phrases", + "instructions": "Drag the correct words to complete each phrase.", + "sentences": [ + { + "text": "The menu, [please]", + "blanks": [ + { + "placeholder": "please", + "correct": "please" + } + ] + }, + { + "text": "The check, [please]", + "blanks": [ + { + "placeholder": "please", + "correct": "please" + } + ] + }, + { + "text": "This is [delicious]", + "blanks": [ + { + "placeholder": "delicious", + "correct": "delicious" + } + ] + }, + { + "text": "I am [thirsty]", + "blanks": [ + { + "placeholder": "thirsty", + "correct": "thirsty" + } + ] + } + ], + "extraWords": [ + "hungry" + ] + }, + { + "type": "fill-blank", + "title": "Fill in Restaurants Phrases", + "instructions": "Complete these phrases by filling in the missing words.", + "sentences": [ + { + "text": "Water", + "blanks": [ + { + "placeholder": "water", + "correct": [ + "water" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "I would [like]", + "blanks": [ + { + "placeholder": "like", + "correct": [ + "like" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Table for [two]", + "blanks": [ + { + "placeholder": "two", + "correct": [ + "two" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Coffee", + "blanks": [ + { + "placeholder": "coffee", + "correct": [ + "coffee" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "water", + "like", + "two", + "coffee" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day28_es.json b/exercises/day28_es.json new file mode 100644 index 0000000..1e584d5 --- /dev/null +++ b/exercises/day28_es.json @@ -0,0 +1,109 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Completa las Frases de Food & Dining", + "instructions": "Arrastra las palabras correctas para completar cada frase.", + "sentences": [ + { + "text": "Tengo [sed]", + "blanks": [ + { + "placeholder": "sed", + "correct": "sed" + } + ] + }, + { + "text": "Esto está [delicioso]", + "blanks": [ + { + "placeholder": "delicioso", + "correct": "delicioso" + } + ] + }, + { + "text": "El menú, por [favor]", + "blanks": [ + { + "placeholder": "favor", + "correct": "favor" + } + ] + }, + { + "text": "Tengo [hambre]", + "blanks": [ + { + "placeholder": "hambre", + "correct": "hambre" + } + ] + } + ], + "extraWords": [] + }, + { + "type": "fill-blank", + "title": "Completa las Frases de Restaurants", + "instructions": "Completa estas frases llenando las palabras que faltan.", + "sentences": [ + { + "text": "Café", + "blanks": [ + { + "placeholder": "café", + "correct": [ + "café" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Agua", + "blanks": [ + { + "placeholder": "agua", + "correct": [ + "agua" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Mesa para dos", + "blanks": [ + { + "placeholder": "mesa", + "correct": [ + "mesa" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Me [gustaría]", + "blanks": [ + { + "placeholder": "gustaría", + "correct": [ + "gustaría" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "café", + "agua", + "mesa", + "gustaría" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day28_fr.json b/exercises/day28_fr.json new file mode 100644 index 0000000..a704783 --- /dev/null +++ b/exercises/day28_fr.json @@ -0,0 +1,109 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complétez les Phrases de Food & Dining", + "instructions": "Faites glisser les mots corrects pour compléter chaque phrase.", + "sentences": [ + { + "text": "C'est [délicieux]", + "blanks": [ + { + "placeholder": "délicieux", + "correct": "délicieux" + } + ] + }, + { + "text": "J'ai [soif]", + "blanks": [ + { + "placeholder": "soif", + "correct": "soif" + } + ] + }, + { + "text": "L'addition, s'il [vous] plaît", + "blanks": [ + { + "placeholder": "vous", + "correct": "vous" + } + ] + }, + { + "text": "J'ai [faim]", + "blanks": [ + { + "placeholder": "faim", + "correct": "faim" + } + ] + } + ], + "extraWords": [] + }, + { + "type": "fill-blank", + "title": "Remplissez les Phrases de Restaurants", + "instructions": "Complétez ces phrases en remplissant les mots manquants.", + "sentences": [ + { + "text": "Table pour [deux]", + "blanks": [ + { + "placeholder": "deux", + "correct": [ + "deux" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Café", + "blanks": [ + { + "placeholder": "café", + "correct": [ + "café" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Eau", + "blanks": [ + { + "placeholder": "eau", + "correct": [ + "eau" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Je [voudrais]", + "blanks": [ + { + "placeholder": "voudrais", + "correct": [ + "voudrais" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "deux", + "café", + "eau", + "voudrais" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day28_pt.json b/exercises/day28_pt.json new file mode 100644 index 0000000..f31a7f7 --- /dev/null +++ b/exercises/day28_pt.json @@ -0,0 +1,109 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete as Frases de Food & Dining", + "instructions": "Arraste as palavras corretas para completar cada frase.", + "sentences": [ + { + "text": "O cardápio, por [favor]", + "blanks": [ + { + "placeholder": "favor", + "correct": "favor" + } + ] + }, + { + "text": "Estou com [fome]", + "blanks": [ + { + "placeholder": "fome", + "correct": "fome" + } + ] + }, + { + "text": "Isso está [delicioso]", + "blanks": [ + { + "placeholder": "delicioso", + "correct": "delicioso" + } + ] + }, + { + "text": "Estou com [sede]", + "blanks": [ + { + "placeholder": "sede", + "correct": "sede" + } + ] + } + ], + "extraWords": [] + }, + { + "type": "fill-blank", + "title": "Preencha as Frases de Restaurants", + "instructions": "Complete essas frases preenchendo as palavras em falta.", + "sentences": [ + { + "text": "Café", + "blanks": [ + { + "placeholder": "café", + "correct": [ + "café" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Água", + "blanks": [ + { + "placeholder": "água", + "correct": [ + "água" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Mesa para [dois]", + "blanks": [ + { + "placeholder": "dois", + "correct": [ + "dois" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Eu [gostaria]", + "blanks": [ + { + "placeholder": "gostaria", + "correct": [ + "gostaria" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "café", + "água", + "dois", + "gostaria" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day29_de.json b/exercises/day29_de.json new file mode 100644 index 0000000..225fc3e --- /dev/null +++ b/exercises/day29_de.json @@ -0,0 +1,109 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Vervollständigen Sie die Food & Dining-Phrasen", + "instructions": "Ziehen Sie die richtigen Wörter, um jede Phrase zu vervollständigen.", + "sentences": [ + { + "text": "Ich [habe] Hunger", + "blanks": [ + { + "placeholder": "habe", + "correct": "habe" + } + ] + }, + { + "text": "Das ist [köstlich]", + "blanks": [ + { + "placeholder": "köstlich", + "correct": "köstlich" + } + ] + }, + { + "text": "Die Rechnung, [bitte]", + "blanks": [ + { + "placeholder": "bitte", + "correct": "bitte" + } + ] + }, + { + "text": "Ich [habe] Durst", + "blanks": [ + { + "placeholder": "habe", + "correct": "habe" + } + ] + } + ], + "extraWords": [] + }, + { + "type": "fill-blank", + "title": "Füllen Sie die Restaurants-Phrasen aus", + "instructions": "Vervollständigen Sie diese Phrasen, indem Sie die fehlenden Wörter einfügen.", + "sentences": [ + { + "text": "Kaffee", + "blanks": [ + { + "placeholder": "kaffee", + "correct": [ + "kaffee" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Wasser", + "blanks": [ + { + "placeholder": "wasser", + "correct": [ + "wasser" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Ich [hätte] gerne", + "blanks": [ + { + "placeholder": "hätte", + "correct": [ + "hätte" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Tisch für [zwei]", + "blanks": [ + { + "placeholder": "zwei", + "correct": [ + "zwei" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "kaffee", + "wasser", + "hätte", + "zwei" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day29_en.json b/exercises/day29_en.json new file mode 100644 index 0000000..33ec11c --- /dev/null +++ b/exercises/day29_en.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete the Food & Dining Phrases", + "instructions": "Drag the correct words to complete each phrase.", + "sentences": [ + { + "text": "I am [thirsty]", + "blanks": [ + { + "placeholder": "thirsty", + "correct": "thirsty" + } + ] + }, + { + "text": "The menu, [please]", + "blanks": [ + { + "placeholder": "please", + "correct": "please" + } + ] + }, + { + "text": "I am [hungry]", + "blanks": [ + { + "placeholder": "hungry", + "correct": "hungry" + } + ] + }, + { + "text": "The check, [please]", + "blanks": [ + { + "placeholder": "please", + "correct": "please" + } + ] + } + ], + "extraWords": [ + "delicious" + ] + }, + { + "type": "fill-blank", + "title": "Fill in Restaurants Phrases", + "instructions": "Complete these phrases by filling in the missing words.", + "sentences": [ + { + "text": "I would [like]", + "blanks": [ + { + "placeholder": "like", + "correct": [ + "like" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Table for [two]", + "blanks": [ + { + "placeholder": "two", + "correct": [ + "two" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Coffee", + "blanks": [ + { + "placeholder": "coffee", + "correct": [ + "coffee" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Water", + "blanks": [ + { + "placeholder": "water", + "correct": [ + "water" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "like", + "two", + "coffee", + "water" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day29_es.json b/exercises/day29_es.json new file mode 100644 index 0000000..8103f93 --- /dev/null +++ b/exercises/day29_es.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Completa las Frases de Food & Dining", + "instructions": "Arrastra las palabras correctas para completar cada frase.", + "sentences": [ + { + "text": "Tengo [hambre]", + "blanks": [ + { + "placeholder": "hambre", + "correct": "hambre" + } + ] + }, + { + "text": "La cuenta, por [favor]", + "blanks": [ + { + "placeholder": "favor", + "correct": "favor" + } + ] + }, + { + "text": "El menú, por [favor]", + "blanks": [ + { + "placeholder": "favor", + "correct": "favor" + } + ] + }, + { + "text": "Tengo [sed]", + "blanks": [ + { + "placeholder": "sed", + "correct": "sed" + } + ] + } + ], + "extraWords": [ + "delicioso" + ] + }, + { + "type": "fill-blank", + "title": "Completa las Frases de Restaurants", + "instructions": "Completa estas frases llenando las palabras que faltan.", + "sentences": [ + { + "text": "Me [gustaría]", + "blanks": [ + { + "placeholder": "gustaría", + "correct": [ + "gustaría" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Agua", + "blanks": [ + { + "placeholder": "agua", + "correct": [ + "agua" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Mesa para dos", + "blanks": [ + { + "placeholder": "mesa", + "correct": [ + "mesa" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Café", + "blanks": [ + { + "placeholder": "café", + "correct": [ + "café" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "gustaría", + "agua", + "mesa", + "café" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day29_fr.json b/exercises/day29_fr.json new file mode 100644 index 0000000..f2a1dfe --- /dev/null +++ b/exercises/day29_fr.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complétez les Phrases de Food & Dining", + "instructions": "Faites glisser les mots corrects pour compléter chaque phrase.", + "sentences": [ + { + "text": "Le menu, s'il [vous] plaît", + "blanks": [ + { + "placeholder": "vous", + "correct": "vous" + } + ] + }, + { + "text": "J'ai [soif]", + "blanks": [ + { + "placeholder": "soif", + "correct": "soif" + } + ] + }, + { + "text": "C'est [délicieux]", + "blanks": [ + { + "placeholder": "délicieux", + "correct": "délicieux" + } + ] + }, + { + "text": "L'addition, s'il [vous] plaît", + "blanks": [ + { + "placeholder": "vous", + "correct": "vous" + } + ] + } + ], + "extraWords": [ + "faim" + ] + }, + { + "type": "fill-blank", + "title": "Remplissez les Phrases de Restaurants", + "instructions": "Complétez ces phrases en remplissant les mots manquants.", + "sentences": [ + { + "text": "Je [voudrais]", + "blanks": [ + { + "placeholder": "voudrais", + "correct": [ + "voudrais" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Café", + "blanks": [ + { + "placeholder": "café", + "correct": [ + "café" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Table pour [deux]", + "blanks": [ + { + "placeholder": "deux", + "correct": [ + "deux" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Eau", + "blanks": [ + { + "placeholder": "eau", + "correct": [ + "eau" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "voudrais", + "café", + "deux", + "eau" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day29_pt.json b/exercises/day29_pt.json new file mode 100644 index 0000000..fc23bfe --- /dev/null +++ b/exercises/day29_pt.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete as Frases de Food & Dining", + "instructions": "Arraste as palavras corretas para completar cada frase.", + "sentences": [ + { + "text": "A conta, por [favor]", + "blanks": [ + { + "placeholder": "favor", + "correct": "favor" + } + ] + }, + { + "text": "O cardápio, por [favor]", + "blanks": [ + { + "placeholder": "favor", + "correct": "favor" + } + ] + }, + { + "text": "Estou com [fome]", + "blanks": [ + { + "placeholder": "fome", + "correct": "fome" + } + ] + }, + { + "text": "Estou com [sede]", + "blanks": [ + { + "placeholder": "sede", + "correct": "sede" + } + ] + } + ], + "extraWords": [ + "delicioso" + ] + }, + { + "type": "fill-blank", + "title": "Preencha as Frases de Restaurants", + "instructions": "Complete essas frases preenchendo as palavras em falta.", + "sentences": [ + { + "text": "Mesa para [dois]", + "blanks": [ + { + "placeholder": "dois", + "correct": [ + "dois" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Café", + "blanks": [ + { + "placeholder": "café", + "correct": [ + "café" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Água", + "blanks": [ + { + "placeholder": "água", + "correct": [ + "água" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Eu [gostaria]", + "blanks": [ + { + "placeholder": "gostaria", + "correct": [ + "gostaria" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "dois", + "café", + "água", + "gostaria" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day2_de.json b/exercises/day2_de.json new file mode 100644 index 0000000..b7442ff --- /dev/null +++ b/exercises/day2_de.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Vervollständigen Sie die Daily Conversations-Phrasen", + "instructions": "Ziehen Sie die richtigen Wörter, um jede Phrase zu vervollständigen.", + "sentences": [ + { + "text": "Sehr [gut]", + "blanks": [ + { + "placeholder": "gut", + "correct": "gut" + } + ] + }, + { + "text": "Bis [später]", + "blanks": [ + { + "placeholder": "später", + "correct": "später" + } + ] + }, + { + "text": "Guten Tag 2!", + "blanks": [ + { + "placeholder": "tag", + "correct": "tag" + } + ] + }, + { + "text": "Einen [schönen] Tag noch", + "blanks": [ + { + "placeholder": "schönen", + "correct": "schönen" + } + ] + } + ], + "extraWords": [ + "alles" + ] + }, + { + "type": "fill-blank", + "title": "Füllen Sie die Learning Progress-Phrasen aus", + "instructions": "Vervollständigen Sie diese Phrasen, indem Sie die fehlenden Wörter einfügen.", + "sentences": [ + { + "text": "Das ist Lektion 2", + "blanks": [ + { + "placeholder": "lektion", + "correct": [ + "lektion" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Ich [verstehe]", + "blanks": [ + { + "placeholder": "verstehe", + "correct": [ + "verstehe" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Das ist [nützlich]", + "blanks": [ + { + "placeholder": "nützlich", + "correct": [ + "nützlich" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Ich [lerne]", + "blanks": [ + { + "placeholder": "lerne", + "correct": [ + "lerne" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "lektion", + "verstehe", + "nützlich", + "lerne" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day2_en.json b/exercises/day2_en.json new file mode 100644 index 0000000..4755a8a --- /dev/null +++ b/exercises/day2_en.json @@ -0,0 +1,109 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete the Daily Conversations Phrases", + "instructions": "Drag the correct words to complete each phrase.", + "sentences": [ + { + "text": "Have a nice [day]", + "blanks": [ + { + "placeholder": "day", + "correct": "day" + } + ] + }, + { + "text": "How is [everything]?", + "blanks": [ + { + "placeholder": "everything", + "correct": "everything" + } + ] + }, + { + "text": "See [you] later", + "blanks": [ + { + "placeholder": "you", + "correct": "you" + } + ] + }, + { + "text": "Very [well]", + "blanks": [ + { + "placeholder": "well", + "correct": "well" + } + ] + } + ], + "extraWords": [] + }, + { + "type": "fill-blank", + "title": "Fill in Learning Progress Phrases", + "instructions": "Complete these phrases by filling in the missing words.", + "sentences": [ + { + "text": "This is [lesson] 2", + "blanks": [ + { + "placeholder": "lesson", + "correct": [ + "lesson" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "I [understand]", + "blanks": [ + { + "placeholder": "understand", + "correct": [ + "understand" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "This is [useful]", + "blanks": [ + { + "placeholder": "useful", + "correct": [ + "useful" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "I am [learning]", + "blanks": [ + { + "placeholder": "learning", + "correct": [ + "learning" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "lesson", + "understand", + "useful", + "learning" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day2_es.json b/exercises/day2_es.json new file mode 100644 index 0000000..c3851d2 --- /dev/null +++ b/exercises/day2_es.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Completa las Frases de Daily Conversations", + "instructions": "Arrastra las palabras correctas para completar cada frase.", + "sentences": [ + { + "text": "Que tengas un [buen] día", + "blanks": [ + { + "placeholder": "buen", + "correct": "buen" + } + ] + }, + { + "text": "Hasta [luego]", + "blanks": [ + { + "placeholder": "luego", + "correct": "luego" + } + ] + }, + { + "text": "¿Cómo está [todo]?", + "blanks": [ + { + "placeholder": "todo", + "correct": "todo" + } + ] + }, + { + "text": "¡Buen [día] 2!", + "blanks": [ + { + "placeholder": "día", + "correct": "día" + } + ] + } + ], + "extraWords": [ + "bien" + ] + }, + { + "type": "fill-blank", + "title": "Completa las Frases de Learning Progress", + "instructions": "Completa estas frases llenando las palabras que faltan.", + "sentences": [ + { + "text": "Estoy [aprendiendo]", + "blanks": [ + { + "placeholder": "aprendiendo", + "correct": [ + "aprendiendo" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Esto es [útil]", + "blanks": [ + { + "placeholder": "útil", + "correct": [ + "útil" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Entiendo", + "blanks": [ + { + "placeholder": "entiendo", + "correct": [ + "entiendo" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Esta es la [lección] 2", + "blanks": [ + { + "placeholder": "lección", + "correct": [ + "lección" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "aprendiendo", + "útil", + "entiendo", + "lección" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day2_fr.json b/exercises/day2_fr.json new file mode 100644 index 0000000..bc61e3c --- /dev/null +++ b/exercises/day2_fr.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complétez les Phrases de Daily Conversations", + "instructions": "Faites glisser les mots corrects pour compléter chaque phrase.", + "sentences": [ + { + "text": "Bonne [journée] 2!", + "blanks": [ + { + "placeholder": "journée", + "correct": "journée" + } + ] + }, + { + "text": "Comment va tout ?", + "blanks": [ + { + "placeholder": "comment", + "correct": "comment" + } + ] + }, + { + "text": "Bonne [journée]", + "blanks": [ + { + "placeholder": "journée", + "correct": "journée" + } + ] + }, + { + "text": "Très [bien]", + "blanks": [ + { + "placeholder": "bien", + "correct": "bien" + } + ] + } + ], + "extraWords": [ + "tard" + ] + }, + { + "type": "fill-blank", + "title": "Remplissez les Phrases de Learning Progress", + "instructions": "Complétez ces phrases en remplissant les mots manquants.", + "sentences": [ + { + "text": "C'est la [leçon] 2", + "blanks": [ + { + "placeholder": "leçon", + "correct": [ + "leçon" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "C'est [utile]", + "blanks": [ + { + "placeholder": "utile", + "correct": [ + "utile" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Je [comprends]", + "blanks": [ + { + "placeholder": "comprends", + "correct": [ + "comprends" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "J'[apprends]", + "blanks": [ + { + "placeholder": "apprends", + "correct": [ + "apprends" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "leçon", + "utile", + "comprends", + "apprends" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day2_pt.json b/exercises/day2_pt.json new file mode 100644 index 0000000..db651ec --- /dev/null +++ b/exercises/day2_pt.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete as Frases de Daily Conversations", + "instructions": "Arraste as palavras corretas para completar cada frase.", + "sentences": [ + { + "text": "Bom [dia] 2!", + "blanks": [ + { + "placeholder": "dia", + "correct": "dia" + } + ] + }, + { + "text": "Tenha um [bom] dia", + "blanks": [ + { + "placeholder": "bom", + "correct": "bom" + } + ] + }, + { + "text": "Como está [tudo]?", + "blanks": [ + { + "placeholder": "tudo", + "correct": "tudo" + } + ] + }, + { + "text": "Muito [bem]", + "blanks": [ + { + "placeholder": "bem", + "correct": "bem" + } + ] + } + ], + "extraWords": [ + "mais" + ] + }, + { + "type": "fill-blank", + "title": "Preencha as Frases de Learning Progress", + "instructions": "Complete essas frases preenchendo as palavras em falta.", + "sentences": [ + { + "text": "Eu [entendo]", + "blanks": [ + { + "placeholder": "entendo", + "correct": [ + "entendo" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Estou [aprendendo]", + "blanks": [ + { + "placeholder": "aprendendo", + "correct": [ + "aprendendo" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Isso é [útil]", + "blanks": [ + { + "placeholder": "útil", + "correct": [ + "útil" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Esta é a [lição] 2", + "blanks": [ + { + "placeholder": "lição", + "correct": [ + "lição" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "entendo", + "aprendendo", + "útil", + "lição" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day30_de.json b/exercises/day30_de.json new file mode 100644 index 0000000..758b1da --- /dev/null +++ b/exercises/day30_de.json @@ -0,0 +1,109 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Vervollständigen Sie die Food & Dining-Phrasen", + "instructions": "Ziehen Sie die richtigen Wörter, um jede Phrase zu vervollständigen.", + "sentences": [ + { + "text": "Ich [habe] Durst", + "blanks": [ + { + "placeholder": "habe", + "correct": "habe" + } + ] + }, + { + "text": "Ich [habe] Hunger", + "blanks": [ + { + "placeholder": "habe", + "correct": "habe" + } + ] + }, + { + "text": "Die Speisekarte, [bitte]", + "blanks": [ + { + "placeholder": "bitte", + "correct": "bitte" + } + ] + }, + { + "text": "Das ist [köstlich]", + "blanks": [ + { + "placeholder": "köstlich", + "correct": "köstlich" + } + ] + } + ], + "extraWords": [] + }, + { + "type": "fill-blank", + "title": "Füllen Sie die Restaurants-Phrasen aus", + "instructions": "Vervollständigen Sie diese Phrasen, indem Sie die fehlenden Wörter einfügen.", + "sentences": [ + { + "text": "Wasser", + "blanks": [ + { + "placeholder": "wasser", + "correct": [ + "wasser" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Tisch für [zwei]", + "blanks": [ + { + "placeholder": "zwei", + "correct": [ + "zwei" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Ich [hätte] gerne", + "blanks": [ + { + "placeholder": "hätte", + "correct": [ + "hätte" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Kaffee", + "blanks": [ + { + "placeholder": "kaffee", + "correct": [ + "kaffee" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "wasser", + "zwei", + "hätte", + "kaffee" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day30_en.json b/exercises/day30_en.json new file mode 100644 index 0000000..1f56972 --- /dev/null +++ b/exercises/day30_en.json @@ -0,0 +1,109 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete the Food & Dining Phrases", + "instructions": "Drag the correct words to complete each phrase.", + "sentences": [ + { + "text": "I am [hungry]", + "blanks": [ + { + "placeholder": "hungry", + "correct": "hungry" + } + ] + }, + { + "text": "I am [thirsty]", + "blanks": [ + { + "placeholder": "thirsty", + "correct": "thirsty" + } + ] + }, + { + "text": "The menu, [please]", + "blanks": [ + { + "placeholder": "please", + "correct": "please" + } + ] + }, + { + "text": "This is [delicious]", + "blanks": [ + { + "placeholder": "delicious", + "correct": "delicious" + } + ] + } + ], + "extraWords": [] + }, + { + "type": "fill-blank", + "title": "Fill in Restaurants Phrases", + "instructions": "Complete these phrases by filling in the missing words.", + "sentences": [ + { + "text": "Water", + "blanks": [ + { + "placeholder": "water", + "correct": [ + "water" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Coffee", + "blanks": [ + { + "placeholder": "coffee", + "correct": [ + "coffee" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Table for [two]", + "blanks": [ + { + "placeholder": "two", + "correct": [ + "two" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "I would [like]", + "blanks": [ + { + "placeholder": "like", + "correct": [ + "like" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "water", + "coffee", + "two", + "like" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day30_es.json b/exercises/day30_es.json new file mode 100644 index 0000000..d5325fe --- /dev/null +++ b/exercises/day30_es.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Completa las Frases de Food & Dining", + "instructions": "Arrastra las palabras correctas para completar cada frase.", + "sentences": [ + { + "text": "La cuenta, por [favor]", + "blanks": [ + { + "placeholder": "favor", + "correct": "favor" + } + ] + }, + { + "text": "El menú, por [favor]", + "blanks": [ + { + "placeholder": "favor", + "correct": "favor" + } + ] + }, + { + "text": "Esto está [delicioso]", + "blanks": [ + { + "placeholder": "delicioso", + "correct": "delicioso" + } + ] + }, + { + "text": "Tengo [sed]", + "blanks": [ + { + "placeholder": "sed", + "correct": "sed" + } + ] + } + ], + "extraWords": [ + "hambre" + ] + }, + { + "type": "fill-blank", + "title": "Completa las Frases de Restaurants", + "instructions": "Completa estas frases llenando las palabras que faltan.", + "sentences": [ + { + "text": "Mesa para dos", + "blanks": [ + { + "placeholder": "mesa", + "correct": [ + "mesa" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Agua", + "blanks": [ + { + "placeholder": "agua", + "correct": [ + "agua" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Café", + "blanks": [ + { + "placeholder": "café", + "correct": [ + "café" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Me [gustaría]", + "blanks": [ + { + "placeholder": "gustaría", + "correct": [ + "gustaría" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "mesa", + "agua", + "café", + "gustaría" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day30_fr.json b/exercises/day30_fr.json new file mode 100644 index 0000000..d5245a5 --- /dev/null +++ b/exercises/day30_fr.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complétez les Phrases de Food & Dining", + "instructions": "Faites glisser les mots corrects pour compléter chaque phrase.", + "sentences": [ + { + "text": "Le menu, s'il [vous] plaît", + "blanks": [ + { + "placeholder": "vous", + "correct": "vous" + } + ] + }, + { + "text": "J'ai [faim]", + "blanks": [ + { + "placeholder": "faim", + "correct": "faim" + } + ] + }, + { + "text": "C'est [délicieux]", + "blanks": [ + { + "placeholder": "délicieux", + "correct": "délicieux" + } + ] + }, + { + "text": "L'addition, s'il [vous] plaît", + "blanks": [ + { + "placeholder": "vous", + "correct": "vous" + } + ] + } + ], + "extraWords": [ + "soif" + ] + }, + { + "type": "fill-blank", + "title": "Remplissez les Phrases de Restaurants", + "instructions": "Complétez ces phrases en remplissant les mots manquants.", + "sentences": [ + { + "text": "Table pour [deux]", + "blanks": [ + { + "placeholder": "deux", + "correct": [ + "deux" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Café", + "blanks": [ + { + "placeholder": "café", + "correct": [ + "café" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Eau", + "blanks": [ + { + "placeholder": "eau", + "correct": [ + "eau" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Je [voudrais]", + "blanks": [ + { + "placeholder": "voudrais", + "correct": [ + "voudrais" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "deux", + "café", + "eau", + "voudrais" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day30_pt.json b/exercises/day30_pt.json new file mode 100644 index 0000000..05a27f8 --- /dev/null +++ b/exercises/day30_pt.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete as Frases de Food & Dining", + "instructions": "Arraste as palavras corretas para completar cada frase.", + "sentences": [ + { + "text": "Isso está [delicioso]", + "blanks": [ + { + "placeholder": "delicioso", + "correct": "delicioso" + } + ] + }, + { + "text": "A conta, por [favor]", + "blanks": [ + { + "placeholder": "favor", + "correct": "favor" + } + ] + }, + { + "text": "O cardápio, por [favor]", + "blanks": [ + { + "placeholder": "favor", + "correct": "favor" + } + ] + }, + { + "text": "Estou com [sede]", + "blanks": [ + { + "placeholder": "sede", + "correct": "sede" + } + ] + } + ], + "extraWords": [ + "fome" + ] + }, + { + "type": "fill-blank", + "title": "Preencha as Frases de Restaurants", + "instructions": "Complete essas frases preenchendo as palavras em falta.", + "sentences": [ + { + "text": "Água", + "blanks": [ + { + "placeholder": "água", + "correct": [ + "água" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Mesa para [dois]", + "blanks": [ + { + "placeholder": "dois", + "correct": [ + "dois" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Eu [gostaria]", + "blanks": [ + { + "placeholder": "gostaria", + "correct": [ + "gostaria" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Café", + "blanks": [ + { + "placeholder": "café", + "correct": [ + "café" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "água", + "dois", + "gostaria", + "café" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day31_de.json b/exercises/day31_de.json new file mode 100644 index 0000000..28a4133 --- /dev/null +++ b/exercises/day31_de.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Vervollständigen Sie die Shopping-Phrasen", + "instructions": "Ziehen Sie die richtigen Wörter, um jede Phrase zu vervollständigen.", + "sentences": [ + { + "text": "Kann ich [mit] Karte zahlen?", + "blanks": [ + { + "placeholder": "mit", + "correct": "mit" + } + ] + }, + { + "text": "Es ist [teuer]", + "blanks": [ + { + "placeholder": "teuer", + "correct": "teuer" + } + ] + }, + { + "text": "Es ist [billig]", + "blanks": [ + { + "placeholder": "billig", + "correct": "billig" + } + ] + }, + { + "text": "Ich [nehme] es", + "blanks": [ + { + "placeholder": "nehme", + "correct": "nehme" + } + ] + } + ], + "extraWords": [ + "kostet" + ] + }, + { + "type": "fill-blank", + "title": "Füllen Sie die Money-Phrasen aus", + "instructions": "Vervollständigen Sie diese Phrasen, indem Sie die fehlenden Wörter einfügen.", + "sentences": [ + { + "text": "Quittung", + "blanks": [ + { + "placeholder": "quittung", + "correct": [ + "quittung" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Bargeld", + "blanks": [ + { + "placeholder": "bargeld", + "correct": [ + "bargeld" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Wechselgeld", + "blanks": [ + { + "placeholder": "wechselgeld", + "correct": [ + "wechselgeld" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Kreditkarte", + "blanks": [ + { + "placeholder": "kreditkarte", + "correct": [ + "kreditkarte" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "quittung", + "bargeld", + "wechselgeld", + "kreditkarte" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day31_en.json b/exercises/day31_en.json new file mode 100644 index 0000000..3889ab2 --- /dev/null +++ b/exercises/day31_en.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete the Shopping Phrases", + "instructions": "Drag the correct words to complete each phrase.", + "sentences": [ + { + "text": "It's [cheap]", + "blanks": [ + { + "placeholder": "cheap", + "correct": "cheap" + } + ] + }, + { + "text": "I'll [take] it", + "blanks": [ + { + "placeholder": "take", + "correct": "take" + } + ] + }, + { + "text": "Can I pay with [card]?", + "blanks": [ + { + "placeholder": "card", + "correct": "card" + } + ] + }, + { + "text": "It's [expensive]", + "blanks": [ + { + "placeholder": "expensive", + "correct": "expensive" + } + ] + } + ], + "extraWords": [ + "much" + ] + }, + { + "type": "fill-blank", + "title": "Fill in Money Phrases", + "instructions": "Complete these phrases by filling in the missing words.", + "sentences": [ + { + "text": "Cash", + "blanks": [ + { + "placeholder": "cash", + "correct": [ + "cash" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Credit [card]", + "blanks": [ + { + "placeholder": "card", + "correct": [ + "card" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Change", + "blanks": [ + { + "placeholder": "change", + "correct": [ + "change" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Receipt", + "blanks": [ + { + "placeholder": "receipt", + "correct": [ + "receipt" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "cash", + "card", + "change", + "receipt" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day31_es.json b/exercises/day31_es.json new file mode 100644 index 0000000..09e850e --- /dev/null +++ b/exercises/day31_es.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Completa las Frases de Shopping", + "instructions": "Arrastra las palabras correctas para completar cada frase.", + "sentences": [ + { + "text": "Es [barato]", + "blanks": [ + { + "placeholder": "barato", + "correct": "barato" + } + ] + }, + { + "text": "Me lo [llevo]", + "blanks": [ + { + "placeholder": "llevo", + "correct": "llevo" + } + ] + }, + { + "text": "Es [caro]", + "blanks": [ + { + "placeholder": "caro", + "correct": "caro" + } + ] + }, + { + "text": "¿Puedo [pagar] con tarjeta?", + "blanks": [ + { + "placeholder": "pagar", + "correct": "pagar" + } + ] + } + ], + "extraWords": [ + "cuesta" + ] + }, + { + "type": "fill-blank", + "title": "Completa las Frases de Money", + "instructions": "Completa estas frases llenando las palabras que faltan.", + "sentences": [ + { + "text": "Tarjeta de [crédito]", + "blanks": [ + { + "placeholder": "crédito", + "correct": [ + "crédito" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Recibo", + "blanks": [ + { + "placeholder": "recibo", + "correct": [ + "recibo" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Efectivo", + "blanks": [ + { + "placeholder": "efectivo", + "correct": [ + "efectivo" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Cambio", + "blanks": [ + { + "placeholder": "cambio", + "correct": [ + "cambio" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "crédito", + "recibo", + "efectivo", + "cambio" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day31_fr.json b/exercises/day31_fr.json new file mode 100644 index 0000000..9c3d48d --- /dev/null +++ b/exercises/day31_fr.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complétez les Phrases de Shopping", + "instructions": "Faites glisser les mots corrects pour compléter chaque phrase.", + "sentences": [ + { + "text": "C'est [bon] marché", + "blanks": [ + { + "placeholder": "bon", + "correct": "bon" + } + ] + }, + { + "text": "C'est [cher]", + "blanks": [ + { + "placeholder": "cher", + "correct": "cher" + } + ] + }, + { + "text": "Combien ça [coûte] ?", + "blanks": [ + { + "placeholder": "coûte", + "correct": "coûte" + } + ] + }, + { + "text": "Je le [prends]", + "blanks": [ + { + "placeholder": "prends", + "correct": "prends" + } + ] + } + ], + "extraWords": [ + "payer" + ] + }, + { + "type": "fill-blank", + "title": "Remplissez les Phrases de Money", + "instructions": "Complétez ces phrases en remplissant les mots manquants.", + "sentences": [ + { + "text": "Reçu", + "blanks": [ + { + "placeholder": "reçu", + "correct": [ + "reçu" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Espèces", + "blanks": [ + { + "placeholder": "espèces", + "correct": [ + "espèces" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Carte de [crédit]", + "blanks": [ + { + "placeholder": "crédit", + "correct": [ + "crédit" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Monnaie", + "blanks": [ + { + "placeholder": "monnaie", + "correct": [ + "monnaie" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "reçu", + "espèces", + "crédit", + "monnaie" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day31_pt.json b/exercises/day31_pt.json new file mode 100644 index 0000000..0bb7d5d --- /dev/null +++ b/exercises/day31_pt.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete as Frases de Shopping", + "instructions": "Arraste as palavras corretas para completar cada frase.", + "sentences": [ + { + "text": "Quanto [custa] isso?", + "blanks": [ + { + "placeholder": "custa", + "correct": "custa" + } + ] + }, + { + "text": "Posso [pagar] com cartão?", + "blanks": [ + { + "placeholder": "pagar", + "correct": "pagar" + } + ] + }, + { + "text": "É [barato]", + "blanks": [ + { + "placeholder": "barato", + "correct": "barato" + } + ] + }, + { + "text": "É [caro]", + "blanks": [ + { + "placeholder": "caro", + "correct": "caro" + } + ] + } + ], + "extraWords": [ + "levar" + ] + }, + { + "type": "fill-blank", + "title": "Preencha as Frases de Money", + "instructions": "Complete essas frases preenchendo as palavras em falta.", + "sentences": [ + { + "text": "Cartão de [crédito]", + "blanks": [ + { + "placeholder": "crédito", + "correct": [ + "crédito" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Dinheiro", + "blanks": [ + { + "placeholder": "dinheiro", + "correct": [ + "dinheiro" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Troco", + "blanks": [ + { + "placeholder": "troco", + "correct": [ + "troco" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Recibo", + "blanks": [ + { + "placeholder": "recibo", + "correct": [ + "recibo" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "crédito", + "dinheiro", + "troco", + "recibo" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day32_de.json b/exercises/day32_de.json new file mode 100644 index 0000000..dc209a2 --- /dev/null +++ b/exercises/day32_de.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Vervollständigen Sie die Shopping-Phrasen", + "instructions": "Ziehen Sie die richtigen Wörter, um jede Phrase zu vervollständigen.", + "sentences": [ + { + "text": "Ich [nehme] es", + "blanks": [ + { + "placeholder": "nehme", + "correct": "nehme" + } + ] + }, + { + "text": "Kann ich [mit] Karte zahlen?", + "blanks": [ + { + "placeholder": "mit", + "correct": "mit" + } + ] + }, + { + "text": "Wie viel [kostet] das?", + "blanks": [ + { + "placeholder": "kostet", + "correct": "kostet" + } + ] + }, + { + "text": "Es ist [billig]", + "blanks": [ + { + "placeholder": "billig", + "correct": "billig" + } + ] + } + ], + "extraWords": [ + "teuer" + ] + }, + { + "type": "fill-blank", + "title": "Füllen Sie die Money-Phrasen aus", + "instructions": "Vervollständigen Sie diese Phrasen, indem Sie die fehlenden Wörter einfügen.", + "sentences": [ + { + "text": "Wechselgeld", + "blanks": [ + { + "placeholder": "wechselgeld", + "correct": [ + "wechselgeld" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Quittung", + "blanks": [ + { + "placeholder": "quittung", + "correct": [ + "quittung" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Bargeld", + "blanks": [ + { + "placeholder": "bargeld", + "correct": [ + "bargeld" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Kreditkarte", + "blanks": [ + { + "placeholder": "kreditkarte", + "correct": [ + "kreditkarte" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "wechselgeld", + "quittung", + "bargeld", + "kreditkarte" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day32_en.json b/exercises/day32_en.json new file mode 100644 index 0000000..8cc8889 --- /dev/null +++ b/exercises/day32_en.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete the Shopping Phrases", + "instructions": "Drag the correct words to complete each phrase.", + "sentences": [ + { + "text": "It's [cheap]", + "blanks": [ + { + "placeholder": "cheap", + "correct": "cheap" + } + ] + }, + { + "text": "I'll [take] it", + "blanks": [ + { + "placeholder": "take", + "correct": "take" + } + ] + }, + { + "text": "How [much] is this?", + "blanks": [ + { + "placeholder": "much", + "correct": "much" + } + ] + }, + { + "text": "It's [expensive]", + "blanks": [ + { + "placeholder": "expensive", + "correct": "expensive" + } + ] + } + ], + "extraWords": [ + "card" + ] + }, + { + "type": "fill-blank", + "title": "Fill in Money Phrases", + "instructions": "Complete these phrases by filling in the missing words.", + "sentences": [ + { + "text": "Receipt", + "blanks": [ + { + "placeholder": "receipt", + "correct": [ + "receipt" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Change", + "blanks": [ + { + "placeholder": "change", + "correct": [ + "change" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Cash", + "blanks": [ + { + "placeholder": "cash", + "correct": [ + "cash" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Credit [card]", + "blanks": [ + { + "placeholder": "card", + "correct": [ + "card" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "receipt", + "change", + "cash", + "card" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day32_es.json b/exercises/day32_es.json new file mode 100644 index 0000000..1d4734a --- /dev/null +++ b/exercises/day32_es.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Completa las Frases de Shopping", + "instructions": "Arrastra las palabras correctas para completar cada frase.", + "sentences": [ + { + "text": "¿Puedo [pagar] con tarjeta?", + "blanks": [ + { + "placeholder": "pagar", + "correct": "pagar" + } + ] + }, + { + "text": "Es [barato]", + "blanks": [ + { + "placeholder": "barato", + "correct": "barato" + } + ] + }, + { + "text": "Me lo [llevo]", + "blanks": [ + { + "placeholder": "llevo", + "correct": "llevo" + } + ] + }, + { + "text": "¿Cuánto [cuesta] esto?", + "blanks": [ + { + "placeholder": "cuesta", + "correct": "cuesta" + } + ] + } + ], + "extraWords": [ + "caro" + ] + }, + { + "type": "fill-blank", + "title": "Completa las Frases de Money", + "instructions": "Completa estas frases llenando las palabras que faltan.", + "sentences": [ + { + "text": "Cambio", + "blanks": [ + { + "placeholder": "cambio", + "correct": [ + "cambio" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Efectivo", + "blanks": [ + { + "placeholder": "efectivo", + "correct": [ + "efectivo" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Recibo", + "blanks": [ + { + "placeholder": "recibo", + "correct": [ + "recibo" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Tarjeta de [crédito]", + "blanks": [ + { + "placeholder": "crédito", + "correct": [ + "crédito" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "cambio", + "efectivo", + "recibo", + "crédito" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day32_fr.json b/exercises/day32_fr.json new file mode 100644 index 0000000..b068198 --- /dev/null +++ b/exercises/day32_fr.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complétez les Phrases de Shopping", + "instructions": "Faites glisser les mots corrects pour compléter chaque phrase.", + "sentences": [ + { + "text": "C'est [bon] marché", + "blanks": [ + { + "placeholder": "bon", + "correct": "bon" + } + ] + }, + { + "text": "Combien ça [coûte] ?", + "blanks": [ + { + "placeholder": "coûte", + "correct": "coûte" + } + ] + }, + { + "text": "Puis-je [payer] par carte ?", + "blanks": [ + { + "placeholder": "payer", + "correct": "payer" + } + ] + }, + { + "text": "Je le [prends]", + "blanks": [ + { + "placeholder": "prends", + "correct": "prends" + } + ] + } + ], + "extraWords": [ + "cher" + ] + }, + { + "type": "fill-blank", + "title": "Remplissez les Phrases de Money", + "instructions": "Complétez ces phrases en remplissant les mots manquants.", + "sentences": [ + { + "text": "Monnaie", + "blanks": [ + { + "placeholder": "monnaie", + "correct": [ + "monnaie" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Espèces", + "blanks": [ + { + "placeholder": "espèces", + "correct": [ + "espèces" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Reçu", + "blanks": [ + { + "placeholder": "reçu", + "correct": [ + "reçu" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Carte de [crédit]", + "blanks": [ + { + "placeholder": "crédit", + "correct": [ + "crédit" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "monnaie", + "espèces", + "reçu", + "crédit" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day32_pt.json b/exercises/day32_pt.json new file mode 100644 index 0000000..a1f53da --- /dev/null +++ b/exercises/day32_pt.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete as Frases de Shopping", + "instructions": "Arraste as palavras corretas para completar cada frase.", + "sentences": [ + { + "text": "É [caro]", + "blanks": [ + { + "placeholder": "caro", + "correct": "caro" + } + ] + }, + { + "text": "É [barato]", + "blanks": [ + { + "placeholder": "barato", + "correct": "barato" + } + ] + }, + { + "text": "Quanto [custa] isso?", + "blanks": [ + { + "placeholder": "custa", + "correct": "custa" + } + ] + }, + { + "text": "Eu vou [levar]", + "blanks": [ + { + "placeholder": "levar", + "correct": "levar" + } + ] + } + ], + "extraWords": [ + "pagar" + ] + }, + { + "type": "fill-blank", + "title": "Preencha as Frases de Money", + "instructions": "Complete essas frases preenchendo as palavras em falta.", + "sentences": [ + { + "text": "Dinheiro", + "blanks": [ + { + "placeholder": "dinheiro", + "correct": [ + "dinheiro" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Recibo", + "blanks": [ + { + "placeholder": "recibo", + "correct": [ + "recibo" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Cartão de [crédito]", + "blanks": [ + { + "placeholder": "crédito", + "correct": [ + "crédito" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Troco", + "blanks": [ + { + "placeholder": "troco", + "correct": [ + "troco" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "dinheiro", + "recibo", + "crédito", + "troco" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day33_de.json b/exercises/day33_de.json new file mode 100644 index 0000000..b7a064c --- /dev/null +++ b/exercises/day33_de.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Vervollständigen Sie die Shopping-Phrasen", + "instructions": "Ziehen Sie die richtigen Wörter, um jede Phrase zu vervollständigen.", + "sentences": [ + { + "text": "Es ist [billig]", + "blanks": [ + { + "placeholder": "billig", + "correct": "billig" + } + ] + }, + { + "text": "Ich [nehme] es", + "blanks": [ + { + "placeholder": "nehme", + "correct": "nehme" + } + ] + }, + { + "text": "Kann ich [mit] Karte zahlen?", + "blanks": [ + { + "placeholder": "mit", + "correct": "mit" + } + ] + }, + { + "text": "Wie viel [kostet] das?", + "blanks": [ + { + "placeholder": "kostet", + "correct": "kostet" + } + ] + } + ], + "extraWords": [ + "teuer" + ] + }, + { + "type": "fill-blank", + "title": "Füllen Sie die Money-Phrasen aus", + "instructions": "Vervollständigen Sie diese Phrasen, indem Sie die fehlenden Wörter einfügen.", + "sentences": [ + { + "text": "Wechselgeld", + "blanks": [ + { + "placeholder": "wechselgeld", + "correct": [ + "wechselgeld" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Kreditkarte", + "blanks": [ + { + "placeholder": "kreditkarte", + "correct": [ + "kreditkarte" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Quittung", + "blanks": [ + { + "placeholder": "quittung", + "correct": [ + "quittung" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Bargeld", + "blanks": [ + { + "placeholder": "bargeld", + "correct": [ + "bargeld" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "wechselgeld", + "kreditkarte", + "quittung", + "bargeld" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day33_en.json b/exercises/day33_en.json new file mode 100644 index 0000000..50a5d72 --- /dev/null +++ b/exercises/day33_en.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete the Shopping Phrases", + "instructions": "Drag the correct words to complete each phrase.", + "sentences": [ + { + "text": "I'll [take] it", + "blanks": [ + { + "placeholder": "take", + "correct": "take" + } + ] + }, + { + "text": "How [much] is this?", + "blanks": [ + { + "placeholder": "much", + "correct": "much" + } + ] + }, + { + "text": "It's [cheap]", + "blanks": [ + { + "placeholder": "cheap", + "correct": "cheap" + } + ] + }, + { + "text": "Can I pay with [card]?", + "blanks": [ + { + "placeholder": "card", + "correct": "card" + } + ] + } + ], + "extraWords": [ + "expensive" + ] + }, + { + "type": "fill-blank", + "title": "Fill in Money Phrases", + "instructions": "Complete these phrases by filling in the missing words.", + "sentences": [ + { + "text": "Cash", + "blanks": [ + { + "placeholder": "cash", + "correct": [ + "cash" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Change", + "blanks": [ + { + "placeholder": "change", + "correct": [ + "change" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Credit [card]", + "blanks": [ + { + "placeholder": "card", + "correct": [ + "card" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Receipt", + "blanks": [ + { + "placeholder": "receipt", + "correct": [ + "receipt" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "cash", + "change", + "card", + "receipt" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day33_es.json b/exercises/day33_es.json new file mode 100644 index 0000000..1802c1e --- /dev/null +++ b/exercises/day33_es.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Completa las Frases de Shopping", + "instructions": "Arrastra las palabras correctas para completar cada frase.", + "sentences": [ + { + "text": "Es [caro]", + "blanks": [ + { + "placeholder": "caro", + "correct": "caro" + } + ] + }, + { + "text": "¿Cuánto [cuesta] esto?", + "blanks": [ + { + "placeholder": "cuesta", + "correct": "cuesta" + } + ] + }, + { + "text": "Es [barato]", + "blanks": [ + { + "placeholder": "barato", + "correct": "barato" + } + ] + }, + { + "text": "Me lo [llevo]", + "blanks": [ + { + "placeholder": "llevo", + "correct": "llevo" + } + ] + } + ], + "extraWords": [ + "pagar" + ] + }, + { + "type": "fill-blank", + "title": "Completa las Frases de Money", + "instructions": "Completa estas frases llenando las palabras que faltan.", + "sentences": [ + { + "text": "Cambio", + "blanks": [ + { + "placeholder": "cambio", + "correct": [ + "cambio" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Recibo", + "blanks": [ + { + "placeholder": "recibo", + "correct": [ + "recibo" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Efectivo", + "blanks": [ + { + "placeholder": "efectivo", + "correct": [ + "efectivo" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Tarjeta de [crédito]", + "blanks": [ + { + "placeholder": "crédito", + "correct": [ + "crédito" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "cambio", + "recibo", + "efectivo", + "crédito" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day33_fr.json b/exercises/day33_fr.json new file mode 100644 index 0000000..b12c6ae --- /dev/null +++ b/exercises/day33_fr.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complétez les Phrases de Shopping", + "instructions": "Faites glisser les mots corrects pour compléter chaque phrase.", + "sentences": [ + { + "text": "Combien ça [coûte] ?", + "blanks": [ + { + "placeholder": "coûte", + "correct": "coûte" + } + ] + }, + { + "text": "Je le [prends]", + "blanks": [ + { + "placeholder": "prends", + "correct": "prends" + } + ] + }, + { + "text": "C'est [bon] marché", + "blanks": [ + { + "placeholder": "bon", + "correct": "bon" + } + ] + }, + { + "text": "C'est [cher]", + "blanks": [ + { + "placeholder": "cher", + "correct": "cher" + } + ] + } + ], + "extraWords": [ + "payer" + ] + }, + { + "type": "fill-blank", + "title": "Remplissez les Phrases de Money", + "instructions": "Complétez ces phrases en remplissant les mots manquants.", + "sentences": [ + { + "text": "Carte de [crédit]", + "blanks": [ + { + "placeholder": "crédit", + "correct": [ + "crédit" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Reçu", + "blanks": [ + { + "placeholder": "reçu", + "correct": [ + "reçu" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Espèces", + "blanks": [ + { + "placeholder": "espèces", + "correct": [ + "espèces" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Monnaie", + "blanks": [ + { + "placeholder": "monnaie", + "correct": [ + "monnaie" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "crédit", + "reçu", + "espèces", + "monnaie" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day33_pt.json b/exercises/day33_pt.json new file mode 100644 index 0000000..05e6260 --- /dev/null +++ b/exercises/day33_pt.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete as Frases de Shopping", + "instructions": "Arraste as palavras corretas para completar cada frase.", + "sentences": [ + { + "text": "É [caro]", + "blanks": [ + { + "placeholder": "caro", + "correct": "caro" + } + ] + }, + { + "text": "Eu vou [levar]", + "blanks": [ + { + "placeholder": "levar", + "correct": "levar" + } + ] + }, + { + "text": "Posso [pagar] com cartão?", + "blanks": [ + { + "placeholder": "pagar", + "correct": "pagar" + } + ] + }, + { + "text": "É [barato]", + "blanks": [ + { + "placeholder": "barato", + "correct": "barato" + } + ] + } + ], + "extraWords": [ + "custa" + ] + }, + { + "type": "fill-blank", + "title": "Preencha as Frases de Money", + "instructions": "Complete essas frases preenchendo as palavras em falta.", + "sentences": [ + { + "text": "Troco", + "blanks": [ + { + "placeholder": "troco", + "correct": [ + "troco" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Dinheiro", + "blanks": [ + { + "placeholder": "dinheiro", + "correct": [ + "dinheiro" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Recibo", + "blanks": [ + { + "placeholder": "recibo", + "correct": [ + "recibo" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Cartão de [crédito]", + "blanks": [ + { + "placeholder": "crédito", + "correct": [ + "crédito" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "troco", + "dinheiro", + "recibo", + "crédito" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day34_de.json b/exercises/day34_de.json new file mode 100644 index 0000000..02c6003 --- /dev/null +++ b/exercises/day34_de.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Vervollständigen Sie die Shopping-Phrasen", + "instructions": "Ziehen Sie die richtigen Wörter, um jede Phrase zu vervollständigen.", + "sentences": [ + { + "text": "Ich [nehme] es", + "blanks": [ + { + "placeholder": "nehme", + "correct": "nehme" + } + ] + }, + { + "text": "Es ist [billig]", + "blanks": [ + { + "placeholder": "billig", + "correct": "billig" + } + ] + }, + { + "text": "Kann ich [mit] Karte zahlen?", + "blanks": [ + { + "placeholder": "mit", + "correct": "mit" + } + ] + }, + { + "text": "Es ist [teuer]", + "blanks": [ + { + "placeholder": "teuer", + "correct": "teuer" + } + ] + } + ], + "extraWords": [ + "kostet" + ] + }, + { + "type": "fill-blank", + "title": "Füllen Sie die Money-Phrasen aus", + "instructions": "Vervollständigen Sie diese Phrasen, indem Sie die fehlenden Wörter einfügen.", + "sentences": [ + { + "text": "Kreditkarte", + "blanks": [ + { + "placeholder": "kreditkarte", + "correct": [ + "kreditkarte" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Wechselgeld", + "blanks": [ + { + "placeholder": "wechselgeld", + "correct": [ + "wechselgeld" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Bargeld", + "blanks": [ + { + "placeholder": "bargeld", + "correct": [ + "bargeld" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Quittung", + "blanks": [ + { + "placeholder": "quittung", + "correct": [ + "quittung" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "kreditkarte", + "wechselgeld", + "bargeld", + "quittung" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day34_en.json b/exercises/day34_en.json new file mode 100644 index 0000000..6793f4a --- /dev/null +++ b/exercises/day34_en.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete the Shopping Phrases", + "instructions": "Drag the correct words to complete each phrase.", + "sentences": [ + { + "text": "Can I pay with [card]?", + "blanks": [ + { + "placeholder": "card", + "correct": "card" + } + ] + }, + { + "text": "I'll [take] it", + "blanks": [ + { + "placeholder": "take", + "correct": "take" + } + ] + }, + { + "text": "How [much] is this?", + "blanks": [ + { + "placeholder": "much", + "correct": "much" + } + ] + }, + { + "text": "It's [expensive]", + "blanks": [ + { + "placeholder": "expensive", + "correct": "expensive" + } + ] + } + ], + "extraWords": [ + "cheap" + ] + }, + { + "type": "fill-blank", + "title": "Fill in Money Phrases", + "instructions": "Complete these phrases by filling in the missing words.", + "sentences": [ + { + "text": "Change", + "blanks": [ + { + "placeholder": "change", + "correct": [ + "change" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Credit [card]", + "blanks": [ + { + "placeholder": "card", + "correct": [ + "card" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Receipt", + "blanks": [ + { + "placeholder": "receipt", + "correct": [ + "receipt" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Cash", + "blanks": [ + { + "placeholder": "cash", + "correct": [ + "cash" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "change", + "card", + "receipt", + "cash" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day34_es.json b/exercises/day34_es.json new file mode 100644 index 0000000..434f6fa --- /dev/null +++ b/exercises/day34_es.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Completa las Frases de Shopping", + "instructions": "Arrastra las palabras correctas para completar cada frase.", + "sentences": [ + { + "text": "Es [barato]", + "blanks": [ + { + "placeholder": "barato", + "correct": "barato" + } + ] + }, + { + "text": "¿Puedo [pagar] con tarjeta?", + "blanks": [ + { + "placeholder": "pagar", + "correct": "pagar" + } + ] + }, + { + "text": "¿Cuánto [cuesta] esto?", + "blanks": [ + { + "placeholder": "cuesta", + "correct": "cuesta" + } + ] + }, + { + "text": "Me lo [llevo]", + "blanks": [ + { + "placeholder": "llevo", + "correct": "llevo" + } + ] + } + ], + "extraWords": [ + "caro" + ] + }, + { + "type": "fill-blank", + "title": "Completa las Frases de Money", + "instructions": "Completa estas frases llenando las palabras que faltan.", + "sentences": [ + { + "text": "Cambio", + "blanks": [ + { + "placeholder": "cambio", + "correct": [ + "cambio" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Recibo", + "blanks": [ + { + "placeholder": "recibo", + "correct": [ + "recibo" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Tarjeta de [crédito]", + "blanks": [ + { + "placeholder": "crédito", + "correct": [ + "crédito" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Efectivo", + "blanks": [ + { + "placeholder": "efectivo", + "correct": [ + "efectivo" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "cambio", + "recibo", + "crédito", + "efectivo" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day34_fr.json b/exercises/day34_fr.json new file mode 100644 index 0000000..ea605da --- /dev/null +++ b/exercises/day34_fr.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complétez les Phrases de Shopping", + "instructions": "Faites glisser les mots corrects pour compléter chaque phrase.", + "sentences": [ + { + "text": "C'est [cher]", + "blanks": [ + { + "placeholder": "cher", + "correct": "cher" + } + ] + }, + { + "text": "Puis-je [payer] par carte ?", + "blanks": [ + { + "placeholder": "payer", + "correct": "payer" + } + ] + }, + { + "text": "Combien ça [coûte] ?", + "blanks": [ + { + "placeholder": "coûte", + "correct": "coûte" + } + ] + }, + { + "text": "C'est [bon] marché", + "blanks": [ + { + "placeholder": "bon", + "correct": "bon" + } + ] + } + ], + "extraWords": [ + "prends" + ] + }, + { + "type": "fill-blank", + "title": "Remplissez les Phrases de Money", + "instructions": "Complétez ces phrases en remplissant les mots manquants.", + "sentences": [ + { + "text": "Reçu", + "blanks": [ + { + "placeholder": "reçu", + "correct": [ + "reçu" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Espèces", + "blanks": [ + { + "placeholder": "espèces", + "correct": [ + "espèces" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Carte de [crédit]", + "blanks": [ + { + "placeholder": "crédit", + "correct": [ + "crédit" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Monnaie", + "blanks": [ + { + "placeholder": "monnaie", + "correct": [ + "monnaie" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "reçu", + "espèces", + "crédit", + "monnaie" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day34_pt.json b/exercises/day34_pt.json new file mode 100644 index 0000000..5d30f54 --- /dev/null +++ b/exercises/day34_pt.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete as Frases de Shopping", + "instructions": "Arraste as palavras corretas para completar cada frase.", + "sentences": [ + { + "text": "É [caro]", + "blanks": [ + { + "placeholder": "caro", + "correct": "caro" + } + ] + }, + { + "text": "Posso [pagar] com cartão?", + "blanks": [ + { + "placeholder": "pagar", + "correct": "pagar" + } + ] + }, + { + "text": "É [barato]", + "blanks": [ + { + "placeholder": "barato", + "correct": "barato" + } + ] + }, + { + "text": "Quanto [custa] isso?", + "blanks": [ + { + "placeholder": "custa", + "correct": "custa" + } + ] + } + ], + "extraWords": [ + "levar" + ] + }, + { + "type": "fill-blank", + "title": "Preencha as Frases de Money", + "instructions": "Complete essas frases preenchendo as palavras em falta.", + "sentences": [ + { + "text": "Dinheiro", + "blanks": [ + { + "placeholder": "dinheiro", + "correct": [ + "dinheiro" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Troco", + "blanks": [ + { + "placeholder": "troco", + "correct": [ + "troco" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Recibo", + "blanks": [ + { + "placeholder": "recibo", + "correct": [ + "recibo" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Cartão de [crédito]", + "blanks": [ + { + "placeholder": "crédito", + "correct": [ + "crédito" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "dinheiro", + "troco", + "recibo", + "crédito" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day35_de.json b/exercises/day35_de.json new file mode 100644 index 0000000..5661e54 --- /dev/null +++ b/exercises/day35_de.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Vervollständigen Sie die Shopping-Phrasen", + "instructions": "Ziehen Sie die richtigen Wörter, um jede Phrase zu vervollständigen.", + "sentences": [ + { + "text": "Es ist [teuer]", + "blanks": [ + { + "placeholder": "teuer", + "correct": "teuer" + } + ] + }, + { + "text": "Ich [nehme] es", + "blanks": [ + { + "placeholder": "nehme", + "correct": "nehme" + } + ] + }, + { + "text": "Es ist [billig]", + "blanks": [ + { + "placeholder": "billig", + "correct": "billig" + } + ] + }, + { + "text": "Wie viel [kostet] das?", + "blanks": [ + { + "placeholder": "kostet", + "correct": "kostet" + } + ] + } + ], + "extraWords": [ + "mit" + ] + }, + { + "type": "fill-blank", + "title": "Füllen Sie die Money-Phrasen aus", + "instructions": "Vervollständigen Sie diese Phrasen, indem Sie die fehlenden Wörter einfügen.", + "sentences": [ + { + "text": "Bargeld", + "blanks": [ + { + "placeholder": "bargeld", + "correct": [ + "bargeld" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Kreditkarte", + "blanks": [ + { + "placeholder": "kreditkarte", + "correct": [ + "kreditkarte" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Wechselgeld", + "blanks": [ + { + "placeholder": "wechselgeld", + "correct": [ + "wechselgeld" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Quittung", + "blanks": [ + { + "placeholder": "quittung", + "correct": [ + "quittung" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "bargeld", + "kreditkarte", + "wechselgeld", + "quittung" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day35_en.json b/exercises/day35_en.json new file mode 100644 index 0000000..982e5b7 --- /dev/null +++ b/exercises/day35_en.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete the Shopping Phrases", + "instructions": "Drag the correct words to complete each phrase.", + "sentences": [ + { + "text": "I'll [take] it", + "blanks": [ + { + "placeholder": "take", + "correct": "take" + } + ] + }, + { + "text": "It's [cheap]", + "blanks": [ + { + "placeholder": "cheap", + "correct": "cheap" + } + ] + }, + { + "text": "How [much] is this?", + "blanks": [ + { + "placeholder": "much", + "correct": "much" + } + ] + }, + { + "text": "It's [expensive]", + "blanks": [ + { + "placeholder": "expensive", + "correct": "expensive" + } + ] + } + ], + "extraWords": [ + "card" + ] + }, + { + "type": "fill-blank", + "title": "Fill in Money Phrases", + "instructions": "Complete these phrases by filling in the missing words.", + "sentences": [ + { + "text": "Cash", + "blanks": [ + { + "placeholder": "cash", + "correct": [ + "cash" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Receipt", + "blanks": [ + { + "placeholder": "receipt", + "correct": [ + "receipt" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Change", + "blanks": [ + { + "placeholder": "change", + "correct": [ + "change" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Credit [card]", + "blanks": [ + { + "placeholder": "card", + "correct": [ + "card" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "cash", + "receipt", + "change", + "card" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day35_es.json b/exercises/day35_es.json new file mode 100644 index 0000000..76150c0 --- /dev/null +++ b/exercises/day35_es.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Completa las Frases de Shopping", + "instructions": "Arrastra las palabras correctas para completar cada frase.", + "sentences": [ + { + "text": "¿Puedo [pagar] con tarjeta?", + "blanks": [ + { + "placeholder": "pagar", + "correct": "pagar" + } + ] + }, + { + "text": "¿Cuánto [cuesta] esto?", + "blanks": [ + { + "placeholder": "cuesta", + "correct": "cuesta" + } + ] + }, + { + "text": "Me lo [llevo]", + "blanks": [ + { + "placeholder": "llevo", + "correct": "llevo" + } + ] + }, + { + "text": "Es [caro]", + "blanks": [ + { + "placeholder": "caro", + "correct": "caro" + } + ] + } + ], + "extraWords": [ + "barato" + ] + }, + { + "type": "fill-blank", + "title": "Completa las Frases de Money", + "instructions": "Completa estas frases llenando las palabras que faltan.", + "sentences": [ + { + "text": "Recibo", + "blanks": [ + { + "placeholder": "recibo", + "correct": [ + "recibo" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Efectivo", + "blanks": [ + { + "placeholder": "efectivo", + "correct": [ + "efectivo" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Cambio", + "blanks": [ + { + "placeholder": "cambio", + "correct": [ + "cambio" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Tarjeta de [crédito]", + "blanks": [ + { + "placeholder": "crédito", + "correct": [ + "crédito" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "recibo", + "efectivo", + "cambio", + "crédito" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day35_fr.json b/exercises/day35_fr.json new file mode 100644 index 0000000..e168ad1 --- /dev/null +++ b/exercises/day35_fr.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complétez les Phrases de Shopping", + "instructions": "Faites glisser les mots corrects pour compléter chaque phrase.", + "sentences": [ + { + "text": "Combien ça [coûte] ?", + "blanks": [ + { + "placeholder": "coûte", + "correct": "coûte" + } + ] + }, + { + "text": "C'est [bon] marché", + "blanks": [ + { + "placeholder": "bon", + "correct": "bon" + } + ] + }, + { + "text": "C'est [cher]", + "blanks": [ + { + "placeholder": "cher", + "correct": "cher" + } + ] + }, + { + "text": "Je le [prends]", + "blanks": [ + { + "placeholder": "prends", + "correct": "prends" + } + ] + } + ], + "extraWords": [ + "payer" + ] + }, + { + "type": "fill-blank", + "title": "Remplissez les Phrases de Money", + "instructions": "Complétez ces phrases en remplissant les mots manquants.", + "sentences": [ + { + "text": "Reçu", + "blanks": [ + { + "placeholder": "reçu", + "correct": [ + "reçu" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Monnaie", + "blanks": [ + { + "placeholder": "monnaie", + "correct": [ + "monnaie" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Carte de [crédit]", + "blanks": [ + { + "placeholder": "crédit", + "correct": [ + "crédit" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Espèces", + "blanks": [ + { + "placeholder": "espèces", + "correct": [ + "espèces" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "reçu", + "monnaie", + "crédit", + "espèces" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day35_pt.json b/exercises/day35_pt.json new file mode 100644 index 0000000..eae8b82 --- /dev/null +++ b/exercises/day35_pt.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete as Frases de Shopping", + "instructions": "Arraste as palavras corretas para completar cada frase.", + "sentences": [ + { + "text": "É [barato]", + "blanks": [ + { + "placeholder": "barato", + "correct": "barato" + } + ] + }, + { + "text": "Posso [pagar] com cartão?", + "blanks": [ + { + "placeholder": "pagar", + "correct": "pagar" + } + ] + }, + { + "text": "É [caro]", + "blanks": [ + { + "placeholder": "caro", + "correct": "caro" + } + ] + }, + { + "text": "Eu vou [levar]", + "blanks": [ + { + "placeholder": "levar", + "correct": "levar" + } + ] + } + ], + "extraWords": [ + "custa" + ] + }, + { + "type": "fill-blank", + "title": "Preencha as Frases de Money", + "instructions": "Complete essas frases preenchendo as palavras em falta.", + "sentences": [ + { + "text": "Recibo", + "blanks": [ + { + "placeholder": "recibo", + "correct": [ + "recibo" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Troco", + "blanks": [ + { + "placeholder": "troco", + "correct": [ + "troco" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Cartão de [crédito]", + "blanks": [ + { + "placeholder": "crédito", + "correct": [ + "crédito" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Dinheiro", + "blanks": [ + { + "placeholder": "dinheiro", + "correct": [ + "dinheiro" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "recibo", + "troco", + "crédito", + "dinheiro" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day36_de.json b/exercises/day36_de.json new file mode 100644 index 0000000..087dcd6 --- /dev/null +++ b/exercises/day36_de.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Vervollständigen Sie die Shopping-Phrasen", + "instructions": "Ziehen Sie die richtigen Wörter, um jede Phrase zu vervollständigen.", + "sentences": [ + { + "text": "Kann ich [mit] Karte zahlen?", + "blanks": [ + { + "placeholder": "mit", + "correct": "mit" + } + ] + }, + { + "text": "Ich [nehme] es", + "blanks": [ + { + "placeholder": "nehme", + "correct": "nehme" + } + ] + }, + { + "text": "Es ist [teuer]", + "blanks": [ + { + "placeholder": "teuer", + "correct": "teuer" + } + ] + }, + { + "text": "Wie viel [kostet] das?", + "blanks": [ + { + "placeholder": "kostet", + "correct": "kostet" + } + ] + } + ], + "extraWords": [ + "billig" + ] + }, + { + "type": "fill-blank", + "title": "Füllen Sie die Money-Phrasen aus", + "instructions": "Vervollständigen Sie diese Phrasen, indem Sie die fehlenden Wörter einfügen.", + "sentences": [ + { + "text": "Wechselgeld", + "blanks": [ + { + "placeholder": "wechselgeld", + "correct": [ + "wechselgeld" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Bargeld", + "blanks": [ + { + "placeholder": "bargeld", + "correct": [ + "bargeld" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Kreditkarte", + "blanks": [ + { + "placeholder": "kreditkarte", + "correct": [ + "kreditkarte" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Quittung", + "blanks": [ + { + "placeholder": "quittung", + "correct": [ + "quittung" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "wechselgeld", + "bargeld", + "kreditkarte", + "quittung" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day36_en.json b/exercises/day36_en.json new file mode 100644 index 0000000..c03b294 --- /dev/null +++ b/exercises/day36_en.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete the Shopping Phrases", + "instructions": "Drag the correct words to complete each phrase.", + "sentences": [ + { + "text": "I'll [take] it", + "blanks": [ + { + "placeholder": "take", + "correct": "take" + } + ] + }, + { + "text": "It's [cheap]", + "blanks": [ + { + "placeholder": "cheap", + "correct": "cheap" + } + ] + }, + { + "text": "It's [expensive]", + "blanks": [ + { + "placeholder": "expensive", + "correct": "expensive" + } + ] + }, + { + "text": "How [much] is this?", + "blanks": [ + { + "placeholder": "much", + "correct": "much" + } + ] + } + ], + "extraWords": [ + "card" + ] + }, + { + "type": "fill-blank", + "title": "Fill in Money Phrases", + "instructions": "Complete these phrases by filling in the missing words.", + "sentences": [ + { + "text": "Receipt", + "blanks": [ + { + "placeholder": "receipt", + "correct": [ + "receipt" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Cash", + "blanks": [ + { + "placeholder": "cash", + "correct": [ + "cash" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Credit [card]", + "blanks": [ + { + "placeholder": "card", + "correct": [ + "card" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Change", + "blanks": [ + { + "placeholder": "change", + "correct": [ + "change" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "receipt", + "cash", + "card", + "change" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day36_es.json b/exercises/day36_es.json new file mode 100644 index 0000000..0685b42 --- /dev/null +++ b/exercises/day36_es.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Completa las Frases de Shopping", + "instructions": "Arrastra las palabras correctas para completar cada frase.", + "sentences": [ + { + "text": "¿Cuánto [cuesta] esto?", + "blanks": [ + { + "placeholder": "cuesta", + "correct": "cuesta" + } + ] + }, + { + "text": "¿Puedo [pagar] con tarjeta?", + "blanks": [ + { + "placeholder": "pagar", + "correct": "pagar" + } + ] + }, + { + "text": "Es [barato]", + "blanks": [ + { + "placeholder": "barato", + "correct": "barato" + } + ] + }, + { + "text": "Me lo [llevo]", + "blanks": [ + { + "placeholder": "llevo", + "correct": "llevo" + } + ] + } + ], + "extraWords": [ + "caro" + ] + }, + { + "type": "fill-blank", + "title": "Completa las Frases de Money", + "instructions": "Completa estas frases llenando las palabras que faltan.", + "sentences": [ + { + "text": "Recibo", + "blanks": [ + { + "placeholder": "recibo", + "correct": [ + "recibo" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Cambio", + "blanks": [ + { + "placeholder": "cambio", + "correct": [ + "cambio" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Tarjeta de [crédito]", + "blanks": [ + { + "placeholder": "crédito", + "correct": [ + "crédito" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Efectivo", + "blanks": [ + { + "placeholder": "efectivo", + "correct": [ + "efectivo" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "recibo", + "cambio", + "crédito", + "efectivo" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day36_fr.json b/exercises/day36_fr.json new file mode 100644 index 0000000..092f002 --- /dev/null +++ b/exercises/day36_fr.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complétez les Phrases de Shopping", + "instructions": "Faites glisser les mots corrects pour compléter chaque phrase.", + "sentences": [ + { + "text": "Je le [prends]", + "blanks": [ + { + "placeholder": "prends", + "correct": "prends" + } + ] + }, + { + "text": "Puis-je [payer] par carte ?", + "blanks": [ + { + "placeholder": "payer", + "correct": "payer" + } + ] + }, + { + "text": "C'est [cher]", + "blanks": [ + { + "placeholder": "cher", + "correct": "cher" + } + ] + }, + { + "text": "Combien ça [coûte] ?", + "blanks": [ + { + "placeholder": "coûte", + "correct": "coûte" + } + ] + } + ], + "extraWords": [ + "bon" + ] + }, + { + "type": "fill-blank", + "title": "Remplissez les Phrases de Money", + "instructions": "Complétez ces phrases en remplissant les mots manquants.", + "sentences": [ + { + "text": "Reçu", + "blanks": [ + { + "placeholder": "reçu", + "correct": [ + "reçu" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Carte de [crédit]", + "blanks": [ + { + "placeholder": "crédit", + "correct": [ + "crédit" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Espèces", + "blanks": [ + { + "placeholder": "espèces", + "correct": [ + "espèces" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Monnaie", + "blanks": [ + { + "placeholder": "monnaie", + "correct": [ + "monnaie" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "reçu", + "crédit", + "espèces", + "monnaie" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day36_pt.json b/exercises/day36_pt.json new file mode 100644 index 0000000..fab1eef --- /dev/null +++ b/exercises/day36_pt.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete as Frases de Shopping", + "instructions": "Arraste as palavras corretas para completar cada frase.", + "sentences": [ + { + "text": "Posso [pagar] com cartão?", + "blanks": [ + { + "placeholder": "pagar", + "correct": "pagar" + } + ] + }, + { + "text": "É [barato]", + "blanks": [ + { + "placeholder": "barato", + "correct": "barato" + } + ] + }, + { + "text": "Eu vou [levar]", + "blanks": [ + { + "placeholder": "levar", + "correct": "levar" + } + ] + }, + { + "text": "É [caro]", + "blanks": [ + { + "placeholder": "caro", + "correct": "caro" + } + ] + } + ], + "extraWords": [ + "custa" + ] + }, + { + "type": "fill-blank", + "title": "Preencha as Frases de Money", + "instructions": "Complete essas frases preenchendo as palavras em falta.", + "sentences": [ + { + "text": "Troco", + "blanks": [ + { + "placeholder": "troco", + "correct": [ + "troco" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Dinheiro", + "blanks": [ + { + "placeholder": "dinheiro", + "correct": [ + "dinheiro" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Recibo", + "blanks": [ + { + "placeholder": "recibo", + "correct": [ + "recibo" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Cartão de [crédito]", + "blanks": [ + { + "placeholder": "crédito", + "correct": [ + "crédito" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "troco", + "dinheiro", + "recibo", + "crédito" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day37_de.json b/exercises/day37_de.json new file mode 100644 index 0000000..e9a5af0 --- /dev/null +++ b/exercises/day37_de.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Vervollständigen Sie die Shopping-Phrasen", + "instructions": "Ziehen Sie die richtigen Wörter, um jede Phrase zu vervollständigen.", + "sentences": [ + { + "text": "Es ist [billig]", + "blanks": [ + { + "placeholder": "billig", + "correct": "billig" + } + ] + }, + { + "text": "Ich [nehme] es", + "blanks": [ + { + "placeholder": "nehme", + "correct": "nehme" + } + ] + }, + { + "text": "Wie viel [kostet] das?", + "blanks": [ + { + "placeholder": "kostet", + "correct": "kostet" + } + ] + }, + { + "text": "Kann ich [mit] Karte zahlen?", + "blanks": [ + { + "placeholder": "mit", + "correct": "mit" + } + ] + } + ], + "extraWords": [ + "teuer" + ] + }, + { + "type": "fill-blank", + "title": "Füllen Sie die Money-Phrasen aus", + "instructions": "Vervollständigen Sie diese Phrasen, indem Sie die fehlenden Wörter einfügen.", + "sentences": [ + { + "text": "Kreditkarte", + "blanks": [ + { + "placeholder": "kreditkarte", + "correct": [ + "kreditkarte" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Quittung", + "blanks": [ + { + "placeholder": "quittung", + "correct": [ + "quittung" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Bargeld", + "blanks": [ + { + "placeholder": "bargeld", + "correct": [ + "bargeld" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Wechselgeld", + "blanks": [ + { + "placeholder": "wechselgeld", + "correct": [ + "wechselgeld" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "kreditkarte", + "quittung", + "bargeld", + "wechselgeld" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day37_en.json b/exercises/day37_en.json new file mode 100644 index 0000000..0f2bde2 --- /dev/null +++ b/exercises/day37_en.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete the Shopping Phrases", + "instructions": "Drag the correct words to complete each phrase.", + "sentences": [ + { + "text": "Can I pay with [card]?", + "blanks": [ + { + "placeholder": "card", + "correct": "card" + } + ] + }, + { + "text": "It's [expensive]", + "blanks": [ + { + "placeholder": "expensive", + "correct": "expensive" + } + ] + }, + { + "text": "How [much] is this?", + "blanks": [ + { + "placeholder": "much", + "correct": "much" + } + ] + }, + { + "text": "It's [cheap]", + "blanks": [ + { + "placeholder": "cheap", + "correct": "cheap" + } + ] + } + ], + "extraWords": [ + "take" + ] + }, + { + "type": "fill-blank", + "title": "Fill in Money Phrases", + "instructions": "Complete these phrases by filling in the missing words.", + "sentences": [ + { + "text": "Credit [card]", + "blanks": [ + { + "placeholder": "card", + "correct": [ + "card" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Change", + "blanks": [ + { + "placeholder": "change", + "correct": [ + "change" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Receipt", + "blanks": [ + { + "placeholder": "receipt", + "correct": [ + "receipt" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Cash", + "blanks": [ + { + "placeholder": "cash", + "correct": [ + "cash" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "card", + "change", + "receipt", + "cash" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day37_es.json b/exercises/day37_es.json new file mode 100644 index 0000000..5fa88aa --- /dev/null +++ b/exercises/day37_es.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Completa las Frases de Shopping", + "instructions": "Arrastra las palabras correctas para completar cada frase.", + "sentences": [ + { + "text": "¿Cuánto [cuesta] esto?", + "blanks": [ + { + "placeholder": "cuesta", + "correct": "cuesta" + } + ] + }, + { + "text": "Es [barato]", + "blanks": [ + { + "placeholder": "barato", + "correct": "barato" + } + ] + }, + { + "text": "Es [caro]", + "blanks": [ + { + "placeholder": "caro", + "correct": "caro" + } + ] + }, + { + "text": "Me lo [llevo]", + "blanks": [ + { + "placeholder": "llevo", + "correct": "llevo" + } + ] + } + ], + "extraWords": [ + "pagar" + ] + }, + { + "type": "fill-blank", + "title": "Completa las Frases de Money", + "instructions": "Completa estas frases llenando las palabras que faltan.", + "sentences": [ + { + "text": "Cambio", + "blanks": [ + { + "placeholder": "cambio", + "correct": [ + "cambio" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Efectivo", + "blanks": [ + { + "placeholder": "efectivo", + "correct": [ + "efectivo" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Tarjeta de [crédito]", + "blanks": [ + { + "placeholder": "crédito", + "correct": [ + "crédito" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Recibo", + "blanks": [ + { + "placeholder": "recibo", + "correct": [ + "recibo" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "cambio", + "efectivo", + "crédito", + "recibo" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day37_fr.json b/exercises/day37_fr.json new file mode 100644 index 0000000..eb49a20 --- /dev/null +++ b/exercises/day37_fr.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complétez les Phrases de Shopping", + "instructions": "Faites glisser les mots corrects pour compléter chaque phrase.", + "sentences": [ + { + "text": "C'est [bon] marché", + "blanks": [ + { + "placeholder": "bon", + "correct": "bon" + } + ] + }, + { + "text": "Je le [prends]", + "blanks": [ + { + "placeholder": "prends", + "correct": "prends" + } + ] + }, + { + "text": "Combien ça [coûte] ?", + "blanks": [ + { + "placeholder": "coûte", + "correct": "coûte" + } + ] + }, + { + "text": "Puis-je [payer] par carte ?", + "blanks": [ + { + "placeholder": "payer", + "correct": "payer" + } + ] + } + ], + "extraWords": [ + "cher" + ] + }, + { + "type": "fill-blank", + "title": "Remplissez les Phrases de Money", + "instructions": "Complétez ces phrases en remplissant les mots manquants.", + "sentences": [ + { + "text": "Espèces", + "blanks": [ + { + "placeholder": "espèces", + "correct": [ + "espèces" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Carte de [crédit]", + "blanks": [ + { + "placeholder": "crédit", + "correct": [ + "crédit" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Monnaie", + "blanks": [ + { + "placeholder": "monnaie", + "correct": [ + "monnaie" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Reçu", + "blanks": [ + { + "placeholder": "reçu", + "correct": [ + "reçu" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "espèces", + "crédit", + "monnaie", + "reçu" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day37_pt.json b/exercises/day37_pt.json new file mode 100644 index 0000000..d09a945 --- /dev/null +++ b/exercises/day37_pt.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete as Frases de Shopping", + "instructions": "Arraste as palavras corretas para completar cada frase.", + "sentences": [ + { + "text": "É [caro]", + "blanks": [ + { + "placeholder": "caro", + "correct": "caro" + } + ] + }, + { + "text": "Quanto [custa] isso?", + "blanks": [ + { + "placeholder": "custa", + "correct": "custa" + } + ] + }, + { + "text": "É [barato]", + "blanks": [ + { + "placeholder": "barato", + "correct": "barato" + } + ] + }, + { + "text": "Posso [pagar] com cartão?", + "blanks": [ + { + "placeholder": "pagar", + "correct": "pagar" + } + ] + } + ], + "extraWords": [ + "levar" + ] + }, + { + "type": "fill-blank", + "title": "Preencha as Frases de Money", + "instructions": "Complete essas frases preenchendo as palavras em falta.", + "sentences": [ + { + "text": "Recibo", + "blanks": [ + { + "placeholder": "recibo", + "correct": [ + "recibo" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Dinheiro", + "blanks": [ + { + "placeholder": "dinheiro", + "correct": [ + "dinheiro" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Cartão de [crédito]", + "blanks": [ + { + "placeholder": "crédito", + "correct": [ + "crédito" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Troco", + "blanks": [ + { + "placeholder": "troco", + "correct": [ + "troco" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "recibo", + "dinheiro", + "crédito", + "troco" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day38_de.json b/exercises/day38_de.json new file mode 100644 index 0000000..63f799d --- /dev/null +++ b/exercises/day38_de.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Vervollständigen Sie die Shopping-Phrasen", + "instructions": "Ziehen Sie die richtigen Wörter, um jede Phrase zu vervollständigen.", + "sentences": [ + { + "text": "Es ist [teuer]", + "blanks": [ + { + "placeholder": "teuer", + "correct": "teuer" + } + ] + }, + { + "text": "Wie viel [kostet] das?", + "blanks": [ + { + "placeholder": "kostet", + "correct": "kostet" + } + ] + }, + { + "text": "Es ist [billig]", + "blanks": [ + { + "placeholder": "billig", + "correct": "billig" + } + ] + }, + { + "text": "Kann ich [mit] Karte zahlen?", + "blanks": [ + { + "placeholder": "mit", + "correct": "mit" + } + ] + } + ], + "extraWords": [ + "nehme" + ] + }, + { + "type": "fill-blank", + "title": "Füllen Sie die Money-Phrasen aus", + "instructions": "Vervollständigen Sie diese Phrasen, indem Sie die fehlenden Wörter einfügen.", + "sentences": [ + { + "text": "Bargeld", + "blanks": [ + { + "placeholder": "bargeld", + "correct": [ + "bargeld" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Wechselgeld", + "blanks": [ + { + "placeholder": "wechselgeld", + "correct": [ + "wechselgeld" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Quittung", + "blanks": [ + { + "placeholder": "quittung", + "correct": [ + "quittung" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Kreditkarte", + "blanks": [ + { + "placeholder": "kreditkarte", + "correct": [ + "kreditkarte" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "bargeld", + "wechselgeld", + "quittung", + "kreditkarte" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day38_en.json b/exercises/day38_en.json new file mode 100644 index 0000000..4cb5941 --- /dev/null +++ b/exercises/day38_en.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete the Shopping Phrases", + "instructions": "Drag the correct words to complete each phrase.", + "sentences": [ + { + "text": "It's [cheap]", + "blanks": [ + { + "placeholder": "cheap", + "correct": "cheap" + } + ] + }, + { + "text": "It's [expensive]", + "blanks": [ + { + "placeholder": "expensive", + "correct": "expensive" + } + ] + }, + { + "text": "I'll [take] it", + "blanks": [ + { + "placeholder": "take", + "correct": "take" + } + ] + }, + { + "text": "Can I pay with [card]?", + "blanks": [ + { + "placeholder": "card", + "correct": "card" + } + ] + } + ], + "extraWords": [ + "much" + ] + }, + { + "type": "fill-blank", + "title": "Fill in Money Phrases", + "instructions": "Complete these phrases by filling in the missing words.", + "sentences": [ + { + "text": "Receipt", + "blanks": [ + { + "placeholder": "receipt", + "correct": [ + "receipt" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Change", + "blanks": [ + { + "placeholder": "change", + "correct": [ + "change" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Credit [card]", + "blanks": [ + { + "placeholder": "card", + "correct": [ + "card" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Cash", + "blanks": [ + { + "placeholder": "cash", + "correct": [ + "cash" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "receipt", + "change", + "card", + "cash" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day38_es.json b/exercises/day38_es.json new file mode 100644 index 0000000..9a8e3bc --- /dev/null +++ b/exercises/day38_es.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Completa las Frases de Shopping", + "instructions": "Arrastra las palabras correctas para completar cada frase.", + "sentences": [ + { + "text": "Me lo [llevo]", + "blanks": [ + { + "placeholder": "llevo", + "correct": "llevo" + } + ] + }, + { + "text": "¿Cuánto [cuesta] esto?", + "blanks": [ + { + "placeholder": "cuesta", + "correct": "cuesta" + } + ] + }, + { + "text": "Es [caro]", + "blanks": [ + { + "placeholder": "caro", + "correct": "caro" + } + ] + }, + { + "text": "Es [barato]", + "blanks": [ + { + "placeholder": "barato", + "correct": "barato" + } + ] + } + ], + "extraWords": [ + "pagar" + ] + }, + { + "type": "fill-blank", + "title": "Completa las Frases de Money", + "instructions": "Completa estas frases llenando las palabras que faltan.", + "sentences": [ + { + "text": "Efectivo", + "blanks": [ + { + "placeholder": "efectivo", + "correct": [ + "efectivo" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Cambio", + "blanks": [ + { + "placeholder": "cambio", + "correct": [ + "cambio" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Tarjeta de [crédito]", + "blanks": [ + { + "placeholder": "crédito", + "correct": [ + "crédito" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Recibo", + "blanks": [ + { + "placeholder": "recibo", + "correct": [ + "recibo" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "efectivo", + "cambio", + "crédito", + "recibo" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day38_fr.json b/exercises/day38_fr.json new file mode 100644 index 0000000..7def055 --- /dev/null +++ b/exercises/day38_fr.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complétez les Phrases de Shopping", + "instructions": "Faites glisser les mots corrects pour compléter chaque phrase.", + "sentences": [ + { + "text": "Je le [prends]", + "blanks": [ + { + "placeholder": "prends", + "correct": "prends" + } + ] + }, + { + "text": "C'est [bon] marché", + "blanks": [ + { + "placeholder": "bon", + "correct": "bon" + } + ] + }, + { + "text": "C'est [cher]", + "blanks": [ + { + "placeholder": "cher", + "correct": "cher" + } + ] + }, + { + "text": "Puis-je [payer] par carte ?", + "blanks": [ + { + "placeholder": "payer", + "correct": "payer" + } + ] + } + ], + "extraWords": [ + "coûte" + ] + }, + { + "type": "fill-blank", + "title": "Remplissez les Phrases de Money", + "instructions": "Complétez ces phrases en remplissant les mots manquants.", + "sentences": [ + { + "text": "Reçu", + "blanks": [ + { + "placeholder": "reçu", + "correct": [ + "reçu" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Espèces", + "blanks": [ + { + "placeholder": "espèces", + "correct": [ + "espèces" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Carte de [crédit]", + "blanks": [ + { + "placeholder": "crédit", + "correct": [ + "crédit" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Monnaie", + "blanks": [ + { + "placeholder": "monnaie", + "correct": [ + "monnaie" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "reçu", + "espèces", + "crédit", + "monnaie" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day38_pt.json b/exercises/day38_pt.json new file mode 100644 index 0000000..83da6b1 --- /dev/null +++ b/exercises/day38_pt.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete as Frases de Shopping", + "instructions": "Arraste as palavras corretas para completar cada frase.", + "sentences": [ + { + "text": "Eu vou [levar]", + "blanks": [ + { + "placeholder": "levar", + "correct": "levar" + } + ] + }, + { + "text": "É [caro]", + "blanks": [ + { + "placeholder": "caro", + "correct": "caro" + } + ] + }, + { + "text": "Quanto [custa] isso?", + "blanks": [ + { + "placeholder": "custa", + "correct": "custa" + } + ] + }, + { + "text": "Posso [pagar] com cartão?", + "blanks": [ + { + "placeholder": "pagar", + "correct": "pagar" + } + ] + } + ], + "extraWords": [ + "barato" + ] + }, + { + "type": "fill-blank", + "title": "Preencha as Frases de Money", + "instructions": "Complete essas frases preenchendo as palavras em falta.", + "sentences": [ + { + "text": "Recibo", + "blanks": [ + { + "placeholder": "recibo", + "correct": [ + "recibo" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Dinheiro", + "blanks": [ + { + "placeholder": "dinheiro", + "correct": [ + "dinheiro" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Troco", + "blanks": [ + { + "placeholder": "troco", + "correct": [ + "troco" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Cartão de [crédito]", + "blanks": [ + { + "placeholder": "crédito", + "correct": [ + "crédito" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "recibo", + "dinheiro", + "troco", + "crédito" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day39_de.json b/exercises/day39_de.json new file mode 100644 index 0000000..430a0e9 --- /dev/null +++ b/exercises/day39_de.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Vervollständigen Sie die Shopping-Phrasen", + "instructions": "Ziehen Sie die richtigen Wörter, um jede Phrase zu vervollständigen.", + "sentences": [ + { + "text": "Ich [nehme] es", + "blanks": [ + { + "placeholder": "nehme", + "correct": "nehme" + } + ] + }, + { + "text": "Es ist [billig]", + "blanks": [ + { + "placeholder": "billig", + "correct": "billig" + } + ] + }, + { + "text": "Es ist [teuer]", + "blanks": [ + { + "placeholder": "teuer", + "correct": "teuer" + } + ] + }, + { + "text": "Kann ich [mit] Karte zahlen?", + "blanks": [ + { + "placeholder": "mit", + "correct": "mit" + } + ] + } + ], + "extraWords": [ + "kostet" + ] + }, + { + "type": "fill-blank", + "title": "Füllen Sie die Money-Phrasen aus", + "instructions": "Vervollständigen Sie diese Phrasen, indem Sie die fehlenden Wörter einfügen.", + "sentences": [ + { + "text": "Bargeld", + "blanks": [ + { + "placeholder": "bargeld", + "correct": [ + "bargeld" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Kreditkarte", + "blanks": [ + { + "placeholder": "kreditkarte", + "correct": [ + "kreditkarte" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Quittung", + "blanks": [ + { + "placeholder": "quittung", + "correct": [ + "quittung" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Wechselgeld", + "blanks": [ + { + "placeholder": "wechselgeld", + "correct": [ + "wechselgeld" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "bargeld", + "kreditkarte", + "quittung", + "wechselgeld" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day39_en.json b/exercises/day39_en.json new file mode 100644 index 0000000..8ee8e0c --- /dev/null +++ b/exercises/day39_en.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete the Shopping Phrases", + "instructions": "Drag the correct words to complete each phrase.", + "sentences": [ + { + "text": "It's [cheap]", + "blanks": [ + { + "placeholder": "cheap", + "correct": "cheap" + } + ] + }, + { + "text": "Can I pay with [card]?", + "blanks": [ + { + "placeholder": "card", + "correct": "card" + } + ] + }, + { + "text": "How [much] is this?", + "blanks": [ + { + "placeholder": "much", + "correct": "much" + } + ] + }, + { + "text": "It's [expensive]", + "blanks": [ + { + "placeholder": "expensive", + "correct": "expensive" + } + ] + } + ], + "extraWords": [ + "take" + ] + }, + { + "type": "fill-blank", + "title": "Fill in Money Phrases", + "instructions": "Complete these phrases by filling in the missing words.", + "sentences": [ + { + "text": "Cash", + "blanks": [ + { + "placeholder": "cash", + "correct": [ + "cash" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Change", + "blanks": [ + { + "placeholder": "change", + "correct": [ + "change" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Credit [card]", + "blanks": [ + { + "placeholder": "card", + "correct": [ + "card" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Receipt", + "blanks": [ + { + "placeholder": "receipt", + "correct": [ + "receipt" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "cash", + "change", + "card", + "receipt" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day39_es.json b/exercises/day39_es.json new file mode 100644 index 0000000..3c15f6f --- /dev/null +++ b/exercises/day39_es.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Completa las Frases de Shopping", + "instructions": "Arrastra las palabras correctas para completar cada frase.", + "sentences": [ + { + "text": "Es [barato]", + "blanks": [ + { + "placeholder": "barato", + "correct": "barato" + } + ] + }, + { + "text": "¿Puedo [pagar] con tarjeta?", + "blanks": [ + { + "placeholder": "pagar", + "correct": "pagar" + } + ] + }, + { + "text": "¿Cuánto [cuesta] esto?", + "blanks": [ + { + "placeholder": "cuesta", + "correct": "cuesta" + } + ] + }, + { + "text": "Es [caro]", + "blanks": [ + { + "placeholder": "caro", + "correct": "caro" + } + ] + } + ], + "extraWords": [ + "llevo" + ] + }, + { + "type": "fill-blank", + "title": "Completa las Frases de Money", + "instructions": "Completa estas frases llenando las palabras que faltan.", + "sentences": [ + { + "text": "Cambio", + "blanks": [ + { + "placeholder": "cambio", + "correct": [ + "cambio" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Tarjeta de [crédito]", + "blanks": [ + { + "placeholder": "crédito", + "correct": [ + "crédito" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Efectivo", + "blanks": [ + { + "placeholder": "efectivo", + "correct": [ + "efectivo" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Recibo", + "blanks": [ + { + "placeholder": "recibo", + "correct": [ + "recibo" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "cambio", + "crédito", + "efectivo", + "recibo" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day39_fr.json b/exercises/day39_fr.json new file mode 100644 index 0000000..618573b --- /dev/null +++ b/exercises/day39_fr.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complétez les Phrases de Shopping", + "instructions": "Faites glisser les mots corrects pour compléter chaque phrase.", + "sentences": [ + { + "text": "Puis-je [payer] par carte ?", + "blanks": [ + { + "placeholder": "payer", + "correct": "payer" + } + ] + }, + { + "text": "Je le [prends]", + "blanks": [ + { + "placeholder": "prends", + "correct": "prends" + } + ] + }, + { + "text": "Combien ça [coûte] ?", + "blanks": [ + { + "placeholder": "coûte", + "correct": "coûte" + } + ] + }, + { + "text": "C'est [bon] marché", + "blanks": [ + { + "placeholder": "bon", + "correct": "bon" + } + ] + } + ], + "extraWords": [ + "cher" + ] + }, + { + "type": "fill-blank", + "title": "Remplissez les Phrases de Money", + "instructions": "Complétez ces phrases en remplissant les mots manquants.", + "sentences": [ + { + "text": "Carte de [crédit]", + "blanks": [ + { + "placeholder": "crédit", + "correct": [ + "crédit" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Monnaie", + "blanks": [ + { + "placeholder": "monnaie", + "correct": [ + "monnaie" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Espèces", + "blanks": [ + { + "placeholder": "espèces", + "correct": [ + "espèces" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Reçu", + "blanks": [ + { + "placeholder": "reçu", + "correct": [ + "reçu" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "crédit", + "monnaie", + "espèces", + "reçu" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day39_pt.json b/exercises/day39_pt.json new file mode 100644 index 0000000..88cfffd --- /dev/null +++ b/exercises/day39_pt.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete as Frases de Shopping", + "instructions": "Arraste as palavras corretas para completar cada frase.", + "sentences": [ + { + "text": "Posso [pagar] com cartão?", + "blanks": [ + { + "placeholder": "pagar", + "correct": "pagar" + } + ] + }, + { + "text": "É [caro]", + "blanks": [ + { + "placeholder": "caro", + "correct": "caro" + } + ] + }, + { + "text": "Quanto [custa] isso?", + "blanks": [ + { + "placeholder": "custa", + "correct": "custa" + } + ] + }, + { + "text": "Eu vou [levar]", + "blanks": [ + { + "placeholder": "levar", + "correct": "levar" + } + ] + } + ], + "extraWords": [ + "barato" + ] + }, + { + "type": "fill-blank", + "title": "Preencha as Frases de Money", + "instructions": "Complete essas frases preenchendo as palavras em falta.", + "sentences": [ + { + "text": "Cartão de [crédito]", + "blanks": [ + { + "placeholder": "crédito", + "correct": [ + "crédito" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Recibo", + "blanks": [ + { + "placeholder": "recibo", + "correct": [ + "recibo" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Troco", + "blanks": [ + { + "placeholder": "troco", + "correct": [ + "troco" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Dinheiro", + "blanks": [ + { + "placeholder": "dinheiro", + "correct": [ + "dinheiro" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "crédito", + "recibo", + "troco", + "dinheiro" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day3_de.json b/exercises/day3_de.json new file mode 100644 index 0000000..0acda9c --- /dev/null +++ b/exercises/day3_de.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Vervollständigen Sie die Daily Conversations-Phrasen", + "instructions": "Ziehen Sie die richtigen Wörter, um jede Phrase zu vervollständigen.", + "sentences": [ + { + "text": "Wie läuft [alles]?", + "blanks": [ + { + "placeholder": "alles", + "correct": "alles" + } + ] + }, + { + "text": "Guten Tag 3!", + "blanks": [ + { + "placeholder": "tag", + "correct": "tag" + } + ] + }, + { + "text": "Sehr [gut]", + "blanks": [ + { + "placeholder": "gut", + "correct": "gut" + } + ] + }, + { + "text": "Einen [schönen] Tag noch", + "blanks": [ + { + "placeholder": "schönen", + "correct": "schönen" + } + ] + } + ], + "extraWords": [ + "später" + ] + }, + { + "type": "fill-blank", + "title": "Füllen Sie die Learning Progress-Phrasen aus", + "instructions": "Vervollständigen Sie diese Phrasen, indem Sie die fehlenden Wörter einfügen.", + "sentences": [ + { + "text": "Das ist Lektion 3", + "blanks": [ + { + "placeholder": "lektion", + "correct": [ + "lektion" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Ich [verstehe]", + "blanks": [ + { + "placeholder": "verstehe", + "correct": [ + "verstehe" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Das ist [nützlich]", + "blanks": [ + { + "placeholder": "nützlich", + "correct": [ + "nützlich" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Ich [lerne]", + "blanks": [ + { + "placeholder": "lerne", + "correct": [ + "lerne" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "lektion", + "verstehe", + "nützlich", + "lerne" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day3_en.json b/exercises/day3_en.json new file mode 100644 index 0000000..09a66a8 --- /dev/null +++ b/exercises/day3_en.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete the Daily Conversations Phrases", + "instructions": "Drag the correct words to complete each phrase.", + "sentences": [ + { + "text": "See [you] later", + "blanks": [ + { + "placeholder": "you", + "correct": "you" + } + ] + }, + { + "text": "How is [everything]?", + "blanks": [ + { + "placeholder": "everything", + "correct": "everything" + } + ] + }, + { + "text": "Good [day] 3!", + "blanks": [ + { + "placeholder": "day", + "correct": "day" + } + ] + }, + { + "text": "Have a nice [day]", + "blanks": [ + { + "placeholder": "day", + "correct": "day" + } + ] + } + ], + "extraWords": [ + "well" + ] + }, + { + "type": "fill-blank", + "title": "Fill in Learning Progress Phrases", + "instructions": "Complete these phrases by filling in the missing words.", + "sentences": [ + { + "text": "I am [learning]", + "blanks": [ + { + "placeholder": "learning", + "correct": [ + "learning" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "This is [useful]", + "blanks": [ + { + "placeholder": "useful", + "correct": [ + "useful" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "This is [lesson] 3", + "blanks": [ + { + "placeholder": "lesson", + "correct": [ + "lesson" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "I [understand]", + "blanks": [ + { + "placeholder": "understand", + "correct": [ + "understand" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "learning", + "useful", + "lesson", + "understand" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day3_es.json b/exercises/day3_es.json new file mode 100644 index 0000000..dea6cc9 --- /dev/null +++ b/exercises/day3_es.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Completa las Frases de Daily Conversations", + "instructions": "Arrastra las palabras correctas para completar cada frase.", + "sentences": [ + { + "text": "¿Cómo está [todo]?", + "blanks": [ + { + "placeholder": "todo", + "correct": "todo" + } + ] + }, + { + "text": "Que tengas un [buen] día", + "blanks": [ + { + "placeholder": "buen", + "correct": "buen" + } + ] + }, + { + "text": "Hasta [luego]", + "blanks": [ + { + "placeholder": "luego", + "correct": "luego" + } + ] + }, + { + "text": "¡Buen [día] 3!", + "blanks": [ + { + "placeholder": "día", + "correct": "día" + } + ] + } + ], + "extraWords": [ + "bien" + ] + }, + { + "type": "fill-blank", + "title": "Completa las Frases de Learning Progress", + "instructions": "Completa estas frases llenando las palabras que faltan.", + "sentences": [ + { + "text": "Esta es la [lección] 3", + "blanks": [ + { + "placeholder": "lección", + "correct": [ + "lección" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Entiendo", + "blanks": [ + { + "placeholder": "entiendo", + "correct": [ + "entiendo" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Estoy [aprendiendo]", + "blanks": [ + { + "placeholder": "aprendiendo", + "correct": [ + "aprendiendo" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Esto es [útil]", + "blanks": [ + { + "placeholder": "útil", + "correct": [ + "útil" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "lección", + "entiendo", + "aprendiendo", + "útil" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day3_fr.json b/exercises/day3_fr.json new file mode 100644 index 0000000..a81059e --- /dev/null +++ b/exercises/day3_fr.json @@ -0,0 +1,109 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complétez les Phrases de Daily Conversations", + "instructions": "Faites glisser les mots corrects pour compléter chaque phrase.", + "sentences": [ + { + "text": "Comment va tout ?", + "blanks": [ + { + "placeholder": "comment", + "correct": "comment" + } + ] + }, + { + "text": "À plus [tard]", + "blanks": [ + { + "placeholder": "tard", + "correct": "tard" + } + ] + }, + { + "text": "Bonne [journée]", + "blanks": [ + { + "placeholder": "journée", + "correct": "journée" + } + ] + }, + { + "text": "Très [bien]", + "blanks": [ + { + "placeholder": "bien", + "correct": "bien" + } + ] + } + ], + "extraWords": [] + }, + { + "type": "fill-blank", + "title": "Remplissez les Phrases de Learning Progress", + "instructions": "Complétez ces phrases en remplissant les mots manquants.", + "sentences": [ + { + "text": "J'[apprends]", + "blanks": [ + { + "placeholder": "apprends", + "correct": [ + "apprends" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "C'est la [leçon] 3", + "blanks": [ + { + "placeholder": "leçon", + "correct": [ + "leçon" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "C'est [utile]", + "blanks": [ + { + "placeholder": "utile", + "correct": [ + "utile" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Je [comprends]", + "blanks": [ + { + "placeholder": "comprends", + "correct": [ + "comprends" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "apprends", + "leçon", + "utile", + "comprends" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day3_pt.json b/exercises/day3_pt.json new file mode 100644 index 0000000..5f0ca98 --- /dev/null +++ b/exercises/day3_pt.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete as Frases de Daily Conversations", + "instructions": "Arraste as palavras corretas para completar cada frase.", + "sentences": [ + { + "text": "Até [mais]", + "blanks": [ + { + "placeholder": "mais", + "correct": "mais" + } + ] + }, + { + "text": "Como está [tudo]?", + "blanks": [ + { + "placeholder": "tudo", + "correct": "tudo" + } + ] + }, + { + "text": "Tenha um [bom] dia", + "blanks": [ + { + "placeholder": "bom", + "correct": "bom" + } + ] + }, + { + "text": "Muito [bem]", + "blanks": [ + { + "placeholder": "bem", + "correct": "bem" + } + ] + } + ], + "extraWords": [ + "dia" + ] + }, + { + "type": "fill-blank", + "title": "Preencha as Frases de Learning Progress", + "instructions": "Complete essas frases preenchendo as palavras em falta.", + "sentences": [ + { + "text": "Estou [aprendendo]", + "blanks": [ + { + "placeholder": "aprendendo", + "correct": [ + "aprendendo" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Esta é a [lição] 3", + "blanks": [ + { + "placeholder": "lição", + "correct": [ + "lição" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Isso é [útil]", + "blanks": [ + { + "placeholder": "útil", + "correct": [ + "útil" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Eu [entendo]", + "blanks": [ + { + "placeholder": "entendo", + "correct": [ + "entendo" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "aprendendo", + "lição", + "útil", + "entendo" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day40_de.json b/exercises/day40_de.json new file mode 100644 index 0000000..72b9856 --- /dev/null +++ b/exercises/day40_de.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Vervollständigen Sie die Shopping-Phrasen", + "instructions": "Ziehen Sie die richtigen Wörter, um jede Phrase zu vervollständigen.", + "sentences": [ + { + "text": "Wie viel [kostet] das?", + "blanks": [ + { + "placeholder": "kostet", + "correct": "kostet" + } + ] + }, + { + "text": "Kann ich [mit] Karte zahlen?", + "blanks": [ + { + "placeholder": "mit", + "correct": "mit" + } + ] + }, + { + "text": "Es ist [billig]", + "blanks": [ + { + "placeholder": "billig", + "correct": "billig" + } + ] + }, + { + "text": "Es ist [teuer]", + "blanks": [ + { + "placeholder": "teuer", + "correct": "teuer" + } + ] + } + ], + "extraWords": [ + "nehme" + ] + }, + { + "type": "fill-blank", + "title": "Füllen Sie die Money-Phrasen aus", + "instructions": "Vervollständigen Sie diese Phrasen, indem Sie die fehlenden Wörter einfügen.", + "sentences": [ + { + "text": "Quittung", + "blanks": [ + { + "placeholder": "quittung", + "correct": [ + "quittung" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Kreditkarte", + "blanks": [ + { + "placeholder": "kreditkarte", + "correct": [ + "kreditkarte" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Wechselgeld", + "blanks": [ + { + "placeholder": "wechselgeld", + "correct": [ + "wechselgeld" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Bargeld", + "blanks": [ + { + "placeholder": "bargeld", + "correct": [ + "bargeld" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "quittung", + "kreditkarte", + "wechselgeld", + "bargeld" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day40_en.json b/exercises/day40_en.json new file mode 100644 index 0000000..ce3cae8 --- /dev/null +++ b/exercises/day40_en.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete the Shopping Phrases", + "instructions": "Drag the correct words to complete each phrase.", + "sentences": [ + { + "text": "I'll [take] it", + "blanks": [ + { + "placeholder": "take", + "correct": "take" + } + ] + }, + { + "text": "It's [cheap]", + "blanks": [ + { + "placeholder": "cheap", + "correct": "cheap" + } + ] + }, + { + "text": "How [much] is this?", + "blanks": [ + { + "placeholder": "much", + "correct": "much" + } + ] + }, + { + "text": "It's [expensive]", + "blanks": [ + { + "placeholder": "expensive", + "correct": "expensive" + } + ] + } + ], + "extraWords": [ + "card" + ] + }, + { + "type": "fill-blank", + "title": "Fill in Money Phrases", + "instructions": "Complete these phrases by filling in the missing words.", + "sentences": [ + { + "text": "Change", + "blanks": [ + { + "placeholder": "change", + "correct": [ + "change" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Credit [card]", + "blanks": [ + { + "placeholder": "card", + "correct": [ + "card" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Receipt", + "blanks": [ + { + "placeholder": "receipt", + "correct": [ + "receipt" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Cash", + "blanks": [ + { + "placeholder": "cash", + "correct": [ + "cash" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "change", + "card", + "receipt", + "cash" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day40_es.json b/exercises/day40_es.json new file mode 100644 index 0000000..6359366 --- /dev/null +++ b/exercises/day40_es.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Completa las Frases de Shopping", + "instructions": "Arrastra las palabras correctas para completar cada frase.", + "sentences": [ + { + "text": "¿Cuánto [cuesta] esto?", + "blanks": [ + { + "placeholder": "cuesta", + "correct": "cuesta" + } + ] + }, + { + "text": "Me lo [llevo]", + "blanks": [ + { + "placeholder": "llevo", + "correct": "llevo" + } + ] + }, + { + "text": "Es [caro]", + "blanks": [ + { + "placeholder": "caro", + "correct": "caro" + } + ] + }, + { + "text": "Es [barato]", + "blanks": [ + { + "placeholder": "barato", + "correct": "barato" + } + ] + } + ], + "extraWords": [ + "pagar" + ] + }, + { + "type": "fill-blank", + "title": "Completa las Frases de Money", + "instructions": "Completa estas frases llenando las palabras que faltan.", + "sentences": [ + { + "text": "Tarjeta de [crédito]", + "blanks": [ + { + "placeholder": "crédito", + "correct": [ + "crédito" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Cambio", + "blanks": [ + { + "placeholder": "cambio", + "correct": [ + "cambio" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Recibo", + "blanks": [ + { + "placeholder": "recibo", + "correct": [ + "recibo" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Efectivo", + "blanks": [ + { + "placeholder": "efectivo", + "correct": [ + "efectivo" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "crédito", + "cambio", + "recibo", + "efectivo" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day40_fr.json b/exercises/day40_fr.json new file mode 100644 index 0000000..d6708d1 --- /dev/null +++ b/exercises/day40_fr.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complétez les Phrases de Shopping", + "instructions": "Faites glisser les mots corrects pour compléter chaque phrase.", + "sentences": [ + { + "text": "C'est [bon] marché", + "blanks": [ + { + "placeholder": "bon", + "correct": "bon" + } + ] + }, + { + "text": "Combien ça [coûte] ?", + "blanks": [ + { + "placeholder": "coûte", + "correct": "coûte" + } + ] + }, + { + "text": "C'est [cher]", + "blanks": [ + { + "placeholder": "cher", + "correct": "cher" + } + ] + }, + { + "text": "Je le [prends]", + "blanks": [ + { + "placeholder": "prends", + "correct": "prends" + } + ] + } + ], + "extraWords": [ + "payer" + ] + }, + { + "type": "fill-blank", + "title": "Remplissez les Phrases de Money", + "instructions": "Complétez ces phrases en remplissant les mots manquants.", + "sentences": [ + { + "text": "Reçu", + "blanks": [ + { + "placeholder": "reçu", + "correct": [ + "reçu" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Carte de [crédit]", + "blanks": [ + { + "placeholder": "crédit", + "correct": [ + "crédit" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Monnaie", + "blanks": [ + { + "placeholder": "monnaie", + "correct": [ + "monnaie" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Espèces", + "blanks": [ + { + "placeholder": "espèces", + "correct": [ + "espèces" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "reçu", + "crédit", + "monnaie", + "espèces" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day40_pt.json b/exercises/day40_pt.json new file mode 100644 index 0000000..03d3bbe --- /dev/null +++ b/exercises/day40_pt.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete as Frases de Shopping", + "instructions": "Arraste as palavras corretas para completar cada frase.", + "sentences": [ + { + "text": "Posso [pagar] com cartão?", + "blanks": [ + { + "placeholder": "pagar", + "correct": "pagar" + } + ] + }, + { + "text": "É [barato]", + "blanks": [ + { + "placeholder": "barato", + "correct": "barato" + } + ] + }, + { + "text": "Quanto [custa] isso?", + "blanks": [ + { + "placeholder": "custa", + "correct": "custa" + } + ] + }, + { + "text": "É [caro]", + "blanks": [ + { + "placeholder": "caro", + "correct": "caro" + } + ] + } + ], + "extraWords": [ + "levar" + ] + }, + { + "type": "fill-blank", + "title": "Preencha as Frases de Money", + "instructions": "Complete essas frases preenchendo as palavras em falta.", + "sentences": [ + { + "text": "Recibo", + "blanks": [ + { + "placeholder": "recibo", + "correct": [ + "recibo" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Troco", + "blanks": [ + { + "placeholder": "troco", + "correct": [ + "troco" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Dinheiro", + "blanks": [ + { + "placeholder": "dinheiro", + "correct": [ + "dinheiro" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Cartão de [crédito]", + "blanks": [ + { + "placeholder": "crédito", + "correct": [ + "crédito" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "recibo", + "troco", + "dinheiro", + "crédito" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day41_de.json b/exercises/day41_de.json new file mode 100644 index 0000000..ffd72b2 --- /dev/null +++ b/exercises/day41_de.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Vervollständigen Sie die Weather & Time-Phrasen", + "instructions": "Ziehen Sie die richtigen Wörter, um jede Phrase zu vervollständigen.", + "sentences": [ + { + "text": "Es ist [sonnig]", + "blanks": [ + { + "placeholder": "sonnig", + "correct": "sonnig" + } + ] + }, + { + "text": "Wie spät [ist] es?", + "blanks": [ + { + "placeholder": "ist", + "correct": "ist" + } + ] + }, + { + "text": "Es [regnet]", + "blanks": [ + { + "placeholder": "regnet", + "correct": "regnet" + } + ] + }, + { + "text": "Morgen", + "blanks": [ + { + "placeholder": "morgen", + "correct": "morgen" + } + ] + } + ], + "extraWords": [ + "gestern" + ] + }, + { + "type": "fill-blank", + "title": "Füllen Sie die Feelings & Opinions-Phrasen aus", + "instructions": "Vervollständigen Sie diese Phrasen, indem Sie die fehlenden Wörter einfügen.", + "sentences": [ + { + "text": "Das gefällt [mir] nicht", + "blanks": [ + { + "placeholder": "mir", + "correct": [ + "mir" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Das gefällt [mir]", + "blanks": [ + { + "placeholder": "mir", + "correct": [ + "mir" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Ich [bin] glücklich", + "blanks": [ + { + "placeholder": "bin", + "correct": [ + "bin" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Ich [bin] müde", + "blanks": [ + { + "placeholder": "bin", + "correct": [ + "bin" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "mir", + "mir", + "bin", + "bin" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day41_en.json b/exercises/day41_en.json new file mode 100644 index 0000000..ef2e301 --- /dev/null +++ b/exercises/day41_en.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete the Weather & Time Phrases", + "instructions": "Drag the correct words to complete each phrase.", + "sentences": [ + { + "text": "It's [raining]", + "blanks": [ + { + "placeholder": "raining", + "correct": "raining" + } + ] + }, + { + "text": "It's [sunny]", + "blanks": [ + { + "placeholder": "sunny", + "correct": "sunny" + } + ] + }, + { + "text": "What [time] is it?", + "blanks": [ + { + "placeholder": "time", + "correct": "time" + } + ] + }, + { + "text": "Yesterday", + "blanks": [ + { + "placeholder": "yesterday", + "correct": "yesterday" + } + ] + } + ], + "extraWords": [ + "tomorrow" + ] + }, + { + "type": "fill-blank", + "title": "Fill in Feelings & Opinions Phrases", + "instructions": "Complete these phrases by filling in the missing words.", + "sentences": [ + { + "text": "I'm [tired]", + "blanks": [ + { + "placeholder": "tired", + "correct": [ + "tired" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "I'm [happy]", + "blanks": [ + { + "placeholder": "happy", + "correct": [ + "happy" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "I don't [like] it", + "blanks": [ + { + "placeholder": "like", + "correct": [ + "like" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "I [like] it", + "blanks": [ + { + "placeholder": "like", + "correct": [ + "like" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "tired", + "happy", + "like", + "like" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day41_es.json b/exercises/day41_es.json new file mode 100644 index 0000000..8f25077 --- /dev/null +++ b/exercises/day41_es.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Completa las Frases de Weather & Time", + "instructions": "Arrastra las palabras correctas para completar cada frase.", + "sentences": [ + { + "text": "Mañana", + "blanks": [ + { + "placeholder": "mañana", + "correct": "mañana" + } + ] + }, + { + "text": "Está [soleado]", + "blanks": [ + { + "placeholder": "soleado", + "correct": "soleado" + } + ] + }, + { + "text": "Está [lloviendo]", + "blanks": [ + { + "placeholder": "lloviendo", + "correct": "lloviendo" + } + ] + }, + { + "text": "¿Qué [hora] es?", + "blanks": [ + { + "placeholder": "hora", + "correct": "hora" + } + ] + } + ], + "extraWords": [ + "ayer" + ] + }, + { + "type": "fill-blank", + "title": "Completa las Frases de Feelings & Opinions", + "instructions": "Completa estas frases llenando las palabras que faltan.", + "sentences": [ + { + "text": "No me [gusta]", + "blanks": [ + { + "placeholder": "gusta", + "correct": [ + "gusta" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Estoy [cansado]", + "blanks": [ + { + "placeholder": "cansado", + "correct": [ + "cansado" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Me [gusta]", + "blanks": [ + { + "placeholder": "gusta", + "correct": [ + "gusta" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Estoy [feliz]", + "blanks": [ + { + "placeholder": "feliz", + "correct": [ + "feliz" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "gusta", + "cansado", + "gusta", + "feliz" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day41_fr.json b/exercises/day41_fr.json new file mode 100644 index 0000000..f0c818d --- /dev/null +++ b/exercises/day41_fr.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complétez les Phrases de Weather & Time", + "instructions": "Faites glisser les mots corrects pour compléter chaque phrase.", + "sentences": [ + { + "text": "Hier", + "blanks": [ + { + "placeholder": "hier", + "correct": "hier" + } + ] + }, + { + "text": "Il [pleut]", + "blanks": [ + { + "placeholder": "pleut", + "correct": "pleut" + } + ] + }, + { + "text": "Demain", + "blanks": [ + { + "placeholder": "demain", + "correct": "demain" + } + ] + }, + { + "text": "Il fait [beau]", + "blanks": [ + { + "placeholder": "beau", + "correct": "beau" + } + ] + } + ], + "extraWords": [ + "heure" + ] + }, + { + "type": "fill-blank", + "title": "Remplissez les Phrases de Feelings & Opinions", + "instructions": "Complétez ces phrases en remplissant les mots manquants.", + "sentences": [ + { + "text": "Je suis [heureux]", + "blanks": [ + { + "placeholder": "heureux", + "correct": [ + "heureux" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Je n'[aime] pas ça", + "blanks": [ + { + "placeholder": "aime", + "correct": [ + "aime" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "J'[aime] ça", + "blanks": [ + { + "placeholder": "aime", + "correct": [ + "aime" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Je suis [fatigué]", + "blanks": [ + { + "placeholder": "fatigué", + "correct": [ + "fatigué" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "heureux", + "aime", + "aime", + "fatigué" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day41_pt.json b/exercises/day41_pt.json new file mode 100644 index 0000000..7d7ea3e --- /dev/null +++ b/exercises/day41_pt.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete as Frases de Weather & Time", + "instructions": "Arraste as palavras corretas para completar cada frase.", + "sentences": [ + { + "text": "Está [ensolarado]", + "blanks": [ + { + "placeholder": "ensolarado", + "correct": "ensolarado" + } + ] + }, + { + "text": "Ontem", + "blanks": [ + { + "placeholder": "ontem", + "correct": "ontem" + } + ] + }, + { + "text": "Está [chovendo]", + "blanks": [ + { + "placeholder": "chovendo", + "correct": "chovendo" + } + ] + }, + { + "text": "Amanhã", + "blanks": [ + { + "placeholder": "amanhã", + "correct": "amanhã" + } + ] + } + ], + "extraWords": [ + "são" + ] + }, + { + "type": "fill-blank", + "title": "Preencha as Frases de Feelings & Opinions", + "instructions": "Complete essas frases preenchendo as palavras em falta.", + "sentences": [ + { + "text": "Estou [cansado]", + "blanks": [ + { + "placeholder": "cansado", + "correct": [ + "cansado" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Eu não [gosto]", + "blanks": [ + { + "placeholder": "gosto", + "correct": [ + "gosto" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Estou [feliz]", + "blanks": [ + { + "placeholder": "feliz", + "correct": [ + "feliz" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Eu [gosto]", + "blanks": [ + { + "placeholder": "gosto", + "correct": [ + "gosto" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "cansado", + "gosto", + "feliz", + "gosto" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day42_de.json b/exercises/day42_de.json new file mode 100644 index 0000000..9c6d701 --- /dev/null +++ b/exercises/day42_de.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Vervollständigen Sie die Weather & Time-Phrasen", + "instructions": "Ziehen Sie die richtigen Wörter, um jede Phrase zu vervollständigen.", + "sentences": [ + { + "text": "Morgen", + "blanks": [ + { + "placeholder": "morgen", + "correct": "morgen" + } + ] + }, + { + "text": "Es ist [sonnig]", + "blanks": [ + { + "placeholder": "sonnig", + "correct": "sonnig" + } + ] + }, + { + "text": "Es [regnet]", + "blanks": [ + { + "placeholder": "regnet", + "correct": "regnet" + } + ] + }, + { + "text": "Gestern", + "blanks": [ + { + "placeholder": "gestern", + "correct": "gestern" + } + ] + } + ], + "extraWords": [ + "ist" + ] + }, + { + "type": "fill-blank", + "title": "Füllen Sie die Feelings & Opinions-Phrasen aus", + "instructions": "Vervollständigen Sie diese Phrasen, indem Sie die fehlenden Wörter einfügen.", + "sentences": [ + { + "text": "Ich [bin] müde", + "blanks": [ + { + "placeholder": "bin", + "correct": [ + "bin" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Ich [bin] glücklich", + "blanks": [ + { + "placeholder": "bin", + "correct": [ + "bin" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Das gefällt [mir] nicht", + "blanks": [ + { + "placeholder": "mir", + "correct": [ + "mir" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Das gefällt [mir]", + "blanks": [ + { + "placeholder": "mir", + "correct": [ + "mir" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "bin", + "bin", + "mir", + "mir" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day42_en.json b/exercises/day42_en.json new file mode 100644 index 0000000..f0f19da --- /dev/null +++ b/exercises/day42_en.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete the Weather & Time Phrases", + "instructions": "Drag the correct words to complete each phrase.", + "sentences": [ + { + "text": "Yesterday", + "blanks": [ + { + "placeholder": "yesterday", + "correct": "yesterday" + } + ] + }, + { + "text": "It's [sunny]", + "blanks": [ + { + "placeholder": "sunny", + "correct": "sunny" + } + ] + }, + { + "text": "What [time] is it?", + "blanks": [ + { + "placeholder": "time", + "correct": "time" + } + ] + }, + { + "text": "It's [raining]", + "blanks": [ + { + "placeholder": "raining", + "correct": "raining" + } + ] + } + ], + "extraWords": [ + "tomorrow" + ] + }, + { + "type": "fill-blank", + "title": "Fill in Feelings & Opinions Phrases", + "instructions": "Complete these phrases by filling in the missing words.", + "sentences": [ + { + "text": "I don't [like] it", + "blanks": [ + { + "placeholder": "like", + "correct": [ + "like" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "I [like] it", + "blanks": [ + { + "placeholder": "like", + "correct": [ + "like" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "I'm [happy]", + "blanks": [ + { + "placeholder": "happy", + "correct": [ + "happy" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "I'm [tired]", + "blanks": [ + { + "placeholder": "tired", + "correct": [ + "tired" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "like", + "like", + "happy", + "tired" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day42_es.json b/exercises/day42_es.json new file mode 100644 index 0000000..f269129 --- /dev/null +++ b/exercises/day42_es.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Completa las Frases de Weather & Time", + "instructions": "Arrastra las palabras correctas para completar cada frase.", + "sentences": [ + { + "text": "Mañana", + "blanks": [ + { + "placeholder": "mañana", + "correct": "mañana" + } + ] + }, + { + "text": "Está [lloviendo]", + "blanks": [ + { + "placeholder": "lloviendo", + "correct": "lloviendo" + } + ] + }, + { + "text": "Está [soleado]", + "blanks": [ + { + "placeholder": "soleado", + "correct": "soleado" + } + ] + }, + { + "text": "¿Qué [hora] es?", + "blanks": [ + { + "placeholder": "hora", + "correct": "hora" + } + ] + } + ], + "extraWords": [ + "ayer" + ] + }, + { + "type": "fill-blank", + "title": "Completa las Frases de Feelings & Opinions", + "instructions": "Completa estas frases llenando las palabras que faltan.", + "sentences": [ + { + "text": "No me [gusta]", + "blanks": [ + { + "placeholder": "gusta", + "correct": [ + "gusta" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Estoy [feliz]", + "blanks": [ + { + "placeholder": "feliz", + "correct": [ + "feliz" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Me [gusta]", + "blanks": [ + { + "placeholder": "gusta", + "correct": [ + "gusta" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Estoy [cansado]", + "blanks": [ + { + "placeholder": "cansado", + "correct": [ + "cansado" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "gusta", + "feliz", + "gusta", + "cansado" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day42_fr.json b/exercises/day42_fr.json new file mode 100644 index 0000000..7f93083 --- /dev/null +++ b/exercises/day42_fr.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complétez les Phrases de Weather & Time", + "instructions": "Faites glisser les mots corrects pour compléter chaque phrase.", + "sentences": [ + { + "text": "Demain", + "blanks": [ + { + "placeholder": "demain", + "correct": "demain" + } + ] + }, + { + "text": "Hier", + "blanks": [ + { + "placeholder": "hier", + "correct": "hier" + } + ] + }, + { + "text": "Quelle [heure] est-il ?", + "blanks": [ + { + "placeholder": "heure", + "correct": "heure" + } + ] + }, + { + "text": "Il fait [beau]", + "blanks": [ + { + "placeholder": "beau", + "correct": "beau" + } + ] + } + ], + "extraWords": [ + "pleut" + ] + }, + { + "type": "fill-blank", + "title": "Remplissez les Phrases de Feelings & Opinions", + "instructions": "Complétez ces phrases en remplissant les mots manquants.", + "sentences": [ + { + "text": "Je n'[aime] pas ça", + "blanks": [ + { + "placeholder": "aime", + "correct": [ + "aime" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "J'[aime] ça", + "blanks": [ + { + "placeholder": "aime", + "correct": [ + "aime" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Je suis [heureux]", + "blanks": [ + { + "placeholder": "heureux", + "correct": [ + "heureux" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Je suis [fatigué]", + "blanks": [ + { + "placeholder": "fatigué", + "correct": [ + "fatigué" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "aime", + "aime", + "heureux", + "fatigué" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day42_pt.json b/exercises/day42_pt.json new file mode 100644 index 0000000..c157cf7 --- /dev/null +++ b/exercises/day42_pt.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete as Frases de Weather & Time", + "instructions": "Arraste as palavras corretas para completar cada frase.", + "sentences": [ + { + "text": "Amanhã", + "blanks": [ + { + "placeholder": "amanhã", + "correct": "amanhã" + } + ] + }, + { + "text": "Está [chovendo]", + "blanks": [ + { + "placeholder": "chovendo", + "correct": "chovendo" + } + ] + }, + { + "text": "Ontem", + "blanks": [ + { + "placeholder": "ontem", + "correct": "ontem" + } + ] + }, + { + "text": "Que horas [são]?", + "blanks": [ + { + "placeholder": "são", + "correct": "são" + } + ] + } + ], + "extraWords": [ + "ensolarado" + ] + }, + { + "type": "fill-blank", + "title": "Preencha as Frases de Feelings & Opinions", + "instructions": "Complete essas frases preenchendo as palavras em falta.", + "sentences": [ + { + "text": "Eu [gosto]", + "blanks": [ + { + "placeholder": "gosto", + "correct": [ + "gosto" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Estou [cansado]", + "blanks": [ + { + "placeholder": "cansado", + "correct": [ + "cansado" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Estou [feliz]", + "blanks": [ + { + "placeholder": "feliz", + "correct": [ + "feliz" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Eu não [gosto]", + "blanks": [ + { + "placeholder": "gosto", + "correct": [ + "gosto" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "gosto", + "cansado", + "feliz", + "gosto" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day43_de.json b/exercises/day43_de.json new file mode 100644 index 0000000..2ee4e64 --- /dev/null +++ b/exercises/day43_de.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Vervollständigen Sie die Weather & Time-Phrasen", + "instructions": "Ziehen Sie die richtigen Wörter, um jede Phrase zu vervollständigen.", + "sentences": [ + { + "text": "Es ist [sonnig]", + "blanks": [ + { + "placeholder": "sonnig", + "correct": "sonnig" + } + ] + }, + { + "text": "Es [regnet]", + "blanks": [ + { + "placeholder": "regnet", + "correct": "regnet" + } + ] + }, + { + "text": "Gestern", + "blanks": [ + { + "placeholder": "gestern", + "correct": "gestern" + } + ] + }, + { + "text": "Morgen", + "blanks": [ + { + "placeholder": "morgen", + "correct": "morgen" + } + ] + } + ], + "extraWords": [ + "ist" + ] + }, + { + "type": "fill-blank", + "title": "Füllen Sie die Feelings & Opinions-Phrasen aus", + "instructions": "Vervollständigen Sie diese Phrasen, indem Sie die fehlenden Wörter einfügen.", + "sentences": [ + { + "text": "Das gefällt [mir]", + "blanks": [ + { + "placeholder": "mir", + "correct": [ + "mir" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Ich [bin] müde", + "blanks": [ + { + "placeholder": "bin", + "correct": [ + "bin" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Ich [bin] glücklich", + "blanks": [ + { + "placeholder": "bin", + "correct": [ + "bin" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Das gefällt [mir] nicht", + "blanks": [ + { + "placeholder": "mir", + "correct": [ + "mir" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "mir", + "bin", + "bin", + "mir" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day43_en.json b/exercises/day43_en.json new file mode 100644 index 0000000..908b446 --- /dev/null +++ b/exercises/day43_en.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete the Weather & Time Phrases", + "instructions": "Drag the correct words to complete each phrase.", + "sentences": [ + { + "text": "What [time] is it?", + "blanks": [ + { + "placeholder": "time", + "correct": "time" + } + ] + }, + { + "text": "It's [raining]", + "blanks": [ + { + "placeholder": "raining", + "correct": "raining" + } + ] + }, + { + "text": "It's [sunny]", + "blanks": [ + { + "placeholder": "sunny", + "correct": "sunny" + } + ] + }, + { + "text": "Tomorrow", + "blanks": [ + { + "placeholder": "tomorrow", + "correct": "tomorrow" + } + ] + } + ], + "extraWords": [ + "yesterday" + ] + }, + { + "type": "fill-blank", + "title": "Fill in Feelings & Opinions Phrases", + "instructions": "Complete these phrases by filling in the missing words.", + "sentences": [ + { + "text": "I'm [tired]", + "blanks": [ + { + "placeholder": "tired", + "correct": [ + "tired" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "I don't [like] it", + "blanks": [ + { + "placeholder": "like", + "correct": [ + "like" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "I'm [happy]", + "blanks": [ + { + "placeholder": "happy", + "correct": [ + "happy" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "I [like] it", + "blanks": [ + { + "placeholder": "like", + "correct": [ + "like" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "tired", + "like", + "happy", + "like" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day43_es.json b/exercises/day43_es.json new file mode 100644 index 0000000..219362f --- /dev/null +++ b/exercises/day43_es.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Completa las Frases de Weather & Time", + "instructions": "Arrastra las palabras correctas para completar cada frase.", + "sentences": [ + { + "text": "Mañana", + "blanks": [ + { + "placeholder": "mañana", + "correct": "mañana" + } + ] + }, + { + "text": "Está [soleado]", + "blanks": [ + { + "placeholder": "soleado", + "correct": "soleado" + } + ] + }, + { + "text": "Ayer", + "blanks": [ + { + "placeholder": "ayer", + "correct": "ayer" + } + ] + }, + { + "text": "¿Qué [hora] es?", + "blanks": [ + { + "placeholder": "hora", + "correct": "hora" + } + ] + } + ], + "extraWords": [ + "lloviendo" + ] + }, + { + "type": "fill-blank", + "title": "Completa las Frases de Feelings & Opinions", + "instructions": "Completa estas frases llenando las palabras que faltan.", + "sentences": [ + { + "text": "No me [gusta]", + "blanks": [ + { + "placeholder": "gusta", + "correct": [ + "gusta" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Estoy [feliz]", + "blanks": [ + { + "placeholder": "feliz", + "correct": [ + "feliz" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Me [gusta]", + "blanks": [ + { + "placeholder": "gusta", + "correct": [ + "gusta" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Estoy [cansado]", + "blanks": [ + { + "placeholder": "cansado", + "correct": [ + "cansado" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "gusta", + "feliz", + "gusta", + "cansado" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day43_fr.json b/exercises/day43_fr.json new file mode 100644 index 0000000..e47b309 --- /dev/null +++ b/exercises/day43_fr.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complétez les Phrases de Weather & Time", + "instructions": "Faites glisser les mots corrects pour compléter chaque phrase.", + "sentences": [ + { + "text": "Quelle [heure] est-il ?", + "blanks": [ + { + "placeholder": "heure", + "correct": "heure" + } + ] + }, + { + "text": "Il [pleut]", + "blanks": [ + { + "placeholder": "pleut", + "correct": "pleut" + } + ] + }, + { + "text": "Demain", + "blanks": [ + { + "placeholder": "demain", + "correct": "demain" + } + ] + }, + { + "text": "Hier", + "blanks": [ + { + "placeholder": "hier", + "correct": "hier" + } + ] + } + ], + "extraWords": [ + "beau" + ] + }, + { + "type": "fill-blank", + "title": "Remplissez les Phrases de Feelings & Opinions", + "instructions": "Complétez ces phrases en remplissant les mots manquants.", + "sentences": [ + { + "text": "J'[aime] ça", + "blanks": [ + { + "placeholder": "aime", + "correct": [ + "aime" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Je suis [heureux]", + "blanks": [ + { + "placeholder": "heureux", + "correct": [ + "heureux" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Je suis [fatigué]", + "blanks": [ + { + "placeholder": "fatigué", + "correct": [ + "fatigué" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Je n'[aime] pas ça", + "blanks": [ + { + "placeholder": "aime", + "correct": [ + "aime" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "aime", + "heureux", + "fatigué", + "aime" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day43_pt.json b/exercises/day43_pt.json new file mode 100644 index 0000000..c29599d --- /dev/null +++ b/exercises/day43_pt.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete as Frases de Weather & Time", + "instructions": "Arraste as palavras corretas para completar cada frase.", + "sentences": [ + { + "text": "Está [ensolarado]", + "blanks": [ + { + "placeholder": "ensolarado", + "correct": "ensolarado" + } + ] + }, + { + "text": "Que horas [são]?", + "blanks": [ + { + "placeholder": "são", + "correct": "são" + } + ] + }, + { + "text": "Amanhã", + "blanks": [ + { + "placeholder": "amanhã", + "correct": "amanhã" + } + ] + }, + { + "text": "Está [chovendo]", + "blanks": [ + { + "placeholder": "chovendo", + "correct": "chovendo" + } + ] + } + ], + "extraWords": [ + "ontem" + ] + }, + { + "type": "fill-blank", + "title": "Preencha as Frases de Feelings & Opinions", + "instructions": "Complete essas frases preenchendo as palavras em falta.", + "sentences": [ + { + "text": "Estou [feliz]", + "blanks": [ + { + "placeholder": "feliz", + "correct": [ + "feliz" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Eu não [gosto]", + "blanks": [ + { + "placeholder": "gosto", + "correct": [ + "gosto" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Estou [cansado]", + "blanks": [ + { + "placeholder": "cansado", + "correct": [ + "cansado" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Eu [gosto]", + "blanks": [ + { + "placeholder": "gosto", + "correct": [ + "gosto" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "feliz", + "gosto", + "cansado", + "gosto" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day44_de.json b/exercises/day44_de.json new file mode 100644 index 0000000..6f5d43e --- /dev/null +++ b/exercises/day44_de.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Vervollständigen Sie die Weather & Time-Phrasen", + "instructions": "Ziehen Sie die richtigen Wörter, um jede Phrase zu vervollständigen.", + "sentences": [ + { + "text": "Es ist [sonnig]", + "blanks": [ + { + "placeholder": "sonnig", + "correct": "sonnig" + } + ] + }, + { + "text": "Gestern", + "blanks": [ + { + "placeholder": "gestern", + "correct": "gestern" + } + ] + }, + { + "text": "Wie spät [ist] es?", + "blanks": [ + { + "placeholder": "ist", + "correct": "ist" + } + ] + }, + { + "text": "Morgen", + "blanks": [ + { + "placeholder": "morgen", + "correct": "morgen" + } + ] + } + ], + "extraWords": [ + "regnet" + ] + }, + { + "type": "fill-blank", + "title": "Füllen Sie die Feelings & Opinions-Phrasen aus", + "instructions": "Vervollständigen Sie diese Phrasen, indem Sie die fehlenden Wörter einfügen.", + "sentences": [ + { + "text": "Ich [bin] müde", + "blanks": [ + { + "placeholder": "bin", + "correct": [ + "bin" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Das gefällt [mir]", + "blanks": [ + { + "placeholder": "mir", + "correct": [ + "mir" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Das gefällt [mir] nicht", + "blanks": [ + { + "placeholder": "mir", + "correct": [ + "mir" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Ich [bin] glücklich", + "blanks": [ + { + "placeholder": "bin", + "correct": [ + "bin" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "bin", + "mir", + "mir", + "bin" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day44_en.json b/exercises/day44_en.json new file mode 100644 index 0000000..35293ad --- /dev/null +++ b/exercises/day44_en.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete the Weather & Time Phrases", + "instructions": "Drag the correct words to complete each phrase.", + "sentences": [ + { + "text": "What [time] is it?", + "blanks": [ + { + "placeholder": "time", + "correct": "time" + } + ] + }, + { + "text": "Tomorrow", + "blanks": [ + { + "placeholder": "tomorrow", + "correct": "tomorrow" + } + ] + }, + { + "text": "It's [sunny]", + "blanks": [ + { + "placeholder": "sunny", + "correct": "sunny" + } + ] + }, + { + "text": "Yesterday", + "blanks": [ + { + "placeholder": "yesterday", + "correct": "yesterday" + } + ] + } + ], + "extraWords": [ + "raining" + ] + }, + { + "type": "fill-blank", + "title": "Fill in Feelings & Opinions Phrases", + "instructions": "Complete these phrases by filling in the missing words.", + "sentences": [ + { + "text": "I [like] it", + "blanks": [ + { + "placeholder": "like", + "correct": [ + "like" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "I'm [tired]", + "blanks": [ + { + "placeholder": "tired", + "correct": [ + "tired" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "I don't [like] it", + "blanks": [ + { + "placeholder": "like", + "correct": [ + "like" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "I'm [happy]", + "blanks": [ + { + "placeholder": "happy", + "correct": [ + "happy" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "like", + "tired", + "like", + "happy" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day44_es.json b/exercises/day44_es.json new file mode 100644 index 0000000..16bc7f5 --- /dev/null +++ b/exercises/day44_es.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Completa las Frases de Weather & Time", + "instructions": "Arrastra las palabras correctas para completar cada frase.", + "sentences": [ + { + "text": "Ayer", + "blanks": [ + { + "placeholder": "ayer", + "correct": "ayer" + } + ] + }, + { + "text": "Está [lloviendo]", + "blanks": [ + { + "placeholder": "lloviendo", + "correct": "lloviendo" + } + ] + }, + { + "text": "Mañana", + "blanks": [ + { + "placeholder": "mañana", + "correct": "mañana" + } + ] + }, + { + "text": "Está [soleado]", + "blanks": [ + { + "placeholder": "soleado", + "correct": "soleado" + } + ] + } + ], + "extraWords": [ + "hora" + ] + }, + { + "type": "fill-blank", + "title": "Completa las Frases de Feelings & Opinions", + "instructions": "Completa estas frases llenando las palabras que faltan.", + "sentences": [ + { + "text": "No me [gusta]", + "blanks": [ + { + "placeholder": "gusta", + "correct": [ + "gusta" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Me [gusta]", + "blanks": [ + { + "placeholder": "gusta", + "correct": [ + "gusta" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Estoy [feliz]", + "blanks": [ + { + "placeholder": "feliz", + "correct": [ + "feliz" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Estoy [cansado]", + "blanks": [ + { + "placeholder": "cansado", + "correct": [ + "cansado" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "gusta", + "gusta", + "feliz", + "cansado" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day44_fr.json b/exercises/day44_fr.json new file mode 100644 index 0000000..4b6e815 --- /dev/null +++ b/exercises/day44_fr.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complétez les Phrases de Weather & Time", + "instructions": "Faites glisser les mots corrects pour compléter chaque phrase.", + "sentences": [ + { + "text": "Il fait [beau]", + "blanks": [ + { + "placeholder": "beau", + "correct": "beau" + } + ] + }, + { + "text": "Quelle [heure] est-il ?", + "blanks": [ + { + "placeholder": "heure", + "correct": "heure" + } + ] + }, + { + "text": "Hier", + "blanks": [ + { + "placeholder": "hier", + "correct": "hier" + } + ] + }, + { + "text": "Il [pleut]", + "blanks": [ + { + "placeholder": "pleut", + "correct": "pleut" + } + ] + } + ], + "extraWords": [ + "demain" + ] + }, + { + "type": "fill-blank", + "title": "Remplissez les Phrases de Feelings & Opinions", + "instructions": "Complétez ces phrases en remplissant les mots manquants.", + "sentences": [ + { + "text": "J'[aime] ça", + "blanks": [ + { + "placeholder": "aime", + "correct": [ + "aime" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Je n'[aime] pas ça", + "blanks": [ + { + "placeholder": "aime", + "correct": [ + "aime" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Je suis [fatigué]", + "blanks": [ + { + "placeholder": "fatigué", + "correct": [ + "fatigué" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Je suis [heureux]", + "blanks": [ + { + "placeholder": "heureux", + "correct": [ + "heureux" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "aime", + "aime", + "fatigué", + "heureux" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day44_pt.json b/exercises/day44_pt.json new file mode 100644 index 0000000..de74815 --- /dev/null +++ b/exercises/day44_pt.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete as Frases de Weather & Time", + "instructions": "Arraste as palavras corretas para completar cada frase.", + "sentences": [ + { + "text": "Amanhã", + "blanks": [ + { + "placeholder": "amanhã", + "correct": "amanhã" + } + ] + }, + { + "text": "Que horas [são]?", + "blanks": [ + { + "placeholder": "são", + "correct": "são" + } + ] + }, + { + "text": "Está [chovendo]", + "blanks": [ + { + "placeholder": "chovendo", + "correct": "chovendo" + } + ] + }, + { + "text": "Ontem", + "blanks": [ + { + "placeholder": "ontem", + "correct": "ontem" + } + ] + } + ], + "extraWords": [ + "ensolarado" + ] + }, + { + "type": "fill-blank", + "title": "Preencha as Frases de Feelings & Opinions", + "instructions": "Complete essas frases preenchendo as palavras em falta.", + "sentences": [ + { + "text": "Estou [feliz]", + "blanks": [ + { + "placeholder": "feliz", + "correct": [ + "feliz" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Eu não [gosto]", + "blanks": [ + { + "placeholder": "gosto", + "correct": [ + "gosto" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Estou [cansado]", + "blanks": [ + { + "placeholder": "cansado", + "correct": [ + "cansado" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Eu [gosto]", + "blanks": [ + { + "placeholder": "gosto", + "correct": [ + "gosto" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "feliz", + "gosto", + "cansado", + "gosto" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day45_de.json b/exercises/day45_de.json new file mode 100644 index 0000000..95156f4 --- /dev/null +++ b/exercises/day45_de.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Vervollständigen Sie die Weather & Time-Phrasen", + "instructions": "Ziehen Sie die richtigen Wörter, um jede Phrase zu vervollständigen.", + "sentences": [ + { + "text": "Morgen", + "blanks": [ + { + "placeholder": "morgen", + "correct": "morgen" + } + ] + }, + { + "text": "Wie spät [ist] es?", + "blanks": [ + { + "placeholder": "ist", + "correct": "ist" + } + ] + }, + { + "text": "Es [regnet]", + "blanks": [ + { + "placeholder": "regnet", + "correct": "regnet" + } + ] + }, + { + "text": "Es ist [sonnig]", + "blanks": [ + { + "placeholder": "sonnig", + "correct": "sonnig" + } + ] + } + ], + "extraWords": [ + "gestern" + ] + }, + { + "type": "fill-blank", + "title": "Füllen Sie die Feelings & Opinions-Phrasen aus", + "instructions": "Vervollständigen Sie diese Phrasen, indem Sie die fehlenden Wörter einfügen.", + "sentences": [ + { + "text": "Ich [bin] glücklich", + "blanks": [ + { + "placeholder": "bin", + "correct": [ + "bin" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Das gefällt [mir]", + "blanks": [ + { + "placeholder": "mir", + "correct": [ + "mir" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Das gefällt [mir] nicht", + "blanks": [ + { + "placeholder": "mir", + "correct": [ + "mir" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Ich [bin] müde", + "blanks": [ + { + "placeholder": "bin", + "correct": [ + "bin" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "bin", + "mir", + "mir", + "bin" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day45_en.json b/exercises/day45_en.json new file mode 100644 index 0000000..6aae69e --- /dev/null +++ b/exercises/day45_en.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete the Weather & Time Phrases", + "instructions": "Drag the correct words to complete each phrase.", + "sentences": [ + { + "text": "Yesterday", + "blanks": [ + { + "placeholder": "yesterday", + "correct": "yesterday" + } + ] + }, + { + "text": "It's [sunny]", + "blanks": [ + { + "placeholder": "sunny", + "correct": "sunny" + } + ] + }, + { + "text": "What [time] is it?", + "blanks": [ + { + "placeholder": "time", + "correct": "time" + } + ] + }, + { + "text": "It's [raining]", + "blanks": [ + { + "placeholder": "raining", + "correct": "raining" + } + ] + } + ], + "extraWords": [ + "tomorrow" + ] + }, + { + "type": "fill-blank", + "title": "Fill in Feelings & Opinions Phrases", + "instructions": "Complete these phrases by filling in the missing words.", + "sentences": [ + { + "text": "I'm [happy]", + "blanks": [ + { + "placeholder": "happy", + "correct": [ + "happy" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "I [like] it", + "blanks": [ + { + "placeholder": "like", + "correct": [ + "like" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "I don't [like] it", + "blanks": [ + { + "placeholder": "like", + "correct": [ + "like" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "I'm [tired]", + "blanks": [ + { + "placeholder": "tired", + "correct": [ + "tired" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "happy", + "like", + "like", + "tired" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day45_es.json b/exercises/day45_es.json new file mode 100644 index 0000000..3669c81 --- /dev/null +++ b/exercises/day45_es.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Completa las Frases de Weather & Time", + "instructions": "Arrastra las palabras correctas para completar cada frase.", + "sentences": [ + { + "text": "Está [lloviendo]", + "blanks": [ + { + "placeholder": "lloviendo", + "correct": "lloviendo" + } + ] + }, + { + "text": "Ayer", + "blanks": [ + { + "placeholder": "ayer", + "correct": "ayer" + } + ] + }, + { + "text": "Está [soleado]", + "blanks": [ + { + "placeholder": "soleado", + "correct": "soleado" + } + ] + }, + { + "text": "Mañana", + "blanks": [ + { + "placeholder": "mañana", + "correct": "mañana" + } + ] + } + ], + "extraWords": [ + "hora" + ] + }, + { + "type": "fill-blank", + "title": "Completa las Frases de Feelings & Opinions", + "instructions": "Completa estas frases llenando las palabras que faltan.", + "sentences": [ + { + "text": "Estoy [feliz]", + "blanks": [ + { + "placeholder": "feliz", + "correct": [ + "feliz" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Estoy [cansado]", + "blanks": [ + { + "placeholder": "cansado", + "correct": [ + "cansado" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "No me [gusta]", + "blanks": [ + { + "placeholder": "gusta", + "correct": [ + "gusta" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Me [gusta]", + "blanks": [ + { + "placeholder": "gusta", + "correct": [ + "gusta" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "feliz", + "cansado", + "gusta", + "gusta" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day45_fr.json b/exercises/day45_fr.json new file mode 100644 index 0000000..3fcf0d8 --- /dev/null +++ b/exercises/day45_fr.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complétez les Phrases de Weather & Time", + "instructions": "Faites glisser les mots corrects pour compléter chaque phrase.", + "sentences": [ + { + "text": "Il fait [beau]", + "blanks": [ + { + "placeholder": "beau", + "correct": "beau" + } + ] + }, + { + "text": "Demain", + "blanks": [ + { + "placeholder": "demain", + "correct": "demain" + } + ] + }, + { + "text": "Il [pleut]", + "blanks": [ + { + "placeholder": "pleut", + "correct": "pleut" + } + ] + }, + { + "text": "Quelle [heure] est-il ?", + "blanks": [ + { + "placeholder": "heure", + "correct": "heure" + } + ] + } + ], + "extraWords": [ + "hier" + ] + }, + { + "type": "fill-blank", + "title": "Remplissez les Phrases de Feelings & Opinions", + "instructions": "Complétez ces phrases en remplissant les mots manquants.", + "sentences": [ + { + "text": "Je suis [heureux]", + "blanks": [ + { + "placeholder": "heureux", + "correct": [ + "heureux" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Je suis [fatigué]", + "blanks": [ + { + "placeholder": "fatigué", + "correct": [ + "fatigué" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Je n'[aime] pas ça", + "blanks": [ + { + "placeholder": "aime", + "correct": [ + "aime" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "J'[aime] ça", + "blanks": [ + { + "placeholder": "aime", + "correct": [ + "aime" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "heureux", + "fatigué", + "aime", + "aime" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day45_pt.json b/exercises/day45_pt.json new file mode 100644 index 0000000..e4a5ae3 --- /dev/null +++ b/exercises/day45_pt.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete as Frases de Weather & Time", + "instructions": "Arraste as palavras corretas para completar cada frase.", + "sentences": [ + { + "text": "Amanhã", + "blanks": [ + { + "placeholder": "amanhã", + "correct": "amanhã" + } + ] + }, + { + "text": "Que horas [são]?", + "blanks": [ + { + "placeholder": "são", + "correct": "são" + } + ] + }, + { + "text": "Ontem", + "blanks": [ + { + "placeholder": "ontem", + "correct": "ontem" + } + ] + }, + { + "text": "Está [ensolarado]", + "blanks": [ + { + "placeholder": "ensolarado", + "correct": "ensolarado" + } + ] + } + ], + "extraWords": [ + "chovendo" + ] + }, + { + "type": "fill-blank", + "title": "Preencha as Frases de Feelings & Opinions", + "instructions": "Complete essas frases preenchendo as palavras em falta.", + "sentences": [ + { + "text": "Estou [cansado]", + "blanks": [ + { + "placeholder": "cansado", + "correct": [ + "cansado" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Eu não [gosto]", + "blanks": [ + { + "placeholder": "gosto", + "correct": [ + "gosto" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Eu [gosto]", + "blanks": [ + { + "placeholder": "gosto", + "correct": [ + "gosto" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Estou [feliz]", + "blanks": [ + { + "placeholder": "feliz", + "correct": [ + "feliz" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "cansado", + "gosto", + "gosto", + "feliz" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day46_de.json b/exercises/day46_de.json new file mode 100644 index 0000000..6aa526c --- /dev/null +++ b/exercises/day46_de.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Vervollständigen Sie die Weather & Time-Phrasen", + "instructions": "Ziehen Sie die richtigen Wörter, um jede Phrase zu vervollständigen.", + "sentences": [ + { + "text": "Es ist [sonnig]", + "blanks": [ + { + "placeholder": "sonnig", + "correct": "sonnig" + } + ] + }, + { + "text": "Wie spät [ist] es?", + "blanks": [ + { + "placeholder": "ist", + "correct": "ist" + } + ] + }, + { + "text": "Morgen", + "blanks": [ + { + "placeholder": "morgen", + "correct": "morgen" + } + ] + }, + { + "text": "Gestern", + "blanks": [ + { + "placeholder": "gestern", + "correct": "gestern" + } + ] + } + ], + "extraWords": [ + "regnet" + ] + }, + { + "type": "fill-blank", + "title": "Füllen Sie die Feelings & Opinions-Phrasen aus", + "instructions": "Vervollständigen Sie diese Phrasen, indem Sie die fehlenden Wörter einfügen.", + "sentences": [ + { + "text": "Das gefällt [mir] nicht", + "blanks": [ + { + "placeholder": "mir", + "correct": [ + "mir" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Das gefällt [mir]", + "blanks": [ + { + "placeholder": "mir", + "correct": [ + "mir" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Ich [bin] müde", + "blanks": [ + { + "placeholder": "bin", + "correct": [ + "bin" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Ich [bin] glücklich", + "blanks": [ + { + "placeholder": "bin", + "correct": [ + "bin" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "mir", + "mir", + "bin", + "bin" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day46_en.json b/exercises/day46_en.json new file mode 100644 index 0000000..d0d609e --- /dev/null +++ b/exercises/day46_en.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete the Weather & Time Phrases", + "instructions": "Drag the correct words to complete each phrase.", + "sentences": [ + { + "text": "What [time] is it?", + "blanks": [ + { + "placeholder": "time", + "correct": "time" + } + ] + }, + { + "text": "Tomorrow", + "blanks": [ + { + "placeholder": "tomorrow", + "correct": "tomorrow" + } + ] + }, + { + "text": "It's [raining]", + "blanks": [ + { + "placeholder": "raining", + "correct": "raining" + } + ] + }, + { + "text": "Yesterday", + "blanks": [ + { + "placeholder": "yesterday", + "correct": "yesterday" + } + ] + } + ], + "extraWords": [ + "sunny" + ] + }, + { + "type": "fill-blank", + "title": "Fill in Feelings & Opinions Phrases", + "instructions": "Complete these phrases by filling in the missing words.", + "sentences": [ + { + "text": "I'm [happy]", + "blanks": [ + { + "placeholder": "happy", + "correct": [ + "happy" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "I'm [tired]", + "blanks": [ + { + "placeholder": "tired", + "correct": [ + "tired" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "I [like] it", + "blanks": [ + { + "placeholder": "like", + "correct": [ + "like" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "I don't [like] it", + "blanks": [ + { + "placeholder": "like", + "correct": [ + "like" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "happy", + "tired", + "like", + "like" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day46_es.json b/exercises/day46_es.json new file mode 100644 index 0000000..247cb05 --- /dev/null +++ b/exercises/day46_es.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Completa las Frases de Weather & Time", + "instructions": "Arrastra las palabras correctas para completar cada frase.", + "sentences": [ + { + "text": "Mañana", + "blanks": [ + { + "placeholder": "mañana", + "correct": "mañana" + } + ] + }, + { + "text": "Ayer", + "blanks": [ + { + "placeholder": "ayer", + "correct": "ayer" + } + ] + }, + { + "text": "Está [lloviendo]", + "blanks": [ + { + "placeholder": "lloviendo", + "correct": "lloviendo" + } + ] + }, + { + "text": "Está [soleado]", + "blanks": [ + { + "placeholder": "soleado", + "correct": "soleado" + } + ] + } + ], + "extraWords": [ + "hora" + ] + }, + { + "type": "fill-blank", + "title": "Completa las Frases de Feelings & Opinions", + "instructions": "Completa estas frases llenando las palabras que faltan.", + "sentences": [ + { + "text": "No me [gusta]", + "blanks": [ + { + "placeholder": "gusta", + "correct": [ + "gusta" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Estoy [feliz]", + "blanks": [ + { + "placeholder": "feliz", + "correct": [ + "feliz" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Estoy [cansado]", + "blanks": [ + { + "placeholder": "cansado", + "correct": [ + "cansado" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Me [gusta]", + "blanks": [ + { + "placeholder": "gusta", + "correct": [ + "gusta" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "gusta", + "feliz", + "cansado", + "gusta" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day46_fr.json b/exercises/day46_fr.json new file mode 100644 index 0000000..bae971b --- /dev/null +++ b/exercises/day46_fr.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complétez les Phrases de Weather & Time", + "instructions": "Faites glisser les mots corrects pour compléter chaque phrase.", + "sentences": [ + { + "text": "Il [pleut]", + "blanks": [ + { + "placeholder": "pleut", + "correct": "pleut" + } + ] + }, + { + "text": "Demain", + "blanks": [ + { + "placeholder": "demain", + "correct": "demain" + } + ] + }, + { + "text": "Hier", + "blanks": [ + { + "placeholder": "hier", + "correct": "hier" + } + ] + }, + { + "text": "Quelle [heure] est-il ?", + "blanks": [ + { + "placeholder": "heure", + "correct": "heure" + } + ] + } + ], + "extraWords": [ + "beau" + ] + }, + { + "type": "fill-blank", + "title": "Remplissez les Phrases de Feelings & Opinions", + "instructions": "Complétez ces phrases en remplissant les mots manquants.", + "sentences": [ + { + "text": "Je suis [heureux]", + "blanks": [ + { + "placeholder": "heureux", + "correct": [ + "heureux" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "J'[aime] ça", + "blanks": [ + { + "placeholder": "aime", + "correct": [ + "aime" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Je n'[aime] pas ça", + "blanks": [ + { + "placeholder": "aime", + "correct": [ + "aime" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Je suis [fatigué]", + "blanks": [ + { + "placeholder": "fatigué", + "correct": [ + "fatigué" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "heureux", + "aime", + "aime", + "fatigué" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day46_pt.json b/exercises/day46_pt.json new file mode 100644 index 0000000..c53a335 --- /dev/null +++ b/exercises/day46_pt.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete as Frases de Weather & Time", + "instructions": "Arraste as palavras corretas para completar cada frase.", + "sentences": [ + { + "text": "Ontem", + "blanks": [ + { + "placeholder": "ontem", + "correct": "ontem" + } + ] + }, + { + "text": "Está [chovendo]", + "blanks": [ + { + "placeholder": "chovendo", + "correct": "chovendo" + } + ] + }, + { + "text": "Está [ensolarado]", + "blanks": [ + { + "placeholder": "ensolarado", + "correct": "ensolarado" + } + ] + }, + { + "text": "Que horas [são]?", + "blanks": [ + { + "placeholder": "são", + "correct": "são" + } + ] + } + ], + "extraWords": [ + "amanhã" + ] + }, + { + "type": "fill-blank", + "title": "Preencha as Frases de Feelings & Opinions", + "instructions": "Complete essas frases preenchendo as palavras em falta.", + "sentences": [ + { + "text": "Estou [cansado]", + "blanks": [ + { + "placeholder": "cansado", + "correct": [ + "cansado" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Eu não [gosto]", + "blanks": [ + { + "placeholder": "gosto", + "correct": [ + "gosto" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Estou [feliz]", + "blanks": [ + { + "placeholder": "feliz", + "correct": [ + "feliz" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Eu [gosto]", + "blanks": [ + { + "placeholder": "gosto", + "correct": [ + "gosto" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "cansado", + "gosto", + "feliz", + "gosto" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day47_de.json b/exercises/day47_de.json new file mode 100644 index 0000000..38d3e8f --- /dev/null +++ b/exercises/day47_de.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Vervollständigen Sie die Weather & Time-Phrasen", + "instructions": "Ziehen Sie die richtigen Wörter, um jede Phrase zu vervollständigen.", + "sentences": [ + { + "text": "Morgen", + "blanks": [ + { + "placeholder": "morgen", + "correct": "morgen" + } + ] + }, + { + "text": "Wie spät [ist] es?", + "blanks": [ + { + "placeholder": "ist", + "correct": "ist" + } + ] + }, + { + "text": "Gestern", + "blanks": [ + { + "placeholder": "gestern", + "correct": "gestern" + } + ] + }, + { + "text": "Es [regnet]", + "blanks": [ + { + "placeholder": "regnet", + "correct": "regnet" + } + ] + } + ], + "extraWords": [ + "sonnig" + ] + }, + { + "type": "fill-blank", + "title": "Füllen Sie die Feelings & Opinions-Phrasen aus", + "instructions": "Vervollständigen Sie diese Phrasen, indem Sie die fehlenden Wörter einfügen.", + "sentences": [ + { + "text": "Das gefällt [mir] nicht", + "blanks": [ + { + "placeholder": "mir", + "correct": [ + "mir" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Ich [bin] müde", + "blanks": [ + { + "placeholder": "bin", + "correct": [ + "bin" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Ich [bin] glücklich", + "blanks": [ + { + "placeholder": "bin", + "correct": [ + "bin" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Das gefällt [mir]", + "blanks": [ + { + "placeholder": "mir", + "correct": [ + "mir" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "mir", + "bin", + "bin", + "mir" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day47_en.json b/exercises/day47_en.json new file mode 100644 index 0000000..7be9ae8 --- /dev/null +++ b/exercises/day47_en.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete the Weather & Time Phrases", + "instructions": "Drag the correct words to complete each phrase.", + "sentences": [ + { + "text": "Yesterday", + "blanks": [ + { + "placeholder": "yesterday", + "correct": "yesterday" + } + ] + }, + { + "text": "Tomorrow", + "blanks": [ + { + "placeholder": "tomorrow", + "correct": "tomorrow" + } + ] + }, + { + "text": "What [time] is it?", + "blanks": [ + { + "placeholder": "time", + "correct": "time" + } + ] + }, + { + "text": "It's [sunny]", + "blanks": [ + { + "placeholder": "sunny", + "correct": "sunny" + } + ] + } + ], + "extraWords": [ + "raining" + ] + }, + { + "type": "fill-blank", + "title": "Fill in Feelings & Opinions Phrases", + "instructions": "Complete these phrases by filling in the missing words.", + "sentences": [ + { + "text": "I don't [like] it", + "blanks": [ + { + "placeholder": "like", + "correct": [ + "like" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "I'm [tired]", + "blanks": [ + { + "placeholder": "tired", + "correct": [ + "tired" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "I'm [happy]", + "blanks": [ + { + "placeholder": "happy", + "correct": [ + "happy" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "I [like] it", + "blanks": [ + { + "placeholder": "like", + "correct": [ + "like" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "like", + "tired", + "happy", + "like" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day47_es.json b/exercises/day47_es.json new file mode 100644 index 0000000..2c7a99e --- /dev/null +++ b/exercises/day47_es.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Completa las Frases de Weather & Time", + "instructions": "Arrastra las palabras correctas para completar cada frase.", + "sentences": [ + { + "text": "Está [soleado]", + "blanks": [ + { + "placeholder": "soleado", + "correct": "soleado" + } + ] + }, + { + "text": "Está [lloviendo]", + "blanks": [ + { + "placeholder": "lloviendo", + "correct": "lloviendo" + } + ] + }, + { + "text": "¿Qué [hora] es?", + "blanks": [ + { + "placeholder": "hora", + "correct": "hora" + } + ] + }, + { + "text": "Mañana", + "blanks": [ + { + "placeholder": "mañana", + "correct": "mañana" + } + ] + } + ], + "extraWords": [ + "ayer" + ] + }, + { + "type": "fill-blank", + "title": "Completa las Frases de Feelings & Opinions", + "instructions": "Completa estas frases llenando las palabras que faltan.", + "sentences": [ + { + "text": "Me [gusta]", + "blanks": [ + { + "placeholder": "gusta", + "correct": [ + "gusta" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "No me [gusta]", + "blanks": [ + { + "placeholder": "gusta", + "correct": [ + "gusta" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Estoy [feliz]", + "blanks": [ + { + "placeholder": "feliz", + "correct": [ + "feliz" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Estoy [cansado]", + "blanks": [ + { + "placeholder": "cansado", + "correct": [ + "cansado" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "gusta", + "gusta", + "feliz", + "cansado" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day47_fr.json b/exercises/day47_fr.json new file mode 100644 index 0000000..08c199f --- /dev/null +++ b/exercises/day47_fr.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complétez les Phrases de Weather & Time", + "instructions": "Faites glisser les mots corrects pour compléter chaque phrase.", + "sentences": [ + { + "text": "Demain", + "blanks": [ + { + "placeholder": "demain", + "correct": "demain" + } + ] + }, + { + "text": "Il [pleut]", + "blanks": [ + { + "placeholder": "pleut", + "correct": "pleut" + } + ] + }, + { + "text": "Hier", + "blanks": [ + { + "placeholder": "hier", + "correct": "hier" + } + ] + }, + { + "text": "Il fait [beau]", + "blanks": [ + { + "placeholder": "beau", + "correct": "beau" + } + ] + } + ], + "extraWords": [ + "heure" + ] + }, + { + "type": "fill-blank", + "title": "Remplissez les Phrases de Feelings & Opinions", + "instructions": "Complétez ces phrases en remplissant les mots manquants.", + "sentences": [ + { + "text": "Je suis [heureux]", + "blanks": [ + { + "placeholder": "heureux", + "correct": [ + "heureux" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Je n'[aime] pas ça", + "blanks": [ + { + "placeholder": "aime", + "correct": [ + "aime" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "J'[aime] ça", + "blanks": [ + { + "placeholder": "aime", + "correct": [ + "aime" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Je suis [fatigué]", + "blanks": [ + { + "placeholder": "fatigué", + "correct": [ + "fatigué" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "heureux", + "aime", + "aime", + "fatigué" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day47_pt.json b/exercises/day47_pt.json new file mode 100644 index 0000000..42b86ae --- /dev/null +++ b/exercises/day47_pt.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete as Frases de Weather & Time", + "instructions": "Arraste as palavras corretas para completar cada frase.", + "sentences": [ + { + "text": "Amanhã", + "blanks": [ + { + "placeholder": "amanhã", + "correct": "amanhã" + } + ] + }, + { + "text": "Que horas [são]?", + "blanks": [ + { + "placeholder": "são", + "correct": "são" + } + ] + }, + { + "text": "Está [chovendo]", + "blanks": [ + { + "placeholder": "chovendo", + "correct": "chovendo" + } + ] + }, + { + "text": "Ontem", + "blanks": [ + { + "placeholder": "ontem", + "correct": "ontem" + } + ] + } + ], + "extraWords": [ + "ensolarado" + ] + }, + { + "type": "fill-blank", + "title": "Preencha as Frases de Feelings & Opinions", + "instructions": "Complete essas frases preenchendo as palavras em falta.", + "sentences": [ + { + "text": "Estou [cansado]", + "blanks": [ + { + "placeholder": "cansado", + "correct": [ + "cansado" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Estou [feliz]", + "blanks": [ + { + "placeholder": "feliz", + "correct": [ + "feliz" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Eu não [gosto]", + "blanks": [ + { + "placeholder": "gosto", + "correct": [ + "gosto" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Eu [gosto]", + "blanks": [ + { + "placeholder": "gosto", + "correct": [ + "gosto" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "cansado", + "feliz", + "gosto", + "gosto" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day48_de.json b/exercises/day48_de.json new file mode 100644 index 0000000..5318bf1 --- /dev/null +++ b/exercises/day48_de.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Vervollständigen Sie die Weather & Time-Phrasen", + "instructions": "Ziehen Sie die richtigen Wörter, um jede Phrase zu vervollständigen.", + "sentences": [ + { + "text": "Es ist [sonnig]", + "blanks": [ + { + "placeholder": "sonnig", + "correct": "sonnig" + } + ] + }, + { + "text": "Morgen", + "blanks": [ + { + "placeholder": "morgen", + "correct": "morgen" + } + ] + }, + { + "text": "Gestern", + "blanks": [ + { + "placeholder": "gestern", + "correct": "gestern" + } + ] + }, + { + "text": "Es [regnet]", + "blanks": [ + { + "placeholder": "regnet", + "correct": "regnet" + } + ] + } + ], + "extraWords": [ + "ist" + ] + }, + { + "type": "fill-blank", + "title": "Füllen Sie die Feelings & Opinions-Phrasen aus", + "instructions": "Vervollständigen Sie diese Phrasen, indem Sie die fehlenden Wörter einfügen.", + "sentences": [ + { + "text": "Das gefällt [mir]", + "blanks": [ + { + "placeholder": "mir", + "correct": [ + "mir" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Das gefällt [mir] nicht", + "blanks": [ + { + "placeholder": "mir", + "correct": [ + "mir" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Ich [bin] müde", + "blanks": [ + { + "placeholder": "bin", + "correct": [ + "bin" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Ich [bin] glücklich", + "blanks": [ + { + "placeholder": "bin", + "correct": [ + "bin" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "mir", + "mir", + "bin", + "bin" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day48_en.json b/exercises/day48_en.json new file mode 100644 index 0000000..5b7dce0 --- /dev/null +++ b/exercises/day48_en.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete the Weather & Time Phrases", + "instructions": "Drag the correct words to complete each phrase.", + "sentences": [ + { + "text": "Yesterday", + "blanks": [ + { + "placeholder": "yesterday", + "correct": "yesterday" + } + ] + }, + { + "text": "What [time] is it?", + "blanks": [ + { + "placeholder": "time", + "correct": "time" + } + ] + }, + { + "text": "It's [raining]", + "blanks": [ + { + "placeholder": "raining", + "correct": "raining" + } + ] + }, + { + "text": "It's [sunny]", + "blanks": [ + { + "placeholder": "sunny", + "correct": "sunny" + } + ] + } + ], + "extraWords": [ + "tomorrow" + ] + }, + { + "type": "fill-blank", + "title": "Fill in Feelings & Opinions Phrases", + "instructions": "Complete these phrases by filling in the missing words.", + "sentences": [ + { + "text": "I'm [tired]", + "blanks": [ + { + "placeholder": "tired", + "correct": [ + "tired" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "I'm [happy]", + "blanks": [ + { + "placeholder": "happy", + "correct": [ + "happy" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "I [like] it", + "blanks": [ + { + "placeholder": "like", + "correct": [ + "like" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "I don't [like] it", + "blanks": [ + { + "placeholder": "like", + "correct": [ + "like" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "tired", + "happy", + "like", + "like" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day48_es.json b/exercises/day48_es.json new file mode 100644 index 0000000..be6b674 --- /dev/null +++ b/exercises/day48_es.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Completa las Frases de Weather & Time", + "instructions": "Arrastra las palabras correctas para completar cada frase.", + "sentences": [ + { + "text": "Mañana", + "blanks": [ + { + "placeholder": "mañana", + "correct": "mañana" + } + ] + }, + { + "text": "Ayer", + "blanks": [ + { + "placeholder": "ayer", + "correct": "ayer" + } + ] + }, + { + "text": "Está [soleado]", + "blanks": [ + { + "placeholder": "soleado", + "correct": "soleado" + } + ] + }, + { + "text": "Está [lloviendo]", + "blanks": [ + { + "placeholder": "lloviendo", + "correct": "lloviendo" + } + ] + } + ], + "extraWords": [ + "hora" + ] + }, + { + "type": "fill-blank", + "title": "Completa las Frases de Feelings & Opinions", + "instructions": "Completa estas frases llenando las palabras que faltan.", + "sentences": [ + { + "text": "Estoy [cansado]", + "blanks": [ + { + "placeholder": "cansado", + "correct": [ + "cansado" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Me [gusta]", + "blanks": [ + { + "placeholder": "gusta", + "correct": [ + "gusta" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Estoy [feliz]", + "blanks": [ + { + "placeholder": "feliz", + "correct": [ + "feliz" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "No me [gusta]", + "blanks": [ + { + "placeholder": "gusta", + "correct": [ + "gusta" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "cansado", + "gusta", + "feliz", + "gusta" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day48_fr.json b/exercises/day48_fr.json new file mode 100644 index 0000000..0b44086 --- /dev/null +++ b/exercises/day48_fr.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complétez les Phrases de Weather & Time", + "instructions": "Faites glisser les mots corrects pour compléter chaque phrase.", + "sentences": [ + { + "text": "Il fait [beau]", + "blanks": [ + { + "placeholder": "beau", + "correct": "beau" + } + ] + }, + { + "text": "Quelle [heure] est-il ?", + "blanks": [ + { + "placeholder": "heure", + "correct": "heure" + } + ] + }, + { + "text": "Demain", + "blanks": [ + { + "placeholder": "demain", + "correct": "demain" + } + ] + }, + { + "text": "Hier", + "blanks": [ + { + "placeholder": "hier", + "correct": "hier" + } + ] + } + ], + "extraWords": [ + "pleut" + ] + }, + { + "type": "fill-blank", + "title": "Remplissez les Phrases de Feelings & Opinions", + "instructions": "Complétez ces phrases en remplissant les mots manquants.", + "sentences": [ + { + "text": "J'[aime] ça", + "blanks": [ + { + "placeholder": "aime", + "correct": [ + "aime" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Je suis [heureux]", + "blanks": [ + { + "placeholder": "heureux", + "correct": [ + "heureux" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Je n'[aime] pas ça", + "blanks": [ + { + "placeholder": "aime", + "correct": [ + "aime" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Je suis [fatigué]", + "blanks": [ + { + "placeholder": "fatigué", + "correct": [ + "fatigué" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "aime", + "heureux", + "aime", + "fatigué" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day48_pt.json b/exercises/day48_pt.json new file mode 100644 index 0000000..ad3ba81 --- /dev/null +++ b/exercises/day48_pt.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete as Frases de Weather & Time", + "instructions": "Arraste as palavras corretas para completar cada frase.", + "sentences": [ + { + "text": "Ontem", + "blanks": [ + { + "placeholder": "ontem", + "correct": "ontem" + } + ] + }, + { + "text": "Está [ensolarado]", + "blanks": [ + { + "placeholder": "ensolarado", + "correct": "ensolarado" + } + ] + }, + { + "text": "Que horas [são]?", + "blanks": [ + { + "placeholder": "são", + "correct": "são" + } + ] + }, + { + "text": "Está [chovendo]", + "blanks": [ + { + "placeholder": "chovendo", + "correct": "chovendo" + } + ] + } + ], + "extraWords": [ + "amanhã" + ] + }, + { + "type": "fill-blank", + "title": "Preencha as Frases de Feelings & Opinions", + "instructions": "Complete essas frases preenchendo as palavras em falta.", + "sentences": [ + { + "text": "Eu [gosto]", + "blanks": [ + { + "placeholder": "gosto", + "correct": [ + "gosto" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Estou [feliz]", + "blanks": [ + { + "placeholder": "feliz", + "correct": [ + "feliz" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Eu não [gosto]", + "blanks": [ + { + "placeholder": "gosto", + "correct": [ + "gosto" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Estou [cansado]", + "blanks": [ + { + "placeholder": "cansado", + "correct": [ + "cansado" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "gosto", + "feliz", + "gosto", + "cansado" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day49_de.json b/exercises/day49_de.json new file mode 100644 index 0000000..a67c10b --- /dev/null +++ b/exercises/day49_de.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Vervollständigen Sie die Weather & Time-Phrasen", + "instructions": "Ziehen Sie die richtigen Wörter, um jede Phrase zu vervollständigen.", + "sentences": [ + { + "text": "Es ist [sonnig]", + "blanks": [ + { + "placeholder": "sonnig", + "correct": "sonnig" + } + ] + }, + { + "text": "Es [regnet]", + "blanks": [ + { + "placeholder": "regnet", + "correct": "regnet" + } + ] + }, + { + "text": "Gestern", + "blanks": [ + { + "placeholder": "gestern", + "correct": "gestern" + } + ] + }, + { + "text": "Wie spät [ist] es?", + "blanks": [ + { + "placeholder": "ist", + "correct": "ist" + } + ] + } + ], + "extraWords": [ + "morgen" + ] + }, + { + "type": "fill-blank", + "title": "Füllen Sie die Feelings & Opinions-Phrasen aus", + "instructions": "Vervollständigen Sie diese Phrasen, indem Sie die fehlenden Wörter einfügen.", + "sentences": [ + { + "text": "Das gefällt [mir]", + "blanks": [ + { + "placeholder": "mir", + "correct": [ + "mir" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Ich [bin] müde", + "blanks": [ + { + "placeholder": "bin", + "correct": [ + "bin" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Das gefällt [mir] nicht", + "blanks": [ + { + "placeholder": "mir", + "correct": [ + "mir" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Ich [bin] glücklich", + "blanks": [ + { + "placeholder": "bin", + "correct": [ + "bin" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "mir", + "bin", + "mir", + "bin" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day49_en.json b/exercises/day49_en.json new file mode 100644 index 0000000..9c0a01c --- /dev/null +++ b/exercises/day49_en.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete the Weather & Time Phrases", + "instructions": "Drag the correct words to complete each phrase.", + "sentences": [ + { + "text": "It's [sunny]", + "blanks": [ + { + "placeholder": "sunny", + "correct": "sunny" + } + ] + }, + { + "text": "Yesterday", + "blanks": [ + { + "placeholder": "yesterday", + "correct": "yesterday" + } + ] + }, + { + "text": "It's [raining]", + "blanks": [ + { + "placeholder": "raining", + "correct": "raining" + } + ] + }, + { + "text": "What [time] is it?", + "blanks": [ + { + "placeholder": "time", + "correct": "time" + } + ] + } + ], + "extraWords": [ + "tomorrow" + ] + }, + { + "type": "fill-blank", + "title": "Fill in Feelings & Opinions Phrases", + "instructions": "Complete these phrases by filling in the missing words.", + "sentences": [ + { + "text": "I'm [tired]", + "blanks": [ + { + "placeholder": "tired", + "correct": [ + "tired" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "I'm [happy]", + "blanks": [ + { + "placeholder": "happy", + "correct": [ + "happy" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "I don't [like] it", + "blanks": [ + { + "placeholder": "like", + "correct": [ + "like" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "I [like] it", + "blanks": [ + { + "placeholder": "like", + "correct": [ + "like" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "tired", + "happy", + "like", + "like" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day49_es.json b/exercises/day49_es.json new file mode 100644 index 0000000..1ad3af6 --- /dev/null +++ b/exercises/day49_es.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Completa las Frases de Weather & Time", + "instructions": "Arrastra las palabras correctas para completar cada frase.", + "sentences": [ + { + "text": "¿Qué [hora] es?", + "blanks": [ + { + "placeholder": "hora", + "correct": "hora" + } + ] + }, + { + "text": "Está [soleado]", + "blanks": [ + { + "placeholder": "soleado", + "correct": "soleado" + } + ] + }, + { + "text": "Mañana", + "blanks": [ + { + "placeholder": "mañana", + "correct": "mañana" + } + ] + }, + { + "text": "Está [lloviendo]", + "blanks": [ + { + "placeholder": "lloviendo", + "correct": "lloviendo" + } + ] + } + ], + "extraWords": [ + "ayer" + ] + }, + { + "type": "fill-blank", + "title": "Completa las Frases de Feelings & Opinions", + "instructions": "Completa estas frases llenando las palabras que faltan.", + "sentences": [ + { + "text": "No me [gusta]", + "blanks": [ + { + "placeholder": "gusta", + "correct": [ + "gusta" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Me [gusta]", + "blanks": [ + { + "placeholder": "gusta", + "correct": [ + "gusta" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Estoy [feliz]", + "blanks": [ + { + "placeholder": "feliz", + "correct": [ + "feliz" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Estoy [cansado]", + "blanks": [ + { + "placeholder": "cansado", + "correct": [ + "cansado" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "gusta", + "gusta", + "feliz", + "cansado" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day49_fr.json b/exercises/day49_fr.json new file mode 100644 index 0000000..4eb2b4f --- /dev/null +++ b/exercises/day49_fr.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complétez les Phrases de Weather & Time", + "instructions": "Faites glisser les mots corrects pour compléter chaque phrase.", + "sentences": [ + { + "text": "Hier", + "blanks": [ + { + "placeholder": "hier", + "correct": "hier" + } + ] + }, + { + "text": "Il fait [beau]", + "blanks": [ + { + "placeholder": "beau", + "correct": "beau" + } + ] + }, + { + "text": "Demain", + "blanks": [ + { + "placeholder": "demain", + "correct": "demain" + } + ] + }, + { + "text": "Il [pleut]", + "blanks": [ + { + "placeholder": "pleut", + "correct": "pleut" + } + ] + } + ], + "extraWords": [ + "heure" + ] + }, + { + "type": "fill-blank", + "title": "Remplissez les Phrases de Feelings & Opinions", + "instructions": "Complétez ces phrases en remplissant les mots manquants.", + "sentences": [ + { + "text": "Je n'[aime] pas ça", + "blanks": [ + { + "placeholder": "aime", + "correct": [ + "aime" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Je suis [fatigué]", + "blanks": [ + { + "placeholder": "fatigué", + "correct": [ + "fatigué" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Je suis [heureux]", + "blanks": [ + { + "placeholder": "heureux", + "correct": [ + "heureux" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "J'[aime] ça", + "blanks": [ + { + "placeholder": "aime", + "correct": [ + "aime" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "aime", + "fatigué", + "heureux", + "aime" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day49_pt.json b/exercises/day49_pt.json new file mode 100644 index 0000000..7f9471b --- /dev/null +++ b/exercises/day49_pt.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete as Frases de Weather & Time", + "instructions": "Arraste as palavras corretas para completar cada frase.", + "sentences": [ + { + "text": "Está [chovendo]", + "blanks": [ + { + "placeholder": "chovendo", + "correct": "chovendo" + } + ] + }, + { + "text": "Ontem", + "blanks": [ + { + "placeholder": "ontem", + "correct": "ontem" + } + ] + }, + { + "text": "Amanhã", + "blanks": [ + { + "placeholder": "amanhã", + "correct": "amanhã" + } + ] + }, + { + "text": "Está [ensolarado]", + "blanks": [ + { + "placeholder": "ensolarado", + "correct": "ensolarado" + } + ] + } + ], + "extraWords": [ + "são" + ] + }, + { + "type": "fill-blank", + "title": "Preencha as Frases de Feelings & Opinions", + "instructions": "Complete essas frases preenchendo as palavras em falta.", + "sentences": [ + { + "text": "Eu não [gosto]", + "blanks": [ + { + "placeholder": "gosto", + "correct": [ + "gosto" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Estou [cansado]", + "blanks": [ + { + "placeholder": "cansado", + "correct": [ + "cansado" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Estou [feliz]", + "blanks": [ + { + "placeholder": "feliz", + "correct": [ + "feliz" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Eu [gosto]", + "blanks": [ + { + "placeholder": "gosto", + "correct": [ + "gosto" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "gosto", + "cansado", + "feliz", + "gosto" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day4_de.json b/exercises/day4_de.json new file mode 100644 index 0000000..de53342 --- /dev/null +++ b/exercises/day4_de.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Vervollständigen Sie die Daily Conversations-Phrasen", + "instructions": "Ziehen Sie die richtigen Wörter, um jede Phrase zu vervollständigen.", + "sentences": [ + { + "text": "Sehr [gut]", + "blanks": [ + { + "placeholder": "gut", + "correct": "gut" + } + ] + }, + { + "text": "Bis [später]", + "blanks": [ + { + "placeholder": "später", + "correct": "später" + } + ] + }, + { + "text": "Einen [schönen] Tag noch", + "blanks": [ + { + "placeholder": "schönen", + "correct": "schönen" + } + ] + }, + { + "text": "Guten Tag 4!", + "blanks": [ + { + "placeholder": "tag", + "correct": "tag" + } + ] + } + ], + "extraWords": [ + "alles" + ] + }, + { + "type": "fill-blank", + "title": "Füllen Sie die Learning Progress-Phrasen aus", + "instructions": "Vervollständigen Sie diese Phrasen, indem Sie die fehlenden Wörter einfügen.", + "sentences": [ + { + "text": "Das ist Lektion 4", + "blanks": [ + { + "placeholder": "lektion", + "correct": [ + "lektion" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Ich [verstehe]", + "blanks": [ + { + "placeholder": "verstehe", + "correct": [ + "verstehe" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Das ist [nützlich]", + "blanks": [ + { + "placeholder": "nützlich", + "correct": [ + "nützlich" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Ich [lerne]", + "blanks": [ + { + "placeholder": "lerne", + "correct": [ + "lerne" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "lektion", + "verstehe", + "nützlich", + "lerne" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day4_en.json b/exercises/day4_en.json new file mode 100644 index 0000000..b3e4417 --- /dev/null +++ b/exercises/day4_en.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete the Daily Conversations Phrases", + "instructions": "Drag the correct words to complete each phrase.", + "sentences": [ + { + "text": "Good [day] 4!", + "blanks": [ + { + "placeholder": "day", + "correct": "day" + } + ] + }, + { + "text": "Have a nice [day]", + "blanks": [ + { + "placeholder": "day", + "correct": "day" + } + ] + }, + { + "text": "See [you] later", + "blanks": [ + { + "placeholder": "you", + "correct": "you" + } + ] + }, + { + "text": "How is [everything]?", + "blanks": [ + { + "placeholder": "everything", + "correct": "everything" + } + ] + } + ], + "extraWords": [ + "well" + ] + }, + { + "type": "fill-blank", + "title": "Fill in Learning Progress Phrases", + "instructions": "Complete these phrases by filling in the missing words.", + "sentences": [ + { + "text": "I am [learning]", + "blanks": [ + { + "placeholder": "learning", + "correct": [ + "learning" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "I [understand]", + "blanks": [ + { + "placeholder": "understand", + "correct": [ + "understand" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "This is [lesson] 4", + "blanks": [ + { + "placeholder": "lesson", + "correct": [ + "lesson" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "This is [useful]", + "blanks": [ + { + "placeholder": "useful", + "correct": [ + "useful" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "learning", + "understand", + "lesson", + "useful" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day4_es.json b/exercises/day4_es.json new file mode 100644 index 0000000..59c0576 --- /dev/null +++ b/exercises/day4_es.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Completa las Frases de Daily Conversations", + "instructions": "Arrastra las palabras correctas para completar cada frase.", + "sentences": [ + { + "text": "Hasta [luego]", + "blanks": [ + { + "placeholder": "luego", + "correct": "luego" + } + ] + }, + { + "text": "¡Buen [día] 4!", + "blanks": [ + { + "placeholder": "día", + "correct": "día" + } + ] + }, + { + "text": "Que tengas un [buen] día", + "blanks": [ + { + "placeholder": "buen", + "correct": "buen" + } + ] + }, + { + "text": "Muy [bien]", + "blanks": [ + { + "placeholder": "bien", + "correct": "bien" + } + ] + } + ], + "extraWords": [ + "todo" + ] + }, + { + "type": "fill-blank", + "title": "Completa las Frases de Learning Progress", + "instructions": "Completa estas frases llenando las palabras que faltan.", + "sentences": [ + { + "text": "Estoy [aprendiendo]", + "blanks": [ + { + "placeholder": "aprendiendo", + "correct": [ + "aprendiendo" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Esto es [útil]", + "blanks": [ + { + "placeholder": "útil", + "correct": [ + "útil" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Entiendo", + "blanks": [ + { + "placeholder": "entiendo", + "correct": [ + "entiendo" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Esta es la [lección] 4", + "blanks": [ + { + "placeholder": "lección", + "correct": [ + "lección" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "aprendiendo", + "útil", + "entiendo", + "lección" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day4_fr.json b/exercises/day4_fr.json new file mode 100644 index 0000000..f13af6a --- /dev/null +++ b/exercises/day4_fr.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complétez les Phrases de Daily Conversations", + "instructions": "Faites glisser les mots corrects pour compléter chaque phrase.", + "sentences": [ + { + "text": "Comment va tout ?", + "blanks": [ + { + "placeholder": "comment", + "correct": "comment" + } + ] + }, + { + "text": "Bonne [journée]", + "blanks": [ + { + "placeholder": "journée", + "correct": "journée" + } + ] + }, + { + "text": "Très [bien]", + "blanks": [ + { + "placeholder": "bien", + "correct": "bien" + } + ] + }, + { + "text": "Bonne [journée] 4!", + "blanks": [ + { + "placeholder": "journée", + "correct": "journée" + } + ] + } + ], + "extraWords": [ + "tard" + ] + }, + { + "type": "fill-blank", + "title": "Remplissez les Phrases de Learning Progress", + "instructions": "Complétez ces phrases en remplissant les mots manquants.", + "sentences": [ + { + "text": "Je [comprends]", + "blanks": [ + { + "placeholder": "comprends", + "correct": [ + "comprends" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "C'est la [leçon] 4", + "blanks": [ + { + "placeholder": "leçon", + "correct": [ + "leçon" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "J'[apprends]", + "blanks": [ + { + "placeholder": "apprends", + "correct": [ + "apprends" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "C'est [utile]", + "blanks": [ + { + "placeholder": "utile", + "correct": [ + "utile" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "comprends", + "leçon", + "apprends", + "utile" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day4_pt.json b/exercises/day4_pt.json new file mode 100644 index 0000000..592da8b --- /dev/null +++ b/exercises/day4_pt.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete as Frases de Daily Conversations", + "instructions": "Arraste as palavras corretas para completar cada frase.", + "sentences": [ + { + "text": "Tenha um [bom] dia", + "blanks": [ + { + "placeholder": "bom", + "correct": "bom" + } + ] + }, + { + "text": "Bom [dia] 4!", + "blanks": [ + { + "placeholder": "dia", + "correct": "dia" + } + ] + }, + { + "text": "Muito [bem]", + "blanks": [ + { + "placeholder": "bem", + "correct": "bem" + } + ] + }, + { + "text": "Como está [tudo]?", + "blanks": [ + { + "placeholder": "tudo", + "correct": "tudo" + } + ] + } + ], + "extraWords": [ + "mais" + ] + }, + { + "type": "fill-blank", + "title": "Preencha as Frases de Learning Progress", + "instructions": "Complete essas frases preenchendo as palavras em falta.", + "sentences": [ + { + "text": "Estou [aprendendo]", + "blanks": [ + { + "placeholder": "aprendendo", + "correct": [ + "aprendendo" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Esta é a [lição] 4", + "blanks": [ + { + "placeholder": "lição", + "correct": [ + "lição" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Eu [entendo]", + "blanks": [ + { + "placeholder": "entendo", + "correct": [ + "entendo" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Isso é [útil]", + "blanks": [ + { + "placeholder": "útil", + "correct": [ + "útil" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "aprendendo", + "lição", + "entendo", + "útil" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day50_de.json b/exercises/day50_de.json new file mode 100644 index 0000000..56acdc4 --- /dev/null +++ b/exercises/day50_de.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Vervollständigen Sie die Weather & Time-Phrasen", + "instructions": "Ziehen Sie die richtigen Wörter, um jede Phrase zu vervollständigen.", + "sentences": [ + { + "text": "Es [regnet]", + "blanks": [ + { + "placeholder": "regnet", + "correct": "regnet" + } + ] + }, + { + "text": "Gestern", + "blanks": [ + { + "placeholder": "gestern", + "correct": "gestern" + } + ] + }, + { + "text": "Morgen", + "blanks": [ + { + "placeholder": "morgen", + "correct": "morgen" + } + ] + }, + { + "text": "Es ist [sonnig]", + "blanks": [ + { + "placeholder": "sonnig", + "correct": "sonnig" + } + ] + } + ], + "extraWords": [ + "ist" + ] + }, + { + "type": "fill-blank", + "title": "Füllen Sie die Feelings & Opinions-Phrasen aus", + "instructions": "Vervollständigen Sie diese Phrasen, indem Sie die fehlenden Wörter einfügen.", + "sentences": [ + { + "text": "Ich [bin] glücklich", + "blanks": [ + { + "placeholder": "bin", + "correct": [ + "bin" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Das gefällt [mir]", + "blanks": [ + { + "placeholder": "mir", + "correct": [ + "mir" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Das gefällt [mir] nicht", + "blanks": [ + { + "placeholder": "mir", + "correct": [ + "mir" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Ich [bin] müde", + "blanks": [ + { + "placeholder": "bin", + "correct": [ + "bin" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "bin", + "mir", + "mir", + "bin" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day50_en.json b/exercises/day50_en.json new file mode 100644 index 0000000..ac0144a --- /dev/null +++ b/exercises/day50_en.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete the Weather & Time Phrases", + "instructions": "Drag the correct words to complete each phrase.", + "sentences": [ + { + "text": "It's [sunny]", + "blanks": [ + { + "placeholder": "sunny", + "correct": "sunny" + } + ] + }, + { + "text": "What [time] is it?", + "blanks": [ + { + "placeholder": "time", + "correct": "time" + } + ] + }, + { + "text": "It's [raining]", + "blanks": [ + { + "placeholder": "raining", + "correct": "raining" + } + ] + }, + { + "text": "Tomorrow", + "blanks": [ + { + "placeholder": "tomorrow", + "correct": "tomorrow" + } + ] + } + ], + "extraWords": [ + "yesterday" + ] + }, + { + "type": "fill-blank", + "title": "Fill in Feelings & Opinions Phrases", + "instructions": "Complete these phrases by filling in the missing words.", + "sentences": [ + { + "text": "I'm [happy]", + "blanks": [ + { + "placeholder": "happy", + "correct": [ + "happy" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "I'm [tired]", + "blanks": [ + { + "placeholder": "tired", + "correct": [ + "tired" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "I [like] it", + "blanks": [ + { + "placeholder": "like", + "correct": [ + "like" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "I don't [like] it", + "blanks": [ + { + "placeholder": "like", + "correct": [ + "like" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "happy", + "tired", + "like", + "like" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day50_es.json b/exercises/day50_es.json new file mode 100644 index 0000000..c5e35d2 --- /dev/null +++ b/exercises/day50_es.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Completa las Frases de Weather & Time", + "instructions": "Arrastra las palabras correctas para completar cada frase.", + "sentences": [ + { + "text": "¿Qué [hora] es?", + "blanks": [ + { + "placeholder": "hora", + "correct": "hora" + } + ] + }, + { + "text": "Está [lloviendo]", + "blanks": [ + { + "placeholder": "lloviendo", + "correct": "lloviendo" + } + ] + }, + { + "text": "Ayer", + "blanks": [ + { + "placeholder": "ayer", + "correct": "ayer" + } + ] + }, + { + "text": "Está [soleado]", + "blanks": [ + { + "placeholder": "soleado", + "correct": "soleado" + } + ] + } + ], + "extraWords": [ + "mañana" + ] + }, + { + "type": "fill-blank", + "title": "Completa las Frases de Feelings & Opinions", + "instructions": "Completa estas frases llenando las palabras que faltan.", + "sentences": [ + { + "text": "Estoy [feliz]", + "blanks": [ + { + "placeholder": "feliz", + "correct": [ + "feliz" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Estoy [cansado]", + "blanks": [ + { + "placeholder": "cansado", + "correct": [ + "cansado" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "No me [gusta]", + "blanks": [ + { + "placeholder": "gusta", + "correct": [ + "gusta" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Me [gusta]", + "blanks": [ + { + "placeholder": "gusta", + "correct": [ + "gusta" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "feliz", + "cansado", + "gusta", + "gusta" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day50_fr.json b/exercises/day50_fr.json new file mode 100644 index 0000000..1c97325 --- /dev/null +++ b/exercises/day50_fr.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complétez les Phrases de Weather & Time", + "instructions": "Faites glisser les mots corrects pour compléter chaque phrase.", + "sentences": [ + { + "text": "Quelle [heure] est-il ?", + "blanks": [ + { + "placeholder": "heure", + "correct": "heure" + } + ] + }, + { + "text": "Hier", + "blanks": [ + { + "placeholder": "hier", + "correct": "hier" + } + ] + }, + { + "text": "Demain", + "blanks": [ + { + "placeholder": "demain", + "correct": "demain" + } + ] + }, + { + "text": "Il [pleut]", + "blanks": [ + { + "placeholder": "pleut", + "correct": "pleut" + } + ] + } + ], + "extraWords": [ + "beau" + ] + }, + { + "type": "fill-blank", + "title": "Remplissez les Phrases de Feelings & Opinions", + "instructions": "Complétez ces phrases en remplissant les mots manquants.", + "sentences": [ + { + "text": "Je suis [heureux]", + "blanks": [ + { + "placeholder": "heureux", + "correct": [ + "heureux" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Je suis [fatigué]", + "blanks": [ + { + "placeholder": "fatigué", + "correct": [ + "fatigué" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Je n'[aime] pas ça", + "blanks": [ + { + "placeholder": "aime", + "correct": [ + "aime" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "J'[aime] ça", + "blanks": [ + { + "placeholder": "aime", + "correct": [ + "aime" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "heureux", + "fatigué", + "aime", + "aime" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day50_pt.json b/exercises/day50_pt.json new file mode 100644 index 0000000..3b8ffb8 --- /dev/null +++ b/exercises/day50_pt.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete as Frases de Weather & Time", + "instructions": "Arraste as palavras corretas para completar cada frase.", + "sentences": [ + { + "text": "Amanhã", + "blanks": [ + { + "placeholder": "amanhã", + "correct": "amanhã" + } + ] + }, + { + "text": "Está [chovendo]", + "blanks": [ + { + "placeholder": "chovendo", + "correct": "chovendo" + } + ] + }, + { + "text": "Está [ensolarado]", + "blanks": [ + { + "placeholder": "ensolarado", + "correct": "ensolarado" + } + ] + }, + { + "text": "Ontem", + "blanks": [ + { + "placeholder": "ontem", + "correct": "ontem" + } + ] + } + ], + "extraWords": [ + "são" + ] + }, + { + "type": "fill-blank", + "title": "Preencha as Frases de Feelings & Opinions", + "instructions": "Complete essas frases preenchendo as palavras em falta.", + "sentences": [ + { + "text": "Estou [feliz]", + "blanks": [ + { + "placeholder": "feliz", + "correct": [ + "feliz" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Eu [gosto]", + "blanks": [ + { + "placeholder": "gosto", + "correct": [ + "gosto" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Estou [cansado]", + "blanks": [ + { + "placeholder": "cansado", + "correct": [ + "cansado" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Eu não [gosto]", + "blanks": [ + { + "placeholder": "gosto", + "correct": [ + "gosto" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "feliz", + "gosto", + "cansado", + "gosto" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day5_de.json b/exercises/day5_de.json new file mode 100644 index 0000000..d1b61ab --- /dev/null +++ b/exercises/day5_de.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Vervollständigen Sie die Daily Conversations-Phrasen", + "instructions": "Ziehen Sie die richtigen Wörter, um jede Phrase zu vervollständigen.", + "sentences": [ + { + "text": "Bis [später]", + "blanks": [ + { + "placeholder": "später", + "correct": "später" + } + ] + }, + { + "text": "Einen [schönen] Tag noch", + "blanks": [ + { + "placeholder": "schönen", + "correct": "schönen" + } + ] + }, + { + "text": "Wie läuft [alles]?", + "blanks": [ + { + "placeholder": "alles", + "correct": "alles" + } + ] + }, + { + "text": "Guten Tag 5!", + "blanks": [ + { + "placeholder": "tag", + "correct": "tag" + } + ] + } + ], + "extraWords": [ + "gut" + ] + }, + { + "type": "fill-blank", + "title": "Füllen Sie die Learning Progress-Phrasen aus", + "instructions": "Vervollständigen Sie diese Phrasen, indem Sie die fehlenden Wörter einfügen.", + "sentences": [ + { + "text": "Das ist Lektion 5", + "blanks": [ + { + "placeholder": "lektion", + "correct": [ + "lektion" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Ich [verstehe]", + "blanks": [ + { + "placeholder": "verstehe", + "correct": [ + "verstehe" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Das ist [nützlich]", + "blanks": [ + { + "placeholder": "nützlich", + "correct": [ + "nützlich" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Ich [lerne]", + "blanks": [ + { + "placeholder": "lerne", + "correct": [ + "lerne" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "lektion", + "verstehe", + "nützlich", + "lerne" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day5_en.json b/exercises/day5_en.json new file mode 100644 index 0000000..cee9280 --- /dev/null +++ b/exercises/day5_en.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete the Daily Conversations Phrases", + "instructions": "Drag the correct words to complete each phrase.", + "sentences": [ + { + "text": "Very [well]", + "blanks": [ + { + "placeholder": "well", + "correct": "well" + } + ] + }, + { + "text": "Good [day] 5!", + "blanks": [ + { + "placeholder": "day", + "correct": "day" + } + ] + }, + { + "text": "How is [everything]?", + "blanks": [ + { + "placeholder": "everything", + "correct": "everything" + } + ] + }, + { + "text": "Have a nice [day]", + "blanks": [ + { + "placeholder": "day", + "correct": "day" + } + ] + } + ], + "extraWords": [ + "you" + ] + }, + { + "type": "fill-blank", + "title": "Fill in Learning Progress Phrases", + "instructions": "Complete these phrases by filling in the missing words.", + "sentences": [ + { + "text": "I [understand]", + "blanks": [ + { + "placeholder": "understand", + "correct": [ + "understand" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "I am [learning]", + "blanks": [ + { + "placeholder": "learning", + "correct": [ + "learning" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "This is [lesson] 5", + "blanks": [ + { + "placeholder": "lesson", + "correct": [ + "lesson" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "This is [useful]", + "blanks": [ + { + "placeholder": "useful", + "correct": [ + "useful" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "understand", + "learning", + "lesson", + "useful" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day5_es.json b/exercises/day5_es.json new file mode 100644 index 0000000..09fe943 --- /dev/null +++ b/exercises/day5_es.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Completa las Frases de Daily Conversations", + "instructions": "Arrastra las palabras correctas para completar cada frase.", + "sentences": [ + { + "text": "¡Buen [día] 5!", + "blanks": [ + { + "placeholder": "día", + "correct": "día" + } + ] + }, + { + "text": "¿Cómo está [todo]?", + "blanks": [ + { + "placeholder": "todo", + "correct": "todo" + } + ] + }, + { + "text": "Muy [bien]", + "blanks": [ + { + "placeholder": "bien", + "correct": "bien" + } + ] + }, + { + "text": "Hasta [luego]", + "blanks": [ + { + "placeholder": "luego", + "correct": "luego" + } + ] + } + ], + "extraWords": [ + "buen" + ] + }, + { + "type": "fill-blank", + "title": "Completa las Frases de Learning Progress", + "instructions": "Completa estas frases llenando las palabras que faltan.", + "sentences": [ + { + "text": "Esta es la [lección] 5", + "blanks": [ + { + "placeholder": "lección", + "correct": [ + "lección" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Estoy [aprendiendo]", + "blanks": [ + { + "placeholder": "aprendiendo", + "correct": [ + "aprendiendo" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Entiendo", + "blanks": [ + { + "placeholder": "entiendo", + "correct": [ + "entiendo" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Esto es [útil]", + "blanks": [ + { + "placeholder": "útil", + "correct": [ + "útil" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "lección", + "aprendiendo", + "entiendo", + "útil" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day5_fr.json b/exercises/day5_fr.json new file mode 100644 index 0000000..e350e90 --- /dev/null +++ b/exercises/day5_fr.json @@ -0,0 +1,109 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complétez les Phrases de Daily Conversations", + "instructions": "Faites glisser les mots corrects pour compléter chaque phrase.", + "sentences": [ + { + "text": "À plus [tard]", + "blanks": [ + { + "placeholder": "tard", + "correct": "tard" + } + ] + }, + { + "text": "Comment va tout ?", + "blanks": [ + { + "placeholder": "comment", + "correct": "comment" + } + ] + }, + { + "text": "Très [bien]", + "blanks": [ + { + "placeholder": "bien", + "correct": "bien" + } + ] + }, + { + "text": "Bonne [journée] 5!", + "blanks": [ + { + "placeholder": "journée", + "correct": "journée" + } + ] + } + ], + "extraWords": [] + }, + { + "type": "fill-blank", + "title": "Remplissez les Phrases de Learning Progress", + "instructions": "Complétez ces phrases en remplissant les mots manquants.", + "sentences": [ + { + "text": "Je [comprends]", + "blanks": [ + { + "placeholder": "comprends", + "correct": [ + "comprends" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "C'est [utile]", + "blanks": [ + { + "placeholder": "utile", + "correct": [ + "utile" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "J'[apprends]", + "blanks": [ + { + "placeholder": "apprends", + "correct": [ + "apprends" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "C'est la [leçon] 5", + "blanks": [ + { + "placeholder": "leçon", + "correct": [ + "leçon" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "comprends", + "utile", + "apprends", + "leçon" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day5_pt.json b/exercises/day5_pt.json new file mode 100644 index 0000000..9bbbd55 --- /dev/null +++ b/exercises/day5_pt.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete as Frases de Daily Conversations", + "instructions": "Arraste as palavras corretas para completar cada frase.", + "sentences": [ + { + "text": "Bom [dia] 5!", + "blanks": [ + { + "placeholder": "dia", + "correct": "dia" + } + ] + }, + { + "text": "Até [mais]", + "blanks": [ + { + "placeholder": "mais", + "correct": "mais" + } + ] + }, + { + "text": "Tenha um [bom] dia", + "blanks": [ + { + "placeholder": "bom", + "correct": "bom" + } + ] + }, + { + "text": "Muito [bem]", + "blanks": [ + { + "placeholder": "bem", + "correct": "bem" + } + ] + } + ], + "extraWords": [ + "tudo" + ] + }, + { + "type": "fill-blank", + "title": "Preencha as Frases de Learning Progress", + "instructions": "Complete essas frases preenchendo as palavras em falta.", + "sentences": [ + { + "text": "Eu [entendo]", + "blanks": [ + { + "placeholder": "entendo", + "correct": [ + "entendo" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Isso é [útil]", + "blanks": [ + { + "placeholder": "útil", + "correct": [ + "útil" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Esta é a [lição] 5", + "blanks": [ + { + "placeholder": "lição", + "correct": [ + "lição" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Estou [aprendendo]", + "blanks": [ + { + "placeholder": "aprendendo", + "correct": [ + "aprendendo" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "entendo", + "útil", + "lição", + "aprendendo" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day6_de.json b/exercises/day6_de.json new file mode 100644 index 0000000..de28930 --- /dev/null +++ b/exercises/day6_de.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Vervollständigen Sie die Daily Conversations-Phrasen", + "instructions": "Ziehen Sie die richtigen Wörter, um jede Phrase zu vervollständigen.", + "sentences": [ + { + "text": "Bis [später]", + "blanks": [ + { + "placeholder": "später", + "correct": "später" + } + ] + }, + { + "text": "Wie läuft [alles]?", + "blanks": [ + { + "placeholder": "alles", + "correct": "alles" + } + ] + }, + { + "text": "Guten Tag 6!", + "blanks": [ + { + "placeholder": "tag", + "correct": "tag" + } + ] + }, + { + "text": "Einen [schönen] Tag noch", + "blanks": [ + { + "placeholder": "schönen", + "correct": "schönen" + } + ] + } + ], + "extraWords": [ + "gut" + ] + }, + { + "type": "fill-blank", + "title": "Füllen Sie die Learning Progress-Phrasen aus", + "instructions": "Vervollständigen Sie diese Phrasen, indem Sie die fehlenden Wörter einfügen.", + "sentences": [ + { + "text": "Das ist Lektion 6", + "blanks": [ + { + "placeholder": "lektion", + "correct": [ + "lektion" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Ich [verstehe]", + "blanks": [ + { + "placeholder": "verstehe", + "correct": [ + "verstehe" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Ich [lerne]", + "blanks": [ + { + "placeholder": "lerne", + "correct": [ + "lerne" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Das ist [nützlich]", + "blanks": [ + { + "placeholder": "nützlich", + "correct": [ + "nützlich" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "lektion", + "verstehe", + "lerne", + "nützlich" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day6_en.json b/exercises/day6_en.json new file mode 100644 index 0000000..47afa73 --- /dev/null +++ b/exercises/day6_en.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete the Daily Conversations Phrases", + "instructions": "Drag the correct words to complete each phrase.", + "sentences": [ + { + "text": "Good [day] 6!", + "blanks": [ + { + "placeholder": "day", + "correct": "day" + } + ] + }, + { + "text": "See [you] later", + "blanks": [ + { + "placeholder": "you", + "correct": "you" + } + ] + }, + { + "text": "How is [everything]?", + "blanks": [ + { + "placeholder": "everything", + "correct": "everything" + } + ] + }, + { + "text": "Have a nice [day]", + "blanks": [ + { + "placeholder": "day", + "correct": "day" + } + ] + } + ], + "extraWords": [ + "well" + ] + }, + { + "type": "fill-blank", + "title": "Fill in Learning Progress Phrases", + "instructions": "Complete these phrases by filling in the missing words.", + "sentences": [ + { + "text": "This is [lesson] 6", + "blanks": [ + { + "placeholder": "lesson", + "correct": [ + "lesson" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "This is [useful]", + "blanks": [ + { + "placeholder": "useful", + "correct": [ + "useful" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "I [understand]", + "blanks": [ + { + "placeholder": "understand", + "correct": [ + "understand" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "I am [learning]", + "blanks": [ + { + "placeholder": "learning", + "correct": [ + "learning" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "lesson", + "useful", + "understand", + "learning" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day6_es.json b/exercises/day6_es.json new file mode 100644 index 0000000..63e83a5 --- /dev/null +++ b/exercises/day6_es.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Completa las Frases de Daily Conversations", + "instructions": "Arrastra las palabras correctas para completar cada frase.", + "sentences": [ + { + "text": "Hasta [luego]", + "blanks": [ + { + "placeholder": "luego", + "correct": "luego" + } + ] + }, + { + "text": "Muy [bien]", + "blanks": [ + { + "placeholder": "bien", + "correct": "bien" + } + ] + }, + { + "text": "¿Cómo está [todo]?", + "blanks": [ + { + "placeholder": "todo", + "correct": "todo" + } + ] + }, + { + "text": "Que tengas un [buen] día", + "blanks": [ + { + "placeholder": "buen", + "correct": "buen" + } + ] + } + ], + "extraWords": [ + "día" + ] + }, + { + "type": "fill-blank", + "title": "Completa las Frases de Learning Progress", + "instructions": "Completa estas frases llenando las palabras que faltan.", + "sentences": [ + { + "text": "Esta es la [lección] 6", + "blanks": [ + { + "placeholder": "lección", + "correct": [ + "lección" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Estoy [aprendiendo]", + "blanks": [ + { + "placeholder": "aprendiendo", + "correct": [ + "aprendiendo" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Esto es [útil]", + "blanks": [ + { + "placeholder": "útil", + "correct": [ + "útil" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Entiendo", + "blanks": [ + { + "placeholder": "entiendo", + "correct": [ + "entiendo" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "lección", + "aprendiendo", + "útil", + "entiendo" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day6_fr.json b/exercises/day6_fr.json new file mode 100644 index 0000000..515d592 --- /dev/null +++ b/exercises/day6_fr.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complétez les Phrases de Daily Conversations", + "instructions": "Faites glisser les mots corrects pour compléter chaque phrase.", + "sentences": [ + { + "text": "Bonne [journée] 6!", + "blanks": [ + { + "placeholder": "journée", + "correct": "journée" + } + ] + }, + { + "text": "À plus [tard]", + "blanks": [ + { + "placeholder": "tard", + "correct": "tard" + } + ] + }, + { + "text": "Bonne [journée]", + "blanks": [ + { + "placeholder": "journée", + "correct": "journée" + } + ] + }, + { + "text": "Très [bien]", + "blanks": [ + { + "placeholder": "bien", + "correct": "bien" + } + ] + } + ], + "extraWords": [ + "comment" + ] + }, + { + "type": "fill-blank", + "title": "Remplissez les Phrases de Learning Progress", + "instructions": "Complétez ces phrases en remplissant les mots manquants.", + "sentences": [ + { + "text": "C'est [utile]", + "blanks": [ + { + "placeholder": "utile", + "correct": [ + "utile" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Je [comprends]", + "blanks": [ + { + "placeholder": "comprends", + "correct": [ + "comprends" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "J'[apprends]", + "blanks": [ + { + "placeholder": "apprends", + "correct": [ + "apprends" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "C'est la [leçon] 6", + "blanks": [ + { + "placeholder": "leçon", + "correct": [ + "leçon" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "utile", + "comprends", + "apprends", + "leçon" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day6_pt.json b/exercises/day6_pt.json new file mode 100644 index 0000000..4d167c5 --- /dev/null +++ b/exercises/day6_pt.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete as Frases de Daily Conversations", + "instructions": "Arraste as palavras corretas para completar cada frase.", + "sentences": [ + { + "text": "Tenha um [bom] dia", + "blanks": [ + { + "placeholder": "bom", + "correct": "bom" + } + ] + }, + { + "text": "Bom [dia] 6!", + "blanks": [ + { + "placeholder": "dia", + "correct": "dia" + } + ] + }, + { + "text": "Como está [tudo]?", + "blanks": [ + { + "placeholder": "tudo", + "correct": "tudo" + } + ] + }, + { + "text": "Até [mais]", + "blanks": [ + { + "placeholder": "mais", + "correct": "mais" + } + ] + } + ], + "extraWords": [ + "bem" + ] + }, + { + "type": "fill-blank", + "title": "Preencha as Frases de Learning Progress", + "instructions": "Complete essas frases preenchendo as palavras em falta.", + "sentences": [ + { + "text": "Esta é a [lição] 6", + "blanks": [ + { + "placeholder": "lição", + "correct": [ + "lição" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Estou [aprendendo]", + "blanks": [ + { + "placeholder": "aprendendo", + "correct": [ + "aprendendo" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Isso é [útil]", + "blanks": [ + { + "placeholder": "útil", + "correct": [ + "útil" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Eu [entendo]", + "blanks": [ + { + "placeholder": "entendo", + "correct": [ + "entendo" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "lição", + "aprendendo", + "útil", + "entendo" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day7_de.json b/exercises/day7_de.json new file mode 100644 index 0000000..d02bc39 --- /dev/null +++ b/exercises/day7_de.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Vervollständigen Sie die Daily Conversations-Phrasen", + "instructions": "Ziehen Sie die richtigen Wörter, um jede Phrase zu vervollständigen.", + "sentences": [ + { + "text": "Guten Tag 7!", + "blanks": [ + { + "placeholder": "tag", + "correct": "tag" + } + ] + }, + { + "text": "Wie läuft [alles]?", + "blanks": [ + { + "placeholder": "alles", + "correct": "alles" + } + ] + }, + { + "text": "Einen [schönen] Tag noch", + "blanks": [ + { + "placeholder": "schönen", + "correct": "schönen" + } + ] + }, + { + "text": "Sehr [gut]", + "blanks": [ + { + "placeholder": "gut", + "correct": "gut" + } + ] + } + ], + "extraWords": [ + "später" + ] + }, + { + "type": "fill-blank", + "title": "Füllen Sie die Learning Progress-Phrasen aus", + "instructions": "Vervollständigen Sie diese Phrasen, indem Sie die fehlenden Wörter einfügen.", + "sentences": [ + { + "text": "Ich [lerne]", + "blanks": [ + { + "placeholder": "lerne", + "correct": [ + "lerne" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Das ist Lektion 7", + "blanks": [ + { + "placeholder": "lektion", + "correct": [ + "lektion" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Das ist [nützlich]", + "blanks": [ + { + "placeholder": "nützlich", + "correct": [ + "nützlich" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Ich [verstehe]", + "blanks": [ + { + "placeholder": "verstehe", + "correct": [ + "verstehe" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "lerne", + "lektion", + "nützlich", + "verstehe" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day7_en.json b/exercises/day7_en.json new file mode 100644 index 0000000..d226f8b --- /dev/null +++ b/exercises/day7_en.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete the Daily Conversations Phrases", + "instructions": "Drag the correct words to complete each phrase.", + "sentences": [ + { + "text": "How is [everything]?", + "blanks": [ + { + "placeholder": "everything", + "correct": "everything" + } + ] + }, + { + "text": "Have a nice [day]", + "blanks": [ + { + "placeholder": "day", + "correct": "day" + } + ] + }, + { + "text": "See [you] later", + "blanks": [ + { + "placeholder": "you", + "correct": "you" + } + ] + }, + { + "text": "Good [day] 7!", + "blanks": [ + { + "placeholder": "day", + "correct": "day" + } + ] + } + ], + "extraWords": [ + "well" + ] + }, + { + "type": "fill-blank", + "title": "Fill in Learning Progress Phrases", + "instructions": "Complete these phrases by filling in the missing words.", + "sentences": [ + { + "text": "This is [lesson] 7", + "blanks": [ + { + "placeholder": "lesson", + "correct": [ + "lesson" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "This is [useful]", + "blanks": [ + { + "placeholder": "useful", + "correct": [ + "useful" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "I am [learning]", + "blanks": [ + { + "placeholder": "learning", + "correct": [ + "learning" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "I [understand]", + "blanks": [ + { + "placeholder": "understand", + "correct": [ + "understand" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "lesson", + "useful", + "learning", + "understand" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day7_es.json b/exercises/day7_es.json new file mode 100644 index 0000000..60760d2 --- /dev/null +++ b/exercises/day7_es.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Completa las Frases de Daily Conversations", + "instructions": "Arrastra las palabras correctas para completar cada frase.", + "sentences": [ + { + "text": "Que tengas un [buen] día", + "blanks": [ + { + "placeholder": "buen", + "correct": "buen" + } + ] + }, + { + "text": "¡Buen [día] 7!", + "blanks": [ + { + "placeholder": "día", + "correct": "día" + } + ] + }, + { + "text": "Muy [bien]", + "blanks": [ + { + "placeholder": "bien", + "correct": "bien" + } + ] + }, + { + "text": "Hasta [luego]", + "blanks": [ + { + "placeholder": "luego", + "correct": "luego" + } + ] + } + ], + "extraWords": [ + "todo" + ] + }, + { + "type": "fill-blank", + "title": "Completa las Frases de Learning Progress", + "instructions": "Completa estas frases llenando las palabras que faltan.", + "sentences": [ + { + "text": "Estoy [aprendiendo]", + "blanks": [ + { + "placeholder": "aprendiendo", + "correct": [ + "aprendiendo" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Esto es [útil]", + "blanks": [ + { + "placeholder": "útil", + "correct": [ + "útil" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Esta es la [lección] 7", + "blanks": [ + { + "placeholder": "lección", + "correct": [ + "lección" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Entiendo", + "blanks": [ + { + "placeholder": "entiendo", + "correct": [ + "entiendo" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "aprendiendo", + "útil", + "lección", + "entiendo" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day7_fr.json b/exercises/day7_fr.json new file mode 100644 index 0000000..ed51638 --- /dev/null +++ b/exercises/day7_fr.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complétez les Phrases de Daily Conversations", + "instructions": "Faites glisser les mots corrects pour compléter chaque phrase.", + "sentences": [ + { + "text": "Très [bien]", + "blanks": [ + { + "placeholder": "bien", + "correct": "bien" + } + ] + }, + { + "text": "Bonne [journée] 7!", + "blanks": [ + { + "placeholder": "journée", + "correct": "journée" + } + ] + }, + { + "text": "Bonne [journée]", + "blanks": [ + { + "placeholder": "journée", + "correct": "journée" + } + ] + }, + { + "text": "Comment va tout ?", + "blanks": [ + { + "placeholder": "comment", + "correct": "comment" + } + ] + } + ], + "extraWords": [ + "tard" + ] + }, + { + "type": "fill-blank", + "title": "Remplissez les Phrases de Learning Progress", + "instructions": "Complétez ces phrases en remplissant les mots manquants.", + "sentences": [ + { + "text": "C'est la [leçon] 7", + "blanks": [ + { + "placeholder": "leçon", + "correct": [ + "leçon" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "J'[apprends]", + "blanks": [ + { + "placeholder": "apprends", + "correct": [ + "apprends" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "C'est [utile]", + "blanks": [ + { + "placeholder": "utile", + "correct": [ + "utile" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Je [comprends]", + "blanks": [ + { + "placeholder": "comprends", + "correct": [ + "comprends" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "leçon", + "apprends", + "utile", + "comprends" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day7_pt.json b/exercises/day7_pt.json new file mode 100644 index 0000000..2fabe1f --- /dev/null +++ b/exercises/day7_pt.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete as Frases de Daily Conversations", + "instructions": "Arraste as palavras corretas para completar cada frase.", + "sentences": [ + { + "text": "Muito [bem]", + "blanks": [ + { + "placeholder": "bem", + "correct": "bem" + } + ] + }, + { + "text": "Até [mais]", + "blanks": [ + { + "placeholder": "mais", + "correct": "mais" + } + ] + }, + { + "text": "Tenha um [bom] dia", + "blanks": [ + { + "placeholder": "bom", + "correct": "bom" + } + ] + }, + { + "text": "Como está [tudo]?", + "blanks": [ + { + "placeholder": "tudo", + "correct": "tudo" + } + ] + } + ], + "extraWords": [ + "dia" + ] + }, + { + "type": "fill-blank", + "title": "Preencha as Frases de Learning Progress", + "instructions": "Complete essas frases preenchendo as palavras em falta.", + "sentences": [ + { + "text": "Eu [entendo]", + "blanks": [ + { + "placeholder": "entendo", + "correct": [ + "entendo" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Esta é a [lição] 7", + "blanks": [ + { + "placeholder": "lição", + "correct": [ + "lição" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Estou [aprendendo]", + "blanks": [ + { + "placeholder": "aprendendo", + "correct": [ + "aprendendo" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Isso é [útil]", + "blanks": [ + { + "placeholder": "útil", + "correct": [ + "útil" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "entendo", + "lição", + "aprendendo", + "útil" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day8_de.json b/exercises/day8_de.json new file mode 100644 index 0000000..55a36e4 --- /dev/null +++ b/exercises/day8_de.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Vervollständigen Sie die Daily Conversations-Phrasen", + "instructions": "Ziehen Sie die richtigen Wörter, um jede Phrase zu vervollständigen.", + "sentences": [ + { + "text": "Sehr [gut]", + "blanks": [ + { + "placeholder": "gut", + "correct": "gut" + } + ] + }, + { + "text": "Einen [schönen] Tag noch", + "blanks": [ + { + "placeholder": "schönen", + "correct": "schönen" + } + ] + }, + { + "text": "Guten Tag 8!", + "blanks": [ + { + "placeholder": "tag", + "correct": "tag" + } + ] + }, + { + "text": "Wie läuft [alles]?", + "blanks": [ + { + "placeholder": "alles", + "correct": "alles" + } + ] + } + ], + "extraWords": [ + "später" + ] + }, + { + "type": "fill-blank", + "title": "Füllen Sie die Learning Progress-Phrasen aus", + "instructions": "Vervollständigen Sie diese Phrasen, indem Sie die fehlenden Wörter einfügen.", + "sentences": [ + { + "text": "Ich [lerne]", + "blanks": [ + { + "placeholder": "lerne", + "correct": [ + "lerne" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Das ist Lektion 8", + "blanks": [ + { + "placeholder": "lektion", + "correct": [ + "lektion" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Das ist [nützlich]", + "blanks": [ + { + "placeholder": "nützlich", + "correct": [ + "nützlich" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Ich [verstehe]", + "blanks": [ + { + "placeholder": "verstehe", + "correct": [ + "verstehe" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "lerne", + "lektion", + "nützlich", + "verstehe" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day8_en.json b/exercises/day8_en.json new file mode 100644 index 0000000..f6e89e1 --- /dev/null +++ b/exercises/day8_en.json @@ -0,0 +1,109 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete the Daily Conversations Phrases", + "instructions": "Drag the correct words to complete each phrase.", + "sentences": [ + { + "text": "How is [everything]?", + "blanks": [ + { + "placeholder": "everything", + "correct": "everything" + } + ] + }, + { + "text": "See [you] later", + "blanks": [ + { + "placeholder": "you", + "correct": "you" + } + ] + }, + { + "text": "Good [day] 8!", + "blanks": [ + { + "placeholder": "day", + "correct": "day" + } + ] + }, + { + "text": "Very [well]", + "blanks": [ + { + "placeholder": "well", + "correct": "well" + } + ] + } + ], + "extraWords": [] + }, + { + "type": "fill-blank", + "title": "Fill in Learning Progress Phrases", + "instructions": "Complete these phrases by filling in the missing words.", + "sentences": [ + { + "text": "This is [useful]", + "blanks": [ + { + "placeholder": "useful", + "correct": [ + "useful" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "I [understand]", + "blanks": [ + { + "placeholder": "understand", + "correct": [ + "understand" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "I am [learning]", + "blanks": [ + { + "placeholder": "learning", + "correct": [ + "learning" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "This is [lesson] 8", + "blanks": [ + { + "placeholder": "lesson", + "correct": [ + "lesson" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "useful", + "understand", + "learning", + "lesson" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day8_es.json b/exercises/day8_es.json new file mode 100644 index 0000000..6052c78 --- /dev/null +++ b/exercises/day8_es.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Completa las Frases de Daily Conversations", + "instructions": "Arrastra las palabras correctas para completar cada frase.", + "sentences": [ + { + "text": "Que tengas un [buen] día", + "blanks": [ + { + "placeholder": "buen", + "correct": "buen" + } + ] + }, + { + "text": "¿Cómo está [todo]?", + "blanks": [ + { + "placeholder": "todo", + "correct": "todo" + } + ] + }, + { + "text": "Muy [bien]", + "blanks": [ + { + "placeholder": "bien", + "correct": "bien" + } + ] + }, + { + "text": "¡Buen [día] 8!", + "blanks": [ + { + "placeholder": "día", + "correct": "día" + } + ] + } + ], + "extraWords": [ + "luego" + ] + }, + { + "type": "fill-blank", + "title": "Completa las Frases de Learning Progress", + "instructions": "Completa estas frases llenando las palabras que faltan.", + "sentences": [ + { + "text": "Estoy [aprendiendo]", + "blanks": [ + { + "placeholder": "aprendiendo", + "correct": [ + "aprendiendo" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Esto es [útil]", + "blanks": [ + { + "placeholder": "útil", + "correct": [ + "útil" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Esta es la [lección] 8", + "blanks": [ + { + "placeholder": "lección", + "correct": [ + "lección" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Entiendo", + "blanks": [ + { + "placeholder": "entiendo", + "correct": [ + "entiendo" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "aprendiendo", + "útil", + "lección", + "entiendo" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day8_fr.json b/exercises/day8_fr.json new file mode 100644 index 0000000..05846b8 --- /dev/null +++ b/exercises/day8_fr.json @@ -0,0 +1,109 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complétez les Phrases de Daily Conversations", + "instructions": "Faites glisser les mots corrects pour compléter chaque phrase.", + "sentences": [ + { + "text": "Très [bien]", + "blanks": [ + { + "placeholder": "bien", + "correct": "bien" + } + ] + }, + { + "text": "Bonne [journée]", + "blanks": [ + { + "placeholder": "journée", + "correct": "journée" + } + ] + }, + { + "text": "Comment va tout ?", + "blanks": [ + { + "placeholder": "comment", + "correct": "comment" + } + ] + }, + { + "text": "À plus [tard]", + "blanks": [ + { + "placeholder": "tard", + "correct": "tard" + } + ] + } + ], + "extraWords": [] + }, + { + "type": "fill-blank", + "title": "Remplissez les Phrases de Learning Progress", + "instructions": "Complétez ces phrases en remplissant les mots manquants.", + "sentences": [ + { + "text": "C'est la [leçon] 8", + "blanks": [ + { + "placeholder": "leçon", + "correct": [ + "leçon" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "C'est [utile]", + "blanks": [ + { + "placeholder": "utile", + "correct": [ + "utile" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "J'[apprends]", + "blanks": [ + { + "placeholder": "apprends", + "correct": [ + "apprends" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Je [comprends]", + "blanks": [ + { + "placeholder": "comprends", + "correct": [ + "comprends" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "leçon", + "utile", + "apprends", + "comprends" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day8_pt.json b/exercises/day8_pt.json new file mode 100644 index 0000000..1f95fc9 --- /dev/null +++ b/exercises/day8_pt.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete as Frases de Daily Conversations", + "instructions": "Arraste as palavras corretas para completar cada frase.", + "sentences": [ + { + "text": "Bom [dia] 8!", + "blanks": [ + { + "placeholder": "dia", + "correct": "dia" + } + ] + }, + { + "text": "Até [mais]", + "blanks": [ + { + "placeholder": "mais", + "correct": "mais" + } + ] + }, + { + "text": "Muito [bem]", + "blanks": [ + { + "placeholder": "bem", + "correct": "bem" + } + ] + }, + { + "text": "Tenha um [bom] dia", + "blanks": [ + { + "placeholder": "bom", + "correct": "bom" + } + ] + } + ], + "extraWords": [ + "tudo" + ] + }, + { + "type": "fill-blank", + "title": "Preencha as Frases de Learning Progress", + "instructions": "Complete essas frases preenchendo as palavras em falta.", + "sentences": [ + { + "text": "Eu [entendo]", + "blanks": [ + { + "placeholder": "entendo", + "correct": [ + "entendo" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Esta é a [lição] 8", + "blanks": [ + { + "placeholder": "lição", + "correct": [ + "lição" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Isso é [útil]", + "blanks": [ + { + "placeholder": "útil", + "correct": [ + "útil" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Estou [aprendendo]", + "blanks": [ + { + "placeholder": "aprendendo", + "correct": [ + "aprendendo" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "entendo", + "lição", + "útil", + "aprendendo" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day9_de.json b/exercises/day9_de.json new file mode 100644 index 0000000..1d4695e --- /dev/null +++ b/exercises/day9_de.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Vervollständigen Sie die Daily Conversations-Phrasen", + "instructions": "Ziehen Sie die richtigen Wörter, um jede Phrase zu vervollständigen.", + "sentences": [ + { + "text": "Einen [schönen] Tag noch", + "blanks": [ + { + "placeholder": "schönen", + "correct": "schönen" + } + ] + }, + { + "text": "Bis [später]", + "blanks": [ + { + "placeholder": "später", + "correct": "später" + } + ] + }, + { + "text": "Wie läuft [alles]?", + "blanks": [ + { + "placeholder": "alles", + "correct": "alles" + } + ] + }, + { + "text": "Guten Tag 9!", + "blanks": [ + { + "placeholder": "tag", + "correct": "tag" + } + ] + } + ], + "extraWords": [ + "gut" + ] + }, + { + "type": "fill-blank", + "title": "Füllen Sie die Learning Progress-Phrasen aus", + "instructions": "Vervollständigen Sie diese Phrasen, indem Sie die fehlenden Wörter einfügen.", + "sentences": [ + { + "text": "Das ist Lektion 9", + "blanks": [ + { + "placeholder": "lektion", + "correct": [ + "lektion" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Ich [lerne]", + "blanks": [ + { + "placeholder": "lerne", + "correct": [ + "lerne" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Ich [verstehe]", + "blanks": [ + { + "placeholder": "verstehe", + "correct": [ + "verstehe" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Das ist [nützlich]", + "blanks": [ + { + "placeholder": "nützlich", + "correct": [ + "nützlich" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "lektion", + "lerne", + "verstehe", + "nützlich" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day9_en.json b/exercises/day9_en.json new file mode 100644 index 0000000..20583a6 --- /dev/null +++ b/exercises/day9_en.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete the Daily Conversations Phrases", + "instructions": "Drag the correct words to complete each phrase.", + "sentences": [ + { + "text": "Have a nice [day]", + "blanks": [ + { + "placeholder": "day", + "correct": "day" + } + ] + }, + { + "text": "Good [day] 9!", + "blanks": [ + { + "placeholder": "day", + "correct": "day" + } + ] + }, + { + "text": "See [you] later", + "blanks": [ + { + "placeholder": "you", + "correct": "you" + } + ] + }, + { + "text": "How is [everything]?", + "blanks": [ + { + "placeholder": "everything", + "correct": "everything" + } + ] + } + ], + "extraWords": [ + "well" + ] + }, + { + "type": "fill-blank", + "title": "Fill in Learning Progress Phrases", + "instructions": "Complete these phrases by filling in the missing words.", + "sentences": [ + { + "text": "This is [lesson] 9", + "blanks": [ + { + "placeholder": "lesson", + "correct": [ + "lesson" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "I [understand]", + "blanks": [ + { + "placeholder": "understand", + "correct": [ + "understand" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "This is [useful]", + "blanks": [ + { + "placeholder": "useful", + "correct": [ + "useful" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "I am [learning]", + "blanks": [ + { + "placeholder": "learning", + "correct": [ + "learning" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "lesson", + "understand", + "useful", + "learning" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day9_es.json b/exercises/day9_es.json new file mode 100644 index 0000000..358b47a --- /dev/null +++ b/exercises/day9_es.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Completa las Frases de Daily Conversations", + "instructions": "Arrastra las palabras correctas para completar cada frase.", + "sentences": [ + { + "text": "Hasta [luego]", + "blanks": [ + { + "placeholder": "luego", + "correct": "luego" + } + ] + }, + { + "text": "Que tengas un [buen] día", + "blanks": [ + { + "placeholder": "buen", + "correct": "buen" + } + ] + }, + { + "text": "¡Buen [día] 9!", + "blanks": [ + { + "placeholder": "día", + "correct": "día" + } + ] + }, + { + "text": "¿Cómo está [todo]?", + "blanks": [ + { + "placeholder": "todo", + "correct": "todo" + } + ] + } + ], + "extraWords": [ + "bien" + ] + }, + { + "type": "fill-blank", + "title": "Completa las Frases de Learning Progress", + "instructions": "Completa estas frases llenando las palabras que faltan.", + "sentences": [ + { + "text": "Esta es la [lección] 9", + "blanks": [ + { + "placeholder": "lección", + "correct": [ + "lección" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Entiendo", + "blanks": [ + { + "placeholder": "entiendo", + "correct": [ + "entiendo" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Esto es [útil]", + "blanks": [ + { + "placeholder": "útil", + "correct": [ + "útil" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Estoy [aprendiendo]", + "blanks": [ + { + "placeholder": "aprendiendo", + "correct": [ + "aprendiendo" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "lección", + "entiendo", + "útil", + "aprendiendo" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day9_fr.json b/exercises/day9_fr.json new file mode 100644 index 0000000..af4b875 --- /dev/null +++ b/exercises/day9_fr.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complétez les Phrases de Daily Conversations", + "instructions": "Faites glisser les mots corrects pour compléter chaque phrase.", + "sentences": [ + { + "text": "Comment va tout ?", + "blanks": [ + { + "placeholder": "comment", + "correct": "comment" + } + ] + }, + { + "text": "Bonne [journée] 9!", + "blanks": [ + { + "placeholder": "journée", + "correct": "journée" + } + ] + }, + { + "text": "Très [bien]", + "blanks": [ + { + "placeholder": "bien", + "correct": "bien" + } + ] + }, + { + "text": "Bonne [journée]", + "blanks": [ + { + "placeholder": "journée", + "correct": "journée" + } + ] + } + ], + "extraWords": [ + "tard" + ] + }, + { + "type": "fill-blank", + "title": "Remplissez les Phrases de Learning Progress", + "instructions": "Complétez ces phrases en remplissant les mots manquants.", + "sentences": [ + { + "text": "C'est la [leçon] 9", + "blanks": [ + { + "placeholder": "leçon", + "correct": [ + "leçon" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Je [comprends]", + "blanks": [ + { + "placeholder": "comprends", + "correct": [ + "comprends" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "C'est [utile]", + "blanks": [ + { + "placeholder": "utile", + "correct": [ + "utile" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "J'[apprends]", + "blanks": [ + { + "placeholder": "apprends", + "correct": [ + "apprends" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "leçon", + "comprends", + "utile", + "apprends" + ] + } + ] +} \ No newline at end of file diff --git a/exercises/day9_pt.json b/exercises/day9_pt.json new file mode 100644 index 0000000..ae54c9d --- /dev/null +++ b/exercises/day9_pt.json @@ -0,0 +1,111 @@ +{ + "exercises": [ + { + "type": "drag-drop", + "title": "Complete as Frases de Daily Conversations", + "instructions": "Arraste as palavras corretas para completar cada frase.", + "sentences": [ + { + "text": "Bom [dia] 9!", + "blanks": [ + { + "placeholder": "dia", + "correct": "dia" + } + ] + }, + { + "text": "Muito [bem]", + "blanks": [ + { + "placeholder": "bem", + "correct": "bem" + } + ] + }, + { + "text": "Até [mais]", + "blanks": [ + { + "placeholder": "mais", + "correct": "mais" + } + ] + }, + { + "text": "Como está [tudo]?", + "blanks": [ + { + "placeholder": "tudo", + "correct": "tudo" + } + ] + } + ], + "extraWords": [ + "bom" + ] + }, + { + "type": "fill-blank", + "title": "Preencha as Frases de Learning Progress", + "instructions": "Complete essas frases preenchendo as palavras em falta.", + "sentences": [ + { + "text": "Esta é a [lição] 9", + "blanks": [ + { + "placeholder": "lição", + "correct": [ + "lição" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Eu [entendo]", + "blanks": [ + { + "placeholder": "entendo", + "correct": [ + "entendo" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Estou [aprendendo]", + "blanks": [ + { + "placeholder": "aprendendo", + "correct": [ + "aprendendo" + ], + "hint": "Key word from this phrase" + } + ] + }, + { + "text": "Isso é [útil]", + "blanks": [ + { + "placeholder": "útil", + "correct": [ + "útil" + ], + "hint": "Key word from this phrase" + } + ] + } + ], + "wordBank": [ + "lição", + "entendo", + "aprendendo", + "útil" + ] + } + ] +} \ No newline at end of file diff --git a/generate_exercises.py b/generate_exercises.py new file mode 100644 index 0000000..2c692d8 --- /dev/null +++ b/generate_exercises.py @@ -0,0 +1,473 @@ +#!/usr/bin/env python3 +""" +Exercise Generator for Polyglot Pathways + +This script generates interactive exercise files for all 50 days in all 5 languages. +It creates JSON files following the day1 model with drag-drop, fill-blank, and matching exercises. +""" + +import json +import random +import os +import re +from typing import Dict, List, Any + +# Language codes +LANGUAGES = ['en', 'es', 'pt', 'fr', 'de'] + +# Language names for titles +LANGUAGE_NAMES = { + 'en': 'English', + 'es': 'Spanish', + 'pt': 'Portuguese', + 'fr': 'French', + 'de': 'German' +} + +# Sample data for testing - we'll expand this +SAMPLE_PHRASES = { + 1: { + "Basic Greetings & Common Phrases": [ + {"en": "Hello", "es": "Hola", "pt": "Olá", "fr": "Bonjour", "de": "Hallo"}, + {"en": "Good morning", "es": "Buenos días", "pt": "Bom dia", "fr": "Bonjour", "de": "Guten Morgen"}, + {"en": "How are you?", "es": "¿Cómo estás?", "pt": "Como você está?", "fr": "Comment ça va ?", "de": "Wie geht es dir?"}, + {"en": "Thank you", "es": "Gracias", "pt": "Obrigado", "fr": "Merci", "de": "Danke"}, + {"en": "Please", "es": "Por favor", "pt": "Por favor", "fr": "S'il vous plaît", "de": "Bitte"}, + {"en": "Excuse me", "es": "Disculpe", "pt": "Com licença", "fr": "Excusez-moi", "de": "Entschuldigung"} + ], + "Travel Phrases": [ + {"en": "Where is the bathroom?", "es": "¿Dónde está el baño?", "pt": "Onde fica o banheiro?", "fr": "Où sont les toilettes ?", "de": "Wo ist die Toilette?"}, + {"en": "How much does it cost?", "es": "¿Cuánto cuesta?", "pt": "Quanto custa?", "fr": "Combien ça coûte ?", "de": "Wie viel kostet das?"}, + {"en": "I need help", "es": "Necesito ayuda", "pt": "Preciso de ajuda", "fr": "J'ai besoin d'aide", "de": "Ich brauche Hilfe"}, + {"en": "Where is...?", "es": "¿Dónde está...?", "pt": "Onde fica...?", "fr": "Où est... ?", "de": "Wo ist...?"} + ], + "Numbers": [ + {"en": "One", "es": "Uno", "pt": "Um", "fr": "Un", "de": "Eins"}, + {"en": "Two", "es": "Dos", "pt": "Dois", "fr": "Deux", "de": "Zwei"}, + {"en": "Three", "es": "Tres", "pt": "Três", "fr": "Trois", "de": "Drei"}, + {"en": "Four", "es": "Cuatro", "pt": "Quatro", "fr": "Quatre", "de": "Vier"}, + {"en": "Five", "es": "Cinco", "pt": "Cinco", "fr": "Cinq", "de": "Fünf"} + ] + } +} + +def extract_key_word(phrase: str) -> str: + """Extract a key word from a phrase that could be used as a blank.""" + # Remove punctuation and split into words + words = re.findall(r'\b\w+\b', phrase.lower()) + # Filter out very short words and common words + common_words = {'i', 'a', 'an', 'the', 'is', 'am', 'are', 'was', 'were', 'be', 'been', 'have', 'has', 'had', 'do', 'does', 'did', 'will', 'would', 'could', 'should', 'may', 'might', 'can', 'to', 'of', 'in', 'on', 'at', 'by', 'for', 'with', 'from', 'as', 'and', 'or', 'but', 'so', 'if', 'that', 'this', 'these', 'those', 'my', 'your', 'his', 'her', 'its', 'our', 'their', 'el', 'la', 'los', 'las', 'un', 'una', 'de', 'en', 'que', 'es', 'se', 'no', 'te', 'lo', 'le', 'da', 'su', 'por', 'son', 'con', 'para', 'al', 'del', 'me', 'ya', 'si', 'cuando', 'él', 'muy', 'sin', 'sobre', 'hace', 'o', 'donde', 'eu', 'que', 'não', 'do', 'da', 'em', 'um', 'para', 'é', 'com', 'uma', 'os', 'no', 'se', 'na', 'por', 'mais', 'as', 'dos', 'como', 'mas', 'foi', 'ao', 'ele', 'das', 'tem', 'à', 'seu', 'sua', 'ou', 'ser', 'quando', 'muito', 'há', 'nos', 'já', 'está', 'eu', 'também', 'só', 'pelo', 'pela', 'até', 'isso', 'ela', 'entre', 'era', 'depois', 'ohne', 'bei', 'sie', 'von', 'sie', 'ein', 'auf', 'eine', 'als', 'an', 'nach', 'wie', 'im', 'für', 'man', 'aber', 'aus', 'durch', 'wenn', 'nur', 'war', 'noch', 'werden', 'bei', 'hat', 'wir', 'was', 'ihr', 'ihre', 'dem', 'den', 'des', 'der', 'die', 'das', 'du', 'er', 'es', 'je', 'tu', 'il', 'de', 'et', 'à', 'un', 'le', 'être', 'avoir', 'ne', 'ce', 'son', 'que', 'se', 'qui', 'dans', 'en', 'sur', 'avec', 'ne', 'se', 'pas', 'tout', 'plus', 'par', 'grand', 'le', 'de', 'un', 'à', 'être', 'et', 'en', 'avoir', 'que', 'pour'} + + meaningful_words = [w for w in words if len(w) > 2 and w not in common_words] + + if meaningful_words: + # Prefer words from the middle or end of the phrase + if len(meaningful_words) > 1: + return meaningful_words[len(meaningful_words) // 2] + return meaningful_words[0] + elif words: + # Fallback to any word if no meaningful words found + return words[-1] + return "word" + +def create_drag_drop_exercise(phrases: List[Dict[str, str]], lang: str, category: str) -> Dict[str, Any]: + """Create a drag-and-drop exercise from phrase data.""" + # Select 3-4 phrases for the exercise + selected_phrases = random.sample(phrases, min(4, len(phrases))) + + sentences = [] + word_bank = [] + extra_words = [] + + for phrase_dict in selected_phrases: + phrase = phrase_dict[lang] + key_word = extract_key_word(phrase) + + # Create sentence with blank + sentence_with_blank = phrase.replace(key_word, f"[{key_word}]", 1) + + sentences.append({ + "text": sentence_with_blank, + "blanks": [{ + "placeholder": key_word, + "correct": key_word + }] + }) + + word_bank.append(key_word) + + # Add some distractor words from other phrases in the same category + other_phrases = [p for p in phrases if p not in selected_phrases] + if other_phrases: + for phrase_dict in random.sample(other_phrases, min(3, len(other_phrases))): + distractor = extract_key_word(phrase_dict[lang]) + if distractor not in word_bank: + extra_words.append(distractor) + + # Language-specific titles and instructions + titles = { + 'en': f"Complete the {category} Phrases", + 'es': f"Completa las Frases de {category}", + 'pt': f"Complete as Frases de {category}", + 'fr': f"Complétez les Phrases de {category}", + 'de': f"Vervollständigen Sie die {category}-Phrasen" + } + + instructions = { + 'en': "Drag the correct words to complete each phrase.", + 'es': "Arrastra las palabras correctas para completar cada frase.", + 'pt': "Arraste as palavras corretas para completar cada frase.", + 'fr': "Faites glisser les mots corrects pour compléter chaque phrase.", + 'de': "Ziehen Sie die richtigen Wörter, um jede Phrase zu vervollständigen." + } + + return { + "type": "drag-drop", + "title": titles.get(lang, titles['en']), + "instructions": instructions.get(lang, instructions['en']), + "sentences": sentences, + "extraWords": extra_words[:3] # Limit to 3 extra words + } + +def create_fill_blank_exercise(phrases: List[Dict[str, str]], lang: str, category: str) -> Dict[str, Any]: + """Create a fill-in-the-blank exercise from phrase data.""" + # Select 3-4 phrases for the exercise + selected_phrases = random.sample(phrases, min(4, len(phrases))) + + sentences = [] + word_bank = [] + + for phrase_dict in selected_phrases: + phrase = phrase_dict[lang] + key_word = extract_key_word(phrase) + + # Create sentence with blank + sentence_with_blank = phrase.replace(key_word, f"[{key_word}]", 1) + + # Create some alternative correct answers if possible + correct_answers = [key_word] + + sentences.append({ + "text": sentence_with_blank, + "blanks": [{ + "placeholder": key_word, + "correct": correct_answers, + "hint": f"Key word from this phrase" + }] + }) + + word_bank.append(key_word) + + # Add a couple more words to the word bank + other_phrases = [p for p in phrases if p not in selected_phrases] + for phrase_dict in random.sample(other_phrases, min(2, len(other_phrases))): + extra_word = extract_key_word(phrase_dict[lang]) + if extra_word not in word_bank: + word_bank.append(extra_word) + + # Language-specific titles and instructions + titles = { + 'en': f"Fill in {category} Phrases", + 'es': f"Completa las Frases de {category}", + 'pt': f"Preencha as Frases de {category}", + 'fr': f"Remplissez les Phrases de {category}", + 'de': f"Füllen Sie die {category}-Phrasen aus" + } + + instructions = { + 'en': "Complete these phrases by filling in the missing words.", + 'es': "Completa estas frases llenando las palabras que faltan.", + 'pt': "Complete essas frases preenchendo as palavras em falta.", + 'fr': "Complétez ces phrases en remplissant les mots manquants.", + 'de': "Vervollständigen Sie diese Phrasen, indem Sie die fehlenden Wörter einfügen." + } + + return { + "type": "fill-blank", + "title": titles.get(lang, titles['en']), + "instructions": instructions.get(lang, instructions['en']), + "sentences": sentences, + "wordBank": word_bank + } + +def create_matching_exercise(phrases: List[Dict[str, str]], lang: str, category: str) -> Dict[str, Any]: + """Create a matching exercise from phrase data.""" + # For matching, we'll create pairs from the phrases + # We can match questions with answers, or create related pairs + + # Select 4 phrases and create pairs + selected_phrases = random.sample(phrases, min(4, len(phrases))) + + left_items = [] + right_items = [] + correct_pairs = [] + + # Create pairs from the phrases - split each phrase to create question/answer style + for i, phrase_dict in enumerate(selected_phrases): + phrase = phrase_dict[lang] + + # Try to create meaningful pairs by splitting phrases + if '?' in phrase: + # For questions, use the question as left, create a response as right + left_text = phrase + # Create a simple response + responses = { + 'en': ["Yes", "No", "I don't know", "Maybe"], + 'es': ["Sí", "No", "No sé", "Tal vez"], + 'pt': ["Sim", "Não", "Não sei", "Talvez"], + 'fr': ["Oui", "Non", "Je ne sais pas", "Peut-être"], + 'de': ["Ja", "Nein", "Ich weiß nicht", "Vielleicht"] + } + right_text = responses.get(lang, responses['en'])[i % 4] + else: + # For statements, create a related phrase or translation concept + left_text = phrase + # Use part of the phrase or a related concept + words = phrase.split() + if len(words) > 2: + right_text = ' '.join(words[-2:]) # Last two words + else: + right_text = words[-1] if words else phrase + + left_id = f"item{i+1}" + right_id = f"response{i+1}" + + left_items.append({ + "id": left_id, + "text": left_text, + "type": "text" + }) + + right_items.append({ + "id": right_id, + "text": right_text, + "type": "text" + }) + + correct_pairs.append({ + "leftId": left_id, + "rightId": right_id + }) + + # Language-specific titles and instructions + titles = { + 'en': f"Match {category} Items", + 'es': f"Relaciona Elementos de {category}", + 'pt': f"Combine Itens de {category}", + 'fr': f"Associez les Éléments de {category}", + 'de': f"Ordnen Sie {category}-Elemente zu" + } + + instructions = { + 'en': "Match each item with its appropriate pair.", + 'es': "Relaciona cada elemento con su pareja apropiada.", + 'pt': "Combine cada item com seu par apropriado.", + 'fr': "Associez chaque élément à sa paire appropriée.", + 'de': "Ordnen Sie jeden Gegenstand seinem entsprechenden Paar zu." + } + + left_titles = { + 'en': "Phrases", + 'es': "Frases", + 'pt': "Frases", + 'fr': "Phrases", + 'de': "Phrasen" + } + + right_titles = { + 'en': "Responses", + 'es': "Respuestas", + 'pt': "Respostas", + 'fr': "Réponses", + 'de': "Antworten" + } + + return { + "type": "matching", + "title": titles.get(lang, titles['en']), + "instructions": instructions.get(lang, instructions['en']), + "leftTitle": left_titles.get(lang, left_titles['en']), + "rightTitle": right_titles.get(lang, right_titles['en']), + "leftItems": left_items, + "rightItems": right_items, + "correctPairs": correct_pairs + } + +def generate_exercises_for_day(day: int, lang: str) -> Dict[str, Any]: + """Generate all exercises for a specific day and language.""" + if day not in SAMPLE_PHRASES: + print(f"Warning: No data found for day {day}") + return {"exercises": []} + + day_phrases = SAMPLE_PHRASES[day] + exercises = [] + + # Get the categories and phrases for this day + categories = list(day_phrases.keys()) + + # Try to create 3 exercises using different categories + if len(categories) >= 3: + # Use 3 different categories for variety + selected_categories = random.sample(categories, 3) + exercise_types = ['drag-drop', 'fill-blank', 'matching'] + + for i, (category, ex_type) in enumerate(zip(selected_categories, exercise_types)): + phrases = day_phrases[category] + if len(phrases) >= 3: # Need at least 3 phrases for a good exercise + if ex_type == 'drag-drop': + exercise = create_drag_drop_exercise(phrases, lang, category) + elif ex_type == 'fill-blank': + exercise = create_fill_blank_exercise(phrases, lang, category) + else: # matching + exercise = create_matching_exercise(phrases, lang, category) + + exercises.append(exercise) + else: + # Use available categories, repeat if necessary + available_categories = [(cat, day_phrases[cat]) for cat in categories if len(day_phrases[cat]) >= 3] + + if available_categories: + # Create at least one exercise from the first available category + category, phrases = available_categories[0] + exercises.append(create_drag_drop_exercise(phrases, lang, category)) + + # Add more exercises if possible + if len(available_categories) >= 2: + category, phrases = available_categories[1] + exercises.append(create_fill_blank_exercise(phrases, lang, category)) + + if len(available_categories) >= 3: + category, phrases = available_categories[2] + exercises.append(create_matching_exercise(phrases, lang, category)) + + return {"exercises": exercises} + +def extend_sample_data_for_days(): + """Extend SAMPLE_PHRASES to cover more days with variations.""" + # For now, create exercises for days 2-50 by creating variations of day 1 data + for day in range(2, 51): + # Create themed variations for each day + SAMPLE_PHRASES[day] = {} + + # Day 2-10: Basic conversational themes + if day <= 10: + SAMPLE_PHRASES[day]["Daily Conversations"] = [ + {"en": f"Good day {day}!", "es": f"¡Buen día {day}!", "pt": f"Bom dia {day}!", "fr": f"Bonne journée {day}!", "de": f"Guten Tag {day}!"}, + {"en": "How is everything?", "es": "¿Cómo está todo?", "pt": "Como está tudo?", "fr": "Comment va tout ?", "de": "Wie läuft alles?"}, + {"en": "Very well", "es": "Muy bien", "pt": "Muito bem", "fr": "Très bien", "de": "Sehr gut"}, + {"en": "See you later", "es": "Hasta luego", "pt": "Até mais", "fr": "À plus tard", "de": "Bis später"}, + {"en": "Have a nice day", "es": "Que tengas un buen día", "pt": "Tenha um bom dia", "fr": "Bonne journée", "de": "Einen schönen Tag noch"} + ] + + SAMPLE_PHRASES[day]["Learning Progress"] = [ + {"en": f"This is lesson {day}", "es": f"Esta es la lección {day}", "pt": f"Esta é a lição {day}", "fr": f"C'est la leçon {day}", "de": f"Das ist Lektion {day}"}, + {"en": "I am learning", "es": "Estoy aprendiendo", "pt": "Estou aprendendo", "fr": "J'apprends", "de": "Ich lerne"}, + {"en": "This is useful", "es": "Esto es útil", "pt": "Isso é útil", "fr": "C'est utile", "de": "Das ist nützlich"}, + {"en": "I understand", "es": "Entiendo", "pt": "Eu entendo", "fr": "Je comprends", "de": "Ich verstehe"} + ] + + # Day 11-20: Travel and directions + elif day <= 20: + SAMPLE_PHRASES[day]["Travel & Directions"] = [ + {"en": "Turn left", "es": "Gira a la izquierda", "pt": "Vire à esquerda", "fr": "Tournez à gauche", "de": "Links abbiegen"}, + {"en": "Turn right", "es": "Gira a la derecha", "pt": "Vire à direita", "fr": "Tournez à droite", "de": "Rechts abbiegen"}, + {"en": "Go straight", "es": "Ve derecho", "pt": "Vá em frente", "fr": "Allez tout droit", "de": "Geradeaus gehen"}, + {"en": "It's near", "es": "Está cerca", "pt": "Está perto", "fr": "C'est près", "de": "Es ist nah"}, + {"en": "It's far", "es": "Está lejos", "pt": "Está longe", "fr": "C'est loin", "de": "Es ist weit"} + ] + + SAMPLE_PHRASES[day]["Transportation"] = [ + {"en": "Bus", "es": "Autobús", "pt": "Ônibus", "fr": "Bus", "de": "Bus"}, + {"en": "Train", "es": "Tren", "pt": "Trem", "fr": "Train", "de": "Zug"}, + {"en": "Taxi", "es": "Taxi", "pt": "Táxi", "fr": "Taxi", "de": "Taxi"}, + {"en": "Airport", "es": "Aeropuerto", "pt": "Aeroporto", "fr": "Aéroport", "de": "Flughafen"} + ] + + # Day 21-30: Food and dining + elif day <= 30: + SAMPLE_PHRASES[day]["Food & Dining"] = [ + {"en": "I am hungry", "es": "Tengo hambre", "pt": "Estou com fome", "fr": "J'ai faim", "de": "Ich habe Hunger"}, + {"en": "I am thirsty", "es": "Tengo sed", "pt": "Estou com sede", "fr": "J'ai soif", "de": "Ich habe Durst"}, + {"en": "The menu, please", "es": "El menú, por favor", "pt": "O cardápio, por favor", "fr": "Le menu, s'il vous plaît", "de": "Die Speisekarte, bitte"}, + {"en": "This is delicious", "es": "Esto está delicioso", "pt": "Isso está delicioso", "fr": "C'est délicieux", "de": "Das ist köstlich"}, + {"en": "The check, please", "es": "La cuenta, por favor", "pt": "A conta, por favor", "fr": "L'addition, s'il vous plaît", "de": "Die Rechnung, bitte"} + ] + + SAMPLE_PHRASES[day]["Restaurants"] = [ + {"en": "Table for two", "es": "Mesa para dos", "pt": "Mesa para dois", "fr": "Table pour deux", "de": "Tisch für zwei"}, + {"en": "I would like", "es": "Me gustaría", "pt": "Eu gostaria", "fr": "Je voudrais", "de": "Ich hätte gerne"}, + {"en": "Water", "es": "Agua", "pt": "Água", "fr": "Eau", "de": "Wasser"}, + {"en": "Coffee", "es": "Café", "pt": "Café", "fr": "Café", "de": "Kaffee"} + ] + + # Day 31-40: Shopping and money + elif day <= 40: + SAMPLE_PHRASES[day]["Shopping"] = [ + {"en": "How much is this?", "es": "¿Cuánto cuesta esto?", "pt": "Quanto custa isso?", "fr": "Combien ça coûte ?", "de": "Wie viel kostet das?"}, + {"en": "It's expensive", "es": "Es caro", "pt": "É caro", "fr": "C'est cher", "de": "Es ist teuer"}, + {"en": "It's cheap", "es": "Es barato", "pt": "É barato", "fr": "C'est bon marché", "de": "Es ist billig"}, + {"en": "I'll take it", "es": "Me lo llevo", "pt": "Eu vou levar", "fr": "Je le prends", "de": "Ich nehme es"}, + {"en": "Can I pay with card?", "es": "¿Puedo pagar con tarjeta?", "pt": "Posso pagar com cartão?", "fr": "Puis-je payer par carte ?", "de": "Kann ich mit Karte zahlen?"} + ] + + SAMPLE_PHRASES[day]["Money"] = [ + {"en": "Cash", "es": "Efectivo", "pt": "Dinheiro", "fr": "Espèces", "de": "Bargeld"}, + {"en": "Credit card", "es": "Tarjeta de crédito", "pt": "Cartão de crédito", "fr": "Carte de crédit", "de": "Kreditkarte"}, + {"en": "Receipt", "es": "Recibo", "pt": "Recibo", "fr": "Reçu", "de": "Quittung"}, + {"en": "Change", "es": "Cambio", "pt": "Troco", "fr": "Monnaie", "de": "Wechselgeld"} + ] + + # Day 41-50: Advanced topics + else: + SAMPLE_PHRASES[day]["Weather & Time"] = [ + {"en": "What time is it?", "es": "¿Qué hora es?", "pt": "Que horas são?", "fr": "Quelle heure est-il ?", "de": "Wie spät ist es?"}, + {"en": "It's sunny", "es": "Está soleado", "pt": "Está ensolarado", "fr": "Il fait beau", "de": "Es ist sonnig"}, + {"en": "It's raining", "es": "Está lloviendo", "pt": "Está chovendo", "fr": "Il pleut", "de": "Es regnet"}, + {"en": "Yesterday", "es": "Ayer", "pt": "Ontem", "fr": "Hier", "de": "Gestern"}, + {"en": "Tomorrow", "es": "Mañana", "pt": "Amanhã", "fr": "Demain", "de": "Morgen"} + ] + + SAMPLE_PHRASES[day]["Feelings & Opinions"] = [ + {"en": "I like it", "es": "Me gusta", "pt": "Eu gosto", "fr": "J'aime ça", "de": "Das gefällt mir"}, + {"en": "I don't like it", "es": "No me gusta", "pt": "Eu não gosto", "fr": "Je n'aime pas ça", "de": "Das gefällt mir nicht"}, + {"en": "I'm happy", "es": "Estoy feliz", "pt": "Estou feliz", "fr": "Je suis heureux", "de": "Ich bin glücklich"}, + {"en": "I'm tired", "es": "Estoy cansado", "pt": "Estou cansado", "fr": "Je suis fatigué", "de": "Ich bin müde"} + ] + +def main(): + """Generate exercise files for all days and languages.""" + # Create exercises directory if it doesn't exist + exercises_dir = "exercises" + os.makedirs(exercises_dir, exist_ok=True) + + # Extend our sample data to cover all 50 days + extend_sample_data_for_days() + + print("Generating exercise files for all 50 days in 5 languages...") + + total_files = 0 + for day in range(1, 51): + for lang in LANGUAGES: + try: + exercise_data = generate_exercises_for_day(day, lang) + + if exercise_data["exercises"]: # Only create file if exercises exist + filename = f"day{day}_{lang}.json" + filepath = os.path.join(exercises_dir, filename) + + with open(filepath, 'w', encoding='utf-8') as f: + json.dump(exercise_data, f, indent=2, ensure_ascii=False) + + total_files += 1 + print(f"✓ Created {filename} with {len(exercise_data['exercises'])} exercises") + else: + print(f"⚠ Skipped day{day}_{lang}.json - no suitable phrase data") + + except Exception as e: + print(f"✗ Error creating day{day}_{lang}.json: {e}") + + print(f"\nCompleted! Generated {total_files} exercise files.") + print(f"Files are located in the '{exercises_dir}/' directory.") + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/js/drag-drop.js b/js/drag-drop.js new file mode 100644 index 0000000..107c146 --- /dev/null +++ b/js/drag-drop.js @@ -0,0 +1,397 @@ +/** + * Drag and Drop Exercise Component + * Allows users to drag words/phrases to correct positions + */ + +class DragDropExercise { + constructor(container, exerciseData, index, controller) { + this.container = container; + this.data = exerciseData; + this.index = index; + this.controller = controller; + this.completed = false; + this.draggedElement = null; + this.touchItem = null; + this.touchOffset = { x: 0, y: 0 }; + + this.render(); + this.bindEvents(); + } + + render() { + this.container.innerHTML = ` +
+
+

${this.data.instructions || 'Drag the words to complete the sentences correctly.'}

+
+ +
+
+ ${this.renderSentences()} +
+ +
+
Word Bank
+
+ ${this.renderWordBank()} +
+
+
+ +
+ + +
+ +
+
+ `; + + // Store reference for global access + if (!window.dragDropExercises) { + window.dragDropExercises = {}; + } + window.dragDropExercises[this.index] = this; + } + + renderSentences() { + return this.data.sentences.map((sentence, sentenceIndex) => { + // Replace blanks with drop zones + let html = sentence.text; + sentence.blanks.forEach((blank, blankIndex) => { + const dropZoneId = `drop-${this.index}-${sentenceIndex}-${blankIndex}`; + const placeholder = `[${blank.placeholder || 'blank'}]`; + html = html.replace(placeholder, + ` + Drop here + ` + ); + }); + return ` +
+

${html}

+
+ `; + }).join(''); + } + + renderWordBank() { + // Collect all words and shuffle them + const allWords = []; + this.data.sentences.forEach(sentence => { + sentence.blanks.forEach(blank => { + allWords.push(blank.correct); + }); + }); + + // Add extra words if provided + if (this.data.extraWords) { + allWords.push(...this.data.extraWords); + } + + // Shuffle array + const shuffledWords = this.shuffleArray([...allWords]); + + return shuffledWords.map((word, wordIndex) => ` +
+ ${word} +
+ `).join(''); + } + + bindEvents() { + // Add instruction elements for screen readers + const instructionElement = document.createElement('div'); + instructionElement.id = `drag-instruction-${this.index}`; + instructionElement.className = 'sr-only'; + instructionElement.textContent = 'Use mouse to drag or use keyboard: Tab to navigate, Enter to select/deselect, arrow keys to move selected items.'; + this.container.appendChild(instructionElement); + + const dropInstructionElement = document.createElement('div'); + dropInstructionElement.id = `drop-instruction-${this.index}`; + dropInstructionElement.className = 'sr-only'; + dropInstructionElement.textContent = 'Drop zone: Press Enter to place selected word here.'; + this.container.appendChild(dropInstructionElement); + + // Bind drag events + this.bindDragEvents(); + // Bind keyboard events for accessibility + this.bindKeyboardEvents(); + // Bind touch events for mobile + this.bindTouchEvents(); + } + + bindDragEvents() { + const wordBank = this.container.querySelector('.words-container'); + const sentenceArea = this.container.querySelector('.sentence-area'); + + // Draggable events + wordBank.addEventListener('dragstart', (e) => { + if (e.target.classList.contains('draggable-word')) { + this.draggedElement = e.target; + e.target.classList.add('dragging'); + e.dataTransfer.effectAllowed = 'move'; + e.dataTransfer.setData('text/html', e.target.outerHTML); + } + }); + + wordBank.addEventListener('dragend', (e) => { + if (e.target.classList.contains('draggable-word')) { + e.target.classList.remove('dragging'); + this.draggedElement = null; + } + }); + + // Drop zone events + sentenceArea.addEventListener('dragover', (e) => { + e.preventDefault(); + e.dataTransfer.dropEffect = 'move'; + + if (e.target.classList.contains('drop-zone')) { + e.target.classList.add('drag-over'); + } + }); + + sentenceArea.addEventListener('dragleave', (e) => { + if (e.target.classList.contains('drop-zone')) { + e.target.classList.remove('drag-over'); + } + }); + + sentenceArea.addEventListener('drop', (e) => { + e.preventDefault(); + + if (e.target.classList.contains('drop-zone') && this.draggedElement) { + e.target.classList.remove('drag-over'); + this.placeWordInDropZone(this.draggedElement, e.target); + } + }); + + // Allow dropping back to word bank + wordBank.addEventListener('dragover', (e) => { + e.preventDefault(); + e.dataTransfer.dropEffect = 'move'; + }); + + wordBank.addEventListener('drop', (e) => { + e.preventDefault(); + if (this.draggedElement && this.draggedElement.parentElement.classList.contains('drop-zone')) { + this.returnWordToBank(this.draggedElement); + } + }); + } + + bindKeyboardEvents() { + let selectedWord = null; + + this.container.addEventListener('keydown', (e) => { + if (e.target.classList.contains('draggable-word')) { + if (e.key === 'Enter' || e.key === ' ') { + e.preventDefault(); + if (selectedWord === e.target) { + // Deselect + selectedWord.classList.remove('selected'); + selectedWord = null; + this.controller.accessibility.announceText('Word deselected'); + } else { + // Select new word + if (selectedWord) { + selectedWord.classList.remove('selected'); + } + selectedWord = e.target; + selectedWord.classList.add('selected'); + this.controller.accessibility.announceText(`Selected word: ${e.target.textContent}`); + } + } + } else if (e.target.classList.contains('drop-zone') && selectedWord) { + if (e.key === 'Enter' || e.key === ' ') { + e.preventDefault(); + this.placeWordInDropZone(selectedWord, e.target); + selectedWord.classList.remove('selected'); + selectedWord = null; + } + } + }); + } + + bindTouchEvents() { + this.container.addEventListener('touchstart', (e) => { + if (e.target.classList.contains('draggable-word')) { + this.touchItem = e.target; + const touch = e.touches[0]; + const rect = e.target.getBoundingClientRect(); + this.touchOffset.x = touch.clientX - rect.left; + this.touchOffset.y = touch.clientY - rect.top; + e.target.classList.add('touch-dragging'); + e.preventDefault(); + } + }); + + this.container.addEventListener('touchmove', (e) => { + if (this.touchItem) { + const touch = e.touches[0]; + this.touchItem.style.position = 'fixed'; + this.touchItem.style.left = (touch.clientX - this.touchOffset.x) + 'px'; + this.touchItem.style.top = (touch.clientY - this.touchOffset.y) + 'px'; + this.touchItem.style.zIndex = '1000'; + e.preventDefault(); + } + }); + + this.container.addEventListener('touchend', (e) => { + if (this.touchItem) { + const touch = e.changedTouches[0]; + const elementBelow = document.elementFromPoint(touch.clientX, touch.clientY); + + this.touchItem.style.position = ''; + this.touchItem.style.left = ''; + this.touchItem.style.top = ''; + this.touchItem.style.zIndex = ''; + this.touchItem.classList.remove('touch-dragging'); + + if (elementBelow && elementBelow.classList.contains('drop-zone')) { + this.placeWordInDropZone(this.touchItem, elementBelow); + } + + this.touchItem = null; + } + }); + } + + placeWordInDropZone(word, dropZone) { + // Check if drop zone already has a word + const existingWord = dropZone.querySelector('.draggable-word'); + if (existingWord) { + this.returnWordToBank(existingWord); + } + + // Remove placeholder + const placeholder = dropZone.querySelector('.drop-zone-placeholder'); + if (placeholder) { + placeholder.style.display = 'none'; + } + + // Move word to drop zone + word.classList.remove('selected'); + dropZone.appendChild(word); + + // Announce for accessibility + this.controller.accessibility.announceText(`Placed "${word.textContent}" in drop zone`); + } + + returnWordToBank(word) { + const wordBank = this.container.querySelector('.words-container'); + const dropZone = word.parentElement; + + if (dropZone && dropZone.classList.contains('drop-zone')) { + // Show placeholder again + const placeholder = dropZone.querySelector('.drop-zone-placeholder'); + if (placeholder) { + placeholder.style.display = 'inline'; + } + } + + wordBank.appendChild(word); + this.controller.accessibility.announceText(`Returned "${word.textContent}" to word bank`); + } + + checkAnswers() { + let correct = 0; + let total = 0; + const feedback = document.getElementById(`feedback-${this.index}`); + + this.data.sentences.forEach((sentence, sentenceIndex) => { + sentence.blanks.forEach((blank, blankIndex) => { + total++; + const dropZoneId = `drop-${this.index}-${sentenceIndex}-${blankIndex}`; + const dropZone = document.getElementById(dropZoneId); + const placedWord = dropZone.querySelector('.draggable-word'); + + if (placedWord && placedWord.textContent.trim() === blank.correct) { + dropZone.classList.add('correct'); + dropZone.classList.remove('incorrect'); + correct++; + } else { + dropZone.classList.add('incorrect'); + dropZone.classList.remove('correct'); + } + }); + }); + + const percentage = Math.round((correct / total) * 100); + + if (percentage >= 80) { + feedback.innerHTML = ` +
+ + Excellent! You got ${correct} out of ${total} correct (${percentage}%). +
+ `; + this.completed = true; + this.controller.markExerciseCompleted(this.data, this.index); + } else { + feedback.innerHTML = ` +
+ + Good try! You got ${correct} out of ${total} correct (${percentage}%). + Try again to get at least 80%. +
+ `; + } + + // Announce result for accessibility + this.controller.accessibility.announceText(`Exercise results: ${correct} out of ${total} correct, ${percentage} percent`); + } + + reset() { + // Move all words back to word bank + const placedWords = this.container.querySelectorAll('.drop-zone .draggable-word'); + placedWords.forEach(word => { + this.returnWordToBank(word); + }); + + // Clear feedback + const feedback = document.getElementById(`feedback-${this.index}`); + feedback.innerHTML = ''; + + // Remove correct/incorrect classes + const dropZones = this.container.querySelectorAll('.drop-zone'); + dropZones.forEach(zone => { + zone.classList.remove('correct', 'incorrect'); + }); + + this.completed = false; + this.controller.accessibility.announceText('Exercise reset'); + } + + shuffleArray(array) { + const shuffled = [...array]; + for (let i = shuffled.length - 1; i > 0; i--) { + const j = Math.floor(Math.random() * (i + 1)); + [shuffled[i], shuffled[j]] = [shuffled[j], shuffled[i]]; + } + return shuffled; + } +} + +// Export for global access +window.DragDropExercise = DragDropExercise; \ No newline at end of file diff --git a/js/exercises.js b/js/exercises.js new file mode 100644 index 0000000..7b96937 --- /dev/null +++ b/js/exercises.js @@ -0,0 +1,246 @@ +/** + * Interactive Exercises Controller + * Manages drag-and-drop, fill-in-the-blank, and matching game exercises + */ + +class ExerciseController { + constructor() { + this.exercises = []; + this.currentExercise = null; + this.exerciseProgress = JSON.parse(localStorage.getItem('exerciseProgress') || '{}'); + this.accessibility = { + announceText: (text) => { + const announcement = document.createElement('div'); + announcement.setAttribute('aria-live', 'polite'); + announcement.setAttribute('aria-atomic', 'true'); + announcement.className = 'sr-only'; + announcement.textContent = text; + document.body.appendChild(announcement); + setTimeout(() => document.body.removeChild(announcement), 1000); + } + }; + } + + /** + * Initialize exercises for a specific day and language + */ + async initializeExercises(day, language) { + try { + const exerciseData = await this.loadExerciseData(day, language); + if (exerciseData && exerciseData.exercises) { + this.exercises = exerciseData.exercises; + this.renderExercisesContainer(); + this.exercises.forEach((exercise, index) => { + this.renderExercise(exercise, index); + }); + } + } catch (error) { + console.log('No exercises available for this lesson:', error); + // Graceful degradation - no exercises shown if data not available + } + } + + /** + * Load exercise data from JSON file + */ + async loadExerciseData(day, language) { + const response = await fetch(`exercises/day${day}_${language}.json`); + if (!response.ok) { + throw new Error(`Exercise data not found: ${response.status}`); + } + return await response.json(); + } + + /** + * Create the exercises container in the lesson page + */ + renderExercisesContainer() { + const textContent = document.getElementById('text-content'); + if (!textContent) return; + + // Check if exercises container already exists + if (document.getElementById('exercises-container')) return; + + const exercisesContainer = document.createElement('div'); + exercisesContainer.id = 'exercises-container'; + exercisesContainer.className = 'exercises-container'; + exercisesContainer.innerHTML = ` +
+

Interactive Exercises

+

Practice what you've learned with these interactive activities!

+
+
+ `; + + // Insert after text content but before lesson actions + const lessonActions = document.querySelector('.lesson-actions'); + if (lessonActions) { + textContent.parentNode.insertBefore(exercisesContainer, lessonActions); + } else { + textContent.parentNode.appendChild(exercisesContainer); + } + } + + /** + * Render an individual exercise + */ + renderExercise(exercise, index) { + const exercisesList = document.getElementById('exercises-list'); + if (!exercisesList) return; + + const exerciseElement = document.createElement('div'); + exerciseElement.className = 'exercise-item'; + exerciseElement.id = `exercise-${index}`; + + // Create exercise header + const header = document.createElement('div'); + header.className = 'exercise-header'; + header.innerHTML = ` +

+ + ${exercise.title} +

+
+ ${this.getExerciseStatus(exercise, index)} +
+ `; + + // Create exercise content + const content = document.createElement('div'); + content.className = 'exercise-content'; + content.id = `content-${index}`; + + exerciseElement.appendChild(header); + exerciseElement.appendChild(content); + exercisesList.appendChild(exerciseElement); + + // Render specific exercise type + this.renderExerciseContent(exercise, index); + } + + /** + * Get icon for exercise type + */ + getExerciseIcon(type) { + const icons = { + 'drag-drop': 'fa-arrows-alt', + 'fill-blank': 'fa-edit', + 'matching': 'fa-link' + }; + return icons[type] || 'fa-puzzle-piece'; + } + + /** + * Get exercise completion status + */ + getExerciseStatus(exercise, index) { + const key = this.getProgressKey(exercise, index); + const isCompleted = this.exerciseProgress[key] || false; + + if (isCompleted) { + return ' Completed'; + } else { + return ' Not Started'; + } + } + + /** + * Render exercise content based on type + */ + renderExerciseContent(exercise, index) { + const content = document.getElementById(`content-${index}`); + if (!content) return; + + switch (exercise.type) { + case 'drag-drop': + if (window.DragDropExercise) { + new window.DragDropExercise(content, exercise, index, this); + } + break; + case 'fill-blank': + if (window.FillBlankExercise) { + new window.FillBlankExercise(content, exercise, index, this); + } + break; + case 'matching': + if (window.MatchingExercise) { + new window.MatchingExercise(content, exercise, index, this); + } + break; + default: + content.innerHTML = `

Exercise type "${exercise.type}" not supported.

`; + } + } + + /** + * Mark exercise as completed + */ + markExerciseCompleted(exercise, index) { + const key = this.getProgressKey(exercise, index); + this.exerciseProgress[key] = true; + localStorage.setItem('exerciseProgress', JSON.stringify(this.exerciseProgress)); + + // Update status display + const statusElement = document.getElementById(`status-${index}`); + if (statusElement) { + statusElement.innerHTML = ' Completed'; + } + + // Announce completion for accessibility + this.accessibility.announceText(`Exercise "${exercise.title}" completed successfully!`); + + // Show completion animation + const exerciseElement = document.getElementById(`exercise-${index}`); + if (exerciseElement) { + exerciseElement.classList.add('exercise-completed'); + } + } + + /** + * Generate progress key for localStorage + */ + getProgressKey(exercise, index) { + const urlParams = new URLSearchParams(window.location.search); + const day = urlParams.get('day') || '1'; + const lang = urlParams.get('lang') || 'en'; + return `exercise_${day}_${lang}_${index}`; + } + + /** + * Check if all exercises are completed + */ + areAllExercisesCompleted() { + return this.exercises.every((exercise, index) => { + const key = this.getProgressKey(exercise, index); + return this.exerciseProgress[key] || false; + }); + } + + /** + * Get exercise completion count + */ + getCompletedExerciseCount() { + return this.exercises.filter((exercise, index) => { + const key = this.getProgressKey(exercise, index); + return this.exerciseProgress[key] || false; + }).length; + } +} + +// Initialize global exercise controller +window.exerciseController = null; + +// Auto-initialize exercises when DOM is loaded +document.addEventListener('DOMContentLoaded', function() { + // Wait for page to be fully loaded, then initialize exercises + setTimeout(() => { + const urlParams = new URLSearchParams(window.location.search); + const day = parseInt(urlParams.get('day')) || 1; + const lang = urlParams.get('lang') || 'en'; + + if (document.getElementById('text-content')) { + window.exerciseController = new ExerciseController(); + window.exerciseController.initializeExercises(day, lang); + } + }, 500); +}); \ No newline at end of file diff --git a/js/fill-blank.js b/js/fill-blank.js new file mode 100644 index 0000000..8ea87fa --- /dev/null +++ b/js/fill-blank.js @@ -0,0 +1,430 @@ +/** + * Fill in the Blank Exercise Component + * Interactive text inputs for missing words in sentences + */ + +class FillBlankExercise { + constructor(container, exerciseData, index, controller) { + this.container = container; + this.data = exerciseData; + this.index = index; + this.controller = controller; + this.completed = false; + this.inputs = []; + + this.render(); + this.bindEvents(); + } + + render() { + this.container.innerHTML = ` +
+
+

${this.data.instructions || 'Fill in the blanks with the correct words or phrases.'}

+
+ +
+
+ ${this.renderSentences()} +
+ + ${this.data.wordBank ? this.renderWordBank() : ''} +
+ +
+ + + +
+ +
+ +
+ `; + + // Store reference for global access + if (!window.fillBlankExercises) { + window.fillBlankExercises = {}; + } + window.fillBlankExercises[this.index] = this; + } + + renderSentences() { + return this.data.sentences.map((sentence, sentenceIndex) => { + let html = sentence.text; + let inputIndex = 0; + + // Replace blanks with input fields + sentence.blanks.forEach((blank, blankIndex) => { + const placeholder = `[${blank.placeholder || 'blank'}]`; + const inputId = `input-${this.index}-${sentenceIndex}-${blankIndex}`; + const globalInputIndex = this.inputs.length; + + // Store input info for later reference + this.inputs.push({ + id: inputId, + correct: Array.isArray(blank.correct) ? blank.correct : [blank.correct], + hint: blank.hint || '', + sentenceIndex, + blankIndex + }); + + html = html.replace(placeholder, + `` + ); + }); + + return ` +
+

${html}

+
+ `; + }).join(''); + } + + renderWordBank() { + if (!this.data.wordBank || this.data.wordBank.length === 0) { + return ''; + } + + // Shuffle word bank + const shuffledWords = this.shuffleArray([...this.data.wordBank]); + + return ` +
+
Word Bank
+
+ ${shuffledWords.map(word => ` + + ${word} + + `).join('')} +
+

Click on words to insert them into the focused input field.

+
+ `; + } + + bindEvents() { + // Add real-time feedback + this.inputs.forEach((inputInfo, index) => { + const input = document.getElementById(inputInfo.id); + if (input) { + input.addEventListener('input', () => { + this.validateInput(input, inputInfo); + }); + + input.addEventListener('blur', () => { + this.validateInput(input, inputInfo, true); + }); + + // Enhanced keyboard navigation + input.addEventListener('keydown', (e) => { + if (e.key === 'Tab') { + // Natural tab navigation + return; + } else if (e.key === 'Enter') { + e.preventDefault(); + this.focusNextInput(index); + } else if (e.key === 'ArrowDown' || e.key === 'ArrowRight') { + e.preventDefault(); + this.focusNextInput(index); + } else if (e.key === 'ArrowUp' || e.key === 'ArrowLeft') { + e.preventDefault(); + this.focusPrevInput(index); + } + }); + } + }); + + // Word bank click events + const wordBankItems = this.container.querySelectorAll('.word-bank-item'); + wordBankItems.forEach(item => { + item.addEventListener('keydown', (e) => { + if (e.key === 'Enter' || e.key === ' ') { + e.preventDefault(); + this.insertWord(item.textContent.trim()); + } + }); + }); + } + + validateInput(input, inputInfo, showFeedback = false) { + const userAnswer = input.value.trim().toLowerCase(); + const correctAnswers = inputInfo.correct.map(answer => answer.toLowerCase()); + + // Remove previous styling + input.classList.remove('correct', 'incorrect', 'partial'); + + if (userAnswer === '') { + // Empty input + return; + } + + // Check for exact matches + if (correctAnswers.includes(userAnswer)) { + input.classList.add('correct'); + if (showFeedback) { + this.showInputFeedback(input, 'Correct!', 'success'); + } + } else { + // Check for partial matches + const hasPartialMatch = correctAnswers.some(answer => + answer.includes(userAnswer) || userAnswer.includes(answer) + ); + + if (hasPartialMatch) { + input.classList.add('partial'); + if (showFeedback) { + this.showInputFeedback(input, 'Close! Keep trying.', 'warning'); + } + } else { + input.classList.add('incorrect'); + if (showFeedback) { + this.showInputFeedback(input, 'Try again.', 'error'); + } + } + } + } + + showInputFeedback(input, message, type) { + // Remove existing feedback + const existingFeedback = input.parentElement.querySelector('.input-feedback'); + if (existingFeedback) { + existingFeedback.remove(); + } + + // Create feedback element + const feedback = document.createElement('span'); + feedback.className = `input-feedback feedback-${type}`; + feedback.textContent = message; + feedback.setAttribute('role', 'status'); + feedback.setAttribute('aria-live', 'polite'); + + // Position feedback + input.parentElement.style.position = 'relative'; + feedback.style.position = 'absolute'; + feedback.style.top = '100%'; + feedback.style.left = '0'; + feedback.style.fontSize = '0.8em'; + feedback.style.marginTop = '2px'; + + input.parentElement.appendChild(feedback); + + // Remove feedback after delay + setTimeout(() => { + if (feedback.parentElement) { + feedback.remove(); + } + }, 2000); + } + + insertWord(word) { + const focusedInput = document.activeElement; + if (focusedInput && focusedInput.classList.contains('fill-blank-input')) { + focusedInput.value = word; + focusedInput.dispatchEvent(new Event('input')); + this.controller.accessibility.announceText(`Inserted word: ${word}`); + } else { + // Find first empty input + const emptyInput = this.container.querySelector('.fill-blank-input[value=""], .fill-blank-input:not([value])'); + if (emptyInput) { + emptyInput.value = word; + emptyInput.focus(); + emptyInput.dispatchEvent(new Event('input')); + this.controller.accessibility.announceText(`Inserted word: ${word}`); + } + } + } + + focusNextInput(currentIndex) { + const nextIndex = currentIndex + 1; + if (nextIndex < this.inputs.length) { + const nextInput = document.getElementById(this.inputs[nextIndex].id); + if (nextInput) { + nextInput.focus(); + } + } + } + + focusPrevInput(currentIndex) { + const prevIndex = currentIndex - 1; + if (prevIndex >= 0) { + const prevInput = document.getElementById(this.inputs[prevIndex].id); + if (prevInput) { + prevInput.focus(); + } + } + } + + showHints() { + const hintsContainer = document.getElementById(`hints-${this.index}`); + const isVisible = hintsContainer.style.display !== 'none'; + + if (isVisible) { + hintsContainer.style.display = 'none'; + this.controller.accessibility.announceText('Hints hidden'); + } else { + hintsContainer.innerHTML = ` +
+
Hints
+ +
+ `; + hintsContainer.style.display = 'block'; + this.controller.accessibility.announceText('Hints shown'); + } + } + + checkAnswers() { + let correct = 0; + let total = this.inputs.length; + const feedback = document.getElementById(`feedback-${this.index}`); + const results = []; + + this.inputs.forEach((inputInfo, index) => { + const input = document.getElementById(inputInfo.id); + const userAnswer = input.value.trim().toLowerCase(); + const correctAnswers = inputInfo.correct.map(answer => answer.toLowerCase()); + + if (correctAnswers.includes(userAnswer)) { + input.classList.remove('incorrect', 'partial'); + input.classList.add('correct'); + correct++; + results.push({ index, correct: true, answer: userAnswer }); + } else { + input.classList.remove('correct', 'partial'); + input.classList.add('incorrect'); + results.push({ + index, + correct: false, + answer: userAnswer, + expected: inputInfo.correct[0] // Show first correct answer + }); + } + }); + + const percentage = Math.round((correct / total) * 100); + + if (percentage >= 80) { + feedback.innerHTML = ` +
+ + Excellent! You got ${correct} out of ${total} correct (${percentage}%). + ${this.generateDetailedFeedback(results, true)} +
+ `; + this.completed = true; + this.controller.markExerciseCompleted(this.data, this.index); + } else { + feedback.innerHTML = ` +
+ + Good try! You got ${correct} out of ${total} correct (${percentage}%). + Try again to get at least 80%. + ${this.generateDetailedFeedback(results, false)} +
+ `; + } + + // Announce result for accessibility + this.controller.accessibility.announceText(`Exercise results: ${correct} out of ${total} correct, ${percentage} percent`); + } + + generateDetailedFeedback(results, isSuccess) { + if (isSuccess) { + return '

All answers are correct!

'; + } + + const incorrectResults = results.filter(result => !result.correct); + if (incorrectResults.length === 0) { + return ''; + } + + return ` +
+
Review these answers:
+ +
+ `; + } + + reset() { + // Clear all inputs + this.inputs.forEach(inputInfo => { + const input = document.getElementById(inputInfo.id); + if (input) { + input.value = ''; + input.classList.remove('correct', 'incorrect', 'partial'); + } + }); + + // Clear feedback + const feedback = document.getElementById(`feedback-${this.index}`); + feedback.innerHTML = ''; + + // Hide hints + const hintsContainer = document.getElementById(`hints-${this.index}`); + hintsContainer.style.display = 'none'; + + // Remove input feedback elements + const inputFeedbacks = this.container.querySelectorAll('.input-feedback'); + inputFeedbacks.forEach(fb => fb.remove()); + + this.completed = false; + this.controller.accessibility.announceText('Exercise reset'); + + // Focus first input + if (this.inputs.length > 0) { + const firstInput = document.getElementById(this.inputs[0].id); + if (firstInput) { + firstInput.focus(); + } + } + } + + shuffleArray(array) { + const shuffled = [...array]; + for (let i = shuffled.length - 1; i > 0; i--) { + const j = Math.floor(Math.random() * (i + 1)); + [shuffled[i], shuffled[j]] = [shuffled[j], shuffled[i]]; + } + return shuffled; + } +} + +// Export for global access +window.FillBlankExercise = FillBlankExercise; \ No newline at end of file diff --git a/js/matching.js b/js/matching.js new file mode 100644 index 0000000..7ffbadd --- /dev/null +++ b/js/matching.js @@ -0,0 +1,498 @@ +/** + * Matching Exercise Component + * Match words with translations, definitions, or images + */ + +class MatchingExercise { + constructor(container, exerciseData, index, controller) { + this.container = container; + this.data = exerciseData; + this.index = index; + this.controller = controller; + this.completed = false; + this.selectedItems = { left: null, right: null }; + this.matches = []; + this.keyboardSelectedItems = { left: null, right: null }; + + this.render(); + this.bindEvents(); + } + + render() { + // Shuffle the right column to make it challenging + const shuffledRightItems = this.shuffleArray([...this.data.rightItems]); + + this.container.innerHTML = ` +
+
+

${this.data.instructions || 'Match the items in the left column with their corresponding items in the right column.'}

+
+ +
+
+
+
${this.data.leftTitle || 'Items'}
+
+ ${this.renderLeftColumn()} +
+
+ +
+
${this.data.rightTitle || 'Matches'}
+
+ ${this.renderRightColumn(shuffledRightItems)} +
+
+
+ +
+
Your Matches
+
+
+
+ +
+ + + +
+ +
+
+ `; + + // Store reference for global access + if (!window.matchingExercises) { + window.matchingExercises = {}; + } + window.matchingExercises[this.index] = this; + } + + renderLeftColumn() { + return this.data.leftItems.map((item, index) => ` +
+ ${this.renderItemContent(item)} +
+ `).join(''); + } + + renderRightColumn(shuffledItems) { + return shuffledItems.map((item, index) => ` +
+ ${this.renderItemContent(item)} +
+ `).join(''); + } + + renderItemContent(item) { + if (item.type === 'image') { + return ` +
+ ${item.alt || item.text} + ${item.text ? `${item.text}` : ''} +
+ `; + } else { + return `${item.text}`; + } + } + + getItemLabel(item) { + if (item.type === 'image') { + return `Image: ${item.alt || item.text || 'Image item'}`; + } + return item.text; + } + + bindEvents() { + // Add instruction element for screen readers + const instructionElement = document.createElement('div'); + instructionElement.id = `matching-instruction-${this.index}`; + instructionElement.className = 'sr-only'; + instructionElement.textContent = 'Click to select items to match. Use keyboard: Tab to navigate, Enter to select, Escape to deselect.'; + this.container.appendChild(instructionElement); + + // Bind click events + this.bindClickEvents(); + // Bind keyboard events for accessibility + this.bindKeyboardEvents(); + // Bind touch events for mobile + this.bindTouchEvents(); + } + + bindClickEvents() { + const leftItems = this.container.querySelectorAll('.left-item'); + const rightItems = this.container.querySelectorAll('.right-item'); + + leftItems.forEach(item => { + item.addEventListener('click', () => { + this.selectLeftItem(item); + }); + }); + + rightItems.forEach(item => { + item.addEventListener('click', () => { + this.selectRightItem(item); + }); + }); + } + + bindKeyboardEvents() { + this.container.addEventListener('keydown', (e) => { + const item = e.target; + + if (!item.classList.contains('matching-item')) return; + + if (e.key === 'Enter' || e.key === ' ') { + e.preventDefault(); + if (item.classList.contains('left-item')) { + this.selectLeftItem(item); + } else if (item.classList.contains('right-item')) { + this.selectRightItem(item); + } + } else if (e.key === 'Escape') { + e.preventDefault(); + this.clearSelection(); + } else if (e.key === 'ArrowDown') { + e.preventDefault(); + this.navigateItem(item, 'down'); + } else if (e.key === 'ArrowUp') { + e.preventDefault(); + this.navigateItem(item, 'up'); + } else if (e.key === 'ArrowLeft' || e.key === 'ArrowRight') { + e.preventDefault(); + this.navigateToOppositeColumn(item); + } + }); + } + + bindTouchEvents() { + // Enhanced touch handling for mobile devices + this.container.addEventListener('touchstart', (e) => { + if (e.target.closest('.matching-item')) { + e.target.closest('.matching-item').classList.add('touch-highlight'); + } + }); + + this.container.addEventListener('touchend', (e) => { + const item = e.target.closest('.matching-item'); + if (item) { + item.classList.remove('touch-highlight'); + // Simulate click + item.click(); + } + }); + } + + selectLeftItem(item) { + // Clear previous left selection + if (this.selectedItems.left) { + this.selectedItems.left.classList.remove('selected'); + } + + // Check if item is already matched + if (item.classList.contains('matched')) { + this.controller.accessibility.announceText('This item is already matched'); + return; + } + + this.selectedItems.left = item; + item.classList.add('selected'); + + const itemText = this.getItemLabel(this.getItemData(item.dataset.id, 'left')); + this.controller.accessibility.announceText(`Selected left item: ${itemText}`); + + // If both items are selected, create match + if (this.selectedItems.right) { + this.createMatch(); + } + } + + selectRightItem(item) { + // Clear previous right selection + if (this.selectedItems.right) { + this.selectedItems.right.classList.remove('selected'); + } + + // Check if item is already matched + if (item.classList.contains('matched')) { + this.controller.accessibility.announceText('This item is already matched'); + return; + } + + this.selectedItems.right = item; + item.classList.add('selected'); + + const itemText = this.getItemLabel(this.getItemData(item.dataset.id, 'right')); + this.controller.accessibility.announceText(`Selected right item: ${itemText}`); + + // If both items are selected, create match + if (this.selectedItems.left) { + this.createMatch(); + } + } + + createMatch() { + const leftItem = this.selectedItems.left; + const rightItem = this.selectedItems.right; + + if (!leftItem || !rightItem) return; + + const leftData = this.getItemData(leftItem.dataset.id, 'left'); + const rightData = this.getItemData(rightItem.dataset.id, 'right'); + + // Create match object + const match = { + leftId: leftItem.dataset.id, + rightId: rightItem.dataset.id, + leftText: this.getItemLabel(leftData), + rightText: this.getItemLabel(rightData), + leftElement: leftItem, + rightElement: rightItem + }; + + this.matches.push(match); + + // Mark items as matched + leftItem.classList.add('matched'); + rightItem.classList.add('matched'); + leftItem.classList.remove('selected'); + rightItem.classList.remove('selected'); + + // Clear selections + this.selectedItems.left = null; + this.selectedItems.right = null; + + // Update matches display + this.updateMatchesDisplay(); + + // Announce match creation + this.controller.accessibility.announceText(`Created match: ${match.leftText} with ${match.rightText}`); + } + + updateMatchesDisplay() { + const matchesList = document.getElementById(`matches-list-${this.index}`); + + if (this.matches.length === 0) { + matchesList.innerHTML = '

No matches yet. Select items from both columns to create matches.

'; + return; + } + + matchesList.innerHTML = this.matches.map((match, index) => ` +
+ + ${match.leftText} + + ${match.rightText} + + +
+ `).join(''); + } + + removeMatch(matchIndex) { + if (matchIndex < 0 || matchIndex >= this.matches.length) return; + + const match = this.matches[matchIndex]; + + // Unmark items + match.leftElement.classList.remove('matched'); + match.rightElement.classList.remove('matched'); + + // Remove match from array + this.matches.splice(matchIndex, 1); + + // Update display + this.updateMatchesDisplay(); + + // Announce removal + this.controller.accessibility.announceText(`Removed match: ${match.leftText} with ${match.rightText}`); + } + + clearSelection() { + if (this.selectedItems.left) { + this.selectedItems.left.classList.remove('selected'); + this.selectedItems.left = null; + } + if (this.selectedItems.right) { + this.selectedItems.right.classList.remove('selected'); + this.selectedItems.right = null; + } + this.controller.accessibility.announceText('Selection cleared'); + } + + navigateItem(currentItem, direction) { + const column = currentItem.classList.contains('left-item') ? 'left' : 'right'; + const items = this.container.querySelectorAll(`.${column}-item`); + const itemsArray = Array.from(items); + const currentIndex = itemsArray.indexOf(currentItem); + + let nextIndex; + if (direction === 'down') { + nextIndex = currentIndex + 1; + if (nextIndex >= itemsArray.length) nextIndex = 0; + } else { + nextIndex = currentIndex - 1; + if (nextIndex < 0) nextIndex = itemsArray.length - 1; + } + + itemsArray[nextIndex].focus(); + } + + navigateToOppositeColumn(currentItem) { + const isLeftColumn = currentItem.classList.contains('left-item'); + const targetColumn = isLeftColumn ? '.right-item' : '.left-item'; + const targetItems = this.container.querySelectorAll(targetColumn); + + if (targetItems.length > 0) { + targetItems[0].focus(); + } + } + + clearMatches() { + // Remove all matches + this.matches.forEach(match => { + match.leftElement.classList.remove('matched'); + match.rightElement.classList.remove('matched'); + }); + + this.matches = []; + this.clearSelection(); + this.updateMatchesDisplay(); + + this.controller.accessibility.announceText('All matches cleared'); + } + + checkAnswers() { + let correct = 0; + let total = this.data.correctPairs.length; + const feedback = document.getElementById(`feedback-${this.index}`); + const results = []; + + // Check each match against correct pairs + this.matches.forEach(match => { + const isCorrect = this.data.correctPairs.some(pair => + pair.leftId === match.leftId && pair.rightId === match.rightId + ); + + if (isCorrect) { + correct++; + match.leftElement.classList.add('correct-match'); + match.rightElement.classList.add('correct-match'); + results.push({ match, correct: true }); + } else { + match.leftElement.classList.add('incorrect-match'); + match.rightElement.classList.add('incorrect-match'); + results.push({ match, correct: false }); + } + }); + + const percentage = total > 0 ? Math.round((correct / total) * 100) : 0; + const missedPairs = this.data.correctPairs.length - this.matches.length; + + if (percentage >= 80 && missedPairs === 0) { + feedback.innerHTML = ` +
+ + Excellent! You got ${correct} out of ${total} matches correct (${percentage}%). + ${this.generateMatchFeedback(results, true)} +
+ `; + this.completed = true; + this.controller.markExerciseCompleted(this.data, this.index); + } else { + feedback.innerHTML = ` +
+ + Good try! You got ${correct} out of ${total} matches correct (${percentage}%). + ${missedPairs > 0 ? `You missed ${missedPairs} pair(s).` : ''} + Try again to get at least 80% with all pairs matched. + ${this.generateMatchFeedback(results, false)} +
+ `; + } + + // Announce result + this.controller.accessibility.announceText(`Exercise results: ${correct} out of ${total} correct matches, ${percentage} percent`); + } + + generateMatchFeedback(results, isSuccess) { + if (isSuccess) { + return '

All matches are correct!

'; + } + + const incorrectResults = results.filter(result => !result.correct); + if (incorrectResults.length === 0) { + return '

All current matches are correct, but you may have missed some pairs.

'; + } + + return ` +
+
Review these matches:
+ +
+ `; + } + + reset() { + // Clear all matches and selections + this.clearMatches(); + + // Remove all styling + const allItems = this.container.querySelectorAll('.matching-item'); + allItems.forEach(item => { + item.classList.remove('selected', 'matched', 'correct-match', 'incorrect-match'); + }); + + // Clear feedback + const feedback = document.getElementById(`feedback-${this.index}`); + feedback.innerHTML = ''; + + this.completed = false; + this.controller.accessibility.announceText('Exercise reset'); + } + + getItemData(id, column) { + const items = column === 'left' ? this.data.leftItems : this.data.rightItems; + return items.find(item => item.id === id); + } + + shuffleArray(array) { + const shuffled = [...array]; + for (let i = shuffled.length - 1; i > 0; i--) { + const j = Math.floor(Math.random() * (i + 1)); + [shuffled[i], shuffled[j]] = [shuffled[j], shuffled[i]]; + } + return shuffled; + } +} + +// Export for global access +window.MatchingExercise = MatchingExercise; \ No newline at end of file