sudoping01 commited on
Commit
035d3fc
·
verified ·
1 Parent(s): a735c83

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +92 -5
app.py CHANGED
@@ -1,7 +1,94 @@
1
- import gradio as gr
 
 
2
 
3
- def greet(name):
4
- return "Hello " + name + "!!"
 
 
 
 
 
 
 
 
 
 
 
 
5
 
6
- demo = gr.Interface(fn=greet, inputs="text", outputs="text")
7
- demo.launch()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ mport gradio as gr
2
+ from transformers import pipeline
3
+ from typing import Union, List
4
 
5
+ class BambaraTranslator:
6
+ def __init__(self, model_name: str = "sudoping01/nllb-bambara-v2"):
7
+ self.translator = pipeline(
8
+ "translation",
9
+ model=model_name,
10
+ max_length=512,
11
+ truncation=True ,
12
+ device=-1 # Force CPU
13
+ )
14
+ self.flores_codes = {
15
+ "French": "fra_Latn",
16
+ "English": "eng_Latn",
17
+ "Bambara": "bam_Latn"
18
+ }
19
 
20
+ def translate(self, text: Union[str, List[str]], src_lang: str, tgt_lang: str) -> Union[str, List[str]]:
21
+ source_lang = self.flores_codes[src_lang]
22
+ target_lang = self.flores_codes[tgt_lang]
23
+ if isinstance(text, str):
24
+ translation = self.translator(text, src_lang=source_lang, tgt_lang=target_lang)
25
+ return str(translation[0]['translation_text'])
26
+ translations = self.translator(text, src_lang=source_lang, tgt_lang=target_lang)
27
+ return [str(t['translation_text']) for t in translations]
28
+
29
+ # Initialize translator
30
+ translator = BambaraTranslator()
31
+
32
+ # Three examples (Bambara, French, English)
33
+ examples = [
34
+ "An filɛ ni ye yɔrɔ minna ni an ye an sigi ka a layɛ yala an bɛ ka baara min kɛ ɛsike a kɛlen don ka Ɲɛ wa ? Bɛɛ ka kan ka i jɔyɔrɔ fa walasa an ka se ka taa Ɲɛ",
35
+ "Le Mali est un pays riche en culture mais confronté à de nombreux défis.",
36
+ "The sun rises every morning to bring light to the world."
37
+ ]
38
+
39
+ def translate_text(src_lang, tgt_lang, text):
40
+ if not text.strip():
41
+ return "Please enter text to translate."
42
+ if src_lang == tgt_lang:
43
+ return "Source and target languages must be different."
44
+ try:
45
+ result = translator.translate(text, src_lang, tgt_lang)
46
+ return result
47
+ except Exception as e:
48
+ return f"Error: {str(e)}"
49
+
50
+ with gr.Blocks(title="Bambara Translator") as demo:
51
+ gr.Markdown(
52
+ """
53
+ # 🇲🇱 Bambara Translator
54
+ Translate between Bambara, French, and English instantly.
55
+ ## How to Use
56
+ 1. Pick source and target languages
57
+ 2. Enter text or select an example
58
+ 3. Click "Translate" to see the result
59
+ """
60
+ )
61
+
62
+ with gr.Row():
63
+ src_lang = gr.Dropdown(choices=["Bambara", "French", "English"], label="Source Language", value="Bambara")
64
+ tgt_lang = gr.Dropdown(choices=["Bambara", "French", "English"], label="Target Language", value="French")
65
+ with gr.Column():
66
+ text_input = gr.Textbox(label="Input Text", lines=5, placeholder="Type your text here...")
67
+ example_dropdown = gr.Dropdown(
68
+ choices=examples,
69
+ label="Examples",
70
+ value=examples[0]
71
+ )
72
+
73
+ translate_btn = gr.Button("Translate", variant="primary")
74
+ output = gr.Textbox(label="Translation", lines=3)
75
+
76
+ gr.Markdown(
77
+ """
78
+ By [sudoping01](https://huggingface.co/sudoping01), from [sudoping01/nllb-bambara-v2](https://huggingface.co/sudoping01/nllb-bambara-v2). Fine-tuned on Meta’s NLLB, CC BY-NC 4.0, non-commercial.
79
+ """
80
+ )
81
+
82
+ # Connect functions
83
+ translate_btn.click(
84
+ fn=translate_text,
85
+ inputs=[src_lang, tgt_lang, text_input],
86
+ outputs=output
87
+ )
88
+ example_dropdown.change(
89
+ fn=lambda x: x,
90
+ inputs=example_dropdown,
91
+ outputs=text_input
92
+ )
93
+
94
+ demo.launch()