import gradio as gr from deep_translator import GoogleTranslator import os def translate_srt_file(file): with open(file.name, "r", encoding="utf-8") as f: content = f.read() blocks = content.strip().split("\n\n") translated_blocks = [] for block in blocks: lines = block.strip().split("\n") if len(lines) < 3: continue index = lines[0] timecode = lines[1] text_lines = lines[2:] original_text = " ".join(text_lines) try: translated_text = GoogleTranslator(source='en', target='bn').translate(original_text) except Exception as e: translated_text = original_text translated_block = f"{index}\n{timecode}\n{translated_text}" translated_blocks.append(translated_block) output_path = "translated_bn.srt" with open(output_path, "w", encoding="utf-8") as f: f.write("\n\n".join(translated_blocks)) return output_path title = "English ➜ Bengali Subtitle Translator" description = "Upload an `.srt` subtitle file in English. This app will return a translated Bengali version." gr.Interface( fn=translate_srt_file, inputs=gr.File(file_types=[".srt"], label="Upload English .srt file"), outputs=gr.File(label="Download Bengali .srt file"), title=title, description=description, ).launch()