import os from openai import OpenAI import gradio as gr # ๐Ÿ” Load API key securely api_key = os.getenv("GROQ_API_KEY") # ๐Ÿง  Initialize Groq-compatible OpenAI client client = OpenAI( api_key=api_key, base_url="https://api.groq.com/openai/v1" ) # ๐ŸŒ Language options language_options = [ "Urdu", "Spanish", "French", "German", "Arabic", "Chinese", "Hindi", "Russian", "Japanese", "Turkish", "Korean", "Portuguese", "Italian", "Bengali", "Polish" ] # ๐Ÿง  Translation logic def translate_text(text, target_lang, history): if not text.strip() or not target_lang.strip(): return "โš ๏ธ Please enter both English text and the target language.", history prompt = f"Translate the following English text to {target_lang}:\n\n{text}" try: response = client.chat.completions.create( model="llama3-8b-8192", messages=[{"role": "user", "content": prompt}], temperature=0.5 ) translated = response.choices[0].message.content.strip() history.append(f"๐Ÿ”ค **English:** {text}\n๐ŸŒ **{target_lang}:** {translated}") return translated, history except Exception as e: return f"โŒ Error: {str(e)}", history # ๐ŸŽจ Gradio UI with gr.Blocks(theme=gr.themes.Soft()) as app: gr.Markdown( """ # ๐ŸŒ English Language Translator **Features**: - Translate English text to 15+ languages - Clean modern interface - View translation history """ ) with gr.Row(): with gr.Column(scale=1): text_input = gr.Textbox( label="โœ๏ธ English Text", placeholder="e.g., The building was damaged during the flood.", lines=4 ) with gr.Column(scale=1): lang_input = gr.Dropdown( label="๐ŸŒ Select Target Language", choices=language_options, value="Urdu" ) with gr.Row(): translate_btn = gr.Button("๐ŸŒ Translate") clear_btn = gr.Button("๐Ÿงน Clear") output_box = gr.Textbox(label="๐Ÿ“ Translated Text", lines=6) history_display = gr.Markdown(label="๐Ÿ“œ Translation History") state = gr.State([]) translate_btn.click(fn=translate_text, inputs=[text_input, lang_input, state], outputs=[output_box, state]) clear_btn.click(lambda: ("", "Urdu", "", []), outputs=[text_input, lang_input, output_box, state]) state.change(fn=lambda hist: "\n\n---\n\n".join(hist) if hist else "No translations yet.", inputs=state, outputs=history_display) # ๐Ÿš€ Launch app.launch()