from json import load from os import path from flask import request CATALOG_CACHE = {} def current_lang(): return request.accept_languages.best_match(["en", "fr"]) def i18n(string: str, *args: str) -> str: lang = current_lang() if lang != "en" and lang not in CATALOG_CACHE: catalog_file = f"{path.dirname(__file__)}/{lang}.json" if path.exists(catalog_file): with open(catalog_file) as catalog_json: catalog = load(catalog_json) CATALOG_CACHE[lang] = catalog if lang in CATALOG_CACHE and string in CATALOG_CACHE[lang]: return CATALOG_CACHE[lang][string] % args return string % args