translate / app.py
alperugurcan's picture
all
20a7f16
import gradio as gr
import requests
def translate_text(text, source_lang, target_lang):
if not text.strip():
return ""
url = "https://api.mymemory.translated.net/get"
params = {
"q": text,
"langpair": f"{source_lang}|{target_lang}"
}
try:
response = requests.get(url, params=params)
response.raise_for_status()
data = response.json()
if data["responseStatus"] == 200:
return data["responseData"]["translatedText"]
else:
return f"Translation error: {data['responseDetails']}"
except Exception as e:
return f"Error: {str(e)}"
# Language options
languages = {
"Arabic": "ar",
"Basque": "eu",
"Belarusian": "be",
"Bosnian": "bs",
"Bulgarian": "bg",
"Catalan": "ca",
"Chinese, simplified": "zh_CN",
"Chinese, traditional": "zh_TW",
"Croatian": "hr",
"Czech": "cs",
"Danish": "da",
"Dutch": "nl",
"English": "en",
"Estonian": "et",
"Finnish": "fi",
"French": "fr",
"French, Canadian": "fr_ca",
"Galician": "gl",
"German": "de",
"Greek": "el",
"Hebrew": "he",
"Hungarian": "hu",
"Indonesian": "id",
"Italian": "it",
"Japanese": "ja",
"Korean": "ko",
"Latvian": "lv",
"Lithuanian": "lt",
"Macedonian": "mk",
"Malay": "ms",
"Norwegian Bokmal": "nb",
"Norwegian Nynorsk": "nn",
"Persian": "fa",
"Polish": "pl",
"Portuguese": "pt",
"Portuguese, Brazilian": "pt_BR",
"Romanian": "ro",
"Russian": "ru",
"Serbian, Cyrillic": "sr_Cyrl",
"Serbian, Latin": "sr_Latn",
"Slovak": "sk",
"Slovenian": "sl",
"Spanish": "es",
"Swedish": "sv",
"Thai": "th",
"Turkish": "tr",
"Ukrainian": "uk",
"Valencian": "vc",
"Vietnamese": "vn"
}
# Create Gradio interface
iface = gr.Interface(
fn=translate_text,
inputs=[
gr.Textbox(label="Enter text to translate", placeholder="Type your text here..."),
gr.Dropdown(choices=list(languages.keys()), value="English", label="From"),
gr.Dropdown(choices=list(languages.keys()), value="Spanish", label="To")
],
outputs=gr.Textbox(label="Translation"),
title="🌍 Simple Translator 🌍",
description="Translate text using MyMemory API",
examples=[
["Hello, how are you?", "English", "Spanish"],
["Bonjour, comment allez-vous?", "French", "English"],
["Hola, ¿cómo estás?", "Spanish", "German"]
],
allow_flagging="never",
theme=gr.themes.Citrus()
)
if __name__ == "__main__":
iface.launch()