Files
SnapOtter/packages/shared/src/i18n/fr.ts
T

2147 lines
80 KiB
TypeScript

import type { TranslationKeys } from "./en.js";
export const fr: TranslationKeys = {
common: {
upload: "Importer depuis l'ordinateur",
process: "Traiter",
download: "Telecharger",
cancel: "Annuler",
save: "Enregistrer",
delete: "Supprimer",
settings: "Parametres",
search: "Rechercher des outils...",
dropFiles: "Deposez des fichiers ici ou cliquez sur le bouton d'import",
loading: "Chargement...",
error: "Une erreur est survenue",
confirm: "Confirmer",
close: "Fermer",
back: "Retour",
next: "Suivant",
clear: "Effacer",
copy: "Copier",
copied: "Copie !",
noResults: "Aucun resultat trouve",
showLess: "Afficher moins",
showMore: "Afficher {count} de plus",
experimental: "Experimental",
enabled: "Active",
disabled: "Desactive",
rename: "Renommer",
edit: "Modifier",
actions: "Actions",
create: "Creer",
or: "ou",
goHome: "Retour a l'accueil",
somethingWentWrong: "Quelque chose s'est mal passe",
unexpectedError: "Une erreur inattendue est survenue.",
retry: "Réessayer",
privacyPolicy: "Politique de confidentialite",
pageNotFound: "Page not found",
pageNotFoundDescription: "The page you are looking for does not exist or has been moved.",
},
categories: {
essentials: "Essentiels",
optimization: "Optimisation",
adjustments: "Reglages",
watermark: "Filigrane et superposition",
utilities: "Utilitaires",
layout: "Mise en page et composition",
format: "Format et conversion",
ai: "Outils AI",
},
tools: {
resize: {
name: "Redimensionner",
description: "Redimensionnez par pixels, pourcentage ou presets pour reseaux sociaux",
},
crop: {
name: "Recadrer",
description: "Recadrage libre, presets de ratio, recadrage par forme",
},
rotate: {
name: "Rotation et miroir",
description: "Rotation, miroir et redressement d'images",
},
convert: { name: "Convertir", description: "Convertissez entre formats d'image" },
compress: {
name: "Compresser",
description: "Reduisez la taille du fichier par qualite ou taille cible",
},
"optimize-for-web": {
name: "Optimiser pour le web",
description:
"Optimisez les images pour le web avec conversion de format, controle de qualite et apercu en direct",
},
"strip-metadata": {
name: "Supprimer les metadonnees",
description: "Supprimez EXIF, GPS et informations de l'appareil photo",
},
"edit-metadata": {
name: "Modifier les metadonnees",
description: "Modifiez EXIF, IPTC, XMP, GPS, mots-cles et dates",
},
"bulk-rename": {
name: "Renommage par lot",
description: "Renommez plusieurs fichiers avec des motifs",
},
"image-to-pdf": {
name: "Image vers PDF",
description: "Combinez des images dans un document PDF",
},
"pdf-to-image": {
name: "PDF vers image",
description: "Convertissez des pages PDF en images",
},
favicon: {
name: "Generateur de Favicon",
description: "Generez toutes les tailles de favicon et d'icones d'application",
},
"adjust-colors": {
name: "Ajuster les couleurs",
description: "Luminosite, contraste, exposition, saturation, temperature, nettete et effets",
},
sharpening: {
name: "Nettete",
description: "Nettete adaptative, masque flou et passe-haut avec presets",
},
"replace-color": {
name: "Remplacer et inverser la couleur",
description: "Remplacez des couleurs specifiques ou inversez",
},
"color-blindness": {
name: "Simulation du daltonisme",
description:
"Simulez l'apparence des images avec differents types de deficience de la vision des couleurs",
},
"remove-background": {
name: "Supprimer l'arriere-plan",
description: "Suppression d'arriere-plan par AI",
},
upscale: {
name: "Agrandissement d'image",
description: "Amelioration par super-resolution AI",
},
"erase-object": {
name: "Effaceur d'objets",
description: "Supprimez les objets indesirables avec l'AI",
},
ocr: {
name: "OCR / Extraction de texte",
description: "Extrayez du texte a partir d'images avec une precision alimentee par l'AI",
},
"blur-faces": {
name: "Floutage de visages / donnees sensibles",
description: "Detectez et floutez automatiquement les visages et informations sensibles",
},
"enhance-faces": {
name: "Amelioration des visages",
description: "Restaurez et ameliorez les visages avec l'AI",
},
"smart-crop": {
name: "Recadrage intelligent",
description: "Recadrage intelligent par sujet, visage ou rognage automatique",
},
"image-enhancement": {
name: "Amelioration d'image",
description:
"Amelioration automatique en un clic : exposition, contraste, couleur et nettete intelligents",
},
"noise-removal": {
name: "Suppression du bruit",
description: "Suppression du bruit et du grain par AI",
},
"red-eye-removal": {
name: "Correction des yeux rouges",
description: "Detection et correction des yeux rouges par AI pour les photos au flash",
},
"restore-photo": {
name: "Restauration de photos",
description:
"Reparation de rayures, dechirures et dommages sur les photos anciennes avec l'AI",
},
"content-aware-resize": {
name: "Redimensionnement intelligent",
description:
"Redimensionnez les images de maniere intelligente tout en preservant le contenu important",
},
"ai-canvas-expand": {
name: "Extension de canevas AI",
description: "Etendez le canevas avec un remplissage genere par AI",
},
colorize: {
name: "Colorisation AI",
description:
"Convertissez les photos noir et blanc en couleur a l'aide de modeles d'apprentissage profond AI",
},
"passport-photo": {
name: "Photo d'identite",
description:
"Creez des photos de passeport, visa et pieces d'identite conformes aux normes officielles avec detection automatique du visage",
},
"transparency-fixer": {
name: "Correcteur de transparence PNG",
description: "Corrigez les PNG a fausse transparence en un clic",
},
"watermark-text": {
name: "Filigrane texte",
description: "Ajoutez un filigrane textuel en superposition",
},
"watermark-image": {
name: "Filigrane image",
description: "Superposez un logo en filigrane",
},
"text-overlay": {
name: "Texte en superposition",
description: "Ajoutez du texte stylise aux images",
},
compose: {
name: "Composition d'image",
description: "Superposez des images avec position et opacite",
},
"meme-generator": {
name: "Generateur de Meme",
description:
"Creez des memes avec des modeles populaires ou vos propres images. Texte classique style Impact avec polices, couleurs et positionnement personnalisables.",
},
info: {
name: "Info image",
description: "Consultez toutes les metadonnees et proprietes de l'image",
},
compare: {
name: "Comparer des images",
description: "Comparaison cote a cote de deux images",
},
"find-duplicates": {
name: "Trouver les doublons",
description: "Detectez les images en double et quasi-identiques",
},
"color-palette": {
name: "Palette de couleurs",
description: "Extrayez les couleurs dominantes d'une image",
},
"qr-generate": {
name: "Generateur de codes QR",
description: "Generez des codes QR stylises avec couleurs, motifs et logos personnalises",
},
"html-to-image": {
name: "HTML to Image",
description: "Capture webpages as high-quality images",
},
"barcode-read": {
name: "Lecteur de codes-barres",
description: "Scannez les images pour detecter les codes QR, codes-barres et codes 2D",
},
collage: {
name: "Collage / Grille",
description: "Combinez des images en de magnifiques collages avec plus de 25 modeles",
},
stitch: {
name: "Assembler / Combiner",
description: "Assemblez des images cote a cote, empilees ou en grille",
},
split: {
name: "Decoupage d'image",
description: "Decoupez des images en grille ou par taille en pixels avec apercu en direct",
},
border: {
name: "Bordure et cadre",
description:
"Ajoutez des bordures, du rembourrage, des coins arrondis et des ombres avec des presets en un clic",
},
beautify: {
name: "Embellir une capture d'ecran",
description:
"Ajoutez des fonds degrades, des cadres d'appareils, des ombres et des tailles pour reseaux sociaux aux captures d'ecran",
},
"svg-to-raster": {
name: "SVG vers raster",
description:
"Convertissez SVG en PNG, JPEG, WebP, AVIF, TIFF, GIF ou HEIF a une echelle et un DPI personnalises",
},
vectorize: {
name: "Image vers SVG",
description: "Convertissez des images en graphiques vectoriels redimensionnables",
},
"gif-tools": {
name: "Outils GIF",
description:
"Redimensionnez, optimisez, changez la vitesse, inversez, extrayez des images et faites pivoter des GIFs animes",
},
"image-to-base64": {
name: "Image vers Base64",
description:
"Convertissez des images en chaines Base64 pour les integrer dans HTML, CSS et plus",
},
pipeline: {
name: "Constructeur de Pipeline",
description: "Enchainez plusieurs outils dans un flux de travail",
},
},
toolSettings: {
compress: {
compressionMode: "Mode de compression",
targetSize: "Taille cible",
quality: "Qualite",
smallestFile: "Fichier le plus petit",
bestQuality: "Meilleure qualite",
submit: "Compresser",
submitBatch: "Compresser ({count} fichiers)",
progressLabel: "Compression en cours",
original: "Original : {size} KB",
processed: "Traite : {size} KB",
saved: "Economie : {percent}%",
},
resize: {
customSize: "Taille personnalisee",
scale: "Echelle",
presets: "Presets",
contentAware: "Intelligent",
widthPx: "Largeur (px)",
heightPx: "Hauteur (px)",
fitMode: "Mode d'ajustement",
cropToFit: "Recadrer pour ajuster",
fitInside: "Ajuster a l'interieur",
stretch: "Etirer",
limitToOriginalSize: "Limiter a la taille d'origine",
limitToOriginalSizeHint:
"Si votre image est deja plus petite que la cible, elle est conservee telle quelle au lieu d'etre agrandie",
scalePercent: "Echelle (%)",
resizeToSquare: "Redimensionner en carre",
protectFaces: "Proteger les visages",
smoothing: "Lissage",
edgeSensitivity: "Sensibilite des contours",
submit: "Redimensionner",
submitBatch: "Redimensionner ({count} fichiers)",
progressLabel: "Redimensionnement en cours",
},
crop: {
aspectRatio: "Ratio d'aspect",
custom: "Personnalise",
positionAndSize: "Position et taille",
ruleOfThirds: "Regle des tiers",
leftOffsetPx: "Decalage gauche (px)",
topOffsetPx: "Decalage haut (px)",
submit: "Recadrer",
submitBatch: "Recadrer ({count} fichiers)",
progressLabel: "Recadrage en cours",
},
rotate: {
rotate: "Rotation",
angle: "Angle",
straighten: "Redresser",
flip: "Miroir",
horizontal: "Horizontal",
vertical: "Vertical",
resetAllChanges: "Reinitialiser toutes les modifications",
submit: "Appliquer",
submitBatch: "Appliquer ({count} fichiers)",
progressLabel: "Application en cours",
},
convert: {
targetFormat: "Format cible",
sourceFormat: "Format source",
quality: "Qualite",
submit: "Convertir",
submitBatch: "Convertir ({count} fichiers)",
progressLabel: "Conversion en cours",
},
"optimize-for-web": {
outputFormat: "Format de sortie",
quality: "Qualite",
smallestFile: "Fichier le plus petit",
bestQuality: "Meilleure qualite",
maxDimensions: "Dimensions maximales",
maxWidth: "Largeur maximale",
maxHeight: "Hauteur maximale",
stripMetadata: "Supprimer les metadonnees",
sizeComparison: "Comparaison de taille",
optimized: "Optimise :",
smaller: "{percent}% plus petit",
larger: "{percent}% plus grand",
submit: "Traiter et telecharger",
submitBatch: "Traiter et telecharger ({count} fichiers)",
progressLabel: "Optimisation en cours",
},
"strip-metadata": {
currentMetadata: "Metadonnees actuelles",
readingMetadata: "Lecture des metadonnees...",
noMetadataFound: "Aucune metadonnee trouvee dans cette image.",
removeAllMetadata: "Supprimer toutes les metadonnees",
selectSpecific: "Ou selectionnez des metadonnees specifiques :",
stripExif: "Supprimer EXIF (info appareil, date, exposition)",
stripGps: "Supprimer GPS (donnees de localisation)",
stripIcc: "Supprimer ICC (profil colorimetrique)",
stripXmp: "Supprimer XMP (metadonnees extensibles)",
locationFound: "localisation trouvee",
locationWarning:
"Cette image contient votre localisation precise. Pensez a supprimer les donnees GPS avant de la partager.",
metadataSections: "{count} section de metadonnees trouvee",
metadataSectionsPlural: "{count} sections de metadonnees trouvees",
metadataRemoved: "Metadonnees supprimees : {size} KB",
submit: "Supprimer les metadonnees",
progressLabel: "Suppression des metadonnees",
},
"edit-metadata": {
readingMetadata: "Lecture des metadonnees...",
couldNotReadMetadata: "Impossible de lire les metadonnees - les champs seront vides.",
basicInfo: "Informations de base",
description: "Description",
artist: "Artiste",
copyright: "Copyright",
software: "Logiciel",
iptc: "IPTC",
title: "Titre",
headline: "Titre principal",
city: "Ville",
stateProvince: "Etat/Province",
country: "Pays",
dateAndTime: "Date et heure",
editDates: "Modifier les dates",
shiftAllDates: "Decaler toutes les dates",
dateModified: "Date de modification",
dateTaken: "Date de prise de vue",
shiftHint:
"Decalez tous les champs de date d'un decalage (utile pour les corrections de fuseau horaire)",
direction: "Direction",
forward: "+ En avant",
backward: "- En arriere",
hoursMinutes: "Heures:Minutes",
locationGps: "Localisation (GPS)",
locationDataFound: "Donnees de localisation trouvees",
noGpsData: "Aucune donnee GPS. Ajoutez des coordonnees ci-dessous.",
latitude: "Latitude",
longitude: "Longitude",
altitudeMeters: "Altitude (metres)",
removeAllGpsData: "Supprimer toutes les donnees GPS",
keywords: "Mots-cles",
addKeywordPlaceholder: "Ajoutez un mot-cle et appuyez sur Entree",
addToExisting: "Ajouter aux existants",
replaceAll: "Tout remplacer",
allMetadata: "Toutes les metadonnees",
templates: "Modeles",
templateNamePlaceholder: "Nom du modele",
uploadPrompt: "Importez une image pour modifier ses metadonnees.",
changes: "{count} modifications :",
modified: "{count} modifie(s)",
removed: "{count} supprime(s)",
gpsCleared: "GPS efface",
gpsAdded: "GPS ajoute",
datesShifted: "dates decalees",
submit: "Appliquer les metadonnees",
progressLabel: "Ecriture des metadonnees",
},
"bulk-rename": {
pattern: "Motif",
patternHint: "Variables : {{index}}, {{padded}}, {{original}}",
startIndex: "Index de depart",
preview: "Apercu",
andMore: "... et {count} de plus",
renaming: "Renommage en cours...",
submit: "Renommer {count} fichiers",
zipDownloaded: "ZIP telecharge avec succes",
},
"image-to-pdf": {
imageCount: "{count} image sera convertie en {mode}",
imageCountPlural: "{count} images seront converties en {mode}",
singlePdfMode: "un seul PDF, une image par page",
separatePdfMode: "des PDFs separes, un par image",
combineAllImages: "Combiner toutes les images en un PDF",
pageSize: "Taille de page",
orientation: "Orientation",
portrait: "Portrait",
landscape: "Paysage",
margin: "Marge",
targetSizeLabel: "Taille de fichier cible (optionnel)",
targetSizePlaceholder: "ex. 2",
targetSizeHint: "Laissez vide pour une qualite maximale",
targetSizeMet: "Objectif atteint",
targetSizeNotMet:
"Impossible d'atteindre l'objectif. Fichier compresse a la qualite minimale.",
targetSizeTooSmall: "L'objectif doit etre d'au moins 50KB",
jpegQualityLabel: "Qualite JPEG utilisee",
noImage: "Aucune image",
submitCollate: "Creer le PDF ({count} pages)",
submitSeparate: "Creer {count} PDFs",
downloadPdf: "Telecharger le PDF",
downloadZip: "Telecharger le ZIP",
progressLabel: "Creation du PDF",
uploadingImages: "Import des images...",
processingPages: "Traitement de {count} pages...",
},
"pdf-to-image": {
dropPdf: "Deposez un PDF ici ou cliquez pour selectionner",
readingPdf: "Lecture du PDF...",
pageCount: "{count} page",
pageCountPlural: "{count} pages",
outputFormat: "Format de sortie",
quality: "Qualite",
resolutionDpi: "Resolution (DPI)",
dpiScreen: "Ecran",
dpiStandard: "Standard",
dpiPrint: "Impression",
dpiHighQuality: "Haute qualite",
colorMode: "Mode couleur",
colorModeColor: "Couleur",
colorModeGrayscale: "Niveaux de gris",
colorModeBw: "N&B",
pages: "Pages",
allPages: "Toutes les pages",
pagesHint: "ex. 1-3, 5, 8-10 (le document contient {count} pages)",
converting: "Conversion en cours...",
submit: "Convertir {count} page",
submitPlural: "Convertir {count} pages",
downloadAllZip: "Tout telecharger (ZIP)",
},
favicon: {
uploadHint:
"Importez des images carrees (512x512 ou plus recommande) pour generer toutes les tailles de favicon et d'icones d'application.",
multipleHint: "Chacune des {count} images obtient son propre dossier dans le ZIP.",
generatedSizes: "Tailles generees (par image)",
plusManifest: "+ manifest.json + extrait HTML",
submit: "Generer les Favicons ({count} image)",
submitPlural: "Generer les Favicons ({count} images)",
downloadZip: "Telecharger le ZIP des Favicons",
progressLabel: "Generation des Favicons",
},
"adjust-colors": {
light: "Lumiere",
brightness: "Luminosite",
contrast: "Contraste",
exposure: "Exposition",
color: "Couleur",
saturation: "Saturation",
temperature: "Temperature",
temperatureHint: "froid / chaud",
tint: "Teinte",
tintHint: "vert / magenta",
hue: "Teinte chromatique",
detail: "Detail",
sharpness: "Nettete",
effects: "Effets",
none: "aucun",
grayscale: "niveaux de gris",
sepia: "sepia",
invert: "inverser",
colorChannels: "Canaux de couleur",
channelModified: "modifie",
red: "Rouge",
green: "Vert",
blue: "Bleu",
resetAll: "Tout reinitialiser",
submit: "Appliquer",
submitBatch: "Appliquer ({count} fichiers)",
progressLabel: "Ajustement des couleurs",
},
sharpening: {
method: "Methode",
adaptive: "Adaptatif",
unsharpMask: "Masque flou",
highPass: "Passe-haut",
presets: "Presets",
textureAmount: "Quantite de texture",
amount: "Quantite",
strength: "Intensite",
noiseReduction: "Reduction du bruit",
off: "desactive",
lightDenoise: "leger",
mediumDenoise: "moyen",
strongDenoise: "fort",
advancedControls: "Controles avances",
radius: "Rayon",
flatProtection: "Protection des aplats",
detailThreshold: "Seuil de detail",
haloLimitLight: "Limite de halo (clair)",
haloLimitDark: "Limite de halo (sombre)",
threshold: "Seuil",
kernelSize: "Taille du noyau",
submit: "Accentuer",
submitBatch: "Accentuer ({count} fichiers)",
progressLabel: "Accentuation en cours",
},
"replace-color": {
sourceColor: "Couleur source (a remplacer)",
targetColor: "Couleur cible (remplacement)",
makeTransparent: "Rendre transparent a la place",
tolerance: "Tolerance",
exactMatch: "Correspondance exacte",
wideRange: "Plage etendue",
submit: "Remplacer la couleur",
submitBatch: "Remplacer la couleur ({count} fichiers)",
progressLabel: "Remplacement de la couleur",
},
"color-blindness": {
simulationType: "Type de simulation",
redGreen: "Rouge-Vert",
blueYellow: "Bleu-Jaune",
monochromatic: "Monochromatique",
submit: "Simuler",
submitBatch: "Simuler ({count} fichiers)",
progressLabel: "Simulation du daltonisme",
},
"remove-background": {
subject: "Sujet",
people: "Personnes",
products: "Produits",
general: "General",
passportIdPhoto: "Photo de passeport / piece d'identite",
quality: "Qualite",
fast: "Rapide",
hd: "HD",
max: "Max",
ultra: "Ultra",
background: "Arriere-plan",
transparent: "Transparent",
bgColor: "Couleur",
gradient: "Degrade",
image: "Image",
gradientDirection: "Direction",
chooseBackgroundImage: "Choisir une image d'arriere-plan",
effectsSection: "Effets",
effectsActive: "actifs",
blurBackground: "Flouter l'arriere-plan",
intensity: "Intensite",
addShadow: "Ajouter une ombre",
opacity: "Opacite",
outputFormat: "Output Format",
edgeSmoothing: "Edge Smoothing",
edgeSmoothingOff: "Off",
edgeSmoothingLight: "Light",
edgeSmoothingMedium: "Medium",
edgeSmoothingStrong: "Strong",
colorDecontamination: "Color Decontamination",
rendering: "Rendu en cours...",
submit: "Supprimer l'arriere-plan",
submitBatch: "Supprimer l'arriere-plan ({count} fichiers)",
progressLabel: "Suppression de l'arriere-plan",
},
upscale: {
scaleFactor: "Facteur d'echelle",
quality: "Qualite",
enhanceFaces: "Ameliorer les visages",
noiseReduction: "Reduction du bruit",
noiseReductionHint:
"Lisse le grain et le bruit. Des valeurs plus elevees suppriment davantage de bruit mais peuvent adoucir les details.",
outputFormat: "Format de sortie",
submit: "Agrandir {scale}x",
submitBatch: "Agrandir {scale}x ({count} fichiers)",
progressLabel: "Agrandissement de l'image",
progressLabelBatch: "Agrandissement de {count} images",
},
"erase-object": {
brushSize: "Taille du pinceau",
fine: "Fin",
wide: "Large",
undo: "Annuler",
clear: "Effacer",
outputFormat: "Format de sortie",
quality: "Qualite",
paintHint:
"Peignez sur les objets que vous souhaitez supprimer. Utilisez Ctrl+Z pour annuler.",
submit: "Effacer l'objet",
submitBatch: "Tout effacer ({count})",
progressLabel: "Effacement de l'objet",
},
ocr: {
quality: "Qualite",
enhanceBeforeScanning: "Ameliorer avant le scan",
enhanceHint:
"Redresse, ameliore le contraste, supprime le bruit et agrandit automatiquement l'image avant le scan pour une meilleure precision.",
language: "Langue",
autoDetect: "Detection automatique",
extractedText: "Texte extrait",
noTextDetected: "Aucun texte detecte dans cette image",
characters: "{count} caracteres",
submit: "Extraire le texte",
submitBatch: "Extraire le texte ({count} fichiers)",
progressLabel: "Extraction du texte",
},
"blur-faces": {
blurRadius: "Rayon du flou",
blurLight: "Leger",
blurHeavy: "Fort",
detectionSensitivity: "Sensibilite de detection",
moreFaces: "Plus de visages",
fewerFaces: "Moins de visages",
submit: "Flouter les visages",
progressLabel: "Floutage des visages",
},
"enhance-faces": {
quality: "Qualite",
enhancementStrength: "Intensite de l'amelioration",
onlyCenterFace: "Visage central uniquement",
detectionSensitivity: "Sensibilite de detection",
submit: "Ameliorer les visages",
submitBatch: "Ameliorer les visages ({count} fichiers)",
progressLabel: "Amelioration des visages",
},
"smart-crop": {
subjectFocus: "Mise au point sur le sujet",
faceFocus: "Mise au point sur le visage",
autoTrim: "Rognage automatique",
customSize: "Taille personnalisee",
socialPresets: "Presets pour reseaux sociaux",
detectionStrategy: "Strategie de detection",
detectionStrategyHint:
"L'attention trouve la region visuellement la plus saillante. L'entropie trouve la zone avec le plus de details et d'informations.",
attention: "Attention",
entropy: "Entropie",
padding: "Marge interieure",
paddingHint: "Espace supplementaire autour de la zone de mise au point",
outputQuality: "Qualite de sortie",
outputQualityHint: "Pour les sorties JPEG et WebP. Le PNG est toujours sans perte.",
subjectDescription:
"Detecte la region la plus interessante par analyse de saillance et recadre a la taille souhaitee.",
framing: "Cadrage",
facePadding: "Marge autour du visage",
facePaddingHint: "Espace supplementaire autour des visages detectes",
fewerFalsePositives: "Moins de faux positifs",
faceDescription:
"Utilise la detection faciale AI pour garder les visages bien cadres. Se replie sur la mise au point sur le sujet si aucun visage n'est detecte.",
trimTolerance: "Tolerance",
trimDescription:
"A quel point un pixel de bordure peut differer de la couleur du bord et etre quand meme rogne. Plus eleve = plus agressif.",
padToSquare: "Remplir en carre",
targetSizePx: "Taille cible (px)",
padColor: "Couleur de remplissage",
trimHint:
'Supprime les bordures de couleur uniforme autour du sujet. Activez "Remplir en carre" pour des images pretes pour le e-commerce.',
submitSubject: "Recadrage intelligent",
submitFace: "Recadrage par visage",
submitTrim: "Rogner les bordures",
},
imageEnhancement: {
enhancementMode: "Mode d'amelioration",
auto: "Automatique",
portrait: "Portrait",
landscape: "Paysage",
lowLight: "Faible luminosite",
food: "Nourriture",
document: "Document",
intensity: "Intensite",
deepEnhance: "Amelioration profonde (AI)",
deepEnhanceDescription: "Supprime le bruit et les artefacts avec l'AI",
deepEnhanceRequires: "Necessite le pack Agrandissement et amelioration",
analyzingImage: "Analyse de l'image...",
detectedIssues: "Problemes detectes",
imageLooksGood: "L'image semble bonne. Ajustez avec le curseur d'intensite.",
issueUnderexposed: "Sous-exposition",
issueOverexposed: "Surexposition",
issueLowContrast: "Contraste plat",
issueColorCast: "Dominante de couleur",
issueDesaturated: "Desaturee",
issueSoftFocus: "Mise au point douce",
issueNoisy: "Bruitee",
submit: "Ameliorer",
submitDeep: "Amelioration profonde",
submitBatch: "Ameliorer ({count} fichiers)",
submitDeepBatch: "Amelioration profonde ({count} fichiers)",
progressLabel: "Amelioration de l'image",
progressLabelBatch: "Amelioration de {count} images",
},
"noise-removal": {
denoisingTier: "Niveau de debruitage",
quick: "Rapide",
balanced: "Equilibre",
quality: "Qualite",
maximum: "Maximum",
quickDesc: "Rapide et leger",
balancedDesc: "Bonne qualite, vitesse moderee",
qualityDesc: "Par AI, lent",
maximumDesc: "Meilleur modele AI, le plus lent",
strength: "Intensite",
subtle: "Subtil",
aggressive: "Agressif",
detailPreservation: "Preservation des details",
smooth: "Lisse",
sharp: "Net",
colorNoise: "Bruit de couleur",
heavy: "Intense",
outputFormat: "Format de sortie",
gifAiWarning:
"Le debruitage AI sur les fichiers GIF ne traite que la premiere image. Pour les GIFs animes, utilisez le niveau Rapide ou Equilibre.",
submit: "Supprimer le bruit",
submitBatch: "Supprimer le bruit ({count} fichiers)",
progressLabel: "Suppression du bruit",
progressLabelBatch: "Suppression du bruit de {count} images",
},
"red-eye-removal": {
sensitivity: "Sensibilite",
strict: "Stricte",
aggressive: "Aggressive",
correctionStrength: "Intensite de la correction",
subtle: "Subtil",
dark: "Sombre",
outputFormat: "Format de sortie",
quality: "Qualite",
submit: "Corriger les yeux rouges",
submitBatch: "Corriger les yeux rouges ({count} fichiers)",
progressLabel: "Correction des yeux rouges",
progressLabelBatch: "Correction des yeux rouges dans {count} images",
},
"restore-photo": {
scratchRemoval: "Suppression des rayures",
scratchRemovalDesc: "Detecte et repare les rayures, dechirures et taches",
faceEnhancement: "Amelioration des visages",
faceEnhancementDesc: "Restaure les visages degrades avec CodeFormer AI",
faceFidelity: "Fidelite du visage",
enhanced: "Ameliore",
faithful: "Fidele",
noiseReduction: "Reduction du bruit",
noiseReductionDesc: "Supprime le grain et le bruit des photos anciennes",
denoiseStrength: "Intensite du debruitage",
autoColorize: "Colorisation automatique",
autoColorizeDesc: "Ajoutez de la couleur aux photos N&B avec DDColor AI",
colorizeStrength: "Intensite de la colorisation",
vivid: "Vif",
submit: "Restaurer la photo",
submitBatch: "Restaurer les photos ({count})",
progressLabel: "Restauration de la photo",
progressLabelBatch: "Restauration de {count} photos",
},
"content-aware-resize": {
widthPx: "Largeur (px)",
heightPx: "Hauteur (px)",
resizeToSquare: "Redimensionner en carre",
protectFaces: "Proteger les visages",
protectFacesHint:
"Detecte et protege les zones de visage de la suppression de coutures par detection faciale",
smoothing: "Lissage",
edgeSensitivity: "Sensibilite des contours",
submit: "Redimensionner",
submitBatch: "Redimensionner ({count} fichiers)",
progressLabel: "Redimensionnement intelligent",
},
"ai-canvas-expand": {
quality: "Qualite",
fast: "Rapide",
balanced: "Equilibre",
highQuality: "Haute qualite",
fastDesc: "Apercu rapide, moins de passes AI",
balancedDesc: "Bonne qualite, vitesse moderee",
highQualityDesc: "Meilleurs resultats, plus lent",
extendToAspectRatio: "Etendre au ratio d'aspect",
extendByPixels: "Etendre de (pixels)",
top: "Haut",
right: "Droite",
bottom: "Bas",
left: "Gauche",
newSize: "Nouvelle taille : {width} x {height}",
submit: "Etendre le canevas",
submitBatch: "Etendre ({count} fichiers)",
progressLabel: "Extension du canevas",
},
colorize: {
aiModel: "Modele AI",
fast: "Rapide",
fastDesc: "Resultats rapides",
balanced: "Equilibre",
balancedDesc: "Le meilleur disponible",
best: "Optimal",
bestDesc: "La plus haute qualite",
colorIntensity: "Intensite des couleurs",
grayscaleLabel: "Niveaux de gris",
subtleLabel: "Subtil",
naturalLabel: "Naturel",
vividLabel: "Vif",
intensityHint: "Des valeurs plus basses produisent des couleurs plus douces, style vintage.",
strength: "Intensite de la colorisation",
submit: "Coloriser",
submitBatch: "Coloriser ({count} fichiers)",
progressLabel: "Colorisation en cours",
progressLabelBatch: "Colorisation de {count} images",
},
"passport-photo": {
country: "Pays",
searchCountries: "Rechercher des pays...",
noCountriesFound: "Aucun pays trouve",
customDimensions: "Dimensions personnalisees",
documentType: "Type de document",
dimensionsMm: "Dimensions (mm)",
dpi: "DPI",
pixelsPerInch: "pixels par pouce",
backgroundColor: "Couleur de fond",
maxFileSize: "Taille de fichier maximale",
noLimit: "Sans limite",
customKb: "Personnalise KB...",
uploadPortrait: "Importez une photo portrait",
uploadHint:
"Deposez ou importez une image dans le panneau de gauche pour previsualiser votre photo d'identite",
analyzingPhoto: "Analyse de la photo",
detectingLandmarks: "Detection des reperes faciaux et suppression de l'arriere-plan...",
generatePassportPhoto: "Generer la photo d'identite",
generating: "Generation en cours...",
downloadPhoto: "Telecharger la photo",
faceCentered: "Visage centre",
headLevel: "Tete droite",
lookingStraight: "Regard face camera",
faceSize: "Taille du visage",
whatYouSee: "Ce que vous voyez est ce que vous telechargez",
dragToAdjust: "Glissez pour ajuster",
scrollToZoom: "Faites defiler pour zoomer",
photoGenerated: "Photo generee. Telechargez-la depuis le panneau de gauche.",
},
"transparency-fixer": {
description:
"Importez un PNG avec un faux fond transparent et nous le corrigeons en un clic.",
removeWatermark: "Supprimer le filigrane",
removeWatermarkHelp: "Detecte et supprime les filigranes semi-transparents",
requiresEraser: "Necessite le pack Effaceur d'objets",
advanced: "Avance",
defringe: "Supprimer les franges",
outputFormat: "Format de sortie",
submit: "Corriger la transparence",
submitBatch: "Corriger la transparence ({count} fichiers)",
progressLabel: "Correction de la transparence",
},
"watermark-text": {
watermarkText: "Texte du filigrane",
fontSize: "Taille de police",
color: "Couleur",
opacity: "Opacite",
position: "Position",
rotation: "Rotation",
center: "Centre",
topLeft: "Haut gauche",
topRight: "Haut droite",
bottomLeft: "Bas gauche",
bottomRight: "Bas droite",
tiled: "Mosaique",
submit: "Ajouter le filigrane",
submitBatch: "Ajouter le filigrane ({count} fichiers)",
progressLabel: "Ajout du filigrane",
},
"watermark-image": {
uploadWatermark: "Importer l'image du filigrane",
position: "Position",
opacity: "Opacite",
scale: "Echelle",
submit: "Appliquer le filigrane",
submitBatch: "Appliquer le filigrane ({count} fichiers)",
},
"text-overlay": {
text: "Texte",
fontSize: "Taille de police",
color: "Couleur",
position: "Position",
top: "Haut",
center: "Centre",
bottom: "Bas",
backgroundBox: "Boite de fond",
backgroundColor: "Couleur de fond",
shadow: "Ombre",
submit: "Ajouter le texte",
submitBatch: "Ajouter le texte ({count} fichiers)",
progressLabel: "Ajout du texte en superposition",
download: "Download",
defaultText: "Your Text Here",
},
compose: {
uploadOverlay: "Importer l'image de superposition",
xPosition: "Position X",
yPosition: "Position Y",
opacity: "Opacite",
blendMode: "Mode de fusion",
submit: "Composer",
},
"meme-generator": {
selectTemplate:
"Selectionnez un modele dans la galerie ou importez votre propre image pour commencer.",
chooseLayout: "Choisissez une disposition de texte pour votre image personnalisee.",
textContent: "Contenu du texte",
textStyle: "Style du texte",
font: "Police",
fontSize: "Taille de police",
textColor: "Couleur du texte",
strokeColor: "Couleur du contour",
allCaps: "MAJUSCULES",
generate: "Generer le Meme",
generating: "Generation en cours...",
downloadMeme: "Telecharger le Meme",
backToGallery: "Retour a la galerie",
},
info: {
loadingInfo: "Chargement des informations...",
filename: "Nom du fichier",
fileSize: "Taille du fichier",
dimensions: "Dimensions",
format: "Format",
channels: "Canaux",
colorSpace: "Espace colorimetrique",
density: "Densite",
bitDepth: "Profondeur de bits",
progressive: "Progressif",
pages: "Pages",
hasAlpha: "Canal alpha",
hasProfile: "Profil",
hasExif: "EXIF",
hasIcc: "ICC",
hasXmp: "XMP",
readInfo: "Read Info",
reading: "Reading...",
channelStats: "Channel Stats",
yes: "Yes",
no: "No",
na: "N/A",
failedToRead: "Failed to read info",
},
compare: {
uploadSecondImage: "Importer une seconde image",
similarity: "Similarite : {percent}%",
submit: "Comparer",
downloadDiff: "Telecharger la difference",
},
"find-duplicates": {
preset: "Preset",
exact: "Exact",
similar: "Similaire",
loose: "Large",
exactDesc: "Copies identiques au pixel pres, meme image dans differents formats.",
similarDesc: "Copies redimensionnees, recompressees ou legerement modifiees.",
looseDesc: "Images visuellement liees, recadrages legers, expositions differentes.",
threshold: "Seuil",
submit: "Rechercher les doublons",
scanning: "Analyse en cours...",
},
"color-palette": {
submit: "Extraire la palette",
extracting: "Extraction en cours...",
dominantColors: "Couleurs dominantes",
clickToCopy: "Cliquez pour copier",
},
"qr-generate": {
contentType: "Type de contenu",
url: "URL",
text: "Texte",
wifi: "WiFi",
vcard: "vCard",
email: "Email",
phone: "Telephone",
sms: "SMS",
styling: "Style",
dotStyle: "Style des points",
cornerSquareStyle: "Style du carre d'angle",
cornerDotStyle: "Style du point d'angle",
foregroundColor: "Couleur de premier plan",
bgColor: "Couleur de fond",
logo: "Logo",
downloadFormat: "Format de telechargement",
submit: "Generer le code QR",
download: "Telecharger le code QR",
},
"html-to-image": {
modeUrl: "URL",
modeHtml: "HTML File",
htmlFile: "HTML File",
url: "URL",
urlPlaceholder: "https://snapotter.com",
format: "Output Format",
quality: "Quality",
devicePreset: "Device",
viewportWidth: "Width",
viewportHeight: "Height",
fullPage: "Full Page",
submit: "Capture",
download: "Download Screenshot",
capturing: "Capturing webpage...",
errorTimeout: "Page took too long to load",
errorBlocked: "This URL cannot be captured",
errorUnavailable: "Screenshot service is not available",
errorFailed: "Failed to capture the page",
placeholder: "Enter a URL and click Capture",
presets: {
desktop: "Desktop",
tablet: "Tablet",
mobile: "Mobile",
custom: "Custom",
},
},
"barcode-read": {
submit: "Scanner les codes-barres",
submitBatch: "Scanner ({count} fichiers)",
scanning: "Analyse en cours...",
noBarcodesFound: "Aucun code-barres trouve",
barcodesFound: "{count} code-barres trouve",
barcodesFoundPlural: "{count} codes-barres trouves",
},
collage: {
template: "Modele",
aspectRatio: "Ratio d'aspect",
gap: "Espacement",
cornerRadius: "Rayon d'angle",
backgroundColor: "Couleur de fond",
outputFormat: "Format de sortie",
quality: "Qualite",
submit: "Creer le collage",
downloadCollage: "Telecharger le collage",
},
stitch: {
direction: "Direction",
horizontal: "Horizontal",
vertical: "Vertical",
grid: "Grille",
gridColumns: "Colonnes de grille",
resizeMode: "Mode de redimensionnement",
fit: "Ajuster",
original: "Original",
stretchMode: "Etirer",
cropMode: "Recadrer",
alignment: "Alignement",
start: "Debut",
center: "Centre",
end: "Fin",
gap: "Espacement",
border: "Bordure",
cornerRadius: "Rayon d'angle",
backgroundColor: "Couleur de fond",
outputFormat: "Format de sortie",
quality: "Qualite",
submit: "Assembler les images",
},
split: {
modeGrid: "Grille",
modeTileSize: "Taille des tuiles",
presets: "Presets",
columns: "Colonnes",
rows: "Lignes",
tileWidth: "Largeur de tuile",
tileHeight: "Hauteur de tuile",
outputFormat: "Format de sortie",
quality: "Qualite",
submit: "Decouper l'image",
downloadAll: "Tout telecharger (ZIP)",
},
border: {
presets: "Presets",
borderWidth: "Largeur de bordure",
borderColor: "Couleur de bordure",
padding: "Marge interieure",
paddingColor: "Couleur de marge",
cornerRadius: "Rayon d'angle",
shadow: "Ombre",
shadowBlur: "Flou de l'ombre",
shadowOffsetX: "Decalage X de l'ombre",
shadowOffsetY: "Decalage Y de l'ombre",
shadowColor: "Couleur de l'ombre",
shadowOpacity: "Opacite de l'ombre",
submit: "Ajouter la bordure",
submitBatch: "Ajouter la bordure ({count} fichiers)",
progressLabel: "Ajout de la bordure",
},
beautify: {
preset: "Preset",
backgroundType: "Type de fond",
solidColor: "Couleur unie",
linearGradient: "Degrade lineaire",
radialGradient: "Degrade radial",
customImage: "Image personnalisee",
gradientAngle: "Angle du degrade",
padding: "Marge interieure",
borderRadius: "Rayon de bordure",
shadowPreset: "Preset d'ombre",
deviceFrame: "Cadre d'appareil",
submit: "Embellir",
submitBatch: "Embellir ({count} fichiers)",
progressLabel: "Embellissement de la capture d'ecran",
},
"svg-to-raster": {
outputFormat: "Format de sortie",
sizing: "Dimensionnement",
scaleMode: "Echelle",
customMode: "Personnalise",
scalePresets: "Presets d'echelle",
dpiPresets: "Presets de DPI",
customWidth: "Largeur (px)",
customHeight: "Hauteur (px)",
background: "Arriere-plan",
bgTransparent: "Transparent",
bgColor: "Couleur",
quality: "Qualite",
submit: "Convertir le SVG",
submitBatch: "Convertir ({count} fichiers)",
progressLabel: "Conversion du SVG",
},
vectorize: {
preset: "Preset",
logo: "Logo",
illustration: "Illustration",
photo: "Photo",
sketch: "Croquis",
customPreset: "Personnalise",
colorMode: "Mode couleur",
bw: "N&B",
colorModeColor: "Couleur",
threshold: "Seuil",
colorPrecision: "Precision des couleurs",
layerDifference: "Difference de calque",
filterSpeckle: "Filtrer les taches",
pathMode: "Mode de trace",
cornerThreshold: "Seuil d'angle",
invertColors: "Inverser les couleurs",
submit: "Vectoriser",
submitBatch: "Vectoriser ({count} fichiers)",
progressLabel: "Vectorisation en cours",
},
"gif-tools": {
mode: "Mode",
resize: "Redimensionner",
optimize: "Optimiser",
speed: "Vitesse",
reverse: "Inverser",
extract: "Extraire",
rotateMode: "Rotation",
pixel: "Pixel",
percentage: "Pourcentage",
colors: "Couleurs",
dither: "Tramage",
effort: "Effort",
speedFactor: "Facteur de vitesse",
loopControl: "Controle de boucle",
infinite: "Infini",
once: "Une fois",
customLoop: "Personnalise",
loopCount: "Nombre de boucles",
extractSingle: "Unique",
extractRange: "Plage",
extractAll: "Tout",
frameNumber: "Numero d'image",
frameStart: "Image de debut",
frameEnd: "Image de fin",
extractFormat: "Format",
submit: "Traiter le GIF",
submitBatch: "Traiter ({count} fichiers)",
progressLabel: "Traitement du GIF",
},
"image-to-base64": {
outputFormat: "Format de sortie",
keepOriginal: "Conserver l'original",
quality: "Qualite",
maxWidth: "Largeur maximale",
maxHeight: "Hauteur maximale",
submit: "Convertir en Base64",
submitBatch: "Convertir ({count} fichiers)",
copyBase64: "Copier Base64",
copyDataUri: "Copier Data URI",
copyImgTag: "Copier la balise <img>",
copyCssUrl: "Copier CSS url()",
},
"enhance-faces-standalone": {
model: "Modele",
fast: "Rapide",
balanced: "Equilibre",
best: "Optimal",
},
},
urlImport: {
title: "Importer depuis des URLs",
placeholder: "Collez des URLs d'images, une par ligne...",
importButton: "Importer les URLs",
addButton: "Ajouter {count} fichiers",
adding: "Ajout en cours...",
retryButton: "Reessayer",
cancelButton: "Annuler",
readyCount: "{count} prets",
failedStatus: "Echec",
},
comparison: {
original: "Original",
processed: "Traite",
before: "Avant",
after: "Apres",
savings: "Economie",
},
toolPage: {
emptyPrompt: "Deposez ou importez une image pour commencer",
filesCount: "Fichiers ({count})",
addMore: "+ Ajouter",
clearAll: "Tout effacer",
acceptDescription: "Fichiers {exts} uniquement",
notFound: "Outil introuvable",
configureAndGenerate: "Configurez les parametres et generez.",
processingFailed: "Echec du traitement pour ce fichier",
conversionComplete: "Conversion terminee",
cannotPreviewDownload:
"Les fichiers {type} ne peuvent pas etre previsualises dans le navigateur. Utilisez le bouton de telechargement pour enregistrer votre fichier.",
generatingPreview: "Generation de l'apercu...",
cannotPreviewWillProcess:
"Les fichiers {ext} ne peuvent pas etre previsualises dans le navigateur. L'outil traitera ce fichier normalement.",
previousImage: "Image precedente",
nextImage: "Image suivante",
imageCounter: "{current} / {total}",
settingsLabel: "Parametres",
downloadAllZip: "Tout telecharger (ZIP)",
hideSettings: "Masquer les parametres",
imageArea: "Zone d'image",
},
homePage: {
generatingPreview: "Generation de l'apercu...",
loadingPreview: "Chargement de l'apercu...",
changeFile: "Changer de fichier",
quickActions: "Actions rapides",
allTools: "Tous les outils",
},
fullscreenGrid: {
searchPlaceholder: "Rechercher des outils...",
hideDetails: "Masquer les details",
showDetails: "Afficher les details",
switchToSidebar: "Passer a la vue barre laterale",
sidebarButton: "Barre laterale",
noToolsFound: "Aucun outil trouve",
tryDifferent: "Essayez un autre terme de recherche",
},
editor: {
menu: {
file: {
label: "Fichier",
new: "Nouveau",
open: "Ouvrir",
save: "Enregistrer",
exportAs: "Exporter sous...",
quickExportPng: "Export rapide en PNG",
close: "Fermer",
},
edit: {
label: "Edition",
undo: "Annuler",
redo: "Retablir",
cut: "Couper",
copy: "Copier",
copyMerged: "Copier avec fusion",
paste: "Coller",
pasteInPlace: "Coller sur place",
delete: "Supprimer",
freeTransform: "Transformation libre",
transform: {
label: "Transformation",
scale: "Echelle",
rotate: "Rotation",
skew: "Inclinaison",
flipHorizontal: "Miroir horizontal",
flipVertical: "Miroir vertical",
},
},
image: {
label: "Image",
imageSize: "Taille de l'image...",
canvasSize: "Taille du canevas...",
rotation: {
label: "Rotation de l'image",
cw90: "90 sens horaire",
ccw90: "90 sens antihoraire",
r180: "180",
flipHorizontal: "Miroir horizontal",
flipVertical: "Miroir vertical",
},
trim: "Rogner",
adjustments: {
label: "Reglages",
brightnessContrast: "Luminosite/Contraste",
hueSaturation: "Teinte/Saturation",
colorBalance: "Balance des couleurs",
levels: "Niveaux",
curves: "Courbes",
},
},
layer: {
label: "Calque",
newLayer: "Nouveau calque",
duplicateLayer: "Dupliquer le calque",
deleteLayer: "Supprimer le calque",
arrange: {
label: "Organiser",
bringToFront: "Mettre au premier plan",
bringForward: "Avancer",
sendBackward: "Reculer",
sendToBack: "Mettre en arriere-plan",
},
mergeDown: "Fusionner vers le bas",
flattenImage: "Aplatir l'image",
},
select: {
label: "Selection",
all: "Tout",
deselect: "Deselectionner",
inverse: "Inverser",
colorRange: "Plage de couleurs...",
},
filter: {
label: "Filtre",
blur: {
label: "Flou",
gaussian: "Flou gaussien",
motion: "Flou de mouvement",
radial: "Flou radial",
surface: "Flou de surface",
},
sharpen: {
label: "Nettete",
sharpen: "Nettete",
unsharpMask: "Masque flou",
},
noise: {
label: "Bruit",
addNoise: "Ajouter du bruit",
reduceNoise: "Reduire le bruit",
},
pixelate: {
label: "Pixelisation",
pixelate: "Pixeliser",
mosaic: "Mosaique",
},
stylize: {
label: "Styliser",
emboss: "Relief",
solarize: "Solariser",
posterize: "Posteriser",
},
grayscale: "Niveaux de gris",
sepia: "Sepia",
invert: "Inverser",
},
view: {
label: "Affichage",
zoomIn: "Zoom avant",
zoomOut: "Zoom arriere",
fitOnScreen: "Ajuster a l'ecran",
actualPixels: "Pixels reels",
rulers: "Regles",
grid: "Grille",
guides: "Reperes",
snap: "Magnetisme",
panels: "Panneaux",
},
},
menuBar: {
backTitle: "Retour a SnapOtter",
},
welcome: {
ariaLabel: "Zone de depot d'image",
heading: "Editeur d'images",
dropDescription: "Deposez une image ici pour commencer",
openImageButton: "Ouvrir une image",
newDocumentButton: "Nouveau document",
pasteHint: "Ou collez depuis le presse-papiers (Ctrl+V)",
},
mobile: {
heading: "Bureau recommande",
description:
"L'editeur d'images fonctionne mieux sur les ecrans de bureau. Veuillez passer a un appareil avec un ecran plus grand pour profiter pleinement de l'experience d'edition.",
},
errors: {
serverDecodeFailed: "Echec du decodage serveur",
},
shapes: {
shape: "Shape",
fill: "Fill",
stroke: "Stroke",
strokeWidth: "Width",
cornerRadius: "Radius",
sides: "Sides",
points: "Points",
dashStyle: "Dash",
solid: "Solid",
dashed: "Dashed",
dotted: "Dotted",
none: "None",
opacity: "Opacity",
rectangle: "Rectangle",
ellipse: "Ellipse",
line: "Line",
arrow: "Arrow",
polygon: "Polygon",
star: "Star",
},
},
settings: {
heading: "Parametres",
nav: {
general: "General",
systemSettings: "Parametres systeme",
security: "Securite",
people: "Personnes",
teams: "Equipes",
roles: "Roles",
auditLog: "Journal d'audit",
apiKeys: "Cles API",
aiFeatures: "Fonctionnalites AI",
tools: "Outils",
productAnalytics: "Analytique produit",
about: "A propos",
},
general: {
heading: "General",
description: "Preferences utilisateur et parametres d'affichage.",
loading: "Chargement...",
logOut: "Se deconnecter",
defaultToolViewLabel: "Vue par defaut des outils",
defaultToolViewDescription: "Comment les outils sont affiches sur la page d'accueil",
sidebarOption: "Barre laterale",
fullscreenGridOption: "Grille plein ecran",
appVersionLabel: "Version de l'application",
appVersionDescription: "Version actuelle de SnapOtter",
saveButton: "Enregistrer les parametres",
saveSuccess: "Parametres enregistres.",
saveFailed: "Echec de l'enregistrement des parametres.",
},
system: {
heading: "Parametres systeme",
description: "Configuration cote serveur et limites.",
fileUploadLimitLabel: "Limite d'import de fichier (MB)",
fileUploadLimitDescription: "Taille maximale de fichier par import",
defaultThemeLabel: "Theme par defaut",
defaultThemeDescription: "Theme applique pour les nouvelles sessions",
lightOption: "Clair",
darkOption: "Sombre",
systemOption: "Systeme",
languageLabel: "Langue",
languageDescription: "Langue de l'interface",
loginAttemptLimitLabel: "Limite de tentatives de connexion",
loginAttemptLimitDescription:
"Nombre maximal de tentatives de connexion echouees par minute avant verrouillage",
fileManagementHeading: "Gestion des fichiers",
maxFileAgeLabel: "Age maximal des fichiers (heures)",
maxFileAgeDescription:
"Duree de conservation des fichiers traites avant nettoyage automatique",
startupCleanupLabel: "Nettoyage au demarrage",
startupCleanupDescription: "Nettoie les anciens fichiers temporaires au demarrage du serveur",
saveButton: "Enregistrer les parametres",
saveSuccess: "Parametres enregistres.",
saveFailed: "Echec de l'enregistrement des parametres.",
limitsAndResources: "Limites et ressources",
maxFileSize: "Taille de fichier maximale",
maxBatchSize: "Taille de lot maximale",
concurrentJobs: "Taches simultanees",
workerThreads: "Fils d'execution",
maxPipelineSteps: "Etapes Pipeline maximales",
processingTimeout: "Delai de traitement",
rateLimitPerMin: "Limite de requetes (req/min)",
unlimited: "Illimite",
auto: "Automatique",
envOverride: "Defini par variable d'environnement",
maxCanvasPixels: "Pixels de canevas maximaux",
maxSvgSize: "Taille SVG maximale",
maxSplitGrid: "Grille de decoupage maximale",
maxPdfPages: "Pages PDF maximales",
sessionDuration: "Duree de la session",
},
security: {
heading: "Securite",
description: "Parametres de mot de passe et d'authentification.",
changePasswordHeading: "Changer le mot de passe",
currentPasswordPlaceholder: "Mot de passe actuel",
newPasswordPlaceholder: "Nouveau mot de passe",
confirmPasswordPlaceholder: "Confirmer le nouveau mot de passe",
passwordsMismatch: "Les mots de passe ne correspondent pas",
passwordTooShort: "Le mot de passe doit contenir au moins 4 caracteres",
changeSuccess: "Mot de passe modifie avec succes",
changeFailed: "Echec de la modification du mot de passe",
currentPasswordIncorrect: "Le mot de passe actuel est incorrect",
changePasswordButton: "Changer le mot de passe",
loginAttemptLimitNote:
"Les limites de tentatives de connexion peuvent etre configurees dans les Parametres systeme.",
},
people: {
heading: "Personnes",
description: "Gerez les membres de l'espace de travail et leurs permissions",
userCount: "{count} utilisateur",
userCountPlural: "{count} utilisateurs",
searchPlaceholder: "Rechercher des membres...",
addMembersButton: "Ajouter des membres",
newMemberHeading: "Nouveau membre",
usernamePlaceholder: "Nom d'utilisateur",
passwordPlaceholder: "Mot de passe",
roleUserOption: "Utilisateur",
roleEditorOption: "Editeur",
roleAdminOption: "Admin",
roleUserDescription: "Acces basique aux outils",
roleEditorDescription: "Tous les fichiers et pipelines",
roleAdminDescription: "Acces complet",
noDescription: "Aucune description",
defaultTeamOption: "Par defaut",
createButton: "Creer",
cancelButton: "Annuler",
createSuccess: "Utilisateur cree avec succes",
createFailed: "Echec de la creation de l'utilisateur",
userLimitReached: "Limite d'utilisateurs atteinte ({max} maximum)",
deleteConfirm: 'Supprimer l\'utilisateur "{username}" ? Cette action est irreversible.',
deleteSuccess: 'Utilisateur "{username}" supprime',
deleteFailed: "Echec de la suppression de l'utilisateur",
editHeading: "Modifier {username}",
updateSuccess: "Utilisateur mis a jour",
updateFailed: "Echec de la mise a jour de l'utilisateur",
cannotRemoveOwnAdmin: "Vous ne pouvez pas supprimer votre propre role administrateur",
resetPasswordHeading: "Reinitialiser le mot de passe de {username}",
newPasswordLabel: "Nouveau mot de passe (min. 8 caracteres)",
resetPasswordButton: "Reinitialiser le mot de passe",
resetPasswordWarning: "Cela invalidera toutes les sessions et cles API de cet utilisateur.",
resetSuccess: "Mot de passe reinitialise avec succes",
resetFailed: "Echec de la reinitialisation du mot de passe",
tableHeaderUser: "Utilisateur",
tableHeaderRole: "Role",
tableHeaderTeam: "Equipe",
noSearchResults: "Aucun membre ne correspond a votre recherche.",
noUsersFound: "Aucun utilisateur trouve.",
authBadgeLocalOidc: "Local + OIDC",
authBadgeOidc: "OIDC",
editRoleTeamAction: "Modifier le role / l'equipe",
resetPasswordAction: "Reinitialiser le mot de passe",
deleteUserAction: "Supprimer l'utilisateur",
saveButton: "Enregistrer",
copyPasswordButton: "Copier le mot de passe",
passwordCopied: "Copie !",
copyPasswordWarning:
"Copiez ce mot de passe maintenant. Vous ne pourrez plus le voir apres la creation de l'utilisateur.",
},
teams: {
heading: "Equipes",
description: "Organisez les membres en equipes pour une meilleure gestion.",
createButton: "Creer une nouvelle equipe",
newTeamHeading: "Nouvelle equipe",
teamNamePlaceholder: "Nom de l'equipe",
createSubmitButton: "Creer",
cancelButton: "Annuler",
createSuccess: "Equipe creee avec succes",
createFailed: "Echec de la creation de l'equipe",
duplicateTeamError: "Une equipe avec ce nom existe deja",
renameSuccess: "Equipe renommee",
renameFailed: "Echec du renommage de l'equipe",
deleteConfirm: 'Supprimer l\'equipe "{name}" ? Les membres seront desaffectes.',
deleteSuccess: 'Equipe "{name}" supprimee',
deleteFailed: "Echec de la suppression de l'equipe",
cannotDeleteDefault:
"Impossible de supprimer l'equipe par defaut ou une equipe avec des membres",
tableHeaderTeamName: "Nom de l'equipe",
tableHeaderMembers: "Membres",
emptyState: "Aucune equipe trouvee.",
renameSaveButton: "Enregistrer",
renameCancelButton: "Annuler",
renameAction: "Renommer",
deleteAction: "Supprimer",
totalMembers: "Nombre total de membres",
nameRequired: "Le nom de l'equipe est requis",
nameTooLong: "Le nom de l'equipe doit contenir 50 caracteres ou moins",
duplicateName: "Une equipe avec ce nom existe deja",
},
roles: {
heading: "Roles",
description:
"Gerez les roles et leurs permissions. Les roles predefinies ne peuvent pas etre modifies.",
createButton: "Creer un role personnalise",
newRoleHeading: "Nouveau role",
roleNamePlaceholder: "Nom du role",
descriptionPlaceholder: "Description (optionnel)",
permissionsLabel: "Permissions",
createSubmitButton: "Creer",
cancelButton: "Annuler",
createSuccess: "Role cree avec succes",
createFailed: "Echec de la creation du role",
duplicateRoleError: "Un role avec ce nom existe deja",
editHeading: "Modifier le role : {name}",
editSaveButton: "Enregistrer",
editCancelButton: "Annuler",
updateSuccess: "Role mis a jour",
updateFailed: "Echec de la mise a jour du role",
deleteConfirm: 'Supprimer le role "{name}" ? {count} utilisateur(s) devront etre reassignes.',
deleteConfirmSimple: 'Supprimer le role "{name}" ?',
deleteSuccess: 'Role "{name}" supprime',
deleteFailed: "Echec de la suppression du role",
emptyState: "Aucun role trouve.",
builtInBadge: "Predefini",
userCountBadge: "{count} utilisateur(s)",
editRoleTitle: "Modifier le role",
deleteRoleTitle: "Supprimer le role",
permGroup: {
tools: "Outils",
files: "Fichiers",
apiKeys: "Cles API",
pipelines: "Pipelines",
settings: "Parametres",
users: "Utilisateurs",
teams: "Equipes",
system: "Systeme",
},
},
auditLog: {
heading: "Journal d'audit",
allActionsFilter: "Toutes les actions",
emptyState: "Aucune entree dans le journal d'audit.",
tableHeaderTime: "Heure",
tableHeaderUser: "Utilisateur",
tableHeaderAction: "Action",
tableHeaderTarget: "Cible",
paginationInfo: "Page {page} sur {totalPages} ({total} entrees)",
previousButton: "Precedent",
nextButton: "Suivant",
justNow: "a l'instant",
minutesAgo: "il y a {mins}min",
hoursAgo: "il y a {hrs}h",
daysAgo: "il y a {days}j",
},
apiKeys: {
heading: "Cles API",
description: "Gerez les cles API pour l'acces programmatique a SnapOtter.",
keyNamePlaceholder: "Nom de la cle (optionnel)",
generateButton: "Generer une cle API",
removeScopingLabel: "Supprimer la restriction de permissions",
restrictPermissionsLabel: "Restreindre les permissions (optionnel)",
expiresLabel: "Expire :",
clearButton: "Effacer",
copyTitle: "Copier",
keyWarning: "Conservez cette cle en lieu sur. Elle ne sera plus affichee.",
existingKeysHeading: "Cles existantes",
createdPrefix: "Creee le {date}",
scopedPrefix: "Portee :",
expiresPrefix: "Expire le {date}",
deleteKeyTitle: "Supprimer la cle",
deleteConfirm:
"Supprimer cette cle API ? Les integrations qui l'utilisent cesseront de fonctionner.",
emptyState: "Aucune cle API pour le moment. Generez-en une pour commencer.",
},
tools: {
heading: "Outils",
description:
"Activez ou desactivez les outils individuellement. Les outils desactives sont masques pour tous les utilisateurs.",
restartBanner: "Un redemarrage est necessaire pour appliquer les modifications.",
searchPlaceholder: "Rechercher des outils...",
noSearchResults: "Aucun outil ne correspond a votre recherche.",
loadFailedError:
"Echec du chargement des parametres d'outils. L'enregistrement est desactive pour eviter toute perte de donnees.",
saveButton: "Enregistrer les parametres d'outils",
disabledCount: "{count} outil(s) desactive(s)",
},
experimental: {
label: "Activer les outils experimentaux",
description: "Affiche les outils encore en developpement. Ils peuvent etre instables.",
},
fileManagement: {
title: "Gestion des fichiers",
maxAge: "Age maximal des fichiers (heures)",
maxAgeDescription: "Duree de conservation des fichiers traites avant nettoyage automatique",
startupCleanup: "Nettoyage au demarrage",
startupCleanupDescription: "Nettoie les anciens fichiers temporaires au demarrage du serveur",
},
analytics: {
heading: "Analytique produit",
description: "Partagez des donnees d'utilisation anonymes pour aider a ameliorer SnapOtter.",
privacyNote: "Vos images ne quittent jamais votre machine.",
disabledByAdmin: "L'analytique produit a ete desactivee par l'administrateur du serveur.",
enabledLabel: "Analytique activee",
disabledLabel: "Analytique desactivee",
learnMore: "En savoir plus",
},
aiFeatures: {
title: "AI Features",
description: "Manage AI model bundles for advanced image processing.",
installAll: "Install All",
diskUsage: "Disk usage:",
installed: "Installed",
notInstalled: "Not installed",
queued: "Queued",
install: "Install",
repair: "Repair",
uninstall: "Uninstall",
installing: "Installing...",
},
about: {
heading: "A propos",
appName: "SnapOtter",
appDescription:
"Une suite de traitement d'images auto-hebergee, axee sur la confidentialite, avec 53 outils. Redimensionnez, compressez, convertissez, ajoutez des filigranes et automatisez vos flux de travail sans envoyer de donnees vers le cloud.",
versionLabel: "Version :",
linksHeading: "Liens",
githubLink: "Depot GitHub",
docsLink: "Documentation",
apiRefLink: "Reference API (Swagger)",
licenseLabel: "License:",
licenseDescription:
"SnapOtter is open-source software licensed under the GNU Affero General Public License v3 (AGPLv3).",
},
},
auth: {
login: "Connexion",
logout: "Se deconnecter",
username: "Nom d'utilisateur",
password: "Mot de passe",
loginButton: "Se connecter",
loggingIn: "Connexion en cours...",
invalidCredentials: "Nom d'utilisateur ou mot de passe invalide",
connectionError: "Erreur de connexion",
signInWith: "Se connecter avec {provider}",
signInWithSso: "Se connecter avec SSO",
or: "ou",
methodLocal: "Local",
methodOidc: "OIDC",
methodBoth: "Local + OIDC",
oidcAuthFailed: "L'authentification a echoue. Veuillez reessayer.",
oidcProviderUnreachable:
"Impossible de joindre le fournisseur d'identite. Veuillez reessayer plus tard.",
oidcSessionExpired: "La session de connexion a expire. Veuillez reessayer.",
oidcUserNotAuthorized:
"Votre compte n'est pas autorise a acceder a cette application. Contactez votre administrateur.",
oidcUserLimitReached: "Limite d'utilisateurs atteinte. Contactez votre administrateur.",
oidcGenericError: "Erreur d'authentification. Veuillez reessayer.",
passwordManagedByProvider:
"Les modifications de mot de passe sont gerees par votre fournisseur d'identite.",
enterUsername: "Saisissez votre nom d'utilisateur",
enterPassword: "Saisissez votre mot de passe",
heroTitle: "Vos images. Restent les votres.",
heroSubtitle: "Tous les outils image dont vous avez besoin.",
rotatingPhrases: [
"Aucune inscription. Aucun compte.",
"Aucun envoi vers le cloud. Jamais.",
"Traitement 100% local.",
"Gratuit. Pour toujours.",
"Sans limites. Sans plafonds caches.",
"Fonctionne entierement hors ligne.",
"Traitement par lot illimite.",
"53 outils image.",
"15 modeles AI. Votre materiel.",
"Ultra rapide. Propulse par Sharp.",
"Pret pour les reseaux isoles.",
"Un seul conteneur Docker.",
"Open source. Toujours.",
"Chaque pixel reste sur votre materiel.",
"Votre serveur. Vos regles.",
"Se deploie en un seul docker pull.",
"L'alternative auto-hebergee.",
"Redimensionnez, compressez, convertissez. Localement.",
"Editeur d'images gratuit. Sans filigrane.",
"Traitement d'images par lot. Illimite.",
"Supprimez les arriere-plans hors ligne.",
"Alternative auto-hebergee a Canva.",
"Aucune cle API necessaire.",
"Conforme au RGPD par conception.",
"Fonctionne sans internet.",
],
},
changePassword: {
title: "Changez votre mot de passe",
description:
"Vous devez definir un nouveau mot de passe avant de continuer. Votre mot de passe doit contenir au moins 8 caracteres avec des majuscules, des minuscules et un chiffre.",
usernameLabel: "Nom d'utilisateur",
currentPasswordLabel: "Mot de passe actuel",
currentPasswordPlaceholder: "Saisissez le mot de passe actuel",
newPasswordLabel: "Nouveau mot de passe",
generateButton: "Generer un mot de passe fort",
newPasswordPlaceholder: "Au moins 8 caracteres",
confirmPasswordLabel: "Confirmer le nouveau mot de passe",
confirmPasswordPlaceholder: "Repetez le nouveau mot de passe",
passwordsMismatch: "Les mots de passe ne correspondent pas",
failedError: "Echec du changement de mot de passe",
connectionError: "Erreur de connexion",
changingButton: "Modification en cours...",
changeButton: "Changer le mot de passe",
sidebarTitle: "Presque fini",
sidebarDescription:
"Definissez un mot de passe fort pour securiser votre compte, puis vous serez pret.",
},
automate: {
title: "Automatiser",
invalidPipelineFile: "Ce n'est pas un fichier Pipeline SnapOtter valide",
newerVersion: "Ce Pipeline a ete cree avec une version plus recente de SnapOtter",
missingName: "Le fichier Pipeline n'a pas de nom",
noSteps: "Le fichier Pipeline n'a aucune etape",
importFailed: "Echec de l'importation",
couldNotRead: "Impossible de lire le fichier Pipeline",
fileCount: "{count} fichier",
fileCountPlural: "{count} fichiers",
importFromLibrary: "Importer depuis la bibliotheque",
addButton: "+ Ajouter",
libraryButton: "Bibliotheque",
clearButton: "Effacer",
processingFailed: "Echec du traitement pour ce fichier",
processingMultiple: "Traitement de {count} fichiers...",
processingPipeline: "Traitement du Pipeline...",
processButton: "Traiter",
processButtonMultiple: "Traiter ({count})",
processAllButton: "Tout traiter ({count})",
addTool: "Ajouter un outil",
toolPalette: "Palette d'outils",
clickToAdd: "Cliquez pour ajouter au Pipeline",
savedLabel: "Enregistre",
importButton: "Importer",
noSavedPipelines: "Aucun Pipeline enregistre",
stepCount: "({count} etape)",
stepCountPlural: "({count} etapes)",
exportPipeline: "Exporter le Pipeline",
deletePipeline: "Supprimer le Pipeline",
moreCount: "+{count} de plus",
pipelineBuilder: "Constructeur de Pipeline",
addToolsPrompt: "Ajoutez des outils depuis la palette pour commencer",
stepsConfigured: "{count} etape configuree",
stepsConfiguredPlural: "{count} etapes configurees",
noFilesLoaded: "Aucun fichier charge",
downloadZip: "Telecharger le ZIP",
saveButton: "Enregistrer",
pipelineNamePlaceholder: "Nom du Pipeline",
descriptionPlaceholder: "Description",
savingIndicator: "...",
cancelButton: "Annuler",
preview: "Apercu",
previousImage: "Image precedente",
nextImage: "Image suivante",
imageCounter: "{current} / {total}",
imageArea: "Zone d'image",
templateSocialMedia: "Pret pour les reseaux sociaux",
templatePrivacyClean: "Nettoyage de confidentialite",
templateWebOptimization: "Optimisation web",
templateProfilePicture: "Photo de profil",
templateWatermarkBatch: "Lot de filigranes",
createNew: "Creer une nouvelle automatisation",
savedAutomations: "Automatisations enregistrees",
templates: "Modeles",
addStep: "Ajouter une etape",
removeStep: "Supprimer",
moveUp: "Monter",
moveDown: "Descendre",
savePipeline: "Enregistrer le Pipeline",
runPipeline: "Traiter",
pipelineName: "Nom du Pipeline",
pipelineDescription: "Description (optionnel)",
noStepsPrompt: "Ajoutez des etapes pour construire votre automatisation",
noStepsHeading: "No steps yet",
searchToolsPlaceholder: "Search tools...",
step: "Etape",
},
nav: {
tools: "Outils",
reader: "Lecteur",
automate: "Automatiser",
editor: "Editeur",
files: "Fichiers",
help: "Aide",
settings: "Parametres",
grid: "Grille",
},
files: {
myFiles: "My Files",
recentTab: "Recent",
uploadTab: "Upload Files",
fileDetailsAriaLabel: "File Details",
fileDetailsHeading: "File Details",
searchPlaceholder: "Search files...",
selectedCount: "{count} selected",
fileCount: "{count} files",
fileCountSingular: "{count} file",
noFilesFound: "No files found",
selectFilePrompt: "Select a file to view details",
openFile: "Open File",
openInPipeline: "Open in Pipeline",
name: "Name",
format: "Format",
size: "Size",
dimensions: "Dimensions",
version: "Version",
toolsUsed: "Tools Used",
none: "None",
delete: "Delete",
pipeline: "Pipeline",
download: "Download",
},
dropzone: {
unsupportedFileType: "Ce type de fichier n'est pas pris en charge par cet outil",
urlFetchFailed: "Impossible de recuperer l'image depuis l'URL",
ariaLabel: "Zone de depot de fichiers",
dropPrompt: "Deposez vos images ici",
browseOrPaste: "cliquez n'importe ou pour parcourir, ou collez depuis le presse-papiers",
uploadButton: "Importer",
defaultFormats: "PNG, JPG, WebP, HEIC, RAW, PSD et plus de 65 formats",
orSeparator: "ou",
urlPlaceholder: "Collez l'URL de l'image...",
urlLoadingIndicator: "...",
addUrlButton: "Ajouter",
importMultipleUrls: "Importer plusieurs URLs...",
filesSelected: "{count} fichiers selectionnes",
},
reviewPanel: {
processedResultAlt: "Resultat traite",
sizeLabel: "Taille : {size}",
typeLabel: "Type : {type}",
processedLabel: "Traite : {time}",
undoButton: "Annuler",
downloadButton: "Telecharger",
openInEditor: "Ouvrir dans l'editeur",
reviewHeading: "Verification",
continueEditing: "Continuer l'edition",
},
features: {
notEnabledTitle: "Fonctionnalite non activee",
notEnabledDescription:
"Cette fonctionnalite n'est pas activee. Demandez a votre administrateur de l'activer dans les Parametres.",
requiresDownload: "Cette fonctionnalite necessite un telechargement supplementaire (~{size})",
retryButton: "Reessayer",
queued: "En file d'attente pour l'installation...",
enableButton: "Activer {name}",
lessThanMinute: "Moins d'une minute restante",
oneMinuteLeft: "~1 minute restante",
minutesLeft: "~{mins} minutes restantes",
progressMessages: [
"Presque fini... sans doute...",
"Les bonnes choses prennent du temps...",
"Toujours plus rapide que de regarder secher la peinture...",
"Votre patience est vraiment admirable...",
"Ca travaille dur dans les coulisses...",
"C'est la partie passionnante, faites-nous confiance...",
"Des operations importantes en arriere-plan...",
"Si vous lisez ceci, ca fonctionne...",
"Preparation de quelque chose de genial...",
"Ca vaut chaque seconde, promis...",
"Le suspense fait partie de l'experience...",
"On apprend de nouveaux tours a votre ordinateur...",
"Configuration de vos super-pouvoirs...",
"Vos images vous remercieront plus tard...",
"Chargement... mais avec du style...",
"Le moment ideal pour un cafe...",
"Rome ne s'est pas faite en un jour non plus...",
"Chut... un genie au travail...",
"Vos photos vont etre jalouses de ce qui arrive...",
"On rassemble l'equipe de choc...",
"Deballage de merveilles...",
"On a presque fini de penser a commencer... on plaisante...",
"Retournement de situation : ca fait vraiment quelque chose...",
"Prechauffage des moteurs creatifs...",
"Chargement de l'imagination...",
"Ce n'est pas un ecran de veille, promis...",
"Le grand art prend du temps a s'installer...",
"Votre futur vous vous remerciera...",
"Recuperation de fichiers tres intelligents...",
"Tenez bon, le meilleur reste a venir...",
],
},
help: {
heading: "Aide",
gettingStarted: {
heading: "Pour commencer",
description:
"Selectionnez un outil dans la barre laterale ou recherchez-en un. Importez une image en la faisant glisser sur la page ou en cliquant sur la zone d'import. Ajustez les parametres et telechargez votre resultat.",
},
keyboardShortcuts: {
heading: "Raccourcis clavier",
focusSearchBar: "Focus sur la barre de recherche",
goToTools: "Aller aux outils",
toggleTheme: "Changer de theme",
goToResize: "Aller a Redimensionner",
goToCrop: "Aller a Recadrer",
goToCompress: "Aller a Compresser",
goToConvert: "Aller a Convertir",
goToRemoveBackground: "Aller a Supprimer l'arriere-plan",
goToWatermarkText: "Aller au Filigrane texte",
goToStripMetadata: "Aller a Supprimer les metadonnees",
goToImageInfo: "Aller a Info image",
},
resources: {
heading: "Ressources",
githubLink: "Depot GitHub",
reportIssueLink: "Signaler un probleme",
docsLink: "Documentation",
apiRefLink: "Reference API (Swagger)",
},
versionLabel: "SnapOtter v{version}",
},
errors: {
generic: "Une erreur est survenue",
offline: "Vous etes hors ligne",
reconnecting: "Reconnexion au serveur...",
connected: "Connecte",
processingFailed: "Echec du traitement pour ce fichier",
timeout: "Delai d'attente depasse. Le serveur est peut-etre surcharge. Veuillez reessayer.",
networkError: "Erreur reseau. Verifiez votre connexion.",
invalidCredentials: "Nom d'utilisateur ou mot de passe invalide",
connectionError: "Erreur de connexion",
},
analytics: {
consentTitle: "Aidez a ameliorer SnapOtter",
consentDescription:
"Les statistiques d'utilisation anonymes nous aident a corriger les bugs et a creer les outils dont vous avez vraiment besoin. Vos images et fichiers restent sur votre machine.",
consentChangeable: "Vous pouvez desactiver cela a tout moment dans les Parametres.",
acceptButton: "Bien sur, ca me va",
declineButton: "Pas maintenant",
settingsTitle: "Analytique produit",
settingsDescription:
"Partagez des donnees d'utilisation anonymes pour aider a ameliorer SnapOtter.",
settingsPrivacy: "Vos images ne quittent jamais votre machine.",
settingsDisabledByAdmin:
"L'analytique produit a ete desactivee par l'administrateur du serveur.",
learnMore: "En savoir plus",
},
sidebar: {
tools: "Outils",
grid: "Grille",
automate: "Automatiser",
editor: "Editeur",
files: "Fichiers",
help: "Aide",
settings: "Parametres",
},
toolCard: {
addToFavourites: "Ajouter aux favoris",
},
appLayout: {
mobileNavTools: "Outils",
mobileNavAutomate: "Automatiser",
mobileNavEditor: "Editeur",
mobileNavFiles: "Fichiers",
mobileNavSettings: "Parametres",
},
a11y: {
skipToContent: "Skip to main content",
openSidebar: "Open sidebar",
closeSidebar: "Close sidebar",
closeSettings: "Close settings",
closeHelp: "Close help",
closeDialog: "Close dialog",
zoomIn: "Zoom in",
zoomOut: "Zoom out",
fitToView: "Fit to view",
actualSize: "Actual size",
previousImage: "Previous image",
nextImage: "Next image",
imageArea: "Image area",
imageViewer: "Image viewer",
fileDropZone: "File drop zone",
imageDropZone: "Image drop zone",
beforeAfterSlider: "Before/after comparison slider",
imageControls: "Image controls",
zoomControls: "Zoom controls",
dragToReorder: "Drag to reorder",
whiteBackground: "White background",
blackBackground: "Black background",
expandPanel: "Expand panel",
collapsePanel: "Collapse panel",
swapDimensions: "Swap dimensions",
applyCrop: "Apply crop",
cancelCrop: "Cancel crop",
fontFamily: "Font family",
textColor: "Text color",
flipHorizontal: "Flip horizontal",
flipVertical: "Flip vertical",
hexColorValue: "Hex color value",
backgroundColor: "Background color",
foregroundColor: "Foreground color",
swapColors: "Swap foreground and background colors",
resetColors: "Reset to default black and white",
foregroundHex: "Foreground color hex value",
undo: "Undo",
redo: "Redo",
layers: "Layers",
addLayer: "Add layer",
deleteLayer: "Delete layer",
cancelOperation: "Cancel operation",
fill: "Fill",
fileDetails: "File details",
language: "Language",
selected: "Selected",
deleteKey: "Delete key",
editRole: "Edit role",
deleteRole: "Delete role",
notInstalled: "Not installed",
queued: "Queued for install",
installing: "Installing",
imageNOfTotal: "Image {n} of {total}",
processingComplete: "Image processed successfully",
processingFailed: "Processing failed",
settingsDialog: "Settings",
helpDialog: "Help",
navigationMenu: "Navigation",
},
} as const;