File size: 1,441 Bytes
044b795
7dcdeb1
044b795
7dcdeb1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import gradio as gr
from transformers import pipeline

# Create a translation pipeline
model_name = "facebook/nllb-200-1.3B"
translator = pipeline("translation", model=model_name)

# Define available languages
languages = {
    "English": "eng_Latn",
    "French": "fra_Latn",
    "Spanish": "spa_Latn",
    "German": "deu_Latn",
    "Chinese": "zho_Hans",
    "Arabic": "ara_Arab",
    "Russian": "rus_Cyrl",
    "Hindi": "hin_Deva",
    "Japanese": "jpn_Jpan"
}

def translate(text, source_lang, target_lang):
    if not text:
        return ""
    
    source_code = languages.get(source_lang)
    target_code = languages.get(target_lang)
    
    # NLLB requires specific format for translation
    translation = translator(
        text, 
        src_lang=source_code, 
        tgt_lang=target_code,
        max_length=400
    )
    
    return translation[0]["translation_text"]

# Create the Gradio interface
demo = gr.Interface(
    fn=translate,
    inputs=[
        gr.Textbox(label="Input Text", lines=5),
        gr.Dropdown(list(languages.keys()), label="Source Language", value="English"),
        gr.Dropdown(list(languages.keys()), label="Target Language", value="French")
    ],
    outputs=gr.Textbox(label="Translated Text", lines=5),
    title="NLLB-200 Multilingual Translation",
    description="Translate text between multiple languages using Facebook's NLLB-200 model."
)

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