{
  "dz.offline": "Fonctionne hors ligne",
  "dz.fav.add": "Ajouter aux favoris",
  "dz.fav.remove": "Retirer des favoris",
  "dz.fav.added": "Ajouté aux favoris",
  "dz.fav.removed": "Retiré des favoris",
  "dz.fav.yours": "VOS FAVORIS",
  "dz.fav.edit": "Modifier",
  "dz.fav.done": "Terminé",
  "dz.fav.seeAll": "Voir tous les favoris",
  "dz.fav.editing": "Modification des favoris",
  "dz.fav.lifted": "Soulevé",
  "dz.fav.moved": "{name} déplacé à la position {n} sur {m}",
  "dz.tools.title": "Outils",
  "dz.tools.sub": "Convertissez et modifiez — directement sur votre appareil.",
  "dz.tools.mp3.name": "Vidéo → MP3",
  "dz.tools.mp3.benefit": "Extrayez l'audio de n'importe quelle vidéo.",
  "dz.tools.trim.name": "Découper une vidéo",
  "dz.tools.trim.benefit": "Ne gardez que la partie dont vous avez besoin.",
  "dz.tools.gif.name": "Vidéo → GIF",
  "dz.tools.gif.benefit": "Créez un GIF en boucle à partir d'un extrait.",
  "dz.tools.audio.name": "Convertisseur audio",
  "dz.tools.audio.benefit": "MP3 ou M4A, à votre choix.",
  "dz.tools.mute.name": "Couper ou extraire le son",
  "dz.tools.mute.benefit": "Rendez une vidéo muette ou extrayez son son.",
  "dz.hub.all": "Tout",
  "dz.hub.media": "Médias",
  "dz.hub.docs": "Documents",
  "dz.hub.gen": "Générateurs",
  "dz.hub.calc": "Calculateurs",
  "dz.hub.saudi": "Arabie saoudite et islam",
  "dz.hub.daily": "Au quotidien",
  "dz.hub.videoAudio": "Vidéo et audio",
  "dz.hub.images": "Images",
  "dz.hub.pdf": "PDF",
  "dz.hub.generators": "Générateurs",
  "dz.hub.saudiBusiness": "Arabie saoudite et affaires",
  "dz.hub.health": "Santé",
  "dz.hub.finance": "Finance",
  "dz.hub.data": "Données et fichiers",
  "dz.hub.ai": "IA et voix",
  "dz.hub.videoEditing": "Montage vidéo",
  "dz.hub.emptyCat": "D'autres outils arrivent dans cette catégorie.",
  "dz.shell.drop": "Déposez un fichier ou touchez pour en choisir un",
  "dz.shell.accepts": "Formats acceptés : {list}",
  "dz.shell.remove": "Retirer le fichier",
  "dz.shell.preparing": "Préparation du moteur… (la première fois seulement)",
  "dz.shell.another": "En convertir un autre",
  "dz.shell.savedTo": "Enregistré dans Téléchargements sous {name}",
  "dz.shell.saveNoSpace": "Espace libre insuffisant pour enregistrer ce fichier.",
  "dz.shell.saveFailed": "Le fichier n'a pas pu être enregistré. Réessayez.",
  "dz.shell.sizeNote": "{from} → {to}",
  "dz.shell.failed": "Cela n'a pas fonctionné — le fichier n'est peut-être pas pris en charge.",
  "dz.shell.eta": "~{min} min restantes",
  "dz.mp3.verb": "Convertir",
  "dz.mp3.quality": "Qualité",
  "dz.mp3.high": "Élevée",
  "dz.mp3.medium": "Moyenne",
  "dz.mp3.small": "Légère",
  "dz.mp3.pageTitle": "Vidéo → MP3 — Outils Dzzz",
  "dz.trim.verb": "Découper",
  "dz.trim.in": "Début",
  "dz.trim.out": "Fin",
  "dz.trim.keyframe": "Les coupes s'alignent sur l'image clé la plus proche (rapide, sans réencodage).",
  "dz.trim.pageTitle": "Découper une vidéo — Outils Dzzz",
  "dz.gif.verb": "Créer le GIF",
  "dz.gif.size": "Taille",
  "dz.gif.fps": "Images/s",
  "dz.gif.estimate": "~{size}",
  "dz.gif.tooBig": "~{size} — volumineux",
  "dz.gif.cap": "Les GIF sont limités à 30 secondes.",
  "dz.gif.pageTitle": "Vidéo → GIF — Outils Dzzz",
  "dz.audio.verb": "Convertir",
  "dz.audio.format": "Format",
  "dz.audio.addMore": "Ajouter des fichiers",
  "dz.audio.pageTitle": "Convertisseur audio — Outils Dzzz",
  "dz.mute.verb": "Traiter",
  "dz.mute.mute": "Couper le son de la vidéo",
  "dz.mute.extract": "Extraire l'audio",
  "dz.mute.pageTitle": "Couper ou extraire le son — Outils Dzzz",
  "dz.consent.download": "Télécharger le moteur (~{mb} Mo · une seule fois)",
  "dz.consent.helper": "Fonctionne entièrement sur votre appareil — rien n'est envoyé.",
  "dz.consent.cellular": "Vous utilisez les données mobiles — il s'agit d'un téléchargement unique de {mb} Mo.",
  "dz.consent.progress": "{loaded} / {total} Mo",
  "dz.consent.ready": "Moteur prêt",
  "dz.consent.error": "Le téléchargement a échoué ou a expiré — vérifiez votre connexion et réessayez.",
  "dz.consent.progressLabel": "Téléchargement du moteur",
  "dz.consent.prepare": "Préparer le moteur (une seule fois)",
  "dz.eng.needsNetwork": "Nécessite un téléchargement unique de {size} Mo — connectez-vous à Internet pour utiliser cet outil.",
  "dz.gen.exporting": "Exportation…",
  "dz.qr.name": "Générateur de QR code",
  "dz.qr.benefit": "Créez un QR code pour un lien, un Wi-Fi ou un contact.",
  "dz.qr.link": "Lien",
  "dz.qr.text": "Texte",
  "dz.qr.wifi": "Wi-Fi",
  "dz.qr.vcard": "Contact",
  "dz.qr.whatsapp": "WhatsApp",
  "dz.qr.waCode": "Indicatif du pays",
  "dz.qr.waNumber": "Numéro de téléphone",
  "dz.qr.waMessage": "Message à préremplir (facultatif)",
  "dz.qr.waNote": "Le scan ouvre une discussion avec ce numéro, message prêt à envoyer. Nous ne pouvons pas vérifier si ce numéro a un compte WhatsApp.",
  "dz.qr.ssid": "Nom du réseau",
  "dz.qr.password": "Mot de passe",
  "dz.qr.security": "Sécurité",
  "dz.qr.name.f": "Nom",
  "dz.qr.phone": "Téléphone",
  "dz.qr.email": "E-mail",
  "dz.qr.fg": "Premier plan",
  "dz.qr.bg": "Arrière-plan",
  "dz.qr.contrast": "Un faible contraste peut nuire à la fiabilité du scan.",
  "dz.qr.dots": "Style des points",
  "dz.qr.corners": "Style des coins",
  "dz.qr.ec": "Correction d'erreurs",
  "dz.qr.logo": "Logo central",
  "dz.qr.logoHint": "Un logo augmente la correction d'erreurs pour que le code reste lisible.",
  "dz.qr.size": "Taille",
  "dz.qr.advanced": "Avancé",
  "dz.qr.seo": "Un QR code transforme un lien, une connexion WiFi ou une fiche de contact en code-barres carré que n'importe quelle caméra de téléphone peut lire. Générez le vôtre ici : il ne quitte jamais votre appareil.",
  "dz.gen.png": "PNG",
  "dz.gen.svg": "SVG",
  "dz.barcode.name": "Générateur de codes-barres",
  "dz.barcode.benefit": "Des codes-barres prêts pour la vente, qui se scannent.",
  "dz.barcode.format": "Format",
  "dz.barcode.value": "Valeur",
  "dz.barcode.checkDigit": "Clé de contrôle {d} ajoutée",
  "dz.barcode.encodedLabel": "Encodé :",
  "dz.barcode.text": "Afficher le texte",
  "dz.barcode.batch": "Mode par lot",
  "dz.barcode.batchHint": "Générez pour une liste de produits : une valeur par ligne.",
  "dz.barcode.batchPlaceholder": "Une valeur par ligne",
  "dz.barcode.zip": "Tout télécharger (ZIP)",
  "dz.barcode.invalid": "{n} ligne(s) non valide(s) ignorée(s)",
  "dz.barcode.seo": "Créez des codes-barres de vente lisibles (EAN-13, UPC-A, CODE128 et autres) avec clé de contrôle automatique. Traitez toute une liste de produits en lot dans un ZIP, le tout sur votre appareil.",
  "dz.barcode.err.empty": "Saisissez une valeur.",
  "dz.barcode.err.nondigit": "{label} n'accepte que des chiffres.",
  "dz.barcode.err.length": "{label} nécessite {n} chiffres : le dernier est calculé.",
  "dz.barcode.err.code39": "CODE39 accepte A–Z, 0–9 et - . $ / + % espace.",
  "dz.barcode.err.code128": "CODE128 accepte les caractères ASCII imprimables.",
  "dz.barcode.barWidth": "Largeur des barres",
  "dz.barcode.height": "Hauteur",
  "dz.barcode.pageTitle": "Générateur de codes-barres — Outils Dzzz",
  "dz.qr.secNone": "Aucune",
  "dz.qr.style.square": "Carré",
  "dz.qr.style.rounded": "Arrondi",
  "dz.qr.style.dots": "Points",
  "dz.qr.corner.square": "Carré",
  "dz.qr.corner.dot": "Point",
  "dz.qr.corner.extraRounded": "Très arrondi",
  "dz.qr.removeLogo": "Retirer le logo",
  "dz.qr.pageTitle": "Générateur de QR code — Outils Dzzz",
  "dz.qr.tel": "Numéro de téléphone",
  "dz.qr.mail": "Adresse e-mail",
  "dz.qr.geo": "Repère de position",
  "dz.qr.ready": "Généré",
  "dz.qr.copyImg": "Copier l'image",
  "dz.qr.copiedImg": "Image copiée.",
  "dz.qr.copyImgFail": "Échec de la copie : utilisez plutôt Télécharger le PNG.",
  "dz.qr.alsoVideo": "Ou télécharger cette vidéo",
  "dz.qr.alsoVideoApp": "Ouvrir sur dzzz.ai",
  "dz.qr.tooLong": "Trop long à encoder avec ce niveau de correction d'erreurs. Baissez le niveau ou raccourcissez la valeur.",
  "dz.qr.arrivalTooLong": "Cette valeur est trop longue pour un QR code, donc rien n'a été rempli. Raccourcissez-la et réessayez.",
  "dz.qr.encodedLabel": "Encodé :",
  "dz.qr.descContact": "Fiche de contact",
  "dz.qr.nothingYet": "Rien à encoder pour l'instant",
  "dz.merge.name": "Fusionner des PDF",
  "dz.merge.benefit": "Combinez des PDF en un seul, dans l'ordre de votre choix.",
  "dz.merge.verb": "Fusionner les PDF",
  "dz.merge.drop": "Déposez des PDF ou touchez pour choisir",
  "dz.merge.pages": "{n} pages",
  "dz.merge.range": "Pages",
  "dz.merge.rangePlaceholder": "toutes (p. ex. 1-3, 7)",
  "dz.merge.rangeBad": "Vérifiez la plage de pages.",
  "dz.merge.reorderHint": "Faites glisser, ou placez le focus sur une ligne et appuyez sur Espace puis sur les flèches.",
  "dz.merge.tooBig": "Cela dépasse la limite de 200 Mo : essayez avec moins de fichiers ou des fichiers plus petits.",
  "dz.merge.addMore": "Ajouter des PDF",
  "dz.merge.remove": "Retirer",
  "dz.merge.lifted": "{name} soulevé. Utilisez les flèches pour déplacer, Espace pour déposer.",
  "dz.merge.moved": "Déplacé à la position {i} sur {total}.",
  "dz.merge.seo": "Combinez plusieurs PDF en un seul fichier : faites glisser pour définir l'ordre, choisissez des plages de pages, puis fusionnez. Tout s'exécute sur votre appareil ; vos fichiers ne le quittent jamais.",
  "dz.heic.name": "HEIC vers JPG",
  "dz.heic.benefit": "Convertissez les photos d'iPhone en JPG ou PNG.",
  "dz.heic.verb": "Convertir",
  "dz.heic.format": "Sortie",
  "dz.heic.jpg": "JPG",
  "dz.heic.png": "PNG",
  "dz.heic.quality": "Qualité",
  "dz.heic.saveAll": "Tout enregistrer (ZIP)",
  "dz.heic.seo": "HEIC est le format photo haute efficacité utilisé par les iPhone depuis iOS 11 : des fichiers plus légers, mais que de nombreux téléphones Android et sites web ne peuvent pas ouvrir. Convertissez ici vos photos HEIC en JPG ou PNG, directement sur votre appareil.",
  "dz.heic.pageTitle": "HEIC vers JPG — Outils Dzzz",
  "dz.cimg.name": "Compresser des images",
  "dz.cimg.benefit": "Réduisez le poids des photos pour le web, l'e-mail ou le stockage, directement sur votre appareil.",
  "dz.cimg.drop": "Déposez des images ou touchez pour choisir",
  "dz.cimg.accept": "JPEG, PNG, WebP, AVIF, HEIC",
  "dz.cimg.addMore": "Ajouter des images",
  "dz.cimg.quality": "Qualité",
  "dz.cimg.format": "Format de sortie",
  "dz.cimg.keep": "Conserver",
  "dz.cimg.jpeg": "JPEG",
  "dz.cimg.webp": "WebP",
  "dz.cimg.avif": "AVIF",
  "dz.cimg.png": "PNG",
  "dz.cimg.maxDim": "Dimension maximale en px (facultatif)",
  "dz.cimg.verb": "Compresser",
  "dz.cimg.optimal": "Déjà optimale",
  "dz.cimg.total": "Total",
  "dz.cimg.capCount": "Trop d'images : la limite est de 100 par lot.",
  "dz.cimg.capHard": "Taille totale trop élevée : la limite est de 200 Mo par lot (le traitement utilise la mémoire de votre appareil).",
  "dz.cimg.capSoft": "Lot volumineux : cela peut prendre un moment et utiliser beaucoup de mémoire.",
  "dz.cimg.avifSlow": "L'encodage AVIF est lent sur téléphone : cela peut prendre du temps.",
  "dz.cimg.seo": "Compressez en masse des photos JPEG, PNG, WebP, AVIF et HEIC, directement sur votre appareil. Choisissez une qualité et un format de sortie, redimensionnez si vous le souhaitez selon une dimension maximale, puis téléchargez un fichier ou tout dans un ZIP. Rien n'est envoyé.",
  "dz.cimg.pageTitle": "Compresser des images — Outils Dzzz",
  "dz.imgconv.name": "Convertisseur d'images",
  "dz.imgconv.benefit": "Convertissez vos photos entre JPEG, PNG, WebP et AVIF, directement sur votre appareil.",
  "dz.imgconv.verb": "Convertir",
  "dz.imgconv.seo": "Convertissez des photos JPEG, PNG, WebP, AVIF et HEIC vers n'importe lequel de ces formats, directement sur votre appareil. Choisissez d'abord le format de sortie, puis ajustez la qualité ou redimensionnez si vous le souhaitez, et téléchargez un fichier ou tout dans un ZIP. Rien n'est envoyé.",
  "dz.imgconv.pageTitle": "Convertisseur d'images — Outils Dzzz",
  "dz.merge.moveUp": "Monter",
  "dz.merge.moveDown": "Descendre",
  "dz.merge.skipped": "{n} fichier(s) n'ont pas pu être lus (peut-être protégés par mot de passe).",
  "dz.merge.pageTitle": "Fusionner des PDF — Outils Dzzz",
  "dz.shell.zipAll": "Tout enregistrer (ZIP)",
  "dz.compress.name": "Compresser un PDF",
  "dz.compress.benefit": "Réduisez le poids d'un PDF pour l'e-mail.",
  "dz.compress.verb": "Compresser",
  "dz.compress.preset": "Qualité",
  "dz.compress.screen": "Plus léger",
  "dz.compress.screenSub": "Écran",
  "dz.compress.ebook": "Équilibré",
  "dz.compress.ebookSub": "Livre numérique",
  "dz.compress.print": "Haute qualité",
  "dz.compress.printSub": "Impression",
  "dz.compress.already": "Ce PDF est déjà compressé.",
  "dz.compress.keep": "Conserver l'original",
  "dz.compress.encrypted": "Ce PDF est protégé par mot de passe : retirez d'abord le mot de passe.",
  "dz.compress.delta": "{from} → {to}",
  "dz.compress.drop": "Déposez des PDF ou touchez pour choisir",
  "dz.compress.seo": "Réduisez le poids d'un PDF pour l'e-mail et les envois grâce à Ghostscript, directement sur votre appareil. Choisissez un préréglage de qualité : rien n'est envoyé à un serveur.",
  "dz.curves.name": "PDF en courbes",
  "dz.curves.benefit": "Vectorisez les polices pour que les PDF s'impriment partout.",
  "dz.curves.verb": "Convertir en courbes",
  "dz.curves.drop": "Déposez des PDF ou touchez pour choisir",
  "dz.curves.encrypted": "Ce PDF est protégé par mot de passe : retirez d'abord le mot de passe.",
  "dz.curves.tooBig": "Cela dépasse la limite de 100 Mo.",
  "dz.curves.already": "Aucune police dans ce PDF : il est déjà prêt pour l'impression.",
  "dz.curves.keep": "Conserver l'original",
  "dz.curves.verifyFail": "Échec de la vérification : le fichier converti ne correspondait pas à l'original, il n'a donc pas été fourni.",
  "dz.curves.proof": "{fonts} polices → 0 · {pages} pages vérifiées · {iou} % de correspondance de l'encre",
  "dz.curves.warnForms": "Les champs de formulaire ont été aplatis : leur apparence peut changer.",
  "dz.curves.warnAnnots": "Les annotations ont été aplaties : leur apparence peut changer.",
  "dz.curves.engineHint": "Moteur d'environ 12 Mo",
  "dz.curves.seo": "Convertissez toutes les polices d'un PDF en contours vectoriels (courbes / 转曲) pour les imprimeurs, directement sur votre appareil. L'outil vérifie le résultat pixel par pixel : rien n'est envoyé à un serveur.",
  "dz.curves.pageTitle": "PDF en courbes — Outils Dzzz",
  "dz.bg.name": "Supprimer l'arrière-plan",
  "dz.bg.benefit": "Effacez l'arrière-plan des photos, sur votre appareil.",
  "dz.bg.verb": "Supprimer l'arrière-plan",
  "dz.bg.working": "Traitement en cours… environ {s} s sur cet appareil",
  "dz.bg.bgLabel": "Arrière-plan",
  "dz.bg.transparent": "Transparent",
  "dz.bg.color": "Couleur",
  "dz.bg.blur": "Flouter l'original",
  "dz.bg.before": "Avant",
  "dz.bg.after": "Après",
  "dz.bg.afterPct": "{n} % après",
  "dz.bg.downscaled": "Image volumineuse réduite à 4096 px.",
  "dz.bg.capImages": "Seules les {n} premières images ont été ajoutées : retirez-en une pour en ajouter une autre.",
  "dz.bg.drop": "Déposez une image ou touchez pour choisir",
  "dz.bg.seo": "Supprimez gratuitement et sans limite l'arrière-plan de vos images : un modèle d'IA s'exécute entièrement sur votre appareil, vos photos ne le quittent donc jamais. Pas d'envoi, pas de crédits, pas de compte.",
  "dz.hub.tagAi": "IA",
  "dz.hub.tagNew": "Nouveau",
  "dz.hub.pageTitle": "Outils — Dzzz",
  "dz.hub.filterAria": "Filtrer par catégorie",
  "dz.hub.viewAll": "Voir tous les outils : {cat}",
  "dz.search.regionLabel": "Rechercher des outils",
  "dz.search.hubHint": "Recherchez parmi {n} outils, par nom ou par fonction.",
  "dz.bg.failed": "Cela n'a pas fonctionné : essayez une autre image.",
  "dz.compress.engineHint": "Moteur d'environ 12 Mo",
  "dz.bg.engineHint": "Moteur d'environ 40 Mo",
  "dz.bg.pageTitle": "Supprimer l'arrière-plan — Outils Dzzz",
  "dz.compress.tooBig": "Cela dépasse la limite de 100 Mo.",
  "dz.compress.pageTitle": "Compresser un PDF — Outils Dzzz",
  "dz.iban.name": "Outils IBAN",
  "dz.iban.benefit": "Validez et décodez les IBAN de tous les pays du registre SWIFT, et construisez des IBAN saoudiens, koweïtiens, bahreïnis et omanais, instantanément",
  "dz.iban.tagNew": "Nouveau",
  "dz.iban.tabValidate": "Valider",
  "dz.iban.tabGenerate": "Générer",
  "dz.iban.tabDecode": "Décoder",
  "dz.iban.paste": "Coller",
  "dz.iban.lockLine": "Vérifié sur votre appareil : l'IBAN n'est envoyé nulle part.",
  "dz.iban.idleHelper": "Collez un IBAN et nous le vérifierons instantanément. Les espaces, les préfixes « IBAN : » et les chiffres arabes sont pris en charge.",
  "dz.iban.whatIs": "Qu'est-ce qu'un IBAN ?",
  "dz.iban.validTitle": "Format d'IBAN valide",
  "dz.iban.nonGuarantee": "Le format est valide, mais cela ne confirme pas que le compte existe. Seule la banque peut le confirmer.",
  "dz.iban.copyGrouped": "Copier (groupé)",
  "dz.iban.copyCompact": "Copier sans espaces",
  "dz.iban.qr": "QR",
  "dz.iban.copied": "Copié",
  "dz.iban.errLength": "Longueur incorrecte pour ce pays",
  "dz.iban.errCountry": "Code pays non reconnu",
  "dz.iban.errChars": "Contient des caractères non valides",
  "dz.iban.errStructure": "Longueur correcte, mais la structure est erronée",
  "dz.iban.errChecksum": "Échec de la clé de contrôle",
  "dz.iban.errChecksumD": "Probablement une faute de frappe : vérifiez bien les chiffres.",
  "dz.iban.warnBank": "Calcul valide, code banque inconnu",
  "dz.iban.warnBankD": "La clé de contrôle est correcte, mais ce code banque ne figure pas dans notre table : il s'agit peut-être d'un code récent ou d'une agence à l'étranger.",
  "dz.iban.segCountry": "Pays",
  "dz.iban.segCheck": "Clé de contrôle",
  "dz.iban.segBank": "Banque",
  "dz.iban.segAccount": "Numéro de compte",
  "dz.iban.notInIban": "Ce qui ne figure pas dans un IBAN",
  "dz.iban.notInIbanD": "Le nom du titulaire et l'état du compte ne sont pas enregistrés dans un IBAN.",
  "dz.iban.ghostCountry": "Pays : 2 lettres",
  "dz.iban.ghostCheck": "Clé de contrôle : 2 chiffres",
  "dz.iban.ghostBank": "Code banque : la longueur varie selon le pays",
  "dz.iban.ghostAccount": "Compte : le reste du numéro",
  "dz.iban.genBank": "Banque",
  "dz.iban.genBankSearch": "Rechercher des banques…",
  "dz.iban.genAccount": "Numéro de compte",
  "dz.iban.legacyTag": "ancien nom, devenue {name}",
  "dz.iban.genDisclaimer": "Généré à partir de vos saisies : confirmez auprès de votre banque avant de le partager.",
  "dz.iban.kbdHint": "Ctrl/Cmd+V valide le suivant, sans avoir à replacer le curseur",
  "dz.iban.seo": "Validez et décodez les IBAN de tous les pays du registre SWIFT, et construisez des IBAN saoudiens, koweïtiens, bahreïnis et omanais, entièrement sur votre appareil : clé de contrôle MOD-97, identification de la banque et export en QR, sans rien envoyer à un serveur.",
  "dz.iban.pageTitle": "Validateur et générateur d'IBAN — Outils Dzzz",
  "dz.iban.pageDesc": "Validez et décodez les IBAN de tous les pays du registre SWIFT et construisez des IBAN saoudiens, koweïtiens, bahreïnis et omanais sur votre appareil : clé de contrôle MOD-97, identification de la banque et export en QR, sans rien envoyer nulle part.",
  "dz.zatca.name": "QR de facture ZATCA",
  "dz.zatca.benefit": "Décodez ou créez un QR de facture électronique saoudienne",
  "dz.zatca.tagNew": "Nouveau",
  "dz.zatca.decode": "Décoder",
  "dz.zatca.generate": "Générer",
  "dz.zatca.paste": "Coller le texte",
  "dz.zatca.upload": "Importer",
  "dz.zatca.scan": "Scanner",
  "dz.zatca.total": "Total (TVA incluse)",
  "dz.zatca.vatAmount": "Montant de la TVA",
  "dz.zatca.seller": "Vendeur",
  "dz.zatca.vatNo": "Numéro de TVA",
  "dz.zatca.time": "Horodatage",
  "dz.zatca.crypto": "Champs cryptographiques présents ({n})",
  "dz.zatca.cryptoItem": "Balise {tag} · {size} octets",
  "dz.zatca.vatSanity": "Ce n'est pas un numéro de TVA à 15 chiffres.",
  "dz.zatca.disclaimer": "Champs décodés : cela ne vérifie ni le cachet ZATCA ni l'enregistrement.",
  "dz.zatca.copied": "Copié",
  "dz.zatca.pastePlaceholder": "Collez le texte Base64 du QR…",
  "dz.zatca.err1": "Ce n'est pas un QR code",
  "dz.zatca.err1d": "Essayez une photo plus nette, avec le code entier dans le cadre.",
  "dz.zatca.err2": "Ce QR n'est pas une facture électronique ZATCA",
  "dz.zatca.err2d": "Il s'agit apparemment d'un QR ordinaire, pas d'une facture ZATCA.",
  "dz.zatca.err3": "Données tronquées",
  "dz.zatca.err3d": "Une partie du code est illisible : scannez-le de nouveau ou importez une image plus nette.",
  "dz.zatca.hijriLabel": "Hégirien",
  "dz.zatca.another": "Décoder un autre",
  "dz.zatca.seo": "Décodez et générez le QR de facture électronique saoudienne ZATCA (phase 1, TLV/Base64) entièrement sur votre appareil : lisez le vendeur, le numéro de TVA, l'horodatage et les totaux, ou créez un QR à partir de votre facture. Rien n'est envoyé, et les cachets cryptographiques ne sont jamais vérifiés.",
  "dz.zatca.genSeller": "Nom du vendeur",
  "dz.zatca.genVat": "Numéro de TVA (15 chiffres)",
  "dz.zatca.genVatWarn": "Les numéros de TVA comptent 15 chiffres et commencent et finissent généralement par 3.",
  "dz.zatca.genTime": "Horodatage",
  "dz.zatca.genTotal": "Total de la facture (TVA incluse)",
  "dz.zatca.genVatAmount": "Montant de la TVA",
  "dz.zatca.auto15": "auto 15 %",
  "dz.zatca.live": "Aperçu en direct",
  "dz.zatca.copyB64": "Copier le Base64",
  "dz.zatca.genDisclaimer": "Génère le QR de facture simplifiée (champs de la phase 1 uniquement). La conformité complète à ZATCA ne se limite pas au QR : vérifiez vos obligations de facturation.",
  "dz.zatca.cameraAim": "Pointez la caméra vers le QR de la facture",
  "dz.zatca.cameraAuto": "Détection automatique, aucun bouton nécessaire",
  "dz.zatca.torch": "Lampe torche",
  "dz.zatca.uploadInstead": "Importer une photo à la place",
  "dz.zatca.cameraDenied": "Caméra indisponible : importez plutôt une photo.",
  "dz.zatca.close": "Fermer",
  "dz.zatca.pageTitle": "QR de facture électronique ZATCA — Décoder et générer — Outils Dzzz",
  "dz.zatca.pageDesc": "Décodez et générez des QR de facture électronique saoudienne (phase 1) sur votre appareil : lisez le vendeur, le numéro de TVA et les montants, ou créez un QR, sans rien importer.",
  "dz.hijri.name": "Hégirien ↔ grégorien",
  "dz.hijri.benefit": "Convertissez des dates, des âges et des écarts",
  "dz.hijri.tagNew": "Nouveau",
  "dz.hijri.convert": "Convertir",
  "dz.hijri.age": "Âge",
  "dz.hijri.diff": "Écart",
  "dz.hijri.hijri": "Hégirien — Umm al-Qura",
  "dz.hijri.greg": "Grégorien",
  "dz.hijri.day": "Jour",
  "dz.hijri.month": "Mois",
  "dz.hijri.year": "Année",
  "dz.hijri.swap": "Inverser le sens",
  "dz.hijri.disclaimer": "Utilise le calendrier officiel Umm al-Qura. Les observances religieuses peuvent différer selon l'observation de la lune.",
  "dz.hijri.ageGreg": "Âge grégorien",
  "dz.hijri.ageHijri": "Âge hégirien",
  "dz.hijri.years": "ans",
  "dz.hijri.days": "jours",
  "dz.hijri.nextGreg": "Prochain anniversaire grégorien",
  "dz.hijri.nextHijri": "Prochain anniversaire hégirien",
  "dz.hijri.from": "Du",
  "dz.hijri.to": "Au",
  "dz.hijri.diffDays": "{n} jours",
  "dz.hijri.outOfRange": "Cette date est en dehors de la plage prise en charge (1900–2077).",
  "dz.hijri.copy": "Copier",
  "dz.hijri.copied": "Copié",
  "dz.hijri.seo": "Convertissez entre dates hégiriennes (Umm al-Qura, calendrier hégirien calculé utilisé en Arabie saoudite) et grégoriennes, calculez un âge dans les deux calendriers ou l'écart entre deux dates, instantanément, sur votre appareil, avec le calendrier Umm al-Qura.",
  "dz.hijri.pageTitle": "Convertisseur hégirien ↔ grégorien — Outils Dzzz",
  "dz.hijri.pageDesc": "Convertissez entre dates hégiriennes et grégoriennes, calculez l'âge et l'écart entre deux dates, entièrement sur votre appareil, sans rien envoyer.",
  "dz.esb.name": "Indemnité de fin de service",
  "dz.esb.benefit": "Voyez votre indemnité et le calcul exact",
  "dz.esb.tagNew": "Nouveau",
  "dz.esb.wage": "Salaire mensuel (SAR)",
  "dz.esb.wageHint": "Salaire tel que défini par la loi — en général le salaire de base plus les indemnités régulières ; en cas de doute, utilisez le salaire brut.",
  "dz.esb.wageWord": "salaire",
  "dz.esb.start": "Date de début",
  "dz.esb.end": "Date de fin",
  "dz.esb.reason": "Pourquoi l'emploi prend-il fin ?",
  "dz.esb.rEmployer": "Mon employeur a mis fin à mon contrat",
  "dz.esb.rExpired": "Le contrat à durée déterminée est arrivé à terme",
  "dz.esb.rResigned": "J'ai démissionné",
  "dz.esb.rForced": "J'ai quitté mon poste pour un motif reconnu par la loi / force majeure",
  "dz.esb.rMarriage": "Salariée quittant son poste dans les 6 mois suivant son mariage ou les 3 mois suivant un accouchement",
  "dz.esb.total": "Votre indemnité",
  "dz.esb.line1": "5 premières années — un demi-mois par année",
  "dz.esb.line2": "Après 5 ans — un mois par année",
  "dz.esb.line3": "Durée de service",
  "dz.esb.line4": "Coefficient de droit",
  "dz.esb.full": "droit complet",
  "dz.esb.yearsUnit": "{n} ans",
  "dz.esb.hijriInput": "Saisir les dates en calendrier hégirien",
  "dz.esb.disclaimer": "Estimation selon le Code du travail saoudien — votre contrat ou un tribunal peut aboutir à un résultat différent.",
  "dz.esb.notAdvice": "À titre informatif — ne constitue pas un avis juridique.",
  "dz.esb.copySummary": "Copier le résumé (prêt pour WhatsApp)",
  "dz.esb.copied": "Copié",
  "dz.esb.seo": "Estimez votre indemnité de fin de service (مكافأة نهاية الخدمة, mukafaʼat nihayat al-khidma : indemnité versée par l'employeur à la fin du contrat selon le droit du travail saoudien) selon les articles 84 et 85 du Code du travail, avec le détail exact : part des cinq premières années, part au-delà de cinq ans, année incomplète et coefficient en cas de démission. Fonctionne entièrement sur votre appareil.",
  "dz.esb.pageTitle": "Calculateur d'indemnité de fin de service — Outils Dzzz",
  "dz.esb.pageDesc": "Calculez l'indemnité de fin de service d'après le droit du travail saoudien — indiquez le motif de fin de contrat, le salaire et la durée de service.",
  "dz.zakat.name": "Calculateur de zakat",
  "dz.zakat.benefit": "Calculez votre zakat, avec le nisab",
  "dz.zakat.tagNew": "Nouveau",
  "dz.zakat.hint": "La plupart des gens n'ont besoin que de Espèces et Or — les sections vides comptent pour zéro.",
  "dz.zakat.cash": "Espèces et comptes bancaires",
  "dz.zakat.gold": "Or et argent",
  "dz.zakat.goldGrams": "Or (grammes)",
  "dz.zakat.goldPrice": "Prix de l'or / gramme",
  "dz.zakat.silverGrams": "Argent (grammes)",
  "dz.zakat.silverPrice": "Prix de l'argent / gramme",
  "dz.zakat.stocks": "Actions et fonds",
  "dz.zakat.inventory": "Stock de l'entreprise",
  "dz.zakat.receivables": "Sommes qui vous sont dues",
  "dz.zakat.liabilities": "Dettes exigibles dans l'année (−)",
  "dz.zakat.fiqhJewelry": "Les avis des savants divergent — beaucoup incluent les bijoux portés.",
  "dz.zakat.fiqhStocks": "Les traitements varient ; la valeur de marché est un choix courant par défaut.",
  "dz.zakat.priceHint": "Vérifier le prix de l'or aujourd'hui",
  "dz.zakat.nisabBasis": "Base du nisab",
  "dz.zakat.goldBasis": "Or (85 g)",
  "dz.zakat.silverBasis": "Argent (595 g)",
  "dz.zakat.nisab": "Seuil du nisab",
  "dz.zakat.above": "Au-dessus du nisab — la zakat est due.",
  "dz.zakat.near": "Proche du nisab — vérifiez à nouveau avant la fin de l'année.",
  "dz.zakat.below": "Aucune zakat due cette année.",
  "dz.zakat.running": "Total à ce stade",
  "dz.zakat.net": "Base − dettes",
  "dz.zakat.nisabCheck": "Vérification du nisab",
  "dz.zakat.rate": "Année",
  "dz.zakat.lunar": "Année lunaire (2,5 %)",
  "dz.zakat.solar": "Année solaire (2,577 %)",
  "dz.zakat.due": "Zakat à payer",
  "dz.zakat.disclaimer": "À visée pédagogique — consultez un savant pour toute décision religieuse.",
  "dz.zakat.notAdvice": "À titre informatif — ne constitue pas un avis religieux.",
  "dz.zakat.seo": "Calculez votre zakat sur les espèces, l'or, l'argent, les actions et les actifs d'entreprise, avec le nisab (seuil minimal de richesse imposable à la zakat) calculé en direct d'après le prix actuel de l'or ou de l'argent. Choisissez l'année lunaire (2,5 %) ou solaire (2,577 %). À visée pédagogique, sur l'appareil, rien n'est envoyé.",
  "dz.zakat.pageTitle": "Calculateur de zakat — Outils Dzzz",
  "dz.zakat.pageDesc": "Calculez la zakat due sur votre patrimoine — saisissez le montant et définissez les critères du nisab (seuil minimal de richesse imposable à la zakat).",
  "dz.tafqit.name": "Tafqit : montant en lettres",
  "dz.tafqit.benefit": "Écrivez n'importe quel montant en lettres arabes",
  "dz.tafqit.tagNew": "Nouveau",
  "dz.tafqit.amount": "Montant",
  "dz.tafqit.currency": "Devise",
  "dz.tafqit.wrapper": "Formule «فقط … لا غير»",
  "dz.tafqit.ar": "عربي",
  "dz.tafqit.en": "Anglais",
  "dz.tafqit.copy": "Copier",
  "dz.tafqit.copied": "Copié",
  "dz.tafqit.subunitNote": "Sous-unités à 3 décimales prises en charge (fils / baisa)",
  "dz.tafqit.persistNote": "Votre devise est mémorisée — les montants, jamais.",
  "dz.tafqit.seo": "Convertissez n'importe quel nombre en lettres arabes (Tafqit : écriture d'un montant en lettres en arabe) pour vos chèques et factures — grammaire correcte pour le genre, le duel et la formule «فقط … لا غير» — avec en plus un onglet en lettres anglaises. SAR, AED, KWD, BHD, QAR, OMR, USD, EUR avec les bons noms de sous-unités et les bonnes décimales. Sur l'appareil, instantané.",
  "dz.tafqit.pageTitle": "Tafqit — Nombres en lettres arabes — Outils Dzzz",
  "dz.tafqit.pageDesc": "Convertissez facilement des nombres en lettres arabes — devises, millions et milliards pris en charge, sans aucune donnée envoyée.",
  "dz.atext.name": "Utilitaires de texte arabe",
  "dz.atext.benefit": "Chiffres, signes diacritiques, compteur, normalisation",
  "dz.atext.tagNew": "Nouveau",
  "dz.atext.numerals": "Chiffres",
  "dz.atext.diacritics": "Signes diacritiques",
  "dz.atext.counter": "Compteur",
  "dz.atext.normalize": "Normaliser",
  "dz.atext.input": "Texte",
  "dz.atext.toWestern": "Vers chiffres occidentaux (0-9)",
  "dz.atext.toArabic": "Vers chiffres arabes orientaux (٠-٩)",
  "dz.atext.stripHarakat": "Supprimer les signes diacritiques",
  "dz.atext.stripTatweel": "Supprimer le tatweel (ـ)",
  "dz.atext.chars": "caractères",
  "dz.atext.words": "mots",
  "dz.atext.segments": "segments SMS",
  "dz.atext.tweet": "X / 280",
  "dz.atext.encoding": "L'arabe utilise l'UCS-2 → 70 caractères par SMS, 67 en cas de SMS enchaînés.",
  "dz.atext.transforms": "Transformations — facultatives, en direct",
  "dz.atext.unifyAlef": "Unifier les formes d'alif (أ إ آ → ا)",
  "dz.atext.alefMaqsura": "ى → ي",
  "dz.atext.taMarbuta": "ة → ه",
  "dz.atext.normNote": "Pour la recherche et la correspondance — pas pour la rédaction formelle.",
  "dz.atext.copy": "Copier",
  "dz.atext.copied": "Copié",
  "dz.atext.seo": "Quatre utilitaires de texte arabe en un : convertir entre chiffres arabes orientaux et occidentaux, supprimer les signes diacritiques (tashkeel), compter les caractères et les mots avec un compteur de segments SMS UCS-2 honnête et un décompte pondéré X/280, et normaliser les formes des lettres pour la recherche. Le tout sur votre appareil.",
  "dz.atext.pageTitle": "Utilitaires de texte arabe — Outils Dzzz",
  "dz.atext.pageDesc": "Convertissez les chiffres et signes diacritiques arabes, comptez les caractères et les tweets — chiffres arabes orientaux, tashkeel, longueur des messages et compteurs de tweets.",
  "dz.shop.name": "Aide aux courses",
  "dz.shop.benefit": "Remises, prix à l'unité et meilleure offre",
  "dz.shop.tagNew": "Nouveau",
  "dz.shop.discount": "Remise",
  "dz.shop.perUnit": "Prix à l'unité",
  "dz.shop.offers": "Comparer les offres",
  "dz.shop.symbol": "Devise",
  "dz.shop.original": "Prix d'origine",
  "dz.shop.disc1": "Remise %",
  "dz.shop.disc2": "+ % supplémentaires",
  "dz.shop.youPay": "Vous payez",
  "dz.shop.youSave": "Vous économisez",
  "dz.shop.combined": "Remise cumulée réelle",
  "dz.shop.whyNot": "Pourquoi pas 70 % ?",
  "dz.shop.whyNotD": "Le % supplémentaire s'applique au prix déjà remisé : les remises cumulées se multiplient, elles ne s'additionnent jamais.",
  "dz.shop.reverse": "Je connais le prix final — trouver mon % de remise",
  "dz.shop.finalPrice": "Prix final",
  "dz.shop.gotOff": "Vous avez obtenu {n} % de remise",
  "dz.shop.vatToggle": "Prix TTC (TVA de 15 % incluse)",
  "dz.shop.vatInfo": "Part de TVA : {v}",
  "dz.shop.label": "Libellé",
  "dz.shop.price": "Prix",
  "dz.shop.qty": "Quantité",
  "dz.shop.unit": "Unité",
  "dz.shop.g": "g",
  "dz.shop.kg": "kg",
  "dz.shop.ml": "ml",
  "dz.shop.l": "L",
  "dz.shop.pcs": "pièces",
  "dz.shop.per": "par {unit}",
  "dz.shop.addRow": "Ajouter un produit (jusqu'à 6)",
  "dz.shop.unitMismatch": "Passez à des unités identiques pour comparer",
  "dz.shop.unitVerdict": "{label} est {n} % moins cher par {unit}",
  "dz.shop.offerA": "Offre A",
  "dz.shop.offerB": "Offre B",
  "dz.shop.dealType": "Type d'offre",
  "dz.shop.dSimple": "Prix simple",
  "dz.shop.dPct": "% de remise",
  "dz.shop.dBogo": "X achetés, Y offerts",
  "dz.shop.dBundle": "Lot (« 3 pour 25 »)",
  "dz.shop.dSecond": "% de remise sur le deuxième article",
  "dz.shop.perItem": "par article",
  "dz.shop.best": "Meilleur rapport qualité-prix",
  "dz.shop.verdict": "{winner} est {n} % moins cher par article",
  "dz.shop.tie": "Même valeur — choisissez selon votre préférence",
  "dz.shop.buyX": "Acheter",
  "dz.shop.getY": "Offerts",
  "dz.shop.pctOff": "% de remise",
  "dz.shop.bundleQty": "Quantité du lot",
  "dz.shop.bundlePrice": "Prix du lot",
  "dz.shop.seo": "Un calculateur de supermarché pour votre téléphone : calculez une vraie remise (y compris les offres cumulées « 50 % + 20 % supplémentaires » — le total réel est de 60 %, pas de 70 %), comparez le prix au kilo ou au litre entre produits, et trouvez quelle promotion (un acheté, un offert ; lots ; remise sur le deuxième article) est vraiment la moins chère par article. Sur votre appareil, instantané.",
  "dz.shop.relatedExtras": "À voir aussi : Outils pour les courses",
  "dz.shop.pageTitle": "Assistant de courses — Remises et prix à l'unité — Outils Dzzz",
  "dz.shop.pageDesc": "Calculez le meilleur prix entre plusieurs offres — remises en pourcentage, offres cumulées, prix à l'unité et achat le moins cher, sans aucune donnée envoyée.",
  "dz.shx.name": "Outils pour les courses",
  "dz.shx.benefit": "Partage du pourboire, budget, TVA et objectifs d'épargne",
  "dz.shx.title": "Outils pour les courses",
  "dz.shx.currency": "Libellé de la devise",
  "dz.shx.tabTip": "Pourboire et partage",
  "dz.shx.tabBudget": "Budget par article",
  "dz.shx.tabVat": "Ajouter/retirer la TVA",
  "dz.shx.tabSave": "Objectif d'épargne",
  "dz.shx.bill": "Montant de l'addition",
  "dz.shx.tipPct": "Pourboire %",
  "dz.shx.people": "Nombre de personnes",
  "dz.shx.total": "Total avec pourboire",
  "dz.shx.perPerson": "Par personne",
  "dz.shx.modeSplit": "Répartir le budget",
  "dz.shx.modeHowMany": "Combien puis-je en acheter",
  "dz.shx.totalBudget": "Budget total",
  "dz.shx.itemsCount": "Nombre d'articles",
  "dz.shx.perItem": "Budget par article",
  "dz.shx.unitPrice": "Prix par article",
  "dz.shx.canBuy": "Vous pouvez acheter {n} articles",
  "dz.shx.leftOver": "Reste",
  "dz.shx.dirAdd": "Ajouter la TVA",
  "dz.shx.dirRemove": "Retirer la TVA",
  "dz.shx.amount": "Montant",
  "dz.shx.vatPct": "TVA %",
  "dz.shx.net": "Net (hors TVA)",
  "dz.shx.vatAmount": "Montant de la TVA",
  "dz.shx.gross": "Brut (TVA incluse)",
  "dz.shx.target": "Montant cible",
  "dz.shx.current": "Épargné jusqu'ici",
  "dz.shx.monthly": "Épargne mensuelle",
  "dz.shx.monthsNeeded": "{n} mois pour atteindre votre objectif",
  "dz.shx.needMonthly": "Saisissez un montant mensuel pour voir votre échéancier",
  "dz.shx.alreadyMet": "Vous avez déjà atteint votre objectif",
  "dz.shx.completionGreg": "Date d'achèvement (grégorienne)",
  "dz.shx.completionHijri": "Date d'achèvement (hégirienne)",
  "dz.shx.relatedShopping": "À voir aussi : Aide aux courses",
  "dz.shx.disclaimer": "À des fins de planification uniquement — ne constitue pas un conseil financier.",
  "dz.shx.seo": "Un calculateur d'appoint pour vos courses : partagez une addition avec pourboire entre plusieurs personnes, calculez un budget par article ou le nombre d'unités que vous pouvez acheter, ajoutez ou retirez la TVA, et voyez en combien de mois vous atteindrez un objectif d'épargne — avec la date d'achèvement en calendriers grégorien et hégirien. Sur votre appareil, instantané.",
  "dz.shx.pageTitle": "Outils pour les courses — Pourboire, budget, TVA et objectif d'épargne — Outils Dzzz",
  "dz.shx.pageDesc": "Partagez une addition avec pourboire, planifiez un budget par article, ajoutez ou retirez la TVA et voyez en combien de mois vous atteindrez un objectif d'épargne — avec la date d'achèvement en calendriers grégorien et hégirien. Fonctionne entièrement sur votre appareil.",
  "dz.bmi.name": "Calculateur d'IMC",
  "dz.bmi.benefit": "Indice de masse corporelle avec plage de poids sain",
  "dz.bmi.title": "Calculateur d'IMC",
  "dz.bmi.height": "Taille",
  "dz.bmi.weight": "Poids",
  "dz.bmi.age": "Âge (facultatif)",
  "dz.bmi.metric": "cm / kg",
  "dz.bmi.imperial": "ft-in / lb",
  "dz.bmi.ft": "ft",
  "dz.bmi.in": "in",
  "dz.bmi.result": "Votre IMC",
  "dz.bmi.cat.under": "Insuffisance pondérale",
  "dz.bmi.cat.normal": "Plage normale",
  "dz.bmi.cat.over": "Surpoids",
  "dz.bmi.cat.obese": "Plage d'obésité",
  "dz.bmi.healthy": "Poids sain pour votre taille :",
  "dz.bmi.unitKg": "kg",
  "dz.bmi.unitLb": "lb",
  "dz.bmi.childNote": "Les catégories d'IMC des adultes ne s'appliquent pas aux enfants et aux adolescents — leur croissance s'évalue avec des courbes interprétées par un professionnel de santé.",
  "dz.bmi.disclaimer": "L'IMC est une mesure de dépistage approximative, pas un diagnostic — parlez-en à un professionnel de santé pour un avis personnalisé.",
  "dz.bmi.seo": "Calculateur d'IMC gratuit avec unités métriques et impériales, catégories de l'OMS et votre plage de poids sain. Fonctionne entièrement sur votre appareil.",
  "dz.bmi.relatedCal": "À voir aussi : Calculateur de calories",
  "dz.bmi.pageTitle": "Calculateur d'IMC — Outils Dzzz",
  "dz.cal.name": "Calculateur de calories",
  "dz.cal.tagNew": "Nouveau",
  "dz.cal.benefit": "Métabolisme de base, dépense totale, totaux de repas et planificateur d'objectif sans pression",
  "dz.cal.title": "Calculateur de calories",
  "dz.cal.tabBmr": "BMR/TDEE",
  "dz.cal.tabMeal": "Total du repas",
  "dz.cal.tabGoal": "Objectif et macros",
  "dz.cal.metric": "cm / kg",
  "dz.cal.imperial": "ft-in / lb",
  "dz.cal.age": "Âge",
  "dz.cal.sexLabel": "Sexe",
  "dz.cal.sexMale": "Homme",
  "dz.cal.sexFemale": "Femme",
  "dz.cal.height": "Taille",
  "dz.cal.weight": "Poids",
  "dz.cal.ft": "ft",
  "dz.cal.in": "in",
  "dz.cal.weightLb": "Poids (lb)",
  "dz.cal.activityLabel": "Niveau d'activité",
  "dz.cal.act.sedentary": "Sédentaire (peu ou pas d'exercice)",
  "dz.cal.act.light": "Activité légère (1 à 3 jours/semaine)",
  "dz.cal.act.moderate": "Activité modérée (3 à 5 jours/semaine)",
  "dz.cal.act.active": "Actif (6 à 7 jours/semaine)",
  "dz.cal.act.veryActive": "Très actif (métier physique ou entraînement deux fois par jour)",
  "dz.cal.bmrLabel": "BMR",
  "dz.cal.tdeeLabel": "TDEE",
  "dz.cal.kcalDay": "kcal/jour",
  "dz.cal.kcalUnit": "kcal",
  "dz.cal.meaning": "Le BMR (métabolisme de base) est l'énergie que votre corps dépense au repos ; le TDEE (dépense énergétique totale) y ajoute votre niveau d'activité.",
  "dz.cal.childNote": "Ces formules de calories sont conçues pour les adultes — les besoins énergétiques des enfants et des adolescents doivent être évalués avec un pédiatre ou un diététicien.",
  "dz.cal.relatedBmi": "À voir aussi : Calculateur d'IMC",
  "dz.cal.ingName": "Ingrédient",
  "dz.cal.ingAmount": "Quantité",
  "dz.cal.ingKcal": "kcal",
  "dz.cal.removeRow": "Retirer l'ingrédient",
  "dz.cal.addIngredient": "Ajouter un ingrédient",
  "dz.cal.mealTotal": "Total du repas",
  "dz.cal.servings": "Portions",
  "dz.cal.perServing": "Par portion",
  "dz.cal.mealMacros": "Protéines {p} g · Glucides {c} g · Lipides {f} g",
  "dz.cal.ingP": "P (g)",
  "dz.cal.ingC": "G (g)",
  "dz.cal.ingF": "L (g)",
  "dz.cal.deficitLabel": "Ajustement calorique quotidien",
  "dz.cal.def.gentle": "Doux",
  "dz.cal.def.moderate": "Modéré",
  "dz.cal.def.steep": "Marqué",
  "dz.cal.deficit": "Déficit",
  "dz.cal.surplus": "Excédent",
  "dz.cal.cautionDeficit": "Au-delà de -750 kcal/jour, le déficit est plus marqué que la plupart des recommandations. Le calcul fonctionne quand même ici — sachez simplement qu'il vaut mieux planifier avec un professionnel un déficit important et prolongé.",
  "dz.cal.dailyTarget": "Objectif quotidien",
  "dz.cal.minSafeNote": "Cet objectif est inférieur à 1 200 kcal/jour, ce que la plupart des adultes ont du mal à tenir avec une alimentation équilibrée. Envisagez un déficit plus faible, ou demandez conseil à un professionnel.",
  "dz.cal.needBmr": "Remplissez l'onglet BMR/TDEE pour voir votre objectif quotidien personnalisé.",
  "dz.cal.presetBalanced": "Équilibré 30/40/30",
  "dz.cal.presetCustom": "Personnalisé",
  "dz.cal.macroProtein": "Protéines",
  "dz.cal.macroCarbs": "Glucides",
  "dz.cal.macroFat": "Lipides",
  "dz.cal.customTotal": "Total {n} %",
  "dz.cal.disclaimer": "Des estimations, pas des prescriptions — pour toute décision médicale ou alimentaire, consultez un médecin ou un diététicien.",
  "dz.cal.seo": "Calculateur de calories gratuit — BMR (métabolisme de base), TDEE selon le niveau d'activité, total de repas et planificateur d'objectif et de macronutriments sans pression. Fonctionne entièrement sur votre appareil.",
  "dz.cal.pageTitle": "Calculateur de calories — Outils Dzzz",
  "dz.loan.name": "Calculateur de prêt et d'intérêts",
  "dz.loan.benefit": "Mensualités, intérêts composés et vérité sur les taux forfaitaires",
  "dz.loan.title": "Calculateur de prêt et d'intérêts",
  "dz.loan.tabLoan": "Prêt",
  "dz.loan.tabSavings": "Épargne",
  "dz.loan.tabFlat": "Taux forfaitaire → TAEG",
  "dz.loan.principal": "Capital",
  "dz.loan.rate": "Taux annuel %",
  "dz.loan.flatRate": "Taux forfaitaire %",
  "dz.loan.termYears": "Durée (années)",
  "dz.loan.contribution": "Versement mensuel",
  "dz.loan.compounding": "Capitalisation",
  "dz.loan.compMonthly": "Mensuelle",
  "dz.loan.compQuarterly": "Trimestrielle",
  "dz.loan.compYearly": "Annuelle",
  "dz.loan.currency": "Libellé de la devise",
  "dz.loan.payment": "Mensualité",
  "dz.loan.totalInterest": "Total des intérêts",
  "dz.loan.totalPaid": "Total payé",
  "dz.loan.schedule": "Tableau d'amortissement",
  "dz.loan.month": "Mois",
  "dz.loan.colPayment": "Versement",
  "dz.loan.colPrincipal": "Capital",
  "dz.loan.colInterest": "Intérêts",
  "dz.loan.colBalance": "Solde",
  "dz.loan.futureValue": "Valeur future",
  "dz.loan.contributed": "Total versé",
  "dz.loan.growth": "Gain",
  "dz.loan.aprResult": "TAEG approximatif sur capital restant dû",
  "dz.loan.flatNote": "Les banques annoncent des taux forfaitaires ; le coût réel est plus élevé.",
  "dz.loan.disclaimer": "À titre informatif uniquement — ne constitue pas un conseil financier.",
  "dz.loan.seo": "Calculateur gratuit de prêt, d'épargne et de conversion du taux forfaitaire en TAEG, avec tableau d'amortissement. Indépendant de la devise, fonctionne entièrement sur votre appareil.",
  "dz.loan.pageTitle": "Calculateur de prêt et d'intérêts — Outils Dzzz",
  "dz.fxc.name": "Convertisseur de devises",
  "dz.fxc.benefit": "Taux en direct pour les principales devises et celles du Golfe",
  "dz.fxc.title": "Convertisseur de devises",
  "dz.fxc.amount": "Montant",
  "dz.fxc.from": "De",
  "dz.fxc.to": "Vers",
  "dz.fxc.swap": "Inverser les devises",
  "dz.fxc.asOf": "Taux au {time} · source : {source}",
  "dz.fxc.stale": "Les taux peuvent être obsolètes (au {time}) — impossible de récupérer des taux récents.",
  "dz.fxc.unavailable": "Taux indisponibles — connectez-vous une fois à Internet pour les charger.",
  "dz.fxc.othersTitle": "1 {code} équivaut à",
  "dz.fxc.note": "Taux indicatifs — les banques et les bureaux de change appliquent leurs propres taux et frais.",
  "dz.fxc.seo": "Convertisseur de devises gratuit pour SAR, AED, KWD, USD, EUR et plus, avec des taux en direct indicatifs.",
  "dz.fxc.pageTitle": "Convertisseur de devises — Outils Dzzz",
  "dz.myip.name": "Quelle est mon adresse IP ?",
  "dz.myip.benefit": "Votre IP publique, votre position et les infos de votre appareil",
  "dz.myip.title": "Quelle est mon adresse IP ?",
  "dz.myip.ip4": "IP publique (IPv4)",
  "dz.myip.ip6": "IP publique (IPv6)",
  "dz.myip.city": "Ville",
  "dz.myip.country": "Pays",
  "dz.myip.isp": "Fournisseur d'accès (FAI)",
  "dz.myip.browser": "Navigateur",
  "dz.myip.os": "Système d'exploitation",
  "dz.myip.screen": "Écran",
  "dz.myip.timezone": "Fuseau horaire",
  "dz.myip.languages": "Langues",
  "dz.myip.copy": "Copier",
  "dz.myip.copied": "Copié",
  "dz.myip.fetchError": "Impossible de joindre le service de recherche — les infos de l'appareil ci-dessous restent disponibles.",
  "dz.myip.localTitle": "Lu localement sur votre appareil",
  "dz.myip.explainTitle": "De quoi s'agit-il ?",
  "dz.myip.explain": "Votre IP publique est l'adresse que voient les sites web lorsque vous naviguez. Elle révèle votre position approximative et votre fournisseur d'accès — utile pour diagnostiquer une connexion, vérifier un VPN et comprendre votre confidentialité. La recherche envoie votre adresse à notre serveur et au fournisseur de géolocalisation qui renvoie la ville ; notre propre code n'en garde aucune trace, mais les journaux de requêtes de notre hébergeur la conservent pendant 30 jours.",
  "dz.myip.seo": "Consultez votre adresse IP publique, votre position approximative, votre FAI et les détails de votre navigateur. La recherche envoie votre adresse à notre serveur et à un fournisseur de géolocalisation, et les journaux de requêtes la conservent pendant 30 jours.",
  "dz.myip.pageTitle": "Quelle est mon adresse IP — Outils Dzzz",
  "dz.i2p.name": "Images en PDF",
  "dz.i2p.benefit": "Réunissez vos photos dans un seul PDF, dans l'ordre de votre choix",
  "dz.i2p.title": "Images → PDF",
  "dz.i2p.pick": "Choisir des images",
  "dz.i2p.accept": "JPG, PNG, WebP, HEIC",
  "dz.i2p.pageSize": "Taille de page",
  "dz.i2p.fit": "Adapter à l'image",
  "dz.i2p.orientation": "Orientation",
  "dz.i2p.auto": "Auto",
  "dz.i2p.portrait": "Portrait",
  "dz.i2p.landscape": "Paysage",
  "dz.i2p.margin": "Marge",
  "dz.i2p.marginNone": "Aucune",
  "dz.i2p.marginNormal": "10 mm",
  "dz.i2p.make": "Créer le PDF",
  "dz.i2p.working": "Création du PDF…",
  "dz.i2p.save": "Enregistrer le PDF",
  "dz.i2p.capImages": "Maximum 50 images.",
  "dz.i2p.capSize": "La taille totale est limitée à 200 Mo.",
  "dz.i2p.error": "Impossible de traiter l'une des images.",
  "dz.i2p.seo": "Convertissez des photos JPG, PNG, WebP et HEIC en un seul PDF. Réorganisez les pages, choisissez la taille de page et les marges. Tout s'exécute sur votre appareil.",
  "dz.i2p.pageTitle": "Images en PDF — Outils Dzzz",
  "dz.xlc.name": "Convertisseur Excel / CSV",
  "dz.xlc.benefit": "CSV, XLSX, JSON et TSV, dans les deux sens",
  "dz.xlc.title": "Convertisseur Excel / CSV",
  "dz.xlc.pick": "Choisir un fichier",
  "dz.xlc.accept": "CSV, TSV, XLSX, JSON",
  "dz.xlc.badFormat": "Type de fichier non pris en charge — utilisez CSV, TSV, XLSX ou JSON.",
  "dz.xlc.capSize": "Fichier trop volumineux — la limite est de 20 Mo (la conversion s'effectue dans la mémoire de votre appareil).",
  "dz.xlc.sheets": "Feuilles à convertir",
  "dz.xlc.target": "Convertir en",
  "dz.xlc.preview": "Aperçu (premières lignes)",
  "dz.xlc.advanced": "Avancé",
  "dz.xlc.delimiter": "Séparateur",
  "dz.xlc.comma": "Virgule",
  "dz.xlc.semicolon": "Point-virgule",
  "dz.xlc.tabChar": "Tabulation",
  "dz.xlc.encoding": "Encodage d'entrée",
  "dz.xlc.export": "Convertir et enregistrer",
  "dz.xlc.error": "Impossible de lire ce fichier.",
  "dz.xlc.seo": "Convertissez entre CSV, Excel (XLSX), JSON et TSV sur votre appareil. Encodage compatible avec l'arabe grâce au BOM. Rien n'est envoyé.",
  "dz.focal.label": "Point focal",
  "dz.focal.pos": "{x} % horizontalement, {y} % verticalement",
  "dz.vratio.name": "Format vidéo pour les réseaux sociaux",
  "dz.vratio.benefit": "9:16, 1:1, 4:5 — ajuster ou remplir",
  "dz.vratio.title": "Format vidéo pour les réseaux sociaux",
  "dz.vratio.seo": "Recadrez votre vidéo en 9:16, 1:1 ou 4:5 pour les réseaux sociaux — ajustez avec un fond flouté ou uni, ou remplissez le cadre avec un point focal déplaçable. Tout s'exécute sur votre appareil.",
  "dz.vratio.preset916": "9:16",
  "dz.vratio.preset11": "1:1",
  "dz.vratio.preset45": "4:5",
  "dz.vratio.preset169": "16:9",
  "dz.vratio.presetCustom": "Personnalisé",
  "dz.vratio.customW": "Largeur",
  "dz.vratio.customH": "Hauteur",
  "dz.vratio.modeFit": "Ajuster",
  "dz.vratio.modeFill": "Remplir",
  "dz.vratio.bgBlur": "Flou",
  "dz.vratio.bgColor": "Couleur",
  "dz.vratio.focalHint": "Faites glisser le point pour garder la partie importante dans le cadre",
  "dz.vratio.slowNote": "Cette opération réencode votre vidéo : elle peut prendre plusieurs minutes et est bien plus rapide sur un ordinateur.",
  "dz.vratio.capNote": "La vidéo dure plus de {min} minutes — découpez-la d'abord ou traitez-la sur un ordinateur.",
  "dz.vratio.error": "Impossible de lire cette vidéo.",
  "dz.vratio.pageTitle": "Format vidéo pour les réseaux sociaux — Outils Dzzz",
  "dz.wmark.name": "Filigrane vidéo",
  "dz.wmark.benefit": "Signez vos vidéos avec votre logo",
  "dz.wmark.title": "Filigrane vidéo",
  "dz.wmark.seo": "Ajoutez votre logo à vos vidéos comme filigrane — choisissez la position, la taille et l'opacité, ou répétez-le sur toute l'image pour protéger vos propres contenus. Tout s'exécute sur votre appareil.",
  "dz.wmark.pickLogo": "Image du logo",
  "dz.wmark.logoHint": "Un PNG avec transparence donne le meilleur résultat",
  "dz.wmark.position": "Position",
  "dz.wmark.size": "Taille",
  "dz.wmark.opacity": "Opacité",
  "dz.wmark.margin": "Marge (px)",
  "dz.wmark.tiled": "Répéter sur toute l'image",
  "dz.wmark.slowNote": "Cette opération réencode votre vidéo : elle peut prendre plusieurs minutes et est bien plus rapide sur un ordinateur.",
  "dz.wmark.capNote": "La vidéo dure plus de {min} minutes — découpez-la d'abord ou traitez-la sur un ordinateur.",
  "dz.wmark.error": "Ajoutez d'abord une image de logo.",
  "dz.wmark.pageTitle": "Filigrane vidéo — Outils Dzzz",
  "dz.vframe.name": "Cadre pour vidéo et photo",
  "dz.vframe.benefit": "Bordures et cadres pour vidéos et photos",
  "dz.vframe.title": "Cadre pour vidéo et photo",
  "dz.vframe.seo": "Ajoutez une bordure ou un cadre à vos vidéos et photos — couleur unie ou dégradé à deux couleurs, coins arrondis et préréglages rapides comme Polaroid et espace de légende. Les photos sont encadrées instantanément ; les vidéos sont traitées sur votre appareil.",
  "dz.vframe.thickness": "Épaisseur de la bordure (px)",
  "dz.vframe.color": "Couleur de la bordure",
  "dz.vframe.gradient": "Dégradé à deux couleurs",
  "dz.vframe.radius": "Rayon des coins (px)",
  "dz.vframe.presetNone": "Aucun",
  "dz.vframe.presetPolaroid": "Polaroid",
  "dz.vframe.presetCaption": "Espace de légende",
  "dz.vframe.presetSimple": "Le dégradé et les coins arrondis utilisent une bordure uniforme — la forme prédéfinie ne s'applique qu'aux bordures unies.",
  "dz.vframe.slowNote": "Cette opération réencode votre vidéo : elle peut prendre plusieurs minutes et est bien plus rapide sur un ordinateur.",
  "dz.vframe.capNote": "La vidéo dure plus de {min} minutes — découpez-la d'abord ou traitez-la sur un ordinateur.",
  "dz.vframe.fastNote": "Les photos sont encadrées instantanément sur votre appareil.",
  "dz.vframe.pageTitle": "Cadre pour vidéo et photo — Outils Dzzz",
  "dz.vaudio.name": "Ajouter de la musique ou une voix off",
  "dz.vaudio.benefit": "Musique, narration ou les deux — sans réencodage",
  "dz.vaudio.title": "Ajouter de la musique ou une voix off",
  "dz.vaudio.seo": "Ajoutez une musique de fond, remplacez l'audio d'une vidéo ou enregistrez une voix off directement sur votre appareil — décalage de départ, répétition pour couvrir la vidéo et mixage des volumes inclus. Votre vidéo n'est jamais réencodée, donc c'est rapide.",
  "dz.vaudio.modeReplace": "Remplacer",
  "dz.vaudio.modeMix": "Mixer",
  "dz.vaudio.modeVoice": "Voix off",
  "dz.vaudio.pickAudio": "Fichier audio",
  "dz.vaudio.record": "Enregistrer",
  "dz.vaudio.stop": "Arrêter",
  "dz.vaudio.rerecord": "Réenregistrer",
  "dz.vaudio.micDenied": "Microphone indisponible — importez plutôt un fichier audio.",
  "dz.vaudio.offset": "Décalage de départ (secondes)",
  "dz.vaudio.loop": "Répéter l'audio pour couvrir toute la vidéo",
  "dz.vaudio.videoVol": "Volume de la vidéo",
  "dz.vaudio.musicVol": "Volume de la musique",
  "dz.vaudio.fastNote": "Votre vidéo n'est pas réencodée — c'est rapide.",
  "dz.vaudio.error": "Ajoutez ou enregistrez d'abord une piste audio.",
  "dz.vaudio.mixNoAudio": "Mixage impossible — cette vidéo n'a peut-être pas de piste audio. Essayez plutôt le mode Remplacer.",
  "dz.vaudio.pageTitle": "Ajouter de la musique ou une voix off — Outils Dzzz",
  "dz.vsize.name": "Compresser une vidéo",
  "dz.vsize.benefit": "Atteignez une taille cible — 25 Mo pour l'e-mail, 16 Mo pour WhatsApp",
  "dz.vsize.title": "Compresser une vidéo",
  "dz.vsize.seo": "Réduisez une vidéo pour atteindre une taille cible — 25 Mo pour l'e-mail, 16 Mo pour WhatsApp ou une limite personnalisée — ou choisissez un préréglage de qualité. L'encodage en deux passes ne produit jamais un fichier plus volumineux que l'original. Tout s'exécute sur votre appareil.",
  "dz.vsize.presetEmail": "E-mail (25 Mo)",
  "dz.vsize.presetWhatsapp": "WhatsApp (16 Mo)",
  "dz.vsize.presetCustom": "Mo personnalisés",
  "dz.vsize.presetQuality": "Qualité",
  "dz.vsize.customMb": "Taille cible (Mo)",
  "dz.vsize.qLow": "Faible",
  "dz.vsize.qMed": "Moyenne",
  "dz.vsize.qHigh": "Élevée",
  "dz.vsize.slowNote": "La compression vidéo réencode votre fichier : cela peut prendre plusieurs minutes et est bien plus rapide sur un ordinateur.",
  "dz.vsize.capNote": "La vidéo dure plus de {min} minutes — découpez-la d'abord ou traitez-la sur un ordinateur.",
  "dz.vsize.tooSmall": "Cette cible est trop petite pour la durée de cette vidéo.",
  "dz.vsize.already": "Déjà plus petite que la cible — votre original est conservé.",
  "dz.vsize.scaleNote": "Les préréglages de taille réduisent aussi la vidéo à 720p.",
  "dz.vsize.fpsNote": "La compression limite la fréquence d'images à 30 fps.",
  "dz.vsize.error": "Impossible de compresser cette vidéo.",
  "dz.vsize.pageTitle": "Compresser une vidéo — Outils Dzzz",
  "dz.reel.name": "Créateur de Reels",
  "dz.reel.benefit": "Découpez, recadrez en 9:16, ajoutez de la musique et une légende — en un seul export",
  "dz.reel.title": "Créateur de Reels",
  "dz.reel.seo": "Transformez n'importe quel clip en Reel prêt à publier — découpez la meilleure partie, recadrez en 9:16, ajoutez une musique de fond et une légende qui affiche correctement l'arabe et l'anglais, le tout en un seul export. Conçu pour les créateurs et les vendeurs qui réalisent des Reels de produits, entièrement sur votre appareil.",
  "dz.reel.stepTrim": "1. Découper",
  "dz.reel.stepCrop": "2. Recadrer en 9:16",
  "dz.reel.stepMusic": "3. Musique",
  "dz.reel.stepCaption": "4. Légende",
  "dz.reel.cropHint": "La sortie est toujours recadrée en 9:16 (1080×1920). Activez cette option pour choisir le point focal sur l'aperçu — sinon le centre est utilisé.",
  "dz.reel.captionText": "Texte de la légende",
  "dz.reel.captionSize": "Taille",
  "dz.reel.sizeS": "S",
  "dz.reel.sizeM": "M",
  "dz.reel.sizeL": "L",
  "dz.reel.captionColor": "Couleur",
  "dz.reel.posTop": "Haut",
  "dz.reel.posMiddle": "Milieu",
  "dz.reel.posBottom": "Bas",
  "dz.reel.clipCap": "Les clips sont limités à 60 secondes.",
  "dz.reel.slowNote": "Cette opération réencode votre vidéo : elle peut prendre plusieurs minutes et est bien plus rapide sur un ordinateur.",
  "dz.reel.error": "La vidéo dure plus de {min} minutes — découpez-la d'abord ou traitez-la sur un ordinateur.",
  "dz.reel.pageTitle": "Créateur de Reels — Outils Dzzz",
  "dz.gold.name": "Calculateur du prix de l'or",
  "dz.gold.tagNew": "Nouveau",
  "dz.gold.title": "Calculateur du prix de l'or",
  "dz.gold.benefit": "Prix de l'or en direct avec frais de façon et TVA",
  "dz.gold.priceLabel": "Prix au gramme ({karat})",
  "dz.gold.updated": "mis à jour {time}",
  "dz.gold.agoMins": "il y a {n} min",
  "dz.gold.agoHours": "il y a {n} h",
  "dz.gold.agoDays": "il y a {n} j",
  "dz.gold.staleNote": "Le prix est peut-être périmé (dernière mise à jour {time})",
  "dz.gold.refresh": "Actualiser",
  "dz.gold.edit": "Modifier",
  "dz.gold.manualLabel": "Prix au gramme du bijoutier (manuel)",
  "dz.gold.manualHint": "Remplace le prix en direct jusqu'à son effacement.",
  "dz.gold.manualNote": "prix manuel",
  "dz.gold.apply": "Appliquer",
  "dz.gold.cancel": "Annuler",
  "dz.gold.clear": "Effacer",
  "dz.gold.unavailable": "Prix en direct indisponible — saisissez un prix manuellement.",
  "dz.gold.loading": "Chargement du prix de l'or…",
  "dz.gold.karatLabel": "Carat",
  "dz.gold.weight": "Poids (grammes)",
  "dz.gold.mcModeLabel": "Mode de calcul des frais de façon",
  "dz.gold.mcGram": "Par gramme",
  "dz.gold.mcPercent": "Pourcentage",
  "dz.gold.mcPiece": "Par pièce",
  "dz.gold.mcGramInputLabel": "Frais de façon / gramme",
  "dz.gold.mcGramHint": "Frais de façon courants en bijouterie : 20–60 SAR/g",
  "dz.gold.mcPercentInputLabel": "Frais de façon (%)",
  "dz.gold.mcPercentHint": "Courant : 6–12 % de la valeur de l'or brut",
  "dz.gold.mcPieceInputLabel": "Frais de façon (montant fixe)",
  "dz.gold.mcPieceHint": "Un montant fixe pour toute la pièce",
  "dz.gold.profitLabel": "Marge du bijoutier / gramme (facultatif)",
  "dz.gold.vatToggle": "Ajouter la TVA (15 %)",
  "dz.gold.bullionToggle": "Lingot / or d'investissement (exonéré de TVA)",
  "dz.gold.bullionInfo": "L'or d'investissement (pureté de 99 % et plus) est exonéré de TVA en Arabie saoudite ; les bijoux sont taxés à 15 %.",
  "dz.gold.rawLabel": "Valeur de l'or brut",
  "dz.gold.making": "Frais de façon",
  "dz.gold.makingFixed": "fixe",
  "dz.gold.profit": "Marge du bijoutier",
  "dz.gold.subtotal": "Sous-total",
  "dz.gold.vat": "TVA 15 %",
  "dz.gold.exempt": "Exonéré",
  "dz.gold.total": "Total final",
  "dz.gold.currency": "SAR",
  "dz.gold.disclaimer": "Prix indicatif — les bijoutiers fixent eux-mêmes leurs frais de façon et leurs marges. Ceci n'est pas un conseil en investissement.",
  "dz.gold.copySummary": "Copier le résumé (prêt pour WhatsApp)",
  "dz.gold.copied": "Copié",
  "dz.gold.summaryKarat": "Carat",
  "dz.gold.summaryWeight": "Poids",
  "dz.gold.seo": "Calculateur du prix de l'or avec frais de façon et TVA — saisissez le poids de l'or, choisissez le carat (18/21/22/24) et définissez les frais de façon par gramme, en pourcentage ou en montant fixe pour la pièce, avec une TVA de 15 % facultative. Le prix est récupéré en direct et peut aussi être saisi manuellement d'après votre bijoutier ; rien n'est jamais envoyé.",
  "dz.gold.pageTitle": "Calculateur du prix de l'or — Outils Dzzz",
  "dz.gold.pageDesc": "Calculez le prix de l'or avec frais de façon et TVA — prix en direct par carat avec le détail complet.",
  "dz.tr.name": "Transcrire",
  "dz.tr.benefit": "Transformez de l'audio ou une vidéo en texte — sur votre appareil.",
  "dz.tr.tagNew": "Nouveau",
  "dz.tr.engineHint": "Moteur ~80 Mo",
  "dz.tr.seo": "Transcrivez gratuitement de l'audio et des vidéos en texte, entièrement sur votre appareil. L'arabe (تفريغ صوتي عربي) est la spécialité de l'outil et il est pleinement pris en charge, mais une parole claire et proche de l'arabe standard est bien mieux transcrite qu'un dialecte — attendez-vous à corriger un enregistrement dialectal ou bruité. Importez un fichier ou enregistrez depuis votre microphone, obtenez des sous-titres horodatés que vous pouvez modifier directement sur votre appareil, puis exportez-les en TXT, SRT ou VTT. Aucun envoi, aucun compte — et l'outil continue de fonctionner hors ligne une fois le modèle téléchargé.",
  "dz.tr.uploadTab": "Importer un fichier",
  "dz.tr.recordTab": "Enregistrer",
  "dz.tr.drop": "Déposez un fichier audio ou vidéo, ou touchez pour choisir",
  "dz.tr.micDenied": "L'accès au microphone a été refusé — importez plutôt un fichier.",
  "dz.tr.record": "Enregistrer",
  "dz.tr.stop": "Arrêter",
  "dz.tr.rerecord": "Réenregistrer",
  "dz.tr.useRecording": "Utiliser cet enregistrement",
  "dz.tr.model": "Modèle",
  "dz.tr.modelBase": "Base (équilibré)",
  "dz.tr.modelTiny": "Tiny (plus rapide, moins précis)",
  "dz.tr.modelSmall": "Small (meilleur pour l'arabe)",
  "dz.tr.modelSmallNote": "Nettement meilleur avec l'arabe, mais 249 Mo à télécharger et bien plus lent sur téléphone. Idéal sur ordinateur.",
  "dz.tr.language": "Langue",
  "dz.tr.languageHint": "Choisissez la langue de l'audio pour une meilleure précision.",
  "dz.tr.arabicNote": "La précision en arabe dépend beaucoup de l'audio : une parole claire et proche de l'arabe standard est transcrite assez bien, tandis qu'un dialecte, du bruit de fond ou un audio de qualité téléphonique donnent un résultat bien plus approximatif. Attendez-vous à corriger le résultat.",
  "dz.tr.transliterated": "Le résultat est revenu en lettres latines plutôt qu'en écriture arabe. Cela signifie généralement que l'audio était difficile à comprendre — essayez le modèle Small ou vérifiez que la langue est correctement définie.",
  "dz.tr.estimate": "Un enregistrement de {d} prend environ {t} à traiter sur cet appareil. Tout s'exécute ici : gardez cet onglet ouvert.",
  "dz.tr.estimateRate": "Environ {s} s de traitement pour chaque minute d'audio sur cet appareil. Tout s'exécute ici : gardez cet onglet ouvert.",
  "dz.tr.verb": "Transcrire",
  "dz.tr.working": "En cours — environ {s} s de traitement par minute d'audio",
  "dz.tr.elapsed": "Temps écoulé : {t}",
  "dz.tr.elapsedSlow": "Temps écoulé : {t} · plus lent ici car cet appareil utilise le moteur de compatibilité",
  "dz.tr.failed": "Cela n'a pas fonctionné — essayez un autre fichier.",
  "dz.tr.play": "Lire",
  "dz.tr.pause": "Pause",
  "dz.tr.editLine": "Modifier cette ligne",
  "dz.tr.exportTxt": "TXT",
  "dz.tr.exportSrt": "SRT",
  "dz.tr.exportVtt": "VTT",
  "dz.tr.copy": "Copier la transcription",
  "dz.tr.copied": "Copié",
  "dz.tr.another": "Transcrire un autre fichier",
  "dz.tr.pageTitle": "Transcription audio et vidéo gratuite — Outils Dzzz",
  "dz.sub.name": "Traduire des sous-titres",
  "dz.sub.benefit": "Traduisez des sous-titres vidéo entre l'anglais et l'arabe — sur votre appareil.",
  "dz.sub.engineHint": "Moteur ~120 Mo",
  "dz.sub.seo": "Traduisez des sous-titres de vidéo entre l'anglais et l'arabe, entièrement sur votre appareil. Transcrivez une vidéo ou importez un fichier SRT/VTT existant, traduisez chaque ligne en conservant le minutage d'origine, puis exportez des sous-titres en arabe seul ou bilingues, modifiables directement sur votre appareil. Aucun envoi, aucun compte.",
  "dz.sub.videoTab": "À partir d'une vidéo",
  "dz.sub.subtitleTab": "Importer un SRT/VTT",
  "dz.sub.dropVideo": "Déposez un fichier vidéo, ou appuyez pour en choisir un",
  "dz.sub.dropSubtitle": "Déposez un fichier SRT ou VTT, ou appuyez pour en choisir un",
  "dz.sub.parseError": "Impossible de lire ce fichier de sous-titres — vérifiez qu'il s'agit d'un SRT ou d'un VTT valide.",
  "dz.sub.direction": "Sens",
  "dz.sub.dirEnAr": "Anglais → arabe",
  "dz.sub.dirArEn": "Arabe → anglais",
  "dz.sub.outputMode": "Sortie",
  "dz.sub.outTranslated": "Traduction seule",
  "dz.sub.outBilingual": "Bilingue (original + traduction)",
  "dz.sub.mtNote": "La qualité de la traduction automatique varie — relisez et modifiez avant d'exporter.",
  "dz.sub.verb": "Traduire",
  "dz.sub.working": "— ~{s} s sur cet appareil",
  "dz.sub.workingTranscribe": "Transcription en cours…",
  "dz.sub.workingTranslate": "Traduction en cours…",
  "dz.sub.elapsed": "Écoulé : {t}",
  "dz.sub.elapsedSlow": "Écoulé : {t} · plus lent ici, car cet appareil utilise le moteur de compatibilité",
  "dz.sub.failed": "Cela n'a pas fonctionné — essayez un autre fichier.",
  "dz.sub.editLine": "Modifier cette ligne",
  "dz.sub.exportSrt": "SRT",
  "dz.sub.exportVtt": "VTT",
  "dz.sub.another": "Traduire un autre fichier",
  "dz.sub.videoOutput": "Vidéo avec sous-titres",
  "dz.sub.attachSub": "Joindre comme piste de sous-titres (.mkv)",
  "dz.sub.attaching": "Ajout en cours…",
  "dz.sub.burnIn": "Incruster dans la vidéo (expérimental)",
  "dz.sub.burning": "Incrustation en cours…",
  "dz.sub.burnNote": "Expérimental : affiche les sous-titres arabes directement dans l'image à l'aide d'une police intégrée. Vérifiez que l'enchaînement des lettres est correct avant de vous y fier.",
  "dz.sub.postFailed": "Impossible de produire le fichier sous-titré — essayez l'option des sous-titres séparés, ou une autre vidéo.",
  "dz.sub.pageTitle": "Traduction de sous-titres EN↔AR — Outils Dzzz",
  "dz.ms.name": "Résumé de réunion",
  "dz.ms.engineHint": "moteur de ~80 Mo",
  "dz.ms.drop": "Déposez un enregistrement de réunion (audio ou vidéo), ou appuyez pour en choisir un",
  "dz.ms.language": "Langue",
  "dz.ms.languageHint": "Choisissez la langue de l'enregistrement pour une transcription plus précise.",
  "dz.ms.verb": "Transcrire",
  "dz.ms.transcriptLock": "Transcription : sur l'appareil",
  "dz.ms.transcriptLabel": "Transcription",
  "dz.ms.editTranscriptHint": "Relisez ou modifiez la transcription — c'est aussi l'occasion de retirer tout élément sensible avant de l'envoyer où que ce soit.",
  "dz.ms.workingTranscribe": "Transcription en cours…",
  "dz.ms.working": "— ~{s} s sur cet appareil",
  "dz.ms.elapsed": "Écoulé : {t}",
  "dz.ms.elapsedSlow": "Écoulé : {t} · plus lent ici, car cet appareil utilise le moteur de compatibilité",
  "dz.ms.basicLocal": "Plutôt un résumé simple sur l'appareil",
  "dz.ms.resultHeading": "Résumé et actions à mener",
  "dz.ms.sourceLocal": "Résumé simple sur l'appareil",
  "dz.ms.copy": "Copier le résumé",
  "dz.ms.copied": "Copié",
  "dz.ms.exportTxt": "TXT",
  "dz.ms.exportMd": "MD",
  "dz.ms.another": "Résumer une autre réunion",
  "dz.ms.failedTranscribe": "La transcription n'a pas fonctionné — essayez un autre fichier.",
  "dz.ms.failedSummarize": "Le résumé n'a pas fonctionné — réessayez.",
  "dz.ms.retry": "Réessayer",
  "dz.ms.pageTitle": "Résumé de réunion gratuit — Outils Dzzz",
  "dz.enh.name": "Améliorer une vieille photo",
  "dz.enh.benefit": "Restaurez vos vieilles photos en toute confidentialité, sur votre appareil.",
  "dz.enh.drop": "Déposez une vieille photo, ou appuyez pour en choisir une",
  "dz.enh.scaleLabel": "Agrandissement",
  "dz.enh.scale2x": "2× (plus rapide)",
  "dz.enh.scale4x": "4× (plus de détails)",
  "dz.enh.verb": "Améliorer la photo",
  "dz.enh.working": "Amélioration en cours… ~{s} s sur cet appareil",
  "dz.enh.wasmWarn": "Votre appareil ne prend pas en charge WebGPU : le traitement s'exécute donc dans un mode de compatibilité plus lent — les grandes photos sont redimensionnées automatiquement pour que tout reste fluide.",
  "dz.enh.downscaled": "Photo redimensionnée pour que le traitement reste fluide sur cet appareil.",
  "dz.enh.failed": "Cela n'a pas fonctionné — essayez une autre photo.",
  "dz.enh.another": "Améliorer une autre photo",
  "dz.enh.engineHint": "moteur de ~22 Mo",
  "dz.enh.seo": "Restaurez et agrandissez gratuitement des photos anciennes ou en basse résolution : un modèle d'IA de super-résolution s'exécute entièrement sur votre appareil, vos photos ne le quittent donc jamais. Choisissez un agrandissement 2× ou 4×, comparez l'avant et l'après, puis enregistrez le résultat. Aucun envoi, aucun compte.",
  "dz.enh.pageTitle": "Améliorer une vieille photo — Outils Dzzz",
  "dz.dn.name": "Réduire le bruit de la voix",
  "dz.dn.benefit": "Éliminez le bruit de fond de vos enregistrements vocaux — directement sur votre appareil.",
  "dz.dn.drop": "Déposez un fichier audio ou vidéo, ou appuyez pour en choisir un",
  "dz.dn.verb": "Nettoyer l'audio",
  "dz.dn.working": "Nettoyage de l'audio…",
  "dz.dn.workingElapsed": "Écoulé : {s} s",
  "dz.dn.failed": "Cela n'a pas fonctionné — essayez un autre fichier.",
  "dz.dn.another": "Nettoyer un autre fichier",
  "dz.dn.abOriginal": "A · Original",
  "dz.dn.abDenoised": "B · Bruit réduit",
  "dz.dn.tagOriginal": "Original",
  "dz.dn.tagDenoised": "Bruit réduit",
  "dz.dn.play": "Lecture",
  "dz.dn.pause": "Pause",
  "dz.dn.videoNote": "L'enregistrement exporte votre vidéo complète avec la piste audio nettoyée.",
  "dz.dn.engineHint": "~1 Mo",
  "dz.dn.seo": "Supprimez gratuitement le bruit de fond et le souffle de vos enregistrements vocaux et de l'audio de vos vidéos — RNNoise s'exécute entièrement sur votre appareil, rien n'est donc envoyé. Comparez côte à côte l'audio d'origine et l'audio nettoyé, puis enregistrez l'audio nettoyé ou la vidéo complète dont la piste audio a été remplacée. Aucun envoi, aucun compte.",
  "dz.dn.pageTitle": "Réduire le bruit de la voix — Outils Dzzz",
  "dz.vr.name": "Séparateur voix et musique",
  "dz.vr.drop": "Déposez un morceau, ou appuyez pour en choisir un",
  "dz.vr.deviceNote": "La séparation s'exécute sur votre appareil. Le téléchargement unique du modèle provient de huggingface.co ; rien d'autre ne quitte votre appareil.",
  "dz.vr.qualityNote": "Les deux résultats perdent le son au-delà d'environ 11 kHz : les cymbales et l'« air » paraissent donc ternes — c'est une limite du modèle de séparation, pas un bogue. Il s'agit d'une bonne séparation avec des artefacts audibles, pas d'une piste de qualité studio.",
  "dz.vr.estimateRange": "Un morceau de {d} prend environ {lo}–{hi} sur cet appareil, d'après des exécutions mesurées ici. Cette estimation se met à jour pendant le traitement.",
  "dz.vr.estimateBenchmarking": "Mesure de la vitesse de traitement audio de cet appareil — cela n'arrive qu'une seule fois.",
  "dz.vr.estimatePending": "La durée exacte dépend de votre appareil. Elle est mesurée lors de votre première utilisation, puis mémorisée.",
  "dz.vr.overCap": "Ce morceau dépasse la limite de {m} minutes sur cet appareil — plus le morceau est long, plus les deux pistes de sortie demandent de mémoire ; découpez-le d'abord.",
  "dz.vr.verb": "Séparer la voix",
  "dz.vr.working": "Séparation en cours…",
  "dz.vr.workingSplit": "Traitement de la partie {split} sur {splits}",
  "dz.vr.remainingRange": "≈ {lo}–{hi} restantes",
  "dz.vr.stageAnalyse": "Analyse du morceau",
  "dz.vr.stageLoad": "Chargement du modèle",
  "dz.vr.stageSeparate": "Séparation des pistes",
  "dz.vr.stageFinal": "Finalisation",
  "dz.vr.leaveNote": "Vous pouvez quitter cet onglet — la séparation continue et le résultat sera là à votre retour.",
  "dz.vr.elapsed": "Écoulé : {t}",
  "dz.vr.cancel": "Annuler",
  "dz.vr.failed": "Cela n'a pas fonctionné — essayez un autre fichier.",
  "dz.vr.another": "Essayer un autre morceau",
  "dz.vr.seo": "Séparez gratuitement un morceau en une piste instrumentale et une piste vocale isolée — le modèle de séparation Spleeter s'exécute entièrement sur votre appareil après un téléchargement unique depuis huggingface.co, l'audio lui-même ne le quitte donc jamais. Les deux résultats perdent le son au-delà d'environ 11 kHz : les cymbales et l'« air » paraissent ternes, et il s'agit d'une bonne séparation avec des artefacts audibles plutôt que d'une piste de qualité studio. Aucun envoi, aucun compte.",
  "dz.vr.pageTitle": "Séparateur voix et musique — séparez un morceau en voix et instrumental",
  "dz.mix.title": "Pistes",
  "dz.mix.stem.vocals": "Voix",
  "dz.mix.stem.instrumental": "Instrumental",
  "dz.mix.play": "Lecture",
  "dz.mix.pause": "Pause",
  "dz.mix.loop": "Boucle A–B",
  "dz.mix.karaoke": "Préréglage karaoké",
  "dz.mix.speed": "Vitesse d'entraînement",
  "dz.mix.speedPitchNote": "Ralentir abaisse aussi la hauteur du son — ce réglage de vitesse ne corrige pas la hauteur.",
  "dz.mix.loopStart": "Début de la boucle",
  "dz.mix.loopEnd": "Fin de la boucle",
  "dz.mix.levelLabel": "Niveau de {stem}",
  "dz.mix.muteLabel": "Couper le son de {stem}",
  "dz.mix.soloLabel": "Solo de {stem}",
  "dz.mix.off": "OFF",
  "dz.mix.exportTitle": "Exporter",
  "dz.mix.export.instrumental.name": "Instrumental seul",
  "dz.mix.export.instrumental.sub": "Voix retirée, tout le reste est conservé",
  "dz.mix.export.vocals.name": "Voix seule",
  "dz.mix.export.vocals.sub": "La piste vocale isolée",
  "dz.mix.export.mix.name": "Ce mixage",
  "dz.mix.export.mix.sub": "Exactement les curseurs tels qu'ils sont réglés maintenant",
  "dz.mix.export.all.name": "Les deux pistes · ZIP",
  "dz.mix.export.all.sub": "Voix et instrumental, dans une seule archive",
  "dz.mix.format": "FORMAT",
  "dz.mix.exportCta": "Exporter {what} · {fmt}",
  "dz.mix.exporting": "Exportation en cours…",
  "dz.mix.exportNote": "Les fichiers sont créés sur votre appareil. Rien n'est envoyé.",
  "dz.mix.exportFailed": "Échec de l'exportation — réessayez.",
  "dz.ab.name": "Floutage automatique",
  "dz.ab.benefit": "Floutez des visages, des personnes ou tout élément sensible d'une photo avant de la partager — sur votre appareil.",
  "dz.ab.engineHint": "moteur de ~43 Mo",
  "dz.ab.drop": "Déposez une photo, ou appuyez pour en choisir une",
  "dz.ab.drawHint": "Faites glisser sur la photo pour tracer un cadre sur ce que vous voulez masquer. Faites glisser un cadre pour le déplacer, son coin pour le redimensionner, ou appuyez sur × pour le retirer.",
  "dz.ab.detectVerb": "Détecter les personnes (bêta)",
  "dz.ab.detecting": "Détection des personnes…",
  "dz.ab.detectNote": "Détecte les personnes à l'aide d'un modèle généraliste — les cadres couvrent la personne entière, pas seulement le visage. Tracez vos propres cadres pour masquer uniquement le visage avec précision.",
  "dz.ab.detectNone": "Aucune personne détectée — ajoutez des cadres manuellement.",
  "dz.ab.detectFailed": "La détection n'a pas fonctionné — vous pouvez toujours ajouter des cadres manuellement.",
  "dz.ab.wasmWarn": "Votre appareil ne prend pas en charge WebGPU : la détection s'exécute donc dans un mode de compatibilité plus lent.",
  "dz.ab.styleLabel": "Style de masquage",
  "dz.ab.blur": "Flou",
  "dz.ab.pixelate": "Pixélisation",
  "dz.ab.boxCount": "{n} cadre(s) marqué(s)",
  "dz.ab.clearAll": "Tout effacer",
  "dz.ab.removeBox": "Retirer le cadre",
  "dz.ab.redactVerb": "Appliquer le masquage",
  "dz.ab.working": "Application du masquage…",
  "dz.ab.failed": "Cela n'a pas fonctionné — essayez une autre photo.",
  "dz.ab.another": "Masquer une autre photo",
  "dz.ab.editAgain": "Modifier de nouveau les cadres",
  "dz.ab.resultNote": "Image masquée — les zones marquées sont floutées de façon définitive et fusionnées dans l'image.",
  "dz.ab.downscaled": "Grande photo réduite à 4096 px.",
  "dz.ab.blurFallback": "Le flou n'est pas pris en charge ici — la pixélisation a été utilisée à la place (votre image est tout de même entièrement masquée).",
  "dz.ab.seo": "Floutez ou pixélisez des visages, des personnes ou tout élément sensible d'une photo avant de la partager — un modèle de détection d'objets sur l'appareil peut repérer les personnes automatiquement, et vous pouvez toujours tracer, déplacer, redimensionner ou retirer des cadres à la main. Rien n'est envoyé ; l'image masquée est aplatie et enregistrée directement depuis votre appareil. Aucun envoi, aucun compte.",
  "dz.ab.pageTitle": "Floutage automatique — Outils Dzzz",
  "dz.csv.showingN": "Affichage de {n} lignes sur {total}",
  "dz.csv.capHard": "Le fichier est trop volumineux — cet outil travaille dans la mémoire de votre appareil, et cette limite est de 25 Mo par fichier. Un CSV ou TSV de cette taille peut tout de même être ouvert avec les outils pour gros fichiers :",
  "dz.csv.capHardViewer": "Ouvrir un gros CSV",
  "dz.csv.capHardSql": "L'interroger en SQL",
  "dz.csv.capSoft": "Fichier volumineux — cela peut prendre un moment et utiliser beaucoup de mémoire.",
  "dz.csv.desktopNote": "Pour de meilleures performances avec les gros fichiers, utilisez un ordinateur.",
  "dz.mergeCsv.name": "Fusionner des CSV",
  "dz.mergeCsv.benefit": "Combinez plusieurs fichiers CSV/Excel en un seul",
  "dz.mergeCsv.title": "Fusionner des fichiers CSV et Excel",
  "dz.mergeCsv.pick": "Choisissez les fichiers à fusionner",
  "dz.mergeCsv.addMore": "Ajouter d'autres fichiers",
  "dz.mergeCsv.align": "Aligner les colonnes par",
  "dz.mergeCsv.alignName": "Nom de colonne",
  "dz.mergeCsv.alignPos": "Position",
  "dz.mergeCsv.addSource": "Ajouter une colonne « fichier source »",
  "dz.mergeCsv.run": "Fusionner",
  "dz.mergeCsv.seo": "Combinez plusieurs fichiers CSV, TSV, XLSX ou JSON en un seul tableau, directement sur votre appareil. Alignez les colonnes par nom ou par position et, si vous le souhaitez, indiquez sur chaque ligne son fichier source. Rien n'est envoyé.",
  "dz.mergeCsv.widthWarn": "Certains fichiers ont plus de colonnes que le premier — les colonnes en trop sont ignorées lors d'un alignement par position.",
  "dz.mergeCsv.pageTitle": "Fusionner des fichiers CSV et Excel — Outils Dzzz",
  "dz.splitCsv.name": "Diviser un CSV",
  "dz.splitCsv.benefit": "Divisez un fichier CSV/Excel en plusieurs parties",
  "dz.splitCsv.title": "Diviser un fichier CSV ou Excel",
  "dz.splitCsv.pick": "Choisissez un fichier à diviser",
  "dz.splitCsv.mode": "Diviser par",
  "dz.splitCsv.byRows": "Nombre de lignes",
  "dz.splitCsv.byCol": "Valeur d'une colonne",
  "dz.splitCsv.rowsPer": "Lignes par fichier",
  "dz.splitCsv.pickCol": "Colonne",
  "dz.splitCsv.run": "Diviser",
  "dz.splitCsv.count": "{n} fichiers seront créés",
  "dz.splitCsv.seo": "Divisez un fichier CSV, TSV, XLSX ou JSON en plusieurs parties, directement sur votre appareil — selon un nombre fixe de lignes ou selon la valeur d'une colonne de votre choix. Récupérez toutes les parties dans un seul téléchargement ZIP. Rien n'est envoyé.",
  "dz.splitCsv.pageTitle": "Diviser un fichier CSV ou Excel — Outils Dzzz",
  "dz.dedupeCsv.name": "Supprimer les doublons d'un CSV",
  "dz.dedupeCsv.benefit": "Supprimez les lignes en double d'un fichier CSV/Excel",
  "dz.dedupeCsv.title": "Supprimer les lignes en double",
  "dz.dedupeCsv.pick": "Choisissez un fichier dont supprimer les doublons",
  "dz.dedupeCsv.keys": "Repérer les doublons selon (ne cochez rien pour comparer la ligne entière)",
  "dz.dedupeCsv.wholeRow": "Aucune colonne sélectionnée — la ligne entière est comparée.",
  "dz.dedupeCsv.keep": "Conserver",
  "dz.dedupeCsv.keepFirst": "La première occurrence",
  "dz.dedupeCsv.keepLast": "La dernière occurrence",
  "dz.dedupeCsv.run": "Supprimer les doublons",
  "dz.dedupeCsv.removed": "{n} lignes en double supprimées",
  "dz.dedupeCsv.seo": "Supprimez les lignes en double d'un fichier CSV, TSV, XLSX ou JSON, directement sur votre appareil — comparez la ligne entière ou les colonnes clés de votre choix, en conservant la première ou la dernière occurrence. Rien n'est envoyé.",
  "dz.dedupeCsv.pageTitle": "Supprimer les lignes en double d'un CSV — Outils Dzzz",
  "dz.cleanCsv.name": "Nettoyer un CSV",
  "dz.cleanCsv.benefit": "Supprimez les espaces superflus, corrigez la casse et normalisez les chiffres et les dates d'un fichier CSV/Excel",
  "dz.cleanCsv.title": "Nettoyer un fichier CSV",
  "dz.cleanCsv.pick": "Choisissez un fichier à nettoyer",
  "dz.cleanCsv.transforms": "Transformations",
  "dz.cleanCsv.trim": "Supprimer les espaces superflus",
  "dz.cleanCsv.caseLabel": "Casse du texte",
  "dz.cleanCsv.caseNone": "Aucun changement",
  "dz.cleanCsv.caseUpper": "MAJUSCULES",
  "dz.cleanCsv.caseLower": "minuscules",
  "dz.cleanCsv.caseTitle": "Initiales en Majuscules",
  "dz.cleanCsv.dropRows": "Supprimer les lignes vides",
  "dz.cleanCsv.dropCols": "Supprimer les colonnes vides",
  "dz.cleanCsv.normDigits": "Normaliser les chiffres (arabes-indiens → occidentaux)",
  "dz.cleanCsv.stdDates": "Uniformiser les dates au format YYYY-MM-DD",
  "dz.cleanCsv.run": "Appliquer et télécharger",
  "dz.cleanCsv.seo": "Nettoyez un fichier CSV, TSV, XLSX ou JSON directement sur votre appareil — supprimez les espaces superflus, corrigez la casse du texte, normalisez les chiffres, uniformisez les dates et retirez les lignes ou colonnes vides, avec un aperçu en direct avant le téléchargement. Rien n'est envoyé.",
  "dz.cleanCsv.pageTitle": "Nettoyer un fichier CSV — Outils Dzzz",
  "dz.compareCsv.name": "Comparer des CSV",
  "dz.compareCsv.benefit": "Voyez ce qui a changé entre deux fichiers CSV/Excel",
  "dz.compareCsv.title": "Comparer deux fichiers CSV ou Excel",
  "dz.compareCsv.pickA": "Choisir le fichier A",
  "dz.compareCsv.pickB": "Choisir le fichier B",
  "dz.compareCsv.key": "Colonne clé",
  "dz.compareCsv.run": "Comparer",
  "dz.compareCsv.added": "Ajoutées",
  "dz.compareCsv.removed": "Supprimées",
  "dz.compareCsv.changed": "Modifiées",
  "dz.compareCsv.exportDiff": "Exporter les différences (CSV)",
  "dz.compareCsv.seo": "Comparez deux fichiers CSV, TSV, XLSX ou JSON à l'aide d'une colonne clé commune, directement sur votre appareil — repérez les lignes ajoutées, supprimées ou modifiées, puis exportez les différences au format CSV. Rien n'est envoyé.",
  "dz.compareCsv.pageTitle": "Comparer deux fichiers CSV — Outils Dzzz",
  "dz.convertCsv.name": "Convertir un CSV",
  "dz.convertCsv.benefit": "Convertissez entre CSV, TSV, XLSX et JSON",
  "dz.convertCsv.title": "Convertir un fichier CSV ou Excel",
  "dz.convertCsv.pick": "Choisissez un fichier à convertir",
  "dz.convertCsv.sheet": "Feuille",
  "dz.convertCsv.to": "Convertir en",
  "dz.convertCsv.run": "Convertir et télécharger",
  "dz.convertCsv.seo": "Convertissez un fichier CSV, TSV, XLSX ou JSON vers n'importe lequel des autres formats, directement sur votre appareil. Choisissez une feuille dans les fichiers Excel à plusieurs feuilles et prévisualisez-la avant la conversion. Rien n'est envoyé.",
  "dz.convertCsv.pageTitle": "Convertir CSV, Excel, TSV et JSON — Outils Dzzz",
  "dz.excelConverter.moved": "Déplacé vers",
  "dz.csv.chooserTitle": "De quel outil CSV avez-vous besoin ?",
  "dz.csv.chooserIntro": "Six petits outils pour travailler avec des fichiers CSV, TSV, XLSX et JSON : choisissez celui qui correspond à ce que vous voulez faire. Rien n'est envoyé.",
  "dz.csv.use.merge": "Regroupez plusieurs fichiers en un seul tableau.",
  "dz.csv.use.split": "Découpez un fichier en parties plus petites, par nombre de lignes ou par valeur de colonne.",
  "dz.csv.use.dedupe": "Supprimez les lignes en double d'un fichier.",
  "dz.csv.use.clean": "Supprimez les espaces superflus, corrigez la casse et normalisez les chiffres et les dates d'un fichier.",
  "dz.csv.use.compare": "Voyez ce qui a changé entre deux versions d'un fichier.",
  "dz.csv.use.convert": "Changez le format d'un fichier : CSV, TSV, XLSX ou JSON.",
  "dz.csv.chooserLink": "Vous ne savez pas quel outil CSV choisir ? Voir les six →",
  "dz.csv.pageTitle": "De quel outil CSV avez-vous besoin ? — Outils Dzzz",
  "dz.zipm.name": "Gestionnaire de ZIP",
  "dz.zipm.benefit": "Créez et extrayez des archives ZIP, directement sur votre appareil.",
  "dz.zipm.drop": "Déposez des fichiers à compresser, ou un seul .zip à extraire",
  "dz.zipm.extracting": "Extraction en cours…",
  "dz.zipm.accept": "Tous types de fichiers, ou une seule archive .zip",
  "dz.zipm.addMore": "Ajouter d'autres fichiers",
  "dz.zipm.archiveName": "Nom de l'archive",
  "dz.zipm.compression": "Compression",
  "dz.zipm.deflate": "Deflate (plus petit)",
  "dz.zipm.store": "Store (plus rapide)",
  "dz.zipm.storeNote": "Tous les fichiers sélectionnés sont déjà compressés : le mode Store a donc été utilisé.",
  "dz.zipm.createRun": "Créer le ZIP",
  "dz.zipm.tooManyEntries": "Trop de fichiers : la limite est de 1000 par archive.",
  "dz.zipm.tooBig": "La taille totale est trop grande : la limite est de 500 Mo par archive (le traitement s'effectue dans la mémoire de votre appareil).",
  "dz.zipm.encrypted": "Cette archive est protégée par mot de passe, ce qui n'est pas pris en charge.",
  "dz.zipm.badArchive": "Impossible de lire cette archive : elle est peut-être corrompue.",
  "dz.zipm.extractSummary": "{count} fichiers · {size}",
  "dz.zipm.colName": "Nom",
  "dz.zipm.colSize": "Taille",
  "dz.zipm.preview": "Aperçu",
  "dz.zipm.hidePreview": "Masquer",
  "dz.zipm.noPreview": "Aucun aperçu disponible",
  "dz.zipm.seo": "Créez une archive ZIP à partir de vos fichiers, ou extrayez-en une, entièrement sur votre appareil. Les archives protégées par mot de passe ne sont pas prises en charge. Rien n'est envoyé.",
  "dz.zipm.pageTitle": "Gestionnaire de ZIP — Créer et extraire des archives — Outils Dzzz",
  "dz.pdfimg.name": "Extraire les images d'un PDF",
  "dz.pdfimg.benefit": "Enregistrez les pages d'un PDF ou les images intégrées sous forme de fichiers image.",
  "dz.pdfimg.drop": "Déposez un PDF ou touchez pour le choisir",
  "dz.pdfimg.mode": "De quoi avez-vous besoin ?",
  "dz.pdfimg.modePages": "Pages en images",
  "dz.pdfimg.modeEmbedded": "Images intégrées",
  "dz.pdfimg.format": "Format",
  "dz.pdfimg.quality": "Qualité",
  "dz.pdfimg.scale": "Taille",
  "dz.pdfimg.run": "Extraire les images",
  "dz.pdfimg.embeddedHint": "Trouve une seule fois chaque image du PDF, même si elle se répète sur plusieurs pages. La transparence peut être aplatie sur les images réencodées.",
  "dz.pdfimg.encrypted": "Ce PDF est protégé par mot de passe : retirez d'abord le mot de passe.",
  "dz.pdfimg.capHard": "Le fichier est trop volumineux : la limite est de 100 Mo (le traitement s'effectue dans la mémoire de votre appareil).",
  "dz.pdfimg.capSoft": "PDF volumineux : cela peut prendre un moment et utiliser beaucoup de mémoire.",
  "dz.pdfimg.capPages": "Ce PDF compte trop de pages : la limite est de 500.",
  "dz.pdfimg.resultCount": "{count} images · {size}",
  "dz.pdfimg.verbatim": "JPEG d'origine",
  "dz.pdfimg.reencoded": "PNG réencodé",
  "dz.pdfimg.colType": "Type",
  "dz.pdfimg.noImages": "Aucune image intégrée n'a été trouvée dans ce PDF.",
  "dz.pdfimg.seo": "Enregistrez les pages d'un PDF au format PNG ou JPEG, ou extrayez toutes les images intégrées à un PDF, directement sur votre appareil. Les JPEG d'origine sont conservés octet pour octet lorsque c'est possible ; tout le reste est réencodé en toute sécurité. La transparence peut être aplatie sur les images extraites. Rien n'est envoyé.",
  "dz.pdfimg.pageTitle": "Extraire les images d'un PDF — Outils Dzzz",
  "dz.pwgen.name": "Générateur de mots de passe",
  "dz.pwgen.tagNew": "Nouveau",
  "dz.pwgen.benefit": "Mots de passe aléatoires et évaluation honnête de leur robustesse",
  "dz.pwgen.generateTab": "Générer",
  "dz.pwgen.checkTab": "Vérifier",
  "dz.pwgen.mode": "Type",
  "dz.pwgen.modeRandom": "Caractères aléatoires",
  "dz.pwgen.modePronounceable": "Prononçable",
  "dz.pwgen.modePassphrase": "Phrase secrète (mots)",
  "dz.pwgen.length": "Longueur",
  "dz.pwgen.upper": "Majuscules (A-Z)",
  "dz.pwgen.lower": "Minuscules (a-z)",
  "dz.pwgen.digits": "Chiffres (0-9)",
  "dz.pwgen.symbols": "Symboles (!@#$…)",
  "dz.pwgen.excludeAmbiguous": "Exclure les caractères ambigus (I l 1 O 0 o)",
  "dz.pwgen.words": "Nombre de mots",
  "dz.pwgen.separator": "Séparateur",
  "dz.pwgen.addDigit": "Ajouter un chiffre à la fin",
  "dz.pwgen.batch": "Nombre de mots de passe (1-20)",
  "dz.pwgen.generateBtn": "Générer",
  "dz.pwgen.regenerate": "Générer à nouveau",
  "dz.pwgen.copy": "Copier",
  "dz.pwgen.copied": "Copié",
  "dz.pwgen.errorNoClass": "Sélectionnez au moins un type de caractères.",
  "dz.pwgen.checkLabel": "Saisissez ou collez un mot de passe à vérifier",
  "dz.pwgen.crackTime": "Temps pour le casser (attaque hors ligne)",
  "dz.pwgen.score0": "Très faible",
  "dz.pwgen.score1": "Faible",
  "dz.pwgen.score2": "Moyen",
  "dz.pwgen.score3": "Bon",
  "dz.pwgen.score4": "Robuste",
  "dz.pwgen.privacyNote": "Rien de ce que vous saisissez ou générez ici n'est enregistré, journalisé, transmis ni conservé. Aucun historique pour cet outil. Fonctionne entièrement hors ligne.",
  "dz.pwgen.seo": "Générez des mots de passe robustes (aléatoires, prononçables ou phrases secrètes de plusieurs mots) grâce à crypto.getRandomValues, jamais Math.random. Vérifiez la robustesse réelle de n'importe quel mot de passe avec une évaluation basée sur zxcvbn, une estimation du temps de décryptage et des remarques honnêtes. Rien de ce que vous saisissez ou générez n'est jamais enregistré, journalisé ni transmis : cet outil fonctionne entièrement hors ligne.",
  "dz.pwgen.pageTitle": "Générateur de mots de passe et vérificateur de robustesse — Outils Dzzz",
  "dz.redact.name": "Caviarder du texte",
  "dz.redact.tagNew": "Nouveau",
  "dz.redact.benefit": "Repérez et caviardez les informations personnelles, en privé, sur votre appareil.",
  "dz.redact.scopeNote": "Repère uniquement les identifiants structurés : e-mails, numéros de téléphone, IBAN, numéros de carte, identifiants saoudiens/Iqama, URL, adresses IP et clés d'API ou secrets. Il ne détecte pas les noms ni les adresses dans du texte libre : utilisez la sélection manuelle pour ceux-ci.",
  "dz.redact.inputLabel": "Collez ou saisissez le texte à analyser",
  "dz.redact.uploadLabel": "Ou importez un fichier .txt",
  "dz.redact.notYet": "Rien n'est caviardé tant que vous n'appuyez pas sur Caviarder ci-dessous.",
  "dz.redact.tooLarge": "Ce texte est trop long pour être examiné ici (limite de 500 000 caractères). Essayez un extrait plus court.",
  "dz.redact.detectTruncated": "Ce texte est très volumineux : seules les {n} premières détections sont affichées, la détection est donc incomplète. Caviardez-le par morceaux plus petits pour être sûr que tout est repéré.",
  "dz.redact.detectError": "Impossible d'analyser ce texte. Réessayez.",
  "dz.redact.exportError": "Impossible de produire le résultat caviardé. Réessayez.",
  "dz.redact.foundPrefix": "Trouvé",
  "dz.redact.foundNone": "Aucun identifiant structuré trouvé. Vous pouvez tout de même caviarder des noms ou des adresses manuellement ci-dessous.",
  "dz.redact.kind.email": "E-mail",
  "dz.redact.kind.phone": "Téléphone",
  "dz.redact.kind.iban": "IBAN",
  "dz.redact.kind.card": "Numéro de carte",
  "dz.redact.kind.saudiId": "Identifiant saoudien/Iqama",
  "dz.redact.kind.url": "URL",
  "dz.redact.kind.ip": "Adresse IP",
  "dz.redact.kind.secret": "Clé d'API/secret",
  "dz.redact.kind.person": "Nom",
  "dz.redact.kind.place": "Adresse/lieu",
  "dz.redact.kind.org": "Organisation",
  "dz.redact.kind.date": "Date",
  "dz.redact.provenancePattern": "correspondance exacte",
  "dz.redact.provenanceManual": "votre sélection",
  "dz.redact.provenanceModel": "confiance de {pct} %",
  "dz.redact.stateRedact": "Sera caviardé",
  "dz.redact.stateKeep": "Conservé",
  "dz.redact.manualTitle": "Sélection manuelle",
  "dz.redact.manualHint": "Sélectionnez n'importe quel texte ci-dessus (un nom, une adresse, tout ce que l'analyse a manqué), puis caviardez-le. C'est ainsi que les noms et les adresses en texte libre sont couverts.",
  "dz.redact.manualAsName": "Nom",
  "dz.redact.manualAsPlace": "Adresse",
  "dz.redact.manualBtn": "Caviarder la sélection",
  "dz.redact.manualNoSelection": "Sélectionnez d'abord du texte.",
  "dz.redact.manualAdded": "Sélection ajoutée à la liste de vérification",
  "dz.redact.aiTitle": "Détection IA des noms et lieux",
  "dz.redact.aiBeta": "Bêta",
  "dz.redact.aiCautionBold": "Expérimental.",
  "dz.redact.aiCautionBody": "Ce modèle d'IA facultatif, exécuté sur l'appareil, tente de repérer les noms, lieux, organisations et dates que l'analyse par correspondance exacte ci-dessus ne détecte pas. La qualité de détection n'est pas vérifiée : il peut manquer des noms (surtout arabes) ou signaler le mauvais texte. Vérifiez chaque surlignage avant de vous y fier. Rien n'est téléchargé ni analysé tant que vous n'appuyez pas sur le bouton ci-dessous.",
  "dz.redact.aiCategoriesLabel": "Catégories à détecter",
  "dz.redact.aiScanBtn": "Analyser avec l'IA (bêta)",
  "dz.redact.aiScanning": "Analyse par l'IA en cours…",
  "dz.redact.aiScanError": "L'analyse par l'IA n'a pas fonctionné : les résultats de la correspondance exacte ci-dessus restent valables.",
  "dz.redact.aiScanNone": "Aucun autre nom, lieu, organisation ou date trouvé.",
  "dz.redact.styleLabel": "Style de caviardage",
  "dz.redact.styleBlock": "Bloc (████)",
  "dz.redact.styleLabelOpt": "Étiquette ([EMAIL])",
  "dz.redact.styleChar": "Caractère personnalisé",
  "dz.redact.styleCharLabel": "Caractère",
  "dz.redact.redactBtn": "Caviarder",
  "dz.redact.caveat": "La détection automatique ne repérera pas tout, en particulier les noms arabes et les formats inhabituels. Vérifiez chaque surlignage avant de partager.",
  "dz.redact.outputLabel": "Résultat caviardé",
  "dz.redact.redactedStatus": "Caviardé — {n} éléments",
  "dz.redact.copy": "Copier",
  "dz.redact.copied": "Copié",
  "dz.redact.download": "Télécharger le .txt",
  "dz.redact.privacyNote": "Rien de ce que vous collez, importez ou produisez ici n'est enregistré, journalisé, transmis ni conservé. Aucun historique pour cet outil. Fonctionne entièrement hors ligne.",
  "dz.redact.seo": "Repérez les informations personnelles dans un texte collé (e-mails, numéros de téléphone, IBAN, numéros de carte, identifiants saoudiens, URL, adresses IP et clés d'API) grâce à une correspondance exacte de motifs, vérifiée par somme de contrôle, directement sur votre appareil. Vérifiez chaque correspondance avant toute modification : écartez les faux positifs, ou sélectionnez tout autre texte (comme un nom ou une adresse) pour le caviarder manuellement. Choisissez un style de caviardage par bloc, par étiquette ou par caractère personnalisé, puis copiez ou téléchargez le résultat. La détection automatique ne repérera pas tout, en particulier les noms arabes et les formats inhabituels : vérifiez toujours avant de partager. Rien de ce que vous collez ou produisez ici n'est jamais enregistré, journalisé ni transmis.",
  "dz.redact.pageTitle": "Caviarder les informations personnelles d'un texte — Outils Dzzz",
  "dz.lorem.name": "Générateur de Lorem Ipsum",
  "dz.lorem.benefit": "Du texte factice en vrai arabe ou en latin classique (mots, phrases ou paragraphes), généré sur votre appareil.",
  "dz.lorem.langLabel": "Langue du texte",
  "dz.lorem.langAr": "Arabe",
  "dz.lorem.langEn": "Anglais",
  "dz.lorem.unitLabel": "Unité",
  "dz.lorem.unitWords": "Mots",
  "dz.lorem.unitSentences": "Phrases",
  "dz.lorem.unitParagraphs": "Paragraphes",
  "dz.lorem.countLabel": "Nombre",
  "dz.lorem.classicOpener": "Commencer par le classique « Lorem ipsum dolor sit amet… »",
  "dz.lorem.wrapParagraphs": "Entourer chaque paragraphe de balises <p>",
  "dz.lorem.preview": "Aperçu",
  "dz.lorem.regenerate": "Générer à nouveau",
  "dz.lorem.copy": "Copier",
  "dz.lorem.copied": "Copié",
  "dz.lorem.seo": "Générez du texte factice en vrai arabe (vocabulaire naturel avec une ponctuation arabe correcte, pas une translittération) ou en lorem ipsum latin classique. Choisissez des mots, des phrases ou des paragraphes, fixez un nombre exact, commencez éventuellement par l'ouverture classique « Lorem ipsum dolor sit amet… » et entourez les paragraphes de balises <p> pour vos maquettes HTML. Tout est généré sur votre appareil : rien n'est enregistré ni transmis, et l'outil fonctionne entièrement hors ligne.",
  "dz.lorem.pageTitle": "Générateur de Lorem Ipsum — Vrai arabe et latin classique — Outils Dzzz",
  "dz.picker.name": "Tirage au sort et roue",
  "dz.picker.tagNew": "Nouveau",
  "dz.picker.benefit": "Des tirages au sort équitables dans votre liste : tirez un élément, plusieurs, ou faites tourner la roue. Tout reste sur votre appareil.",
  "dz.picker.itemsLabel": "Éléments (un par ligne)",
  "dz.picker.itemsPlaceholder": "Saisissez chaque nom ou élément sur sa propre ligne",
  "dz.picker.rememberList": "Mémoriser ma liste sur cet appareil",
  "dz.picker.modeList": "Tirage dans la liste",
  "dz.picker.modeWheel": "Roue",
  "dz.picker.removeAfterPick": "Mode tombola : retirer de la liste les éléments tirés",
  "dz.picker.weightsToggle": "Pondération par élément (plus élevée = meilleures chances, uniquement pour « Tirer un élément »)",
  "dz.picker.weightLabel": "Poids",
  "dz.picker.pickOneBtn": "Tirer un élément",
  "dz.picker.pickCount": "Combien d'éléments tirer",
  "dz.picker.pickNBtn": "Tirer plusieurs éléments",
  "dz.picker.pickNUniformHint": "« Tirer plusieurs éléments » tire de façon uniforme : les poids ne s'appliquent pas.",
  "dz.picker.resultsLabel": "Résultat",
  "dz.picker.spinBtn": "Lancer la roue",
  "dz.picker.needTwo": "Ajoutez au moins deux éléments pour faire tourner la roue",
  "dz.picker.winnerLabel": "Gagnant",
  "dz.picker.seo": "Effectuez des tirages au sort équitables dans n'importe quelle liste : tirez un gagnant, tirez-en plusieurs sans répétition, organisez une tombola qui retire les gagnants au fur et à mesure, ou faites tourner une roue colorée. Chaque tirage utilise un aléa cryptographiquement équitable (crypto.getRandomValues, jamais Math.random), et la roue ne fait qu'animer un résultat déjà décidé équitablement. Votre liste reste sur votre appareil et n'est jamais envoyée : l'outil fonctionne entièrement hors ligne.",
  "dz.picker.pageTitle": "Tirage au sort et roue — Outils Dzzz",
  "dz.color.name": "Outils de couleur",
  "dz.color.benefit": "Palettes, dégradés, conversion de formats et vérification du contraste, le tout sur votre appareil.",
  "dz.color.paletteTab": "Palette",
  "dz.color.gradientTab": "Dégradé",
  "dz.color.converterTab": "Conversion et contraste",
  "dz.color.baseColor": "Couleur de base",
  "dz.color.harmonyMode": "Harmonie",
  "dz.color.harmonyComplementary": "Complémentaire",
  "dz.color.harmonyAnalogous": "Analogue",
  "dz.color.harmonyTriadic": "Triadique",
  "dz.color.harmonyTetradic": "Tétradique",
  "dz.color.harmonySplitComplementary": "Complémentaire divisée",
  "dz.color.harmonyMonochromatic": "Monochromatique",
  "dz.color.lockSwatch": "Verrouiller la couleur",
  "dz.color.regenerate": "Générer à nouveau",
  "dz.color.exportHex": "Copier la liste HEX",
  "dz.color.exportCss": "Copier les variables CSS",
  "dz.color.gradientType": "Type de dégradé",
  "dz.color.gradientLinear": "Linéaire",
  "dz.color.gradientRadial": "Radial",
  "dz.color.gradientConic": "Conique",
  "dz.color.angle": "Angle (degrés)",
  "dz.color.addStop": "Ajouter un point d'arrêt",
  "dz.color.removeStop": "Retirer le point d'arrêt",
  "dz.color.copyCss": "Copier le CSS",
  "dz.color.linkNote": "Le lien ne contient que le type et l'angle du dégradé, pas les points d'arrêt de couleur.",
  "dz.color.foreground": "Couleur du texte",
  "dz.color.background": "Couleur d'arrière-plan",
  "dz.color.largeText": "Grand texte (18 pt et plus, ou 14 pt en gras)",
  "dz.color.contrastRatioLabel": "Rapport de contraste",
  "dz.color.passesAA": "AA — contraste minimal",
  "dz.color.passesAAA": "AAA — contraste renforcé",
  "dz.color.pass": "Réussi",
  "dz.color.fail": "Échec",
  "dz.color.copied": "Copié",
  "dz.color.invalidHex": "Couleur hexadécimale non valide (par ex. #1A2B3C)",
  "dz.color.invalidRgb": "Saisissez le RVB sous forme de trois nombres de 0 à 255 (par ex. 59, 130, 246)",
  "dz.color.invalidHsl": "Saisissez la TSL sous la forme teinte, saturation %, luminosité % (par ex. 217, 91 %, 60 %)",
  "dz.color.hex": "HEX",
  "dz.color.rgb": "RGB",
  "dz.color.hsl": "HSL",
  "dz.color.stopColor": "Couleur du point d'arrêt",
  "dz.color.stopPosition": "Position du point d'arrêt ( %)",
  "dz.color.seo": "Des outils de couleur gratuits qui s'exécutent entièrement sur votre appareil : créez une palette à partir de n'importe quelle couleur de base avec six schémas d'harmonie, concevez des dégradés CSS linéaires, radiaux ou coniques avec aperçu en direct, convertissez entre HEX, RGB et HSL, et vérifiez le contraste du texte selon les seuils WCAG AA et AAA. Rien n'est envoyé : tout fonctionne hors ligne.",
  "dz.color.pageTitle": "Outils de couleur — Palette, dégradé et vérificateur de contraste — Outils Dzzz",
  "dz.duedate.name": "Calculateur de date prévue d'accouchement",
  "dz.duedate.title": "Calculateur de date prévue d'accouchement",
  "dz.duedate.benefit": "Estimez votre date prévue d'accouchement à partir de la date de vos dernières règles, de la date de conception ou du transfert d'un embryon en FIV, affichée dans les calendriers grégorien et hégirien.",
  "dz.duedate.modeLmp": "À partir des dernières règles",
  "dz.duedate.modeConception": "À partir de la conception",
  "dz.duedate.modeIvf": "Transfert FIV",
  "dz.duedate.embryoLabel": "Âge de l'embryon au transfert",
  "dz.duedate.embryoDay3": "Embryon à J3",
  "dz.duedate.embryoDay5": "Embryon à J5",
  "dz.duedate.dateLmp": "Premier jour de vos dernières règles",
  "dz.duedate.dateConception": "Date de conception (ovulation)",
  "dz.duedate.dateTransfer": "Date du transfert d'embryon",
  "dz.duedate.result": "Date prévue d'accouchement estimée",
  "dz.duedate.gaLabel": "Âge gestationnel aujourd'hui",
  "dz.duedate.gaWeeksDays": "Semaines : {w} · Jours : {d}",
  "dz.duedate.tri1": "Premier trimestre",
  "dz.duedate.tri2": "Deuxième trimestre",
  "dz.duedate.tri3": "Troisième trimestre",
  "dz.duedate.noteCycle": "La méthode des dernières règles suppose un cycle de 28 jours ; seuls 10–13 % environ des cycles durent exactement 28 jours.",
  "dz.duedate.noteSpread": "Seulement 4–5 % environ des naissances ont lieu à la date estimée elle-même.",
  "dz.duedate.disclaimer": "Estimation à titre d'information générale, pas un avis médical. Votre professionnel de santé confirme la datation de la grossesse, généralement par une échographie précoce.",
  "dz.duedate.seo": "Calculateur de date prévue d'accouchement gratuit : estimez votre date d'accouchement à partir de vos dernières règles, de la date de conception ou d'un transfert d'embryon FIV, avec le résultat en calendriers grégorien et hégirien, ainsi que l'âge gestationnel actuel et le trimestre. Fonctionne entièrement sur votre appareil.",
  "dz.duedate.pageTitle": "Calculateur de date prévue d'accouchement — Outils Dzzz",
  "dz.water.name": "Apport quotidien en eau",
  "dz.water.title": "Apport quotidien en eau",
  "dz.water.benefit": "Valeurs de référence publiées pour l'apport quotidien en eau, calculées entièrement sur votre appareil.",
  "dz.water.sex": "Sexe",
  "dz.water.male": "Homme",
  "dz.water.female": "Femme",
  "dz.water.weight": "Poids",
  "dz.water.unitKg": "kg",
  "dz.water.unitLb": "lb",
  "dz.water.efsa": "EFSA (Europe)",
  "dz.water.efsaSub": "Autorité européenne de sécurité des aliments, 2010",
  "dz.water.iom": "IOM (États-Unis)",
  "dz.water.iomSub": "Académies nationales américaines (IOM), 2004",
  "dz.water.rule": "Règle empirique",
  "dz.water.ruleSub": "33 ml par kg de poids corporel : une règle empirique courante, pas une recommandation officielle.",
  "dz.water.ruleNeedsWeight": "Saisissez votre poids pour voir cette valeur.",
  "dz.water.litersDay": "L par jour",
  "dz.water.inclFood": "Eau totale, aliments compris : environ {food} L de ce total provient habituellement des aliments.",
  "dz.water.activity": "L'exercice, la chaleur, la fièvre, ainsi que la grossesse ou l'allaitement augmentent tous les besoins en eau. Considérez ces valeurs comme des bases pour un climat tempéré.",
  "dz.water.glassesTitle": "Pourquoi pas « 8 verres par jour » ?",
  "dz.water.glasses": "Huit verres de 240 ml (8 oz) représentent environ {liters} L, soit moins que les valeurs de référence ci-dessus. Ce chiffre remonte à une note de 1945 sortie de son contexte, qui comptait déjà l'eau provenant des aliments (Valtin, 2002).",
  "dz.water.relatedBmi": "À voir aussi : calculateur d'IMC",
  "dz.water.disclaimer": "Valeurs de référence pour des adultes en bonne santé, pas un avis médical. Les besoins en eau varient selon l'activité, le climat, la grossesse et l'état de santé ; consultez un professionnel de santé en cas de doute.",
  "dz.water.seo": "Calculateur gratuit d'apport quotidien en eau avec les valeurs de référence de l'EFSA et de l'IOM, une règle empirique fondée sur le poids et l'histoire du mythe des « 8 verres par jour ». Fonctionne entièrement sur votre appareil.",
  "dz.water.pageTitle": "Apport quotidien en eau — Outils Dzzz",
  "dz.bodyfat.name": "Calculateur de masse grasse",
  "dz.bodyfat.title": "Calculateur de masse grasse",
  "dz.bodyfat.benefit": "Méthode des circonférences de la marine américaine : estime le pourcentage de masse grasse à partir de mesures au mètre ruban, entièrement sur votre appareil.",
  "dz.bodyfat.metric": "Métrique (cm)",
  "dz.bodyfat.imperial": "Impérial (po)",
  "dz.bodyfat.sex": "Sexe",
  "dz.bodyfat.male": "Homme",
  "dz.bodyfat.female": "Femme",
  "dz.bodyfat.height": "Taille",
  "dz.bodyfat.waist": "Tour de taille",
  "dz.bodyfat.waistWhere": "Mesurez au niveau du nombril, le mètre ruban à l'horizontale.",
  "dz.bodyfat.neck": "Cou",
  "dz.bodyfat.neckWhere": "Mesurez juste sous le larynx (pomme d'Adam).",
  "dz.bodyfat.hip": "Hanches",
  "dz.bodyfat.hipWhere": "Mesurez à l'endroit le plus large des hanches.",
  "dz.bodyfat.age": "Âge (facultatif)",
  "dz.bodyfat.result": "Masse grasse estimée",
  "dz.bodyfat.errorBand": "L'erreur typique par rapport à un examen DXA est d'environ ±3–4 points de pourcentage.",
  "dz.bodyfat.childNote": "Cette formule est issue de données d'adultes et ne s'applique pas avant 18 ans. Un professionnel de santé peut évaluer la croissance et la composition corporelle des enfants et des adolescents.",
  "dz.bodyfat.idealTitle": "Formules de poids idéal (même taille)",
  "dz.bodyfat.idealNote": "Ce sont des régressions de population du milieu du XXe siècle, pas des objectifs personnels : la formule de Devine sert en clinique au calcul des doses de médicaments, pas à fixer un poids cible.",
  "dz.bodyfat.m.devine": "Devine",
  "dz.bodyfat.m.robinson": "Robinson",
  "dz.bodyfat.m.miller": "Miller",
  "dz.bodyfat.m.hamwi": "Hamwi",
  "dz.bodyfat.bmiRange": "Plage d'IMC considérée comme saine",
  "dz.bodyfat.unitKg": "kg",
  "dz.bodyfat.unitLb": "lb",
  "dz.bodyfat.cm": "cm",
  "dz.bodyfat.in": "po",
  "dz.bodyfat.relatedBmi": "À voir aussi : calculateur d'IMC",
  "dz.bodyfat.disclaimer": "Estimation au mètre ruban uniquement : l'erreur typique par rapport à la DXA est de ±3–4 points de pourcentage ; la formule tend à sous-estimer la masse grasse chez les personnes musclées ou à IMC élevé et à la surestimer chez les femmes très minces. À titre informatif uniquement, pas un avis médical.",
  "dz.bodyfat.seo": "Calculateur gratuit de masse grasse selon la méthode de la marine américaine, à partir des mesures de tour de taille, de cou et de hanches, avec la marge d'erreur typique indiquée et une comparaison de quatre formules de poids idéal. Fonctionne entièrement sur votre appareil.",
  "dz.bodyfat.pageTitle": "Calculateur de masse grasse — Outils Dzzz",
  "dz.hrz.name": "Calculateur de zones de fréquence cardiaque",
  "dz.hrz.title": "Calculateur de zones de fréquence cardiaque",
  "dz.hrz.benefit": "Estimez votre fréquence cardiaque maximale et consultez cinq zones d'entraînement, le tout sur votre appareil.",
  "dz.hrz.age": "Âge (années)",
  "dz.hrz.restingHr": "Fréquence cardiaque au repos (bpm, facultatif)",
  "dz.hrz.restingHint": "Ajoutez votre fréquence cardiaque au repos pour voir aussi les zones de Karvonen (%FCR) dans un tableau distinct.",
  "dz.hrz.restTooHigh": "Les zones de réserve (Karvonen) apparaissent lorsque la fréquence cardiaque au repos est inférieure au maximum estimé.",
  "dz.hrz.childNote": "Ces formules sont issues de données d'adultes. Pour toute personne de moins de 18 ans, demandez l'avis d'un professionnel de santé.",
  "dz.hrz.maxLabel": "Fréquence cardiaque maximale estimée (Tanaka, 208 − 0,7 × âge)",
  "dz.hrz.classicLabel": "Référence couramment citée (220 − âge)",
  "dz.hrz.bpm": "bpm",
  "dz.hrz.pctHead": "Zones selon la %FCmax (pourcentage de la fréquence cardiaque maximale)",
  "dz.hrz.karvHead": "Zones selon Karvonen (%FCR, réserve de fréquence cardiaque)",
  "dz.hrz.colZone": "Zone",
  "dz.hrz.colPct": "Intensité",
  "dz.hrz.colBpm": "Plage en bpm",
  "dz.hrz.colEffort": "Effort",
  "dz.hrz.z1": "Très facile",
  "dz.hrz.z2": "Facile",
  "dz.hrz.z3": "Modéré",
  "dz.hrz.z4": "Difficile",
  "dz.hrz.z5": "Très difficile",
  "dz.hrz.disclaimer": "Estimations uniquement : les formules de fréquence cardiaque maximale présentent un écart type d'environ ±10 bpm d'une personne à l'autre. Pas un avis médical ; consultez un professionnel de santé avant de commencer un nouveau programme d'exercice.",
  "dz.hrz.seo": "Calculateur gratuit de zones de fréquence cardiaque : fréquence cardiaque maximale estimée (formule de Tanaka, avec 220 − âge comme référence couramment citée) et cinq zones d'entraînement selon la %FCmax, plus des zones de Karvonen (%FCR) calculées séparément si vous saisissez une fréquence cardiaque au repos. Fonctionne entièrement sur votre appareil.",
  "dz.hrz.pageTitle": "Calculateur de zones de fréquence cardiaque — Outils Dzzz",
  "dz.pace.name": "Calculateur d'allure de course",
  "dz.pace.title": "Calculateur d'allure de course",
  "dz.pace.benefit": "Calculez l'allure, la durée ou la distance, avec un tableau de temps intermédiaires et un prédicteur de temps de course.",
  "dz.pace.km": "km",
  "dz.pace.mi": "mi",
  "dz.pace.solveLabel": "Calculer",
  "dz.pace.pace": "Allure",
  "dz.pace.time": "Durée",
  "dz.pace.distance": "Distance",
  "dz.pace.h": "h",
  "dz.pace.m": "min",
  "dz.pace.s": "s",
  "dz.pace.speed": "Vitesse moyenne",
  "dz.pace.kmh": "km/h",
  "dz.pace.mph": "mph",
  "dz.pace.splitsTitle": "Temps intermédiaires",
  "dz.pace.splitEvery": "Intermédiaire tous les",
  "dz.pace.cumTime": "Temps cumulé",
  "dz.pace.tooManySplits": "Choisissez un intervalle plus grand pour afficher le tableau.",
  "dz.pace.riegelTitle": "Prédicteur de temps de course (Riegel)",
  "dz.pace.knownDistance": "Une course récente : distance",
  "dz.pace.knownTime": "Une course récente : temps",
  "dz.pace.targetDistance": "Distance visée",
  "dz.pace.p5k": "5 km",
  "dz.pace.p10k": "10 km",
  "dz.pace.pHalf": "Semi-marathon",
  "dz.pace.pMarathon": "Marathon",
  "dz.pace.custom": "Personnalisée",
  "dz.pace.customDistance": "Distance personnalisée",
  "dz.pace.predicted": "Temps prédit",
  "dz.pace.riegelNote": "La formule de Riegel (T2 = T1 × (D2 ÷ D1)^1,06) a été établie à partir de résultats de courses d'environ {min}–{max} minutes ; la précision diminue à mesure que l'écart entre les deux distances augmente.",
  "dz.pace.disclaimer": "Estimations à titre de référence pour l'entraînement uniquement, pas un conseil médical ni d'entraîneur.",
  "dz.pace.seo": "Calculateur gratuit d'allure de course : calculez l'allure, la durée ou la distance à partir des deux autres, consultez les temps intermédiaires à l'intervalle de votre choix et prédisez vos temps de course avec la formule de Riegel. Fonctionne entièrement sur votre appareil.",
  "dz.pace.pageTitle": "Calculateur d'allure de course — Outils Dzzz",
  "dz.sleep.name": "Calculateur de cycles de sommeil",
  "dz.sleep.title": "Calculateur de cycles de sommeil",
  "dz.sleep.benefit": "Heures de coucher ou de réveil suggérées d'après les cycles de sommeil, entièrement sur votre appareil.",
  "dz.sleep.modeWake": "Je veux me réveiller à…",
  "dz.sleep.modeBed": "Je me couche à…",
  "dz.sleep.wakeTime": "Heure de réveil",
  "dz.sleep.bedTime": "Heure du coucher",
  "dz.sleep.bedtimes": "Heures de coucher suggérées",
  "dz.sleep.wakes": "Heures de réveil suggérées",
  "dz.sleep.optCycles": "{n} cycles",
  "dz.sleep.durH": "{h} h de sommeil",
  "dz.sleep.durHM": "{h} h {m} min de sommeil",
  "dz.sleep.buffer": "Les heures incluent une marge de {n} minutes pour s'endormir.",
  "dz.sleep.honesty": "Le cycle de {avg} minutes est une moyenne de population. Les moyennes individuelles mesurées vont de {min} à {max} minutes (écart type ≈ {sd} min), et la durée des cycles évolue au fil de la nuit ; cet outil ne peut pas connaître les limites réelles de vos cycles.",
  "dz.sleep.disclaimer": "Estimations fondées sur des cycles de sommeil moyens, pas un avis médical. En cas de troubles du sommeil persistants, consultez un professionnel de santé.",
  "dz.sleep.seo": "Calculateur gratuit de cycles de sommeil : heures de coucher ou de réveil suggérées d'après des cycles de sommeil de 90 minutes, avec des remarques honnêtes sur les variations individuelles. Fonctionne entièrement sur votre appareil.",
  "dz.sleep.pageTitle": "Calculateur de cycles de sommeil — Outils Dzzz",
  "dz.hconv.name": "Convertisseurs d'unités de santé",
  "dz.hconv.title": "Convertisseurs d'unités de santé",
  "dz.hconv.benefit": "Convertissez le poids, la taille, la température et les unités des analyses de sang",
  "dz.hconv.rowWeight": "Poids",
  "dz.hconv.kg": "kg",
  "dz.hconv.lb": "lb",
  "dz.hconv.rowHeight": "Taille",
  "dz.hconv.cm": "cm",
  "dz.hconv.ft": "pi",
  "dz.hconv.in": "po",
  "dz.hconv.rowTemp": "Température corporelle",
  "dz.hconv.celsius": "°C",
  "dz.hconv.fahrenheit": "°F",
  "dz.hconv.tempNote": "Repère : 37 °C équivalent à 98,6 °F, une valeur normale de référence couramment citée. Il s'agit uniquement d'une conversion d'unités ; elle n'évalue pas la fièvre.",
  "dz.hconv.rowLab": "Unités des analyses de sang",
  "dz.hconv.analyte": "Analyse",
  "dz.hconv.an.cholesterol": "Cholestérol",
  "dz.hconv.an.triglycerides": "Triglycérides",
  "dz.hconv.an.glucose": "Glucose",
  "dz.hconv.mgdl": "mg/dL",
  "dz.hconv.mmol": "mmol/L",
  "dz.hconv.disclaimer": "Conversions d'unités à titre de référence uniquement, pas un avis médical. Demandez à un professionnel de santé ou à votre laboratoire d'interpréter tout résultat.",
  "dz.hconv.seo": "Convertisseurs d'unités de santé gratuits : kilogrammes en livres, centimètres en pieds et pouces, Celsius en Fahrenheit, et unités des analyses de sang (mg/dL en mmol/L) pour le cholestérol, les triglycérides et le glucose. Fonctionne entièrement sur votre appareil.",
  "dz.hconv.pageTitle": "Convertisseurs d'unités de santé — Outils Dzzz",
  "dz.cycle.name": "Suivi du cycle menstruel",
  "dz.cycle.title": "Suivi du cycle menstruel",
  "dz.cycle.benefit": "Enregistrez les dates de début de vos règles pour voir les prochaines règles, l'ovulation et la fenêtre de fertilité estimées, le tout sur votre appareil.",
  "dz.cycle.privacy": "Vos données restent sur cet appareil : rien n'est envoyé et aucun compte n'est nécessaire.",
  "dz.cycle.logDate": "Date de début des règles",
  "dz.cycle.logBtn": "Enregistrer le début des règles",
  "dz.cycle.logged": "Débuts de règles enregistrés",
  "dz.cycle.empty": "Aucune date enregistrée pour l'instant. Enregistrez le début de vos dernières règles pour voir les estimations.",
  "dz.cycle.deleteEntry": "Supprimer l'entrée {date}",
  "dz.cycle.settings": "Paramètres",
  "dz.cycle.avgLen": "Durée moyenne du cycle (jours)",
  "dz.cycle.avgRange": "Saisissez une durée comprise entre 15 et 60 jours.",
  "dz.cycle.avgAuto": "Calculée à partir de vos dates enregistrées ({n}).",
  "dz.cycle.predictions": "Estimations",
  "dz.cycle.nextPeriod": "Prochaines règles (estimées)",
  "dz.cycle.ovulation": "Ovulation (estimée)",
  "dz.cycle.fertile": "Fenêtre de fertilité (estimée)",
  "dz.cycle.dataHeading": "Vos données",
  "dz.cycle.export": "Exporter les données (JSON)",
  "dz.cycle.deleteAllBtn": "Supprimer toutes les données",
  "dz.cycle.deleteConfirm": "Touchez à nouveau pour confirmer",
  "dz.cycle.confirmPrompt": "Supprimer toutes les données de cycle de cet appareil ? Cette action est irréversible.",
  "dz.cycle.deleteCancel": "Annuler",
  "dz.cycle.deletedMsg": "Toutes les données ont été supprimées de cet appareil.",
  "dz.cycle.disclaimer": "Estimations uniquement : ce n'est pas une méthode contraceptive ni un avis médical. Consultez un professionnel de santé pour la planification familiale.",
  "dz.cycle.seo": "Calendrier privé des règles et de l'ovulation qui fonctionne entièrement sur votre appareil : enregistrez les dates de début de vos règles pour voir les prochaines règles, l'ovulation et la fenêtre de fertilité estimées. Rien n'est envoyé et il n'y a aucun compte.",
  "dz.cycle.pageTitle": "Suivi du cycle menstruel — Outils Dzzz",
  "dz.docpdf.name": "Document en PDF",
  "dz.docpdf.benefit": "Convertissez du Markdown, du HTML, du texte brut ou des images en PDF avec un arabe correct, le tout sur votre appareil.",
  "dz.docpdf.desc": "Markdown, HTML, texte et images en PDF, avec un rendu correct de l'arabe.",
  "dz.docpdf.srcLabel": "Source",
  "dz.docpdf.srcMarkdown": "Markdown",
  "dz.docpdf.srcHtml": "HTML",
  "dz.docpdf.srcText": "Texte brut",
  "dz.docpdf.inputLabel": "Contenu",
  "dz.docpdf.paste": "Collez ou saisissez votre contenu ici…",
  "dz.docpdf.pickFile": "Choisir un fichier",
  "dz.docpdf.fileHint": "Markdown (.md), HTML (.html), texte (.txt) ou images (JPG, PNG, WebP, HEIC)",
  "dz.docpdf.fileReadError": "Impossible de lire ce fichier, essayez-en un autre.",
  "dz.docpdf.tooLarge": "Ce document est trop volumineux pour cet outil sur votre appareil (jusqu'à 2 Mo par fichier, ou environ 1 000 000 de caractères de texte). Divisez-le en parties plus petites et convertissez chaque partie séparément.",
  "dz.docpdf.imagesMode": "Les images sont placées à raison d'une par page, comme dans l'outil Images en PDF.",
  "dz.docpdf.addImages": "Ajouter d'autres images",
  "dz.docpdf.clearImages": "Retour à la saisie de texte",
  "dz.docpdf.capImages": "Vous pouvez ajouter jusqu'à 50 images.",
  "dz.docpdf.capSize": "La taille totale des images ne peut pas dépasser 200 Mo.",
  "dz.docpdf.setup": "Mise en page",
  "dz.docpdf.sizeLabel": "Format de page",
  "dz.docpdf.orientationLabel": "Orientation",
  "dz.docpdf.portrait": "Portrait",
  "dz.docpdf.landscape": "Paysage",
  "dz.docpdf.marginLabel": "Marges",
  "dz.docpdf.marginNormal": "Normales (20 mm)",
  "dz.docpdf.marginNarrow": "Étroites (10 mm)",
  "dz.docpdf.marginWide": "Larges (30 mm)",
  "dz.docpdf.qualityLabel": "Qualité",
  "dz.docpdf.quality2x": "2× (recommandé)",
  "dz.docpdf.quality3x": "3× (plus net)",
  "dz.docpdf.qualityHint": "Une qualité supérieure donne des pages plus nettes et un fichier PDF nettement plus volumineux.",
  "dz.docpdf.preview": "Aperçu de la première page",
  "dz.docpdf.previewEmpty": "Votre première page apparaît ici au fil de la saisie.",
  "dz.docpdf.download": "Télécharger le PDF",
  "dz.docpdf.rasterNote": "Le texte du PDF téléchargé est rastérisé (enregistré sous forme d'images) : il ne peut ni être sélectionné ni faire l'objet d'une recherche, et le fichier est plus volumineux qu'un PDF normal. Pour obtenir du texte sélectionnable, utilisez Imprimer…",
  "dz.docpdf.print": "Imprimer…",
  "dz.docpdf.printNote": "Ouvre la boîte de dialogue d'impression : choisissez-y « Enregistrer au format PDF » pour obtenir du texte sélectionnable et consultable.",
  "dz.docpdf.working": "Création de votre PDF…",
  "dz.docpdf.done": "Votre PDF est prêt, le téléchargement a commencé.",
  "dz.docpdf.error": "Une erreur s'est produite lors de la création du PDF. Veuillez réessayer.",
  "dz.docpdf.empty": "Collez d'abord du contenu ou choisissez un fichier.",
  "dz.docpdf.seo": "Convertissez du Markdown, du HTML, du texte brut et des images en PDF entièrement sur votre appareil : rien n'est envoyé. Le texte arabe est correctement mis en forme et ordonné par le moteur de texte avant le rendu de chaque page. Choisissez A4 ou Letter, portrait ou paysage, les marges prédéfinies et la qualité de rendu, et suivez un aperçu en direct de la première page pendant que vous saisissez. Le PDF téléchargé contient des pages rastérisées, son texte n'est donc ni sélectionnable ni recherchable ; utilisez l'option Imprimer pour obtenir du texte sélectionnable via la boîte de dialogue d'impression.",
  "dz.docpdf.pageTitle": "Document en PDF — Markdown, HTML, texte et images, compatible arabe — Outils Dzzz",
  "dz.copy": "Copier",
  "dz.copyDone": "Copié",
  "dz.hub.math": "Mathématiques",
  "dz.hub.cooking": "Cuisine",
  "dz.hub.islamic": "Vie islamique et saoudienne",
  "dz.pct.name": "Calculateur de pourcentages",
  "dz.pct.benefit": "Toutes vos questions de pourcentage, un seul outil.",
  "dz.pct.title": "Calculateur de pourcentages",
  "dz.pct.pageTitle": "Calculateur de pourcentages — Dzzz",
  "dz.pct.seo": "Calculez des pourcentages instantanément : le pourcentage d'un nombre, la part qu'un nombre représente d'un autre, une hausse ou une baisse en pourcentage, l'ajout ou le retrait d'un pourcentage, et les pourcentages inversés. Fonctionne entièrement sur votre appareil.",
  "dz.pct.modeOf": "% d'un nombre",
  "dz.pct.modeIsWhat": "X représente quel % de Y",
  "dz.pct.modeChange": "Variation en %",
  "dz.pct.modeAddSub": "Ajouter / retirer un %",
  "dz.pct.modeReverse": "% inversé",
  "dz.pct.lineOf": "Combien font {a} % de {b} ?",
  "dz.pct.lineIsWhat": "{a} représente quel pourcentage de {b} ?",
  "dz.pct.lineChange": "Quelle est la variation en pourcentage de {a} à {b} ?",
  "dz.pct.lineAdd": "Combien font {b} plus {a} % ?",
  "dz.pct.lineSub": "Combien font {b} moins {a} % ?",
  "dz.pct.lineReverse": "{a} représente {b} % de quoi ?",
  "dz.pct.pct": "Pourcentage",
  "dz.pct.value": "Nombre",
  "dz.pct.part": "Partie",
  "dz.pct.whole": "Total",
  "dz.pct.from": "De",
  "dz.pct.to": "À",
  "dz.pct.add": "Ajouter",
  "dz.pct.sub": "Retirer",
  "dz.pct.result": "Résultat",
  "dz.pct.increase": "hausse",
  "dz.pct.decrease": "baisse",
  "dz.pct.nochange": "aucune variation",
  "dz.pct.needWhole": "Saisissez un total différent de zéro.",
  "dz.pct.needPct": "Saisissez un pourcentage différent de zéro.",
  "dz.pct.crossShopping": "Remises en magasin",
  "dz.pct.crossExtras": "Ajout / retrait de TVA",
  "dz.frac.name": "Calculateur de fractions",
  "dz.frac.benefit": "Additionnez, soustrayez, multipliez et divisez des fractions.",
  "dz.frac.title": "Calculateur de fractions",
  "dz.frac.pageTitle": "Calculateur de fractions — Dzzz",
  "dz.frac.seo": "Additionnez, soustrayez, multipliez et divisez des fractions et des nombres mixtes avec simplification automatique, détail facultatif des étapes et conversion entre fractions, décimaux et pourcentages. Fonctionne entièrement sur votre appareil.",
  "dz.frac.tabCalc": "Calculer",
  "dz.frac.tabConvert": "Convertir",
  "dz.frac.whole": "Entier",
  "dz.frac.num": "Numérateur",
  "dz.frac.den": "Dénominateur",
  "dz.frac.first": "Première valeur",
  "dz.frac.second": "Seconde valeur",
  "dz.frac.opAdd": "Additionner",
  "dz.frac.opSub": "Soustraire",
  "dz.frac.opMul": "Multiplier",
  "dz.frac.opDiv": "Diviser",
  "dz.frac.showSteps": "Afficher les étapes",
  "dz.frac.steps": "Détail du calcul",
  "dz.frac.result": "Résultat",
  "dz.frac.asMixed": "En nombre mixte",
  "dz.frac.asDecimal": "En décimal",
  "dz.frac.asPercent": "En pourcentage",
  "dz.frac.fromDecimal": "Décimal",
  "dz.frac.toFraction": "En fraction",
  "dz.frac.errDen": "Le dénominateur ne doit pas être zéro.",
  "dz.frac.errDivZero": "Division par zéro impossible.",
  "dz.frac.errTooBig": "Le dénominateur est trop grand.",
  "dz.frac.approx": "Approximatif — les décimaux périodiques sont arrondis à la fraction simple la plus proche.",
  "dz.geo.name": "Calculateur d'aire et de volume",
  "dz.geo.benefit": "Aires et volumes avec conversion d'unités.",
  "dz.geo.title": "Calculateur d'aire et de volume",
  "dz.geo.pageTitle": "Calculateur d'aire et de volume — Dzzz",
  "dz.geo.seo": "Calculez l'aire de rectangles, triangles, cercles, trapèzes et parallélogrammes, et le volume de pavés, cylindres, sphères, cônes et prismes triangulaires — en unités métriques et impériales, avec des unités de surface foncière pour les superficies de biens immobiliers. Fonctionne entièrement sur votre appareil.",
  "dz.geo.tabArea": "Aire",
  "dz.geo.tabVolume": "Volume",
  "dz.geo.shape": "Forme",
  "dz.geo.inputUnit": "Unité de mesure",
  "dz.geo.resultUnit": "Unité du résultat",
  "dz.geo.result": "Résultat",
  "dz.geo.landNote": "Pour l'immobilier et les terrains, les mètres carrés et les hectares sont les unités usuelles dans le Golfe.",
  "dz.geo.rectangle": "Rectangle / carré",
  "dz.geo.triangle": "Triangle",
  "dz.geo.circle": "Cercle",
  "dz.geo.trapezoid": "Trapèze",
  "dz.geo.parallelogram": "Parallélogramme",
  "dz.geo.box": "Pavé",
  "dz.geo.cylinder": "Cylindre",
  "dz.geo.sphere": "Sphère",
  "dz.geo.cone": "Cône",
  "dz.geo.prism": "Prisme triangulaire",
  "dz.geo.fieldW": "Largeur (w)",
  "dz.geo.fieldH": "Hauteur (h)",
  "dz.geo.fieldB": "Base (b)",
  "dz.geo.fieldR": "Rayon (r)",
  "dz.geo.fieldA": "Côté supérieur (a)",
  "dz.geo.fieldL": "Longueur (l)",
  "dz.geo.needAll": "Renseignez toutes les mesures.",
  "dz.unit.name": "Convertisseur d'unités",
  "dz.unit.benefit": "Longueur, poids, volume, vitesse et plus encore.",
  "dz.unit.title": "Convertisseur d'unités",
  "dz.unit.pageTitle": "Convertisseur d'unités — Dzzz",
  "dz.unit.seo": "Convertissez entre unités de longueur, masse, volume, aire, vitesse, température, temps, stockage numérique, pression et énergie, avec des facteurs standard exacts. Fonctionne entièrement sur votre appareil.",
  "dz.unit.category": "Catégorie",
  "dz.unit.from": "De",
  "dz.unit.to": "Vers",
  "dz.unit.swap": "Inverser les unités",
  "dz.unit.allTargets": "1 {unit} équivaut à",
  "dz.unit.catLength": "Longueur",
  "dz.unit.catMass": "Poids / masse",
  "dz.unit.catVolume": "Volume",
  "dz.unit.catArea": "Aire",
  "dz.unit.catSpeed": "Vitesse",
  "dz.unit.catTemperature": "Température",
  "dz.unit.catTime": "Temps",
  "dz.unit.catStorage": "Stockage numérique",
  "dz.unit.catPressure": "Pression",
  "dz.unit.catEnergy": "Énergie",
  "dz.unit.storageNote": "Ko, Mo et Go comptent par milliers ; KiB, MiB et GiB comptent par 1024. Les deux sont affichés car ils ne sont pas équivalents.",
  "dz.unit.timeNote": "Les mois et les années sont volontairement exclus — leur durée dépend du mois ou de l'année concernés.",
  "dz.unit.crossHealth": "Convertisseurs d'unités de santé et de laboratoire",
  "dz.gpa.name": "Calculateur de moyenne (GPA)",
  "dz.gpa.benefit": "Échelles saoudiennes 5,0 et 4,0, américaine, pourcentage ou personnalisée.",
  "dz.gpa.title": "Calculateur de moyenne (GPA)",
  "dz.gpa.pageTitle": "Calculateur de moyenne (GPA) — Dzzz",
  "dz.gpa.seo": "Calculez votre GPA par semestre et cumulé sur les échelles saoudiennes 5,0 et 4,0, sur l'échelle américaine 4,0 avec ou sans notes plus et moins, à partir de pourcentages, ou sur une échelle que vous définissez. Comprend les crédits de transfert et un planificateur d'objectif de GPA. Fonctionne entièrement sur votre appareil.",
  "dz.gpa.scale": "Échelle de notes",
  "dz.gpa.scaleSaudi5": "Saoudienne 5,0",
  "dz.gpa.scaleSaudi4": "Saoudienne 4,0",
  "dz.gpa.scaleUs4plus": "Américaine 4,0 (avec +/−)",
  "dz.gpa.scaleUs4": "Américaine 4,0 (lettres seules)",
  "dz.gpa.scalePercent": "Pourcentage (0–100)",
  "dz.gpa.scalePoints": "Saisir directement les points",
  "dz.gpa.scaleCustom": "Échelle personnalisée",
  "dz.gpa.companion": "Convertir les pourcentages avec",
  "dz.gpa.method": "Méthode",
  "dz.gpa.methodWeighted": "Pondérée par les crédits",
  "dz.gpa.methodSimple": "Moyenne simple",
  "dz.gpa.course": "Cours",
  "dz.gpa.credits": "Crédits",
  "dz.gpa.grade": "Note",
  "dz.gpa.addCourse": "Ajouter un cours",
  "dz.gpa.removeCourse": "Retirer le cours",
  "dz.gpa.semester": "Semestre",
  "dz.gpa.addSemester": "Ajouter un semestre",
  "dz.gpa.removeSemester": "Retirer le semestre",
  "dz.gpa.prior": "Dossier précédent",
  "dz.gpa.priorGpa": "GPA précédent",
  "dz.gpa.priorCredits": "Crédits obtenus",
  "dz.gpa.semesterGpa": "GPA du semestre",
  "dz.gpa.cumulative": "GPA cumulé",
  "dz.gpa.totalCredits": "Total des crédits",
  "dz.gpa.target": "Planificateur d'objectif",
  "dz.gpa.targetGpa": "GPA cumulé visé",
  "dz.gpa.termCredits": "Crédits de ce semestre",
  "dz.gpa.required": "Il vous faut un GPA de {n} ce semestre.",
  "dz.gpa.unreachable": "Cet objectif est hors de portée ce semestre — le maximum possible est {n}.",
  "dz.gpa.customLetter": "Lettre",
  "dz.gpa.customPoints": "Points",
  "dz.gpa.addRow": "Ajouter une note",
  "dz.gpa.vary": "Les établissements diffèrent à la fois par leurs seuils de lettres et par leurs valeurs en points. Il s'agit d'une estimation — vérifiez l'échelle officielle auprès de votre service de scolarité.",
  "dz.gpa.shareNote": "Le lien ne contient que l'échelle et la méthode — vos cours restent sur cet appareil.",
  "dz.gpa.saved": "Enregistré sur cet appareil uniquement. Jamais envoyé, aucun compte.",
  "dz.gpa.clear": "Tout effacer",
  "dz.gpa.cleared": "Effacé",
  "dz.gpa.needCourses": "Ajoutez au moins un cours avec ses crédits.",
  "dz.gpa.export": "Copier le récapitulatif",
  "dz.oven.name": "Convertisseur de température du four",
  "dz.oven.benefit": "°C, °F et thermostat, avec réglage chaleur tournante.",
  "dz.oven.title": "Convertisseur de température du four",
  "dz.oven.pageTitle": "Convertisseur de température du four — Dzzz",
  "dz.oven.seo": "Convertissez les températures du four entre Celsius, Fahrenheit et thermostats britanniques (gas mark) à partir du tableau standard publié, avec un ajustement chaleur tournante et la conversion arithmétique exacte affichée à côté. Fonctionne entièrement sur votre appareil.",
  "dz.oven.mode": "Saisir la température en",
  "dz.oven.modeC": "°C",
  "dz.oven.modeF": "°F",
  "dz.oven.modeGas": "Thermostat",
  "dz.oven.temp": "Température",
  "dz.oven.gas": "Thermostat",
  "dz.oven.celsius": "Celsius",
  "dz.oven.fahrenheit": "Fahrenheit",
  "dz.oven.fan": "Four à chaleur tournante",
  "dz.oven.fanOn": "Chaleur tournante",
  "dz.oven.fanOff": "Four traditionnel",
  "dz.oven.fanNote": "Un four à chaleur tournante demande généralement environ 20 °C de moins qu'un four traditionnel. C'est une valeur courante, pas une règle — elle varie selon le four et le plat.",
  "dz.oven.fanSetting": "Réglez votre four à chaleur tournante sur",
  "dz.oven.conventional": "Four traditionnel",
  "dz.oven.result": "Réglage du tableau",
  "dz.oven.exact": "Conversion exacte",
  "dz.oven.exactLine": "Conversion exacte : {n}",
  "dz.oven.exactMatch": "Exactement dans le tableau",
  "dz.oven.nearest": "Ligne du tableau la plus proche",
  "dz.oven.nearestGas": "Thermostat le plus proche",
  "dz.oven.conventionNote": "Les tableaux de four arrondissent séparément les °C et les °F à de vrais repères de cadran, ils ne concordent donc pas exactement. 180 °C figure à 350 °F dans le tableau ; la conversion exacte est 356 °F.",
  "dz.oven.table": "Tableau de référence rapide",
  "dz.oven.colGas": "Thermostat",
  "dz.oven.colC": "°C",
  "dz.oven.colF": "°F",
  "dz.oven.colFan": "°C chaleur tournante",
  "dz.oven.enterTemp": "Saisissez une température.",
  "dz.oven.pickGas": "Choisissez un thermostat.",
  "dz.oven.crossConverter": "Convertisseur de mesures de cuisine",
  "dz.oven.crossScaler": "Ajusteur de recette",
  "dz.oven.crossUnit": "Convertisseur d'unités général",
  "dz.scaler.name": "Ajusteur de recette",
  "dz.scaler.benefit": "Redimensionnez n'importe quelle recette sans décimales bizarres.",
  "dz.scaler.title": "Ajusteur de recette",
  "dz.scaler.pageTitle": "Ajusteur de recette — Dzzz",
  "dz.scaler.seo": "Adaptez une recette à la hausse ou à la baisse selon le nombre de portions, ou en fixant un ingrédient sur la quantité dont vous disposez. Les volumes sont arrondis aux fractions qu'un jeu de mesures permet réellement, et les poids à une précision qu'une balance de cuisine peut afficher. Fonctionne entièrement sur votre appareil.",
  "dz.scaler.mode": "Ajuster selon",
  "dz.scaler.modeServings": "Portions",
  "dz.scaler.modeIngredient": "Un ingrédient",
  "dz.scaler.baseServings": "La recette est prévue pour",
  "dz.scaler.targetServings": "Il vous faut pour",
  "dz.scaler.servings": "Portions",
  "dz.scaler.factor": "Facteur d'échelle",
  "dz.scaler.factorLine": "Chaque quantité × {n}",
  "dz.scaler.ingredients": "Ingrédients",
  "dz.scaler.amount": "Quantité",
  "dz.scaler.unit": "Unité",
  "dz.scaler.ingredient": "Ingrédient",
  "dz.scaler.namePlaceholder": "ex. farine",
  "dz.scaler.addRow": "Ajouter un ingrédient",
  "dz.scaler.removeRow": "Retirer l'ingrédient",
  "dz.scaler.clear": "Tout effacer",
  "dz.scaler.pin": "Ajuster selon cet ingrédient",
  "dz.scaler.pinned": "Ajusté selon",
  "dz.scaler.pinTarget": "Quantité dont vous disposez",
  "dz.scaler.pinPick": "Choisissez l'ingrédient de référence",
  "dz.scaler.scaled": "Recette ajustée",
  "dz.scaler.original": "Original",
  "dz.scaler.quickHalf": "Moitié",
  "dz.scaler.quickDouble": "Double",
  "dz.scaler.quickTriple": "Triple",
  "dz.scaler.copyList": "Copier la liste ajustée",
  "dz.scaler.needRows": "Ajoutez au moins un ingrédient avec une quantité.",
  "dz.scaler.errServings": "Le nombre de portions doit être supérieur à zéro.",
  "dz.scaler.errAmount": "L'ingrédient de référence doit avoir une quantité supérieure à zéro.",
  "dz.scaler.roundNote": "Les volumes sont arrondis aux fractions qu'un jeu de mesures permet réellement. Les poids sont arrondis à une précision qu'une balance de cuisine peut afficher, jamais à une fraction — un tiers de gramme ne se mesure pas.",
  "dz.scaler.timeNote": "L'ajustement ne modifie que les quantités. Les temps de cuisson, la taille des moules et les températures du four ne changent pas proportionnellement.",
  "dz.scaler.unitCup": "tasse",
  "dz.scaler.unitTbsp": "c. à s.",
  "dz.scaler.unitTsp": "c. à c.",
  "dz.scaler.unitMl": "ml",
  "dz.scaler.unitL": "l",
  "dz.scaler.unitG": "g",
  "dz.scaler.unitKg": "kg",
  "dz.scaler.unitOz": "oz",
  "dz.scaler.unitLb": "lb",
  "dz.scaler.unitPiece": "pièce",
  "dz.scaler.unitNone": "sans unité",
  "dz.scaler.crossConverter": "Convertisseur de mesures de cuisine",
  "dz.scaler.crossOven": "Convertisseur de température du four",
  "dz.scaler.crossPortion": "Planificateur de portions",
  "dz.scaler.crossSubs": "Substitutions d'ingrédients",
  "dz.cook.name": "Convertisseur de mesures de cuisine",
  "dz.cook.benefit": "Des tasses aux grammes, ingrédient par ingrédient.",
  "dz.cook.title": "Convertisseur de mesures de cuisine",
  "dz.cook.pageTitle": "Convertisseur de mesures de cuisine — Dzzz",
  "dz.cook.seo": "Convertissez des tasses, cuillères à soupe et cuillères à café en grammes et en millilitres pour un ingrédient précis, à partir des poids par tasse publiés par USDA FoodData Central et le tableau de King Arthur Baking. Une tasse de farine et une tasse de riz ne pèsent pas pareil, et chaque valeur indique sa source. Fonctionne entièrement sur votre appareil.",
  "dz.cook.mode": "Convertir",
  "dz.cook.modeIngredient": "Par ingrédient (tasses ↔ grammes)",
  "dz.cook.modeVolume": "Volume ↔ volume",
  "dz.cook.modeWeight": "Poids ↔ poids",
  "dz.cook.ingredient": "Ingrédient",
  "dz.cook.search": "Rechercher un ingrédient",
  "dz.cook.searchPlaceholder": "Rechercher en français, en anglais ou en arabe",
  "dz.cook.noResults": "Aucun ingrédient ne correspond à cette recherche.",
  "dz.cook.useGeneric": "Absent de la liste ? Utilisez une valeur approximative",
  "dz.cook.generic": "Autre ingrédient (approximatif)",
  "dz.cook.amount": "Quantité",
  "dz.cook.from": "De",
  "dz.cook.to": "Vers",
  "dz.cook.swap": "Inverser les unités",
  "dz.cook.result": "Résultat",
  "dz.cook.cupStandard": "Taille de la tasse",
  "dz.cook.cupUs": "Tasse américaine (236,588 ml)",
  "dz.cook.cupMetric": "Tasse métrique (250 ml)",
  "dz.cook.cupNote": "Une tasse américaine fait 236,588 ml et une tasse métrique 250 ml — environ 5,7 % d'écart. Ce tableau est établi sur la tasse américaine publiée par ses sources ; choisir la tasse métrique remet donc la valeur à l'échelle au lieu de citer directement la source. Les cuillères à soupe et à café sont fixes et ne changent pas.",
  "dz.cook.flourNote": "La farine est à surveiller : King Arthur publie la farine tout usage à 120 g par tasse remplie à la cuillère et arasée, et précise qu'une tasse fortement tassée peut atteindre environ 160 g — soit environ un tiers de plus. Le résultat dépend de la façon dont vous remplissez la tasse ; les deux valeurs ne sont donc jamais moyennées ici.",
  "dz.cook.approxNote": "Approximatif. Cette valeur utilise la densité de l'eau (1 g/ml) car l'ingrédient ne figure pas dans le tableau, et les densités réelles varient beaucoup d'un ingrédient à l'autre — considérez le résultat comme une estimation grossière, pas comme une mesure.",
  "dz.cook.perCup": "Par tasse américaine",
  "dz.cook.density": "Densité",
  "dz.cook.source": "Source",
  "dz.cook.note": "Remarque",
  "dz.cook.confidence": "Fiabilité",
  "dz.cook.confPublished": "Valeur publiée",
  "dz.cook.confDerived": "Dérivée d'une valeur publiée",
  "dz.cook.confEstimate": "Estimation",
  "dz.cook.viewSource": "Voir la source",
  "dz.cook.count": "{n} ingrédients avec poids publiés",
  "dz.cook.excluded": "Certains ingrédients sont volontairement absents car aucune source primaire ne publie leur poids par tasse. Une valeur devinée serait pire que rien.",
  "dz.cook.unitCup": "tasse",
  "dz.cook.unitTbsp": "c. à s.",
  "dz.cook.unitTsp": "c. à c.",
  "dz.cook.unitMl": "ml",
  "dz.cook.unitL": "l",
  "dz.cook.unitFloz": "fl oz (US)",
  "dz.cook.unitG": "g",
  "dz.cook.unitKg": "kg",
  "dz.cook.unitOz": "oz",
  "dz.cook.unitLb": "lb",
  "dz.cook.crossSubs": "Substitutions d'ingrédients",
  "dz.cook.crossScaler": "Ajusteur de recette",
  "dz.cook.crossOven": "Convertisseur de température du four",
  "dz.cook.crossUnit": "Convertisseur d'unités général",
  "dz.subs.name": "Substitutions d'ingrédients",
  "dz.subs.benefit": "Il vous manque quelque chose ? Remplacez-le correctement.",
  "dz.subs.title": "Substitutions d'ingrédients",
  "dz.subs.pageTitle": "Substitutions d'ingrédients — Dzzz",
  "dz.subs.seo": "Trouvez quoi utiliser à la place du babeurre, de la farine à gâteau, de la levure chimique, de la crème épaisse, du tahini et plus encore — avec le ratio réellement indiqué par chaque éditeur et les réserves qui l'accompagnent. Les sources comprennent King Arthur Baking, des services de vulgarisation universitaires et America's Test Kitchen. Fonctionne entièrement sur votre appareil.",
  "dz.subs.search": "Qu'est-ce qui vous manque ?",
  "dz.subs.searchPlaceholder": "Rechercher en français, en anglais ou en arabe",
  "dz.subs.noResults": "Aucun résultat pour cette recherche. Essayez l'autre nom de l'ingrédient.",
  "dz.subs.browseAll": "Parcourir tous les ingrédients",
  "dz.subs.results": "{n} résultats",
  "dz.subs.forAmount": "Ratio indiqué pour",
  "dz.subs.options": "À utiliser à la place",
  "dz.subs.option": "Substitut",
  "dz.subs.caveat": "Attention",
  "dz.subs.source": "Source",
  "dz.subs.varyNote": "Les éditeurs ne s'accordent pas toujours sur ces proportions : chaque option indique donc sa source. Lorsque deux sources reconnues diffèrent, les deux sont affichées plutôt que d'en choisir une à votre place.",
  "dz.subs.tasteNote": "Un substitut modifie le plus souvent la texture ou le goût, et la pâtisserie est la moins tolérante — attendez-vous à un résultat légèrement différent.",
  "dz.subs.count": "{n} ingrédients couverts",
  "dz.subs.crossConverter": "Convertisseur de mesures de cuisine",
  "dz.subs.crossScaler": "Ajusteur de recette",
  "dz.portion.name": "Planificateur de portions",
  "dz.portion.benefit": "Quelle quantité cuisiner pour vos invités.",
  "dz.portion.title": "Planificateur de portions",
  "dz.portion.pageTitle": "Planificateur de portions — Dzzz",
  "dz.portion.seo": "Planifiez les quantités de riz, de viande, de salade, de pain et de boissons à préparer pour un repas entre amis ou en famille. Chaque quantité est une fourchette tirée des pratiques courantes d'accueil, et non une norme fixe, avec un multiplicateur de style de service que vous contrôlez. Fonctionne entièrement sur votre appareil.",
  "dz.portion.guests": "Invités",
  "dz.portion.occasion": "Style de service",
  "dz.portion.occLight": "Léger",
  "dz.portion.occNormal": "Normal",
  "dz.portion.occGenerous": "Généreux",
  "dz.portion.occLightHint": "Un buffet avec de nombreux plats, ou un repas plus léger.",
  "dz.portion.occNormalHint": "Un repas de famille ordinaire.",
  "dz.portion.occGenerousHint": "Une réception où l'on s'attend à avoir des restes.",
  "dz.portion.multiplier": "Multiplicateur ×{n}",
  "dz.portion.catMain": "Plat principal",
  "dz.portion.catProtein": "Viandes et volailles",
  "dz.portion.catSide": "Accompagnements et extras",
  "dz.portion.perPerson": "Par personne",
  "dz.portion.forGuests": "Pour {n} invités",
  "dz.portion.total": "Total",
  "dz.portion.item": "Produit",
  "dz.portion.quantity": "Quantité",
  "dz.portion.estimateNote": "Estimations couramment utilisées pour recevoir — il ne s'agit pas d'une norme officielle. Dans le Golfe, on reçoit généreusement ; ajustez selon vos goûts.",
  "dz.portion.rangeNote": "Chaque chiffre est une fourchette, volontairement. L'appétit des convives, le nombre de plats sur la table et la durée de la réception la font varier.",
  "dz.portion.copyList": "Copier la liste de courses",
  "dz.portion.listTitle": "Liste de courses",
  "dz.portion.errGuests": "Indiquez au moins un invité.",
  "dz.portion.unitG": "g",
  "dz.portion.unitMl": "ml",
  "dz.portion.unitPiece": "pièces",
  "dz.portion.unitBird": "poulets entiers",
  "dz.portion.noNutrition": "Quantités uniquement — ce planificateur ne contient aucune donnée de calories ni de nutrition.",
  "dz.portion.crossCalorie": "Calculateur de calories",
  "dz.portion.crossScaler": "Ajusteur de recette",
  "dz.portion.crossConverter": "Convertisseur de mesures de cuisine",
  "dz.qibla.name": "Trouver la qibla",
  "dz.qibla.benefit": "La direction de la Kaaba depuis l'endroit où vous êtes.",
  "dz.qibla.title": "Trouver la qibla",
  "dz.qibla.tagNew": "Nouveau",
  "dz.qibla.pageTitle": "Trouver la qibla — direction de la Kaaba — Dzzz",
  "dz.qibla.seo": "Trouvez la qibla où que vous soyez. L'azimut de grand cercle vers la Kaaba est calculé sur votre appareil à partir de vos propres coordonnées — une boussole en direct si votre téléphone dispose du capteur, et un azimut fixe que vous pouvez aligner avec n'importe quelle boussole dans le cas contraire. Sans compte, sans serveur, fonctionne hors ligne.",
  "dz.qibla.gateTitle": "Trouvez la qibla depuis l'endroit où vous êtes",
  "dz.qibla.gateBody": "Nous calculons la direction de grand cercle vers la Kaaba à partir de vos coordonnées — entièrement sur votre appareil.",
  "dz.qibla.useLocation": "Utiliser ma position",
  "dz.qibla.enterCity": "Saisir plutôt une ville ou des coordonnées",
  "dz.qibla.privacy": "Vos coordonnées ne quittent jamais l'appareil — aucune requête n'est envoyée à un serveur.",
  "dz.qibla.gateNote": "Votre téléphone exige un appui explicite avant de pouvoir lire le capteur de la boussole. Cet écran sert à cet appui. Si l'autorisation est refusée, nous passons directement à la vue sans capteur — jamais une impasse.",
  "dz.qibla.locating": "Recherche de votre position…",
  "dz.qibla.denied": "L'autorisation de localisation a été refusée — saisissez plutôt une ville ou des coordonnées.",
  "dz.qibla.unsupported": "La localisation n'est pas disponible ici — saisissez plutôt une ville ou des coordonnées.",
  "dz.qibla.retry": "Réessayer",
  "dz.qibla.back": "Retour",
  "dz.qibla.change": "Modifier",
  "dz.qibla.location": "Position",
  "dz.qibla.coords": "Coordonnées",
  "dz.qibla.bearing": "Qibla",
  "dz.qibla.fromNorth": "depuis le nord géographique",
  "dz.qibla.direction": "Direction",
  "dz.qibla.aligned": "Aligné — vous faites face à la qibla",
  "dz.qibla.turn": "Tournez jusqu'à ce que la flèche pointe vers le haut",
  "dz.qibla.calibrate": "Les mesures semblent instables — déplacez le téléphone en dessinant un 8 pour recalibrer la boussole.",
  "dz.qibla.heading": "Cap de l'appareil",
  "dz.qibla.headingSource": "Source du cap",
  "dz.qibla.sourceTrue": "Boussole iOS — déjà orientée vers le nord géographique.",
  "dz.qibla.sourceMagnetic": "Cap magnétique — il peut différer du nord géographique de quelques degrés.",
  "dz.qibla.sourceMagneticCorrected": "Cap magnétique, corrigé vers le nord géographique avec le modèle WMM2025.",
  "dz.qibla.declination": "Déclinaison magnétique",
  "dz.qibla.declinationApplied": "Corrigé de {deg}° pour la déclinaison magnétique à votre position.",
  "dz.qibla.declinationStale": "Le modèle magnétique a expiré : le cap est donc affiché comme un nord magnétique non corrigé.",
  "dz.qibla.noSensor": "Pas de boussole sur cet appareil (ou autorisation refusée) — voici l'azimut, ainsi qu'une rose que vous pouvez aligner avec n'importe quelle boussole.",
  "dz.qibla.face": "Faites face à",
  "dz.qibla.roseHint": "Alignez la rose avec une boussole physique ou une carte papier ; la branche rouge indique la qibla.",
  "dz.qibla.map": "Direction de La Mecque",
  "dz.qibla.mapDist": "distance de grand cercle",
  "dz.qibla.makkah": "La Mecque",
  "dz.qibla.mapNote": "La ligne en pointillés est la trajectoire de grand cercle ; sur une carte plane, elle n'apparaît pas comme une ligne droite, et c'est précisément pourquoi la valeur de l'azimut fait foi.",
  "dz.qibla.distance": "Distance jusqu'à la Kaaba",
  "dz.qibla.km": "km",
  "dz.qibla.city": "Ville",
  "dz.qibla.cityPh": "Commencez à saisir une ville…",
  "dz.qibla.noCity": "Aucune ville ne correspond à cette recherche — saisissez plutôt des coordonnées.",
  "dz.qibla.lat": "Latitude",
  "dz.qibla.lon": "Longitude",
  "dz.qibla.compute": "Calculer la qibla",
  "dz.qibla.useCity": "Choisir une ville",
  "dz.qibla.useCoords": "Saisir des coordonnées",
  "dz.qibla.manualNote": "La recherche de ville s'appuie sur une liste intégrée à l'outil — aucune requête de géocodage n'est effectuée. Les coordonnées sont en degrés décimaux.",
  "dz.qibla.errCoords": "La latitude doit être comprise entre -90 et 90, et la longitude entre -180 et 180.",
  "dz.qibla.atKaaba": "Vous êtes à la Kaaba — faites-lui directement face.",
  "dz.qibla.honesty": "Indication d'orientation — vérifiez auprès d'une source fiable ; les boussoles des téléphones peuvent être perturbées par les métaux et les aimants.",
  "dz.qibla.copyLine": "Qibla depuis {city} : {bearing}° ({point}) — {km} km jusqu'à la Kaaba",
  "dz.islamic.name": "Dates islamiques et comptes à rebours",
  "dz.islamic.benefit": "Ramadan, les deux Aïd et plus encore — le temps qu'il reste.",
  "dz.islamic.title": "Dates islamiques et comptes à rebours",
  "dz.islamic.tagNew": "Nouveau",
  "dz.islamic.pageTitle": "Dates islamiques et comptes à rebours — Ramadan et Aïd — Dzzz",
  "dz.islamic.seo": "Combien de temps avant le Ramadan, l'Aïd al-Fitr, le jour d'Arafat, l'Aïd al-Adha, le Nouvel An hégirien et Achoura. Chaque date est calculée sur votre appareil avec le calendrier Umm al-Qura, affichée côte à côte en date hégirienne et grégorienne, avec un fichier de calendrier pour chaque événement.",
  "dz.islamic.caveat": "Les dates sont calculées avec le calendrier Umm al-Qura. Le début réel dépend de l'observation officielle de la lune et peut différer d'un jour.",
  "dz.islamic.adjLabel": "Observation de la lune",
  "dz.islamic.adjHint": "Si votre pays a annoncé le début du mois un jour plus tôt ou plus tard que selon Umm al-Qura, décalez toutes les dates en conséquence. Partagé avec le calendrier hégirien. Choisissez +1 si le mois a commencé un jour plus tard chez vous.",
  "dz.islamic.newYear": "Nouvel An hégirien",
  "dz.islamic.ashura": "Achoura",
  "dz.islamic.ramadan": "Ramadan",
  "dz.islamic.eidFitr": "Aïd al-Fitr",
  "dz.islamic.arafah": "Jour d'Arafat",
  "dz.islamic.eidAdha": "Aïd al-Adha",
  "dz.islamic.next": "À venir",
  "dz.islamic.selected": "Sélectionné",
  "dz.islamic.show": "Afficher",
  "dz.islamic.showFor": "Afficher {name} en haut",
  "dz.islamic.nearest": "Afficher le plus proche",
  "dz.islamic.all": "Tous les événements",
  "dz.islamic.days": "jours",
  "dz.islamic.hours": "heures",
  "dz.islamic.minutes": "min",
  "dz.islamic.hijri": "Hégirien",
  "dz.islamic.greg": "Grégorien",
  "dz.islamic.weekday": "Jour",
  "dz.islamic.addCalendar": "Ajouter au calendrier",
  "dz.islamic.addCalendarFor": "Ajouter {name} au calendrier",
  "dz.islamic.copyLine": "Copier la ligne",
  "dz.islamic.shareLine": "{name} dans {n} jours — {hijri} / {greg}",
  "dz.islamic.shareToday": "{name} a lieu aujourd'hui — {hijri} / {greg}",
  "dz.islamic.today": "Aujourd'hui",
  "dz.islamic.tomorrow": "Demain",
  "dz.islamic.inDays": "dans {n} jours",
  "dz.islamic.daysLeft": "{n} jours restants",
  "dz.islamic.note": "Calculé sur votre appareil avec le calendrier Umm al-Qura — aucune requête réseau n'est effectuée.",
  "dz.islamic.noSeconds": "Les secondes sont omises volontairement — sur un compte à rebours mesuré en semaines, elles ne sont que du bruit.",
  "dz.islamic.icsFile": "islamic-event",
  "dz.islamic.outOfRange": "Cette date est en dehors de la plage prise en charge (1900–2077).",
  "dz.payday.name": "Compte à rebours avant le salaire",
  "dz.payday.benefit": "Le nombre de jours avant la paie, week-ends et jours fériés compris.",
  "dz.payday.title": "Compte à rebours avant le salaire",
  "dz.payday.tagNew": "Nouveau",
  "dz.payday.pageTitle": "Compte à rebours avant le salaire — jour de paie en Arabie saoudite — Dzzz",
  "dz.payday.seo": "Calculez quand votre salaire sera probablement versé. Définissez un jour fixe du mois, le dernier jour ouvré ou le Nᵉ jour ouvré ; le week-end saoudien du vendredi et du samedi et les jours fériés le font avancer ou reculer, et les six prochaines paies sont listées pour que vous puissiez vérifier le résultat vous-même. Fonctionne entièrement sur votre appareil.",
  "dz.payday.framing": "Estimations fondées sur les pratiques courantes — le jour de paie réel de votre employeur peut différer. Ce n'est pas une garantie.",
  "dz.payday.nextPay": "Prochaine paie",
  "dz.payday.settings": "Règle du jour de paie",
  "dz.payday.rule": "Comment votre jour de paie est fixé",
  "dz.payday.ruleFixed": "Jour du mois",
  "dz.payday.ruleLastWorking": "Dernier jour ouvré",
  "dz.payday.ruleNthWorking": "Nᵉ jour ouvré",
  "dz.payday.dayOfMonth": "Jour du mois",
  "dz.payday.dayHint": "Par défaut 27 — la convention du secteur public saoudien. Si le mois est plus court, son dernier jour est utilisé.",
  "dz.payday.dayUp": "Plus tard dans le mois",
  "dz.payday.dayDown": "Plus tôt dans le mois",
  "dz.payday.nthLabel": "Quel jour ouvré",
  "dz.payday.nthHint": "Compté à partir du 1er, en excluant le vendredi, le samedi et les jours fériés.",
  "dz.payday.nthUp": "Jour ouvré suivant",
  "dz.payday.nthDown": "Jour ouvré précédent",
  "dz.payday.shiftMode": "Si la paie tombe un week-end ou un jour férié",
  "dz.payday.early": "Payer plus tôt",
  "dz.payday.late": "Payer plus tard",
  "dz.payday.earlyHint": "Par défaut : on recule au dernier jour ouvré précédant le week-end ou le jour férié — ce que font la plupart des employeurs.",
  "dz.payday.lateHint": "On avance plutôt au jour ouvré suivant. Certains employeurs procèdent ainsi ; ce n'est jamais supposé à votre place.",
  "dz.payday.holidays": "Tenir compte des jours fériés saoudiens",
  "dz.payday.holidaysHint": "Utilise le calendrier des jours fériés du secteur public saoudien. Les périodes de l'Aïd sont calculées tant qu'elles ne sont pas annoncées officiellement, et les congés de l'Aïd du secteur privé sont plus courts.",
  "dz.payday.weekendNote": "Le week-end saoudien est le vendredi et le samedi.",
  "dz.payday.effective": "Jour de paie effectif",
  "dz.payday.raw": "Date non décalée",
  "dz.payday.rawWas": "Non décalée : {raw}",
  "dz.payday.noShift": "Tombe un jour ouvré — aucun décalage.",
  "dz.payday.days": "jours",
  "dz.payday.hours": "heures",
  "dz.payday.minutes": "min",
  "dz.payday.shiftNote": "Le {day} tombe un {weekday} ({raw}) — la plupart des employeurs paient plutôt le {eff}.",
  "dz.payday.shiftNoteEarly": "Le {day} tombe un {weekday} ({raw}) — la plupart des employeurs paient plus tôt, le {eff}.",
  "dz.payday.shiftNoteLate": "Le {day} tombe un {weekday} ({raw}) — avec « payer plus tard » sélectionné, la date passe au {eff}.",
  "dz.payday.shiftNoteHoliday": "{raw} tombe pendant un jour férié ({holiday}) — le jour de paie affiché est le {eff}.",
  "dz.payday.schedule": "Six prochaines paies",
  "dz.payday.scheduleHint": "décalage indiqué",
  "dz.payday.colMonth": "Mois",
  "dz.payday.colPayday": "Paie",
  "dz.payday.colReason": "Motif",
  "dz.payday.colTag": "Statut",
  "dz.payday.tagExact": "Exact",
  "dz.payday.tagWeekend": "Week-end",
  "dz.payday.tagHoliday": "Jour férié",
  "dz.payday.tagApproximate": "Approximatif",
  "dz.payday.approximateHint": "Les dates des jours fériés de cette année n'ont pas encore été annoncées ; la période est donc déduite du calendrier hégirien.",
  "dz.payday.engineNote": "Date brute → si elle tombe un vendredi ou un samedi, on se déplace dans le sens choisi ; on revérifie ; si le résultat est un jour férié, on se déplace de nouveau selon la même règle, jusqu'à trouver un jour ouvré. Les deux dates sont affichées pour que le décalage soit vérifiable.",
  "dz.payday.local": "Les paramètres sont enregistrés uniquement sur cet appareil — jamais envoyés, sans compte.",
  "dz.payday.clear": "Effacer les paramètres",
  "dz.payday.cleared": "Effacé",
  "dz.payday.holidayData": "Liste des jours fériés version {version}, vérifiée le {retrieved}.",
  "dz.payday.holidaySource": "Jours fériés du secteur public saoudien (règlement de la fonction publique, art. 127). Les périodes de l'Aïd sont calculées avec le calendrier Umm al-Qura tant qu'elles ne sont pas annoncées officiellement.",
  "dz.payday.copyLine": "Prochaine paie : {eff} — dans {n} jours",
  "dz.coffee.name": "Calculateur d'infusion du café",
  "dz.coffee.benefit": "Ratio, eau absorbée et minuteur de versement en direct.",
  "dz.coffee.title": "Calculateur d'infusion du café",
  "dz.coffee.pageTitle": "Calculateur d'infusion du café — Dzzz",
  "dz.coffee.seo": "Calculez votre dose de café, l'eau d'infusion et la quantité qui arrive réellement dans la tasse. Le marc retient environ 2 g d'eau par gramme de café, et ce calculateur la soustrait au lieu de faire comme si elle n'existait pas. Sept méthodes d'infusion, un plan de versement par étapes avec des objectifs cumulés pour la balance, et un minuteur en direct qui garde l'écran allumé pendant l'infusion. Fonctionne entièrement sur votre appareil.",
  "dz.coffee.methodV60": "V60",
  "dz.coffee.methodChemex": "Chemex",
  "dz.coffee.methodAeropress": "AeroPress",
  "dz.coffee.methodFrenchpress": "Cafetière à piston",
  "dz.coffee.methodMoka": "Cafetière moka",
  "dz.coffee.methodColdbrew": "Cold brew",
  "dz.coffee.methodEspresso": "Espresso",
  "dz.coffee.method.v60": "V60",
  "dz.coffee.method.chemex": "Chemex",
  "dz.coffee.method.aeropress": "AeroPress",
  "dz.coffee.method.frenchpress": "Cafetière à piston",
  "dz.coffee.method.moka": "Cafetière moka",
  "dz.coffee.method.coldbrew": "Cold brew",
  "dz.coffee.method.espresso": "Espresso",
  "dz.coffee.grindMediumFine": "Moyenne-fine",
  "dz.coffee.grindMediumCoarse": "Moyenne-grosse",
  "dz.coffee.grindFineMedium": "Fine-moyenne",
  "dz.coffee.grindCoarse": "Grosse",
  "dz.coffee.grindFine": "Fine",
  "dz.coffee.grindVeryCoarse": "Très grosse",
  "dz.coffee.grindVeryFine": "Très fine",
  "dz.coffee.temp9296": "92–96 °C",
  "dz.coffee.temp8090": "80–90 °C",
  "dz.coffee.temp9295": "92–95 °C",
  "dz.coffee.tempStovetop": "Chaleur de la plaque",
  "dz.coffee.tempCold": "20 °C ou froide du réfrigérateur",
  "dz.coffee.timeV60": "2:45–3:15",
  "dz.coffee.timeChemex": "3:30–4:30",
  "dz.coffee.timeAeropress": "1:30–2:30",
  "dz.coffee.timeFrenchpress": "4:00–5:00",
  "dz.coffee.timeMoka": "3:00–4:00",
  "dz.coffee.timeColdbrew": "14–18 h",
  "dz.coffee.timeEspresso": "25–32 s",
  "dz.coffee.time.v60": "2:45–3:15",
  "dz.coffee.time.chemex": "3:30–4:30",
  "dz.coffee.time.aeropress": "1:30–2:30",
  "dz.coffee.time.frenchpress": "4:00–5:00",
  "dz.coffee.time.moka": "3:00–4:00",
  "dz.coffee.time.coldbrew": "14–18 h",
  "dz.coffee.time.espresso": "25–32 s",
  "dz.coffee.method": "Méthode",
  "dz.coffee.methodRow": "Méthode d'infusion",
  "dz.coffee.solveFor": "Calculer",
  "dz.coffee.solveDose": "J'ai du café",
  "dz.coffee.solveYield": "Je veux une taille de tasse",
  "dz.coffee.solveDoseShort": "Dose → tasse",
  "dz.coffee.solveYieldShort": "Tasse → dose",
  "dz.coffee.hintDose": "Saisissez votre dose — nous calculons l'eau d'infusion et ce qui arrive réellement dans la tasse.",
  "dz.coffee.hintYield": "Saisissez la taille de tasse souhaitée — nous remontons à la dose, absorption comprise.",
  "dz.coffee.doseLabel": "Dose de café",
  "dz.coffee.yieldLabel": "Quantité souhaitée dans la tasse",
  "dz.coffee.ratio": "Ratio",
  "dz.coffee.ratioValue": "1:{n}",
  "dz.coffee.ratioRange": "de 1:12 à 1:20",
  "dz.coffee.strong": "Corsé",
  "dz.coffee.balanced": "Équilibré",
  "dz.coffee.light": "Léger",
  "dz.coffee.presetStrong": "Corsé",
  "dz.coffee.presetBalanced": "Équilibré",
  "dz.coffee.presetLight": "Léger",
  "dz.coffee.cups": "Tasses",
  "dz.coffee.cup1": "1 tasse",
  "dz.coffee.cup2": "2 tasses",
  "dz.coffee.cup4": "4 tasses",
  "dz.coffee.cupsLine": "≈ {n} tasses de 220 g",
  "dz.coffee.cupSize": "Taille de tasse",
  "dz.coffee.decrease": "Diminuer",
  "dz.coffee.increase": "Augmenter",
  "dz.coffee.dose": "Dose",
  "dz.coffee.gCoffee": "g de café",
  "dz.coffee.totalWater": "Eau d'infusion totale",
  "dz.coffee.gWater": "g d'eau",
  "dz.coffee.yieldInCup": "Quantité attendue dans la tasse",
  "dz.coffee.g": "g",
  "dz.coffee.ml": "ml",
  "dz.coffee.kept": "Retenue par le marc",
  "dz.coffee.inCup": "Dans la tasse",
  "dz.coffee.inGrounds": "Retenue par le marc",
  "dz.coffee.subtraction": "{water} g d'eau − {kept} g retenus par le marc = {yield} g dans la tasse",
  "dz.coffee.absorbLine": "{water} g d'eau − {kept} g retenus par le marc = {yield} g dans la tasse",
  "dz.coffee.bypassLine": "plus {n} g d'eau de dilution ajoutée directement dans la tasse",
  "dz.coffee.grind": "Mouture",
  "dz.coffee.temp": "Eau",
  "dz.coffee.brewTime": "Durée totale",
  "dz.coffee.absorptionNote": "Le marc retient de l'eau. L'eau que vous versez n'est pas celle qui arrive dans la tasse — une infusion 1:16 avec 288 g d'eau laisse à peine 250 g, et la plupart des calculateurs ne la soustraient jamais.",
  "dz.coffee.espressoNote": "L'espresso est différent : le ratio va de la dose au liquide dans la tasse, il n'y a donc aucune absorption à soustraire. 18 g à 1:2,2 donnent un shot de 39,6 g.",
  "dz.coffee.rangesNote": "Chaque chiffre ici est un point de départ à ajuster selon votre goût, pas une règle. Le café, le moulin, l'eau et le matériel déplacent tous la cible.",
  "dz.coffee.schedulePour": "Plan de versement",
  "dz.coffee.scheduleSteep": "Étapes de l'infusion",
  "dz.coffee.scheduleEspresso": "Étapes du shot",
  "dz.coffee.cumulative": "cibles cumulées",
  "dz.coffee.cumulativeNote": "Les cibles sont cumulées : c'est ce qu'indique votre balance.",
  "dz.coffee.stageBloom": "Dégazage",
  "dz.coffee.stagePour": "Versement",
  "dz.coffee.stagePourN": "Versement {n}",
  "dz.coffee.stageDrawdown": "Écoulement final",
  "dz.coffee.stageAdd": "Ajouter l'eau",
  "dz.coffee.stageSteep": "Infusion",
  "dz.coffee.stageStir": "Remuer une fois",
  "dz.coffee.stageBreakCrust": "Retirer la croûte",
  "dz.coffee.stagePress": "Presser et servir",
  "dz.coffee.stageFilter": "Filtrer et servir",
  "dz.coffee.stagePreinfusion": "Préinfusion",
  "dz.coffee.stagePull": "Extraction",
  "dz.coffee.detailBloom": "Versez jusqu'à {n} g et laissez dégazer",
  "dz.coffee.detailPour": "Versez jusqu'à {n} g avant {t}",
  "dz.coffee.detailDrawdown": "Laissez le lit de café s'écouler — dernières gouttes vers {t}",
  "dz.coffee.detailAdd": "Ajoutez les {n} g d'eau, puis remuez une fois",
  "dz.coffee.detailSteep": "Couvercle fermé, sans remuer, jusqu'à {t}",
  "dz.coffee.detailBreakCrust": "Retirez la mousse et les grains flottants à la surface",
  "dz.coffee.detailPress": "Pressez lentement — comptez environ {n} g dans la tasse",
  "dz.coffee.detailFilter": "Séparez le liquide du marc — comptez environ {n} g",
  "dz.coffee.detailPreinfusion": "Basse pression — mouillez la galette uniformément",
  "dz.coffee.detailPull": "Extrayez jusqu'à {n} g avant {t}",
  "dz.coffee.pourTo": "Verser jusqu'à {n} g",
  "dz.coffee.targetAt": "{n} g à {t}",
  "dz.coffee.byTime": "avant {t}",
  "dz.coffee.noTarget": "Pas de cible de poids",
  "dz.coffee.startBrew": "Lancer la préparation",
  "dz.coffee.timerTitle": "Minuteur d'infusion",
  "dz.coffee.start": "Démarrer",
  "dz.coffee.pause": "Pause",
  "dz.coffee.resume": "Reprendre",
  "dz.coffee.reset": "Réinitialiser",
  "dz.coffee.done": "Infusion terminée",
  "dz.coffee.nowLabel": "Maintenant",
  "dz.coffee.thenLabel": "Ensuite",
  "dz.coffee.plan": "Plan d'infusion",
  "dz.coffee.elapsed": "Écoulé",
  "dz.coffee.totalTime": "Total",
  "dz.coffee.remaining": "Restant",
  "dz.coffee.progressLabel": "Progression de l'infusion",
  "dz.coffee.stageOf": "Étape {n} sur {total}",
  "dz.coffee.jumpToStage": "Passer à cette étape",
  "dz.coffee.stageDone": "Terminé",
  "dz.coffee.stageNow": "Maintenant",
  "dz.coffee.stageNext": "Suivant",
  "dz.coffee.wakeOn": "L'écran reste allumé",
  "dz.coffee.wakeNote": "L'écran reste allumé pendant que le minuteur tourne et se libère dès que vous le mettez en pause ou le réinitialisez.",
  "dz.coffee.wakeUnsupported": "L'écran risque de ne pas rester allumé ici : il peut s'assombrir en pleine infusion.",
  "dz.coffee.cues": "Son et vibration à chaque étape",
  "dz.coffee.cuesOn": "Activés",
  "dz.coffee.cuesOff": "Désactivés (par défaut)",
  "dz.coffee.on": "Activé",
  "dz.coffee.off": "Désactivé",
  "dz.coffee.hoursClock": "{h} h {m} min",
  "dz.coffee.longBrewNote": "L'infusion à froid dure plusieurs heures, l'horloge compte donc en heures : vous n'avez pas besoin de garder cette page ouverte.",
  "dz.coffee.immersionNote": "Pas d'étapes de versement : infusion, puis pressage.",
  "dz.coffee.immersionFoot": "L'immersion et l'infusion à froid ont des étapes au lieu de cibles de versement cumulées, et l'infusion à froid passe l'horloge en heures.",
  "dz.coffee.advanced": "Avancé",
  "dz.coffee.absorption": "Eau retenue par le marc",
  "dz.coffee.absorptionValue": "{n} g par gramme de café",
  "dz.coffee.absorptionUnit": "g/g",
  "dz.coffee.absorptionHint": "Environ 2 g par gramme de café est un point de départ fiable. Les moutures plus grossières et les lits plus épais retiennent un peu plus : ajustez si votre balance indique autre chose.",
  "dz.coffee.mathLabel": "Le calcul, à découvert",
  "dz.coffee.mathWater": "eau d'infusion = {dose} × {ratio} = {water} g",
  "dz.coffee.mathKept": "retenue par le marc = {dose} × {abs} = {kept} g",
  "dz.coffee.mathYield": "dans la tasse = {water} − {kept} = {yield} g",
  "dz.coffee.splitLabel": "Où va l'eau",
  "dz.coffee.splitLine": "{pct} % de l'eau d'infusion arrive dans la tasse ; le reste reste dans le marc.",
  "dz.coffee.bypass": "Eau de dilution ajoutée après l'infusion",
  "dz.coffee.bypassHint": "Ajoutée directement dans la tasse plutôt qu'à travers le lit de café : elle augmente le volume obtenu sans modifier l'extraction.",
  "dz.coffee.guidance": "Repères par méthode",
  "dz.coffee.guideFoot": "Des points de départ à ajuster selon votre goût, pas des règles. Chaque chiffre est une fourchette, car le café, le moulin et l'eau déplacent tous la cible.",
  "dz.coffee.colMethod": "Méthode",
  "dz.coffee.colRatio": "Ratio",
  "dz.coffee.colGrind": "Mouture",
  "dz.coffee.colTemp": "Eau",
  "dz.coffee.colTime": "Durée totale",
  "dz.coffee.saved": "Recettes enregistrées",
  "dz.coffee.savedCount": "{n} sur cet appareil",
  "dz.coffee.savedEmpty": "Rien d'enregistré pour l'instant : réglez une infusion et enregistrez-la.",
  "dz.coffee.saveRecipe": "Enregistrer la recette",
  "dz.coffee.recipeSaved": "Recette enregistrée",
  "dz.coffee.recipeName": "Nom de la recette",
  "dz.coffee.recipeNamePlaceholder": "V60 du matin",
  "dz.coffee.brew": "Préparer",
  "dz.coffee.deleteRecipe": "Supprimer la recette",
  "dz.coffee.clearAll": "Effacer toutes les recettes enregistrées",
  "dz.coffee.savedFoot": "Les recettes restent uniquement sur cet appareil : méthode, ratio, dose et absorption sont conservés ensemble.",
  "dz.coffee.privacyNote": "Vos réglages et vos recettes enregistrées restent sur cet appareil. Rien n'est envoyé, et il n'y a pas de compte.",
  "dz.coffee.copyRecipe": "Copier le résumé",
  "dz.coffee.summaryLabel": "Résumé",
  "dz.coffee.errDose": "Saisissez une dose supérieure à zéro.",
  "dz.coffee.errYield": "Saisissez une taille de tasse supérieure à zéro.",
  "dz.coffee.errRatio": "Saisissez un ratio supérieur à zéro.",
  "dz.coffee.errBypass": "L'eau de dilution ne peut pas être négative.",
  "dz.coffee.errAbsorption": "Avec ce ratio, le marc retiendrait chaque goutte et rien n'arriverait dans la tasse. Baissez l'absorption ou augmentez le ratio.",
  "dz.coffee.errBloom": "Le dégazage seul demande plus d'eau que l'infusion entière. Augmentez le ratio ou baissez la dose.",
  "dz.coffee.errBypassTooBig": "L'eau de dilution dépasse la tasse demandée.",
  "dz.coffee.errGeneric": "Vérifiez les chiffres : cette combinaison ne peut pas être préparée.",
  "dz.coffee.cookingLink": "Outils de cuisine : mise à l'échelle, conversions et minuteurs",
  "dz.coffee.crossScaler": "Ajusteur de recette",
  "dz.coffee.crossConverter": "Convertisseur de mesures de cuisine",
  "dz.coffee.crossOven": "Convertisseur de température du four",
  "dz.coffee.crossUnit": "Convertisseur d'unités général",
  "dz.baloot.name": "Marqueur de score Baloot",
  "dz.baloot.benefit": "Tenez la صكة : أبناط, مشاريع et un calcul sans erreur.",
  "dz.baloot.title": "Marqueur de score Baloot",
  "dz.baloot.pageTitle": "Marqueur de score Baloot — Dzzz",
  "dz.baloot.seo": "Un tableau de score pour le vrai Baloot (jeu de cartes saoudien) au majlis : choisissez صن ou حكم, saisissez les أبناط du camp qui a compté, et l'autre camp se remplit tout seul. مشاريع, doublage, كبوت, تحت et تعادل suivent tous la اللائحة العامة de la fédération saoudienne, et chaque manche affiche son calcul avant l'enregistrement, pour qu'une main contestée puisse être vérifiée à l'œil. Les totaux sont assez grands pour être lus de l'autre côté de la table, et une صكة interrompue revient exactement comme vous l'avez laissée. Tout reste sur votre appareil : pas de compte, rien n'est envoyé.",
  "dz.baloot.teamUs": "Nous",
  "dz.baloot.teamThem": "Eux",
  "dz.baloot.teams": "Équipes",
  "dz.baloot.teamName": "Nom de l'équipe",
  "dz.baloot.editNames": "Modifier les noms",
  "dz.baloot.renameTeam": "Renommer {team}",
  "dz.baloot.saveNames": "Enregistrer les noms",
  "dz.baloot.namesHint": "Les noms sont mémorisés sur cet appareil pour la prochaine fois.",
  "dz.baloot.mode": "Mode",
  "dz.baloot.modeQuestion": "صن ou حكم ?",
  "dz.baloot.mode.sun": "صن (Sun)",
  "dz.baloot.mode.hokom": "حكم (Hokm)",
  "dz.baloot.modeSun": "صن (Sun)",
  "dz.baloot.modeHokom": "حكم (Hokm)",
  "dz.baloot.modeSunShort": "صن",
  "dz.baloot.modeHokomShort": "حكم",
  "dz.baloot.modeSunTotal": "130 أبناط → 26 points",
  "dz.baloot.modeHokomTotal": "162 أبناط → 16 points",
  "dz.baloot.modeSunHint": "Pas d'atout : toutes les couleurs comptent pareil.",
  "dz.baloot.modeHokomHint": "L'atout porte les valeurs de cartes les plus élevées.",
  "dz.baloot.modeTotalAbnat": "{n} أبناط",
  "dz.baloot.modeTotalPoints": "{n} points",
  "dz.baloot.counted": "Qui a compté ?",
  "dz.baloot.countedShort": "Compté par",
  "dz.baloot.countedHint": "Une seule équipe compte à la table ; le reste est rempli pour vous.",
  "dz.baloot.countedTeam": "{team} a compté",
  "dz.baloot.abnat": "أبناط",
  "dz.baloot.abnatUnit": "أبناط",
  "dz.baloot.abnatOf": "أبناط de {team}",
  "dz.baloot.abnatOther": "أبناط de l'autre camp",
  "dz.baloot.abnatAuto": "Le reste : {n}",
  "dz.baloot.abnatOutOf": "sur {total}",
  "dz.baloot.abnatEnter": "Saisir les أبناط",
  "dz.baloot.abnatSplit": "{us} / {them} أبناط",
  "dz.baloot.bidder": "Preneur",
  "dz.baloot.bidderQuestion": "Qui a pris la manche ?",
  "dz.baloot.bidderHint": "Le camp qui a pris la manche : atteindre le seuil, ou aller تحت.",
  "dz.baloot.bidderBadge": "preneur",
  "dz.baloot.projects": "Annonces (مشاريع)",
  "dz.baloot.projectsFor": "مشاريع de {team}",
  "dz.baloot.projectsNone": "Aucune annonce",
  "dz.baloot.projectsHint": "Touchez ce que chaque camp a annoncé : les valeurs diffèrent entre صن et حكم.",
  "dz.baloot.project.sira": "سرا (Sira)",
  "dz.baloot.project.fifty": "خمسين (Cinquante)",
  "dz.baloot.project.hundred": "مية (Cent)",
  "dz.baloot.project.fourHundred": "أربعمية (Quatre cents)",
  "dz.baloot.project.baloot": "بلوت (Baloot)",
  "dz.baloot.projectSira": "سرا (Sira)",
  "dz.baloot.projectFifty": "خمسين (Cinquante)",
  "dz.baloot.projectHundred": "مية (Cent)",
  "dz.baloot.projectFourHundred": "أربعمية (Quatre cents)",
  "dz.baloot.projectBaloot": "بلوت (Baloot)",
  "dz.baloot.projectDesc.sira": "Trois cartes qui se suivent",
  "dz.baloot.projectDesc.fifty": "Quatre cartes qui se suivent",
  "dz.baloot.projectDesc.hundred": "Cinq cartes qui se suivent, ou un carré",
  "dz.baloot.projectDesc.fourHundred": "Quatre as",
  "dz.baloot.projectDesc.baloot": "Roi et dame de l'atout",
  "dz.baloot.projectChip": "{name} · {n}",
  "dz.baloot.projectValue": "{n} points",
  "dz.baloot.projectTotal": "مشاريع {n}",
  "dz.baloot.projectNoteFourHundredHokom": "Quatre as en حكم comptent comme une مية (10) : أربعمية n'existe pas en حكم.",
  "dz.baloot.projectNoteHundred": "Un carré ne compte comme مية que pour 10 / valet / dame / roi / as : quatre 9, 8 ou 7 ne sont pas une annonce.",
  "dz.baloot.projectNoteBaloot": "بلوت n'existe qu'en حكم.",
  "dz.baloot.projectNoteFourHundredSun": "أربعمية n'existe qu'en صن.",
  "dz.baloot.projectNoteMoves": "Une annonce déclarée déplace le seuil de réussite : 82 et 66 ne valent que pour «اللعبة صافية بدون مشاريع».",
  "dz.baloot.double": "Doublage",
  "dz.baloot.doubleQuestion": "Un doublage ?",
  "dz.baloot.double.none": "Aucun",
  "dz.baloot.double.double": "دبل (double)",
  "dz.baloot.double.three": "ثري (trois)",
  "dz.baloot.double.four": "فور (quatre)",
  "dz.baloot.double.gahwa": "قهوة (gahwa)",
  "dz.baloot.doubleNone": "Aucun",
  "dz.baloot.doubleDouble": "دبل (double)",
  "dz.baloot.doubleThree": "ثري (trois)",
  "dz.baloot.doubleFour": "فور (quatre)",
  "dz.baloot.doubleGahwa": "قهوة (gahwa)",
  "dz.baloot.doubleFactor": "×{n}",
  "dz.baloot.doubleHint": "Le doublage multiplie les points de la manche.",
  "dz.baloot.gahwaNote": "قهوة est le sommet de l'échelle de doublage en حكم : gagner cette manche fait gagner toute la صكة.",
  "dz.baloot.gahwaWon": "قهوة : toute la صكة revient à {team}.",
  "dz.baloot.doubleHokomOnly": "L'échelle en حكم : دبل, ثري, فور, قهوة.",
  "dz.baloot.kaboot": "كبوت (Kaboot)",
  "dz.baloot.kabootQuestion": "Était-ce un كبوت ?",
  "dz.baloot.kabootNone": "Non",
  "dz.baloot.kabootBy": "كبوت pour {team}",
  "dz.baloot.kabootHint": "Les huit plis pour un seul camp.",
  "dz.baloot.kabootNote": "كبوت remplace le score de la manche au lieu de s'y ajouter : 25 en حكم, 44 en صن, plus les مشاريع de ce camp.",
  "dz.baloot.kabootHokomValue": "25 en حكم",
  "dz.baloot.kabootSunValue": "44 en صن",
  "dz.baloot.kabootBadge": "كبوت",
  "dz.baloot.outcome": "Résultat",
  "dz.baloot.outcome.made": "Contrat réussi",
  "dz.baloot.outcome.tie": "تعادل (égalité)",
  "dz.baloot.outcome.failed": "تحت (contrat chuté)",
  "dz.baloot.outcomeMade": "Contrat réussi",
  "dz.baloot.outcomeTie": "تعادل (égalité)",
  "dz.baloot.outcomeFailed": "تحت (contrat chuté)",
  "dz.baloot.outcomeMadeNote": "Le preneur a atteint le seuil : chaque camp garde ses points.",
  "dz.baloot.outcomeTieNote": "تعادل : les points sont partagés entre les deux camps.",
  "dz.baloot.outcomeFailedNote": "تحت : les adversaires prennent toute la manche, et les مشاريع du preneur passent avec elle.",
  "dz.baloot.outcomeFailedVoidNote": "تحت : les adversaires prennent toute la manche, et les مشاريع du preneur sont annulés.",
  "dz.baloot.thresholdHokom": "En حكم, le preneur doit faire 82 أبناط ; 81 est un تعادل.",
  "dz.baloot.thresholdSun": "En صن, le preneur doit faire 66 أبناط ; 65 est un تعادل.",
  "dz.baloot.pad": "Pavé numérique",
  "dz.baloot.padHint": "Un pavé intégré à la page, pour que le clavier du système ne couvre jamais la feuille.",
  "dz.baloot.padPlus10": "+10",
  "dz.baloot.padClear": "Effacer",
  "dz.baloot.padBackspace": "Supprimer un chiffre",
  "dz.baloot.padDone": "Terminé",
  "dz.baloot.padDigit": "Chiffre {n}",
  "dz.baloot.addRound": "Ajouter une manche",
  "dz.baloot.newRound": "Nouvelle manche",
  "dz.baloot.round": "Manche",
  "dz.baloot.rounds": "Manches",
  "dz.baloot.roundN": "Manche {n}",
  "dz.baloot.roundsN": "{n} manches",
  "dz.baloot.saveRound": "Enregistrer la manche",
  "dz.baloot.saveEdit": "Enregistrer les modifications",
  "dz.baloot.cancel": "Annuler",
  "dz.baloot.back": "Retour",
  "dz.baloot.next": "Suivant",
  "dz.baloot.close": "Fermer",
  "dz.baloot.step": "Étape {n}",
  "dz.baloot.required": "Obligatoire",
  "dz.baloot.preview": "Vérifier avant d'enregistrer",
  "dz.baloot.previewHint": "Le calcul complet, pour qu'une manche contestée se vérifie à l'œil plutôt que sur parole.",
  "dz.baloot.previewArith": "Le calcul",
  "dz.baloot.previewCards": "Des cartes",
  "dz.baloot.previewProjects": "Des مشاريع",
  "dz.baloot.previewRound": "Cette manche",
  "dz.baloot.previewRule": "Règle appliquée",
  "dz.baloot.previewAfter": "Totaux après cette manche",
  "dz.baloot.previewConversion": "{abnat} أبناط → {points} points",
  "dz.baloot.conversionNote": "Les أبناط sont divisés par 10 et arrondis. La moitié exacte est le cas particulier : en صن le 5 compte pour un, en حكم il compte pour zéro.",
  "dz.baloot.oneConversionNote": "Un seul camp est converti ; l'autre est déduit du total de la manche : une manche ne peut donc jamais dépasser 16 en حكم ni 26 en صن.",
  "dz.baloot.scoreboard": "Tableau des scores",
  "dz.baloot.total": "Total",
  "dz.baloot.points": "points",
  "dz.baloot.pointsN": "{n} points",
  "dz.baloot.target": "Objectif",
  "dz.baloot.targetChip": "Objectif {n}",
  "dz.baloot.needs": "Il manque {n}",
  "dz.baloot.reached": "Objectif atteint",
  "dz.baloot.leading": "En tête",
  "dz.baloot.tiedNow": "À égalité",
  "dz.baloot.progressLabel": "Progression vers {n}",
  "dz.baloot.lastRound": "Dernière manche",
  "dz.baloot.noRounds": "Aucune manche pour l'instant : ajoutez la première.",
  "dz.baloot.resumed": "Partie reprise depuis cet appareil.",
  "dz.baloot.resumedDismiss": "Compris",
  "dz.baloot.startedAt": "Commencée {time}",
  "dz.baloot.elapsed": "Durée {t}",
  "dz.baloot.history": "Historique des manches",
  "dz.baloot.historyEmpty": "Aucune manche enregistrée pour l'instant.",
  "dz.baloot.historyHint": "Utilisez Modifier sur une manche pour la corriger.",
  "dz.baloot.colIndex": "#",
  "dz.baloot.colMode": "Mode",
  "dz.baloot.colDetail": "Détail",
  "dz.baloot.colScore": "Points",
  "dz.baloot.undo": "Annuler",
  "dz.baloot.undoLast": "Annuler la dernière manche",
  "dz.baloot.undone": "Annulé : totaux recalculés.",
  "dz.baloot.edit": "Modifier",
  "dz.baloot.editRound": "Modifier la manche {n}",
  "dz.baloot.editHint": "Une modification recalcule les deux totaux à partir de toutes les manches.",
  "dz.baloot.deleteRound": "Supprimer la manche",
  "dz.baloot.deleteConfirm": "Supprimer cette manche ? Les deux totaux seront recalculés.",
  "dz.baloot.confirm": "Supprimer",
  "dz.baloot.keep": "La garder",
  "dz.baloot.settings": "Paramètres",
  "dz.baloot.settingsHint": "Le Baloot se joue par accord préalable : réglez ce que joue votre majlis avant la première manche.",
  "dz.baloot.setTarget": "Objectif de la صكة",
  "dz.baloot.setTargetHint": "152 dans toutes les sources arabes consultées.",
  "dz.baloot.setTie": "Gestion du تعادل",
  "dz.baloot.tieSplit": "Partager les points",
  "dz.baloot.tieBidder": "Le preneur garde",
  "dz.baloot.setTieHint": "La لائحة partage à 81–81 en حكم et 65–65 en صن ; certaines tables donnent l'égalité au preneur.",
  "dz.baloot.setKaboot": "Score du كبوت",
  "dz.baloot.kabootFixed": "Fixe : 25 / 44",
  "dz.baloot.kabootMultiplier": "Doubler la manche",
  "dz.baloot.setHundred": "مية",
  "dz.baloot.hundredOn": "Joué",
  "dz.baloot.hundredOff": "Non joué",
  "dz.baloot.setTransfer": "مشاريع du preneur chuté",
  "dz.baloot.transferOn": "Transférés aux adversaires",
  "dz.baloot.transferOff": "Annulés",
  "dz.baloot.setProjectDouble": "Doubler aussi les مشاريع",
  "dz.baloot.on": "Activé",
  "dz.baloot.off": "Désactivé",
  "dz.baloot.setProjectValues": "Valeurs des annonces",
  "dz.baloot.setProjectValuesHint": "Les valeurs par défaut viennent de la لائحة. Modifiez-les si votre majlis compte autrement.",
  "dz.baloot.resetDefaults": "Rétablir les valeurs par défaut",
  "dz.baloot.presets": "Préréglages enregistrés",
  "dz.baloot.presetSave": "Enregistrer ces paramètres",
  "dz.baloot.presetName": "Nom du préréglage",
  "dz.baloot.presetPlaceholder": "Majlis du jeudi",
  "dz.baloot.presetApply": "Appliquer",
  "dz.baloot.presetDelete": "Supprimer le préréglage",
  "dz.baloot.presetsEmpty": "Aucun préréglage enregistré pour l'instant.",
  "dz.baloot.presetSaved": "Préréglage enregistré.",
  "dz.baloot.rulesSource": "Règles tirées de اللائحة العامة للعبة البلوت, de la Fédération saoudienne des sports intellectuels.",
  "dz.baloot.rulesVerified": "Sources vérifiées le {date}.",
  "dz.baloot.rulesLink": "Sources",
  "dz.baloot.winTitle": "{team} remporte la صكة",
  "dz.baloot.winSub": "Score final",
  "dz.baloot.winRounds": "{n} manches",
  "dz.baloot.winDuration": "Durée {t}",
  "dz.baloot.winGahwa": "Par قهوة.",
  "dz.baloot.winKaboot": "Avec un كبوت en cours de route.",
  "dz.baloot.winTieBreak": "Les deux camps ont dépassé l'objectif : le plus d'أبناط l'emporte.",
  "dz.baloot.rematch": "Revanche : mêmes noms",
  "dz.baloot.rematchHint": "Le résultat est ajouté aux statistiques avant la remise à zéro du tableau.",
  "dz.baloot.newGame": "Nouvelle partie",
  "dz.baloot.newGameHint": "Nouveaux noms, tableau vide.",
  "dz.baloot.newGameConfirm": "Commencer une nouvelle partie ? Le tableau actuel sera effacé.",
  "dz.baloot.stats": "Statistiques",
  "dz.baloot.statsGames": "Parties",
  "dz.baloot.statsWins": "Victoires",
  "dz.baloot.statsLosses": "Défaites",
  "dz.baloot.statsRate": "Taux de victoire",
  "dz.baloot.statsHead": "Face à face",
  "dz.baloot.statsGahwa": "Manches قهوة",
  "dz.baloot.statsKaboot": "Manches كبوت",
  "dz.baloot.statsRounds": "Manches",
  "dz.baloot.statsEmpty": "Pas encore de statistiques : terminez d'abord une صكة.",
  "dz.baloot.statsClear": "Effacer les statistiques",
  "dz.baloot.statsSaved": "Résultat ajouté aux statistiques.",
  "dz.baloot.statsLocal": "Les statistiques sont comptées uniquement sur cet appareil.",
  "dz.baloot.privacy": "La partie, les noms, les paramètres et les statistiques restent sur cet appareil. Rien n'est envoyé, et il n'y a pas de compte.",
  "dz.baloot.dataTitle": "Vos données",
  "dz.baloot.export": "Exporter les données",
  "dz.baloot.exportDone": "Exporté.",
  "dz.baloot.clearAll": "Tout effacer",
  "dz.baloot.clearAllConfirm": "Cela efface tout de cet appareil : la partie, les noms, les préréglages et les statistiques. Cette action est irréversible.",
  "dz.baloot.clearAllDone": "Tout a été effacé.",
  "dz.baloot.errAbnat": "Saisissez un nombre entre 0 et {max}.",
  "dz.baloot.errAbnatEmpty": "Saisissez les أبناط du camp qui compte.",
  "dz.baloot.errMode": "Choisissez صن ou حكم.",
  "dz.baloot.errCounted": "Choisissez qui a compté.",
  "dz.baloot.errBidder": "Choisissez le camp preneur.",
  "dz.baloot.errProjectMode": "{project} ne peut pas être annoncé dans ce mode.",
  "dz.baloot.errKaboot": "Un كبوت signifie que chaque بنط est allé à un seul camp.",
  "dz.baloot.errTarget": "Saisissez un objectif supérieur à zéro.",
  "dz.baloot.errName": "Saisissez un nom d'équipe.",
  "dz.baloot.errStorage": "Enregistrement impossible sur cet appareil.",
  "dz.baloot.errGeneric": "Vérifiez les saisies : cette manche ne peut pas être comptée.",
  "dz.baloot.srScore": "{team} : {n} points",
  "dz.baloot.srSelected": "Sélectionné",
  "dz.hub.travel": "Voyage",
  "dz.tz.name": "Convertisseur de fuseaux horaires",
  "dz.tz.desc": "Convertissez une heure entre des villes, planifiez une réunion, suivez une horloge mondiale.",
  "dz.tz.benefit": "Convertissez une heure entre des villes, planifiez une réunion, suivez une horloge mondiale.",
  "dz.tz.title": "Convertisseur de fuseaux horaires",
  "dz.tz.pageTitle": "Convertisseur de fuseaux horaires — Dzzz",
  "dz.tz.seo": "Convertissez une heure locale entre des villes, planifiez une réunion sur plusieurs fuseaux horaires à la fois et gardez une horloge mondiale des lieux qui comptent pour vous. L'heure d'été est lue dans la base de données de fuseaux horaires de votre appareil plutôt que dans un décalage enregistré : une heure locale qui n'existe pas et une heure locale qui se produit deux fois sont donc affichées telles quelles, au lieu d'être devinées en silence. Riyad est épinglée par défaut. Fonctionne entièrement sur votre appareil — sans réseau, sans compte.",
  "dz.tz.seoIntro": "Convertissez une heure locale entre des villes, planifiez une réunion sur plusieurs fuseaux horaires à la fois et gardez une horloge mondiale des lieux qui comptent pour vous. L'heure d'été est lue dans la base de données de fuseaux horaires de votre appareil plutôt que dans un décalage enregistré : une heure locale qui n'existe pas et une heure locale qui se produit deux fois sont donc affichées telles quelles, au lieu d'être devinées en silence. Riyad est épinglée par défaut. Fonctionne entièrement sur votre appareil — sans réseau, sans compte.",
  "dz.tz.tabConvert": "Convertir",
  "dz.tz.tabMeeting": "Planificateur de réunion",
  "dz.tz.tabClock": "Horloge mondiale",
  "dz.tz.tabsAria": "Outils de fuseaux horaires",
  "dz.tz.citySearch": "Rechercher des villes",
  "dz.tz.citySearchPlaceholder": "Ville ou pays",
  "dz.tz.cityNoResults": "Aucune ville ne correspond à cette recherche.",
  "dz.tz.cityResults": "{n} villes",
  "dz.tz.sourceCity": "De",
  "dz.tz.targetCities": "Vers",
  "dz.tz.addCity": "Ajouter une ville",
  "dz.tz.removeCity": "Retirer {city}",
  "dz.tz.pinnedCities": "Vos villes",
  "dz.tz.pinnedEmpty": "Aucune ville pour l'instant — recherchez ci-dessus et ajoutez-en une.",
  "dz.tz.cityLabel": "Ville",
  "dz.tz.zoneLabel": "Fuseau horaire",
  "dz.tz.date": "Date",
  "dz.tz.time": "Heure",
  "dz.tz.useNow": "Utiliser l'heure actuelle",
  "dz.tz.now": "Maintenant",
  "dz.tz.result": "Le même instant ailleurs",
  "dz.tz.resultsAria": "Heures converties",
  "dz.tz.utcOffset": "UTC{offset}",
  "dz.tz.offsetLabel": "Décalage UTC",
  "dz.tz.sameDay": "le même jour",
  "dz.tz.nextDay": "le lendemain",
  "dz.tz.prevDay": "la veille",
  "dz.tz.daysLater": "{n} jours plus tard",
  "dz.tz.daysEarlier": "{n} jours plus tôt",
  "dz.tz.copyTimes": "Copier les heures",
  "dz.tz.copyLabel": "Heures",
  "dz.tz.differenceAhead": "{n} h d'avance sur {city}",
  "dz.tz.differenceBehind": "{n} h de retard sur {city}",
  "dz.tz.differenceSame": "la même heure que {city}",
  "dz.tz.gap": "Cette heure locale n'existe pas dans ce fuseau — les horloges avancent d'un bond.",
  "dz.tz.gapTitle": "Cette heure n'existe pas",
  "dz.tz.gapSuggestion": "Les horloges passent directement à {time}.",
  "dz.tz.ambiguous": "Cette heure locale se produit deux fois à cette date — choisissez laquelle vous voulez dire.",
  "dz.tz.ambiguousTitle": "Cette heure se produit deux fois",
  "dz.tz.occurrenceFirst": "La première",
  "dz.tz.occurrenceSecond": "La seconde",
  "dz.tz.occurrenceHint": "Les deux sont des instants réels, séparés par peu de temps. La première est utilisée sauf si vous la changez.",
  "dz.tz.noDst": "L'Arabie saoudite n'applique pas l'heure d'été : son décalage est donc le même toute l'année.",
  "dz.tz.meetingTitle": "Planificateur de réunion",
  "dz.tz.meetingHint": "Choisissez une date et lisez en travers — chaque ville sélectionnée sur une seule bande.",
  "dz.tz.meetingDate": "Date de la réunion",
  "dz.tz.workStart": "Début des heures de travail",
  "dz.tz.workEnd": "Fin des heures de travail",
  "dz.tz.workingHours": "Heures de travail",
  "dz.tz.workingLegend": "Pendant les heures de travail",
  "dz.tz.outsideLegend": "En dehors des heures de travail",
  "dz.tz.nowLegend": "Maintenant",
  "dz.tz.stripAria": "Heures à {city}",
  "dz.tz.hourAria": "{time} à {city}",
  "dz.tz.pickHour": "Choisir cette heure",
  "dz.tz.chosenHour": "Heure choisie",
  "dz.tz.meetingEmpty": "Ajoutez au moins deux villes à comparer.",
  "dz.tz.clockTitle": "Horloge mondiale",
  "dz.tz.clockHint": "En direct, et elle continue de tourner tant que cette page est ouverte.",
  "dz.tz.dayLabel": "Jour",
  "dz.tz.nightLabel": "Nuit",
  "dz.tz.weekdayLabel": "Jour de la semaine",
  "dz.tz.clockEmpty": "Aucune ville épinglée pour l'instant.",
  "dz.tz.clockLocal": "Votre appareil",
  "dz.tz.privacy": "Vos villes épinglées sont mémorisées uniquement sur cet appareil. Rien n'est envoyé, et il n'y a pas de compte.",
  "dz.tz.clear": "Effacer les villes épinglées",
  "dz.tz.errZone": "Ce fuseau horaire n'est pas reconnu ici.",
  "dz.tz.errDate": "Saisissez une date valide.",
  "dz.tz.errTime": "Saisissez une heure valide.",
  "dz.tz.errYear": "Saisissez une année à quatre chiffres.",
  "dz.flight.name": "Calculateur de durée de vol",
  "dz.flight.linkFirstLeg": "Le lien ne contient que le premier tronçon — ajoutez les autres après l'avoir ouvert.",
  "dz.flight.desc": "Heure d'arrivée, escales et total porte à porte.",
  "dz.flight.benefit": "Heure d'arrivée, escales et total porte à porte.",
  "dz.flight.title": "Calculateur de durée de vol",
  "dz.flight.pageTitle": "Calculateur de durée de vol — Dzzz",
  "dz.flight.seo": "Saisissez une ville et une heure de départ ainsi que la durée publiée du vol, et lisez l'arrivée sur l'horloge de la ville d'arrivée — avec le changement de date, s'il y en a un, clairement indiqué. Ajoutez des tronçons pour une correspondance et vous obtenez chaque escale et le total porte à porte. Les durées publiées sont le temps de bloc, de porte à porte, qui s'ajoute simplement à l'instant du départ : un passage de la ligne de changement de date ou un changement d'heure d'été en plein vol ressort donc du calcul lui-même, sans cas particulier. Fonctionne entièrement sur votre appareil.",
  "dz.flight.seoIntro": "Saisissez une ville et une heure de départ ainsi que la durée publiée du vol, et lisez l'arrivée sur l'horloge de la ville d'arrivée — avec le changement de date, s'il y en a un, clairement indiqué. Ajoutez des tronçons pour une correspondance et vous obtenez chaque escale et le total porte à porte. Les durées publiées sont le temps de bloc, de porte à porte, qui s'ajoute simplement à l'instant du départ : un passage de la ligne de changement de date ou un changement d'heure d'été en plein vol ressort donc du calcul lui-même, sans cas particulier. Fonctionne entièrement sur votre appareil.",
  "dz.flight.legN": "Tronçon {n}",
  "dz.flight.addLeg": "Ajouter un tronçon",
  "dz.flight.removeLeg": "Retirer le tronçon {n}",
  "dz.flight.fromCity": "Depuis",
  "dz.flight.toCity": "Vers",
  "dz.flight.departDate": "Date de départ",
  "dz.flight.departTime": "Heure de départ",
  "dz.flight.duration": "Durée du vol",
  "dz.flight.durationHint": "Utilisez la durée prévue indiquée sur votre billet.",
  "dz.flight.hours": "Heures",
  "dz.flight.minutes": "Minutes",
  "dz.flight.hoursShort": "h",
  "dz.flight.minutesShort": "min",
  "dz.flight.hm": "{h} h {m} min",
  "dz.flight.results": "Votre itinéraire",
  "dz.flight.departs": "Départ",
  "dz.flight.arrives": "Arrivée",
  "dz.flight.arrivesLocal": "Heure locale à {city}",
  "dz.flight.sameDay": "Arrive le même jour",
  "dz.flight.nextDay": "Arrive le lendemain",
  "dz.flight.prevDay": "Arrive la veille",
  "dz.flight.daysLater": "Arrive {n} jours plus tard",
  "dz.flight.daysEarlier": "Arrive {n} jours plus tôt",
  "dz.flight.totalDoor": "Porte à porte",
  "dz.flight.totalFlying": "En l'air",
  "dz.flight.totalGround": "Au sol",
  "dz.flight.copySummary": "Copier l'itinéraire",
  "dz.flight.copyLabel": "Itinéraire",
  "dz.flight.layover": "Escale",
  "dz.flight.layoverN": "Escale {n}",
  "dz.flight.layoverAt": "Escale à {city}",
  "dz.flight.connectionType": "Type de correspondance",
  "dz.flight.statusDD": "National vers national",
  "dz.flight.statusDI": "National vers international",
  "dz.flight.statusID": "International vers national",
  "dz.flight.statusII": "International vers international",
  "dz.flight.statusInterstation": "Un autre aéroport",
  "dz.flight.mct": "Minimum par défaut",
  "dz.flight.mctLabel": "Temps minimal de correspondance par défaut",
  "dz.flight.mctValue": "{n} min",
  "dz.flight.mctEdit": "Ajuster les minimums",
  "dz.flight.mctReset": "Revenir aux valeurs par défaut de l'IATA",
  "dz.flight.mctSource": "IATA SSIM, chapitre 8, §8.10.2",
  "dz.flight.mctNote": "Ce sont les temps minimaux de correspondance par défaut de l'IATA, utilisés par les systèmes de réservation lorsqu'un aéroport n'a déclaré aucune valeur propre. Les aéroports et les compagnies fixent leurs propres minimums, qui les remplacent. C'est une règle de réservation, pas un avis sur le confort d'une correspondance.",
  "dz.flight.tight": "En dessous du minimum par défaut",
  "dz.flight.tightNote": "Cette escale est inférieure au minimum par défaut de {n} min pour ce type de correspondance.",
  "dz.flight.comfortable": "Au-dessus du minimum par défaut",
  "dz.flight.blockNote": "Les durées publiées sont le temps de bloc, de porte à porte. L'ajouter à l'instant du départ et lire le résultat sur l'horloge de la ville d'arrivée, c'est tout le calcul — la ligne de changement de date et tout changement d'heure d'été y sont déjà inclus.",
  "dz.flight.errDuration": "Saisissez une durée de vol supérieure à zéro.",
  "dz.flight.errNegativeLayover": "Le tronçon suivant part avant l'atterrissage du précédent. Vérifiez les heures.",
  "dz.flight.errGap": "Cette heure de départ n'existe pas à {city} ce jour-là — les horloges avancent d'un bond.",
  "dz.flight.errAmbiguous": "Cette heure de départ se produit deux fois à {city} ce jour-là. La première est utilisée.",
  "dz.flight.errZone": "Ce fuseau horaire n'est pas reconnu ici.",
  "dz.flight.errCity": "Choisissez une ville de départ et une ville d'arrivée.",
  "dz.trip.name": "Budget de voyage et partage des frais",
  "dz.trip.desc": "Planifiez le budget, puis partagez ce que chacun a réellement payé.",
  "dz.trip.benefit": "Planifiez le budget, puis partagez ce que chacun a réellement payé.",
  "dz.trip.title": "Budget de voyage et partage des frais",
  "dz.trip.pageTitle": "Budget de voyage et partage des frais — Dzzz",
  "dz.trip.seo": "Deux moitiés d'un même voyage. Planifiez un budget par catégorie, pour tout le voyage ou par jour, et consultez le total, le coût par personne et le coût par jour. Puis notez qui a payé quoi et obtenez le solde de chacun ainsi que le règlement : qui paie qui, et combien. Chaque montant est calculé en unités mineures entières de la devise, si bien que le règlement tombe exactement à zéro. Tout reste sur votre appareil — sans compte, rien n'est envoyé, et aucun taux de change dans le calcul.",
  "dz.trip.seoIntro": "Deux moitiés d'un même voyage. Planifiez un budget par catégorie, pour tout le voyage ou par jour, et consultez le total, le coût par personne et le coût par jour. Puis notez qui a payé quoi et obtenez le solde de chacun ainsi que le règlement : qui paie qui, et combien. Chaque montant est calculé en unités mineures entières de la devise, si bien que le règlement tombe exactement à zéro. Tout reste sur votre appareil — sans compte, rien n'est envoyé, et aucun taux de change dans le calcul.",
  "dz.trip.tabBudget": "Planificateur de budget",
  "dz.trip.tabSplit": "Partage des frais",
  "dz.trip.tabsAria": "Outils de voyage",
  "dz.trip.tripName": "Nom du voyage",
  "dz.trip.tripNamePlaceholder": "Été en Géorgie",
  "dz.trip.currency": "Devise",
  "dz.trip.currencyPlaceholder": "SAR",
  "dz.trip.currencyHint": "Une simple étiquette — choisissez la devise dans laquelle vous dépensez.",
  "dz.trip.noRates": "Les montants sont dans la devise que vous choisissez. Aucun taux de change n'est utilisé ni récupéré.",
  "dz.trip.fxLink": "Besoin d'une conversion ? Ouvrez le convertisseur de devises.",
  "dz.trip.travellers": "Voyageurs",
  "dz.trip.days": "Durée du voyage en jours",
  "dz.trip.daysShort": "jours",
  "dz.trip.categories": "Catégories",
  "dz.trip.catFlights": "Vols",
  "dz.trip.catStay": "Hébergement",
  "dz.trip.catFood": "Repas",
  "dz.trip.catTransport": "Transports",
  "dz.trip.catActivities": "Activités",
  "dz.trip.catShopping": "Achats",
  "dz.trip.catOther": "Autres",
  "dz.trip.amount": "Montant",
  "dz.trip.basis": "Comment est-ce compté ?",
  "dz.trip.perTrip": "Pour tout le voyage",
  "dz.trip.perDay": "Par jour",
  "dz.trip.perDayHint": "Multiplié par la durée du voyage.",
  "dz.trip.total": "Total",
  "dz.trip.perPerson": "Par personne",
  "dz.trip.totalPerDay": "Par jour",
  "dz.trip.perPersonPerDay": "Par personne et par jour",
  "dz.trip.breakdown": "Où va l'argent",
  "dz.trip.shareOfTotal": "{pct} % du total",
  "dz.trip.budgetEmpty": "Saisissez un montant pour une catégorie afin de voir les totaux.",
  "dz.trip.people": "Qui part en voyage ?",
  "dz.trip.addPerson": "Ajouter une personne",
  "dz.trip.removePerson": "Retirer {name}",
  "dz.trip.personName": "Nom",
  "dz.trip.personPlaceholder": "Nom",
  "dz.trip.peopleEmpty": "Ajoutez au moins deux personnes avant de partager quoi que ce soit.",
  "dz.trip.expenses": "Dépenses",
  "dz.trip.addExpense": "Ajouter une dépense",
  "dz.trip.removeExpense": "Retirer cette dépense",
  "dz.trip.expenseWhat": "C'était pour quoi ?",
  "dz.trip.expenseWhatPlaceholder": "Dîner",
  "dz.trip.paidBy": "Payé par",
  "dz.trip.splitAmong": "Partager entre",
  "dz.trip.everyone": "Tout le monde",
  "dz.trip.someone": "Seulement certains d'entre nous",
  "dz.trip.splitEvenly": "À parts égales",
  "dz.trip.splitByShares": "Par parts",
  "dz.trip.shares": "Parts",
  "dz.trip.sharesHint": "Nombres entiers. Un 2 compte pour deux fois un 1.",
  "dz.trip.expensesEmpty": "Aucune dépense pour l'instant.",
  "dz.trip.expensesCount": "{n} dépenses",
  "dz.trip.spentTotal": "Dépensé jusqu'ici",
  "dz.trip.balances": "Soldes",
  "dz.trip.owes": "Doit {n}",
  "dz.trip.owed": "Doit recevoir {n}",
  "dz.trip.level": "À l'équilibre",
  "dz.trip.allSettled": "Tout le monde est à l'équilibre — rien à payer.",
  "dz.trip.settleUp": "Régler les comptes",
  "dz.trip.settleTransfers": "{n} virements",
  "dz.trip.settleOne": "1 virement",
  "dz.trip.transferLine": "{from} paie {amount} à {to}",
  "dz.trip.settleExact": "C'est le plus petit nombre de virements possible.",
  "dz.trip.settleGreedy": "C'est moins de virements que de rembourser chacun séparément.",
  "dz.trip.settleMethodHint": "Au-delà de {n} personnes qui doivent encore ou doivent recevoir quelque chose, trouver le vrai minimum n'est plus rapide ; un itinéraire suffisamment bon est donc utilisé à la place.",
  "dz.trip.copySummary": "Copier le résumé",
  "dz.trip.copyLabel": "Résumé",
  "dz.trip.summaryTitle": "Résumé du voyage",
  "dz.trip.privacy": "Tout reste sur cet appareil. Rien n'est envoyé, et il n'y a pas de compte.",
  "dz.trip.dataTitle": "Vos données",
  "dz.trip.export": "Exporter",
  "dz.trip.exportDone": "Exporté.",
  "dz.trip.clearAll": "Tout effacer",
  "dz.trip.clearAllConfirm": "Cela efface de cet appareil le voyage, les personnes et toutes les dépenses. Cette action est irréversible.",
  "dz.trip.clearAllDone": "Tout a été effacé.",
  "dz.trip.errAmount": "Saisissez un montant supérieur à zéro.",
  "dz.trip.errTravellers": "Indiquez au moins un voyageur.",
  "dz.trip.errDays": "Indiquez au moins un jour.",
  "dz.trip.errName": "Saisissez un nom.",
  "dz.trip.errNameTaken": "Ce nom figure déjà dans la liste.",
  "dz.trip.errPayer": "Choisissez qui a payé.",
  "dz.trip.errAmong": "Choisissez au moins une personne avec qui partager.",
  "dz.trip.errShares": "Les parts doivent être des nombres entiers supérieurs à zéro.",
  "dz.trip.errGeneric": "Vérifiez les saisies — ce montant ne peut pas être partagé.",
  "dz.fuel.name": "Calculateur du coût du carburant",
  "dz.fuel.desc": "Le carburant nécessaire, son coût et la part de chaque personne.",
  "dz.fuel.benefit": "Le carburant nécessaire, son coût et la part de chaque personne.",
  "dz.fuel.title": "Calculateur du coût du carburant",
  "dz.fuel.pageTitle": "Calculateur du coût du carburant — Dzzz",
  "dz.fuel.seo": "Calculez la quantité de carburant nécessaire pour un trajet, son coût au prix du jour et la part de chaque personne. Distance en kilomètres ou en miles ; consommation en L/100 km, km/L ou MPG — et le MPG précise toujours s'il s'agit du gallon américain ou du gallon impérial, car le même véhicule affiche environ 20 % de plus avec l'un qu'avec l'autre. Ajoutez des tronçons pour un itinéraire à plusieurs étapes. Aucun prix du carburant n'est intégré : les prix à la pompe évoluent, vous saisissez donc celui que vous payez réellement. Fonctionne entièrement sur votre appareil.",
  "dz.fuel.seoIntro": "Calculez la quantité de carburant nécessaire pour un trajet, son coût au prix du jour et la part de chaque personne. Distance en kilomètres ou en miles ; consommation en L/100 km, km/L ou MPG — et le MPG précise toujours s'il s'agit du gallon américain ou du gallon impérial, car le même véhicule affiche environ 20 % de plus avec l'un qu'avec l'autre. Ajoutez des tronçons pour un itinéraire à plusieurs étapes. Aucun prix du carburant n'est intégré : les prix à la pompe évoluent, vous saisissez donc celui que vous payez réellement. Fonctionne entièrement sur votre appareil.",
  "dz.fuel.distance": "Distance",
  "dz.fuel.distanceUnit": "Unité de distance",
  "dz.fuel.unitKm": "kilomètres",
  "dz.fuel.unitMi": "miles",
  "dz.fuel.unitKmShort": "km",
  "dz.fuel.unitMiShort": "mi",
  "dz.fuel.consumption": "Consommation de carburant",
  "dz.fuel.consumptionHint": "Litres aux 100 km — plus c'est bas, mieux c'est.",
  "dz.fuel.economy": "Rendement du carburant",
  "dz.fuel.economyHint": "Distance par unité de carburant — plus c'est haut, mieux c'est.",
  "dz.fuel.figureUnit": "Unité de la valeur",
  "dz.fuel.unitL100km": "L/100 km",
  "dz.fuel.unitKmpl": "km/L",
  "dz.fuel.unitMpgUS": "MPG (US)",
  "dz.fuel.unitMpgImp": "MPG (impérial)",
  "dz.fuel.priceLabelL": "Prix par litre",
  "dz.fuel.priceLabelGalUS": "Prix par gallon américain",
  "dz.fuel.priceLabelGalImp": "Prix par gallon impérial",
  "dz.fuel.priceHint": "Ce que la pompe facture aujourd'hui.",
  "dz.fuel.currency": "Devise",
  "dz.fuel.currencyPlaceholder": "SAR",
  "dz.fuel.roundTrip": "Aller-retour",
  "dz.fuel.roundTripHint": "Compte la distance deux fois.",
  "dz.fuel.people": "Partage des frais",
  "dz.fuel.results": "Le trajet",
  "dz.fuel.fuelNeeded": "Carburant nécessaire",
  "dz.fuel.litres": "litres",
  "dz.fuel.galUS": "gallons américains",
  "dz.fuel.galImp": "gallons impériaux",
  "dz.fuel.totalCost": "Coût total",
  "dz.fuel.perPerson": "Par personne",
  "dz.fuel.costPerKm": "Coût par km",
  "dz.fuel.costPerMi": "Coût par mile",
  "dz.fuel.totalDistance": "Distance totale",
  "dz.fuel.copySummary": "Copier le résumé",
  "dz.fuel.copyLabel": "Résumé",
  "dz.fuel.legsTitle": "Étapes du trajet",
  "dz.fuel.legsHint": "Facultatif : ajoutez les étapes et elles sont additionnées.",
  "dz.fuel.addLeg": "Ajouter une étape",
  "dz.fuel.removeLeg": "Retirer cette étape",
  "dz.fuel.legName": "Étape",
  "dz.fuel.legNamePlaceholder": "De Riyad à Qassim",
  "dz.fuel.legDistance": "Distance",
  "dz.fuel.legsEmpty": "Aucune étape pour l'instant, ou saisissez simplement une distance totale ci-dessus.",
  "dz.fuel.equivalents": "Le même chiffre, de quatre façons",
  "dz.fuel.equivHint": "Utile lorsque le manuel de la voiture et une application de carburant n'utilisent pas les mêmes unités.",
  "dz.fuel.noPrice": "Les prix du carburant changent, aucun n'est donc intégré : saisissez le prix que vous payez aujourd'hui.",
  "dz.fuel.mpgVariant": "Les gallons américains et impériaux n'ont pas la même taille, donc la même voiture affiche environ 20 % de plus en MPG impérial. Choisissez celui qu'utilise votre chiffre.",
  "dz.fuel.errDistance": "Saisissez une distance supérieure à zéro.",
  "dz.fuel.errConsumption": "Saisissez une valeur supérieure à zéro.",
  "dz.fuel.errPrice": "Saisissez un prix supérieur à zéro.",
  "dz.fuel.errPeople": "Saisissez au moins une personne.",
  "dz.fuel.errGeneric": "Vérifiez les nombres : le calcul est impossible.",
  "dz.tts.name": "Lire à voix haute",
  "dz.tts.desc": "Lit un texte en arabe ou en anglais à voix haute avec la voix de votre appareil.",
  "dz.tts.benefit": "Lit un texte en arabe ou en anglais à voix haute avec la voix de votre appareil.",
  "dz.tts.title": "Lire à voix haute",
  "dz.tts.pageTitle": "Lire à voix haute — Synthèse vocale — Dzzz",
  "dz.tts.seo": "Collez un texte en arabe ou en anglais et écoutez-le lu à voix haute par les voix déjà installées sur votre appareil. Aucun modèle n'est téléchargé et rien n'est envoyé : c'est le moteur vocal de l'appareil qui travaille, donc l'outil fonctionne aussi hors ligne. Les longs textes sont découpés automatiquement en courtes parties, car le moteur vocal peut s'interrompre en cours de lecture d'un long passage. La vitesse, la hauteur et le volume sont réglables. L'outil lit le texte à voix haute mais ne peut pas enregistrer de fichier audio, car le moteur vocal ne donne pas accès à l'audio synthétisé.",
  "dz.tts.seoIntro": "Collez un texte en arabe ou en anglais et écoutez-le lu à voix haute par les voix déjà installées sur votre appareil. Aucun modèle n'est téléchargé et rien n'est envoyé : c'est le moteur vocal de l'appareil qui travaille, donc l'outil fonctionne aussi hors ligne. Les longs textes sont découpés automatiquement en courtes parties, car le moteur vocal peut s'interrompre en cours de lecture d'un long passage. La vitesse, la hauteur et le volume sont réglables. L'outil lit le texte à voix haute mais ne peut pas enregistrer de fichier audio, car le moteur vocal ne donne pas accès à l'audio synthétisé.",
  "dz.tts.textLabel": "Texte",
  "dz.tts.textPlaceholder": "Collez ou saisissez le texte à lire à voix haute…",
  "dz.tts.textHint": "Les longs textes sont découpés automatiquement en courtes parties, car le moteur vocal peut s'interrompre en cours de lecture d'un long passage.",
  "dz.tts.chars": "Caractères : {n}",
  "dz.tts.clear": "Effacer",
  "dz.tts.settings": "Paramètres de la voix",
  "dz.tts.voice": "Voix",
  "dz.tts.voiceAuto": "Voix par défaut de l'appareil",
  "dz.tts.voiceLoading": "Recherche des voix sur cet appareil…",
  "dz.tts.langAr": "Arabe",
  "dz.tts.langEn": "Anglais",
  "dz.tts.otherLangs": "Autres langues",
  "dz.tts.rate": "Vitesse",
  "dz.tts.pitch": "Hauteur",
  "dz.tts.volume": "Volume",
  "dz.tts.reset": "Réinitialiser les curseurs",
  "dz.tts.play": "Lire",
  "dz.tts.pause": "Pause",
  "dz.tts.resume": "Reprendre",
  "dz.tts.stop": "Arrêter",
  "dz.tts.replay": "Relire",
  "dz.tts.progress": "Partie {n} sur {total}",
  "dz.tts.nowReading": "Lecture en cours",
  "dz.tts.statusIdle": "Prêt",
  "dz.tts.statusStarting": "Démarrage…",
  "dz.tts.statusPlaying": "Lecture…",
  "dz.tts.statusPaused": "En pause",
  "dz.tts.statusDone": "Terminé",
  "dz.tts.statusError": "La lecture n'a pas pu aller à son terme. Réessayez ou choisissez une autre voix.",
  "dz.tts.stalled": "La voix ne répond plus. Appuyez sur Lire pour continuer.",
  "dz.tts.unsupported": "La synthèse vocale n'est pas disponible ici : aucun moteur vocal n'est accessible à la page. Essayez un autre navigateur ou un autre appareil.",
  "dz.tts.errEmpty": "Saisissez ou collez d'abord un texte.",
  "dz.tts.arabicRefused": "Ce texte est en arabe et aucune voix arabe n'est disponible ici. Une voix anglaise ne le lirait pas de façon compréhensible, elle n'est donc pas utilisée.",
  "dz.tts.notesTitle": "Bon à savoir",
  "dz.tts.noExport": "L'outil lit le texte à voix haute mais ne peut pas enregistrer de fichier audio, car le moteur vocal ne donne pas accès à l'audio synthétisé.",
  "dz.tts.deviceVoices": "Les voix proviennent de votre appareil, la liste diffère donc d'un téléphone à un ordinateur.",
  "dz.tts.noArabicVoice": "Aucune voix arabe n'a été trouvée sur cet appareil. En ajouter une dans les paramètres du système peut aider, mais les voix installées sur le système ne sont pas toujours visibles pour la page.",
  "dz.tts.msaNote": "Les voix de l'appareil lisent l'arabe standard moderne, pas un dialecte.",
  "dz.tts.privacy": "Le texte reste sur cet appareil. Rien n'est envoyé.",
  "dz.tts.switchedToArabic": "Votre texte est en arabe, une voix arabe a donc été sélectionnée : une voix non arabe saute le texte arabe au lieu de le lire.",
  "dz.related.title": "Outils associés",
  "dz.related.all": "Tous les outils {cat}",
  "dz.category.pageTitle": "{cat} : outils en ligne gratuits — Dzzz",
  "dz.category.count": "{n} outils",
  "dz.category.others": "Autres catégories",
  "dz.category.sub.audio": "Audio",
  "dz.category.sub.video": "Vidéo",
  "dz.category.sub.images": "Images",
  "dz.category.sub.pdf": "PDF",
  "dz.category.sub.vector": "Vecteur",
  "dz.category.sub.csv": "CSV",
  "dz.category.sub.archives": "Archives",
  "dz.category.sub.privacy": "Confidentialité",
  "dz.category.sub.math": "Maths",
  "dz.category.sub.money": "Argent",
  "dz.category.sub.health": "Santé",
  "dz.category.sub.kitchen": "Cuisine",
  "dz.category.sub.travel": "Voyage",
  "dz.category.sub.shopping": "Courses",
  "dz.scan.name": "Lecteur de QR code et codes-barres",
  "dz.scan.title": "Lecteur de QR code et codes-barres",
  "dz.scan.pageTitle": "Lecteur de QR code et codes-barres — Dzzz",
  "dz.scan.benefit": "Voyez ce que dit vraiment un code avant d'agir",
  "dz.scan.seo": "Lisez des QR codes et des codes-barres avec votre caméra, une image importée ou une capture d'écran collée. Tout est décodé sur votre appareil, rien n'est envoyé. Les liens ne sont jamais ouverts automatiquement, et les liens raccourcis ou non sécurisés sont signalés avant que vous n'appuyiez.",
  "dz.scan.privacyNote": "Les codes sont décodés sur votre appareil. Rien n'est envoyé.",
  "dz.scan.openCamera": "Ouvrir la caméra",
  "dz.scan.uploadCta": "Importer une image",
  "dz.scan.pasteImage": "Coller une image",
  "dz.scan.sheetTitle": "Lire un code",
  "dz.scan.uploadInstead": "Importer plutôt une image",
  "dz.scan.close": "Fermer",
  "dz.scan.torch": "Lampe torche",
  "dz.scan.switchCamera": "Changer de caméra",
  "dz.scan.lowLight": "Peu de lumière : essayez la lampe torche ou déplacez-vous dans un endroit plus lumineux.",
  "dz.scan.noTorch": "Pas de bouton de lampe torche ? Le contrôle de la lampe n'est pas exposé pour cette caméra, comme pour beaucoup d'autres.",
  "dz.scan.aim": "Pointez la caméra vers un code. La lecture se fait toute seule, il n'y a pas de déclencheur.",
  "dz.scan.tryAgain": "Réessayer",
  "dz.scan.denied": "La caméra est désactivée pour ce site",
  "dz.scan.deniedBody": "Pas de souci : choisissez plutôt une photo, vous obtiendrez le même résultat.",
  "dz.scan.noCamera": "Aucune caméra détectée",
  "dz.scan.noCameraBody": "Importez plutôt une photo ou collez une image.",
  "dz.scan.busy": "La caméra n'a pas démarré",
  "dz.scan.busyBody": "Une autre application ou un autre onglet l'utilise peut-être, ou elle n'a pas pu être ouverte. Fermez tout ce qui pourrait utiliser la caméra et réessayez, ou importez plutôt une photo.",
  "dz.scan.reading": "Lecture…",
  "dz.scan.oneFound": "1 code trouvé",
  "dz.scan.twoFound": "{n} codes trouvés : choisissez-en un",
  "dz.scan.twoFoundDual": "Deux codes trouvés : choisissez-en un",
  "dz.scan.nothingFound": "Aucun code trouvé dans cette image.",
  "dz.scan.viewResult": "Voir le résultat",
  "dz.scan.scanAnother": "Lire un autre code",
  "dz.scan.contents": "Contenu",
  "dz.scan.kindUrl": "Lien",
  "dz.scan.kindWifi": "Réseau Wi-Fi",
  "dz.scan.kindContact": "Contact",
  "dz.scan.kindZatca": "QR de facture ZATCA",
  "dz.scan.kindIban": "IBAN",
  "dz.scan.kindBarcode": "Code-barres de produit",
  "dz.scan.kindText": "Texte",
  "dz.scan.destination": "Destination",
  "dz.scan.copyLink": "Copier le lien",
  "dz.scan.openLink": "Ouvrir le lien",
  "dz.scan.warnNoticeTitle": "Ce lien masque sa destination",
  "dz.scan.warnNoticeBody": "N'ouvrez que des liens de confiance : les QR codes sont un moyen courant d'hameçonnage.",
  "dz.scan.warnStrongTitle": "Ce lien n'est pas sûr en l'état",
  "dz.scan.warnStrongBody": "Tout ce que vous y saisissez pourrait être lu par d'autres sur votre réseau, ou la page pourrait ne pas appartenir au site qu'elle prétend être.",
  "dz.scan.reasonShortener": "L'adresse est un lien raccourci, donc la vraie destination est cachée.",
  "dz.scan.reasonLongEncoded": "L'adresse est anormalement longue et fortement encodée.",
  "dz.scan.reasonInsecure": "Elle utilise http:// plutôt que https.",
  "dz.scan.reasonCredentials": "Un nom d'utilisateur ou un mot de passe est intégré à l'adresse.",
  "dz.scan.reasonPunycode": "Le domaine utilise des caractères qui peuvent imiter un autre site.",
  "dz.scan.wifiSsid": "Nom du réseau",
  "dz.scan.wifiPassword": "Mot de passe",
  "dz.scan.wifiSecurity": "Sécurité",
  "dz.scan.wifiHidden": "Réseau masqué",
  "dz.scan.secWpa": "WPA/WPA2",
  "dz.scan.secWep": "WEP",
  "dz.scan.secOpen": "Ouvert (sans mot de passe)",
  "dz.scan.yes": "Oui",
  "dz.scan.no": "Non",
  "dz.scan.copyPassword": "Copier le mot de passe",
  "dz.scan.copySsid": "Copier le nom du réseau",
  "dz.scan.revealPassword": "Afficher le mot de passe",
  "dz.scan.hidePassword": "Masquer le mot de passe",
  "dz.scan.wifiNote": "Copié dans votre presse-papiers : c'est à vous de vous connecter. Nous ne nous connectons jamais à votre place.",
  "dz.scan.contactName": "Nom",
  "dz.scan.contactPhone": "Téléphone",
  "dz.scan.contactEmail": "E-mail",
  "dz.scan.saveContact": "Enregistrer le contact (.vcf)",
  "dz.scan.openZatca": "Ouvrir dans le décodeur ZATCA",
  "dz.scan.handoffNote": "Le code est transmis en mémoire, pas dans la barre d'adresse.",
  "dz.scan.openIban": "Vérifier dans le validateur d'IBAN",
  "dz.scan.ibanValid": "Somme de contrôle valide",
  "dz.scan.ibanInvalid": "La somme de contrôle ne correspond pas",
  "dz.scan.copyNumber": "Copier le numéro",
  "dz.scan.checkDigit": "Clé de contrôle valide",
  "dz.scan.checkDigitBad": "La clé de contrôle ne correspond pas",
  "dz.scan.checkDigitExpected": "Dernier chiffre attendu : {d}",
  "dz.scan.noLookup": "Pas de recherche de produit : cela exigerait une requête réseau et une base de données sous licence.",
  "dz.scan.copyText": "Copier le texte",
  "dz.scan.crossQr": "Créer un QR code",
  "dz.scan.crossBarcode": "Créer un code-barres",
  "dz.scan.crossZatca": "Créer un QR de facture ZATCA",
  "dz.scan.decoderTitle": "Décodeur sur cet appareil",
  "dz.scan.backendNative": "Utilisation du lecteur intégré à cet appareil : rien n'a été téléchargé.",
  "dz.scan.backendWasm": "Utilisation du lecteur fourni (environ 1 Mo, téléchargé une seule fois et mis en cache sur votre appareil).",
  "dz.scan.recent": "Lectures récentes",
  "dz.scan.storedHere": "Stocké uniquement sur cet appareil",
  "dz.scan.clearAll": "Tout effacer",
  "dz.scan.clearConfirm": "Effacer tout l'historique des lectures ?",
  "dz.scan.cancel": "Annuler",
  "dz.scan.historyEmpty": "Rien n'a encore été lu.",
  "dz.scan.pasteBlocked": "L'accès au presse-papiers a été refusé. Appuyez sur Ctrl+V (⌘V) avec cette page active, ou importez l'image.",
  "dz.scan.pasteNoImage": "Il n'y a pas d'image dans le presse-papiers.",
  "dz.docscan.name": "Numériseur de documents",
  "dz.docscan.title": "Numériseur de documents",
  "dz.docscan.pageTitle": "Numériseur de documents — Dzzz",
  "dz.docscan.benefit": "Photographiez une page et obtenez un PDF net et lisible",
  "dz.docscan.seo": "Photographiez n'importe quelle page avec votre téléphone, ou importez une photo existante, et obtenez un PDF net et lisible. Les bords sont détectés, la perspective est redressée et l'éclairage est uniformisé entièrement sur votre appareil : rien n'est envoyé, il n'y a ni compte ni filigrane. Rassemblez plusieurs pages dans un seul fichier, ou enregistrez-les sous forme d'images dans un ZIP.",
  "dz.docscan.privacyNote": "Les pages sont traitées sur votre appareil. Rien n'est envoyé.",
  "dz.docscan.openCamera": "Ouvrir la caméra",
  "dz.docscan.cameraAsk": "L'accès à la caméra vous sera demandé après votre appui.",
  "dz.docscan.uploadCta": "Importer une photo",
  "dz.docscan.dropHere": "Déposez une photo ici, ou cliquez pour en choisir une",
  "dz.docscan.howTitle": "Comment ça marche",
  "dz.docscan.how1": "Photographiez la page, ou importez une photo existante.",
  "dz.docscan.how2": "Faites glisser les coins jusqu'à ce que le contour corresponde à la page.",
  "dz.docscan.how3": "Choisissez un rendu : le noir et blanc convient le mieux au texte.",
  "dz.docscan.how4": "Enregistrez-le en PDF, ou en images dans un ZIP.",
  "dz.docscan.contrastTitle": "Ce que vous obtenez",
  "dz.docscan.contrastBody": "Pas de compte, pas d'envoi, pas de filigrane, et aucune limite de pages au-delà de ce que votre appareil peut contenir. La photo ne quitte jamais votre appareil, il n'y a donc rien à supprimer ensuite.",
  "dz.docscan.engineTitle": "Téléchargement unique",
  "dz.docscan.engineNote": "La détection des bords et le redressement de la page utilisent un moteur d'image d'environ 4 Mo. Il est téléchargé une seule fois, uniquement à votre demande, puis votre appareil le conserve.",
  "dz.docscan.sheetTitle": "Numériser une page",
  "dz.docscan.shutter": "Capturer",
  "dz.docscan.camAim": "Remplissez le cadre avec la page, puis appuyez sur Capturer.",
  "dz.docscan.camDetectOn": "Les bords sont détourés en direct.",
  "dz.docscan.camDetectOff": "Le détourage en direct nécessite le téléchargement unique.",
  "dz.docscan.camCount": "{n} pages jusqu'ici",
  "dz.docscan.camCountOne": "1 page jusqu'ici",
  "dz.docscan.camCountTwo": "2 pages jusqu'ici",
  "dz.docscan.adjustTitle": "Faites correspondre les coins à la page",
  "dz.docscan.adjustGroup": "Coins de la page",
  "dz.docscan.corner": "Coin {n}",
  "dz.docscan.edge": "Bord {n}",
  "dz.docscan.reset": "Réinitialiser les coins",
  "dz.docscan.dragHint": "Faites glisser un coin. Les flèches le déplacent légèrement, Maj va plus vite, R réinitialise.",
  "dz.docscan.detectFound": "Bords détectés. Ajustez tout coin mal placé.",
  "dz.docscan.detectNone": "Aucun bord de page détecté : faites glisser les coins vous-même.",
  "dz.docscan.engineWhy": "La détection des bords et le redressement de la page utilisent le moteur d'image ci-dessous.",
  "dz.docscan.continue": "Les coins sont corrects",
  "dz.docscan.cancel": "Annuler",
  "dz.docscan.opening": "Ouverture…",
  "dz.docscan.flattening": "Redressement…",
  "dz.docscan.saving": "Enregistrement…",
  "dz.docscan.enhanceTitle": "Choisir un rendu",
  "dz.docscan.previewAlt": "Aperçu de la page",
  "dz.docscan.modeLegend": "Rendu de la page",
  "dz.docscan.modeColour": "Couleur",
  "dz.docscan.modeGrey": "Niveaux de gris",
  "dz.docscan.modeBw": "Noir et blanc",
  "dz.docscan.modeAuto": "Auto",
  "dz.docscan.modeNoteColour": "Conserve les tampons, logos et encres de couleur. Le fichier le plus volumineux.",
  "dz.docscan.modeNoteGrey": "Gris neutre. Plus léger que la couleur, et les nuances sont conservées.",
  "dz.docscan.modeNoteBw": "Deux tons seulement. Le texte le plus net et le fichier le plus léger, mais un crayon pâle peut disparaître.",
  "dz.docscan.modeNoteAuto": "Atténue les ombres et conserve la couleur. Plus lent, et une ombre dure peut laisser une trace.",
  "dz.docscan.modeBwTag": "Idéal pour le texte",
  "dz.docscan.modeColourWhy": "Cette page contient de vraies couleurs, donc Couleur est sélectionné. Noir et blanc est à un appui de distance.",
  "dz.docscan.rotate": "Pivoter",
  "dz.docscan.back": "Retour",
  "dz.docscan.addPage": "Ajouter cette page",
  "dz.docscan.saveEdits": "Enregistrer les modifications",
  "dz.docscan.pagesTitle": "Pages",
  "dz.docscan.stripLabel": "Pages de ce document",
  "dz.docscan.allPages": "Toutes les pages",
  "dz.docscan.gridTitle": "Toutes les pages",
  "dz.docscan.done": "Terminé",
  "dz.docscan.reorder": "Réorganiser",
  "dz.docscan.pageN": "Page {n}",
  "dz.docscan.pageCount": "{n} pages",
  "dz.docscan.pageCountOne": "1 page",
  "dz.docscan.pageCountTwo": "2 pages",
  "dz.docscan.openActions": "Page {n} : actions sur la page",
  "dz.docscan.stripHint": "La réorganisation et les modifications page par page se trouvent dans Toutes les pages.",
  "dz.docscan.selectHint": "Choisissez une page pour voir ses actions.",
  "dz.docscan.retake": "Reprendre",
  "dz.docscan.recrop": "Recadrer",
  "dz.docscan.pageMode": "Rendu",
  "dz.docscan.removePage": "Supprimer",
  "dz.docscan.addAnother": "Ajouter une autre page",
  "dz.docscan.toExport": "Exporter",
  "dz.docscan.emptyPages": "Aucune page pour l'instant.",
  "dz.docscan.capReached": "{n} pages est la limite ici : exportez d'abord celles-ci, puis commencez un autre document.",
  "dz.docscan.exportTitle": "Exporter",
  "dz.docscan.titleLabel": "Nom du fichier",
  "dz.docscan.formatLabel": "Format",
  "dz.docscan.formatPdf": "PDF",
  "dz.docscan.formatImages": "Images (.zip)",
  "dz.docscan.sizeLabel": "Format de page",
  "dz.docscan.sizeA4": "A4",
  "dz.docscan.sizeLetter": "Letter",
  "dz.docscan.sizeAuto": "Auto",
  "dz.docscan.qualityLabel": "Qualité",
  "dz.docscan.qSmall": "Faible",
  "dz.docscan.qSmallSub": "Fichier le plus léger",
  "dz.docscan.qMedium": "Moyenne",
  "dz.docscan.qMediumSub": "Équilibrée",
  "dz.docscan.qHigh": "Élevée",
  "dz.docscan.qHighSub": "La plus nette",
  "dz.docscan.resNote": "Les pages sont traitées jusqu'à 2000 px sur le grand côté.",
  "dz.docscan.estimateNote": "La taille indiquée sur le bouton est une estimation, mesurée en encodant une page à cette qualité. La taille réelle s'affiche après l'enregistrement.",
  "dz.docscan.estimating": "Estimation…",
  "dz.docscan.savePdf": "Enregistrer le PDF",
  "dz.docscan.saveImages": "Enregistrer les images",
  "dz.docscan.exporting": "Page {n} sur {total}",
  "dz.docscan.savedSize": "Enregistré — {size}",
  "dz.docscan.toArchive": "Enregistrer dans les archives",
  "dz.docscan.archiveNote": "Conserve ce document et ses pages sur cet appareil, dans ce navigateur. Il n'est ni envoyé ni synchronisé, et n'apparaît pas dans votre gestionnaire de fichiers.",
  "dz.docscan.archiveDone": "Enregistré dans vos archives",
  "dz.docscan.archiveView": "Ouvrir les archives",
  "dz.docscan.archiveFailed": "Impossible de l'enregistrer dans l'archive. L'appareil manque peut-être d'espace. Le fichier que vous enregistrez ci-dessus n'est pas concerné.",
  "dz.docscan.redactFirst": "Caviarder d'abord",
  "dz.docscan.redactNote": "Ouvre l'outil de caviardage avec cette page, transmise en mémoire, jamais dans la barre d'adresse.",
  "dz.docscan.failed": "Cela n'a pas fonctionné. Réessayez ou utilisez une autre photo.",
  "dz.camcolor.name": "Pipette de couleur par caméra",
  "dz.camcolor.title": "Pipette de couleur par caméra",
  "dz.camcolor.pageTitle": "Pipette de couleur par caméra — Relevez n'importe quelle couleur — Dzzz",
  "dz.camcolor.benefit": "Pointez la caméra vers un objet et lisez sa couleur en HEX et RGB",
  "dz.camcolor.seo": "Pointez la caméra de votre téléphone vers un mur, un tissu ou une page imprimée et lisez sa couleur directement à l'écran en HEX et RGB, ou importez une photo et touchez le pixel voulu. Lisez un seul pixel ou la moyenne de neuf pour atténuer le bruit du capteur, rassemblez vos couleurs préférées dans un plateau d'échantillons et envoyez tout l'ensemble à l'outil de palette d'une seule touche. Tout s'exécute sur votre appareil : aucune image de la caméra et aucune photo n'est jamais envoyée ni conservée, seule la couleur relevée l'est. La lecture est approximative, car un téléphone applique sa propre balance des blancs avant que le moindre pixel n'atteigne la page.",
  "dz.camcolor.privacyNote": "Les échantillons sont enregistrés uniquement sur cet appareil. Aucune photo et aucune image de la caméra n'est jamais conservée ni envoyée, seule la couleur relevée l'est.",
  "dz.camcolor.approxNote": "Approximatif : la balance des blancs du téléphone modifie les couleurs. Sans gestion des profils colorimétriques.",
  "dz.camcolor.openCamera": "Ouvrir la caméra",
  "dz.camcolor.cameraAsk": "L'accès à la caméra vous sera demandé après votre appui.",
  "dz.camcolor.uploadCta": "Importer une photo",
  "dz.camcolor.dropHere": "Déposez une photo ici ou cliquez pour en choisir une",
  "dz.camcolor.sheetTitle": "Pipette de couleur",
  "dz.camcolor.sampleAria": "Relever la couleur",
  "dz.camcolor.aim": "Placez le réticule sur la couleur, puis touchez n'importe où.",
  "dz.camcolor.photoTitle": "Touchez une couleur dans la photo",
  "dz.camcolor.photoAria": "Relever une couleur dans la photo",
  "dz.camcolor.photoHint": "Cliquez ou touchez le pixel voulu. Au clavier, Entrée relève le centre.",
  "dz.camcolor.modeLabel": "Zone de relevé",
  "dz.camcolor.modePoint": "Point",
  "dz.camcolor.modeAverage": "Moyenne de 9 px",
  "dz.camcolor.modeNote": "Point lit un seul pixel. Moyenne de 9 px est la moyenne du bloc de 3×3 autour de celui-ci, ce qui atténue le bruit de la caméra sans étaler la couleur à la frontière entre deux teintes.",
  "dz.camcolor.swatchesTitle": "Échantillons",
  "dz.camcolor.savedCount": "Enregistrés · {n}",
  "dz.camcolor.kept": "{hex} conservé",
  "dz.camcolor.emptySwatches": "Aucun échantillon pour l'instant. Relevez une couleur et elle apparaîtra ici.",
  "dz.camcolor.removeSwatch": "Retirer {hex}",
  "dz.camcolor.clearAll": "Tout effacer",
  "dz.camcolor.clearConfirm": "Effacer tous les échantillons enregistrés ?",
  "dz.camcolor.cancel": "Annuler",
  "dz.camcolor.toPalette": "Envoyer à l'outil de palette",
  "dz.camcolor.handoffNote": "Ouvre l'outil de couleur avec ces échantillons, transmis en mémoire, jamais dans la barre d'adresse.",
  "dz.camcolor.capReached": "La limite est de {n} échantillons. Retirez-en un d'abord.",
  "dz.camcolor.failed": "Cette photo n'a pas pu être lue. Essayez-en une autre.",
  "dz.camcolor.howTitle": "Comment ça marche",
  "dz.camcolor.how1": "Ouvrez la caméra ou importez une photo que vous avez déjà.",
  "dz.camcolor.how2": "Placez le réticule sur la couleur et touchez, ou touchez le pixel voulu dans une photo.",
  "dz.camcolor.how3": "Gardez ceux qui vous plaisent. Touchez de nouveau un échantillon pour le retirer.",
  "dz.camcolor.how4": "Envoyez l'ensemble à l'outil de couleur pour obtenir harmonies, dégradés et contraste.",
  "dz.camcolor.whyTitle": "Pourquoi la valeur est approximative",
  "dz.camcolor.whyBody": "Un téléphone applique une balance des blancs automatique, une exposition automatique et son propre traitement des couleurs avant que le moindre pixel n'atteigne cette page, et rien ici n'est géré selon un profil colorimétrique. Deux téléphones pointés vers le même mur ne donneront pas le même résultat, pas plus qu'un même téléphone sous deux éclairages différents. Considérez la lecture comme un bon point de départ, jamais comme la correspondance exacte d'une couleur de marque ou d'un code de peinture.",
  "dz.camcolor.close": "Fermer",
  "dz.camcolor.torch": "Lampe torche",
  "dz.camcolor.uploadInstead": "Importer plutôt une photo",
  "dz.camcolor.switchCamera": "Changer de caméra",
  "dz.camcolor.lowLight": "Lumière insuffisante : les couleurs dérivent dans l'obscurité. Essayez la lampe torche ou allez dans un endroit plus lumineux.",
  "dz.camcolor.tryAgain": "Réessayer",
  "dz.camcolor.denied": "La caméra est désactivée pour ce site",
  "dz.camcolor.deniedBody": "Pas de problème : importez plutôt une photo et relevez-la de la même façon.",
  "dz.camcolor.noCamera": "Aucune caméra détectée",
  "dz.camcolor.noCameraBody": "Importez plutôt une photo et relevez-la de la même façon.",
  "dz.camcolor.busy": "La caméra n'a pas démarré",
  "dz.camcolor.busyBody": "Une autre application ou un autre onglet l'utilise peut-être, ou elle n'a pas pu être ouverte. Fermez tout ce qui pourrait utiliser la caméra et réessayez, ou importez plutôt une photo.",
  "dz.pos.name": "Calculateur de taille de position",
  "dz.pos.title": "Calculateur de taille de position",
  "dz.pos.pageTitle": "Calculateur de taille de position — Dzzz",
  "dz.pos.seo": "Saisissez les achats et les ventes d'une action et il calcule votre prix de revient, la commission réellement payée, le gain réalisé et ce que vos actions restantes vous ont vraiment coûté après une vente partielle. Vos propres chiffres, sur votre propre appareil : aucun cours n'est récupéré et rien n'est envoyé.",
  "dz.pos.disclaimer": "Vos propres chiffres, saisis par vous et conservés uniquement sur cet appareil. Ceci n'est pas un conseil en investissement.",
  "dz.pos.privacy": "Conservé uniquement sur cet appareil. Aucun compte et aucun chiffre dans l'URL.",
  "dz.pos.positions": "Positions",
  "dz.pos.addPosition": "Ajouter une position",
  "dz.pos.importCsv": "Importer depuis un CSV",
  "dz.pos.emptyTitle": "Aucune position pour l'instant",
  "dz.pos.emptyBody": "Saisissez les achats et les ventes d'une action et il calcule le coût, la commission, le gain réalisé et ce que vos actions restantes vous ont vraiment coûté.",
  "dz.pos.exampleCap": "EXEMPLE CONCRET",
  "dz.pos.exampleBody": "Achat de 2 000 à 7,62, vente de 2 000 à 7,80 → gain réalisé de 331,00 après 46,00 de commission.",
  "dz.pos.showTotals": "Afficher les totaux",
  "dz.pos.hideTotals": "Masquer les totaux",
  "dz.pos.portfolio": "Portefeuille",
  "dz.pos.capitalAtRisk": "Capital à risque",
  "dz.pos.aggNote": "Unifié au taux que vous avez saisi. Replié par défaut.",
  "dz.pos.sortBy": "Trier",
  "dz.pos.sortPl": "G/P",
  "dz.pos.sortSymbol": "Symbole",
  "dz.pos.sortSize": "Taille",
  "dz.pos.closed": "Clôturée",
  "dz.pos.closedPos": "position clôturée",
  "dz.pos.openPos": "OUVERTE",
  "dz.pos.symbol": "Symbole",
  "dz.pos.positionName": "Nom (facultatif)",
  "dz.pos.deletePosition": "Supprimer la position",
  "dz.pos.confirmDelete": "Supprimer cette position et toutes ses opérations ? Cette action est irréversible.",
  "dz.pos.clearAll": "Tout supprimer",
  "dz.pos.confirmClearAll": "Supprimer toutes les positions, tous les préréglages et tous les paramètres enregistrés sur cet appareil ?",
  "dz.pos.adjBasis": "PRIX DE REVIENT AJUSTÉ",
  "dz.pos.adjBasisSub": "Ce que vos actions restantes vous ont réellement coûté, après ce que vous avez déjà retiré du jeu. Commission incluse.",
  "dz.pos.remaining": "ACTIONS RESTANTES",
  "dz.pos.totalPL": "G/P TOTAL",
  "dz.pos.atRisk": "du capital encore à risque",
  "dz.pos.totalCommission": "COMMISSION TOTALE",
  "dz.pos.commissionSub": "un coût réel, déjà inclus dans le prix de revient",
  "dz.pos.avgCost": "COÛT MOYEN",
  "dz.pos.avgCostSub": "commission incluse",
  "dz.pos.avgSellPrice": "PRIX DE VENTE MOYEN",
  "dz.pos.avgSellSub": "net de commission",
  "dz.pos.realizedPL": "G/P RÉALISÉ",
  "dz.pos.unrealizedPL": "G/P LATENT",
  "dz.pos.totalInvested": "TOTAL INVESTI",
  "dz.pos.totalReceived": "TOTAL REÇU",
  "dz.pos.sharesBought": "actions achetées",
  "dz.pos.sharesSold": "actions vendues",
  "dz.pos.howCalculated": "Comment c'est calculé",
  "dz.pos.formula": "Formule",
  "dz.pos.result": "Résultat",
  "dz.pos.explainAdjBasis": "Tout ce que vous avez dépensé, moins tout ce que vous avez récupéré, divisé par les actions que vous détenez encore.",
  "dz.pos.explainAvgCost": "Ce que vous avez payé par action sur l'ensemble de vos achats, et non sur ce qu'il reste.",
  "dz.pos.explainAvgSell": "Ce que vous avez reçu par action sur l'ensemble de vos ventes.",
  "dz.pos.explainRealized": "Encaissé, mesuré par rapport au coût moyen. C'est aussi ce qui a fait baisser le prix de revient ajusté, raison pour laquelle il n'est pas ajouté une seconde fois au G/P total.",
  "dz.pos.explainCommission": "La commission est un coût réel et elle est incluse dans le prix de revient, non dissimulée ailleurs.",
  "dz.pos.explainInvested": "Tout ce qui a quitté votre compte, commission incluse.",
  "dz.pos.explainReceived": "Tout ce qui est revenu, après commission.",
  "dz.pos.basisNote": "Le coût moyen couvre tous les achats, y compris ceux effectués après une vente. Ajouter plus tard une opération plus ancienne modifiera donc ce chiffre.",
  "dz.pos.whatIf": "Et si",
  "dz.pos.whatIfSub": "de l'arithmétique, pas une prévision",
  "dz.pos.exactPrice": "PRIX EXACT",
  "dz.pos.plAt": "G/P TOTAL À CE PRIX",
  "dz.pos.breakEven": "seuil de rentabilité",
  "dz.pos.modelSell": "Simuler une vente partielle",
  "dz.pos.sellShares": "ACTIONS À VENDRE",
  "dz.pos.sellNote": "Rien n'est enregistré. Cela montre seulement ce que deviendrait le calcul.",
  "dz.pos.newBasis": "Nouveau prix de revient ajusté",
  "dz.pos.newRemaining": "Actions restantes",
  "dz.pos.resultingRealized": "Gain réalisé sur cette vente",
  "dz.pos.tradeLog": "Journal des opérations",
  "dz.pos.balCol": "Solde courant",
  "dz.pos.held": "détenues",
  "dz.pos.feeShort": "frais",
  "dz.pos.addTrade": "Ajouter une opération",
  "dz.pos.editTrade": "Modifier l'opération",
  "dz.pos.exportCsv": "Exporter en CSV",
  "dz.pos.buy": "Achat",
  "dz.pos.sell": "Vente",
  "dz.pos.qty": "QUANTITÉ",
  "dz.pos.price": "PRIX",
  "dz.pos.date": "DATE",
  "dz.pos.commission": "COMMISSION",
  "dz.pos.note": "Remarque (facultatif)",
  "dz.pos.total": "TOTAL",
  "dz.pos.save": "Enregistrer l'opération",
  "dz.pos.cancel": "Annuler",
  "dz.pos.delete": "Supprimer",
  "dz.pos.computed": "calculé",
  "dz.pos.edited": "modifié",
  "dz.pos.resetFee": "Utiliser les frais calculés",
  "dz.pos.overSell": "Vous ne détenez que {n} actions. Enregistré malgré tout : corrigez si c'est une erreur.",
  "dz.pos.dataWarning": "Plus vendu qu'acheté. Les chiffres se calculent quand même, mais vérifiez le journal.",
  "dz.pos.currency": "Devise",
  "dz.pos.rateLabel": "1 USD =",
  "dz.pos.rateDate": "taux saisi",
  "dz.pos.rateNote": "Un taux que vous avez saisi vous-même : rien n'est récupéré.",
  "dz.pos.presets": "Préréglages de courtier",
  "dz.pos.model": "MODÈLE",
  "dz.pos.modelPercentage": "Pourcentage",
  "dz.pos.modelPerShare": "Par action",
  "dz.pos.modelFlat": "Forfait",
  "dz.pos.modelNone": "Aucun",
  "dz.pos.fieldRate": "TAUX %",
  "dz.pos.fieldPerShare": "PAR ACTION",
  "dz.pos.fieldMinFee": "FRAIS MINIMUM",
  "dz.pos.fieldFlatFee": "FRAIS FORFAITAIRES",
  "dz.pos.fieldVat": "TVA SUR LES FRAIS %",
  "dz.pos.sample": "EXEMPLE EN DIRECT",
  "dz.pos.sampleQty": "QTÉ",
  "dz.pos.samplePrice": "PRIX",
  "dz.pos.vatNote": "La TVA s'applique aux frais, pas à la valeur de l'opération.",
  "dz.pos.noneBody": "Aucune commission. Tous les frais sont calculés à zéro.",
  "dz.pos.presetDefault": "PAR DÉFAUT",
  "dz.pos.presetName": "Nom du préréglage",
  "dz.pos.addPreset": "Ajouter un préréglage",
  "dz.pos.importTitle": "Importer un CSV",
  "dz.pos.mapStep": "Associer les colonnes",
  "dz.pos.theirCol": "LEUR COLONNE",
  "dz.pos.ourField": "NOTRE CHAMP",
  "dz.pos.ignored": "Ignorée",
  "dz.pos.preview": "APERÇU",
  "dz.pos.confirmImport": "Importer {n} opérations",
  "dz.pos.back": "Retour",
  "dz.pos.skippedRows": "{n} lignes ignorées",
  "dz.pos.dayFirst": "Les dates sont au format jour/mois",
  "dz.pos.exportTitle": "Exporter",
  "dz.pos.exportTradeLog": "CSV du journal des opérations",
  "dz.pos.exportSummary": "CSV de synthèse",
  "dz.pos.exportBackup": "Sauvegarde JSON complète",
  "dz.piv.name": "Points pivots",
  "dz.piv.title": "Points pivots",
  "dz.piv.pageTitle": "Calculateur de points pivots — Dzzz",
  "dz.piv.seo": "Saisissez le plus haut, le plus bas et la clôture d'une séance et il présente le pivot ainsi que ses niveaux de support et de résistance sur une échelle étiquetée. Cinq méthodes nommées : le niveau que vous lisez n'est jamais anonyme. De l'arithmétique seulement, calculée sur votre appareil.",
  "dz.piv.high": "PLUS HAUT",
  "dz.piv.low": "PLUS BAS",
  "dz.piv.close": "CLÔTURE",
  "dz.piv.method": "MÉTHODE",
  "dz.piv.ladder": "ÉCHELLE",
  "dz.piv.scale": "ÉCHELLE DE PRIX",
  "dz.piv.formula": "Formule",
  "dz.piv.methodStandard": "Standard",
  "dz.piv.methodWoodie": "Woodie",
  "dz.piv.methodCamarilla": "Camarilla",
  "dz.piv.methodFibonacci": "Fibonacci",
  "dz.piv.methodWorkbook": "Classeur (variante à 4 niveaux)",
  "dz.piv.workbookNote": "Une variante non standard reprise d'un tableur personnel. Elle est nommée ainsi pour ne jamais être confondue avec la méthode standard.",
  "dz.piv.zoneTrim": "Bande supérieure",
  "dz.piv.zoneWatch": "Bande intermédiaire",
  "dz.piv.zoneAccumulate": "Bande inférieure",
  "dz.piv.zoneNote": "Les trois bandes sont des regroupements descriptifs des niveaux, jamais une consigne d'achat ou de vente.",
  "dz.piv.invalidRange": "Le plus haut doit être supérieur ou égal au plus bas.",
  "dz.piv.disclaimer": "De l'arithmétique sur les chiffres que vous avez saisis. Ce n'est ni une prévision ni un conseil en investissement.",
  "dz.pos.ofInvested": "du total investi",
  "dz.pos.modelOverSell": "C'est plus que les {n} actions que vous détenez : les chiffres ci-dessous n'ont pas de sens.",
  "dz.pos.lastPrice": "DERNIER PRIX DÉFINI",
  "dz.pos.unrealizedSub": "au dernier prix défini",
  "dz.pos.noPriceSet": "Définissez un prix dans le bloc « Et si » pour l'afficher.",
  "dz.piv.invalidClose": "La clôture doit se situer entre le plus bas et le plus haut.",
  "dz.pos.sortColumn": "Trier par {col}",
  "dz.pos.pickSheet": "Feuille à importer",
  "dz.pos.skippedRows.one": "1 ligne ignorée",
  "dz.pos.skippedRows.two": "2 lignes ignorées",
  "dz.pos.skippedRows.few": "{n} lignes ignorées",
  "dz.pos.confirmImport.one": "Importer 1 opération",
  "dz.pos.confirmImport.two": "Importer 2 opérations",
  "dz.pos.confirmImport.few": "Importer {n} opérations",
  "dz.lorem.shareNote": "Le lien ne contient que les paramètres : le texte est tiré à nouveau à chaque ouverture.",
  "dz.pwgen.linkNote": "Le lien ne contient que vos paramètres : aucun mot de passe n'est jamais placé dans une URL.",
  "dz.scaler.shareNote": "Le lien ne contient que le nombre de portions : votre liste d'ingrédients reste sur cet appareil.",
  "dz.ms.seoApp": "Transformez l'enregistrement d'une réunion en un résumé clair avec les actions à mener. La transcription s'exécute sur votre appareil, tout comme le résumé : la transcription n'est jamais envoyée et il n'y a aucune étape serveur ici. Le résumé est extractif : il sélectionne les phrases qui portent l'essentiel de la réunion, à partir de la transcription que vous avez déjà relue. Exportez le résultat en TXT ou en Markdown.",
  "dz.ms.basicLocalApp": "Résumer sur cet appareil",
  "dz.ascii.name": "Art ASCII",
  "dz.ascii.pageTitle": "Générateur d'art ASCII — transformez une photo en texte",
  "dz.ascii.benefit": "Transformez une photo en art textuel à coller n'importe où, sur votre appareil.",
  "dz.ascii.seo": "Transformez n'importe quelle photo en art ASCII sur votre appareil. Choisissez la largeur et le jeu de caractères, prévisualisez en direct, puis copiez le texte ou enregistrez-le en SVG. L'image ne quitte jamais votre appareil.",
  "dz.ascii.drop": "Choisir une photo",
  "dz.ascii.width": "Largeur en caractères",
  "dz.ascii.charset": "Jeu de caractères",
  "dz.ascii.ramp.blocks": "Blocs",
  "dz.ascii.ramp.classic": "Classique",
  "dz.ascii.ramp.minimal": "Minimal",
  "dz.ascii.invert": "Inverser",
  "dz.ascii.colour": "Couleur",
  "dz.ascii.fit": "Ajuster à la largeur",
  "dz.ascii.copy": "Copier le texte",
  "dz.ascii.copyHtml": "Copier en HTML",
  "dz.ascii.saveSvg": "Enregistrer en SVG",
  "dz.ascii.another": "Une autre photo",
  "dz.ascii.failed": "Cette image n'a pas pu être lue.",
  "dz.ascii.previewAlt": "Aperçu de l'art ASCII",
  "dz.count.name": "Compter des objets",
  "dz.count.pageTitle": "Compter des objets — repérez et comptez des éléments dans une photo",
  "dz.count.seo": "Détectez automatiquement les objets d'une photo, puis touchez pour ajouter ou retirer des repères jusqu'à ce que le compte soit juste. Réglez la sensibilité et la taille des objets avec des poignées visuelles, passez de sombre sur clair à clair sur sombre, et exportez une image annotée ou un CSV des positions des repères. Un moteur sur l'appareil (~4 Mo) assure la détection automatique ; rien n'est envoyé.",
  "dz.count.benefit": "Obtenez un premier compte automatique, puis touchez pour le corriger, le tout sur votre appareil.",
  "dz.count.caution": "Ceci est une aide, pas un comptage certifié : vérifiez toujours le nombre avant de vous y fier.",
  "dz.count.failed": "Cette image n'a pas pu être lue.",
  "dz.count.drop": "Choisir une photo",
  "dz.count.countLabel": "objets",
  "dz.count.autoCount": "{n} automatiques",
  "dz.count.manualCount": "{n} manuels",
  "dz.count.instructions": "Touchez un endroit vide pour ajouter un repère, touchez un repère pour le retirer. Pincez ou faites défiler pour zoomer, faites glisser pour déplacer.",
  "dz.count.sensitivity": "Sensibilité",
  "dz.count.sensitivityHint": "Une valeur plus élevée détecte les objets plus petits ou plus faibles ; une valeur plus basse ne garde que les plus grands et les plus nets.",
  "dz.count.maxSize": "Plus grand objet",
  "dz.count.maxSizeHint": "Limite la taille d'un objet détecté, afin qu'une zone d'arrière-plan ne soit jamais comptée comme un seul objet géant.",
  "dz.count.mode": "Arrière-plan",
  "dz.count.darkOnLight": "Objets sombres, fond clair",
  "dz.count.lightOnDark": "Objets clairs, fond sombre",
  "dz.count.engineWhy": "La détection automatique nécessite un petit téléchargement unique du moteur — elle s'exécute entièrement sur votre appareil, rien n'est envoyé.",
  "dz.count.detect": "Détecter automatiquement",
  "dz.count.detecting": "Détection en cours…",
  "dz.count.redetect": "Détecter à nouveau",
  "dz.count.exportImage": "Télécharger l'image annotée",
  "dz.count.exportCsv": "Télécharger le CSV des marqueurs",
  "dz.count.saved": "Enregistré.",
  "dz.count.another": "Une autre photo",
  "dz.count.zoomIn": "Zoom avant",
  "dz.count.zoomOut": "Zoom arrière",
  "dz.count.resetView": "Ajuster à la vue",
  "dz.idiff.name": "Différences entre images",
  "dz.idiff.pageTitle": "Différences entre images — comparez deux images pixel par pixel",
  "dz.idiff.seo": "Comparez deux images entièrement sur votre appareil : voyez en direct le pourcentage de pixels modifiés, le nombre de régions modifiées distinctes avec navigation vers la suivante, et cinq façons d'observer la différence — côte à côte, curseur de balayage, fondu d'opacité (onion skin), superposition numérotée des régions de différence et clignotement A/B. Réglez la sensibilité et choisissez d'ignorer ou non le bruit de crénelage (anticrénelage). Rien n'est envoyé.",
  "dz.idiff.benefit": "Voyez exactement ce qui a changé entre deux images — comparées entièrement sur votre appareil.",
  "dz.idiff.failed": "Cette image n'a pas pu être lue.",
  "dz.idiff.dropA": "Choisir l'image A",
  "dz.idiff.dropB": "Choisir l'image B",
  "dz.idiff.replaceA": "Remplacer l'image A",
  "dz.idiff.replaceB": "Remplacer l'image B",
  "dz.idiff.another": "Recommencer",
  "dz.idiff.sensitivity": "Sensibilité",
  "dz.idiff.sensitivityHint": "Une valeur basse détecte même les différences les plus faibles ; une valeur haute ignore les petites variations et ne signale que les changements nets.",
  "dz.idiff.ignoreAA": "Ignorer le bruit de crénelage",
  "dz.idiff.viewMode": "Mode d'affichage",
  "dz.idiff.mode.sideBySide": "Côte à côte",
  "dz.idiff.mode.swipe": "Balayage",
  "dz.idiff.mode.onion": "Fondu (onion skin)",
  "dz.idiff.mode.diff": "Carte des différences",
  "dz.idiff.mode.blink": "Clignotement",
  "dz.idiff.identical": "Aucune différence trouvée à cette sensibilité.",
  "dz.idiff.changed": "des pixels modifiés",
  "dz.idiff.regionsCount": "{n} régions modifiées",
  "dz.idiff.regionsCount.zero": "Aucune région modifiée",
  "dz.idiff.regionsCount.one": "1 région modifiée",
  "dz.idiff.regionsCount.two": "2 régions modifiées",
  "dz.idiff.regionsCount.few": "{n} régions modifiées",
  "dz.idiff.prevRegion": "Précédente",
  "dz.idiff.nextRegion": "Différence suivante",
  "dz.idiff.regionPosition": "Région",
  "dz.idiff.imageA": "Image A",
  "dz.idiff.imageB": "Image B",
  "dz.idiff.onionOpacity": "Opacité de l'image B",
  "dz.idiff.maskAlt": "Image A avec des cadres numérotés sur chaque région modifiée",
  "dz.idiff.maskNote": "Chaque cadre numéroté correspond à une région modifiée, de la plus grande à la plus petite — la région active est dessinée plus vivement.",
  "dz.idiff.blinkInterval": "Intervalle de clignotement (ms)",
  "dz.idiff.blinkPlay": "Lecture",
  "dz.idiff.blinkPause": "Pause",
  "dz.idiff.blinkReducedMotionNote": "Le clignotement automatique est désactivé, car votre appareil a demandé une réduction des animations. Utilisez le bouton ci-dessous pour passer manuellement d'une image à l'autre.",
  "dz.idiff.showA": "Afficher l'image A",
  "dz.idiff.showB": "Afficher l'image B",
  "dz.idiff.sizeBanner": "Ces images n'ont pas la même taille :",
  "dz.idiff.sizeOverlap": "Chevauchement",
  "dz.idiff.sizeScale": "Mettre à l'échelle",
  "dz.idiff.sizeOverlapDesc": "Comparaison limitée à la région supérieure gauche commune aux deux images, à",
  "dz.idiff.sizeScaleDesc": "L'image B est rééchantillonnée sur la grille de l'image A avant la comparaison, à",
  "dz.pstyle.name": "Styles de photo",
  "dz.pstyle.benefit": "Transformez une photo en croquis au crayon ou en style peinture — traitée entièrement sur votre appareil.",
  "dz.pstyle.pageTitle": "Styles de photo — filtres croquis au crayon et peinture",
  "dz.pstyle.seo": "Prévisualisez des styles croquis au crayon et peinture sur votre propre photo avant d'en choisir un, réglez le niveau de détail et la douceur, puis téléchargez le résultat en pleine résolution. Rien n'est envoyé — l'image est traitée sur votre appareil.",
  "dz.pstyle.failed": "Cette image n'a pas pu être lue.",
  "dz.pstyle.drop": "Choisir une photo",
  "dz.pstyle.chooseStyle": "Choisissez un style",
  "dz.pstyle.style.pencil-grey": "Croquis au crayon (gris)",
  "dz.pstyle.style.pencil-colour": "Croquis au crayon (couleur)",
  "dz.pstyle.style.cartoon": "Dessin animé",
  "dz.pstyle.style.stylize": "Peinture",
  "dz.pstyle.style.halftone": "Trame de points",
  "dz.pstyle.style.edges": "Croquis de contours",
  "dz.pstyle.comingSoon": "Bientôt disponible",
  "dz.pstyle.preparing": "Préparation…",
  "dz.pstyle.engineWhy": "Le rendu de ces styles nécessite un petit téléchargement unique du moteur — il s'exécute entièrement sur votre appareil, rien n'est envoyé.",
  "dz.pstyle.engineReady": "Prêt — choisissez un style ci-dessus.",
  "dz.pstyle.previewAlt": "Aperçu de la photo avec le style appliqué",
  "dz.pstyle.adjust": "Ajuster",
  "dz.pstyle.param.detail": "Détail",
  "dz.pstyle.param.softness": "Douceur",
  "dz.pstyle.processing": "Traitement en cours…",
  "dz.pstyle.download": "Télécharger la photo",
  "dz.pstyle.changeStyle": "Changer de style",
  "dz.pstyle.another": "Une autre photo",
  "dz.pstyle.saved": "Enregistré.",
  "dz.idiff.regionsCount.many": "{n} régions modifiées",
  "dz.pano.name": "Assemblage de panoramas",
  "dz.pano.benefit": "Combinez plusieurs photos qui se chevauchent en un seul panorama large — assemblé entièrement sur votre appareil.",
  "dz.pano.pageTitle": "Assemblage de panoramas — combinez des photos en une seule image large",
  "dz.pano.seo": "Importez une série de photos qui se chevauchent, faites-les glisser dans l'ordre où vous les avez prises et assemblez-les en un seul panorama large. Recadrez selon le cadre suggéré ou conservez le contour complet irrégulier, puis téléchargez — rien n'est envoyé, l'assemblage s'exécute sur votre appareil.",
  "dz.pano.overlapHint": "Les meilleurs résultats s'obtiennent avec des photos qui se chevauchent d'environ 30 % avec leurs voisines — pensez à un balayage lent, pas à des prises de vue séparées.",
  "dz.pano.capNote": "Jusqu'à {n} photos par panorama.",
  "dz.pano.workResNote": "Chaque photo est traitée à {px} px maximum sur son plus grand côté afin de garder un assemblage rapide.",
  "dz.pano.capHit": "Seules les {n} premières photos ont été ajoutées — retirez-en une pour en ajouter une autre.",
  "dz.pano.reorderHint": "Faites glisser les photos dans l'ordre où vous les avez prises — l'ordre influence la façon dont elles s'assemblent.",
  "dz.pano.moveEarlier": "Déplacer avant",
  "dz.pano.moveLater": "Déplacer après",
  "dz.pano.removeOne": "Retirer cette photo",
  "dz.pano.addMore": "Ajouter d'autres photos",
  "dz.pano.drop": "Choisir des photos",
  "dz.pano.another": "Recommencer",
  "dz.pano.needTwo": "Ajoutez au moins 2 photos pour assembler un panorama.",
  "dz.pano.engineWhy": "L'assemblage nécessite un petit téléchargement unique du moteur — il s'exécute entièrement sur votre appareil, rien n'est envoyé.",
  "dz.pano.stitchBtn": "Assembler le panorama",
  "dz.pano.stage.preparing": "Préparation des photos…",
  "dz.pano.stage.stitching": "Assemblage des photos…",
  "dz.pano.stage.cropping": "Recherche du meilleur recadrage…",
  "dz.pano.elapsed": "{s} s écoulées",
  "dz.pano.cancel": "Annuler",
  "dz.pano.failedTitle": "Impossible d'assembler ces photos",
  "dz.pano.failure.need-more-overlap": "Ces photos n'ont pas assez de détails en commun pour être alignées. Reprenez-les avec environ 30 % de chevauchement entre chaque paire, en balayant la scène de façon régulière.",
  "dz.pano.failure.moving-subjects": "Quelque chose a bougé entre les prises — personnes, voitures, feuilles — et a perturbé la correspondance. Refaites les photos en un seul balayage rapide, ou écartez la photo où il y a du mouvement.",
  "dz.pano.failure.exposure-mismatch": "La luminosité ou la couleur a trop varié entre les prises. Verrouillez l'exposition et la mise au point (verrouillage AE/AF) avant de balayer la scène, puis reprenez les photos.",
  "dz.pano.failure.unknown": "Ces photos n'ont pas pu être combinées. Essayez de les reprendre avec davantage de chevauchement et une exposition plus stable sur chaque photo.",
  "dz.pano.failure.tryAgain": "Réessayer",
  "dz.pano.failure.reorder": "Réorganiser les photos",
  "dz.pano.failure.removeImage": "Retirer une photo",
  "dz.pano.cropAlt": "Recadrage suggéré — faites glisser pour le déplacer",
  "dz.pano.dragCropHint": "Faites glisser le cadre pour ajuster le recadrage, ou utilisez les touches fléchées.",
  "dz.pano.downloadCropped": "Télécharger la version recadrée",
  "dz.pano.keepFull": "Conserver le cadre complet",
  "dz.pano.resetCrop": "Réinitialiser le recadrage",
  "dz.pano.noCropFound": "Aucun rectangle net n'a été trouvé dans la photo assemblée — téléchargez plutôt le cadre complet.",
  "dz.pano.saved": "Enregistré.",
  "dz.pphoto.name": "Photos de produits",
  "dz.pphoto.benefit": "Recadrez par lot, blanchissez les arrière-plans et redimensionnez vos photos de produits selon un préréglage de taille — traité entièrement sur votre appareil.",
  "dz.pphoto.caution": "Fonctionne mieux avec un arrière-plan uni et éclairé de façon homogène — la détection automatique du sujet peut ne pas bien séparer une scène encombrée.",
  "dz.pphoto.pageTitle": "Photos de produits — recadrage par lot, fond blanc et redimensionnement",
  "dz.pphoto.seo": "Déposez un lot de photos de produits, choisissez un préréglage de taille (ou ajoutez le vôtre) : chaque photo est recadrée autour du sujet, complétée pour obtenir le bon format d'image, son arrière-plan est rapproché du blanc, puis elle est redimensionnée — et vérifiée par rapport au préréglage pour que vous voyiez exactement quelles photos sont conformes. Rien n'est envoyé ; tout s'exécute sur votre appareil, et vous téléchargez le lot final au format ZIP.",
  "dz.pphoto.failed": "échouées",
  "dz.pphoto.drop": "Choisir des photos",
  "dz.pphoto.addMore": "Ajouter d'autres photos",
  "dz.pphoto.selected": "sélectionnées",
  "dz.pphoto.passed": "conformes",
  "dz.pphoto.another": "Recommencer",
  "dz.pphoto.presetLabel": "Préréglage de taille",
  "dz.pphoto.addPreset": "Ajouter un préréglage",
  "dz.pphoto.preset.square": "Carré, fond blanc",
  "dz.pphoto.preset.portrait": "Portrait 4:5, fond blanc",
  "dz.pphoto.preset.landscape": "Paysage 16:9",
  "dz.pphoto.presetName": "Nom",
  "dz.pphoto.presetAspect": "Format d'image (largeur:hauteur)",
  "dz.pphoto.presetMinPx": "Taille minimale (px, côté le plus court)",
  "dz.pphoto.presetMaxPx": "Taille maximale (px, côté le plus long)",
  "dz.pphoto.presetMaxMB": "Taille maximale du fichier (Mo)",
  "dz.pphoto.presetCoverage": "Couverture minimale du sujet ( %)",
  "dz.pphoto.presetWhiteBg": "Exiger un fond blanc",
  "dz.pphoto.presetSave": "Enregistrer le préréglage",
  "dz.pphoto.presetCancel": "Annuler",
  "dz.pphoto.presetUntitled": "Préréglage sans nom",
  "dz.pphoto.presetErrAspect": "Le format d'image doit avoir une largeur et une hauteur positives.",
  "dz.pphoto.presetErrPx": "La taille maximale doit être au moins égale à la taille minimale.",
  "dz.pphoto.presetErrBytes": "La taille maximale du fichier doit être supérieure à zéro.",
  "dz.pphoto.presetErrCoverage": "La couverture doit être comprise entre 0 et 100 %.",
  "dz.pphoto.engineWhy": "Le traitement de ces photos nécessite un petit téléchargement unique du moteur — il s'exécute entièrement sur votre appareil, rien n'est envoyé.",
  "dz.pphoto.process": "Traiter le lot",
  "dz.pphoto.processing": "Traitement en cours…",
  "dz.pphoto.progress": "Traitement de {done} sur {total}…",
  "dz.pphoto.statusQueued": "En attente",
  "dz.pphoto.itemFailed": "Traitement impossible",
  "dz.pphoto.pass": "Conforme au préréglage",
  "dz.pphoto.rule.aspect": "Format d'image",
  "dz.pphoto.rule.minPx": "Taille minimale",
  "dz.pphoto.rule.maxPx": "Taille maximale",
  "dz.pphoto.rule.maxBytes": "Taille du fichier",
  "dz.pphoto.rule.subjectCoverage": "Couverture du sujet",
  "dz.pphoto.rule.whiteBackground": "Fond blanc",
  "dz.pphoto.editorTitle": "Modifier cette photo",
  "dz.pphoto.before": "Avant",
  "dz.pphoto.after": "Après",
  "dz.pphoto.marginLabel": "Marge de recadrage autour du sujet",
  "dz.pphoto.normalizeLabel": "Rapprocher l'arrière-plan du blanc",
  "dz.pphoto.rerun": "Retraiter",
  "dz.pphoto.backToGrid": "Retour à la grille",
  "dz.pphoto.remove": "Retirer la photo",
  "dz.pphoto.patternLabel": "Modèle de nom de fichier",
  "dz.pphoto.downloadZip": "Télécharger le ZIP",
  "dz.pphoto.saved": "Enregistré.",
  "dz.jig.name": "Puzzle",
  "dz.jig.pageTitle": "Puzzle — transformez une photo en puzzle auquel jouer",
  "dz.jig.seo": "Importez une photo, choisissez un nombre de pièces de 12 à 300 (ou définissez le vôtre) et résolvez sur votre appareil un puzzle à pièces emboîtables ou en grille simple. Faites glisser les pièces en place ou jouez entièrement au clavier, et reprenez là où vous vous étiez arrêté — la progression est enregistrée automatiquement.",
  "dz.jig.benefit": "Transformez n'importe quelle photo en puzzle et résolvez-le directement sur votre appareil — rien n'est envoyé.",
  "dz.jig.drop": "Choisir une photo",
  "dz.jig.another": "Une autre photo",
  "dz.jig.pieceCount": "Nombre de pièces",
  "dz.jig.custom": "Personnalisé",
  "dz.jig.customLabel": "Nombre de pièces",
  "dz.jig.overCap": "{cap} pièces est le maximum que cet écran peut afficher confortablement.",
  "dz.jig.useCapInstead": "Utiliser {cap} à la place",
  "dz.jig.pieceStyle": "Style des pièces",
  "dz.jig.styleClassic": "Emboîtement classique",
  "dz.jig.styleGrid": "Grille simple",
  "dz.jig.play": "Jouer",
  "dz.jig.print": "Imprimer",
  "dz.jig.loadFailed": "Cette photo n'a pas pu être lue.",
  "dz.jig.resumeTitle": "Reprendre votre puzzle ?",
  "dz.jig.resume": "Reprendre",
  "dz.jig.discard": "Abandonner",
  "dz.jig.backToSetup": "Retour",
  "dz.jig.movesLabel": "{n} coups",
  "dz.jig.pause": "Pause",
  "dz.jig.resumeTimer": "Reprendre",
  "dz.jig.hint": "Indice",
  "dz.jig.hintCount": "Indice ({n})",
  "dz.jig.assists": "Aides",
  "dz.jig.exit": "Quitter",
  "dz.jig.pausedNote": "En pause",
  "dz.jig.zoomOut": "Zoom arrière",
  "dz.jig.resetView": "Ajuster à l'écran",
  "dz.jig.zoomIn": "Zoom avant",
  "dz.jig.tray": "Plateau",
  "dz.jig.edgesFirst": "Bords d'abord",
  "dz.jig.dblclickHint": "Double-cliquez (ou touchez deux fois) une pièce isolée sur le plateau de jeu pour la renvoyer dans le plateau de pièces.",
  "dz.jig.boardGridLabel": "Plateau du puzzle",
  "dz.jig.completeTitle": "Puzzle terminé !",
  "dz.jig.placedAnnounce": "Pièce placée. {placed} sur {total} placées.",
  "dz.jig.notPlacedAnnounce": "La pièce retourne dans le plateau de pièces.",
  "dz.jig.selectedAnnounce": "Pièce {n} prise.",
  "dz.jig.deselectedAnnounce": "Pièce reposée.",
  "dz.jig.cancelledAnnounce": "Placement annulé.",
  "dz.jig.returnedAnnounce": "Pièce remise dans le plateau de pièces.",
  "dz.jig.hintAnnounce": "Affichage de l'emplacement correct.",
  "dz.jig.completeAnnounce": "Puzzle terminé en {time}, {moves} coups.",
  "dz.jig.cellLabel": "Ligne {row}, colonne {col}",
  "dz.jig.cellEmpty": "vide",
  "dz.jig.cellFilled": "pièce placée",
  "dz.jig.cellBorder": "pièce de bord",
  "dz.jig.cellAlreadyPlacedAnnounce": "Cet emplacement est déjà occupé.",
  "dz.jig.trayPieceLabel": "Pièce {n}",
  "dz.jigsaw.print.title": "Imprimer le puzzle",
  "dz.jigsaw.print.paper": "Papier",
  "dz.jigsaw.print.size": "Taille du puzzle",
  "dz.jigsaw.print.pages": "Pages",
  "dz.jigsaw.print.grid": "Grille",
  "dz.jigsaw.print.export": "Exporter en PDF",
  "dz.jigsaw.print.exporting": "Exportation…",
  "dz.jigsaw.print.cardStock": "Imprimez sur du papier cartonné si vous en avez. Le papier ordinaire se déchire le long des découpes.",
  "dz.jigsaw.print.saved": "PDF enregistré",
  "dz.jigsaw.print.manyPagesTitle": "Cela fait beaucoup de feuilles",
  "dz.jigsaw.print.manyPages": "Ce puzzle sera imprimé sur de nombreuses pages. Chaque feuille porte des repères aux coins et son propre numéro : alignez-les et collez-les ensemble avant de découper.",
  "dz.jigsaw.print.refLabel": "Page de référence",
  "dz.jigsaw.print.scaleMark": "50 mm — vérifiez l'échelle",
  "dz.jigsaw.print.sheetLabel": "Feuille",
  "dz.tuner.title": "Accordeur d'instruments",
  "dz.tuner.benefit": "Détection de la hauteur en direct depuis votre microphone — oud d'abord, puis guitare, ukulélé, violon et basse.",
  "dz.tuner.pageTitle": "Accordeur d'instruments — Dzzz",
  "dz.tuner.seo": "Accordez à l'oreille un oud, une guitare, un ukulélé, un violon ou une basse grâce à votre microphone. Choisissez un accordage, voyez la note et la fréquence cibles de chaque corde, et lisez en direct l'écart en cents pendant que vous jouez. La détection s'exécute entièrement sur votre appareil — rien n'est envoyé ni enregistré.",
  "dz.tuner.tuningLabel": "Accordage",
  "dz.tuner.referenceLabel": "La de référence (Hz)",
  "dz.tuner.start": "Commencer l'écoute",
  "dz.tuner.starting": "Démarrage…",
  "dz.tuner.stop": "Arrêter l'écoute",
  "dz.tuner.gateNote": "Un appui explicite est requis avant de pouvoir lire le microphone. Cet écran est cet appui — si vous le refusez, vous pouvez quand même consulter ci-dessous la fréquence cible de chaque corde.",
  "dz.tuner.privacy": "L'audio est analysé uniquement sur votre appareil. Rien n'est envoyé, enregistré ni sauvegardé.",
  "dz.tuner.deniedTitle": "Accès au microphone refusé",
  "dz.tuner.deniedBody": "Vous pouvez quand même consulter ci-dessous la note et la fréquence cibles de chaque corde. Pour utiliser l'indicateur en direct, autorisez le microphone dans vos paramètres, puis réessayez.",
  "dz.tuner.nodeviceTitle": "Aucun microphone trouvé",
  "dz.tuner.nodeviceBody": "Cet appareil ne semble pas disposer d'un microphone. Vous pouvez quand même consulter la table d'accordage ci-dessous.",
  "dz.tuner.busyTitle": "Le microphone n'a pas pu être démarré",
  "dz.tuner.busyBody": "Une autre application ou un autre onglet l'utilise peut-être. Fermez tout ce qui pourrait avoir le microphone ouvert, puis réessayez.",
  "dz.tuner.unsupportedTitle": "L'accordage en direct n'est pas disponible ici",
  "dz.tuner.unsupportedBody": "L'entrée microphone n'est pas prise en charge ici. Vous pouvez quand même consulter ci-dessous la fréquence cible de chaque corde.",
  "dz.tuner.stalledTitle": "Aucun signal du microphone",
  "dz.tuner.stalledBody": "L'accès au microphone a été accordé, mais aucun son n'est arrivé. Réessayez, ou vérifiez qu'il n'est pas coupé au niveau du système.",
  "dz.tuner.retry": "Réessayer",
  "dz.tuner.playHint": "Jouez ou pincez une corde",
  "dz.tuner.nearestStringLabel": "Corde la plus proche",
  "dz.tuner.centsLabel": "cents",
  "dz.tuner.flat": "Trop bas — montez la note",
  "dz.tuner.sharp": "Trop haut — baissez la note",
  "dz.tuner.inTune": "Accordé",
  "dz.tuner.meterLabel": "Indicateur d'accordage",
  "dz.tuner.stringsHeading": "Cordes de cet accordage",
  "dz.tuner.colString": "Corde",
  "dz.tuner.colNote": "Note",
  "dz.tuner.colHz": "Hz",
  "dz.tuner.sourceLabel": "Source",
  "dz.tuner.honesty": "Le microphone d'un téléphone et cette chaîne audio ne sont pas un instrument de laboratoire. La précision dépend de votre microphone et du bruit ambiant — considérez cet outil comme un guide utile, pas comme un accordeur étalonné.",
  "dz.idphoto.name": "Photo d'identité",
  "dz.idphoto.pageTitle": "Photo d'identité — vérifiez une photo par rapport aux dimensions officielles",
  "dz.idphoto.seo": "Repérez le sommet du crâne et le menton sur votre propre photo, puis vérifiez-la par rapport aux dimensions publiées pour une photo de passeport de l'e-visa saoudien, Schengen, des États-Unis ou du Royaume-Uni : hauteur de la tête, ligne des yeux, résolution et taille du fichier. Tout se déroule sur votre appareil ; rien n'est envoyé. Dimensions uniquement : l'outil ne juge ni l'expression, ni les lunettes, ni la tenue, et ne peut pas promettre que la photo sera acceptée.",
  "dz.idphoto.benefit": "Vérifiez une photo par rapport aux dimensions publiées avant de payer des tirages.",
  "dz.idphoto.presetGroup": "Document",
  "dz.idphoto.dropHere": "Choisir une photo",
  "dz.idphoto.dragHint": "Faites glisser les lignes du sommet du crâne et du menton sur votre photo. Le recadrage et toutes les mesures les suivent.",
  "dz.idphoto.crown": "Sommet du crâne (haut de la tête)",
  "dz.idphoto.chin": "Menton",
  "dz.idphoto.eye": "Ligne des yeux",
  "dz.idphoto.crownMarker": "Ligne du sommet du crâne — faites-la glisser ou utilisez les touches fléchées",
  "dz.idphoto.chinMarker": "Ligne du menton — faites-la glisser ou utilisez les touches fléchées",
  "dz.idphoto.eyeMarker": "Ligne des yeux — faites-la glisser ou utilisez les touches fléchées",
  "dz.idphoto.ruleHeadHeight": "Hauteur de la tête",
  "dz.idphoto.ruleEyeLine": "Ligne des yeux",
  "dz.idphoto.ruleResolution": "Résolution",
  "dz.idphoto.ruleFileSize": "Taille du fichier",
  "dz.idphoto.ruleBackground": "Arrière-plan",
  "dz.idphoto.needs": "exige",
  "dz.idphoto.export": "Télécharger la photo",
  "dz.idphoto.exportedWithIssues": "Téléchargée — mais certaines mesures sortent de la plage publiée.",
  "dz.idphoto.editAgain": "Ajuster les lignes",
  "dz.idphoto.another": "Une autre photo",
  "dz.idphoto.assistiveCheck": "Résultats des mesures",
  "dz.idphoto.backgroundAssistive": "L'arrière-plan est vérifié uniquement pour son uniformité, en échantillonnant les coins du recadrage.",
  "dz.idphoto.sourceLine": "Spécification publiée par",
  "dz.idphoto.viewSource": "Voir la spécification officielle",
  "dz.idphoto.notAcceptanceNote": "Cet outil vérifie uniquement les dimensions. Les respecter ne garantit pas que la photo sera acceptée : c'est l'autorité qui décide.",
  "dz.idphoto.honesty": "Nous n'incluons que les spécifications que nous avons pu confirmer sur la page publiée par l'autorité émettrice elle-même, et chacune renvoie vers cette page.",
  "dz.idphoto.excludedTitle": "Non inclus",
  "dz.idphoto.excludedNote": "Les photos du passeport saoudien et de l'Iqama ne sont pas incluses. Leurs dimensions n'ont pas pu être confirmées auprès de l'autorité émettrice — les chiffres repris par les sites commerciaux de photos ne sont pas une source officielle, et nous préférons les omettre plutôt que de deviner.",
  "dz.idphoto.otherReqsTitle": "Exigences que cet outil ne vérifie pas",
  "dz.idphoto.otherReqsBody": "L'expression, les yeux ouverts, les lunettes, le couvre-chef, la tenue et l'ancienneté de la photo sont fixés par l'autorité : c'est à vous de les vérifier sur sa page.",
  "dz.idphoto.ruleBackgroundNeeds": "≥ {min} et uniforme",
  "dz.idphoto.scopeNote": "Cet outil ne cherche jamais de visage. Vous placez les lignes du sommet du crâne, du menton et des yeux — il mesure uniquement ce que vous avez placé.",
  "dz.idphoto.takePhoto": "Prendre une photo",
  "dz.idphoto.captureTitle": "Prendre une photo",
  "dz.idphoto.capture": "Capturer",
  "dz.idphoto.captureHint": "Alignez vos yeux sur la ligne rouge et remplissez la bande-guide avec votre tête et vos épaules.",
  "dz.idphoto.eyeLineGuide": "LIGNE DES YEUX",
  "dz.idphoto.shouldersGuide": "ÉPAULES",
  "dz.idphoto.presetEncodes": "Ce préréglage intègre",
  "dz.idphoto.reqOutputSize": "Taille de sortie",
  "dz.idphoto.reqHeadRange": "Hauteur de la tête",
  "dz.idphoto.reqEyeLine": "Ligne des yeux",
  "dz.idphoto.reqFileSize": "Taille du fichier",
  "dz.idphoto.reqBackground": "Arrière-plan",
  "dz.idphoto.verdictPass": "Respecte toutes les exigences publiées.",
  "dz.idphoto.verdictCaution": "Proche de la plage publiée en un ou plusieurs points — mieux vaut y regarder de plus près avant d'imprimer.",
  "dz.idphoto.verdictFail": "Hors de la plage publiée — risque d'être refusée au guichet.",
  "dz.idphoto.levelPass": "RÉUSSI",
  "dz.idphoto.levelCaution": "ATTENTION",
  "dz.idphoto.levelFail": "ÉCHEC",
  "dz.idphoto.exportAnyway": "Télécharger quand même",
  "dz.idphoto.exportRisk": "Une ou plusieurs mesures sortent de la plage publiée. Cette photo risque d'être refusée — vous décidez de la télécharger quand même.",
  "dz.idphoto.adviceHeadHeightAbove": "La tête occupe une plus grande part du cadre que ce préréglage ne le permet. Reprenez la photo en laissant plus d'espace autour de la tête, ou vérifiez que les lignes du sommet du crâne et du menton sont bien placées.",
  "dz.idphoto.adviceHeadHeightBelow": "La tête occupe une plus petite part du cadre que ce préréglage ne l'exige. Reprenez la photo avec la tête plus grande dans le cadre, ou vérifiez les lignes du sommet du crâne et du menton.",
  "dz.idphoto.adviceEyeLineAbove": "Il n'y a pas assez d'espace au-dessus de la ligne des yeux sur cette photo. Reprenez-la avec plus de place au-dessus de la tête, ou vérifiez les repères du sommet du crâne et de la ligne des yeux.",
  "dz.idphoto.adviceEyeLineBelow": "Il n'y a pas assez d'espace sous la ligne des yeux sur cette photo. Reprenez-la avec plus de place sous la tête, ou vérifiez le repère de la ligne des yeux.",
  "dz.idphoto.adviceResolution": "Ce recadrage ne contient pas assez de pixels natifs pour la taille de sortie requise. Utilisez une photo source de plus haute résolution.",
  "dz.idphoto.adviceFileSizeAbove": "Le fichier exporté est plus volumineux que ce préréglage ne le permet. Un arrière-plan plus uni et plus uniforme se compresse généralement mieux — essayez de remplacer l'arrière-plan ci-dessous.",
  "dz.idphoto.adviceFileSizeBelow": "Le fichier exporté est plus petit que ce préréglage ne l'exige.",
  "dz.idphoto.adviceBackgroundDark": "L'arrière-plan paraît plus sombre que requis. Améliorez l'éclairage, utilisez un fond clair et uni, ou remplacez l'arrière-plan ci-dessous.",
  "dz.idphoto.adviceBackgroundUneven": "L'arrière-plan n'est pas uniforme. Utilisez un fond uni et éclairé de façon régulière, ou remplacez l'arrière-plan ci-dessous.",
  "dz.idphoto.bgSectionTitle": "Arrière-plan",
  "dz.idphoto.bgBlurb": "La segmentation peut rater les cheveux, les foulards et les vêtements sombres devant un mur sombre — le pinceau ci-dessous permet de corriger les bords à la main.",
  "dz.idphoto.bgReplace": "Remplacer l'arrière-plan",
  "dz.idphoto.bgWorking": "Suppression de l'arrière-plan…",
  "dz.idphoto.bgFailed": "La suppression de l'arrière-plan a échoué. Vous pouvez réessayer ou conserver l'arrière-plan d'origine.",
  "dz.idphoto.bgWhite": "Blanc",
  "dz.idphoto.bgOffwhite": "Blanc cassé",
  "dz.idphoto.bgGray": "Gris clair",
  "dz.idphoto.bgCustom": "Couleur personnalisée",
  "dz.idphoto.repairTitle": "Corriger les bords",
  "dz.idphoto.repairBody": "Peignez sur tout ce que le détourage automatique a oublié ou retiré en trop.",
  "dz.idphoto.keep": "Conserver",
  "dz.idphoto.erase": "Effacer",
  "dz.idphoto.brushSize": "Taille du pinceau",
  "dz.idphoto.bgDiscard": "Conserver l'arrière-plan d'origine",
  "dz.idphoto.markerResetsBg": "Déplacer la ligne du sommet du crâne, du menton ou des yeux annulera le remplacement d'arrière-plan ci-dessous.",
  "dz.idphoto.sheetTitle": "Planche à imprimer",
  "dz.idphoto.exportSheet": "Télécharger la planche à imprimer (PDF)",
  "dz.idphoto.sheetSize": "Format de papier",
  "dz.idphoto.rulerNote": "Le repère de 50 mm doit mesurer exactement 50 mm sur la page imprimée. Si ce n'est pas le cas, l'impression a été mise à l'échelle — désactivez « ajuster à la page » et imprimez en taille réelle (100 %).",
  "dz.idphoto.sheetCount": "{n} photos par feuille",
  "dz.idphoto.sheetCount.one": "1 photo par feuille",
  "dz.idphoto.sheetCount.two": "2 photos par feuille",
  "dz.idphoto.sheetCount.few": "{n} photos par feuille",
  "dz.idphoto.sheetUnavailable": "Cette spécification correspond à un import numérique sans taille imprimée, il n'y a donc pas de planche à imprimer.",
  "dz.idphoto.sheetFailed": "Impossible de créer la planche à imprimer. Veuillez réessayer.",
  "dz.idphoto.sheetPaperA4": "A4",
  "dz.idphoto.sheetPaperLetter": "US Letter",
  "dz.jig.resolvedCount": "{n} pièces · grille de {cols} × {rows}",
  "dz.jig.showTimer": "Afficher un chronomètre",
  "dz.idphoto.bgOptionalSummary": "Remplacer l'arrière-plan — facultatif",
  "dz.idphoto.bgNotNeeded": "Votre photo est prête sans cette étape. Ouvrez-la seulement si l'arrière-plan doit changer ; elle nécessite un téléchargement unique du modèle.",
  "dz.count.undo": "Annuler",
  "dz.jig.difficulty.easy": "Facile",
  "dz.jig.difficulty.medium": "Moyen",
  "dz.jig.difficulty.hard": "Difficile",
  "dz.compareCsv.routeSmall": "Comparés ici, dans la page",
  "dz.compareCsv.routeLarge": "Trop volumineux pour la page — le moteur pour gros fichiers peut s'en charger",
  "dz.compareCsv.routeWhy": "Les fichiers jusqu'à 25 Mo sont comparés ici même, sans rien à télécharger. Au-delà, Dzzz peut les comparer avec un moteur de base de données sur l'appareil qui les lit depuis le disque. Dans les deux cas, aucun fichier n'est envoyé.",
  "dz.compareCsv.consentTitle": "Ces fichiers nécessitent le moteur pour gros fichiers",
  "dz.compareCsv.consentBody": "L'un de vos fichiers est trop volumineux pour tenir en mémoire dans cette page. Dzzz peut télécharger un moteur qui le lit depuis le disque — une seule fois, puis il reste sur votre appareil. Rien de vos fichiers n'est envoyé.",
  "dz.compareCsv.blankHeader": "Ce fichier contient un en-tête de colonne vide. Donnez un nom à chaque colonne et réessayez.",
  "dz.compareCsv.exportNote": "L'export construit d'un seul coup toute la liste des différences — une liste très volumineuse peut ne pas tenir en mémoire.",
  "dz.w2x.title": "Word vers Excel",
  "dz.w2x.benefit": "Chaque tableau de votre fichier Word, en feuille de calcul — sans l'importer.",
  "dz.w2x.pick": "Choisir un fichier Word",
  "dz.w2x.accept": ".docx",
  "dz.w2x.headerLabel": "Première ligne",
  "dz.w2x.headerYes": "Est l'en-tête",
  "dz.w2x.headerNo": "Toutes les lignes sont des données",
  "dz.w2x.sheet": "Tableau",
  "dz.w2x.run": "Télécharger le fichier Excel",
  "dz.w2x.mergedNote": "La valeur d'une cellule fusionnée est répétée dans les cellules qu'elle couvrait, ce qui garde la feuille sous forme de rectangle simple. Le texte est repris ; la mise en forme des cellules ne l'est pas.",
  "dz.w2x.noTables": "Aucun tableau trouvé dans ce document. Seuls les tableaux sont extraits — pas les paragraphes ni les images.",
  "dz.w2x.notZip": "Ce fichier ne ressemble pas à un .docx. Il s'agit peut-être d'un ancien .doc, ou il est protégé par un mot de passe — ouvrez-le dans Word, retirez le mot de passe et enregistrez-le au format .docx.",
  "dz.w2x.notDocx": "Il s'agit d'un fichier Office, mais pas d'un document Word. Choisissez un .docx.",
  "dz.w2x.tooBig": "Ce fichier est trop volumineux pour être ouvert ici.",
  "dz.w2x.unreadable": "Ce fichier n'a pas pu être lu.",
  "dz.w2x.pageTitle": "Word vers Excel — extraire les tableaux d'un .docx vers une feuille de calcul",
  "dz.w2x.pageDesc": "Transformez les tableaux d'un document Word en fichier Excel, une feuille par tableau. Tout s'exécute dans votre navigateur — le document n'est jamais envoyé.",
  "dz.w2x.seo": "Word conserve un tableau comme un objet du document, pas comme des données ; le copier à la main dans une feuille de calcul revient donc souvent à le retaper. Cet outil lit directement le .docx et écrit chaque tableau trouvé dans un seul .xlsx, une feuille par tableau, la première ligne étant traitée comme les en-têtes de colonnes sauf indication contraire. La valeur d'une cellule fusionnée est répétée dans chaque cellule qu'elle couvrait, ce qui garde chaque feuille sous forme de rectangle simple : tri, filtres et tableaux croisés dynamiques continuent de fonctionner. Seuls les tableaux sont extraits, et seulement le texte qu'ils contiennent — les paragraphes, les images et la mise en forme des cellules sont laissés de côté. Tout se passe dans votre navigateur ; le document n'est envoyé nulle part.",
  "dz.w2x.crossConvert": "Besoin d'un CSV ? Convertir une feuille de calcul",
  "dz.hcal.pageTitle": "Calendrier hégirien — vue mensuelle Umm al-Qura avec dates grégoriennes",
  "dz.hcal.seo": "Consultez n'importe quel mois hégirien avec ses dates grégoriennes, ou un mois grégorien avec ses dates hégiriennes. Les six dates islamiques sont repérées, le décalage dû à l'observation de la lune se règle en un geste, les jours fériés officiels de trois pays au maximum s'affichent, et une année entière s'imprime sur douze pages.",
  "dz.hcal.title": "Calendrier hégirien",
  "dz.hcal.viewHijri": "Hégirien",
  "dz.hcal.viewGreg": "Grégorien",
  "dz.hcal.viewLabel": "Calendrier affiché",
  "dz.hcal.prev": "Mois précédent",
  "dz.hcal.next": "Mois suivant",
  "dz.hcal.prevYear": "Année précédente",
  "dz.hcal.nextYear": "Année suivante",
  "dz.hcal.monthsLabel": "Mois",
  "dz.hcal.today": "Aujourd'hui",
  "dz.hcal.showToday": "Afficher aujourd'hui",
  "dz.hcal.jump": "Aller à une date",
  "dz.hcal.jumpHijri": "Date hégirienne",
  "dz.hcal.jumpGreg": "Date grégorienne",
  "dz.hcal.day": "Jour",
  "dz.hcal.month": "Mois",
  "dz.hcal.year": "Année",
  "dz.hcal.go": "Aller",
  "dz.hcal.adjLabel": "Observation de la lune",
  "dz.hcal.adjHint": "Si votre pays a annoncé le début du mois un jour plus tôt ou plus tard que Umm al-Qura (calendrier hégirien calculé utilisé en Arabie saoudite), décalez toutes les dates pour qu'elles correspondent. Ce réglage est partagé avec le compte à rebours islamique. Choisissez +1 si le mois a commencé un jour plus tard chez vous.",
  "dz.hcal.wsLabel": "La semaine commence le",
  "dz.hcal.wsSat": "sam.",
  "dz.hcal.wsMon": "lun.",
  "dz.hcal.printYear": "Imprimer l'année",
  "dz.hcal.printSub": "Douze mois, un par page",
  "dz.hcal.print": "Imprimer",
  "dz.hcal.close": "Fermer",
  "dz.hcal.upcoming": "Prochaines dates",
  "dz.hcal.relToday": "Aujourd'hui",
  "dz.hcal.relTomorrow": "Demain",
  "dz.hcal.relIn": "dans {n} jours",
  "dz.hcal.source": "Calendrier Umm al-Qura (calendrier hégirien utilisé en Arabie saoudite), calculé sur votre appareil. Rien n'est envoyé nulle part.",
  "dz.hcal.sourceFetched": "Calendrier Umm al-Qura (calendrier hégirien utilisé en Arabie saoudite), calculé sur votre appareil. Les jours fériés officiels (pays : {countries}) proviennent de date.nager.at : leur récupération envoie une requête qui quitte votre appareil.",
  "dz.hcal.holTitle": "Jours fériés officiels",
  "dz.hcal.holMax": "Jusqu'à trois pays",
  "dz.hcal.holAdd": "Ajouter un pays",
  "dz.hcal.holRemove": "Retirer le pays : {country}",
  "dz.hcal.holSearch": "Rechercher des pays",
  "dz.hcal.holOffline": "Hors ligne",
  "dz.hcal.holDownloads": "Téléchargé au besoin",
  "dz.hcal.holLoading": "Chargement des jours fériés ({country})…",
  "dz.hcal.holFailed": "Impossible de charger les jours fériés ({country}).",
  "dz.hcal.holFallback": "{country} : affichage des dates intégrées à l'application, car le service des jours fériés était inaccessible.",
  "dz.hcal.retry": "Réessayer",
  "dz.hcal.holMonth": "Jours fériés de ce mois",
  "dz.hcal.holNone": "Aucun jour férié officiel ce mois-ci.",
  "dz.hcal.holSaNote": "Arabie saoudite : jours fériés du secteur public. Les dates de l'Aïd sont calculées d'après Umm al-Qura et peuvent changer lors de l'annonce officielle.",
  "dz.hcal.export": "Ajouter à votre application de calendrier",
  "dz.hcal.exportHint": "Télécharge les six dates islamiques de {year}, chacune avec un rappel la veille, ainsi que les jours fériés officiels des pays choisis.",
  "dz.hcal.exportSkipped": "{country} : les jours fériés ne sont pas inclus, car ils n'ont pas pu être chargés.",
  "dz.hcal.icsFile": "calendrier-hegirien",
  "dz.hcal.mShort1": "Mouh.",
  "dz.hcal.mShort2": "Saf.",
  "dz.hcal.mShort3": "Rab. I",
  "dz.hcal.mShort4": "Rab. II",
  "dz.hcal.mShort5": "Jou. I",
  "dz.hcal.mShort6": "Jou. II",
  "dz.hcal.mShort7": "Raj.",
  "dz.hcal.mShort8": "Chaa.",
  "dz.hcal.mShort9": "Ram.",
  "dz.hcal.mShort10": "Chaw.",
  "dz.hcal.mShort11": "Dh. q.",
  "dz.hcal.mShort12": "Dh. h.",
  "dz.hcal.relIn.two": "dans 2 jours",
  "dz.hcal.relIn.few": "dans {n} jours",
  "dz.hcal.relIn.other": "dans {n} jours",
  "dz.iban.errLengthD": "{country} : les IBAN comptent {expected} caractères ; celui-ci en compte {actual}.",
  "dz.iban.errCountryD": "« {cc} » n'est pas un code pays IBAN. Vérifiez les deux premières lettres.",
  "dz.iban.errStructureD": "Le caractère {pos} devrait être {expected}, mais c'est « {found} ».",
  "dz.iban.errStructureCheck": "Les deux caractères suivant le code pays doivent être des chiffres.",
  "dz.iban.clsDigit": "un chiffre (0–9)",
  "dz.iban.clsLetter": "une lettre majuscule (A–Z)",
  "dz.iban.clsAlnum": "un chiffre ou une lettre majuscule",
  "dz.iban.countryLine": "{country} · {length} caractères",
  "dz.iban.bankCode": "Code banque {bank}",
  "dz.iban.bankCodeBranch": "Code banque {bank} · agence {branch}",
  "dz.iban.supportedTitle": "Quels pays sont pris en charge ?",
  "dz.iban.supportedIntro": "{n} pays du registre IBAN de SWIFT sont vérifiés (longueur, structure et clé de contrôle). Les noms de banques s'affichent là où nous disposons d'une table sourcée.",
  "dz.iban.supportedBanks": "noms de banques",
  "dz.iban.segBranch": "Agence",
  "dz.iban.ghostBranch": "Code agence",
  "dz.iban.genCountry": "Pays",
  "dz.iban.genUnavailable": "{country} : la création d'IBAN n'est pas disponible, car le format du numéro de compte à l'intérieur de l'IBAN n'est pas homogène d'une banque à l'autre. Validez plutôt un IBAN fourni par votre banque.",
  "dz.iban.genCounterDigits": "{n} / {max} chiffres",
  "dz.iban.genCounterChars": "{n} / {max} caractères",
  "dz.iban.bankNotListed": "Le code banque {bank} ne figure pas encore dans notre liste de noms de banques ({country}).",
  "dz.iban.legacyBare": "ancien code banque",
  "dz.iban.supportedMorocco": "Le Maroc est également accepté (longueur et somme de contrôle uniquement ; il ne figure pas dans le registre SWIFT).",
  "dz.iban.genAccountHint": "Saisissez les {max} caractères du compte tels que votre banque les affiche dans votre IBAN, zéros initiaux compris.",
  "dz.iban.errAcctEmpty": "Saisissez le numéro de compte.",
  "dz.iban.errAcctTooLong": "Ce numéro de compte compte plus de {max} caractères ; il ne peut donc pas faire partie de cet IBAN. Vérifiez-le : rien n’a été raccourci.",
  "dz.iban.errAcctTooShort": "Ce numéro de compte doit comporter exactement {max} caractères. Rien n’a été complété.",
  "dz.iban.errAcctChars": "Le numéro de compte contient des caractères non autorisés ici. Rien n’a été modifié.",
  "dz.iban.errAcctZero": "Un numéro de compte composé uniquement de zéros n’est pas valide.",
  "dz.iban.errAcctBank": "Le code banque n’est pas valide pour ce pays."
}
