Spaces:
Sleeping
Sleeping
import asyncio | |
from smolagents import Tool | |
from googletrans import Translator | |
from typing import Optional | |
class TranslateTool(Tool): | |
name = "google_translate" | |
description = """ | |
Translates text from one language to another using the Google Translate API. | |
Supports a wide range of languages using standard language codes (e.g., 'en' for English, 'fr' for French). | |
If source_language is not specified, it will be auto-detected. If target_language is not specified, it defaults to English ('en'). | |
""" | |
inputs = { | |
"text": { | |
"type": "string", | |
"description": "The text to translate." | |
}, | |
"source_language": { | |
"type": "string", | |
"description": "The source language code (e.g., 'en' for English, 'fr' for French).", | |
}, | |
"target_language": { | |
"type": "string", | |
"description": "The target language code (e.g., 'es' for Spanish, 'de' for German).", | |
} | |
} | |
output_type = "string" | |
async def translate_text(text: str, src: str, dest: str): | |
async with Translator() as translator: | |
res = await translator.translate(text, src, dest) | |
return res | |
def forward(self, text: str, source_language: str, target_language: str): | |
try: | |
translator = Translator() | |
translation = asyncio.run(translator.translate(text, src=source_language, dest=target_language)) | |
return translation.text | |
except Exception as e: | |
return f"Error: Unable to translate due to {e}" | |