diff --git a/budget/run.py b/budget/run.py index ebcf45e..3d57329 100644 --- a/budget/run.py +++ b/budget/run.py @@ -24,7 +24,9 @@ babel = Babel(app) @babel.localeselector def get_locale(): - lang = request.accept_languages.best_match(['fr', 'en']) + # get the lang from the session if defined, fallback on the browser "accept + # languages" header. + lang = session.get('lang', request.accept_languages.best_match(['fr', 'en'])) setattr(g, 'lang', lang) return lang diff --git a/budget/templates/layout.html b/budget/templates/layout.html index e6614d8..c546e1e 100644 --- a/budget/templates/layout.html +++ b/budget/templates/layout.html @@ -41,7 +41,10 @@ - +{% macro translations() %} +
  • fr
  • +
  • en
  • +{% endmacro %}

    {% if g.project %} @@ -64,6 +67,11 @@
  • {{ _("Logout") }}
  • + {{ translations() }} + + {% else %} + {% endif %}
    diff --git a/budget/web.py b/budget/web.py index 1daecd7..82bb5f8 100644 --- a/budget/web.py +++ b/budget/web.py @@ -323,6 +323,13 @@ def edit_bill(bill_id): form.fill(bill) return render_template("add_bill.html", form=form, edit=True) +@main.route("/lang/") +def change_lang(lang): + session['lang'] = lang + session.update() + + return redirect(request.headers.get('Referer') or url_for('.home')) + @main.route("//compute") def compute_bills(): """Compute the sum each one have to pay to each other and display it"""