update readme due release on codeberg #2
22
setup.sh
22
setup.sh
|
@ -213,11 +213,14 @@ for lang in SUPPORTED_LANGUAGES:
|
||||||
def translate(key, lang=None, **kwargs):
|
def translate(key, lang=None, **kwargs):
|
||||||
if not lang:
|
if not lang:
|
||||||
lang = session.get('lang', 'en')
|
lang = session.get('lang', 'en')
|
||||||
|
|
||||||
value = TRANSLATIONS.get(lang, {}).get(key)
|
value = TRANSLATIONS.get(lang, {}).get(key)
|
||||||
|
|
||||||
if value is None and lang != 'en':
|
if value is None and lang != 'en':
|
||||||
value = TRANSLATIONS.get('en', {}).get(key, key)
|
value = TRANSLATIONS.get('en', {}).get(key)
|
||||||
else:
|
|
||||||
value = value or key
|
value = value or key
|
||||||
|
|
||||||
return value.format(**kwargs) if kwargs and isinstance(value, str) else value
|
return value.format(**kwargs) if kwargs and isinstance(value, str) else value
|
||||||
|
|
||||||
## DEBUG Translations
|
## DEBUG Translations
|
||||||
|
@ -352,12 +355,12 @@ def index():
|
||||||
def set_lang(lang):
|
def set_lang(lang):
|
||||||
if lang in SUPPORTED_LANGUAGES:
|
if lang in SUPPORTED_LANGUAGES:
|
||||||
session['lang'] = lang
|
session['lang'] = lang
|
||||||
|
session.permanent = True
|
||||||
return redirect(request.referrer or url_for('index'))
|
return redirect(request.referrer or url_for('index'))
|
||||||
|
|
||||||
@app.route('/set-theme/<theme>')
|
@app.route('/set-theme/<theme>')
|
||||||
def set_theme(theme):
|
def set_theme(theme):
|
||||||
resp = make_response('', 204)
|
resp = make_response('', 204)
|
||||||
# Von 'dark_mode' zu 'theme' ändern
|
|
||||||
resp.set_cookie('theme', theme, max_age=60*60*24*365)
|
resp.set_cookie('theme', theme, max_age=60*60*24*365)
|
||||||
return resp
|
return resp
|
||||||
|
|
||||||
|
@ -372,7 +375,7 @@ def login():
|
||||||
login_user(user)
|
login_user(user)
|
||||||
return redirect(url_for('index'))
|
return redirect(url_for('index'))
|
||||||
|
|
||||||
flash(_('Invalid credentials'), 'danger')
|
flash(translate('Invalid credentials', session.get('lang', 'en')), 'danger')
|
||||||
return render_template('login.html')
|
return render_template('login.html')
|
||||||
|
|
||||||
@app.route('/register', methods=['GET', 'POST'])
|
@app.route('/register', methods=['GET', 'POST'])
|
||||||
|
@ -386,7 +389,7 @@ def register():
|
||||||
password = generate_password_hash(request.form['password'])
|
password = generate_password_hash(request.form['password'])
|
||||||
|
|
||||||
if User.query.filter_by(username=username).first():
|
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'))
|
return redirect(url_for('register'))
|
||||||
|
|
||||||
new_user = User(username=username, password=password)
|
new_user = User(username=username, password=password)
|
||||||
|
@ -421,7 +424,7 @@ def change_password():
|
||||||
|
|
||||||
current_user.password = generate_password_hash(new_password)
|
current_user.password = generate_password_hash(new_password)
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
flash(_('Password changed successfully'), 'success')
|
flash(translate('Password changed successfully', session.get('lang', 'en')), 'success')
|
||||||
return redirect(url_for('index'))
|
return redirect(url_for('index'))
|
||||||
|
|
||||||
return render_template('change_password.html')
|
return render_template('change_password.html')
|
||||||
|
@ -459,7 +462,8 @@ def add_game():
|
||||||
flash(_('Steam Key already exists!'), 'danger')
|
flash(_('Steam Key already exists!'), 'danger')
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
db.session.rollback()
|
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')
|
return render_template('add_game.html')
|
||||||
|
|
||||||
|
@ -690,7 +694,7 @@ def import_games():
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
db.session.rollback()
|
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'))
|
return redirect(url_for('index'))
|
||||||
|
|
||||||
|
@ -781,7 +785,6 @@ def check_expiring_keys():
|
||||||
now = datetime.utcnow()
|
now = datetime.utcnow()
|
||||||
expiry_threshold = now + timedelta(hours=48)
|
expiry_threshold = now + timedelta(hours=48)
|
||||||
|
|
||||||
# Moderner Select-Aufruf
|
|
||||||
stmt = select(Game).where(
|
stmt = select(Game).where(
|
||||||
Game.status != 'eingelöst',
|
Game.status != 'eingelöst',
|
||||||
Game.redeem_date <= expiry_threshold,
|
Game.redeem_date <= expiry_threshold,
|
||||||
|
@ -1057,7 +1060,6 @@ cat <<HTML_END > templates/base.html
|
||||||
<noscript><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css"></noscript>
|
<noscript><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css"></noscript>
|
||||||
<!-- Eigene Styles -->
|
<!-- Eigene Styles -->
|
||||||
<link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}">
|
<link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}">
|
||||||
{# LCP-Optimierung: Preload für das erste Cover-Bild, falls vorhanden #}
|
|
||||||
{% if games and games[0].steam_appid %}
|
{% if games and games[0].steam_appid %}
|
||||||
<link rel="preload"
|
<link rel="preload"
|
||||||
as="image"
|
as="image"
|
||||||
|
|
Loading…
Reference in New Issue