Make the web app select the language based on browser values
Language also can be selected using the `?l=langcode` query string.
This commit is contained in:
parent
bc47310cfb
commit
448ae1bce0
4
.gitignore
vendored
4
.gitignore
vendored
@ -1,2 +1,4 @@
|
|||||||
__pycache__/
|
__pycache__/
|
||||||
app/local.db
|
/app/local.db
|
||||||
|
/messages.pot
|
||||||
|
/app/translations/*/LC_MESSAGES/*.mo
|
||||||
|
@ -17,10 +17,32 @@
|
|||||||
import os
|
import os
|
||||||
|
|
||||||
from flask import Flask, current_app, redirect, render_template, url_for
|
from flask import Flask, current_app, redirect, render_template, url_for
|
||||||
from flask_babel import Babel
|
from flask_babel import Babel, get_locale as babel_get_locale
|
||||||
from flask_security import SQLAlchemyUserDatastore, current_user
|
from flask_security import SQLAlchemyUserDatastore, current_user
|
||||||
|
|
||||||
|
|
||||||
|
def get_locale():
|
||||||
|
"""Locale selector
|
||||||
|
|
||||||
|
Selects the best locale based on values sent by the browser.
|
||||||
|
"""
|
||||||
|
|
||||||
|
from flask import request
|
||||||
|
|
||||||
|
supported_languages = ['en', 'hu']
|
||||||
|
|
||||||
|
if 'l' in request.args and request.args['l'].lower() in supported_languages:
|
||||||
|
return request.args['l'].lower()
|
||||||
|
|
||||||
|
return request.accept_languages.best_match(supported_languages)
|
||||||
|
|
||||||
|
|
||||||
|
def template_vars():
|
||||||
|
return {
|
||||||
|
'lang': babel_get_locale().language,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
class CalendarSocialApp(Flask):
|
class CalendarSocialApp(Flask):
|
||||||
def __init__(self, name, config=None):
|
def __init__(self, name, config=None):
|
||||||
from app.models import db, User, Role
|
from app.models import db, User, Role
|
||||||
@ -34,10 +56,13 @@ class CalendarSocialApp(Flask):
|
|||||||
self.config['SECURITY_USER_IDENTITY_ATTRIBUTES'] = ('username', 'email')
|
self.config['SECURITY_USER_IDENTITY_ATTRIBUTES'] = ('username', 'email')
|
||||||
db.init_app(self)
|
db.init_app(self)
|
||||||
babel = Babel(app=self)
|
babel = Babel(app=self)
|
||||||
|
babel.localeselector(get_locale)
|
||||||
|
|
||||||
user_store = SQLAlchemyUserDatastore(db, User, Role)
|
user_store = SQLAlchemyUserDatastore(db, User, Role)
|
||||||
security.init_app(self, datastore=user_store)
|
security.init_app(self, datastore=user_store)
|
||||||
|
|
||||||
|
self.context_processor(template_vars)
|
||||||
|
|
||||||
|
|
||||||
app = CalendarSocialApp(__name__)
|
app = CalendarSocialApp(__name__)
|
||||||
|
|
||||||
|
61
app/translations/hu/LC_MESSAGES/messages.po
Normal file
61
app/translations/hu/LC_MESSAGES/messages.po
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
# Hungarian translations for PROJECT.
|
||||||
|
# Copyright (C) 2018 ORGANIZATION
|
||||||
|
# This file is distributed under the same license as the PROJECT project.
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, 2018.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: 0.1\n"
|
||||||
|
"Report-Msgid-Bugs-To: gergely@polonkai.eu\n"
|
||||||
|
"POT-Creation-Date: 2018-06-29 14:14+0200\n"
|
||||||
|
"PO-Revision-Date: 2018-06-29 14:26+0200\n"
|
||||||
|
"Last-Translator: Gergely Polonkai <gergely@polonkai.eu>\n"
|
||||||
|
"Language: hu\n"
|
||||||
|
"Language-Team: hu <gergely@polonkai.eu>\n"
|
||||||
|
"Plural-Forms: nplurals=1; plural=0\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"Generated-By: Babel 2.6.0\n"
|
||||||
|
|
||||||
|
#: app/forms.py:8
|
||||||
|
msgid "Username"
|
||||||
|
msgstr "Felhasználónév"
|
||||||
|
|
||||||
|
#: app/forms.py:9
|
||||||
|
msgid "Email address"
|
||||||
|
msgstr "E-mail cím"
|
||||||
|
|
||||||
|
#: app/forms.py:10
|
||||||
|
msgid "Password"
|
||||||
|
msgstr "Jelszó"
|
||||||
|
|
||||||
|
#: app/forms.py:11
|
||||||
|
msgid "Password, once more"
|
||||||
|
msgstr "Jelszó még egszer"
|
||||||
|
|
||||||
|
#: app/forms.py:15
|
||||||
|
msgid "The two passwords must match!"
|
||||||
|
msgstr "A két jelszónak egyeznie kell!"
|
||||||
|
|
||||||
|
#: app/templates/base.html:21
|
||||||
|
#, python-format
|
||||||
|
msgid "Logged in as %(username)s"
|
||||||
|
msgstr "Bejelentkezve %(username)s néven"
|
||||||
|
|
||||||
|
#: app/templates/base.html:25
|
||||||
|
msgid "Login"
|
||||||
|
msgstr "Bejelentkezés"
|
||||||
|
|
||||||
|
#: app/templates/base.html:27
|
||||||
|
msgid "Logout"
|
||||||
|
msgstr "Kijelentkezés"
|
||||||
|
|
||||||
|
#: app/templates/index.html:4
|
||||||
|
#, python-format
|
||||||
|
msgid "Welcome to Calendar.social, %(username)s!"
|
||||||
|
msgstr "Üdv a Calendar.social-ben, %(username)s!"
|
||||||
|
|
||||||
|
#: app/templates/registration.html:27
|
||||||
|
msgid "Register"
|
||||||
|
msgstr "Regisztráció"
|
Loading…
Reference in New Issue
Block a user