Spaces:
Running
Running
File size: 2,772 Bytes
9b0a8c5 1cfc9e8 9b0a8c5 1cfc9e8 9b0a8c5 1cfc9e8 9b0a8c5 1cfc9e8 9b0a8c5 1cfc9e8 9b0a8c5 1cfc9e8 9b0a8c5 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
import os.path
import gradio as gr
from functools import partial
from .main_page import sort_with_pyuca
def update_language_options(selected_country, metadata):
with open(metadata["USA"]["English"]["Intro"], "r", encoding="utf-8") as f:
INTRO_TEXT = f.read() # default
# Retrieve the list of languages available for the selected country.
if selected_country in metadata:
languages = sort_with_pyuca(list(metadata[selected_country].keys()))
if len(languages) == 0:
gr.Warning("No languages available for the selected country.")
return gr.Dropdown(choices=[], interactive=False, value=None), gr.Markdown(INTRO_TEXT)
# select the first language as default
fn = metadata[selected_country][languages[0]]["Intro"]
if os.path.exists(fn):
with open(fn, "r", encoding="utf-8") as f:
INTRO_TEXT = f.read()
# Use gr.Dropdown.update to change the choices of the language dropdown.
val = languages[0] if len(languages) == 1 else None
return gr.Dropdown(choices=languages, interactive=True, value=val, allow_custom_value=False), gr.Markdown(INTRO_TEXT)
else:
return gr.Dropdown(choices=[], interactive=False, value=None, allow_custom_value=False), gr.Markdown(INTRO_TEXT)
def build_selection_page(metadata_dict):
with gr.Column(visible=True, elem_classes=["compact-container"]) as selection_page:
with gr.Row():
with open(metadata_dict["USA"]["English"]["Intro"], "r", encoding="utf-8") as f:
INTRO_TEXT = f.read()
intro_markdown = gr.Markdown(INTRO_TEXT)
gr.Markdown("## Please select your country")
countries = sort_with_pyuca(list(metadata_dict.keys()))
country_choice = gr.Dropdown(
choices=countries, label="Country", allow_custom_value=False, value=None,
)
language_choice = gr.Dropdown(
choices=[],
label="Language",
allow_custom_value=False,
interactive=False # Initially disabled.
)
# When the country selection changes, update the language dropdown.
country_choice.change(
fn=partial(update_language_options, metadata=metadata_dict),
inputs=country_choice,
outputs=[language_choice, intro_markdown]
)
with gr.Row():
username = gr.Textbox(label="Email (optional)", type="email", elem_id="username_text")
password = gr.Textbox(label="Password (optional)", type="password", elem_id="password_text")
proceed_btn = gr.Button("Proceed")
return selection_page, country_choice, language_choice, proceed_btn, username, password, intro_markdown
|