Spaces:
Sleeping
Sleeping
| # Using Public space/ | |
| import requests | |
| import gradio as gr | |
| # Language dropdown: Display label β (from_code, to_code) | |
| LANGUAGES = { | |
| "English β Afrikaans": ("en", "af"), | |
| "English β Xhosa": ("en", "xh"), | |
| "English β Zulu": ("en", "zu"), | |
| "English β Sesotho": ("en", "st"), | |
| "English β Northern Sotho (Sepedi)": ("en", "nso"), | |
| "English β Tsonga": ("en", "ts"), | |
| "English β Shona": ("en", "sn"), | |
| "English β Yoruba": ("en", "yo"), | |
| "English β Swahili": ("en", "sw"), | |
| } | |
| API_URL = "https://sepioo-facebook-translation.hf.space/translate" | |
| def translate(input_text, language_label): | |
| from_lang, to_lang = LANGUAGES[language_label] | |
| payload = { | |
| "from_language": from_lang, | |
| "to_language": to_lang, | |
| "input_text": input_text, | |
| } | |
| response = requests.post(API_URL, json=payload) | |
| if response.status_code != 200: | |
| return f"Error {response.status_code}: {response.text}" | |
| try: | |
| data = response.json() | |
| if "translate" in data: | |
| return data["translate"] | |
| elif "detail" in data: | |
| return f"Validation error: {data['detail']}" | |
| else: | |
| return "Unexpected response format." | |
| except Exception as e: | |
| return f"Error parsing response: {e}" | |
| # Gradio UI | |
| translator = gr.Interface( | |
| fn=translate, | |
| inputs=[ | |
| gr.Textbox(label="Input Text", placeholder="Type English text here..."), | |
| gr.Dropdown(list(LANGUAGES.keys()), label="Select Language Target"), | |
| ], | |
| outputs=gr.Textbox(label="Translation"), | |
| title="Translademia", | |
| description="Translate English to South African languages", | |
| ) | |
| translator.launch() | |
| # import requests | |
| # import gradio as gr | |
| # from dotenv import load_dotenv | |
| # from transformers import MBart50TokenizerFast | |
| # import os | |
| # # Load environment variables | |
| # load_dotenv() | |
| # HF_TOKEN = os.getenv("HF_TOKEN") | |
| # headers = {"Authorization": f"Bearer {HF_TOKEN}"} | |
| # # Correct mBART-50 language codes | |
| # LANGUAGES = { | |
| # "English β Afrikaans": "af_ZA", | |
| # "English β Xhosa": "xh_ZA", | |
| # "English β Zulu": "zu_ZA", | |
| # "English β Sesotho": "st_ZA", # Southern Sotho | |
| # "English β Tswana": "tn_ZA", | |
| # # The following are *not officially* supported by mBART-50 and may raise errors | |
| # # You can remove them if not working | |
| # # "English β Northern Sotho": "nso_ZA", | |
| # # "English β Swati": "ss_ZA", | |
| # # "English β Tsonga": "ts_ZA", | |
| # # "English β Venda": "ve_ZA", | |
| # } | |
| # MODEL_NAME = "facebook/mbart-large-50-many-to-many-mmt" | |
| # API_URL = f"https://api-inference.huggingface.co/models/{MODEL_NAME}" | |
| # # Load tokenizer to get language token IDs | |
| # tokenizer = MBart50TokenizerFast.from_pretrained(MODEL_NAME) | |
| # def get_token_id(lang_code): | |
| # """Return the forced_bos_token_id for the target language.""" | |
| # return tokenizer.lang_code_to_id[lang_code] | |
| # def query(payload): | |
| # """Send the translation request to the Hugging Face API.""" | |
| # response = requests.post(API_URL, headers=headers, json=payload) | |
| # if response.status_code != 200: | |
| # print(f"[ERROR] API failed: {response.status_code} - {response.text}") | |
| # return {"error": f"Request failed with {response.status_code}"} | |
| # try: | |
| # return response.json() | |
| # except requests.exceptions.JSONDecodeError: | |
| # print(f"[ERROR] Failed to parse JSON: {response.text}") | |
| # return {"error": "Invalid JSON from API"} | |
| # def translate(input_text, language_label): | |
| # """Main translation function.""" | |
| # target_lang_code = LANGUAGES[language_label] | |
| # token_id = get_token_id(target_lang_code) | |
| # payload = { | |
| # "inputs": input_text, | |
| # "parameters": {"forced_bos_token_id": token_id}, | |
| # "options": {"wait_for_model": True}, | |
| # } | |
| # response = query(payload) | |
| # if "error" in response: | |
| # return f"Error: {response['error']}" | |
| # return response[0]["translation_text"] | |
| # # Gradio UI | |
| # translator = gr.Interface( | |
| # fn=translate, | |
| # inputs=[ | |
| # gr.Textbox(label="Input Text", placeholder="Type text here..."), | |
| # gr.Dropdown(list(LANGUAGES.keys()), label="Select Language Target"), | |
| # ], | |
| # outputs=gr.Textbox(label="Translation"), | |
| # title="Translademia", | |
| # description="Translate English text to South African languages using Meta's mBART-50 model.", | |
| # ) | |
| # translator.launch() | |