From c3548bffe14c6bcfbb5dc7c10a15bd5f45b70ad5 Mon Sep 17 00:00:00 2001
From: Piero Toffanin <pt@masseranolabs.com>
Date: Fri, 4 Mar 2022 10:24:29 -0500
Subject: [PATCH] Memoize

---
 app/language.py | 16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)

diff --git a/app/language.py b/app/language.py
index cabdfc5..78ae92a 100644
--- a/app/language.py
+++ b/app/language.py
@@ -4,11 +4,15 @@ from argostranslate import translate
 from polyglot.detect.base import Detector, UnknownLanguage
 from polyglot.transliteration.base import Transliterator
 
-
+__languages = None
 
 def load_languages():
-    languages = translate.load_installed_languages()
-    return languages
+    global __languages
+
+    if __languages is None or len(__languages) == 0:
+        __languages = translate.load_installed_languages()
+
+    return __languages
 
 def detect_languages(text):
     # detect batch processing
@@ -34,11 +38,11 @@ def detect_languages(text):
 
     # Load language codes
     languages = load_languages()
-    __lang_codes = [l.code for l in languages]
+    lang_codes = [l.code for l in languages]
 
     # only use candidates that are supported by argostranslate
     candidate_langs = list(
-        filter(lambda l: l.text_length != 0 and l.code in __lang_codes, candidates)
+        filter(lambda l: l.text_length != 0 and l.code in lang_codes, candidates)
     )
 
     # this happens if no language could be detected
@@ -50,7 +54,7 @@ def detect_languages(text):
     # calculate the average confidence for each language
     if is_batch:
         temp_average_list = []
-        for lang_code in __lang_codes:
+        for lang_code in lang_codes:
             # get all candidates for a specific language
             lc = list(filter(lambda l: l.code == lang_code, candidate_langs))
             if len(lc) > 1:
-- 
GitLab