Mgolo commited on
Commit
34b9253
·
verified ·
1 Parent(s): 89945e5

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +60 -8
app.py CHANGED
@@ -3,10 +3,10 @@ LocaleNLP Translation Service
3
  ============================
4
 
5
  A multi-language translation application supporting English, Wolof, Hausa, and Darija.
6
- Features text, audio, and document translation with a modern web interface.
7
 
8
  Author: LocaleNLP Team
9
- Version: 1.0.0
10
  """
11
 
12
  import os
@@ -280,7 +280,7 @@ class TranslationService:
280
  target_lang: Language
281
  ) -> str:
282
  """
283
- Translate text from source to target language.
284
 
285
  Args:
286
  text: Input text to translate
@@ -292,11 +292,63 @@ class TranslationService:
292
  """
293
  if not text.strip():
294
  return "No input text to translate."
295
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
296
  pipeline_obj, lang_tag = self.model_manager.get_translation_pipeline(
297
  source_lang, target_lang
298
  )
299
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
300
  # Process text in paragraphs
301
  paragraphs = text.splitlines()
302
  translated_paragraphs = []
@@ -420,7 +472,7 @@ class TranslationApp:
420
 
421
  with gr.Blocks(
422
  title="LocaleNLP Translation Service",
423
- theme=gr.themes.Soft()
424
  ) as interface:
425
  # Header
426
  gr.Markdown("""
@@ -437,7 +489,7 @@ class TranslationApp:
437
  )
438
 
439
  input_lang = gr.Dropdown(
440
- choices=[lang.value for lang in Language if lang != Language.DARIJA],
441
  label="Input Language",
442
  value=Language.ENGLISH.value
443
  )
@@ -477,12 +529,12 @@ class TranslationApp:
477
 
478
  translate_btn = gr.Button(
479
  "🔄 Process & Translate",
480
- variant="primary"
481
  )
482
 
483
  output_text = gr.Textbox(
484
  label="Translated Text",
485
- lines=8,
486
  interactive=False
487
  )
488
 
 
3
  ============================
4
 
5
  A multi-language translation application supporting English, Wolof, Hausa, and Darija.
6
+ Features text, audio, and document translation with automatic chaining for all language pairs.
7
 
8
  Author: LocaleNLP Team
9
+ Version: 1.0
10
  """
11
 
12
  import os
 
280
  target_lang: Language
281
  ) -> str:
282
  """
283
+ Translate text from source to target language with automatic chaining.
284
 
285
  Args:
286
  text: Input text to translate
 
292
  """
293
  if not text.strip():
294
  return "No input text to translate."
295
+
296
+ # Direct translation if model exists
297
+ if (source_lang, target_lang) in TRANSLATION_MODELS:
298
+ return self._direct_translate(text, source_lang, target_lang)
299
+
300
+ # Automatic chaining through English
301
+ return self._chained_translate(text, source_lang, target_lang)
302
+
303
+ def _direct_translate(
304
+ self,
305
+ text: str,
306
+ source_lang: Language,
307
+ target_lang: Language
308
+ ) -> str:
309
+ """Perform direct translation using available model."""
310
  pipeline_obj, lang_tag = self.model_manager.get_translation_pipeline(
311
  source_lang, target_lang
312
  )
313
 
314
+ return self._process_text_with_pipeline(text, pipeline_obj, lang_tag)
315
+
316
+ def _chained_translate(
317
+ self,
318
+ text: str,
319
+ source_lang: Language,
320
+ target_lang: Language
321
+ ) -> str:
322
+ """
323
+ Perform chained translation through English as intermediate language.
324
+
325
+ Args:
326
+ text: Input text to translate
327
+ source_lang: Source language
328
+ target_lang: Target language
329
+
330
+ Returns:
331
+ Translated text through chaining
332
+ """
333
+ # First: source_lang -> English
334
+ intermediate_text = self._direct_translate(
335
+ text, source_lang, Language.ENGLISH
336
+ )
337
+
338
+ # Second: English -> target_lang
339
+ final_text = self._direct_translate(
340
+ intermediate_text, Language.ENGLISH, target_lang
341
+ )
342
+
343
+ return final_text
344
+
345
+ def _process_text_with_pipeline(
346
+ self,
347
+ text: str,
348
+ pipeline_obj: Any,
349
+ lang_tag: str
350
+ ) -> str:
351
+ """Process text using translation pipeline."""
352
  # Process text in paragraphs
353
  paragraphs = text.splitlines()
354
  translated_paragraphs = []
 
472
 
473
  with gr.Blocks(
474
  title="LocaleNLP Translation Service",
475
+ theme=gr.themes.Base(primary_hue=gr.themes.colors.black)
476
  ) as interface:
477
  # Header
478
  gr.Markdown("""
 
489
  )
490
 
491
  input_lang = gr.Dropdown(
492
+ choices=[lang.value for lang in Language],
493
  label="Input Language",
494
  value=Language.ENGLISH.value
495
  )
 
529
 
530
  translate_btn = gr.Button(
531
  "🔄 Process & Translate",
532
+ variant="secondary"
533
  )
534
 
535
  output_text = gr.Textbox(
536
  label="Translated Text",
537
+ lines=10,
538
  interactive=False
539
  )
540