From e2c218102eeb21ee7f21b6314cc5c308131dadcd Mon Sep 17 00:00:00 2001 From: nocci Date: Sat, 3 May 2025 12:26:54 +0200 Subject: [PATCH] better handling of translations --- setup.sh | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/setup.sh b/setup.sh index 1ab9f8f..cc46041 100644 --- a/setup.sh +++ b/setup.sh @@ -213,11 +213,14 @@ for lang in SUPPORTED_LANGUAGES: def translate(key, lang=None, **kwargs): if not lang: lang = session.get('lang', 'en') + value = TRANSLATIONS.get(lang, {}).get(key) + if value is None and lang != 'en': - value = TRANSLATIONS.get('en', {}).get(key, key) - else: - value = value or key + value = TRANSLATIONS.get('en', {}).get(key) + + value = value or key + return value.format(**kwargs) if kwargs and isinstance(value, str) else value ## DEBUG Translations @@ -352,12 +355,12 @@ def index(): def set_lang(lang): if lang in SUPPORTED_LANGUAGES: session['lang'] = lang + session.permanent = True return redirect(request.referrer or url_for('index')) @app.route('/set-theme/') def set_theme(theme): resp = make_response('', 204) - # Von 'dark_mode' zu 'theme' ändern resp.set_cookie('theme', theme, max_age=60*60*24*365) return resp @@ -372,7 +375,7 @@ def login(): login_user(user) return redirect(url_for('index')) - flash(_('Invalid credentials'), 'danger') + flash(translate('Invalid credentials', session.get('lang', 'en')), 'danger') return render_template('login.html') @app.route('/register', methods=['GET', 'POST']) @@ -386,7 +389,7 @@ def register(): password = generate_password_hash(request.form['password']) if User.query.filter_by(username=username).first(): - flash(_('Username already exists'), 'danger') + flash(translate('Username already exists', session.get('lang', 'en')), 'danger') return redirect(url_for('register')) new_user = User(username=username, password=password) @@ -421,7 +424,7 @@ def change_password(): current_user.password = generate_password_hash(new_password) db.session.commit() - flash(_('Password changed successfully'), 'success') + flash(translate('Password changed successfully', session.get('lang', 'en')), 'success') return redirect(url_for('index')) return render_template('change_password.html') @@ -459,7 +462,8 @@ def add_game(): flash(_('Steam Key already exists!'), 'danger') except Exception as e: db.session.rollback() - flash(_('Error: ') + str(e), 'danger') + lang = session.get('lang', 'en') + flash(f"{translate('Error:', lang)} {str(e)}", 'danger') return render_template('add_game.html') @@ -690,7 +694,7 @@ def import_games(): except Exception as e: db.session.rollback() - flash(_('Import error: %(error)s', error=str(e)), 'danger') + flash(translate('Import error: %(error)s', session.get('lang', 'en'), error=str(e)), 'danger') return redirect(url_for('index')) @@ -781,7 +785,6 @@ def check_expiring_keys(): now = datetime.utcnow() expiry_threshold = now + timedelta(hours=48) - # Moderner Select-Aufruf stmt = select(Game).where( Game.status != 'eingelöst', Game.redeem_date <= expiry_threshold, @@ -1057,7 +1060,6 @@ cat < templates/base.html - {# LCP-Optimierung: Preload für das erste Cover-Bild, falls vorhanden #} {% if games and games[0].steam_appid %}