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()}
+
+
+
+
+
+
+ Reset
+
+
+ Check Answers
+
+
+
+
+
+ `;
+
+ // 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 `
+
+ `;
+ }).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 = `
+
+
+ `;
+
+ // 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() : ''}
+
+
+
+
+ Hints
+
+
+ Reset
+
+
+ Check Answers
+
+
+
+
+
+
+ `;
+
+ // 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 `
+
+ `;
+ }).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
+
+ ${this.inputs.map((inputInfo, index) => {
+ if (inputInfo.hint) {
+ return `Blank ${index + 1}: ${inputInfo.hint} `;
+ }
+ return '';
+ }).filter(hint => hint).join('')}
+
+
+ `;
+ 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:
+
+ ${incorrectResults.map(result => `
+
+ Blank ${result.index + 1}:
+ You entered "${result.answer || '(empty)'} ",
+ correct answer is "${result.expected} "
+
+ `).join('')}
+
+
+ `;
+ }
+
+ 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)}
+
+
+
+
+
+
+
+
+
+ Clear All
+
+
+ Reset
+
+
+ Check Answers
+
+
+
+
+
+ `;
+
+ // 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.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:
+
+ ${incorrectResults.map(result => `
+ ${result.match.leftText} ↔ ${result.match.rightText} (incorrect)
+ `).join('')}
+
+
+ `;
+ }
+
+ 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