From 210ab6c0d330a2520ebaf1fd1b74c798da1b8012 Mon Sep 17 00:00:00 2001 From: augustin64 Date: Mon, 22 Jan 2024 16:06:03 +0100 Subject: [PATCH 1/6] Localization: add python strings --- .gitignore | 4 + README.md | 25 ++ babel.cfg | 2 + default_config.py | 5 +- partitioncloud/__init__.py | 11 +- partitioncloud/modules/albums.py | 45 ++-- partitioncloud/modules/auth.py | 19 +- partitioncloud/modules/groupe.py | 21 +- partitioncloud/modules/logging.py | 2 +- partitioncloud/modules/partition.py | 31 +-- .../translations/en/LC_MESSAGES/messages.po | 224 +++++++++++++++++ .../translations/fr/LC_MESSAGES/messages.po | 226 ++++++++++++++++++ requirements.txt | 1 + 13 files changed, 556 insertions(+), 60 deletions(-) create mode 100644 babel.cfg create mode 100644 partitioncloud/translations/en/LC_MESSAGES/messages.po create mode 100644 partitioncloud/translations/fr/LC_MESSAGES/messages.po diff --git a/.gitignore b/.gitignore index ced5f7e..5bb154a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,10 @@ # cache **/__pycache__ +# translations +**.mo +**.pot + # config .vscode/ diff --git a/README.md b/README.md index 4963e96..10d96a4 100644 --- a/README.md +++ b/README.md @@ -27,6 +27,7 @@ git clone https://github.com/partitioncloud/partitioncloud-server.git cd partitioncloud-server # Install dependencies pip install -r requirements.txt +pybabel compile -d partitioncloud/translations # Create database and folders ./make.sh init ``` @@ -66,6 +67,30 @@ Modifier le fichier de configuration créé dans `instance/` ![Recherche](https://github.com/partitioncloud/partitioncloud-server/assets/67148092/745bf3e3-37e9-40cd-80d2-14670bce1a45) +## Translations + +### Créer une nouvelle traduction + +```bash +# Extraire les données +pybabel extract -F babel.cfg -k _l -o partitioncloud/translations/messages.pot . +# Créer un nouveau fichier +pybabel init -i partitioncloud/translations/messages.pot -d partitioncloud/translations -l $COUNTRY_CODE +# Modifier translations/$COUNTRY_CODE/LC_MESSAGES/messages.po +# Ajouter $COUNTRY_CODE dans default_config.py: LANGUAGES +# Compiler les nouvelles translations avant de démarrer le serveur +pybabel compile -d partitioncloud/translations +``` + +### Mettre à jour une traduction + +```bash +# Récupérer les données les plus récentes +pybabel extract -F babel.cfg -k _l -o partitioncloud/translations/messages.pot . +# Les ajouter aux traductions +pybabel update -i partitioncloud/translations/messages.pot -d partitioncloud/translations +``` + ## TODO - [ ] Modifier son mot de passe - [ ] Supprimer un utilisateur diff --git a/babel.cfg b/babel.cfg new file mode 100644 index 0000000..97ebeb8 --- /dev/null +++ b/babel.cfg @@ -0,0 +1,2 @@ +[python: partitioncloud/**.py] +[jinja2: partitioncloud/templates/**.html] \ No newline at end of file diff --git a/default_config.py b/default_config.py index 253e482..d13ae2e 100644 --- a/default_config.py +++ b/default_config.py @@ -26,4 +26,7 @@ MAX_AGE=31 INSTANCE_PATH="instance" # Events to log -ENABLED_LOGS=["NEW_GROUPE", "NEW_ALBUM", "NEW_PARTITION", "NEW_USER", "SERVER_RESTART", "FAILED_LOGIN"] \ No newline at end of file +ENABLED_LOGS=["NEW_GROUPE", "NEW_ALBUM", "NEW_PARTITION", "NEW_USER", "SERVER_RESTART", "FAILED_LOGIN"] + +# Available languages +LANGUAGES=['en', 'fr'] \ No newline at end of file diff --git a/partitioncloud/__init__.py b/partitioncloud/__init__.py index dacea5f..189da59 100644 --- a/partitioncloud/__init__.py +++ b/partitioncloud/__init__.py @@ -10,6 +10,7 @@ import importlib.util from flask import Flask, g, redirect, render_template, request, send_file, flash, session, abort from werkzeug.security import generate_password_hash +from flask_babel import Babel, _ from .modules.utils import User, Album, get_all_albums from .modules import albums, auth, partition, admin, groupe, thumbnails, logging @@ -18,6 +19,12 @@ from .modules.db import get_db app = Flask(__name__) +def get_locale(): + return request.accept_languages.best_match(app.config['LANGUAGES']) + +babel = Babel(app, locale_selector=get_locale) + + def load_config(): app.config.from_object('default_config') @@ -125,10 +132,10 @@ def add_user(): try: if album_uuid != "": user.join_album(album_uuid) - flash(f"Utilisateur {username} créé") + flash(_("Utilisateur %(username)s créé", username=username)) return redirect("/albums") except LookupError: - flash(f"Cet album n'existe pas. L'utilisateur {username} a été créé") + flash(_("Cet album n'existe pas. L'utilisateur %(username)s a été créé", username=username)) return redirect("/albums") flash(error) diff --git a/partitioncloud/modules/albums.py b/partitioncloud/modules/albums.py index 40ca12a..39103b7 100644 --- a/partitioncloud/modules/albums.py +++ b/partitioncloud/modules/albums.py @@ -9,6 +9,7 @@ from typing import TypeVar from flask import (Blueprint, abort, flash, redirect, render_template, request, session, current_app) +from flask_babel import _ from .auth import login_required from .db import get_db @@ -37,7 +38,7 @@ def search_page(): Résultats de recherche """ if "query" not in request.form or request.form["query"] == "": - flash("Aucun terme de recherche spécifié.") + flash(_("Aucun terme de recherche spécifié.")) return redirect("/albums") query = request.form["query"] @@ -119,7 +120,7 @@ def create_album_req(): user = User(user_id=session["user_id"]) if not name or name.strip() == "": - error = "Un nom est requis. L'album n'a pas été créé" + error = _("Un nom est requis. L'album n'a pas été créé") if error is None: uuid = utils.create_album(name) @@ -156,10 +157,10 @@ def join_album(uuid): try: user.join_album(uuid) except LookupError: - flash("Cet album n'existe pas.") + flash(_("Cet album n'existe pas.")) return redirect(request.referrer) - flash("Album ajouté à la collection.") + flash(_("Album ajouté à la collection.")) return redirect(request.referrer) @@ -173,15 +174,15 @@ def quit_album(uuid): album = Album(uuid=uuid) users = album.get_users() if user.id not in [u["id"] for u in users]: - flash("Vous ne faites pas partie de cet album") + flash(_("Vous ne faites pas partie de cet album")) return redirect(request.referrer) if len(users) == 1: - flash("Vous êtes seul dans cet album, le quitter entraînera sa suppression.") + flash(_("Vous êtes seul dans cet album, le quitter entraînera sa suppression.")) return redirect(f"/albums/{uuid}#delete") user.quit_album(uuid) - flash("Album quitté.") + flash(_("Album quitté.")) return redirect("/albums") @@ -200,9 +201,9 @@ def delete_album(uuid): error = None users = album.get_users() if len(users) > 1: - error = "Vous n'êtes pas seul dans cet album." + error = _("Vous n'êtes pas seul dans cet album.") elif len(users) == 1 and users[0]["id"] != user.id: - error = "Vous ne possédez pas cet album." + error = _("Vous ne possédez pas cet album.") if user.access_level == 1: error = None @@ -213,7 +214,7 @@ def delete_album(uuid): album.delete(current_app.instance_path) - flash("Album supprimé.") + flash(_("Album supprimé.")) return redirect("/albums") @@ -236,15 +237,15 @@ def add_partition(album_uuid): source = "upload" # source type: upload, unknown or url if (not user.is_participant(album.uuid)) and (user.access_level != 1): - flash("Vous ne participez pas à cet album.") + flash(_("Vous ne faites pas partie de cet album")) return redirect(request.referrer) error = None if "name" not in request.form: - error = "Un titre est requis." + error = _("Un titre est requis.") elif "file" not in request.files and "partition-uuid" not in request.form: - error = "Aucun fichier n'a été fourni." + error = _("Aucun fichier n'a été fourni.") elif "file" not in request.files: partition_type = "uuid" search_uuid = request.form["partition-uuid"] @@ -256,7 +257,7 @@ def add_partition(album_uuid): (search_uuid,) ).fetchone() if data is None: - error = "Les résultats de la recherche ont expiré." + error = _("Les résultats de la recherche ont expiré.") else: source = data["url"] else: @@ -322,7 +323,7 @@ def add_partition(album_uuid): "status": "ok", "uuid": partition_uuid } - flash(f"Partition {request.form['name']} ajoutée") + flash(_("Partition %(partition_name)s ajoutée", partition_name=request.form['name'])) return redirect(f"/albums/{album.uuid}") @@ -336,13 +337,13 @@ def add_partition_from_search(): error = None if "album-uuid" not in request.form: - error = "Il est nécessaire de sélectionner un album." + error = _("Il est nécessaire de sélectionner un album.") elif "partition-uuid" not in request.form: - error = "Il est nécessaire de sélectionner une partition." + error = _("Il est nécessaire de sélectionner une partition.") elif "partition-type" not in request.form: - error = "Il est nécessaire de spécifier un type de partition." + error = _("Il est nécessaire de spécifier un type de partition.") elif (not user.is_participant(request.form["album-uuid"])) and (user.access_level != 1): - error = "Vous ne participez pas à cet album." + error = _("Vous ne faites pas partie de cet album") if error is not None: flash(error) @@ -362,9 +363,9 @@ def add_partition_from_search(): if data is None: album.add_partition(request.form["partition-uuid"]) - flash("Partition ajoutée.") + flash(_("Partition ajoutée.")) else: - flash("Partition déjà dans l'album.") + flash(_("Partition déjà dans l'album.")) return redirect(f"/albums/{album.uuid}") @@ -376,5 +377,5 @@ def add_partition_from_search(): user=user ) - flash("Type de partition inconnu.") + flash(_("Type de partition inconnu.")) return redirect("/albums") diff --git a/partitioncloud/modules/auth.py b/partitioncloud/modules/auth.py index 8d08c6e..7ada7f1 100644 --- a/partitioncloud/modules/auth.py +++ b/partitioncloud/modules/auth.py @@ -7,6 +7,7 @@ from typing import Optional from flask import (Blueprint, flash, g, redirect, render_template, request, session, url_for, current_app) +from flask_babel import _ from werkzeug.security import check_password_hash, generate_password_hash @@ -23,7 +24,7 @@ def login_required(view): @functools.wraps(view) def wrapped_view(**kwargs): if g.user is None: - flash("Vous devez être connecté pour accéder à cette page.") + flash(_("Vous devez être connecté pour accéder à cette page.")) return redirect(url_for("auth.login")) return view(**kwargs) @@ -50,12 +51,12 @@ def admin_required(view): @functools.wraps(view) def wrapped_view(**kwargs): if g.user is None: - flash("Vous devez être connecté pour accéder à cette page.") + flash(_("Vous devez être connecté pour accéder à cette page.")) return redirect(url_for("auth.login")) user = User(user_id=session.get("user_id")) if user.access_level != 1: - flash("Droits insuffisants.") + flash(_("Droits insuffisants.")) return redirect("/albums") return view(**kwargs) @@ -81,9 +82,9 @@ def create_user(username: str, password: str) -> Optional[str]: """Adds a new user to the database""" error = None if not username: - error = "Un nom d'utilisateur est requis." + error = _("Un nom d'utilisateur est requis.") elif not password: - error = "Un mot de passe est requis." + error = _("Un mot de passe est requis.") try: db = get_db() @@ -96,7 +97,7 @@ def create_user(username: str, password: str) -> Optional[str]: except db.IntegrityError: # The username was already taken, which caused the # commit to fail. Show a validation error. - error = f"Le nom d'utilisateur {username} est déjà pris." + error = _("Le nom d'utilisateur %(username)s est déjà pris.", username=username) return error # may be None @@ -109,7 +110,7 @@ def register(): password for security. """ if current_app.config["DISABLE_REGISTER"]: - flash("L'enregistrement de nouveaux utilisateurs a été désactivé par l'administrateur.") + flash(_("L'enregistrement de nouveaux utilisateurs a été désactivé par l'administrateur.")) return redirect(url_for("auth.login")) if request.method == "POST": @@ -123,7 +124,7 @@ def register(): else: user = User(name=username) - flash("Utilisateur créé avec succès. Vous pouvez vous connecter.") + flash(_("Utilisateur créé avec succès. Vous pouvez vous connecter.")) logging.log( [user.username, user.id, False], @@ -148,7 +149,7 @@ def login(): if (user is None) or not check_password_hash(user["password"], password): logging.log([username], logging.LogEntry.FAILED_LOGIN) - error = "Nom d'utilisateur ou mot de passe incorrect." + error = _("Nom d'utilisateur ou mot de passe incorrect.") if error is None: # store the user id in a new session and return to the index diff --git a/partitioncloud/modules/groupe.py b/partitioncloud/modules/groupe.py index 6991f3a..4b9e367 100644 --- a/partitioncloud/modules/groupe.py +++ b/partitioncloud/modules/groupe.py @@ -4,6 +4,7 @@ Groupe module """ from flask import (Blueprint, abort, flash, redirect, render_template, request, session, current_app) +from flask_babel import _ from .auth import login_required from .db import get_db @@ -67,7 +68,7 @@ def create_groupe(): user = User(user_id=session["user_id"]) if not name or name.strip() == "": - error = "Un nom est requis. Le groupe n'a pas été créé" + error = _("Un nom est requis. Le groupe n'a pas été créé") if error is None: while True: @@ -116,10 +117,10 @@ def join_groupe(uuid): try: user.join_groupe(uuid) except LookupError: - flash("Ce groupe n'existe pas.") + flash(_("Ce groupe n'existe pas.")) return redirect(f"/groupe/{uuid}") - flash("Groupe ajouté à la collection.") + flash(_("Groupe ajouté à la collection.")) return redirect(f"/groupe/{uuid}") @@ -130,15 +131,15 @@ def quit_groupe(uuid): groupe = Groupe(uuid=uuid) users = groupe.get_users() if user.id not in [u["id"] for u in users]: - flash("Vous ne faites pas partie de ce groupe") + flash(_("Vous ne faites pas partie de ce groupe")) return redirect(f"/groupe/{uuid}") if len(users) == 1: - flash("Vous êtes seul dans ce groupe, le quitter entraînera sa suppression.") + flash(_("Vous êtes seul dans ce groupe, le quitter entraînera sa suppression.")) return redirect(f"/groupe/{uuid}#delete") user.quit_groupe(groupe.uuid) - flash("Groupe quitté.") + flash(_("Groupe quitté.")) return redirect("/albums") @@ -151,7 +152,7 @@ def delete_groupe(uuid): error = None users = groupe.get_users() if len(users) > 1: - error = "Vous n'êtes pas seul dans ce groupe." + error = _("Vous n'êtes pas seul dans ce groupe.") if user.access_level == 1 or user.id not in groupe.get_admins(): error = None @@ -162,7 +163,7 @@ def delete_groupe(uuid): groupe.delete(current_app.instance_path) - flash("Groupe supprimé.") + flash(_("Groupe supprimé.")) return redirect("/albums") @@ -181,10 +182,10 @@ def create_album_req(groupe_uuid): error = None if not name or name.strip() == "": - error = "Un nom est requis. L'album n'a pas été créé" + error = _("Un nom est requis. L'album n'a pas été créé") if user.id not in groupe.get_admins(): - error ="Vous n'êtes pas administrateur de ce groupe" + error = _("Vous n'êtes pas administrateur de ce groupe") if error is None: uuid = utils.create_album(name) diff --git a/partitioncloud/modules/logging.py b/partitioncloud/modules/logging.py index 472022e..162c4a5 100644 --- a/partitioncloud/modules/logging.py +++ b/partitioncloud/modules/logging.py @@ -30,7 +30,7 @@ class LogEntry(Enum): def add_entry(entry: str) -> None: - date = datetime.now().strftime("%y-%b-%Y %H:%M:%S") + date = datetime.now().strftime('%y-%b-%Y %H:%M:%S') with open(log_file, 'a', encoding="utf8") as f: f.write(f"[{date}] {entry}\n") diff --git a/partitioncloud/modules/partition.py b/partitioncloud/modules/partition.py index 700b221..0dfe18f 100644 --- a/partitioncloud/modules/partition.py +++ b/partitioncloud/modules/partition.py @@ -6,6 +6,7 @@ import os from uuid import uuid4 from flask import (Blueprint, abort, send_file, render_template, request, redirect, flash, session, current_app) +from flask_babel import _ from .db import get_db from .auth import login_required, admin_required @@ -54,12 +55,12 @@ def add_attachment(uuid): user = User(user_id=session.get("user_id")) if user.id != partition.user_id and user.access_level != 1: - flash("Cette partition ne vous current_appartient pas") + flash(_("Cette partition ne vous appartient pas")) return redirect(request.referrer) error = None # À mettre au propre if "file" not in request.files: - error = "Aucun fichier n'a été fourni." + error = _("Aucun fichier n'a été fourni.") else: if "name" not in request.form or request.form["name"] == "": name = ".".join(request.files["file"].filename.split(".")[:-1]) @@ -67,12 +68,12 @@ def add_attachment(uuid): name = request.form["name"] if name == "": - error = "Pas de nom de fichier" + error = _("Pas de nom de fichier") else: filename = request.files["file"].filename ext = filename.split(".")[-1] if ext not in ["mid", "mp3"]: - error = "Extension de fichier non supportée" + error = _("Extension de fichier non supportée") if error is not None: flash(error) @@ -140,7 +141,7 @@ def edit(uuid): user = User(user_id=session.get("user_id")) if user.access_level != 1 and partition.user_id != user.id: - flash("Vous n'êtes pas autorisé à modifier cette partition.") + flash(_("Vous n'êtes pas autorisé à modifier cette partition.")) return redirect("/albums") if request.method == "GET": @@ -149,11 +150,11 @@ def edit(uuid): error = None if "name" not in request.form or request.form["name"].strip() == "": - error = "Un titre est requis." + error = _("Un titre est requis.") elif "author" not in request.form: - error = "Un nom d'auteur est requis (à minima nul)" + error = _("Un nom d'auteur est requis (à minima nul)") elif "body" not in request.form: - error = "Des paroles sont requises (à minima nulles)" + error = _("Des paroles sont requises (à minima nulles)") if error is not None: flash(error) @@ -165,7 +166,7 @@ def edit(uuid): body=request.form["body"] ) - flash(f"Partition {request.form['name']} modifiée avec succès.") + flash(_("Partition %(name)s modifiée avec succès.", name=request.form['name'])) return redirect("/albums") @@ -195,11 +196,11 @@ def details(uuid): error = None if "name" not in request.form or request.form["name"].strip() == "": - error = "Un titre est requis." + error = _("Un titre est requis.") elif "author" not in request.form: - error = "Un nom d'auteur est requis (à minima nul)" + error = _("Un nom d'auteur est requis (à minima nul)") elif "body" not in request.form: - error = "Des paroles sont requises (à minima nulles)" + error = _("Des paroles sont requises (à minima nulles)") if error is not None: flash(error) @@ -211,7 +212,7 @@ def details(uuid): body=request.form["body"] ) - flash(f"Partition {request.form['name']} modifiée avec succès.") + flash(_("Partition %(name)s modifiée avec succès.", name=request.form['name'])) return redirect("/albums") @@ -226,7 +227,7 @@ def delete(uuid): user = User(user_id=session.get("user_id")) if user.access_level != 1 and partition.user_id != user.id: - flash("Vous n'êtes pas autorisé à supprimer cette partition.") + flash(_("Vous n'êtes pas autorisé à supprimer cette partition.")) return redirect("/albums") if request.method == "GET": @@ -234,7 +235,7 @@ def delete(uuid): partition.delete(current_app.instance_path) - flash("Partition supprimée.") + flash(_("Partition supprimée.")) return redirect("/albums") diff --git a/partitioncloud/translations/en/LC_MESSAGES/messages.po b/partitioncloud/translations/en/LC_MESSAGES/messages.po new file mode 100644 index 0000000..76638ad --- /dev/null +++ b/partitioncloud/translations/en/LC_MESSAGES/messages.po @@ -0,0 +1,224 @@ +# English translations for PROJECT. +# Copyright (C) 2024 ORGANIZATION +# This file is distributed under the same license as the PROJECT project. +# FIRST AUTHOR , 2024. +# +msgid "" +msgstr "" +"Project-Id-Version: PROJECT VERSION\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2024-01-22 16:04+0100\n" +"PO-Revision-Date: 2024-01-22 15:38+0100\n" +"Last-Translator: FULL NAME \n" +"Language: en\n" +"Language-Team: en \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.12.1\n" + +#: partitioncloud/__init__.py:136 +#, fuzzy, python-format +msgid "Utilisateur %(username)s créé" +msgstr "Created user %(username)s" + +#: partitioncloud/__init__.py:139 +#, fuzzy, python-format +msgid "Cet album n'existe pas. L'utilisateur %(username)s a été créé" +msgstr "This album does not exists, but user %(username)s has been created" + +#: partitioncloud/modules/albums.py:41 +msgid "Aucun terme de recherche spécifié." +msgstr "Missing search query" + +#: partitioncloud/modules/albums.py:123 partitioncloud/modules/groupe.py:185 +msgid "Un nom est requis. L'album n'a pas été créé" +msgstr "Missing name." + +#: partitioncloud/modules/albums.py:160 +msgid "Cet album n'existe pas." +msgstr "This album does not exist." + +#: partitioncloud/modules/albums.py:163 +msgid "Album ajouté à la collection." +msgstr "Album added to collection." + +#: partitioncloud/modules/albums.py:177 partitioncloud/modules/albums.py:240 +#: partitioncloud/modules/albums.py:346 +msgid "Vous ne faites pas partie de cet album" +msgstr "You are not a member of this album" + +#: partitioncloud/modules/albums.py:181 +msgid "Vous êtes seul dans cet album, le quitter entraînera sa suppression." +msgstr "You are alone here, quitting means deleting this album." + +#: partitioncloud/modules/albums.py:185 +msgid "Album quitté." +msgstr "Album quitted." + +#: partitioncloud/modules/albums.py:204 +msgid "Vous n'êtes pas seul dans cet album." +msgstr "You are not alone in this album." + +#: partitioncloud/modules/albums.py:206 +msgid "Vous ne possédez pas cet album." +msgstr "You don't own this album." + +#: partitioncloud/modules/albums.py:217 +msgid "Album supprimé." +msgstr "Album deleted." + +#: partitioncloud/modules/albums.py:246 partitioncloud/modules/partition.py:153 +#: partitioncloud/modules/partition.py:199 +msgid "Un titre est requis." +msgstr "Missing title" + +#: partitioncloud/modules/albums.py:248 partitioncloud/modules/partition.py:63 +msgid "Aucun fichier n'a été fourni." +msgstr "Missing file" + +#: partitioncloud/modules/albums.py:260 +msgid "Les résultats de la recherche ont expiré." +msgstr "Search results expired" + +#: partitioncloud/modules/albums.py:326 +#, fuzzy, python-format +msgid "Partition %(partition_name)s ajoutée" +msgstr "Score %(partition_name)s added" + +#: partitioncloud/modules/albums.py:340 +msgid "Il est nécessaire de sélectionner un album." +msgstr "Selecting an album is mandatory." + +#: partitioncloud/modules/albums.py:342 +msgid "Il est nécessaire de sélectionner une partition." +msgstr "Selecting a score is mandatory." + +#: partitioncloud/modules/albums.py:344 +msgid "Il est nécessaire de spécifier un type de partition." +msgstr "Please specify a score type." + +#: partitioncloud/modules/albums.py:366 +msgid "Partition ajoutée." +msgstr "Score added" + +#: partitioncloud/modules/albums.py:368 +msgid "Partition déjà dans l'album." +msgstr "Score is already in the album." + +#: partitioncloud/modules/albums.py:380 +msgid "Type de partition inconnu." +msgstr "Unknown score type." + +#: partitioncloud/modules/auth.py:27 partitioncloud/modules/auth.py:54 +msgid "Vous devez être connecté pour accéder à cette page." +msgstr "You need to login to access this resource." + +#: partitioncloud/modules/auth.py:59 +msgid "Droits insuffisants." +msgstr "Missing rights." + +#: partitioncloud/modules/auth.py:85 +msgid "Un nom d'utilisateur est requis." +msgstr "Missing username." + +#: partitioncloud/modules/auth.py:87 +msgid "Un mot de passe est requis." +msgstr "Missing password." + +#: partitioncloud/modules/auth.py:100 +#, python-format +msgid "Le nom d'utilisateur %(username)s est déjà pris." +msgstr "Username %(username)s is not available." + +#: partitioncloud/modules/auth.py:113 +msgid "" +"L'enregistrement de nouveaux utilisateurs a été désactivé par " +"l'administrateur." +msgstr "New users registration is disabled by owner." + +#: partitioncloud/modules/auth.py:127 +msgid "Utilisateur créé avec succès. Vous pouvez vous connecter." +msgstr "Successfully created new user. You can log in." + +#: partitioncloud/modules/auth.py:152 +msgid "Nom d'utilisateur ou mot de passe incorrect." +msgstr "Incorrect username or password" + +#: partitioncloud/modules/groupe.py:71 +msgid "Un nom est requis. Le groupe n'a pas été créé" +msgstr "Missing name." + +#: partitioncloud/modules/groupe.py:120 +msgid "Ce groupe n'existe pas." +msgstr "Unknown group." + +#: partitioncloud/modules/groupe.py:123 +msgid "Groupe ajouté à la collection." +msgstr "Group added to collection." + +#: partitioncloud/modules/groupe.py:134 +msgid "Vous ne faites pas partie de ce groupe" +msgstr "You are not a member of this group." + +#: partitioncloud/modules/groupe.py:138 +msgid "Vous êtes seul dans ce groupe, le quitter entraînera sa suppression." +msgstr "You are alone here, quitting means deleting this group." + +#: partitioncloud/modules/groupe.py:142 +msgid "Groupe quitté." +msgstr "Group quitted." + +#: partitioncloud/modules/groupe.py:155 +msgid "Vous n'êtes pas seul dans ce groupe." +msgstr "You are not alone in this group." + +#: partitioncloud/modules/groupe.py:166 +msgid "Groupe supprimé." +msgstr "Group deleted." + +#: partitioncloud/modules/groupe.py:188 +msgid "Vous n'êtes pas administrateur de ce groupe" +msgstr "You are not admin of this group." + +#: partitioncloud/modules/partition.py:58 +msgid "Cette partition ne vous appartient pas" +msgstr "You don't own this score." + +#: partitioncloud/modules/partition.py:71 +msgid "Pas de nom de fichier" +msgstr "Missing filename." + +#: partitioncloud/modules/partition.py:76 +msgid "Extension de fichier non supportée" +msgstr "Unsupported file type." + +#: partitioncloud/modules/partition.py:144 +msgid "Vous n'êtes pas autorisé à modifier cette partition." +msgstr "You are not allowed to edit this file." + +#: partitioncloud/modules/partition.py:155 +#: partitioncloud/modules/partition.py:201 +msgid "Un nom d'auteur est requis (à minima nul)" +msgstr "Missing author in request body (can be null)." + +#: partitioncloud/modules/partition.py:157 +#: partitioncloud/modules/partition.py:203 +msgid "Des paroles sont requises (à minima nulles)" +msgstr "Missing lyrics (can be null)." + +#: partitioncloud/modules/partition.py:169 +#: partitioncloud/modules/partition.py:215 +#, python-format +msgid "Partition %(name)s modifiée avec succès." +msgstr "Successfully modified %(name)s" + +#: partitioncloud/modules/partition.py:230 +msgid "Vous n'êtes pas autorisé à supprimer cette partition." +msgstr "You are not allowed to delete this score." + +#: partitioncloud/modules/partition.py:238 +msgid "Partition supprimée." +msgstr "Score deleted." + diff --git a/partitioncloud/translations/fr/LC_MESSAGES/messages.po b/partitioncloud/translations/fr/LC_MESSAGES/messages.po new file mode 100644 index 0000000..11f66d7 --- /dev/null +++ b/partitioncloud/translations/fr/LC_MESSAGES/messages.po @@ -0,0 +1,226 @@ +# French translations for PROJECT. +# Copyright (C) 2024 ORGANIZATION +# This file is distributed under the same license as the PROJECT project. +# FIRST AUTHOR , 2024. +# +msgid "" +msgstr "" +"Project-Id-Version: PROJECT VERSION\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2024-01-22 16:04+0100\n" +"PO-Revision-Date: 2024-01-22 15:24+0100\n" +"Last-Translator: FULL NAME \n" +"Language: fr\n" +"Language-Team: fr \n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.12.1\n" + +#: partitioncloud/__init__.py:136 +#, fuzzy, python-format +msgid "Utilisateur %(username)s créé" +msgstr "Utilisateur %(username)s créé" + +#: partitioncloud/__init__.py:139 +#, fuzzy, python-format +msgid "Cet album n'existe pas. L'utilisateur %(username)s a été créé" +msgstr "Cet album n'existe pas. L'utilisateur %(username)s a été créé" + +#: partitioncloud/modules/albums.py:41 +msgid "Aucun terme de recherche spécifié." +msgstr "Aucun terme de recherche spécifié." + +#: partitioncloud/modules/albums.py:123 partitioncloud/modules/groupe.py:185 +msgid "Un nom est requis. L'album n'a pas été créé" +msgstr "Un nom est requis. L'album n'a pas été créé" + +#: partitioncloud/modules/albums.py:160 +msgid "Cet album n'existe pas." +msgstr "Cet album n'existe pas." + +#: partitioncloud/modules/albums.py:163 +msgid "Album ajouté à la collection." +msgstr "Album ajouté à la collection." + +#: partitioncloud/modules/albums.py:177 partitioncloud/modules/albums.py:240 +#: partitioncloud/modules/albums.py:346 +msgid "Vous ne faites pas partie de cet album" +msgstr "Vous ne faites pas partie de cet album" + +#: partitioncloud/modules/albums.py:181 +msgid "Vous êtes seul dans cet album, le quitter entraînera sa suppression." +msgstr "Vous êtes seul dans cet album, le quitter entraînera sa suppression." + +#: partitioncloud/modules/albums.py:185 +msgid "Album quitté." +msgstr "Album quitté." + +#: partitioncloud/modules/albums.py:204 +msgid "Vous n'êtes pas seul dans cet album." +msgstr "Vous n'êtes pas seul dans cet album." + +#: partitioncloud/modules/albums.py:206 +msgid "Vous ne possédez pas cet album." +msgstr "Vous ne possédez pas cet album." + +#: partitioncloud/modules/albums.py:217 +msgid "Album supprimé." +msgstr "Album supprimé." + +#: partitioncloud/modules/albums.py:246 partitioncloud/modules/partition.py:153 +#: partitioncloud/modules/partition.py:199 +msgid "Un titre est requis." +msgstr "Un titre est requis." + +#: partitioncloud/modules/albums.py:248 partitioncloud/modules/partition.py:63 +msgid "Aucun fichier n'a été fourni." +msgstr "Aucun fichier n'a été fourni." + +#: partitioncloud/modules/albums.py:260 +msgid "Les résultats de la recherche ont expiré." +msgstr "Les résultats de la recherche ont expiré." + +#: partitioncloud/modules/albums.py:326 +#, fuzzy, python-format +msgid "Partition %(partition_name)s ajoutée" +msgstr "Partition %(partition_name)s ajoutée" + +#: partitioncloud/modules/albums.py:340 +msgid "Il est nécessaire de sélectionner un album." +msgstr "Il est nécessaire de sélectionner un album." + +#: partitioncloud/modules/albums.py:342 +msgid "Il est nécessaire de sélectionner une partition." +msgstr "Il est nécessaire de sélectionner une partition." + +#: partitioncloud/modules/albums.py:344 +msgid "Il est nécessaire de spécifier un type de partition." +msgstr "Il est nécessaire de spécifier un type de partition." + +#: partitioncloud/modules/albums.py:366 +msgid "Partition ajoutée." +msgstr "Partition ajoutée." + +#: partitioncloud/modules/albums.py:368 +msgid "Partition déjà dans l'album." +msgstr "Partition déjà dans l'album." + +#: partitioncloud/modules/albums.py:380 +msgid "Type de partition inconnu." +msgstr "Type de partition inconnu." + +#: partitioncloud/modules/auth.py:27 partitioncloud/modules/auth.py:54 +msgid "Vous devez être connecté pour accéder à cette page." +msgstr "Vous devez être connecté pour accéder à cette page." + +#: partitioncloud/modules/auth.py:59 +msgid "Droits insuffisants." +msgstr "Droits insuffisants." + +#: partitioncloud/modules/auth.py:85 +msgid "Un nom d'utilisateur est requis." +msgstr "Un nom d'utilisateur est requis." + +#: partitioncloud/modules/auth.py:87 +msgid "Un mot de passe est requis." +msgstr "Un mot de passe est requis." + +#: partitioncloud/modules/auth.py:100 +#, fuzzy, python-format +msgid "Le nom d'utilisateur %(username)s est déjà pris." +msgstr "Le nom d'utilisateur %(username)s est déjà pris." + +#: partitioncloud/modules/auth.py:113 +msgid "" +"L'enregistrement de nouveaux utilisateurs a été désactivé par " +"l'administrateur." +msgstr "" +"L'enregistrement de nouveaux utilisateurs a été désactivé par " +"l'administrateur." + +#: partitioncloud/modules/auth.py:127 +msgid "Utilisateur créé avec succès. Vous pouvez vous connecter." +msgstr "Utilisateur créé avec succès. Vous pouvez vous connecter." + +#: partitioncloud/modules/auth.py:152 +msgid "Nom d'utilisateur ou mot de passe incorrect." +msgstr "Nom d'utilisateur ou mot de passe incorrect." + +#: partitioncloud/modules/groupe.py:71 +msgid "Un nom est requis. Le groupe n'a pas été créé" +msgstr "Un nom est requis. Le groupe n'a pas été créé" + +#: partitioncloud/modules/groupe.py:120 +msgid "Ce groupe n'existe pas." +msgstr "Ce groupe n'existe pas." + +#: partitioncloud/modules/groupe.py:123 +msgid "Groupe ajouté à la collection." +msgstr "Groupe ajouté à la collection." + +#: partitioncloud/modules/groupe.py:134 +msgid "Vous ne faites pas partie de ce groupe" +msgstr "Vous ne faites pas partie de ce groupe" + +#: partitioncloud/modules/groupe.py:138 +msgid "Vous êtes seul dans ce groupe, le quitter entraînera sa suppression." +msgstr "Vous êtes seul dans ce groupe, le quitter entraînera sa suppression." + +#: partitioncloud/modules/groupe.py:142 +msgid "Groupe quitté." +msgstr "Groupe quitté." + +#: partitioncloud/modules/groupe.py:155 +msgid "Vous n'êtes pas seul dans ce groupe." +msgstr "Vous n'êtes pas seul dans ce groupe." + +#: partitioncloud/modules/groupe.py:166 +msgid "Groupe supprimé." +msgstr "Groupe supprimé." + +#: partitioncloud/modules/groupe.py:188 +msgid "Vous n'êtes pas administrateur de ce groupe" +msgstr "Vous n'êtes pas administrateur de ce groupe" + +#: partitioncloud/modules/partition.py:58 +msgid "Cette partition ne vous appartient pas" +msgstr "Cette partition ne vous appartient pas" + +#: partitioncloud/modules/partition.py:71 +msgid "Pas de nom de fichier" +msgstr "Pas de nom de fichier" + +#: partitioncloud/modules/partition.py:76 +msgid "Extension de fichier non supportée" +msgstr "Extension de fichier non supportée" + +#: partitioncloud/modules/partition.py:144 +msgid "Vous n'êtes pas autorisé à modifier cette partition." +msgstr "Vous n'êtes pas autorisé à modifier cette partition." + +#: partitioncloud/modules/partition.py:155 +#: partitioncloud/modules/partition.py:201 +msgid "Un nom d'auteur est requis (à minima nul)" +msgstr "Un nom d'auteur est requis (à minima nul)" + +#: partitioncloud/modules/partition.py:157 +#: partitioncloud/modules/partition.py:203 +msgid "Des paroles sont requises (à minima nulles)" +msgstr "Des paroles sont requises (à minima nulles)" + +#: partitioncloud/modules/partition.py:169 +#: partitioncloud/modules/partition.py:215 +#, fuzzy, python-format +msgid "Partition %(name)s modifiée avec succès." +msgstr "Partition %(name)s modifiée avec succès." + +#: partitioncloud/modules/partition.py:230 +msgid "Vous n'êtes pas autorisé à supprimer cette partition." +msgstr "Vous n'êtes pas autorisé à supprimer cette partition." + +#: partitioncloud/modules/partition.py:238 +msgid "Partition supprimée." +msgstr "Partition supprimée." + diff --git a/requirements.txt b/requirements.txt index 087e383..8a0b15a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,5 @@ flask +flask-babel google colorama qrcode \ No newline at end of file From 7acb44683748a4b3289f890d7e238dc455c76eab Mon Sep 17 00:00:00 2001 From: augustin64 Date: Thu, 25 Jan 2024 16:22:04 +0100 Subject: [PATCH 2/6] Localization: add templates strings --- README.md | 6 +- make.sh | 26 +- partitioncloud/templates/admin/index.html | 16 +- partitioncloud/templates/admin/logs.html | 2 +- .../templates/admin/partitions.html | 4 +- .../templates/albums/add-partition.html | 12 +- partitioncloud/templates/albums/album.html | 29 +- .../templates/albums/delete-album.html | 8 +- partitioncloud/templates/albums/index.html | 9 +- partitioncloud/templates/albums/search.html | 12 +- partitioncloud/templates/auth/login.html | 8 +- partitioncloud/templates/auth/register.html | 12 +- partitioncloud/templates/base.html | 34 +- .../templates/components/add_partition.html | 11 + partitioncloud/templates/groupe/index.html | 31 +- .../templates/partition/attachments.html | 16 +- .../templates/partition/delete.html | 8 +- .../templates/partition/details.html | 37 +- partitioncloud/templates/partition/edit.html | 29 +- .../translations/en/LC_MESSAGES/messages.po | 369 ++++++++++++++++- .../translations/fr/LC_MESSAGES/messages.po | 379 +++++++++++++++++- 21 files changed, 903 insertions(+), 155 deletions(-) create mode 100644 partitioncloud/templates/components/add_partition.html diff --git a/README.md b/README.md index 10d96a4..e0f8a87 100644 --- a/README.md +++ b/README.md @@ -75,11 +75,11 @@ Modifier le fichier de configuration créé dans `instance/` # Extraire les données pybabel extract -F babel.cfg -k _l -o partitioncloud/translations/messages.pot . # Créer un nouveau fichier -pybabel init -i partitioncloud/translations/messages.pot -d partitioncloud/translations -l $COUNTRY_CODE +pybabel init -i partitioncloud/translations/messages.pot -d partitioncloud/translations/ -l $COUNTRY_CODE # Modifier translations/$COUNTRY_CODE/LC_MESSAGES/messages.po # Ajouter $COUNTRY_CODE dans default_config.py: LANGUAGES # Compiler les nouvelles translations avant de démarrer le serveur -pybabel compile -d partitioncloud/translations +pybabel compile -d partitioncloud/translations/ ``` ### Mettre à jour une traduction @@ -88,7 +88,7 @@ pybabel compile -d partitioncloud/translations # Récupérer les données les plus récentes pybabel extract -F babel.cfg -k _l -o partitioncloud/translations/messages.pot . # Les ajouter aux traductions -pybabel update -i partitioncloud/translations/messages.pot -d partitioncloud/translations +pybabel update -i partitioncloud/translations/messages.pot -d partitioncloud/translations/ ``` ## TODO diff --git a/make.sh b/make.sh index 566b605..8aa925d 100755 --- a/make.sh +++ b/make.sh @@ -25,6 +25,14 @@ init () { echo "Utilisateur root:root ajouté" } +translations () { + # Rajouter les chaînes non traduites + pybabel extract -F babel.cfg -k _l -o partitioncloud/translations/messages.pot . + pybabel update -i partitioncloud/translations/messages.pot -d partitioncloud/translations/ + # Compiler + pybabel compile -d partitioncloud/translations/ +} + start () { flask run --port=$PORT } @@ -35,20 +43,30 @@ production () { --bind 0.0.0.0:$PORT } +load_config () { + # Load variables PORT and INSTANCE_PATH + eval $(cat $1 | grep -E "^PORT=") + eval $(cat $1 | grep -E "^INSTANCE_PATH=") +} + usage () { echo "Usage:" echo -e "\t$0 init" echo -e "\t$0 start" + echo -e "\t$0 production" + echo -e "\t$0 translations" + } -if [[ $1 && $(type "$1") = *"is a"*"function"* || $(type "$1") == *"est une fonction"* ]]; then +RESULT=$(type "$1") +if [[ $1 && $RESULT = *"is a"*"function"* || $RESULT == *"est une fonction"* ]]; then # Import config - source "default_config.py" - [[ ! -x "$INSTANCE_PATH/config.py" ]] && source "$INSTANCE_PATH/config.py" + load_config "default_config.py" + [[ ! -x "$INSTANCE_PATH/config.py" ]] && load_config "$INSTANCE_PATH/config.py" $1 ${*:2} # Call the function else usage - echo $(type "$1") + echo $RESULT exit 1 fi diff --git a/partitioncloud/templates/admin/index.html b/partitioncloud/templates/admin/index.html index 6dcb070..fc14ab6 100644 --- a/partitioncloud/templates/admin/index.html +++ b/partitioncloud/templates/admin/index.html @@ -2,27 +2,27 @@ {% block content %} -

{% block title %}Panneau d'administration{% endblock %}

+

{% block title %}{{ _("Panneau d'administration") }}{% endblock %}

- - - - + + + + diff --git a/partitioncloud/templates/admin/logs.html b/partitioncloud/templates/admin/logs.html index 308c0c3..e0b9364 100644 --- a/partitioncloud/templates/admin/logs.html +++ b/partitioncloud/templates/admin/logs.html @@ -2,7 +2,7 @@ {% extends 'base.html' %} {% block header %} -

{% block title %}Logs{% endblock %}

+

{% block title %}{{ _("Logs") }}{% endblock %}

{% endblock %} {% block content %} diff --git a/partitioncloud/templates/admin/partitions.html b/partitioncloud/templates/admin/partitions.html index 928f7b0..f503bb8 100644 --- a/partitioncloud/templates/admin/partitions.html +++ b/partitioncloud/templates/admin/partitions.html @@ -1,7 +1,7 @@ {% extends 'base.html' %} {% block header %} -

{% block title %}Liste des partitions{% endblock %}

+

{% block title %}{{ _("Liste des partitions") }}{% endblock %}

{% endblock %} {% block content %} @@ -28,6 +28,6 @@ {% endfor %} {% else %} -
Aucune partition disponible
+
{{ _("Aucune partition disponible") }}
{% endif %} {% endblock %} \ No newline at end of file diff --git a/partitioncloud/templates/albums/add-partition.html b/partitioncloud/templates/albums/add-partition.html index 49b574f..f2b496e 100644 --- a/partitioncloud/templates/albums/add-partition.html +++ b/partitioncloud/templates/albums/add-partition.html @@ -1,15 +1,7 @@ {% extends 'base.html' %} -{% block title %}Ajout de partition{% endblock %} +{% block title %}{{ _("Ajout de partition") }}{% endblock %} {% block content %} -

Ajouter une partition à {{ album.name }}

- - -
-
-
- - - + {% include 'components/add_partition.html' %} {% endblock %} \ No newline at end of file diff --git a/partitioncloud/templates/albums/album.html b/partitioncloud/templates/albums/album.html index df5a6b0..0ac56cc 100644 --- a/partitioncloud/templates/albums/album.html +++ b/partitioncloud/templates/albums/album.html @@ -5,22 +5,15 @@ {% block dialogs %} -

Ajouter une partition à {{ album.name }}

-
-
-
-
-
- - + {% include 'components/add_partition.html' %} Close
-

Supprimer l'album

- Êtes vous sûr de vouloir supprimer cet album ? +

{{ _("Supprimer l'album") }}

+ {{ _("Êtes vous sûr de vouloir supprimer cet album ?") }}

- + Close
@@ -38,7 +31,7 @@ {% block content %}

- {% if groupe %}{{ groupe.name}} / + {% if groupe %}{{ groupe.name }} / {% endif %} {{ album.name }}

@@ -55,16 +48,16 @@ + @@ -98,6 +91,6 @@ {% else %}
-
Aucune partition disponible
+
{{ _("Aucune partition disponible") }}
{% endif %} {% endblock %} diff --git a/partitioncloud/templates/albums/delete-album.html b/partitioncloud/templates/albums/delete-album.html index 83b22d5..c87baf2 100644 --- a/partitioncloud/templates/albums/delete-album.html +++ b/partitioncloud/templates/albums/delete-album.html @@ -1,14 +1,14 @@ {% extends 'base.html' %} -{% block title %}Supprimer {{ album.name }}{% endblock %} +{% block title %}{{ _("Supprimer %(name)s", name=album.name) }}{% endblock %} {% block content %} -Êtes vous sûr de vouloir supprimer cet album ? +{{ _("Êtes vous sûr de vouloir supprimer cet album ?") }}
- + - + {% endblock %} \ No newline at end of file diff --git a/partitioncloud/templates/albums/index.html b/partitioncloud/templates/albums/index.html index faf3661..b0bd386 100644 --- a/partitioncloud/templates/albums/index.html +++ b/partitioncloud/templates/albums/index.html @@ -1,10 +1,13 @@ {% extends 'base.html' %} -{% block title %}Home{% endblock %} +{% block title %}{{ _("Home") }}{% endblock %} {% block content %}
-Bonjour {{ user.username }} !
-Aucun album sélectionné +{% set user_name %} +{{ user.username }} +{% endset %} +{{ _("Bonjour %(user_name)s !", user_name=user_name) }}
+{{ _("Aucun album sélectionné") }}
{% endblock %} \ No newline at end of file diff --git a/partitioncloud/templates/albums/search.html b/partitioncloud/templates/albums/search.html index cb50a0c..bc7252c 100644 --- a/partitioncloud/templates/albums/search.html +++ b/partitioncloud/templates/albums/search.html @@ -2,9 +2,9 @@ {% block content %} -

{% block title %}Résultats de la recherche "{{ query }}"{% endblock %}

+

{% block title %}{{ _('Résultats de la recherche "%(query)s', query=query)}}{% endblock %}

{% if partitions|length != 0 %} -

Résultats dans la bibliothèque locale

+

{{ _("Résultats dans la bibliothèque locale") }}

{% for partition in partitions %}
@@ -35,14 +35,14 @@ - +
{% endfor %}
{% endif %} {% if google_results|length != 0 %} -

Résultats de la recherche en ligne

+

{{ _("Résultats de la recherche en ligne") }}

{% for partition in google_results %}
@@ -67,13 +67,13 @@ - +
{% endfor %}
{% endif %} {% if google_results|length == 0 and partitions|length == 0 %} -Aucun résultat. Essayez d'augmenter le nombre de recherches en ligne ou d'affiner votre recherche. +{{ _("Aucun résultat. Essayez d'augmenter le nombre de recherches en ligne ou d'affiner votre recherche.") }} {% endif %} {% endblock %} \ No newline at end of file diff --git a/partitioncloud/templates/auth/login.html b/partitioncloud/templates/auth/login.html index 9051e1d..7f93eb8 100644 --- a/partitioncloud/templates/auth/login.html +++ b/partitioncloud/templates/auth/login.html @@ -2,11 +2,11 @@ {% block content %} -

{% block title %}Connexion{% endblock %}

+

{% block title %}{{ _("Connexion") }}{% endblock %}

-
-
- +
+
+ {% endblock %} \ No newline at end of file diff --git a/partitioncloud/templates/auth/register.html b/partitioncloud/templates/auth/register.html index 779c4d6..a6bd781 100644 --- a/partitioncloud/templates/auth/register.html +++ b/partitioncloud/templates/auth/register.html @@ -2,21 +2,21 @@ {% block content %} -

{% block title %}Créer un compte{% endblock %}

+

{% block title %}{{ _("Créer un compte") }}{% endblock %}

{% if g.user.access_level == 1 %} -
+

{% endif %} -
-
- +
+
+ {% endblock %} \ No newline at end of file diff --git a/partitioncloud/templates/base.html b/partitioncloud/templates/base.html index 7e92392..8247de8 100644 --- a/partitioncloud/templates/base.html +++ b/partitioncloud/templates/base.html @@ -20,21 +20,21 @@ {% block dialogs %}{% endblock %} {% if g.user %} -

Créer un nouvel album

+

{{ _("Créer un nouvel album") }}

-
- +
+

- Je souhaite créer plusieurs albums et pouvoir tous les partager avec un seul lien. Créer un groupe. + {{ _("Je souhaite créer plusieurs albums et pouvoir tous les partager avec un seul lien.") }} {{ _("Créer un groupe") }}. Close
-

Créer un nouveau groupe

+

{{ _("Créer un nouveau groupe") }}

-
- +
+ Close
@@ -58,9 +58,9 @@ diff --git a/partitioncloud/templates/components/add_partition.html b/partitioncloud/templates/components/add_partition.html new file mode 100644 index 0000000..6bf383f --- /dev/null +++ b/partitioncloud/templates/components/add_partition.html @@ -0,0 +1,11 @@ +

{{ _("Ajouter une partition à %(name)s", name=album.name) }}

+ +
+
+
+
+ {% if partition_uuid %} + + {% endif %} + + \ No newline at end of file diff --git a/partitioncloud/templates/groupe/index.html b/partitioncloud/templates/groupe/index.html index e308a53..0d5e681 100644 --- a/partitioncloud/templates/groupe/index.html +++ b/partitioncloud/templates/groupe/index.html @@ -5,20 +5,20 @@ {% block dialogs %} -

Créer un nouvel album dans le groupe {{ groupe.name }}

+

{{ _("Ajouter un album au groupe %(name)s", name=groupe.name) }}

-
- +
+ Close
-

Supprimer le groupe

- Êtes vous sûr de vouloir supprimer ce groupe ? Cela supprimera les albums - sous-jacents et leurs partitions si personne ne les a rejoints (indépendamment du groupe). +

{{ _("Supprimer le groupe") }}

+ {{ _("Êtes vous sûr de vouloir supprimer ce groupe ? Cela supprimera les albums + sous-jacents et leurs partitions si personne ne les a rejoints (indépendamment du groupe).") }}

- + Close
@@ -44,14 +44,14 @@ + @@ -71,6 +71,11 @@ {% else %}
-
Aucun album disponible. En créer un
+{% set create %} + {{ _("En créer un") }} +{% endset %} +
+ {{ _("Aucun album disponible. %(create)s", create=create) }} +
{% endif %} {% endblock %} \ No newline at end of file diff --git a/partitioncloud/templates/partition/attachments.html b/partitioncloud/templates/partition/attachments.html index f2fd448..59f680f 100644 --- a/partitioncloud/templates/partition/attachments.html +++ b/partitioncloud/templates/partition/attachments.html @@ -2,15 +2,15 @@ {% extends 'base.html' %} -{% block title %}Attachments de {{ partition.name }}{% endblock %} +{% block title %}{{ _("Attachments de %(name)s", name=partition.name) }}{% endblock %} {% block dialogs %} -

Ajouter un attachment à {{ partition.name }}

+

{{ _("Ajouter un attachment à %(name)s", name=partition.name) }}

-
+

- + Close
@@ -19,8 +19,8 @@ {% block content %}

- Impossible d'afficher le pdf dans ce navigateur. - Il est conseillé d'utiliser Firefox sur Android. + {{ _("Impossible d'afficher le pdf dans ce navigateur. + Il est conseillé d'utiliser Firefox sur Android.") }}

@@ -43,7 +43,7 @@ src="/partition/attachment/{{ attachment.uuid }}.mid" sound-font visualizer="#midi-visualizer" data-js-focus-visible> - +
{% endif %} @@ -57,7 +57,7 @@
{% if user %} {% endif %} {% endblock %} diff --git a/partitioncloud/templates/partition/delete.html b/partitioncloud/templates/partition/delete.html index 1d3af3f..c25e495 100644 --- a/partitioncloud/templates/partition/delete.html +++ b/partitioncloud/templates/partition/delete.html @@ -1,16 +1,16 @@ {% extends 'base.html' %} {% block header %} -

{% block title %}Supprimer {{ partition.name }}{% endblock %}

+

{% block title %}{{ _("Supprimer %(name)s", name=partition.name) }}{% endblock %}

{% endblock %} {% block content %} -Êtes vous sûr de vouloir supprimer cette partition ? +{{ _("Êtes vous sûr de vouloir supprimer cette partition ?") }} - + - + {% endblock %} \ No newline at end of file diff --git a/partitioncloud/templates/partition/details.html b/partitioncloud/templates/partition/details.html index 863fcc1..286cd1c 100644 --- a/partitioncloud/templates/partition/details.html +++ b/partitioncloud/templates/partition/details.html @@ -1,15 +1,15 @@ {% extends 'base.html' %} {% block content %} -

{% block title %}Détails "{{ partition.name }}"{% endblock %}

-
+

{% block title %}{{ _('Détails de "%(name)s"', name=partition.name)}}{% endblock %}

+
UtilisateurAlbumsPartitionsPrivilèges{{ _("Utilisateur") }}{{ _("Albums") }}{{ _("Partitions") }}{{ _("Privilèges") }}
🎵 {{ attachment.name }}
- + - - + + - - + + - - + + - + {% set _ = partition.load_attachments() %}
- Responsable de l'ajout + {{ _("Responsable de l'ajout") }} {% if user is not none %} @@ -20,13 +20,13 @@ {% else %} - inconnu + {{ _("Inconnu") }} {% endif %}
- Type d'ajout + {{ _("Type d'ajout") }} {% if partition.source == "unknown" or partition.source == "upload" %} @@ -38,7 +38,7 @@
- Albums + {{ _("Albums") }}
    @@ -49,40 +49,41 @@
Fichier{{ _("Fichier") }}
Titre
{{ _("Titre") }}
Auteur
{{ _("Auteur") }}
Paroles
{{ _("Paroles") }}
Pièces jointes{{ _("Pièces jointes") }} {% if partition.attachments %} - Oui, {{ partition.attachments | length }} + {% set number=partition.attachments | length %} + {{ _("Oui, %(number)s", number=number) }} {% else %} - En rajouter + {{ _("En rajouter") }} {% endif %}
- + - + {% endblock %} \ No newline at end of file diff --git a/partitioncloud/templates/partition/edit.html b/partitioncloud/templates/partition/edit.html index b5ad78a..7876738 100644 --- a/partitioncloud/templates/partition/edit.html +++ b/partitioncloud/templates/partition/edit.html @@ -3,14 +3,14 @@ {% block content %} -

{% block title %}Modifier "{{ partition.name }}"{% endblock %}

+

{% block title %}{{ _("Modifier \"%(name)s\"", name=partition.name) }}{% endblock %}


- + @@ -18,7 +18,7 @@ {% if partition.source != "unknown" and partition.source != "upload" %} {% endif %} - - + + - - + + - - + + - + {% set _ = partition.load_attachments() %}
Fichier{{ _("Fichier") }}
- Source + {{ _("Source") }} {{ partition.source.split("/")[2] }} @@ -26,34 +26,35 @@
Titre
{{ _("Titre") }}
Auteur
{{ _("Auteur") }}
Paroles
{{ _("Paroles") }}
Pièces jointes{{ _("Pièces jointes") }} {% if partition.attachments %} - Oui, {{ partition.attachments | length }} + {% set number=partition.attachments | length %} + {{ _("Oui, %(number)s", number=number) }} {% else %} - En rajouter + {{ _("En rajouter") }} {% endif %}
- +
- + {% endblock %} \ No newline at end of file diff --git a/partitioncloud/translations/en/LC_MESSAGES/messages.po b/partitioncloud/translations/en/LC_MESSAGES/messages.po index 76638ad..908e186 100644 --- a/partitioncloud/translations/en/LC_MESSAGES/messages.po +++ b/partitioncloud/translations/en/LC_MESSAGES/messages.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2024-01-22 16:04+0100\n" +"POT-Creation-Date: 2024-01-25 16:19+0100\n" "PO-Revision-Date: 2024-01-22 15:38+0100\n" "Last-Translator: FULL NAME \n" "Language: en\n" @@ -16,15 +16,15 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" +"Generated-By: Babel 2.14.0\n" #: partitioncloud/__init__.py:136 -#, fuzzy, python-format +#, python-format msgid "Utilisateur %(username)s créé" msgstr "Created user %(username)s" #: partitioncloud/__init__.py:139 -#, fuzzy, python-format +#, python-format msgid "Cet album n'existe pas. L'utilisateur %(username)s a été créé" msgstr "This album does not exists, but user %(username)s has been created" @@ -83,7 +83,7 @@ msgid "Les résultats de la recherche ont expiré." msgstr "Search results expired" #: partitioncloud/modules/albums.py:326 -#, fuzzy, python-format +#, python-format msgid "Partition %(partition_name)s ajoutée" msgstr "Score %(partition_name)s added" @@ -222,3 +222,362 @@ msgstr "You are not allowed to delete this score." msgid "Partition supprimée." msgstr "Score deleted." +#: partitioncloud/templates/base.html:23 +msgid "Créer un nouvel album" +msgstr "New Album" + +#: partitioncloud/templates/base.html:25 partitioncloud/templates/base.html:36 +#: partitioncloud/templates/groupe/index.html:10 +#: partitioncloud/templates/partition/attachments.html:11 +msgid "Nom" +msgstr "Name" + +#: partitioncloud/templates/base.html:26 partitioncloud/templates/base.html:37 +msgid "Créer" +msgstr "Create" + +#: partitioncloud/templates/base.html:30 +msgid "" +"Je souhaite créer plusieurs albums et pouvoir tous les partager avec un " +"seul lien." +msgstr "I want to create a collection of albums." + +#: partitioncloud/templates/base.html:30 +msgid "Créer un groupe" +msgstr "Create group" + +#: partitioncloud/templates/base.html:34 +msgid "Créer un nouveau groupe" +msgstr "Create new group" + +#: partitioncloud/templates/base.html:61 +msgid "Rechercher" +msgstr "Search" + +#: partitioncloud/templates/base.html:63 +msgid "Nombre de recherches en ligne" +msgstr "Number of online searches" + +#: partitioncloud/templates/admin/index.html:23 +#: partitioncloud/templates/base.html:71 +#: partitioncloud/templates/partition/details.html:41 +msgid "Albums" +msgstr "Albums" + +#: partitioncloud/templates/base.html:75 +msgid "Créer un album" +msgstr "New album" + +#: partitioncloud/templates/base.html:111 +msgid "Aucun album disponible" +msgstr "No album available" + +#: partitioncloud/templates/base.html:125 +msgid "Connectez vous pour avoir accès à vos albums" +msgstr "Log in to see your albums" + +#: partitioncloud/templates/base.html:139 +msgid "Déconnexion" +msgstr "Log out" + +#: partitioncloud/templates/base.html:154 +msgid "Panneau admin" +msgstr "Admin Panel" + +#: partitioncloud/templates/auth/register.html:5 +#: partitioncloud/templates/auth/register.html:20 +#: partitioncloud/templates/base.html:166 +msgid "Créer un compte" +msgstr "Create account" + +#: partitioncloud/templates/auth/login.html:10 +#: partitioncloud/templates/base.html:168 +msgid "Se connecter" +msgstr "Log in" + +#: partitioncloud/templates/admin/index.html:5 +msgid "Panneau d'administration" +msgstr "Administration Panel" + +#: partitioncloud/templates/admin/index.html:9 +msgid "Nouvel utilisateur" +msgstr "New user" + +#: partitioncloud/templates/admin/index.html:12 +msgid "Voir les partitions" +msgstr "See scores" + +#: partitioncloud/templates/admin/index.html:15 +msgid "Voir les logs" +msgstr "See logs" + +#: partitioncloud/templates/admin/index.html:22 +msgid "Utilisateur" +msgstr "User" + +#: partitioncloud/templates/admin/index.html:24 +msgid "Partitions" +msgstr "Scores" + +#: partitioncloud/templates/admin/index.html:25 +msgid "Privilèges" +msgstr "Admin privileges" + +#: partitioncloud/templates/admin/logs.html:5 +msgid "Logs" +msgstr "Logs" + +#: partitioncloud/templates/admin/partitions.html:4 +msgid "Liste des partitions" +msgstr "Scores list" + +#: partitioncloud/templates/admin/partitions.html:31 +#: partitioncloud/templates/albums/album.html:94 +msgid "Aucune partition disponible" +msgstr "No available scores" + +#: partitioncloud/templates/albums/add-partition.html:3 +msgid "Ajout de partition" +msgstr "New score" + +#: partitioncloud/templates/albums/album.html:12 +msgid "Supprimer l'album" +msgstr "Delete album" + +#: partitioncloud/templates/albums/album.html:13 +#: partitioncloud/templates/albums/delete-album.html:6 +msgid "Êtes vous sûr de vouloir supprimer cet album ?" +msgstr "Do you really want to delete this album?" + +#: partitioncloud/templates/albums/album.html:16 +#: partitioncloud/templates/albums/album.html:60 +#: partitioncloud/templates/albums/delete-album.html:8 +#: partitioncloud/templates/groupe/index.html:21 +#: partitioncloud/templates/groupe/index.html:54 +#: partitioncloud/templates/partition/delete.html:10 +#: partitioncloud/templates/partition/details.html:86 +#: partitioncloud/templates/partition/edit.html:57 +msgid "Supprimer" +msgstr "Delete" + +#: partitioncloud/templates/albums/album.html:51 +msgid "Ajouter une partition" +msgstr "Add a score" + +#: partitioncloud/templates/albums/album.html:54 +#: partitioncloud/templates/groupe/index.html:47 +msgid "Rejoindre" +msgstr "Join" + +#: partitioncloud/templates/albums/album.html:56 +#: partitioncloud/templates/groupe/index.html:49 +msgid "Quitter" +msgstr "Quit" + +#: partitioncloud/templates/albums/album.html:58 +#: partitioncloud/templates/groupe/index.html:51 +msgid "Partager" +msgstr "Share" + +#: partitioncloud/templates/albums/delete-album.html:3 +#: partitioncloud/templates/partition/delete.html:4 +#, python-format +msgid "Supprimer %(name)s" +msgstr "Delete %(name)s" + +#: partitioncloud/templates/albums/delete-album.html:11 +#: partitioncloud/templates/partition/delete.html:13 +msgid "Annuler" +msgstr "Cancel" + +#: partitioncloud/templates/albums/index.html:3 +msgid "Home" +msgstr "Home" + +#: partitioncloud/templates/albums/index.html:10 +#, python-format +msgid "Bonjour %(user_name)s !" +msgstr "Hi %(user_name)s !" + +#: partitioncloud/templates/albums/index.html:11 +msgid "Aucun album sélectionné" +msgstr "No album selected" + +#: partitioncloud/templates/auth/login.html:5 +msgid "Connexion" +msgstr "Log in" + +#: partitioncloud/templates/auth/login.html:8 +#: partitioncloud/templates/auth/register.html:18 +msgid "Nom d'utilisateur" +msgstr "Username" + +#: partitioncloud/templates/auth/login.html:9 +#: partitioncloud/templates/auth/register.html:19 +msgid "Mot de passe" +msgstr "Password" + +#: partitioncloud/templates/auth/register.html:10 +msgid "Ajouter à un album:" +msgstr "Add to album:" + +#: partitioncloud/templates/auth/register.html:12 +msgid "Aucun" +msgstr "None" + +#: partitioncloud/templates/components/add_partition.html:1 +#, python-format +msgid "Ajouter une partition à %(name)s" +msgstr "Add a score to %(name)s" + +#: partitioncloud/templates/components/add_partition.html:4 +msgid "titre" +msgstr "title" + +#: partitioncloud/templates/components/add_partition.html:5 +msgid "auteur" +msgstr "author" + +#: partitioncloud/templates/components/add_partition.html:6 +msgid "paroles" +msgstr "lyrics" + +#: partitioncloud/templates/components/add_partition.html:10 +#: partitioncloud/templates/groupe/index.html:11 +#: partitioncloud/templates/partition/attachments.html:13 +msgid "Ajouter" +msgstr "Add" + +#: partitioncloud/templates/groupe/index.html:8 +#, python-format +msgid "Ajouter un album au groupe %(name)s" +msgstr "Add an album to group %(name)s" + +#: partitioncloud/templates/groupe/index.html:16 +msgid "Supprimer le groupe" +msgstr "Delete group" + +#: partitioncloud/templates/groupe/index.html:17 +msgid "" +"Êtes vous sûr de vouloir supprimer ce groupe ? Cela supprimera les albums" +"\n" +" sous-jacents et leurs partitions si personne ne les a rejoints " +"(indépendamment du groupe)." +msgstr "Do you really want to delete this group and the albums it contains?" + +#: partitioncloud/templates/groupe/index.html:53 +msgid "Ajouter un album" +msgstr "Add an album" + +#: partitioncloud/templates/groupe/index.html:75 +msgid "En créer un" +msgstr "Create one" + +#: partitioncloud/templates/groupe/index.html:78 +#, python-format +msgid "Aucun album disponible. %(create)s" +msgstr "No available album. %(create)s" + +#: partitioncloud/templates/partition/attachments.html:5 +#, python-format +msgid "Attachments de %(name)s" +msgstr "Attachments of %(name)s" + +#: partitioncloud/templates/partition/attachments.html:9 +#, python-format +msgid "Ajouter un attachment à %(name)s" +msgstr "Add an attachment to %(name)s" + +#: partitioncloud/templates/partition/attachments.html:22 +msgid "" +"Impossible d'afficher le pdf dans ce navigateur.\n" +" Il est conseillé d'utiliser Firefox sur Android." +msgstr "" +"No pdf viewer available in this browser.\n" +" You can use Firefox on Android." + +#: partitioncloud/templates/partition/attachments.html:46 +msgid "JavaScript est nécessaire pour lire les fichiers MIDI" +msgstr "JavaScript is mandatory to read MIDI files" + +#: partitioncloud/templates/partition/attachments.html:60 +msgid "Ajouter un attachment" +msgstr "Add an attachment" + +#: partitioncloud/templates/partition/delete.html:8 +msgid "Êtes vous sûr de vouloir supprimer cette partition ?" +msgstr "Do you really want to delete this score?" + +#: partitioncloud/templates/partition/details.html:4 +#, python-format +msgid "Détails de \"%(name)s\"" +msgstr "Details of \"%(name)s\"" + +#: partitioncloud/templates/partition/details.html:12 +msgid "Responsable de l'ajout" +msgstr "Added by" + +#: partitioncloud/templates/partition/details.html:23 +msgid "Inconnu" +msgstr "Unknown" + +#: partitioncloud/templates/partition/details.html:29 +msgid "Type d'ajout" +msgstr "Type" + +#: partitioncloud/templates/partition/details.html:52 +#: partitioncloud/templates/partition/edit.html:13 +msgid "Fichier" +msgstr "File" + +#: partitioncloud/templates/partition/details.html:58 +#: partitioncloud/templates/partition/details.html:59 +#: partitioncloud/templates/partition/edit.html:29 +#: partitioncloud/templates/partition/edit.html:30 +msgid "Titre" +msgstr "Title" + +#: partitioncloud/templates/partition/details.html:62 +#: partitioncloud/templates/partition/details.html:63 +#: partitioncloud/templates/partition/edit.html:33 +#: partitioncloud/templates/partition/edit.html:34 +msgid "Auteur" +msgstr "Author" + +#: partitioncloud/templates/partition/details.html:66 +#: partitioncloud/templates/partition/details.html:67 +#: partitioncloud/templates/partition/edit.html:37 +#: partitioncloud/templates/partition/edit.html:38 +msgid "Paroles" +msgstr "Lyrics" + +#: partitioncloud/templates/partition/details.html:70 +#: partitioncloud/templates/partition/edit.html:41 +msgid "Pièces jointes" +msgstr "Attachments" + +#: partitioncloud/templates/partition/details.html:75 +#: partitioncloud/templates/partition/edit.html:46 +#, python-format +msgid "Oui, %(number)s" +msgstr "Yes, %(number)s" + +#: partitioncloud/templates/partition/details.html:77 +#: partitioncloud/templates/partition/edit.html:48 +msgid "En rajouter" +msgstr "Add one" + +#: partitioncloud/templates/partition/details.html:83 +#: partitioncloud/templates/partition/edit.html:54 +msgid "Mettre à jour" +msgstr "Update" + +#: partitioncloud/templates/partition/edit.html:6 +#, python-format +msgid "Modifier \"%(name)s\"" +msgstr "Modify \"%(name)s\"" + +#: partitioncloud/templates/partition/edit.html:21 +msgid "Source" +msgstr "Source" + diff --git a/partitioncloud/translations/fr/LC_MESSAGES/messages.po b/partitioncloud/translations/fr/LC_MESSAGES/messages.po index 11f66d7..615e2b2 100644 --- a/partitioncloud/translations/fr/LC_MESSAGES/messages.po +++ b/partitioncloud/translations/fr/LC_MESSAGES/messages.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2024-01-22 16:04+0100\n" +"POT-Creation-Date: 2024-01-25 16:19+0100\n" "PO-Revision-Date: 2024-01-22 15:24+0100\n" "Last-Translator: FULL NAME \n" "Language: fr\n" @@ -16,15 +16,15 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" +"Generated-By: Babel 2.14.0\n" #: partitioncloud/__init__.py:136 -#, fuzzy, python-format +#, python-format msgid "Utilisateur %(username)s créé" msgstr "Utilisateur %(username)s créé" #: partitioncloud/__init__.py:139 -#, fuzzy, python-format +#, python-format msgid "Cet album n'existe pas. L'utilisateur %(username)s a été créé" msgstr "Cet album n'existe pas. L'utilisateur %(username)s a été créé" @@ -83,7 +83,7 @@ msgid "Les résultats de la recherche ont expiré." msgstr "Les résultats de la recherche ont expiré." #: partitioncloud/modules/albums.py:326 -#, fuzzy, python-format +#, python-format msgid "Partition %(partition_name)s ajoutée" msgstr "Partition %(partition_name)s ajoutée" @@ -128,7 +128,7 @@ msgid "Un mot de passe est requis." msgstr "Un mot de passe est requis." #: partitioncloud/modules/auth.py:100 -#, fuzzy, python-format +#, python-format msgid "Le nom d'utilisateur %(username)s est déjà pris." msgstr "Le nom d'utilisateur %(username)s est déjà pris." @@ -212,7 +212,7 @@ msgstr "Des paroles sont requises (à minima nulles)" #: partitioncloud/modules/partition.py:169 #: partitioncloud/modules/partition.py:215 -#, fuzzy, python-format +#, python-format msgid "Partition %(name)s modifiée avec succès." msgstr "Partition %(name)s modifiée avec succès." @@ -224,3 +224,368 @@ msgstr "Vous n'êtes pas autorisé à supprimer cette partition." msgid "Partition supprimée." msgstr "Partition supprimée." +#: partitioncloud/templates/base.html:23 +msgid "Créer un nouvel album" +msgstr "Créer un nouvel album" + +#: partitioncloud/templates/base.html:25 partitioncloud/templates/base.html:36 +#: partitioncloud/templates/groupe/index.html:10 +#: partitioncloud/templates/partition/attachments.html:11 +msgid "Nom" +msgstr "Nom" + +#: partitioncloud/templates/base.html:26 partitioncloud/templates/base.html:37 +msgid "Créer" +msgstr "Créer" + +#: partitioncloud/templates/base.html:30 +msgid "" +"Je souhaite créer plusieurs albums et pouvoir tous les partager avec un " +"seul lien." +msgstr "" +"Je souhaite créer plusieurs albums et pouvoir tous les partager avec un " +"seul lien." + +#: partitioncloud/templates/base.html:30 +msgid "Créer un groupe" +msgstr "Créer un groupe" + +#: partitioncloud/templates/base.html:34 +msgid "Créer un nouveau groupe" +msgstr "Créer un nouveau groupe" + +#: partitioncloud/templates/base.html:61 +msgid "Rechercher" +msgstr "Rechercher" + +#: partitioncloud/templates/base.html:63 +msgid "Nombre de recherches en ligne" +msgstr "Nombre de recherches en ligne" + +#: partitioncloud/templates/admin/index.html:23 +#: partitioncloud/templates/base.html:71 +#: partitioncloud/templates/partition/details.html:41 +msgid "Albums" +msgstr "Albums" + +#: partitioncloud/templates/base.html:75 +msgid "Créer un album" +msgstr "Créer un album" + +#: partitioncloud/templates/base.html:111 +msgid "Aucun album disponible" +msgstr "Aucun album disponible" + +#: partitioncloud/templates/base.html:125 +msgid "Connectez vous pour avoir accès à vos albums" +msgstr "Connectez vous pour avoir accès à vos albums" + +#: partitioncloud/templates/base.html:139 +msgid "Déconnexion" +msgstr "Déconnexion" + +#: partitioncloud/templates/base.html:154 +msgid "Panneau admin" +msgstr "Panneau admin" + +#: partitioncloud/templates/auth/register.html:5 +#: partitioncloud/templates/auth/register.html:20 +#: partitioncloud/templates/base.html:166 +msgid "Créer un compte" +msgstr "Créer un compte" + +#: partitioncloud/templates/auth/login.html:10 +#: partitioncloud/templates/base.html:168 +msgid "Se connecter" +msgstr "Se connecter" + +#: partitioncloud/templates/admin/index.html:5 +msgid "Panneau d'administration" +msgstr "Panneau d'administration" + +#: partitioncloud/templates/admin/index.html:9 +msgid "Nouvel utilisateur" +msgstr "Nouvel utilisateur" + +#: partitioncloud/templates/admin/index.html:12 +msgid "Voir les partitions" +msgstr "Voir les partitions" + +#: partitioncloud/templates/admin/index.html:15 +msgid "Voir les logs" +msgstr "Voir les logs" + +#: partitioncloud/templates/admin/index.html:22 +msgid "Utilisateur" +msgstr "Utilisateur" + +#: partitioncloud/templates/admin/index.html:24 +msgid "Partitions" +msgstr "Partitions" + +#: partitioncloud/templates/admin/index.html:25 +msgid "Privilèges" +msgstr "Privilèges" + +#: partitioncloud/templates/admin/logs.html:5 +msgid "Logs" +msgstr "Logs" + +#: partitioncloud/templates/admin/partitions.html:4 +msgid "Liste des partitions" +msgstr "Liste des partitions" + +#: partitioncloud/templates/admin/partitions.html:31 +#: partitioncloud/templates/albums/album.html:94 +msgid "Aucune partition disponible" +msgstr "Aucune partition disponible" + +#: partitioncloud/templates/albums/add-partition.html:3 +msgid "Ajout de partition" +msgstr "Ajout de partition" + +#: partitioncloud/templates/albums/album.html:12 +msgid "Supprimer l'album" +msgstr "Supprimer l'album" + +#: partitioncloud/templates/albums/album.html:13 +#: partitioncloud/templates/albums/delete-album.html:6 +msgid "Êtes vous sûr de vouloir supprimer cet album ?" +msgstr "Êtes vous sûr de vouloir supprimer cet album ?" + +#: partitioncloud/templates/albums/album.html:16 +#: partitioncloud/templates/albums/album.html:60 +#: partitioncloud/templates/albums/delete-album.html:8 +#: partitioncloud/templates/groupe/index.html:21 +#: partitioncloud/templates/groupe/index.html:54 +#: partitioncloud/templates/partition/delete.html:10 +#: partitioncloud/templates/partition/details.html:86 +#: partitioncloud/templates/partition/edit.html:57 +msgid "Supprimer" +msgstr "Supprimer" + +#: partitioncloud/templates/albums/album.html:51 +msgid "Ajouter une partition" +msgstr "Ajouter une partition" + +#: partitioncloud/templates/albums/album.html:54 +#: partitioncloud/templates/groupe/index.html:47 +msgid "Rejoindre" +msgstr "Rejoindre" + +#: partitioncloud/templates/albums/album.html:56 +#: partitioncloud/templates/groupe/index.html:49 +msgid "Quitter" +msgstr "Quitter" + +#: partitioncloud/templates/albums/album.html:58 +#: partitioncloud/templates/groupe/index.html:51 +msgid "Partager" +msgstr "Partager" + +#: partitioncloud/templates/albums/delete-album.html:3 +#: partitioncloud/templates/partition/delete.html:4 +#, python-format +msgid "Supprimer %(name)s" +msgstr "Supprimer %(name)s" + +#: partitioncloud/templates/albums/delete-album.html:11 +#: partitioncloud/templates/partition/delete.html:13 +msgid "Annuler" +msgstr "Annuler" + +#: partitioncloud/templates/albums/index.html:3 +msgid "Home" +msgstr "Accueil" + +#: partitioncloud/templates/albums/index.html:10 +#, python-format +msgid "Bonjour %(user_name)s !" +msgstr "Bonjour %(user_name)s !" + +#: partitioncloud/templates/albums/index.html:11 +msgid "Aucun album sélectionné" +msgstr "Aucun album sélectionné" + +#: partitioncloud/templates/auth/login.html:5 +msgid "Connexion" +msgstr "Connexion" + +#: partitioncloud/templates/auth/login.html:8 +#: partitioncloud/templates/auth/register.html:18 +msgid "Nom d'utilisateur" +msgstr "Nom d'utilisateur" + +#: partitioncloud/templates/auth/login.html:9 +#: partitioncloud/templates/auth/register.html:19 +msgid "Mot de passe" +msgstr "Mot de passe" + +#: partitioncloud/templates/auth/register.html:10 +msgid "Ajouter à un album:" +msgstr "Ajouter à un album:" + +#: partitioncloud/templates/auth/register.html:12 +msgid "Aucun" +msgstr "Aucun" + +#: partitioncloud/templates/components/add_partition.html:1 +#, python-format +msgid "Ajouter une partition à %(name)s" +msgstr "Ajouter une partition à %(name)s" + +#: partitioncloud/templates/components/add_partition.html:4 +msgid "titre" +msgstr "titre" + +#: partitioncloud/templates/components/add_partition.html:5 +msgid "auteur" +msgstr "auteur" + +#: partitioncloud/templates/components/add_partition.html:6 +msgid "paroles" +msgstr "paroles" + +#: partitioncloud/templates/components/add_partition.html:10 +#: partitioncloud/templates/groupe/index.html:11 +#: partitioncloud/templates/partition/attachments.html:13 +msgid "Ajouter" +msgstr "Ajouter" + +#: partitioncloud/templates/groupe/index.html:8 +#, python-format +msgid "Ajouter un album au groupe %(name)s" +msgstr "Ajouter un album au groupe %(name)s" + +#: partitioncloud/templates/groupe/index.html:16 +msgid "Supprimer le groupe" +msgstr "Supprimer le groupe" + +#: partitioncloud/templates/groupe/index.html:17 +msgid "" +"Êtes vous sûr de vouloir supprimer ce groupe ? Cela supprimera les albums" +"\n" +" sous-jacents et leurs partitions si personne ne les a rejoints " +"(indépendamment du groupe)." +msgstr "" +"Êtes vous sûr de vouloir supprimer ce groupe ? Cela supprimera les albums" +"\n" +" sous-jacents et leurs partitions si personne ne les a rejoints " +"(indépendamment du groupe)." + +#: partitioncloud/templates/groupe/index.html:53 +msgid "Ajouter un album" +msgstr "Ajouter un album" + +#: partitioncloud/templates/groupe/index.html:75 +msgid "En créer un" +msgstr "En créer un" + +#: partitioncloud/templates/groupe/index.html:78 +#, python-format +msgid "Aucun album disponible. %(create)s" +msgstr "Aucun album disponible. %(create)s" + +#: partitioncloud/templates/partition/attachments.html:5 +#, python-format +msgid "Attachments de %(name)s" +msgstr "Attachments de %(name)s" + +#: partitioncloud/templates/partition/attachments.html:9 +#, python-format +msgid "Ajouter un attachment à %(name)s" +msgstr "Ajouter un attachment à %(name)s" + +#: partitioncloud/templates/partition/attachments.html:22 +msgid "" +"Impossible d'afficher le pdf dans ce navigateur.\n" +" Il est conseillé d'utiliser Firefox sur Android." +msgstr "" +"Impossible d'afficher le pdf dans ce navigateur.\n" +" Il est conseillé d'utiliser Firefox sur Android." + +#: partitioncloud/templates/partition/attachments.html:46 +msgid "JavaScript est nécessaire pour lire les fichiers MIDI" +msgstr "JavaScript est nécessaire pour lire les fichiers MIDI" + +#: partitioncloud/templates/partition/attachments.html:60 +msgid "Ajouter un attachment" +msgstr "Ajouter un attachment" + +#: partitioncloud/templates/partition/delete.html:8 +msgid "Êtes vous sûr de vouloir supprimer cette partition ?" +msgstr "Êtes vous sûr de vouloir supprimer cette partition ?" + +#: partitioncloud/templates/partition/details.html:4 +#, python-format +msgid "Détails de \"%(name)s\"" +msgstr "Détails de \"%(name)s\"" + +#: partitioncloud/templates/partition/details.html:12 +msgid "Responsable de l'ajout" +msgstr "Responsable de l'ajout" + +#: partitioncloud/templates/partition/details.html:23 +msgid "Inconnu" +msgstr "Inconnu" + +#: partitioncloud/templates/partition/details.html:29 +msgid "Type d'ajout" +msgstr "Type d'ajout" + +#: partitioncloud/templates/partition/details.html:52 +#: partitioncloud/templates/partition/edit.html:13 +msgid "Fichier" +msgstr "Fichier" + +#: partitioncloud/templates/partition/details.html:58 +#: partitioncloud/templates/partition/details.html:59 +#: partitioncloud/templates/partition/edit.html:29 +#: partitioncloud/templates/partition/edit.html:30 +msgid "Titre" +msgstr "Titre" + +#: partitioncloud/templates/partition/details.html:62 +#: partitioncloud/templates/partition/details.html:63 +#: partitioncloud/templates/partition/edit.html:33 +#: partitioncloud/templates/partition/edit.html:34 +msgid "Auteur" +msgstr "Auteur" + +#: partitioncloud/templates/partition/details.html:66 +#: partitioncloud/templates/partition/details.html:67 +#: partitioncloud/templates/partition/edit.html:37 +#: partitioncloud/templates/partition/edit.html:38 +msgid "Paroles" +msgstr "Paroles" + +#: partitioncloud/templates/partition/details.html:70 +#: partitioncloud/templates/partition/edit.html:41 +msgid "Pièces jointes" +msgstr "Pièces jointes" + +#: partitioncloud/templates/partition/details.html:75 +#: partitioncloud/templates/partition/edit.html:46 +#, python-format +msgid "Oui, %(number)s" +msgstr "Oui, %(number)s" + +#: partitioncloud/templates/partition/details.html:77 +#: partitioncloud/templates/partition/edit.html:48 +msgid "En rajouter" +msgstr "En rajouter" + +#: partitioncloud/templates/partition/details.html:83 +#: partitioncloud/templates/partition/edit.html:54 +msgid "Mettre à jour" +msgstr "Mettre à jour" + +#: partitioncloud/templates/partition/edit.html:6 +#, python-format +msgid "Modifier \"%(name)s\"" +msgstr "Modifier \"%(name)s\"" + +#: partitioncloud/templates/partition/edit.html:21 +msgid "Source" +msgstr "Source" + From 74444871c0c60b30e1b4c02f66618b94d8f2d483 Mon Sep 17 00:00:00 2001 From: augustin64 Date: Fri, 26 Jan 2024 09:48:11 +0100 Subject: [PATCH 3/6] localization: Update all base strings to be in English --- partitioncloud/__init__.py | 4 +- partitioncloud/modules/albums.py | 44 +-- partitioncloud/modules/auth.py | 18 +- partitioncloud/modules/groupe.py | 20 +- partitioncloud/modules/partition.py | 30 +- partitioncloud/templates/admin/index.html | 14 +- .../templates/admin/partitions.html | 4 +- .../templates/albums/add-partition.html | 2 +- partitioncloud/templates/albums/album.html | 18 +- .../templates/albums/delete-album.html | 8 +- partitioncloud/templates/albums/index.html | 4 +- partitioncloud/templates/albums/search.html | 12 +- partitioncloud/templates/auth/login.html | 8 +- partitioncloud/templates/auth/register.html | 12 +- partitioncloud/templates/base.html | 34 +- .../templates/components/add_partition.html | 10 +- partitioncloud/templates/groupe/index.html | 27 +- .../templates/partition/attachments.html | 16 +- .../templates/partition/delete.html | 8 +- .../templates/partition/details.html | 32 +- partitioncloud/templates/partition/edit.html | 26 +- .../translations/en/LC_MESSAGES/messages.po | 304 +++++++++-------- .../translations/fr/LC_MESSAGES/messages.po | 307 +++++++++--------- 23 files changed, 496 insertions(+), 466 deletions(-) diff --git a/partitioncloud/__init__.py b/partitioncloud/__init__.py index 189da59..afbf031 100644 --- a/partitioncloud/__init__.py +++ b/partitioncloud/__init__.py @@ -132,10 +132,10 @@ def add_user(): try: if album_uuid != "": user.join_album(album_uuid) - flash(_("Utilisateur %(username)s créé", username=username)) + flash(_("Created user %(username)s", username=username)) return redirect("/albums") except LookupError: - flash(_("Cet album n'existe pas. L'utilisateur %(username)s a été créé", username=username)) + flash(_("This album does not exists, but user %(username)s has been created", username=username)) return redirect("/albums") flash(error) diff --git a/partitioncloud/modules/albums.py b/partitioncloud/modules/albums.py index 39103b7..7cb71a4 100644 --- a/partitioncloud/modules/albums.py +++ b/partitioncloud/modules/albums.py @@ -38,7 +38,7 @@ def search_page(): Résultats de recherche """ if "query" not in request.form or request.form["query"] == "": - flash(_("Aucun terme de recherche spécifié.")) + flash(_("Missing search query")) return redirect("/albums") query = request.form["query"] @@ -120,7 +120,7 @@ def create_album_req(): user = User(user_id=session["user_id"]) if not name or name.strip() == "": - error = _("Un nom est requis. L'album n'a pas été créé") + error = _("Missing name.") if error is None: uuid = utils.create_album(name) @@ -157,10 +157,10 @@ def join_album(uuid): try: user.join_album(uuid) except LookupError: - flash(_("Cet album n'existe pas.")) + flash(_("This album does not exist.")) return redirect(request.referrer) - flash(_("Album ajouté à la collection.")) + flash(_("Album added to collection.")) return redirect(request.referrer) @@ -174,15 +174,15 @@ def quit_album(uuid): album = Album(uuid=uuid) users = album.get_users() if user.id not in [u["id"] for u in users]: - flash(_("Vous ne faites pas partie de cet album")) + flash(_("You are not a member of this album")) return redirect(request.referrer) if len(users) == 1: - flash(_("Vous êtes seul dans cet album, le quitter entraînera sa suppression.")) + flash(_("You are alone here, quitting means deleting this album.")) return redirect(f"/albums/{uuid}#delete") user.quit_album(uuid) - flash(_("Album quitté.")) + flash(_("Album quitted.")) return redirect("/albums") @@ -201,9 +201,9 @@ def delete_album(uuid): error = None users = album.get_users() if len(users) > 1: - error = _("Vous n'êtes pas seul dans cet album.") + error = _("You are not alone in this album.") elif len(users) == 1 and users[0]["id"] != user.id: - error = _("Vous ne possédez pas cet album.") + error = _("You don't own this album.") if user.access_level == 1: error = None @@ -214,7 +214,7 @@ def delete_album(uuid): album.delete(current_app.instance_path) - flash(_("Album supprimé.")) + flash(_("Album deleted.")) return redirect("/albums") @@ -237,15 +237,15 @@ def add_partition(album_uuid): source = "upload" # source type: upload, unknown or url if (not user.is_participant(album.uuid)) and (user.access_level != 1): - flash(_("Vous ne faites pas partie de cet album")) + flash(_("You are not a member of this album")) return redirect(request.referrer) error = None if "name" not in request.form: - error = _("Un titre est requis.") + error = _("Missing title") elif "file" not in request.files and "partition-uuid" not in request.form: - error = _("Aucun fichier n'a été fourni.") + error = _("Missing file") elif "file" not in request.files: partition_type = "uuid" search_uuid = request.form["partition-uuid"] @@ -257,7 +257,7 @@ def add_partition(album_uuid): (search_uuid,) ).fetchone() if data is None: - error = _("Les résultats de la recherche ont expiré.") + error = _("Search results expired") else: source = data["url"] else: @@ -323,7 +323,7 @@ def add_partition(album_uuid): "status": "ok", "uuid": partition_uuid } - flash(_("Partition %(partition_name)s ajoutée", partition_name=request.form['name'])) + flash(_("Score %(partition_name)s added", partition_name=request.form['name'])) return redirect(f"/albums/{album.uuid}") @@ -337,13 +337,13 @@ def add_partition_from_search(): error = None if "album-uuid" not in request.form: - error = _("Il est nécessaire de sélectionner un album.") + error = _("Selecting an album is mandatory.") elif "partition-uuid" not in request.form: - error = _("Il est nécessaire de sélectionner une partition.") + error = _("Selecting a score is mandatory.") elif "partition-type" not in request.form: - error = _("Il est nécessaire de spécifier un type de partition.") + error = _("Please specify a score type.") elif (not user.is_participant(request.form["album-uuid"])) and (user.access_level != 1): - error = _("Vous ne faites pas partie de cet album") + error = _("You are not a member of this album") if error is not None: flash(error) @@ -363,9 +363,9 @@ def add_partition_from_search(): if data is None: album.add_partition(request.form["partition-uuid"]) - flash(_("Partition ajoutée.")) + flash(_("Score added")) else: - flash(_("Partition déjà dans l'album.")) + flash(_("Score is already in the album.")) return redirect(f"/albums/{album.uuid}") @@ -377,5 +377,5 @@ def add_partition_from_search(): user=user ) - flash(_("Type de partition inconnu.")) + flash(_("Unknown score type.")) return redirect("/albums") diff --git a/partitioncloud/modules/auth.py b/partitioncloud/modules/auth.py index 7ada7f1..21c5cf0 100644 --- a/partitioncloud/modules/auth.py +++ b/partitioncloud/modules/auth.py @@ -24,7 +24,7 @@ def login_required(view): @functools.wraps(view) def wrapped_view(**kwargs): if g.user is None: - flash(_("Vous devez être connecté pour accéder à cette page.")) + flash(_("You need to login to access this resource.")) return redirect(url_for("auth.login")) return view(**kwargs) @@ -51,12 +51,12 @@ def admin_required(view): @functools.wraps(view) def wrapped_view(**kwargs): if g.user is None: - flash(_("Vous devez être connecté pour accéder à cette page.")) + flash(_("You need to login to access this resource.")) return redirect(url_for("auth.login")) user = User(user_id=session.get("user_id")) if user.access_level != 1: - flash(_("Droits insuffisants.")) + flash(_("Missing rights.")) return redirect("/albums") return view(**kwargs) @@ -82,9 +82,9 @@ def create_user(username: str, password: str) -> Optional[str]: """Adds a new user to the database""" error = None if not username: - error = _("Un nom d'utilisateur est requis.") + error = _("Missing username.") elif not password: - error = _("Un mot de passe est requis.") + error = _("Missing password.") try: db = get_db() @@ -97,7 +97,7 @@ def create_user(username: str, password: str) -> Optional[str]: except db.IntegrityError: # The username was already taken, which caused the # commit to fail. Show a validation error. - error = _("Le nom d'utilisateur %(username)s est déjà pris.", username=username) + error = _("Username %(username)s is not available.", username=username) return error # may be None @@ -110,7 +110,7 @@ def register(): password for security. """ if current_app.config["DISABLE_REGISTER"]: - flash(_("L'enregistrement de nouveaux utilisateurs a été désactivé par l'administrateur.")) + flash(_("New users registration is disabled by owner.")) return redirect(url_for("auth.login")) if request.method == "POST": @@ -124,7 +124,7 @@ def register(): else: user = User(name=username) - flash(_("Utilisateur créé avec succès. Vous pouvez vous connecter.")) + flash(_("Successfully created new user. You can log in.")) logging.log( [user.username, user.id, False], @@ -149,7 +149,7 @@ def login(): if (user is None) or not check_password_hash(user["password"], password): logging.log([username], logging.LogEntry.FAILED_LOGIN) - error = _("Nom d'utilisateur ou mot de passe incorrect.") + error = _("Incorrect username or password") if error is None: # store the user id in a new session and return to the index diff --git a/partitioncloud/modules/groupe.py b/partitioncloud/modules/groupe.py index 4b9e367..92bcd2d 100644 --- a/partitioncloud/modules/groupe.py +++ b/partitioncloud/modules/groupe.py @@ -68,7 +68,7 @@ def create_groupe(): user = User(user_id=session["user_id"]) if not name or name.strip() == "": - error = _("Un nom est requis. Le groupe n'a pas été créé") + error = _("Missing name.") if error is None: while True: @@ -117,10 +117,10 @@ def join_groupe(uuid): try: user.join_groupe(uuid) except LookupError: - flash(_("Ce groupe n'existe pas.")) + flash(_("Unknown group.")) return redirect(f"/groupe/{uuid}") - flash(_("Groupe ajouté à la collection.")) + flash(_("Group added to collection.")) return redirect(f"/groupe/{uuid}") @@ -131,15 +131,15 @@ def quit_groupe(uuid): groupe = Groupe(uuid=uuid) users = groupe.get_users() if user.id not in [u["id"] for u in users]: - flash(_("Vous ne faites pas partie de ce groupe")) + flash(_("You are not a member of this group.")) return redirect(f"/groupe/{uuid}") if len(users) == 1: - flash(_("Vous êtes seul dans ce groupe, le quitter entraînera sa suppression.")) + flash(_("You are alone here, quitting means deleting this group.")) return redirect(f"/groupe/{uuid}#delete") user.quit_groupe(groupe.uuid) - flash(_("Groupe quitté.")) + flash(_("Group quitted.")) return redirect("/albums") @@ -152,7 +152,7 @@ def delete_groupe(uuid): error = None users = groupe.get_users() if len(users) > 1: - error = _("Vous n'êtes pas seul dans ce groupe.") + error = _("You are not alone in this group.") if user.access_level == 1 or user.id not in groupe.get_admins(): error = None @@ -163,7 +163,7 @@ def delete_groupe(uuid): groupe.delete(current_app.instance_path) - flash(_("Groupe supprimé.")) + flash(_("Group deleted.")) return redirect("/albums") @@ -182,10 +182,10 @@ def create_album_req(groupe_uuid): error = None if not name or name.strip() == "": - error = _("Un nom est requis. L'album n'a pas été créé") + error = _("Missing name.") if user.id not in groupe.get_admins(): - error = _("Vous n'êtes pas administrateur de ce groupe") + error = _("You are not admin of this group.") if error is None: uuid = utils.create_album(name) diff --git a/partitioncloud/modules/partition.py b/partitioncloud/modules/partition.py index 0dfe18f..d560f0c 100644 --- a/partitioncloud/modules/partition.py +++ b/partitioncloud/modules/partition.py @@ -55,12 +55,12 @@ def add_attachment(uuid): user = User(user_id=session.get("user_id")) if user.id != partition.user_id and user.access_level != 1: - flash(_("Cette partition ne vous appartient pas")) + flash(_("You don't own this score.")) return redirect(request.referrer) error = None # À mettre au propre if "file" not in request.files: - error = _("Aucun fichier n'a été fourni.") + error = _("Missing file") else: if "name" not in request.form or request.form["name"] == "": name = ".".join(request.files["file"].filename.split(".")[:-1]) @@ -68,12 +68,12 @@ def add_attachment(uuid): name = request.form["name"] if name == "": - error = _("Pas de nom de fichier") + error = _("Missing filename.") else: filename = request.files["file"].filename ext = filename.split(".")[-1] if ext not in ["mid", "mp3"]: - error = _("Extension de fichier non supportée") + error = _("Unsupported file type.") if error is not None: flash(error) @@ -141,7 +141,7 @@ def edit(uuid): user = User(user_id=session.get("user_id")) if user.access_level != 1 and partition.user_id != user.id: - flash(_("Vous n'êtes pas autorisé à modifier cette partition.")) + flash(_("You are not allowed to edit this file.")) return redirect("/albums") if request.method == "GET": @@ -150,11 +150,11 @@ def edit(uuid): error = None if "name" not in request.form or request.form["name"].strip() == "": - error = _("Un titre est requis.") + error = _("Missing title") elif "author" not in request.form: - error = _("Un nom d'auteur est requis (à minima nul)") + error = _("Missing author in request body (can be null).") elif "body" not in request.form: - error = _("Des paroles sont requises (à minima nulles)") + error = _("Missing lyrics (can be null).") if error is not None: flash(error) @@ -166,7 +166,7 @@ def edit(uuid): body=request.form["body"] ) - flash(_("Partition %(name)s modifiée avec succès.", name=request.form['name'])) + flash(_("Successfully modified %(name)s", name=request.form['name'])) return redirect("/albums") @@ -196,11 +196,11 @@ def details(uuid): error = None if "name" not in request.form or request.form["name"].strip() == "": - error = _("Un titre est requis.") + error = _("Missing title") elif "author" not in request.form: - error = _("Un nom d'auteur est requis (à minima nul)") + error = _("Missing author in request body (can be null).") elif "body" not in request.form: - error = _("Des paroles sont requises (à minima nulles)") + error = _("Missing lyrics (can be null).") if error is not None: flash(error) @@ -212,7 +212,7 @@ def details(uuid): body=request.form["body"] ) - flash(_("Partition %(name)s modifiée avec succès.", name=request.form['name'])) + flash(_("Successfully modified %(name)s", name=request.form['name'])) return redirect("/albums") @@ -227,7 +227,7 @@ def delete(uuid): user = User(user_id=session.get("user_id")) if user.access_level != 1 and partition.user_id != user.id: - flash(_("Vous n'êtes pas autorisé à supprimer cette partition.")) + flash(_("You are not allowed to delete this score.")) return redirect("/albums") if request.method == "GET": @@ -235,7 +235,7 @@ def delete(uuid): partition.delete(current_app.instance_path) - flash(_("Partition supprimée.")) + flash(_("Score deleted.")) return redirect("/albums") diff --git a/partitioncloud/templates/admin/index.html b/partitioncloud/templates/admin/index.html index fc14ab6..dff4f68 100644 --- a/partitioncloud/templates/admin/index.html +++ b/partitioncloud/templates/admin/index.html @@ -2,27 +2,27 @@ {% block content %} -

{% block title %}{{ _("Panneau d'administration") }}{% endblock %}

+

{% block title %}{{ _("Administration Panel") }}{% endblock %}

- + - - + + diff --git a/partitioncloud/templates/admin/partitions.html b/partitioncloud/templates/admin/partitions.html index f503bb8..da4170d 100644 --- a/partitioncloud/templates/admin/partitions.html +++ b/partitioncloud/templates/admin/partitions.html @@ -1,7 +1,7 @@ {% extends 'base.html' %} {% block header %} -

{% block title %}{{ _("Liste des partitions") }}{% endblock %}

+

{% block title %}{{ _("Scores list") }}{% endblock %}

{% endblock %} {% block content %} @@ -28,6 +28,6 @@ {% endfor %} {% else %} -
{{ _("Aucune partition disponible") }}
+
{{ _("No available scores") }}
{% endif %} {% endblock %} \ No newline at end of file diff --git a/partitioncloud/templates/albums/add-partition.html b/partitioncloud/templates/albums/add-partition.html index f2b496e..97c672e 100644 --- a/partitioncloud/templates/albums/add-partition.html +++ b/partitioncloud/templates/albums/add-partition.html @@ -1,6 +1,6 @@ {% extends 'base.html' %} -{% block title %}{{ _("Ajout de partition") }}{% endblock %} +{% block title %}{{ _("New score") }}{% endblock %} {% block content %} {% include 'components/add_partition.html' %} diff --git a/partitioncloud/templates/albums/album.html b/partitioncloud/templates/albums/album.html index 0ac56cc..7461ed6 100644 --- a/partitioncloud/templates/albums/album.html +++ b/partitioncloud/templates/albums/album.html @@ -9,11 +9,11 @@ Close -

{{ _("Supprimer l'album") }}

- {{ _("Êtes vous sûr de vouloir supprimer cet album ?") }} +

{{ _("Delete l'album") }}

+ {{ _("Do you really want to delete this album?") }}

- + Close
@@ -48,16 +48,16 @@ + @@ -91,6 +91,6 @@ {% else %}
-
{{ _("Aucune partition disponible") }}
+
{{ _("No available scores") }}
{% endif %} {% endblock %} diff --git a/partitioncloud/templates/albums/delete-album.html b/partitioncloud/templates/albums/delete-album.html index c87baf2..211e35b 100644 --- a/partitioncloud/templates/albums/delete-album.html +++ b/partitioncloud/templates/albums/delete-album.html @@ -1,14 +1,14 @@ {% extends 'base.html' %} -{% block title %}{{ _("Supprimer %(name)s", name=album.name) }}{% endblock %} +{% block title %}{{ _("Delete %(name)s", name=album.name) }}{% endblock %} {% block content %} -{{ _("Êtes vous sûr de vouloir supprimer cet album ?") }} +{{ _("Do you really want to delete this album?") }} - + - + {% endblock %} \ No newline at end of file diff --git a/partitioncloud/templates/albums/index.html b/partitioncloud/templates/albums/index.html index b0bd386..3f45655 100644 --- a/partitioncloud/templates/albums/index.html +++ b/partitioncloud/templates/albums/index.html @@ -7,7 +7,7 @@ {% set user_name %} {{ user.username }} {% endset %} -{{ _("Bonjour %(user_name)s !", user_name=user_name) }}
-{{ _("Aucun album sélectionné") }} +{{ _("Hi %(user_name)s !", user_name=user_name) }}
+{{ _("No album selected") }} {% endblock %} \ No newline at end of file diff --git a/partitioncloud/templates/albums/search.html b/partitioncloud/templates/albums/search.html index bc7252c..537df1e 100644 --- a/partitioncloud/templates/albums/search.html +++ b/partitioncloud/templates/albums/search.html @@ -2,9 +2,9 @@ {% block content %} -

{% block title %}{{ _('Résultats de la recherche "%(query)s', query=query)}}{% endblock %}

+

{% block title %}{{ _('Search results for "%(query)s"', query=query)}}{% endblock %}

{% if partitions|length != 0 %} -

{{ _("Résultats dans la bibliothèque locale") }}

+

{{ _("Results in current database") }}

{% for partition in partitions %}
@@ -35,14 +35,14 @@ - +
{% endfor %}
{% endif %} {% if google_results|length != 0 %} -

{{ _("Résultats de la recherche en ligne") }}

+

{{ _("Online search results") }}

{% for partition in google_results %}
@@ -67,13 +67,13 @@ - +
{% endfor %}
{% endif %} {% if google_results|length == 0 and partitions|length == 0 %} -{{ _("Aucun résultat. Essayez d'augmenter le nombre de recherches en ligne ou d'affiner votre recherche.") }} +{{ _("No results available. Try to tweak your query or increase the amount of online searches.") }} {% endif %} {% endblock %} \ No newline at end of file diff --git a/partitioncloud/templates/auth/login.html b/partitioncloud/templates/auth/login.html index 7f93eb8..b80991e 100644 --- a/partitioncloud/templates/auth/login.html +++ b/partitioncloud/templates/auth/login.html @@ -2,11 +2,11 @@ {% block content %} -

{% block title %}{{ _("Connexion") }}{% endblock %}

+

{% block title %}{{ _("Log in") }}{% endblock %}

-
-
- +
+
+ {% endblock %} \ No newline at end of file diff --git a/partitioncloud/templates/auth/register.html b/partitioncloud/templates/auth/register.html index a6bd781..da8d138 100644 --- a/partitioncloud/templates/auth/register.html +++ b/partitioncloud/templates/auth/register.html @@ -2,21 +2,21 @@ {% block content %} -

{% block title %}{{ _("Créer un compte") }}{% endblock %}

+

{% block title %}{{ _("Create account") }}{% endblock %}

{% if g.user.access_level == 1 %} -
+

{% endif %} -
-
- +
+
+ {% endblock %} \ No newline at end of file diff --git a/partitioncloud/templates/base.html b/partitioncloud/templates/base.html index 8247de8..3f3a208 100644 --- a/partitioncloud/templates/base.html +++ b/partitioncloud/templates/base.html @@ -20,21 +20,21 @@ {% block dialogs %}{% endblock %} {% if g.user %} -

{{ _("Créer un nouvel album") }}

+

{{ _("New Album") }}

-
- +
+

- {{ _("Je souhaite créer plusieurs albums et pouvoir tous les partager avec un seul lien.") }} {{ _("Créer un groupe") }}. + {{ _("I want to create a collection of albums.") }} {{ _("Create group") }}. Close
-

{{ _("Créer un nouveau groupe") }}

+

{{ _("Create new group") }}

-
- +
+ Close
@@ -58,9 +58,9 @@ diff --git a/partitioncloud/templates/components/add_partition.html b/partitioncloud/templates/components/add_partition.html index 6bf383f..00acdaa 100644 --- a/partitioncloud/templates/components/add_partition.html +++ b/partitioncloud/templates/components/add_partition.html @@ -1,11 +1,11 @@ -

{{ _("Ajouter une partition à %(name)s", name=album.name) }}

+

{{ _("Add a score to %(name)s", name=album.name) }}

-
-
-
+
+
+
{% if partition_uuid %} {% endif %} - + \ No newline at end of file diff --git a/partitioncloud/templates/groupe/index.html b/partitioncloud/templates/groupe/index.html index 0d5e681..1d42f26 100644 --- a/partitioncloud/templates/groupe/index.html +++ b/partitioncloud/templates/groupe/index.html @@ -5,20 +5,19 @@ {% block dialogs %} -

{{ _("Ajouter un album au groupe %(name)s", name=groupe.name) }}

+

{{ _("Add an album to group %(name)s", name=groupe.name) }}

-
- +
+ Close
-

{{ _("Supprimer le groupe") }}

- {{ _("Êtes vous sûr de vouloir supprimer ce groupe ? Cela supprimera les albums - sous-jacents et leurs partitions si personne ne les a rejoints (indépendamment du groupe).") }} +

{{ _("Delete group") }}

+ {{ _("Do you really want to delete this group and the albums it contains?") }}

- + Close
@@ -44,14 +43,14 @@ + @@ -72,10 +71,10 @@ {% else %}
{% set create %} - {{ _("En créer un") }} + {{ _("Create one") }} {% endset %}
- {{ _("Aucun album disponible. %(create)s", create=create) }} + {{ _("No available album. %(create)s", create=create) }}
{% endif %} {% endblock %} \ No newline at end of file diff --git a/partitioncloud/templates/partition/attachments.html b/partitioncloud/templates/partition/attachments.html index 59f680f..a2ff5e9 100644 --- a/partitioncloud/templates/partition/attachments.html +++ b/partitioncloud/templates/partition/attachments.html @@ -2,15 +2,15 @@ {% extends 'base.html' %} -{% block title %}{{ _("Attachments de %(name)s", name=partition.name) }}{% endblock %} +{% block title %}{{ _("Attachments of %(name)s", name=partition.name) }}{% endblock %} {% block dialogs %} -

{{ _("Ajouter un attachment à %(name)s", name=partition.name) }}

+

{{ _("Add an attachment to %(name)s", name=partition.name) }}

-
+

- + Close
@@ -19,8 +19,8 @@ {% block content %}

- {{ _("Impossible d'afficher le pdf dans ce navigateur. - Il est conseillé d'utiliser Firefox sur Android.") }} + {{ _("No pdf viewer available in this browser. + You can use Firefox on Android.") }}

@@ -43,7 +43,7 @@ src="/partition/attachment/{{ attachment.uuid }}.mid" sound-font visualizer="#midi-visualizer" data-js-focus-visible> - + {% endif %} @@ -57,7 +57,7 @@
{% if user %} {% endif %} {% endblock %} diff --git a/partitioncloud/templates/partition/delete.html b/partitioncloud/templates/partition/delete.html index c25e495..868cae3 100644 --- a/partitioncloud/templates/partition/delete.html +++ b/partitioncloud/templates/partition/delete.html @@ -1,16 +1,16 @@ {% extends 'base.html' %} {% block header %} -

{% block title %}{{ _("Supprimer %(name)s", name=partition.name) }}{% endblock %}

+

{% block title %}{{ _("Delete %(name)s", name=partition.name) }}{% endblock %}

{% endblock %} {% block content %} -{{ _("Êtes vous sûr de vouloir supprimer cette partition ?") }} +{{ _("Do you really want to delete this score?") }} - + - + {% endblock %} \ No newline at end of file diff --git a/partitioncloud/templates/partition/details.html b/partitioncloud/templates/partition/details.html index 286cd1c..64495bd 100644 --- a/partitioncloud/templates/partition/details.html +++ b/partitioncloud/templates/partition/details.html @@ -1,7 +1,7 @@ {% extends 'base.html' %} {% block content %} -

{% block title %}{{ _('Détails de "%(name)s"', name=partition.name)}}{% endblock %}

+

{% block title %}{{ _('Details of "%(name)s"', name=partition.name)}}{% endblock %}


@@ -9,7 +9,7 @@ - + - - + + - - + + - - + + - + {% set _ = partition.load_attachments() %}
{{ _("Utilisateur") }}{{ _("User") }} {{ _("Albums") }}{{ _("Partitions") }}{{ _("Privilèges") }}{{ _("Scores") }}{{ _("Admin privileges") }}
🎵 {{ attachment.name }}
- {{ _("Responsable de l'ajout") }} + {{ _("Added by") }} {% if user is not none %} @@ -20,13 +20,13 @@ {% else %} - {{ _("Inconnu") }} + {{ _("Unknown") }} {% endif %}
- {{ _("Type d'ajout") }} + {{ _("Type") }} {% if partition.source == "unknown" or partition.source == "upload" %} @@ -49,41 +49,41 @@
{{ _("Fichier") }}{{ _("File") }}
{{ _("Titre") }}
{{ _("Title") }}
{{ _("Auteur") }}
{{ _("Author") }}
{{ _("Paroles") }}
{{ _("Lyrics") }}
{{ _("Pièces jointes") }}{{ _("Attachments") }} {% if partition.attachments %} {% set number=partition.attachments | length %} - {{ _("Oui, %(number)s", number=number) }} + {{ _("Yes, %(number)s", number=number) }} {% else %} - {{ _("En rajouter") }} + {{ _("Add one") }} {% endif %}
- + - + {% endblock %} \ No newline at end of file diff --git a/partitioncloud/templates/partition/edit.html b/partitioncloud/templates/partition/edit.html index 7876738..b7950d1 100644 --- a/partitioncloud/templates/partition/edit.html +++ b/partitioncloud/templates/partition/edit.html @@ -3,14 +3,14 @@ {% block content %} -

{% block title %}{{ _("Modifier \"%(name)s\"", name=partition.name) }}{% endblock %}

+

{% block title %}{{ _("Modify \"%(name)s\"", name=partition.name) }}{% endblock %}


- + @@ -26,35 +26,35 @@ {% endif %} - - + + - - + + - - + + - + {% set _ = partition.load_attachments() %}
{{ _("Fichier") }}{{ _("File") }}
{{ _("Titre") }}
{{ _("Title") }}
{{ _("Auteur") }}
{{ _("Author") }}
{{ _("Paroles") }}
{{ _("Lyrics") }}
{{ _("Pièces jointes") }}{{ _("Attachments") }} {% if partition.attachments %} {% set number=partition.attachments | length %} - {{ _("Oui, %(number)s", number=number) }} + {{ _("Yes, %(number)s", number=number) }} {% else %} - {{ _("En rajouter") }} + {{ _("Add one") }} {% endif %}
- +
- + {% endblock %} \ No newline at end of file diff --git a/partitioncloud/translations/en/LC_MESSAGES/messages.po b/partitioncloud/translations/en/LC_MESSAGES/messages.po index 908e186..9a433a1 100644 --- a/partitioncloud/translations/en/LC_MESSAGES/messages.po +++ b/partitioncloud/translations/en/LC_MESSAGES/messages.po @@ -18,244 +18,237 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.14.0\n" -#: partitioncloud/__init__.py:136 +#: partitioncloud/__init__.py:135 #, python-format -msgid "Utilisateur %(username)s créé" +msgid "Created user %(username)s" msgstr "Created user %(username)s" -#: partitioncloud/__init__.py:139 +#: partitioncloud/__init__.py:138 #, python-format -msgid "Cet album n'existe pas. L'utilisateur %(username)s a été créé" +msgid "This album does not exists, but user %(username)s has been created" msgstr "This album does not exists, but user %(username)s has been created" #: partitioncloud/modules/albums.py:41 -msgid "Aucun terme de recherche spécifié." +msgid "Missing search query" msgstr "Missing search query" -#: partitioncloud/modules/albums.py:123 partitioncloud/modules/groupe.py:185 -msgid "Un nom est requis. L'album n'a pas été créé" +#: partitioncloud/modules/albums.py:123 partitioncloud/modules/groupe.py:71 +#: partitioncloud/modules/groupe.py:185 +msgid "Missing name." msgstr "Missing name." #: partitioncloud/modules/albums.py:160 -msgid "Cet album n'existe pas." +msgid "This album does not exist." msgstr "This album does not exist." #: partitioncloud/modules/albums.py:163 -msgid "Album ajouté à la collection." +msgid "Album added to collection." msgstr "Album added to collection." #: partitioncloud/modules/albums.py:177 partitioncloud/modules/albums.py:240 #: partitioncloud/modules/albums.py:346 -msgid "Vous ne faites pas partie de cet album" +msgid "You are not a member of this album" msgstr "You are not a member of this album" #: partitioncloud/modules/albums.py:181 -msgid "Vous êtes seul dans cet album, le quitter entraînera sa suppression." +msgid "You are alone here, quitting means deleting this album." msgstr "You are alone here, quitting means deleting this album." #: partitioncloud/modules/albums.py:185 -msgid "Album quitté." +msgid "Album quitted." msgstr "Album quitted." #: partitioncloud/modules/albums.py:204 -msgid "Vous n'êtes pas seul dans cet album." +msgid "You are not alone in this album." msgstr "You are not alone in this album." #: partitioncloud/modules/albums.py:206 -msgid "Vous ne possédez pas cet album." +msgid "You don't own this album." msgstr "You don't own this album." #: partitioncloud/modules/albums.py:217 -msgid "Album supprimé." +msgid "Album deleted." msgstr "Album deleted." #: partitioncloud/modules/albums.py:246 partitioncloud/modules/partition.py:153 #: partitioncloud/modules/partition.py:199 -msgid "Un titre est requis." +msgid "Missing title" msgstr "Missing title" #: partitioncloud/modules/albums.py:248 partitioncloud/modules/partition.py:63 -msgid "Aucun fichier n'a été fourni." +msgid "Missing file" msgstr "Missing file" #: partitioncloud/modules/albums.py:260 -msgid "Les résultats de la recherche ont expiré." +msgid "Search results expired" msgstr "Search results expired" #: partitioncloud/modules/albums.py:326 #, python-format -msgid "Partition %(partition_name)s ajoutée" +msgid "Score %(partition_name)s added" msgstr "Score %(partition_name)s added" #: partitioncloud/modules/albums.py:340 -msgid "Il est nécessaire de sélectionner un album." +msgid "Selecting an album is mandatory." msgstr "Selecting an album is mandatory." #: partitioncloud/modules/albums.py:342 -msgid "Il est nécessaire de sélectionner une partition." +msgid "Selecting a score is mandatory." msgstr "Selecting a score is mandatory." #: partitioncloud/modules/albums.py:344 -msgid "Il est nécessaire de spécifier un type de partition." +msgid "Please specify a score type." msgstr "Please specify a score type." #: partitioncloud/modules/albums.py:366 -msgid "Partition ajoutée." +msgid "Score added" msgstr "Score added" #: partitioncloud/modules/albums.py:368 -msgid "Partition déjà dans l'album." +msgid "Score is already in the album." msgstr "Score is already in the album." #: partitioncloud/modules/albums.py:380 -msgid "Type de partition inconnu." +msgid "Unknown score type." msgstr "Unknown score type." #: partitioncloud/modules/auth.py:27 partitioncloud/modules/auth.py:54 -msgid "Vous devez être connecté pour accéder à cette page." +msgid "You need to login to access this resource." msgstr "You need to login to access this resource." #: partitioncloud/modules/auth.py:59 -msgid "Droits insuffisants." +msgid "Missing rights." msgstr "Missing rights." #: partitioncloud/modules/auth.py:85 -msgid "Un nom d'utilisateur est requis." +msgid "Missing username." msgstr "Missing username." #: partitioncloud/modules/auth.py:87 -msgid "Un mot de passe est requis." +msgid "Missing password." msgstr "Missing password." #: partitioncloud/modules/auth.py:100 #, python-format -msgid "Le nom d'utilisateur %(username)s est déjà pris." +msgid "Username %(username)s is not available." msgstr "Username %(username)s is not available." #: partitioncloud/modules/auth.py:113 -msgid "" -"L'enregistrement de nouveaux utilisateurs a été désactivé par " -"l'administrateur." +msgid "New users registration is disabled by owner." msgstr "New users registration is disabled by owner." #: partitioncloud/modules/auth.py:127 -msgid "Utilisateur créé avec succès. Vous pouvez vous connecter." +msgid "Successfully created new user. You can log in." msgstr "Successfully created new user. You can log in." #: partitioncloud/modules/auth.py:152 -msgid "Nom d'utilisateur ou mot de passe incorrect." +msgid "Incorrect username or password" msgstr "Incorrect username or password" -#: partitioncloud/modules/groupe.py:71 -msgid "Un nom est requis. Le groupe n'a pas été créé" -msgstr "Missing name." - #: partitioncloud/modules/groupe.py:120 -msgid "Ce groupe n'existe pas." +msgid "Unknown group." msgstr "Unknown group." #: partitioncloud/modules/groupe.py:123 -msgid "Groupe ajouté à la collection." +msgid "Group added to collection." msgstr "Group added to collection." #: partitioncloud/modules/groupe.py:134 -msgid "Vous ne faites pas partie de ce groupe" +msgid "You are not a member of this group." msgstr "You are not a member of this group." #: partitioncloud/modules/groupe.py:138 -msgid "Vous êtes seul dans ce groupe, le quitter entraînera sa suppression." +msgid "You are alone here, quitting means deleting this group." msgstr "You are alone here, quitting means deleting this group." #: partitioncloud/modules/groupe.py:142 -msgid "Groupe quitté." +msgid "Group quitted." msgstr "Group quitted." #: partitioncloud/modules/groupe.py:155 -msgid "Vous n'êtes pas seul dans ce groupe." +msgid "You are not alone in this group." msgstr "You are not alone in this group." #: partitioncloud/modules/groupe.py:166 -msgid "Groupe supprimé." +msgid "Group deleted." msgstr "Group deleted." #: partitioncloud/modules/groupe.py:188 -msgid "Vous n'êtes pas administrateur de ce groupe" +msgid "You are not admin of this group." msgstr "You are not admin of this group." #: partitioncloud/modules/partition.py:58 -msgid "Cette partition ne vous appartient pas" +msgid "You don't own this score." msgstr "You don't own this score." #: partitioncloud/modules/partition.py:71 -msgid "Pas de nom de fichier" +msgid "Missing filename." msgstr "Missing filename." #: partitioncloud/modules/partition.py:76 -msgid "Extension de fichier non supportée" +msgid "Unsupported file type." msgstr "Unsupported file type." #: partitioncloud/modules/partition.py:144 -msgid "Vous n'êtes pas autorisé à modifier cette partition." +msgid "You are not allowed to edit this file." msgstr "You are not allowed to edit this file." #: partitioncloud/modules/partition.py:155 #: partitioncloud/modules/partition.py:201 -msgid "Un nom d'auteur est requis (à minima nul)" +msgid "Missing author in request body (can be null)." msgstr "Missing author in request body (can be null)." #: partitioncloud/modules/partition.py:157 #: partitioncloud/modules/partition.py:203 -msgid "Des paroles sont requises (à minima nulles)" +msgid "Missing lyrics (can be null)." msgstr "Missing lyrics (can be null)." #: partitioncloud/modules/partition.py:169 #: partitioncloud/modules/partition.py:215 #, python-format -msgid "Partition %(name)s modifiée avec succès." +msgid "Successfully modified %(name)s" msgstr "Successfully modified %(name)s" #: partitioncloud/modules/partition.py:230 -msgid "Vous n'êtes pas autorisé à supprimer cette partition." +msgid "You are not allowed to delete this score." msgstr "You are not allowed to delete this score." #: partitioncloud/modules/partition.py:238 -msgid "Partition supprimée." +msgid "Score deleted." msgstr "Score deleted." #: partitioncloud/templates/base.html:23 -msgid "Créer un nouvel album" +msgid "New Album" msgstr "New Album" #: partitioncloud/templates/base.html:25 partitioncloud/templates/base.html:36 #: partitioncloud/templates/groupe/index.html:10 #: partitioncloud/templates/partition/attachments.html:11 -msgid "Nom" +msgid "Name" msgstr "Name" #: partitioncloud/templates/base.html:26 partitioncloud/templates/base.html:37 -msgid "Créer" +msgid "Create" msgstr "Create" #: partitioncloud/templates/base.html:30 -msgid "" -"Je souhaite créer plusieurs albums et pouvoir tous les partager avec un " -"seul lien." +msgid "I want to create a collection of albums." msgstr "I want to create a collection of albums." #: partitioncloud/templates/base.html:30 -msgid "Créer un groupe" +msgid "Create group" msgstr "Create group" #: partitioncloud/templates/base.html:34 -msgid "Créer un nouveau groupe" +msgid "Create new group" msgstr "Create new group" #: partitioncloud/templates/base.html:61 -msgid "Rechercher" +msgid "Search" msgstr "Search" #: partitioncloud/templates/base.html:63 -msgid "Nombre de recherches en ligne" +msgid "Number of online searches" msgstr "Number of online searches" #: partitioncloud/templates/admin/index.html:23 @@ -265,62 +258,67 @@ msgid "Albums" msgstr "Albums" #: partitioncloud/templates/base.html:75 -msgid "Créer un album" +msgid "New album" msgstr "New album" +#: partitioncloud/templates/base.html:92 +msgid "No albums" +msgstr "No albums" + #: partitioncloud/templates/base.html:111 -msgid "Aucun album disponible" +msgid "No album available" msgstr "No album available" #: partitioncloud/templates/base.html:125 -msgid "Connectez vous pour avoir accès à vos albums" +msgid "Log in to see your albums" msgstr "Log in to see your albums" #: partitioncloud/templates/base.html:139 -msgid "Déconnexion" +msgid "Log out" msgstr "Log out" #: partitioncloud/templates/base.html:154 -msgid "Panneau admin" +msgid "Admin Panel" msgstr "Admin Panel" #: partitioncloud/templates/auth/register.html:5 #: partitioncloud/templates/auth/register.html:20 #: partitioncloud/templates/base.html:166 -msgid "Créer un compte" +msgid "Create account" msgstr "Create account" +#: partitioncloud/templates/auth/login.html:5 #: partitioncloud/templates/auth/login.html:10 #: partitioncloud/templates/base.html:168 -msgid "Se connecter" +msgid "Log in" msgstr "Log in" #: partitioncloud/templates/admin/index.html:5 -msgid "Panneau d'administration" +msgid "Administration Panel" msgstr "Administration Panel" #: partitioncloud/templates/admin/index.html:9 -msgid "Nouvel utilisateur" +msgid "New user" msgstr "New user" #: partitioncloud/templates/admin/index.html:12 -msgid "Voir les partitions" +msgid "See scores" msgstr "See scores" #: partitioncloud/templates/admin/index.html:15 -msgid "Voir les logs" +msgid "See logs" msgstr "See logs" #: partitioncloud/templates/admin/index.html:22 -msgid "Utilisateur" +msgid "User" msgstr "User" #: partitioncloud/templates/admin/index.html:24 -msgid "Partitions" +msgid "Scores" msgstr "Scores" #: partitioncloud/templates/admin/index.html:25 -msgid "Privilèges" +msgid "Admin privileges" msgstr "Admin privileges" #: partitioncloud/templates/admin/logs.html:5 @@ -328,66 +326,66 @@ msgid "Logs" msgstr "Logs" #: partitioncloud/templates/admin/partitions.html:4 -msgid "Liste des partitions" +msgid "Scores list" msgstr "Scores list" #: partitioncloud/templates/admin/partitions.html:31 #: partitioncloud/templates/albums/album.html:94 -msgid "Aucune partition disponible" +msgid "No available scores" msgstr "No available scores" #: partitioncloud/templates/albums/add-partition.html:3 -msgid "Ajout de partition" +msgid "New score" msgstr "New score" #: partitioncloud/templates/albums/album.html:12 -msgid "Supprimer l'album" +msgid "Delete l'album" msgstr "Delete album" #: partitioncloud/templates/albums/album.html:13 #: partitioncloud/templates/albums/delete-album.html:6 -msgid "Êtes vous sûr de vouloir supprimer cet album ?" +msgid "Do you really want to delete this album?" msgstr "Do you really want to delete this album?" #: partitioncloud/templates/albums/album.html:16 #: partitioncloud/templates/albums/album.html:60 #: partitioncloud/templates/albums/delete-album.html:8 -#: partitioncloud/templates/groupe/index.html:21 -#: partitioncloud/templates/groupe/index.html:54 +#: partitioncloud/templates/groupe/index.html:20 +#: partitioncloud/templates/groupe/index.html:53 #: partitioncloud/templates/partition/delete.html:10 #: partitioncloud/templates/partition/details.html:86 #: partitioncloud/templates/partition/edit.html:57 -msgid "Supprimer" +msgid "Delete" msgstr "Delete" #: partitioncloud/templates/albums/album.html:51 -msgid "Ajouter une partition" +msgid "Add a score" msgstr "Add a score" #: partitioncloud/templates/albums/album.html:54 -#: partitioncloud/templates/groupe/index.html:47 -msgid "Rejoindre" +#: partitioncloud/templates/groupe/index.html:46 +msgid "Join" msgstr "Join" #: partitioncloud/templates/albums/album.html:56 -#: partitioncloud/templates/groupe/index.html:49 -msgid "Quitter" +#: partitioncloud/templates/groupe/index.html:48 +msgid "Quit" msgstr "Quit" #: partitioncloud/templates/albums/album.html:58 -#: partitioncloud/templates/groupe/index.html:51 -msgid "Partager" +#: partitioncloud/templates/groupe/index.html:50 +msgid "Share" msgstr "Share" #: partitioncloud/templates/albums/delete-album.html:3 #: partitioncloud/templates/partition/delete.html:4 #, python-format -msgid "Supprimer %(name)s" +msgid "Delete %(name)s" msgstr "Delete %(name)s" #: partitioncloud/templates/albums/delete-album.html:11 #: partitioncloud/templates/partition/delete.html:13 -msgid "Annuler" +msgid "Cancel" msgstr "Cancel" #: partitioncloud/templates/albums/index.html:3 @@ -396,185 +394,203 @@ msgstr "Home" #: partitioncloud/templates/albums/index.html:10 #, python-format -msgid "Bonjour %(user_name)s !" +msgid "Hi %(user_name)s !" msgstr "Hi %(user_name)s !" #: partitioncloud/templates/albums/index.html:11 -msgid "Aucun album sélectionné" +msgid "No album selected" msgstr "No album selected" -#: partitioncloud/templates/auth/login.html:5 -msgid "Connexion" -msgstr "Log in" +#: partitioncloud/templates/albums/search.html:5 +#, python-format +msgid "Search results for \"%(query)s\"" +msgstr "Search results for \"%(query)s\"" + +#: partitioncloud/templates/albums/search.html:7 +msgid "Results in current database" +msgstr "Results in current database" + +#: partitioncloud/templates/albums/search.html:38 +#: partitioncloud/templates/albums/search.html:70 +msgid "Add to album" +msgstr "Add to album" + +#: partitioncloud/templates/albums/search.html:45 +msgid "Online search results" +msgstr "" + +#: partitioncloud/templates/albums/search.html:77 +msgid "" +"No results available. Try to tweak your query or increase the amount of " +"online searches." +msgstr "" +"No results available. Try to tweak your query or increase the amount of " +"online searches." #: partitioncloud/templates/auth/login.html:8 #: partitioncloud/templates/auth/register.html:18 -msgid "Nom d'utilisateur" +msgid "Username" msgstr "Username" #: partitioncloud/templates/auth/login.html:9 #: partitioncloud/templates/auth/register.html:19 -msgid "Mot de passe" +msgid "Password" msgstr "Password" #: partitioncloud/templates/auth/register.html:10 -msgid "Ajouter à un album:" +msgid "Add to album:" msgstr "Add to album:" #: partitioncloud/templates/auth/register.html:12 -msgid "Aucun" +msgid "None" msgstr "None" #: partitioncloud/templates/components/add_partition.html:1 #, python-format -msgid "Ajouter une partition à %(name)s" +msgid "Add a score to %(name)s" msgstr "Add a score to %(name)s" #: partitioncloud/templates/components/add_partition.html:4 -msgid "titre" +msgid "title" msgstr "title" #: partitioncloud/templates/components/add_partition.html:5 -msgid "auteur" +msgid "author" msgstr "author" #: partitioncloud/templates/components/add_partition.html:6 -msgid "paroles" +msgid "lyrics" msgstr "lyrics" #: partitioncloud/templates/components/add_partition.html:10 #: partitioncloud/templates/groupe/index.html:11 #: partitioncloud/templates/partition/attachments.html:13 -msgid "Ajouter" +msgid "Add" msgstr "Add" #: partitioncloud/templates/groupe/index.html:8 #, python-format -msgid "Ajouter un album au groupe %(name)s" +msgid "Add an album to group %(name)s" msgstr "Add an album to group %(name)s" #: partitioncloud/templates/groupe/index.html:16 -msgid "Supprimer le groupe" +msgid "Delete group" msgstr "Delete group" #: partitioncloud/templates/groupe/index.html:17 -msgid "" -"Êtes vous sûr de vouloir supprimer ce groupe ? Cela supprimera les albums" -"\n" -" sous-jacents et leurs partitions si personne ne les a rejoints " -"(indépendamment du groupe)." +msgid "Do you really want to delete this group and the albums it contains?" msgstr "Do you really want to delete this group and the albums it contains?" -#: partitioncloud/templates/groupe/index.html:53 -msgid "Ajouter un album" +#: partitioncloud/templates/groupe/index.html:52 +msgid "Add an album" msgstr "Add an album" -#: partitioncloud/templates/groupe/index.html:75 -msgid "En créer un" +#: partitioncloud/templates/groupe/index.html:74 +msgid "Create one" msgstr "Create one" -#: partitioncloud/templates/groupe/index.html:78 +#: partitioncloud/templates/groupe/index.html:77 #, python-format -msgid "Aucun album disponible. %(create)s" +msgid "No available album. %(create)s" msgstr "No available album. %(create)s" #: partitioncloud/templates/partition/attachments.html:5 #, python-format -msgid "Attachments de %(name)s" +msgid "Attachments of %(name)s" msgstr "Attachments of %(name)s" #: partitioncloud/templates/partition/attachments.html:9 #, python-format -msgid "Ajouter un attachment à %(name)s" +msgid "Add an attachment to %(name)s" msgstr "Add an attachment to %(name)s" #: partitioncloud/templates/partition/attachments.html:22 msgid "" -"Impossible d'afficher le pdf dans ce navigateur.\n" -" Il est conseillé d'utiliser Firefox sur Android." +"No pdf viewer available in this browser.\n" +" You can use Firefox on Android." msgstr "" "No pdf viewer available in this browser.\n" " You can use Firefox on Android." #: partitioncloud/templates/partition/attachments.html:46 -msgid "JavaScript est nécessaire pour lire les fichiers MIDI" +msgid "JavaScript is mandatory to read MIDI files" msgstr "JavaScript is mandatory to read MIDI files" #: partitioncloud/templates/partition/attachments.html:60 -msgid "Ajouter un attachment" +msgid "Add an attachment" msgstr "Add an attachment" #: partitioncloud/templates/partition/delete.html:8 -msgid "Êtes vous sûr de vouloir supprimer cette partition ?" +msgid "Do you really want to delete this score?" msgstr "Do you really want to delete this score?" #: partitioncloud/templates/partition/details.html:4 #, python-format -msgid "Détails de \"%(name)s\"" +msgid "Details of \"%(name)s\"" msgstr "Details of \"%(name)s\"" #: partitioncloud/templates/partition/details.html:12 -msgid "Responsable de l'ajout" +msgid "Added by" msgstr "Added by" #: partitioncloud/templates/partition/details.html:23 -msgid "Inconnu" +msgid "Unknown" msgstr "Unknown" #: partitioncloud/templates/partition/details.html:29 -msgid "Type d'ajout" +msgid "Type" msgstr "Type" #: partitioncloud/templates/partition/details.html:52 #: partitioncloud/templates/partition/edit.html:13 -msgid "Fichier" +msgid "File" msgstr "File" #: partitioncloud/templates/partition/details.html:58 #: partitioncloud/templates/partition/details.html:59 #: partitioncloud/templates/partition/edit.html:29 #: partitioncloud/templates/partition/edit.html:30 -msgid "Titre" +msgid "Title" msgstr "Title" #: partitioncloud/templates/partition/details.html:62 #: partitioncloud/templates/partition/details.html:63 #: partitioncloud/templates/partition/edit.html:33 #: partitioncloud/templates/partition/edit.html:34 -msgid "Auteur" +msgid "Author" msgstr "Author" #: partitioncloud/templates/partition/details.html:66 #: partitioncloud/templates/partition/details.html:67 #: partitioncloud/templates/partition/edit.html:37 #: partitioncloud/templates/partition/edit.html:38 -msgid "Paroles" +msgid "Lyrics" msgstr "Lyrics" #: partitioncloud/templates/partition/details.html:70 #: partitioncloud/templates/partition/edit.html:41 -msgid "Pièces jointes" +msgid "Attachments" msgstr "Attachments" #: partitioncloud/templates/partition/details.html:75 #: partitioncloud/templates/partition/edit.html:46 #, python-format -msgid "Oui, %(number)s" +msgid "Yes, %(number)s" msgstr "Yes, %(number)s" #: partitioncloud/templates/partition/details.html:77 #: partitioncloud/templates/partition/edit.html:48 -msgid "En rajouter" +msgid "Add one" msgstr "Add one" #: partitioncloud/templates/partition/details.html:83 #: partitioncloud/templates/partition/edit.html:54 -msgid "Mettre à jour" +msgid "Update" msgstr "Update" #: partitioncloud/templates/partition/edit.html:6 #, python-format -msgid "Modifier \"%(name)s\"" +msgid "Modify \"%(name)s\"" msgstr "Modify \"%(name)s\"" #: partitioncloud/templates/partition/edit.html:21 diff --git a/partitioncloud/translations/fr/LC_MESSAGES/messages.po b/partitioncloud/translations/fr/LC_MESSAGES/messages.po index 615e2b2..f820305 100644 --- a/partitioncloud/translations/fr/LC_MESSAGES/messages.po +++ b/partitioncloud/translations/fr/LC_MESSAGES/messages.po @@ -18,248 +18,241 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.14.0\n" -#: partitioncloud/__init__.py:136 +#: partitioncloud/__init__.py:135 #, python-format -msgid "Utilisateur %(username)s créé" +msgid "Created user %(username)s" msgstr "Utilisateur %(username)s créé" -#: partitioncloud/__init__.py:139 +#: partitioncloud/__init__.py:138 #, python-format -msgid "Cet album n'existe pas. L'utilisateur %(username)s a été créé" +msgid "This album does not exists, but user %(username)s has been created" msgstr "Cet album n'existe pas. L'utilisateur %(username)s a été créé" #: partitioncloud/modules/albums.py:41 -msgid "Aucun terme de recherche spécifié." +msgid "Missing search query" msgstr "Aucun terme de recherche spécifié." -#: partitioncloud/modules/albums.py:123 partitioncloud/modules/groupe.py:185 -msgid "Un nom est requis. L'album n'a pas été créé" -msgstr "Un nom est requis. L'album n'a pas été créé" +#: partitioncloud/modules/albums.py:123 partitioncloud/modules/groupe.py:71 +#: partitioncloud/modules/groupe.py:185 +msgid "Missing name." +msgstr "Un nom est requis." #: partitioncloud/modules/albums.py:160 -msgid "Cet album n'existe pas." +msgid "This album does not exist." msgstr "Cet album n'existe pas." #: partitioncloud/modules/albums.py:163 -msgid "Album ajouté à la collection." +msgid "Album added to collection." msgstr "Album ajouté à la collection." #: partitioncloud/modules/albums.py:177 partitioncloud/modules/albums.py:240 #: partitioncloud/modules/albums.py:346 -msgid "Vous ne faites pas partie de cet album" +msgid "You are not a member of this album" msgstr "Vous ne faites pas partie de cet album" #: partitioncloud/modules/albums.py:181 -msgid "Vous êtes seul dans cet album, le quitter entraînera sa suppression." +msgid "You are alone here, quitting means deleting this album." msgstr "Vous êtes seul dans cet album, le quitter entraînera sa suppression." #: partitioncloud/modules/albums.py:185 -msgid "Album quitté." +msgid "Album quitted." msgstr "Album quitté." #: partitioncloud/modules/albums.py:204 -msgid "Vous n'êtes pas seul dans cet album." +msgid "You are not alone in this album." msgstr "Vous n'êtes pas seul dans cet album." #: partitioncloud/modules/albums.py:206 -msgid "Vous ne possédez pas cet album." +msgid "You don't own this album." msgstr "Vous ne possédez pas cet album." #: partitioncloud/modules/albums.py:217 -msgid "Album supprimé." +msgid "Album deleted." msgstr "Album supprimé." #: partitioncloud/modules/albums.py:246 partitioncloud/modules/partition.py:153 #: partitioncloud/modules/partition.py:199 -msgid "Un titre est requis." +msgid "Missing title" msgstr "Un titre est requis." #: partitioncloud/modules/albums.py:248 partitioncloud/modules/partition.py:63 -msgid "Aucun fichier n'a été fourni." +msgid "Missing file" msgstr "Aucun fichier n'a été fourni." #: partitioncloud/modules/albums.py:260 -msgid "Les résultats de la recherche ont expiré." +msgid "Search results expired" msgstr "Les résultats de la recherche ont expiré." #: partitioncloud/modules/albums.py:326 #, python-format -msgid "Partition %(partition_name)s ajoutée" +msgid "Score %(partition_name)s added" msgstr "Partition %(partition_name)s ajoutée" #: partitioncloud/modules/albums.py:340 -msgid "Il est nécessaire de sélectionner un album." +msgid "Selecting an album is mandatory." msgstr "Il est nécessaire de sélectionner un album." #: partitioncloud/modules/albums.py:342 -msgid "Il est nécessaire de sélectionner une partition." +msgid "Selecting a score is mandatory." msgstr "Il est nécessaire de sélectionner une partition." #: partitioncloud/modules/albums.py:344 -msgid "Il est nécessaire de spécifier un type de partition." +msgid "Please specify a score type." msgstr "Il est nécessaire de spécifier un type de partition." #: partitioncloud/modules/albums.py:366 -msgid "Partition ajoutée." +msgid "Score added" msgstr "Partition ajoutée." #: partitioncloud/modules/albums.py:368 -msgid "Partition déjà dans l'album." +msgid "Score is already in the album." msgstr "Partition déjà dans l'album." #: partitioncloud/modules/albums.py:380 -msgid "Type de partition inconnu." +msgid "Unknown score type." msgstr "Type de partition inconnu." #: partitioncloud/modules/auth.py:27 partitioncloud/modules/auth.py:54 -msgid "Vous devez être connecté pour accéder à cette page." +msgid "You need to login to access this resource." msgstr "Vous devez être connecté pour accéder à cette page." #: partitioncloud/modules/auth.py:59 -msgid "Droits insuffisants." +msgid "Missing rights." msgstr "Droits insuffisants." #: partitioncloud/modules/auth.py:85 -msgid "Un nom d'utilisateur est requis." +msgid "Missing username." msgstr "Un nom d'utilisateur est requis." #: partitioncloud/modules/auth.py:87 -msgid "Un mot de passe est requis." +msgid "Missing password." msgstr "Un mot de passe est requis." #: partitioncloud/modules/auth.py:100 #, python-format -msgid "Le nom d'utilisateur %(username)s est déjà pris." +msgid "Username %(username)s is not available." msgstr "Le nom d'utilisateur %(username)s est déjà pris." #: partitioncloud/modules/auth.py:113 -msgid "" -"L'enregistrement de nouveaux utilisateurs a été désactivé par " -"l'administrateur." +msgid "New users registration is disabled by owner." msgstr "" "L'enregistrement de nouveaux utilisateurs a été désactivé par " "l'administrateur." #: partitioncloud/modules/auth.py:127 -msgid "Utilisateur créé avec succès. Vous pouvez vous connecter." +msgid "Successfully created new user. You can log in." msgstr "Utilisateur créé avec succès. Vous pouvez vous connecter." #: partitioncloud/modules/auth.py:152 -msgid "Nom d'utilisateur ou mot de passe incorrect." +msgid "Incorrect username or password" msgstr "Nom d'utilisateur ou mot de passe incorrect." -#: partitioncloud/modules/groupe.py:71 -msgid "Un nom est requis. Le groupe n'a pas été créé" -msgstr "Un nom est requis. Le groupe n'a pas été créé" - #: partitioncloud/modules/groupe.py:120 -msgid "Ce groupe n'existe pas." +msgid "Unknown group." msgstr "Ce groupe n'existe pas." #: partitioncloud/modules/groupe.py:123 -msgid "Groupe ajouté à la collection." +msgid "Group added to collection." msgstr "Groupe ajouté à la collection." #: partitioncloud/modules/groupe.py:134 -msgid "Vous ne faites pas partie de ce groupe" +msgid "You are not a member of this group." msgstr "Vous ne faites pas partie de ce groupe" #: partitioncloud/modules/groupe.py:138 -msgid "Vous êtes seul dans ce groupe, le quitter entraînera sa suppression." +msgid "You are alone here, quitting means deleting this group." msgstr "Vous êtes seul dans ce groupe, le quitter entraînera sa suppression." #: partitioncloud/modules/groupe.py:142 -msgid "Groupe quitté." +msgid "Group quitted." msgstr "Groupe quitté." #: partitioncloud/modules/groupe.py:155 -msgid "Vous n'êtes pas seul dans ce groupe." +msgid "You are not alone in this group." msgstr "Vous n'êtes pas seul dans ce groupe." #: partitioncloud/modules/groupe.py:166 -msgid "Groupe supprimé." +msgid "Group deleted." msgstr "Groupe supprimé." #: partitioncloud/modules/groupe.py:188 -msgid "Vous n'êtes pas administrateur de ce groupe" +msgid "You are not admin of this group." msgstr "Vous n'êtes pas administrateur de ce groupe" #: partitioncloud/modules/partition.py:58 -msgid "Cette partition ne vous appartient pas" +msgid "You don't own this score." msgstr "Cette partition ne vous appartient pas" #: partitioncloud/modules/partition.py:71 -msgid "Pas de nom de fichier" +msgid "Missing filename." msgstr "Pas de nom de fichier" #: partitioncloud/modules/partition.py:76 -msgid "Extension de fichier non supportée" +msgid "Unsupported file type." msgstr "Extension de fichier non supportée" #: partitioncloud/modules/partition.py:144 -msgid "Vous n'êtes pas autorisé à modifier cette partition." +msgid "You are not allowed to edit this file." msgstr "Vous n'êtes pas autorisé à modifier cette partition." #: partitioncloud/modules/partition.py:155 #: partitioncloud/modules/partition.py:201 -msgid "Un nom d'auteur est requis (à minima nul)" +msgid "Missing author in request body (can be null)." msgstr "Un nom d'auteur est requis (à minima nul)" #: partitioncloud/modules/partition.py:157 #: partitioncloud/modules/partition.py:203 -msgid "Des paroles sont requises (à minima nulles)" +msgid "Missing lyrics (can be null)." msgstr "Des paroles sont requises (à minima nulles)" #: partitioncloud/modules/partition.py:169 #: partitioncloud/modules/partition.py:215 #, python-format -msgid "Partition %(name)s modifiée avec succès." +msgid "Successfully modified %(name)s" msgstr "Partition %(name)s modifiée avec succès." #: partitioncloud/modules/partition.py:230 -msgid "Vous n'êtes pas autorisé à supprimer cette partition." +msgid "You are not allowed to delete this score." msgstr "Vous n'êtes pas autorisé à supprimer cette partition." #: partitioncloud/modules/partition.py:238 -msgid "Partition supprimée." +msgid "Score deleted." msgstr "Partition supprimée." #: partitioncloud/templates/base.html:23 -msgid "Créer un nouvel album" +msgid "New Album" msgstr "Créer un nouvel album" #: partitioncloud/templates/base.html:25 partitioncloud/templates/base.html:36 #: partitioncloud/templates/groupe/index.html:10 #: partitioncloud/templates/partition/attachments.html:11 -msgid "Nom" +msgid "Name" msgstr "Nom" #: partitioncloud/templates/base.html:26 partitioncloud/templates/base.html:37 -msgid "Créer" +msgid "Create" msgstr "Créer" #: partitioncloud/templates/base.html:30 -msgid "" -"Je souhaite créer plusieurs albums et pouvoir tous les partager avec un " -"seul lien." +msgid "I want to create a collection of albums." msgstr "" "Je souhaite créer plusieurs albums et pouvoir tous les partager avec un " "seul lien." #: partitioncloud/templates/base.html:30 -msgid "Créer un groupe" +msgid "Create group" msgstr "Créer un groupe" #: partitioncloud/templates/base.html:34 -msgid "Créer un nouveau groupe" +msgid "Create new group" msgstr "Créer un nouveau groupe" #: partitioncloud/templates/base.html:61 -msgid "Rechercher" +msgid "Search" msgstr "Rechercher" #: partitioncloud/templates/base.html:63 -msgid "Nombre de recherches en ligne" +msgid "Number of online searches" msgstr "Nombre de recherches en ligne" #: partitioncloud/templates/admin/index.html:23 @@ -269,62 +262,67 @@ msgid "Albums" msgstr "Albums" #: partitioncloud/templates/base.html:75 -msgid "Créer un album" +msgid "New album" msgstr "Créer un album" +#: partitioncloud/templates/base.html:92 +msgid "No albums" +msgstr "Aucun album disponible" + #: partitioncloud/templates/base.html:111 -msgid "Aucun album disponible" +msgid "No album available" msgstr "Aucun album disponible" #: partitioncloud/templates/base.html:125 -msgid "Connectez vous pour avoir accès à vos albums" +msgid "Log in to see your albums" msgstr "Connectez vous pour avoir accès à vos albums" #: partitioncloud/templates/base.html:139 -msgid "Déconnexion" +msgid "Log out" msgstr "Déconnexion" #: partitioncloud/templates/base.html:154 -msgid "Panneau admin" +msgid "Admin Panel" msgstr "Panneau admin" #: partitioncloud/templates/auth/register.html:5 #: partitioncloud/templates/auth/register.html:20 #: partitioncloud/templates/base.html:166 -msgid "Créer un compte" +msgid "Create account" msgstr "Créer un compte" +#: partitioncloud/templates/auth/login.html:5 #: partitioncloud/templates/auth/login.html:10 #: partitioncloud/templates/base.html:168 -msgid "Se connecter" +msgid "Log in" msgstr "Se connecter" #: partitioncloud/templates/admin/index.html:5 -msgid "Panneau d'administration" +msgid "Administration Panel" msgstr "Panneau d'administration" #: partitioncloud/templates/admin/index.html:9 -msgid "Nouvel utilisateur" +msgid "New user" msgstr "Nouvel utilisateur" #: partitioncloud/templates/admin/index.html:12 -msgid "Voir les partitions" +msgid "See scores" msgstr "Voir les partitions" #: partitioncloud/templates/admin/index.html:15 -msgid "Voir les logs" +msgid "See logs" msgstr "Voir les logs" #: partitioncloud/templates/admin/index.html:22 -msgid "Utilisateur" +msgid "User" msgstr "Utilisateur" #: partitioncloud/templates/admin/index.html:24 -msgid "Partitions" +msgid "Scores" msgstr "Partitions" #: partitioncloud/templates/admin/index.html:25 -msgid "Privilèges" +msgid "Admin privileges" msgstr "Privilèges" #: partitioncloud/templates/admin/logs.html:5 @@ -332,66 +330,66 @@ msgid "Logs" msgstr "Logs" #: partitioncloud/templates/admin/partitions.html:4 -msgid "Liste des partitions" +msgid "Scores list" msgstr "Liste des partitions" #: partitioncloud/templates/admin/partitions.html:31 #: partitioncloud/templates/albums/album.html:94 -msgid "Aucune partition disponible" +msgid "No available scores" msgstr "Aucune partition disponible" #: partitioncloud/templates/albums/add-partition.html:3 -msgid "Ajout de partition" +msgid "New score" msgstr "Ajout de partition" #: partitioncloud/templates/albums/album.html:12 -msgid "Supprimer l'album" +msgid "Delete l'album" msgstr "Supprimer l'album" #: partitioncloud/templates/albums/album.html:13 #: partitioncloud/templates/albums/delete-album.html:6 -msgid "Êtes vous sûr de vouloir supprimer cet album ?" +msgid "Do you really want to delete this album?" msgstr "Êtes vous sûr de vouloir supprimer cet album ?" #: partitioncloud/templates/albums/album.html:16 #: partitioncloud/templates/albums/album.html:60 #: partitioncloud/templates/albums/delete-album.html:8 -#: partitioncloud/templates/groupe/index.html:21 -#: partitioncloud/templates/groupe/index.html:54 +#: partitioncloud/templates/groupe/index.html:20 +#: partitioncloud/templates/groupe/index.html:53 #: partitioncloud/templates/partition/delete.html:10 #: partitioncloud/templates/partition/details.html:86 #: partitioncloud/templates/partition/edit.html:57 -msgid "Supprimer" +msgid "Delete" msgstr "Supprimer" #: partitioncloud/templates/albums/album.html:51 -msgid "Ajouter une partition" +msgid "Add a score" msgstr "Ajouter une partition" #: partitioncloud/templates/albums/album.html:54 -#: partitioncloud/templates/groupe/index.html:47 -msgid "Rejoindre" +#: partitioncloud/templates/groupe/index.html:46 +msgid "Join" msgstr "Rejoindre" #: partitioncloud/templates/albums/album.html:56 -#: partitioncloud/templates/groupe/index.html:49 -msgid "Quitter" +#: partitioncloud/templates/groupe/index.html:48 +msgid "Quit" msgstr "Quitter" #: partitioncloud/templates/albums/album.html:58 -#: partitioncloud/templates/groupe/index.html:51 -msgid "Partager" +#: partitioncloud/templates/groupe/index.html:50 +msgid "Share" msgstr "Partager" #: partitioncloud/templates/albums/delete-album.html:3 #: partitioncloud/templates/partition/delete.html:4 #, python-format -msgid "Supprimer %(name)s" +msgid "Delete %(name)s" msgstr "Supprimer %(name)s" #: partitioncloud/templates/albums/delete-album.html:11 #: partitioncloud/templates/partition/delete.html:13 -msgid "Annuler" +msgid "Cancel" msgstr "Annuler" #: partitioncloud/templates/albums/index.html:3 @@ -400,189 +398,206 @@ msgstr "Accueil" #: partitioncloud/templates/albums/index.html:10 #, python-format -msgid "Bonjour %(user_name)s !" +msgid "Hi %(user_name)s !" msgstr "Bonjour %(user_name)s !" #: partitioncloud/templates/albums/index.html:11 -msgid "Aucun album sélectionné" +msgid "No album selected" msgstr "Aucun album sélectionné" -#: partitioncloud/templates/auth/login.html:5 -msgid "Connexion" -msgstr "Connexion" +#: partitioncloud/templates/albums/search.html:5 +#, python-format +msgid "Search results for \"%(query)s\"" +msgstr "Résultats de la recherche pour \"%(query)s\"" + +#: partitioncloud/templates/albums/search.html:7 +msgid "Results in current database" +msgstr "Résultats dans la recherche locale" + +#: partitioncloud/templates/albums/search.html:38 +#: partitioncloud/templates/albums/search.html:70 +msgid "Add to album" +msgstr "Ajouter à un album" + +#: partitioncloud/templates/albums/search.html:45 +msgid "Online search results" +msgstr "Résultats de la recherche en ligne" + +#: partitioncloud/templates/albums/search.html:77 +msgid "" +"No results available. Try to tweak your query or increase the amount of " +"online searches." +msgstr "" +"Aucun résultat disponible. Essayez d'affiner votre recherche ou " +"d'augmenter le nombre de résultats en ligne" #: partitioncloud/templates/auth/login.html:8 #: partitioncloud/templates/auth/register.html:18 -msgid "Nom d'utilisateur" +msgid "Username" msgstr "Nom d'utilisateur" #: partitioncloud/templates/auth/login.html:9 #: partitioncloud/templates/auth/register.html:19 -msgid "Mot de passe" +msgid "Password" msgstr "Mot de passe" #: partitioncloud/templates/auth/register.html:10 -msgid "Ajouter à un album:" +msgid "Add to album:" msgstr "Ajouter à un album:" #: partitioncloud/templates/auth/register.html:12 -msgid "Aucun" +msgid "None" msgstr "Aucun" #: partitioncloud/templates/components/add_partition.html:1 #, python-format -msgid "Ajouter une partition à %(name)s" +msgid "Add a score to %(name)s" msgstr "Ajouter une partition à %(name)s" #: partitioncloud/templates/components/add_partition.html:4 -msgid "titre" +msgid "title" msgstr "titre" #: partitioncloud/templates/components/add_partition.html:5 -msgid "auteur" +msgid "author" msgstr "auteur" #: partitioncloud/templates/components/add_partition.html:6 -msgid "paroles" +msgid "lyrics" msgstr "paroles" #: partitioncloud/templates/components/add_partition.html:10 #: partitioncloud/templates/groupe/index.html:11 #: partitioncloud/templates/partition/attachments.html:13 -msgid "Ajouter" +msgid "Add" msgstr "Ajouter" #: partitioncloud/templates/groupe/index.html:8 #, python-format -msgid "Ajouter un album au groupe %(name)s" +msgid "Add an album to group %(name)s" msgstr "Ajouter un album au groupe %(name)s" #: partitioncloud/templates/groupe/index.html:16 -msgid "Supprimer le groupe" +msgid "Delete group" msgstr "Supprimer le groupe" #: partitioncloud/templates/groupe/index.html:17 -msgid "" -"Êtes vous sûr de vouloir supprimer ce groupe ? Cela supprimera les albums" -"\n" -" sous-jacents et leurs partitions si personne ne les a rejoints " -"(indépendamment du groupe)." +msgid "Do you really want to delete this group and the albums it contains?" msgstr "" "Êtes vous sûr de vouloir supprimer ce groupe ? Cela supprimera les albums" -"\n" " sous-jacents et leurs partitions si personne ne les a rejoints " "(indépendamment du groupe)." -#: partitioncloud/templates/groupe/index.html:53 -msgid "Ajouter un album" +#: partitioncloud/templates/groupe/index.html:52 +msgid "Add an album" msgstr "Ajouter un album" -#: partitioncloud/templates/groupe/index.html:75 -msgid "En créer un" +#: partitioncloud/templates/groupe/index.html:74 +msgid "Create one" msgstr "En créer un" -#: partitioncloud/templates/groupe/index.html:78 +#: partitioncloud/templates/groupe/index.html:77 #, python-format -msgid "Aucun album disponible. %(create)s" +msgid "No available album. %(create)s" msgstr "Aucun album disponible. %(create)s" #: partitioncloud/templates/partition/attachments.html:5 #, python-format -msgid "Attachments de %(name)s" +msgid "Attachments of %(name)s" msgstr "Attachments de %(name)s" #: partitioncloud/templates/partition/attachments.html:9 #, python-format -msgid "Ajouter un attachment à %(name)s" +msgid "Add an attachment to %(name)s" msgstr "Ajouter un attachment à %(name)s" #: partitioncloud/templates/partition/attachments.html:22 msgid "" -"Impossible d'afficher le pdf dans ce navigateur.\n" -" Il est conseillé d'utiliser Firefox sur Android." +"No pdf viewer available in this browser.\n" +" You can use Firefox on Android." msgstr "" "Impossible d'afficher le pdf dans ce navigateur.\n" " Il est conseillé d'utiliser Firefox sur Android." #: partitioncloud/templates/partition/attachments.html:46 -msgid "JavaScript est nécessaire pour lire les fichiers MIDI" +msgid "JavaScript is mandatory to read MIDI files" msgstr "JavaScript est nécessaire pour lire les fichiers MIDI" #: partitioncloud/templates/partition/attachments.html:60 -msgid "Ajouter un attachment" +msgid "Add an attachment" msgstr "Ajouter un attachment" #: partitioncloud/templates/partition/delete.html:8 -msgid "Êtes vous sûr de vouloir supprimer cette partition ?" +msgid "Do you really want to delete this score?" msgstr "Êtes vous sûr de vouloir supprimer cette partition ?" #: partitioncloud/templates/partition/details.html:4 #, python-format -msgid "Détails de \"%(name)s\"" +msgid "Details of \"%(name)s\"" msgstr "Détails de \"%(name)s\"" #: partitioncloud/templates/partition/details.html:12 -msgid "Responsable de l'ajout" +msgid "Added by" msgstr "Responsable de l'ajout" #: partitioncloud/templates/partition/details.html:23 -msgid "Inconnu" +msgid "Unknown" msgstr "Inconnu" #: partitioncloud/templates/partition/details.html:29 -msgid "Type d'ajout" +msgid "Type" msgstr "Type d'ajout" #: partitioncloud/templates/partition/details.html:52 #: partitioncloud/templates/partition/edit.html:13 -msgid "Fichier" +msgid "File" msgstr "Fichier" #: partitioncloud/templates/partition/details.html:58 #: partitioncloud/templates/partition/details.html:59 #: partitioncloud/templates/partition/edit.html:29 #: partitioncloud/templates/partition/edit.html:30 -msgid "Titre" +msgid "Title" msgstr "Titre" #: partitioncloud/templates/partition/details.html:62 #: partitioncloud/templates/partition/details.html:63 #: partitioncloud/templates/partition/edit.html:33 #: partitioncloud/templates/partition/edit.html:34 -msgid "Auteur" +msgid "Author" msgstr "Auteur" #: partitioncloud/templates/partition/details.html:66 #: partitioncloud/templates/partition/details.html:67 #: partitioncloud/templates/partition/edit.html:37 #: partitioncloud/templates/partition/edit.html:38 -msgid "Paroles" +msgid "Lyrics" msgstr "Paroles" #: partitioncloud/templates/partition/details.html:70 #: partitioncloud/templates/partition/edit.html:41 -msgid "Pièces jointes" +msgid "Attachments" msgstr "Pièces jointes" #: partitioncloud/templates/partition/details.html:75 #: partitioncloud/templates/partition/edit.html:46 #, python-format -msgid "Oui, %(number)s" +msgid "Yes, %(number)s" msgstr "Oui, %(number)s" #: partitioncloud/templates/partition/details.html:77 #: partitioncloud/templates/partition/edit.html:48 -msgid "En rajouter" +msgid "Add one" msgstr "En rajouter" #: partitioncloud/templates/partition/details.html:83 #: partitioncloud/templates/partition/edit.html:54 -msgid "Mettre à jour" +msgid "Update" msgstr "Mettre à jour" #: partitioncloud/templates/partition/edit.html:6 #, python-format -msgid "Modifier \"%(name)s\"" +msgid "Modify \"%(name)s\"" msgstr "Modifier \"%(name)s\"" #: partitioncloud/templates/partition/edit.html:21 From c219f28a37583f17625b99bc00f42be8e9ec9303 Mon Sep 17 00:00:00 2001 From: augustin64 Date: Fri, 26 Jan 2024 11:14:43 +0100 Subject: [PATCH 4/6] Fix recently introduced bugs --- partitioncloud/templates/components/add_partition.html | 2 ++ partitioncloud/templates/partition/details.html | 2 +- partitioncloud/templates/partition/edit.html | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/partitioncloud/templates/components/add_partition.html b/partitioncloud/templates/components/add_partition.html index 00acdaa..71567e8 100644 --- a/partitioncloud/templates/components/add_partition.html +++ b/partitioncloud/templates/components/add_partition.html @@ -6,6 +6,8 @@
{% if partition_uuid %} + {% else %} +
{% endif %} \ No newline at end of file diff --git a/partitioncloud/templates/partition/details.html b/partitioncloud/templates/partition/details.html index 64495bd..f637f52 100644 --- a/partitioncloud/templates/partition/details.html +++ b/partitioncloud/templates/partition/details.html @@ -68,7 +68,7 @@ {{ _("Attachments") }} - {% set _ = partition.load_attachments() %} + {{ partition.load_attachments() }} {% if partition.attachments %} {% set number=partition.attachments | length %} diff --git a/partitioncloud/templates/partition/edit.html b/partitioncloud/templates/partition/edit.html index b7950d1..b5179a6 100644 --- a/partitioncloud/templates/partition/edit.html +++ b/partitioncloud/templates/partition/edit.html @@ -39,7 +39,7 @@ {{ _("Attachments") }} - {% set _ = partition.load_attachments() %} + {{ partition.load_attachments() }} {% if partition.attachments %} {% set number=partition.attachments | length %} From a97070eb2e9a8e851b2be3400f0b825bb4d10ae5 Mon Sep 17 00:00:00 2001 From: augustin64 Date: Fri, 26 Jan 2024 19:30:41 +0100 Subject: [PATCH 5/6] Add flask-babel installation hook --- scripts/hooks/utils.py | 28 ++++++++++++++++++++++++++++ scripts/hooks/v1.py | 13 +++++++++++-- scripts/migration.py | 3 ++- 3 files changed, 41 insertions(+), 3 deletions(-) diff --git a/scripts/hooks/utils.py b/scripts/hooks/utils.py index 9683c8e..c901181 100644 --- a/scripts/hooks/utils.py +++ b/scripts/hooks/utils.py @@ -1,7 +1,9 @@ import os +import sys import random import string import sqlite3 +from colorama import Fore, Style from . import config @@ -40,3 +42,29 @@ def new_uuid(): def format_uuid(uuid): """Format old uuid4 format""" return uuid.upper()[:6] + + +def install_package(package): + print(f"\nThe following python package needs to be installed: {Style.BRIGHT}{Fore.YELLOW}{package}{Style.RESET_ALL}") + print(f"1. Install with {Style.BRIGHT}pip{Style.RESET_ALL} (automatic)") + print(f"2. Install manually (other package manager)") + option = input("Select an option: ") + try: + choice = int(option) + + if choice == 1: + return_value = os.system(f"pip install {package} -qq") + if return_value == 0: + return + print(f"{Fore.RED}Installation with pip failed{Style.RESET_ALL}") + sys.exit(return_value) + + elif choice == 2: + input("Install via you preferred option, and hit [Enter] when done") + return + + except ValueError: + pass + + print(f"{Fore.RED}Please enter a valid option{Style.RESET_ALL}") + return install_package(package) \ No newline at end of file diff --git a/scripts/hooks/v1.py b/scripts/hooks/v1.py index 176b813..07776b1 100644 --- a/scripts/hooks/v1.py +++ b/scripts/hooks/v1.py @@ -54,7 +54,7 @@ def add_attachments(): def install_colorama(): - os.system("pip install colorama -qq") + utils.install_package("colorama") """ @@ -144,7 +144,7 @@ def base_url_parameter_added(): def install_qrcode(): - os.system("pip install qrcode -qq") + utils.install_package("qrcode") """ @@ -171,3 +171,12 @@ def move_thumbnails(): os.makedirs(os.path.join(config.instance, "cache", "thumbnails"), exist_ok=True) os.makedirs(os.path.join(config.instance, "cache", "search-thumbnails"), exist_ok=True) + + +""" + v1.7.* +""" + + +def install_babel(): + utils.install_package("flask-babel") \ No newline at end of file diff --git a/scripts/migration.py b/scripts/migration.py index 4434bbb..a93302c 100644 --- a/scripts/migration.py +++ b/scripts/migration.py @@ -34,7 +34,8 @@ hooks = [ ), ("v1.4.1", [("Install qrcode", v1_hooks.install_qrcode)]), ("v1.5.0", [("Move to instance directory", v1_hooks.move_instance)]), - ("v1.5.1", [("Move thumbnails", v1_hooks.move_thumbnails)]) + ("v1.5.1", [("Move thumbnails", v1_hooks.move_thumbnails)]), + ("v1.7.0", [("Install babel", v1_hooks.install_babel)]) ] From 511a4b362641f6b5fb3cf83c4be9340d638d48df Mon Sep 17 00:00:00 2001 From: augustin64 Date: Fri, 26 Jan 2024 19:32:22 +0100 Subject: [PATCH 6/6] Add automatic translations compilation --- make.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/make.sh b/make.sh index 8aa925d..7f22af3 100755 --- a/make.sh +++ b/make.sh @@ -34,10 +34,12 @@ translations () { } start () { + pybabel compile -d partitioncloud/translations/ flask run --port=$PORT } production () { + pybabel compile -d partitioncloud/translations/ FLASK_APP=partitioncloud /usr/bin/gunicorn \ wsgi:app \ --bind 0.0.0.0:$PORT @@ -56,9 +58,9 @@ usage () { echo -e "\t$0 start" echo -e "\t$0 production" echo -e "\t$0 translations" - } + RESULT=$(type "$1") if [[ $1 && $RESULT = *"is a"*"function"* || $RESULT == *"est une fonction"* ]]; then # Import config