from os import system as console from configparser import ConfigParser from flask import ( Flask, g, request, render_template, ) translations_cache = {} def load_translations(lang): if lang not in translations_cache: translations_cache[lang] = {} try: config = ConfigParser() config.read(f'locale/{lang}.ini') for section in config.sections(): translations_cache[lang][section] = dict(config.items(section)) except: pass return translations_cache[lang] def get_locale(): return request.accept_languages.best_match(('en', 'ru', 'de', 'fr', 'ja'), 'en') app = Flask(__name__) @app.before_request def before_request(): g.locale = get_locale() g.translations = load_translations(g.locale) @app.context_processor def inject_translations(): def translate(text, **kwargs): if ":" in text: section, key = text.split(":", 1) else: section, key = "common", text template = g.translations \ .get(section, {}) \ .get(key, f"${section}: {key}$") try: return template.format(**kwargs) except: return template return {'_': translate} if app.debug: console("sass static/style/main.scss static/style/main.css") console("sass static/style/risdeveau.scss static/style/risdeveau.css") @app.route("/") def index(): return render_template('index.html') @app.route("/host") def host(): return render_template('host.html') @app.route("/us") def us(): return render_template('us.html') @app.route("/risdeveau") def risdeveau(): return render_template('personal/risdeveau.html')