Graduately/i18n.c
pepaskopec-blip 6848b22b93 Add network unit 27 on wireless networks and Wi-Fi security.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-14 13:16:00 +02:00

1449 lines
71 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include "maturita.h"
/* ------------------------------------------------------------------ */
/* i18n */
/* ------------------------------------------------------------------ */
void ex4_fill_sample(GtkWidget *label);
GArray *i18n_binds;
const TrEntry tr_ui[] = {
{"back", "Zpět", "Back"},
{"settings", "Nastavení", "Settings"},
{"settings_title", "Nastavení", "Settings"},
{"mode", "REŽIM", "MODE"},
{"mode_dark", "Tmavý", "Dark"},
{"mode_light", "Světlý", "Light"},
{"theme", "TÉMA", "THEME"},
{"language", "JAZYK", "LANGUAGE"},
{"welcome_body",
"maturita.C je vzdělávací program pro studenty středních škol a "
"gymnázií na přípravu k maturitě.\n\n"
"Program je napsaný v Céčku studentama ze SSŠVT!",
"maturita.C is an educational app for high-school and gymnasium "
"students to prepare for their maturita exam.\n\n"
"The program is written in C by students from SSŠVT!"},
{"continue", "Pokračuj", "Continue"},
{"roadmap_title", "Učební plán", "Learning path"},
{"roadmap_sub", "Vyberte jednotku na cestě a začněte procvičovat.",
"Pick a unit on the path and start practicing."},
{"unit1_sub", "Vyberte cvičení a dokončete je.",
"Choose an exercise and complete it."},
{"check", "Zkontrolovat", "Check"},
{"finish", "Dokončit", "Finish"},
{"show_sample", "Ukázat vzor", "Show sample"},
{"your_answer", "Vaše odpověď…", "Your answer…"},
{"feedback_ok", "Výborně!", "Great!"},
{"feedback_retry", "Ještě to není správně. Zkuste to znovu.",
"Not quite right yet. Try again."},
{"feedback_retry_short", "Ještě to není správně.", "Not quite right yet."},
{"feedback_sentences", "Některé věty nejsou správně. Zkuste to znovu.",
"Some sentences are not correct. Try again."},
{"tip_ss", "Písmeno „ß“ se dá na klávesnici zaměnit za „ss“!",
"You can type “ss” instead of “ß” on the keyboard!"},
{"hint_umlauts",
"Na klávesnici nemáte německé znaky? Můžete psát ä jako ae, ö jako oe, "
"ü jako ue a ß jako ss.",
"No German keyboard? You can type ä as ae, ö as oe, ü as ue and ß as "
"ss."},
{"sample_fmt", "Otázka: %s\nVzor: %s (česky: %s)",
"Question: %s\nSample: %s (English: %s)"},
{"sub_dialog", "Doplňte chybějící slova v dialogu.",
"Fill in the missing words in the dialogue."},
{"sub_assembly", "Přetáhněte slova do správného pořadí.",
"Drag the words into the correct order."},
{"sub_choice_num", "Vyberte správnou číslovku.",
"Choose the correct numeral."},
{"sub_free", "Odpovězte vlastními slovy, poté klikněte na Dokončit.",
"Answer in your own words, then click Finish."},
{"sub_zahlen", "Vyberte správné slovo pro dané číslo.",
"Choose the correct word for the given number."},
{"sub_wieviel", "Spočítejte předměty a vyberte počet.",
"Count the items and choose the amount."},
{"sub_reihe", "Doplňte chybějící číslovku.",
"Fill in the missing numeral."},
{"sub_verb", "Vyberte správný tvar slovesa.",
"Choose the correct verb form."},
{"sub_wer", "Vyberte správné tázací slovo.",
"Choose the correct question word."},
{"sub_bild", "Vyberte správný tvar slovesa podle obrázku.",
"Choose the correct verb form for the picture."},
{"sub_gruss", "Roztřiďte pozdravy na pozdravy a rozloučení.",
"Sort the phrases into greetings and farewells."},
{"sub_land", "Přiřaďte symboly ke správné zemi.",
"Match the symbols to the correct country."},
{"Vokabeltraining", NULL, "Vocabulary training"},
{"sub_translate",
"Přeložte slovo. Špatná odpověď se vrátí na konec.",
"Translate the word. Wrong answers come back at the end."},
{"trans_wrong", "Špatně. Správně: %s", "Wrong. Correct: %s"},
{"trans_incomplete", "Nepřesné – něco chybí.", "Almost – something is missing."},
{"trans_progress", "Hotovo: %d / %d", "Done: %d / %d"},
{"trans_done", "Hotovo! Zvládl(a) jsi všechna slova.",
"Done! You mastered all the words."},
{"assign_hint",
"Vyberte skupinu a klikněte na kartu. Kliknutím na kartu ve skupině "
"ji vrátíte zpět.",
"Pick a group and click a card. Click a card inside a group to send "
"it back."},
{"unit2_sub", "Vyberte cvičení a dokončete je.",
"Choose an exercise and complete it."},
{"Bei uns zu Hause", "Bei uns zu Hause", "At Home with Us"},
{"unit3_sub", "Vyberte cvičení a dokončete je.",
"Choose an exercise and complete it."},
{"sub3_pair", "Přiřaďte každému slovu jeho protějšek.",
"Match each word with its counterpart."},
{"sub3_poss", "Doplňte přivlastňovací zájmena (1. pád).",
"Fill in the possessive pronouns (nominative)."},
{"sub3_haustier", "Doplňte ein/kein ve správném tvaru.",
"Fill in ein/kein in the correct form."},
{"sub3_buchst", "Doplňte chybějící písmena.",
"Fill in the missing letters."},
{"sub3_marco", "Doplňte slova z nabídky.",
"Fill in the words from the box."},
{"sub3_sort", "Roztřiďte slova do dvou skupin.",
"Sort the words into two groups."},
{"sub3_tabelle", "Doplňte přivlastňovací zájmena do tabulky.",
"Fill the possessive pronouns into the table."},
{"sub3_akk", "Doplňte přivlastňovací zájmena (4. pád).",
"Fill in the possessive pronouns (accusative)."},
{"sub3_nicht", "Vyberte kein/keine/keinen/nicht.",
"Choose kein/keine/keinen/nicht."},
{"sub3_satz", "Sestavte správné věty.",
"Build the correct sentences."},
{"sub3_sehen", "Napište větu „Ich sehe…“.",
"Write an “Ich sehe…” sentence."},
{"sub3_wem", "Komu to patří? Doplňte zájmeno.",
"Whose is it? Fill in the pronoun."},
{"sub3_gibt", "Doplňte „Es gibt“ + ein/eine/einen.",
"Fill in “Es gibt” + ein/eine/einen."},
{"sub3_saetze", "Doplňte věty podle vzoru.",
"Complete the sentences following the example."},
{"sub3_wochen", "Doplňte chybějící písmena.",
"Fill in the missing letters."},
{"wordbank", "Nabídka slov:", "Word bank:"},
{"sample_line", "Příklad: %s", "Sample: %s"},
{"sub_verben", "Doplňte sloveso ve správném tvaru.",
"Fill in the verb in the correct form."},
{"sub_ausin", "Vyberte správnou předložku: aus nebo in.",
"Choose the correct preposition: aus or in."},
{"sub_sprich", "Doplňte sloveso „sprechen“.",
"Fill in the verb “sprechen”."},
{"sub_nation", "Doplňte národnost – použijte slova z nabídky.",
"Fill in the nationality – use the words in the box."},
{"sub_woher", "Odkud lidé pocházejí? Napište zemi.",
"Where are the people from? Type the country."},
{"sub_laender", "Doplňte chybějící písmena v názvech zemí.",
"Type the full country name (the missing letters are shown as _)."},
{"sub_verb2", "Vyberte správný tvar slovesa.",
"Choose the correct verb form."},
{"sub_euro", "Napište částku slovy.",
"Write the amount in words."},
{"sub_wortsuchen", "Najděte skryté slovo a napište ho.",
"Find the hidden word and type it."},
{"sub_ordne", "Přiřaďte správné tázací slovo a odpověď.",
"Match each phrase with the right question word and answer."},
{"sub_luecke", "Doplňte chybějící slova do textu.",
"Fill the missing words into the text."},
{"sub_verbinde", "Spojte každé podstatné jméno se správným slovesem.",
"Match each noun with the right verb."},
{"sub_zahlpaar", "Spojte čísla s německými slovy.",
"Match the numbers with the German words."},
{"sub_steckbrief", "Doplňte údaje o sobě.",
"Complete the information about yourself."},
{"sub_berufe", "Hádejte povolání dřív, než bude oběšenec hotový.",
"Guess each job before the hangman drawing is finished."},
{"sub_bistdu", "Odpovězte podle vlajky – jakou máte národnost?",
"Answer according to the flag – what is your nationality?"},
{"hm_progress", "Slovo %d / %d", "Word %d / %d"},
{"hm_hint", "Nápověda", "Hint"},
{"hm_wrong", "Slovo je uhodnuto!", "Word guessed!"},
{"hm_fail", "Oběšenec! Slovo bylo „%s“.",
"Hanged! The word was “%s”."},
{"hm_retry", "Zkusit znovu", "Try again"},
{"hm_done", "Výborně! Uhodli jste všechna povolání.",
"Great! You guessed all the jobs."},
{"hm_guess", "Hádejte písmeno", "Guess a letter"},
{"stats", "Statistiky", "Statistics"},
{"stats_title", "Statistiky", "Statistics"},
{"stats_sub", "Přehled vašeho pokroku.", "Overview of your progress."},
{"stats_ex_label", "Cvičení", "Exercises"},
{"stats_pct_label", "Hotovo", "Done"},
{"stats_units_label", "Jednotky", "Units"},
{"stats_section", "Předměty", "Subjects"},
{"stats_locked", "Zamčeno", "Locked"},
{"stats_complete", "Hotovo", "Complete"},
{"stats_ex_fmt", "%d / %d", "%d / %d"},
{"stats_pct_fmt", "%d %%", "%d %%"},
{"stats_units_fmt", "%d / %d", "%d / %d"},
{"subjects_title", "Předměty", "Subjects"},
{"Český jazyk a literatura", "Český jazyk a literatura",
"Czech Language and Literature"},
{"Občanská nauka", "Občanská nauka", "Civics"},
{"English", "English", "English"},
{"Deutsch", "Deutsch", "Deutsch"},
{"Matematika", "Matematika", "Mathematics"},
{"Fyzika", "Fyzika", "Physics"},
{"Základy Přírodopisných věd", "Základy Přírodopisných věd",
"Fundamentals of Natural Sciences"},
{"Technická grafika", "Technická grafika", "Technical Drawing"},
{"Prezentační grafika", "Prezentační grafika", "Presentation Graphics"},
{"Správa počítačových sítí", "Správa počítačových sítí",
"Computer Network Administration"},
{"Programování", "Programování", "Programming"},
{"Technické vybavení", "Technické vybavení", "Computer Hardware"},
{"Programové vybavení", "Programové vybavení", "Software"},
{"net_sub", "Vyberte lekci na cestě a začněte procvičovat.",
"Pick a unit on the path and start practicing."},
{"net_unit1", "Výpočet IP adres", "IP Address Calculation"},
{"net_unit1_sub", "4 snímky s postupem a pak cvičení.",
"4 slides with the method, then an exercise."},
{"net_ex_title", "Cvičení: výpočet IP adres",
"Exercise: IP address calculation"},
{"net_unit2", "Základní pojmy a rozdělení sítí",
"Basic concepts and network types"},
{"net_unit2_sub", "5 snímků s pojmy a pak kvíz.",
"5 slides with the concepts, then a quiz."},
{"net_ex2_title", "Kvíz: základní pojmy sítí",
"Quiz: basic networking concepts"},
{"net_unit3", "Sítě Klient–Server a Cloud",
"Client–Server networks and Cloud"},
{"net_unit3_sub", "4 snímky o serverech a cloudu a pak kvíz.",
"4 slides about servers and cloud, then a quiz."},
{"net_ex3_title", "Kvíz: klient–server a cloud",
"Quiz: client–server and cloud"},
{"net_unit4", "Přenos dat a jeho zabezpečení",
"Data transmission and security"},
{"net_unit4_sub", "4 snímky o přenosu a zabezpečení a pak kvíz.",
"4 slides about transmission and security, then a quiz."},
{"net_ex4_title", "Kvíz: přenos dat a zabezpečení",
"Quiz: data transmission and security"},
{"net_unit5", "Signály a modulace",
"Signals and modulation"},
{"net_unit5_sub", "4 snímky o signálech a modulaci a pak kvíz.",
"4 slides about signals and modulation, then a quiz."},
{"net_ex5_title", "Kvíz: signály a modulace",
"Quiz: signals and modulation"},
{"net_unit6", "Cesta, kanál a okruh",
"Path, channel and circuit"},
{"net_unit6_sub", "4 snímky o cestě, kanálu a okruhu a pak kvíz.",
"4 slides about path, channel and circuit, then a quiz."},
{"net_ex6_title", "Kvíz: cesta, kanál a okruh",
"Quiz: path, channel and circuit"},
{"net_unit7", "Multiplex a směry přenosu",
"Multiplexing and transmission directions"},
{"net_unit7_sub", "4 snímky o multiplexu a směrech a pak kvíz.",
"4 slides about multiplexing and directions, then a quiz."},
{"net_ex7_title", "Kvíz: multiplex a směry přenosu",
"Quiz: multiplexing and transmission directions"},
{"net_unit8", "Přepojování",
"Switching"},
{"net_unit8_sub", "4 snímky o přepojování a pak kvíz.",
"4 slides about switching, then a quiz."},
{"net_ex8_title", "Kvíz: přepojování",
"Quiz: switching"},
{"net_unit9", "Vrstevnaté modely a protokoly",
"Layered models and protocols"},
{"net_unit9_sub", "4 snímky o vrstvách a protokolech a pak kvíz.",
"4 slides about layers and protocols, then a quiz."},
{"net_ex9_title", "Kvíz: vrstevnaté modely a protokoly",
"Quiz: layered models and protocols"},
{"net_unit10", "Model ISO/OSI a TCP/IP",
"ISO/OSI and TCP/IP models"},
{"net_unit10_sub", "3 snímky o ISO/OSI a TCP/IP a pak kvíz.",
"3 slides about ISO/OSI and TCP/IP, then a quiz."},
{"net_ex10_title", "Kvíz: ISO/OSI a TCP/IP",
"Quiz: ISO/OSI and TCP/IP"},
{"net_unit11", "Podrobný rozbor 7 vrstev ISO/OSI",
"Detailed review of the 7 ISO/OSI layers"},
{"net_unit11_sub", "8 snímků o jednotlivých vrstvách a pak kvíz.",
"8 slides about each layer, then a quiz."},
{"net_ex11_title", "Kvíz: 7 vrstev ISO/OSI",
"Quiz: 7 ISO/OSI layers"},
{"net_unit12", "Základy architektury TCP/IP",
"Basics of TCP/IP architecture"},
{"net_unit12_sub", "6 snímků o TCP/IP a protokolech a pak kvíz.",
"6 slides about TCP/IP and protocols, then a quiz."},
{"net_ex12_title", "Kvíz: architektura TCP/IP",
"Quiz: TCP/IP architecture"},
{"net_unit13", "Topologie sítě",
"Network topologies"},
{"net_unit13_sub", "4 snímky o sběrnici, hvězdě a kruhu a pak kvíz.",
"4 slides about bus, star and ring, then a quiz."},
{"net_ex13_title", "Kvíz: topologie sítě",
"Quiz: network topologies"},
{"net_unit14", "Optika",
"Fiber optics"},
{"net_unit14_sub", "5 snímků o optických vláknech a pak kvíz.",
"5 slides about optical fibers, then a quiz."},
{"net_ex14_title", "Kvíz: optika",
"Quiz: fiber optics"},
{"net_unit15", "Ochrana a montáž optiky",
"Fiber protection and installation"},
{"net_unit15_sub", "3 snímky o ochraně a montáži a pak kvíz.",
"3 slides about protection and installation, then a quiz."},
{"net_ex15_title", "Kvíz: ochrana a montáž optiky",
"Quiz: fiber protection and installation"},
{"net_unit16", "Metody přístupu",
"Access methods"},
{"net_unit16_sub", "4 snímky o kolizích a CSMA a pak kvíz.",
"4 slides about collisions and CSMA, then a quiz."},
{"net_ex16_title", "Kvíz: metody přístupu",
"Quiz: access methods"},
{"net_unit17", "Aktivní prvky",
"Active network devices"},
{"net_unit17_sub", "7 snímků o hubu, switchi a routeru a pak kvíz.",
"7 slides about hubs, switches and routers, then a quiz."},
{"net_ex17_title", "Kvíz: aktivní prvky",
"Quiz: active network devices"},
{"net_unit18", "Switch (podrobně)",
"Switch in detail"},
{"net_unit18_sub", "5 snímků o CAM a přepínání a pak kvíz.",
"5 slides about CAM and switching modes, then a quiz."},
{"net_ex18_title", "Kvíz: switch podrobně",
"Quiz: switch in detail"},
{"net_unit19", "Směrování (Routing)",
"Routing"},
{"net_unit19_sub", "7 snímků o směrovacích algoritmech a pak kvíz.",
"7 slides about routing algorithms, then a quiz."},
{"net_ex19_title", "Kvíz: směrování",
"Quiz: routing"},
{"net_unit20", "Směrovač a brána",
"Router and gateway"},
{"net_unit20_sub", "7 snímků o routeru a gateway a pak kvíz.",
"7 slides about routers and gateways, then a quiz."},
{"net_ex20_title", "Kvíz: směrovač a brána",
"Quiz: router and gateway"},
{"net_unit21", "Adresy a rámce v ethernetu",
"Ethernet addresses and frames"},
{"net_unit21_sub", "8 snímků o MAC a typech rámců a pak kvíz.",
"8 slides about MAC and frame types, then a quiz."},
{"net_ex21_title", "Kvíz: ethernet adresy a rámce",
"Quiz: Ethernet addresses and frames"},
{"net_unit22", "Paket IP",
"IP packet"},
{"net_unit22_sub", "8 snímků o IP datagramu a hlavičce a pak kvíz.",
"8 slides about the IP datagram and header, then a quiz."},
{"net_ex22_title", "Kvíz: paket IP",
"Quiz: IP packet"},
{"net_unit23", "ICMP",
"ICMP"},
{"net_unit23_sub", "5 snímků o ICMP zprávách a traceroute a pak kvíz.",
"5 slides about ICMP messages and traceroute, then a quiz."},
{"net_ex23_title", "Kvíz: ICMP",
"Quiz: ICMP"},
{"net_unit24", "ARP",
"ARP"},
{"net_unit24_sub", "5 snímků o ARP/RARP a cache a pak kvíz.",
"5 slides about ARP/RARP and cache, then a quiz."},
{"net_ex24_title", "Kvíz: ARP",
"Quiz: ARP"},
{"net_unit25", "TCP a UDP",
"TCP and UDP"},
{"net_unit25_sub", "6 snímků o transportní vrstvě a pak kvíz.",
"6 slides about the transport layer, then a quiz."},
{"net_ex25_title", "Kvíz: TCP a UDP",
"Quiz: TCP and UDP"},
{"net_unit26", "Aplikační protokoly",
"Application protocols"},
{"net_unit26_sub", "7 snímků o portech a službách a pak kvíz.",
"7 slides about ports and services, then a quiz."},
{"net_ex26_title", "Kvíz: Aplikační protokoly",
"Quiz: Application protocols"},
{"net_unit27", "Bezdrátové sítě",
"Wireless networks"},
{"net_unit27_sub", "8 snímků o družicích, Wi-Fi a zabezpečení a pak kvíz.",
"8 slides about satellites, Wi-Fi and security, then a quiz."},
{"net_ex27_title", "Kvíz: Bezdrátové sítě",
"Quiz: Wireless networks"},
{"net_quiz_intro",
"Vyberte u každé otázky jednu správnou odpověď a stiskněte Zkontrolovat.",
"Choose one correct answer for each question and press Check."},
{"net_quiz2_head", "Kvíz k základním pojmům sítí",
"Quiz on basic networking concepts"},
{"net_quiz3_head", "Kvíz ke klient–server a cloudu",
"Quiz on client–server and cloud"},
{"net_quiz4_head", "Kvíz k přenosu dat a zabezpečení",
"Quiz on data transmission and security"},
{"net_quiz5_head", "Kvíz k signálům a modulaci",
"Quiz on signals and modulation"},
{"net_quiz6_head", "Kvíz k cestě, kanálu a okruhu",
"Quiz on path, channel and circuit"},
{"net_quiz7_head", "Kvíz k multiplexu a směrům přenosu",
"Quiz on multiplexing and transmission directions"},
{"net_quiz8_head", "Kvíz k přepojování",
"Quiz on switching"},
{"net_quiz9_head", "Kvíz k vrstevnatým modelům a protokolům",
"Quiz on layered models and protocols"},
{"net_quiz10_head", "Kvíz k ISO/OSI a TCP/IP",
"Quiz on ISO/OSI and TCP/IP"},
{"net_quiz11_head", "Kvíz k 7 vrstvám ISO/OSI",
"Quiz on the 7 ISO/OSI layers"},
{"net_quiz12_head", "Kvíz k architektuře TCP/IP",
"Quiz on TCP/IP architecture"},
{"net_quiz13_head", "Kvíz k topologiím sítě",
"Quiz on network topologies"},
{"net_quiz14_head", "Kvíz k optice",
"Quiz on fiber optics"},
{"net_quiz15_head", "Kvíz k ochraně a montáži optiky",
"Quiz on fiber protection and installation"},
{"net_quiz16_head", "Kvíz k metodám přístupu",
"Quiz on access methods"},
{"net_quiz17_head", "Kvíz k aktivním prvkům",
"Quiz on active network devices"},
{"net_quiz18_head", "Kvíz ke switchi podrobně",
"Quiz on switches in detail"},
{"net_quiz19_head", "Kvíz ke směrování",
"Quiz on routing"},
{"net_quiz20_head", "Kvíz ke směrovači a bráně",
"Quiz on router and gateway"},
{"net_quiz21_head", "Kvíz k ethernetovým adresám a rámcům",
"Quiz on Ethernet addresses and frames"},
{"net_quiz22_head", "Kvíz k IP paketu",
"Quiz on the IP packet"},
{"net_quiz23_head", "Kvíz k ICMP",
"Quiz on ICMP"},
{"net_quiz24_head", "Kvíz k ARP",
"Quiz on ARP"},
{"net_quiz25_head", "Kvíz k TCP a UDP",
"Quiz on TCP and UDP"},
{"net_quiz26_head", "Kvíz k aplikačním protokolům",
"Quiz on application protocols"},
{"net_quiz27_head", "Kvíz k bezdrátovým sítím",
"Quiz on wireless networks"},
{"net_slide_next", "Další", "Next"},
{"net_slide_prev", "Zpět", "Back"},
{"net_slide_start", "Přejít na cvičení", "Go to the exercise"},
{"net_solution", "Ukázat řešení", "Show solution"},
{"hw_sub", "Vyberte lekci na cestě a začněte procvičovat.",
"Pick a unit on the path and start practicing."},
{"hw_unit1", "Architektura počítače", "Computer architecture"},
{"hw_unit1_sub", "3 snímky o Von Neumannovi a schématu a pak kvíz.",
"3 slides about von Neumann and the model, then a quiz."},
{"hw_ex1_title", "Kvíz: architektura počítače",
"Quiz: computer architecture"},
{"hw_quiz1_head", "Kvíz k architektuře počítače",
"Quiz on computer architecture"},
{"hw_unit2", "Historie počítačů", "History of computers"},
{"hw_unit2_sub", "6 snímků o generacích počítačů a pak kvíz.",
"6 slides about computer generations, then a quiz."},
{"hw_ex2_title", "Kvíz: historie počítačů",
"Quiz: history of computers"},
{"hw_quiz2_head", "Kvíz k historii počítačů",
"Quiz on the history of computers"},
{"hw_unit3", "Zobrazování dat v počítači", "Data representation"},
{"hw_unit3_sub", "2 snímky o bitu a bytu a pak kvíz.",
"2 slides about bits and bytes, then a quiz."},
{"hw_ex3_title", "Kvíz: zobrazování dat",
"Quiz: data representation"},
{"hw_quiz3_head", "Kvíz k zobrazování dat v počítači",
"Quiz on data representation in computers"},
{"czech_sub", "Vyberte oblast a začněte procvičovat.",
"Pick an area and start practicing."},
{"Literatura", "Literatura", "Literature"},
{"Mluvnice", "Mluvnice", "Grammar"},
{"Maturitní četba", "Maturitní četba", "Maturita reading list"},
{NULL, NULL, NULL}
};
/* Exercise content: the Czech text doubles as the lookup key, so `cs`
* stays NULL and tr() falls back to the key itself. */
const TrEntry tr_content[] = {
{"Ahoj! Jmenuji se Anna.", NULL, "Hi! My name is Anna."},
{"Ahoj! Jmenuji se Petr.", NULL, "Hi! My name is Petr."},
{"Jmenuji se Anna.", NULL, "My name is Anna."},
{"Jmenuji se Petr.", NULL, "My name is Petr."},
{"Odkud jsi?", NULL, "Where are you from?"},
{"Odkud pocházíš?", NULL, "Where do you come from?"},
{"Pocházím z Česka.", NULL, "I come from Czechia."},
{"Dobré ráno!", NULL, "Good morning!"},
{"Jak se máš?", NULL, "How are you?"},
{"Mám se dobře, děkuji.", NULL, "I am fine, thank you."},
{"Musím jít. Na shledanou!", NULL, "I have to go. Goodbye!"},
{"Brzy na viděnou!", NULL, "See you soon!"},
{"Čau!", NULL, "Bye!"},
{"Jak se jmenuješ?", NULL, "What is your name?"},
{"Kde bydlíš?", NULL, "Where do you live?"},
{"Kdo to je?", NULL, "Who is that?"},
{"Kolik je ti let?", NULL, "How old are you?"},
{"Je mi šestnáct let.", NULL, "I am sixteen years old."},
{"Bydlím v Praze.", NULL, "I live in Prague."},
{"Hraji fotbal.", NULL, "I play football."},
{"Co rád/a děláš?", NULL, "What do you like to do?"},
{"Kolik je hodin?", NULL, "What time is it?"},
{"Na shledanou.", NULL, "Goodbye."},
{"Moc děkuji.", NULL, "Thank you very much."},
{"„vierzehn“ = čtrnáct (14)", NULL, "“vierzehn” = fourteen (14)"},
{"„siebzehn“ = sedmnáct (17)", NULL, "“siebzehn” = seventeen (17)"},
{"„zwanzig“ = dvacet (20)", NULL, "“zwanzig” = twenty (20)"},
{"„sechs“ = šest (6)", NULL, "“sechs” = six (6)"},
{"1 B = 8 b", NULL, "1 B = 8 b"},
{"2⁸ = 256 hodnot (0–255)", NULL, "2⁸ = 256 values (0–255)"},
{"Kabely – síť zůstává připojená i po přenosu", NULL,
"Cables – the network stays connected after transfer"},
{"WAN = Wide Area Network, např. internet", NULL,
"WAN = Wide Area Network, e.g. the internet"},
{"Např. hvězda, kruh, sběrnice", NULL,
"E.g. star, ring, bus"},
{"Architektura = topologie + standard", NULL,
"Architecture = topology + standard"},
{"Bez centrálního serveru – stanice si sdílejí data a tiskárny", NULL,
"No central server – stations share data and printers"},
{"Server řídí a poskytuje služby, má vyšší výkon", NULL,
"A server controls and provides services; higher performance"},
{"Ověřují uživatele a povolují přístup ke službám", NULL,
"They authenticate users and grant access to services"},
{"Fileserver = souborový server", NULL,
"Fileserver = file server"},
{"Jeden server – při výpadku je služba nedostupná", NULL,
"One server – if it fails, the service is unavailable"},
{"Více serverů, každý obsluhuje část – vyšší spolehlivost", NULL,
"Multiple servers, each handles a part – higher reliability"},
{"Slouží zároveň i jako pracovní stanice", NULL,
"It also works as a workstation"},
{"Jen síťové služby – vysoký výkon a bezpečnost, často v racku", NULL,
"Network services only – high performance and security, often in a rack"},
{"Obří sálové počítače (IBM, Siemens) pro banky a státní správu", NULL,
"Huge mainframe computers (IBM, Siemens) for banks and government"},
{"SaaS = software jako služba, přístup online z libovolného zařízení", NULL,
"SaaS = software as a service, online access from any device"},
{"Více bitů najednou po více vodičích; problém jsou přeslechy", NULL,
"Multiple bits at once over multiple wires; crosstalk is the problem"},
{"Přeslechy vznikají při delších kabelech a vysokých frekvencích", NULL,
"Crosstalk occurs on longer cables and at high frequencies"},
{"Bit po bitu po jednom vodiči – vyšší frekvence i délky", NULL,
"Bit by bit over one wire – higher frequencies and longer distances"},
{"Start-bit (0) synchronizuje, Stop-bit (1) ukončuje znak", NULL,
"Start bit (0) synchronizes, stop bit (1) ends the character"},
{"Řízeno společným hodinovým signálem a přesným časováním", NULL,
"Controlled by a shared clock signal and precise timing"},
{"Nejslabší – přidá bit pro sudý/lichý počet jedniček", NULL,
"Weakest – adds a bit for even/odd number of ones"},
{"Součet znaků jako dvojkových čísel", NULL,
"Sum of characters treated as binary numbers"},
{"Nejbezpečnější – počítá se z jednotlivých bitů v bloku", NULL,
"Most secure – computed from individual bits in the block"},
{"Analogový je spojitý, digitální má diskrétní hodnoty 0 a 1", NULL,
"Analog is continuous; digital has discrete 0 and 1 values"},
{"Frekvence f = 1/T, kde T je perioda", NULL,
"Frequency f = 1/T, where T is the period"},
{"AM mění amplitudu, FM frekvenci, PM fázi", NULL,
"AM changes amplitude, FM frequency, PM phase"},
{"QPSK nese 2 bity v prvku, 256-QAM nese 8 bitů", NULL,
"QPSK carries 2 bits per symbol, 256-QAM carries 8 bits"},
{"Modulační rychlost = počet změn signálu za sekundu [Bd/s]", NULL,
"Modulation rate = number of signal changes per second [Bd/s]"},
{"Přenosová rychlost = množství informace za sekundu [bit/s]", NULL,
"Bit rate = amount of information per second [bit/s]"},
{"Šířka pásma určuje maximální možnou přenosovou rychlost", NULL,
"Bandwidth determines the maximum possible bit rate"},
{"Datový spoj umožňuje výměnu informací mezi uzly", NULL,
"A data link enables information exchange between nodes"},
{"Fyzické médium: kabely, mikrovlny nebo družice", NULL,
"Physical medium: cables, microwaves or satellites"},
{"Kanál je jednosměrný souhrn prostředků pro spojení", NULL,
"A channel is a one-way set of means for a connection"},
{"Okruh tvoří dva kanály pro obousměrný přenos", NULL,
"A circuit is made of two channels for two-way transfer"},
{"Trunking spojuje více cest do jednoho okruhu", NULL,
"Trunking joins multiple paths into one circuit"},
{"Trunking zvyšuje šířku pásma spojením cest", NULL,
"Trunking increases bandwidth by combining paths"},
{"Multiplex dělí jeden kanál na více logických podkanálů", NULL,
"Multiplexing splits one channel into multiple logical subchannels"},
{"FDM: každému kanálu část frekvenčního pásma", NULL,
"FDM: each channel gets part of the frequency band"},
{"TDM: každému kanálu vyhrazený časový slot", NULL,
"TDM: each channel gets a reserved time slot"},
{"STDM přiděluje kapacitu dle potřeby, negarantuje 100 %", NULL,
"STDM allocates capacity on demand and does not guarantee 100%"},
{"Simplex = jen jeden směr přenosu", NULL,
"Simplex = only one transmission direction"},
{"Half-duplex = oběma směry, ale ne současně", NULL,
"Half-duplex = both directions, but not at the same time"},
{"Full-duplex = oběma směry současně", NULL,
"Full-duplex = both directions at the same time"},
{"Agregace = sdílení kapacity kanálu více uživateli", NULL,
"Aggregation = sharing channel capacity among multiple users"},
{"Cesta se vytýčí předem, kapacita je garantována", NULL,
"The path is set up in advance and capacity is guaranteed"},
{"Data se dělí na pakety, každý může jít jinou cestou", NULL,
"Data are split into packets; each may take a different path"},
{"Výhody: reakce na zátěž a lepší využití kapacity", NULL,
"Advantages: reaction to load and better capacity use"},
{"Negarantuje pořadí ani plynulost – nevhodné pro živé video", NULL,
"Does not guarantee order or smoothness – unsuitable for live video"},
{"Cesta je předem, prostředky se použijí jen při průchodu paketu", NULL,
"Path is preset; resources are used only when a packet passes"},
{"Virtuální spoje zrychlují přenos datagramů", NULL,
"Virtual circuits speed up datagram transfer"},
{"Standardizace zajišťuje kompatibilitu mezi výrobci", NULL,
"Standardization ensures compatibility between vendors"},
{"Dekompozice rozkládá přenos na jednotlivé vrstvy", NULL,
"Decomposition splits transmission into individual layers"},
{"Vrstvy komunikují jen se sousedy přes rozhraní SAP", NULL,
"Layers communicate only with neighbors through SAP interfaces"},
{"Protokol = pravidla mezi stejnými vrstvami na různých uzlech", NULL,
"A protocol is rules between the same layers on different nodes"},
{"Každá vrstva přidává k datům hlavičku (header)", NULL,
"Each layer adds a header to the data"},
{"Rámec = linková, paket = síťová, segment = transportní", NULL,
"Frame = link, packet = network, segment = transport"},
{"ISO/OSI má 7 vrstev a je univerzální model", NULL,
"ISO/OSI has 7 layers and is a universal model"},
{"V praxi je ISO/OSI pomalejší – spolehlivost řeší každá vrstva", NULL,
"In practice ISO/OSI is slower – each layer handles reliability"},
{"TCP/IP zvítězil, protože vycházel ze skutečných potřeb", NULL,
"TCP/IP won because it came from real-world needs"},
{"V TCP/IP řeší spolehlivost až vyšší vrstvy", NULL,
"In TCP/IP, reliability is handled by higher layers"},
{"Fyzická vrstva přenáší bity a řeší médium", NULL,
"The physical layer transmits bits and handles the medium"},
{"Spojová vrstva má podvrstvy MAC a LLC", NULL,
"The data-link layer has MAC and LLC sublayers"},
{"Síťová vrstva směruje pakety i bez přímého spojení", NULL,
"The network layer routes packets even without a direct link"},
{"Transportní vrstva je jen v koncových uzlech, ne v routerech", NULL,
"The transport layer exists only in end nodes, not in routers"},
{"Relační vrstva řídí relace, dialog a synchronizaci", NULL,
"The session layer manages sessions, dialogue and synchronization"},
{"Prezentační vrstva formátuje data, komprimuje a šifruje", NULL,
"The presentation layer formats, compresses and encrypts data"},
{"Aplikační vrstva je rozhraní pro programy a služby", NULL,
"The application layer is the interface for programs and services"},
{"Aplikační TCP/IP = aplikační + prezentační + relační ISO/OSI", NULL,
"TCP/IP application = ISO/OSI application + presentation + session"},
{"Síťové rozhraní TCP/IP = linková + fyzická ISO/OSI", NULL,
"TCP/IP network interface = ISO/OSI data-link + physical"},
{"U TCP/IP vznikly nejdřív protokoly, až pak model", NULL,
"With TCP/IP, protocols came first and the model later"},
{"TCP je spolehlivý a spojovaný", NULL,
"TCP is reliable and connection-oriented"},
{"UDP je nespolehlivý a rychlý", NULL,
"UDP is unreliable and fast"},
{"HTTP, DNS a SMTP jsou aplikační protokoly", NULL,
"HTTP, DNS and SMTP are application protocols"},
{"IP, ICMP a OSPF patří na síťovou (internetovou) vrstvu", NULL,
"IP, ICMP and OSPF belong to the network (internet) layer"},
{"Ethernet a PPP patří na vrstvu síťového rozhraní", NULL,
"Ethernet and PPP belong to the network interface layer"},
{"Sběrnice: médium sdílí všichni", NULL,
"Bus: the medium is shared by everyone"},
{"Sběrnice: nízká bezpečnost a porucha kabelu vyřadí síť", NULL,
"Bus: low security and a cable fault takes down the network"},
{"Hvězda: uzly jdou přes hub nebo switch", NULL,
"Star: nodes connect through a hub or switch"},
{"Hvězda: porucha kabelu k uzlu nevyřadí celou síť", NULL,
"Star: a cable fault to one node does not take down the whole network"},
{"Hvězda používá kroucenou dvoulinku nebo optiku", NULL,
"Star uses twisted pair or fiber"},
{"V kruhu zprávy obíhají, dokud nenajdou adresáta", NULL,
"In a ring, messages circulate until they find the recipient"},
{"Optika: el. impulsy → světlo (LED/laser) → fotodioda", NULL,
"Optics: electrical pulses → light (LED/laser) → photodiode"},
{"Jedno vlákno = jednosměrný přenos; obousměrně dvě vlákna", NULL,
"One fiber = one-way; two fibers for bidirectional use"},
{"Nevýhody: náročná montáž a cena prvků/konektorů", NULL,
"Drawbacks: difficult installation and costly parts/connectors"},
{"MM: jádro 50/62,5 µm a více vidů", NULL,
"MM: 50/62.5 µm core and multiple modes"},
{"SM: jádro 7–10 µm, jeden paprsek, laser", NULL,
"SM: 7–10 µm core, one beam, laser"},
{"MM typicky používá levnější LED zdroje", NULL,
"MM typically uses cheaper LED sources"},
{"Primární ochrana: 250 µm", NULL,
"Primary protection: 250 µm"},
{"Sekundární ochrana: 900 µm", NULL,
"Secondary protection: 900 µm"},
{"Těsná sekundární ochrana: svislé instalace", NULL,
"Tight secondary protection: vertical installs"},
{"Volná sekundární ochrana: vodorovné instalace", NULL,
"Loose secondary protection: horizontal installs"},
{"Montáž: lámačka a svářečka optických vláken", NULL,
"Installation: cleaver and optical fiber splicer"},
{"Lámání vyžaduje kolmost asi 0,5°", NULL,
"Cleaving requires roughly 0.5° squareness"},
{"Kolize = více uzlů vysílá na sdíleném médiu najednou", NULL,
"A collision is multiple nodes transmitting on a shared medium at once"},
{"Aloha: vysílej kdykoliv, při chybě znovu", NULL,
"Aloha: transmit anytime; retry if there is no acknowledgment"},
{"CSMA/CD patří k Ethernetu", NULL,
"CSMA/CD belongs to Ethernet"},
{"CSMA/CD nejdřív poslouchá nosnou (Carrier Sense)", NULL,
"CSMA/CD first listens for the carrier (Carrier Sense)"},
{"Po kolizi CSMA/CD čeká náhodný čas a zkusí znovu", NULL,
"After a collision, CSMA/CD waits a random time and retries"},
{"CSMA/CA rezervuje médium přes RTS/CTS", NULL,
"CSMA/CA reserves the medium with RTS/CTS"},
{"Repeater zesiluje signál na fyzické vrstvě", NULL,
"A repeater amplifies the signal at the physical layer"},
{"Transceiver převádí mezi médii (např. metalika ↔ optika)", NULL,
"A transceiver converts between media (e.g. copper ↔ fiber)"},
{"Hub rozešle přijatá data do všech ostatních portů", NULL,
"A hub floods received data to all other ports"},
{"Bridge/switch = linková vrstva, rámce a MAC", NULL,
"Bridge/switch = data-link layer, frames and MAC"},
{"Switch dělí síť na kolizní domény", NULL,
"A switch splits the network into collision domains"},
{"Router = síťová vrstva, pakety a IP, propojuje sítě", NULL,
"A router = network layer, packets and IP, connects networks"},
{"Gateway převádí mezi odlišnými architekturami/protokoly", NULL,
"A gateway converts between different architectures/protocols"},
{"MAC adresy switch ukládá do CAM tabulky", NULL,
"A switch stores MAC addresses in the CAM table"},
{"Podle CAM tabulky posílá rámec jen na cílový port", NULL,
"Using the CAM table, it forwards a frame only to the target port"},
{"Cut-through čte adresu příjemce a hned přeposílá", NULL,
"Cut-through reads the destination address and forwards immediately"},
{"Cut-through je rychlý, ale propustí i chyby", NULL,
"Cut-through is fast but also forwards errors"},
{"Store-and-forward kontroluje celý rámec včetně CRC", NULL,
"Store-and-forward checks the whole frame including CRC"},
{"Fragment-free čte prvních 64 bytů kvůli kolizím", NULL,
"Fragment-free reads the first 64 bytes for collision detection"},
{"Směrování běží na síťové (3.) vrstvě ISO/OSI", NULL,
"Routing runs on the network (3rd) ISO/OSI layer"},
{"Adaptivní algoritmy reagují na změny a sdílí stav sítě", NULL,
"Adaptive algorithms react to changes and share network state"},
{"Statické cesty nastaví správce a samy se nemění", NULL,
"Static routes are set by an admin and do not change themselves"},
{"Centralizované směrování padá s výpadkem centra", NULL,
"Centralized routing fails if the center fails"},
{"Distribuované: výměna informací a vlastní tabulky", NULL,
"Distributed: information exchange and local tables"},
{"Nižší metrika = lepší / rychlejší trasa", NULL,
"Lower metric = better / faster route"},
{"Distance Vector: výměna tabulek se sousedy (např. každých 30 s)", NULL,
"Distance Vector: exchange tables with neighbors (e.g. every 30 s)"},
{"Router pracuje na síťové (3.) vrstvě", NULL,
"A router works at the network (3rd) layer"},
{"Router segmentuje podsítě a zajišťuje WAN přístup", NULL,
"A router segments subnets and provides WAN access"},
{"Firewall filtruje pakety a služby", NULL,
"A firewall filters packets and services"},
{"Multiprotokolový router spojuje různé protokoly/standardy", NULL,
"A multiprotocol router joins different protocols/standards"},
{"Router dělí síť na broadcastové domény", NULL,
"A router splits the network into broadcast domains"},
{"Gateway připojuje LAN na odlišné prostředí", NULL,
"A gateway connects a LAN to a different environment"},
{"Pojem brána někdy označuje router nebo LAN–WAN připojení", NULL,
"Gateway sometimes means a router or LAN–WAN connection"},
{"MAC adresa Ethernetu má 48 bitů a je unikátní", NULL,
"An Ethernet MAC address is 48 bits and unique"},
{"IEEE přidělí výrobci první 3 byty adresy", NULL,
"IEEE assigns the manufacturer the first 3 address bytes"},
{"Ethernet II: EtherType > 1500 (IP = 0800h)", NULL,
"Ethernet II: EtherType > 1500 (IP = 0800h)"},
{"IEEE 802.3: délka ≤ 1500 a rámec 802.2", NULL,
"IEEE 802.3: length ≤ 1500 and an 802.2 frame"},
{"Raw 802.3: Novell/IPX, začíná FFFFh", NULL,
"Raw 802.3: Novell/IPX, starts with FFFFh"},
{"Max. Ethernet II = 1518 B", NULL,
"Max Ethernet II frame = 1518 B"},
{"Min. rámec 64 B kvůli koliznímu okénku", NULL,
"Min frame is 64 B due to the collision window"},
{"IP je nespojovaný a nespolehlivý", NULL,
"IP is connectionless and unreliable"},
{"Routing = rozhodnutí o směru datagramu", NULL,
"Routing = deciding the next direction of a datagram"},
{"Forwarding = vložení do rámce a odeslání", NULL,
"Forwarding = placing into a frame and sending"},
{"HLEN 5 = 5 × 4 B = 20 B hlavičky", NULL,
"HLEN 5 = 5 × 4 B = 20 B header"},
{"TTL snižují směrovače proti zacyklení", NULL,
"Routers decrease TTL to prevent loops"},
{"PROTOCOL 6 = TCP", NULL,
"PROTOCOL 6 = TCP"},
{"PROTOCOL 17 = UDP", NULL,
"PROTOCOL 17 = UDP"},
{"Ethernet MTU = 1500 B", NULL,
"Ethernet MTU = 1500 B"},
{"ICMP posílá informace o chybách a stavu přenosu", NULL,
"ICMP sends information about errors and transfer status"},
{"ICMP jede uvnitř IP datagramu", NULL,
"ICMP is carried inside an IP datagram"},
{"Source Quench = zpomal odesílání kvůli zahlcení", NULL,
"Source Quench = slow down sending due to congestion"},
{"Time Exceeded = TTL kleslo na 0", NULL,
"Time Exceeded = TTL dropped to 0"},
{"Echo Request/Reply = ping", NULL,
"Echo Request/Reply = ping"},
{"Traceroute zvyšuje TTL a čte Time Exceeded", NULL,
"Traceroute raises TTL and reads Time Exceeded"},
{"ARP: IP → MAC", NULL,
"ARP: IP → MAC"},
{"RARP: MAC → IP", NULL,
"RARP: MAC → IP"},
{"Nejčastější je dynamický dotaz a odpověď", NULL,
"The most common way is a dynamic query and reply"},
{"ARP dotaz jde broadcastem", NULL,
"An ARP request goes out as a broadcast"},
{"ARP odpověď je unicast s MAC", NULL,
"An ARP reply is a unicast with the MAC"},
{"ARP cache ukládá výsledky dočasně (arp -a)", NULL,
"ARP cache stores results temporarily (arp -a)"},
{"TCP = spolehlivý a spojovaný", NULL,
"TCP = reliable and connection-oriented"},
{"UDP = nespolehlivý, nespojovaný, malá režie", NULL,
"UDP = unreliable, connectionless, low overhead"},
{"Porty rozlišují aplikace na uzlu", NULL,
"Ports distinguish applications on a node"},
{"TCP se navazuje three-way handshake", NULL,
"TCP is established with a three-way handshake"},
{"TCP hlavička 20 B, UDP 8 B", NULL,
"TCP header is 20 B, UDP is 8 B"},
{"TCP čeká na znovudoručení – špatné pro real-time", NULL,
"TCP waits for retransmission – bad for real-time"},
{"SCTP: multihoming a multistreaming", NULL,
"SCTP: multihoming and multistreaming"},
{"Aplikace posílají data přes TCP/UDP", NULL,
"Applications send data over TCP/UDP"},
{"Dva procesy nesmí sdílet stejný port", NULL,
"Two processes must not share the same port"},
{"Well-known: 0–1023 (IANA)", NULL,
"Well-known: 0–1023 (IANA)"},
{"Dynamické porty: 49152–65535", NULL,
"Dynamic ports: 49152–65535"},
{"Spojení = pětice hodnot", NULL,
"A connection is a 5-tuple"},
{"HTTP 80, HTTPS 443", NULL,
"HTTP 80, HTTPS 443"},
{"SSH 22, DNS 53", NULL,
"SSH 22, DNS 53"},
{"MySQL 3306, RDP 3389", NULL,
"MySQL 3306, RDP 3389"},
{"Geostacionární družice ~36 000 km", NULL,
"Geostationary satellites ~36,000 km"},
{"Družice: zpoždění stovky ms", NULL,
"Satellites: hundreds of ms delay"},
{"VSAT: jen terminál ↔ hub", NULL,
"VSAT: only terminal ↔ hub"},
{"Mikrovlny: přímá viditelnost ~50 km", NULL,
"Microwaves: line of sight ~50 km"},
{"STA komunikují přes AP", NULL,
"STAs communicate via an AP"},
{"Wi-Fi 6 (ax): OFDMA", NULL,
"Wi-Fi 6 (ax): OFDMA"},
{"WEP prolomen – nepoužívat", NULL,
"WEP is broken – do not use"},
{"Používej WPA2/WPA3 + AES", NULL,
"Use WPA2/WPA3 + AES"},
{"čtrnáct", NULL, "fourteen"},
{"sedmnáct", NULL, "seventeen"},
{"dvacet", NULL, "twenty"},
{"šest", NULL, "six"},
{"třináct", NULL, "thirteen"},
{"dvě jablka", NULL, "two apples"},
{"pět hvězd", NULL, "five stars"},
{"sedm koček", NULL, "seven cats"},
{"devět květin", NULL, "nine flowers"},
{"tři auta", NULL, "three cars"},
{"jedenáct knih", NULL, "eleven books"},
{"čtyři svíčky", NULL, "four candles"},
{"osm míčů", NULL, "eight balls"},
{"šest ptáků", NULL, "six birds"},
{"šest, sedm, osm, devět", NULL, "six, seven, eight, nine"},
{"dvanáct, třináct, čtrnáct, patnáct", NULL,
"twelve, thirteen, fourteen, fifteen"},
{"osmnáct, devatenáct, dvacet, dvacet jedna", NULL,
"eighteen, nineteen, twenty, twenty-one"},
{"čtyři, pět, šest, sedm", NULL, "four, five, six, seven"},
{"deset, jedenáct, dvanáct, třináct", NULL,
"ten, eleven, twelve, thirteen"},
{"Plave v jezeře.", NULL, "He/She is swimming in the lake."},
{"Zpívá píseň.", NULL, "He/She is singing a song."},
{"Vaří polévku.", NULL, "He/She is cooking soup."},
{"Čte knihu.", NULL, "He/She is reading a book."},
{"Řídí auto.", NULL, "He/She is driving a car."},
{"Maluje obraz.", NULL, "He/She is painting a picture."},
{"Hraje fotbal.", NULL, "He/She is playing football."},
{"Spí.", NULL, "He/She is sleeping."},
{"Ahoj", NULL, "Hi"},
{"Dobré ráno", NULL, "Good morning"},
{"Dobrý den", NULL, "Good day"},
{"Dobrý večer", NULL, "Good evening"},
{"Dobrý den (Bavorsko, Rakousko)", NULL, "Good day (Bavaria, Austria)"},
{"Ahoj / Čau", NULL, "Hi / Hey"},
{"Čau", NULL, "Bye"},
{"Na shledanou", NULL, "Goodbye"},
{"Brzy na viděnou", NULL, "See you soon"},
{"Do zítřka", NULL, "See you tomorrow"},
{"Dobrou noc", NULL, "Good night"},
{"Zatím / Na viděnou", NULL, "See you later"},
{"Preclík", NULL, "Pretzel"},
{"Klobása", NULL, "Sausage"},
{"Braniborská brána", NULL, "Brandenburg Gate"},
{"Značka aut", NULL, "Car brand"},
{"Rakouský skladatel", NULL, "Austrian composer"},
{"Čokoládový dort (Vídeň)", NULL, "Chocolate cake (Vienna)"},
{"Vídeňský řízek", NULL, "Viennese schnitzel"},
{"Sýr", NULL, "Cheese"},
{"Švýcarská hora", NULL, "Swiss mountain"},
{"Čokoláda", NULL, "Chocolate"},
/* ---- unit 2: grammar & vocabulary meanings ---- */
{"Pochází z Rakouska.", NULL, "He is from Austria."},
{"Bydlí ve Štýrském Hradci (Graz).", NULL, "He lives in Graz."},
{"Rád hraje golf.", NULL, "He likes playing golf."},
{"Mluví německy, anglicky a italsky.", NULL,
"He speaks German, English and Italian."},
{"Pocházejí ze Slovenska.", NULL, "They are from Slovakia."},
{"Bydlí v Bratislavě (ona).", NULL, "She lives in Bratislava."},
{"Ona ráda tancuje.", NULL, "She likes dancing."},
{"On rád cestuje.", NULL, "He likes travelling."},
{"Jsou dobří přátelé.", NULL, "They are good friends."},
{"Pocházím z Atén.", NULL, "I am from Athens."},
{"Petr bydlí v Salcburku.", NULL, "Peter lives in Salzburg."},
{"Berlín leží v Německu.", NULL, "Berlin is in Germany."},
{"Bydlíme v Paříži.", NULL, "We live in Paris."},
{"Pocházejí z Řecka.", NULL, "They are from Greece."},
{"Odkud je? – Z Londýna.", NULL, "Where is he from? – From London."},
{"Jak se jmenuje? – Andrea.", NULL, "What is her name? – Andrea."},
{"Kdo pochází z Ruska? – Alexandr.", NULL,
"Who comes from Russia? – Alexander."},
{"Kde leží Praha? – V Česku.", NULL, "Where is Prague? – In Czechia."},
{"Kde bydlí? – V Bratislavě.", NULL, "Where do they live? – In Bratislava."},
{"Co děláte? – Studujeme germanistiku.", NULL,
"What are you doing? – We're studying German studies."},
{"Mluvím německy. A ty?", NULL, "I speak German. And you?"},
{"Kterými jazyky mluvíte?", NULL, "Which languages do you speak?"},
{"Mluvíš francouzsky? – Ano, trochu.", NULL,
"Do you speak French? – Yes, a little."},
{"My mluvíme polsky a vy?", NULL, "We speak Polish and you?"},
{"Mluvíte anglicky? – Ano, velmi dobře.", NULL,
"Do you speak English? – Yes, very well."},
{"Nemluví ani slovo turecky.", NULL,
"He doesn't speak a word of Turkish."},
{"Čech", NULL, "Czech man"},
{"Španělka", NULL, "Spanish woman"},
{"Turek", NULL, "Turk (man)"},
{"Chorvatka", NULL, "Croatian woman"},
{"Němka", NULL, "German woman"},
{"Rakušanka", NULL, "Austrian woman"},
{"Slovák", NULL, "Slovak man"},
{"Švýcarka", NULL, "Swiss woman"},
{"Němec", NULL, "German man"},
{"Německo", NULL, "Germany"},
{"Deutschland – Německo", NULL, "Deutschland – Germany"},
{"Slowakei – Slovensko", NULL, "Slowakei – Slovakia"},
{"Österreich – Rakousko", NULL, "Österreich – Austria"},
{"Spanien – Španělsko", NULL, "Spanien – Spain"},
{"England – Anglie", NULL, "England – England"},
{"Polen – Polsko", NULL, "Polen – Poland"},
{"Slovensko", NULL, "Slovakia"},
{"Rakousko", NULL, "Austria"},
{"Španělsko", NULL, "Spain"},
{"Anglie", NULL, "England"},
{"Polsko", NULL, "Poland"},
{"Rusko", NULL, "Russia"},
{"Russland – Rusko", NULL, "Russland – Russia"},
{"Türkei – Turecko", NULL, "Türkei – Turkey"},
{"Slowakei – Slovensko", NULL, "Slowakei – Slovakia"},
{"Kroatien – Chorvatsko", NULL, "Kroatien – Croatia"},
{"Griechenland – Řecko", NULL, "Griechenland – Greece"},
{"Italien – Itálie", NULL, "Italien – Italy"},
{"Turecko", NULL, "Turkey"},
{"Chorvatsko", NULL, "Croatia"},
{"Řecko", NULL, "Greece"},
{"Itálie", NULL, "Italy"},
{"otec", NULL, "father"},
{"rodiče", NULL, "parents"},
{"Češka", NULL, "Czech woman"},
{"student", NULL, "student"},
{"Co čte? – Knihu.", NULL, "What is he reading? – A book."},
{"Co studuje? – Medicínu.", NULL, "What is she studying? – Medicine."},
{"Čím Jan rád jezdí? – Autem.", NULL,
"What does Jan like to drive? – A car."},
{"Kde bydlíte? – Ve Vídni.", NULL, "Where do you live? – In Vienna."},
{"Kdo pracuje u Siemensu? – Moje kamarádka Věra.", NULL,
"Who works at Siemens? – My friend Vera."},
{"Kam jedeš?", NULL, "Where are you going?"},
{"Co rád/a čteš?", NULL, "What do you like to read?"},
{"Co rád/a hraješ?", NULL, "What do you like to play?"},
{"Jmenuji se Lukáš.", NULL, "My name is Lukáš."},
{"Jedu do Německa.", NULL, "I'm going to Germany."},
{"Rád/a čtu detektivky.", NULL, "I like reading crime novels."},
{"Rád/a hraju golf.", NULL, "I like playing golf."},
{"šedesát tři eur", NULL, "sixty-three euros"},
{"třicet osm eur", NULL, "thirty-eight euros"},
{"čtyřicet pět eur", NULL, "forty-five euros"},
{"padesát sedm eur", NULL, "fifty-seven euros"},
{"devadesát devět eur", NULL, "ninety-nine euros"},
{"Agnieszka Kowalski pochází z Polska, z Krakova.", NULL,
"Agnieszka Kowalski is from Kraków, Poland."},
{"Je jí 18 let a letos dělá maturitu.", NULL,
"She is 18 years old and is taking her A-levels this year."},
{"Ráda chatuje se svým německým přítelem.", NULL,
"She likes chatting with her German friend."},
{"Jmenuje se Stefan Böhmermann a bydlí v Drážďanech.", NULL,
"His name is Stefan Böhmermann and he lives in Dresden."},
{"Agnieszce přijde ten jazyk super.", NULL,
"Agnieszka thinks the language is cool."},
{"Už mluví velmi dobře německy.", NULL,
"She already speaks German very well."},
{"potřebovat mobil", NULL, "to need a mobile phone"},
{"pracovat ve BMW", NULL, "to work at BMW"},
{"řídit auto", NULL, "to drive a car"},
{"navštěvovat gymnázium", NULL, "to attend a grammar school"},
{"mluvit španělsky", NULL, "to speak Spanish"},
{"číst detektivky", NULL, "to read crime novels"},
{"padesát čtyři", NULL, "fifty-four"},
{"čtyřicet pět", NULL, "forty-five"},
{"tři sta šedesát devět", NULL, "three hundred and sixty-nine"},
{"sto dvanáct", NULL, "one hundred and twelve"},
{"sto dvacet dva", NULL, "one hundred and twenty-two"},
{"šedesát osm", NULL, "sixty-eight"},
{"Petr rád čte knihy.", NULL, "Peter likes reading books."},
{"Filip pracuje v Salcburku.", NULL, "Filip works in Salzburg."},
{"Magda dobře mluví anglicky.", NULL, "Magda speaks English well."},
{"Marek navštěvuje gymnázium.", NULL, "Marek attends the grammar school."},
{"Dominice je 15 let.", NULL, "Dominika is 15 years old."},
{"Moje sestra se jmenuje Marta.", NULL, "My sister is called Marta."},
{"Jak se jmenují? – Jana a Michael.", NULL,
"What are their names? – Jana and Michael."},
{"Kdo mluví polsky? – Jacek.", NULL, "Who speaks Polish? – Jacek."},
{"Kde bydlí Eva? – V Plzni.", NULL, "Where does Eva live? – In Plzeň."},
{"Odkud pochází Markus? – Z Německa.", NULL,
"Where is Markus from? – From Germany."},
{"Jakým jazykem mluví Jana? – Slovensky.", NULL,
"What language does Jana speak? – Slovak."},
/* ---- unit 2: hangman hints ---- */
{"vaří v restauraci", NULL, "he cooks in a restaurant"},
{"léčí nemocné lidi", NULL, "he treats sick people"},
{"učí ve škole", NULL, "he teaches at school"},
{"pracuje u policie", NULL, "he works for the police"},
{"prodává v obchodě", NULL, "he sells in a shop"},
/* ---- unit 2: word-level glosses for ex14/ex15 ---- */
{"z", NULL, "from"},
{"dělá", NULL, "does"},
{"kamarád", NULL, "friend"},
{"žije", NULL, "lives"},
{"jazyk", NULL, "language"},
{"dobře", NULL, "well"},
{"potřebovat", NULL, "to need"},
{"pracovat", NULL, "to work"},
{"řídit", NULL, "to drive"},
{"navštěvovat", NULL, "to attend"},
{"mluvit", NULL, "to speak"},
{"číst", NULL, "to read"},
/* ---- unit 3: Bei uns zu Hause ---- */
/* ex1 family word pairs */
{"bratranec / sestřenice", NULL, "male cousin / female cousin"},
{"strýc / teta", NULL, "uncle / aunt"},
{"dědeček / babička", NULL, "grandfather / grandmother"},
{"sestra / bratr", NULL, "sister / brother"},
{"kamarád / kamarádka", NULL, "friend (m) / friend (f)"},
{"dcera / syn", NULL, "daughter / son"},
/* ex2 possessive pronouns (nominative) */
{"Je to tvoje matka? – Ne, to není moje matka. To je jeho teta.", NULL,
"Is that your mother? – No, that is not my mother. That is his aunt."},
/* ex2 word-level glosses for the selected possessive pronouns */
{"tvůj", NULL, "yours (m.)"},
{"tvoje", NULL, "yours (f.)"},
{"můj", NULL, "mine (m.)"},
{"moje", NULL, "mine (f.)"},
{"jeho", NULL, "his"},
{"Je to tvůj bratr? – Ne, to není můj bratr. To je jeho bratranec.", NULL,
"Is that your brother? – No, that is not my brother. That is his cousin."},
{"Jsou to tvoji rodiče? – Ne, to nejsou moji rodiče. To jsou rodiče Markuse.",
NULL, "Are those your parents? – No, those are not my parents. "
"Those are Markus's parents."},
/* ex3 ein/kein (pets) */
{"Máš křečka? – Ne, nemám křečka. Mám želvu.", NULL,
"Have you got a hamster? – No, I haven't got a hamster. I have a tortoise."},
{"Máš koně? – Ne, nemám koně. Mám králíka.", NULL,
"Have you got a horse? – No, I haven't got a horse. I have a rabbit."},
{"Máš rybu? – Ne, nemám rybu. Mám ptáka.", NULL,
"Have you got a fish? – No, I haven't got a fish. I have a bird."},
{"Máš morče? – Ne, nemám morče. Mám andulku.", NULL,
"Have you got a guinea pig? – No, I haven't got a guinea pig. I have a budgie."},
/* ex4 missing letters (text) */
{"Máme přátele v Rakousku. Bydlí ve Vídni.", NULL,
"We have friends in Austria. They live in Vienna."},
{"Jmenují se Elfriede a Jiří. Mají také děti.", NULL,
"They are called Elfriede and Jiri. They also have children."},
{"Jejich syn se jmenuje Philipp a jejich dcera Sabine.", NULL,
"Their son is called Philipp and their daughter Sabine."},
{"Rodina ráda cestuje.", NULL, "The family likes travelling."},
{"Často je u nás na návštěvě v Česku.", NULL,
"They often visit us in Czechia."},
{"Rodina ráda cestuje. Často je u nás na návštěvě v Česku.", NULL,
"The family likes travelling. They often visit us in Czechia."},
{"Děti se učí také česky.", NULL,
"The children are also learning Czech."},
/* ex4 word-level glosses for the gapped words */
{"mít", NULL, "to have"},
{"přátelé", NULL, "friends"},
{"bydlet", NULL, "to live"},
{"jmenovat se", NULL, "to be called"},
{"děti", NULL, "children"},
{"syn", NULL, "son"},
{"jejich", NULL, "their"},
{"rodina", NULL, "family"},
{"cestuje", NULL, "travels"},
{"často", NULL, "often"},
{"návštěva", NULL, "visit"},
{"Česko", NULL, "Czechia"},
{"učit se", NULL, "to learn"},
{"čeština", NULL, "Czech"},
/* ex5 Marco's family */
{"Máme mužskou domácnost: Můj otec Johann (50), Ivo (16) a já.", NULL,
"We live in an all-male household: my father Johann (50), Ivo (16) and me."},
{"Ivo a já jsme stejně staří – jsme totiž dvojčata.", NULL,
"Ivo and I are the same age – we are twins."},
{"Náš otec tu má novou práci.", NULL,
"Our father has a new job here."},
{"Naši rodiče jsou rozvedení.", NULL,
"Our parents are divorced."},
{"Naše matka Maja (50) žije ve Vídni, ale pochází z Chorvatska.", NULL,
"Our mother Maja (50) lives in Vienna, but she comes from Croatia."},
{"Máme v Chorvatsku hodně strýců, tet, sestřenic a bratranců.", NULL,
"We have many uncles, aunts, male and female cousins in Croatia."},
{"Vídáme je někdy o prázdninách.", NULL,
"We sometimes see them on holiday."},
/* ex6 sorting vocabulary */
{"křeček", NULL, "hamster"},
{"babička", NULL, "grandmother"},
{"kůň", NULL, "horse"},
{"bratr", NULL, "brother"},
{"kočka", NULL, "cat"},
{"dědeček", NULL, "grandfather"},
{"dcera", NULL, "daughter"},
{"pes", NULL, "dog"},
{"teta", NULL, "aunt"},
{"andulka", NULL, "budgerigar"},
/* ex8 possessive pronouns (accusative) */
{"Potřebuješ svůj mobil.", NULL, "You need your mobile."},
{"Má svého koně.", NULL, "He has his horse."},
{"Dělá svou párty.", NULL, "She is throwing her party."},
{"Ptá se svého učitele.", NULL, "It is asking its teacher."},
{"Navštěvujeme náš víkendový dům.", NULL,
"We are visiting our weekend house."},
{"Vy vidíte svého psa.", NULL, "You see your dog."},
{"Mají své nástroje.", NULL, "They have their instruments."},
/* ex8 grey notes showing which possessive is expected */
{"u3g_dein", "(tvůj)", "(your)"},
{"u3g_sein", "(jeho)", "(his)"},
{"u3g_ihr_sie", "(její)", "(her)"},
{"u3g_sein_es", "(jeho)", "(its)"},
{"u3g_unser", "(náš)", "(our)"},
{"u3g_euer", "(váš)", "(your)"},
{"u3g_ihr_sie_pl", "(jejich)", "(their)"},
/* ex9 kein / nicht */
{"Mluvíš španělsky? – Ne, nemluvím španělsky.", NULL,
"Do you speak Spanish? – No, I don't speak any Spanish."},
{"Máš bratra? – Ne, nemám bratra.", NULL,
"Have you got a brother? – No, I haven't got a brother."},
{"Je v Opavě zoo? – Ne, v Opavě žádná zoo není.", NULL,
"Is there a zoo in Opava? – No, there is no zoo in Opava."},
{"Jdeš do bazénu? – Ne, do bazénu nejdu.", NULL,
"Are you going to the swimming pool? – No, I am not going to the swimming pool."},
{"Rád chodí na túry? – Ne, nerad chodí na túry.", NULL,
"Does he like hiking? – No, he does not like hiking."},
{"Navštívíš dnes zámek? – Ne, dnes nenavštívím žádný zámek.", NULL,
"Are you visiting a castle today? – No, I am not visiting a castle today."},
/* ex10 sentence order */
{"Mají želvu.", NULL, "They have a tortoise."},
{"Co dělá tvoje kamarádka o víkendu?", NULL,
"What does your friend do at the weekend?"},
{"Můj otec je povoláním učitel.", NULL,
"My father is a teacher by profession."},
{"Je vás doma hodně?", NULL, "Are there many of you at home?"},
{"Julie představuje svého psa Trixiho.", NULL,
"Julia is introducing her dog Trixi."},
/* ex11 what do you see */
{"Vidím hrad / zámek.", NULL, "I see a castle."},
{"Vidím jezero.", NULL, "I see a lake."},
{"Vidím rodinu.", NULL, "I see a family."},
/* ex12 whose is it */
{"To je jeho mobil.", NULL, "That is his mobile."},
{"To je její králík.", NULL, "That is her rabbit."},
{"To jsou jejich brusle.", NULL, "Those are their inline skates."},
{"To je její dort.", NULL, "That is her cake."},
{"To je jeho dům.", NULL, "That is his house."},
{"To jsou jejich děti.", NULL, "Those are their children."},
/* ex13 es gibt */
{"Je tu koncert.", NULL, "There is a concert."},
{"Je tu výstava.", NULL, "There is an exhibition."},
{"Je tu sportovní slavnost.", NULL, "There is a sports festival."},
{"Je tu rodinné setkání.", NULL, "There is a family reunion."},
{"Je tu divadelní představení.", NULL, "There is a theatre performance."},
{"Je tu bleší trh.", NULL, "There is a flea market."},
/* ex14 describe (sentence pairs) */
{"Vidím ženu.", NULL, "I see a woman."},
{"Jezdí na kole.", NULL, "She is riding a bike."},
{"Vidím muže.", NULL, "I see a man."},
{"Chodí po lese.", NULL, "He is hiking in the forest."},
{"Vidím dvě děti.", NULL, "I see two children."},
{"Hrají fotbal.", NULL, "They are playing football."},
/* ex15 missing letters (weekend) */
{"Moji prarodiče jedou o víkendu do víkendového domu.", NULL,
"My grandparents are driving to their weekend house."},
{"Můj otec a moje matka navštíví koncert.", NULL,
"My father and my mother are going to a concert."},
{"Moje sestra jde do kina.", NULL,
"My sister is going to the cinema."},
{"Můj bratr jede k jezeru.", NULL,
"My brother is driving to a lake."},
{"A já? Navštívím obchodní centrum.", NULL,
"And me? I am going to a shopping centre."},
/* ---- unit 1: Wörter übersetzen (page headers) ---- */
{"Strana 10", NULL, "Page 10"},
{"Strana 11", NULL, "Page 11"},
{"Strana 12", NULL, "Page 12"},
{"Strana 13", NULL, "Page 13"},
{"Strana 14", NULL, "Page 14"},
{"Strana 15", NULL, "Page 15"},
/* ---- unit 1: Wörter übersetzen (word meanings) ---- */
{"večer", NULL, "evening"},
{"Dobrý večer!", NULL, "Good evening!"},
{"ty", NULL, "you"},
{"Těší mě.", NULL, "Nice to meet you."},
{"dobrý", NULL, "good"},
{"Ahoj!", NULL, "Hello!"},
{"jmenovat se", NULL, "to be called"},
{"Jmenuji se Jens.", NULL, "My name is Jens."},
{"Ahoj! (neformálně)", NULL, "Hi! (informal)"},
{"já", NULL, "I"},
{"vy", NULL, "you (plural)"},
{"ano", NULL, "yes"},
{"ráno", NULL, "morning"},
{"jméno", NULL, "name"},
{"ne", NULL, "no"},
{"je", NULL, "is"},
{"den", NULL, "day"},
{"Dobrý den!", NULL, "Good day!"},
{"a", NULL, "and"},
{"kdo", NULL, "who"},
{"Kdo jsi?", NULL, "Who are you?"},
{"jak", NULL, "how"},
{"my", NULL, "we"},
{"v", NULL, "in"},
{"poblíž, v blízkosti", NULL, "near, in the vicinity"},
{"hra", NULL, "game"},
{"kde", NULL, "where"},
{"bydlet", NULL, "to live"},
{"Kde bydlíš?", NULL, "Where do you live?"},
{"nula", NULL, "zero"},
{"jedna", NULL, "one"},
{"dvě", NULL, "two"},
{"tři", NULL, "three"},
{"čtyři", NULL, "four"},
{"pět", NULL, "five"},
{"sedm", NULL, "seven"},
{"osm", NULL, "eight"},
{"devět", NULL, "nine"},
{"deset", NULL, "ten"},
{"jedenáct", NULL, "eleven"},
{"dvanáct", NULL, "twelve"},
{"patnáct", NULL, "fifteen"},
{"šestnáct", NULL, "sixteen"},
{"osmnáct", NULL, "eighteen"},
{"devatenáct", NULL, "nineteen"},
{"starý", NULL, "old"},
{"on", NULL, "he"},
{"měsíc", NULL, "month"},
{"ona", NULL, "she"},
{"oni", NULL, "they"},
{"ale", NULL, "but"},
{"věk", NULL, "age"},
{"také", NULL, "also"},
{"(hudební) skupina", NULL, "(music) band"},
{"chatovat", NULL, "to chat"},
{"počítačová hra", NULL, "computer game"},
{"e-mail", NULL, "email"},
{"angličtina, anglicky", NULL, "English"},
{"fanoušek", NULL, "fan"},
{"francouzština, francouzsky", NULL, "French"},
{"kamarádka", NULL, "friend (f.)"},
{"nejlepší kamarádka", NULL, "best friend (f.)"},
{"fotbal", NULL, "football"},
{"Je fotbalový fanatik.", NULL, "He is a football fanatic."},
{"jít", NULL, "to go"},
{"Rád(a) chodím na koncerty.", NULL, "I like going to concerts."},
{"rád/a", NULL, "gladly"},
{"kytara", NULL, "guitar"},
{"mobil", NULL, "mobile phone"},
{"koníček", NULL, "hobby"},
{"poslouchat", NULL, "to listen"},
{"Rád poslouchá hudbu.", NULL, "He likes listening to music."},
{"surfovat na internetu", NULL, "to surf the internet"},
{"pořád, neustále", NULL, "always"},
{"rok", NULL, "year"},
{"žádný/žádná/žádné", NULL, "no / none"},
{"klavír", NULL, "piano"},
{"přicházet, pocházet (z)", NULL, "to come (from)"},
{"Pochází z Vídně.", NULL, "He comes from Vienna."},
{"koncert", NULL, "concert"},
{"ležet", NULL, "to lie"},
{"příjmení", NULL, "surname"},
{"nedaleko od", NULL, "not far from"},
{"cestovat", NULL, "to travel"},
{"psát", NULL, "to write"},
{"škola", NULL, "school"},
{"hrát", NULL, "to play"},
{"Hraje na kytaru.", NULL, "She plays the guitar."},
{"tancovat", NULL, "to dance"},
{"křestní jméno", NULL, "first name"},
{"bydliště", NULL, "place of residence"},
{"nesprávně, chybně", NULL, "wrong, incorrectly"},
{"flétna", NULL, "flute"},
{"(hudební) nástroj", NULL, "(musical) instrument"},
{"teď", NULL, "now"},
{"dělat", NULL, "to do"},
{"správně", NULL, "correctly"},
{"sport", NULL, "sport"},
{"sportovat", NULL, "to do sport"},
{"squash", NULL, "squash"},
{"jóga", NULL, "yoga"},
{"brzy", NULL, "soon"},
{"Brzy na shledanou!", NULL, "See you soon!"},
{"do", NULL, "until"},
{"Do příštího setkání!", NULL, "Until next time!"},
{"paní", NULL, "woman / Mrs."},
{"pan", NULL, "man / Mr."},
{"Měj se hezky!", NULL, "Take care!"},
{"muzeum", NULL, "museum"},
{"Jdou do muzea.", NULL, "They are going to the museum."},
{"hezký", NULL, "beautiful"},
{"Hezký zbytek dne!", NULL, "Have a nice rest of the day!"},
{"Ahoj! (servus)", NULL, "Hi! (Servus)"},
{"Ahoj! (při loučení)", NULL, "Bye!"},
{"shledání", NULL, "reunion"},
{"Na shledanou!", NULL, "Goodbye!"},
{"John von Neumann – americký matematik", NULL,
"John von Neumann – American mathematician"},
{"Americký matematik s objevy v digitálních počítačích", NULL,
"American mathematician with discoveries in digital computers"},
{"ALS = aritmeticko-logická jednotka", NULL,
"ALU = arithmetic-logic unit"},
{"Řadič řídí činnost ostatních částí", NULL,
"The control unit directs the other parts"},
{"Operační paměť uchovává program i data", NULL,
"Main memory stores both the program and data"},
{"Byl tvůrcem teorie her", NULL, "He created game theory"},
{"Nultá generace: 1938–1944", NULL, "Zeroth generation: 1938–1944"},
{"Jen několik počítačů, většinou vojenský účel", NULL,
"Only a few computers, mostly for military use"},
{"1. generace – objev elektronky", NULL,
"1st generation – invention of the vacuum tube"},
{"1. generace – děrné štítky", NULL, "1st generation – punch cards"},
{"2. generace – objev tranzistoru", NULL,
"2nd generation – invention of the transistor"},
{"3. generace – integrovaný obvod", NULL,
"3rd generation – integrated circuit"},
{"4. generace – programovatelné mikroprocesory", NULL,
"4th generation – programmable microprocessors"},
{"1972 – první počítačová hra", NULL, "1972 – first computer game"},
{"Bit = dvojková číslice, nejmenší jednotka informace", NULL,
"A bit is a binary digit, the smallest unit of information"},
{"Bit nabývá hodnoty 0 nebo 1", NULL, "A bit is either 0 or 1"},
{"Byte = nejmenší adresovatelná jednotka paměti", NULL,
"A byte is the smallest addressable unit of memory"},
{"1 B = 8 b", NULL, "1 B = 8 b"},
{NULL, NULL, NULL}
};
const char *tr(const char *key) {
static GHashTable *idx;
const TrEntry *e;
int i;
if (!key)
return NULL;
if (!idx) {
idx = g_hash_table_new(g_str_hash, g_str_equal);
for (i = 0; tr_ui[i].key; i++)
g_hash_table_insert(idx, (gpointer)tr_ui[i].key,
(gpointer)&tr_ui[i]);
for (i = 0; tr_content[i].key; i++)
g_hash_table_insert(idx, (gpointer)tr_content[i].key,
(gpointer)&tr_content[i]);
}
e = g_hash_table_lookup(idx, key);
if (!e)
return key;
if (app_lang == LANG_EN)
return e->en;
return e->cs ? e->cs : e->key;
}
void i18n_ensure(void) {
if (!i18n_binds)
i18n_binds = g_array_new(FALSE, FALSE, sizeof(I18nBind));
}
void i18n_apply_one(const I18nBind *b) {
if (!b->widget || !b->key)
return;
switch (b->kind) {
case 0:
gtk_label_set_text(GTK_LABEL(b->widget), tr(b->key));
break;
case 1:
gtk_button_set_label(GTK_BUTTON(b->widget), tr(b->key));
break;
case 2:
gtk_widget_set_tooltip_text(b->widget, tr(b->key));
break;
case 3:
gtk_entry_set_placeholder_text(GTK_ENTRY(b->widget), tr(b->key));
break;
case 4:
ex4_fill_sample(b->widget);
break;
default:
break;
}
}
void i18n_bind(GtkWidget *widget, const char *key, int kind) {
I18nBind b;
i18n_ensure();
b.widget = widget;
b.key = key;
b.kind = kind;
g_array_append_val(i18n_binds, b);
i18n_apply_one(&b);
}
void refresh_welcome_heading(void) {
char *markup;
if (!welcome_heading)
return;
if (app_lang == LANG_EN)
markup = g_strdup_printf(
"Welcome to <span color=\"#%06x\">maturita.C</span>!",
app_theme.accent);
else
markup = g_strdup_printf(
"Vítejte ve <span color=\"#%06x\">maturita.C</span>!",
app_theme.accent);
gtk_label_set_markup(GTK_LABEL(welcome_heading), markup);
g_free(markup);
}
void refresh_stats_ui(void);
void net_lessons_apply_lang(void);
void hw_lessons_apply_lang(void);
void net_rail_theme_reset(void);
void apply_language(void) {
guint i;
i18n_ensure();
for (i = 0; i < i18n_binds->len; i++)
i18n_apply_one(&g_array_index(i18n_binds, I18nBind, i));
refresh_welcome_heading();
refresh_stats_ui();
net_lessons_apply_lang();
hw_lessons_apply_lang();
}