Implement en/fr localization across admin and user UIs

Introduce client-side localization helper and en/fr locale bundles.

Route admin control, picks, movies, stats, winners and settings UIs through i18n keys instead of hardcoded text.

Remove French text from the English UI and standardize shared messages (saving, network errors, confirmations).

Update .gitignore to ignore editor metadata and localization helper artifacts.
This commit is contained in:
Mathieu Moran
2026-02-01 20:20:02 -05:00
parent dd313f8f5e
commit 4308d6babf
31 changed files with 3063 additions and 811 deletions
+29
View File
@@ -399,6 +399,35 @@ footer {
border-color: rgba(0, 0, 0, 0.14);
}
/* Smooth navbar transition while i18n loads
- Keep navbar visible but subtly blurred/faded to avoid abrupt disappearance.
- Make elements non-interactive until translations are applied. */
body:not(.i18n-ready) nav.navbar,
body:not(.i18n-ready) .navbar,
body:not(.i18n-ready) .navbar .navbar-brand,
body:not(.i18n-ready) .navbar .nav-link,
body:not(.i18n-ready) .navbar .navbar-text,
body:not(.i18n-ready) .navbar .btn {
transition: filter 220ms ease, opacity 220ms ease, transform 220ms ease;
filter: blur(6px) saturate(0.9) grayscale(0.06);
opacity: 0.85;
transform: translateY(-2px);
pointer-events: none;
}
/* When translations are ready, restore full clarity and interactivity */
body.i18n-ready nav.navbar,
body.i18n-ready .navbar,
body.i18n-ready .navbar .navbar-brand,
body.i18n-ready .navbar .nav-link,
body.i18n-ready .navbar .navbar-text,
body.i18n-ready .navbar .btn {
filter: none;
opacity: 1;
transform: translateY(0);
pointer-events: auto;
}
.stats-movie-poster {
width: 56px;
height: 84px;