diff --git a/src/stacosys/i18n/messages.py b/src/stacosys/i18n/messages.py new file mode 100644 index 0000000..d64cbac --- /dev/null +++ b/src/stacosys/i18n/messages.py @@ -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) diff --git a/src/stacosys/i18n/messages_en.properties b/src/stacosys/i18n/messages_en.properties new file mode 100644 index 0000000..85d02a7 --- /dev/null +++ b/src/stacosys/i18n/messages_en.properties @@ -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. \ No newline at end of file diff --git a/src/stacosys/i18n/messages_fr.properties b/src/stacosys/i18n/messages_fr.properties new file mode 100644 index 0000000..9137863 --- /dev/null +++ b/src/stacosys/i18n/messages_fr.properties @@ -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é \ No newline at end of file diff --git a/src/stacosys/interface/web/admin.py b/src/stacosys/interface/web/admin.py index 9e35d50..9b8c0ef 100644 --- a/src/stacosys/interface/web/admin.py +++ b/src/stacosys/interface/web/admin.py @@ -37,10 +37,7 @@ def login(): if is_login_ok(username, password): session["user"] = username return redirect("/web/admin") - if app.config["CONFIG"].get(ConfigParameter.LANG) == "fr": - flash("Identifiant ou mot de passe incorrect") - else: - flash("Username or password incorrect") + flash(app.config["MESSAGES"].get("login.failure.username")) return redirect("/web/login") # GET return render_template( @@ -51,10 +48,7 @@ def login(): @app.route("/web/logout", methods=["GET"]) def logout(): session.pop("user") - if app.config["CONFIG"].get(ConfigParameter.LANG) == "fr": - flash("Vous avez été déconnecté.") - else: - flash("You have been logged out.") + flash(app.config["MESSAGES"].get("logout.flash")) return redirect("/web/admin") @@ -78,21 +72,12 @@ def admin_homepage(): def admin_action(): comment = dao.find_comment_by_id(request.form.get("comment")) if comment is None: - if app.config["CONFIG"].get(ConfigParameter.LANG) == "fr": - flash("Commentaire introuvable") - else: - flash("Comment not found.") + flash(app.config["MESSAGES"].get("admin.comment.notfound")) elif request.form.get("action") == "APPROVE": dao.publish_comment(comment) app.config["RSS"].generate() - if app.config["CONFIG"].get(ConfigParameter.LANG) == "fr": - flash("Commentaire publié") - else: - flash("Comment published.") + flash(app.config["MESSAGES"].get("admin.comment.approved")) else: dao.delete_comment(comment) - if app.config["CONFIG"].get(ConfigParameter.LANG) == "fr": - flash("Commentaire supprimé") - else: - flash("Comment deleted.") + flash(app.config["MESSAGES"].get("admin.comment.deleted")) return redirect("/web/admin") diff --git a/src/stacosys/run.py b/src/stacosys/run.py index 5634764..255c424 100644 --- a/src/stacosys/run.py +++ b/src/stacosys/run.py @@ -7,6 +7,7 @@ import os import sys from stacosys.db import database +from stacosys.i18n.messages import Messages from stacosys.interface import api, app, form from stacosys.interface.web import admin from stacosys.service.configuration import Config, ConfigParameter @@ -64,6 +65,12 @@ def configure_rss(config): return rss +def configure_localization(config): + messages = Messages() + messages.load_messages(config.get(ConfigParameter.LANG)) + return messages + + def main(config_pathname): logger = configure_logging() config = load_and_validate_config(config_pathname, logger) @@ -72,11 +79,13 @@ def main(config_pathname): logger.info("Start Stacosys application") rss = configure_rss(config) mailer = configure_and_validate_mailer(config, logger) + messages = configure_localization(config) logger.info("start interfaces %s %s %s", api, form, admin) app.config["CONFIG"] = config app.config["MAILER"] = mailer app.config["RSS"] = rss + app.config["MESSAGES"] = messages app.run( host=config.get(ConfigParameter.HTTP_HOST), port=config.get_int(ConfigParameter.HTTP_PORT),