From 004099ca4ede268363c92eb8fa67dede2a6d29f1 Mon Sep 17 00:00:00 2001 From: Florent Siegenthaler <64897087+Atalantis@users.noreply.github.com> Date: Sat, 24 Oct 2026 22:40:02 +0200 Subject: [PATCH 1/2] i18n(fr): French panels, dialogs, tooltips and effect names --- crates/ui-egui/src/i18n/effects.rs | 360 ++++++++++- crates/ui-egui/src/i18n/ui.rs | 987 ++++++++++++++++++++++++++++- 2 files changed, 1342 insertions(+), 5 deletions(-) diff --git a/crates/ui-egui/src/i18n/effects.rs b/crates/ui-egui/src/i18n/effects.rs index b41430bed..5a6c19888 100644 --- a/crates/ui-egui/src/i18n/effects.rs +++ b/crates/ui-egui/src/i18n/effects.rs @@ -29,6 +29,13 @@ //! `EXtractoR`, `IDentifier`, `Key Light` and `Unmult` stay in English as brand names, and //! `Face Measurements` / `Face Track Points` are EffectCraft's own effects, so their wording is //! ours. +//! +//! The French names are written from the meaning of the English ones, with the vocabulary of the +//! French menus; they come from no other application's interface. Brand and coined names +//! (`Cryptomatte`, `EXtractoR`, `IDentifier`, `Key Light`, `Unmult`, `Lumetri Color`, `Colorama`, +//! `Minimax`, `Tritone`, `Vibrance`, `Vegas`) and the whole `CC` series stay in English; a series +//! tag that prefixes a descriptive name (`VR`, `OCIO`, `PS`, `HDR`) stays and follows the +//! French word order (`Flou VR`, `Transformation CDL OCIO`). use std::collections::HashMap; use std::sync::OnceLock; @@ -71,6 +78,7 @@ fn catalog(language: &str) -> Option<&'static Catalog> { static TRADITIONAL: Catalog = Catalog { rows: TRADITIONAL_CHINESE, categories: TRADITIONAL_CHINESE_CATEGORIES, index: OnceLock::new() }; static JAPANESE: Catalog = Catalog { rows: JAPANESE_EFFECTS, categories: JAPANESE_CATEGORIES, index: OnceLock::new() }; static GEORGIAN_CATALOG: Catalog = Catalog { rows: GEORGIAN, categories: GEORGIAN_CATEGORIES, index: OnceLock::new() }; + static FRENCH_CATALOG: Catalog = Catalog { rows: FRENCH, categories: FRENCH_CATEGORIES, index: OnceLock::new() }; match language { "zh-hans" => Some(&SIMPLIFIED), "zh-hant" => Some(&TRADITIONAL), @@ -78,6 +86,7 @@ fn catalog(language: &str) -> Option<&'static Catalog> { // this one catalog instead of inventing a second mechanism. "ja" => Some(&JAPANESE), "ka" => Some(&GEORGIAN_CATALOG), + "fr" => Some(&FRENCH_CATALOG), _ => None, } } @@ -845,6 +854,345 @@ const GEORGIAN_CATEGORIES: &[(&str, &str)] = &[ ("Utility", "დამხმარე"), ]; +/// French (`fr`): one row per effect, ids from [`SIMPLIFIED_CHINESE`]. Written from the meaning of the +/// English names, with the terms the French menus use (calque, estampe for a matte, incrustation for +/// keying). The `CC` series and the brand names stay in English, `VR`, `OCIO`, `PS` and `HDR` keep +/// their tag after the translated name. +const FRENCH: &[Row] = &[ + ("ec.3d.channelextract", "3D Channel Extract", "Extraction de canal 3D"), + ("ec.3d.cryptomatte", "Cryptomatte", "Cryptomatte"), + ("ec.3d.depthmatte", "Depth Matte", "Estampe de profondeur"), + ("ec.3d.depthoffield", "Depth of Field", "Profondeur de champ"), + ("ec.3d.extractor", "EXtractoR", "EXtractoR"), + ("ec.3d.fog3d", "Fog 3D", "Brouillard 3D"), + ("ec.3d.identifier", "IDentifier", "IDentifier"), + ("ec.3d.idmatte", "ID Matte", "Estampe par ID"), + ("ec.audio.backwards", "Backwards", "À l’envers"), + ("ec.audio.basstreble", "Bass & Treble", "Graves et aigus"), + ("ec.audio.compressor", "Compressor", "Compresseur"), + ("ec.audio.delay", "Delay", "Retard"), + ("ec.audio.distortion", "Distortion", "Distorsion"), + ("ec.audio.flangechorus", "Flange & Chorus", "Flanger et chorus"), + ("ec.audio.gate", "Gate", "Porte de bruit"), + ("ec.audio.highlowpass", "High-Low Pass", "Passe-haut/passe-bas"), + ("ec.audio.modulator", "Modulator", "Modulateur"), + ("ec.audio.parametriceq", "Parametric EQ", "Égaliseur paramétrique"), + ("ec.audio.reverb", "Reverb", "Réverbération"), + ("ec.audio.stereomixer", "Stereo Mixer", "Mixeur stéréo"), + ("ec.audio.tone", "Tone", "Tonalité"), + ("ec.blur.bilateral", "Bilateral Blur", "Flou bilatéral"), + ("ec.blur.cameralens", "Camera Lens Blur", "Flou de l’objectif de la caméra"), + ("ec.blur.camerashakedeblur", "Camera-Shake Deblur", "Correction du flou de bougé de caméra"), + ("ec.blur.cccross", "CC Cross Blur", "CC Cross Blur"), + ("ec.blur.ccradial", "CC Radial Blur", "CC Radial Blur"), + ("ec.blur.ccradialfast", "CC Radial Fast Blur", "CC Radial Fast Blur"), + ("ec.blur.ccvector", "CC Vector Blur", "CC Vector Blur"), + ("ec.blur.channel", "Channel Blur", "Flou de canal"), + ("ec.blur.compound", "Compound Blur", "Flou composé"), + ("ec.blur.directional", "Directional Blur", "Flou directionnel"), + ("ec.blur.fastbox", "Fast Box Blur", "Flou rectangulaire rapide"), + ("ec.blur.gaussian", "Gaussian Blur", "Flou gaussien"), + ("ec.blur.radial", "Radial Blur", "Flou radial"), + ("ec.blur.reduceflicker", "Reduce Interlace Flicker", "Réduction du scintillement d’entrelacement"), + ("ec.blur.sharpen", "Sharpen", "Accentuation"), + ("ec.blur.smart", "Smart Blur", "Flou intelligent"), + ("ec.blur.unsharp", "Unsharp Mask", "Masque flou"), + ("ec.channel.arithmetic", "Arithmetic", "Arithmétique"), + ("ec.channel.blend", "Blend", "Fusion"), + ("ec.channel.calculations", "Calculations", "Calculs"), + ("ec.channel.cccomposite", "CC Composite", "CC Composite"), + ("ec.channel.combiner", "Channel Combiner", "Combinateur de canaux"), + ("ec.channel.compoundarithmetic", "Compound Arithmetic", "Arithmétique composée"), + ("ec.channel.invert", "Invert", "Inversion"), + ("ec.channel.minimax", "Minimax", "Minimax"), + ("ec.channel.removecolormatting", "Remove Color Matting", "Suppression du fond de couleur"), + ("ec.channel.setchannels", "Set Channels", "Définir les canaux"), + ("ec.channel.setmatte", "Set Matte", "Définir l’estampe"), + ("ec.channel.shiftchannels", "Shift Channels", "Décaler les canaux"), + ("ec.channel.solidcomposite", "Solid Composite", "Composite avec solide"), + ("ec.color.autocolor", "Auto Color", "Couleur automatique"), + ("ec.color.autocontrast", "Auto Contrast", "Contraste automatique"), + ("ec.color.autolevels", "Auto Levels", "Niveaux automatiques"), + ("ec.color.blackwhite", "Black & White", "Noir et blanc"), + ("ec.color.brightnesscontrast", "Brightness & Contrast", "Luminosité et contraste"), + ("ec.color.broadcast", "Broadcast Colors", "Couleurs de diffusion"), + ("ec.color.cccolorneutralizer", "CC Color Neutralizer", "CC Color Neutralizer"), + ("ec.color.cccoloroffset", "CC Color Offset", "CC Color Offset"), + ("ec.color.cckernel", "CC Kernel", "CC Kernel"), + ("ec.color.cctoner", "CC Toner", "CC Toner"), + ("ec.color.changecolor", "Change Color", "Changer la couleur"), + ("ec.color.changetocolor", "Change to Color", "Changer en couleur"), + ("ec.color.channelmixer", "Channel Mixer", "Mélangeur de canaux"), + ("ec.color.colorama", "Colorama", "Colorama"), + ("ec.color.colorbalance", "Color Balance", "Balance des couleurs"), + ("ec.color.colorbalancehls", "Color Balance (HLS)", "Balance des couleurs (TLS)"), + ("ec.color.colorlink", "Color Link", "Lien de couleur"), + ("ec.color.colorstabilizer", "Color Stabilizer", "Stabilisateur de couleur"), + ("ec.color.curves", "Curves", "Courbes"), + ("ec.color.equalize", "Equalize", "Égalisation"), + ("ec.color.exposure", "Exposure", "Exposition"), + ("ec.color.gammapedestalgain", "Gamma/Pedestal/Gain", "Gamma/Piédestal/Gain"), + ("ec.color.huesaturation", "Hue/Saturation", "Teinte/Saturation"), + ("ec.color.leavecolor", "Leave Color", "Conserver la couleur"), + ("ec.color.levels", "Levels", "Niveaux"), + ("ec.color.levelsic", "Levels (Individual Controls)", "Niveaux (contrôles individuels)"), + ("ec.color.lumetri", "Lumetri Color", "Lumetri Color"), + ("ec.color.ociocdl", "OCIO CDL Transform", "Transformation CDL OCIO"), + ("ec.color.ociocolorspace", "OCIO Color Space Transform", "Transformation d’espace colorimétrique OCIO"), + ("ec.color.ociodisplay", "OCIO Display Transform", "Transformation d’affichage OCIO"), + ("ec.color.ociofile", "OCIO File Transform", "Transformation de fichier OCIO"), + ("ec.color.ociolook", "OCIO Look Transform", "Transformation de look OCIO"), + ("ec.color.photofilter", "Photo Filter", "Filtre photo"), + ("ec.color.psarbitrarymap", "PS Arbitrary Map", "Carte arbitraire PS"), + ("ec.color.selectivecolor", "Selective Color", "Couleur sélective"), + ("ec.color.shadowhighlight", "Shadow/Highlight", "Ombres/Hautes lumières"), + ("ec.color.tint", "Tint", "Coloration"), + ("ec.color.tritone", "Tritone", "Tritone"), + ("ec.color.vibrance", "Vibrance", "Vibrance"), + ("ec.color.videolimiter", "Video Limiter", "Limiteur vidéo"), + ("ec.control.angle", "Angle Control", "Contrôle d’angle"), + ("ec.control.checkbox", "Checkbox Control", "Contrôle de case à cocher"), + ("ec.control.color", "Color Control", "Contrôle de couleur"), + ("ec.control.dropdown", "Dropdown Menu Control", "Contrôle de menu déroulant"), + ("ec.control.layer", "Layer Control", "Contrôle de calque"), + ("ec.control.point", "Point Control", "Contrôle de point"), + ("ec.control.point3d", "3D Point Control", "Contrôle de point 3D"), + ("ec.control.slider", "Slider Control", "Contrôle de curseur"), + ("ec.control.stereo3d", "Stereo 3D Controls", "Contrôles stéréo 3D"), + ("ec.distort.bezierwarp", "Bezier Warp", "Déformation Bézier"), + ("ec.distort.bulge", "Bulge", "Renflement"), + ("ec.distort.ccbender", "CC Bender", "CC Bender"), + ("ec.distort.ccbendit", "CC Bend It", "CC Bend It"), + ("ec.distort.ccblobbylize", "CC Blobbylize", "CC Blobbylize"), + ("ec.distort.ccflomotion", "CC Flo Motion", "CC Flo Motion"), + ("ec.distort.ccgriddler", "CC Griddler", "CC Griddler"), + ("ec.distort.cclens", "CC Lens", "CC Lens"), + ("ec.distort.ccpageturn", "CC Page Turn", "CC Page Turn"), + ("ec.distort.ccpowerpin", "CC Power Pin", "CC Power Pin"), + ("ec.distort.ccripplepulse", "CC Ripple Pulse", "CC Ripple Pulse"), + ("ec.distort.ccslant", "CC Slant", "CC Slant"), + ("ec.distort.ccsmear", "CC Smear", "CC Smear"), + ("ec.distort.ccsplit", "CC Split", "CC Split"), + ("ec.distort.ccsplit2", "CC Split 2", "CC Split 2"), + ("ec.distort.cctiler", "CC Tiler", "CC Tiler"), + ("ec.distort.cornerpin", "Corner Pin", "Épinglage d’angles"), + ("ec.distort.displacementmap", "Displacement Map", "Carte de déplacement"), + ("ec.distort.liquify", "Liquify", "Liquéfier"), + ("ec.distort.magnify", "Magnify", "Loupe"), + ("ec.distort.meshwarp", "Mesh Warp", "Déformation par maillage"), + ("ec.distort.mirror", "Mirror", "Miroir"), + ("ec.distort.offset", "Offset", "Décalage"), + ("ec.distort.opticscompensation", "Optics Compensation", "Compensation optique"), + ("ec.distort.polar", "Polar Coordinates", "Coordonnées polaires"), + ("ec.distort.puppet", "Puppet", "Marionnette"), + ("ec.distort.reshape", "Reshape", "Remodeler"), + ("ec.distort.ripple", "Ripple", "Ondulation"), + ("ec.distort.rollingshutterrepair", "Rolling Shutter Repair", "Correction de l’obturateur roulant"), + ("ec.distort.smear", "Smear", "Étalement"), + ("ec.distort.spherize", "Spherize", "Sphérisation"), + ("ec.distort.transform", "Transform", "Transformation"), + ("ec.distort.turbulentdisplace", "Turbulent Displace", "Déplacement turbulent"), + ("ec.distort.twirl", "Twirl", "Tourbillon"), + ("ec.distort.twirllegacy", "Twirl (Legacy)", "Tourbillon (hérité)"), + ("ec.distort.upscale", "Detail-preserving Upscale", "Agrandissement avec préservation des détails"), + ("ec.distort.warp", "Warp", "Déformation"), + ("ec.distort.warpstabilizer", "Warp Stabilizer", "Stabilisateur de déformation"), + ("ec.distort.wavewarp", "Wave Warp", "Déformation en vague"), + ("ec.generate.advancedlightning", "Advanced Lightning", "Foudre avancée"), + ("ec.generate.audiospectrum", "Audio Spectrum", "Spectre audio"), + ("ec.generate.audiowaveform", "Audio Waveform", "Forme d’onde audio"), + ("ec.generate.beam", "Beam", "Faisceau"), + ("ec.generate.ccgluegun", "CC Glue Gun", "CC Glue Gun"), + ("ec.generate.cclightburst", "CC Light Burst 2.5", "CC Light Burst 2.5"), + ("ec.generate.cclightrays", "CC Light Rays", "CC Light Rays"), + ("ec.generate.cclightsweep", "CC Light Sweep", "CC Light Sweep"), + ("ec.generate.ccthreads", "CC Threads", "CC Threads"), + ("ec.generate.cellpattern", "Cell Pattern", "Motif cellulaire"), + ("ec.generate.checkerboard", "Checkerboard", "Damier"), + ("ec.generate.circle", "Circle", "Cercle"), + ("ec.generate.ellipse", "Ellipse", "Ellipse"), + ("ec.generate.eyedropperfill", "Eyedropper Fill", "Remplissage par pipette"), + ("ec.generate.fill", "Fill", "Remplissage"), + ("ec.generate.fourcolor", "4-Color Gradient", "Dégradé à 4 couleurs"), + ("ec.generate.fractal", "Fractal", "Fractale"), + ("ec.generate.gradientramp", "Gradient Ramp", "Rampe de dégradé"), + ("ec.generate.grid", "Grid", "Grille"), + ("ec.generate.lensflare", "Lens Flare", "Reflet d’objectif"), + ("ec.generate.paintbucket", "Paint Bucket", "Pot de peinture"), + ("ec.generate.radiowaves", "Radio Waves", "Ondes radio"), + ("ec.generate.scribble", "Scribble", "Gribouillis"), + ("ec.generate.stroke", "Stroke", "Contour"), + ("ec.generate.vegas", "Vegas", "Vegas"), + ("ec.generate.writeon", "Write-on", "Écriture progressive"), + ("ec.key.advancedspill", "Advanced Spill Suppressor", "Suppresseur de débordement avancé"), + ("ec.key.ccsimplewireremoval", "CC Simple Wire Removal", "CC Simple Wire Removal"), + ("ec.key.colordifference", "Color Difference Key", "Incrustation par différence de couleur"), + ("ec.key.colorkey", "Color Key", "Incrustation couleur"), + ("ec.key.colorrange", "Color Range", "Plage de couleurs"), + ("ec.key.differencematte", "Difference Matte", "Estampe de différence"), + ("ec.key.extract", "Extract", "Extraction"), + ("ec.key.innerouter", "Inner/Outer Key", "Incrustation intérieure/extérieure"), + ("ec.key.keycleaner", "Key Cleaner", "Nettoyeur d’incrustation"), + ("ec.key.linearcolor", "Linear Color Key", "Incrustation couleur linéaire"), + ("ec.key.luma", "Luma Key", "Incrustation de luminance"), + ("ec.key.screen", "Screen Key", "Incrustation d’écran"), + ("ec.key.spill", "Spill Suppressor", "Suppresseur de débordement"), + ("ec.key.unmult", "Unmult", "Unmult"), + ("ec.keying.keylight", "Key Light", "Key Light"), + ("ec.matte.mattechoker", "Matte Choker", "Réducteur d’estampe"), + ("ec.matte.objectmatte", "Object Matte", "Estampe d’objet"), + ("ec.matte.refinehard", "Refine Hard Matte", "Affiner l’estampe nette"), + ("ec.matte.refinesoft", "Refine Soft Matte", "Affiner l’estampe douce"), + ("ec.matte.rotobrush", "Roto Brush & Refine Edge", "Roto Brush et affinage des bords"), + ("ec.matte.simplechoker", "Simple Choker", "Réducteur simple"), + ("ec.noise.addgrain", "Add Grain", "Ajouter du grain"), + ("ec.noise.curlnoise", "Curl Noise", "Bruit curl"), + ("ec.noise.dustscratches", "Dust & Scratches", "Poussières et rayures"), + ("ec.noise.fractal", "Fractal Noise", "Bruit fractal"), + ("ec.noise.matchgrain", "Match Grain", "Assortir le grain"), + ("ec.noise.median", "Median", "Médian"), + ("ec.noise.medianlegacy", "Median (Legacy)", "Médian (hérité)"), + ("ec.noise.noise", "Noise", "Bruit"), + ("ec.noise.noisealpha", "Noise Alpha", "Bruit alpha"), + ("ec.noise.noisehls", "Noise HLS", "Bruit TLS"), + ("ec.noise.noisehlsauto", "Noise HLS Auto", "Bruit TLS automatique"), + ("ec.noise.removegrain", "Remove Grain", "Supprimer le grain"), + ("ec.noise.turbulent", "Turbulent Noise", "Bruit turbulent"), + ("ec.obsolete.basic3d", "Basic 3D", "3D de base"), + ("ec.obsolete.basictext", "Basic Text", "Texte de base"), + ("ec.obsolete.gaussianlegacy", "Gaussian Blur (Legacy)", "Flou gaussien (hérité)"), + ("ec.obsolete.lightning", "Lightning", "Foudre"), + ("ec.obsolete.mochashape", "Mocha shape", "Forme Mocha"), + ("ec.obsolete.pathtext", "Path Text", "Texte sur tracé"), + ("ec.paint.paint", "Paint", "Peinture"), + ("ec.perspective.3dglasses", "3D Glasses", "Lunettes 3D"), + ("ec.perspective.bevelalpha", "Bevel Alpha", "Biseau alpha"), + ("ec.perspective.beveledges", "Bevel Edges", "Biseau des bords"), + ("ec.perspective.cameratracker", "3D Camera Tracker", "Suivi de caméra 3D"), + ("ec.perspective.cccylinder", "CC Cylinder", "CC Cylinder"), + ("ec.perspective.ccenvironment", "CC Environment", "CC Environment"), + ("ec.perspective.ccsphere", "CC Sphere", "CC Sphere"), + ("ec.perspective.ccspotlight", "CC Spotlight", "CC Spotlight"), + ("ec.perspective.dropshadow", "Drop Shadow", "Ombre portée"), + ("ec.perspective.radialshadow", "Radial Shadow", "Ombre radiale"), + ("ec.sim.carddance", "Card Dance", "Danse de cartes"), + ("ec.sim.caustics", "Caustics", "Caustiques"), + ("ec.sim.ccballaction", "CC Ball Action", "CC Ball Action"), + ("ec.sim.ccbubbles", "CC Bubbles", "CC Bubbles"), + ("ec.sim.ccdrizzle", "CC Drizzle", "CC Drizzle"), + ("ec.sim.cchair", "CC Hair", "CC Hair"), + ("ec.sim.ccmrmercury", "CC Mr. Mercury", "CC Mr. Mercury"), + ("ec.sim.ccparticlesystems2", "CC Particle Systems II", "CC Particle Systems II"), + ("ec.sim.ccparticleworld", "CC Particle World", "CC Particle World"), + ("ec.sim.ccpixelpolly", "CC Pixel Polly", "CC Pixel Polly"), + ("ec.sim.ccrainfall", "CC Rainfall", "CC Rainfall"), + ("ec.sim.ccscatterize", "CC Scatterize", "CC Scatterize"), + ("ec.sim.ccsnowfall", "CC Snowfall", "CC Snowfall"), + ("ec.sim.ccstarburst", "CC Star Burst", "CC Star Burst"), + ("ec.sim.foam", "Foam", "Mousse"), + ("ec.sim.particleplayground", "Particle Playground", "Terrain de jeu de particules"), + ("ec.sim.shatter", "Shatter", "Éclatement"), + ("ec.sim.waveworld", "Wave World", "Monde des vagues"), + ("ec.stylize.brushstrokes", "Brush Strokes", "Coups de pinceau"), + ("ec.stylize.cartoon", "Cartoon", "Dessin animé"), + ("ec.stylize.ccblockload", "CC Block Load", "CC Block Load"), + ("ec.stylize.ccburnfilm", "CC Burn Film", "CC Burn Film"), + ("ec.stylize.ccglass", "CC Glass", "CC Glass"), + ("ec.stylize.cchextile", "CC HexTile", "CC HexTile"), + ("ec.stylize.cckaleida", "CC Kaleida", "CC Kaleida"), + ("ec.stylize.ccmrsmoothie", "CC Mr. Smoothie", "CC Mr. Smoothie"), + ("ec.stylize.ccplastic", "CC Plastic", "CC Plastic"), + ("ec.stylize.ccrepetile", "CC RepeTile", "CC RepeTile"), + ("ec.stylize.ccthreshold", "CC Threshold", "CC Threshold"), + ("ec.stylize.ccthresholdrgb", "CC Threshold RGB", "CC Threshold RGB"), + ("ec.stylize.ccvignette", "CC Vignette", "CC Vignette"), + ("ec.stylize.coloremboss", "Color Emboss", "Estampage couleur"), + ("ec.stylize.emboss", "Emboss", "Estampage"), + ("ec.stylize.findedges", "Find Edges", "Détection des contours"), + ("ec.stylize.glow", "Glow", "Lueur"), + ("ec.stylize.mosaic", "Mosaic", "Mosaïque"), + ("ec.stylize.motiontile", "Motion Tile", "Mosaïque de mouvement"), + ("ec.stylize.posterize", "Posterize", "Postérisation"), + ("ec.stylize.roughenedges", "Roughen Edges", "Bords irréguliers"), + ("ec.stylize.scatter", "Scatter", "Dispersion"), + ("ec.stylize.strobe", "Strobe Light", "Lumière stroboscopique"), + ("ec.stylize.texturize", "Texturize", "Texturisation"), + ("ec.stylize.threshold", "Threshold", "Seuil"), + ("ec.text.numbers", "Numbers", "Nombres"), + ("ec.text.timecode", "Timecode", "Timecode"), + ("ec.time.ccforcemotionblur", "CC Force Motion Blur", "CC Force Motion Blur"), + ("ec.time.ccwidetime", "CC Wide Time", "CC Wide Time"), + ("ec.time.echo", "Echo", "Écho"), + ("ec.time.pixelmotionblur", "Pixel Motion Blur", "Flou de mouvement des pixels"), + ("ec.time.posterizetime", "Posterize Time", "Postérisation temporelle"), + ("ec.time.timedifference", "Time Difference", "Différence temporelle"), + ("ec.time.timedisplacement", "Time Displacement", "Déplacement temporel"), + ("ec.time.timewarp", "Timewarp", "Déformation temporelle"), + ("ec.transition.blockdissolve", "Block Dissolve", "Fondu par blocs"), + ("ec.transition.cardwipe", "Card Wipe", "Volet de cartes"), + ("ec.transition.ccglasswipe", "CC Glass Wipe", "CC Glass Wipe"), + ("ec.transition.ccgridwipe", "CC Grid Wipe", "CC Grid Wipe"), + ("ec.transition.ccimagewipe", "CC Image Wipe", "CC Image Wipe"), + ("ec.transition.ccjaws", "CC Jaws", "CC Jaws"), + ("ec.transition.cclightwipe", "CC Light Wipe", "CC Light Wipe"), + ("ec.transition.cclinesweep", "CC Line Sweep", "CC Line Sweep"), + ("ec.transition.ccradialscalewipe", "CC Radial ScaleWipe", "CC Radial ScaleWipe"), + ("ec.transition.ccscalewipe", "CC Scale Wipe", "CC Scale Wipe"), + ("ec.transition.cctwister", "CC Twister", "CC Twister"), + ("ec.transition.ccwarpomatic", "CC WarpoMatic", "CC WarpoMatic"), + ("ec.transition.gradientwipe", "Gradient Wipe", "Volet en dégradé"), + ("ec.transition.iriswipe", "Iris Wipe", "Volet en iris"), + ("ec.transition.linearwipe", "Linear Wipe", "Volet linéaire"), + ("ec.transition.radialwipe", "Radial Wipe", "Volet radial"), + ("ec.transition.venetian", "Venetian Blinds", "Stores vénitiens"), + ("ec.utility.applylut", "Apply Color LUT", "Appliquer une LUT de couleur"), + ("ec.utility.ccoverbrights", "CC Overbrights", "CC Overbrights"), + ("ec.utility.cineon", "Cineon Converter", "Convertisseur Cineon"), + ("ec.utility.colorprofileconverter", "Color Profile Converter", "Convertisseur de profil colorimétrique"), + ("ec.utility.facemeasurements", "Face Measurements", "Mesures du visage"), + ("ec.utility.facetrackpoints", "Face Track Points", "Points de suivi du visage"), + ("ec.utility.growbounds", "Grow Bounds", "Extension des limites"), + ("ec.utility.hdrcompander", "HDR Compander", "Compandeur HDR"), + ("ec.utility.hdrcompression", "HDR Highlight Compression", "Compression des hautes lumières HDR"), + ("ec.vr.blur", "VR Blur", "Flou VR"), + ("ec.vr.chromaticaberrations", "VR Chromatic Aberrations", "Aberrations chromatiques VR"), + ("ec.vr.colorgradients", "VR Color Gradients", "Dégradés de couleur VR"), + ("ec.vr.converter", "VR Converter", "Convertisseur VR"), + ("ec.vr.denoise", "VR De-Noise", "Réduction du bruit VR"), + ("ec.vr.digitalglitch", "VR Digital Glitch", "Glitch numérique VR"), + ("ec.vr.fractalnoise", "VR Fractal Noise", "Bruit fractal VR"), + ("ec.vr.glow", "VR Glow", "Lueur VR"), + ("ec.vr.planetosphere", "VR Plane to Sphere", "Plan vers sphère VR"), + ("ec.vr.rotatesphere", "VR Rotate Sphere", "Rotation de sphère VR"), + ("ec.vr.sharpen", "VR Sharpen", "Accentuation VR"), + ("ec.vr.spheretoplane", "VR Sphere to Plane", "Sphère vers plan VR"), +]; + +/// French (`fr`) category labels, keyed by the registry's English category. +const FRENCH_CATEGORIES: &[(&str, &str)] = &[ + ("3D Channel", "Canal 3D"), + ("Audio", "Audio"), + ("Blur & Sharpen", "Flou et netteté"), + ("Channel", "Canal"), + ("Color Correction", "Correction colorimétrique"), + ("Distort", "Déformation"), + ("Expression Controls", "Contrôles d’expression"), + ("Generate", "Génération"), + ("Immersive Video", "Vidéo immersive"), + ("Keying", "Incrustation"), + ("Matte", "Estampe"), + ("Noise & Grain", "Bruit et grain"), + ("Obsolete", "Obsolète"), + ("Paint", "Peinture"), + ("Perspective", "Perspective"), + ("Simulation", "Simulation"), + ("Stylize", "Stylisation"), + ("Text", "Texte"), + ("Time", "Temps"), + ("Transition", "Transition"), + ("Utility", "Utilitaire"), +]; + /// The 21 category folder names the generated Effect menu and Effects & Presets draw, in /// Simplified Chinese. Read from the installed After Effects 2026 (26.5.0.89) Simplified Chinese /// interface (the checklist's `07-类别` sheet); two of them are the interface's own wording where @@ -908,7 +1256,7 @@ mod tests { const PENDING: &[(&str, &[Row])] = &[("zh-hant", TRADITIONAL_CHINESE)]; /// The languages whose tables are being filled in: guarded like [`PENDING`] row by row. - const PARTIAL: &[(&str, &[Row])] = &[("ja", JAPANESE_EFFECTS), ("ka", GEORGIAN)]; + const PARTIAL: &[(&str, &[Row])] = &[("ja", JAPANESE_EFFECTS), ("ka", GEORGIAN), ("fr", FRENCH)]; /// A pending language may lag Simplified Chinese but may not invent ids or disagree about /// which effect an id names: a translator fills these tables row by row. While they are @@ -937,9 +1285,13 @@ mod tests { #[test] fn every_category_row_names_a_category() { let categories = effects::categories(); - for (language, rows) in - [("zh-hans", SIMPLIFIED_CHINESE_CATEGORIES), ("zh-hant", TRADITIONAL_CHINESE_CATEGORIES), ("ja", JAPANESE_CATEGORIES), ("ka", GEORGIAN_CATEGORIES)] - { + for (language, rows) in [ + ("zh-hans", SIMPLIFIED_CHINESE_CATEGORIES), + ("zh-hant", TRADITIONAL_CHINESE_CATEGORIES), + ("ja", JAPANESE_CATEGORIES), + ("ka", GEORGIAN_CATEGORIES), + ("fr", FRENCH_CATEGORIES), + ] { for (english, translated) in rows { assert!(categories.contains(english), "{language} lists {english}, which is not a category"); assert!(!translated.is_empty(), "empty {language} translation for {english}"); diff --git a/crates/ui-egui/src/i18n/ui.rs b/crates/ui-egui/src/i18n/ui.rs index a9c45bb99..4a26544ab 100644 --- a/crates/ui-egui/src/i18n/ui.rs +++ b/crates/ui-egui/src/i18n/ui.rs @@ -22,7 +22,7 @@ use std::fmt::Display; use std::sync::OnceLock; thread_local! { - /// The resolved interface language ("en", "ja", "zh-hans", "zh-hant", "uk", "pt-br", "cs", "es", "ka"); "en" until the first + /// The resolved interface language ("en", "ja", "zh-hans", "zh-hant", "uk", "pt-br", "cs", "es", "ka", "fr"); "en" until the first /// frame sets it. static CURRENT: Cell<&'static str> = const { Cell::new("en") }; } @@ -52,6 +52,7 @@ const ROWS: &[(&str, &[(&str, &str)])] = &[ ("es", SPANISH), ("ka", GEORGIAN), ("ka", GEORGIAN_PANELS), + ("fr", FRENCH), ]; /// The catalog for `language`, indexed by English source (built on first use: panels translate @@ -65,6 +66,7 @@ fn catalog(language: &str) -> Option<&'static Index> { static CS: OnceLock = OnceLock::new(); static ES: OnceLock = OnceLock::new(); static KA: OnceLock = OnceLock::new(); + static FR: OnceLock = OnceLock::new(); let (index, rows) = match language { "ja" => (&JA, JAPANESE), "zh-hans" => (&HANS, SIMPLIFIED_CHINESE), @@ -73,6 +75,7 @@ fn catalog(language: &str) -> Option<&'static Index> { "pt-br" => (&PT_BR, PORTUGUESE), "cs" => (&CS, CZECH), "es" => (&ES, SPANISH), + "fr" => (&FR, FRENCH), // Georgian also reads its own rows for text the other catalogs don't have yet. "ka" => return Some(KA.get_or_init(|| GEORGIAN.iter().chain(GEORGIAN_PANELS).copied().collect())), _ => return None, @@ -5421,6 +5424,972 @@ const GEORGIAN_PANELS: &[(&str, &str)] = &[ ("Solid…", "სოლიდი…"), ]; +/// French: vouvoiement, infinitive for commands, sentence case; the same source strings as the other +/// panel catalogs together (the Chinese ones, Georgian's extra panel rows and the literals the converted +/// panels pass to `tr`). Terms follow the French menu catalog in [`super`] (composition, calque, image +/// clé, métrage, file d'attente de rendu, chronologie, repère, estampe). A no-break space precedes +/// `:`, `;`, `?` and `!`, and the apostrophe is the typographic one. Written from the English source. +const FRENCH: &[(&str, &str)] = &[ + ("Appearance Settings…", "Paramètres d’apparence…"), + ("Add to favorites", "Ajouter aux favoris"), + ("Remove from favorites", "Retirer des favoris"), + (" OK ", " OK "), + (" Delete ", " Supprimer "), + (" Open Auto-Save ", " Ouvrir l’enregistrement automatique "), + ("(missing)", "(manquant)"), + ("360 View Orientation", "Orientation de la vue 360°"), + ("3:2 Pulldown: {}", "Pulldown 3:2 : {}"), + ( + "A clean-room, open-source compositor for motion graphics and visual effects: native on macOS, Windows and Linux, and in the browser. Part of the ArtCraft family of creative apps.", + "Un compositeur open source, développé en salle blanche, pour le motion design et les effets visuels : natif sur macOS, Windows et Linux, ainsi que dans le navigateur. Fait partie de la famille d’applications créatives ArtCraft.", + ), + ("About EffectCraft", "À propos d’EffectCraft"), + ("About...", "À propos..."), + ("Active", "Actif"), + ("Active Camera", "Caméra active"), + ("Alpha", "Alpha"), + ("Adapt Feature On Every Frame", "Adapter la caractéristique à chaque image"), + ("Adaptive Sample Limit:", "Limite d’échantillons adaptatifs :"), + ("Add Animator", "Ajouter un animateur"), + ("Add Comment", "Ajouter un commentaire"), + ("Add Formatting", "Ajouter une mise en forme"), + ("Add Group", "Ajouter un groupe"), + ("Add Mirror", "Ajouter un miroir"), + ("Add Selected As", "Ajouter la sélection comme"), + ("Add a comment", "Ajouter un commentaire"), + ("Add a shape, fill, stroke or path operation", "Ajouter une forme, un remplissage, un contour ou une opération sur le tracé"), + ("Add to Composition", "Ajouter à la composition"), + ("Add to Favorites", "Ajouter aux favoris"), + ("Add:", "Ajouter :"), + ("Adjust Exposure (stops)", "Ajuster l’exposition (diaphs)"), + ( + "Adjust composition duration to the time span of the selected layers", + "Ajuster la durée de la composition à l’intervalle de temps des calques sélectionnés", + ), + ("Advanced 3D", "3D avancée"), + ("Align Layers to:", "Aligner les calques sur :"), + ("All six face cameras turn together; the scene is not changed.", "Les six caméras des faces tournent ensemble ; la scène n’est pas modifiée."), + ("Anchor:", "Ancrage :"), + ("Aperture", "Ouverture"), + ("Appearance Mode", "Mode d’apparence"), + ("Appearance Mode: {}", "Mode d’apparence : {}"), + ("Apply Dimensions:", "Appliquer les dimensions :"), + ("Apply Motion To:", "Appliquer le mouvement à :"), + ("Arrange", "Disposition"), + ("Assign", "Attribuer"), + ("Auto", "Auto"), + ("Auto-saves", "Enregistrements automatiques"), + ("Back", "Retour"), + ("Background Color:", "Couleur d’arrière-plan :"), + ("Blend Mode:", "Mode de fusion :"), + ("Blending Mode", "Mode de fusion"), + ("Blur", "Flou"), + ("Blur Level", "Niveau de flou"), + ("Boundary", "Limite"), + ("Browser Storage", "Stockage du navigateur"), + ("Browse…", "Parcourir…"), + ("Brush Dynamics", "Dynamique du pinceau"), + ("Caching frames…", "Mise en cache des images…"), + ("Cancel", "Annuler"), + ("Casts Shadows", "Projette des ombres"), + ("Change Renderer…", "Changer de moteur de rendu…"), + ( + "Changing a shortcut creates a custom preset; the default stays as it is.", + "Modifier un raccourci crée un préréglage personnalisé ; le préréglage par défaut reste inchangé.", + ), + ("Channel", "Canal"), + ("Channel:", "Canal :"), + ("Chapter:", "Chapitre :"), + ("Choose...", "Choisir..."), + ("Classic 3D", "3D classique"), + ("Clear", "Effacer"), + ("Clear list", "Effacer la liste"), + ("Click a key to see its commands.", "Cliquez sur une touche pour voir ses commandes."), + ( + "Click above the bar to add an opacity stop, below it to add a color stop.", + "Cliquez au-dessus de la barre pour ajouter un point d’arrêt d’opacité, en dessous pour ajouter un point d’arrêt de couleur.", + ), + ("Click adds a point (½ height = no change)", "Un clic ajoute un point (½ hauteur = aucun changement)"), + ("Click adds a point; drag one off to remove", "Un clic ajoute un point ; faites-en glisser un hors de la zone pour le supprimer"), + ("Click to make this viewer active", "Cliquez pour activer ce visualiseur"), + ("Click to reveal the expression in the timeline", "Cliquez pour révéler l’expression dans la chronologie"), + ("Click to show the active composition here", "Cliquez pour afficher ici la composition active"), + ("Click, then click in the Composition panel", "Cliquez, puis cliquez dans le panneau Composition"), + ("Clone Options", "Options de clonage"), + ("Clone Source Overlay:", "Superposition de la source de clonage :"), + ("Close", "Fermer"), + ("Close Panel", "Fermer le panneau"), + ("Close tutorial", "Fermer le tutoriel"), + ("Color", "Couleur"), + ("Color Depth: {}", "Profondeur de couleur : {}"), + ("Color:", "Couleur :"), + ("Colour map", "Carte de couleurs"), + ("Columns", "Colonnes"), + ("Comment:", "Commentaire :"), + ("Community", "Communauté"), + ("Composition", "Composition"), + ("Composition Mini-Flowchart", "Mini-organigramme de composition"), + ("Composition Name:", "Nom de la composition :"), + ("Composition Settings ▸ 3D Renderer", "Paramètres de composition ▸ Moteur de rendu 3D"), + ("Composition Settings…", "Paramètres de composition…"), + ("Composition marker bin: drag a marker to the time ruler", "Bac des repères de composition : faites glisser un repère vers la règle temporelle"), + ("Cone Angle", "Angle du cône"), + ("Cone Feather", "Contour progressif du cône"), + ("Constrain Proportions", "Conserver les proportions"), + ("Continuous (Lock Outgoing to Incoming)", "Continu (verrouiller la sortie sur l’entrée)"), + ("Cue Point", "Point de repère"), + ("Current Render", "Rendu en cours"), + ("Dark", "Sombre"), + ("Dark Theme", "Thème sombre"), + ("Darker", "Plus sombre"), + ("Default Output:", "Sortie par défaut :"), + ("Default: {}", "Par défaut : {}"), + ("Defaults", "Valeurs par défaut"), + ("Delete", "Supprimer"), + ("Delete Selected Points", "Supprimer les points sélectionnés"), + ("Delete selected project items", "Supprimer les éléments de projet sélectionnés"), + ("Delete this template", "Supprimer ce modèle"), + ("Depth of Field", "Profondeur de champ"), + ("Discord", "Discord"), + ("Distribute Layers:", "Répartir les calques :"), + ("Don't Recover", "Ne pas récupérer"), + ("Don't Save", "Ne pas enregistrer"), + ("Double-click a layer to open it in the Layer panel", "Double-cliquez sur un calque pour l’ouvrir dans le panneau Calque"), + ("Double-click footage in the Project panel to open it here", "Double-cliquez sur un métrage dans le panneau Projet pour l’ouvrir ici"), + ("Double-click to edit the comment", "Double-cliquez pour modifier le commentaire"), + ("Download", "Télécharger"), + ( + "Drag properties here from the timeline,\nor use Animation > Add Property to Essential Graphics.", + "Faites glisser des propriétés ici depuis la chronologie,\nou utilisez Animation > Ajouter la propriété aux graphiques essentiels.", + ), + ("Drag to change", "Faites glisser pour modifier"), + ("Drag to create a guide", "Faites glisser pour créer un repère"), + ("Drag to slip the source", "Faites glisser pour décaler la source"), + ("Drop Frame", "Drop frame"), + ("Duplicate", "Dupliquer"), + ("Copy", "Copier"), + ("Paste", "Coller"), + ("Edit Value…", "Modifier la valeur…"), + ("Remove Expression", "Supprimer l’expression"), + ("Duration:", "Durée :"), + ("Edit Gradient…", "Modifier le dégradé…"), + ("Edit Target: {}", "Cible de modification : {}"), + ("Edit in the Timeline", "Modifier dans la chronologie"), + ("EffectCraft didn't quit normally last time.", "EffectCraft ne s’est pas fermé normalement la dernière fois."), + ("Effects", "Effets"), + ("Effects & Presets options", "Options d’Effets et programmes"), + ("Copy Presets Folder Path", "Copier le chemin du dossier des préréglages"), + ("Copy Source Path", "Copier le chemin source"), + ("Effects: {}", "Effets : {}"), + ("Empty folder", "Dossier vide"), + ("Enable Depth of Field", "Activer la profondeur de champ"), + ("Enable Expression", "Activer l’expression"), + ("Enhance", "Améliorer"), + ("Essential Properties — {}", "Propriétés essentielles — {}"), + ("Event", "Événement"), + ("Export Template…", "Exporter le modèle…"), + ("Export...", "Exporter..."), + ("Expression Language Menu", "Menu du langage d’expression"), + ("Expression pick whip: drag onto a property", "Sélecteur d’expression : faites-le glisser sur une propriété"), + ("Expression:", "Expression :"), + ("Eyedropper: click, then click in the Composition panel", "Pipette : cliquez, puis cliquez dans le panneau Composition"), + ("Falloff", "Atténuation"), + ("Falloff Distance", "Distance d’atténuation"), + ("Favorites", "Favoris"), + ("Field Render: {}", "Rendu des trames : {}"), + ("Figures", "Chiffres"), + ("Fill Target", "Cible du remplissage"), + ("Finished", "Terminé"), + ("Flowchart: {}", "Organigramme : {}"), + ("Focus Distance", "Distance de mise au point"), + ("Follow Feature Rotation and Scale", "Suivre la rotation et l’échelle de la caractéristique"), + ("Footage: {}", "Métrage : {}"), + ("Format: {}", "Format : {}"), + ("Frame Aspect Ratio: {}", "Rapport d’aspect de l’image : {}"), + ("Frame Blending: {}", "Fusion d’images : {}"), + ("Frame Rate:", "Fréquence d’images :"), + ("Resolution:", "Résolution :"), + ("Frame Render Time {}ms", "Temps de rendu de l’image {} ms"), + ("Frame Target:", "Image cible :"), + ("Freeze", "Figer"), + ("Grab bag", "Divers"), + ("Gradient Editor", "Éditeur de dégradé"), + ("Grid", "Grille"), + ("Guide Layer", "Calque de repère"), + ("Guide Layers: {}", "Calques de repère : {}"), + ("Guides", "Repères"), + ("Height:", "Hauteur :"), + ("Hide This", "Masquer ceci"), + ("Histogram", "Histogramme"), + ("Hold In Place", "Maintenir en place"), + ("Home", "Accueil"), + ("If Confidence is Below", "Si la confiance est inférieure à"), + ("Import", "Importer"), + ("Import and Add to Composition", "Importer et ajouter à la composition"), + ("Import...", "Importer..."), + ("Imported media", "Médias importés"), + ("Influence:", "Influence :"), + ("Install from File…", "Installer à partir d’un fichier…"), + ("Intensity", "Intensité"), + ("Inverted", "Inversé"), + ("Join the ArtCraft community on Discord", "Rejoindre la communauté ArtCraft sur Discord"), + ("Key: {}", "Touche : {}"), + ("LEARN", "APPRENTISSAGE"), + ("Label", "Étiquette"), + ("Label Colors and Names:", "Couleurs et noms des étiquettes :"), + ("Label:", "Étiquette :"), + ("Latest auto-save: {}", "Dernier enregistrement automatique : {}"), + ("Layer", "Calque"), + ("Layer controls", "Contrôles de calque"), + ("Layer:", "Calque :"), + ("Layer: {}", "Calque : {}"), + ("Layer Styles", "Styles de calque"), + ("Learn", "Apprentissage"), + ("Leave all attributes in \"{}\"", "Conserver tous les attributs dans « {} »"), + ("Licence: {}", "Licence : {}"), + ("Ligatures", "Ligatures"), + ("Light", "Clair"), + ("Light Theme", "Thème clair"), + ("Light Type", "Type de lumière"), + ("Lighter", "Plus clair"), + ("Link Selected Property", "Lier la propriété sélectionnée"), + ("Location:", "Emplacement :"), + ("Lock Aspect Ratio to {}", "Verrouiller le rapport d’aspect sur {}"), + ("Lock to Zoom", "Verrouiller sur le zoom"), + ("Locked: {} — {}", "Verrouillé : {} — {}"), + ("Log:", "Journal :"), + ("Loop (Trace Path)", "Boucle (suivre le tracé)"), + ("MIT OR Apache-2.0 • Fonts: Inter, JetBrains Mono (OFL)", "MIT OR Apache-2.0 • Polices : Inter, JetBrains Mono (OFL)"), + ("Magnification ratio popup", "Menu du rapport d’agrandissement"), + ("Make Comp Size", "Adopter la taille de la composition"), + ("Markers", "Repères"), + ("Masks", "Masques"), + ("Maximize Panel", "Agrandir le panneau"), + ("Media Replacement", "Remplacement de média"), + ("Mesh:", "Maillage :"), + ("Diameter:", "Diamètre :"), + ("Method Used: {} Average Error: {} pixels", "Méthode utilisée : {} Erreur moyenne : {} pixels"), + ("Models folder: {}", "Dossier des modèles : {}"), + ("Modifiers:", "Modificateurs :"), + ("More", "Plus"), + ("More ArtCraft apps", "Autres applications ArtCraft"), + ("More tutorials", "Autres tutoriels"), + ("Motion Blur", "Flou de mouvement"), + ("Motion Blur: {}", "Flou de mouvement : {}"), + ("Motion Sketch: drag to record", "Croquis de mouvement : faites glisser pour enregistrer"), + ("Move Down", "Descendre"), + ("Move Up", "Monter"), + ("Move to Project Root", "Déplacer à la racine du projet"), + ("Name", "Nom"), + ("Name:", "Nom :"), + ("Navigation", "Navigation"), + ("New", "Nouveau"), + ("New Comp from Selection", "Nouvelle composition à partir de la sélection"), + ("Replace with Precomposition", "Remplacer par une précomposition"), + ("New Duration:", "Nouvelle durée :"), + ("New composition name:", "Nom de la nouvelle composition :"), + ("New from Render Queue item:", "Nouveau à partir de l’élément de la file d’attente de rendu :"), + ("New from Template", "Nouveau à partir d’un modèle"), + ("Next", "Suivant"), + ( + "Nice work. Pick another tutorial on the Home screen's Learn tab.", + "Bon travail. Choisissez un autre tutoriel dans l’onglet Apprentissage de l’écran d’accueil.", + ), + ( + "No VR environments yet. Create one with Composition ▸ VR ▸ Create VR Environment…", + "Aucun environnement VR pour le moment. Créez-en un avec Composition ▸ VR ▸ Créer un environnement VR…", + ), + ("No audio layer selected", "Aucun calque audio sélectionné"), + ("No background jobs running", "Aucune tâche en arrière-plan en cours"), + ("No composition markers", "Aucun repère de composition"), + ("No contributor data was built into this copy.", "Aucune donnée sur les contributeurs n’est intégrée à cette copie."), + ( + "No device list from this host; the system default output is used.", + "Aucune liste de périphériques fournie par cet hôte ; la sortie par défaut du système est utilisée.", + ), + ("No layer selected", "Aucun calque sélectionné"), + ("No matching effects or presets", "Aucun effet ni préréglage correspondant"), + ("No matching fonts", "Aucune police correspondante"), + ("Variable fonts only", "Polices variables uniquement"), + ("No model credits were built into this copy.", "Aucun crédit de modèle n’est intégré à cette copie."), + ("No nested compositions", "Aucune composition imbriquée"), + ("No shortcut", "Aucun raccourci"), + ("No unlocked layer selected", "Aucun calque déverrouillé sélectionné"), + ("No video", "Aucune vidéo"), + ("None", "Aucun"), + ("Not applied: tick it in the list to add it.", "Non appliqué : cochez-le dans la liste pour l’ajouter."), + ("Not assigned", "Non attribué"), + ( + "Note: Shadows are only cast from layers with Cast Shadows enabled.", + "Remarque : seuls les calques dont l’option Projette des ombres est activée projettent des ombres.", + ), + ("Notify", "Notifier"), + ("OK", "OK"), + ("Offset:", "Décalage :"), + ("On ({}) stop:", "À l’arrêt ({}) :"), + ("One-Node Camera", "Caméra à un nœud"), + ("Opacity:", "Opacité :"), + ("Open Composition", "Ouvrir la composition"), + ("used once", "utilisé une fois"), + ("used {} times", "utilisé {} fois"), + ("Compositions that use this item", "Compositions qui utilisent cet élément"), + ("Open Last Saved Project", "Ouvrir le dernier projet enregistré"), + ("Open New Composition", "Ouvrir la nouvelle composition"), + ("Open Output", "Ouvrir la sortie"), + ("Open a composition to build Essential Graphics", "Ouvrez une composition pour créer des graphiques essentiels"), + ("Open a composition to see its scopes", "Ouvrez une composition pour voir ses oscilloscopes"), + ("Open a composition to track motion.", "Ouvrez une composition pour suivre un mouvement."), + ("Opus Tuning: {}", "Réglage Opus : {}"), + ("Original Duration:", "Durée d’origine :"), + ("Output Cycle: {}", "Cycle de sortie : {}"), + ("Output To:", "Sortie vers :"), + ("Overlay", "Superposition"), + ("Parameter Name:", "Nom du paramètre :"), + ("Parent pick whip: drag onto a layer", "Sélecteur de parent : faites-le glisser sur un calque"), + ("Pixel Aspect Ratio:", "Rapport d’aspect des pixels :"), + ("Playing on Video Preview", "Lecture sur la prévisualisation vidéo"), + ("Post-Render Action: {}", "Action après le rendu : {}"), + ("Preserve frame rate when nested or in render queue", "Conserver la fréquence d’images en cas d’imbrication ou dans la file d’attente de rendu"), + ("Preserve resolution when nested", "Conserver la résolution en cas d’imbrication"), + ("Preset", "Préréglage"), + ("Preset:", "Préréglage :"), + ("Presets", "Préréglages"), + ("Previous", "Précédent"), + ("Primary:", "Principal :"), + ("Process Before Match", "Traiter avant la mise en correspondance"), + ("Profile: {}", "Profil : {}"), + ( + "Project color depth: click to cycle 8/16/32 bpc, Alt-click for Project Settings", + "Profondeur de couleur du projet : cliquez pour alterner entre 8/16/32 bpc, Alt-clic pour les paramètres du projet", + ), + ("Project: {}", "Projet : {}"), + ("Projects", "Projets"), + ("Property pick whip: drag onto a property", "Sélecteur de propriété : faites-le glisser sur une propriété"), + ("Protected Region", "Région protégée"), + ("Proxy Use: {}", "Utilisation du proxy : {}"), + ("Push All to Comp", "Tout envoyer vers la composition"), + ("RGB", "RVB"), + ("Radius", "Rayon"), + ("Rate Control: {}", "Contrôle du débit : {}"), + ("Recent", "Récents"), + ("Recording", "Enregistrement"), + ("Remove", "Supprimer"), + ("Rename", "Renommer"), + ("Render: {} ms • UI {} fps{}", "Rendu : {} ms • Interface {} i/s{}"), + ("Renderer:", "Moteur de rendu :"), + ("Request Persistent Storage", "Demander un stockage persistant"), + ("Reset", "Réinitialiser"), + ("Reset Labels", "Réinitialiser les étiquettes"), + ("Reset Preset", "Réinitialiser le préréglage"), + ("Reset to Default", "Rétablir les valeurs par défaut"), + ("Reset to Saved Layout", "Rétablir la disposition enregistrée"), + ("Resolution/Down Sample Factor Popup", "Menu de résolution et de facteur de sous-échantillonnage"), + ("Restore Panel Size", "Restaurer la taille du panneau"), + ("Reverse the order", "Inverser l’ordre"), + ("Revert All", "Tout rétablir"), + ("Roman Hanging Punctuation", "Ponctuation suspendue romaine"), + ("Roving:", "Itinérant :"), + ("Ruler zero point (drag to move, double-click to reset)", "Point zéro de la règle (faites glisser pour le déplacer, double-cliquez pour réinitialiser)"), + ("Rulers", "Règles"), + ("Run", "Exécuter"), + ("Sample Format: {}", "Format d’échantillon : {}"), + ("Samples Per Frame:", "Échantillons par image :"), + ("Save from #{}", "Enregistrer à partir de #{}"), + ("Saved {}", "Enregistré {}"), + ("Script… (⌘/Ctrl+Enter runs)", "Script… (⌘/Ctrl+Entrée pour exécuter)"), + ("Search commands or shortcuts", "Rechercher des commandes ou des raccourcis"), + ("Select", "Sélectionner"), + ("Select a command to change its shortcut.", "Sélectionnez une commande pour modifier son raccourci."), + ("Select a layer to see its effects", "Sélectionnez un calque pour voir ses effets"), + ("Select a layer to see its properties", "Sélectionnez un calque pour voir ses propriétés"), + ("({}) Selected Objects", "({}) objets sélectionnés"), + ( + "Select a layer with a mask or shape path (or the path property), or Puppet pins.", + "Sélectionnez un calque doté d’un masque ou d’un tracé de forme (ou la propriété de tracé), ou des épingles de marionnette.", + ), + ("Select a text layer", "Sélectionnez un calque de texte"), + ("Select an item in the Project panel", "Sélectionnez un élément dans le panneau Projet"), + ("Select animated properties to show them in the Graph Editor", "Sélectionnez des propriétés animées pour les afficher dans l’éditeur de courbes"), + ( + "Select the leader pin, then Shift-click the pins that should trail it (hair, cloth, tails)", + "Sélectionnez l’épingle principale, puis Maj-clic sur les épingles qui doivent la suivre (cheveux, tissu, queues)", + ), + ("Set Ground Plane and Origin", "Définir le plan de sol et l’origine"), + ("Set Paint Colors to Black and White (D)", "Définir les couleurs de peinture sur noir et blanc (D)"), + ("Settings", "Paramètres"), + ("Settings Name:", "Nom des paramètres :"), + ("Shadow Darkness", "Obscurité de l’ombre"), + ("Shadow Diffusion", "Diffusion de l’ombre"), + ("Shadows", "Ombres"), + ("Shape…", "Forme…"), + ("Show", "Afficher"), + ("Show Layer Name", "Afficher le nom du calque"), + ("Show Source Name", "Afficher le nom de la source"), + ("Show me", "Montrez-moi"), + ("Show:", "Afficher :"), + ("Shutter Angle:", "Angle d’obturation :"), + ("Shutter Phase:", "Phase d’obturation :"), + ("Size", "Taille"), + ("Skip", "Passer"), + ("Snapping", "Aimantation"), + ("Snapping options", "Options d’aimantation"), + ("Snapshot", "Instantané"), + ("Solo Supported Properties", "Solo sur les propriétés prises en charge"), + ("Solo Switches: {}", "Commutateurs Solo : {}"), + ("Sort", "Trier"), + ("Spacing:", "Espacement :"), + ("Spatial Interpolation:", "Interpolation spatiale :"), + ("Speed:", "Vitesse :"), + ("Start Timecode:", "Timecode de début :"), + ("Start: {} Duration: {}", "Début : {} Durée : {}"), + ("Step {} of {}: {}", "Étape {} sur {} : {}"), + ("Stop", "Arrêter"), + ("Stop {} at {}°", "Point d’arrêt {} à {}°"), + ("Stored in: {}", "Stocké dans : {}"), + ("Stretch", "Étirement"), + ("Stretch Factor:", "Facteur d’étirement :"), + ("Stylistic Sets", "Jeux stylistiques"), + ("Subpixel Positioning", "Positionnement au sous-pixel"), + ("Swap Colors", "Permuter les couleurs"), + ("Swap Paint Colors (X)", "Permuter les couleurs de peinture (X)"), + ("Sync with System", "Synchroniser avec le système"), + ("System Default", "Par défaut du système"), + ("Table", "Tableau"), + ("Template name", "Nom du modèle"), + ("Template: {}\n{}", "Modèle : {}\n{}"), + ("Temporal Interpolation:", "Interpolation temporelle :"), + ("The Media Browser is not available here (use File ▸ Import)", "Le navigateur multimédia n’est pas disponible ici (utilisez Fichier ▸ Importer)"), + ("The OpenEXR layer shown in red, green, blue and alpha", "La couche OpenEXR affichée en rouge, vert, bleu et alpha"), + ("The render queue is empty.", "La file d’attente de rendu est vide."), + ( + "These adjacent keyframes cannot interpolate because their stop counts differ.", + "Ces images clés adjacentes ne peuvent pas être interpolées, car leur nombre de points d’arrêt diffère.", + ), + ("This ScriptUI panel has closed", "Ce panneau ScriptUI a été fermé"), + ("This change will create a new solid for this layer.", "Cette modification créera un nouveau solide pour ce calque."), + ("Time", "Temps"), + ("Time Stretch…", "Extension temporelle…"), + ("Time:", "Temps :"), + ("Time: {}", "Temps : {}"), + ("Title/Action Safe", "Zones de sécurité titres/action"), + ("Title/action safe", "Zones de sécurité titres/action"), + ("Toggle Switches / Modes", "Basculer entre commutateurs et modes"), + ("Track Name:", "Nom de la piste :"), + ( + "Trained models are available in the desktop app; the browser uses the classic engine.", + "Les modèles entraînés sont disponibles dans l’application de bureau ; le navigateur utilise le moteur classique.", + ), + ("Transform", "Transformation"), + ("Transparency grid", "Grille de transparence"), + ("Tutorial complete", "Tutoriel terminé"), + ("Two-Node Camera", "Caméra à deux nœuds"), + ("Type", "Type"), + ("Type a command or effect…", "Saisissez une commande ou un effet…"), + ("URL:", "URL :"), + ("Undock Panel", "Détacher le panneau"), + ("Move Panel to New Window", "Déplacer le panneau vers une nouvelle fenêtre"), + ("Move Panel to Main Window", "Déplacer le panneau vers la fenêtre principale"), + ("Unfreeze", "Dégeler"), + ("Unlink {}", "Dissocier {}"), + ( + "Use this option to place the currently selected layers together into a new intermediate composition.", + "Utilisez cette option pour regrouper les calques actuellement sélectionnés dans une nouvelle composition intermédiaire.", + ), + ("VR Environments", "Environnements VR"), + ("Value:", "Valeur :"), + ("Variable Font Axes", "Axes de police variable"), + ("Video Codec: {}", "Codec vidéo : {}"), + ("View:", "Affichage :"), + ("Welcome to EffectCraft", "Bienvenue dans EffectCraft"), + ("Width:", "Largeur :"), + ("You can undo this.", "Vous pouvez annuler cette action."), + ("You can't undo this.", "Vous ne pouvez pas annuler cette action."), + ("Your changes will be lost if you don't save them.", "Vos modifications seront perdues si vous ne les enregistrez pas."), + ("Zoom", "Zoom"), + ("built-in", "intégré"), + ("frames per second", "images par seconde"), + ("template name", "nom du modèle"), + ("{} contributors · {} commits", "{} contributeurs · {} commits"), + ("{} x {}, {}MB per 8bpc frame", "{} x {}, {} Mo par image 8 bpc"), + ("{} — coming soon", "{} — bientôt disponible"), + ("{} — double-click to open, {}-click to reveal", "{} — double-cliquez pour ouvrir, {}-clic pour révéler"), + ("⌘/Ctrl-drag a pin to record its motion", "Glissez une épingle en maintenant ⌘/Ctrl pour enregistrer son mouvement"), + ("▣ {}", "▣ {}"), + ("⚠ {} is used by:", "⚠ {} est utilisé par :"), + ("3D Reference Axes", "Axes de référence 3D"), + ("Affect all layers that use this solid", "Affecter tous les calques qui utilisent ce solide"), + ("Choose grid and guide options", "Choisir les options de grille et de repères"), + ("Colorize", "Coloriser"), + ("Custom", "Personnalisée"), + ("Custom...", "Personnalisée..."), + ("Fit", "Ajuster"), + ("Fit up to 100%", "Ajuster jusqu’à 100 %"), + ("Full", "Complète"), + ("Half", "Moitié"), + ("Only this layer uses this solid.", "Seul ce calque utilise ce solide."), + ("Proportional Grid", "Grille proportionnelle"), + ("Quarter", "Quart"), + ("Region of Interest", "Zone d’intérêt"), + ("Reset Exposure", "Réinitialiser l’exposition"), + ("Show Channel and Color Management Settings", "Afficher les paramètres de canaux et de gestion des couleurs"), + ("Show Snapshot (hold)", "Afficher l’instantané (maintenir)"), + ("Take Snapshot", "Prendre un instantané"), + ("Third", "Tiers"), + ("Toggle Mask and Shape Path Visibility", "Afficher/masquer les tracés de masque et de forme"), + ("Toggle Transparency Grid", "Afficher/masquer la grille de transparence"), + ("16 bits per channel", "16 bits par canal"), + ("32 bits per channel (float)", "32 bits par canal (virgule flottante)"), + ("8 bits per channel", "8 bits par canal"), + ("Adaptive Resolution", "Résolution adaptative"), + ("Adobe-style built-in", "Intégré (style Adobe)"), + ("Blue", "Bleu"), + ("Current Settings", "Paramètres actuels"), + ("Disable Per-character 3D", "Désactiver la 3D par caractère"), + ("Draft", "Brouillon"), + ("Enable Per-character 3D", "Activer la 3D par caractère"), + ("Fast Draft", "Brouillon rapide"), + ("Fast Previews (Draft 3D, Faster Effects)", "Aperçus rapides (3D brouillon, effets plus rapides)"), + ("Green", "Vert"), + ("Import Image Sequence", "Importer une séquence d’images"), + ("Import PDF / Illustrator File", "Importer un fichier PDF / Illustrator"), + ("Import Photoshop File", "Importer un fichier Photoshop"), + ("Interpret Unlabeled Alpha As", "Interpréter l’alpha non étiqueté comme"), + ("Join the ArtCraft Discord", "Rejoindre le Discord ArtCraft"), + ("Mercury GPU Acceleration ({})", "Accélération GPU Mercury ({})"), + ("Mercury Software Only", "Mercury, logiciel uniquement"), + ("OCIO (built-in ACES config)", "OCIO (configuration ACES intégrée)"), + ("Off (Final Quality)", "Désactivé (qualité finale)"), + ("OpenGL (compatibility)", "OpenGL (compatibilité)"), + ("Opus Bitrate: {} kbps", "Débit Opus : {} kb/s"), + ("RGB Straight", "RVB direct"), + ("Red", "Rouge"), + ("Tone map", "Mappage tonal"), + ("Use In-Window Menu Bar on macOS", "Utiliser la barre de menus dans la fenêtre sous macOS"), + ("Wireframe", "Fil de fer"), + ("sRGB IEC61966-2.1 (default)", "sRGB IEC61966-2.1 (par défaut)"), + ("New Project", "Nouveau projet"), + ("Open Project…", "Ouvrir un projet…"), + ("Templates", "Modèles"), + ("EffectCraft home page", "Page d’accueil EffectCraft"), + ("EffectCraft on GitHub", "EffectCraft sur GitHub"), + ("Motion graphics and visual effects · version {}", "Motion design et effets visuels · version {}"), + ("New Composition", "Nouvelle composition"), + ("Open Demo Project", "Ouvrir le projet de démonstration"), + ("Import Footage…", "Importer un métrage…"), + ("Filter recent files", "Filtrer les fichiers récents"), + ("NAME", "NOM"), + ("OPENED", "OUVERT LE"), + ("SIZE", "TAILLE"), + ("KIND", "TYPE"), + ("Your recent files will show here", "Vos fichiers récents s’afficheront ici"), + ("Create a new project, or open the demo project to look around.", "Créez un projet ou ouvrez le projet de démonstration pour explorer."), + ("No recent files match the filter", "Aucun fichier récent ne correspond au filtre"), + ("Try another name or folder.", "Essayez un autre nom ou dossier."), + ("Just now", "À l’instant"), + ("Yesterday", "Hier"), + ("{} minute ago", "Il y a {} minute"), + ("{} minutes ago", "Il y a {} minutes"), + ("{} hour ago", "Il y a {} heure"), + ("{} hours ago", "Il y a {} heures"), + ("{} day ago", "Il y a {} jour"), + ("{} days ago", "Il y a {} jours"), + ("EffectCraft project", "Projet EffectCraft"), + ("After Effects project", "Projet After Effects"), + ("Lottie animation", "Animation Lottie"), + ("Project", "Projet"), + ("General", "Général"), + ("Language", "Langue"), + ("Levels of Undo", "Niveaux d’annulation"), + ("Path Point and Handle Size", "Taille des points de tracé et des poignées"), + ("Recent Projects Shown", "Nombre de projets récents affichés"), + ("Options", "Options"), + ("Show Tool Tips", "Afficher les info-bulles"), + ("Create Layers at Composition Start Time", "Créer les calques au début de la composition"), + ("Switches Affect Nested Comps", "Les commutateurs affectent les compositions imbriquées"), + ("Default Spatial Interpolation to Linear", "Interpolation spatiale linéaire par défaut"), + ( + "Preserve Constant Vertex and Feather Point Count when Editing Masks", + "Conserver un nombre constant de sommets et de points de contour progressif lors de la modification des masques", + ), + ("Synchronize Time of All Related Items", "Synchroniser le temps de tous les éléments liés"), + ("Expression Pick Whip Writes Compact English", "Le sélecteur d’expression écrit un anglais compact"), + ("Create Split Layers Above Original Layer", "Créer les calques fractionnés au-dessus du calque d’origine"), + ("Use System Color Picker", "Utiliser le sélecteur de couleurs du système"), + ( + "EffectCraft always uses its own colour picker (the same on every platform and the web).", + "EffectCraft utilise toujours son propre sélecteur de couleurs (le même sur toutes les plateformes et sur le web).", + ), + ("Startup & Repair", "Démarrage et réparation"), + ("Show Home Screen When Launching", "Afficher l’écran d’accueil au lancement"), + ("Show Home Screen When Opening a Project", "Afficher l’écran d’accueil à l’ouverture d’un projet"), + ("Offer to Open the Latest Auto-Save After a Crash", "Proposer d’ouvrir le dernier enregistrement automatique après un plantage"), + ("Window Graphics", "Graphismes de la fenêtre"), + ("Automatic", "Automatique"), + ( + "Window Graphics applies from the next launch. When the graphics driver stops EffectCraft as its window opens, the next launch switches to OpenGL.", + "Le réglage Graphismes de la fenêtre s’applique à partir du prochain lancement. Si le pilote graphique arrête EffectCraft à l’ouverture de sa fenêtre, le lancement suivant bascule sur OpenGL.", + ), + ("Repair", "Réparation"), + ("Reset Settings", "Réinitialiser les préférences"), + ("Reset Keyboard Shortcuts", "Réinitialiser les raccourcis clavier"), + ("Empty Disk Cache", "Vider le cache disque"), + ("New Project Loads Template", "Un nouveau projet charge un modèle"), + ("Template Project", "Projet modèle"), + ("Auto-Save", "Enregistrement automatique"), + ("Automatically Save Projects", "Enregistrer automatiquement les projets"), + ("Save Every", "Enregistrer toutes les"), + ("Minutes", "Minutes"), + ("Maximum Project Versions", "Nombre maximal de versions du projet"), + ("Auto-Save Location", "Emplacement de l’enregistrement automatique"), + ("Next to Project", "À côté du projet"), + ("Custom Location", "Emplacement personnalisé"), + ("Save When Starting Render Queue", "Enregistrer au démarrage de la file d’attente de rendu"), + ("Save Now", "Enregistrer maintenant"), + ("Motion Path", "Trajectoire de mouvement"), + ("All Keyframes", "Toutes les images clés"), + ("No Motion Path", "Aucune trajectoire de mouvement"), + ("No More Than (Seconds)", "Pas plus de (secondes)"), + ("No More Than (Keyframes)", "Pas plus de (images clés)"), + ("Seconds", "Secondes"), + ("Keyframes", "Images clés"), + ("Display", "Affichage"), + ("Show Rendering Progress in Info Panel and Flowchart", "Afficher la progression du rendu dans le panneau Informations et l’organigramme"), + ("Hardware Accelerate Composition, Layer and Footage Panels", "Accélération matérielle des panneaux Composition, Calque et Métrage"), + ("Panels are always drawn by the GPU (wgpu).", "Les panneaux sont toujours dessinés par le GPU (wgpu)."), + ("Previews", "Prévisualisations"), + ("Adaptive Resolution Limit", "Limite de résolution adaptative"), + ("Show Internal Wireframes", "Afficher les fils de fer internes"), + ("Cache Frames When Idle", "Mettre en cache les images en cas d’inactivité"), + ("Viewer Zoom Quality", "Qualité du zoom du visualiseur"), + ("Faster", "Plus rapide"), + ("More Accurate", "Plus précis"), + ("Display Color Space", "Espace colorimétrique d’affichage"), + ("GPU Information...", "Informations sur le GPU..."), + ("Appearance", "Apparence"), + ("Brightness", "Luminosité"), + ("UI Scale", "Échelle de l’interface"), + ("Labels and Colors", "Étiquettes et couleurs"), + ("Use Label Color for Layer Handles and Paths", "Utiliser la couleur d’étiquette pour les poignées et les tracés des calques"), + ("Use Label Color for Related Tabs", "Utiliser la couleur d’étiquette pour les onglets associés"), + ("Cycle Mask Colors", "Alterner les couleurs des masques"), + ("Use Gradients", "Utiliser les dégradés"), + ("Menu Bar", "Barre de menus"), + ("Grids & Guides", "Grilles et repères"), + ("Gridline Every", "Ligne de grille toutes les"), + ("Subdivisions", "Subdivisions"), + ("Style", "Style"), + ("Lines", "Lignes"), + ("Dashed Lines", "Lignes en tirets"), + ("Dots", "Points"), + ("Horizontal", "Horizontal"), + ("Vertical", "Vertical"), + ("Safe Margins", "Marges de sécurité"), + ("Action-safe", "Sécurité action"), + ("Title-safe", "Sécurité titres"), + ("Labels", "Étiquettes"), + ("Text Engine", "Moteur de texte"), + ("Latin", "Latin"), + ("South Asian and Middle Eastern", "Asie du Sud et Moyen-Orient"), + ("Show Font Preview", "Afficher l’aperçu des polices"), + ("Number of Recent Fonts to Display", "Nombre de polices récentes à afficher"), + ("Show Font Names in English", "Afficher les noms des polices en anglais"), + ("Still Footage", "Métrage fixe"), + ("Length of Composition", "Durée de la composition"), + ("Duration (Seconds)", "Durée (secondes)"), + ("Still Duration", "Durée de l’image fixe"), + ("Sequence Footage", "Métrage en séquence"), + ("Report Missing Frames", "Signaler les images manquantes"), + ("Automatically Reload Footage", "Recharger automatiquement le métrage"), + ("Off", "Désactivé"), + ("Non-Sequence Footage", "Métrage hors séquence"), + ("All Footage", "Tout le métrage"), + ("Ask User", "Demander à l’utilisateur"), + ("Guess", "Deviner"), + ("Ignore", "Ignorer"), + ("Straight", "Direct"), + ("Premultiplied", "Prémultiplié"), + ("Default Drag Import As", "Importation par glisser par défaut en tant que"), + ("Footage", "Métrage"), + ("Composition - Retain Layer Sizes", "Composition – conserver les tailles des calques"), + ("Export", "Exportation"), + ("Default Output Folder", "Dossier de sortie par défaut"), + ("Segment Sequences", "Segmenter les séquences"), + ("Files per Segment", "Fichiers par segment"), + ("files", "fichiers"), + ("Segment Movie Files", "Segmenter les fichiers vidéo"), + ("Segment Size", "Taille du segment"), + ("Append Bit Depth to File Name", "Ajouter la profondeur de bits au nom du fichier"), + ("Audio", "Audio"), + ("Audio Hardware", "Matériel audio"), + ("Preview Sample Rate", "Fréquence d’échantillonnage de l’aperçu"), + ("Audio Output Mapping", "Affectation des sorties audio"), + ("Left", "Gauche"), + ("Right", "Droite"), + ("channel", "canal"), + ("Disk", "Disque"), + ("Disk Cache", "Cache disque"), + ("Enable Disk Cache", "Activer le cache disque"), + ("Maximum Disk Cache Size", "Taille maximale du cache disque"), + ("Disk Cache Folder", "Dossier du cache disque"), + ("Media Cache", "Cache des médias"), + ("Database and Cache Folder", "Dossier de la base de données et du cache"), + ("Conformed Audio Folder", "Dossier de l’audio conformé"), + ("Memory & CPU", "Mémoire et CPU"), + ("RAM Reserved for Other Applications", "Mémoire vive réservée aux autres applications"), + ("Cache Budgets", "Budgets de cache"), + ("Layer Cache", "Cache des calques"), + ("Footage Frame Cache", "Cache des images du métrage"), + ("Preview (RAM) Cache", "Cache de prévisualisation (RAM)"), + ("Reduce Cache Size When System Is Low on Memory", "Réduire la taille du cache quand le système manque de mémoire"), + ("Video", "Vidéo"), + ("Enable Video Preview Output", "Activer la sortie de prévisualisation vidéo"), + ("Video Device", "Périphérique vidéo"), + ("Floating Window", "Fenêtre flottante"), + ("Full Screen", "Plein écran"), + ("Video Output During Playback", "Sortie vidéo pendant la lecture"), + ("Mirror on Computer Monitor", "Dupliquer sur l’écran de l’ordinateur"), + ("Disable Video Output When in Background", "Désactiver la sortie vidéo en arrière-plan"), + ("Default 3D Renderer", "Moteur de rendu 3D par défaut"), + ("Show 3D Reference Axes", "Afficher les axes de référence 3D"), + ("Extended Viewer", "Visualiseur étendu"), + ("Realtime Shadows in Draft", "Ombres en temps réel en mode brouillon"), + ("Scripting & Expressions", "Scripts et expressions"), + ("Application Scripting", "Scripts de l’application"), + ("Allow Scripts to Write Files and Access Network", "Autoriser les scripts à écrire des fichiers et à accéder au réseau"), + ("Warn User When Executing Files", "Avertir l’utilisateur à l’exécution de fichiers"), + ("Enable JavaScript Debugger", "Activer le débogueur JavaScript"), + ("Expressions Editor", "Éditeur d’expressions"), + ("Font Size", "Taille de police"), + ("Syntax Highlighting", "Coloration syntaxique"), + ("Line Numbers", "Numéros de ligne"), + ("Auto-complete", "Complétion automatique"), + ("Bracket Matching", "Appariement des parenthèses"), + ("Word Wrap", "Retour automatique à la ligne"), + ("Show Expression Error Banner", "Afficher le bandeau d’erreur d’expression"), + ( + "Expressions use the JavaScript engine. Script errors report their file and line in the Script Console; there is no step debugger.", + "Les expressions utilisent le moteur JavaScript. Les erreurs de script indiquent leur fichier et leur ligne dans la console de scripts ; il n’existe pas de débogueur pas à pas.", + ), + ("Roto Brush", "Roto Brush"), + ("Segmentation Model", "Modèle de segmentation"), + ( + "Roto Brush 2.0 and 3.0 use the model chosen here (Version 1.0 always uses the classic engine). Models are open source, downloaded only when you ask, and checked against their published SHA-256.", + "Roto Brush 2.0 et 3.0 utilisent le modèle choisi ici (la version 1.0 utilise toujours le moteur classique). Les modèles sont open source, ne sont téléchargés que sur votre demande et sont vérifiés d’après leur empreinte SHA-256 publiée.", + ), + ("Face Tracking", "Suivi du visage"), + ("Face Model", "Modèle de visage"), + ( + "Face tracking in the Tracker panel (Outline Only and Detailed Features) uses the model chosen here. Models are open source, downloaded only when you ask, and checked against their published SHA-256.", + "Le suivi du visage du panneau Suivi (Outline Only et Detailed Features) utilise le modèle choisi ici. Les modèles sont open source, ne sont téléchargés que sur votre demande et sont vérifiés d’après leur empreinte SHA-256 publiée.", + ), + ("Match System", "Langue du système"), + ("Total Offset", "Décalage total"), + ("Per Layer", "Par calque"), + ("Track", "Suivre"), + ("Default", "Par défaut"), + ("Stored, but not used by EffectCraft yet", "Enregistré, mais pas encore utilisé par EffectCraft"), + ("Search project", "Rechercher dans le projet"), + ("Select an item to see its details", "Sélectionnez un élément pour voir ses détails"), + ("Media Duration", "Durée du média"), + ("Frame Rate", "Fréquence d’images"), + ("File Path", "Chemin du fichier"), + ("Comment", "Commentaire"), + ("A/V Features", "Fonctions A/V"), + ("Keys", "Clés"), + ("Layer Name", "Nom du calque"), + ("Source Name", "Nom de la source"), + ("Switches", "Commutateurs"), + ("Modes", "Modes"), + ("Track Matte", "Estampe"), + ("Parent & Link", "Parent et lien"), + ("In", "Entrée"), + ("Out", "Sortie"), + ("Duration", "Durée"), + ("Original color: click to go back to it", "Couleur d’origine : cliquez pour y revenir"), + ("Resize floating panel", "Redimensionner le panneau flottant"), + ("Render every n-th pixel", "Rendre un pixel sur n"), + ("Color (#rrggbb)", "Couleur (#rrggbb)"), + ("Workspace", "Espace de travail"), + ("Rename to", "Renommer en"), + ("Open", "Ouvrir"), + ("Custom Resolution", "Résolution personnalisée"), + ("Panel Background Color", "Couleur d’arrière-plan du panneau"), + ("New Workspace", "Nouvel espace de travail"), + ("Edit Workspaces", "Modifier les espaces de travail"), + ("A script wants to open a file", "Un script veut ouvrir un fichier"), + ("Drop file to import", "Déposez le fichier pour l’importer"), + ("Drop {} files to import", "Déposez {} fichiers pour les importer"), + ( + "Skipped {} dropped file(s) without a local path. Use File ▸ Import ▸ File…", + "{} fichier(s) déposé(s) sans chemin local ignoré(s). Utilisez Fichier ▸ Importer ▸ Fichier…", + ), + ("Only one project can be opened per drop; skipped {} more", "Un seul projet peut être ouvert par dépôt ; {} de plus ignoré(s)"), + ("Cannot open dropped project {}: {}", "Impossible d’ouvrir le projet déposé {} : {}"), + ("Cannot import dropped files: {}", "Impossible d’importer les fichiers déposés : {}"), + ("A built-in preset has this name", "Un préréglage intégré porte ce nom"), + ("Replaces your preset with this name", "Remplace votre préréglage portant ce nom"), + ("Save Preset…", "Enregistrer le préréglage…"), + ("Delete Preset", "Supprimer le préréglage"), + ("Null Settings", "Paramètres de l’objet nul"), + ("Click to sample text {}", "Cliquez pour échantillonner le texte {}"), + ("Force alphabetical order", "Forcer l’ordre alphabétique"), + ("Frame rate (fps)", "Fréquence d’images (i/s)"), + ( + "Change the frame rate, alpha and start frame later with File ▸ Interpret Footage.", + "Modifiez plus tard la fréquence d’images, l’alpha et l’image de début avec Fichier ▸ Interpréter le métrage.", + ), + ("Import Kind", "Type d’importation"), + ("Page", "Page"), + ("Delay (s)", "Délai (s)"), + ("Amount (%)", "Quantité (%)"), + ("Cascade (farther pins trail longer)", "En cascade (les épingles éloignées traînent plus longtemps)"), + ("Speed (%)", "Vitesse (%)"), + ("Smoothing", "Lissage"), + ("Use Draft Deformation", "Utiliser la déformation brouillon"), + ("Show Mesh", "Afficher le maillage"), + ("Scale X (%)", "Échelle X (%)"), + ("Scale Y (%)", "Échelle Y (%)"), + ("Rotation (degrees)", "Rotation (degrés)"), + ("Move X", "Déplacement X"), + ("Move Y", "Déplacement Y"), + ("Top", "Haut"), + ("Width", "Largeur"), + ("Height", "Hauteur"), + ("Shape", "Forme"), + ("Mode", "Mode"), + ("Frame", "Image"), + ("Orientation", "Orientation"), + ("Position (pixels)", "Position (pixels)"), + ("Position (percent of the composition)", "Position (pourcentage de la composition)"), + ("Create", "Créer"), + ("Use Dimensions From", "Utiliser les dimensions de"), + ("Still Duration (seconds)", "Durée de l’image fixe (secondes)"), + ("Add to Render Queue", "Ajouter à la file d’attente de rendu"), + ("Sequence Layers", "Enchaîner les calques"), + ("Overlap", "Chevauchement"), + ("Duration (seconds)", "Durée (secondes)"), + ("Transition", "Transition"), + ("Matte color (premultiplied)", "Couleur de fond (prémultipliée)"), + ("Invert Alpha", "Inverser l’alpha"), + ("Assume this frame rate", "Supposer cette fréquence d’images"), + ("Separate Fields", "Séparer les trames"), + ("Pixel Aspect Ratio", "Rapport d’aspect des pixels"), + ("Loop (times)", "Boucle (fois)"), + ("Assign Profile", "Attribuer un profil"), + ("Preserve RGB", "Conserver le RVB"), + ("Interpret As Linear Light", "Interpréter comme lumière linéaire"), + ("Start Timecode", "Timecode de début"), + ("Override Start", "Remplacer le début"), + ("Depth", "Profondeur"), + ("Time display style", "Style d’affichage du temps"), + ("Color engine", "Moteur colorimétrique"), + ("Working space", "Espace colorimétrique de travail"), + ("Working gamma", "Gamma de travail"), + ("Linearize working space", "Linéariser l’espace colorimétrique de travail"), + ("Blend colors using 1.0 gamma", "Fusionner les couleurs avec un gamma de 1,0"), + ("HDR on SDR displays and outputs", "HDR sur les écrans et sorties SDR"), + ("Output color space", "Espace colorimétrique de sortie"), + ("Video rendering and effects", "Rendu vidéo et effets"), + ("Time Span", "Intervalle de temps"), + ("Invert", "Inverser"), + ("Blur (pixels before auto-trace)", "Flou (pixels avant le tracé automatique)"), + ("Tolerance (pixels)", "Tolérance (pixels)"), + ("Threshold (%)", "Seuil (%)"), + ("Minimum Area (pixels)", "Surface minimale (pixels)"), + ("Corner Roundness (%)", "Arrondi des angles (%)"), + ("Apply To New Layer", "Appliquer à un nouveau calque"), + ("Action", "Action"), + ("Sensitivity threshold (0–1, lower finds more)", "Seuil de sensibilité (0–1, plus bas = plus de résultats)"), + ("Data", "Données"), + ("Time field (empty: automatic)", "Champ de temps (vide : automatique)"), + ("Video start (ISO date-time, hh:mm:ss, timecode; empty: file date)", "Début de la vidéo (date-heure ISO, hh:mm:ss, timecode ; vide : date du fichier)"), + ("First sample at (comp seconds)", "Premier échantillon à (secondes de composition)"), + ( + "Writes Final Cut Pro XML (.xml), which Premiere Pro opens with File ▸ Import. Native .prproj files are not written.", + "Écrit un XML Final Cut Pro (.xml), que Premiere Pro ouvre avec Fichier ▸ Importer. Les fichiers .prproj natifs ne sont pas écrits.", + ), + ("File", "Fichier"), + ("Format", "Format"), + ("Pre-render (ProRes 4444)", "Prérendu (ProRes 4444)"), + ("Precomps", "Précompositions"), + ("Frame rate", "Fréquence d’images"), + ("Description", "Description"), + ("Category", "Catégorie"), + ("Embed footage files", "Intégrer les fichiers de métrage"), + ("Embed up to (MB)", "Intégrer jusqu’à (Mo)"), + ("Use the sRGB curve (ignore Gamma)", "Utiliser la courbe sRVB (ignorer le gamma)"), + ("ICC profile (replaces the numbers)", "Profil ICC (remplace les valeurs)"), + ("Rectangle", "Rectangle"), + ("Ellipse", "Ellipse"), + ("Orient Along Path", "Orienter le long du tracé"), + ("Orient Towards Camera", "Orienter vers la caméra"), + ("Orient Towards Point of Interest", "Orienter vers le point d’intérêt"), + ("Single Composition", "Composition unique"), + ("Multiple Compositions", "Plusieurs compositions"), + ("Dissolve Front Layer", "Fondu du calque avant"), + ("Cross Dissolve Front and Back Layers", "Fondu enchaîné des calques avant et arrière"), + ("Interpret Straight - Unmatted", "Interpréter comme direct – sans fond"), + ("Interpret Premultiplied - Matted With Color", "Interpréter comme prémultiplié – sur fond coloré"), + ("Upper Field First", "Trame supérieure en premier"), + ("Lower Field First", "Trame inférieure en premier"), + ("Embedded / sRGB", "Intégré / sRVB"), + ("Use Source File Timecode", "Utiliser le timecode du fichier source"), + ("Timecode", "Timecode"), + ("Frames", "Images"), + ("Feet + Frames (35mm)", "Pieds + images (35 mm)"), + ("Feet + Frames (16mm)", "Pieds + images (16 mm)"), + ("Clip", "Écrêtage"), + ("Compand", "Compandage"), + ("Current Frame", "Image actuelle"), + ("Work Area", "Zone de travail"), + ("Luminance", "Luminance"), + ("Create Markers", "Créer des repères"), + ("Split Layers", "Fractionner les calques"), + ("Split and Precompose", "Fractionner et précomposer"), + ("CMX 3600 EDL (.edl, V1 only)", "CMX 3600 EDL (.edl, V1 uniquement)"), + ("OMF (.omf, audio)", "OMF (.omf, audio)"), + ("Layers Premiere can't show (text, shapes, effects…)", "Calques que Premiere ne peut pas afficher (texte, formes, effets…)"), + ("All layers", "Tous les calques"), + ("None (leave them out)", "Aucun (les exclure)"), + ("Nested sequences", "Séquences imbriquées"), + ("Pre-render", "Prérendu"), + ("Puppet Follow-Through", "Prolongement de la marionnette"), + ("Puppet Record Options", "Options d’enregistrement de la marionnette"), + ("Free Transform Points", "Transformation libre des points"), + ("Mask Shape", "Forme du masque"), + ("Auto-Orientation", "Orientation automatique"), + ("Go to Time", "Accéder au temps"), + ("Add Guide", "Ajouter un repère"), + ("Add Percentage Guide", "Ajouter un repère en pourcentage"), + ("New Composition from Selection", "Nouvelle composition à partir de la sélection"), + ("Project Settings", "Paramètres du projet"), + ("Auto-trace", "Tracé automatique"), + ("Scene Edit Detection", "Détection des coupes de scène"), + ("Align Video to Data", "Aligner la vidéo sur les données"), + ("Export Adobe Premiere Pro Project", "Exporter un projet Adobe Premiere Pro"), + ("New Placeholder", "Nouvel espace réservé"), + ("Solid Settings", "Paramètres du solide"), + ("Save as Template", "Enregistrer en tant que modèle"), + ("My Custom RGB", "Mon RVB personnalisé"), + ("Mercury GPU Acceleration (no GPU: software)", "Accélération GPU Mercury (aucun GPU : logiciel)"), + ("Sort by {}, {}", "Trier par {}, {}"), + ("Sort by {}", "Trier par {}"), + ("Label of {}: {}", "Étiquette de {} : {}"), + ("Comment of {}: {}", "Commentaire de {} : {}"), + ("Project color depth: {}", "Profondeur de couleur du projet : {}"), + ("Start (s)", "Début (s)"), + ("Duration (s)", "Durée (s)"), + ("Frames per second", "Images par seconde"), + ("Bottom", "Bas"), + ("Bitrate (kbps)", "Débit (kb/s)"), + ("Frames between key frames (0 = every 2 s)", "Images entre les images clés (0 = toutes les 2 s)"), + ("Click in the Composition panel to sample text {}", "Cliquez dans le panneau Composition pour échantillonner le texte {}"), + ("Video preview off: audio only", "Prévisualisation vidéo désactivée : audio uniquement"), + ("Open in Essential Graphics", "Ouvrir dans Graphiques essentiels"), + ("Video preview is off (Preview panel): audio only", "La prévisualisation vidéo est désactivée (panneau Prévisualisation) : audio uniquement"), + ("Solid…", "Solide…"), +]; + #[cfg(test)] mod tests { use super::*; @@ -5546,6 +6515,22 @@ mod tests { set_current("en"); } + /// French sets a no-break space before `:`, `;`, `?` and `!`, never a plain one, and keeps the + /// project's own text untouched. + #[test] + fn french_panels_translate_and_keep_the_punctuation_rule() { + for (en, fr) in FRENCH { + assert!(!fr.contains(" :") && !fr.contains(" ;") && !fr.contains(" ?") && !fr.contains(" !"), "{en:?}: plain space before a high punctuation mark"); + } + set_current("fr"); + assert_eq!(tr("Composition Name:"), "Nom de la composition\u{a0}:"); + assert_eq!(tr("Cancel"), "Annuler"); + assert_eq!(tr("my layer.mp4"), "my layer.mp4"); + assert_eq!(tr_args("Step {} of {}: {}", &[&1, &3, &"Colour"]), "Étape 1 sur 3\u{a0}: Colour"); + set_current("en"); + assert_eq!(tr("Cancel"), "Cancel"); + } + /// Values fill the placeholders in order, and a missing value is dropped instead of panicking. #[test] fn tr_args_fills_values_in_order() { From d85a5249c71b2a4f71a3d88dcf3bc3d5ed4b2362 Mon Sep 17 00:00:00 2001 From: Florent Siegenthaler <64897087+Atalantis@users.noreply.github.com> Date: Fri, 30 Oct 2026 21:22:56 +0100 Subject: [PATCH 2/2] i18n(fr): translate the strings main added since (300 entries) --- crates/ui-egui/src/i18n/effects.rs | 1 + crates/ui-egui/src/i18n/ui.rs | 317 +++++++++++++++++++++++++++++ docs/localization-parity.md | 2 +- 3 files changed, 319 insertions(+), 1 deletion(-) diff --git a/crates/ui-egui/src/i18n/effects.rs b/crates/ui-egui/src/i18n/effects.rs index 3fadf537a..1eeb90e00 100644 --- a/crates/ui-egui/src/i18n/effects.rs +++ b/crates/ui-egui/src/i18n/effects.rs @@ -1458,6 +1458,7 @@ const FRENCH: &[Row] = &[ ("ec.vr.rotatesphere", "VR Rotate Sphere", "Rotation de sphère VR"), ("ec.vr.sharpen", "VR Sharpen", "Accentuation VR"), ("ec.vr.spheretoplane", "VR Sphere to Plane", "Sphère vers plan VR"), + ("ec.3d.instance3d", "3D Layer Instance", "Instance de calque 3D"), ]; /// French (`fr`) category labels, keyed by the registry's English category. diff --git a/crates/ui-egui/src/i18n/ui.rs b/crates/ui-egui/src/i18n/ui.rs index d8889210a..c869b896a 100644 --- a/crates/ui-egui/src/i18n/ui.rs +++ b/crates/ui-egui/src/i18n/ui.rs @@ -8567,6 +8567,323 @@ const FRENCH: &[(&str, &str)] = &[ ("Open in Essential Graphics", "Ouvrir dans Graphiques essentiels"), ("Video preview is off (Preview panel): audio only", "La prévisualisation vidéo est désactivée (panneau Prévisualisation) : audio uniquement"), ("Solid…", "Solide…"), + ("Click to sample color", "Cliquez pour échantillonner la couleur"), + ("Advanced", "Avancé"), + ("Rescan Fonts", "Réanalyser les polices"), + ("Track Matte pick whip: drag onto a layer", "Lasso d’estampe : faites glisser vers un calque"), + ("Play/Stop", "Lecture/Arrêt"), + ("Selection Tool", "Outil Sélection"), + ("Hand Tool", "Outil Main"), + ("Zoom Tool", "Outil Zoom"), + ("Orbit Around Cursor Tool", "Outil Orbite autour du curseur"), + ("Pan Under Cursor Tool", "Outil Panoramique sous le curseur"), + ("Dolly Towards Cursor Tool", "Outil Travelling vers le curseur"), + ("Rotation Tool", "Outil Rotation"), + ("Pan Behind (Anchor Point) Tool", "Outil Déplacement derrière (point d’ancrage)"), + ("Rectangle Tool", "Outil Rectangle"), + ("Rounded Rectangle Tool", "Outil Rectangle arrondi"), + ("Ellipse Tool", "Outil Ellipse"), + ("Polygon Tool", "Outil Polygone"), + ("Star Tool", "Outil Étoile"), + ("Pen Tool", "Outil Plume"), + ("Add Vertex Tool", "Outil Ajout de sommet"), + ("Delete Vertex Tool", "Outil Suppression de sommet"), + ("Convert Vertex Tool", "Outil Conversion de sommet"), + ("Mask Feather Tool", "Outil Contour progressif du masque"), + ("Horizontal Type Tool", "Outil Texte horizontal"), + ("Vertical Type Tool", "Outil Texte vertical"), + ("Brush Tool", "Outil Pinceau"), + ("Clone Stamp Tool", "Outil Tampon de duplication"), + ("Eraser Tool", "Outil Gomme"), + ("Roto Brush Tool", "Outil Pinceau de rotoscopie"), + ("Refine Edge Tool", "Outil Affinage des contours"), + ("Object Matte Tool", "Outil Estampe d’objet"), + ("Puppet Position Pin Tool", "Outil Épingle de position de marionnette"), + ("Puppet Starch Pin Tool", "Outil Épingle de rigidité de marionnette"), + ("Puppet Bend Pin Tool", "Outil Épingle de courbure de marionnette"), + ("Puppet Advanced Pin Tool", "Outil Épingle avancée de marionnette"), + ("Puppet Overlap Pin Tool", "Outil Épingle de chevauchement de marionnette"), + ("Shortcut", "Raccourci"), + ("Range", "Plage"), + ("Play From", "Lire à partir de"), + ("Rec. 2020", "Rec. 2020"), + ("Light…", "Lumière…"), + ("Camera…", "Caméra…"), + ("Null Object", "Objet nul"), + ("Shape Layer", "Calque de forme"), + ("Adjustment Layer", "Calque de réglage"), + ("Layer Settings…", "Paramètres du calque…"), + ("Create Shapes from Vector Layer", "Créer des formes à partir du calque vectoriel"), + ("Create Shapes from Text", "Créer des formes à partir du texte"), + ("Create Masks from Text", "Créer des masques à partir du texte"), + ("New Mask", "Nouveau masque"), + ("Center In View", "Centrer dans la vue"), + ("Fit to Comp", "Ajuster à la composition"), + ("Flip Horizontal", "Miroir horizontal"), + ("Flip Vertical", "Miroir vertical"), + ("Enable Time Remapping", "Activer le remappage temporel"), + ("Time-Reverse Layer", "Inverser le temps du calque"), + ("Freeze Frame", "Image figée"), + ("Freeze On Last Frame", "Figer à la dernière image"), + ("Add Marker", "Ajouter un repère"), + ("Bring Layer to Front", "Placer le calque au premier plan"), + ("Bring Layer Forward", "Avancer le calque d’un cran"), + ("Send Layer Backward", "Reculer le calque d’un cran"), + ("Send Layer to Back", "Placer le calque à l’arrière-plan"), + ("Pre-compose…", "Précomposer…"), + ("Split Layer", "Fractionner le calque"), + ("Layer Style Options...", "Options de style de calque..."), + ("Convert to Editable Styles", "Convertir en styles modifiables"), + ("Show All", "Tout afficher"), + ("Remove All", "Tout supprimer"), + ("Separate Dimensions", "Dissocier les dimensions"), + ("Add Property to Essential Graphics", "Ajouter la propriété aux graphiques essentiels"), + ("Continuous Bezier", "Bézier continu"), + ("Auto Bezier", "Bézier automatique"), + ("Lock To Time", "Verrouiller sur le temps"), + ("Rove Across Time", "Répartir dans le temps"), + ("Anchor Point", "Point d’ancrage"), + ("All Transform Properties", "Toutes les propriétés de transformation"), + ("Line Anchor", "Ancrage de ligne"), + ("Line Spacing", "Interligne"), + ("Character Offset", "Décalage de caractère"), + ("Character Value", "Valeur de caractère"), + ("Fill Color: RGB", "Couleur de remplissage : RVB"), + ("Fill Color: Hue", "Couleur de remplissage : teinte"), + ("Fill Color: Saturation", "Couleur de remplissage : saturation"), + ("Fill Color: Brightness", "Couleur de remplissage : luminosité"), + ("Fill Color: Opacity", "Couleur de remplissage : opacité"), + ("Stroke Color: RGB", "Couleur du contour : RVB"), + ("Stroke Color: Hue", "Couleur du contour : teinte"), + ("Stroke Color: Saturation", "Couleur du contour : saturation"), + ("Stroke Color: Brightness", "Couleur du contour : luminosité"), + ("Stroke Color: Opacity", "Couleur du contour : opacité"), + ("Stroke Width", "Épaisseur du contour"), + ("Front: Color", "Face avant : couleur"), + ("Bevel: Color", "Biseau : couleur"), + ("Side: Color", "Côté : couleur"), + ("Back: Color", "Face arrière : couleur"), + ("Effect Controls", "Contrôles d’effets"), + ("Effects & Presets", "Effets et préréglages"), + ("Motion Sketch", "Croquis de mouvement"), + ("Render Queue", "File d’attente de rendu"), + ("Mask Interpolation", "Interpolation de masque"), + ("Script Console", "Console de scripts"), + ("Essential Graphics", "Graphiques essentiels"), + ("ScriptUI Panel", "Panneau ScriptUI"), + ("Lumetri Scopes", "Scopes Lumetri"), + ("Media Browser", "Explorateur de médias"), + ("Content-Aware Fill", "Remplissage adapté au contenu"), + ("Create Nulls From Paths", "Créer des objets nuls à partir de tracés"), + ("VR Comp Editor", "Éditeur de composition VR"), + ("Resolution", "Résolution"), + ("Overlays", "Incrustations"), + ("Layer Controls", "Contrôles de calque"), + ("Loop", "Boucle"), + ("Cache Before Playback", "Mettre en cache avant la lecture"), + ("Pre-roll", "Pré-roulement"), + ("Post-roll", "Post-roulement"), + ("If caching, play cached frames", "En cas de mise en cache, lire les images en cache"), + ("Interpret Footage", "Interpréter le métrage"), + ("Create a new Folder", "Créer un nouveau dossier"), + ("Create a new Composition", "Créer une nouvelle composition"), + ("First Frame", "Première image"), + ("Previous Frame", "Image précédente"), + ("Next Frame", "Image suivante"), + ("Last Frame", "Dernière image"), + ("Name (A–Z)", "Nom (A–Z)"), + ("Merged PRs", "PR fusionnées"), + ("Lines added", "Lignes ajoutées"), + ("Lines deleted", "Lignes supprimées"), + ("Line delta", "Écart de lignes"), + ("Binary assets added", "Ressources binaires ajoutées"), + ("Binary assets removed", "Ressources binaires supprimées"), + ("First commit", "Premier commit"), + ("Last commit", "Dernier commit"), + ("Display name", "Nom affiché"), + ("Real name", "Vrai nom"), + ("ArtCraft website", "Site web d’ArtCraft"), + ("Source code on GitHub", "Code source sur GitHub"), + ("3D Renderer", "Moteur de rendu 3D"), + ("Black", "Noir"), + ("White", "Blanc"), + ("Composition Settings", "Paramètres de composition"), + ("Preset Name", "Nom du préréglage"), + ("Lock Aspect Ratio", "Verrouiller le rapport d’aspect"), + ("Frame Rate presets", "Préréglages de fréquence d’images"), + ("Background Color", "Couleur d’arrière-plan"), + ("Basic", "Général"), + ("Shutter Angle", "Angle d’obturation"), + ("Shutter Phase", "Phase d’obturation"), + ("Samples Per Frame", "Échantillons par image"), + ("Adaptive Sample Limit", "Limite d’échantillons adaptatifs"), + ("X and Y", "X et Y"), + ("X only", "X uniquement"), + ("Y only", "Y uniquement"), + ("Track Camera", "Suivi de caméra"), + ("Warp Stabilizer", "Stabilisateur de déformation"), + ("Track Motion", "Suivi du mouvement"), + ("Stabilize Motion", "Stabiliser le mouvement"), + ("Motion Source:", "Source du mouvement :"), + ("Current Track:", "Piste actuelle :"), + ("Track Type:", "Type de suivi :"), + ("Motion Target:", "Cible du mouvement :"), + ("Track Mask:", "Suivi du masque :"), + ("Analyze forward", "Analyser vers l’avant"), + ("Analyze backward", "Analyser vers l’arrière"), + ("Continue Tracking", "Poursuivre le suivi"), + ("Stop Tracking", "Arrêter le suivi"), + ("Adapt Feature", "Adapter la caractéristique"), + ("Extrapolate Motion", "Extrapoler le mouvement"), + ("Attach Point", "Point de rattachement"), + ("Track Name", "Nom de la piste"), + ("Motion Tracker Options", "Options du suivi de mouvement"), + ("Motion Tracker Apply Options", "Options d’application du suivi de mouvement"), + ("Edit Value Graph", "Modifier la courbe de valeur"), + ("Edit Speed Graph", "Modifier la courbe de vitesse"), + ("Show Reference Graph", "Afficher la courbe de référence"), + ( + "Auto-Select Graph Type (speed graph for spatial properties, else value graph)", + "Sélection automatique du type de courbe (vitesse pour les propriétés spatiales, valeur sinon)", + ), + ("Auto-zoom graph height", "Zoom automatique sur la hauteur du graphique"), + ("Fit all graphs to view", "Ajuster tous les graphiques à la vue"), + ("Fit selection to view", "Ajuster la sélection à la vue"), + ( + "Snap (key drags snap to the current time and other keys)", + "Aimantation (les images clés déplacées s’alignent sur le temps courant et les autres images clés)", + ), + ("Show Transform Box when multiple keys are selected", "Afficher le cadre de transformation lorsque plusieurs images clés sont sélectionnées"), + ("Separate Dimensions (Position)", "Dissocier les dimensions (position)"), + ("Convert selected keyframes to Hold", "Convertir les images clés sélectionnées en images figées"), + ("Convert selected keyframes to Linear", "Convertir les images clés sélectionnées en linéaire"), + ("Convert selected keyframes to Auto Bezier", "Convertir les images clés sélectionnées en Bézier automatique"), + ("Easy Ease (F9)", "Lissage (F9)"), + ("Easy Ease In (Shift+F9)", "Lissage entrant (Maj+F9)"), + ("Easy Ease Out (Ctrl+Shift+F9)", "Lissage sortant (Ctrl+Maj+F9)"), + ("Spatial Path", "Trajectoire spatiale"), + ("Temporal Path", "Trajectoire temporelle"), + ("All the Same", "Tous identiques"), + ("All Independently", "Tous indépendants"), + ("Noise Type:", "Type de bruit :"), + ("Apply To:", "Appliquer à :"), + ("Temporal Graph", "Courbe temporelle"), + ("Keyframe Rate:", "Fréquence des images clés :"), + ("Capture speed at:", "Vitesse de capture à :"), + ("Start Capture", "Démarrer la capture"), + ("Cancel Capture", "Annuler la capture"), + ("Small Caps", "Petites capitales"), + ("All Small Caps", "Tout en petites capitales"), + ("Superscript / Superior", "Exposant / supérieur"), + ("Subscript / Inferior", "Indice / inférieur"), + ("Standard Ligatures", "Ligatures standard"), + ("Discretionary Ligatures", "Ligatures facultatives"), + ("Contextual Alternates", "Alternatives contextuelles"), + ("Stylistic Alternates", "Alternatives stylistiques"), + ("Titling Alternates", "Alternatives de titrage"), + ("Default Figure Style", "Style de chiffres par défaut"), + ("Tabular Lining", "Chiffres alignés tabulaires"), + ("Proportional Oldstyle", "Chiffres elzéviriens proportionnels"), + ("Proportional Lining", "Chiffres alignés proportionnels"), + ("Tabular Oldstyle", "Chiffres elzéviriens tabulaires"), + ("Fill Over Stroke", "Remplissage sur le contour"), + ("Stroke Over Fill", "Contour sur le remplissage"), + ("Stroke order", "Ordre du contour"), + ("Single-line Composer", "Composeur de ligne unique"), + ("Every-line Composer", "Composeur de toutes les lignes"), + ("Text direction", "Direction du texte"), + ("Recently Used", "Récemment utilisés"), + ("User Presets", "Préréglages utilisateur"), + ("Remove from Favorites", "Retirer des favoris"), + ("Show Animation Presets", "Afficher les animations prédéfinies"), + (" Refresh List", " Actualiser la liste"), + (" Clear Recently Used", " Effacer les éléments récemment utilisés"), + ("Show 32 bpc Effects Only", "Afficher uniquement les effets 32 bpc"), + ("Show GPU Accelerated Effects Only", "Afficher uniquement les effets accélérés par GPU"), + ("Show Effects for All Color Depths", "Afficher les effets pour toutes les profondeurs de couleur"), + ("* Animation Presets", "* Animations prédéfinies"), + ("Select a layer to apply to", "Sélectionnez un calque auquel appliquer"), + ("Search effects and presets", "Rechercher des effets et des préréglages"), + ("Building waveform…", "Création de la forme d’onde…"), + ("No effects. Drag one from Effects & Presets.", "Aucun effet. Faites-en glisser un depuis Effets et préréglages."), + ( + "Click the ring to add a colour; Alt-click a stop (or drag it off) to remove it", + "Cliquez sur l’anneau pour ajouter une couleur ; Alt-clic sur un point d’arrêt (ou faites-le glisser hors du dégradé) pour le supprimer", + ), + ( + "Start from a ready-made project. Opening a template makes an untitled copy.", + "Partez d’un projet prêt à l’emploi. L’ouverture d’un modèle crée une copie sans titre.", + ), + ("Square Pixels", "Pixels carrés"), + ("Alpha Expansion:", "Expansion de l’alpha :"), + ("Fill Method:", "Méthode de remplissage :"), + ("Edge Blend", "Fusion des bords"), + ("Entire Duration", "Durée entière"), + ("Reference Frame:", "Image de référence :"), + ("Use Current Time", "Utiliser le temps courant"), + ("Generate Fill Layer", "Générer un calque de remplissage"), + ("Lighting Correction:", "Correction de l’éclairage :"), + ("Create Text and Camera", "Créer un texte et une caméra"), + ("Create Solid and Camera", "Créer un solide et une caméra"), + ("Create Null and Camera", "Créer un objet nul et une caméra"), + ("Create Shadow Catcher, Camera and Light", "Créer un récepteur d’ombres, une caméra et une lumière"), + ("Unable to solve camera", "Impossible de résoudre la caméra"), + ("Waiting to solve", "En attente de résolution"), + ("Create Camera", "Créer une caméra"), + ("track point", "point de suivi"), + ("Ruler zero point", "Point zéro de la règle"), + ("Vertical ruler", "Règle verticale"), + ("Horizontal ruler", "Règle horizontale"), + ("Viewer controls", "Contrôles du visualiseur"), + ("Resolution/Down Sample Factor", "Résolution et facteur de sous-échantillonnage"), + ("Adjust Exposure", "Ajuster l’exposition"), + ("Snapshot taken", "Instantané pris"), + ("Fast Previews", "Aperçus rapides"), + ("3D View", "Vue 3D"), + ("Current time", "Temps courant"), + ("Layer Transform", "Transformation du calque"), + ("Reset Transform", "Réinitialiser la transformation"), + ("Text Animation", "Animation de texte"), + ("Text Animation Presets", "Animations de texte prédéfinies"), + ("EffectCraft on getartcraft.com", "EffectCraft sur getartcraft.com"), + ("Small Screen", "Petit écran"), + ("Tool Creates Shape", "L’outil crée une forme"), + ("Tool Creates Mask", "L’outil crée un masque"), + ("Blend Mode", "Mode de fusion"), + ("Show mesh", "Afficher le maillage"), + ("Record Options...", "Options d’enregistrement..."), + ("Apply", "Appliquer"), + ("Analyze", "Analyser"), + ("Add Point", "Ajouter un point"), + ("Remove Point", "Supprimer le point"), + ("Render", "Rendu"), + ("Save Current as Template…", "Enregistrer l’actuel comme modèle…"), + ("New Composition From Footage", "Nouvelle composition à partir d’un métrage"), + ("Search", "Rechercher"), + ("(no composition)", "(aucune composition)"), + ("per second", "par seconde"), + ("Waveform", "Forme d’onde"), + ("steps", "étapes"), + ("Export Scene to Blender...", "Exporter la scène vers Blender..."), + ("Preview", "Prévisualisation"), + ( + "Hands-on tutorials that run inside EffectCraft. Do each step yourself, or press Show me.", + "Des tutoriels pratiques qui se déroulent dans EffectCraft. Réalisez chaque étape vous-même, ou appuyez sur Montrez-moi.", + ), + ("Remove this object's strokes", "Supprimer les traits de cet objet"), + ("Object {}", "Objet {}"), + ("Object {} ({})", "Objet {} ({})"), + ("Output file name template", "Modèle de nom du fichier de sortie"), + ("Output file: {}", "Fichier de sortie : {}"), + ( + "JavaScript with the After Effects scripting object model — try app.project.numItems", + "JavaScript avec le modèle d’objets de script After Effects — essayez app.project.numItems", + ), + ("Source", "Source"), + ("Label {} color", "Couleur de l’étiquette {}"), + ("Label {} name", "Nom de l’étiquette {}"), + ("Stroke width presets", "Préréglages d’épaisseur du contour"), + ("Close font search", "Fermer la recherche de polices"), ]; #[cfg(test)] diff --git a/docs/localization-parity.md b/docs/localization-parity.md index 8c6930b15..70ae01de2 100644 --- a/docs/localization-parity.md +++ b/docs/localization-parity.md @@ -80,7 +80,7 @@ counted, so the true percentages are slightly lower. | Spanish | `es` | 1,142 (≈ 29%): menus 629 rows, panels 513 | Menus only; the panel catalog from #996 | Latin, fine | no | partial | 9–12 h + review | | Hindi | `hi` | 0 | — | UI: Devanagari fallback font but no shaping; text layers shape Devanagari | no | none (After Effects: none) | 9–13 h + shaping in the UI | | Arabic | `ar` | 0 | — | UI: Arabic fallback font but no shaping and no RTL layout; text layers: bidi + shaping | no | none (After Effects: none) | 9–13 h + 15–25 h RTL UI | -| French | `fr` | 1,822 (≈ 43%): menus 629 rows, panels 886, effect names 307 | Panels and dialogs at the source list of the other panel catalogs; effect names and their 21 categories; no help; machine-translated from the English, not yet native-speaker proofread | Latin, fine | no | partial | 2–4 h + review | +| French | `fr` | 2,124 (≈ 51%): menus 632 rows, panels 1,184, effect names 308 | Panels and dialogs at the source list of the other panel catalogs; effect names and their 21 categories; no help; machine-translated from the English, not yet native-speaker proofread | Latin, fine | no | partial | 2–4 h + review | | Portuguese (Brazil) | `pt-br` | 1,324 (≈ 34%): menus 629 rows, panels 695 | Panels and dialogs at the Chinese catalogs' source list; the six keys main added after that count are translated too; AI-assisted, not yet native-speaker proofread | Latin, fine | no | partial | independent native review | | Indonesian | `id` | 0 | — | Latin, fine | no | none (After Effects: none) | 8–12 h + review | | Japanese | `ja` | 1,923 (≈ 46%): menus 630 rows, panels 996, effect names 297 | Panels and dialogs partly; no help, effect names translated for 297 of the 307 ids and their parameter names not; Home screen literals unwrapped (#574, closed) | Japanese system fallback; vertical text and Tate-Chu-Yoko in text layers; IME | no | partial | 6–9 h + review |