import gradio as gr from language_directions import * from transformers import pipeline source_lang_dict = get_all_source_languages() target_lang_dict = {} source_languages = source_lang_dict.keys() def source_dropdown_changed(source_dropdown, input_text=""): global target_lang_dict target_lang_dict = get_target_languages(source_lang_dict[source_dropdown], input_text) target_languages = target_lang_dict.keys() default_target_value = None if "English" in target_languages or "english" in target_languages: default_target_value = "English" else: default_target_value = target_languages[0] target_dropdown = gr.Dropdown(choices=target_languages, value=default_target_value, label="Target Language") return target_dropdown def translate(input_text, source, target): if source == "Auto Detect": source, _ = auto_detect_language_code(input_text) target_lang_dict = get_target_languages(source) target = target_lang_dict[target] model = f"Helsinki-NLP/opus-mt-{source}-{target}" pipe = pipeline("translation", model=model) translation = pipe(input_text) return translation[0]['translation_text'] with gr.Blocks() as demo: gr.HTML("""

Open Translate

""") with gr.Row(): with gr.Column(): source_language_dropdown = gr.Dropdown(choices=source_languages, value="Auto Detect", label="Source Language") input_textbox = gr.Textbox(lines=5, placeholder="Enter text to translate", label="Input Text") with gr.Column(): target_language_dropdown = gr.Dropdown(choices=["English", "French", "Spanish"], value="English", label="Target Language") translated_textbox = gr.Textbox(lines=5, placeholder="", label="Translated Text") btn = gr.Button("Translate") source_language_dropdown.change(source_dropdown_changed, inputs=source_language_dropdown, outputs=target_language_dropdown) btn.click(translate, inputs=[input_textbox, source_language_dropdown, target_language_dropdown], outputs=translated_textbox) gr.Examples(["Je te rencontre au café", "Répétez s'il vous plaît."], inputs=[input_textbox]) if __name__ == "__main__": demo.launch()