From e9be17427f06695c1cb1074b2ce993b903b65893 Mon Sep 17 00:00:00 2001 From: sanches Date: Sun, 18 Oct 2026 05:14:35 +0300 Subject: [PATCH 1/3] M9: French catalog at 100% of the strings (still a draft) The 91 UI strings, 12 command labels and 2 menu wordings the strings added since the French catalog was drafted left in English are translated in the catalog's conventions (NBSP before : ! and inside guillemets, one/other plurals, 0 singular): starter templates and the Templates tab, the home screen's recents table with its sorting and dates in the French way, dropping files to open or import, the Getting started tips with sharing by code, the Playground's bound-variable chip, smart-selection spacing, outline mode's options, the converting and panel-width commands. Appended to each section; still requires native review. --- ROADMAP.md | 5 +- contributors/people.toml | 3 + crates/ui-egui/locales/fr.toml | 111 +++++++++++++++++++++++++++++++++ docs/gaps.md | 11 ++-- docs/localization-parity.md | 5 +- 5 files changed, 126 insertions(+), 9 deletions(-) diff --git a/ROADMAP.md b/ROADMAP.md index 8a587286..ecde012e 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -2,7 +2,7 @@ **Stage: alpha** · next: beta, ~26 points and ~162–292 h away (one Opus 5.5 agent; ~33–67 h wall-clock with 5 agents) -> **Last reviewed:** 2026-10-10 · **Last updated:** 2026-10-17 · **Change:** minor (community batch #753: Selection colors, smart-selection spacing, a Present tab; language table re-measured from the catalogs; community fixes from #524 up (55 PRs: `.fig` import fidelity, paste from other apps, the Actions palette, editor fixes, server limits) and a boolean-op crash guard; number variables in the text content picker (#629); frames and sections convert into each other (#719); bounded canvas pan overscan; community fixes from #478 up and a control-channel fix (#589); bounded canvas pan overscan; Typography spacing icons support scrubbing (#373); font scans skip named pipes; system theme on first run; recent files as cards with thumbnails on the home screen; community fixes: lost images reported on loading (#207), SVG import budgets (#190), Leptos code (#223), full screen (#227), server snapshots readable again (#188), owner-only preferences (#200), ruzstd 0.9.1 (#182), layer cycle repair (#205), batch rollback, Direct3D 12 on Windows, plugin metering (#192); vector edit mode regions: hover hatch, selection and drag; SVG/PDF exports refuse over-depth documents (#208); bounded MCP/control framing, connections and queues (#201); plugin log limits (#191); live-session revert guard (#198); attached MCP no longer replays after a lost reply (#194); repeat command recursion fix; the Layout panel's constrain-proportions link scales the other side, #220; core editor leftovers: component playground, auto gap handles, variables inside styles, inner shadows and background blur on groups, command-made text readable on dark pages, a one-step frame/group convert, delays on mouse triggers and manual overlay offsets, wrapped-line alignment; `.fig` export: instance sizes, variables with modes, shared styles, variable-width strokes; starter templates, a Templates tab and Getting started tips on the home screen; your online files; everyday editing partials: number fields, outline options, Hide when publishing, cursors, panel widths, dark pages; sharing with a join code; text box sizes measured against documents re-saved by other software; live sessions per document; .fig export checked by opening written files in other software; a public figcraft-server: open hosting, owner tokens, per-address limits, idle expiry, moderation, install.sh; experimental .fig export; keyboard shortcut parity suite and bindings; Simplified Chinese draft catalog; Latin American Spanish overlay; prototyping tail: gamepad triggers, widgets in prototypes, mode lookups; plugin directory on figcraft-server; Japanese and Korean draft catalogs and CJK UI fonts; plugin widgets and the plugin panel tail; French, German and Brazilian Portuguese draft catalogs; cursor chat and spotlight in live sessions; layers and assets panels behaviour suite and fixes; vector multi-edit and edit tail; dev resources links; extended collections tail; branch version history and finer list merges; headline percentages recomputed from the area table: feature breadth ~84%, core ~94%, mainstream ~50%; text lists, hanging punctuation and decoration styles; comments and version history behaviour suite and fixes; canvas navigation, guides and grids behaviour suite and fixes; export and inspect behaviour suite and fixes; .fig import: editable vector networks and more layer kinds; shapes and vector behaviour suite and fixes; paint and effects behaviour suite and fixes; frames, groups, sections and masks behaviour suite and fixes; styles and variables behaviour suite and fixes; prototyping behaviour suite and fixes; components behaviour suite and fixes; embedded image colour profiles; layers panel keyboard: F2 rename, Shift+F10 context menu, keyboard box selection, 10k-layer QA; per-side stroke weight variables; text behaviour suite: CJK line breaking, metrics, vertical trim; selection and transform behaviour suite and fixes; `.fig` import, best effort; Windows QA pass with eight fixes; auto layout behaviour suite and fixes; Display P3: gamut warning and soft-proof (true P3 blocked upstream); several windows; localization layer with a draft Spanish catalog; hosting figcraft-server: wss in the desktop app, server releases, deployment guide; plugin panels and settings; canvas fixes: boolean hit testing on the result, group drags, frame outlines and slices; code connect; stretch and scatter brushes, pen pressure; text on a path and pattern fills; team libraries on the server and swap library; branches: create, update from main, review and merge; animated GIF fills and TIFF images; Open recent, outlines for the selection and mask outlines: menu breadth 100%; extended collections, variables import/export, gradient stop and variant bindings; feature breadth ~80%; ready ~49%) · **Target:** Figma Design (desktop app 126.10.7) +> **Last reviewed:** 2026-10-10 · **Last updated:** 2026-10-18 · **Change:** minor (French at 100% of the strings, an unreviewed draft; language table re-measured; preceding: 2026-10-17 community batch #753: Selection colors, smart-selection spacing, a Present tab; language table re-measured from the catalogs; community fixes from #524 up (55 PRs: `.fig` import fidelity, paste from other apps, the Actions palette, editor fixes, server limits) and a boolean-op crash guard; number variables in the text content picker (#629); frames and sections convert into each other (#719); bounded canvas pan overscan; Typography spacing icons support scrubbing (#373); font scans skip named pipes; system theme on first run; recent files as cards with thumbnails on the home screen; community fixes: lost images reported on loading (#207), SVG import budgets (#190), Leptos code (#223), full screen (#227), server snapshots readable again (#188), owner-only preferences (#200), ruzstd 0.9.1 (#182), layer cycle repair (#205), batch rollback, Direct3D 12 on Windows, plugin metering (#192); vector edit mode regions: hover hatch, selection and drag; SVG/PDF exports refuse over-depth documents (#208); bounded MCP/control framing, connections and queues (#201); plugin log limits (#191); live-session revert guard (#198); attached MCP no longer replays after a lost reply (#194); repeat command recursion fix; the Layout panel's constrain-proportions link scales the other side, #220; core editor leftovers: component playground, auto gap handles, variables inside styles, inner shadows and background blur on groups, command-made text readable on dark pages, a one-step frame/group convert, delays on mouse triggers and manual overlay offsets, wrapped-line alignment; `.fig` export: instance sizes, variables with modes, shared styles, variable-width strokes; starter templates, a Templates tab and Getting started tips on the home screen; your online files; everyday editing partials: number fields, outline options, Hide when publishing, cursors, panel widths, dark pages; sharing with a join code; text box sizes measured against documents re-saved by other software; live sessions per document; .fig export checked by opening written files in other software; a public figcraft-server: open hosting, owner tokens, per-address limits, idle expiry, moderation, install.sh; experimental .fig export; keyboard shortcut parity suite and bindings; Simplified Chinese draft catalog; Latin American Spanish overlay; prototyping tail: gamepad triggers, widgets in prototypes, mode lookups; plugin directory on figcraft-server; Japanese and Korean draft catalogs and CJK UI fonts; plugin widgets and the plugin panel tail; French, German and Brazilian Portuguese draft catalogs; cursor chat and spotlight in live sessions; layers and assets panels behaviour suite and fixes; vector multi-edit and edit tail; dev resources links; extended collections tail; branch version history and finer list merges; headline percentages recomputed from the area table: feature breadth ~84%, core ~94%, mainstream ~50%; text lists, hanging punctuation and decoration styles; comments and version history behaviour suite and fixes; canvas navigation, guides and grids behaviour suite and fixes; export and inspect behaviour suite and fixes; .fig import: editable vector networks and more layer kinds; shapes and vector behaviour suite and fixes; paint and effects behaviour suite and fixes; frames, groups, sections and masks behaviour suite and fixes; styles and variables behaviour suite and fixes; prototyping behaviour suite and fixes; components behaviour suite and fixes; embedded image colour profiles; layers panel keyboard: F2 rename, Shift+F10 context menu, keyboard box selection, 10k-layer QA; per-side stroke weight variables; text behaviour suite: CJK line breaking, metrics, vertical trim; selection and transform behaviour suite and fixes; `.fig` import, best effort; Windows QA pass with eight fixes; auto layout behaviour suite and fixes; Display P3: gamut warning and soft-proof (true P3 blocked upstream); several windows; localization layer with a draft Spanish catalog; hosting figcraft-server: wss in the desktop app, server releases, deployment guide; plugin panels and settings; canvas fixes: boolean hit testing on the result, group drags, frame outlines and slices; code connect; stretch and scatter brushes, pen pressure; text on a path and pattern fills; team libraries on the server and swap library; branches: create, update from main, review and merge; animated GIF fills and TIFF images; Open recent, outlines for the selection and mask outlines: menu breadth 100%; extended collections, variables import/export, gradient stop and variant bindings; feature breadth ~80%; ready ~49%) · **Target:** Figma Design (desktop app 126.10.7) FigCraft is a clean-room, open-source, pure-Rust reimplementation of the Figma design workflow, native on macOS, Windows, Linux and FreeBSD and in the browser, fully drivable by agents through @@ -103,7 +103,7 @@ native speakers' reviews of the six language drafts need people. | Spanish | es, es-419 | 100% (es-419: an overlay of 101 entries) | draft (needs native review) | | Hindi | hi | 0% | none | | Arabic | ar | 0% | none | -| French | fr | 95% | draft (needs native review) | +| French | fr | 100% | draft (needs native review) | | Portuguese (Brazil) | pt-BR | 95% | draft (needs native review) | | Indonesian | id | 99% | draft (needs native review) | | Japanese | ja | 99% | draft (needs native review) | @@ -316,6 +316,7 @@ Ranked; detail and milestones in [`docs/roadmap.md`](docs/roadmap.md). | Date | Change | Summary | |---|---|---| +| 2026-10-18 | minor | French at 100% of the strings (gap 5, `fr.toml`): what the strings added since the draft left in English in the French catalog — the templates and their kinds with descriptions, the home screen's recents table (sorting, "Show in folder", the dates in the French way), dropping files to open or import, the Getting started tips with sharing by code, the Playground's bound-variable chip, smart-selection spacing, outline mode's options, the converting and panel-width tail — is translated: 91 UI strings, 12 command labels and 2 menu wordings, appended to the sections in the catalog's conventions (NBSP before : ! and inside « », one/other plurals with 0 singular). Still a draft awaiting native review; the language table row and per-area docs re-measured; numbers unchanged | | 2026-10-17 | minor | Community batch #753 (10 PRs): Selection colors for mixed selections (#403); smart-selection spacing fields and canvas handles (#402); a Present tab with device and scale controls (#537); adding auto layout to an empty frame keeps its size (#369); `node.set` applies auto layout keys to frames only and warns about font styles a family lacks (#603); canvas images on whole device pixels (#359); Adwaita window controls on Wayland without server decorations (#592, not run on GNOME or KDE by the maintainers); the keyboard shortcuts panel closes on the home screen (#548); macOS paste modifiers in tests (#750); credits column tests (#347). `cargo xtask parity` re-run: 212 / 212 menu items (100%; the catalog gained View ▸ Full screen with #227 on 2026-10-14), 561 commands. Language table re-measured from the catalogs (2,272 entries): the drafts read 95–99% (strings added since 2026-10-12 show English), Indonesian has a draft (99%; it read none), and Russian, Swedish (its command labels from #599), Turkish and Czech are listed with their counts. Per-area parity rows for the day's landings in `docs/gaps.md`, `target-app-parity.md` and the area docs. Numbers unchanged | | 2026-10-17 | minor | Control channel while the window is minimised (M8, #720): a minimised or covered window answers every request that acts on the app's state (edits, `ui.inspect`, `ui.pointer`, `ui.key`, `ui.type`, `ui.set`, `app.quit`…) without drawing, and what needs a drawn frame (`ui.screenshot`, `ui.input`, `window.new`) is an error at once; before, those waited up to 60 s and held up every later request on the connection (an attached agent's `inspect_ui` or window screenshot stalled until the window came back). Measured on Windows 11, minimised: requests ~100 ms each (eframe wakes a minimised window at most ten times a second; ~2 ms on screen), a window screenshot fails in ~100 ms instead of 60 s, idle CPU 0. Numbers unchanged. | | 2026-10-17 | minor | Community fixes from #524 up (batches #727, #728, #733, #735, #736 and #729; 55 PRs) and a crash guard. `.fig` import: explicit instance identity, overrides by key, text style precedence, grid track sizes, slot content, connector labels, skip ink, paragraph options and hanging lists, list start numbers, vertical trim, per-point stroke joins, text on a path, image adjustments and embedded images; large files open within budgets from the file's own size; an import report after opening; imported bytes stay out of the command journal. Files and paste: save a copy as `.fig`; Cmd/Ctrl+V pastes images copied in other apps and layers copied from another design app (`edit.pasteDesignLayers`); paste over and paste properties; clipboard reads on Linux and the BSDs time out after 2 s. Editor: live font preview on hover; Shift+I and Resources open Assets; Shift-drag moves the selection; thin strokes take a nearby double-click; dropped points merge; Flatten keeps open paths; the Actions palette gets tabs, ranked search, a keyboard highlight and recents; the colour picker opens on a new fill or stroke; text strokes follow their alignment; selection highlights after line breaks; a draggable pages/layers divider; variant properties reorder by drag; submenus keep their hover with a safe triangle; menu actions that need a value ask for it; File ▸ Rename edits the name in place. Engine: bad paint indexes, non-finite geometry and pages in copy/cut are refused; a param naming a layer says so when it isn't one; a CLI script is one undo step and resolves `$step`. Server and collaboration: message limits follow `max_file_mb` (client capped at 1 GiB); a damaged generation field no longer drops flushed edits; the web build joins a session from a `#join=` link. Also Swedish command labels, Nix CI through the shared workflow, paint bounds once per render, and a guard that turns a panic inside the boolean-op library into bad input (the stroke draws unclipped). Numbers unchanged. | diff --git a/contributors/people.toml b/contributors/people.toml index ace49f7b..8b14373e 100644 --- a/contributors/people.toml +++ b/contributors/people.toml @@ -53,3 +53,6 @@ sync_github_name = false [people.krinry] display_name = "krinry" sync_github_name = true + +[people.pechnikov2026-star] +sync_github_name = true diff --git a/crates/ui-egui/locales/fr.toml b/crates/ui-egui/locales/fr.toml index 17a0d60b..78530540 100644 --- a/crates/ui-egui/locales/fr.toml +++ b/crates/ui-egui/locales/fr.toml @@ -1637,6 +1637,99 @@ status = "draft — needs native review" "⌘ scroll" = "⌘ défilement" "⌥ drag" = "⌥ glisser" +# Strings translated since the draft (2026-10-18), appended; a native review is still pending. +"A responsive product page: hero, features, figures, a quote and a footer" = "Une page produit responsive : héros, fonctionnalités, chiffres, une citation et un pied de page" +"A title, an agenda, a big figure, a chart and a closing slide" = "Un titre, un sommaire, un grand chiffre, un graphique et une diapositive de clôture" +"A to Z" = "A à Z" +"Adding to {name}" = "Ajout dans {name}" +"Alphabetical" = "Alphabétique" +"An analytics screen on a grid: figures, charts drawn from vectors and a table" = "Un écran d’analyse sur une grille : chiffres, graphiques tracés en vectoriel et un tableau" +"Apps" = "Applications" +"Apr" = "avr." +"Aug" = "août" +"Bound to {name}. Click to detach the variable." = "Lié à {name}. Cliquez pour détacher la variable." +"Colour and text styles, Light and Dark variables, buttons, inputs and cards" = "Styles de couleur et de texte, variables Clair et Sombre, boutons, champs et cartes" +"Convert to frame" = "Convertir en cadre" +"Convert to section" = "Convertir en section" +"Created" = "Création" +"Dashboard" = "Tableau de bord" +"Date created" = "Date de création" +"Dec" = "déc." +"Design system starter" = "Base de système de design" +"Draw a frame" = "Tracer un cadre" +"Drop a .figcraft, .fig, .json, .svg or image file." = "Déposez un fichier .figcraft, .fig, .json, .svg ou une image." +"Drop to import" = "Déposer pour importer" +"Drop to open" = "Déposer pour ouvrir" +"Edited {when}" = "Modifié {when}" +"Export frames and layers as PNG, JPG, SVG or PDF" = "Exporter les cadres et les calques en PNG, JPG, SVG ou PDF" +"Feb" = "févr." +"File not found" = "Fichier introuvable" +"Four screens of a trail app with components and a prototype flow" = "Quatre écrans d’une application de randonnée avec des composants et un flux de prototype" +"Getting started" = "Premiers pas" +"Greyscale components and two example screens to sketch a flow with" = "Composants en niveaux de gris et deux écrans d’exemple pour esquisser un flux" +"Hide these tips (Getting started in the Help menu shows them again)" = "Masquer ces astuces (Premiers pas dans le menu Aide les affiche de nouveau)" +"Hide when publishing" = "Masquer à la publication" +"Icon components on a 24 px grid with keylines and a size preview" = "Composants d’icônes sur une grille de 24 px avec repères et aperçu de la taille" +"Icon set starter" = "Base de jeu d’icônes" +"Jan" = "janv." +"Jul" = "juil." +"Jun" = "juin" +"Kits" = "Kits" +"Landing page" = "Page de destination" +"Last modified" = "Dernière modification" +"Link frames on the Prototype tab, then present the flow" = "Reliez les cadres dans l’onglet Prototype, puis présentez le flux" +"Make a component" = "Créer un composant" +"Mar" = "mars" +"May" = "mai" +"Mobile app" = "Application mobile" +"Newest first" = "Plus récent d’abord" +"No other pages" = "Aucune autre page" +"No templates match your search" = "Aucun modèle ne correspond à votre recherche" +"Nov" = "nov." +"Oct" = "oct." +"Oldest first" = "Plus ancien d’abord" +"One announcement in five common sizes: square, portrait, story, link and banner" = "Une annonce en cinq formats courants : carré, portrait, story, lien et bannière" +"Opening the file…" = "Ouverture du fichier…" +"Opening {n} files as new files" = { one = "Ouverture comme nouveau fichier", other = "Ouverture de {n} fichiers comme nouveaux fichiers" } +"Order" = "Ordre" +"Other" = "Autre" +"Pick the Frame tool, then drag on the canvas or choose a device size" = "Choisissez l’outil Cadre, puis faites glisser sur le canevas ou choisissez une taille d’appareil" +"Playground" = "Bac à sable" +"Plugin" = "Plugin" +"Plugins & widgets" = "Plugins et widgets" +"Presentation slides" = "Diapositives de présentation" +"Remove from recents" = "Retirer des récents" +"Search templates" = "Rechercher des modèles" +"See all templates" = "Voir tous les modèles" +"Select layers and they space themselves as their content changes" = "Sélectionnez des calques et leur espacement s’ajuste quand leur contenu change" +"Sep" = "sept." +"Share with a code" = "Partager avec un code" +"Show all templates" = "Afficher tous les modèles" +"Show in Explorer" = "Afficher dans l’Explorateur" +"Show in Finder" = "Afficher dans le Finder" +"Show in folder" = "Afficher dans le dossier" +"Social and slides" = "Réseaux sociaux et diapositives" +"Social post sizes" = "Formats de publications sociales" +"Sort by" = "Trier par" +"Sort by {column}" = "Trier par {column}" +"Start from a template" = "Commencer avec un modèle" +"Start sharing with the Share button, then pass on the code it gives" = "Commencez à partager avec le bouton Partager, puis communiquez le code qu’il donne" +"Templates" = "Modèles" +"The destination document is unavailable. Nothing was imported." = "Le document de destination est indisponible. Rien n’a été importé." +"The destination document was closed. Nothing was imported." = "Le document de destination a été fermé. Rien n’a été importé." +"The destination page was removed. Nothing was imported." = "La page de destination a été supprimée. Rien n’a été importé." +"Try another word, or look at every kind." = "Essayez un autre mot, ou regardez chaque type." +"Turn a layer into a component, reuse it, and change every copy at once" = "Transformez un calque en composant, réutilisez-le et modifiez toutes les copies d’un coup" +"Uses variables: each layer shows them in its own mode" = "Utilise des variables : chaque calque les affiche dans son propre mode" +"Websites" = "Sites web" +"What you try here changes this preview and the code below, not the file" = "Ce que vous essayez ici change cet aperçu et le code ci-dessous, pas le fichier" +"Widget" = "Widget" +"Wireframe kit" = "Kit de wireframes" +"Z to A" = "Z à A" +"just now" = "à l’instant" +"yesterday" = "hier" +"{month} {day}, {year}" = "{day} {month} {year}" + [commands] "align.bottom" = "Aligner en bas" "align.hcenter" = "Aligner les centres horizontalement" @@ -2193,6 +2286,20 @@ status = "draft — needs native review" "window.focus" = "Mettre la fenêtre au premier plan" "window.new" = "Nouvelle fenêtre" +# Commands translated since the draft (2026-10-18), appended. +"component.hideWhenPublishing" = "Masquer à la publication" +"component.playground" = "Bac à sable de composant" +"file.newFromTemplate" = "Nouveau à partir d’un modèle" +"help.gettingStarted" = "Premiers pas" +"object.convertToFrame" = "Convertir en cadre" +"object.convertToGroup" = "Convertir en groupe" +"object.convertToSection" = "Convertir en section" +"style.bind" = "Lier une variable dans un style" +"template.list" = "Lister les modèles" +"view.outlinesHiddenLayers" = "Inclure les calques masqués dans les contours" +"view.outlinesObjectBounds" = "Inclure les limites des objets dans les contours" +"view.panelWidths" = "Réinitialiser la largeur des panneaux" + [menu] "bool.exclude" = "Exclure" "bool.flatten" = "Aplatir" @@ -2223,3 +2330,7 @@ status = "draft — needs native review" "view.themeDark" = "Sombre" "view.themeLight" = "Clair" "view.themeSystem" = "Suivre le système" + +# Menu wordings translated since the draft (2026-10-18), appended. +"view.outlinesHiddenLayers" = "Inclure les calques masqués" +"view.outlinesObjectBounds" = "Inclure les limites des objets" diff --git a/docs/gaps.md b/docs/gaps.md index 9b1a770c..68ce570e 100644 --- a/docs/gaps.md +++ b/docs/gaps.md @@ -1,6 +1,6 @@ # Where FigCraft falls short of Figma -> **Last reviewed:** 2026-10-10 · **Last updated:** 2026-10-17 · **Change:** minor (the 2026-10-17 landings: `.fig` import fidelity, budgets for large files, the import report, a `.fig` copy from Save as and paste from another design app (gap 1); menus, the Actions palette, editor fixes, Selection colors and smart-selection spacing (gap 4); catalog counts re-measured (gap 5); bounded canvas pan overscan; reviewed Russian catalog and integer plurals; `.fig` export: instance sizes, variables with modes, shared styles, variable-width strokes; sharing with a join code; text box sizes measured against documents re-saved by other software; live sessions per document; .fig export checked by opening written files in other software; experimental .fig export; keyboard shortcut parity suite and bindings; Simplified Chinese draft catalog; Latin American Spanish overlay; prototyping tail: gamepad triggers, widgets in prototypes, mode lookups; plugin directory on figcraft-server; Japanese and Korean draft catalogs and CJK UI fonts; plugin widgets and the plugin panel tail; French, German and Brazilian Portuguese draft catalogs; cursor chat and spotlight in live sessions; layers and assets panels behaviour suite and fixes; vector multi-edit and edit tail; dev resources links; extended collections tail; branch version history and finer list merges; comments and version history behaviour suite and fixes; canvas navigation, guides and grids behaviour suite and fixes; `.fig` import: editable vector networks, more layer kinds, variable prototype actions; `.fig` import, best effort: gap 1 down to its tail; Windows QA pass: everyday workflows on Windows 11, eight fixes incl. unsaved work kept after a crash or a forced quit; Display P3: gamut warning and soft-proof (true P3 blocked upstream); several windows; localization layer with a draft Spanish catalog; hosting figcraft-server: wss in the desktop app, server releases, deployment guide; plugin panels and settings; canvas fixes: boolean hit testing on the result, group drags, frame outlines and slices; code connect; stretch and scatter brushes, pen pressure; text on a path and pattern fills; team libraries on the server and swap library; branches: create, update from main, review and merge; animated GIF fills and TIFF images; Open recent, outlines for the selection and mask outlines: menu breadth 100%; extended collections, variables import/export, gradient stop and variant bindings: gap 14 down to its tail) · **Target:** Figma Design (desktop app 126.10.7) +> **Last reviewed:** 2026-10-10 · **Last updated:** 2026-10-18 · **Change:** minor (French at 100% of the strings as an unreviewed draft; preceding: the 2026-10-17 landings: `.fig` import fidelity, budgets for large files, the import report, a `.fig` copy from Save as and paste from another design app (gap 1); menus, the Actions palette, editor fixes, Selection colors and smart-selection spacing (gap 4); catalog counts re-measured (gap 5); bounded canvas pan overscan; reviewed Russian catalog and integer plurals; `.fig` export: instance sizes, variables with modes, shared styles, variable-width strokes; sharing with a join code; text box sizes measured against documents re-saved by other software; live sessions per document; .fig export checked by opening written files in other software; experimental .fig export; keyboard shortcut parity suite and bindings; Simplified Chinese draft catalog; Latin American Spanish overlay; prototyping tail: gamepad triggers, widgets in prototypes, mode lookups; plugin directory on figcraft-server; Japanese and Korean draft catalogs and CJK UI fonts; plugin widgets and the plugin panel tail; French, German and Brazilian Portuguese draft catalogs; cursor chat and spotlight in live sessions; layers and assets panels behaviour suite and fixes; vector multi-edit and edit tail; dev resources links; extended collections tail; branch version history and finer list merges; comments and version history behaviour suite and fixes; canvas navigation, guides and grids behaviour suite and fixes; `.fig` import: editable vector networks, more layer kinds, variable prototype actions; `.fig` import, best effort: gap 1 down to its tail; Windows QA pass: everyday workflows on Windows 11, eight fixes incl. unsaved work kept after a crash or a forced quit; Display P3: gamut warning and soft-proof (true P3 blocked upstream); several windows; localization layer with a draft Spanish catalog; hosting figcraft-server: wss in the desktop app, server releases, deployment guide; plugin panels and settings; canvas fixes: boolean hit testing on the result, group drags, frame outlines and slices; code connect; stretch and scatter brushes, pen pressure; text on a path and pattern fills; team libraries on the server and swap library; branches: create, update from main, review and merge; animated GIF fills and TIFF images; Open recent, outlines for the selection and mask outlines: menu breadth 100%; extended collections, variables import/export, gradient stop and variant bindings: gap 14 down to its tail) · **Target:** Figma Design (desktop app 126.10.7) Every known shortfall against Figma, one entry each, ranked by how much it stops a Figma user from doing real work in FigCraft. Agents: pick work from the top unless the owner says otherwise. The @@ -18,7 +18,7 @@ No alpha blockers: the alpha gate in [`roadmap.md`](roadmap.md#alpha-gate) passe | 2 | Multiplayer and sharing are a preview, without accounts (**beta blocker**) | Feature | 42–84 | [collaboration-parity](collaboration-parity.md) | | 3 | Nothing checked against real Figma files | Fidelity | 15–30 | [target-app-parity](target-app-parity.md) | | 4 | Interaction fidelity not compared tool by tool | UI/UX | 40–60 | [ui-parity](ui-parity.md) | -| 5 | Localization: English, reviewed Russian, plus unreviewed Spanish (and Latin American Spanish), French, German, Brazilian Portuguese, Japanese, Korean, Simplified Chinese, Indonesian and Czech drafts; Turkish and Swedish catalogs | Localization | 29–51 | [localization-parity](localization-parity.md) | +| 5 | Localization: English, reviewed Russian, plus unreviewed Spanish (and Latin American Spanish), German, Brazilian Portuguese, Japanese, Korean, Simplified Chinese, Indonesian and Czech drafts; French complete as an unreviewed draft; Turkish and Swedish catalogs | Localization | 29–51 | [localization-parity](localization-parity.md) | | 6 | Plugins: widgets take clicks only, a self-hosted directory but no public catalogue; Figma's plugins don't run | Ecosystem | 8–26 | [target-app-parity](target-app-parity.md) | | 7 | CPU canvas where Figma uses the GPU | Hardware/performance | 30–60 | [hardware-parity](hardware-parity.md) | | 8 | Platform QA: Linux and the browser left (Windows pass done 2026-10-11) | Stability/platforms | 10–20 | [hardware-parity](hardware-parity.md) | @@ -187,9 +187,10 @@ No alpha blockers: the alpha gate in [`roadmap.md`](roadmap.md#alpha-gate) passe - **Evidence (measured from source):** the layer landed 2026-10-11: catalogs in `crates/ui-egui/locales/` (measured 2026-10-17: 1,680 UI keys plus 561 command labels and 31 menu wordings, 2,272 entries), Preferences ▸ Language, `pref.language`; `en.toml` is complete, - Spanish is held to completeness by the check, and the French, German, Brazilian Portuguese, - Japanese, Korean and Simplified Chinese machine drafts cover 95–99% (strings added since they - were drafted show English), with `es-419.toml` a Latin American overlay listing only what + Spanish is held to completeness by the check, and French (2026-10-18) covers every string as a + draft; the German, Brazilian Portuguese, Japanese, Korean and Simplified Chinese machine drafts + cover 95–99% (strings added since they were drafted show English), with `es-419.toml` a Latin + American overlay listing only what differs from Spanish. Russian (reviewed and approved by VanTan, one/few/many integer plurals) covers 98.8%; Indonesian and Czech drafts, a Turkish catalog whose header says a native speaker reviewed it, and a Swedish catalog (with its command labels since 2026-10-17) cover 98.7–99.6% ([localization-parity](localization-parity.md#languages)). diff --git a/docs/localization-parity.md b/docs/localization-parity.md index 50fcd4ec..8f6f748f 100644 --- a/docs/localization-parity.md +++ b/docs/localization-parity.md @@ -1,6 +1,6 @@ # Localization parity -> **Last reviewed:** 2026-10-10 · **Last updated:** 2026-10-17 · **Change:** minor (macOS finds its downloadable CJK system fonts (#406); string counts re-measured: 2,272 entries, the drafts at 95–99%; Swedish command labels and menu wordings; Russian, Swedish, Turkish, Czech and Indonesian listed; a duplicated paragraph removed; draft catalogs catch up: every draft translates every string again; Simplified Chinese draft catalog) · **Target:** Figma Design (desktop app 126.10.7) +> **Last reviewed:** 2026-10-10 · **Last updated:** 2026-10-18 · **Change:** minor (French at 100% of the strings, still an unreviewed draft; macOS finds its downloadable CJK system fonts (#406); string counts re-measured: 2,272 entries, the drafts at 95–99%; Swedish command labels and menu wordings; Russian, Swedish, Turkish, Czech and Indonesian listed; a duplicated paragraph removed; draft catalogs catch up: every draft translates every string again; Simplified Chinese draft catalog) · **Target:** Figma Design (desktop app 126.10.7) FigCraft's interface has a localization layer with an English catalog, a Russian catalog reviewed by a native speaker, and Spanish (with a Latin American overlay), French, German, Brazilian @@ -90,7 +90,7 @@ supported by both apps (CJK, Arabic and Devanagari shaping, IME); Figma has no v | Spanish | es, es-419 | 2,272 / 2,272 (100%, draft); es-419 overlays 101 Latin American wordings (draft) | yes | Latin | no | draft | 0–1 (after native review) | | Hindi | hi | 0 (0%) | no | Devanagari shaping works in documents; UI font fallback to check | no | none | 4–7 | | Arabic | ar | 0 (0%) | no | Bidi, shaping and RTL names work; the UI does not mirror | no | none | 9–15 | -| French | fr | 2,167 / 2,272 (95.4%, draft) | yes | Latin | no | draft | 1–2 (after native review) | +| French | fr | 2,272 / 2,272 (100%, draft) | yes | Latin | no | draft | 1–2 (after native review) | | Portuguese | pt-BR | 2,167 / 2,272 (95.4%, draft) | yes | Latin | no | draft | 1–2 (after native review) | | Indonesian | id | 2,244 / 2,272 (98.8%, draft) | yes | Latin | no | draft | 1–2 (after native review) | | Japanese | ja | 2,254 / 2,272 (99.2%, draft) | yes | CJK text and IME in documents; UI text in an installed Japanese face (web: the `FIGCRAFT_EMBED_CJK` build) | no | draft | 1–2 (after native review) | @@ -120,6 +120,7 @@ Hindi, Vietnamese and Arabic. Traditional Chinese is not planned (no catalog; it | Date | Change | Summary | |---|---|---| +| 2026-10-18 | minor | The French draft catches up to 100%: `fr.toml` translates the 91 UI strings, 12 command labels (`file.newFromTemplate`, `template.list`, `help.gettingStarted`, `component.playground`, `component.hideWhenPublishing`, `object.convertTo{Frame,Group,Section}`, `style.bind`, `view.outlinesHiddenLayers`, `view.outlinesObjectBounds`, `view.panelWidths`) and 2 menu wordings (the two outlines options) that the strings added since it was drafted left in English: starter templates and the Templates tab, the home screen's recents table with its sorting and "Show in folder", dropping files to open or import, the Getting started tips, sharing with a code, a rendered component's Playground bound-variable chip, smart-selection spacing and the outline options, and the dates on the recent cards (months abbreviated the French way, "A à Z"/"Z à A"); appended to each section in the catalog's conventions (NBSP before `:` `!` and inside « », one/other plurals with 0 counting as singular). Still a draft, awaiting native review; the language table row is re-measured | | 2026-10-17 | minor | Chinese showed as boxes on macOS (#406): the font scan also walks the system's downloaded font assets (`/System/Library/AssetsV2` and the older `/System/Library/Assets`, only their `com_apple_MobileAsset_Font*` folders), where current versions keep PingFang SC, and Hiragino Sans GB and Heiti SC join the Chinese UI faces and the text fallbacks. Tested with a folder laid out the same way; not yet run on a Mac | | 2026-10-17 | minor | String counts re-measured from the catalogs: 1,680 UI keys, 561 command labels and 31 menu wordings (2,272 entries); Spanish complete, the other drafts at 95.3–99.2% (strings added since 2026-10-12 show English), es-419 101 entries. Indonesian has a draft (98.8%; it was listed as none); Russian (98.8%, reviewed), Swedish (99.6%, command labels and menu wordings from #599), Turkish (98.7%) and Czech (98.8%) listed with counts; the language picker's list updated; a paragraph repeated by a merge removed. Grade and hours unchanged (Indonesian's draft is offset by the drafts' new gaps) | | 2026-10-14 | minor | Windows UI language (#291): the interface language comes from Windows' first preferred language alone; that list is also the input-language list (a German keyboard on a Polish system adds Deutsch), and taking the first entry with a catalog turned the interface German there. A first preferred language without a catalog reads English; macOS AppleLanguages and gettext's `LANGUAGE` still take the first language with a catalog | From d828e6379ef0b99d6a26670bd3f9c72ad0ab9681 Mon Sep 17 00:00:00 2001 From: bflatastic Date: Sun, 18 Oct 2026 11:36:06 +0700 Subject: [PATCH 2/3] #783: drop the progress-doc edits (maintainer adds them) --- ROADMAP.md | 5 ++--- docs/gaps.md | 11 +++++------ docs/localization-parity.md | 5 ++--- 3 files changed, 9 insertions(+), 12 deletions(-) diff --git a/ROADMAP.md b/ROADMAP.md index ecde012e..8a587286 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -2,7 +2,7 @@ **Stage: alpha** · next: beta, ~26 points and ~162–292 h away (one Opus 5.5 agent; ~33–67 h wall-clock with 5 agents) -> **Last reviewed:** 2026-10-10 · **Last updated:** 2026-10-18 · **Change:** minor (French at 100% of the strings, an unreviewed draft; language table re-measured; preceding: 2026-10-17 community batch #753: Selection colors, smart-selection spacing, a Present tab; language table re-measured from the catalogs; community fixes from #524 up (55 PRs: `.fig` import fidelity, paste from other apps, the Actions palette, editor fixes, server limits) and a boolean-op crash guard; number variables in the text content picker (#629); frames and sections convert into each other (#719); bounded canvas pan overscan; Typography spacing icons support scrubbing (#373); font scans skip named pipes; system theme on first run; recent files as cards with thumbnails on the home screen; community fixes: lost images reported on loading (#207), SVG import budgets (#190), Leptos code (#223), full screen (#227), server snapshots readable again (#188), owner-only preferences (#200), ruzstd 0.9.1 (#182), layer cycle repair (#205), batch rollback, Direct3D 12 on Windows, plugin metering (#192); vector edit mode regions: hover hatch, selection and drag; SVG/PDF exports refuse over-depth documents (#208); bounded MCP/control framing, connections and queues (#201); plugin log limits (#191); live-session revert guard (#198); attached MCP no longer replays after a lost reply (#194); repeat command recursion fix; the Layout panel's constrain-proportions link scales the other side, #220; core editor leftovers: component playground, auto gap handles, variables inside styles, inner shadows and background blur on groups, command-made text readable on dark pages, a one-step frame/group convert, delays on mouse triggers and manual overlay offsets, wrapped-line alignment; `.fig` export: instance sizes, variables with modes, shared styles, variable-width strokes; starter templates, a Templates tab and Getting started tips on the home screen; your online files; everyday editing partials: number fields, outline options, Hide when publishing, cursors, panel widths, dark pages; sharing with a join code; text box sizes measured against documents re-saved by other software; live sessions per document; .fig export checked by opening written files in other software; a public figcraft-server: open hosting, owner tokens, per-address limits, idle expiry, moderation, install.sh; experimental .fig export; keyboard shortcut parity suite and bindings; Simplified Chinese draft catalog; Latin American Spanish overlay; prototyping tail: gamepad triggers, widgets in prototypes, mode lookups; plugin directory on figcraft-server; Japanese and Korean draft catalogs and CJK UI fonts; plugin widgets and the plugin panel tail; French, German and Brazilian Portuguese draft catalogs; cursor chat and spotlight in live sessions; layers and assets panels behaviour suite and fixes; vector multi-edit and edit tail; dev resources links; extended collections tail; branch version history and finer list merges; headline percentages recomputed from the area table: feature breadth ~84%, core ~94%, mainstream ~50%; text lists, hanging punctuation and decoration styles; comments and version history behaviour suite and fixes; canvas navigation, guides and grids behaviour suite and fixes; export and inspect behaviour suite and fixes; .fig import: editable vector networks and more layer kinds; shapes and vector behaviour suite and fixes; paint and effects behaviour suite and fixes; frames, groups, sections and masks behaviour suite and fixes; styles and variables behaviour suite and fixes; prototyping behaviour suite and fixes; components behaviour suite and fixes; embedded image colour profiles; layers panel keyboard: F2 rename, Shift+F10 context menu, keyboard box selection, 10k-layer QA; per-side stroke weight variables; text behaviour suite: CJK line breaking, metrics, vertical trim; selection and transform behaviour suite and fixes; `.fig` import, best effort; Windows QA pass with eight fixes; auto layout behaviour suite and fixes; Display P3: gamut warning and soft-proof (true P3 blocked upstream); several windows; localization layer with a draft Spanish catalog; hosting figcraft-server: wss in the desktop app, server releases, deployment guide; plugin panels and settings; canvas fixes: boolean hit testing on the result, group drags, frame outlines and slices; code connect; stretch and scatter brushes, pen pressure; text on a path and pattern fills; team libraries on the server and swap library; branches: create, update from main, review and merge; animated GIF fills and TIFF images; Open recent, outlines for the selection and mask outlines: menu breadth 100%; extended collections, variables import/export, gradient stop and variant bindings; feature breadth ~80%; ready ~49%) · **Target:** Figma Design (desktop app 126.10.7) +> **Last reviewed:** 2026-10-10 · **Last updated:** 2026-10-17 · **Change:** minor (community batch #753: Selection colors, smart-selection spacing, a Present tab; language table re-measured from the catalogs; community fixes from #524 up (55 PRs: `.fig` import fidelity, paste from other apps, the Actions palette, editor fixes, server limits) and a boolean-op crash guard; number variables in the text content picker (#629); frames and sections convert into each other (#719); bounded canvas pan overscan; community fixes from #478 up and a control-channel fix (#589); bounded canvas pan overscan; Typography spacing icons support scrubbing (#373); font scans skip named pipes; system theme on first run; recent files as cards with thumbnails on the home screen; community fixes: lost images reported on loading (#207), SVG import budgets (#190), Leptos code (#223), full screen (#227), server snapshots readable again (#188), owner-only preferences (#200), ruzstd 0.9.1 (#182), layer cycle repair (#205), batch rollback, Direct3D 12 on Windows, plugin metering (#192); vector edit mode regions: hover hatch, selection and drag; SVG/PDF exports refuse over-depth documents (#208); bounded MCP/control framing, connections and queues (#201); plugin log limits (#191); live-session revert guard (#198); attached MCP no longer replays after a lost reply (#194); repeat command recursion fix; the Layout panel's constrain-proportions link scales the other side, #220; core editor leftovers: component playground, auto gap handles, variables inside styles, inner shadows and background blur on groups, command-made text readable on dark pages, a one-step frame/group convert, delays on mouse triggers and manual overlay offsets, wrapped-line alignment; `.fig` export: instance sizes, variables with modes, shared styles, variable-width strokes; starter templates, a Templates tab and Getting started tips on the home screen; your online files; everyday editing partials: number fields, outline options, Hide when publishing, cursors, panel widths, dark pages; sharing with a join code; text box sizes measured against documents re-saved by other software; live sessions per document; .fig export checked by opening written files in other software; a public figcraft-server: open hosting, owner tokens, per-address limits, idle expiry, moderation, install.sh; experimental .fig export; keyboard shortcut parity suite and bindings; Simplified Chinese draft catalog; Latin American Spanish overlay; prototyping tail: gamepad triggers, widgets in prototypes, mode lookups; plugin directory on figcraft-server; Japanese and Korean draft catalogs and CJK UI fonts; plugin widgets and the plugin panel tail; French, German and Brazilian Portuguese draft catalogs; cursor chat and spotlight in live sessions; layers and assets panels behaviour suite and fixes; vector multi-edit and edit tail; dev resources links; extended collections tail; branch version history and finer list merges; headline percentages recomputed from the area table: feature breadth ~84%, core ~94%, mainstream ~50%; text lists, hanging punctuation and decoration styles; comments and version history behaviour suite and fixes; canvas navigation, guides and grids behaviour suite and fixes; export and inspect behaviour suite and fixes; .fig import: editable vector networks and more layer kinds; shapes and vector behaviour suite and fixes; paint and effects behaviour suite and fixes; frames, groups, sections and masks behaviour suite and fixes; styles and variables behaviour suite and fixes; prototyping behaviour suite and fixes; components behaviour suite and fixes; embedded image colour profiles; layers panel keyboard: F2 rename, Shift+F10 context menu, keyboard box selection, 10k-layer QA; per-side stroke weight variables; text behaviour suite: CJK line breaking, metrics, vertical trim; selection and transform behaviour suite and fixes; `.fig` import, best effort; Windows QA pass with eight fixes; auto layout behaviour suite and fixes; Display P3: gamut warning and soft-proof (true P3 blocked upstream); several windows; localization layer with a draft Spanish catalog; hosting figcraft-server: wss in the desktop app, server releases, deployment guide; plugin panels and settings; canvas fixes: boolean hit testing on the result, group drags, frame outlines and slices; code connect; stretch and scatter brushes, pen pressure; text on a path and pattern fills; team libraries on the server and swap library; branches: create, update from main, review and merge; animated GIF fills and TIFF images; Open recent, outlines for the selection and mask outlines: menu breadth 100%; extended collections, variables import/export, gradient stop and variant bindings; feature breadth ~80%; ready ~49%) · **Target:** Figma Design (desktop app 126.10.7) FigCraft is a clean-room, open-source, pure-Rust reimplementation of the Figma design workflow, native on macOS, Windows, Linux and FreeBSD and in the browser, fully drivable by agents through @@ -103,7 +103,7 @@ native speakers' reviews of the six language drafts need people. | Spanish | es, es-419 | 100% (es-419: an overlay of 101 entries) | draft (needs native review) | | Hindi | hi | 0% | none | | Arabic | ar | 0% | none | -| French | fr | 100% | draft (needs native review) | +| French | fr | 95% | draft (needs native review) | | Portuguese (Brazil) | pt-BR | 95% | draft (needs native review) | | Indonesian | id | 99% | draft (needs native review) | | Japanese | ja | 99% | draft (needs native review) | @@ -316,7 +316,6 @@ Ranked; detail and milestones in [`docs/roadmap.md`](docs/roadmap.md). | Date | Change | Summary | |---|---|---| -| 2026-10-18 | minor | French at 100% of the strings (gap 5, `fr.toml`): what the strings added since the draft left in English in the French catalog — the templates and their kinds with descriptions, the home screen's recents table (sorting, "Show in folder", the dates in the French way), dropping files to open or import, the Getting started tips with sharing by code, the Playground's bound-variable chip, smart-selection spacing, outline mode's options, the converting and panel-width tail — is translated: 91 UI strings, 12 command labels and 2 menu wordings, appended to the sections in the catalog's conventions (NBSP before : ! and inside « », one/other plurals with 0 singular). Still a draft awaiting native review; the language table row and per-area docs re-measured; numbers unchanged | | 2026-10-17 | minor | Community batch #753 (10 PRs): Selection colors for mixed selections (#403); smart-selection spacing fields and canvas handles (#402); a Present tab with device and scale controls (#537); adding auto layout to an empty frame keeps its size (#369); `node.set` applies auto layout keys to frames only and warns about font styles a family lacks (#603); canvas images on whole device pixels (#359); Adwaita window controls on Wayland without server decorations (#592, not run on GNOME or KDE by the maintainers); the keyboard shortcuts panel closes on the home screen (#548); macOS paste modifiers in tests (#750); credits column tests (#347). `cargo xtask parity` re-run: 212 / 212 menu items (100%; the catalog gained View ▸ Full screen with #227 on 2026-10-14), 561 commands. Language table re-measured from the catalogs (2,272 entries): the drafts read 95–99% (strings added since 2026-10-12 show English), Indonesian has a draft (99%; it read none), and Russian, Swedish (its command labels from #599), Turkish and Czech are listed with their counts. Per-area parity rows for the day's landings in `docs/gaps.md`, `target-app-parity.md` and the area docs. Numbers unchanged | | 2026-10-17 | minor | Control channel while the window is minimised (M8, #720): a minimised or covered window answers every request that acts on the app's state (edits, `ui.inspect`, `ui.pointer`, `ui.key`, `ui.type`, `ui.set`, `app.quit`…) without drawing, and what needs a drawn frame (`ui.screenshot`, `ui.input`, `window.new`) is an error at once; before, those waited up to 60 s and held up every later request on the connection (an attached agent's `inspect_ui` or window screenshot stalled until the window came back). Measured on Windows 11, minimised: requests ~100 ms each (eframe wakes a minimised window at most ten times a second; ~2 ms on screen), a window screenshot fails in ~100 ms instead of 60 s, idle CPU 0. Numbers unchanged. | | 2026-10-17 | minor | Community fixes from #524 up (batches #727, #728, #733, #735, #736 and #729; 55 PRs) and a crash guard. `.fig` import: explicit instance identity, overrides by key, text style precedence, grid track sizes, slot content, connector labels, skip ink, paragraph options and hanging lists, list start numbers, vertical trim, per-point stroke joins, text on a path, image adjustments and embedded images; large files open within budgets from the file's own size; an import report after opening; imported bytes stay out of the command journal. Files and paste: save a copy as `.fig`; Cmd/Ctrl+V pastes images copied in other apps and layers copied from another design app (`edit.pasteDesignLayers`); paste over and paste properties; clipboard reads on Linux and the BSDs time out after 2 s. Editor: live font preview on hover; Shift+I and Resources open Assets; Shift-drag moves the selection; thin strokes take a nearby double-click; dropped points merge; Flatten keeps open paths; the Actions palette gets tabs, ranked search, a keyboard highlight and recents; the colour picker opens on a new fill or stroke; text strokes follow their alignment; selection highlights after line breaks; a draggable pages/layers divider; variant properties reorder by drag; submenus keep their hover with a safe triangle; menu actions that need a value ask for it; File ▸ Rename edits the name in place. Engine: bad paint indexes, non-finite geometry and pages in copy/cut are refused; a param naming a layer says so when it isn't one; a CLI script is one undo step and resolves `$step`. Server and collaboration: message limits follow `max_file_mb` (client capped at 1 GiB); a damaged generation field no longer drops flushed edits; the web build joins a session from a `#join=` link. Also Swedish command labels, Nix CI through the shared workflow, paint bounds once per render, and a guard that turns a panic inside the boolean-op library into bad input (the stroke draws unclipped). Numbers unchanged. | diff --git a/docs/gaps.md b/docs/gaps.md index 68ce570e..9b1a770c 100644 --- a/docs/gaps.md +++ b/docs/gaps.md @@ -1,6 +1,6 @@ # Where FigCraft falls short of Figma -> **Last reviewed:** 2026-10-10 · **Last updated:** 2026-10-18 · **Change:** minor (French at 100% of the strings as an unreviewed draft; preceding: the 2026-10-17 landings: `.fig` import fidelity, budgets for large files, the import report, a `.fig` copy from Save as and paste from another design app (gap 1); menus, the Actions palette, editor fixes, Selection colors and smart-selection spacing (gap 4); catalog counts re-measured (gap 5); bounded canvas pan overscan; reviewed Russian catalog and integer plurals; `.fig` export: instance sizes, variables with modes, shared styles, variable-width strokes; sharing with a join code; text box sizes measured against documents re-saved by other software; live sessions per document; .fig export checked by opening written files in other software; experimental .fig export; keyboard shortcut parity suite and bindings; Simplified Chinese draft catalog; Latin American Spanish overlay; prototyping tail: gamepad triggers, widgets in prototypes, mode lookups; plugin directory on figcraft-server; Japanese and Korean draft catalogs and CJK UI fonts; plugin widgets and the plugin panel tail; French, German and Brazilian Portuguese draft catalogs; cursor chat and spotlight in live sessions; layers and assets panels behaviour suite and fixes; vector multi-edit and edit tail; dev resources links; extended collections tail; branch version history and finer list merges; comments and version history behaviour suite and fixes; canvas navigation, guides and grids behaviour suite and fixes; `.fig` import: editable vector networks, more layer kinds, variable prototype actions; `.fig` import, best effort: gap 1 down to its tail; Windows QA pass: everyday workflows on Windows 11, eight fixes incl. unsaved work kept after a crash or a forced quit; Display P3: gamut warning and soft-proof (true P3 blocked upstream); several windows; localization layer with a draft Spanish catalog; hosting figcraft-server: wss in the desktop app, server releases, deployment guide; plugin panels and settings; canvas fixes: boolean hit testing on the result, group drags, frame outlines and slices; code connect; stretch and scatter brushes, pen pressure; text on a path and pattern fills; team libraries on the server and swap library; branches: create, update from main, review and merge; animated GIF fills and TIFF images; Open recent, outlines for the selection and mask outlines: menu breadth 100%; extended collections, variables import/export, gradient stop and variant bindings: gap 14 down to its tail) · **Target:** Figma Design (desktop app 126.10.7) +> **Last reviewed:** 2026-10-10 · **Last updated:** 2026-10-17 · **Change:** minor (the 2026-10-17 landings: `.fig` import fidelity, budgets for large files, the import report, a `.fig` copy from Save as and paste from another design app (gap 1); menus, the Actions palette, editor fixes, Selection colors and smart-selection spacing (gap 4); catalog counts re-measured (gap 5); bounded canvas pan overscan; reviewed Russian catalog and integer plurals; `.fig` export: instance sizes, variables with modes, shared styles, variable-width strokes; sharing with a join code; text box sizes measured against documents re-saved by other software; live sessions per document; .fig export checked by opening written files in other software; experimental .fig export; keyboard shortcut parity suite and bindings; Simplified Chinese draft catalog; Latin American Spanish overlay; prototyping tail: gamepad triggers, widgets in prototypes, mode lookups; plugin directory on figcraft-server; Japanese and Korean draft catalogs and CJK UI fonts; plugin widgets and the plugin panel tail; French, German and Brazilian Portuguese draft catalogs; cursor chat and spotlight in live sessions; layers and assets panels behaviour suite and fixes; vector multi-edit and edit tail; dev resources links; extended collections tail; branch version history and finer list merges; comments and version history behaviour suite and fixes; canvas navigation, guides and grids behaviour suite and fixes; `.fig` import: editable vector networks, more layer kinds, variable prototype actions; `.fig` import, best effort: gap 1 down to its tail; Windows QA pass: everyday workflows on Windows 11, eight fixes incl. unsaved work kept after a crash or a forced quit; Display P3: gamut warning and soft-proof (true P3 blocked upstream); several windows; localization layer with a draft Spanish catalog; hosting figcraft-server: wss in the desktop app, server releases, deployment guide; plugin panels and settings; canvas fixes: boolean hit testing on the result, group drags, frame outlines and slices; code connect; stretch and scatter brushes, pen pressure; text on a path and pattern fills; team libraries on the server and swap library; branches: create, update from main, review and merge; animated GIF fills and TIFF images; Open recent, outlines for the selection and mask outlines: menu breadth 100%; extended collections, variables import/export, gradient stop and variant bindings: gap 14 down to its tail) · **Target:** Figma Design (desktop app 126.10.7) Every known shortfall against Figma, one entry each, ranked by how much it stops a Figma user from doing real work in FigCraft. Agents: pick work from the top unless the owner says otherwise. The @@ -18,7 +18,7 @@ No alpha blockers: the alpha gate in [`roadmap.md`](roadmap.md#alpha-gate) passe | 2 | Multiplayer and sharing are a preview, without accounts (**beta blocker**) | Feature | 42–84 | [collaboration-parity](collaboration-parity.md) | | 3 | Nothing checked against real Figma files | Fidelity | 15–30 | [target-app-parity](target-app-parity.md) | | 4 | Interaction fidelity not compared tool by tool | UI/UX | 40–60 | [ui-parity](ui-parity.md) | -| 5 | Localization: English, reviewed Russian, plus unreviewed Spanish (and Latin American Spanish), German, Brazilian Portuguese, Japanese, Korean, Simplified Chinese, Indonesian and Czech drafts; French complete as an unreviewed draft; Turkish and Swedish catalogs | Localization | 29–51 | [localization-parity](localization-parity.md) | +| 5 | Localization: English, reviewed Russian, plus unreviewed Spanish (and Latin American Spanish), French, German, Brazilian Portuguese, Japanese, Korean, Simplified Chinese, Indonesian and Czech drafts; Turkish and Swedish catalogs | Localization | 29–51 | [localization-parity](localization-parity.md) | | 6 | Plugins: widgets take clicks only, a self-hosted directory but no public catalogue; Figma's plugins don't run | Ecosystem | 8–26 | [target-app-parity](target-app-parity.md) | | 7 | CPU canvas where Figma uses the GPU | Hardware/performance | 30–60 | [hardware-parity](hardware-parity.md) | | 8 | Platform QA: Linux and the browser left (Windows pass done 2026-10-11) | Stability/platforms | 10–20 | [hardware-parity](hardware-parity.md) | @@ -187,10 +187,9 @@ No alpha blockers: the alpha gate in [`roadmap.md`](roadmap.md#alpha-gate) passe - **Evidence (measured from source):** the layer landed 2026-10-11: catalogs in `crates/ui-egui/locales/` (measured 2026-10-17: 1,680 UI keys plus 561 command labels and 31 menu wordings, 2,272 entries), Preferences ▸ Language, `pref.language`; `en.toml` is complete, - Spanish is held to completeness by the check, and French (2026-10-18) covers every string as a - draft; the German, Brazilian Portuguese, Japanese, Korean and Simplified Chinese machine drafts - cover 95–99% (strings added since they were drafted show English), with `es-419.toml` a Latin - American overlay listing only what + Spanish is held to completeness by the check, and the French, German, Brazilian Portuguese, + Japanese, Korean and Simplified Chinese machine drafts cover 95–99% (strings added since they + were drafted show English), with `es-419.toml` a Latin American overlay listing only what differs from Spanish. Russian (reviewed and approved by VanTan, one/few/many integer plurals) covers 98.8%; Indonesian and Czech drafts, a Turkish catalog whose header says a native speaker reviewed it, and a Swedish catalog (with its command labels since 2026-10-17) cover 98.7–99.6% ([localization-parity](localization-parity.md#languages)). diff --git a/docs/localization-parity.md b/docs/localization-parity.md index 8f6f748f..50fcd4ec 100644 --- a/docs/localization-parity.md +++ b/docs/localization-parity.md @@ -1,6 +1,6 @@ # Localization parity -> **Last reviewed:** 2026-10-10 · **Last updated:** 2026-10-18 · **Change:** minor (French at 100% of the strings, still an unreviewed draft; macOS finds its downloadable CJK system fonts (#406); string counts re-measured: 2,272 entries, the drafts at 95–99%; Swedish command labels and menu wordings; Russian, Swedish, Turkish, Czech and Indonesian listed; a duplicated paragraph removed; draft catalogs catch up: every draft translates every string again; Simplified Chinese draft catalog) · **Target:** Figma Design (desktop app 126.10.7) +> **Last reviewed:** 2026-10-10 · **Last updated:** 2026-10-17 · **Change:** minor (macOS finds its downloadable CJK system fonts (#406); string counts re-measured: 2,272 entries, the drafts at 95–99%; Swedish command labels and menu wordings; Russian, Swedish, Turkish, Czech and Indonesian listed; a duplicated paragraph removed; draft catalogs catch up: every draft translates every string again; Simplified Chinese draft catalog) · **Target:** Figma Design (desktop app 126.10.7) FigCraft's interface has a localization layer with an English catalog, a Russian catalog reviewed by a native speaker, and Spanish (with a Latin American overlay), French, German, Brazilian @@ -90,7 +90,7 @@ supported by both apps (CJK, Arabic and Devanagari shaping, IME); Figma has no v | Spanish | es, es-419 | 2,272 / 2,272 (100%, draft); es-419 overlays 101 Latin American wordings (draft) | yes | Latin | no | draft | 0–1 (after native review) | | Hindi | hi | 0 (0%) | no | Devanagari shaping works in documents; UI font fallback to check | no | none | 4–7 | | Arabic | ar | 0 (0%) | no | Bidi, shaping and RTL names work; the UI does not mirror | no | none | 9–15 | -| French | fr | 2,272 / 2,272 (100%, draft) | yes | Latin | no | draft | 1–2 (after native review) | +| French | fr | 2,167 / 2,272 (95.4%, draft) | yes | Latin | no | draft | 1–2 (after native review) | | Portuguese | pt-BR | 2,167 / 2,272 (95.4%, draft) | yes | Latin | no | draft | 1–2 (after native review) | | Indonesian | id | 2,244 / 2,272 (98.8%, draft) | yes | Latin | no | draft | 1–2 (after native review) | | Japanese | ja | 2,254 / 2,272 (99.2%, draft) | yes | CJK text and IME in documents; UI text in an installed Japanese face (web: the `FIGCRAFT_EMBED_CJK` build) | no | draft | 1–2 (after native review) | @@ -120,7 +120,6 @@ Hindi, Vietnamese and Arabic. Traditional Chinese is not planned (no catalog; it | Date | Change | Summary | |---|---|---| -| 2026-10-18 | minor | The French draft catches up to 100%: `fr.toml` translates the 91 UI strings, 12 command labels (`file.newFromTemplate`, `template.list`, `help.gettingStarted`, `component.playground`, `component.hideWhenPublishing`, `object.convertTo{Frame,Group,Section}`, `style.bind`, `view.outlinesHiddenLayers`, `view.outlinesObjectBounds`, `view.panelWidths`) and 2 menu wordings (the two outlines options) that the strings added since it was drafted left in English: starter templates and the Templates tab, the home screen's recents table with its sorting and "Show in folder", dropping files to open or import, the Getting started tips, sharing with a code, a rendered component's Playground bound-variable chip, smart-selection spacing and the outline options, and the dates on the recent cards (months abbreviated the French way, "A à Z"/"Z à A"); appended to each section in the catalog's conventions (NBSP before `:` `!` and inside « », one/other plurals with 0 counting as singular). Still a draft, awaiting native review; the language table row is re-measured | | 2026-10-17 | minor | Chinese showed as boxes on macOS (#406): the font scan also walks the system's downloaded font assets (`/System/Library/AssetsV2` and the older `/System/Library/Assets`, only their `com_apple_MobileAsset_Font*` folders), where current versions keep PingFang SC, and Hiragino Sans GB and Heiti SC join the Chinese UI faces and the text fallbacks. Tested with a folder laid out the same way; not yet run on a Mac | | 2026-10-17 | minor | String counts re-measured from the catalogs: 1,680 UI keys, 561 command labels and 31 menu wordings (2,272 entries); Spanish complete, the other drafts at 95.3–99.2% (strings added since 2026-10-12 show English), es-419 101 entries. Indonesian has a draft (98.8%; it was listed as none); Russian (98.8%, reviewed), Swedish (99.6%, command labels and menu wordings from #599), Turkish (98.7%) and Czech (98.8%) listed with counts; the language picker's list updated; a paragraph repeated by a merge removed. Grade and hours unchanged (Indonesian's draft is offset by the drafts' new gaps) | | 2026-10-14 | minor | Windows UI language (#291): the interface language comes from Windows' first preferred language alone; that list is also the input-language list (a German keyboard on a Polish system adds Deutsch), and taking the first entry with a catalog turned the interface German there. A first preferred language without a catalog reads English; macOS AppleLanguages and gettext's `LANGUAGE` still take the first language with a catalog | From d654a14720c5775685c218e1ff2bdc686be542d7 Mon Sep 17 00:00:00 2001 From: bflatastic Date: Sun, 18 Oct 2026 11:37:21 +0700 Subject: [PATCH 3/3] #783: put the new French rows in their sorted places --- crates/ui-egui/locales/fr.toml | 216 ++++++++++++++++----------------- 1 file changed, 105 insertions(+), 111 deletions(-) diff --git a/crates/ui-egui/locales/fr.toml b/crates/ui-egui/locales/fr.toml index 78530540..6aeaf50c 100644 --- a/crates/ui-egui/locales/fr.toml +++ b/crates/ui-egui/locales/fr.toml @@ -19,7 +19,10 @@ status = "draft — needs native review" "A collection of this file with these modes and variables: override their values per mode and add variables of its own" = "Une collection de ce fichier avec ces modes et ces variables : remplacez leurs valeurs par mode et ajoutez vos propres variables" "A .figcraft file with this name already exists. Choose its full name to confirm replacement." = "Un fichier .figcraft portant ce nom existe déjà. Choisissez son nom complet pour confirmer le remplacement." "A layer on its own aligns to its frame: select more layers, or one in a frame" = "Un calque seul s’aligne sur son cadre : sélectionnez d’autres calques, ou un calque dans un cadre" +"A responsive product page: hero, features, figures, a quote and a footer" = "Une page produit responsive : héros, fonctionnalités, chiffres, une citation et un pied de page" "A spring plays until it settles: its mass, stiffness and damping set how long" = "Un ressort joue jusqu’à ce qu’il se stabilise : sa masse, sa rigidité et son amortissement en fixent la durée" +"A title, an agenda, a big figure, a chart and a closing slide" = "Un titre, un sommaire, un grand chiffre, un graphique et une diapositive de clôture" +"A to Z" = "A à Z" "About" = "À propos" "About FigCraft" = "À propos de FigCraft" "About this server" = "À propos de ce serveur" @@ -65,6 +68,7 @@ status = "draft — needs native review" "Add variant with a new value" = "Ajouter une variante avec une nouvelle valeur" "Added" = "Ajouté" "Added the library \"{name}\"" = "Bibliothèque « {name} » ajoutée" +"Adding to {name}" = "Ajout dans {name}" "Adjust" = "Réglages" "Adjustment presets" = "Préréglages" "Advanced" = "Avancé" @@ -90,7 +94,9 @@ status = "draft — needs native review" "All supported properties" = "Toutes les propriétés prises en charge" "All variables" = "Toutes les variables" "Alpha" = "Alpha" +"Alphabetical" = "Alphabétique" "Alt+drag" = "Alt+glisser" +"An analytics screen on a grid: figures, charts drawn from vectors and a table" = "Un écran d’analyse sur une grille : chiffres, graphiques tracés en vectoriel et un tableau" "An invite link that opens FigCraft and joins" = "Un lien d’invitation qui ouvre FigCraft et rejoint la session" "Anchor" = "Ancre" "Android" = "Android" @@ -109,6 +115,8 @@ status = "draft — needs native review" "Apply variable" = "Appliquer une variable" "Apply variable to text" = "Appliquer une variable au texte" "Apply variable to visibility" = "Appliquer une variable à la visibilité" +"Apps" = "Applications" +"Apr" = "avr." "Arc" = "Arc" "Arc ratio" = "Rapport de l’arc" "Arc start" = "Début de l’arc" @@ -120,6 +128,7 @@ status = "draft — needs native review" "As typed" = "Tel que saisi" "Asking the server…" = "Interrogation du serveur…" "Assets" = "Ressources" +"Aug" = "août" "Auto" = "Auto" "Auto (space around)" = "Auto (espace autour)" "Auto (space between)" = "Auto (espace entre)" @@ -164,6 +173,7 @@ status = "draft — needs native review" "Bottom" = "Bas" "Bottom left radius" = "Rayon inférieur gauche" "Bottom right radius" = "Rayon inférieur droit" +"Bound to {name}. Click to detach the variable." = "Lié à {name}. Cliquez pour détacher la variable." "Branch" = "Branche" "Branch archived" = "Branche archivée" "Branch merged" = "Branche fusionnée" @@ -250,6 +260,7 @@ status = "draft — needs native review" "Color values in this file are in this color space." = "Les valeurs de couleur de ce fichier sont dans cet espace colorimétrique." "Color variables" = "Variables de couleur" "Colour" = "Couleur" +"Colour and text styles, Light and Dark variables, buttons, inputs and cards" = "Styles de couleur et de texte, variables Clair et Sombre, boutons, champs et cartes" "Column" = "Colonne" "Column gap" = "Espacement des colonnes" "Column sizes" = "Tailles des colonnes" @@ -286,6 +297,8 @@ status = "draft — needs native review" "Contributors" = "Contributeurs" "Contributors: {people} · Commits: {commits}" = "Contributeurs : {people} · Commits : {commits}" "Controller" = "Manette" +"Convert to frame" = "Convertir en cadre" +"Convert to section" = "Convertir en section" "Cool" = "Froid" "Copied as CSS" = "Copié en CSS" "Copied as PNG" = "Copié en PNG" @@ -319,6 +332,7 @@ status = "draft — needs native review" "Create property…" = "Créer une propriété…" "Create style" = "Créer un style" "Create style from the selected text" = "Créer un style à partir du texte sélectionné" +"Created" = "Création" "Crop" = "Recadrer" "Crop marks" = "Traits de coupe" "Ctrl+arrows" = "Ctrl+flèches" @@ -333,6 +347,9 @@ status = "draft — needs native review" "Dark" = "Sombre" "Darken" = "Assombrir" "Dash" = "Tirets" +"Dashboard" = "Tableau de bord" +"Date created" = "Date de création" +"Dec" = "déc." "Decoration style" = "Style de décoration" "Decoration" = "Décoration" "Deep select" = "Sélection en profondeur" @@ -359,6 +376,7 @@ status = "draft — needs native review" "Description" = "Description" "Description (optional)" = "Description (facultative)" "Design" = "Design" +"Design system starter" = "Base de système de design" "Desktop" = "Ordinateur" "Destination" = "Destination" "Detach alias" = "Détacher l’alias" @@ -394,8 +412,12 @@ status = "draft — needs native review" "Drafts" = "Brouillons" "Drag the stroke to add a width point" = "Faites glisser le contour pour ajouter un point de largeur" "Draw" = "Dessin" +"Draw a frame" = "Tracer un cadre" "Drawing tools" = "Outils de dessin" +"Drop a .figcraft, .fig, .json, .svg or image file." = "Déposez un fichier .figcraft, .fig, .json, .svg ou une image." "Drop shadow" = "Ombre portée" +"Drop to import" = "Déposer pour importer" +"Drop to open" = "Déposer pour ouvrir" "Dual-licensed MIT OR Apache-2.0. Made by the ArtCraft team and community." = "Double licence MIT OR Apache-2.0. Réalisé par l’équipe et la communauté ArtCraft." "Duo" = "Duo" "Duplicate" = "Dupliquer" @@ -412,6 +434,7 @@ status = "draft — needs native review" "Edit style" = "Modifier le style" "Edit variable" = "Modifier la variable" "Edit with the builder" = "Modifier avec l’assistant" +"Edited {when}" = "Modifié {when}" "Effect settings" = "Réglages de l’effet" "Effect styles" = "Styles d’effet" "Effects" = "Effets" @@ -442,6 +465,7 @@ status = "draft — needs native review" "Expand" = "Développer" "Export" = "Exporter" "Export all" = "Tout exporter" +"Export frames and layers as PNG, JPG, SVG or PDF" = "Exporter les cadres et les calques en PNG, JPG, SVG ou PDF" "Export page as PNG" = "Exporter la page en PNG" "Export settings" = "Réglages d’exportation" "Export variables" = "Exporter les variables" @@ -461,11 +485,13 @@ status = "draft — needs native review" "F" = "F" "Fade" = "Fondu" "False" = "Faux" +"Feb" = "févr." "Fetching from the server…" = "Récupération depuis le serveur…" "FigCraft couldn't open its window: {error}" = "FigCraft n’a pas pu ouvrir sa fenêtre : {error}" "FigCraft doesn't support every feature of these files yet. The notes list what was left out or changed in the imported copy; the original file is unchanged." = "FigCraft ne prend pas encore en charge toutes les fonctionnalités de ces fichiers. Les notes indiquent ce qui a été omis ou modifié dans la copie importée ; le fichier d’origine reste inchangé." "File" = "Fichier" "File name" = "Nom du fichier" +"File not found" = "Fichier introuvable" "File published" = "Fichier publié" "Files aren't end-to-end encrypted: the server's operator can read them." = "Les fichiers ne sont pas chiffrés de bout en bout : l’opérateur du serveur peut les lire." "Files nobody opens for {n} days are deleted." = { one = "Les fichiers que personne n’ouvre pendant {n} jour sont supprimés.", other = "Les fichiers que personne n’ouvre pendant {n} jours sont supprimés." } @@ -512,6 +538,7 @@ status = "draft — needs native review" "Font size" = "Taille de police" "Font style" = "Style de police" "Forget on this computer" = "Oublier sur cet ordinateur" +"Four screens of a trail app with components and a prototype flow" = "Quatre écrans d’une application de randonnée avec des composants et un flux de prototype" "Fractions" = "Fractions" "Frame" = "Cadre" "Frame selection" = "Encadrer la sélection" @@ -525,6 +552,7 @@ status = "draft — needs native review" "Gap between columns" = "Espacement entre les colonnes" "Gap between items" = "Espacement entre les éléments" "Gap between rows" = "Espacement entre les lignes" +"Getting started" = "Premiers pas" "Give the address of a server open to the public, or a server's address with its key (`figcraft-server key` prints it)." = "Indiquez l’adresse d’un serveur ouvert au public, ou l’adresse d’un serveur avec sa clé (`figcraft-server key` l’affiche)." "Glass" = "Verre" "Go to main component" = "Aller au composant principal" @@ -533,6 +561,7 @@ status = "draft — needs native review" "Gradient" = "Dégradé" "Gray" = "Gris" "Green" = "Vert" +"Greyscale components and two example screens to sketch a flow with" = "Composants en niveaux de gris et deux écrans d’exemple pour esquisser un flux" "Grid" = "Grille" "Grid ({size})" = "Grille ({size})" "Grid styles" = "Styles de grille" @@ -554,6 +583,8 @@ status = "draft — needs native review" "Hide contents" = "Masquer le contenu" "Hide from publishing" = "Exclure de la publication" "Hide section contents" = "Masquer le contenu de la section" +"Hide these tips (Getting started in the Help menu shows them again)" = "Masquer ces astuces (Premiers pas dans le menu Aide les affiche de nouveau)" +"Hide when publishing" = "Masquer à la publication" "Highlight layers on hover" = "Mettre en évidence les calques au survol" "Highlights" = "Hautes lumières" "Hold Alt" = "Maintenir Alt" @@ -575,6 +606,8 @@ status = "draft — needs native review" "Hue" = "Teinte" "Hug" = "Ajuster" "Hug contents" = "Ajuster au contenu" +"Icon components on a 24 px grid with keylines and a size preview" = "Composants d’icônes sur une grille de 24 px avec repères et aperçu de la taille" +"Icon set starter" = "Base de jeu d’icônes" "If it keeps happening, please report it at {link} with this message." = "Si cela se reproduit, signalez-le sur {link} avec ce message." "If" = "Si" "If {condition}" = "Si {condition}" @@ -624,6 +657,7 @@ status = "draft — needs native review" "Invite link" = "Lien d’invitation" "Invite link copied" = "Lien d’invitation copié" "It asks permission to:" = "Il demande l’autorisation de :" +"Jan" = "janv." "Join" = "Rejoindre" "Join code copied" = "Code d’accès copié" "Join code or invite link" = "Code d’accès ou lien d’invitation" @@ -634,6 +668,8 @@ status = "draft — needs native review" "Joined {file}" = "Connecté à {file}" "Joining…" = "Connexion…" "Join|stroke" = "Jointure" +"Jul" = "juil." +"Jun" = "juin" "Just now" = "À l’instant" "Justify" = "Justifier" "Keep appearance" = "Conserver l’apparence" @@ -643,11 +679,14 @@ status = "draft — needs native review" "Key/Gamepad" = "Touche/manette" "Key/Gamepad {key}" = "Touche/manette {key}" "Keyboard shortcuts" = "Raccourcis clavier" +"Kits" = "Kits" +"Landing page" = "Page de destination" "Language" = "Langue" "Lasso" = "Lasso" "Last" = "Dernier" "Last change: {note}" = "Dernière modification : {note}" "Last commit" = "Dernier commit" +"Last modified" = "Dernière modification" "Last on top" = "Dernier au-dessus" "Layer blur" = "Flou de calque" "Layer name" = "Nom du calque" @@ -686,6 +725,7 @@ status = "draft — needs native review" "Link" = "Lien" "Link copied" = "Lien copié" "Link docs, code or tickets for developers." = "Liez de la documentation, du code ou des tickets pour les développeurs." +"Link frames on the Prototype tab, then present the flow" = "Reliez les cadres dans l’onglet Prototype, puis présentez le flux" "Link this component to its code component: instances then show your real snippet with their values." = "Reliez ce composant à son composant de code : les instances affichent alors votre véritable extrait avec leurs valeurs." "List spacing" = "Espacement de liste" "List style" = "Style de liste" @@ -703,7 +743,9 @@ status = "draft — needs native review" "Main" = "Principal" "Main component deleted" = "Composant principal supprimé" "Main menu" = "Menu principal" +"Make a component" = "Créer un composant" "Make slot" = "Créer un emplacement" +"Mar" = "mars" "Margin" = "Marge" "Mark all as read" = "Tout marquer comme lu" "Mark as resolved" = "Marquer comme résolu" @@ -716,6 +758,7 @@ status = "draft — needs native review" "Max W" = "L max." "Max lines" = "Lignes max." "Maximize" = "Agrandir" +"May" = "mai" "Measure to the selection" = "Mesurer jusqu’à la sélection" "Merge into main" = "Fusionner dans le principal" "Merge regions" = "Fusionner les régions" @@ -737,6 +780,7 @@ status = "draft — needs native review" "Mixed" = "Mixte" "Mixed fonts" = "Polices mixtes" "Mixed interactions: click + to replace them" = "Interactions mixtes : cliquez sur + pour les remplacer" +"Mobile app" = "Application mobile" "Mode" = "Mode" "Model" = "Modèle" "Models" = "Modèles" @@ -766,6 +810,7 @@ status = "draft — needs native review" "Navigate to" = "Naviguer vers" "Nested instance" = "Instance imbriquée" "New design file" = "Nouveau fichier de design" +"Newest first" = "Plus récent d’abord" "Next frame" = "Cadre suivant" "Next or previous control in the focused region" = "Contrôle suivant ou précédent dans la région active" "Next ready for dev" = "Prêt pour le dev suivant" @@ -799,6 +844,7 @@ status = "draft — needs native review" "No model credits were built into this copy." = "Cette copie ne contient aucun crédit de modèle." "No number variables fit here." = "Aucune variable numérique ne convient ici." "No number variables yet. Create them in Local variables." = "Aucune variable numérique pour l’instant. Créez-en dans Variables locales." +"No other pages" = "Aucune autre page" "No paints" = "Aucune peinture" "No plugins on {server}." = "Aucun plugin sur {server}." "No plugins yet. Import a development plugin from its figcraft-plugin.json." = "Aucun plugin pour l’instant. Importez un plugin en développement depuis son figcraft-plugin.json." @@ -812,6 +858,7 @@ status = "draft — needs native review" "No string variables yet. Create them in Local variables." = "Aucune variable de chaîne pour l’instant. Créez-en dans Variables locales." "No styles yet." = "Aucun style pour l’instant." "No styles yet. Click + to create one from the selection." = "Aucun style pour l’instant. Cliquez sur + pour en créer un à partir de la sélection." +"No templates match your search" = "Aucun modèle ne correspond à votre recherche" "No text styles yet. Click + to create one from the selected text." = "Aucun style de texte pour l’instant. Cliquez sur + pour en créer un à partir du texte sélectionné." "No variables fit here." = "Aucune variable ne convient ici." "No variables yet. Create them in Local variables." = "Aucune variable pour l’instant. Créez-en dans Variables locales." @@ -831,6 +878,7 @@ status = "draft — needs native review" "Nothing here yet. Set a frame's status to list it." = "Rien pour l’instant. Attribuez un statut à un cadre pour le lister ici." "Nothing online yet. Use Share on a file to put it online and it is listed here." = "Rien en ligne pour l’instant. Utilisez Partager sur un fichier pour le mettre en ligne et il apparaîtra ici." "Nothing to export" = "Rien à exporter" +"Nov" = "nov." "Now" = "Maintenant" "Nudge (Shift: big nudge)" = "Décaler (Maj : grand décalage)" "Nudge amount" = "Pas de décalage" @@ -839,13 +887,16 @@ status = "draft — needs native review" "Number ↓" = "Numéro ↓" "Numbered list" = "Liste numérotée" "Object" = "Objet" +"Oct" = "oct." "Off" = "Non" "Offered first when filling the slot (any content is allowed)" = "Proposés en premier pour remplir l’emplacement (tout contenu est autorisé)" "Offered first when swapping the instance (any component is allowed)" = "Proposés en premier pour permuter l’instance (tout composant est autorisé)" "Offset" = "Décalage" +"Oldest first" = "Plus ancien d’abord" "On click" = "Au clic" "On drag" = "Au glissement" "On this page" = "Sur cette page" +"One announcement in five common sizes: square, portrait, story, link and banner" = "Une annonce en cinq formats courants : carré, portrait, story, lien et bannière" "Online" = "En ligne" "Online files" = "Fichiers en ligne" "Online sharing is off: files are shared on the local network only." = "Le partage en ligne est désactivé : les fichiers ne sont partagés que sur le réseau local." @@ -870,9 +921,13 @@ status = "draft — needs native review" "Open variables ({count})" = "Ouvrir les variables ({count})" "Opened as a new document" = "Ouvert comme nouveau document" "Opened “{name}” in a new tab" = "« {name} » ouvert dans un nouvel onglet" +"Opening the file…" = "Ouverture du fichier…" +"Opening {n} files as new files" = { one = "Ouverture comme nouveau fichier", other = "Ouverture de {n} fichiers comme nouveaux fichiers" } "Open|comments" = "Ouverts" "Options" = "Options" "Orange" = "Orange" +"Order" = "Ordre" +"Other" = "Autre" "Other apps may not open every .fig file exported here." = "D’autres applications risquent de ne pas ouvrir tous les fichiers .fig exportés ici." "Others lose access and keep their copy; the file stays on the server for you" = "Les autres perdent l’accès et conservent leur copie ; le fichier reste sur le serveur pour vous" "Others type this under Share ▸ Join with a code" = "Les autres le saisissent dans Partager ▸ Rejoindre avec un code" @@ -893,6 +948,7 @@ status = "draft — needs native review" "Page" = "Page" "Pages" = "Pages" "Pages added to the document" = "Pages ajoutées au document" +"Pick the Frame tool, then drag on the canvas or choose a device size" = "Choisissez l’outil Cadre, puis faites glisser sur le canevas ou choisissez une taille d’appareil" "Placed on the current page" = "Placé sur la page actuelle" "Pages: {pages}" = "Pages : {pages}" "Paint bucket" = "Pot de peinture" @@ -930,7 +986,10 @@ status = "draft — needs native review" "Place a shape or frame (its tool chosen)" = "Placer une forme ou un cadre (outil choisi)" "Place automatically" = "Placer automatiquement" "Place image" = "Placer une image" +"Playground" = "Bac à sable" +"Plugin" = "Plugin" "Plugins" = "Plugins" +"Plugins & widgets" = "Plugins et widgets" "Plugins run in FigCraft's sandbox, without files, network or clock. Install only plugins you trust." = "Les plugins s’exécutent dans le bac à sable de FigCraft, sans fichiers, réseau ni horloge. N’installez que des plugins de confiance." "Plus darker" = "Plus foncé" "Plus lighter" = "Plus clair" @@ -947,6 +1006,7 @@ status = "draft — needs native review" "Present or preview" = "Présenter ou prévisualiser" "Present this flow" = "Présenter ce flux" "Presentation" = "Présentation" +"Presentation slides" = "Diapositives de présentation" "Presenting: comments" = "Présentation : commentaires" "Presenting: cycle the size options" = "Présentation : parcourir les options de taille" "Presenting: full screen" = "Présentation : plein écran" @@ -1003,6 +1063,7 @@ status = "draft — needs native review" "Remove auto layout" = "Retirer la mise en page auto" "Remove dev resource" = "Retirer la ressource de développement" "Remove export setting" = "Retirer le réglage d’exportation" +"Remove from recents" = "Retirer des récents" "Remove from server" = "Retirer du serveur" "Remove from server…" = "Retirer du serveur…" "Remove guide" = "Retirer le repère" @@ -1115,15 +1176,18 @@ status = "draft — needs native review" "Search layers" = "Rechercher des calques" "Search plugins" = "Rechercher des plugins" "Search shortcuts" = "Rechercher des raccourcis" +"Search templates" = "Rechercher des modèles" "Section" = "Section" "Section color" = "Couleur de la section" "Sections" = "Sections" +"See all templates" = "Voir tous les modèles" "Select a frame and add a starting point to present it as a flow." = "Sélectionnez un cadre et ajoutez un point de départ pour le présenter comme un flux." "Select a frame to preview it" = "Sélectionnez un cadre pour le prévisualiser" "Select a layer to see its properties and code" = "Sélectionnez un calque pour voir ses propriétés et son code" "Select all" = "Tout sélectionner" "Select all with same" = "Sélectionner tout ce qui a le même" "Select layer" = "Sélectionner le calque" +"Select layers and they space themselves as their content changes" = "Sélectionnez des calques et leur espacement s’ajuste quand leur contenu change" "Select layers to apply the style to" = "Sélectionnez les calques auxquels appliquer le style" "Select layers with this color" = "Sélectionner les calques de cette couleur" "Select overlapping shapes" = "Sélectionnez des formes qui se chevauchent" @@ -1136,6 +1200,7 @@ status = "draft — needs native review" "Send backward" = "Reculer" "Send report" = "Envoyer le signalement" "Send to back" = "Mettre à l’arrière-plan" +"Sep" = "sept." "Server address" = "Adresse du serveur" "Server address (ws://host:47900/)" = "Adresse du serveur (ws://host:47900/)" "Server for online sharing" = "Serveur pour le partage en ligne" @@ -1150,6 +1215,7 @@ status = "draft — needs native review" "Shape tools" = "Outils de forme" "Share" = "Partager" "Share this file" = "Partager ce fichier" +"Share with a code" = "Partager avec un code" "Share: live session, export" = "Partager : session en direct, exportation" "Shared" = "Partagé" "Shared: copy its code from the file's menu" = "Partagé : copiez son code depuis le menu du fichier" @@ -1159,6 +1225,7 @@ status = "draft — needs native review" "Sharing online · {people}" = "Partage en ligne · {people}" "Sharing stopped: the file stays on the server, open only to you" = "Partage arrêté : le fichier reste sur le serveur, accessible à vous seul" "Show" = "Afficher" +"Show all templates" = "Afficher tous les modèles" "Show as grid" = "Afficher en grille" "Show as list" = "Afficher en liste" "Show autosaves" = "Afficher les sauvegardes auto" @@ -1167,6 +1234,9 @@ status = "draft — needs native review" "Show device frame" = "Afficher le cadre de l’appareil" "Show dimensions on objects" = "Afficher les dimensions sur les objets" "Show hotspot hints" = "Afficher les zones interactives" +"Show in Explorer" = "Afficher dans l’Explorateur" +"Show in Finder" = "Afficher dans le Finder" +"Show in folder" = "Afficher dans le dossier" "Show only this on the canvas" = "Afficher uniquement ceci sur le canevas" "Show open" = "Afficher les ouverts" "Show section contents" = "Afficher le contenu de la section" @@ -1191,13 +1261,17 @@ status = "draft — needs native review" "Small caps" = "Petites capitales" "Smart animate" = "Animation intelligente" "Snap to pixel grid" = "Aimanter à la grille de pixels" +"Social and slides" = "Réseaux sociaux et diapositives" "Social media" = "Réseaux sociaux" +"Social post sizes" = "Formats de publications sociales" "Soft light" = "Lumière douce" "Solid" = "Continu" "Some variants have the same property values: give each one a unique combination" = "Certaines variantes ont les mêmes valeurs de propriété : donnez à chacune une combinaison unique" "Sort" = "Trier" +"Sort by" = "Trier par" "Sort by date" = "Trier par date" "Sort by page" = "Trier par page" +"Sort by {column}" = "Trier par {column}" "Space around" = "Espace autour" "Space between" = "Espace entre" "Space drag" = "Espace et glisser" @@ -1216,9 +1290,11 @@ status = "draft — needs native review" "Start" = "Début" "Start ascending from / stop descending at" = "Compter vers le haut depuis / vers le bas jusqu’à" "Start from a blank canvas" = "Commencer avec un canevas vide" +"Start from a template" = "Commencer avec un modèle" "Start on path" = "Début sur le tracé" "Start point" = "Point de départ" "Start sharing" = "Commencer le partage" +"Start sharing with the Share button, then pass on the code it gives" = "Commencez à partager avec le bouton Partager, puis communiquez le code qu’il donne" "Starting to share…" = "Démarrage du partage…" "Status" = "Statut" "Sticky" = "Collant" @@ -1267,6 +1343,7 @@ status = "draft — needs native review" "Tell the server's operator what is wrong with it" = "Indiquez à l’opérateur du serveur ce qui ne va pas" "Temperature" = "Température" "Template" = "Modèle" +"Templates" = "Modèles" "Terms" = "Conditions" "Text" = "Texte" "Text align" = "Alignement du texte" @@ -1276,6 +1353,9 @@ status = "draft — needs native review" "Texts" = "Textes" "Texture" = "Texture" "The canvas previews colors in sRGB; exported PNG, JPG and WebP files are tagged Display P3." = "Le canevas affiche les couleurs en sRGB ; les fichiers PNG, JPG et WebP exportés sont balisés Display P3." +"The destination document is unavailable. Nothing was imported." = "Le document de destination est indisponible. Rien n’a été importé." +"The destination document was closed. Nothing was imported." = "Le document de destination a été fermé. Rien n’a été importé." +"The destination page was removed. Nothing was imported." = "La page de destination a été supprimée. Rien n’a été importé." "The file is deleted from the server: nobody can open or join it from there again, and this can't be undone. Copies that are open stay with whoever has them." = "Le fichier est supprimé du serveur : plus personne ne pourra l’ouvrir ni le rejoindre depuis celui-ci, et c’est irréversible. Les copies ouvertes restent à ceux qui les ont." "The file now holds another library" = "Le fichier contient désormais une autre bibliothèque" "The file now holds another library (\"{name}\")" = "Le fichier contient désormais une autre bibliothèque (« {name} »)" @@ -1324,6 +1404,8 @@ status = "draft — needs native review" "Truncate with an ellipsis" = "Tronquer avec des points de suspension" "Try again" = "Réessayer" "Try another search or filter." = "Essayez une autre recherche ou un autre filtre." +"Try another word, or look at every kind." = "Essayez un autre mot, ou regardez chaque type." +"Turn a layer into a component, reuse it, and change every copy at once" = "Transformez un calque en composant, réutilisez-le et modifiez toutes les copies d’un coup" "Two digits" = "Deux chiffres" "Type" = "Type" "Type settings" = "Réglages typographiques" @@ -1362,6 +1444,7 @@ status = "draft — needs native review" "Use the layer's fill" = "Utiliser le remplissage du calque" "Used in {files} · {instances}" = "Utilisé dans {files} · {instances}" "Username" = "Nom d’utilisateur" +"Uses variables: each layer shows them in its own mode" = "Utilise des variables : chaque calque les affiche dans son propre mode" "Value" = "Valeur" "Variable" = "Variable" "Variable collections" = "Collections de variables" @@ -1400,21 +1483,25 @@ status = "draft — needs native review" "Web" = "Web" "WebSocket URL" = "URL WebSocket" "WebSocket URL copied" = "URL WebSocket copiée" +"Websites" = "Sites web" "Wedge" = "Coin" "Weight" = "Graisse" "What changed since it was marked ready for dev" = "Ce qui a changé depuis le marquage prêt pour le dev" "What is wrong with this file? The server's operator gets your report." = "Qu’est-ce qui ne va pas avec ce fichier ? L’opérateur du serveur reçoit votre signalement." "What it's for" = "À quoi il sert" "What this changed from isn't known: it changed before FigCraft kept a copy of ready-for-dev frames. Resolve the change (or mark it ready again) to compare from now on." = "L’état d’origine de cette modification est inconnu : elle date d’avant que FigCraft ne conserve une copie des cadres prêts pour le dev. Résolvez la modification (ou marquez-la à nouveau comme prête) pour comparer à partir de maintenant." +"What you try here changes this preview and the code below, not the file" = "Ce que vous essayez ici change cet aperçu et le code ci-dessous, pas le fichier" "While hovering" = "Pendant le survol" "While pressing" = "Pendant l’appui" "White" = "Blanc" "Who runs it, its terms and how long it keeps files" = "Qui le gère, ses conditions et combien de temps il conserve les fichiers" "Why it changed" = "Pourquoi cela a changé" +"Widget" = "Widget" "Widgets" = "Widgets" "Width" = "Largeur" "Width point" = "Point de largeur" "Width profile" = "Profil de largeur" +"Wireframe kit" = "Kit de wireframes" "With the layers' export settings" = "Avec les réglages d’exportation des calques" "Wrap" = "Renvoi à la ligne" "Wrap in new section" = "Envelopper dans une nouvelle section" @@ -1429,6 +1516,7 @@ status = "draft — needs native review" "Your name in comments" = "Votre nom dans les commentaires" "Your system asks for reduced motion: animations stay off." = "Votre système demande de réduire les animations : elles restent désactivées." "Z" = "Z" +"Z to A" = "Z à A" "Zoom" = "Zoom" "Zoom around the pointer" = "Zoomer autour du pointeur" "Zoom device to fill window" = "Zoomer l’appareil pour remplir la fenêtre" @@ -1492,6 +1580,7 @@ status = "draft — needs native review" "invalid internal .fig text path data was ignored" = "les données internes non valides de texte sur tracé du .fig ont été ignorées" "invalid or oversized vector networks import as outlines" = "les réseaux vectoriels non valides ou trop grands sont importés comme tracés" "invalid or oversized vector path data was skipped" = "les données de tracé vectoriel non valides ou trop grandes ont été ignorées" +"just now" = "à l’instant" "key triggers without a supported key were skipped" = "les déclencheurs de touche sans touche prise en charge ont été ignorés" "key up triggers import as key presses" = "les déclencheurs au relâchement d’une touche sont importés comme des appuis sur la touche" "layers without a position were placed at their parent's origin" = "les calques sans position ont été placés à l’origine de leur parent" @@ -1559,9 +1648,11 @@ status = "draft — needs native review" "very long vector paths were skipped" = "les tracés vectoriels très longs ont été ignorés" "video actions are not supported and were skipped" = "les actions vidéo ne sont pas prises en charge et ont été ignorées" "video triggers are not supported and were skipped" = "les déclencheurs vidéo ne sont pas pris en charge et ont été ignorés" +"yesterday" = "hier" "{instances} in {files}" = "{instances} dans {files}" "{language}: draft translation, waiting for a native speaker's review." = "{language} : traduction provisoire, en attente de relecture par un locuteur natif." "{length} bleed" = "fond perdu de {length}" +"{month} {day}, {year}" = "{day} {month} {year}" "{name}\nClick to apply to the selection" = "{name}\nCliquez pour l’appliquer à la sélection" "{name}\nDrag onto the canvas, or click to place in the middle of the view.\nHold Alt (Option) while dropping onto an instance to swap it." = "{name}\nFaites glisser sur le canevas, ou cliquez pour le placer au centre de la vue.\nMaintenez Alt (Option) en le déposant sur une instance pour la permuter." "{name} (from {library})" = "{name} (de {library})" @@ -1637,99 +1728,6 @@ status = "draft — needs native review" "⌘ scroll" = "⌘ défilement" "⌥ drag" = "⌥ glisser" -# Strings translated since the draft (2026-10-18), appended; a native review is still pending. -"A responsive product page: hero, features, figures, a quote and a footer" = "Une page produit responsive : héros, fonctionnalités, chiffres, une citation et un pied de page" -"A title, an agenda, a big figure, a chart and a closing slide" = "Un titre, un sommaire, un grand chiffre, un graphique et une diapositive de clôture" -"A to Z" = "A à Z" -"Adding to {name}" = "Ajout dans {name}" -"Alphabetical" = "Alphabétique" -"An analytics screen on a grid: figures, charts drawn from vectors and a table" = "Un écran d’analyse sur une grille : chiffres, graphiques tracés en vectoriel et un tableau" -"Apps" = "Applications" -"Apr" = "avr." -"Aug" = "août" -"Bound to {name}. Click to detach the variable." = "Lié à {name}. Cliquez pour détacher la variable." -"Colour and text styles, Light and Dark variables, buttons, inputs and cards" = "Styles de couleur et de texte, variables Clair et Sombre, boutons, champs et cartes" -"Convert to frame" = "Convertir en cadre" -"Convert to section" = "Convertir en section" -"Created" = "Création" -"Dashboard" = "Tableau de bord" -"Date created" = "Date de création" -"Dec" = "déc." -"Design system starter" = "Base de système de design" -"Draw a frame" = "Tracer un cadre" -"Drop a .figcraft, .fig, .json, .svg or image file." = "Déposez un fichier .figcraft, .fig, .json, .svg ou une image." -"Drop to import" = "Déposer pour importer" -"Drop to open" = "Déposer pour ouvrir" -"Edited {when}" = "Modifié {when}" -"Export frames and layers as PNG, JPG, SVG or PDF" = "Exporter les cadres et les calques en PNG, JPG, SVG ou PDF" -"Feb" = "févr." -"File not found" = "Fichier introuvable" -"Four screens of a trail app with components and a prototype flow" = "Quatre écrans d’une application de randonnée avec des composants et un flux de prototype" -"Getting started" = "Premiers pas" -"Greyscale components and two example screens to sketch a flow with" = "Composants en niveaux de gris et deux écrans d’exemple pour esquisser un flux" -"Hide these tips (Getting started in the Help menu shows them again)" = "Masquer ces astuces (Premiers pas dans le menu Aide les affiche de nouveau)" -"Hide when publishing" = "Masquer à la publication" -"Icon components on a 24 px grid with keylines and a size preview" = "Composants d’icônes sur une grille de 24 px avec repères et aperçu de la taille" -"Icon set starter" = "Base de jeu d’icônes" -"Jan" = "janv." -"Jul" = "juil." -"Jun" = "juin" -"Kits" = "Kits" -"Landing page" = "Page de destination" -"Last modified" = "Dernière modification" -"Link frames on the Prototype tab, then present the flow" = "Reliez les cadres dans l’onglet Prototype, puis présentez le flux" -"Make a component" = "Créer un composant" -"Mar" = "mars" -"May" = "mai" -"Mobile app" = "Application mobile" -"Newest first" = "Plus récent d’abord" -"No other pages" = "Aucune autre page" -"No templates match your search" = "Aucun modèle ne correspond à votre recherche" -"Nov" = "nov." -"Oct" = "oct." -"Oldest first" = "Plus ancien d’abord" -"One announcement in five common sizes: square, portrait, story, link and banner" = "Une annonce en cinq formats courants : carré, portrait, story, lien et bannière" -"Opening the file…" = "Ouverture du fichier…" -"Opening {n} files as new files" = { one = "Ouverture comme nouveau fichier", other = "Ouverture de {n} fichiers comme nouveaux fichiers" } -"Order" = "Ordre" -"Other" = "Autre" -"Pick the Frame tool, then drag on the canvas or choose a device size" = "Choisissez l’outil Cadre, puis faites glisser sur le canevas ou choisissez une taille d’appareil" -"Playground" = "Bac à sable" -"Plugin" = "Plugin" -"Plugins & widgets" = "Plugins et widgets" -"Presentation slides" = "Diapositives de présentation" -"Remove from recents" = "Retirer des récents" -"Search templates" = "Rechercher des modèles" -"See all templates" = "Voir tous les modèles" -"Select layers and they space themselves as their content changes" = "Sélectionnez des calques et leur espacement s’ajuste quand leur contenu change" -"Sep" = "sept." -"Share with a code" = "Partager avec un code" -"Show all templates" = "Afficher tous les modèles" -"Show in Explorer" = "Afficher dans l’Explorateur" -"Show in Finder" = "Afficher dans le Finder" -"Show in folder" = "Afficher dans le dossier" -"Social and slides" = "Réseaux sociaux et diapositives" -"Social post sizes" = "Formats de publications sociales" -"Sort by" = "Trier par" -"Sort by {column}" = "Trier par {column}" -"Start from a template" = "Commencer avec un modèle" -"Start sharing with the Share button, then pass on the code it gives" = "Commencez à partager avec le bouton Partager, puis communiquez le code qu’il donne" -"Templates" = "Modèles" -"The destination document is unavailable. Nothing was imported." = "Le document de destination est indisponible. Rien n’a été importé." -"The destination document was closed. Nothing was imported." = "Le document de destination a été fermé. Rien n’a été importé." -"The destination page was removed. Nothing was imported." = "La page de destination a été supprimée. Rien n’a été importé." -"Try another word, or look at every kind." = "Essayez un autre mot, ou regardez chaque type." -"Turn a layer into a component, reuse it, and change every copy at once" = "Transformez un calque en composant, réutilisez-le et modifiez toutes les copies d’un coup" -"Uses variables: each layer shows them in its own mode" = "Utilise des variables : chaque calque les affiche dans son propre mode" -"Websites" = "Sites web" -"What you try here changes this preview and the code below, not the file" = "Ce que vous essayez ici change cet aperçu et le code ci-dessous, pas le fichier" -"Widget" = "Widget" -"Wireframe kit" = "Kit de wireframes" -"Z to A" = "Z à A" -"just now" = "à l’instant" -"yesterday" = "hier" -"{month} {day}, {year}" = "{day} {month} {year}" - [commands] "align.bottom" = "Aligner en bas" "align.hcenter" = "Aligner les centres horizontalement" @@ -1819,8 +1817,10 @@ status = "draft — needs native review" "component.editProperty" = "Modifier la propriété de composant" "component.exposeInstance" = "Exposer l’instance imbriquée" "component.goToMain" = "Aller au composant principal" +"component.hideWhenPublishing" = "Masquer à la publication" "component.list" = "Lister les composants" "component.makeSlot" = "Créer un emplacement" +"component.playground" = "Bac à sable de composant" "component.properties" = "Propriétés du composant" "component.pushChanges" = "Transmettre les modifications au composant principal" "component.removeSlot" = "Retirer l’emplacement" @@ -1879,6 +1879,7 @@ status = "draft — needs native review" "file.exportSvg" = "Exporter la sélection en SVG" "file.import" = "Importer" "file.new" = "Nouveau fichier de design" +"file.newFromTemplate" = "Nouveau à partir d’un modèle" "file.open" = "Ouvrir" "file.openRecent" = "Ouvrir un fichier récent" "file.placeImage" = "Placer une image" @@ -1906,6 +1907,7 @@ status = "draft — needs native review" "guide.remove" = "Retirer le repère" "guide.select" = "Sélectionner le repère" "help.about" = "À propos de FigCraft" +"help.gettingStarted" = "Premiers pas" "help.page" = "Page d’aide" "help.shortcuts" = "Raccourcis clavier" "image.adjust" = "Régler l’image" @@ -1959,6 +1961,9 @@ status = "draft — needs native review" "node.reparent" = "Déplacer le calque dans" "node.set" = "Définir les propriétés" "object.batchRename" = "Renommer par lot" +"object.convertToFrame" = "Convertir en cadre" +"object.convertToGroup" = "Convertir en groupe" +"object.convertToSection" = "Convertir en section" "object.flipH" = "Retourner horizontalement" "object.flipV" = "Retourner verticalement" "object.frameSelection" = "Encadrer la sélection" @@ -2079,6 +2084,7 @@ status = "draft — needs native review" "stroke.set" = "Définir le contour" "stroke.widthProfile" = "Profil de largeur" "style.apply" = "Appliquer le style" +"style.bind" = "Lier une variable dans un style" "style.create" = "Créer un style" "style.delete" = "Supprimer le style" "style.detach" = "Détacher le style" @@ -2087,6 +2093,7 @@ status = "draft — needs native review" "style.move" = "Déplacer les styles" "style.renameFolder" = "Renommer le dossier de styles" "style.update" = "Modifier le style" +"template.list" = "Lister les modèles" "text.alignCenter" = "Centrer" "text.alignJustify" = "Justifier" "text.alignLeft" = "Aligner à gauche" @@ -2252,8 +2259,11 @@ status = "draft — needs native review" "view.nextPage" = "Page suivante" "view.nextRegion" = "Activer la région suivante" "view.outlines" = "Contours" +"view.outlinesHiddenLayers" = "Inclure les calques masqués dans les contours" +"view.outlinesObjectBounds" = "Inclure les limites des objets dans les contours" "view.outlinesSelection" = "Contours de la sélection" "view.pan" = "Faire défiler la vue" +"view.panelWidths" = "Réinitialiser la largeur des panneaux" "view.pixelGrid" = "Grille de pixels" "view.pixelPreview" = "Aperçu des pixels" "view.prevFrame" = "Zoomer sur le cadre précédent" @@ -2286,20 +2296,6 @@ status = "draft — needs native review" "window.focus" = "Mettre la fenêtre au premier plan" "window.new" = "Nouvelle fenêtre" -# Commands translated since the draft (2026-10-18), appended. -"component.hideWhenPublishing" = "Masquer à la publication" -"component.playground" = "Bac à sable de composant" -"file.newFromTemplate" = "Nouveau à partir d’un modèle" -"help.gettingStarted" = "Premiers pas" -"object.convertToFrame" = "Convertir en cadre" -"object.convertToGroup" = "Convertir en groupe" -"object.convertToSection" = "Convertir en section" -"style.bind" = "Lier une variable dans un style" -"template.list" = "Lister les modèles" -"view.outlinesHiddenLayers" = "Inclure les calques masqués dans les contours" -"view.outlinesObjectBounds" = "Inclure les limites des objets dans les contours" -"view.panelWidths" = "Réinitialiser la largeur des panneaux" - [menu] "bool.exclude" = "Exclure" "bool.flatten" = "Aplatir" @@ -2325,12 +2321,10 @@ status = "draft — needs native review" "view.design" = "Design" "view.layers" = "Calques" "view.outlines" = "Afficher les contours" +"view.outlinesHiddenLayers" = "Inclure les calques masqués" +"view.outlinesObjectBounds" = "Inclure les limites des objets" "view.outlinesSelection" = "Afficher les contours de la sélection" "view.prototype" = "Prototype" "view.themeDark" = "Sombre" "view.themeLight" = "Clair" "view.themeSystem" = "Suivre le système" - -# Menu wordings translated since the draft (2026-10-18), appended. -"view.outlinesHiddenLayers" = "Inclure les calques masqués" -"view.outlinesObjectBounds" = "Inclure les limites des objets"