From 8aba6f51295939373bc4eb69ebea0a38d8eed1e5 Mon Sep 17 00:00:00 2001 From: nocci Date: Sat, 3 May 2025 11:31:56 +0200 Subject: [PATCH] had to change folder structure but translations are ok now --- setup.sh | 92 +++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 57 insertions(+), 35 deletions(-) diff --git a/setup.sh b/setup.sh index 8ddf160..0ef74d5 100644 --- a/setup.sh +++ b/setup.sh @@ -76,12 +76,11 @@ fi # Configuration PROJECT_DIR="steam-gift-manager" -TRANSLATIONS_DIR="$PWD/translations" +TRANSLATIONS_DIR="$PWD/$PROJECT_DIR/translations" DATA_DIR="$PWD/data" # 1. Create folders -mkdir -p "$PROJECT_DIR"/{templates,static} -mkdir -p "$TRANSLATIONS_DIR" +mkdir -p "$PROJECT_DIR"/{templates,static,translations} mkdir -p "$DATA_DIR" chmod -R a+rwX "$TRANSLATIONS_DIR" "$DATA_DIR" @@ -200,7 +199,7 @@ app = Flask(__name__) import os import json -TRANSLATION_DIR = os.path.abspath(os.path.join(os.path.dirname(__file__), '..', 'translations')) +TRANSLATION_DIR = os.path.join(os.path.dirname(__file__), 'translations') SUPPORTED_LANGUAGES = ['de', 'en'] TRANSLATIONS = {} @@ -214,8 +213,16 @@ 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, key) - return value.format(**kwargs) if kwargs else value + 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 + return value.format(**kwargs) if kwargs and isinstance(value, str) else value + +## DEBUG Translations +if app.debug: + print(f"Loaded translations for 'de': {TRANSLATIONS.get('de', {})}") csrf = CSRFProtect(app) @@ -264,17 +271,19 @@ app.logger.setLevel(logging.INFO) @app.before_request def enforce_https(): if os.getenv('FORCE_HTTPS', 'False').lower() == 'true': - # check if https wanted if request.headers.get('X-Forwarded-Proto', 'http') != 'https' and not request.is_secure: url = request.url.replace('http://', 'https://', 1) + app.logger.info(f"Redirecting to HTTPS: {url}") return redirect(url, code=301) + @app.context_processor def inject_template_vars(): def _(key, **kwargs): lang = session.get('lang', 'en') return translate(key, lang, **kwargs) - return dict(_=_) + theme = request.cookies.get('theme', 'light') + return dict(_=_, theme=theme) # DB Models class User(db.Model, UserMixin): @@ -348,7 +357,8 @@ def set_lang(lang): @app.route('/set-theme/') def set_theme(theme): resp = make_response('', 204) - resp.set_cookie('dark_mode', 'true' if theme == 'dark' else 'false', max_age=60*60*24*365) + # Von 'dark_mode' zu 'theme' ändern + resp.set_cookie('theme', theme, max_age=60*60*24*365) return resp @app.route('/login', methods=['GET', 'POST']) @@ -864,7 +874,7 @@ services: - TZ=${TZ} volumes: - ../data:/app/data - - ../translations:/app/translations:rw + - ./translations:/app/translations:rw - ../.env:/app/.env user: "${UID}:${GID}" restart: unless-stopped @@ -877,25 +887,12 @@ chmod -R a+rwX ../data ../translations find ../data ../translations -type d -exec chmod 775 {} \; find ../data ../translations -type f -exec chmod 664 {} \; -# 8. Translation and upgrade scripts -cat < "$TRANSLATIONS_DIR/de.json" -{ - -} -JSON_END - -cat < "$TRANSLATIONS_DIR/en.json" -{ - -} -JSON_END - - cat <<'SCRIPT_END' > ../translate.sh #!/bin/bash set -e -TRANSLATION_DIR="./translations" +APP_DIR="steam-gift-manager" +TRANSLATION_DIR="$APP_DIR/translations" LANGS=("de" "en") # Prüfe jq @@ -904,7 +901,7 @@ if ! command -v jq &>/dev/null; then exit 1 fi -# 1. Lege JSON-Dateien an, falls sie fehlen +# 1. create json files if missing for lang in "${LANGS[@]}"; do file="$TRANSLATION_DIR/$lang.json" if [ ! -f "$file" ]; then @@ -913,11 +910,12 @@ for lang in "${LANGS[@]}"; do fi done -# 2. Extrahiere alle zu übersetzenden Strings -STRINGS=$(grep -rhoP "_\(\s*['\"](.+?)['\"]\s*\)" steam-gift-manager/templates steam-gift-manager/app.py | \ - sed -E "s/_\(\s*['\"](.+?)['\"]\s*\)/\1/" | sort | uniq) +# 2. Extract the strings +STRINGS=$(grep -rhoP "_\(\s*['\"](.+?)['\"]\s*\)" \ + "$APP_DIR/templates" "$APP_DIR/app.py" | \ + sed -E "s/_\(\s*['\"](.+?)['\"]\s*\)/\1/" | sort | uniq) -# 3. Ergänze neue Keys in die JSON-Dateien +# 3. add new keys into the json files for lang in "${LANGS[@]}"; do file="$TRANSLATION_DIR/$lang.json" tmp="$file.tmp" @@ -930,10 +928,10 @@ for lang in "${LANGS[@]}"; do mv "$tmp" "$file" echo "Updated $file" done - echo "✅ JSON translation files updated. Please enter your translations!" + SCRIPT_END chmod +x ../translate.sh @@ -1004,7 +1002,7 @@ MANIFEST_END # Service Worker cat < static/serviceworker.js -const CACHE_NAME = 'game-key-manager-v1'; +const CACHE_NAME = 'game-key-manager-v2'; const ASSETS = [ '/', '/static/style.css', @@ -1069,7 +1067,18 @@ cat < templates/base.html type="image/jpeg"> {% endif %} - +