OPS-010, suite. 76 gestionnaires en ligne -> 52, dans 5 gabarits au lieu de
15. Le cliquet de tests/test_csp.py est abaisse en consequence.
Six motifs recurrents, generalises dans main.js plutot que traites un a un
data-action clic, resolu par un ecouteur delegue
data-change changement -- attribut distinct du clic, sans quoi un
<select> declencherait son gestionnaire des le clic
qui l'ouvre
data-confirm confirmation avant un envoi destructeur, en
remplacement de onsubmit="return confirm(...)". Le
texte reste dans le markup, donc traduisible.
data-navigate navigation sur selection, {value} etant encode
remove-element suppression d'un ancetre designe par data-remove
history-back retour arriere
registerActions()
Les fonctions propres a une page vivent dans son bloc de script et ne
peuvent donc pas figurer dans la table globale. Chaque page declare les
siennes, l'ecouteur delegue reste unique.
Cas particulier, coach_availability
Le gestionnaire y etait construit dans une chaine JavaScript, au moment
de generer la grille de creneaux. Le markup portait deja data-day et
data-time : toggleSlot lit desormais ses arguments depuis l'element, ce
qui supprime a la fois l'attribut en ligne et la concatenation.
Gabarits migres : my_teams, register, users, view_user, one_on_one,
coach_availability, profile, team_matches, notes, contracts.
Restent, par ordre decroissant : match_form 13, calendar 11, teams 11,
evaluate_player 9, view_tryout 8.
Syntaxe JavaScript de chaque bloc modifie verifiee par node --check.
A noter : la traduction de ces dix gabarits reste a faire. Seules les deux
chaines devenues visibles dans le markup au cours de cette migration -- les
messages de confirmation de suppression -- sont balisees et traduites.
192 tests.
Co-Authored-By: Claude Opus 5 <[email protected]>
328 lines
8.5 KiB
Gettext
328 lines
8.5 KiB
Gettext
# English translations for team-tryouts.
|
|
# Copyright (C) 2026 UdeS Esports
|
|
# This file is distributed under the same license as the team-tryouts
|
|
# project.
|
|
# FIRST AUTHOR <EMAIL@ADDRESS>, 2026.
|
|
#
|
|
msgid ""
|
|
msgstr ""
|
|
"Project-Id-Version: team-tryouts VERSION\n"
|
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
|
"POT-Creation-Date: 2026-08-07 20:50-0400\n"
|
|
"PO-Revision-Date: 2026-08-07 20:22-0400\n"
|
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
|
"Language: en\n"
|
|
"Language-Team: UdeS Esports\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.18.0\n"
|
|
|
|
#: app/routes/auth.py:141
|
|
#, python-format
|
|
msgid ""
|
|
"Account is locked due to too many failed attempts. Please try again in %(remaining)s "
|
|
"minute(s)."
|
|
msgstr ""
|
|
"Account is locked due to too many failed attempts. Please try again in %(remaining)s "
|
|
"minute(s)."
|
|
|
|
#: app/routes/auth.py:151
|
|
msgid "This account has been deactivated."
|
|
msgstr "This account has been deactivated."
|
|
|
|
#: app/routes/auth.py:179
|
|
#, python-format
|
|
msgid "Welcome back, %(username)s!"
|
|
msgstr "Welcome back, %(username)s!"
|
|
|
|
#: app/routes/auth.py:192
|
|
#, python-format
|
|
msgid ""
|
|
"Account locked after %(attempts)s failed attempts. Please try again in %(minutes)s "
|
|
"minutes."
|
|
msgstr ""
|
|
"Account locked after %(attempts)s failed attempts. Please try again in %(minutes)s "
|
|
"minutes."
|
|
|
|
#: app/routes/auth.py:201
|
|
#, python-format
|
|
msgid "Login unsuccessful. %(remaining)s attempt(s) remaining before lockout."
|
|
msgstr "Login unsuccessful. %(remaining)s attempt(s) remaining before lockout."
|
|
|
|
#: app/routes/auth.py:208
|
|
msgid "Login unsuccessful. Please check username and password."
|
|
msgstr "Login unsuccessful. Please check username and password."
|
|
|
|
#: app/routes/auth.py:239
|
|
msgid "Incorrect CAPTCHA answer. Please try again."
|
|
msgstr "Incorrect CAPTCHA answer. Please try again."
|
|
|
|
#: app/routes/auth.py:281
|
|
msgid "Username already exists."
|
|
msgstr "Username already exists."
|
|
|
|
#: app/routes/auth.py:293
|
|
msgid "Email already registered."
|
|
msgstr "Email already registered."
|
|
|
|
#: app/routes/auth.py:339
|
|
msgid "Your account has been created! You can now log in."
|
|
msgstr "Your account has been created! You can now log in."
|
|
|
|
#: app/routes/auth.py:365
|
|
msgid "Discord OAuth2 is not configured."
|
|
msgstr "Discord OAuth2 is not configured."
|
|
|
|
#: app/routes/auth.py:405
|
|
msgid ""
|
|
"Discord authorization could not be verified. Please start the connection again from "
|
|
"this page."
|
|
msgstr ""
|
|
"Discord authorization could not be verified. Please start the connection again from "
|
|
"this page."
|
|
|
|
#: app/routes/auth.py:413
|
|
msgid "Discord authorization failed. No code received."
|
|
msgstr "Discord authorization failed. No code received."
|
|
|
|
#: app/routes/auth.py:437
|
|
msgid "Failed to connect to Discord. Please try again."
|
|
msgstr "Failed to connect to Discord. Please try again."
|
|
|
|
#: app/routes/auth.py:441
|
|
msgid "Failed to obtain Discord access token."
|
|
msgstr "Failed to obtain Discord access token."
|
|
|
|
#: app/routes/auth.py:456
|
|
msgid "Failed to fetch Discord user profile."
|
|
msgstr "Failed to fetch Discord user profile."
|
|
|
|
#: app/routes/auth.py:503
|
|
msgid "Discord account connected! Your profile has been pre-filled."
|
|
msgstr "Discord account connected! Your profile has been pre-filled."
|
|
|
|
#: app/routes/auth.py:521
|
|
msgid "You have been logged out."
|
|
msgstr "You have been logged out."
|
|
|
|
#: app/templates/errors/400.html:2
|
|
msgid "400 Bad Request"
|
|
msgstr "400 Bad Request"
|
|
|
|
#: app/templates/errors/400.html:3
|
|
msgid "Bad Request"
|
|
msgstr "Bad Request"
|
|
|
|
#: app/templates/errors/400.html:9
|
|
msgid "400 — Bad Request"
|
|
msgstr "400 — Bad Request"
|
|
|
|
#: app/templates/errors/400.html:10
|
|
msgid ""
|
|
"The request could not be understood by the server. Please check your input and try "
|
|
"again."
|
|
msgstr ""
|
|
"The request could not be understood by the server. Please check your input and try "
|
|
"again."
|
|
|
|
#: app/templates/errors/400.html:12 app/templates/errors/403.html:12
|
|
#: app/templates/errors/429.html:12
|
|
msgid "Go Back"
|
|
msgstr "Go Back"
|
|
|
|
#: app/templates/errors/403.html:2
|
|
msgid "403 Forbidden"
|
|
msgstr "403 Forbidden"
|
|
|
|
#: app/templates/errors/403.html:3
|
|
msgid "Access Denied"
|
|
msgstr "Access Denied"
|
|
|
|
#: app/templates/errors/403.html:9
|
|
msgid "403 — Forbidden"
|
|
msgstr "403 — Forbidden"
|
|
|
|
#: app/templates/errors/403.html:10
|
|
msgid ""
|
|
"You do not have permission to access this resource. If you believe this is an error, "
|
|
"please contact an administrator."
|
|
msgstr ""
|
|
"You do not have permission to access this resource. If you believe this is an error, "
|
|
"please contact an administrator."
|
|
|
|
#: app/templates/errors/404.html:2
|
|
msgid "404 Not Found"
|
|
msgstr "404 Not Found"
|
|
|
|
#: app/templates/errors/404.html:3
|
|
msgid "Page Not Found"
|
|
msgstr "Page Not Found"
|
|
|
|
#: app/templates/errors/404.html:9
|
|
msgid "404 — Not Found"
|
|
msgstr "404 — Not Found"
|
|
|
|
#: app/templates/errors/404.html:10
|
|
msgid "The page you are looking for does not exist. It may have been moved or deleted."
|
|
msgstr "The page you are looking for does not exist. It may have been moved or deleted."
|
|
|
|
#: app/templates/errors/404.html:12
|
|
msgid "Return Home"
|
|
msgstr "Return Home"
|
|
|
|
#: app/templates/errors/429.html:2
|
|
msgid "429 Too Many Requests"
|
|
msgstr "429 Too Many Requests"
|
|
|
|
#: app/templates/errors/429.html:3
|
|
msgid "Rate Limit Exceeded"
|
|
msgstr "Rate Limit Exceeded"
|
|
|
|
#: app/templates/errors/429.html:9
|
|
msgid "429 — Too Many Requests"
|
|
msgstr "429 — Too Many Requests"
|
|
|
|
#: app/templates/errors/429.html:10
|
|
msgid "You have sent too many requests in a short period. Please wait a moment and try again."
|
|
msgstr "You have sent too many requests in a short period. Please wait a moment and try again."
|
|
|
|
#: app/templates/errors/500.html:2
|
|
msgid "500 Server Error"
|
|
msgstr "500 Server Error"
|
|
|
|
#: app/templates/errors/500.html:3
|
|
msgid "Internal Server Error"
|
|
msgstr "Internal Server Error"
|
|
|
|
#: app/templates/errors/500.html:9
|
|
msgid "500 — Internal Server Error"
|
|
msgstr "500 — Internal Server Error"
|
|
|
|
#: app/templates/errors/500.html:10
|
|
msgid ""
|
|
"Something went wrong on our end. The error has been logged and will be investigated. "
|
|
"Please try again later."
|
|
msgstr ""
|
|
"Something went wrong on our end. The error has been logged and will be investigated. "
|
|
"Please try again later."
|
|
|
|
#: app/templates/errors/500.html:12
|
|
msgid "Try Again"
|
|
msgstr "Try Again"
|
|
|
|
#: app/templates/layouts/_language_switcher.html:10
|
|
msgid "Language"
|
|
msgstr "Language"
|
|
|
|
#: app/templates/layouts/base.html:33 app/templates/layouts/base.html:133
|
|
msgid "Dashboard"
|
|
msgstr "Dashboard"
|
|
|
|
#: app/templates/layouts/base.html:39
|
|
msgid "Tryouts"
|
|
msgstr "Tryouts"
|
|
|
|
#: app/templates/layouts/base.html:45
|
|
msgid "Calendar"
|
|
msgstr "Calendar"
|
|
|
|
#: app/templates/layouts/base.html:52
|
|
msgid "Evaluations"
|
|
msgstr "Evaluations"
|
|
|
|
#: app/templates/layouts/base.html:60
|
|
msgid "My Team(s)"
|
|
msgstr "My Team(s)"
|
|
|
|
#: app/templates/layouts/base.html:67
|
|
msgid "Manage Teams"
|
|
msgstr "Manage Teams"
|
|
|
|
#: app/templates/layouts/base.html:75
|
|
msgid "Manage Users"
|
|
msgstr "Manage Users"
|
|
|
|
#: app/templates/layouts/base.html:83
|
|
msgid "My Notes"
|
|
msgstr "My Notes"
|
|
|
|
#: app/templates/layouts/base.html:91
|
|
msgid "Availability"
|
|
msgstr "Availability"
|
|
|
|
#: app/templates/layouts/base.html:97
|
|
msgid "Notes & One on One"
|
|
msgstr "Notes & One on One"
|
|
|
|
#: app/templates/layouts/base.html:104
|
|
msgid "Contracts"
|
|
msgstr "Contracts"
|
|
|
|
#: app/templates/layouts/base.html:111
|
|
msgid "My Profile"
|
|
msgstr "My Profile"
|
|
|
|
#: app/templates/layouts/base.html:117
|
|
msgid "Logout"
|
|
msgstr "Logout"
|
|
|
|
#: app/templates/layouts/base.html:137
|
|
msgid "Toggle dark mode"
|
|
msgstr "Toggle dark mode"
|
|
|
|
#: app/templates/layouts/base.html:149 app/templates/layouts/base.html:168
|
|
msgid "Dismiss"
|
|
msgstr "Dismiss"
|
|
|
|
#: app/templates/layouts/base.html:178
|
|
msgid "Team Tryout Management System"
|
|
msgstr "Team Tryout Management System"
|
|
|
|
#: app/templates/layouts/macros.html:116
|
|
msgid "Close"
|
|
msgstr "Close"
|
|
|
|
#: app/templates/pages/login.html:2
|
|
msgid "Login"
|
|
msgstr "Login"
|
|
|
|
#: app/templates/pages/login.html:7
|
|
msgid "Username"
|
|
msgstr "Username"
|
|
|
|
#: app/templates/pages/login.html:8
|
|
msgid "Enter your username"
|
|
msgstr "Enter your username"
|
|
|
|
#: app/templates/pages/login.html:11
|
|
msgid "Password"
|
|
msgstr "Password"
|
|
|
|
#: app/templates/pages/login.html:12
|
|
msgid "Enter your password"
|
|
msgstr "Enter your password"
|
|
|
|
#: app/templates/pages/login.html:14
|
|
msgid "Sign In"
|
|
msgstr "Sign In"
|
|
|
|
#: app/templates/pages/login.html:15
|
|
msgid "Don't have an account?"
|
|
msgstr "Don't have an account?"
|
|
|
|
#: app/templates/pages/login.html:15
|
|
msgid "Register here"
|
|
msgstr "Register here"
|
|
|
|
#: app/templates/pages/team_matches.html:100
|
|
msgid "Delete this match?"
|
|
msgstr "Delete this match?"
|
|
|
|
#: app/templates/pages/users.html:53
|
|
#, python-format
|
|
msgid "Delete %(name)s? This cannot be undone."
|
|
msgstr "Delete %(name)s? This cannot be undone."
|
|
|