diff --git a/app.py b/app.py index 807be11..cc962ca 100644 --- a/app.py +++ b/app.py @@ -4,7 +4,7 @@ Simple Tablet Lending and Return Management Web Application with SQLite backend """ -from flask import Flask, render_template, request, redirect, url_for, flash +from flask import Flask, render_template, request, redirect, url_for, flash, make_response, session import sqlite3 import os from datetime import datetime @@ -25,15 +25,41 @@ app.config['BABEL_TRANSLATION_DIRECTORIES'] = 'translations' # Locale selector function def get_locale(): - # Try to get language from URL parameter - lang = request.args.get('lang') + # Try to get language from cookie + lang = request.cookies.get('language') if lang and lang in app.config['LANGUAGES']: return lang # Try to get from session if hasattr(request, 'session') and 'language' in request.session: return request.session['language'] - # Try to get from browser preferences - return request.accept_languages.best_match(app.config['LANGUAGES'].keys()) + # Default to Spanish (es) for internal app + return 'es' + + +# Before request handler to set language from URL param and persist to cookie/session +@app.before_request +def handle_language(): + lang = request.args.get('lang') + if lang and lang in app.config['LANGUAGES']: + # Store in session + session['language'] = lang + # Set cookie for longer persistence (1 year) + # Note: We need to use response.set_cookie, but before_request can't modify response + # So we'll handle this in a separate route + return None + + +# Language switcher endpoint +@app.route('/set_language') +def set_language(): + lang = request.args.get('lang') + if lang and lang in app.config['LANGUAGES']: + session['language'] = lang + # Set cookie + resp = make_response(redirect(request.referrer or '/')) + resp.set_cookie('language', lang, max_age=31536000) # 1 year + return resp + return redirect(request.referrer or '/') # Initialize Babel with locale selector babel = Babel(app, locale_selector=get_locale) diff --git a/templates/add_non_loanable_device.html b/templates/add_non_loanable_device.html index ae0489e..52ec344 100644 --- a/templates/add_non_loanable_device.html +++ b/templates/add_non_loanable_device.html @@ -1,63 +1,63 @@ {% extends "base.html" %} {% block content %} -
Add a device that will be tracked in inventory but cannot be loaned to users (e.g., projectors, monitors, etc.)
+{{ _('Add a device that will be tracked in inventory but cannot be loaned to users (e.g., projectors, monitors, etc.)') }}
{% endblock %} diff --git a/templates/add_tablet.html b/templates/add_tablet.html index 8199daf..bc1fa4b 100644 --- a/templates/add_tablet.html +++ b/templates/add_tablet.html @@ -1,30 +1,30 @@ {% extends "base.html" %} {% block content %} -| Tablet | -Serial Number | -Borrower | -Loan Date | -Return Date | -Status | +{{ _('Tablet') }} | +{{ _('Serial Number') }} | +{{ _('Borrower') }} | +{{ _('Loan Date') }} | +{{ _('Return Date') }} | +{{ _('Status') }} |
|---|
No loan history available.
+{{ _('No loan history available.') }}
{% endif %}