diff --git a/app/classes/shared/translation.py b/app/classes/shared/translation.py index 8808e256..2ad7f19a 100644 --- a/app/classes/shared/translation.py +++ b/app/classes/shared/translation.py @@ -1,71 +1,71 @@ -from app.classes.shared.helpers import helper -from app.classes.shared.console import console - -import os -import json - -import logging - -logger = logging.getLogger(__name__) - -class Translation(): - def __init__(self): - self.translations_path = os.path.join(helper.root_dir, 'app', 'translations') - self.cached_translation = None - self.cached_translation_lang = None - self.lang_file_exists = [] - def translate(self, page, word, lang): - translated_word = None - fallback_lang = 'en_EN' - - if lang not in self.lang_file_exists and \ - helper.check_file_exists(os.path.join(self.translations_path, lang + '.json')): - self.lang_file_exists.append(lang) - - translated_word = self.translate_inner(page, word, lang) \ - if lang in self.lang_file_exists else self.translate_inner(page, word, fallback_lang) - - if translated_word: - if isinstance(translated_word, dict): return json.dumps(translated_word) - elif iter(translated_word) and not isinstance(translated_word, str): return '\n'.join(translated_word) - return translated_word - return 'Error while getting translation' - def translate_inner(self, page, word, lang): - lang_file = os.path.join( - self.translations_path, - lang + '.json' - ) - try: - if not self.cached_translation: - with open(lang_file, 'r') as f: - data = json.load(f) - self.cached_translation = data - elif self.cached_translation_lang != lang: - with open(lang_file, 'r') as f: - data = json.load(f) - self.cached_translation = data - self.cached_translation_lang = lang - else: - data = self.cached_translation - - try: - translated_page = data[page] - except KeyError: - logger.error('Translation File Error: page {} does not exist for lang {}'.format(page, lang)) - console.error('Translation File Error: page {} does not exist for lang {}'.format(page, lang)) - return None - - try: - translated_word = translated_page[word] - return translated_word - except KeyError: - logger.error('Translation File Error: word {} does not exist on page {} for lang {}'.format(word, page, lang)) - console.error('Translation File Error: word {} does not exist on page {} for lang {}'.format(word, page, lang)) - return None - - except Exception as e: - logger.critical('Translation File Error: Unable to read {} due to {}'.format(lang_file, e)) - console.critical('Translation File Error: Unable to read {} due to {}'.format(lang_file, e)) - return None - +from app.classes.shared.helpers import helper +from app.classes.shared.console import console + +import os +import json + +import logging + +logger = logging.getLogger(__name__) + +class Translation(): + def __init__(self): + self.translations_path = os.path.join(helper.root_dir, 'app', 'translations') + self.cached_translation = None + self.cached_translation_lang = None + self.lang_file_exists = [] + def translate(self, page, word, lang): + translated_word = None + fallback_lang = 'en_EN' + + if lang not in self.lang_file_exists and \ + helper.check_file_exists(os.path.join(self.translations_path, lang + '.json')): + self.lang_file_exists.append(lang) + + translated_word = self.translate_inner(page, word, lang) \ + if lang in self.lang_file_exists else self.translate_inner(page, word, fallback_lang) + + if translated_word: + if isinstance(translated_word, dict): return json.dumps(translated_word) + elif iter(translated_word) and not isinstance(translated_word, str): return '\n'.join(translated_word) + return translated_word + return 'Error while getting translation' + def translate_inner(self, page, word, lang): + lang_file = os.path.join( + self.translations_path, + lang + '.json' + ) + try: + if not self.cached_translation: + with open(lang_file, 'r', encoding='utf-8') as f: + data = json.load(f) + self.cached_translation = data + elif self.cached_translation_lang != lang: + with open(lang_file, 'r', encoding='utf-8') as f: + data = json.load(f) + self.cached_translation = data + self.cached_translation_lang = lang + else: + data = self.cached_translation + + try: + translated_page = data[page] + except KeyError: + logger.error('Translation File Error: page {} does not exist for lang {}'.format(page, lang)) + console.error('Translation File Error: page {} does not exist for lang {}'.format(page, lang)) + return None + + try: + translated_word = translated_page[word] + return translated_word + except KeyError: + logger.error('Translation File Error: word {} does not exist on page {} for lang {}'.format(word, page, lang)) + console.error('Translation File Error: word {} does not exist on page {} for lang {}'.format(word, page, lang)) + return None + + except Exception as e: + logger.critical('Translation File Error: Unable to read {} due to {}'.format(lang_file, e)) + console.critical('Translation File Error: Unable to read {} due to {}'.format(lang_file, e)) + return None + translation = Translation() \ No newline at end of file