externalize localized application messages

pull/19/head
Yax 5 months ago
parent 4d52229e4d
commit 69f1c35ef5

@ -0,0 +1,17 @@
import configparser
import os
class Messages:
def __init__(self):
self.property_dict = {}
def load_messages(self, lang):
config = configparser.ConfigParser()
config.read(os.path.join(os.path.dirname(__file__), 'messages_' + lang + '.properties'))
for key, value in config.items('messages'):
self.property_dict[key] = value
def get(self, key):
return self.property_dict.get(key)

@ -0,0 +1,6 @@
[messages]
login.failure.username=Username or password incorrect
logout.flash=You have been logged out.
admin.comment.notfound=Comment not found.
admin.comment.approved=Comment published.
admin.comment.deleted=Comment deleted.

@ -0,0 +1,6 @@
[messages]
login.failure.username=Identifiant ou mot de passe incorrect
logout.flash=Vous avez été déconnecté.
admin.comment.notfound=Commentaire introuvable
admin.comment.approved=Commentaire publié
admin.comment.deleted=Commentaire supprimé

@ -37,10 +37,7 @@ def login():
if is_login_ok(username, password): if is_login_ok(username, password):
session["user"] = username session["user"] = username
return redirect("/web/admin") return redirect("/web/admin")
if app.config["CONFIG"].get(ConfigParameter.LANG) == "fr": flash(app.config["MESSAGES"].get("login.failure.username"))
flash("Identifiant ou mot de passe incorrect")
else:
flash("Username or password incorrect")
return redirect("/web/login") return redirect("/web/login")
# GET # GET
return render_template( return render_template(
@ -51,10 +48,7 @@ def login():
@app.route("/web/logout", methods=["GET"]) @app.route("/web/logout", methods=["GET"])
def logout(): def logout():
session.pop("user") session.pop("user")
if app.config["CONFIG"].get(ConfigParameter.LANG) == "fr": flash(app.config["MESSAGES"].get("logout.flash"))
flash("Vous avez été déconnecté.")
else:
flash("You have been logged out.")
return redirect("/web/admin") return redirect("/web/admin")
@ -78,21 +72,12 @@ def admin_homepage():
def admin_action(): def admin_action():
comment = dao.find_comment_by_id(request.form.get("comment")) comment = dao.find_comment_by_id(request.form.get("comment"))
if comment is None: if comment is None:
if app.config["CONFIG"].get(ConfigParameter.LANG) == "fr": flash(app.config["MESSAGES"].get("admin.comment.notfound"))
flash("Commentaire introuvable")
else:
flash("Comment not found.")
elif request.form.get("action") == "APPROVE": elif request.form.get("action") == "APPROVE":
dao.publish_comment(comment) dao.publish_comment(comment)
app.config["RSS"].generate() app.config["RSS"].generate()
if app.config["CONFIG"].get(ConfigParameter.LANG) == "fr": flash(app.config["MESSAGES"].get("admin.comment.approved"))
flash("Commentaire publié")
else:
flash("Comment published.")
else: else:
dao.delete_comment(comment) dao.delete_comment(comment)
if app.config["CONFIG"].get(ConfigParameter.LANG) == "fr": flash(app.config["MESSAGES"].get("admin.comment.deleted"))
flash("Commentaire supprimé")
else:
flash("Comment deleted.")
return redirect("/web/admin") return redirect("/web/admin")

@ -7,6 +7,7 @@ import os
import sys import sys
from stacosys.db import database from stacosys.db import database
from stacosys.i18n.messages import Messages
from stacosys.interface import api, app, form from stacosys.interface import api, app, form
from stacosys.interface.web import admin from stacosys.interface.web import admin
from stacosys.service.configuration import Config, ConfigParameter from stacosys.service.configuration import Config, ConfigParameter
@ -64,6 +65,12 @@ def configure_rss(config):
return rss return rss
def configure_localization(config):
messages = Messages()
messages.load_messages(config.get(ConfigParameter.LANG))
return messages
def main(config_pathname): def main(config_pathname):
logger = configure_logging() logger = configure_logging()
config = load_and_validate_config(config_pathname, logger) config = load_and_validate_config(config_pathname, logger)
@ -72,11 +79,13 @@ def main(config_pathname):
logger.info("Start Stacosys application") logger.info("Start Stacosys application")
rss = configure_rss(config) rss = configure_rss(config)
mailer = configure_and_validate_mailer(config, logger) mailer = configure_and_validate_mailer(config, logger)
messages = configure_localization(config)
logger.info("start interfaces %s %s %s", api, form, admin) logger.info("start interfaces %s %s %s", api, form, admin)
app.config["CONFIG"] = config app.config["CONFIG"] = config
app.config["MAILER"] = mailer app.config["MAILER"] = mailer
app.config["RSS"] = rss app.config["RSS"] = rss
app.config["MESSAGES"] = messages
app.run( app.run(
host=config.get(ConfigParameter.HTTP_HOST), host=config.get(ConfigParameter.HTTP_HOST),
port=config.get_int(ConfigParameter.HTTP_PORT), port=config.get_int(ConfigParameter.HTTP_PORT),

Loading…
Cancel
Save