Fix language detection error

The root cause was load_installed_languages() of argostranslate
being called at the top of the file instead of inside a function,
this caused the list of installed languages to incorrectly be
returned as an empty list.
This commit is contained in:
Ali Sherief 2022-03-04 08:23:11 +00:00
parent bcf051b7ff
commit e23b96f1da
2 changed files with 9 additions and 4 deletions

View file

@ -102,7 +102,7 @@ def create_app(args):
boot(args.load_only) boot(args.load_only)
from app.language import languages from app.language import load_languages
app = Flask(__name__) app = Flask(__name__)
@ -111,6 +111,7 @@ def create_app(args):
if not args.disable_files_translation: if not args.disable_files_translation:
remove_translated_files.setup(get_upload_dir()) remove_translated_files.setup(get_upload_dir())
languages = load_languages()
# Map userdefined frontend languages to argos language object. # Map userdefined frontend languages to argos language object.
if args.frontend_language_source == "auto": if args.frontend_language_source == "auto":

View file

@ -4,11 +4,11 @@ from argostranslate import translate
from polyglot.detect.base import Detector, UnknownLanguage from polyglot.detect.base import Detector, UnknownLanguage
from polyglot.transliteration.base import Transliterator from polyglot.transliteration.base import Transliterator
def load_languages():
languages = translate.load_installed_languages() languages = translate.load_installed_languages()
return languages
__lang_codes = [l.code for l in languages]
def detect_languages(text): def detect_languages(text):
# detect batch processing # detect batch processing
@ -32,6 +32,10 @@ def detect_languages(text):
# total read bytes of the provided text # total read bytes of the provided text
text_length_total = sum(c.text_length for c in candidates) text_length_total = sum(c.text_length for c in candidates)
# Load language codes
languages = load_languages()
__lang_codes = [l.code for l in languages]
# only use candidates that are supported by argostranslate # only use candidates that are supported by argostranslate
candidate_langs = list( 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)