# from responses import start import gradio as gr from language_directions import * from examples import example_sentences import os import asyncio from translator import translate_text target_lang_dict = get_all_source_languages() target_languages = target_lang_dict.keys() def get_target_dropdown(current_value=None): target_languages = list(target_lang_dict.keys()) default_target_value = current_value if current_value in target_languages else None if default_target_value is None: if "Spanish" in target_languages or "spanish" in target_languages: default_target_value = "Spanish" 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 get_dropdown_value(dropdown): if isinstance(dropdown, gr.Dropdown): dropdown_value = dropdown.constructor_args.get('value') elif isinstance(dropdown, str): dropdown_value = dropdown return dropdown_value def get_dropdowns(target_dropdown): target_language_name = get_dropdown_value(target_dropdown) target_dropdown = get_target_dropdown(current_value=target_language_name) return target_dropdown def input_changed(target_language_dropdown): return get_dropdowns(target_dropdown=target_language_dropdown) async def translate(input_text, target): print(f"Translating text: {input_text}") print(f"Target language: {target}") if target in target_lang_dict.keys(): target = target_lang_dict[target] else: raise KeyError(f"Target language {target} not found in target_lang_dict") print(f"Resolved target language: {target}") translation = await translate_text(input_text, target) print(f"Translation result: {translation}") # Ensure newlines are properly parsed translation = translation.replace("\\n", "\n") return translation, "" with gr.Blocks() as demo: gr.HTML("""

Jaga 3

""") with gr.Row(): with gr.Column(): input_textbox = gr.Textbox(lines=5, placeholder="Enter text to translate (source language will be auto-detected)", label="Input Text") with gr.Column(): target_language_dropdown = gr.Dropdown(choices=target_languages, value="Spanish" if "Spanish" in target_languages else list(target_languages)[0], label="Target Language") translated_textbox = gr.Textbox(lines=5, placeholder="", label="Translated Text") info_label = gr.HTML("") btn = gr.Button("Translate") input_textbox.change(input_changed, inputs=[target_language_dropdown], outputs=[target_language_dropdown]) btn.click(lambda *args: asyncio.run(translate(*args)), inputs=[input_textbox, target_language_dropdown], outputs=[translated_textbox, info_label]) gr.Examples(example_sentences, inputs=[input_textbox]) if __name__ == "__main__": print("Launching Gradio app...") print(f"Environment Variables: OPENAI_API_KEY={os.getenv('OPENAI_API_KEY')}, LANGCHAIN_API_KEY={os.getenv('LANGCHAIN_API_KEY')}, LANGCHAIN_HUB_API_KEY={os.getenv('LANGCHAIN_HUB_API_KEY')}") demo.launch()