File size: 2,497 Bytes
f1da97a
352611d
f1da97a
352611d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
f1da97a
352611d
 
f1da97a
 
 
 
 
 
 
 
 
 
 
 
 
 
352611d
 
 
 
 
f1da97a
 
 
 
 
 
 
352611d
 
 
 
 
 
 
f1da97a
 
 
 
 
 
 
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
import gradio as gr
from bs4 import BeautifulSoup

# Function to parse HTML and create a dictionary
def parse_html_to_dict(file_path):
    with open(file_path, 'r', encoding='utf-8') as file:
        html_content = file.read()

    soup = BeautifulSoup(html_content, 'html.parser')
    language_dict = {}
    for p in soup.find_all('p')[1:]:
        parts = p.get_text().split()
        if len(parts) >= 2:
            code = parts[0].strip()
            name = " ".join(parts[1:]).strip()
            language_dict[name] = code
    return language_dict

# Load the languages from the HTML file
file_path = '1100_lan.htm'  # Update this with your actual file path
language_dict = parse_html_to_dict(file_path)
languages = list(language_dict.keys())

# Function to filter languages based on search term
def filter_languages(search_term):
    if not search_term:
        return gr.update(choices=languages, value=None)
    filtered = [lang for lang in languages if search_term.lower() in lang.lower()]
    return gr.update(choices=filtered, value=None if not filtered else filtered[0])

# Function to display the language code
def get_language_code(selected_language):
    return f"Language Code: {language_dict.get(selected_language, 'Unknown')}"

# Gradio interface
def create_searchable_dropdown():
    with gr.Blocks() as demo:
        with gr.Row():
            search_input = gr.Textbox(
                label="Search Language", 
                placeholder="Type to search...",
                show_label=True
            )
        with gr.Row():
            language_dropdown = gr.Dropdown(
                choices=languages,
                label="Select Language",
                show_label=True,
                interactive=True
            )
        with gr.Row():
            language_code_output = gr.Textbox(
                label="Language Code",
                interactive=False
            )
        
        # Update dropdown choices when search input changes
        search_input.change(
            fn=filter_languages,
            inputs=[search_input],
            outputs=language_dropdown
        )
        
        # Display the language code when a language is selected
        language_dropdown.change(
            fn=get_language_code,
            inputs=[language_dropdown],
            outputs=language_code_output
        )
    
    return demo

# Create and launch the interface
if __name__ == "__main__":
    demo = create_searchable_dropdown()
    demo.launch()