Perplexica/messages/fr-FR.json
wei840222 9a772d6abe feat(i18n): Integrate next-intl, localize core UI, add regional locales and zh-TW Discover sources
**Overview**
- Integrates next-intl (App Router, no i18n routing) with cookie-based locale and Accept-Language fallback.
- Adds message bundles and regional variants; sets en-US as the default.

**Key changes**
- i18n foundation
  - Adds request-scoped config to load messages per locale and injects NextIntlClientProvider in [layout.tsx]
  - Adds/updates messages for: en-US, en-GB, zh-TW, zh-HK, zh-CN, ja, ko, fr-FR, fr-CA, de.
Centralizes LOCALES, LOCALE_LABELS, and DEFAULT_LOCALE in [locales.ts]
  - Adds LocaleSwitcher (cookie-based) and [LocaleBootstrap]

- Pages and components
  - Localizes Sidebar, Home (including metadata/manifest), Settings, Discover, Library.
  - Localizes common components: MessageInput, Attach, Focus, Optimization, MessageBox, MessageSources, SearchImages, SearchVideos, EmptyChat, NewsArticleWidget, WeatherWidget.

- APIs
  - Weather API returns localized condition strings server-side.

- UX and quality
  - Converts all remaining <img> to Next Image.
  - Updates browserslist/caniuse DB to silence warnings.
  - Security: Settings API Key inputs are now password fields and placeholders were removed.
2025-08-16 12:27:18 +08:00

251 lines
7.8 KiB
JSON

{
"metadata": {
"title": "Perplexica - Discuter avec Internet",
"description": "Perplexica est un chatbot IA connecté à Internet."
},
"manifest": {
"name": "Perplexica - Discuter avec Internet",
"shortName": "Perplexica",
"description": "Perplexica est un chatbot IA connecté à Internet."
},
"navigation": {
"home": "Accueil",
"discover": "Découvrir",
"library": "Bibliothèque",
"settings": "Paramètres"
},
"common": {
"appName": "Perplexica",
"exportedOn": "Exporté le :",
"citations": "Citations :",
"user": "Utilisateur",
"assistant": "Assistant",
"errors": {
"noChatModelsAvailable": "Aucun modèle de chat disponible",
"chatProviderNotConfigured": "Aucun fournisseur de modèle de chat n'est configuré. Merci de le configurer depuis la page des paramètres ou le fichier de configuration.",
"noEmbeddingModelsAvailable": "Aucun modèle d'embedding disponible",
"cannotSendBeforeConfigReady": "Impossible d'envoyer un message avant la fin de la configuration",
"failedToDeleteChat": "Échec de la suppression du chat"
}
},
"navbar": {
"exportAsMarkdown": "Exporter en Markdown",
"exportAsPDF": "Exporter en PDF"
},
"export": {
"chatExportTitle": "Export de conversation : {title}"
},
"weather": {
"conditions": {
"clear": "Dégagé",
"mainlyClear": "Plutôt dégagé",
"partlyCloudy": "Partiellement nuageux",
"cloudy": "Nuageux",
"fog": "Brouillard",
"lightDrizzle": "Bruine faible",
"moderateDrizzle": "Bruine modérée",
"denseDrizzle": "Bruine forte",
"lightFreezingDrizzle": "Bruine verglaçante faible",
"denseFreezingDrizzle": "Bruine verglaçante forte",
"slightRain": "Pluie faible",
"moderateRain": "Pluie modérée",
"heavyRain": "Pluie forte",
"lightFreezingRain": "Pluie verglaçante faible",
"heavyFreezingRain": "Pluie verglaçante forte",
"slightSnowFall": "Neige faible",
"moderateSnowFall": "Neige modérée",
"heavySnowFall": "Fortes chutes de neige",
"snow": "Chute de neige",
"slightRainShowers": "Averses faibles",
"moderateRainShowers": "Averses",
"heavyRainShowers": "Fortes averses",
"slightSnowShowers": "Averses de neige faibles",
"moderateSnowShowers": "Averses de neige",
"heavySnowShowers": "Fortes averses de neige",
"thunderstorm": "Orage",
"thunderstormSlightHail": "Orage avec petites grêles",
"thunderstormHeavyHail": "Orage avec fortes grêles"
}
},
"pages": {
"home": {
"title": "Chat - Perplexica",
"description": "Discutez avec Internet, discutez avec Perplexica."
},
"discover": {
"title": "Découvrir",
"topics": {
"tech": "Tech et science",
"finance": "Finance",
"art": "Art et culture",
"sports": "Sports",
"entertainment": "Divertissement"
},
"errorFetchingData": "Erreur lors de la récupération des données"
},
"library": {
"title": "Bibliothèque",
"empty": "Aucune conversation trouvée.",
"ago": "Il y a {time}"
},
"settings": {
"title": "Paramètres",
"sections": {
"preferences": "Préférences",
"automaticSearch": "Recherche automatique",
"systemInstructions": "Instructions système",
"modelSettings": "Paramètres du modèle",
"apiKeys": "Clés API"
},
"preferences": {
"theme": "Thème",
"measurementUnits": "Unités de mesure",
"language": "Langue",
"metric": "Métrique",
"imperial": "Impérial"
},
"automaticSearch": {
"image": {
"title": "Recherche d'images automatique",
"desc": "Rechercher automatiquement des images pertinentes dans les réponses du chat"
},
"video": {
"title": "Recherche de vidéos automatique",
"desc": "Rechercher automatiquement des vidéos pertinentes dans les réponses du chat"
}
},
"model": {
"chatProvider": "Fournisseur du modèle de chat",
"chat": "Modèle de chat",
"noModels": "Aucun modèle disponible",
"invalidProvider": "Fournisseur invalide, veuillez vérifier les logs backend",
"custom": {
"modelName": "Nom du modèle",
"apiKey": "Clé API OpenAI personnalisée",
"baseUrl": "URL de base OpenAI personnalisée"
}
},
"embedding": {
"provider": "Fournisseur du modèle d'embedding",
"model": "Modèle d'embedding"
},
"api": {
"openaiApiKey": "Clé API OpenAI",
"ollamaApiUrl": "URL de l'API Ollama",
"groqApiKey": "Clé API GROQ",
"anthropicApiKey": "Clé API Anthropic",
"geminiApiKey": "Clé API Gemini",
"deepseekApiKey": "Clé API Deepseek",
"aimlApiKey": "Clé API AI/ML",
"lmStudioApiUrl": "URL de l'API LM Studio"
},
"systemInstructions": {
"placeholder": "Toute instruction spécifique pour le LLM"
}
}
},
"components": {
"common": {
"viewMore": "Voir {count} de plus"
},
"messageInput": {
"placeholder": "Poser une question de suivi"
},
"messageBox": {
"sources": "Sources",
"answer": "Réponse",
"related": "Connexe"
},
"copilot": {
"label": "Copilot"
},
"attach": {
"attachedFiles": "Fichiers joints",
"add": "Ajouter",
"clear": "Effacer",
"attach": "Joindre",
"uploading": "Téléversement...",
"files": "{count} fichiers"
},
"focus": {
"button": "Focus",
"modes": {
"webSearch": {
"title": "Tous",
"description": "Recherche sur tout Internet"
},
"academicSearch": {
"title": "Académique",
"description": "Recherche dans des articles académiques publiés"
},
"writingAssistant": {
"title": "Rédaction",
"description": "Discuter sans rechercher sur le web"
},
"wolframAlphaSearch": {
"title": "Wolfram Alpha",
"description": "Moteur de connaissance computationnelle"
},
"youtubeSearch": {
"title": "YouTube",
"description": "Rechercher et regarder des vidéos"
},
"redditSearch": {
"title": "Reddit",
"description": "Rechercher des discussions et des opinions"
}
}
},
"optimization": {
"modes": {
"speed": {
"title": "Vitesse",
"description": "Prioriser la vitesse pour obtenir la réponse la plus rapide"
},
"balanced": {
"title": "Équilibré",
"description": "Trouver un équilibre entre vitesse et précision"
},
"quality": {
"title": "Qualité (bientôt)",
"description": "Obtenir la réponse la plus complète et la plus précise"
}
}
},
"messageActions": {
"rewrite": "Réécrire"
},
"searchImages": {
"searchButton": "Rechercher des images"
},
"searchVideos": {
"searchButton": "Rechercher des vidéos",
"badge": "Vidéo"
},
"weather": {
"humidity": "Humidité",
"now": "Maintenant"
},
"newsArticleWidget": {
"error": "Impossible de charger les actualités."
},
"emptyChat": {
"title": "La recherche commence ici."
},
"emptyChatMessageInput": {
"placeholder": "Demandez-moi n'importe quoi..."
},
"deleteChat": {
"title": "Confirmation de suppression",
"description": "Êtes-vous sûr de vouloir supprimer cette conversation ?",
"cancel": "Annuler",
"delete": "Supprimer"
},
"themeSwitcher": {
"options": {
"light": "Clair",
"dark": "Sombre"
}
}
}
}