Drop de/es locales, complete fr translations, add navbar language switcher.

This commit is contained in:
krek0 2026-05-03 23:35:24 +02:00
parent f782c58976
commit dcd944b8c6
9 changed files with 309 additions and 929 deletions

View file

@ -8,8 +8,12 @@ WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
RUN apt-get update && apt-get install -y gettext && rm -rf /var/lib/apt/lists/*
COPY . .
RUN python manage.py compilemessages
# Create volume mount points
RUN mkdir -p /app/media /app/static /app/data

View file

@ -1,321 +0,0 @@
# This file is part of photo21
# Copyright (C) 2022 Amicale des élèves de l'ENS Paris-Saclay
# SPDX-License-Identifier: GPL-3.0-or-later
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-07 20:03+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: .\photo21\forms.py:16
msgid ""
"Please enter a valid email address ending with `@crans.org` or `@ens-paris-"
"saclay.fr`."
msgstr ""
#: .\photo21\forms.py:29
msgid "Must end with `@crans.org` or `@ens-paris-saclay.fr`."
msgstr ""
#: .\photo21\settings.py:171
msgid "German"
msgstr ""
#: .\photo21\settings.py:172
msgid "English"
msgstr ""
#: .\photo21\settings.py:173
msgid "Spanish"
msgstr ""
#: .\photo21\settings.py:174
msgid "French"
msgstr ""
#: .\photo21\templates\400.html:12
msgid "Bad request"
msgstr ""
#: .\photo21\templates\400.html:16
msgid ""
"Sorry, your request was bad. Don't know what could be wrong. An email has "
"been sent to webmasters with the details of the error. You can now drink a "
"coke."
msgstr ""
#: .\photo21\templates\403.html:12
msgid "Permission denied"
msgstr ""
#: .\photo21\templates\403.html:15
msgid "You don't have the right to perform this request."
msgstr ""
#: .\photo21\templates\403.html:17 .\photo21\templates\404.html:21
msgid "Exception message:"
msgstr ""
#: .\photo21\templates\404.html:12
msgid "Page not found"
msgstr ""
#: .\photo21\templates\404.html:16
#, python-format
msgid ""
"The requested path <code>%(request_path)s</code> was not found on the server."
msgstr ""
#: .\photo21\templates\500.html:12
msgid "Server error"
msgstr ""
#: .\photo21\templates\500.html:16
msgid ""
"Sorry, an error occurred when processing your request. An email has been "
"sent to webmasters with the detail of the error, and this will be fixed "
"soon. You can go drink a soft."
msgstr ""
#: .\photo21\templates\account\email.html:8
#: .\photo21\templates\account\email.html:16
#: .\photo21\templates\socialaccount\connections.html:16
msgid "E-mail Addresses"
msgstr ""
#: .\photo21\templates\account\email.html:11 .\photo21\templates\base.html:63
#: .\photo21\templates\socialaccount\connections.html:11
msgid "Account"
msgstr ""
#: .\photo21\templates\account\email.html:19
#: .\photo21\templates\socialaccount\connections.html:19
msgid "Social connections"
msgstr ""
#: .\photo21\templates\account\email.html:25
msgid "The following e-mail addresses are associated with your account:"
msgstr ""
#: .\photo21\templates\account\email.html:36
msgid "Verified"
msgstr ""
#: .\photo21\templates\account\email.html:38
msgid "Unverified"
msgstr ""
#: .\photo21\templates\account\email.html:40
msgid "Primary"
msgstr ""
#: .\photo21\templates\account\email.html:46
msgid "Make Primary"
msgstr ""
#: .\photo21\templates\account\email.html:47
msgid "Re-send Verification"
msgstr ""
#: .\photo21\templates\account\email.html:48
#: .\photo21\templates\socialaccount\connections.html:47
msgid "Remove"
msgstr ""
#: .\photo21\templates\account\email.html:53
msgid "Warning:"
msgstr ""
#: .\photo21\templates\account\email.html:53
msgid ""
"You currently do not have any e-mail address set up. You should really add "
"an e-mail address so you can receive notifications, reset your password, etc."
msgstr ""
#: .\photo21\templates\account\email.html:57
msgid "Add E-mail Address"
msgstr ""
#: .\photo21\templates\account\email.html:62
msgid "Add E-mail"
msgstr ""
#: .\photo21\templates\account\login.html:8
#: .\photo21\templates\account\login.html:36
msgid "Sign In"
msgstr ""
#: .\photo21\templates\account\login.html:19
#, python-format
msgid ""
"Please sign in with one of your existing third party accounts. Or, <a "
"href=\"%(signup_url)s\">sign up</a> for a %(site_name)s account and sign in "
"below:"
msgstr ""
#: .\photo21\templates\account\login.html:26
#, python-format
msgid ""
"If you have not created an account yet, then please <a "
"href=\"%(signup_url)s\">sign up</a> first."
msgstr ""
#: .\photo21\templates\account\login.html:39
msgid "Forgot Password?"
msgstr ""
#: .\photo21\templates\account\login.html:42
msgid "If any problem, please contact the server owners at"
msgstr ""
#: .\photo21\templates\account\logout.html:8
#: .\photo21\templates\account\logout.html:13
#: .\photo21\templates\account\logout.html:22
msgid "Sign Out"
msgstr ""
#: .\photo21\templates\account\logout.html:16
msgid "Are you sure you want to sign out?"
msgstr ""
#: .\photo21\templates\account\signup.html:8
msgid "Signup"
msgstr ""
#: .\photo21\templates\account\signup.html:13
#: .\photo21\templates\account\signup.html:24
msgid "Sign Up"
msgstr ""
#: .\photo21\templates\account\signup.html:16
#, python-format
msgid ""
"Already have an account? Then please <a href=\"%(login_url)s\">sign in</a>."
msgstr ""
#: .\photo21\templates\base.html:16
msgid "The ENS Paris-Saclay pictures server."
msgstr ""
#: .\photo21\templates\base.html:41
msgid "Galleries"
msgstr ""
#: .\photo21\templates\base.html:46
msgid "Upload"
msgstr ""
#: .\photo21\templates\base.html:51
msgid "Manage"
msgstr ""
#: .\photo21\templates\base.html:72
msgid "Log out"
msgstr ""
#: .\photo21\templates\base.html:82
msgid "Log in"
msgstr ""
#: .\photo21\templates\base.html:91
msgid "Sign up"
msgstr ""
#: .\photo21\templates\base.html:116
msgid "Connected as"
msgstr ""
#: .\photo21\templates\base.html:118
msgid "Source code"
msgstr ""
#: .\photo21\templates\index.html:8
msgid "Home"
msgstr ""
#: .\photo21\templates\index.html:11
msgid "Welcome to the pictures server!"
msgstr ""
#: .\photo21\templates\index.html:13
msgid ""
"This website aims to collect the pictures and movies taken in the student "
"life of ENS Paris-Saclay or involving its students."
msgstr ""
#: .\photo21\templates\index.html:20
#, python-format
msgid ""
"The pictures are visible in <a href=\"%(gallery_archive_url)s\">the "
"galleries</a> and are downloadable. <b>However, the agreement of the "
"photographer and the persons present on the photo is necessary before any "
"republication on another platform. </b>"
msgstr ""
#: .\photo21\templates\index.html:29
msgid ""
"If you want a photo to be deleted, please let us know: <a "
"href=\"mailto:photos@crans.org?subject=[ABUS] Nouvelle requête\" class=\"btn "
"btn-secondary btn-sm\">Abuse request</a>"
msgstr ""
#: .\photo21\templates\index.html:36
msgid ""
"If you want to obtain the right to upload pictures, please let us know: <a "
"href=\"mailto:photos@crans.org?subject=[Photographe] Demande de droits "
"photographe\" class=\"btn btn-secondary btn-sm\">Become a photograph</a>"
msgstr ""
#: .\photo21\templates\index.html:43
msgid "Last galleries"
msgstr ""
#: .\photo21\templates\index.html:52
msgid "Behind the scene"
msgstr ""
#: .\photo21\templates\index.html:54
msgid ""
"Because we value your privacy, we do not sell the data on this site, unlike "
"many free online platforms. The dedicated server running this website is "
"kindly hosted by the <a href=\"https://www.crans.org/\">Crans</a> at the ENS "
"Paris-Saclay basement. It is not managed by the Crans. Current active "
"administrators are:"
msgstr ""
#: .\photo21\templates\index.html:63
msgid "They should be contacted at"
msgstr ""
#: .\photo21\templates\socialaccount\connections.html:8
msgid "Account Connections"
msgstr ""
#: .\photo21\templates\socialaccount\connections.html:25
msgid ""
"You can sign in to your account using any of the following third party "
"accounts:"
msgstr ""
#: .\photo21\templates\socialaccount\connections.html:53
msgid ""
"You currently have no social network accounts connected to this account."
msgstr ""
#: .\photo21\templates\socialaccount\connections.html:56
msgid "Add a 3rd Party Account"
msgstr ""
#: .\photo21\templates\socialaccount\snippets\provider_list.html:20
msgid "Sign in with"
msgstr ""

View file

@ -1,320 +0,0 @@
# This file is part of photo21
# Copyright (C) 2022 Amicale des élèves de l'ENS Paris-Saclay
# SPDX-License-Identifier: GPL-3.0-or-later
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-07 20:03+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: .\photo21\forms.py:16
msgid ""
"Please enter a valid email address ending with `@crans.org` or `@ens-paris-"
"saclay.fr`."
msgstr ""
#: .\photo21\forms.py:29
msgid "Must end with `@crans.org` or `@ens-paris-saclay.fr`."
msgstr ""
#: .\photo21\settings.py:171
msgid "German"
msgstr ""
#: .\photo21\settings.py:172
msgid "English"
msgstr ""
#: .\photo21\settings.py:173
msgid "Spanish"
msgstr ""
#: .\photo21\settings.py:174
msgid "French"
msgstr ""
#: .\photo21\templates\400.html:12
msgid "Bad request"
msgstr ""
#: .\photo21\templates\400.html:16
msgid ""
"Sorry, your request was bad. Don't know what could be wrong. An email has "
"been sent to webmasters with the details of the error. You can now drink a "
"coke."
msgstr ""
#: .\photo21\templates\403.html:12
msgid "Permission denied"
msgstr ""
#: .\photo21\templates\403.html:15
msgid "You don't have the right to perform this request."
msgstr ""
#: .\photo21\templates\403.html:17 .\photo21\templates\404.html:21
msgid "Exception message:"
msgstr ""
#: .\photo21\templates\404.html:12
msgid "Page not found"
msgstr ""
#: .\photo21\templates\404.html:16
#, python-format
msgid ""
"The requested path <code>%(request_path)s</code> was not found on the server."
msgstr ""
#: .\photo21\templates\500.html:12
msgid "Server error"
msgstr ""
#: .\photo21\templates\500.html:16
msgid ""
"Sorry, an error occurred when processing your request. An email has been "
"sent to webmasters with the detail of the error, and this will be fixed "
"soon. You can go drink a soft."
msgstr ""
#: .\photo21\templates\account\email.html:8
#: .\photo21\templates\account\email.html:16
#: .\photo21\templates\socialaccount\connections.html:16
msgid "E-mail Addresses"
msgstr ""
#: .\photo21\templates\account\email.html:11 .\photo21\templates\base.html:63
#: .\photo21\templates\socialaccount\connections.html:11
msgid "Account"
msgstr ""
#: .\photo21\templates\account\email.html:19
#: .\photo21\templates\socialaccount\connections.html:19
msgid "Social connections"
msgstr ""
#: .\photo21\templates\account\email.html:25
msgid "The following e-mail addresses are associated with your account:"
msgstr ""
#: .\photo21\templates\account\email.html:36
msgid "Verified"
msgstr ""
#: .\photo21\templates\account\email.html:38
msgid "Unverified"
msgstr ""
#: .\photo21\templates\account\email.html:40
msgid "Primary"
msgstr ""
#: .\photo21\templates\account\email.html:46
msgid "Make Primary"
msgstr ""
#: .\photo21\templates\account\email.html:47
msgid "Re-send Verification"
msgstr ""
#: .\photo21\templates\account\email.html:48
#: .\photo21\templates\socialaccount\connections.html:47
msgid "Remove"
msgstr ""
#: .\photo21\templates\account\email.html:53
msgid "Warning:"
msgstr ""
#: .\photo21\templates\account\email.html:53
msgid ""
"You currently do not have any e-mail address set up. You should really add "
"an e-mail address so you can receive notifications, reset your password, etc."
msgstr ""
#: .\photo21\templates\account\email.html:57
msgid "Add E-mail Address"
msgstr ""
#: .\photo21\templates\account\email.html:62
msgid "Add E-mail"
msgstr ""
#: .\photo21\templates\account\login.html:8
#: .\photo21\templates\account\login.html:36
msgid "Sign In"
msgstr ""
#: .\photo21\templates\account\login.html:19
#, python-format
msgid ""
"Please sign in with one of your existing third party accounts. Or, <a "
"href=\"%(signup_url)s\">sign up</a> for a %(site_name)s account and sign in "
"below:"
msgstr ""
#: .\photo21\templates\account\login.html:26
#, python-format
msgid ""
"If you have not created an account yet, then please <a "
"href=\"%(signup_url)s\">sign up</a> first."
msgstr ""
#: .\photo21\templates\account\login.html:39
msgid "Forgot Password?"
msgstr ""
#: .\photo21\templates\account\login.html:42
msgid "If any problem, please contact the server owners at"
msgstr ""
#: .\photo21\templates\account\logout.html:8
#: .\photo21\templates\account\logout.html:13
#: .\photo21\templates\account\logout.html:22
msgid "Sign Out"
msgstr ""
#: .\photo21\templates\account\logout.html:16
msgid "Are you sure you want to sign out?"
msgstr ""
#: .\photo21\templates\account\signup.html:8
msgid "Signup"
msgstr ""
#: .\photo21\templates\account\signup.html:13
#: .\photo21\templates\account\signup.html:24
msgid "Sign Up"
msgstr ""
#: .\photo21\templates\account\signup.html:16
#, python-format
msgid ""
"Already have an account? Then please <a href=\"%(login_url)s\">sign in</a>."
msgstr ""
#: .\photo21\templates\base.html:16
msgid "The ENS Paris-Saclay pictures server."
msgstr ""
#: .\photo21\templates\base.html:41
msgid "Galleries"
msgstr ""
#: .\photo21\templates\base.html:46
msgid "Upload"
msgstr ""
#: .\photo21\templates\base.html:51
msgid "Manage"
msgstr ""
#: .\photo21\templates\base.html:72
msgid "Log out"
msgstr ""
#: .\photo21\templates\base.html:82
msgid "Log in"
msgstr ""
#: .\photo21\templates\base.html:91
msgid "Sign up"
msgstr ""
#: .\photo21\templates\base.html:116
msgid "Connected as"
msgstr ""
#: .\photo21\templates\base.html:118
msgid "Source code"
msgstr ""
#: .\photo21\templates\index.html:8
msgid "Home"
msgstr ""
#: .\photo21\templates\index.html:11
msgid "Welcome to the pictures server!"
msgstr ""
#: .\photo21\templates\index.html:13
msgid ""
"This website aims to collect the pictures and movies taken in the student "
"life of ENS Paris-Saclay or involving its students."
msgstr ""
#: .\photo21\templates\index.html:20
#, python-format
msgid ""
"The pictures are visible in <a href=\"%(gallery_archive_url)s\">the "
"galleries</a> and are downloadable. <b>However, the agreement of the "
"photographer and the persons present on the photo is necessary before any "
"republication on another platform. </b>"
msgstr ""
#: .\photo21\templates\index.html:29
msgid ""
"If you want a photo to be deleted, please let us know: <a "
"href=\"mailto:photos@crans.org?subject=[ABUS] Nouvelle requête\" class=\"btn "
"btn-secondary btn-sm\">Abuse request</a>"
msgstr ""
#: .\photo21\templates\index.html:36
msgid ""
"If you want to obtain the right to upload pictures, please let us know: <a "
"href=\"mailto:photos@crans.org?subject=[Photographe] Demande de droits "
"photographe\" class=\"btn btn-secondary btn-sm\">Become a photograph</a>"
msgstr ""
#: .\photo21\templates\index.html:43
msgid "Last galleries"
msgstr ""
#: .\photo21\templates\index.html:52
msgid "Behind the scene"
msgstr ""
#: .\photo21\templates\index.html:54
msgid ""
"Because we value your privacy, we do not sell the data on this site, unlike "
"many free online platforms. The dedicated server running this website is "
"kindly hosted by the <a href=\"https://www.crans.org/\">Crans</a> at the ENS "
"Paris-Saclay basement. It is not managed by the Crans. Current active "
"administrators are:"
msgstr ""
#: .\photo21\templates\index.html:63
msgid "They should be contacted at"
msgstr ""
#: .\photo21\templates\socialaccount\connections.html:8
msgid "Account Connections"
msgstr ""
#: .\photo21\templates\socialaccount\connections.html:25
msgid ""
"You can sign in to your account using any of the following third party "
"accounts:"
msgstr ""
#: .\photo21\templates\socialaccount\connections.html:53
msgid ""
"You currently have no social network accounts connected to this account."
msgstr ""
#: .\photo21\templates\socialaccount\connections.html:56
msgid "Add a 3rd Party Account"
msgstr ""
#: .\photo21\templates\socialaccount\snippets\provider_list.html:20
msgid "Sign in with"
msgstr ""

View file

@ -1,163 +1,158 @@
# This file is part of photo21
# Copyright (C) 2022 Amicale des élèves de l'ENS Paris-Saclay
# SPDX-License-Identifier: GPL-3.0-or-later
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Project-Id-Version: photo21\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-07 20:03+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"Language-Team: French\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: .\photo21\forms.py:16
msgid ""
"Please enter a valid email address ending with `@crans.org` or `@ens-paris-"
"saclay.fr`."
msgstr ""
"Veuillez entrer une adresse email valide finissant par `@crans.org` ou `@ens-"
"paris-saclay.fr`."
#: photo21/forms.py:16
msgid "Please enter a valid email address ending with `@ens-rennes.fr`"
msgstr "Veuillez entrer une adresse e-mail valide finissant par `@ens-rennes.fr`."
#: .\photo21\forms.py:29
msgid "Must end with `@crans.org` or `@ens-paris-saclay.fr`."
msgstr "Doit finir par `@crans.org` ou `@ens-paris-saclay.fr`."
#: photo21/forms.py:26
msgid "Must end with `@ens-rennes.fr`."
msgstr "Doit finir par `@ens-rennes.fr`."
#: .\photo21\settings.py:171
msgid "German"
msgstr ""
#: .\photo21\settings.py:172
#: photo21/settings.py:201
msgid "English"
msgstr ""
msgstr "Anglais"
#: .\photo21\settings.py:173
msgid "Spanish"
msgstr ""
#: .\photo21\settings.py:174
#: photo21/settings.py:202
msgid "French"
msgstr ""
msgstr "Français"
#: .\photo21\templates\400.html:12
#: photo21/templates/400.html:12
msgid "Bad request"
msgstr ""
msgstr "Requête incorrecte"
#: .\photo21\templates\400.html:16
#: photo21/templates/400.html:16
msgid ""
"Sorry, your request was bad. Don't know what could be wrong. An email has "
"been sent to webmasters with the details of the error. You can now drink a "
"coke."
msgstr ""
"Désolé, votre requête était incorrecte. Un e-mail a été envoyé aux "
"administrateurs avec les détails de l'erreur. Vous pouvez aller boire un "
"coca."
#: .\photo21\templates\403.html:12
#: photo21/templates/403.html:12
msgid "Permission denied"
msgstr ""
msgstr "Permission refusée"
#: .\photo21\templates\403.html:15
#: photo21/templates/403.html:15
msgid "You don't have the right to perform this request."
msgstr ""
msgstr "Vous n'avez pas le droit d'effectuer cette requête."
#: .\photo21\templates\403.html:17 .\photo21\templates\404.html:21
#: photo21/templates/403.html:17 photo21/templates/404.html:21
msgid "Exception message:"
msgstr ""
msgstr "Message d'exception :"
#: .\photo21\templates\404.html:12
#: photo21/templates/404.html:12
msgid "Page not found"
msgstr ""
msgstr "Page introuvable"
#: .\photo21\templates\404.html:16
#: photo21/templates/404.html:16
#, python-format
msgid ""
"The requested path <code>%(request_path)s</code> was not found on the server."
msgstr ""
"Le chemin demandé <code>%(request_path)s</code> n'a pas été trouvé sur le "
"serveur."
#: .\photo21\templates\500.html:12
#: photo21/templates/500.html:12
msgid "Server error"
msgstr ""
msgstr "Erreur serveur"
#: .\photo21\templates\500.html:16
#: photo21/templates/500.html:16
msgid ""
"Sorry, an error occurred when processing your request. An email has been "
"sent to webmasters with the detail of the error, and this will be fixed "
"soon. You can go drink a soft."
msgstr ""
"Désolé, une erreur s'est produite lors du traitement de votre requête. Un e-"
"mail a été envoyé aux administrateurs avec les détails de l'erreur, et cela "
"sera corrigé prochainement. Vous pouvez aller boire un soda."
#: .\photo21\templates\account\email.html:8
#: .\photo21\templates\account\email.html:16
#: .\photo21\templates\socialaccount\connections.html:16
#: photo21/templates/account/email.html:8
#: photo21/templates/account/email.html:16
#: photo21/templates/socialaccount/connections.html:16
msgid "E-mail Addresses"
msgstr ""
msgstr "Adresses e-mail"
#: .\photo21\templates\account\email.html:11 .\photo21\templates\base.html:63
#: .\photo21\templates\socialaccount\connections.html:11
#: photo21/templates/account/email.html:11 photo21/templates/base.html:66
#: photo21/templates/socialaccount/connections.html:11
msgid "Account"
msgstr "Compte"
#: .\photo21\templates\account\email.html:19
#: .\photo21\templates\socialaccount\connections.html:19
#: photo21/templates/account/email.html:19
#: photo21/templates/socialaccount/connections.html:19
msgid "Social connections"
msgstr "Connexions sociales"
#: .\photo21\templates\account\email.html:25
#: photo21/templates/account/email.html:25
msgid "The following e-mail addresses are associated with your account:"
msgstr ""
msgstr "Les adresses e-mail suivantes sont associées à votre compte :"
#: .\photo21\templates\account\email.html:36
#: photo21/templates/account/email.html:36
msgid "Verified"
msgstr ""
msgstr "Vérifié"
#: .\photo21\templates\account\email.html:38
#: photo21/templates/account/email.html:38
msgid "Unverified"
msgstr ""
msgstr "Non vérifié"
#: .\photo21\templates\account\email.html:40
#: photo21/templates/account/email.html:40
msgid "Primary"
msgstr ""
msgstr "Principal"
#: .\photo21\templates\account\email.html:46
#: photo21/templates/account/email.html:46
msgid "Make Primary"
msgstr ""
msgstr "Définir comme principal"
#: .\photo21\templates\account\email.html:47
#: photo21/templates/account/email.html:47
msgid "Re-send Verification"
msgstr ""
msgstr "Renvoyer la vérification"
#: .\photo21\templates\account\email.html:48
#: .\photo21\templates\socialaccount\connections.html:47
#: photo21/templates/account/email.html:48
#: photo21/templates/socialaccount/connections.html:47
msgid "Remove"
msgstr ""
msgstr "Supprimer"
#: .\photo21\templates\account\email.html:53
#: photo21/templates/account/email.html:53
msgid "Warning:"
msgstr ""
msgstr "Avertissement :"
#: .\photo21\templates\account\email.html:53
#: photo21/templates/account/email.html:53
msgid ""
"You currently do not have any e-mail address set up. You should really add "
"an e-mail address so you can receive notifications, reset your password, etc."
msgstr ""
"Vous n'avez actuellement aucune adresse e-mail configurée. Vous devriez "
"vraiment en ajouter une pour recevoir des notifications, réinitialiser votre "
"mot de passe, etc."
#: .\photo21\templates\account\email.html:57
#: photo21/templates/account/email.html:57
msgid "Add E-mail Address"
msgstr "Ajouter une Adresse E-mail"
#: .\photo21\templates\account\email.html:62
#: photo21/templates/account/email.html:62
msgid "Add E-mail"
msgstr "Ajouter un E-mail"
#: .\photo21\templates\account\login.html:8
#: .\photo21\templates\account\login.html:36
#: photo21/templates/account/login.html:8
#: photo21/templates/account/login.html:36
msgid "Sign In"
msgstr "Se Connecter"
#: .\photo21\templates\account\login.html:19
#: photo21/templates/account/login.html:19
#, python-format
msgid ""
"Please sign in with one of your existing third party accounts. Or, <a "
@ -168,7 +163,7 @@ msgstr ""
"href=\"%(signup_url)s\">inscrivez-vous</a> pour un compte sur %(site_name)s "
"et identifiez-vous ci-dessous :"
#: .\photo21\templates\account\login.html:26
#: photo21/templates/account/login.html:26
#, python-format
msgid ""
"If you have not created an account yet, then please <a "
@ -177,92 +172,94 @@ msgstr ""
"Si vous n'avez pas déjà créé de compte, veuillez vous <a "
"href=\"%(signup_url)s\">inscrire</a>."
#: .\photo21\templates\account\login.html:39
#: photo21/templates/account/login.html:39
msgid "Forgot Password?"
msgstr "Mot de passe oublié ?"
#: .\photo21\templates\account\login.html:42
#: photo21/templates/account/login.html:42
msgid "If any problem, please contact the server owners at"
msgstr "En cas de problème, contactez les administrateurs à"
#: .\photo21\templates\account\logout.html:8
#: .\photo21\templates\account\logout.html:13
#: .\photo21\templates\account\logout.html:22
#: photo21/templates/account/logout.html:8
#: photo21/templates/account/logout.html:13
#: photo21/templates/account/logout.html:22
msgid "Sign Out"
msgstr "Déconnexion"
#: .\photo21\templates\account\logout.html:16
#: photo21/templates/account/logout.html:16
msgid "Are you sure you want to sign out?"
msgstr ""
msgstr "Êtes-vous sûr de vouloir vous déconnecter ?"
#: .\photo21\templates\account\signup.html:8
#: photo21/templates/account/signup.html:8
msgid "Signup"
msgstr ""
msgstr "Inscription"
#: .\photo21\templates\account\signup.html:13
#: .\photo21\templates\account\signup.html:24
#: photo21/templates/account/signup.html:13
#: photo21/templates/account/signup.html:24
msgid "Sign Up"
msgstr ""
msgstr "S'inscrire"
#: .\photo21\templates\account\signup.html:16
#: photo21/templates/account/signup.html:16
#, python-format
msgid ""
"Already have an account? Then please <a href=\"%(login_url)s\">sign in</a>."
msgstr ""
"Vous avez déjà un compte ? Veuillez alors <a href=\"%(login_url)s\">vous "
"connecter</a>."
#: .\photo21\templates\base.html:16
msgid "The ENS Paris-Saclay pictures server."
msgstr ""
#: photo21/templates/base.html:16
msgid "The ENS Rennes pictures server."
msgstr "Le serveur photos de l'ENS Rennes."
#: .\photo21\templates\base.html:41
#: photo21/templates/base.html:43
msgid "Galleries"
msgstr "Galeries"
#: .\photo21\templates\base.html:46
#: photo21/templates/base.html:48
msgid "Upload"
msgstr "Téléversement"
msgstr "Upload"
#: .\photo21\templates\base.html:51
#: photo21/templates/base.html:53
msgid "Manage"
msgstr "Gestion"
msgstr "Manage"
#: .\photo21\templates\base.html:72
#: photo21/templates/base.html:75
msgid "Log out"
msgstr ""
msgstr "Déconnection"
#: .\photo21\templates\base.html:82
#: photo21/templates/base.html:85
msgid "Log in"
msgstr ""
msgstr "Connection"
#: .\photo21\templates\base.html:91
#: photo21/templates/base.html:94
msgid "Sign up"
msgstr "Inscription"
#: .\photo21\templates\base.html:116
#: photo21/templates/base.html:119
msgid "Connected as"
msgstr "Connecté en tant que"
#: .\photo21\templates\base.html:118
#: photo21/templates/base.html:121
msgid "Source code"
msgstr "Code source"
#: .\photo21\templates\index.html:8
#: photo21/templates/index.html:8
msgid "Home"
msgstr "Accueil"
#: .\photo21\templates\index.html:11
#: photo21/templates/index.html:11
msgid "Welcome to the pictures server!"
msgstr "Bienvenue sur le serveur photos !"
#: .\photo21\templates\index.html:13
#: photo21/templates/index.html:13
msgid ""
"This website aims to collect the pictures and movies taken in the student "
"life of ENS Paris-Saclay or involving its students."
"life of ENS Rennes or involving its students."
msgstr ""
"Ce site à pour objectif de recenser les photos et films pris dans la vie "
"associative de l'ENS Paris-Saclay ou impliquant ses usager·ères."
"Ce site a pour objectif de recenser les photos et films pris dans la vie "
"associative de l'ENS Rennes ou impliquant ses étudiant·es."
#: .\photo21\templates\index.html:20
#: photo21/templates/index.html:20
#, python-format
msgid ""
"The pictures are visible in <a href=\"%(gallery_archive_url)s\">the "
@ -275,73 +272,77 @@ msgstr ""
"photographe et des personnes présentes sur la photo est nécessaire avant "
"toute republication sur un autre site.</b>"
#: .\photo21\templates\index.html:29
msgid ""
"If you want a photo to be deleted, please let us know: <a "
"href=\"mailto:photos@crans.org?subject=[ABUS] Nouvelle requête\" class=\"btn "
"btn-secondary btn-sm\">Abuse request</a>"
msgstr ""
"Si vous souhaitez qu'une photo soit supprimée, signalez le nous : <a "
"href=\"mailto:photos@crans.org?subject=[ABUS] Nouvelle requête\" class=\"btn "
"btn-secondary btn-sm\">Signaler un abus</a>"
#: .\photo21\templates\index.html:36
#: photo21/templates/index.html:30
msgid ""
"If you want to obtain the right to upload pictures, please let us know: <a "
"href=\"mailto:photos@crans.org?subject=[Photographe] Demande de droits "
"href=\"mailto:sinfonie@ens-rennes.fr?subject=[Photographe] Demande de droits "
"photographe\" class=\"btn btn-secondary btn-sm\">Become a photograph</a>"
msgstr ""
"Si vous souhaitez obtenir les droits photographes pour téléverser vos "
"photos, signalez le nous : <a href=\"mailto:photos@crans.org?"
"photos, contactez-nous : <a href=\"mailto:sinfonie@ens-rennes.fr?"
"subject=[Photographe] Demande de droits photographe\" class=\"btn btn-"
"secondary btn-sm\">Devenir photographe</a>"
#: .\photo21\templates\index.html:43
#: photo21/templates/index.html:38
msgid "Last galleries"
msgstr "Galeries récentes"
#: .\photo21\templates\index.html:52
#: photo21/templates/index.html:47
msgid "Behind the scene"
msgstr "Derrière la scène"
msgstr "Behind the scene"
#: .\photo21\templates\index.html:54
#: photo21/templates/index.html:49
msgid ""
"Because we value your privacy, we do not sell the data on this site, unlike "
"many free online platforms. The dedicated server running this website is "
"kindly hosted by the <a href=\"https://www.crans.org/\">Crans</a> at the ENS "
"Paris-Saclay basement. It is not managed by the Crans. Current active "
"administrators are:"
"<!-- This project if a fork of <a href=\"https://gitlab.crans.org/bde/"
"photo21/\">Photo21</a>. --> <!-- Because we value your privacy, we do not "
"sell the data on this site, --> <!-- unlike many free online platforms. --> "
"The dedicated server running this website is kindly hosted by <a "
"href=\"https://sinfonie.org/\">Sinfonie</a> at the ENS Rennes. <!-- Current "
"active administrators are: --> <!--"
msgstr ""
"Comme nous accordons une grande importance au respect de la vie privée, nous "
"ne vendons pas les données de ce site, contrairement à de nombreuses "
"plateformes en ligne gratuites. Le serveur dédié qui fait fonctionner ce "
"site est gentiment hébergé par le <a href=\"https://www.crans.org/\">Crans</"
"a> au sous-sol de l'ENS Paris-Saclay. <b>Il n'est pas géré par le Crans.</b> "
"Les administrateur·trices sont :"
"<!-- Ce projet est un fork de <a href=\"https://gitlab.crans.org/bde/"
"photo21/\">Photo21</a>. --> <!-- Comme nous accordons une grande importance "
"au respect de la vie privée, nous ne vendons pas les données de ce site, --> "
"<!-- contrairement à de nombreuses plateformes en ligne gratuites. --> "
"Le serveur qui fait fonctionner ce site est gentiment hébergé par "
"<a href=\"https://sinfonie.org/\">Sinfonie</a> à l'ENS Rennes. "
"<!-- Les administrateur·trices actuel·les sont : --> <!--"
#: .\photo21\templates\index.html:63
#: photo21/templates/index.html:58
msgid "They should be contacted at"
msgstr "Ils peuvent être contactés à"
#: .\photo21\templates\socialaccount\connections.html:8
#: photo21/templates/socialaccount/connections.html:8
msgid "Account Connections"
msgstr ""
msgstr "Connexions de compte"
#: .\photo21\templates\socialaccount\connections.html:25
#: photo21/templates/socialaccount/connections.html:25
msgid ""
"You can sign in to your account using any of the following third party "
"accounts:"
msgstr ""
"Vous pouvez vous connecter à votre compte en utilisant l'un des comptes "
"tiers suivants :"
#: .\photo21\templates\socialaccount\connections.html:53
#: photo21/templates/socialaccount/connections.html:53
msgid ""
"You currently have no social network accounts connected to this account."
msgstr ""
"Vous n'avez actuellement aucun compte de réseau social connecté à ce compte."
#: .\photo21\templates\socialaccount\connections.html:56
#: photo21/templates/socialaccount/connections.html:56
msgid "Add a 3rd Party Account"
msgstr ""
msgstr "Ajouter un compte tiers"
#: .\photo21\templates\socialaccount\snippets\provider_list.html:20
#: photo21/templates/socialaccount/snippets/provider_list.html:20
msgid "Sign in with"
msgstr "Se Connecter avec"
#~ msgid ""
#~ "If you want a photo to be deleted, please let us know: <a "
#~ "href=\"mailto:photos@crans.org?subject=[ABUS] Nouvelle requête\" "
#~ "class=\"btn btn-secondary btn-sm\">Abuse request</a>"
#~ msgstr ""
#~ "Si vous souhaitez qu'une photo soit supprimée, signalez le nous : <a "
#~ "href=\"mailto:photos@crans.org?subject=[ABUS] Nouvelle requête\" "
#~ "class=\"btn btn-secondary btn-sm\">Signaler un abus</a>"

View file

@ -198,9 +198,7 @@ USE_TZ = True
# Limit available languages to this subset
LANGUAGES = [
("de", _("German")),
("en", _("English")),
("es", _("Spanish")),
("fr", _("French")),
]

View file

@ -2,10 +2,9 @@
// Copyright (C) 2022 Amicale des élèves de l'ENS Paris-Saclay
// SPDX-License-Identifier: GPL-3.0-or-later
// On language selection, submit form
const langSelect = document.getElementsByName("language")[0];
if (langSelect) {
langSelect.addEventListener("change", (e) => {
e.target.form.submit();
document.querySelectorAll('[data-lang]').forEach(btn => {
btn.addEventListener('click', () => {
document.getElementById('lang-input').value = btn.dataset.lang;
document.getElementById('lang-form').submit();
});
}
});

View file

@ -56,6 +56,21 @@ SPDX-License-Identifier: GPL-3.0-or-later
{% endif %}
</ul>
<ul class="navbar-nav">
{% get_available_languages as LANGUAGES %}
<li class="nav-item dropdown">
<button class="btn nav-link dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
{{ LANGUAGE_CODE|upper }}
</button>
<ul class="dropdown-menu dropdown-menu-end">
{% for lang_code, lang_name in LANGUAGES %}
<li>
<button class="dropdown-item{% if lang_code == LANGUAGE_CODE %} active{% endif %}" type="button" data-lang="{{ lang_code }}">
{{ lang_name }}
</button>
</li>
{% endfor %}
</ul>
</li>
{% if request.user.is_authenticated %}
<li class="nav-item">
{% url 'account_email' as url %}
@ -112,26 +127,18 @@ SPDX-License-Identifier: GPL-3.0-or-later
{% endblock %}
</main>
<footer>
<form action="{% url 'set_language' %}" method="post">
{% csrf_token %}
<p class="small text-center text-muted mt-1">
{% if request.user.is_authenticated %}
{% trans "Connected as" %} <code>{{ request.user.username }}</code> &middot;
{% endif %}
<a class="text-reset" href="https://github.com/krek0/photo21">{% trans "Source code" %}</a> &middot;
<!-- <select title="language" name="language" class="lang-select"> -->
<!-- {% get_current_language as LANGUAGE_CODE %} -->
<!-- {% get_available_languages as LANGUAGES %} -->
<!-- {% for lang_code, lang_name in LANGUAGES %} -->
<!-- <option value="{{ lang_code }}" {% if lang_code == LANGUAGE_CODE %}selected{% endif %}> -->
<!-- {{ lang_name }} ({{ lang_code }}) -->
<!-- </option> -->
<!-- {% endfor %} -->
<!-- </select> -->
<noscript><input type="submit"></noscript>
</p>
</form>
<p class="small text-center text-muted mt-1">
{% if request.user.is_authenticated %}
{% trans "Connected as" %} <code>{{ request.user.username }}</code> &middot;
{% endif %}
<a class="text-reset" href="https://git.sinfonie.org/sinfonie/photo26">{% trans "Source code" %}</a>
</p>
</footer>
<form id="lang-form" action="{% url 'set_language' %}" method="post" hidden>
{% csrf_token %}
<input type="hidden" name="language" id="lang-input">
<input type="hidden" name="next" value="{{ request.path }}">
</form>
<script src="{% static "lang-select.js" %}"></script>
<script src="{% static "bootstrap5/js/bootstrap.bundle.min.js" %}"></script>

View file

@ -47,11 +47,11 @@ SPDX-License-Identifier: GPL-3.0-or-later
<h3 class="mt-4">{% trans "Behind the scene" %}</h3>
<p>
{% blocktrans trimmed %}
This project if a fork of <a href="https://gitlab.crans.org/bde/photo21/">Photo21</a>.
Because we value your privacy, we do not sell the data on this site,
unlike many free online platforms.
<!-- The dedicated server running this website is kindly hosted by -->
<!-- <a href="https://sinfonie.org/">Sinfonie</a> at the ENS Rennes. -->
<!-- This project if a fork of <a href="https://gitlab.crans.org/bde/photo21/">Photo21</a>. -->
<!-- Because we value your privacy, we do not sell the data on this site, -->
<!-- unlike many free online platforms. -->
The dedicated server running this website is kindly hosted by
<a href="https://sinfonie.org/">Sinfonie</a> at the ENS Rennes.
<!-- Current active administrators are: -->
<!-- {% endblocktrans %} -->
<!-- {% for user in superusers %} <code>{{ user.username }}</code>{% endfor %}. -->

View file

@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Photologue\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-03-05 15:30+0100\n"
"POT-Creation-Date: 2026-05-03 21:01+0000\n"
"PO-Revision-Date: 2017-12-03 14:47+0000\n"
"Last-Translator: Richard Barran <richard@arbee-design.co.uk>\n"
"Language-Team: French (http://www.transifex.com/richardbarran/django-"
@ -21,24 +21,23 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: .\photologue\admin.py:26 .\photologue\models.py:168
#: .\photologue\models.py:786
#: photologue/admin.py:25 photologue/models.py:168 photologue/models.py:802
msgid "tags"
msgstr "balises"
#: .\photologue\admin.py:63 .\photologue\forms.py:68
#: photologue/admin.py:62 photologue/forms.py:69
msgid "Gallery"
msgstr "Galerie"
#: .\photologue\admin.py:67 .\photologue\models.py:529
#: photologue/admin.py:66 photologue/models.py:542
msgid "owner"
msgstr "propriétaire"
#: .\photologue\forms.py:70
#: photologue/forms.py:71
msgid "-- Create a new gallery --"
msgstr "-- Créer une nouvelle galerie --"
#: .\photologue\forms.py:72
#: photologue/forms.py:73
msgid ""
"Select a gallery to add these images to. Leave this empty to create a new "
"gallery from the supplied title."
@ -46,117 +45,108 @@ msgstr ""
"Sélectionner une galerie à laquelle ajouter ces images. Laisser ce champ "
"vide pour créer une nouvelle galerie à partir du titre indiqué."
#: .\photologue\forms.py:77
#: photologue/forms.py:78
msgid "New gallery title"
msgstr "Titre de la nouvelle galerie"
#: .\photologue\forms.py:82
#: photologue/forms.py:83
msgid "New gallery event start date"
msgstr "Date de début de l'évènement de la nouvelle galerie"
#: .\photologue\forms.py:87
#: photologue/forms.py:89
msgid "New gallery event end date"
msgstr "Date de fin de l'évènement de la nouvelle galerie"
#: .\photologue\forms.py:93
#: photologue/forms.py:96
#, fuzzy
#| msgid "description"
msgid "Description"
msgstr "description"
#: .\photologue\forms.py:98
#: photologue/forms.py:101
msgid "New gallery tags"
msgstr "Balises de la nouvelle galerie"
#: .\photologue\forms.py:101
msgid ""
"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
msgstr ""
#: .\photologue\forms.py:120 .\photologue\templates\photologue\upload.html:8
#: .\photologue\templates\photologue\upload.html:15
#: photologue/forms.py:129 photologue/templates/photologue/upload.html:8
#: photologue/templates/photologue/upload.html:17
msgid "Upload"
msgstr "Télécharger"
#: .\photologue\forms.py:126
msgid "A gallery with that title already exists."
msgstr "Une galerie portant ce nom existe déjà."
#: .\photologue\forms.py:138
#: photologue/forms.py:141
msgid "Select an existing gallery, or enter a title for a new gallery."
msgstr ""
"Sélectionner une galerie existante ou entrer un titre pour une nouvelle "
"galerie."
#: .\photologue\models.py:88
#: photologue/models.py:88
msgid "Very Low"
msgstr "Très Bas"
#: .\photologue\models.py:89
#: photologue/models.py:89
msgid "Low"
msgstr "Bas"
#: .\photologue\models.py:90
#: photologue/models.py:90
msgid "Medium-Low"
msgstr "Moyen-Bas"
#: .\photologue\models.py:91
#: photologue/models.py:91
msgid "Medium"
msgstr "Moyen"
#: .\photologue\models.py:92
#: photologue/models.py:92
msgid "Medium-High"
msgstr "Moyen-Haut"
#: .\photologue\models.py:93
#: photologue/models.py:93
msgid "High"
msgstr "Haut"
#: .\photologue\models.py:94
#: photologue/models.py:94
msgid "Very High"
msgstr "Très Haut"
#: .\photologue\models.py:99
#: photologue/models.py:99
msgid "Top"
msgstr "Sommet"
#: .\photologue\models.py:100
#: photologue/models.py:100
msgid "Right"
msgstr "Droite"
#: .\photologue\models.py:101
#: photologue/models.py:101
msgid "Bottom"
msgstr "Bas"
#: .\photologue\models.py:102
#: photologue/models.py:102
msgid "Left"
msgstr "Gauche"
#: .\photologue\models.py:103
#: photologue/models.py:103
msgid "Center (Default)"
msgstr "Centré (par défaut)"
#: .\photologue\models.py:107
#: photologue/models.py:107
msgid "Flip left to right"
msgstr "Inversion de gauche à droite"
#: .\photologue\models.py:108
#: photologue/models.py:108
msgid "Flip top to bottom"
msgstr "Inversion de haut en bas"
#: .\photologue\models.py:109
#: photologue/models.py:109
msgid "Rotate 90 degrees counter-clockwise"
msgstr "Rotation de 90 degrés dans le sens anti-horloger"
#: .\photologue\models.py:110
#: photologue/models.py:110
msgid "Rotate 90 degrees clockwise"
msgstr "Rotation de 90 degrés dans le sens horloger"
#: .\photologue\models.py:111
#: photologue/models.py:111
msgid "Rotate 180 degrees"
msgstr "Rotation de 180 degrés"
#: .\photologue\models.py:125
#: photologue/models.py:125
#, python-format
msgid ""
"Chain multiple filters using the following pattern \"FILTER_ONE->FILTER_TWO-"
@ -167,116 +157,119 @@ msgstr ""
">FILTRE_DEUX->FILTRE_TROIS\". Les filtres d'image seront appliqués dans "
"l'ordre. Les filtres suivants sont disponibles: %s."
#: .\photologue\models.py:148 .\photologue\models.py:517
#: photologue/models.py:148 photologue/models.py:530
msgid "title"
msgstr "titre"
#: .\photologue\models.py:150
#: photologue/models.py:150
msgid "title slug"
msgstr "version abrégée du titre"
#: .\photologue\models.py:153 .\photologue\models.py:522
#: .\photologue\models.py:780
#: photologue/models.py:153 photologue/models.py:535 photologue/models.py:796
msgid "A \"slug\" is a unique URL-friendly title for an object."
msgstr ""
"Un \"slug\" est un titre abrégé et unique, compatible avec les URL, pour un "
"objet."
#: .\photologue\models.py:157
#: photologue/models.py:157
msgid "start date"
msgstr "date de début"
#: .\photologue\models.py:162
#: photologue/models.py:162
msgid "end date"
msgstr "date de fin"
#: .\photologue\models.py:164
#: photologue/models.py:164
msgid "description"
msgstr "description"
#: .\photologue\models.py:174 .\photologue\models.py:548
#: photologue/models.py:174 photologue/models.py:561
msgid "photos"
msgstr "photos"
#: .\photologue\models.py:181
#: photologue/models.py:178
msgid "public token"
msgstr ""
#: photologue/models.py:188
msgid "gallery"
msgstr "galerie"
#: .\photologue\models.py:182
#: photologue/models.py:189
msgid "galleries"
msgstr "galleries"
#: .\photologue\models.py:214
#: photologue/models.py:221
msgid "count"
msgstr "nombre"
#: .\photologue\models.py:215
#: photologue/models.py:222
msgid "private count"
msgstr "nombre de photos privées"
#: .\photologue\models.py:220
#: photologue/models.py:227
msgid "image"
msgstr "image"
#: .\photologue\models.py:223
#: photologue/models.py:236
msgid "date taken"
msgstr "date de prise de vue"
#: .\photologue\models.py:226
#: photologue/models.py:239
msgid "Date image was taken; is obtained from the image EXIF data."
msgstr ""
"La date à laquelle l'image a été prise ; obtenue à partir des données EXIF "
"de l'image."
#: .\photologue\models.py:228
#: photologue/models.py:241
msgid "view count"
msgstr "nombre"
#: .\photologue\models.py:230
#: photologue/models.py:243
msgid "crop from"
msgstr "découper à partir de"
#: .\photologue\models.py:254
#: photologue/models.py:267
msgid "An \"admin_thumbnail\" photo size has not been defined."
msgstr "Une taille de photo \"admin_thumbnail\" n'a pas encore été définie."
#: .\photologue\models.py:267
#: photologue/models.py:280
msgid "Thumbnail"
msgstr "Miniature"
#: .\photologue\models.py:519 .\photologue\models.py:779
#: photologue/models.py:532 photologue/models.py:795
msgid "slug"
msgstr "libellé court"
#: .\photologue\models.py:524
#: photologue/models.py:537
msgid "caption"
msgstr "légende"
#: .\photologue\models.py:525
#: photologue/models.py:538
msgid "date added"
msgstr "date d'ajout"
#: .\photologue\models.py:534
#: photologue/models.py:547
msgid "license"
msgstr "licence"
#: .\photologue\models.py:537
#: photologue/models.py:550
msgid "is public"
msgstr "est public"
#: .\photologue\models.py:539
#: photologue/models.py:552
msgid "Public photographs will be displayed in the default views."
msgstr "Les photographies publique seront affichées dans les vues par défaut."
#: .\photologue\models.py:547
#: photologue/models.py:560
msgid "photo"
msgstr "photo"
#: .\photologue\models.py:610 .\photologue\models.py:774
#: photologue/models.py:626 photologue/models.py:790
msgid "name"
msgstr "nom"
#: .\photologue\models.py:614
#: photologue/models.py:630
msgid ""
"Photo size name should contain only letters, numbers and underscores. "
"Examples: \"thumbnail\", \"display\", \"small\", \"main_page_widget\"."
@ -285,41 +278,41 @@ msgstr ""
"chiffres et des caractères de soulignement. Exemples: \"miniature\", "
"\"affichage\", \"petit\", \"widget_page_principale\"."
#: .\photologue\models.py:626
#: photologue/models.py:642
msgid "width"
msgstr "largeur"
#: .\photologue\models.py:629
#: photologue/models.py:645
msgid ""
"If width is set to \"0\" the image will be scaled to the supplied height."
msgstr ""
"Si la largeur est réglée à \"0\" l l'image sera redimensionnée par rapport à "
"la hauteur fournie."
#: .\photologue\models.py:633
#: photologue/models.py:649
msgid "height"
msgstr "hauteur"
#: .\photologue\models.py:636
#: photologue/models.py:652
msgid ""
"If height is set to \"0\" the image will be scaled to the supplied width"
msgstr ""
"Si la hauteur est réglée à \"0\" l l'image sera redimensionnée par rapport à "
"la largeur fournie."
#: .\photologue\models.py:640
#: photologue/models.py:656
msgid "quality"
msgstr "qualité"
#: .\photologue\models.py:643
#: photologue/models.py:659
msgid "JPEG image quality."
msgstr "Qualité JPEG de l'image."
#: .\photologue\models.py:646
#: photologue/models.py:662
msgid "upscale images?"
msgstr "agrandir les images ?"
#: .\photologue\models.py:649
#: photologue/models.py:665
msgid ""
"If selected the image will be scaled up if necessary to fit the supplied "
"dimensions. Cropped sizes will be upscaled regardless of this setting."
@ -328,11 +321,11 @@ msgstr ""
"dimensions fournies. Les dimensions ajustées seront agrandies sans prendre "
"en compte ce paramètre."
#: .\photologue\models.py:655
#: photologue/models.py:671
msgid "crop to fit?"
msgstr "découper pour adapter à la taille ?"
#: .\photologue\models.py:658
#: photologue/models.py:674
msgid ""
"If selected the image will be scaled and cropped to fit the supplied "
"dimensions."
@ -340,21 +333,21 @@ msgstr ""
"Si sélectionné l'image sera redimensionnée et recadrée pour coïncider avec "
"les dimensions fournies."
#: .\photologue\models.py:663
#: photologue/models.py:679
msgid "pre-cache?"
msgstr "mise en cache ?"
#: .\photologue\models.py:666
#: photologue/models.py:682
msgid "If selected this photo size will be pre-cached as photos are added."
msgstr ""
"Si sélectionné cette taille de photo sera mise en cache au moment au les "
"photos sont ajoutées."
#: .\photologue\models.py:670
#: photologue/models.py:686
msgid "increment view count?"
msgstr "incrémenter le nombre d'affichages ?"
#: .\photologue\models.py:673
#: photologue/models.py:689
msgid ""
"If selected the image's \"view_count\" will be incremented when this photo "
"size is displayed."
@ -362,79 +355,95 @@ msgstr ""
"Si sélectionné le \"view_count\" (nombre d'affichage) de l'image sera "
"incrémenté quand cette taille de photo sera affichée."
#: .\photologue\models.py:680
#: photologue/models.py:696
msgid "photo size"
msgstr "taille de la photo"
#: .\photologue\models.py:681
#: photologue/models.py:697
msgid "photo sizes"
msgstr "tailles des photos"
#: .\photologue\models.py:699
#: photologue/models.py:715
msgid "Can only crop photos if both width and height dimensions are set."
msgstr ""
"La hauteur et la largeur doivent être toutes les deux définies pour "
"retailler des photos."
#: .\photologue\models.py:785
#: photologue/models.py:801
msgid "tag"
msgstr ""
#: .\photologue\templates\photologue\gallery_archive.html:9
#: photologue/templates/photologue/gallery_archive.html:9
msgid "Latest photo galleries"
msgstr "Dernières galeries de photos"
#: .\photologue\templates\photologue\gallery_archive.html:14
#: .\photologue\templates\photologue\gallery_archive_year.html:14
#: photologue/templates/photologue/gallery_archive.html:14
#: photologue/templates/photologue/gallery_archive_year.html:14
msgid "Filter by year"
msgstr "Filtrer par année"
#: .\photologue\templates\photologue\gallery_archive.html:31
#: photologue/templates/photologue/gallery_archive.html:31
msgid "No galleries were found"
msgstr "Aucune galerie trouvée"
#: .\photologue\templates\photologue\gallery_archive_year.html:9
#: photologue/templates/photologue/gallery_archive_year.html:9
#, python-format
msgid "Galleries for %(show_year)s"
msgstr "Galeries de %(show_year)s"
#: .\photologue\templates\photologue\gallery_archive_year.html:31
#: photologue/templates/photologue/gallery_archive_year.html:31
msgid "No galleries were found."
msgstr "Aucune galerie trouvée."
#: .\photologue\templates\photologue\gallery_detail.html:42
#: photologue/templates/photologue/gallery_detail.html:48
msgid "to"
msgstr "au"
#: .\photologue\templates\photologue\gallery_detail.html:59
#: photologue/templates/photologue/gallery_detail.html:53
msgid "Public link:"
msgstr ""
#: photologue/templates/photologue/gallery_detail.html:55
msgid "Copy"
msgstr ""
#: photologue/templates/photologue/gallery_detail.html:56
msgid "Revoke"
msgstr ""
#: photologue/templates/photologue/gallery_detail.html:59
msgid "Generate public link"
msgstr ""
#: photologue/templates/photologue/gallery_detail.html:78
msgid "All pictures"
msgstr "Toutes les photos"
#: .\photologue\templates\photologue\gallery_detail.html:85
#: photologue/templates/photologue/gallery_detail.html:106
msgid "Download all gallery"
msgstr "Télécharger toute la galerie"
#: .\photologue\templates\photologue\photo_confirm_delete.html:9
#: .\photologue\templates\photologue\photo_confirm_delete.html:14
#: photologue/templates/photologue/photo_confirm_delete.html:9
#: photologue/templates/photologue/photo_confirm_delete.html:14
msgid "Delete confirmation"
msgstr "Confirmation de la suppression"
#: .\photologue\templates\photologue\photo_confirm_delete.html:17
#: photologue/templates/photologue/photo_confirm_delete.html:17
#, python-format
msgid "Are you sure you want to delete <code>%(object)s</code>?"
msgstr "Es tu sure que tu veux supprimer <code>%(object)s</code> ?"
#: .\photologue\templates\photologue\photo_confirm_delete.html:22
#: .\photologue\templates\photologue\photo_confirm_report.html:22
#: photologue/templates/photologue/photo_confirm_delete.html:22
#: photologue/templates/photologue/photo_confirm_report.html:22
msgid "Confirm"
msgstr "Confimer"
#: .\photologue\templates\photologue\photo_confirm_report.html:9
#: .\photologue\templates\photologue\photo_confirm_report.html:14
#: photologue/templates/photologue/photo_confirm_report.html:9
#: photologue/templates/photologue/photo_confirm_report.html:14
msgid "Report confirmation"
msgstr "Raporter la confirmation"
#: .\photologue\templates\photologue\photo_confirm_report.html:17
#: photologue/templates/photologue/photo_confirm_report.html:17
#, python-format
msgid ""
"Are you sure you want to report <code>%(object)s</code>? This photo will no "
@ -443,14 +452,17 @@ msgstr ""
"Es-tu sur de signaler <code>%(object)s</code>? Cette photo ne va plus être "
"publique, et les administrateur vont être notifiés."
#: .\photologue\templates\photologue\photo_detail.html:15
#: photologue/templates/photologue/photo_detail.html:15
msgid "Published"
msgstr "Publiée le"
#: .\photologue\templates\photologue\upload.html:20
#: photologue/templates/photologue/upload.html:22
msgid "Drag and drop photos here"
msgstr "Glissez et déposez les photos ici"
#: .\photologue\templates\photologue\upload.html:24
#: photologue/templates/photologue/upload.html:26
msgid "Owner will be"
msgstr "Le propriétaire sera"
#~ msgid "A gallery with that title already exists."
#~ msgstr "Une galerie portant ce nom existe déjà."