From 05d34811d38e80ef82fd054c6a6693abb114aa5e Mon Sep 17 00:00:00 2001 From: Pihkaal Date: Thu, 26 Feb 2026 19:44:43 +0100 Subject: [PATCH] feat(i18): detect browser language and add French --- i18n/locales/fr.json | 213 ++++++++++++++++++++++++++++++++++++++++++- nuxt.config.ts | 7 +- 2 files changed, 217 insertions(+), 3 deletions(-) diff --git a/i18n/locales/fr.json b/i18n/locales/fr.json index 0967ef4..e898c62 100644 --- a/i18n/locales/fr.json +++ b/i18n/locales/fr.json @@ -1 +1,212 @@ -{} +{ + "lagModal": { + "title": "Problèmes de performances détectés", + "body": "Votre appareil semble avoir du mal avec le rendu 3D. Passez en mode 2D pour une expérience plus fluide.", + "keep3d": "Garder la 3D", + "switch2d": "Passer en 2D" + }, + "common": { + "cancel": "Annuler", + "confirm": "Confirmer", + "quit": "Quitter", + "start": "Démarrer", + "restart": "Relancer", + "reset": "Réinitialiser", + "select": "Sélectionner", + "goBack": "Retour", + "yes": "Oui", + "no": "Non" + }, + "achievementsScreen": { + "title": "Succès" + }, + "creditsScreen": { + "title": "Crédits", + "model3d": { + "label": "Modèle 3D par", + "author": "Cianon", + "url": "skfb.ly/6ZDvQ - CC BY 4.0" + }, + "css2d": { + "label": "CSS 2D par", + "author": "A. Radevich", + "url": "codepen.io/aradevich/pen/mdRYzyJ" + }, + "nintendo": { + "label": "UI & effets sonores par", + "author": "Nintendo", + "url": "nintendo.com - © Nintendo" + }, + "defectds": { + "label": "Sons système NDS extraits par", + "author": "defectDS", + "url": "adiumxtras.com" + } + }, + "achievements": { + "boot": "Démarrer le système", + "projects_visit": "Visiter la section\nProjets", + "projects_view_5": "Voir 5 projets", + "projects_open_link": "Ouvrir un lien\nde projet", + "gallery_visit": "Visiter la galerie\nphoto", + "contact_visit": "Visiter la section\nContact", + "contact_git_visit": "Visiter mon profil Git", + "settings_color_change": "Changer la couleur\ndu système", + "snake_score_25": "Marquer 25 points\nà Snake", + "2048_score_512": "Atteindre la tuile 512\nà 2048", + "taptap_score_20": "Marquer 20 points\nà TapTap", + "settings_color_try_all": "Essayer toutes les couleurs", + "settings_language_try_all": "Essayer toutes les langues", + "settings_visit_all": "Visiter tous les\nparamètres", + "contact_36_notifications": "Déclencher 36\nnotifications" + }, + "intro": { + "copyright": "AVERTISSEMENT - COPYRIGHT", + "text": "CECI EST UNE RECRÉATION NON COMMERCIALE\nFAITE PAR UN FAN. NON AFFILIÉ NI\nAPPROUVÉ PAR NINTENDO.\nNINTENDO DS EST UNE MARQUE DÉPOSÉE\nDE NINTENDO CO., LTD.", + "hint": "Touchez l'écran tactile pour continuer." + }, + "home": { + "projectsAndExperiences": "Projets et\nExpériences", + "greeting": "Bienvenue sur mon site !", + "photoGallery": "Galerie Photo" + }, + "settings": { + "title": "Paramètres", + "description": "Changer les paramètres. Choisissez\nle paramètre à modifier.", + "options": { + "title": "Options", + "description": "Changer d'autres paramètres.", + "renderingMode": { + "title": "Rendu", + "description": "Changer le mode de rendu\nentre 2D et 3D.", + "3dMode": "Mode 3D", + "2dMode": "Mode 2D", + "3dDescription": "Expérience 3D complète avec\nle modèle interactif.\nIdéal pour les appareils puissants.", + "2dDescription": "Expérience légère et épurée.\nPlus rapide et moins demandante.\nRecommandé si le mode 3D rame.", + "confirmation3d": "Mode de rendu réglé sur 3D", + "confirmation2d": "Mode de rendu réglé sur 2D" + }, + "language": { + "title": "Langue", + "description": "Sélectionner la langue que\nvous voulez utiliser.", + "confirmation": "La langue est réglée sur Français." + }, + "2048": { + "title": "2048", + "description": "Glissez ou utilisez les flèches\npour fusionner les tuiles.\nAtteignez 2048 !", + "quitConfirmation": "Quitter la partie ?\nVotre score est sauvegardé.", + "restartConfirmation": "Recommencer la partie ?", + "gameOver": "Perdu !\nRecommencer ?", + "score": "Score", + "highScore": "Meilleur" + } + }, + "clock": { + "title": "Horloge", + "description": "Changer la date, l'heure et les\nparamètres de succès.", + "achievements": { + "title": "Succès", + "description": "Gérer vos succès.", + "resetButton": "Réinitialiser les succès", + "resetConfirmation": "Réinitialiser tous les succès ?", + "viewAll": "Tout voir", + "obtained": "Obtenus", + "total": "Total" + }, + "date": { + "title": "Date", + "description": "Date d'aujourd'hui.", + "month": "Mois", + "day": "Jour", + "year": "Année" + }, + "time": { + "title": "Heure", + "description": "Heure actuelle.", + "hour": "Heure", + "minute": "Minute" + } + }, + "user": { + "title": "Utilisateur", + "description": "Saisir les informations utilisateur.", + "color": { + "title": "Couleur", + "description": "Sélectionnez votre\ncouleur favorite.", + "confirmation": "La couleur a été sauvegardée." + }, + "birthday": { + "title": "Anniversaire", + "description": "Ma date d'anniversaire.", + "month": "Mois", + "day": "Jour", + "year": "Année", + "confirmation": { + "today": "Oui, c'est aujourd'hui !", + "future": "N'oubliez pas de me le\nsouhaiter dans {days} jours !" + } + }, + "userName": { + "title": "Nom d'utilisateur", + "description": "Mon pseudo et mon prénom.", + "userName": "Nom d'utilisateur", + "firstName": "Prénom" + }, + "snake": { + "title": "Snake", + "description": "Glissez ou utilisez les flèches\npour vous déplacer.\nNe vous mordez pas la queue !", + "score": "Score : {score}", + "best": "Meilleur : {best}", + "startPrompt": "\n\n\n Appuyez sur icon_a\n pour démarrer", + "quitConfirmation": "Quitter la partie ?", + "restartConfirmation": "Recommencer la partie ?" + } + }, + "touchScreen": { + "title": "Écran Tactile", + "description": "Calibrage et jeux de l'écran tactile.", + "tapTap": { + "title": "TapTap", + "description": "Tapez les cercles avant qu'ils\nne disparaissent !", + "startPrompt": "Appuyez sur icon_a pour démarrer.", + "score": "Score : {score}", + "best": "Meilleur : {best}", + "gameOver": "Partie terminée !", + "finalScore": "Score final : {score}", + "newRecord": "Nouveau record !", + "quitConfirmation": "Quitter la partie ?", + "restartConfirmation": "Recommencer la partie ?" + } + } + }, + "contact": { + "title": "Choisissez un salon de discussion.", + "actions": { + "open": "Ouvrir", + "copy": "Copier", + "git": "Page Git", + "email": "E-mail", + "linkedin": "Lien LinkedIn", + "cv": "CV" + }, + "copiedToClipboard": "{item} copié dans le presse-papiers", + "openUrl": "Ouvrir {url} ?", + "opened": "{item} ouvert" + }, + "gallery": { + "title": "Galerie de Pihkaal", + "description": "J'ai débuté en mars 2025. J'adore photographier les plantes, les insectes et les arachnides.", + "backToHome": "Retour à l'accueil" + }, + "projects": { + "linkConfirmationPopup": { + "yes": "oui", + "no": "non", + "text": "Ouvrir {url} ?" + } + }, + "loadingScreen": { + "loading": "Chargement...", + "clickToStart": "Cliquez pour démarrer" + } +} diff --git a/nuxt.config.ts b/nuxt.config.ts index 425087f..23febf5 100644 --- a/nuxt.config.ts +++ b/nuxt.config.ts @@ -99,8 +99,11 @@ export default defineNuxtConfig({ { code: "ja", language: "ja-JP", name: "日本語", file: "ja.json" }, ], defaultLocale: "en", - // TODO: put back to true - detectBrowserLanguage: false, + detectBrowserLanguage: { + useCookie: true, + cookieKey: "i18n_redirected", + redirectOn: "root", + }, }, image: { quality: 80,