Spaces:
Runtime error
Runtime error
import gradio as gr | |
from utils.helpers import load_content, check_spelling, check_translation, get_random_exercise, check_reading_answer | |
def intermediate_component(): | |
content = load_content() | |
with gr.Column() as intermediate: | |
# Vocabulary Section | |
with gr.Tab("Vocabulary"): | |
gr.Markdown("### Intermediate Vocabulary") | |
word_display = gr.Textbox(label="Afrikaans Word") | |
translation_hidden = gr.Textbox(visible=False) | |
sentence_display = gr.Textbox(label="Example Sentence") | |
user_translation = gr.Textbox(label="Your Translation") | |
check_btn = gr.Button("Check") | |
result = gr.Textbox(label="Result") | |
next_btn = gr.Button("Next Word") | |
def get_vocab(): | |
exercise = get_random_exercise("vocabulary", "intermediate") | |
return exercise["word"], exercise["translation"], exercise["sentence"] | |
def check_vocab(user_input, correct): | |
return "Correct! β" if check_translation(user_input, correct) else "Try again" | |
next_btn.click(fn=get_vocab, outputs=[word_display, translation_hidden, sentence_display]) | |
check_btn.click(fn=check_vocab, inputs=[user_translation, translation_hidden], outputs=[result]) | |
# Grammar Section | |
with gr.Tab("Grammar"): | |
gr.Markdown("### Intermediate Grammar") | |
for rule in content["grammar"]["intermediate"]: | |
with gr.Accordion(rule["rule"], open=False): | |
gr.Markdown(rule["explanation"]) | |
# Reading Section | |
with gr.Tab("Reading"): | |
gr.Markdown("### Intermediate Reading") | |
for text in content["reading"]["intermediate"]: | |
with gr.Accordion(text["title"], open=False): | |
gr.Markdown(text["text"]) | |
for i, question in enumerate(text["questions"]): | |
gr.Markdown(f"**Question {i+1}:** {question}") | |
answer = gr.Textbox(label="Your Answer") | |
result = gr.Textbox(label="Result") | |
check_btn = gr.Button(f"Check Answer {i+1}") | |
check_btn.click( | |
fn=lambda ans, idx=i, txt=text: "Correct! β" | |
if check_reading_answer(ans, idx, txt) else "Try again", | |
inputs=[answer], | |
outputs=[result] | |
) | |
return intermediate |