mirror of
https://github.com/pepaskopec-blip/Graduately.git
synced 2026-10-27 15:14:35 +00:00
2541 lines
132 KiB
Python
2541 lines
132 KiB
Python
#!/usr/bin/env python3
|
||
"""Generate src/english_lessons.inc and src/english_i18n.inc.
|
||
|
||
Curriculum: four-year gymnasium English (RVP G, cizí jazyk, aiming at
|
||
maturita B1 and the CERMAT catalogue). Year 1 is A2, year 2 B1,
|
||
year 3 B1+, year 4 B2 exam skills. Texts are original.
|
||
"""
|
||
|
||
from __future__ import annotations
|
||
|
||
from pathlib import Path
|
||
|
||
ROOT = Path(__file__).resolve().parents[1]
|
||
|
||
|
||
def norm(s: str) -> str:
|
||
out = []
|
||
space = False
|
||
for ch in s.lower():
|
||
if ch.isalnum():
|
||
out.append(ch)
|
||
space = False
|
||
elif ch.isspace():
|
||
if out and not space:
|
||
out.append(" ")
|
||
space = True
|
||
return "".join(out).strip()
|
||
|
||
|
||
def has_word(text: str, word: str) -> bool:
|
||
n = f" {norm(text)} "
|
||
w = norm(word)
|
||
return f" {w} " in n
|
||
|
||
|
||
def words(text: str) -> int:
|
||
n = norm(text)
|
||
return len(n.split()) if n else 0
|
||
|
||
|
||
def c_str(s: str) -> str:
|
||
esc = (
|
||
s.replace("\\", "\\\\")
|
||
.replace('"', '\\"')
|
||
.replace("\n", "\\n")
|
||
.replace("\t", "\\t")
|
||
)
|
||
return f'"{esc}"'
|
||
|
||
|
||
def Q(prompt, options, correct, hint):
|
||
if len(options) != 4:
|
||
raise SystemExit(f"need 4 options: {prompt}")
|
||
if not 0 <= correct < 4:
|
||
raise SystemExit(f"bad correct: {prompt}")
|
||
return (prompt, options, correct, hint)
|
||
|
||
|
||
def G(prompt, answers, meaning):
|
||
return (prompt, answers, meaning)
|
||
|
||
|
||
def W(prompt, model, keys, min_words):
|
||
for key in keys.split("|"):
|
||
if not has_word(model, key):
|
||
raise SystemExit(f"model misses keyword {key!r}: {prompt[:40]}")
|
||
if words(model) < min_words:
|
||
raise SystemExit(f"model shorter than {min_words}: {prompt[:40]}")
|
||
return (prompt, model, keys, min_words)
|
||
|
||
|
||
def S(kicker, title, tip, lines):
|
||
return (kicker, title, tip, lines)
|
||
|
||
|
||
def L(title_cs, title_en, sub_cs, sub_en, slides, **parts):
|
||
return {
|
||
"title_cs": title_cs,
|
||
"title_en": title_en,
|
||
"sub_cs": sub_cs,
|
||
"sub_en": sub_en,
|
||
"slides": slides,
|
||
**parts,
|
||
}
|
||
|
||
|
||
YEARS = [
|
||
{
|
||
"sub_cs": "Osobní život, škola, domov a minulost. Úroveň A2.",
|
||
"sub_en": "Personal life, school, home and the past. Level A2.",
|
||
"lessons": [
|
||
L(
|
||
"Já a moje rodina",
|
||
"Me and my family",
|
||
"Sloveso be, have got a přivlastňovací zájmena. Doplňování a kvíz.",
|
||
"The verb be, have got and possessives. Gaps and a quiz.",
|
||
[
|
||
S(
|
||
"1 / 2 • Be",
|
||
"Kdo jsem",
|
||
"Tip: věk se říká slovesem be. „She has 16 years“ je čechismus.",
|
||
[
|
||
"I am, you are, he/she/it is, we/you/they are.",
|
||
"Zápor a otázka: She isn't tall. Are you from Prague?",
|
||
"Věk, povolání i nálada: I am 16. My mum is a nurse. I am fine.",
|
||
"Přivlastňovací zájmena: my, your, his, her, its, our, their.",
|
||
],
|
||
),
|
||
S(
|
||
"2 / 2 • Have got",
|
||
"Co mám",
|
||
"Tip: have got je britská hovorová vazba pro vlastnictví, ne pro věk.",
|
||
[
|
||
"I've got a younger brother. She hasn't got a pet.",
|
||
"Have you got any cousins? — Yes, I have. / No, I haven't.",
|
||
"V americké angličtině stačí have: I have a brother.",
|
||
"Rodina: parents, siblings, only child, get on well, look like.",
|
||
],
|
||
),
|
||
],
|
||
gaps=[
|
||
G("My sister ___ sixteen.", "is", "Věk: be, ne have."),
|
||
G("___ you got a bike?", "Have", "Otázka s have got."),
|
||
G("This is ___ grandmother. She lives with us.", "our", "Přivlastňovací zájmeno."),
|
||
G("They ___ not from Brno. They are from Olomouc.", "are", "They + are."),
|
||
G("He ___ got a dog, but he has got two cats.", "hasn't|has not", "Zápor have got."),
|
||
],
|
||
quiz=[
|
||
Q(
|
||
"Which sentence is correct?",
|
||
["She has 16 years.", "She is 16 years old.", "She is 16 years.", "She has 16 years old."],
|
||
1,
|
||
"Věk: be + years old.",
|
||
),
|
||
Q(
|
||
"I ___ two cousins and one aunt.",
|
||
["am", "have got", "has got", "is"],
|
||
1,
|
||
"Vlastnictví v 1. osobě: have got.",
|
||
),
|
||
Q(
|
||
"Eva is my sister. ___ room is next to mine.",
|
||
["She", "Her", "His", "Hers"],
|
||
1,
|
||
"Před podstatným jménem je her, ne she.",
|
||
),
|
||
Q(
|
||
"___ your parents at home?",
|
||
["Is", "Are", "Have", "Do"],
|
||
1,
|
||
"Parents je množné číslo: Are.",
|
||
),
|
||
],
|
||
),
|
||
L(
|
||
"Školní den",
|
||
"A school day",
|
||
"Přítomný čas prostý. Čtení a doplňování.",
|
||
"The present simple. Reading and gaps.",
|
||
[
|
||
S(
|
||
"1 / 2 • Present simple",
|
||
"Co dělám pravidelně",
|
||
"Tip: ve 3. osobě jednotného čísla přibývá -s/-es: she watches.",
|
||
[
|
||
"I get up at seven. He gets up at six.",
|
||
"Zápor: I don't like maths. She doesn't eat meat.",
|
||
"Otázka: Do you walk to school? Does she play the piano?",
|
||
"Příslovce četnosti stojí před slovesem: I usually walk. She is always late.",
|
||
],
|
||
),
|
||
S(
|
||
"2 / 2 • Škola",
|
||
"Rozvrh a přestávky",
|
||
"Tip: předmět ve škole je bez členu, když mluvíme obecně: I like biology.",
|
||
[
|
||
"lessons, break, canteen, homework, timetable, subject.",
|
||
"Čas: at eight, at half past twelve, in the morning, on Monday.",
|
||
"because vysvětluje důvod: I like biology because we do experiments.",
|
||
"never / sometimes / often / usually / always.",
|
||
],
|
||
),
|
||
],
|
||
reading=(
|
||
"My school day starts early. I get up at half past six, have breakfast "
|
||
"and catch the tram. Lessons begin at eight. On Monday we have maths, "
|
||
"English and biology. I like biology because we do experiments, but I "
|
||
"don't like maths. We have lunch at half past twelve in the canteen. "
|
||
"After school I do my homework or meet friends. I never go to bed after "
|
||
"ten on a school night."
|
||
),
|
||
readq=[
|
||
Q(
|
||
"What time do lessons begin?",
|
||
["At half past six", "At eight", "At half past twelve", "At ten"],
|
||
1,
|
||
"Lessons begin at eight.",
|
||
),
|
||
Q(
|
||
"Why does the writer like biology?",
|
||
[
|
||
"Because it is easy",
|
||
"Because they do experiments",
|
||
"Because the teacher is funny",
|
||
"Because there is no homework",
|
||
],
|
||
1,
|
||
"because we do experiments.",
|
||
),
|
||
Q(
|
||
"Where do they have lunch?",
|
||
["At home", "On the tram", "In the canteen", "In the park"],
|
||
2,
|
||
"in the canteen.",
|
||
),
|
||
Q(
|
||
"On a school night the writer goes to bed…",
|
||
["after eleven", "at midnight", "never after ten", "before six"],
|
||
2,
|
||
"never go to bed after ten.",
|
||
),
|
||
],
|
||
gaps=[
|
||
G("She ___ (watch) a series every evening.", "watches", "3. osoba: watches."),
|
||
G("We ___ (not go) to school on Sunday.", "don't go|do not go", "Zápor v 1. osobě množného čísla."),
|
||
G("___ he play football on Fridays?", "Does", "Otázka ve 3. osobě."),
|
||
G("I usually ___ (get) up at seven.", "get", "Usually nemění tvar slovesa."),
|
||
],
|
||
),
|
||
L(
|
||
"Víkend ve městě",
|
||
"A weekend in town",
|
||
"Přítomný čas průběhový pro domluvené plány. Poslech.",
|
||
"The present continuous for arrangements. Listening.",
|
||
[
|
||
S(
|
||
"1 / 2 • Continuous",
|
||
"Co právě probíhá a co je domluvené",
|
||
"Tip: I'm meeting Eva at ten je plán, ne jen „potkávám“.",
|
||
[
|
||
"Tvar: am/is/are + -ing. I'm waiting. She isn't coming.",
|
||
"Teď: Look, it is raining. Please be quiet, the baby is sleeping.",
|
||
"Blízký plán: We're having lunch on Saturday. I'm playing volleyball.",
|
||
"Stavová slovesa obvykle průběhový čas nemají: I know, I like, I want.",
|
||
],
|
||
),
|
||
S(
|
||
"2 / 2 • Poslech",
|
||
"Jak poslouchat vzkaz",
|
||
"Tip: nejdřív si přečtěte otázky, pak teprve pusťte nahrávku.",
|
||
[
|
||
"Chyťte jména, časy a místa. Ta se v otázkách opakují.",
|
||
"Nenechte se zastavit jedním slovem. Poslouchejte dál.",
|
||
"I'm meeting, we're going, I'm playing jsou v tomhle vzkazu klíčové.",
|
||
"Na konci bývá prosba: Call me back.",
|
||
],
|
||
),
|
||
],
|
||
listening=(
|
||
"Hi Tom, it's Anna. Are you free on Saturday? I'm meeting Eva at the "
|
||
"station at ten. We're going to the market first, and then we're having "
|
||
"lunch in that new café by the river. In the afternoon I'm playing "
|
||
"volleyball with my class in the park. Do you want to come to the café? "
|
||
"Call me back tonight."
|
||
),
|
||
listenq=[
|
||
Q("Who is Anna meeting?", ["Tom", "Eva", "Her class", "Her mum"], 1, "I'm meeting Eva."),
|
||
Q(
|
||
"Where are they meeting?",
|
||
["At school", "At the station", "In the park", "By the river only"],
|
||
1,
|
||
"at the station at ten.",
|
||
),
|
||
Q(
|
||
"What is Anna doing in the afternoon?",
|
||
["Going to the market", "Having lunch", "Playing volleyball", "Sleeping"],
|
||
2,
|
||
"I'm playing volleyball.",
|
||
),
|
||
Q(
|
||
"What should Tom do?",
|
||
["Buy tickets", "Call her back", "Come to school", "Bring a map"],
|
||
1,
|
||
"Call me back tonight.",
|
||
),
|
||
],
|
||
gaps=[
|
||
G("Listen, the phone ___.", "is ringing", "Děje se to teď."),
|
||
G("We ___ lunch with Eva on Saturday.", "are having|'re having", "Domluvený plán."),
|
||
G("I ___ not coming to the match.", "am|'m", "Zápor: am not."),
|
||
G("She ___ volleyball this afternoon.", "is playing|'s playing", "Domluvená aktivita."),
|
||
],
|
||
),
|
||
L(
|
||
"Můj pokoj",
|
||
"My room",
|
||
"There is / there are a předložky místa. Krátký popis a kvíz.",
|
||
"There is / there are and prepositions. A short description and a quiz.",
|
||
[
|
||
S(
|
||
"1 / 2 • There is",
|
||
"Co v pokoji je",
|
||
"Tip: there is pro jedno, there are pro více. There je formální podmět.",
|
||
[
|
||
"There is a desk under the window. There are two chairs.",
|
||
"Zápor: There isn't a TV. There aren't any posters.",
|
||
"Otázka: Is there a lamp? Are there any books?",
|
||
"Předložky: in, on, under, next to, between, behind, in front of.",
|
||
],
|
||
),
|
||
S(
|
||
"2 / 2 • Psaní",
|
||
"Popis místa",
|
||
"Tip: jděte od velkého k malému, od dveří k oknu.",
|
||
[
|
||
"Začněte velikostí a světlem: small but bright.",
|
||
"Každá věta ať má věc a místo: The bag is under the chair.",
|
||
"Střídejte there is a there are, ať text není seznam.",
|
||
"Na konci jedna osobní věta: I like it because it is quiet.",
|
||
],
|
||
),
|
||
],
|
||
writing=W(
|
||
"Describe your room in at least 30 words. Say what is in it and where things are. Use on and a piece of furniture such as a bed, and mention a window.",
|
||
"My room is small but bright. There is a bed next to the window and a wooden desk under a shelf. My books are on the desk and my school bag is under the chair. There are two posters on the wall. I like the room because it is quiet in the evening.",
|
||
"bed|window|on",
|
||
30,
|
||
),
|
||
quiz=[
|
||
Q(
|
||
"The lamp is ___ the desk.",
|
||
["under", "on", "between", "at"],
|
||
1,
|
||
"Lampa stojí na desce: on.",
|
||
),
|
||
Q(
|
||
"There ___ a big window.",
|
||
["are", "is", "be", "have"],
|
||
1,
|
||
"Jedno okno: there is.",
|
||
),
|
||
Q(
|
||
"There ___ two posters on the wall.",
|
||
["is", "are", "has", "been"],
|
||
1,
|
||
"Dva plakáty: there are.",
|
||
),
|
||
Q(
|
||
"The cat is sleeping ___ the bed.",
|
||
["under", "next", "between to", "at to"],
|
||
0,
|
||
"Pod postelí: under the bed.",
|
||
),
|
||
],
|
||
),
|
||
L(
|
||
"Na trhu",
|
||
"At the market",
|
||
"Počitatelnost, some a any, how much a how many. Čtení a doplňování.",
|
||
"Countability, some and any, how much and how many. Reading and gaps.",
|
||
[
|
||
S(
|
||
"1 / 2 • Množství",
|
||
"Počitatelné a nepočitatelné",
|
||
"Tip: some v kladné větě, any v otázce a záporu. Nabídka je výjimka: Would you like some tea?",
|
||
[
|
||
"Počitatelné: an apple, some apples. Nepočitatelné: some bread, some milk.",
|
||
"How many apples? How much milk?",
|
||
"a little milk, a few rolls, a lot of cheese.",
|
||
"V obchodě: How much is it? It's four euros a kilo.",
|
||
],
|
||
),
|
||
S(
|
||
"2 / 2 • Dialog",
|
||
"Zdvořilá žádost",
|
||
"Tip: Can I have… a I'd like… zní v obchodě přirozeně.",
|
||
[
|
||
"Have you got any bread? — Sorry, we haven't got any today.",
|
||
"We've got some rolls instead.",
|
||
"How many would you like? — Six, please.",
|
||
"Anything else? — No, that's all. Thank you.",
|
||
],
|
||
),
|
||
],
|
||
reading=(
|
||
"On Saturday morning the market by the river is busy. A woman asks, "
|
||
"\"How much is this cheese?\" The seller says, \"It's four euros a kilo.\" "
|
||
"Then she asks, \"Have you got any bread?\" He answers, \"Sorry, we "
|
||
"haven't got any bread today, but we've got some fresh rolls.\" "
|
||
"\"How many rolls do you want?\" \"Six, please, and a little milk.\" "
|
||
"She also buys a few apples. \"Anything else?\" \"No, that's all.\""
|
||
),
|
||
readq=[
|
||
Q(
|
||
"How much is the cheese?",
|
||
["Four euros a piece", "Four euros a kilo", "Six euros", "A little"],
|
||
1,
|
||
"four euros a kilo.",
|
||
),
|
||
Q(
|
||
"What hasn't the seller got?",
|
||
["Rolls", "Milk", "Bread", "Apples"],
|
||
2,
|
||
"haven't got any bread today.",
|
||
),
|
||
Q(
|
||
"How many rolls does the woman want?",
|
||
["Four", "A few", "Six", "A kilo"],
|
||
2,
|
||
"Six, please.",
|
||
),
|
||
Q(
|
||
"Which phrase is an offer of more shopping?",
|
||
["That's all.", "Anything else?", "How much is it?", "A little milk."],
|
||
1,
|
||
"Anything else? nabízí další nákup.",
|
||
),
|
||
],
|
||
gaps=[
|
||
G("We haven't got ___ bread today.", "any", "Zápor: any."),
|
||
G("There are ___ rolls in the bag.", "some", "Kladná věta: some."),
|
||
G("How ___ apples do you want?", "many", "Apples se dají počítat."),
|
||
G("How ___ milk is in the bottle?", "much", "Milk je nepočitatelné."),
|
||
],
|
||
),
|
||
L(
|
||
"Minulé léto",
|
||
"Last summer",
|
||
"Minulý čas prostý, pravidelná i nepravidelná slovesa. Poslech a kvíz.",
|
||
"The past simple, regular and irregular verbs. Listening and a quiz.",
|
||
[
|
||
S(
|
||
"1 / 2 • Past simple",
|
||
"Co se stalo a je dokončené",
|
||
"Tip: zápor a otázka používají did, sloveso zůstává v základním tvaru.",
|
||
[
|
||
"Pravidelná: play → played, visit → visited, try → tried, stop → stopped.",
|
||
"Nepravidelná: go → went, take → took, swim → swam, buy → bought.",
|
||
"I didn't stay in a hotel. Did you visit the island?",
|
||
"Signály: yesterday, last July, ago, in 2019, when I was ten.",
|
||
],
|
||
),
|
||
S(
|
||
"2 / 2 • Vyprávění",
|
||
"Jedna událost za druhou",
|
||
"Tip: then, after that a one day drží příběh pohromadě.",
|
||
[
|
||
"Začněte kdy a kam: Last July we went to Croatia.",
|
||
"Pak doprava, počasí a jedna konkrétní příhoda.",
|
||
"Nepravidelná slovesa se neučí po jednom u testu, ale ve větě.",
|
||
"Na konci dojem: It was the best week of the year.",
|
||
],
|
||
),
|
||
],
|
||
listening=(
|
||
"Last July we went to Croatia. We travelled by train and then by bus "
|
||
"because the flight was too expensive. The weather was hot every day. "
|
||
"I swam in the morning and my brother tried surfing. He fell off the "
|
||
"board a lot, but he loved it. One day we visited a small island. We "
|
||
"didn't stay in a hotel. We stayed with our uncle near the beach. I "
|
||
"took hundreds of photos."
|
||
),
|
||
listenq=[
|
||
Q("Where did they go?", ["Italy", "Croatia", "Greece", "Spain"], 1, "went to Croatia."),
|
||
Q(
|
||
"How did they travel?",
|
||
["By plane", "By train and bus", "By car", "By ferry only"],
|
||
1,
|
||
"by train and then by bus.",
|
||
),
|
||
Q(
|
||
"What did the brother try?",
|
||
["Swimming", "Surfing", "Cooking", "Driving"],
|
||
1,
|
||
"tried surfing.",
|
||
),
|
||
Q(
|
||
"Where did they stay?",
|
||
["In a hotel", "On the island", "With their uncle", "On the train"],
|
||
2,
|
||
"stayed with our uncle.",
|
||
),
|
||
],
|
||
quiz=[
|
||
Q("go → ___", ["goed", "went", "gone", "going"], 1, "go, went, gone."),
|
||
Q("I ___ a lot of photos.", ["taked", "took", "taken", "token"], 1, "take, took, taken."),
|
||
Q("She ___ in the sea every morning.", ["swimmed", "swam", "swum", "swims"], 1, "Minulý tvar swim je swam."),
|
||
Q("We ___ stay in a hotel.", ["don't", "didn't", "wasn't", "haven't"], 1, "Zápor minulého času: didn't + sloveso."),
|
||
],
|
||
),
|
||
L(
|
||
"Zpráva kamarádovi",
|
||
"A message to a friend",
|
||
"Will a going to. Krátká neformální zpráva a doplňování.",
|
||
"Will and going to. A short informal message and gaps.",
|
||
[
|
||
S(
|
||
"1 / 2 • Budoucnost",
|
||
"Plán, nebo rozhodnutí teď",
|
||
"Tip: going to má důkaz nebo plán. Will je rozhodnutí v tu chvíli nebo odhad.",
|
||
[
|
||
"We've got tickets. We're going to leave at six. To je plán.",
|
||
"Look at those clouds. It's going to rain. To je důkaz.",
|
||
"The phone is ringing. I'll answer it. Rozhodnutí teď.",
|
||
"I think I'll stay at home. Will jako názor, ne jistý plán.",
|
||
],
|
||
),
|
||
S(
|
||
"2 / 2 • Zpráva",
|
||
"Neformální styl",
|
||
"Tip: Hi, kontraktované tvary a na konci otázka kamarádovi.",
|
||
[
|
||
"Začněte Hi a jménem, ne Dear Sir.",
|
||
"Napište kdy, co a proč. Jedna věta s because stačí.",
|
||
"I'm going to… je v takové zprávě přirozené.",
|
||
"Konec: Want to come? Write back.",
|
||
],
|
||
),
|
||
],
|
||
writing=W(
|
||
"Write a short message to a friend about next weekend. Use at least 25 words. Say what you are going to do, mention the weekend, and give a reason with because.",
|
||
"Hi Lena, next weekend I am going to visit my cousins in Pilsen. We are going to the cinema on Saturday because a new film is on. On Sunday we are going to cook lunch together. Do you want to come with me? Write back soon.",
|
||
"going|weekend|because",
|
||
25,
|
||
),
|
||
gaps=[
|
||
G("Look at those clouds. It ___ rain.", "is going to|'s going to", "Je vidět důkaz: going to."),
|
||
G("I think I ___ stay at home tonight.", "will|'ll", "Názor v tu chvíli: will."),
|
||
G("The tickets are in my bag. We ___ leave at six.", "are going to|'re going to", "Už je to domluvené."),
|
||
G("Don't worry. I ___ help you with the bags.", "will|'ll", "Rozhodnutí teď: will."),
|
||
],
|
||
),
|
||
L(
|
||
"Test 1. ročníku",
|
||
"Year 1 test",
|
||
"Čtení, poslech, gramatika a krátké psaní. Úroveň A2.",
|
||
"Reading, listening, grammar and a short piece of writing. Level A2.",
|
||
[
|
||
S(
|
||
"1 / 2 • Co test bere",
|
||
"A2 v jedné sadě",
|
||
"Tip: nejdřív otázky, pak text nebo nahrávku. U psaní počítejte slova.",
|
||
[
|
||
"Čtení: najděte v textu čas, místo a důvod, nehádejte z jednoho slova.",
|
||
"Poslech: jména a čísla si poznamenejte hned.",
|
||
"Gramatika: be, přítomné časy, some/any, minulý čas, will a going to.",
|
||
"Psaní: krátký souvislý text, ne jen odrážky.",
|
||
],
|
||
),
|
||
S(
|
||
"2 / 2 • Jak opravovat",
|
||
"Nejčastější čechismy",
|
||
"Tip: po kontrole si přečtěte nápovědy, i když je věta správně.",
|
||
[
|
||
"I am 16, ne I have 16 years.",
|
||
"She likes, ne she like.",
|
||
"Did you went je špatně. Did you go.",
|
||
"There is a book, ne It is a book on the table, když věc uvádíte.",
|
||
],
|
||
),
|
||
],
|
||
reading=(
|
||
"Klara lives in a flat with her parents and a small dog. On weekdays "
|
||
"she walks to school because it is only ten minutes away. She loves "
|
||
"art. Last Friday her class visited a gallery and she bought a poster. "
|
||
"This Saturday she is meeting her cousin at the station. They are going "
|
||
"to a concert in the evening."
|
||
),
|
||
readq=[
|
||
Q(
|
||
"How does Klara get to school?",
|
||
["By tram", "She walks", "Her dad drives", "By train"],
|
||
1,
|
||
"she walks to school.",
|
||
),
|
||
Q(
|
||
"What did she buy at the gallery?",
|
||
["A dog", "A ticket", "A poster", "A flat"],
|
||
2,
|
||
"she bought a poster.",
|
||
),
|
||
Q(
|
||
"Who is she meeting on Saturday?",
|
||
["Her parents", "Her art teacher", "Her cousin", "The singer"],
|
||
2,
|
||
"meeting her cousin.",
|
||
),
|
||
],
|
||
listening=(
|
||
"Hi, it's Marek. I missed you after school. I'm at the sports centre. "
|
||
"The match starts at four, not at three, so don't hurry. Can you bring "
|
||
"my blue jacket? It's on the chair in the kitchen. See you there."
|
||
),
|
||
listenq=[
|
||
Q("Where is Marek?", ["At school", "At the sports centre", "In the kitchen", "On the tram"], 1, "at the sports centre."),
|
||
Q("What time does the match start?", ["At three", "At four", "At five", "At ten"], 1, "starts at four, not at three."),
|
||
Q("What should his friend bring?", ["A ticket", "A blue jacket", "Lunch", "A poster"], 1, "bring my blue jacket."),
|
||
],
|
||
quiz=[
|
||
Q("She ___ coffee.", ["don't like", "doesn't like", "not like", "isn't like"], 1, "3. osoba: doesn't like."),
|
||
Q("There ___ any milk.", ["isn't", "aren't", "hasn't", "don't"], 0, "Milk je jednotné: there isn't."),
|
||
Q("Yesterday we ___ to the lake.", ["go", "went", "gone", "going"], 1, "Minulý tvar go je went."),
|
||
Q("I've got the tickets. We ___ leave at noon.", ["will", "are going to", "did", "are"], 1, "Plán s důkazem: going to."),
|
||
],
|
||
writing=W(
|
||
"Write at least 30 words about your family. Use is or are, and the words family and because.",
|
||
"My family is not very big. I live with my parents and my younger sister. She is twelve and she is funny. We get on well because we both like films. My dad is a driver and my mum is a nurse. I am happy at home.",
|
||
"family|because",
|
||
30,
|
||
),
|
||
),
|
||
],
|
||
},
|
||
{
|
||
"sub_cs": "Cestování, zdraví, práce, média a příroda. Úroveň B1.",
|
||
"sub_en": "Travel, health, work, the media and nature. Level B1.",
|
||
"lessons": [
|
||
L(
|
||
"Na cestách",
|
||
"On the road",
|
||
"Stupňování a minulý čas průběhový. Doplňování a kvíz.",
|
||
"Comparison and the past continuous. Gaps and a quiz.",
|
||
[
|
||
S(
|
||
"1 / 2 • Stupňování",
|
||
"Porovnat dvě věci i celou skupinu",
|
||
"Tip: kratší přídavná jména berou -er/-est, delší more/most.",
|
||
[
|
||
"cheap → cheaper → the cheapest. Expensive → more expensive → the most expensive.",
|
||
"Nepravidelné: good → better → the best, bad → worse → the worst, far → further → the furthest.",
|
||
"as … as: The bus is as fast as the train today.",
|
||
"than stojí po komparativu: This hostel is cheaper than the hotel.",
|
||
],
|
||
),
|
||
S(
|
||
"2 / 2 • Past continuous",
|
||
"Děje, který probíhal, když se stalo něco jiného",
|
||
"Tip: průběhový čas je pozadí, prostý je krátká událost.",
|
||
[
|
||
"I was reading when the train stopped.",
|
||
"While we were waiting, it started to rain.",
|
||
"Zápor: We weren't sleeping. Otázka: Were you driving?",
|
||
"Nepleťte si ho s minulým prostým: I walked home popisuje celou cestu.",
|
||
],
|
||
),
|
||
],
|
||
gaps=[
|
||
G("This ticket is ___ (cheap) than the night train.", "cheaper", "Krátké přídavné jméno: -er."),
|
||
G("It was the ___ (bad) hotel in the town.", "worst", "bad, worse, the worst."),
|
||
G("Prague is not as ___ as London.", "big", "as + základní tvar + as."),
|
||
G("I ___ (read) when the bus suddenly stopped.", "was reading", "Pozadí: past continuous."),
|
||
G("While we ___ (wait), a street musician started to play.", "were waiting", "While + průběhový děj."),
|
||
],
|
||
quiz=[
|
||
Q("far → ___ → the furthest", ["farer", "further", "more far", "farthest only"], 1, "far, further, the furthest. Farthest je taky možné, ale further je v učebnici první."),
|
||
Q(
|
||
"Which sentence is correct?",
|
||
[
|
||
"This café is more cheap than that one.",
|
||
"This café is cheaper than that one.",
|
||
"This café is the cheaper than that one.",
|
||
"This café is cheap than that one.",
|
||
],
|
||
1,
|
||
"cheap → cheaper than.",
|
||
),
|
||
Q(
|
||
"She ___ a map when she missed the stop.",
|
||
["looked", "was looking", "looks", "is looking"],
|
||
1,
|
||
"Dělo se to v okamžiku, kdy zmeškala zastávku.",
|
||
),
|
||
Q(
|
||
"good → better → ___",
|
||
["the goodest", "the better", "the best", "the most good"],
|
||
2,
|
||
"the best.",
|
||
),
|
||
],
|
||
),
|
||
L(
|
||
"U lékaře",
|
||
"At the clinic",
|
||
"Should, must a have to. Čtení letáku a kvíz.",
|
||
"Should, must and have to. A leaflet and a quiz.",
|
||
[
|
||
S(
|
||
"1 / 2 • Modální slovesa",
|
||
"Rada, povinnost, zákaz",
|
||
"Tip: must je silný pocit mluvčího, have to je pravidlo zvenku.",
|
||
[
|
||
"You should rest. You shouldn't go to school tomorrow. To je rada.",
|
||
"I must call the doctor. Mluvčí cítí, že to je nutné.",
|
||
"You have to show your insurance card. To chce ordinace.",
|
||
"Mustn't je zákaz. Don't have to znamená, že to není nutné.",
|
||
],
|
||
),
|
||
S(
|
||
"2 / 2 • Tělo a příznaky",
|
||
"Jak to říct u přepážky",
|
||
"Tip: I've got a sore throat zní přirozeněji než I have pain in throat.",
|
||
[
|
||
"a headache, a sore throat, a cough, a temperature, a rash.",
|
||
"It hurts when I swallow. I feel dizzy.",
|
||
"How long have you had it? — Since Monday. / For three days.",
|
||
"Take these tablets twice a day. Drink plenty of water.",
|
||
],
|
||
),
|
||
],
|
||
reading=(
|
||
"The school clinic is open from seven to three. If you feel ill, you "
|
||
"should tell your teacher first. You have to bring your insurance card. "
|
||
"You must not come to school with a high temperature. Students with a "
|
||
"cough should wear a mask in the waiting room. You don't have to make "
|
||
"an appointment for a small cut, but you should come before noon. The "
|
||
"nurse can give you a painkiller. She can't give you antibiotics."
|
||
),
|
||
readq=[
|
||
Q(
|
||
"What do you have to bring?",
|
||
["A mask", "An insurance card", "Antibiotics", "An appointment"],
|
||
1,
|
||
"have to bring your insurance card.",
|
||
),
|
||
Q(
|
||
"What is forbidden?",
|
||
[
|
||
"Coming with a high temperature",
|
||
"Telling the teacher",
|
||
"Wearing a mask",
|
||
"Coming before noon",
|
||
],
|
||
0,
|
||
"must not come with a high temperature.",
|
||
),
|
||
Q(
|
||
"You don't have to make an appointment if…",
|
||
[
|
||
"you need antibiotics",
|
||
"you have a small cut",
|
||
"you have a temperature",
|
||
"you arrive at four",
|
||
],
|
||
1,
|
||
"for a small cut.",
|
||
),
|
||
Q(
|
||
"What can't the nurse give you?",
|
||
["Water", "A painkiller", "Antibiotics", "A mask"],
|
||
2,
|
||
"She can't give you antibiotics.",
|
||
),
|
||
],
|
||
quiz=[
|
||
Q(
|
||
"You ___ shout in the waiting room. It's a rule.",
|
||
["don't have to", "mustn't", "shouldn't to", "haven't"],
|
||
1,
|
||
"Zákaz: mustn't.",
|
||
),
|
||
Q(
|
||
"You ___ wear a tie. Nobody minds.",
|
||
["mustn't", "don't have to", "must", "should to"],
|
||
1,
|
||
"Není to nutné: don't have to.",
|
||
),
|
||
Q(
|
||
"I've got a headache. You ___ drink some water and rest.",
|
||
["should", "must to", "have", "are"],
|
||
0,
|
||
"Rada: should.",
|
||
),
|
||
Q(
|
||
"Visitors ___ show a card. The clinic asks for it.",
|
||
["have to", "should to", "don't must", "are have"],
|
||
0,
|
||
"Pravidlo zvenku: have to.",
|
||
),
|
||
],
|
||
),
|
||
L(
|
||
"První brigáda",
|
||
"A first job",
|
||
"Předpřítomný čas, for a since. Poslech pohovoru a doplňování.",
|
||
"The present perfect, for and since. A job interview and gaps.",
|
||
[
|
||
S(
|
||
"1 / 2 • Present perfect",
|
||
"Zkušenost a děj až do teď",
|
||
"Tip: have/has + příčestí. Otázka na zkušenost začíná Have you ever…?",
|
||
[
|
||
"I have worked in a café. She has never had a paid job.",
|
||
"Ever v otázce, never v záporném významu: Have you ever used a till?",
|
||
"For three months = jak dlouho. Since May = od kdy.",
|
||
"Just, already, yet: I've just finished. I haven't finished yet.",
|
||
],
|
||
),
|
||
S(
|
||
"2 / 2 • Pohovor",
|
||
"Krátké odpovědi",
|
||
"Tip: odpovězte a přidejte jednu konkrétní větu, ať to není jen yes.",
|
||
[
|
||
"I'm reliable and I get on well with people.",
|
||
"I have looked after my neighbours' children.",
|
||
"I can work on Saturdays, but I can't work on Sunday mornings.",
|
||
"Could you tell me what the shift is?",
|
||
],
|
||
),
|
||
],
|
||
listening=(
|
||
"Manager: Have you ever worked in a shop? Tereza: Not in a shop, but "
|
||
"I have helped in my uncle's bakery since May. Manager: What do you do "
|
||
"there? Tereza: I have served customers and I have learned to use the "
|
||
"till. I haven't baked bread yet. Manager: Can you start next Saturday? "
|
||
"Tereza: Yes. I have already asked my uncle, and he says it's fine. "
|
||
"I can't work on Sunday mornings because I have a match."
|
||
),
|
||
listenq=[
|
||
Q(
|
||
"Where has Tereza helped?",
|
||
["In a supermarket", "In her uncle's bakery", "In a hotel", "At school"],
|
||
1,
|
||
"in my uncle's bakery.",
|
||
),
|
||
Q(
|
||
"Since when?",
|
||
["Since March", "Since May", "Since Saturday", "For a year"],
|
||
1,
|
||
"since May.",
|
||
),
|
||
Q(
|
||
"What hasn't she done yet?",
|
||
["Served customers", "Used the till", "Baked bread", "Asked her uncle"],
|
||
2,
|
||
"I haven't baked bread yet.",
|
||
),
|
||
Q(
|
||
"Why can't she work on Sunday mornings?",
|
||
["The bakery is closed", "She has a match", "She is ill", "She has no till"],
|
||
1,
|
||
"because I have a match.",
|
||
),
|
||
],
|
||
gaps=[
|
||
G("She ___ (live) here since 2019.", "has lived|'s lived", "Since + předpřítomný čas."),
|
||
G("I have known him ___ three years.", "for", "For + délka."),
|
||
G("Have you ___ (be) to London?", "been", "Been to = mít zkušenost."),
|
||
G("We haven't finished ___.", "yet", "Yet v záporu na konci."),
|
||
G("He has ___ eaten, so he isn't hungry.", "already|just", "Already nebo just."),
|
||
],
|
||
),
|
||
L(
|
||
"Recenze filmu",
|
||
"A film review",
|
||
"Vztažné věty who, which a that. Krátká recenze a kvíz.",
|
||
"Relative clauses with who, which and that. A short review and a quiz.",
|
||
[
|
||
S(
|
||
"1 / 2 • Vztažné věty",
|
||
"Která osoba, která věc",
|
||
"Tip: who pro lidi, which pro věci. That jde často pro obojí v definující větě.",
|
||
[
|
||
"The actor who plays the captain is brilliant.",
|
||
"A lighthouse which stands on a black rock.",
|
||
"V definující větě se čárka nepíše: The boy who lives next door.",
|
||
"Nedefinující věta čárku má a that se v ní nepoužívá: Prague, which I love, …",
|
||
],
|
||
),
|
||
S(
|
||
"2 / 2 • Recenze",
|
||
"Názor, ne jen děj",
|
||
"Tip: neprozrazujte konec. Napište, pro koho film je.",
|
||
[
|
||
"Jedna věta o ději, jedna o postavě, jedna o tom, co se povedlo.",
|
||
"I would recommend it to anyone who likes quiet films.",
|
||
"The ending, which I will not describe, stays with you.",
|
||
"Hodnocení ať je konkrétní: the music is too loud, the script is sharp.",
|
||
],
|
||
),
|
||
],
|
||
writing=W(
|
||
"Write a short review of a film or a book in at least 40 words. Use who once and which once, and say who you would recommend it to.",
|
||
"The Lighthouse Keeper is a quiet film which follows a woman on a small island. The actor who plays her hardly speaks, but her face tells the story. The sea, which is almost a character, is beautiful and dangerous. I would recommend it to anyone who likes slow films. The ending is sad but honest.",
|
||
"who|which|recommend",
|
||
40,
|
||
),
|
||
quiz=[
|
||
Q(
|
||
"The nurse ___ helped me was very calm.",
|
||
["which", "who", "where", "whose it"],
|
||
1,
|
||
"Člověk: who.",
|
||
),
|
||
Q(
|
||
"The app ___ crashed is useless.",
|
||
["who", "which", "where", "whom"],
|
||
1,
|
||
"Věc: which.",
|
||
),
|
||
Q(
|
||
"Prague, ___ is my home city, is full of tourists in July.",
|
||
["that", "which", "who", "what"],
|
||
1,
|
||
"S čárkou that nepatří. Which.",
|
||
),
|
||
Q(
|
||
"That's the boy ___ dog ran into the road.",
|
||
["who", "which", "whose", "that his"],
|
||
2,
|
||
"Čí: whose.",
|
||
),
|
||
],
|
||
),
|
||
L(
|
||
"Počasí a výlet",
|
||
"Weather and a trip",
|
||
"Too a enough, will a going to v předpovědi. Čtení a doplňování.",
|
||
"Too and enough, will and going to in a forecast. Reading and gaps.",
|
||
[
|
||
S(
|
||
"1 / 2 • Too / enough",
|
||
"Příliš a dost",
|
||
"Tip: too stojí před přídavným jménem, enough za ním.",
|
||
[
|
||
"It's too cold to swim. The water isn't warm enough.",
|
||
"Too many people, too much rain.",
|
||
"Enough + podstatné jméno: enough water. Nebo za přídavným jménem: old enough.",
|
||
"Not enough time je častější než too little time.",
|
||
],
|
||
),
|
||
S(
|
||
"2 / 2 • Předpověď",
|
||
"Co říct, když se díváte z okna",
|
||
"Tip: mraky, které vidíte, vedou k going to. Odhad bez důkazu k will.",
|
||
[
|
||
"Those clouds are black. It's going to storm.",
|
||
"I think it will be sunny on Sunday. To je jen odhad.",
|
||
"If it rains, we'll stay in the cabin.",
|
||
"Slovník: foggy, chilly, pouring, a heatwave, a breeze.",
|
||
],
|
||
),
|
||
],
|
||
reading=(
|
||
"We wanted to cycle to the lake, but the morning was too foggy to "
|
||
"start. By ten the sun was out and the path was dry enough. There "
|
||
"were too many cyclists near the dam, so we took a quieter road. "
|
||
"We didn't have enough water, which was a mistake. At the lake a "
|
||
"guard said, \"Look at that cloud. It's going to pour. I think the "
|
||
"storm will last an hour.\" We were not fast enough. We got soaked."
|
||
),
|
||
readq=[
|
||
Q(
|
||
"Why didn't they start early?",
|
||
["The bikes were broken", "It was too foggy", "The lake was closed", "They had no map"],
|
||
1,
|
||
"too foggy to start.",
|
||
),
|
||
Q(
|
||
"Why did they change the road?",
|
||
[
|
||
"There were too many cyclists",
|
||
"They were lost",
|
||
"It was pouring",
|
||
"The guard sent them back",
|
||
],
|
||
0,
|
||
"too many cyclists near the dam.",
|
||
),
|
||
Q(
|
||
"What mistake did they make?",
|
||
["They forgot the bikes", "They didn't have enough water", "They started at night", "They swam"],
|
||
1,
|
||
"didn't have enough water.",
|
||
),
|
||
Q(
|
||
"What did the guard predict from the cloud?",
|
||
["Fog", "A heatwave", "Rain", "Snow"],
|
||
2,
|
||
"It's going to pour.",
|
||
),
|
||
],
|
||
gaps=[
|
||
G("The rucksack is ___ heavy to carry.", "too", "Too + přídavné jméno."),
|
||
G("She isn't tall ___ to reach the shelf.", "enough", "Enough za přídavným jménem."),
|
||
G("There is too ___ sugar in this tea.", "much", "Nepočitatelné: too much."),
|
||
G("Look at the sky. It ___ snow.", "is going to|'s going to", "Viditelný důkaz."),
|
||
],
|
||
),
|
||
L(
|
||
"Festival",
|
||
"A festival",
|
||
"Předpřítomný čas proti minulému. Poslech a kvíz.",
|
||
"Present perfect versus past simple. Listening and a quiz.",
|
||
[
|
||
S(
|
||
"1 / 2 • Dva časy",
|
||
"Kdy je děj uzavřený",
|
||
"Tip: jakmile zazní yesterday, last year nebo in 2019, patří minulý čas.",
|
||
[
|
||
"I have been to the festival three times. Neříkám kdy.",
|
||
"I went in 2023. Tehdy pršelo. To už je uzavřené.",
|
||
"Have you ever slept in a tent? — Yes. I slept in one last June.",
|
||
"Been to znamená, že už je člověk zpátky. Gone to znamená, že je pořád pryč.",
|
||
],
|
||
),
|
||
S(
|
||
"2 / 2 • Reportáž",
|
||
"Co se děje na místě",
|
||
"Tip: reportér míchá „už se stalo“ a „bylo to včera večer“.",
|
||
[
|
||
"The gates have just opened.",
|
||
"Last night the main band played for two hours.",
|
||
"Have you seen the lanterns yet?",
|
||
"A local baker has made a cake in the shape of a violin.",
|
||
],
|
||
),
|
||
],
|
||
listening=(
|
||
"This is Nora at the river festival. The gates have just opened and "
|
||
"hundreds of people have already come in. I have never seen so many "
|
||
"lanterns. Last night the main band played for two hours, but tonight's "
|
||
"singer hasn't arrived yet. A local baker has made a cake in the shape "
|
||
"of a violin. I tried a piece yesterday. It was delicious. Have you "
|
||
"ever been here? I came for the first time in 2022, and I have come "
|
||
"back every summer since then."
|
||
),
|
||
listenq=[
|
||
Q(
|
||
"What has just happened?",
|
||
["The band has left", "The gates have opened", "It has started to snow", "The baker has closed"],
|
||
1,
|
||
"The gates have just opened.",
|
||
),
|
||
Q(
|
||
"When did the main band play?",
|
||
["Just now", "Last night", "In 2022", "Every summer"],
|
||
1,
|
||
"Last night the main band played.",
|
||
),
|
||
Q(
|
||
"What hasn't happened yet?",
|
||
["People have come in", "Tonight's singer has arrived", "Nora tried the cake", "The gates opened"],
|
||
1,
|
||
"hasn't arrived yet.",
|
||
),
|
||
Q(
|
||
"When did Nora come for the first time?",
|
||
["Yesterday", "Last night", "In 2022", "This morning"],
|
||
2,
|
||
"for the first time in 2022.",
|
||
),
|
||
],
|
||
quiz=[
|
||
Q(
|
||
"I ___ this play in 2019.",
|
||
["have seen", "saw", "seen", "have saw"],
|
||
1,
|
||
"Rok uzavírá děj: saw.",
|
||
),
|
||
Q(
|
||
"She has ___ to Paris. She is still there.",
|
||
["been", "gone", "went", "going"],
|
||
1,
|
||
"Pořád je pryč: gone.",
|
||
),
|
||
Q(
|
||
"___ you ever slept in a tent?",
|
||
["Did", "Have", "Do", "Were"],
|
||
1,
|
||
"Ever + present perfect: Have you ever…?",
|
||
),
|
||
Q(
|
||
"We ___ the lanterns yesterday.",
|
||
["have seen", "saw", "seen", "have watch"],
|
||
1,
|
||
"Yesterday → past simple.",
|
||
),
|
||
],
|
||
),
|
||
L(
|
||
"Kdyby",
|
||
"If I could",
|
||
"První a druhá podmínková věta. Psaní a doplňování.",
|
||
"First and second conditionals. Writing and gaps.",
|
||
[
|
||
S(
|
||
"1 / 2 • Podmínky",
|
||
"Reálná a hypotetická",
|
||
"Tip: v if větě není will. If it rains, we will stay in.",
|
||
[
|
||
"1. kondicionál: If I finish early, I will call you. Je to možné.",
|
||
"2. kondicionál: If I had a car, I would drive. Teď auto nemám.",
|
||
"V formální druhé podmínce je were: If I were you, I would apologise.",
|
||
"Unless = if not: We'll miss the bus unless we leave now.",
|
||
],
|
||
),
|
||
S(
|
||
"2 / 2 • Vlastní věta",
|
||
"Jedna reálná, jedna vysněná",
|
||
"Tip: would se v if větě druhé podmínky neopakuje na obou stranách špatně. If I would have je chyba.",
|
||
[
|
||
"Napište situaci, která se může stát tento týden.",
|
||
"Pak situaci, která teď pravda není.",
|
||
"Would like není druhá podmínka. To je jen přání: I'd like a tea.",
|
||
"Krátký text ať má oba typy, ať je rozdíl vidět.",
|
||
],
|
||
),
|
||
],
|
||
writing=W(
|
||
"Write at least 35 words. Include one real plan with if and will, and one unreal dream with would. Use the word if twice.",
|
||
"If I finish my project tonight, I will go climbing with Eva on Saturday. We will take the early bus if the weather is fine. If I had more free time, I would learn the guitar. I would also travel by night train if tickets were cheaper. If is a small word with two very different lives.",
|
||
"if|will|would",
|
||
35,
|
||
),
|
||
gaps=[
|
||
G("If it ___ (rain), we will stay in the tent.", "rains", "1. podmínka: přítomný čas v if."),
|
||
G("If I ___ (be) you, I would tell the truth.", "were|was", "Were je přesnější, was se taky slyší."),
|
||
G("She would travel more if she ___ (have) time.", "had", "2. podmínka: minulý tvar."),
|
||
G("We'll be late ___ we hurry.", "unless", "Unless = if not."),
|
||
],
|
||
),
|
||
L(
|
||
"Test 2. ročníku",
|
||
"Year 2 test",
|
||
"Čtení, poslech, gramatika B1 a krátké psaní.",
|
||
"Reading, listening, B1 grammar and a short piece of writing.",
|
||
[
|
||
S(
|
||
"1 / 2 • B1",
|
||
"Co už má držet pohromadě",
|
||
"Tip: u předpřítomného času hledejte ever, yet, since. U minulého yesterday a rok.",
|
||
[
|
||
"Stupňování, past continuous, modální slovesa rady a povinnosti.",
|
||
"Present perfect proti past simple.",
|
||
"Who a which, too a enough, první a druhá podmínka.",
|
||
"Psaní: krátký souvislý názor, ne odrážkový seznam.",
|
||
],
|
||
),
|
||
S(
|
||
"2 / 2 • Strategie",
|
||
"Jedna věta navíc",
|
||
"Tip: v psaní ať je důvod. Because nebo so text zvedne.",
|
||
[
|
||
"U čtení škrtněte odpověď, která v textu vůbec není.",
|
||
"U poslechu si čísla zapište číslicí.",
|
||
"Mustn't není don't have to.",
|
||
"If I would have time je chyba. If I had time, I would…",
|
||
],
|
||
),
|
||
],
|
||
reading=(
|
||
"The night bus to Brno is cheaper than the train, but it is also "
|
||
"slower. Last Friday I was sleeping when the driver stopped at a "
|
||
"dark petrol station. A woman who had missed her connection asked "
|
||
"if she could sit next to me. She has travelled this route since "
|
||
"March because her new job starts at six. If the bus is late, she "
|
||
"has to run. She says she would move closer if flats were cheaper."
|
||
),
|
||
readq=[
|
||
Q(
|
||
"The bus is ___ than the train.",
|
||
["faster and cheaper", "cheaper and slower", "the best", "as fast"],
|
||
1,
|
||
"cheaper, but slower.",
|
||
),
|
||
Q(
|
||
"What was the writer doing when the bus stopped?",
|
||
["Reading", "Sleeping", "Running", "Driving"],
|
||
1,
|
||
"I was sleeping when the driver stopped.",
|
||
),
|
||
Q(
|
||
"Why has the woman travelled this route since March?",
|
||
["She likes petrol stations", "Her job starts early", "Flats are cheap", "She missed a concert"],
|
||
1,
|
||
"her new job starts at six.",
|
||
),
|
||
],
|
||
listening=(
|
||
"Doctor: How long have you had this cough? Adam: Since Sunday. I have "
|
||
"also had a sore throat for two days. Doctor: You should rest and drink "
|
||
"water. You don't have to stay in bed all day, but you mustn't play "
|
||
"football this week. If you still feel ill on Friday, come back."
|
||
),
|
||
listenq=[
|
||
Q("Since when has Adam had the cough?", ["Since Friday", "Since Sunday", "For a month", "Since March"], 1, "Since Sunday."),
|
||
Q("What mustn't he do?", ["Drink water", "Rest", "Play football", "Come back"], 2, "mustn't play football."),
|
||
Q("When should he come back?", ["If he is still ill on Friday", "Every day", "Never", "On Sunday morning"], 0, "If you still feel ill on Friday."),
|
||
],
|
||
quiz=[
|
||
Q("This hostel is ___ than the hotel.", "cheaper / more cheap / the cheapest / cheap".split(" / "), 0, "cheap → cheaper."),
|
||
Q("I have lived here ___ 2020.", ["for", "since", "ago", "during"], 1, "Since + bod v čase."),
|
||
Q("You ___ wear a helmet. It's the law.", ["must to", "have to", "don't have", "should to"], 1, "Pravidlo: have to."),
|
||
Q("If I ___ richer, I would take the train.", ["am", "will be", "were", "would be"], 2, "2. podmínka: were."),
|
||
],
|
||
writing=W(
|
||
"Write at least 35 words about a trip or a job you would like. Use would and because.",
|
||
"I would like to work in a small bookshop by the station because I love quiet mornings. I would talk to customers and I would also read in the breaks. If I had the job, I would cycle there. I have never worked in a shop, but I have helped at school events.",
|
||
"would|because",
|
||
35,
|
||
),
|
||
),
|
||
],
|
||
},
|
||
]
|
||
|
||
|
||
def y3():
|
||
forest = (
|
||
"Last month our class recorded a podcast called The Last Beech. "
|
||
"A ranger said that the trees were thirsty because the summers had "
|
||
"become hotter. She told us that volunteers had planted two thousand "
|
||
"young trees, but she added that many would die unless it rained. "
|
||
"If the town banned cars from the forest road, the air would be cleaner. "
|
||
"If people keep using it as a shortcut, the soil will wash away."
|
||
)
|
||
return {
|
||
"sub_cs": "Společnost, prostředí, média a složitější gramatika. Úroveň B1 až B2.",
|
||
"sub_en": "Society, the environment, the media and harder grammar. Level B1 to B2.",
|
||
"lessons": [
|
||
L(
|
||
"Jak se to vyrábí",
|
||
"How things are made",
|
||
"Trpný rod v přítomnosti a minulosti. Doplňování a kvíz.",
|
||
"The present and past passive. Gaps and a quiz.",
|
||
[
|
||
S(
|
||
"1 / 2 • Passive",
|
||
"Když je důležitější děj než původce",
|
||
"Tip: be + příčestí. Čas nese sloveso be, ne příčestí.",
|
||
[
|
||
"English is spoken here. The window was broken last night.",
|
||
"Původce s by, jen když na něm záleží: The book was written by a nurse.",
|
||
"Modální trpný rod: The form must be signed. It can be recycled.",
|
||
"Nelze trpně vyjádřit každé sloveso. Happen trpný rod nemá.",
|
||
],
|
||
),
|
||
S(
|
||
"2 / 2 • Popis procesu",
|
||
"Od suroviny k věci",
|
||
"Tip: first, then, after that, finally. Původce často chybí, protože je obecný.",
|
||
[
|
||
"The beans are picked by hand. They are dried in the sun.",
|
||
"The jars were labelled yesterday.",
|
||
"Waste paper is collected every Thursday.",
|
||
"A new bridge is being built. To už je průběhový trpný rod, zatím stačí ho poznat.",
|
||
],
|
||
),
|
||
],
|
||
gaps=[
|
||
G("This bread ___ (bake) every morning.", "is baked", "Přítomný trpný rod."),
|
||
G("The letters ___ (send) yesterday.", "were sent", "Minulý trpný rod, množné číslo."),
|
||
G("The poem ___ (write) by a student.", "was written", "Write → written."),
|
||
G("These bottles can ___ (recycle).", "be recycled", "Modální sloveso + be + příčestí."),
|
||
G("The window ___ (not break) by the wind. Someone hit it.", "wasn't broken|was not broken", "Zápor minulého trpného rodu."),
|
||
],
|
||
quiz=[
|
||
Q(
|
||
"Which sentence is passive?",
|
||
[
|
||
"Someone stole my bike.",
|
||
"My bike was stolen.",
|
||
"My bike stole.",
|
||
"Someone was steal my bike.",
|
||
],
|
||
1,
|
||
"was + stolen.",
|
||
),
|
||
Q(
|
||
"The news ___ at ten.",
|
||
["is reading", "are read", "is read", "read"],
|
||
2,
|
||
"News je jednotné: is read.",
|
||
),
|
||
Q(
|
||
"You ___ wear a badge. The factory requires it, in the passive of must.",
|
||
["must be worn a badge", "A badge must be worn", "A badge must worn", "A badge is must wear"],
|
||
1,
|
||
"A badge must be worn.",
|
||
),
|
||
Q(
|
||
"They built the school in 1998. → The school ___ in 1998.",
|
||
["built", "was built", "was build", "has built"],
|
||
1,
|
||
"was built.",
|
||
),
|
||
],
|
||
),
|
||
L(
|
||
"Škola, o které se mluví",
|
||
"A school people talk about",
|
||
"Nepřímá řeč oznamovací. Čtení a kvíz.",
|
||
"Reported statements. Reading and a quiz.",
|
||
[
|
||
S(
|
||
"1 / 2 • Reported speech",
|
||
"Posun času",
|
||
"Tip: said that, told me that. Tell potřebuje osobu, say ne.",
|
||
[
|
||
"„I am tired.“ → She said she was tired.",
|
||
"„I will help.“ → He said he would help.",
|
||
"„I have finished.“ → She told me she had finished.",
|
||
"„I can't come.“ → He said he couldn't come.",
|
||
],
|
||
),
|
||
S(
|
||
"2 / 2 • Kdy čas neposouvat",
|
||
"Pořád to platí",
|
||
"Tip: obecné pravdy a situace, které trvají, často zůstávají v přítomném čase.",
|
||
[
|
||
"The teacher said that water boils at 100 degrees.",
|
||
"She said she lives in Kolín, a pořád tam bydlí.",
|
||
"Zájmena se mění podle smyslu: „my book“ → he said his book.",
|
||
"Today → that day, tomorrow → the next day, yesterday → the day before. V testu to bude jen u jasných vět.",
|
||
],
|
||
),
|
||
],
|
||
reading=(
|
||
"Our head teacher told the local paper that the school was changing. "
|
||
"She said that students would start an hour later next term. One pupil "
|
||
"told the reporter that he was pleased because he hated early buses. "
|
||
"A parent said that she was worried. She said her daughter had joined "
|
||
"three clubs and had very little time. The cook said that lunch would "
|
||
"still be at noon. He added that the menu was going to include more vegetables."
|
||
),
|
||
readq=[
|
||
Q(
|
||
"What did the head teacher say about the start of school?",
|
||
[
|
||
"It would start an hour later",
|
||
"It would start at night",
|
||
"It had already closed",
|
||
"Clubs would end",
|
||
],
|
||
0,
|
||
"students would start an hour later.",
|
||
),
|
||
Q(
|
||
"Why was the pupil pleased?",
|
||
["He liked buses", "He hated early buses", "He wanted less lunch", "He had three clubs"],
|
||
1,
|
||
"because he hated early buses.",
|
||
),
|
||
Q(
|
||
"What had the daughter done?",
|
||
["She had left school", "She had joined three clubs", "She had become a cook", "She had bought a bus"],
|
||
1,
|
||
"had joined three clubs.",
|
||
),
|
||
Q(
|
||
"Lunch, according to the cook, …",
|
||
["would move to the evening", "would still be at noon", "had been cancelled", "was only vegetables"],
|
||
1,
|
||
"would still be at noon.",
|
||
),
|
||
],
|
||
quiz=[
|
||
Q(
|
||
"„I am hungry.“ → She said she ___ hungry.",
|
||
["is", "was", "has", "were be"],
|
||
1,
|
||
"am → was.",
|
||
),
|
||
Q(
|
||
"„I will call.“ → He said he ___ call.",
|
||
["will", "would", "called", "has"],
|
||
1,
|
||
"will → would.",
|
||
),
|
||
Q(
|
||
"Which verb needs a person?",
|
||
["say", "tell", "speak that", "talk that"],
|
||
1,
|
||
"tell somebody.",
|
||
),
|
||
Q(
|
||
"She said, „I can't swim.“ → She said she ___.",
|
||
["can't swim", "couldn't swim", "doesn't swim", "hasn't swum"],
|
||
1,
|
||
"can → could. V nepřímé řeči o minulém rozhovoru.",
|
||
),
|
||
],
|
||
),
|
||
L(
|
||
"Poslední buk",
|
||
"The last beech",
|
||
"Podmínky a slovník prostředí. Poslech podcastu a doplňování.",
|
||
"Conditionals and environment vocabulary. A podcast and gaps.",
|
||
[
|
||
S(
|
||
"1 / 2 • Prostředí",
|
||
"Konkrétní slova, ne jen nature",
|
||
"Tip: drought, soil, volunteer, ban, shortcut. U maturitního tématu zabírají víc než slovo pollution samo.",
|
||
[
|
||
"A drought is a long time without rain. Soil is the earth plants grow in.",
|
||
"Unless it rains, the young trees will die.",
|
||
"If the town banned cars, the air would be cleaner. Teď je nezakázalo, proto would.",
|
||
"If people keep using the road, the soil will wash away. To se může stát.",
|
||
],
|
||
),
|
||
S(
|
||
"2 / 2 • Podcast",
|
||
"Kdo co řekl",
|
||
"Tip: u nepřímé řeči v poslechu si pamatujte sloveso řekl/řekla a pak obsah.",
|
||
[
|
||
"Ranger = strážce lesa.",
|
||
"Young trees were planted, but many may still die.",
|
||
"A shortcut šetří čas a někdy ničí místo.",
|
||
"Čísla si zapište: two thousand.",
|
||
],
|
||
),
|
||
],
|
||
listening=forest,
|
||
listenq=[
|
||
Q(
|
||
"What did the ranger say about the trees?",
|
||
["They were thirsty", "They had been cut down", "They were a shortcut", "They banned cars"],
|
||
0,
|
||
"the trees were thirsty.",
|
||
),
|
||
Q(
|
||
"How many young trees had volunteers planted?",
|
||
["Two hundred", "Two thousand", "Twenty", "None"],
|
||
1,
|
||
"two thousand.",
|
||
),
|
||
Q(
|
||
"The young trees will die unless…",
|
||
["people drive there", "it rains", "the podcast ends", "the soil is sold"],
|
||
1,
|
||
"unless it rained / unless it rains. V textu: unless it rained v nepřímé řeči.",
|
||
),
|
||
Q(
|
||
"What would make the air cleaner?",
|
||
[
|
||
"Banning cars from the forest road",
|
||
"Using the road as a shortcut",
|
||
"Cutting the beeches",
|
||
"Washing the soil",
|
||
],
|
||
0,
|
||
"If the town banned cars.",
|
||
),
|
||
],
|
||
gaps=[
|
||
G("If we ___ (ban) cars here, the air would be cleaner.", "banned", "2. podmínka."),
|
||
G("The soil will wash away ___ people stop using the shortcut.", "unless", "Unless = if not. Pozor: věta chce if not ve významu dokud nepřestanou. Unless people stop = if they don't stop."),
|
||
G("Many young trees ___ (plant) last month.", "were planted", "Minulý trpný rod."),
|
||
G("She said the summers ___ (become) hotter.", "had become", "Posun předpřítomného času."),
|
||
],
|
||
),
|
||
L(
|
||
"Pro a proti",
|
||
"For and against",
|
||
"Stavba úvahy a spojovací výrazy. Esej a kvíz.",
|
||
"Essay structure and linking words. An essay and a quiz.",
|
||
[
|
||
S(
|
||
"1 / 2 • Čtyři kroky",
|
||
"Úvod, dvě strany, závěr",
|
||
"Tip: v úvodu otázku neopakujte doslova. Převeďte ji vlastními slovy.",
|
||
[
|
||
"Úvod: o čem text je a že existují dva pohledy.",
|
||
"Jeden odstavec pro výhody, jeden pro nevýhody.",
|
||
"On the one hand … On the other hand …",
|
||
"Závěr: váš názor. In my opinion, I believe. Nepřidávejte úplně nový argument.",
|
||
],
|
||
),
|
||
S(
|
||
"2 / 2 • Spojky",
|
||
"However není because",
|
||
"Tip: however stojí mezi větami a odděluje se čárkou. Although spojuje věty v jednu.",
|
||
[
|
||
"School uniforms are cheaper. However, they limit personality.",
|
||
"Although uniforms save time, many students hate them.",
|
||
"Because dává důvod. So dává výsledek.",
|
||
"In conclusion shrnuje. Nepíše se In the conclusion.",
|
||
],
|
||
),
|
||
],
|
||
writing=W(
|
||
"Write a for-and-against paragraph of at least 50 words about school uniforms. Use however and because, and finish with your opinion using believe.",
|
||
"School uniforms are a common argument. They are practical because students do not have to decide what to wear, and families spend less money. However, a uniform hides personality and can feel childish at eighteen. Although it makes mornings faster, it does not make lessons better. I believe schools should keep a simple dress code, but they should not force one jacket on everyone.",
|
||
"however|because|believe",
|
||
50,
|
||
),
|
||
quiz=[
|
||
Q(
|
||
"Which linker shows contrast?",
|
||
["because", "however", "so", "for example"],
|
||
1,
|
||
"However staví protiklad.",
|
||
),
|
||
Q(
|
||
"___ uniforms save time, students still complain.",
|
||
["However", "Although", "So", "Believe"],
|
||
1,
|
||
"Although spojuje dvě části jedné věty.",
|
||
),
|
||
Q(
|
||
"Choose the best ending of an essay.",
|
||
[
|
||
"In conclusion, I have no idea.",
|
||
"In conclusion, I believe a simple rule is enough.",
|
||
"Because however so.",
|
||
"To begin with, the essay starts now.",
|
||
],
|
||
1,
|
||
"Závěr má názor, ne nový zmatek.",
|
||
),
|
||
Q(
|
||
"Because introduces…",
|
||
["a result only", "a reason", "a list of names", "a question"],
|
||
1,
|
||
"Because = důvod.",
|
||
),
|
||
],
|
||
),
|
||
L(
|
||
"Kdo to musel být",
|
||
"It must have been",
|
||
"Modální slovesa dedukce. Čtení záhady a kvíz.",
|
||
"Modals of deduction. A short mystery and a quiz.",
|
||
[
|
||
S(
|
||
"1 / 2 • Dedukce",
|
||
"Jisté, možné, vyloučené",
|
||
"Tip: must je skoro jistota, might je možnost, can't je „to přece nejde“.",
|
||
[
|
||
"The lights are on. She must be at home.",
|
||
"He might be in the lab. I'm not sure.",
|
||
"That can't be Eva. Eva is in Vienna this week.",
|
||
"O minulosti: must have left, might have forgotten, can't have seen it.",
|
||
],
|
||
),
|
||
S(
|
||
"2 / 2 • Vynález",
|
||
"Čtěte důkazy, ne nadpis",
|
||
"Tip: u must have hledejte důkaz, který už nejde rozumně popřít.",
|
||
[
|
||
"A notebook with today's date is stronger than a guess.",
|
||
"Can't have znamená, že to odporuje faktu.",
|
||
"Might have nechává dvě možnosti otevřené.",
|
||
"Nepoužívejte can pro dedukci v kladné větě. Can umí, must musí být.",
|
||
],
|
||
),
|
||
],
|
||
reading=(
|
||
"Someone left a strange machine in the physics lab. It was warm, so "
|
||
"it must have been switched on recently. The only key can't have been "
|
||
"used by the caretaker, because he is in hospital. Two students, Nora "
|
||
"and Adam, know the code. Nora might have come back after the club, "
|
||
"but her train ticket shows she was in Pardubice. Adam's notebook is "
|
||
"on the bench and the handwriting matches the label. He must have built it."
|
||
),
|
||
readq=[
|
||
Q(
|
||
"Why must the machine have been on recently?",
|
||
["It was noisy", "It was warm", "It was new", "It was labelled"],
|
||
1,
|
||
"It was warm.",
|
||
),
|
||
Q(
|
||
"Why can't the caretaker have used the key?",
|
||
["He lost it", "He is in hospital", "He hates physics", "He was in Pardubice"],
|
||
1,
|
||
"he is in hospital.",
|
||
),
|
||
Q(
|
||
"Where was Nora?",
|
||
["In the lab", "In Pardubice", "In hospital", "On the bench"],
|
||
1,
|
||
"her ticket shows Pardubice.",
|
||
),
|
||
Q(
|
||
"Who must have built the machine?",
|
||
["The caretaker", "Nora", "Adam", "Nobody"],
|
||
2,
|
||
"The notebook and the handwriting point to Adam.",
|
||
),
|
||
],
|
||
quiz=[
|
||
Q("The window is broken and his bag is gone. He ___ left in a hurry.", ["must have", "must", "can have", "should"], 0, "Minulá skoro jistota: must have left."),
|
||
Q("That ___ be Lea. Lea is abroad.", ["must", "can't", "should", "is"], 1, "Odporuje faktu: can't."),
|
||
Q("I'm not sure. They ___ have missed the bus.", ["must", "can't", "might", "are"], 2, "Možnost: might have."),
|
||
Q("Which sentence is a deduction, not a duty?", ["You must wear gloves.", "She must be tired.", "You must sign this.", "Visitors must wait."], 1, "She must be tired je úsudek."),
|
||
],
|
||
),
|
||
L(
|
||
"Zprávy dne",
|
||
"The news desk",
|
||
"Nepřímé otázky. Poslech rozhovoru a kvíz.",
|
||
"Reported questions. An interview and a quiz.",
|
||
[
|
||
S(
|
||
"1 / 2 • Reported questions",
|
||
"Otázka se v nepřímé řeči narovná",
|
||
"Tip: žádný otazník a pořadí podmětu a slovesa jako v oznamovací větě.",
|
||
[
|
||
"„Where do you live?“ → She asked me where I lived.",
|
||
"„Did you see it?“ → He asked if I had seen it.",
|
||
"Whether a if jsou u zjišťovacích otázek obě možné.",
|
||
"Tázací výraz zůstává: what, where, why, how long.",
|
||
],
|
||
),
|
||
S(
|
||
"2 / 2 • Redakce",
|
||
"Novinář se ptá starosty",
|
||
"Tip: v poslechu odlište otázku reportéra od odpovědi starosty.",
|
||
[
|
||
"Asked if the bridge was safe.",
|
||
"Wondered how long the repairs would take.",
|
||
"The mayor said he didn't know yet.",
|
||
"Slovesa ask, wonder, want to know.",
|
||
],
|
||
),
|
||
],
|
||
listening=(
|
||
"Reporter: Mayor, is the old bridge safe? Mayor: I can't promise that. "
|
||
"An engineer told me that two cables were weak. Reporter: How long will "
|
||
"the repairs take? Mayor: She asked the firm the same question yesterday. "
|
||
"They said they didn't know yet. Reporter: Did anyone complain? Mayor: "
|
||
"A shopkeeper asked me why the bus stop had moved. I asked her if she "
|
||
"could wait until Friday. Reporter: Will you close the bridge? Mayor: "
|
||
"We might. I have asked the police whether they can send officers tonight."
|
||
),
|
||
listenq=[
|
||
Q(
|
||
"What did the engineer tell the mayor?",
|
||
["The bridge was new", "Two cables were weak", "The shop was closed", "Friday was impossible"],
|
||
1,
|
||
"two cables were weak.",
|
||
),
|
||
Q(
|
||
"What didn't the firm know?",
|
||
["The mayor's name", "How long the repairs would take", "Where the bus stop was", "Who the police were"],
|
||
1,
|
||
"They said they didn't know yet. Šlo o délku oprav.",
|
||
),
|
||
Q(
|
||
"What did the shopkeeper ask?",
|
||
[
|
||
"Why the bus stop had moved",
|
||
"If the mayor could swim",
|
||
"Where the cables were made",
|
||
"Whether Friday was a holiday",
|
||
],
|
||
0,
|
||
"why the bus stop had moved.",
|
||
),
|
||
Q(
|
||
"Who might come tonight?",
|
||
["The firm", "The shopkeeper", "Police officers", "The engineer only"],
|
||
2,
|
||
"whether they can send officers tonight.",
|
||
),
|
||
],
|
||
quiz=[
|
||
Q(
|
||
"„Where do you live?“ → He asked me where I ___.",
|
||
["did live", "lived", "do live", "living"],
|
||
1,
|
||
"Pořadí oznamovací věty: where I lived.",
|
||
),
|
||
Q(
|
||
"„Are you ready?“ → She asked if I ___.",
|
||
["was ready", "am I ready", "ready was", "did ready"],
|
||
0,
|
||
"if I was ready.",
|
||
),
|
||
Q(
|
||
"Which sentence is wrong?",
|
||
[
|
||
"He asked where she was.",
|
||
"He asked where was she.",
|
||
"He asked if she was tired.",
|
||
"He wanted to know why she had left.",
|
||
],
|
||
1,
|
||
"V nepřímé otázce není inverze.",
|
||
),
|
||
Q(
|
||
"Whether means about the same as…",
|
||
["because", "if", "however", "whose"],
|
||
1,
|
||
"Whether ≈ if v nepřímé zjišťovací otázce.",
|
||
),
|
||
],
|
||
),
|
||
L(
|
||
"Frázová slovesa v příběhu",
|
||
"Phrasal verbs in a story",
|
||
"Běžná frázová slovesa. Doplňování a kvíz.",
|
||
"Common phrasal verbs. Gaps and a quiz.",
|
||
[
|
||
S(
|
||
"1 / 2 • Částice mění význam",
|
||
"Look není look after",
|
||
"Tip: frázové sloveso se učte jako jednu jednotku, s českým protějškem ve větě.",
|
||
[
|
||
"look after = starat se, look for = hledat, look forward to = těšit se.",
|
||
"give up = vzdát se, find out = zjistit, run out of = dojít zásoba.",
|
||
"turn off = vypnout, take off = sundat nebo vzlétnout, get on = nastoupit i vycházet.",
|
||
"Look forward to je následované -ing: I look forward to seeing you.",
|
||
],
|
||
),
|
||
S(
|
||
"2 / 2 • Příběh",
|
||
"Jedno sloveso, jedna situace",
|
||
"Tip: když částici neznáte, představte si gesto. Off je pryč, up je do konce.",
|
||
[
|
||
"The bus took off není o oblečení. U letadla ano, u autobusu spíš pulled away.",
|
||
"Take off a coat = sundat. Take off = vzlétnout. Kontext rozhoduje.",
|
||
"Get on with somebody = vycházet s někým.",
|
||
"Run out of time je u testu častější než run out time.",
|
||
],
|
||
),
|
||
],
|
||
gaps=[
|
||
G("Can you look ___ my dog this weekend?", "after", "Look after = postarat se."),
|
||
G("We are looking ___ to the trip.", "forward", "Look forward to."),
|
||
G("Don't give ___. The last chapter is the best.", "up", "Give up = vzdát to."),
|
||
G("I need to find ___ who left the note.", "out", "Find out = zjistit."),
|
||
G("We've run ___ of milk.", "out", "Run out of."),
|
||
],
|
||
quiz=[
|
||
Q("Please turn ___ the lights.", ["off", "after", "forward", "out of"], 0, "Turn off = vypnout."),
|
||
Q("She gets ___ well with her neighbours.", ["on", "off", "up", "after"], 0, "Get on with = vycházet."),
|
||
Q("He took ___ his wet coat.", ["off", "up to", "after", "forward"], 0, "Sundat: take off."),
|
||
Q("I look forward to ___ you.", ["see", "seeing", "saw", "seen"], 1, "To je předložka, následuje -ing."),
|
||
],
|
||
),
|
||
L(
|
||
"Test 3. ročníku",
|
||
"Year 3 test",
|
||
"Čtení, poslech, gramatika B1+ a krátká úvaha.",
|
||
"Reading, listening, B1+ grammar and a short argument.",
|
||
[
|
||
S(
|
||
"1 / 2 • B1+",
|
||
"Trpný rod, řeč, podmínky, dedukce",
|
||
"Tip: u trpného rodu hledejte be. U nepřímé otázky žádnou inverzi.",
|
||
[
|
||
"was written, must be signed, is spoken.",
|
||
"said she would, asked where I lived.",
|
||
"If they banned cars, the air would be cleaner.",
|
||
"must have, might have, can't have.",
|
||
],
|
||
),
|
||
S(
|
||
"2 / 2 • Úvaha ve zkratce",
|
||
"However a because v jednom textu",
|
||
"Tip: jedna výhoda, jeden háček, jedna věta s názorem.",
|
||
[
|
||
"Neopakujte zadání první větou.",
|
||
"Phrasal verbs nechte ve správné částici. Look after není look for.",
|
||
"Told me, ne said me.",
|
||
"In conclusion je až na konci, ne v úvodu.",
|
||
],
|
||
),
|
||
],
|
||
reading=(
|
||
"A repair café opened in a former bakery. Broken radios are mended "
|
||
"there on Saturdays. The founder said that people would rather repair "
|
||
"than buy if they were shown how. She told a reporter that twenty "
|
||
"kettles had been saved in March. Visitors have to bring the broken "
|
||
"object, but they don't have to pay. If the café closed, a lot of "
|
||
"working parts would be thrown away."
|
||
),
|
||
readq=[
|
||
Q("What happens to radios there?", ["They are sold", "They are mended", "They are banned", "They are thrown away at once"], 1, "are mended."),
|
||
Q("How many kettles had been saved in March?", ["Twelve", "Twenty", "Two thousand", "None"], 1, "twenty kettles."),
|
||
Q("What would happen if the café closed?", ["Parts would be thrown away", "Radios would be cheaper", "People would pay more", "The bakery would reopen as a shop"], 0, "working parts would be thrown away."),
|
||
],
|
||
listening=(
|
||
"Editor: Did the mayor answer you? Journalist: I asked him whether the "
|
||
"bridge was safe. He said he didn't know. I also asked how long the "
|
||
"repairs would take. He told me that the firm hadn't decided. A resident "
|
||
"asked me why the paper hadn't printed a map. I said we would print one "
|
||
"tomorrow."
|
||
),
|
||
listenq=[
|
||
Q("What did the journalist ask about safety?", ["Whether the bridge was safe", "If the paper was closed", "Where the mayor lived", "Why kettles break"], 0, "whether the bridge was safe."),
|
||
Q("What hadn't the firm done?", ["Decided", "Printed a map", "Closed the paper", "Asked the resident"], 0, "hadn't decided."),
|
||
Q("What did the journalist promise?", ["To close the bridge", "To print a map tomorrow", "To repair the cables", "To interview a baker"], 1, "we would print one tomorrow."),
|
||
],
|
||
quiz=[
|
||
Q("The cake ___ by a student.", ["baked", "was baked", "was bake", "has bake"], 1, "was baked."),
|
||
Q("She asked me where I ___.", ["did live", "lived", "do live", "living"], 1, "where I lived."),
|
||
Q("He ___ be at school. I just saw him there.", ["can't", "must", "mustn't", "should to"], 1, "Skoro jistota: must."),
|
||
Q("Please look ___ the tickets. I can't find them.", ["for", "forward", "after", "up of"], 0, "Look for = hledat. Look after by bylo hlídat."),
|
||
],
|
||
writing=W(
|
||
"In at least 40 words, give one reason for repairing things and one objection. Use because and however.",
|
||
"Repairing things matters because a kettle can work for years after a small fix. However, some people do not have the tools or the time, so a café where volunteers help is a fair idea. I believe every town should have one quiet room for broken objects. It is slower than shopping, but it is kinder.",
|
||
"because|however",
|
||
40,
|
||
),
|
||
),
|
||
],
|
||
}
|
||
|
||
|
||
def y4():
|
||
article = (
|
||
"When the night train from Prague to Berlin returned last spring, "
|
||
"stations filled with people who prefer a bed to a boarding gate. "
|
||
"A single ticket is often more expensive than a flight, which surprises "
|
||
"anyone who thinks trains are always the cheap choice. Still, passengers "
|
||
"say they arrive calmer. They can read, talk and avoid the bright shops "
|
||
"of an airport. Critics point out that a delay of two hours is common "
|
||
"and that the cabins are small. The railway has promised that new carriages "
|
||
"will be added if demand stays high. A student I spoke to had taken the "
|
||
"train three times. She said she would fly only if she missed the evening "
|
||
"departure. For her, the journey is part of the trip, not a problem to be "
|
||
"deleted."
|
||
)
|
||
interview = (
|
||
"Interviewer: Why did you apply to the summer camp in Wales? "
|
||
"Hana: I have worked with children for two years, and I wanted a job "
|
||
"where English is the only language. Interviewer: What would you do if "
|
||
"a child refused to join an activity? Hana: I wouldn't force them. I "
|
||
"would ask why, and I might offer a quieter task. Interviewer: Have you "
|
||
"ever dealt with an emergency? Hana: Yes. Last August a boy cut his foot. "
|
||
"I cleaned the cut and called the nurse. I didn't give him any medicine. "
|
||
"Interviewer: The camp is rainy. Is that a problem? Hana: Not really. "
|
||
"I have already bought boots. I look forward to the hills, although I "
|
||
"know the work will be tiring."
|
||
)
|
||
return {
|
||
"sub_cs": "Maturitní dovednosti: mluvení, formální psaní, čtení, poslech a gramatika. Úroveň B2.",
|
||
"sub_en": "Exam skills: speaking, formal writing, reading, listening and grammar. Level B2.",
|
||
"lessons": [
|
||
L(
|
||
"Maturitní kartička",
|
||
"The speaking card",
|
||
"Strategie ústní zkoušky a kolokace osobních témat. Kvíz a doplňování.",
|
||
"Speaking-exam strategy and personal-topic collocations. A quiz and gaps.",
|
||
[
|
||
S(
|
||
"1 / 2 • Ústní zkouška",
|
||
"Čtyři minuty nejsou román",
|
||
"Tip: katalog CERMAT chce souvislý projev, popis obrázku, porovnání a reakci na otázky. Ne seznam slov.",
|
||
[
|
||
"Úvod jednou větou: I'd like to talk about my town, which is smaller than it looks.",
|
||
"Obecné plus osobní: Many people commute. I cycle, because the centre is close.",
|
||
"Když slovo chybí, opis: the thing you use to open a tin.",
|
||
"Na obrázku: In the foreground, in the background, it looks as if.",
|
||
],
|
||
),
|
||
S(
|
||
"2 / 2 • Kolokace",
|
||
"Make, do, have, take",
|
||
"Tip: české „dělat“ se rozpadá. Do homework, make a mistake, take a photo, have a rest.",
|
||
[
|
||
"Make a decision, make friends, make the bed.",
|
||
"Do the washing-up, do a course, do someone a favour.",
|
||
"Take part in, take care of, take an exam.",
|
||
"Have a look, have a word with, have trouble with.",
|
||
],
|
||
),
|
||
],
|
||
gaps=[
|
||
G("I need to ___ a decision before Friday.", "make", "Make a decision."),
|
||
G("She ___ her homework on the train.", "does|did", "Do homework."),
|
||
G("Can I ___ a photo of the bridge?", "take", "Take a photo."),
|
||
G("Let's ___ a rest. We've walked for hours.", "have", "Have a rest."),
|
||
G("He ___ part in the school play every year.", "takes|took", "Take part in."),
|
||
],
|
||
quiz=[
|
||
Q(
|
||
"You don't know the word kettle. What helps?",
|
||
[
|
||
"Stop the exam",
|
||
"Paraphrase it",
|
||
"Switch to Czech for the rest",
|
||
"Invent a Latin word and insist",
|
||
],
|
||
1,
|
||
"Opis je lepší než ticho.",
|
||
),
|
||
Q(
|
||
"In the foreground means…",
|
||
["at the back", "at the front of the picture", "outside the frame", "in the past"],
|
||
1,
|
||
"Foreground = popředí.",
|
||
),
|
||
Q(
|
||
"Which collocation is right?",
|
||
["do a mistake", "make a mistake", "take a mistake", "have a mistake"],
|
||
1,
|
||
"Make a mistake.",
|
||
),
|
||
Q(
|
||
"A strong speaking answer…",
|
||
[
|
||
"is a list of single words",
|
||
"adds a personal example",
|
||
"translates the question",
|
||
"avoids all verbs",
|
||
],
|
||
1,
|
||
"Obecné plus vlastní příklad.",
|
||
),
|
||
],
|
||
),
|
||
L(
|
||
"Formální e-mail",
|
||
"A formal email",
|
||
"Žádost a stížnost. Psaní a kvíz rejstříku.",
|
||
"A request and a complaint. Writing and a register quiz.",
|
||
[
|
||
S(
|
||
"1 / 2 • Kostra",
|
||
"Komu, proč, co chcete, jak se loučíte",
|
||
"Tip: neznámé jméno → Dear Sir or Madam a Yours faithfully. Známé jméno → Dear Ms Novák a Yours sincerely.",
|
||
[
|
||
"I am writing to apply for… / to complain about…",
|
||
"I would be grateful if you could…",
|
||
"Kontrakce v čistě formálním textu omezte: I am, not I'm.",
|
||
"Na konci celé jméno. Žádné Cheers ani xoxo.",
|
||
],
|
||
),
|
||
S(
|
||
"2 / 2 • Stížnost",
|
||
"Fakta, dopad, žádost",
|
||
"Tip: zlost text oslabuje. Datum, číslo spoje a klidná žádost ho posílí.",
|
||
[
|
||
"The train on 3 May, which I had booked, arrived 90 minutes late.",
|
||
"As a result I missed the interview.",
|
||
"I would like a refund or an explanation.",
|
||
"I look forward to your reply.",
|
||
],
|
||
),
|
||
],
|
||
writing=W(
|
||
"Write a formal email of at least 55 words to a railway company. Complain about a delay. Start with Dear, use would, and end with sincerely or faithfully.",
|
||
"Dear Sir or Madam, I am writing to complain about the night train to Berlin on 3 May. It arrived ninety minutes late, so I missed a morning interview. I would be grateful if you could explain the delay and offer a refund. I have attached my ticket. Please reply to this address. Yours faithfully, Tereza Malá.",
|
||
"dear|would|faithfully",
|
||
55,
|
||
),
|
||
quiz=[
|
||
Q(
|
||
"You do not know the person's name. You end with…",
|
||
["Yours faithfully", "Yours sincerely", "Cheers", "Love"],
|
||
0,
|
||
"Neznámé jméno: faithfully. Po Dear Sir or Madam.",
|
||
),
|
||
Q(
|
||
"Dear Ms Novák, … ___",
|
||
["Yours faithfully", "Yours sincerely", "Hi again", "Bye"],
|
||
1,
|
||
"Jméno znáte: sincerely.",
|
||
),
|
||
Q(
|
||
"Which opening is formal?",
|
||
["Hey!!!", "I am writing to apply for the post.", "I wanna the job.", "What's up"],
|
||
1,
|
||
"I am writing to…",
|
||
),
|
||
Q(
|
||
"A formal request sounds like…",
|
||
[
|
||
"Give me a refund now.",
|
||
"I would be grateful if you could look into this.",
|
||
"You guys messed up.",
|
||
"Send money pls.",
|
||
],
|
||
1,
|
||
"I would be grateful if you could…",
|
||
),
|
||
],
|
||
),
|
||
L(
|
||
"Noční vlak",
|
||
"The night train",
|
||
"Delší čtení ve stylu didaktického testu. Čtyři otázky k článku.",
|
||
"A longer reading in the style of the written paper. Four questions.",
|
||
[
|
||
S(
|
||
"1 / 2 • Čtení u maturity",
|
||
"Nečtěte každé slovo stejně pomalu",
|
||
"Tip: u výběru ze čtyř možností nejdřív zjistěte, na co se otázka ptá, a teprve pak hledejte odstavec.",
|
||
[
|
||
"Hlavní myšlenka bývá v úvodu nebo v závěru, ne v jednom příkladu.",
|
||
"Distraktor často opakuje slovo z textu, ale v jiném vztahu.",
|
||
"Which surprises… uvádí postoj, ne jen fakt o ceně.",
|
||
"Not given v tomhle cvičení není. Jedna možnost je opřená o text.",
|
||
],
|
||
),
|
||
S(
|
||
"2 / 2 • Slovník z kontextu",
|
||
"Boarding gate a carriage",
|
||
"Tip: neznámé slovo ohraničte větou před ním a za ním.",
|
||
[
|
||
"A boarding gate je letištní východ k letadlu. Text ho staví proti posteli ve vlaku.",
|
||
"A carriage je vůz vlaku.",
|
||
"Demand = poptávka. If demand stays high, přidají vozy.",
|
||
"Deleted journey by byl let, který člověk chce mít co nejkratší.",
|
||
],
|
||
),
|
||
],
|
||
reading=article,
|
||
readq=[
|
||
Q(
|
||
"What is the main point?",
|
||
[
|
||
"Flights have been cancelled",
|
||
"Some people choose the night train even when it costs more",
|
||
"Berlin has closed its station",
|
||
"Students may not travel",
|
||
],
|
||
1,
|
||
"Lístek bývá dražší než let, a přesto lidé vlak volí.",
|
||
),
|
||
Q(
|
||
"What surprises some readers?",
|
||
[
|
||
"That a train ticket can cost more than a flight",
|
||
"That stations are empty",
|
||
"That nobody reads",
|
||
"That the train is free",
|
||
],
|
||
0,
|
||
"more expensive than a flight, which surprises…",
|
||
),
|
||
Q(
|
||
"What do critics mention?",
|
||
["Free meals", "Delays and small cabins", "Too many books", "A lack of stations"],
|
||
1,
|
||
"a delay of two hours, cabins are small.",
|
||
),
|
||
Q(
|
||
"The student would fly only if…",
|
||
[
|
||
"the ticket was cheap",
|
||
"she missed the evening departure",
|
||
"the cabins were small",
|
||
"she hated reading",
|
||
],
|
||
1,
|
||
"only if she missed the evening departure.",
|
||
),
|
||
Q(
|
||
"New carriages will be added if…",
|
||
["critics agree", "demand stays high", "flights are banned", "students complain"],
|
||
1,
|
||
"if demand stays high.",
|
||
),
|
||
],
|
||
),
|
||
L(
|
||
"Tábor ve Walesu",
|
||
"A camp in Wales",
|
||
"Delší poslech: pohovor. Pět otázek.",
|
||
"A longer listening: an interview. Five questions.",
|
||
[
|
||
S(
|
||
"1 / 2 • Poslech u maturity",
|
||
"Dvě přehrání stačí, když víte co",
|
||
"Tip: při prvním poslechu chyťte kostru, při druhém doplňte past, podmínku a zápor.",
|
||
[
|
||
"Otázky si přečtěte dřív. Podtrhněte tázací slovo.",
|
||
"Čísla a never/already mění význam celé věty.",
|
||
"Wouldn't force není couldn't.",
|
||
"I didn't give him any medicine je důležité právě proto, že je zápor.",
|
||
],
|
||
),
|
||
S(
|
||
"2 / 2 • Práce s dětmi",
|
||
"Slovník pohovoru",
|
||
"Tip: deal with an emergency, refuse, offer, look forward to.",
|
||
[
|
||
"For two years je délka, ne bod v čase.",
|
||
"A quieter task je alternativa, ne trest.",
|
||
"Although přiznává nevýhodu a názor nemění.",
|
||
"Boots jsou důkaz, že s deštěm počítá. Proto going to / already.",
|
||
],
|
||
),
|
||
],
|
||
listening=interview,
|
||
listenq=[
|
||
Q(
|
||
"Why does Hana want the job?",
|
||
[
|
||
"She has never met children",
|
||
"She wants a job where only English is spoken",
|
||
"She hates hills",
|
||
"She wants to sell boots",
|
||
],
|
||
1,
|
||
"where English is the only language.",
|
||
),
|
||
Q(
|
||
"How long has she worked with children?",
|
||
["For two weeks", "For two years", "Since last August only", "She hasn't"],
|
||
1,
|
||
"for two years.",
|
||
),
|
||
Q(
|
||
"What would she do if a child refused an activity?",
|
||
[
|
||
"Force them",
|
||
"Send them home",
|
||
"Ask why and maybe offer a quieter task",
|
||
"Give them medicine",
|
||
],
|
||
2,
|
||
"I wouldn't force them. I might offer a quieter task.",
|
||
),
|
||
Q(
|
||
"What didn't she do in the emergency?",
|
||
["Clean the cut", "Call the nurse", "Give medicine", "Help the boy"],
|
||
2,
|
||
"I didn't give him any medicine.",
|
||
),
|
||
Q(
|
||
"How does she feel about the rain?",
|
||
[
|
||
"She has already bought boots and still looks forward to the hills",
|
||
"She will refuse the job",
|
||
"She has never seen rain",
|
||
"She hates children",
|
||
],
|
||
0,
|
||
"already bought boots, look forward to the hills.",
|
||
),
|
||
],
|
||
),
|
||
L(
|
||
"Názorová esej",
|
||
"An opinion essay",
|
||
"Struktura názoru. Esej a kvíz o odstavcích.",
|
||
"Opinion-essay structure. An essay and a quiz about paragraphs.",
|
||
[
|
||
S(
|
||
"1 / 2 • Názor",
|
||
"Nejdřív stanovisko, pak důvody",
|
||
"Tip: u názorové eseje čtenář nemá hádat, na čí straně jste. Řekněte to v úvodu.",
|
||
[
|
||
"I believe that… / In my opinion…",
|
||
"First reason, second reason, a short answer to the other side.",
|
||
"Although some people argue that…, I still think…",
|
||
"Závěr ať zní jako závěr, ne jako třetí nový důvod.",
|
||
],
|
||
),
|
||
S(
|
||
"2 / 2 • Rozsah",
|
||
"Radši čtyři hutné věty než deset prázdných",
|
||
"Tip: u písemné práce se počítají slova. Opakování zadání se nepočítá jako myšlenka.",
|
||
[
|
||
"Každý důvod ať má příklad z běžného života.",
|
||
"Nepoužívejte etc. Místo toho jedno konkrétní slovo.",
|
||
"Spojky: firstly, in addition, on the other hand, in conclusion.",
|
||
"Kontraktované tvary jsou v názorové eseji v pořádku, když text není stížnost úřadu.",
|
||
],
|
||
),
|
||
],
|
||
writing=W(
|
||
"Write an opinion of at least 60 words: should students have a gap year before university? Use believe, although and in conclusion.",
|
||
"I believe a gap year can help, but only when it has a plan. Although some students waste the time, others work, travel or look after a relative and return calmer. A year in a job also shows whether a degree is really necessary. On the other hand, a long break can make it harder to study again. In conclusion, a gap year is useful if the person can explain what they will do with it.",
|
||
"believe|although|conclusion",
|
||
60,
|
||
),
|
||
quiz=[
|
||
Q(
|
||
"Where should your opinion appear in this kind of essay?",
|
||
["Only in a footnote", "In the introduction and again at the end", "Never", "Only in the title"],
|
||
1,
|
||
"Úvod i závěr.",
|
||
),
|
||
Q(
|
||
"Although introduces…",
|
||
["a concession", "a list of books", "a greeting", "a date"],
|
||
0,
|
||
"Ústupka: something true that does not win.",
|
||
),
|
||
Q(
|
||
"In conclusion should…",
|
||
["start a brand-new topic", "sum up", "replace the introduction", "ask the examiner a question"],
|
||
1,
|
||
"Shrnutí.",
|
||
),
|
||
Q(
|
||
"Which is the best topic sentence?",
|
||
[
|
||
"Gap year gap year gap year.",
|
||
"A gap year is worth it when it has a clear plan.",
|
||
"Hello my name is and I will write.",
|
||
"Etc. etc. etc.",
|
||
],
|
||
1,
|
||
"Věta, která už nese názor.",
|
||
),
|
||
],
|
||
),
|
||
L(
|
||
"Slovní zásoba okruhů",
|
||
"Topic vocabulary",
|
||
"Kolokace k maturitním tématům. Doplňování a kvíz.",
|
||
"Collocations for the exam topics. Gaps and a quiz.",
|
||
[
|
||
S(
|
||
"1 / 2 • Okruhy",
|
||
"Ne izolovaná slovíčka",
|
||
"Tip: ústní zkouška sahá na osobu, rodinu, domov, školu, volný čas, kulturu, sport, cestování, zdraví, jídlo, služby, práci, společnost a přírodu.",
|
||
[
|
||
"Heavy rain, strong coffee, fast food, junk food. Ne strong rain.",
|
||
"A balanced diet, processed food, a food allergy.",
|
||
"Public transport, rush hour, a traffic jam, a return ticket.",
|
||
"Renewable energy, a carbon footprint, a heatwave, a drought.",
|
||
],
|
||
),
|
||
S(
|
||
"2 / 2 • Společnost a práce",
|
||
"Fráze, které unesou odstavec",
|
||
"Tip: apply for a job, hand in a notice, earn a living, from home.",
|
||
[
|
||
"A gap year, an apprenticeship, a degree, tuition fees.",
|
||
"Freedom of speech, a stereotype, volunteer work.",
|
||
"Break the law, pay a fine, a witness.",
|
||
"Mental health, a check-up, be in pain. Ne have pain in the leg jako jediná možnost: My leg hurts.",
|
||
],
|
||
),
|
||
],
|
||
gaps=[
|
||
G("There was heavy ___ all night.", "rain", "Heavy rain, ne strong rain."),
|
||
G("I'd like a ___ ticket to Brno.", "return", "Return ticket = zpáteční."),
|
||
G("She applied ___ the post of guide.", "for", "Apply for."),
|
||
G("Solar power is ___ energy.", "renewable", "Renewable energy."),
|
||
G("He has a nut ___, so he can't eat the cake.", "allergy", "A food allergy."),
|
||
],
|
||
quiz=[
|
||
Q("Which pair is right?", ["strong rain / heavy coffee", "heavy rain / strong coffee", "fast coffee / junk rain", "a traffic diet"], 1, "Heavy rain, strong coffee."),
|
||
Q("Rush hour is…", ["a quiet morning", "the busiest time to travel", "a kind of ticket", "a school subject"], 1, "Špička."),
|
||
Q("An apprenticeship is…", ["a fine", "training for a job", "a heatwave", "a stereotype"], 1, "Praktická příprava na řemeslo nebo práci."),
|
||
Q("My leg ___.", ["hurts", "is pain", "has hurted", "does hurtness"], 0, "My leg hurts."),
|
||
],
|
||
),
|
||
L(
|
||
"Gramatická ambulance",
|
||
"Grammar clinic",
|
||
"Smíšené jevy k didaktickému testu. Kvíz a doplňování.",
|
||
"Mixed points for the language paper. A quiz and gaps.",
|
||
[
|
||
S(
|
||
"1 / 2 • Články a časy",
|
||
"To, co se v testu sype",
|
||
"Tip: the night train, a night train, night trains. Člen podle toho, jestli čtenář ví který.",
|
||
[
|
||
"I have lived here since May. I lived there in 2018.",
|
||
"If I were you, I would wait. If it rains, we will wait.",
|
||
"The book was written in 1962. People speak English here → English is spoken here.",
|
||
"Used to: I used to walk. Zvyk, který už neplatí. Didn't use to.",
|
||
],
|
||
),
|
||
S(
|
||
"2 / 2 • Věta",
|
||
"Slovosled a shoda",
|
||
"Tip: never dávejte před sloveso, ale za am/is/are: She is never late. She never arrives late.",
|
||
[
|
||
"A little time, a few minutes. Much v záporu a otázce, a lot of v kladné větě je bezpečné.",
|
||
"Suggest + -ing nebo suggest that. Suggest me to go je chyba.",
|
||
"Enjoy, avoid, mind, can't help + -ing.",
|
||
"Want, decide, promise, hope + to.",
|
||
],
|
||
),
|
||
],
|
||
gaps=[
|
||
G("I ___ (live) in this flat since May.", "have lived|'ve lived", "Since → present perfect."),
|
||
G("She suggested ___ (take) the night train.", "taking", "Suggest + -ing."),
|
||
G("If I ___ you, I would book earlier.", "were|was", "If I were you."),
|
||
G("These letters must ___ (sign) today.", "be signed", "Must be + příčestí."),
|
||
G("I ___ to get up at five. I don't anymore.", "used", "Used to."),
|
||
],
|
||
quiz=[
|
||
Q("She enjoys ___.", ["to swim", "swimming", "swim", "swam"], 1, "Enjoy + -ing."),
|
||
Q("I have ___ finished.", ["yet", "just", "since", "ago"], 1, "Just before the participle. Yet belongs at the end in negatives."),
|
||
Q("English ___ all over the building.", ["speaks", "is spoken", "is spoke", "speak"], 1, "Trpný rod."),
|
||
Q("There isn't ___ time.", ["many", "much", "a few", "several"], 1, "Time je nepočitatelné: much."),
|
||
Q("He asked me where ___.", ["did I live", "I lived", "do I lived", "lived I"], 1, "Bez inverze."),
|
||
Q("You ___ shout. The baby is asleep. It is forbidden.", ["don't have to", "mustn't", "might", "used to"], 1, "Zákaz: mustn't."),
|
||
],
|
||
),
|
||
L(
|
||
"Cvičná maturita",
|
||
"A practice paper",
|
||
"Čtení, poslech, jazyková kompetence a krátká písemná práce.",
|
||
"Reading, listening, language in use and a short piece of writing.",
|
||
[
|
||
S(
|
||
"1 / 2 • Celá zkouška",
|
||
"Tři části, jeden mozek",
|
||
"Tip: didaktický test míchá poslech, čtení a jazykovou kompetenci. Písemná práce je zvlášť. Tady je zmenšený model.",
|
||
[
|
||
"Nejdřív přečtěte zadání psaní, ať víte, kolik času si necháte.",
|
||
"U čtení nehledejte stejná slova. Hledejte stejný význam.",
|
||
"U poslechu zápor bývá ta správná odpověď.",
|
||
"Když váháte mezi dvěma, vyhoďte tu, která přidává informaci v textu neslyšenou.",
|
||
],
|
||
),
|
||
S(
|
||
"2 / 2 • Písemná práce",
|
||
"Účel, čtenář, rozsah",
|
||
"Tip: e-mail kamarádovi a stížnost úřadu se nepíšou stejným jazykem. Tady jde o kamaráda.",
|
||
[
|
||
"Řekněte proč píšete hned v první větě.",
|
||
"Dejte tam čas a místo, ať text není mlha.",
|
||
"Jedna věta s because a jedna s if textu pomůžou.",
|
||
"Na konci otázka, která zní jako opravdový zájem.",
|
||
],
|
||
),
|
||
],
|
||
reading=(
|
||
"The town library now lends tools as well as books. Hammers, "
|
||
"sewing machines and a cake tin can be borrowed for a week. "
|
||
"The idea came from a librarian who was tired of people buying "
|
||
"things they would use once. She said the workshop had been "
|
||
"visited by more teenagers than the reading room. Critics argue "
|
||
"that a library should stay quiet. She replies that a library "
|
||
"should be useful. If the experiment works, other branches will "
|
||
"copy it. Users have to return each object clean, and they must "
|
||
"not lend it to anyone else."
|
||
),
|
||
readq=[
|
||
Q(
|
||
"What can people borrow besides books?",
|
||
["Cars", "Tools", "Flats", "Tickets to Berlin"],
|
||
1,
|
||
"Hammers, sewing machines, a cake tin.",
|
||
),
|
||
Q(
|
||
"Why did the idea start?",
|
||
[
|
||
"People were buying things they would use once",
|
||
"The reading room was too popular",
|
||
"Teenagers hated books",
|
||
"The tools were illegal",
|
||
],
|
||
0,
|
||
"buying things they would use once.",
|
||
),
|
||
Q(
|
||
"Who has visited the workshop more, according to her?",
|
||
["Critics", "Teenagers, more than the reading room", "Other branches", "Nobody"],
|
||
1,
|
||
"more teenagers than the reading room.",
|
||
),
|
||
Q(
|
||
"What must users not do?",
|
||
["Return the object", "Clean it", "Lend it to someone else", "Visit the library"],
|
||
2,
|
||
"must not lend it to anyone else.",
|
||
),
|
||
],
|
||
listening=(
|
||
"Welcome to the night-train podcast. The 22:40 to Berlin has been "
|
||
"delayed by forty minutes because a tree is on the line near Ústí. "
|
||
"Passengers who already have a seat can wait in carriage four, where "
|
||
"tea is being served. If you have not checked in, please do it on "
|
||
"your phone. We would be grateful if you kept the corridor clear. "
|
||
"The delay might be shorter. We will know more at ten."
|
||
),
|
||
listenq=[
|
||
Q("How long is the delay?", ["14 minutes", "40 minutes", "4 hours", "22 minutes"], 1, "forty minutes."),
|
||
Q("Why?", ["Snow", "A tree on the line", "A missing driver", "A festival"], 1, "a tree is on the line."),
|
||
Q("Where can passengers with a seat wait?", ["Carriage four", "The airport", "Ústí station only", "The corridor"], 0, "carriage four."),
|
||
Q("What should people without a check-in do?", ["Buy tea", "Check in on their phone", "Leave the train", "Call the mayor"], 1, "do it on your phone."),
|
||
],
|
||
quiz=[
|
||
Q("Tea ___ in carriage four.", ["serves", "is being served", "is serving", "has serve"], 1, "Průběhový trpný rod."),
|
||
Q("We would be grateful if you ___ the corridor clear.", ["keep", "kept", "keeping", "to keep"], 1, "Would be grateful if + minulý tvar."),
|
||
Q("She said the workshop ___ by more teenagers.", ["visited", "had been visited", "has visit", "is visiting"], 1, "Had been visited."),
|
||
Q("Users ___ return the tools clean.", ["have to", "must to", "don't must", "are have"], 0, "Have to."),
|
||
],
|
||
writing=W(
|
||
"Write at least 45 words to a friend. Invite them to borrow something from a library of things. Use because and if.",
|
||
"Hi Adam, the library now lends tools, and I think you would like it because you always need a drill for one afternoon. If you come on Saturday, I will show you how it works. You have to bring your card and return everything clean. We could borrow a cake tin and bake something after. Let me know if you are free.",
|
||
"because|if",
|
||
45,
|
||
),
|
||
),
|
||
],
|
||
}
|
||
|
||
|
||
YEARS.append(y3())
|
||
YEARS.append(y4())
|
||
|
||
|
||
def emit_questions(name, items, lines):
|
||
lines.append(f"static const ChoiceQ {name}[] = {{")
|
||
for prompt, options, correct, _hint in items:
|
||
opts = ", ".join(c_str(o) for o in options)
|
||
lines.append(f" {{{c_str(prompt)}, {{{opts}}}, 4, {correct}}},")
|
||
lines.append("};")
|
||
lines.append(f"static const char *{name}_hints[] = {{")
|
||
for _p, _o, _c, hint in items:
|
||
lines.append(f" {c_str(hint)},")
|
||
lines.append("};")
|
||
lines.append("")
|
||
|
||
|
||
def emit_lesson(year, index, lesson, lines, inits, prefix="en"):
|
||
p = f"{prefix}_y{year}_l{index}"
|
||
lines.append(f"static const NetSlide {p}_slides[] = {{")
|
||
for kicker, title, tip, bullets in lesson["slides"]:
|
||
lines.append(" {")
|
||
lines.append(f" {c_str(kicker)}, {c_str(title)}, {c_str(tip)},")
|
||
lines.append(" {")
|
||
for bullet in bullets:
|
||
lines.append(f" {c_str(bullet)},")
|
||
lines.append(" NULL,")
|
||
lines.append(" },")
|
||
lines.append(" },")
|
||
lines.append("};")
|
||
lines.append("")
|
||
|
||
init = [
|
||
f" .slides = {p}_slides,",
|
||
f" .n_slides = (int)(sizeof {p}_slides / sizeof {p}_slides[0]),",
|
||
]
|
||
|
||
if lesson.get("reading"):
|
||
lines.append(f"static const char *{p}_read = {c_str(lesson['reading'])};")
|
||
lines.append("")
|
||
init.append(f" .reading = {c_str(lesson['reading'])},")
|
||
if lesson.get("readq"):
|
||
emit_questions(f"{p}_readq", lesson["readq"], lines)
|
||
init.append(f" .readq = {p}_readq,")
|
||
init.append(f" .read_hints = {p}_readq_hints,")
|
||
init.append(f" .n_read = (int)(sizeof {p}_readq / sizeof {p}_readq[0]),")
|
||
if lesson.get("listening"):
|
||
lines.append(f"static const char *{p}_listen = {c_str(lesson['listening'])};")
|
||
lines.append("")
|
||
init.append(f" .listening = {c_str(lesson['listening'])},")
|
||
if lesson.get("listenq"):
|
||
emit_questions(f"{p}_listenq", lesson["listenq"], lines)
|
||
init.append(f" .listenq = {p}_listenq,")
|
||
init.append(f" .listen_hints = {p}_listenq_hints,")
|
||
init.append(f" .n_listen = (int)(sizeof {p}_listenq / sizeof {p}_listenq[0]),")
|
||
if lesson.get("gaps"):
|
||
lines.append(f"static const TypedQ {p}_gaps[] = {{")
|
||
for prompt, answers, meaning in lesson["gaps"]:
|
||
lines.append(f" {{{c_str(prompt)}, {c_str(answers)}, {c_str(meaning)}}},")
|
||
lines.append("};")
|
||
lines.append("")
|
||
init.append(f" .gaps = {p}_gaps,")
|
||
init.append(f" .n_gaps = (int)(sizeof {p}_gaps / sizeof {p}_gaps[0]),")
|
||
if lesson.get("writing"):
|
||
prompt, model, keys, min_words = lesson["writing"]
|
||
lines.append(f"static const char *{p}_write[] = {{")
|
||
lines.append(f" {c_str(prompt)},")
|
||
lines.append(f" {c_str(model)},")
|
||
lines.append(f" {c_str(keys)},")
|
||
lines.append(f" {c_str(str(min_words))},")
|
||
lines.append("};")
|
||
lines.append("")
|
||
init.append(f" .write_prompt = {c_str(prompt)},")
|
||
init.append(f" .write_model = {c_str(model)},")
|
||
init.append(f" .write_keys = {c_str(keys)},")
|
||
init.append(f" .write_min = {min_words},")
|
||
if lesson.get("quiz"):
|
||
emit_questions(f"{p}_quiz", lesson["quiz"], lines)
|
||
init.append(f" .quiz = {p}_quiz,")
|
||
init.append(f" .quiz_hints = {p}_quiz_hints,")
|
||
init.append(f" .n_quiz = (int)(sizeof {p}_quiz / sizeof {p}_quiz[0]),")
|
||
|
||
kinds = [k for k in ("reading", "listening", "writing", "gaps", "quiz", "readq", "listenq") if lesson.get(k)]
|
||
if len(kinds) < 2 and "reading" not in kinds and "listening" not in kinds:
|
||
raise SystemExit(f"thin lesson y{year} l{index}: {kinds}")
|
||
inits.append(" {\n" + "\n".join(init) + "\n }")
|
||
|
||
|
||
def main() -> None:
|
||
if len(YEARS) != 4 or any(len(y["lessons"]) != 8 for y in YEARS):
|
||
raise SystemExit("expected 4 years × 8 lessons")
|
||
|
||
body = [
|
||
"/* Generated by scripts/gen-english.py. Do not edit by hand. */",
|
||
"",
|
||
]
|
||
table = ["static const EnLesson en_lessons[EN_YEARS][EN_N] = {"]
|
||
i18n = [
|
||
' {"en_years_sub", "Čtyři ročníky podle osnov gymnázia, od A2 k maturitě.", "Four years of the gymnasium syllabus, from A2 to the exam."},',
|
||
' {"en_year1", "1. ročník", "Year 1"},',
|
||
' {"en_year2", "2. ročník", "Year 2"},',
|
||
' {"en_year3", "3. ročník", "Year 3"},',
|
||
' {"en_year4", "4. ročník", "Year 4"},',
|
||
' {"en_sec_read", "Čtení", "Reading"},',
|
||
' {"en_sec_listen", "Poslech", "Listening"},',
|
||
' {"en_sec_write", "Psaní", "Writing"},',
|
||
' {"en_sec_gap", "Doplňte", "Complete"},',
|
||
' {"en_sec_quiz", "Kvíz", "Quiz"},',
|
||
' {"en_sec_test", "Jazyková část", "Language"},',
|
||
' {"en_play", "Přehrát", "Play"},',
|
||
' {"en_pause", "Pauza", "Pause"},',
|
||
' {"en_resume", "Pokračovat", "Resume"},',
|
||
' {"en_speed", "Rychlost", "Speed"},',
|
||
' {"en_volume", "Hlasitost", "Volume"},',
|
||
' {"en_listen_note", "Text nahrávky zůstává vidět. Přehrání obstará hlas zařízení.", "The recording text stays visible. The device voice plays it."},',
|
||
' {"en_listen_first", "Nejdřív poslech přehrajte.", "Play the recording first."},',
|
||
' {"en_listen_fallback", "Hlas není dostupný. Text si můžete přečíst.", "No voice is available. You can read the text."},',
|
||
' {"en_write_short", "Text je krátký nebo v něm chybí požadovaná slova.", "The text is short or it misses the required words."},',
|
||
' {"en_model", "Vzor", "Model"},',
|
||
' {"en_write_ph", "Pište anglicky…", "Write in English…"},',
|
||
]
|
||
for yi, year in enumerate(YEARS, start=1):
|
||
i18n.append(
|
||
f' {{"en_y{yi}_sub", {c_str(year["sub_cs"])}, {c_str(year["sub_en"])}}},'
|
||
)
|
||
row = []
|
||
for li, lesson in enumerate(year["lessons"], start=1):
|
||
i18n.append(
|
||
f' {{"en_y{yi}_u{li}", {c_str(lesson["title_cs"])}, {c_str(lesson["title_en"])}}},'
|
||
)
|
||
i18n.append(
|
||
f' {{"en_y{yi}_u{li}_sub", {c_str(lesson["sub_cs"])}, {c_str(lesson["sub_en"])}}},'
|
||
)
|
||
inits = []
|
||
emit_lesson(yi, li, lesson, body, inits)
|
||
row.append(inits[0])
|
||
table.append(" {\n" + ",\n".join(row) + "\n },")
|
||
table.append("};")
|
||
table.append("")
|
||
body.extend(table)
|
||
|
||
(ROOT / "src" / "english_lessons.inc").write_text("\n".join(body) + "\n", encoding="utf-8")
|
||
(ROOT / "src" / "english_i18n.inc").write_text("\n".join(i18n) + "\n", encoding="utf-8")
|
||
skills = []
|
||
for yi, year in enumerate(YEARS, start=1):
|
||
bag = set()
|
||
for lesson in year["lessons"]:
|
||
bag.update(k for k in ("reading", "listening", "writing", "gaps", "quiz") if lesson.get(k))
|
||
skills.append(f"year {yi}: {', '.join(sorted(bag))}")
|
||
print("wrote", len(YEARS) * 8, "lessons")
|
||
print("\n".join(skills))
|
||
|
||
|
||
if __name__ == "__main__":
|
||
main()
|