File size: 2,324 Bytes
318711f
 
 
 
 
 
 
8cf3f87
318711f
 
 
8cf3f87
318711f
 
 
 
 
8cf3f87
 
 
 
 
 
 
 
 
 
 
 
318711f
8cf3f87
318711f
 
 
8cf3f87
 
 
 
 
318711f
 
 
8cf3f87
 
 
 
318711f
8cf3f87
 
318711f
 
 
 
8cf3f87
 
 
 
 
 
 
 
 
 
318711f
8cf3f87
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
import torch
import gradio as gr
import json

# Use a pipeline as a high-level helper
from transformers import pipeline

model_path = ("../Models/models--facebook--nllb-200-distilled-600M/snapshots"
             "/f8d333a098d19b4fd9a8b18f94170487ad3f821d")

text_translator = pipeline("translation", model="facebook/nllb-200-distilled-600M",
                         torch_dtype=torch.bfloat16)

# Load the JSON data from the file
with open('language.json', 'r') as file:
    language_data = json.load(file)

# Get all available languages (excluding duplicates with different scripts)
available_languages = []
seen_languages = set()
for entry in language_data:
    base_language = entry['Language'].split('(')[0].strip()
    if base_language not in seen_languages:
        available_languages.append(base_language)
        seen_languages.add(base_language)

# Sort languages alphabetically
available_languages.sort()

def get_FLORES_code_from_language(language):
    # First try exact match
    for entry in language_data:
        if entry['Language'].lower() == language.lower():
            return entry['FLORES-200 code']
    
    # If no exact match, try matching the base language name
    for entry in language_data:
        if entry['Language'].lower().startswith(language.lower()):
            return entry['FLORES-200 code']
    return None

def translate_text(text, destination_language):
    dest_code = get_FLORES_code_from_language(destination_language)
    if dest_code is None:
        return f"Error: Could not find FLORES code for language {destination_language}"
    
    translation = text_translator(text,
                                src_lang="eng_Latn",
                                tgt_lang=dest_code)
    return translation[0]["translation_text"]

gr.close_all()

demo = gr.Interface(
    fn=translate_text,
    inputs=[
        gr.Textbox(label="Input text to translate", lines=6),
        gr.Dropdown(choices=available_languages, label="Select Destination Language")
    ],
    outputs=[gr.Textbox(label="Translated text", lines=4)],
    title="@GenAILearniverse Project 4: Multi Language Translator",
    description="This application translates English text to multiple languages. Select your desired target language from the dropdown menu."
)

if __name__ == "__main__":
    demo.launch()