import importlib
import os

from django.conf import settings

current_dir = os.path.dirname(os.path.abspath(__file__))
files = os.listdir(current_dir)
translation_strings = {}
replacement_strings = {}


def check_language_code(language_code):
    # helper function
    if language_code not in [pair[0] for pair in settings.LANGUAGES]:
        return False
    if language_code in ['en', 'en-us', 'en-gb']:
        return False
    return True


for translation_file in files:
    # the language code is zh-hans but the file is zh_hans.py

    language_code_file = translation_file.split('.')[0]
    language_code = language_code_file.replace('_', '-')
    if not check_language_code(language_code):
        continue

    module_name = f"files.frontend_translations.{language_code_file}"
    tr_module = importlib.import_module(module_name)
    translation_strings[language_code] = tr_module.translation_strings
    replacement_strings[language_code] = tr_module.replacement_strings


def get_translation(language_code):
    # get list of translations per language
    if not check_language_code(language_code):
        return {}

    translation = translation_strings[language_code]

    return translation


def get_translation_strings(language_code):
    # get list of replacement strings per language
    if not check_language_code(language_code):
        return {}

    translation = replacement_strings[language_code]

    return translation


def translate_string(language_code, string):
    # translate a string to the given language
    if not check_language_code(language_code):
        return string

    return translation_strings[language_code].get(string) or string
