jaga-translate / app.py
gburgardt's picture
Upload folder using huggingface_hub
f702944 verified
# 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("""<html>
<head>
<style>
h1 {
text-align: center;
}
</style>
</head>
<body>
<h1>Jaga 3</h1>
</body>
</html>""")
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()