diff --git a/setup.sh b/setup.sh index e794504..633a9c0 100644 --- a/setup.sh +++ b/setup.sh @@ -197,15 +197,21 @@ logging.basicConfig() app = Flask(__name__) # Load Languages +import json + TRANSLATIONS = {} -for lang in app.config['SUPPORTED_LANGUAGES'].split(','): +SUPPORTED_LANGUAGES = os.getenv('SUPPORTED_LANGUAGES', 'en').split(',') + +for lang in SUPPORTED_LANGUAGES: try: - with open(f'translations/{lang}.json') as f: + with open(f'translations/{lang}.json', encoding='utf-8') as f: TRANSLATIONS[lang] = json.load(f) - except: + except Exception: TRANSLATIONS[lang] = {} -def translate(key, lang=app.config['DEFAULT_LANGUAGE'], **kwargs): +def translate(key, lang=None, **kwargs): + if not lang: + lang = session.get('lang', os.getenv('DEFAULT_LANGUAGE', 'en')) return TRANSLATIONS.get(lang, {}).get(key, key).format(**kwargs) csrf = CSRFProtect(app) @@ -261,15 +267,13 @@ def enforce_https(): return redirect(url, code=301) @app.context_processor -def inject_translations(): - def _(key, **kwargs): - lang = session.get('lang', app.config['DEFAULT_LANGUAGE']) - return translate(key, lang, **kwargs) - return {'_': _} - def inject_template_vars(): + def _(key, **kwargs): + lang = session.get('lang', os.getenv('DEFAULT_LANGUAGE', 'en')) + return translate(key, lang, **kwargs) return dict( - get_locale=get_locale, + _=_, + get_locale=lambda: session.get('lang', os.getenv('DEFAULT_LANGUAGE', 'en')), theme='dark' if request.cookies.get('dark_mode') == 'true' else 'light' ) @@ -338,10 +342,10 @@ def index(): @app.route('/set-lang/') def set_lang(lang): - if lang in app.config['SUPPORTED_LANGUAGES'].split(','): + if lang in SUPPORTED_LANGUAGES: session['lang'] = lang - return redirect(request.referrer) - + return redirect(request.referrer or url_for('index')) + @app.route('/set-theme/') def set_theme(theme): resp = make_response('', 204)