From 1e0b51398adf16df190896480c056e965afe0d39 Mon Sep 17 00:00:00 2001 From: bflatastic Date: Mon, 12 Oct 2026 03:35:44 +0700 Subject: [PATCH] M9: French, German and Brazilian Portuguese draft catalogs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - New UI catalogs `crates/ui-egui/locales/fr.toml`, `de.toml` and `pt-BR.toml`: every UI string (1,351 keys, 36 with plural forms), every command label (519) and every main-menu wording (29) translated, 1,899 entries each. Machine-drafted from our English, marked `status = "draft - needs native review"` like Spanish, so Preferences shows the draft note. Placeholders are identical to English; `|context` keys are translated per context (sizing "Fill", stroke "Join", glass "Light", open comments). - Language conventions: French uses no-break spaces (` `) before `: ; ? !`, inside guillemets and before `%`; German uses formal address and German quotes; Brazilian Portuguese uses Brazilian vocabulary (arquivo, salvar, tela, voce). - Not added to `COMPLETE`: that list forces every later PR to translate new strings into each complete language, so the three drafts are registered as incomplete and fall back to English per key; Spanish stays the only enforced language. `docs/translating.md` says so and how to list what a draft lacks. - Plurals: `plural_one` now takes 0 as singular for French and Brazilian Portuguese (CLDR integer rules); English, Spanish and German stay `n == 1`. - Language choice: Preferences > Language lists Francais, Deutsch and Portugues (Brasil) by their own names (from the catalogs). System now walks the OS's preferred-language list and takes the first language with a catalog: Windows' full `GlobalizationPreferences.Languages`, all of macOS's `AppleLanguages`, gettext's `LANGUAGE` then the locale variables on Linux/BSD; the browser still uses `navigator.language`. A tag with only a regional catalog reads it (`pt-PT`, `pt` -> `pt-BR`). `pref.language` docs list `fr|de|pt-BR`. - Overflow (German is the longest): `widgets::dropdown` now keeps its label on one line, ending it with an ellipsis and showing it in full on hover (it used to wrap mid-word, e.g. the auto layout sizing and stacking dropdowns); `elided_dropdown` merged into it. Two-column sublabels in the right panel and the home screen's cards elide the same way. English is unchanged. - Docs: localization-parity (languages, string counts, status, hours), translating, target-app-parity, ROADMAP, gaps (gap 5), roadmap (current focus 4), mcp. Localization 20% -> 30%, 45-75 h -> 40-65 h; ready for real work stays ~52%; full parity ~289-564 h -> ~284-554 h; beta ~170-305 h -> ~162-292 h. --- ROADMAP.md | 30 +- apps/figcraft/src/services.rs | 21 +- crates/engine/src/cmd/view.rs | 2 +- crates/engine/src/lib.rs | 2 +- crates/ui-egui/locales/de.toml | 1914 ++++++++++++++++++++++++++++ crates/ui-egui/locales/fr.toml | 1914 ++++++++++++++++++++++++++++ crates/ui-egui/locales/pt-BR.toml | 1913 +++++++++++++++++++++++++++ crates/ui-egui/src/colorpicker.rs | 2 +- crates/ui-egui/src/home.rs | 13 +- crates/ui-egui/src/i18n.rs | 28 +- crates/ui-egui/src/i18n_tests.rs | 27 + crates/ui-egui/src/right.rs | 2 +- crates/ui-egui/src/style_picker.rs | 4 +- crates/ui-egui/src/typography.rs | 6 +- crates/ui-egui/src/widgets.rs | 46 +- docs/gaps.md | 22 +- docs/localization-parity.md | 62 +- docs/mcp.md | 2 +- docs/roadmap.md | 7 +- docs/target-app-parity.md | 13 +- docs/translating.md | 29 +- 21 files changed, 5940 insertions(+), 119 deletions(-) create mode 100644 crates/ui-egui/locales/de.toml create mode 100644 crates/ui-egui/locales/fr.toml create mode 100644 crates/ui-egui/locales/pt-BR.toml diff --git a/ROADMAP.md b/ROADMAP.md index b34797c..ae99c9c 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -1,8 +1,8 @@ # FigCraft Roadmap -**Stage: alpha** · next: beta, ~26 points and ~170–305 h away (one Opus 5.5 agent; ~35–70 h wall-clock with 5 agents) +**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-12 · **Change:** minor (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-12 · **Change:** minor (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 @@ -18,14 +18,14 @@ start with [`docs/gaps.md`](docs/gaps.md). | Ready for real work | **~52%** | estimated, same doc (written dimension weights and scores) | | Essentials user | **~57%** | estimated: core features 77.8% × 0.92 launch/stability × 0.92 discoverability × 0.88 opening files people send ([method](docs/target-app-parity.md#essentials-user)) | | Mainstream practitioner | **~49%** | estimated: weekly areas 72.6% × 0.9 interaction × 0.9 stability × 0.85 file exchange with Figma users ([method](docs/target-app-parity.md#mainstream-practitioner)) | -| Remaining to beta | **~170–305 h** one agent | estimated | -| Remaining to full parity | **~286–558 h** one agent (~86–150 h wall-clock with 5 agents) | estimated | +| Remaining to beta | **~162–292 h** one agent | estimated | +| Remaining to full parity | **~281–548 h** one agent (~85–148 h wall-clock with 5 agents) | estimated | ### Readiness by audience | Audience | Ready % | Opus 5.5 agent wall-clock hours to ~95% | Work that dominates | |---|---|---|---| -| Full target (ready for real work) | ~52% | ~291–560 h | multiplayer (42–84), localization (45–75), plugins (15–40), the interaction pass (40–60), GPU canvas (30–60), AI (30–60), the `.fig` import's tail (5–10) | +| Full target (ready for real work) | ~52% | ~286–550 h | multiplayer (42–84), localization (40–65), plugins (15–40), the interaction pass (40–60), GPU canvas (30–60), AI (30–60), the `.fig` import's tail (5–10) | | Mainstream practitioner | ~49% | ~130–244 h | core editor depth incl. the `.fig` import's tail (49–98), the interaction pass (40–60), real-file corpus and platform QA (25–50), `.fig` export for handing work back (15–30) | | Essentials user | ~57% | ~60–110 h | the `.fig` import's tail so the files people send open well (5–10), core tool polish (25–45), interaction pass on the core tools (15–25), stability QA (10–20), onboarding and starter templates (5–10) | @@ -50,7 +50,7 @@ against real Figma documents. Ready-for-real-work is ~52%, inside alpha's ~40– ~75% **and** reliable `.fig` import: the `.fig` import's tail (5–10 h), a real-file corpus with measured fidelity (15–30 h), the interaction pass (25–40 h of the 40–60), core depth to ~80% (40–75 h), basic multiplayer on the landed core (30–55 h), stability and platform QA (20–40 h), a partial GPU path (15–30 h) and -Figma's own languages on the landed localization layer (15–25 h). +Figma's last two languages, Japanese and Korean, on the landed localization layer (7–12 h). ## By dimension @@ -63,7 +63,7 @@ Figma's own languages on the landed localization layer (15–25 h). | Stability | 55% | 20–40 | [gaps](docs/gaps.md) | | Performance | 60% | 30–60 | [hardware-parity](docs/hardware-parity.md) | | Hardware | 60% | 10–21 | [hardware-parity](docs/hardware-parity.md) | -| Localization | 20% (layer; English, Spanish draft) | 45–75 | [localization-parity](docs/localization-parity.md) | +| Localization | 30% (layer; English; Spanish, French, German, Brazilian Portuguese drafts) | 40–65 | [localization-parity](docs/localization-parity.md) | | Platforms | 75% | 10–20 | [hardware-parity](docs/hardware-parity.md) | | Ecosystem / plugins | 28% (own WASM plugins with panels and settings) | 15–40 | [gaps](docs/gaps.md) | | AI features | 0% | 30–60 | [gaps](docs/gaps.md) | @@ -103,18 +103,19 @@ Figma's own languages on the landed localization layer (15–25 h). | Spanish | es | 100% | draft (needs native review) | | Hindi | hi | 0% | none | | Arabic | ar | 0% | none | -| French | fr | 0% | none | -| Portuguese | pt | 0% | none | +| French | fr | 100% | draft (needs native review) | +| Portuguese (Brazil) | pt-BR | 100% | draft (needs native review) | | Indonesian | id | 0% | none | | Japanese | ja | 0% | none | -| German | de | 0% | none | +| German | de | 100% | draft (needs native review) | | Korean | ko | 0% | none | | Vietnamese | vi | 0% | none | No other languages. Figma ships English, Japanese, Korean, French, German, Spanish and Portuguese -(Brazil); FigCraft has the localization layer, English and a Spanish draft (Preferences ▸ Language; -adding a language: [`docs/translating.md`](docs/translating.md)). Document text in any script (bidi, Arabic -shaping, IME) already works. Detail: [`docs/localization-parity.md`](docs/localization-parity.md). +(Brazil); FigCraft has the localization layer, English and Spanish, French, German and Brazilian +Portuguese drafts (Preferences ▸ Language; adding a language: +[`docs/translating.md`](docs/translating.md)). Document text in any script (bidi, Arabic shaping, +IME) already works. Detail: [`docs/localization-parity.md`](docs/localization-parity.md). ## Upcoming @@ -123,7 +124,7 @@ Ranked; detail and milestones in [`docs/roadmap.md`](docs/roadmap.md). 1. `.fig` import's tail: fixes from real files, connector labels, table cells, filled areas with their own fills (the best-effort import, editable vector networks, the other layer kinds and variable prototype actions landed 2026-10-11): 5–10 h. 2. Real-file corpus and measured fidelity: 15–30 h. 3. Tool-by-tool interaction pass against Figma: 40–60 h. -4. Languages on the landed localization layer: ja, ko, pt-BR, fr, de, and a native review of es: 15–30 h. +4. Languages on the landed localization layer: ja and ko (7–12 h), and native reviews of the es, fr, de and pt-BR drafts (people). 5. Multiplayer (M9): accounts and teams on top of the live sessions and the standalone server (transport, hosting, invite links that open the app, document sync, presence with remote text carets, cursor chat and spotlight, per-user undo, reconnect with offline edits, collision-free ids for styles, variables and comments, the browser client, `figcraft-server` with persistence and share links to edit or view, team libraries on the server landed): 42–84 h. ## Progress log @@ -222,6 +223,7 @@ Ranked; detail and milestones in [`docs/roadmap.md`](docs/roadmap.md). | Date | Change | Summary | |---|---|---| +| 2026-10-12 | minor | French, German and Brazilian Portuguese draft catalogs (gap 5): every UI string, command label and menu wording (1,899 entries) machine-drafted in each and marked as drafts awaiting native review, falling back to English per key (new strings need only English and Spanish); 0 counts as singular in French and Brazilian Portuguese; System picks the first OS language with a catalog (pt-PT and pt read pt-BR); long translations elide with a tooltip in dropdowns, two-column labels and the home cards. Localization 20% → 30%, 45–75 h → 40–65 h; ready for real work unchanged (~52%); full parity ~289–564 h → ~284–554 h; beta ~170–305 h → ~162–292 h | | 2026-10-12 | minor | Cursor chat and spotlight in live sessions: `/` opens a chat bubble at your pointer that everyone sees as you type and that fades a few seconds after the last change; a spotlight (your avatar's menu, `collab.spotlight`) makes everyone follow your view and page until they move their own. Ephemeral presence the host validates and rate-limits, passed only to clients that read it (older clients keep working). Multiplayer & sharing breadth 15% → 17%, ready unchanged (5%), 45–90 h → 42–84 h; collaboration 13% unchanged, 49–98 h → 46–92 h; feature breadth (~84%) and ready for real work (~51%) unchanged at this rounding; full parity ~301–587 h → ~298–581 h | | 2026-10-12 | minor | Layers and Assets panels behaviour suite written from the public documentation (6 engine tests with about 50 table rows and 5 panel tests driven through the UI; about 30 rows that the code before the fixes contradicts) and its fixes (several layers dropped together, Collapse layers, eye and padlock sweeps, Rename layers dialog with the documented number codes, page dragging, dividers, "Copy of" duplicates, Assets folders, hidden-from-publishing names both ways). Layers panel 98%/82% → 99%/85%; percentages and full parity hours unchanged at this rounding | | 2026-10-12 | minor | Vector multi-edit and the vector edit tail, with a behaviour suite written from the public documentation (5 tests, about 30 table rows and steps, and a junk-parameter sweep of every vector command in multi-edit mode): several vector layers are edited at once (Enter, double-click or `vector.edit.begin {ids}`; a press on another layer's point, handle or segment makes it the active layer; Shift-click, marquee and lasso select across layers; dragging, the arrows, Delete, delete and heal, mirroring, smoothing, corner radius and point caps and joins reach every layer's selected points in one undo step; the pen, bend, paint bucket, cut and eraser work in the active layer); several Bezier handles are selected with Shift-click and dragged together (`vector.edit.moveHandles`); a sharp point next to a curved segment rounds (the curve is cut where the arc meets it and keeps its shape); a point can have its own stroke cap and join (`vector.edit.strokeCap`, `vector.edit.strokeJoin`, the Point section of the Design panel; canvas, PNG, SVG and PDF, outline stroke); the Pen outside edit mode connects to one of its own points and ends the path, and continues a selected open path from an end point. Left: corner smoothing beyond rectangles, the transform box around points of several layers, per-point caps and joins on dashed, variable-width and brush strokes. Shapes & vector 98%/72% → 99%/73%, 2–4 h → 1–3 h; Figma Draw extras 80%/55% → 88%/60%, 2–5 h → 1–3 h (gap 9: pen pressure on macOS and Linux tablets left). Totals recomputed by the doc's method, which rows since the last recompute had left stale: the area table's weighted breadth is 83.7% (~83%; core 94.1%, ~94%) and ready 63.1% (~63%; core 72.1%, ~72%), hours 133–284 (core 38–83); Features (depth) 61% → 63%, 46–94 h → 34–76 h; ready for real work 52.6% (~52%); mainstream weekly areas 71.0% → 72.1% (× 0.9 × 0.9 × 0.85 = 49.7%, ~49%, rounded down); essentials unchanged (~57%); full parity ~306–595 h → ~294–572 h (on top of the rows merged since: ~301–587 h → ~289–564 h; area-table totals recomputed on the merged table and rounded down: breadth ~84%, ready ~63%, core ~94%/~72%, mainstream weekly areas 72.4%, ~49%) | diff --git a/apps/figcraft/src/services.rs b/apps/figcraft/src/services.rs index eb09d0c..d63cda7 100644 --- a/apps/figcraft/src/services.rs +++ b/apps/figcraft/src/services.rs @@ -52,14 +52,14 @@ impl Desktop { } } -/// The system's preferred interface language as a tag ("es-ES", "es_ES.UTF-8"): Windows' language -/// list, macOS's AppleLanguages, the locale variables elsewhere. +/// The system's preferred interface languages, most preferred first, comma-separated +/// ("nl-NL,de-DE,en-US"): Windows' language list, macOS's AppleLanguages, `LANGUAGE` and the +/// locale variables elsewhere. The UI shows the first one it has a catalog for. fn system_language() -> Option { #[cfg(target_os = "windows")] { windows::System::UserProfile::GlobalizationPreferences::Languages() - .and_then(|l| l.GetAt(0)) - .map(|s| s.to_string()) + .map(|l| l.into_iter().map(|s| s.to_string()).collect::>().join(",")) .inspect_err(|e| log::info!("language: can't read the system languages: {e}")) .ok() } @@ -67,11 +67,20 @@ fn system_language() -> Option { #[cfg(target_os = "macos")] { let out = std::process::Command::new("defaults").args(["read", "-g", "AppleLanguages"]).output().ok()?; - String::from_utf8_lossy(&out.stdout).split(['(', ',', ')']).map(|s| s.trim().trim_matches('"').to_string()).find(|s| !s.is_empty()) + let list: Vec = String::from_utf8_lossy(&out.stdout) + .split(['(', ',', ')']) + .map(|s| s.trim().trim_matches('"').to_string()) + .filter(|s| !s.is_empty()) + .collect(); + Some(list.join(",")) } + // gettext's `LANGUAGE` priority list ("fr:de"), then the locale ("fr_FR.UTF-8"). #[cfg(all(unix, not(target_os = "macos")))] { - ["LC_ALL", "LC_MESSAGES", "LANG"].iter().filter_map(|k| std::env::var(k).ok()).find(|v| !v.is_empty() && v != "C" && v != "POSIX") + let var = |k: &str| std::env::var(k).ok().filter(|v| !v.is_empty() && v != "C" && v != "POSIX"); + let locale = ["LC_ALL", "LC_MESSAGES", "LANG"].into_iter().find_map(var); + let list: Vec = var("LANGUAGE").map(|l| l.replace(':', ",")).into_iter().chain(locale).collect(); + (!list.is_empty()).then(|| list.join(",")) } #[cfg(not(any(windows, unix)))] { diff --git a/crates/engine/src/cmd/view.rs b/crates/engine/src/cmd/view.rs index 1a2b1db..eea8291 100644 --- a/crates/engine/src/cmd/view.rs +++ b/crates/engine/src/cmd/view.rs @@ -272,7 +272,7 @@ pub fn specs() -> Vec { s.prefs.user_name = if name.is_empty() { super::comment::DEFAULT_AUTHOR.into() } else { name }; Ok(json!({"name": s.prefs.user_name})) }), - spec!("pref.language", "Interface language", "{language: system|en|es|… (a language code; no catalog: English)}", false, |s, p| { + spec!("pref.language", "Interface language", "{language: system|en|es|fr|de|pt-BR|… (no catalog: English)}", false, |s, p| { let lang = req_string("pref.language", p, "language")?; let lang = lang.trim(); // A BCP 47-style tag ("es", "pt-BR", "zh_Hans") or "system". diff --git a/crates/engine/src/lib.rs b/crates/engine/src/lib.rs index 4476f0a..9e6adda 100644 --- a/crates/engine/src/lib.rs +++ b/crates/engine/src/lib.rs @@ -525,7 +525,7 @@ pub struct Prefs { pub number_keys_opacity: bool, pub show_dimensions: bool, pub theme: String, - /// The interface language: a language code ("en", "es") or "system" (the OS or browser + /// The interface language: a language code ("en", "es", "pt-BR") or "system" (the OS or browser /// language). Languages without a catalog show English. pub language: String, /// The name comments are signed with (and whose comments count as yours). diff --git a/crates/ui-egui/locales/de.toml b/crates/ui-egui/locales/de.toml new file mode 100644 index 0000000..77df758 --- /dev/null +++ b/crates/ui-egui/locales/de.toml @@ -0,0 +1,1914 @@ +# FigCraft interface strings: German. +# +# Draft — needs native review: machine-drafted from the English catalog. Brand names and keyboard +# glyphs stay as they are. Formal address (Sie); a no-break space ( ) between a number and % +# or a unit. See docs/translating.md. + +[meta] +name = "Deutsch" +status = "draft — needs native review" + +[ui] +"% of all commits" = "% aller Commits" +"(no longer published)" = "(nicht mehr veröffentlicht)" +"({n} warnings: some entries were skipped)" = { one = "({n} Warnung: einige Einträge wurden übersprungen)", other = "({n} Warnungen: einige Einträge wurden übersprungen)" } +"+ Create variable" = "+ Variable erstellen" +"1…9, 0" = "1…9, 0" +"@{login}: {prs} PRs, {commits} commits, +{added} / −{deleted} lines (Δ {delta}), +{bin_added} / −{bin_deleted} binary assets, {first} – {last}" = "@{login}: {prs} PRs, {commits} Commits, +{added} / −{deleted} Zeilen (Δ {delta}), +{bin_added} / −{bin_deleted} Binärdateien, {first} – {last}" +"A collection of this file with these modes and variables: override their values per mode and add variables of its own" = "Eine Sammlung dieser Datei mit diesen Modi und Variablen: Überschreiben Sie ihre Werte je Modus und fügen Sie eigene Variablen hinzu" +"A spring plays until it settles: its mass, stiffness and damping set how long" = "Eine Feder läuft, bis sie zur Ruhe kommt: Masse, Steifigkeit und Dämpfung bestimmen die Dauer" +"About" = "Über" +"About FigCraft" = "Über FigCraft" +"Action" = "Aktion" +"Actions" = "Aktionen" +"Actions…" = "Aktionen…" +"Active" = "Aktiv" +"Actual size (100%)" = "Originalgröße (100 %)" +"Add a category" = "Kategorie hinzufügen" +"Add a comment" = "Kommentar hinzufügen" +"Add a description" = "Beschreibung hinzufügen" +"Add a frame (F) or a shape (R) to get started" = "Fügen Sie zum Start einen Rahmen (F) oder eine Form (R) hinzu" +"Add a layer or component to tile first" = "Fügen Sie zuerst eine Ebene oder Komponente zum Kacheln hinzu" +"Add a note for developers" = "Notiz für Entwickler hinzufügen" +"Add action" = "Aktion hinzufügen" +"Add actions for when no condition holds" = "Aktionen für den Fall hinzufügen, dass keine Bedingung zutrifft" +"Add an annotation for developers" = "Anmerkung für Entwickler hinzufügen" +"Add another condition" = "Weitere Bedingung hinzufügen" +"Add auto layout" = "Auto-Layout hinzufügen" +"Add background behind overlay" = "Hintergrund hinter dem Overlay hinzufügen" +"Add content to this slot" = "Inhalt zu diesem Slot hinzufügen" +"Add dev resource" = "Entwicklerressource hinzufügen" +"Add effect" = "Effekt hinzufügen" +"Add export setting" = "Exporteinstellung hinzufügen" +"Add fill" = "Füllung hinzufügen" +"Add interaction" = "Interaktion hinzufügen" +"Add layout grid" = "Layoutraster hinzufügen" +"Add library" = "Bibliothek hinzufügen" +"Add library file…" = "Bibliotheksdatei hinzufügen…" +"Add max height" = "Max. Höhe hinzufügen" +"Add max width" = "Max. Breite hinzufügen" +"Add min height" = "Min. Höhe hinzufügen" +"Add min width" = "Min. Breite hinzufügen" +"Add mode" = "Modus hinzufügen" +"Add new page" = "Neue Seite hinzufügen" +"Add or update collections from a variables JSON" = "Sammlungen aus einer Variablen-JSON hinzufügen oder aktualisieren" +"Add properties to make instances configurable" = "Fügen Sie Eigenschaften hinzu, um Instanzen konfigurierbar zu machen" +"Add reaction" = "Reaktion hinzufügen" +"Add starting point" = "Startpunkt hinzufügen" +"Add stroke" = "Kontur hinzufügen" +"Add variant" = "Variante hinzufügen" +"Add variant with a new value" = "Variante mit neuem Wert hinzufügen" +"Added" = "Hinzugefügt" +"Added the library \"{name}\"" = "Bibliothek „{name}“ hinzugefügt" +"Adjust" = "Anpassen" +"Adjustment presets" = "Vorgaben" +"Advanced stroke" = "Erweiterte Kontur" +"After delay" = "Nach Verzögerung" +"After delay {ms}ms" = "Nach {ms} ms" +"Align" = "Ausrichtung" +"Align bottom" = "Unten ausrichten" +"Align center" = "Zentriert ausrichten" +"Align horizontal centers" = "Horizontal zentrieren" +"Align left" = "Links ausrichten" +"Align middle" = "Mittig ausrichten" +"Align right" = "Rechts ausrichten" +"Align text baselines" = "Textgrundlinien ausrichten" +"Align top" = "Oben ausrichten" +"Align vertical centers" = "Vertikal zentrieren" +"Alignment" = "Ausrichtung" +"All" = "Alle" +"All categories" = "Alle Kategorien" +"All comments" = "Alle Kommentare" +"All components" = "Alle Komponenten" +"All fonts" = "Alle Schriften" +"All supported properties" = "Alle unterstützten Eigenschaften" +"All variables" = "Alle Variablen" +"Alpha" = "Alpha" +"Alt+drag" = "Alt+Ziehen" +"Anchor" = "Anker" +"Android" = "Android" +"Angular" = "Winkel" +"Animation" = "Animation" +"Annotations" = "Anmerkungen" +"Annotations shown on the canvas" = "Auf der Arbeitsfläche angezeigte Anmerkungen" +"Any status" = "Beliebiger Status" +"Anyone on your network who has the invite link can join." = "Jede Person in Ihrem Netzwerk mit dem Einladungslink kann beitreten." +"Anyone with the edit link can change the file; the view link only lets people look. The links carry their secrets: share them like passwords. `figcraft-server links` makes more and revokes them." = "Jede Person mit dem Bearbeitungslink kann die Datei ändern; der Ansichtslink erlaubt nur das Ansehen. Die Links enthalten ihre Geheimnisse: Teilen Sie sie wie Passwörter. `figcraft-server links` erzeugt weitere und widerruft sie." +"Appearance" = "Darstellung" +"Apply a component property" = "Komponenteneigenschaft anwenden" +"Apply variable" = "Variable anwenden" +"Apply variable to text" = "Variable auf Text anwenden" +"Apply variable to visibility" = "Variable auf Sichtbarkeit anwenden" +"Arc" = "Bogen" +"Arc ratio" = "Bogenverhältnis" +"Arc start" = "Bogenanfang" +"Arc sweep" = "Bogenwinkel" +"Archive" = "Archivieren" +"Archived" = "Archiviert" +"Arrange" = "Anordnen" +"Arrow" = "Pfeil" +"As typed" = "Wie eingegeben" +"Assets" = "Assets" +"Auto" = "Auto" +"Auto (space around)" = "Auto (Abstand ringsum)" +"Auto (space between)" = "Auto (Abstand dazwischen)" +"Auto (space evenly)" = "Auto (gleichmäßiger Abstand)" +"Auto ({mode})" = "Auto ({mode})" +"Auto columns" = "Automatische Spalten" +"Auto gap" = "Automatischer Abstand" +"Auto height" = "Automatische Höhe" +"Auto layout" = "Auto-Layout" +"Auto rows" = "Automatische Zeilen" +"Auto width" = "Automatische Breite" +"Back to the font's value" = "Zurück zum Wert der Schrift" +"Back" = "Zurück" +"Back to Ready for dev" = "Zurück zu „Bereit für Entwicklung“" +"Back to Ready for dev: the next change compares with how it is now" = "Zurück zu „Bereit für Entwicklung“: Die nächste Änderung wird mit dem jetzigen Stand verglichen" +"Back to assets" = "Zurück zu den Assets" +"Back to current" = "Zurück zur aktuellen" +"Back to styles" = "Zurück zu den Stilen" +"Back to the canvas from a focused region" = "Aus einem fokussierten Bereich zurück zur Arbeitsfläche" +"Back to the current version" = "Zurück zur aktuellen Version" +"Back to the values the font style implies" = "Zurück zu den Werten des Schriftschnitts" +"Background" = "Hintergrund" +"Background blur" = "Hintergrundunschärfe" +"Basics" = "Grundlagen" +"Before" = "Vorher" +"Bend" = "Biegen" +"Bevel" = "Abgeflacht" +"Binary assets added" = "Binärdateien hinzugefügt" +"Binary assets removed" = "Binärdateien entfernt" +"Black & white" = "Schwarzweiß" +"Bleed" = "Anschnitt" +"Bleed marks" = "Anschnittmarken" +"Bleed marks need a bleed" = "Anschnittmarken erfordern einen Anschnitt" +"Blend" = "Mischen" +"Blend mode" = "Mischmodus" +"Blue" = "Blau" +"Blur" = "Unschärfe" +"Boolean" = "Boolesch" +"Boolean groups" = "Boolesche Gruppen" +"Both directions" = "Beide Richtungen" +"Bottom" = "Unten" +"Bottom left radius" = "Radius unten links" +"Bottom right radius" = "Radius unten rechts" +"Branch" = "Branch" +"Branch archived" = "Branch archiviert" +"Branch merged" = "Branch zusammengeführt" +"Branch name" = "Branch-Name" +"Branch of {file}" = "Branch von {file}" +"Branch of {file} · merged or archived" = "Branch von {file} · zusammengeführt oder archiviert" +"Branch updated from main" = "Branch aus der Hauptdatei aktualisiert" +"Branch {name}" = "Branch {name}" +"Branches" = "Branches" +"Bring forward" = "Eine Ebene nach vorne" +"Bring the main file's changes into the branch" = "Übernimmt die Änderungen der Hauptdatei in den Branch" +"Bring to front" = "In den Vordergrund" +"Bristle" = "Borsten" +"Brush" = "Pinsel" +"Brush rotation jitter" = "Pinsel-Drehungsschwankung" +"Brush scatter" = "Pinselstreuung" +"Brush size jitter" = "Pinsel-Größenschwankung" +"Brush spacing" = "Pinselabstand" +"Bulleted list" = "Aufzählungsliste" +"CMYK colour" = "CMYK-Farbe" +"Color profile: {name}" = "Farbprofil: {name}" +"CSS custom properties…" = "Benutzerdefinierte CSS-Eigenschaften…" +"Can edit" = "Kann bearbeiten" +"Can't read this library: {e}" = "Diese Bibliothek kann nicht gelesen werden: {e}" +"Cancel" = "Abbrechen" +"Canvas" = "Arbeitsfläche" +"Canvas stacking" = "Stapelung auf der Arbeitsfläche" +"Cap height to baseline" = "Versalhöhe bis Grundlinie" +"Case" = "Groß-/Kleinschreibung" +"Case-sensitive forms" = "Versalformen" +"Categories" = "Kategorien" +"Center" = "Mitte" +"Change alias" = "Alias ändern" +"Change resolved" = "Änderung erledigt" +"Change style" = "Stil ändern" +"Change to" = "Ändern zu" +"Change to needs a layer inside a variant" = "„Ändern zu“ erfordert eine Ebene in einer Variante" +"Changed" = "Geändert" +"Changed on both sides: keep one" = "Auf beiden Seiten geändert: eine behalten" +"Changes on main" = "Änderungen in der Hauptdatei" +"Changes on the branch" = "Änderungen im Branch" +"Changes unknown" = "Änderungen unbekannt" +"Choose React, SwiftUI or Compose above to connect this component to its code." = "Wählen Sie oben React, SwiftUI oder Compose, um diese Komponente mit ihrem Code zu verbinden." +"Choose another profile to change it." = "Wählen Sie ein anderes Profil, um es zu ändern." +"Choose collection" = "Sammlung wählen" +"Choose image" = "Bild wählen" +"Choose mode" = "Modus wählen" +"Choose variable" = "Variable wählen" +"Circle" = "Kreis" +"Clear recent" = "Zuletzt verwendete löschen" +"Click + to replace mixed content" = "Klicken Sie auf +, um gemischte Inhalte zu ersetzen" +"Click anywhere on the canvas to leave one." = "Klicken Sie irgendwo auf die Arbeitsfläche, um einen zu hinterlassen." +"Click or drag to merge · {alt} removes" = "Klicken oder ziehen zum Vereinen · {alt} entfernt" +"Click or drag to remove · {alt} merges" = "Klicken oder ziehen zum Entfernen · {alt} vereint" +"Click to record a key" = "Klicken, um eine Taste aufzunehmen" +"Clip content" = "Inhalt beschneiden" +"Clip to shape" = "Auf Form beschneiden" +"Close" = "Schließen" +"Close overlay" = "Overlay schließen" +"Close preview" = "Vorschau schließen" +"Close tab" = "Tab schließen" +"Close version history" = "Versionsverlauf schließen" +"Close when clicking outside" = "Bei Klick außerhalb schließen" +"Close without saving" = "Ohne Speichern schließen" +"Code" = "Code" +"Code syntax" = "Code-Syntax" +"Collapse" = "Einklappen" +"Collapse panel" = "Bereich einklappen" +"Collection" = "Sammlung" +"Collections" = "Sammlungen" +"Color" = "Farbe" +"Color burn" = "Farbe nachbelichten" +"Color dodge" = "Farbe abwedeln" +"Color format" = "Farbformat" +"Color profile" = "Farbprofil" +"Color styles" = "Farbstile" +"Color values in this file are in this color space." = "Die Farbwerte in dieser Datei liegen in diesem Farbraum." +"Color variables" = "Farbvariablen" +"Colour" = "Farbe" +"Column" = "Spalte" +"Column gap" = "Spaltenabstand" +"Column sizes" = "Spaltengrößen" +"Column span" = "Spaltenspanne" +"Columns" = "Spalten" +"Columns {count}" = "Spalten {count}" +"Comment" = "Kommentar" +"Comments" = "Kommentare" +"Commits" = "Commits" +"Community" = "Community" +"Company" = "Unternehmen" +"Compare changes" = "Änderungen vergleichen" +"Completed" = "Abgeschlossen" +"Component" = "Komponente" +"Component name" = "Komponentenname" +"Component property" = "Komponenteneigenschaft" +"Component set" = "Komponentensatz" +"Component sets" = "Komponentensätze" +"Components" = "Komponenten" +"Conditional" = "Bedingung" +"Confetti" = "Konfetti" +"Conflicts" = "Konflikte" +"Connect to code" = "Mit Code verbinden" +"Connected" = "Verbunden" +"Connected to code: {from}" = "Mit Code verbunden: {from}" +"Connection lost, reconnecting (attempt {attempt})…" = "Verbindung verloren, neuer Versuch ({attempt})…" +"Constrain proportions" = "Proportionen beibehalten" +"Constraints" = "Constraints" +"Content" = "Inhalt" +"Contents hidden" = "Inhalt ausgeblendet" +"Contents only" = "Nur Inhalt" +"Contextual alternates" = "Kontextbedingte Varianten" +"Contrast" = "Kontrast" +"Contributors" = "Mitwirkende" +"Contributors: {people} · Commits: {commits}" = "Mitwirkende: {people} · Commits: {commits}" +"Cool" = "Kühl" +"Copied as CSS" = "Als CSS kopiert" +"Copied as PNG" = "Als PNG kopiert" +"Copied as SVG" = "Als SVG kopiert" +"Copied as text" = "Als Text kopiert" +"Copied {value}" = "Kopiert: {value}" +"Copy" = "Kopieren" +"Copy as" = "Kopieren als" +"Copy as CSS" = "Als CSS kopieren" +"Copy as PNG" = "Als PNG kopieren" +"Copy as SVG" = "Als SVG kopieren" +"Copy link" = "Link kopieren" +"Copy the {label}" = "{label} kopieren" +"Copy {value}" = "{value} kopieren" +"Corner radius" = "Eckenradius" +"Corner smoothing" = "Eckenglättung" +"Count" = "Anzahl" +"Create" = "Erstellen" +"Create a variable collection first" = "Erstellen Sie zuerst eine Variablensammlung" +"Create a variable first" = "Erstellen Sie zuerst eine Variable" +"Create alias" = "Alias erstellen" +"Create branch" = "Branch erstellen" +"Create collection" = "Sammlung erstellen" +"Create component" = "Komponente erstellen" +"Create component property" = "Komponenteneigenschaft erstellen" +"Create components, styles or variables to publish them as a library." = "Erstellen Sie Komponenten, Stile oder Variablen, um sie als Bibliothek zu veröffentlichen." +"Create property…" = "Eigenschaft erstellen…" +"Create style" = "Stil erstellen" +"Create style from the selected text" = "Stil aus dem ausgewählten Text erstellen" +"Crop" = "Zuschneiden" +"Crop marks" = "Schnittmarken" +"Ctrl+arrows" = "Strg+Pfeiltasten" +"Ctrl+click" = "Strg+Klick" +"Ctrl+scroll" = "Strg+Scrollen" +"Current version" = "Aktuelle Version" +"Custom" = "Benutzerdefiniert" +"Cut" = "Ausschneiden" +"Dark" = "Dunkel" +"Darken" = "Abdunkeln" +"Dash" = "Gestrichelt" +"Decoration style" = "Linienstil" +"Decoration" = "Auszeichnung" +"Deep select" = "Tiefe Auswahl" +"Default" = "Standard" +"Default content" = "Standardinhalt" +"Default value (the top-left variant)" = "Standardwert (die Variante oben links)" +"Delay" = "Verzögerung" +"Delete" = "Löschen" +"Delete category (its annotations stay)" = "Kategorie löschen (ihre Anmerkungen bleiben)" +"Delete collection" = "Sammlung löschen" +"Delete group" = "Gruppe löschen" +"Delete mode" = "Modus löschen" +"Delete page" = "Seite löschen" +"Delete preset" = "Vorgabe löschen" +"Delete property" = "Eigenschaft löschen" +"Delete the style (layers keep their values)" = "Stil löschen (Ebenen behalten ihre Werte)" +"Delete thread" = "Thread löschen" +"Delete variable" = "Variable löschen" +"Delete “{name}”? This can't be undone." = "„{name}“ löschen? Dies kann nicht rückgängig gemacht werden." +"Density" = "Dichte" +"Depth" = "Tiefe" +"Describe how and when to use this component" = "Beschreiben Sie, wie und wann diese Komponente verwendet wird" +"Describe what changed" = "Beschreiben Sie, was sich geändert hat" +"Description" = "Beschreibung" +"Description (optional)" = "Beschreibung (optional)" +"Design" = "Design" +"Desktop" = "Desktop" +"Destination" = "Ziel" +"Detach alias" = "Alias lösen" +"Detach instance" = "Instanz lösen" +"Detach property" = "Eigenschaft lösen" +"Detach style" = "Stil lösen" +"Detach styles" = "Stile lösen" +"Detach variable" = "Variable lösen" +"Details" = "Details" +"Dev Mode" = "Entwicklermodus" +"Dev resources" = "Entwicklerressourcen" +"Development" = "Entwicklung" +"Device" = "Gerät" +"Device at 100%" = "Gerät bei 100 %" +"Diamond" = "Raute" +"Difference" = "Differenz" +"Dimensions" = "Abmessungen" +"Direction" = "Richtung" +"Disconnect from code" = "Vom Code trennen" +"Dispersion" = "Dispersion" +"Display name" = "Anzeigename" +"Dissolve" = "Auflösen" +"Distribute and tidy" = "Verteilen und aufräumen" +"Distribute horizontal spacing" = "Horizontale Abstände verteilen" +"Distribute vertical spacing" = "Vertikale Abstände verteilen" +"Don't truncate" = "Nicht kürzen" +"Done" = "Fertig" +"Done editing" = "Bearbeitung beenden" +"Dots" = "Punkte" +"Dotted" = "Gepunktet" +"Down" = "Nach unten" +"Drafts" = "Entwürfe" +"Drag the stroke to add a width point" = "Ziehen Sie an der Kontur, um einen Breitenpunkt hinzuzufügen" +"Draw" = "Zeichnen" +"Drawing tools" = "Zeichenwerkzeuge" +"Drop shadow" = "Schlagschatten" +"Dual-licensed MIT OR Apache-2.0. Made by the ArtCraft team and community." = "Doppelt lizenziert unter MIT OR Apache-2.0. Entwickelt vom ArtCraft-Team und der Community." +"Duo" = "Duo" +"Duplicate" = "Duplizieren" +"Duplicate by dragging" = "Durch Ziehen duplizieren" +"Duplicate mode" = "Modus duplizieren" +"Duplicate page" = "Seite duplizieren" +"Edit" = "Bearbeiten" +"Edit as an expression" = "Als Ausdruck bearbeiten" +"Edit colour" = "Farbe bearbeiten" +"Edit comment" = "Kommentar bearbeiten" +"Edit dev resource" = "Entwicklerressource bearbeiten" +"Edit link" = "Bearbeitungslink" +"Edit link copied" = "Bearbeitungslink kopiert" +"Edit style" = "Stil bearbeiten" +"Edit variable" = "Variable bearbeiten" +"Edit with the builder" = "Mit dem Editor bearbeiten" +"Effect settings" = "Effekteinstellungen" +"Effect styles" = "Effektstile" +"Effects" = "Effekte" +"Ellipse" = "Ellipse" +"Ellipses" = "Ellipsen" +"Else" = "Sonst" +"Else if" = "Sonst wenn" +"Embedded profile" = "Eingebettetes Profil" +"Empty" = "Leer" +"End" = "Ende" +"End point" = "Endpunkt" +"Enter to save · Esc to cancel" = "Eingabe zum Speichern · Esc zum Abbrechen" +"Eraser" = "Radiergummi" +"Esc" = "Esc" +"Essential" = "Wesentlich" +"Every conflict has a choice." = "Für jeden Konflikt wurde eine Auswahl getroffen." +"Every top-level frame already starts a flow" = "Jeder Rahmen der obersten Ebene startet bereits einen Ablauf" +"Exact opacity (4 then 5: 45%)" = "Genaue Deckkraft (4, dann 5: 45 %)" +"Exclude" = "Ausschließen" +"Excluded" = "Ausgeschlossen" +"Excluded from layout" = "Vom Layout ausgeschlossen" +"Excludes" = "Ausschlüsse" +"Exclusion" = "Ausschluss" +"Exit focus view (Esc)" = "Fokusansicht verlassen (Esc)" +"Expand" = "Ausklappen" +"Export" = "Exportieren" +"Export all" = "Alle exportieren" +"Export page as PNG" = "Seite als PNG exportieren" +"Export settings" = "Exporteinstellungen" +"Export variables" = "Variablen exportieren" +"Export {name}" = "{name} exportieren" +"Export {n} layers" = { one = "{n} Ebene exportieren", other = "{n} Ebenen exportieren" } +"Exported {file}" = "Exportiert: {file}" +"Exported {name}" = "{name} exportiert" +"Exported {n} files" = { one = "{n} Datei exportiert", other = "{n} Dateien exportiert" } +"Export…" = "Exportieren…" +"Expose properties to instances" = "Eigenschaften für Instanzen freigeben" +"Exposure" = "Belichtung" +"Expression" = "Ausdruck" +"Extend collection" = "Sammlung erweitern" +"Extends \"{name}\": overridden values are marked" = "Erweitert „{name}“: Überschriebene Werte sind markiert" +"Eye" = "Auge" +"Fade" = "Verblassen" +"False" = "Falsch" +"Fetching from the server…" = "Wird vom Server abgerufen…" +"File" = "Datei" +"File name" = "Dateiname" +"Fill" = "Füllung" +"Fill (fr)" = "Füllen (fr)" +"Fill container" = "Container füllen" +"Fill window" = "Fenster füllen" +"Fills" = "Füllungen" +"Fill|sizing" = "Füllen" +"Filter and sort" = "Filtern und sortieren" +"Find" = "Suchen" +"Find and replace" = "Suchen und ersetzen" +"Find layers" = "Ebenen suchen" +"First" = "Erster" +"First commit" = "Erster Commit" +"First on top" = "Erste oben" +"Fit" = "Einpassen" +"Fit device to window" = "Gerät an Fenster anpassen" +"Fit to contents" = "An Inhalt anpassen" +"Fit to window" = "An Fenster anpassen" +"Fit width" = "An Breite anpassen" +"Fixed" = "Fest" +"Fixed gap" = "Fester Abstand" +"Fixed size" = "Feste Größe" +"Flatten" = "Zusammenfügen" +"Flip" = "Spiegeln" +"Flip horizontal" = "Horizontal spiegeln" +"Flip text to the other side" = "Text auf die andere Seite setzen" +"Flip vertical" = "Vertikal spiegeln" +"Flip width profile" = "Breitenprofil umkehren" +"Flow starting point" = "Startpunkt des Ablaufs" +"Flow starting points" = "Startpunkte von Abläufen" +"Flows" = "Abläufe" +"Focus view" = "Fokusansicht" +"Fold autosaves" = "Automatische Speicherungen einklappen" +"Follow {name}" = "{name} folgen" +"Following" = "Sie folgen" +"Following {name} · {key} to stop" = "Sie folgen {name} · {key} zum Beenden" +"Font" = "Schrift" +"Font not installed" = "Schrift nicht installiert" +"Font size" = "Schriftgröße" +"Font style" = "Schriftschnitt" +"Fractions" = "Brüche" +"Frame" = "Rahmen" +"Frame selection" = "Auswahl einrahmen" +"Frame tools" = "Rahmenwerkzeuge" +"Frames" = "Rahmen" +"From the library \"{name}\": read-only" = "Aus der Bibliothek „{name}“: schreibgeschützt" +"From {name}" = "Aus {name}" +"Frost" = "Frost" +"Gap" = "Abstand" +"Gap between columns" = "Abstand zwischen Spalten" +"Gap between items" = "Abstand zwischen Elementen" +"Gap between rows" = "Abstand zwischen Zeilen" +"Glass" = "Glas" +"Go to main component" = "Zur Hauptkomponente" +"Go to {name}" = "Zu {name}" +"Grab bag" = "Kunterbunt" +"Gradient" = "Verlauf" +"Gray" = "Grau" +"Green" = "Grün" +"Grid" = "Raster" +"Grid ({size})" = "Raster ({size})" +"Grid styles" = "Rasterstile" +"Grid {size}" = "Raster {size}" +"Group" = "Gruppe" +"Group selection" = "Auswahl gruppieren" +"Groups" = "Gruppen" +"Gutter" = "Steg" +"Hand tool" = "Hand-Werkzeug" +"Hanging list" = "Hängende Liste" +"Hanging punctuation" = "Hängende Interpunktion" +"Hard light" = "Hartes Licht" +"Height" = "Höhe" +"Help" = "Hilfe" +"Help and resources" = "Hilfe und Ressourcen" +"Help page" = "Hilfeseite" +"Hidden" = "Ausgeblendet" +"Hide contents" = "Inhalt ausblenden" +"Hide from publishing" = "Nicht veröffentlichen" +"Hide section contents" = "Abschnittsinhalt ausblenden" +"Highlight layers on hover" = "Ebenen beim Überfahren hervorheben" +"Highlights" = "Lichter" +"Hold Alt" = "Alt gedrückt halten" +"Hold Alt+Z" = "Alt+Z gedrückt halten" +"Hold Z" = "Z gedrückt halten" +"Hold ⌥" = "⌥ gedrückt halten" +"Hold ⌥Z" = "⌥Z gedrückt halten" +"Home" = "Start" +"Horizontal" = "Horizontal" +"Horizontal align" = "Horizontale Ausrichtung" +"Horizontal hex" = "Horizontales Sechseck" +"Horizontal padding" = "Horizontaler Innenabstand" +"Horizontal spacing" = "Horizontaler Abstand" +"Hosting a session needs the desktop app; here you can join one." = "Zum Hosten einer Sitzung ist die Desktop-App nötig; hier können Sie einer beitreten." +"Hover a layer to see its properties" = "Fahren Sie über eine Ebene, um ihre Eigenschaften zu sehen" +"Hover other layers to measure the distance" = "Fahren Sie über andere Ebenen, um den Abstand zu messen" +"Hue" = "Farbton" +"Hug" = "Umschließen" +"Hug contents" = "Inhalt umschließen" +"If" = "Wenn" +"If {condition}" = "Wenn {condition}" +"Ignore auto layout (absolute position)" = "Auto-Layout ignorieren (absolute Position)" +"Image" = "Bild" +"Import" = "Importieren" +"Import path" = "Importpfad" +"Import plugin from manifest" = "Plugin aus Manifest importieren" +"Import plugin from manifest…" = "Plugin aus Manifest importieren…" +"Import variables" = "Variablen importieren" +"Imported {name}" = "{name} importiert" +"Imported {n} new variables, updated {updated}" = { one = "{n} neue Variable importiert, {updated} aktualisiert", other = "{n} neue Variablen importiert, {updated} aktualisiert" } +"Import…" = "Importieren…" +"In an instance, this comes from the main component" = "In einer Instanz kommt dies von der Hauptkomponente" +"In the browser you can join sessions the desktop app hosts and files on a FigCraft server. A page opened over https reaches other computers only through wss:// links (a server behind TLS)." = "Im Browser können Sie Sitzungen beitreten, die die Desktop-App hostet, sowie Dateien auf einem FigCraft-Server. Eine über https geöffnete Seite erreicht andere Computer nur über wss://-Links (ein Server hinter TLS)." +"Include bounding box" = "Begrenzungsrahmen einbeziehen" +"Include id attribute" = "id-Attribut einbeziehen" +"Included" = "Einbezogen" +"Included in layout" = "Im Layout einbezogen" +"Individual corners" = "Einzelne Ecken" +"Individual strokes" = "Einzelne Konturen" +"Ink" = "Tinte" +"Inner shadow" = "Innerer Schatten" +"Inside" = "Innen" +"Inspect" = "Prüfen" +"Inspect the layer under the pointer: size, colours, typography" = "Ebene unter dem Zeiger prüfen: Größe, Farben, Typografie" +"Instance" = "Instanz" +"Instance properties" = "Instanzeigenschaften" +"Instance swap" = "Instanztausch" +"Instance swap (no other component)" = "Instanztausch (keine andere Komponente)" +"Instances" = "Instanzen" +"Instant" = "Sofort" +"Interaction" = "Interaktion" +"Interactions" = "Interaktionen" +"Interface design and prototyping. A free, open-source, clean-room design tool written from scratch in Rust, part of the ArtCraft Crafting Apps." = "Interface-Design und Prototyping. Ein kostenloses Open-Source-Designwerkzeug, als Clean-Room-Entwicklung von Grund auf in Rust geschrieben, Teil der ArtCraft Crafting Apps." +"Intersect" = "Schnittmenge" +"Intersects" = "Schnittmengen" +"Invite link" = "Einladungslink" +"Invite link copied" = "Einladungslink kopiert" +"Join" = "Beitreten" +"Join a session…" = "Einer Sitzung beitreten…" +"Join live session" = "Live-Sitzung beitreten" +"Join us on Discord" = "Besuchen Sie uns auf Discord" +"Joined" = "Beigetreten" +"Joined {file}" = "{file} beigetreten" +"Joining…" = "Beitritt…" +"Join|stroke" = "Ecke" +"Just now" = "Gerade eben" +"Justify" = "Blocksatz" +"Keep appearance" = "Aussehen beibehalten" +"Keep appearance converts every color value to {profile} so colors look the same. Keep values leaves the numbers as they are, so colors shift." = "„Aussehen beibehalten“ wandelt jeden Farbwert in {profile} um, damit die Farben gleich aussehen. „Werte beibehalten“ lässt die Zahlen unverändert, sodass sich die Farben verschieben." +"Keep tool selected after use" = "Werkzeug nach Verwendung ausgewählt lassen" +"Keep values" = "Werte beibehalten" +"Key/Gamepad" = "Taste/Gamepad" +"Key/Gamepad {key}" = "Taste/Gamepad {key}" +"Keyboard shortcuts" = "Tastenkürzel" +"Language" = "Sprache" +"Lasso" = "Lasso" +"Last" = "Letzter" +"Last change: {note}" = "Letzte Änderung: {note}" +"Last commit" = "Letzter Commit" +"Last on top" = "Letzte oben" +"Layer blur" = "Ebenenunschärfe" +"Layer name" = "Ebenenname" +"Layers" = "Ebenen" +"Layers in an instance take their position from the main component" = "Ebenen in einer Instanz übernehmen ihre Position von der Hauptkomponente" +"Layout" = "Layout" +"Layout grid" = "Layoutraster" +"Layout grid settings" = "Layoutraster-Einstellungen" +"Layout grids" = "Layoutraster" +"Leave session" = "Sitzung verlassen" +"Leaves" = "Blätter" +"Left" = "Links" +"Left & right" = "Links und rechts" +"Left side" = "Linke Seite" +"Left side width" = "Breite der linken Seite" +"Letter case" = "Groß-/Kleinschreibung" +"Letter spacing" = "Zeichenabstand" +"Libraries" = "Bibliotheken" +"Libraries in this file" = "Bibliotheken in dieser Datei" +"Library updates available" = "Bibliotheksaktualisierungen verfügbar" +"Library: click to collapse" = "Bibliothek: zum Einklappen klicken" +"Library: click to expand" = "Bibliothek: zum Ausklappen klicken" +"Library: its variables are read-only here; edit them in the library file and publish it" = "Bibliothek: ihre Variablen sind hier schreibgeschützt; bearbeiten Sie sie in der Bibliotheksdatei und veröffentlichen Sie diese" +"Light" = "Hell" +"Lighten" = "Aufhellen" +"Light|glass" = "Licht" +"Line" = "Linie" +"Line arrow" = "Linienpfeil" +"Line delta" = "Zeilendifferenz" +"Line height" = "Zeilenhöhe" +"Linear" = "Linear" +"Lines" = "Linien" +"Lines +/−" = "Zeilen +/−" +"Lines added" = "Zeilen hinzugefügt" +"Lines deleted" = "Zeilen gelöscht" +"Link" = "Link" +"Link copied" = "Link kopiert" +"Link docs, code or tickets for developers." = "Verlinken Sie Dokumentation, Code oder Tickets für Entwickler." +"Link this component to its code component: instances then show your real snippet with their values." = "Verknüpfen Sie diese Komponente mit ihrer Code-Komponente: Instanzen zeigen dann Ihr echtes Snippet mit ihren Werten." +"List spacing" = "Listenabstand" +"List style" = "Listenstil" +"Live session" = "Live-Sitzung" +"Live · {people}" = "Live · {people}" +"Local components" = "Lokale Komponenten" +"Local styles" = "Lokale Stile" +"Local variables" = "Lokale Variablen" +"Lock/Unlock" = "Sperren/Entsperren" +"Locked" = "Gesperrt" +"Lowercase" = "Kleinbuchstaben" +"Luminance" = "Luminanz" +"Luminosity" = "Luminanz" +"Main" = "Hauptdatei" +"Main component deleted" = "Hauptkomponente gelöscht" +"Main menu" = "Hauptmenü" +"Make slot" = "Slot erstellen" +"Margin" = "Rand" +"Mark all as read" = "Alle als gelesen markieren" +"Mark as resolved" = "Als erledigt markieren" +"Mark as unread" = "Als ungelesen markieren" +"Mark as unresolved" = "Als nicht erledigt markieren" +"Mask" = "Maske" +"Mass · Stiffness · Damping" = "Masse · Steifigkeit · Dämpfung" +"Max H" = "Max. H" +"Max W" = "Max. B" +"Max lines" = "Max. Zeilen" +"Maximize" = "Maximieren" +"Measure to the selection" = "Bis zur Auswahl messen" +"Merge into main" = "In Hauptdatei zusammenführen" +"Merge regions" = "Bereiche vereinen" +"Merge the branch into the main file (one undo step) and archive it" = "Führt den Branch in die Hauptdatei zusammen (ein Rückgängig-Schritt) und archiviert ihn" +"Merged" = "Zusammengeführt" +"Merged PRs" = "Zusammengeführte PRs" +"Min H" = "Min. H" +"Min W" = "Min. B" +"Minimize" = "Minimieren" +"Mirror angle" = "Winkel spiegeln" +"Mirror angle and length" = "Winkel und Länge spiegeln" +"Mirroring" = "Spiegelung" +"Missing" = "Fehlt" +"Missing layer" = "Fehlende Ebene" +"Missing style" = "Fehlender Stil" +"Missing variable" = "Fehlende Variable" +"Miter" = "Gehrung" +"Miter angle" = "Gehrungswinkel" +"Mixed" = "Gemischt" +"Mixed fonts" = "Gemischte Schriften" +"Mixed interactions: click + to replace them" = "Gemischte Interaktionen: Klicken Sie auf +, um sie zu ersetzen" +"Mode" = "Modus" +"Model" = "Modell" +"Models" = "Modelle" +"Mono" = "Mono" +"More" = "Mehr" +"More instance actions" = "Weitere Instanzaktionen" +"Mouse down" = "Maustaste gedrückt" +"Mouse enter" = "Maus hinein" +"Mouse leave" = "Maus hinaus" +"Mouse up" = "Maustaste losgelassen" +"Move" = "Verschieben" +"Move column left" = "Spalte nach links verschieben" +"Move column right" = "Spalte nach rechts verschieben" +"Move down" = "Nach unten verschieben" +"Move in" = "Hineinbewegen" +"Move out" = "Herausbewegen" +"Move tools" = "Verschiebewerkzeuge" +"Move up" = "Nach oben verschieben" +"Moved to {name}" = "Nach {name} verschoben" +"Multi" = "Multi" +"Multiply" = "Multiplizieren" +"Muted" = "Gedämpft" +"Name" = "Name" +"Name (A–Z)" = "Name (A–Z)" +"Named instance" = "Benannte Instanz" +"Navigate to" = "Navigieren zu" +"Nested instance" = "Verschachtelte Instanz" +"New design file" = "Neue Designdatei" +"Next or previous control in the focused region" = "Nächstes oder vorheriges Steuerelement im fokussierten Bereich" +"Next ready for dev" = "Nächstes bereit für Entwicklung" +"Next size option" = "Nächste Größenoption" +"No assets: no export settings, icons or images. Add export settings in the Design tab." = "Keine Assets: keine Exporteinstellungen, Symbole oder Bilder. Fügen Sie Exporteinstellungen im Tab Design hinzu." +"No boolean variables fit here." = "Hier passen keine booleschen Variablen." +"No boolean variables yet. Create them in Local variables." = "Noch keine booleschen Variablen. Erstellen Sie sie unter Lokale Variablen." +"No branches. A branch is a copy of the file to try changes in, then review and merge." = "Keine Branches. Ein Branch ist eine Kopie der Datei, in der Sie Änderungen ausprobieren, prüfen und dann zusammenführen." +"No category" = "Keine Kategorie" +"No changes" = "Keine Änderungen" +"No colour variables fit here." = "Hier passen keine Farbvariablen." +"No colour variables yet. Create them in Local variables." = "Noch keine Farbvariablen. Erstellen Sie sie unter Lokale Variablen." +"No comments yet" = "Noch keine Kommentare" +"No components yet. Select layers and press {keys}." = "Noch keine Komponenten. Wählen Sie Ebenen aus und drücken Sie {keys}." +"No conflicts." = "Keine Konflikte." +"No contributor data was built into this copy." = "Diese Kopie enthält keine Daten zu Mitwirkenden." +"No fonts match" = "Keine passenden Schriften" +"No layer changes to show." = "Keine Ebenenänderungen vorhanden." +"No libraries yet. Add a .figcraft file that was published as a library, or paste a team library's link." = "Noch keine Bibliotheken. Fügen Sie eine als Bibliothek veröffentlichte .figcraft-Datei hinzu oder fügen Sie den Link einer Teambibliothek ein." +"No list" = "Keine Liste" +"No matching comments" = "Keine passenden Kommentare" +"No matching components" = "Keine passenden Komponenten" +"No matching layers" = "Keine passenden Ebenen" +"No matching styles" = "Keine passenden Stile" +"No matching variables" = "Keine passenden Variablen" +"No mirroring" = "Keine Spiegelung" +"No model credits were built into this copy." = "Diese Kopie enthält keine Modellangaben." +"No number variables fit here." = "Hier passen keine Zahlenvariablen." +"No number variables yet. Create them in Local variables." = "Noch keine Zahlenvariablen. Erstellen Sie sie unter Lokale Variablen." +"No paints" = "Keine Farben" +"No plugins yet. Import a development plugin from its figcraft-plugin.json." = "Noch keine Plugins. Importieren Sie ein Entwicklungs-Plugin über seine figcraft-plugin.json." +"No preferred components" = "Keine bevorzugten Komponenten" +"No preset" = "Keine Vorgabe" +"No saved versions yet. Save a version to mark a point in your work you can come back to." = "Noch keine gespeicherten Versionen. Speichern Sie eine Version, um einen Stand Ihrer Arbeit zu markieren, zu dem Sie zurückkehren können." +"No scrolling" = "Kein Scrollen" +"No shortcuts match" = "Keine passenden Tastenkürzel" +"No status" = "Kein Status" +"No string variables fit here." = "Hier passen keine Zeichenfolgenvariablen." +"No string variables yet. Create them in Local variables." = "Noch keine Zeichenfolgenvariablen. Erstellen Sie sie unter Lokale Variablen." +"No styles yet." = "Noch keine Stile." +"No styles yet. Click + to create one from the selection." = "Noch keine Stile. Klicken Sie auf +, um einen aus der Auswahl zu erstellen." +"No text styles yet. Click + to create one from the selected text." = "Noch keine Textstile. Klicken Sie auf +, um einen aus dem ausgewählten Text zu erstellen." +"No variables fit here." = "Hier passen keine Variablen." +"No variables yet. Create them in Local variables." = "Noch keine Variablen. Erstellen Sie sie unter Lokale Variablen." +"Nobody else is here yet" = "Noch niemand sonst hier" +"Noise" = "Rauschen" +"None" = "Keine" +"None." = "Keine." +"Normal" = "Normal" +"Not bound" = "Nicht gebunden" +"Not in a live session" = "Nicht in einer Live-Sitzung" +"Not in this font" = "Nicht in dieser Schrift" +"Not properties, kept as written: {names}" = "Keine Eigenschaften, unverändert übernommen: {names}" +"Not read yet" = "Noch nicht gelesen" +"Note {n}" = "Notiz {n}" +"Nothing changed since this was marked ready for dev." = "Seit der Markierung als bereit für die Entwicklung hat sich nichts geändert." +"Nothing here yet. Set a frame's status to list it." = "Noch nichts hier. Legen Sie den Status eines Rahmens fest, um ihn aufzulisten." +"Nothing to export" = "Nichts zu exportieren" +"Now" = "Jetzt" +"Nudge (Shift: big nudge)" = "Verschieben (Umschalt: großer Schritt)" +"Nudge amount" = "Schrittweite" +"Number" = "Zahl" +"Numbered list" = "Nummerierte Liste" +"Object" = "Objekt" +"Off" = "Aus" +"Offered first when filling the slot (any content is allowed)" = "Werden beim Befüllen des Slots zuerst angeboten (jeder Inhalt ist erlaubt)" +"Offered first when swapping the instance (any component is allowed)" = "Werden beim Tauschen der Instanz zuerst angeboten (jede Komponente ist erlaubt)" +"Offset" = "Versatz" +"On click" = "Bei Klick" +"On drag" = "Beim Ziehen" +"On the server's machine, `figcraft-server key` prints it." = "Auf dem Server-Rechner gibt `figcraft-server key` ihn aus." +"On this page" = "Auf dieser Seite" +"Only the first changed layers are listed." = "Nur die ersten geänderten Ebenen werden aufgeführt." +"Only the first {n} changed layers are listed." = "Nur die ersten {n} geänderten Ebenen werden aufgeführt." +"Only this computer can join (turn on network sharing to invite others)." = "Nur dieser Computer kann beitreten (aktivieren Sie die Netzwerkfreigabe, um andere einzuladen)." +"Only your threads" = "Nur Ihre Threads" +"Opacity" = "Deckkraft" +"Opacity & blend" = "Deckkraft und Mischen" +"Opacity 10%…90%, 0: 100%" = "Deckkraft 10 %…90 %, 0: 100 %" +"Open" = "Öffnen" +"Open .figcraft, .svg or images" = "Öffnen Sie .figcraft-, .svg- oder Bilddateien" +"Open branch" = "Branch öffnen" +"Open file" = "Datei öffnen" +"Open files" = "Geöffnete Dateien" +"Open in focus view" = "In Fokusansicht öffnen" +"Open in new window" = "In neuem Fenster öffnen" +"Open invite links in FigCraft" = "Einladungslinks in FigCraft öffnen" +"Open link" = "Link öffnen" +"Open link {url}" = "Link {url} öffnen" +"Open overlay" = "Overlay öffnen" +"Open prototype preview" = "Prototyp-Vorschau öffnen" +"Open variables ({count})" = "Variablen öffnen ({count})" +"Opened “{name}” in a new tab" = "„{name}“ in neuem Tab geöffnet" +"Open|comments" = "Offen" +"Options" = "Optionen" +"Or keep the file on a FigCraft server and share links to edit or to view it." = "Oder speichern Sie die Datei auf einem FigCraft-Server und teilen Sie Links zum Bearbeiten oder Ansehen." +"Orange" = "Orange" +"Outline stroke" = "Kontur in Pfad umwandeln" +"Outline text" = "Text in Pfade umwandeln" +"Outlines" = "Umrisse" +"Outside" = "Außen" +"Overflow" = "Überlauf" +"Overlay" = "Overlay" +"Overlay position" = "Overlay-Position" +"Overridden here (the collection it extends has another value)" = "Hier überschrieben (die erweiterte Sammlung hat einen anderen Wert)" +"Overrides" = "Überschreibungen" +"PDF print options" = "PDF-Druckoptionen" +"PDF print settings" = "PDF-Druckeinstellungen" +"Padding" = "Innenabstand" +"Page" = "Seite" +"Pages" = "Seiten" +"Pages: {pages}" = "Seiten: {pages}" +"Paint bucket" = "Farbeimer" +"Pan the canvas" = "Arbeitsfläche verschieben" +"Panels" = "Bereiche" +"Paper" = "Papier" +"Paragraph indent" = "Absatzeinzug" +"Paragraph indent applies to left-aligned text" = "Der Absatzeinzug gilt für linksbündigen Text" +"Paragraph spacing" = "Absatzabstand" +"Pass through" = "Durchreichen" +"Paste a link (https://…)" = "Link einfügen (https://…)" +"Paste a team library link (a view link)" = "Link einer Teambibliothek einfügen (ein Ansichtslink)" +"Paste here" = "Hier einfügen" +"Paste the invite link the host shared with you." = "Fügen Sie den Einladungslink ein, den der Host mit Ihnen geteilt hat." +"Paste to replace" = "Zum Ersetzen einfügen" +"Pattern" = "Muster" +"Pattern alignment" = "Musterausrichtung" +"Pattern scale" = "Musterskalierung" +"Pattern source" = "Musterquelle" +"Pen" = "Zeichenstift" +"Pencil" = "Bleistift" +"People in this file" = "Personen in dieser Datei" +"Phone" = "Telefon" +"Pick color" = "Farbe aufnehmen" +"Pick color (I)" = "Farbe aufnehmen (I)" +"Pick one font family first" = "Wählen Sie zuerst eine einzelne Schriftfamilie" +"Pin a property" = "Eigenschaft anheften" +"Pinch" = "Einschnürung" +"Pixel grid" = "Pixelraster" +"Pixel preview 1x" = "Pixelvorschau 1x" +"Pixel preview 2x" = "Pixelvorschau 2x" +"Place automatically" = "Automatisch platzieren" +"Place image" = "Bild platzieren" +"Plugins" = "Plugins" +"Plus darker" = "Plus dunkler" +"Plus lighter" = "Plus heller" +"Point" = "Punkt" +"Points" = "Punkte" +"Polygon" = "Polygon" +"Polygons" = "Polygone" +"Position" = "Position" +"Post" = "Senden" +"Preferences" = "Einstellungen" +"Preferred" = "Bevorzugt" +"Present" = "Präsentieren" +"Present or preview" = "Präsentieren oder Vorschau" +"Present this flow" = "Diesen Ablauf präsentieren" +"Presentation" = "Präsentation" +"Preserve scroll position" = "Scrollposition beibehalten" +"Presets" = "Vorgaben" +"Press a key…" = "Taste drücken…" +"Preview" = "Vorschau" +"Preview this flow" = "Vorschau dieses Ablaufs" +"Preview this frame" = "Vorschau dieses Rahmens" +"Previous ready for dev" = "Vorheriges bereit für Entwicklung" +"Progressive" = "Progressiv" +"Properties" = "Eigenschaften" +"Prototype" = "Prototyp" +"Prototype preview" = "Prototyp-Vorschau" +"Prototype settings" = "Prototyp-Einstellungen" +"Publish" = "Veröffentlichen" +"Publish changes" = "Änderungen veröffentlichen" +"Publish to server" = "Auf Server veröffentlichen" +"Publish to server…" = "Auf Server veröffentlichen…" +"Published version {v}" = "Version {v} veröffentlicht" +"Published version {v} to the server" = "Version {v} auf dem Server veröffentlicht" +"Published version {v}: save the file so other files can use it" = "Version {v} veröffentlicht: Speichern Sie die Datei, damit andere Dateien sie verwenden können" +"Published · {people}" = "Veröffentlicht · {people}" +"Publishing to a server needs the desktop app; in the browser you can join a server's files" = "Zum Veröffentlichen auf einem Server ist die Desktop-App nötig; im Browser können Sie Dateien eines Servers beitreten" +"Publishing…" = "Wird veröffentlicht…" +"Push" = "Schieben" +"Push changes to main component" = "Änderungen an Hauptkomponente übertragen" +"Put text on path" = "Text auf Pfad setzen" +"Radial" = "Radial" +"Radius" = "Radius" +"Ratio" = "Verhältnis" +"Reading the library…" = "Bibliothek wird gelesen…" +"Ready for dev" = "Bereit für Entwicklung" +"Real name" = "Echter Name" +"Recent" = "Zuletzt verwendet" +"Recent files" = "Zuletzt verwendete Dateien" +"Recents" = "Zuletzt verwendet" +"Recovered {n} unsaved files after the app quit unexpectedly: save them to keep them" = { one = "Eine nicht gespeicherte Datei wurde nach dem unerwarteten Beenden der App wiederhergestellt: Speichern Sie sie, um sie zu behalten", other = "{n} nicht gespeicherte Dateien wurden nach dem unerwarteten Beenden der App wiederhergestellt: Speichern Sie sie, um sie zu behalten" } +"Rectangle" = "Rechteck" +"Rectangles" = "Rechtecke" +"Red" = "Rot" +"Reduce motion" = "Bewegung reduzieren" +"Refraction" = "Brechung" +"Remove" = "Entfernen" +"Remove all" = "Alle entfernen" +"Remove annotation" = "Anmerkung entfernen" +"Remove auto layout" = "Auto-Layout entfernen" +"Remove dev resource" = "Entwicklerressource entfernen" +"Remove export setting" = "Exporteinstellung entfernen" +"Remove guide" = "Hilfslinie entfernen" +"Remove interaction" = "Interaktion entfernen" +"Remove library from this file" = "Bibliothek aus dieser Datei entfernen" +"Remove min and max" = "Min. und Max. entfernen" +"Remove min and max height" = "Min. und max. Höhe entfernen" +"Remove min and max width" = "Min. und max. Breite entfernen" +"Remove regions" = "Bereiche entfernen" +"Remove slot" = "Slot entfernen" +"Remove starting point" = "Startpunkt entfernen" +"Remove stop" = "Farbunterbrechung entfernen" +"Remove text from path" = "Text vom Pfad lösen" +"Remove the else and its actions" = "„Sonst“ und seine Aktionen entfernen" +"Remove this condition and its actions" = "Diese Bedingung und ihre Aktionen entfernen" +"Removed" = "Entfernt" +"Removed since it was marked" = "Seit der Markierung entfernt" +"Rename" = "Umbenennen" +"Rename duplicated layers" = "Duplizierte Ebenen umbenennen" +"Rename folder" = "Ordner umbenennen" +"Rename group" = "Gruppe umbenennen" +"Rename mode" = "Modus umbenennen" +"Rename page" = "Seite umbenennen" +"Replace all" = "Alle ersetzen" +"Replace mixed export settings" = "Gemischte Exporteinstellungen ersetzen" +"Replace with" = "Ersetzen durch" +"Replace with a new interaction" = "Durch eine neue Interaktion ersetzen" +"Reply" = "Antworten" +"Reset" = "Zurücksetzen" +"Reset adjustments" = "Anpassungen zurücksetzen" +"Reset all changes" = "Alle Änderungen zurücksetzen" +"Reset all overrides on this layer" = "Alle Überschreibungen dieser Ebene zurücksetzen" +"Reset overrides" = "Überschreibungen zurücksetzen" +"Reset slot" = "Slot zurücksetzen" +"Reset this override" = "Diese Überschreibung zurücksetzen" +"Reset to style" = "Auf Stil zurücksetzen" +"Reset to the inherited value" = "Auf geerbten Wert zurücksetzen" +"Resize by the nudge amount" = "Um die Schrittweite skalieren" +"Resize frames to the device's screen (or the window without a device): their constraints and auto layout respond" = "Passt Rahmen an den Bildschirm des Geräts an (ohne Gerät an das Fenster): ihre Constraints und ihr Auto-Layout reagieren" +"Resize to fit" = "Größe an Inhalt anpassen" +"Resolve" = "Erledigen" +"Resolve change" = "Änderung erledigen" +"Resolved" = "Erledigt" +"Resources" = "Ressourcen" +"Responsive" = "Responsiv" +"Restart" = "Neu starten" +"Restore" = "Wiederherstellen" +"Restore main component" = "Hauptkomponente wiederherstellen" +"Restore this version" = "Diese Version wiederherstellen" +"Restored “{name}”" = "„{name}“ wiederhergestellt" +"Reverse the order" = "Reihenfolge umkehren" +"Reversed triangle" = "Umgekehrtes Dreieck" +"Review and merge" = "Prüfen und zusammenführen" +"Ribbon" = "Band" +"Right" = "Rechts" +"Right side" = "Rechte Seite" +"Right side width" = "Breite der rechten Seite" +"Rotate 90°" = "90° drehen" +"Rotate 90° right" = "90° nach rechts drehen" +"Rotate to landscape" = "Ins Querformat drehen" +"Rotate to portrait" = "Ins Hochformat drehen" +"Rotation" = "Drehung" +"Rotation jitter" = "Drehungsschwankung" +"Round" = "Rund" +"Rounded" = "Abgerundet" +"Row" = "Zeile" +"Row gap" = "Zeilenabstand" +"Row sizes" = "Zeilengrößen" +"Row span" = "Zeilenspanne" +"Rows" = "Zeilen" +"Rows {count}" = "Zeilen {count}" +"Rulers" = "Lineale" +"Run" = "Ausführen" +"Run {label}" = "{label} ausführen" +"Same as layer" = "Wie Ebene" +"Saturation" = "Sättigung" +"Save" = "Speichern" +"Save as" = "Speichern unter" +"Save as preset…" = "Als Vorgabe speichern…" +"Save version {key}" = "Version speichern {key}" +"Saved" = "Gespeichert" +"Saved {name}" = "{name} gespeichert" +"Scale" = "Skalieren" +"Scatter" = "Streuung" +"Scoping: where pickers offer it" = "Geltungsbereich: wo Auswahllisten sie anbieten" +"Screen" = "Umgekehrt multiplizieren" +"Scroll behavior" = "Scrollverhalten" +"Scroll to" = "Scrollen zu" +"Scroll to layer" = "Zur Ebene scrollen" +"Scroll with parent" = "Mit übergeordnetem Element scrollen" +"Search" = "Suchen" +"Search actions, layers and tools" = "Aktionen, Ebenen und Werkzeuge suchen" +"Search assets" = "Assets suchen" +"Search comments" = "Kommentare suchen" +"Search fonts" = "Schriften suchen" +"Search layers" = "Ebenen suchen" +"Search shortcuts" = "Tastenkürzel suchen" +"Section" = "Abschnitt" +"Section color" = "Abschnittsfarbe" +"Sections" = "Abschnitte" +"Select a frame and add a starting point to present it as a flow." = "Wählen Sie einen Rahmen aus und fügen Sie einen Startpunkt hinzu, um ihn als Ablauf zu präsentieren." +"Select a frame to preview it" = "Wählen Sie einen Rahmen für die Vorschau aus" +"Select a layer to see its properties and code" = "Wählen Sie eine Ebene aus, um ihre Eigenschaften und ihren Code zu sehen" +"Select all" = "Alles auswählen" +"Select all with same" = "Alle auswählen mit gleicher" +"Select layer" = "Ebene auswählen" +"Select layers to apply the style to" = "Wählen Sie die Ebenen aus, auf die der Stil angewendet werden soll" +"Select overlapping shapes" = "Wählen Sie überlappende Formen aus" +"Select points to edit their position, radius and mirroring" = "Wählen Sie Punkte aus, um Position, Radius und Spiegelung zu bearbeiten" +"Select slot" = "Slot auswählen" +"Selection" = "Auswahl" +"Selection box, {w} by {h} at {x}, {y}: arrows move it, Shift+arrows size it, Enter selects, Escape cancels" = "Auswahlrahmen, {w} × {h} bei {x}, {y}: Pfeiltasten verschieben ihn, Umschalt+Pfeiltasten ändern die Größe, Eingabe wählt aus, Esc bricht ab" +"Selection box: arrows move it, Shift+arrows size it, Enter selects, Escape cancels" = "Auswahlrahmen: Pfeiltasten verschieben ihn, Umschalt+Pfeiltasten ändern die Größe, Eingabe wählt aus, Esc bricht ab" +"Send backward" = "Eine Ebene nach hinten" +"Send to back" = "In den Hintergrund" +"Server address" = "Serveradresse" +"Set as default" = "Als Standard festlegen" +"Set variable" = "Variable festlegen" +"Set variable mode" = "Variablenmodus festlegen" +"Set variable {name}" = "Variable {name} festlegen" +"Set {name} to {value}" = "{name} auf {value} setzen" +"Shadows" = "Tiefen" +"Shape" = "Form" +"Shape builder" = "Formerstellung" +"Shape tools" = "Formwerkzeuge" +"Share" = "Teilen" +"Share on the local network" = "Im lokalen Netzwerk teilen" +"Share: live session, export" = "Teilen: Live-Sitzung, Export" +"Show" = "Anzeigen" +"Show as grid" = "Als Raster anzeigen" +"Show as list" = "Als Liste anzeigen" +"Show autosaves" = "Automatische Speicherungen anzeigen" +"Show behind transparent areas" = "Hinter transparenten Bereichen anzeigen" +"Show comments (Shift+C)" = "Kommentare anzeigen (Umschalt+C)" +"Show device frame" = "Gerätegehäuse anzeigen" +"Show dimensions on objects" = "Abmessungen an Objekten anzeigen" +"Show hotspot hints" = "Hinweise auf Hotspots anzeigen" +"Show only this on the canvas" = "Nur dies auf der Arbeitsfläche anzeigen" +"Show open" = "Offene anzeigen" +"Show section contents" = "Abschnittsinhalt anzeigen" +"Show this layer" = "Diese Ebene anzeigen" +"Show usage" = "Verwendung anzeigen" +"Show/Hide" = "Ein-/Ausblenden" +"Show/Hide UI" = "Benutzeroberfläche ein-/ausblenden" +"Side by side" = "Nebeneinander" +"Sidebar" = "Seitenleiste" +"Simplify stroke" = "Kontur vereinfachen" +"Size" = "Größe" +"Size jitter" = "Größenschwankung" +"Skip ink" = "Unterlängen aussparen" +"Slashed zero" = "Durchgestrichene Null" +"Slice" = "Slice" +"Slices" = "Slices" +"Slide in" = "Hineinschieben" +"Slide out" = "Herausschieben" +"Slot" = "Slot" +"Slot content" = "Slot-Inhalt" +"Small capitals" = "Kapitälchen" +"Small caps" = "Kapitälchen" +"Smart animate" = "Intelligente Animation" +"Snap to pixel grid" = "Am Pixelraster ausrichten" +"Social media" = "Soziale Medien" +"Soft light" = "Weiches Licht" +"Solid" = "Durchgezogen" +"Some variants have the same property values: give each one a unique combination" = "Einige Varianten haben dieselben Eigenschaftswerte: Geben Sie jeder eine eindeutige Kombination" +"Sort" = "Sortieren" +"Sort by date" = "Nach Datum sortieren" +"Sort by page" = "Nach Seite sortieren" +"Space around" = "Abstand ringsum" +"Space between" = "Abstand dazwischen" +"Space drag" = "Leertaste und Ziehen" +"Space evenly" = "Gleichmäßiger Abstand" +"Space+drag" = "Leertaste+Ziehen" +"Spacing" = "Abstand" +"Splay" = "Spreizung" +"Spread" = "Ausbreitung" +"Square" = "Quadrat" +"Standard" = "Standard" +"Standard ligatures" = "Standardligaturen" +"Star" = "Stern" +"Stars" = "Sterne" +"Start" = "Anfang" +"Start from a blank canvas" = "Mit einer leeren Arbeitsfläche beginnen" +"Start live session" = "Live-Sitzung starten" +"Start on path" = "Anfang auf dem Pfad" +"Start point" = "Startpunkt" +"Status" = "Status" +"Sticky" = "Fixiert" +"Stop following {name}" = "{name} nicht mehr folgen" +"Stop session" = "Sitzung beenden" +"Stop {n} {hex}" = "Farbunterbrechung {n} {hex}" +"Stretch" = "Strecken" +"Strikethrough" = "Durchgestrichen" +"String" = "Zeichenfolge" +"Stroke" = "Kontur" +"Stroke style" = "Konturstil" +"Stroke weight" = "Konturstärke" +"Strokes" = "Konturen" +"Style" = "Stil" +"Styles" = "Stile" +"Stylistic set 1" = "Stilistischer Satz 1" +"Stylistic set 2" = "Stilistischer Satz 2" +"Stylistic set 3" = "Stilistischer Satz 3" +"Stylistic set 4" = "Stilistischer Satz 4" +"Stylistic set 5" = "Stilistischer Satz 5" +"Subtract" = "Subtrahieren" +"Subtracts" = "Subtraktionen" +"Suffix" = "Suffix" +"Swap instance" = "Instanz tauschen" +"Swap library: use another library's assets of the same names" = "Bibliothek tauschen: gleichnamige Assets einer anderen Bibliothek verwenden" +"Swap orientation" = "Ausrichtung wechseln" +"Swap overlay" = "Overlay tauschen" +"Swap to {name}" = "Gegen {name} tauschen" +"Swap width and height" = "Breite und Höhe tauschen" +"Swapped instance" = "Getauschte Instanz" +"Swapped {n} assets" = { one = "{n} Asset getauscht", other = "{n} Assets getauscht" } +"Swapped {n} assets; {missed} had no match and still use the old library" = { one = "{n} Asset getauscht; {missed} ohne Entsprechung verwenden weiter die alte Bibliothek", other = "{n} Assets getauscht; {missed} ohne Entsprechung verwenden weiter die alte Bibliothek" } +"Sweep" = "Winkel" +"System" = "System" +"Tab / Shift+Tab" = "Tab / Umschalt+Tab" +"Table" = "Tabelle" +"Tablet" = "Tablet" +"Tabular numbers" = "Tabellenziffern" +"Take the values from the first selected layer" = "Werte der ersten ausgewählten Ebene übernehmen" +"Taper" = "Verjüngung" +"Taper both ends" = "Beide Enden verjüngen" +"Temperature" = "Temperatur" +"Template" = "Vorlage" +"Text" = "Text" +"Text align" = "Textausrichtung" +"Text content" = "Textinhalt" +"Text style" = "Textstil" +"Text styles" = "Textstile" +"Texts" = "Texte" +"Texture" = "Textur" +"The canvas previews colors in sRGB; exported PNG, JPG and WebP files are tagged Display P3." = "Die Arbeitsfläche zeigt Farben in sRGB an; exportierte PNG-, JPG- und WebP-Dateien werden als Display P3 gekennzeichnet." +"The file now holds another library" = "Die Datei enthält jetzt eine andere Bibliothek" +"The file now holds another library (\"{name}\")" = "Die Datei enthält jetzt eine andere Bibliothek („{name}“)" +"The link carries the session's secret: share it only with people you invite." = "Der Link enthält das Geheimnis der Sitzung: Teilen Sie ihn nur mit eingeladenen Personen." +"The selection uses several text styles: click to apply one" = "Die Auswahl verwendet mehrere Textstile: Klicken Sie, um einen anzuwenden" +"Theme" = "Design" +"There's no destination for that action" = "Für diese Aktion gibt es kein Ziel" +"Thickness" = "Stärke" +"This branch can't be reviewed: {e}" = "Dieser Branch kann nicht geprüft werden: {e}" +"This branch was merged or archived." = "Dieser Branch wurde zusammengeführt oder archiviert." +"This condition is edited as an expression" = "Diese Bedingung wird als Ausdruck bearbeitet" +"This file" = "Diese Datei" +"This file has unsaved changes" = "Diese Datei hat nicht gespeicherte Änderungen" +"This frame is new on the branch." = "Dieser Rahmen ist im Branch neu." +"This frame isn't on the branch." = "Dieser Rahmen ist nicht im Branch." +"Tidy up" = "Aufräumen" +"Tile" = "Kachel" +"Tile type" = "Kacheltyp" +"Tint" = "Tönung" +"Title" = "Titel" +"Title case" = "Großschreibung am Wortanfang" +"To share this library with your team, publish the file to a server (Share ▸ Publish to server…), then publish the library there." = "Um diese Bibliothek mit Ihrem Team zu teilen, veröffentlichen Sie die Datei auf einem Server (Teilen ▸ Auf Server veröffentlichen…) und veröffentlichen Sie dort dann die Bibliothek." +"Toggle" = "Umschalten" +"Toggle light/dark theme" = "Zwischen hellem und dunklem Design wechseln" +"Toggle visibility" = "Sichtbarkeit umschalten" +"Tools" = "Werkzeuge" +"Top" = "Oben" +"Top & bottom" = "Oben und unten" +"Top left radius" = "Radius oben links" +"Top right radius" = "Radius oben rechts" +"Transform" = "Transformieren" +"Triangle arrow" = "Dreieckspfeil" +"Trigger" = "Auslöser" +"True" = "Wahr" +"Truncate text" = "Text kürzen" +"Truncate with an ellipsis" = "Mit Auslassungspunkten kürzen" +"Try another search or filter." = "Versuchen Sie eine andere Suche oder einen anderen Filter." +"Two digits" = "Zweistellig" +"Type" = "Typ" +"Type settings" = "Schrifteinstellungen" +"Typography" = "Typografie" +"Underline" = "Unterstrichen" +"Undo takes back only your own changes; what others changed since stays." = "Rückgängig macht nur Ihre eigenen Änderungen rückgängig; was andere seitdem geändert haben, bleibt." +"Ungroup" = "Gruppierung aufheben" +"Uniform" = "Gleichmäßig" +"Union" = "Vereinigen" +"Unions" = "Vereinigungen" +"Unknown — treated as sRGB" = "Unbekannt – wird als sRGB behandelt" +"Unread" = "Ungelesen" +"Unresolve" = "Wieder öffnen" +"Unsaved changes" = "Nicht gespeicherte Änderungen" +"Unsaved changes in {names}. Close the window and lose them?" = "Nicht gespeicherte Änderungen in {names}. Fenster schließen und Änderungen verwerfen?" +"Unsaved changes: save first ({save}), or close the tab with {alt}-click to discard" = "Nicht gespeicherte Änderungen: Speichern Sie zuerst ({save}) oder schließen Sie den Tab mit {alt}+Klick, um sie zu verwerfen" +"Unsaved changes: save first, or close again with {key} to discard" = "Nicht gespeicherte Änderungen: Speichern Sie zuerst oder schließen Sie erneut mit {key}, um sie zu verwerfen" +"Up" = "Nach oben" +"Update" = "Aktualisieren" +"Update from main" = "Aus Hauptdatei aktualisieren" +"Update from selection" = "Aus Auswahl aktualisieren" +"Updated {components} and {styles}" = "{components} und {styles} aktualisiert" +"Uploads this file to a FigCraft server and keeps this tab in sync with it. You get a link to edit and a link to view." = "Lädt diese Datei auf einen FigCraft-Server hoch und hält diesen Tab mit ihm synchron. Sie erhalten einen Link zum Bearbeiten und einen zum Ansehen." +"Uppercase" = "Großbuchstaben" +"Use a fixed value" = "Festen Wert verwenden" +"Use an expression, e.g. count + 1" = "Ausdruck verwenden, z. B. count + 1" +"Use as mask" = "Als Maske verwenden" +"Use auto layout" = "Auto-Layout verwenden" +"Use number keys for opacity" = "Zifferntasten für Deckkraft verwenden" +"Use the layer's fill" = "Füllung der Ebene verwenden" +"Used in {files} · {instances}" = "Verwendet in {files} · {instances}" +"Username" = "Benutzername" +"Value" = "Wert" +"Variable" = "Variable" +"Variable collections" = "Variablensammlungen" +"Variable modes" = "Variablenmodi" +"Variable width" = "Variable Breite" +"Variables" = "Variablen" +"Variables JSON…" = "Variablen-JSON…" +"Variables store reusable values (colours, numbers, strings, booleans) with modes such as Light and Dark." = "Variablen speichern wiederverwendbare Werte (Farben, Zahlen, Zeichenfolgen, boolesche Werte) mit Modi wie Hell und Dunkel." +"Variant" = "Variante" +"Vector" = "Vektor" +"Vectors" = "Vektoren" +"Version" = "Version" +"Version history" = "Versionsverlauf" +"Version {version}" = "Version {version}" +"Version {v} · {components} · {styles} · {variables}" = "Version {v} · {components} · {styles} · {variables}" +"Vertical" = "Vertikal" +"Vertical align" = "Vertikale Ausrichtung" +"Vertical hex" = "Vertikales Sechseck" +"Vertical padding" = "Vertikaler Innenabstand" +"Vertical spacing" = "Vertikaler Abstand" +"Vertical trim" = "Vertikaler Beschnitt" +"View" = "Ansicht" +"View link" = "Ansichtslink" +"View link copied" = "Ansichtslink kopiert" +"View only" = "Nur ansehen" +"View only: you see every change as it happens but can't edit. Leave to keep a copy you can edit." = "Nur ansehen: Sie sehen jede Änderung live, können aber nicht bearbeiten. Verlassen Sie die Sitzung, um eine bearbeitbare Kopie zu behalten." +"Viewing “{name}”" = "Ansicht von „{name}“" +"Violet" = "Violett" +"Visibility" = "Sichtbarkeit" +"Visible" = "Sichtbar" +"Vivid" = "Lebhaft" +"Warm" = "Warm" +"Watch" = "Smartwatch" +"Wavy" = "Gewellt" +"Web" = "Web" +"WebSocket URL" = "WebSocket-URL" +"WebSocket URL copied" = "WebSocket-URL kopiert" +"Wedge" = "Keil" +"Weight" = "Stärke" +"What changed since it was marked ready for dev" = "Was sich seit der Markierung als bereit für die Entwicklung geändert hat" +"What it's for" = "Wofür sie gedacht ist" +"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." = "Der Ausgangsstand dieser Änderung ist unbekannt: Sie erfolgte, bevor FigCraft Kopien von Rahmen mit dem Status „Bereit für Entwicklung“ aufbewahrte. Erledigen Sie die Änderung (oder markieren Sie den Rahmen erneut als bereit), um ab jetzt zu vergleichen." +"While hovering" = "Beim Überfahren" +"While pressing" = "Beim Drücken" +"White" = "Weiß" +"Why it changed" = "Warum es sich geändert hat" +"Width" = "Breite" +"Width point" = "Breitenpunkt" +"Width profile" = "Breitenprofil" +"With the layers' export settings" = "Mit den Exporteinstellungen der Ebenen" +"Wrap" = "Umbrechen" +"Wrap in new section" = "In neuen Abschnitt einschließen" +"Yellow" = "Gelb" +"Yesterday" = "Gestern" +"You" = "Sie" +"You'll get the host's file as a new tab and edit it together." = "Sie erhalten die Datei des Hosts als neuen Tab und bearbeiten sie gemeinsam." +"Your copy of the file stays open" = "Ihre Kopie der Datei bleibt geöffnet" +"Your name" = "Ihr Name" +"Your name in comments" = "Ihr Name in Kommentaren" +"Your system asks for reduced motion: animations stay off." = "Ihr System verlangt reduzierte Bewegung: Animationen bleiben aus." +"Zoom" = "Zoom" +"Zoom around the pointer" = "Um den Zeiger zoomen" +"Zoom device to fill window" = "Gerät auf Fenstergröße zoomen" +"Zoom in" = "Vergrößern" +"Zoom out" = "Verkleinern" +"Zoom to 100%" = "Auf 100 % zoomen" +"Zoom to 200%" = "Auf 200 % zoomen" +"Zoom to 50%" = "Auf 50 % zoomen" +"Zoom to fit" = "Alles einpassen" +"Zoom to selection" = "Auf Auswahl zoomen" +"Zoom tool: click to zoom in, drag an area" = "Zoomwerkzeug: Klicken zum Vergrößern, Bereich aufziehen" +"Zoom tool: zoom out" = "Zoomwerkzeug: verkleinern" +"and {n} more" = { one = "und {n} weiterer", other = "und {n} weitere" } +"bleed marks" = "Anschnittmarken" +"can edit the document" = "kann das Dokument bearbeiten" +"crop marks" = "Schnittmarken" +"development: {path}" = "Entwicklung: {path}" +"e.g. count + 1" = "z. B. count + 1" +"e.g. count >= 3 and not done" = "z. B. count >= 3 and not done" +"figcraft:// links from a browser, chat or email open this app and join the session." = "figcraft://-Links aus Browser, Chat oder E-Mail öffnen diese App und treten der Sitzung bei." +"hidden" = "ausgeblendet" +"iOS" = "iOS" +"locked" = "gesperrt" +"no bleed" = "kein Anschnitt" +"nobody else here yet" = "noch niemand sonst hier" +"now" = "jetzt" +"or" = "oder" +"reads the document" = "liest das Dokument" +"the plugin" = "das Plugin" +"this session only" = "nur diese Sitzung" +"{instances} in {files}" = "{instances} in {files}" +"{language}: draft translation, waiting for a native speaker's review." = "{language}: Übersetzungsentwurf, wartet auf die Prüfung durch Muttersprachler." +"{length} bleed" = "{length} Anschnitt" +"{name}\nClick to apply to the selection" = "{name}\nKlicken, um es auf die Auswahl anzuwenden" +"{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}\nAuf die Arbeitsfläche ziehen oder klicken, um es in der Mitte der Ansicht zu platzieren.\nHalten Sie beim Ablegen auf einer Instanz Alt (Wahltaste) gedrückt, um sie zu tauschen." +"{name} (from {library})" = "{name} (aus {library})" +"{name} (you)" = "{name} (Sie)" +"{name} ({layers} layers)" = "{name} ({layers} Ebenen)" +"{name} ({tag}): {min} – {max}, default {default}. Double-click the slider to go back to the style's value; Escape while dragging cancels." = "{name} ({tag}): {min} – {max}, Standard {default}. Doppelklicken Sie auf den Regler, um zum Wert des Stils zurückzukehren; Esc während des Ziehens bricht ab." +"{name} from {path}" = "{name} aus {path}" +"{name} · deleted on main" = "{name} · in der Hauptdatei gelöscht" +"{name} · deleted on the branch" = "{name} · im Branch gelöscht" +"{name} · not published" = "{name} · nicht veröffentlicht" +"{name} · on a server" = "{name} · auf einem Server" +"{name} · published version {v}" = "{name} · veröffentlichte Version {v}" +"{name} · version {v} on the server" = "{name} · Version {v} auf dem Server" +"{name}, {kind}, {w} by {h}, selected" = "{name}, {kind}, {w} × {h}, ausgewählt" +"{n} added" = { one = "{n} hinzugefügt", other = "{n} hinzugefügt" } +"{n} autosave versions" = { one = "{n} automatisch gespeicherte Version", other = "{n} automatisch gespeicherte Versionen" } +"{n} changed" = { one = "{n} geändert", other = "{n} geändert" } +"{n} columns" = { one = "{n} Spalte", other = "{n} Spalten" } +"{n} components" = { one = "{n} Komponente", other = "{n} Komponenten" } +"{n} components and styles have newer versions" = { one = "{n} Komponente oder Stil hat eine neuere Version", other = "{n} Komponenten und Stile haben neuere Versionen" } +"{n} conflicts to resolve" = { one = "{n} Konflikt zu lösen", other = "{n} Konflikte zu lösen" } +"{n} days ago" = { one = "vor {n} Tag", other = "vor {n} Tagen" } +"{n} files" = { one = "{n} Datei", other = "{n} Dateien" } +"{n} hours ago" = { one = "vor {n} Stunde", other = "vor {n} Stunden" } +"{n} instances" = { one = "{n} Instanz", other = "{n} Instanzen" } +"{n} layers" = { one = "{n} Ebene", other = "{n} Ebenen" } +"{n} layers as one file" = { one = "{n} Ebene als eine Datei", other = "{n} Ebenen als eine Datei" } +"{n} layers selected" = { one = "{n} Ebene ausgewählt", other = "{n} Ebenen ausgewählt" } +"{n} layers · {parts}" = { one = "{n} Ebene · {parts}", other = "{n} Ebenen · {parts}" } +"{n} matches" = { one = "{n} Treffer", other = "{n} Treffer" } +"{n} minutes ago" = { one = "vor {n} Minute", other = "vor {n} Minuten" } +"{n} months ago" = { one = "vor {n} Monat", other = "vor {n} Monaten" } +"{n} of {total}" = "{n} von {total}" +"{n} people joined" = { one = "{n} Person ist beigetreten", other = "{n} Personen sind beigetreten" } +"{n} preferred components" = { one = "{n} bevorzugte Komponente", other = "{n} bevorzugte Komponenten" } +"{n} ready" = { one = "{n} bereit", other = "{n} bereit" } +"{n} removed" = { one = "{n} entfernt", other = "{n} entfernt" } +"{n} replies" = { one = "{n} Antwort", other = "{n} Antworten" } +"{n} rows" = { one = "{n} Zeile", other = "{n} Zeilen" } +"{n} styles" = { one = "{n} Stil", other = "{n} Stile" } +"{n} variables" = { one = "{n} Variable", other = "{n} Variablen" } +"{n} weeks ago" = { one = "vor {n} Woche", other = "vor {n} Wochen" } +"{n} years ago" = { one = "vor {n} Jahr", other = "vor {n} Jahren" } +"{n}d" = "{n} T." +"{n}h" = "{n} Std." +"{n}m" = "{n} Min." +"{n}w" = "{n} Wo." +"{page}, nothing selected" = "{page}, nichts ausgewählt" +"{profile} (current)" = "{profile} (aktuell)" +"{property} is its value; {property ? \"a\" : \"b\"} picks a string. Other {…} stays as written." = "{property} ist ihr Wert; {property ? \"a\" : \"b\"} wählt eine Zeichenfolge. Jedes andere {…} bleibt unverändert." +"{tool} hold {key}" = "{tool} {key} gedrückt halten" +"{value} isn't a colour" = "{value} ist keine Farbe" +"{when} · edited" = "{when} · bearbeitet" +"← ↑ → ↓" = "← ↑ → ↓" +"⇥ / ⇧⇥" = "⇥ / ⇧⇥" +"⌘ arrows" = "⌘ Pfeiltasten" +"⌘ click" = "⌘ Klick" +"⌘ scroll" = "⌘ Scrollen" +"⌥ drag" = "⌥ Ziehen" + +[commands] +"align.bottom" = "Unten ausrichten" +"align.hcenter" = "Horizontal zentrieren" +"align.left" = "Links ausrichten" +"align.right" = "Rechts ausrichten" +"align.top" = "Oben ausrichten" +"align.vcenter" = "Vertikal zentrieren" +"annotation.add" = "Anmerkung hinzufügen" +"annotation.addCategory" = "Anmerkungskategorie hinzufügen" +"annotation.categories" = "Anmerkungskategorien" +"annotation.edit" = "Anmerkung bearbeiten" +"annotation.editCategory" = "Anmerkungskategorie bearbeiten" +"annotation.list" = "Anmerkungen auflisten" +"annotation.remove" = "Anmerkung entfernen" +"annotation.removeCategory" = "Anmerkungskategorie löschen" +"app.actions" = "Aktionen" +"app.preferences" = "Einstellungen" +"arrange.back" = "In den Hintergrund" +"arrange.backward" = "Eine Ebene nach hinten" +"arrange.forward" = "Eine Ebene nach vorne" +"arrange.front" = "In den Vordergrund" +"arrange.packH" = "Horizontal zusammenschieben" +"arrange.packV" = "Vertikal zusammenschieben" +"arrange.roundToPixels" = "Auf Pixel runden" +"arrange.tidy" = "Aufräumen" +"bool.exclude" = "Auswahl ausschließen" +"bool.flatten" = "Boolesche Gruppe zusammenfügen" +"bool.intersect" = "Schnittmenge der Auswahl" +"bool.subtract" = "Auswahl subtrahieren" +"bool.union" = "Auswahl vereinigen" +"branch.archive" = "Branch archivieren" +"branch.create" = "Branch erstellen" +"branch.list" = "Branches auflisten" +"branch.merge" = "Branch zusammenführen" +"branch.open" = "Branch öffnen" +"branch.review" = "Branch prüfen" +"branch.updateFromMain" = "Aus Hauptdatei aktualisieren" +"codeConnect.export" = "Code-Verbindungen exportieren" +"codeConnect.import" = "Code-Verbindungen importieren" +"codeConnect.remove" = "Vom Code trennen" +"codeConnect.set" = "Mit Code verbinden" +"collab.cursor" = "Cursor anzeigen bei" +"collab.diff" = "Synchronisierte Änderungen anzeigen" +"collab.follow" = "Folgen" +"collab.host" = "Live-Sitzung starten" +"collab.join" = "Live-Sitzung beitreten" +"collab.leave" = "Live-Sitzung verlassen" +"collab.peers" = "Personen in dieser Datei" +"collab.publish" = "Auf Server veröffentlichen" +"collab.registerLinks" = "Einladungslinks in FigCraft öffnen" +"collab.stop" = "Live-Sitzung beenden" +"command.batch" = "Mehrere Befehle ausführen" +"comment.add" = "Kommentar hinzufügen" +"comment.delete" = "Kommentar löschen" +"comment.edit" = "Kommentar bearbeiten" +"comment.link" = "Link zum Kommentar kopieren" +"comment.list" = "Kommentare auflisten" +"comment.markRead" = "Kommentar als gelesen markieren" +"comment.move" = "Kommentar verschieben" +"comment.next" = "Nächster Kommentar" +"comment.open" = "Kommentar öffnen" +"comment.people" = "Personen in Kommentaren" +"comment.react" = "Auf Kommentar reagieren" +"comment.reply" = "Auf Kommentar antworten" +"comment.resolve" = "Kommentar erledigen" +"comment.zoom" = "Auf Kommentare zoomen" +"component.addProperty" = "Komponenteneigenschaft hinzufügen" +"component.addVariant" = "Variante hinzufügen" +"component.bindProperty" = "Ebene an Eigenschaft binden" +"component.combineVariants" = "Als Varianten kombinieren" +"component.create" = "Komponente erstellen" +"component.createMultiple" = "Mehrere Komponenten erstellen" +"component.deleteProperty" = "Komponenteneigenschaft löschen" +"component.detach" = "Instanz lösen" +"component.editProperty" = "Komponenteneigenschaft bearbeiten" +"component.exposeInstance" = "Verschachtelte Instanz freigeben" +"component.goToMain" = "Zur Hauptkomponente" +"component.list" = "Komponenten auflisten" +"component.makeSlot" = "Slot erstellen" +"component.properties" = "Komponenteneigenschaften" +"component.pushChanges" = "Änderungen an Hauptkomponente übertragen" +"component.removeSlot" = "Slot entfernen" +"component.resetInstance" = "Alle Änderungen zurücksetzen" +"component.resetOverride" = "Überschreibung zurücksetzen" +"component.restoreMain" = "Hauptkomponente wiederherstellen" +"dev.compare" = "Änderungen vergleichen" +"dev.focus" = "Fokusansicht" +"dev.resolveChange" = "Änderung erledigen" +"dev.unfocus" = "Fokusansicht verlassen" +"devResource.add" = "Entwicklerressource hinzufügen" +"devResource.edit" = "Entwicklerressource bearbeiten" +"devResource.list" = "Entwicklerressourcen auflisten" +"devResource.remove" = "Entwicklerressource entfernen" +"distribute.horizontal" = "Horizontale Abstände verteilen" +"distribute.vertical" = "Vertikale Abstände verteilen" +"doc.home" = "Start" +"doc.list" = "Dokumente auflisten" +"doc.nextTab" = "Nächster Tab" +"doc.previousTab" = "Vorheriger Tab" +"doc.switch" = "Dokument wechseln" +"edit.copy" = "Kopieren" +"edit.copyAsCss" = "Als CSS kopieren" +"edit.copyAsPng" = "Als PNG kopieren" +"edit.copyAsSvg" = "Als SVG kopieren" +"edit.copyAsText" = "Als Text kopieren" +"edit.copyLink" = "Link zur Auswahl kopieren" +"edit.copyProperties" = "Eigenschaften kopieren" +"edit.cut" = "Ausschneiden" +"edit.delete" = "Löschen" +"edit.duplicate" = "Duplizieren" +"edit.findReplace" = "Suchen und ersetzen" +"edit.paste" = "Einfügen" +"edit.pasteOver" = "Über Auswahl einfügen" +"edit.pasteProperties" = "Eigenschaften einfügen" +"edit.pasteReplace" = "Zum Ersetzen einfügen" +"edit.pickColor" = "Farbe aufnehmen" +"edit.redo" = "Wiederholen" +"edit.repeat" = "Letzten Befehl wiederholen" +"edit.setDefaultProperties" = "Standardeigenschaften festlegen" +"edit.undo" = "Rückgängig" +"effect.add" = "Effekt hinzufügen" +"effect.move" = "Effekt verschieben" +"effect.remove" = "Effekt entfernen" +"effect.set" = "Effekt festlegen" +"export.add" = "Exporteinstellung hinzufügen" +"export.remove" = "Exporteinstellung entfernen" +"export.update" = "Exporteinstellung bearbeiten" +"file.close" = "Tab schließen" +"file.colorProfile" = "Farbprofil" +"file.duplicate" = "Datei duplizieren" +"file.export" = "Exportieren" +"file.exportFramesPdf" = "Rahmen als PDF exportieren" +"file.exportLayers" = "Ebenen exportieren" +"file.exportSvg" = "Auswahl als SVG exportieren" +"file.import" = "Importieren" +"file.new" = "Neue Designdatei" +"file.open" = "Öffnen" +"file.openRecent" = "Zuletzt verwendete öffnen" +"file.placeImage" = "Bild platzieren" +"file.recover" = "Datei wiederherstellen" +"file.rename" = "Datei umbenennen" +"file.revert" = "Auf gespeicherte Version zurücksetzen" +"file.save" = "Speichern" +"file.saveAs" = "Speichern unter" +"file.saveVersion" = "Im Versionsverlauf speichern" +"file.versionHistory" = "Versionsverlauf anzeigen" +"fill.add" = "Füllung hinzufügen" +"fill.move" = "Füllung verschieben" +"fill.pattern" = "Musterfüllung" +"fill.remove" = "Füllung entfernen" +"fill.set" = "Füllung festlegen" +"frame.create" = "Rahmen erstellen" +"frame.presets" = "Rahmenvorgaben auflisten" +"frame.swapOrientation" = "Ausrichtung wechseln" +"grid.add" = "Layoutraster hinzufügen" +"grid.move" = "Layoutraster verschieben" +"grid.remove" = "Layoutraster entfernen" +"guide.add" = "Hilfslinie hinzufügen" +"guide.clear" = "Alle Hilfslinien entfernen" +"guide.move" = "Hilfslinie verschieben" +"guide.remove" = "Hilfslinie entfernen" +"guide.select" = "Hilfslinie auswählen" +"help.about" = "Über FigCraft" +"help.page" = "Hilfeseite" +"help.shortcuts" = "Tastenkürzel" +"image.adjust" = "Bild anpassen" +"image.deletePreset" = "Bildvorgabe löschen" +"image.place" = "Bild platzieren" +"image.presets" = "Bildvorgaben" +"image.savePreset" = "Bildvorgabe speichern" +"inspect.assets" = "Assets prüfen" +"inspect.code" = "Code der Ebene" +"inspect.componentCode" = "Komponentencode" +"inspect.properties" = "Eigenschaften prüfen" +"inspect.readyForDev" = "Bereit für Entwicklung" +"instance.create" = "Instanz erstellen" +"instance.exposed" = "Freigegebene verschachtelte Instanzen" +"instance.place" = "Instanz platzieren" +"instance.resetSlot" = "Slot zurücksetzen" +"instance.setProperties" = "Instanzeigenschaften festlegen" +"instance.slotInsert" = "In Slot einfügen" +"instance.swap" = "Instanz tauschen" +"instance.swapAt" = "Instanz an einem Punkt tauschen" +"layers.collapseAll" = "Ebenen einklappen" +"layout.add" = "Auto-Layout hinzufügen" +"layout.remove" = "Auto-Layout entfernen" +"layout.setTrack" = "Größe der Rasterspur festlegen" +"layout.suggest" = "Auto-Layout vorschlagen" +"libraries.open" = "Bibliotheken" +"libraries.publish" = "Bibliothek veröffentlichen…" +"library.acceptUpdates" = "Bibliotheksaktualisierungen übernehmen" +"library.add" = "Bibliothek hinzufügen" +"library.aliasVariable" = "Alias für Bibliotheksvariable" +"library.applyStyle" = "Bibliotheksstil anwenden" +"library.bindVariable" = "Bibliotheksvariable binden" +"library.extendCollection" = "Bibliothekssammlung erweitern" +"library.import" = "Bibliothekskomponente importieren" +"library.importVariable" = "Bibliotheksvariable importieren" +"library.list" = "Bibliotheken auflisten" +"library.place" = "Bibliothekskomponente platzieren" +"library.publish" = "Bibliothek veröffentlichen" +"library.publishToServer" = "Bibliothek auf Server veröffentlichen" +"library.remove" = "Bibliothek entfernen" +"library.setVariableMode" = "Modus der Bibliotheksvariablen festlegen" +"library.swap" = "Bibliothek tauschen" +"library.swapAt" = "Instanz gegen Bibliothekskomponente tauschen" +"library.updates" = "Bibliotheksaktualisierungen" +"library.usage" = "Bibliotheksverwendung" +"measure.distances" = "Abstände messen" +"measure.padding" = "Innenabstand des Auto-Layouts messen" +"node.create" = "Ebene erstellen" +"node.get" = "Ebene abrufen" +"node.reorder" = "Ebene neu anordnen" +"node.reparent" = "Ebene verschieben in" +"node.set" = "Eigenschaften festlegen" +"object.batchRename" = "Stapelumbenennung" +"object.flipH" = "Horizontal spiegeln" +"object.flipV" = "Vertikal spiegeln" +"object.frameSelection" = "Auswahl einrahmen" +"object.group" = "Auswahl gruppieren" +"object.hideOthers" = "Andere Ebenen ausblenden" +"object.mask" = "Als Maske verwenden" +"object.moveToPage" = "Auf Seite verschieben" +"object.opacityKeys" = "Deckkraft über Zifferntasten" +"object.rasterize" = "Auswahl rastern" +"object.releaseMask" = "Maske zurückwandeln" +"object.removeFill" = "Füllung entfernen" +"object.removeFrame" = "Rahmen entfernen" +"object.removeStroke" = "Kontur entfernen" +"object.rename" = "Umbenennen" +"object.resizeToFit" = "Größe an Inhalt anpassen" +"object.rotate180" = "180° drehen" +"object.rotateLeft" = "90° nach links drehen" +"object.rotateRight" = "90° nach rechts drehen" +"object.setThumbnail" = "Als Miniatur festlegen" +"object.swapFillStroke" = "Füllung und Kontur tauschen" +"object.toggleLock" = "Auswahl sperren/entsperren" +"object.toggleVisible" = "Auswahl ein-/ausblenden" +"object.ungroup" = "Gruppierung der Auswahl aufheben" +"object.wrapInSection" = "In neuen Abschnitt einschließen" +"page.add" = "Seite hinzufügen" +"page.delete" = "Seite löschen" +"page.duplicate" = "Seite duplizieren" +"page.list" = "Seiten auflisten" +"page.move" = "Seite verschieben" +"page.rename" = "Seite umbenennen" +"page.select" = "Zur Seite" +"page.setBackground" = "Seitenhintergrund" +"paint.documentColors" = "Dokumentfarben" +"plugin.close" = "Plugin-Bereich schließen" +"plugin.event" = "Steuerelement im Plugin-Bereich verwenden" +"plugin.import" = "Plugin aus Manifest importieren…" +"plugin.list" = "Plugins auflisten" +"plugin.remove" = "Plugin entfernen" +"plugin.run" = "Plugin ausführen" +"plugin.ui" = "Plugin-Bereich" +"plugins.manage" = "Plugins verwalten…" +"plugins.runLast" = "Letztes Plugin ausführen" +"pref.highlightHover" = "Ebenen beim Überfahren hervorheben" +"pref.keepTool" = "Werkzeug nach Verwendung ausgewählt lassen" +"pref.language" = "Sprache der Benutzeroberfläche" +"pref.nudge" = "Schrittweite" +"pref.numberKeysOpacity" = "Zifferntasten für Deckkraft verwenden" +"pref.reduceMotion" = "Bewegung reduzieren" +"pref.renameDuplicates" = "Duplizierte Ebenen umbenennen" +"pref.showDimensions" = "Abmessungen an Objekten anzeigen" +"pref.userName" = "Ihr Name in Kommentaren" +"proto.action.add" = "Prototyp-Aktion hinzufügen" +"proto.action.move" = "Prototyp-Aktion neu anordnen" +"proto.action.remove" = "Prototyp-Aktion entfernen" +"proto.action.set" = "Prototyp-Aktion bearbeiten" +"proto.closePreview" = "Prototyp-Vorschau schließen" +"proto.conditional.addBlock" = "Sonst wenn / Sonst hinzufügen" +"proto.conditional.removeBlock" = "Wenn / Sonst wenn / Sonst entfernen" +"proto.conditional.setCondition" = "Bedingung bearbeiten" +"proto.flow.add" = "Startpunkt für Ablauf hinzufügen" +"proto.flow.remove" = "Ablauf entfernen" +"proto.flow.rename" = "Ablauf umbenennen" +"proto.interaction.add" = "Interaktion hinzufügen" +"proto.interaction.clear" = "Alle Interaktionen entfernen" +"proto.interaction.remove" = "Interaktion entfernen" +"proto.interaction.set" = "Interaktion bearbeiten" +"proto.present" = "Präsentieren" +"proto.presentOptions" = "Präsentationsoptionen" +"proto.preview" = "Prototyp-Vorschau öffnen" +"proto.settings" = "Prototyp-Einstellungen" +"section.toggleContents" = "Abschnittsinhalt aus-/einblenden" +"select.add" = "Zur Auswahl hinzufügen" +"select.all" = "Alles auswählen" +"select.area" = "Bereich auswählen" +"select.byName" = "Ebenen nach Name auswählen" +"select.children" = "Untergeordnete auswählen" +"select.inverse" = "Auswahl umkehren" +"select.layersAt" = "Ebenen an einem Punkt" +"select.matching" = "Passende Ebenen auswählen" +"select.next" = "Nächstes Element auswählen" +"select.none" = "Auswahl aufheben" +"select.parent" = "Übergeordnetes Element auswählen" +"select.previous" = "Vorheriges Element auswählen" +"select.remove" = "Aus Auswahl entfernen" +"select.sameEffect" = "Gleichen Effekt auswählen" +"select.sameFill" = "Gleiche Füllung auswählen" +"select.sameFont" = "Gleiche Schrift auswählen" +"select.sameInstance" = "Gleiche Instanz auswählen" +"select.sameProperties" = "Gleiche Eigenschaften auswählen" +"select.sameStroke" = "Gleiche Kontur auswählen" +"select.sameText" = "Gleiche Texteigenschaften auswählen" +"select.set" = "Auswählen" +"shape.arrow" = "Pfeil" +"shape.ellipse" = "Ellipse" +"shape.line" = "Linie" +"shape.polygon" = "Polygon" +"shape.rectangle" = "Rechteck" +"shape.star" = "Stern" +"shapeBuilder.merge" = "Bereiche vereinen" +"shapeBuilder.mode" = "Modus der Formerstellung" +"shapeBuilder.regions" = "Bereiche der Formerstellung" +"shapeBuilder.remove" = "Bereiche entfernen" +"stroke.add" = "Kontur hinzufügen" +"stroke.brush" = "Pinsel" +"stroke.move" = "Kontur verschieben" +"stroke.remove" = "Kontur entfernen" +"stroke.set" = "Kontur festlegen" +"stroke.widthProfile" = "Breitenprofil" +"style.apply" = "Stil anwenden" +"style.create" = "Stil erstellen" +"style.delete" = "Stil löschen" +"style.detach" = "Stil lösen" +"style.duplicate" = "Stil duplizieren" +"style.list" = "Stile auflisten" +"style.move" = "Stile verschieben" +"style.renameFolder" = "Stilordner umbenennen" +"style.update" = "Stil bearbeiten" +"text.alignCenter" = "Zentrieren" +"text.alignJustify" = "Blocksatz" +"text.alignLeft" = "Linksbündig" +"text.alignRight" = "Rechtsbündig" +"text.bold" = "Fett" +"text.bulletList" = "Aufzählungsliste" +"text.case" = "Groß-/Kleinschreibung" +"text.caseLower" = "Kleinbuchstaben" +"text.caseOriginal" = "Originalschreibung" +"text.caseSmallCaps" = "Kapitälchen" +"text.caseTitle" = "Großschreibung am Wortanfang" +"text.caseUpper" = "Großbuchstaben" +"text.create" = "Text" +"text.decoration" = "Auszeichnung" +"text.edit.begin" = "Text bearbeiten" +"text.edit.caret" = "Textcursor setzen" +"text.edit.end" = "Textbearbeitung beenden" +"text.edit.insert" = "Text eingeben" +"text.edit.key" = "Texttaste" +"text.edit.preedit" = "Text zusammensetzen (IME)" +"text.edit.selectLine" = "Zeile auswählen" +"text.edit.selectWord" = "Wort auswählen" +"text.edit.selection" = "Textauswahl" +"text.endPreview" = "Textvorschau beenden" +"text.fonts" = "Schriften auflisten" +"text.italic" = "Kursiv" +"text.lineHeightDown" = "Zeilenhöhe verringern" +"text.lineHeightUp" = "Zeilenhöhe erhöhen" +"text.link" = "Link erstellen" +"text.listStyle" = "Listenstil" +"text.maxLines" = "Max. Zeilen" +"text.numberList" = "Nummerierte Liste" +"text.onPath" = "Text auf Pfad" +"text.paragraphIndent" = "Absatzeinzug" +"text.paragraphSpacing" = "Absatzabstand" +"text.pathOptions" = "Optionen für Pfadtext" +"text.preview" = "Textänderung in der Vorschau" +"text.removeFromPath" = "Text vom Pfad lösen" +"text.set" = "Text festlegen" +"text.setFeatures" = "OpenType-Funktionen" +"text.setVariations" = "Achsen variabler Schriften" +"text.sizeDown" = "Schriftgröße verringern" +"text.sizeUp" = "Schriftgröße erhöhen" +"text.strikethrough" = "Durchgestrichen" +"text.style" = "Textbereich formatieren" +"text.trackingDown" = "Zeichenabstand verringern" +"text.trackingUp" = "Zeichenabstand erhöhen" +"text.underline" = "Unterstrichen" +"text.weightDown" = "Schriftstärke verringern" +"text.weightUp" = "Schriftstärke erhöhen" +"tool.arrow" = "Pfeil" +"tool.comment" = "Kommentar" +"tool.ellipse" = "Ellipse" +"tool.frame" = "Rahmen" +"tool.hand" = "Hand" +"tool.line" = "Linie" +"tool.move" = "Verschieben" +"tool.pen" = "Zeichenstift" +"tool.pencil" = "Bleistift" +"tool.pencilBrush" = "Bleistiftpinsel" +"tool.polygon" = "Polygon" +"tool.rectangle" = "Rechteck" +"tool.scale" = "Skalieren" +"tool.scaleAnchor" = "Skalierungsanker" +"tool.section" = "Abschnitt" +"tool.set" = "Werkzeug wählen" +"tool.shapeBuilder" = "Formerstellung" +"tool.slice" = "Slice" +"tool.star" = "Stern" +"tool.text" = "Text" +"transform.move" = "Verschieben" +"transform.moveTo" = "Verschieben nach" +"transform.nudge" = "Schrittweise verschieben" +"transform.nudgeSize" = "Schrittweise skalieren" +"transform.resize" = "Größe ändern" +"transform.rotate" = "Drehen" +"transform.scale" = "Skalieren" +"variable.addMode" = "Modus hinzufügen" +"variable.bind" = "Variable binden" +"variable.create" = "Variable erstellen" +"variable.createCollection" = "Variablensammlung erstellen" +"variable.delete" = "Variable löschen" +"variable.deleteCollection" = "Sammlung löschen" +"variable.duplicate" = "Variable duplizieren" +"variable.export" = "Variablen exportieren" +"variable.import" = "Variablen importieren" +"variable.list" = "Variablen auflisten" +"variable.moveMode" = "Modus verschieben" +"variable.removeMode" = "Modus löschen" +"variable.renameCollection" = "Sammlung umbenennen" +"variable.renameMode" = "Modus umbenennen" +"variable.resetOverride" = "Variablenüberschreibung zurücksetzen" +"variable.set" = "Variablenwert festlegen" +"variable.setMode" = "Variablenmodus festlegen" +"variable.update" = "Variable bearbeiten" +"vector.create" = "Vektor" +"vector.deleteHeal" = "Auswahl löschen und Pfad schließen" +"vector.edit.addVertex" = "Punkt hinzufügen" +"vector.edit.begin" = "Vektor bearbeiten" +"vector.edit.bend" = "Segment biegen" +"vector.edit.bounds" = "Begrenzung der ausgewählten Punkte" +"vector.edit.connect" = "Punkte verbinden" +"vector.edit.cornerRadius" = "Eckenradius des Punkts" +"vector.edit.cut" = "Pfad schneiden" +"vector.edit.delete" = "Punkte löschen" +"vector.edit.end" = "Bearbeitung beenden" +"vector.edit.erase" = "Radieren" +"vector.edit.lasso" = "Lasso-Auswahl" +"vector.edit.mirroring" = "Griffspiegelung" +"vector.edit.moveHandles" = "Griffe verschieben" +"vector.edit.moveVertices" = "Punkte verschieben" +"vector.edit.nudge" = "Punkte schrittweise verschieben" +"vector.edit.paint" = "Farbeimer" +"vector.edit.pen" = "Zeichenstiftpunkt" +"vector.edit.penEnd" = "Zeichenstiftpfad beenden" +"vector.edit.position" = "Punktposition" +"vector.edit.resize" = "Punkte skalieren" +"vector.edit.rotate" = "Punkte drehen" +"vector.edit.select" = "Punkte auswählen" +"vector.edit.selectAll" = "Alle Punkte auswählen" +"vector.edit.setHandle" = "Griff festlegen" +"vector.edit.smooth" = "Punkte glätten oder schärfen" +"vector.edit.state" = "Status der Vektorbearbeitung" +"vector.edit.strokeCap" = "Konturende am Punkt" +"vector.edit.strokeJoin" = "Konturecke am Punkt" +"vector.edit.tool" = "Vektorbearbeitungswerkzeug" +"vector.edit.transform" = "Punkte transformieren" +"vector.edit.widthPoint" = "Breitenpunkt" +"vector.flatten" = "Zusammenfügen" +"vector.join" = "Auswahl verbinden" +"vector.offset" = "Pfad versetzen" +"vector.outlineStroke" = "Kontur in Pfad umwandeln" +"vector.reverse" = "Pfadrichtung umkehren" +"vector.simplify" = "Vektor vereinfachen" +"vector.smoothJoin" = "Auswahl glatt verbinden" +"version.autosave" = "Version automatisch speichern" +"version.delete" = "Version löschen" +"version.duplicate" = "Version duplizieren" +"version.exitPreview" = "Zurück zur aktuellen Version" +"version.list" = "Versionen auflisten" +"version.preview" = "Version ansehen" +"version.rename" = "Version umbenennen" +"version.restore" = "Version wiederherstellen" +"view.assets" = "Bereich Assets" +"view.comments" = "Kommentare" +"view.contextMenu" = "Kontextmenü anzeigen" +"view.design" = "Bereich Design" +"view.designPrototype" = "Zwischen Design und Prototyp wechseln" +"view.devMode" = "Entwicklermodus" +"view.frameOutlines" = "Rahmenumrisse" +"view.get" = "Ansicht abrufen" +"view.layers" = "Bereich Ebenen" +"view.layoutGrids" = "Layoutraster" +"view.leftSidebar" = "Linke Seitenleiste ein-/ausblenden" +"view.maskOutlines" = "Maskenumrisse" +"view.nextFrame" = "Auf nächsten Rahmen zoomen" +"view.nextPage" = "Nächste Seite" +"view.nextRegion" = "Nächsten Bereich fokussieren" +"view.outlines" = "Umrisse" +"view.outlinesSelection" = "Umrisse der Auswahl" +"view.pixelGrid" = "Pixelraster" +"view.pixelPreview" = "Pixelvorschau" +"view.prevFrame" = "Auf vorherigen Rahmen zoomen" +"view.prevPage" = "Vorherige Seite" +"view.previousRegion" = "Vorherigen Bereich fokussieren" +"view.proofSrgb" = "Softproof sRGB" +"view.prototype" = "Bereich Prototyp" +"view.rulers" = "Lineale" +"view.set" = "Ansicht festlegen" +"view.slices" = "Slices" +"view.snapGeometry" = "An Geometrie ausrichten" +"view.snapObjects" = "An Objekten ausrichten" +"view.snapPixel" = "Am Pixelraster ausrichten" +"view.themeDark" = "Dunkles Design" +"view.themeLight" = "Helles Design" +"view.themeSystem" = "Systemdesign folgen" +"view.toggleUi" = "Benutzeroberfläche ein-/ausblenden" +"view.zoom100" = "Auf 100 % zoomen" +"view.zoom200" = "Auf 200 % zoomen" +"view.zoom50" = "Auf 50 % zoomen" +"view.zoomAt" = "Zoomwerkzeug" +"view.zoomFit" = "Alles einpassen" +"view.zoomIn" = "Vergrößern" +"view.zoomOut" = "Verkleinern" +"view.zoomSelection" = "Auf Auswahl zoomen" +"window.focus" = "Fenster in den Vordergrund holen" +"window.new" = "Neues Fenster" + +[menu] +"bool.exclude" = "Ausschließen" +"bool.flatten" = "Zusammenfügen" +"bool.intersect" = "Schnittmenge" +"bool.subtract" = "Subtrahieren" +"bool.union" = "Vereinigen" +"file.duplicate" = "Duplizieren" +"file.import" = "Aus Datei importieren…" +"file.rename" = "Umbenennen" +"libraries.open" = "Bibliotheken öffnen" +"select.sameEffect" = "Effekt" +"select.sameFill" = "Füllung" +"select.sameFont" = "Schrift" +"select.sameInstance" = "Instanz" +"select.sameProperties" = "Eigenschaften" +"select.sameStroke" = "Kontur" +"select.sameText" = "Texteigenschaften" +"text.alignCenter" = "Text zentrieren" +"text.alignJustify" = "Text im Blocksatz" +"text.alignLeft" = "Text linksbündig" +"text.alignRight" = "Text rechtsbündig" +"view.assets" = "Assets" +"view.design" = "Design" +"view.layers" = "Ebenen" +"view.outlines" = "Umrisse anzeigen" +"view.outlinesSelection" = "Umrisse der Auswahl anzeigen" +"view.prototype" = "Prototyp" +"view.themeDark" = "Dunkel" +"view.themeLight" = "Hell" +"view.themeSystem" = "System folgen" diff --git a/crates/ui-egui/locales/fr.toml b/crates/ui-egui/locales/fr.toml new file mode 100644 index 0000000..beef9b0 --- /dev/null +++ b/crates/ui-egui/locales/fr.toml @@ -0,0 +1,1914 @@ +# FigCraft interface strings: French. +# +# Draft — needs native review: machine-drafted from the English catalog. Brand names and keyboard +# glyphs stay as they are. French typography: a no-break space ( ) before : ; ? ! and inside +# « », and between a number and %. See docs/translating.md. + +[meta] +name = "Français" +status = "draft — needs native review" + +[ui] +"% of all commits" = "% de tous les commits" +"(no longer published)" = "(plus publié)" +"({n} warnings: some entries were skipped)" = { one = "({n} avertissement : certaines entrées ont été ignorées)", other = "({n} avertissements : certaines entrées ont été ignorées)" } +"+ Create variable" = "+ Créer une variable" +"1…9, 0" = "1…9, 0" +"@{login}: {prs} PRs, {commits} commits, +{added} / −{deleted} lines (Δ {delta}), +{bin_added} / −{bin_deleted} binary assets, {first} – {last}" = "@{login} : {prs} PR, {commits} commits, +{added} / −{deleted} lignes (Δ {delta}), +{bin_added} / −{bin_deleted} ressources binaires, {first} – {last}" +"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 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" +"About" = "À propos" +"About FigCraft" = "À propos de FigCraft" +"Action" = "Action" +"Actions" = "Actions" +"Actions…" = "Actions…" +"Active" = "Active" +"Actual size (100%)" = "Taille réelle (100 %)" +"Add a category" = "Ajouter une catégorie" +"Add a comment" = "Ajouter un commentaire" +"Add a description" = "Ajouter une description" +"Add a frame (F) or a shape (R) to get started" = "Ajoutez un cadre (F) ou une forme (R) pour commencer" +"Add a layer or component to tile first" = "Ajoutez d’abord un calque ou un composant à répéter en mosaïque" +"Add a note for developers" = "Ajouter une note pour les développeurs" +"Add action" = "Ajouter une action" +"Add actions for when no condition holds" = "Ajouter des actions pour le cas où aucune condition n’est remplie" +"Add an annotation for developers" = "Ajouter une annotation pour les développeurs" +"Add another condition" = "Ajouter une autre condition" +"Add auto layout" = "Ajouter la mise en page auto" +"Add background behind overlay" = "Ajouter un fond derrière la superposition" +"Add content to this slot" = "Ajouter du contenu à cet emplacement" +"Add dev resource" = "Ajouter une ressource de développement" +"Add effect" = "Ajouter un effet" +"Add export setting" = "Ajouter un réglage d’exportation" +"Add fill" = "Ajouter un remplissage" +"Add interaction" = "Ajouter une interaction" +"Add layout grid" = "Ajouter une grille de mise en page" +"Add library" = "Ajouter une bibliothèque" +"Add library file…" = "Ajouter un fichier de bibliothèque…" +"Add max height" = "Ajouter une hauteur max." +"Add max width" = "Ajouter une largeur max." +"Add min height" = "Ajouter une hauteur min." +"Add min width" = "Ajouter une largeur min." +"Add mode" = "Ajouter un mode" +"Add new page" = "Ajouter une page" +"Add or update collections from a variables JSON" = "Ajouter ou mettre à jour des collections depuis un JSON de variables" +"Add properties to make instances configurable" = "Ajoutez des propriétés pour rendre les instances configurables" +"Add reaction" = "Ajouter une réaction" +"Add starting point" = "Ajouter un point de départ" +"Add stroke" = "Ajouter un contour" +"Add variant" = "Ajouter une variante" +"Add variant with a new value" = "Ajouter une variante avec une nouvelle valeur" +"Added" = "Ajouté" +"Added the library \"{name}\"" = "Bibliothèque « {name} » ajoutée" +"Adjust" = "Réglages" +"Adjustment presets" = "Préréglages" +"Advanced stroke" = "Contour avancé" +"After delay" = "Après un délai" +"After delay {ms}ms" = "Après {ms} ms" +"Align" = "Alignement" +"Align bottom" = "Aligner en bas" +"Align center" = "Aligner au centre" +"Align horizontal centers" = "Aligner les centres horizontalement" +"Align left" = "Aligner à gauche" +"Align middle" = "Aligner au milieu" +"Align right" = "Aligner à droite" +"Align text baselines" = "Aligner les lignes de base du texte" +"Align top" = "Aligner en haut" +"Align vertical centers" = "Aligner les centres verticalement" +"Alignment" = "Alignement" +"All" = "Tous" +"All categories" = "Toutes les catégories" +"All comments" = "Tous les commentaires" +"All components" = "Tous les composants" +"All fonts" = "Toutes les polices" +"All supported properties" = "Toutes les propriétés prises en charge" +"All variables" = "Toutes les variables" +"Alpha" = "Alpha" +"Alt+drag" = "Alt+glisser" +"Anchor" = "Ancre" +"Android" = "Android" +"Angular" = "Angulaire" +"Animation" = "Animation" +"Annotations" = "Annotations" +"Annotations shown on the canvas" = "Annotations affichées sur le canevas" +"Any status" = "Tous les statuts" +"Anyone on your network who has the invite link can join." = "Toute personne de votre réseau disposant du lien d’invitation peut rejoindre la session." +"Anyone with the edit link can change the file; the view link only lets people look. The links carry their secrets: share them like passwords. `figcraft-server links` makes more and revokes them." = "Toute personne disposant du lien de modification peut modifier le fichier ; le lien de consultation permet seulement de le regarder. Les liens contiennent leurs secrets : partagez-les comme des mots de passe. `figcraft-server links` en crée d’autres et les révoque." +"Appearance" = "Apparence" +"Apply a component property" = "Appliquer une propriété de composant" +"Apply variable" = "Appliquer une variable" +"Apply variable to text" = "Appliquer une variable au texte" +"Apply variable to visibility" = "Appliquer une variable à la visibilité" +"Arc" = "Arc" +"Arc ratio" = "Rapport de l’arc" +"Arc start" = "Début de l’arc" +"Arc sweep" = "Balayage de l’arc" +"Archive" = "Archiver" +"Archived" = "Archivée" +"Arrange" = "Disposer" +"Arrow" = "Flèche" +"As typed" = "Tel que saisi" +"Assets" = "Ressources" +"Auto" = "Auto" +"Auto (space around)" = "Auto (espace autour)" +"Auto (space between)" = "Auto (espace entre)" +"Auto (space evenly)" = "Auto (espace égal)" +"Auto ({mode})" = "Auto ({mode})" +"Auto columns" = "Colonnes auto" +"Auto gap" = "Espacement auto" +"Auto height" = "Hauteur auto" +"Auto layout" = "Mise en page auto" +"Auto rows" = "Lignes auto" +"Auto width" = "Largeur auto" +"Back to the font's value" = "Revenir à la valeur de la police" +"Back" = "Retour" +"Back to Ready for dev" = "Revenir à Prêt pour le dev" +"Back to Ready for dev: the next change compares with how it is now" = "Revient à Prêt pour le dev : la prochaine modification sera comparée à l’état actuel" +"Back to assets" = "Retour aux ressources" +"Back to current" = "Revenir à l’actuelle" +"Back to styles" = "Retour aux styles" +"Back to the canvas from a focused region" = "Revenir au canevas depuis une région active" +"Back to the current version" = "Revenir à la version actuelle" +"Back to the values the font style implies" = "Revenir aux valeurs du style de police" +"Background" = "Arrière-plan" +"Background blur" = "Flou d’arrière-plan" +"Basics" = "Essentiel" +"Before" = "Avant" +"Bend" = "Courber" +"Bevel" = "Biseau" +"Binary assets added" = "Ressources binaires ajoutées" +"Binary assets removed" = "Ressources binaires supprimées" +"Black & white" = "Noir et blanc" +"Bleed" = "Fond perdu" +"Bleed marks" = "Repères de fond perdu" +"Bleed marks need a bleed" = "Les repères de fond perdu nécessitent un fond perdu" +"Blend" = "Fusion" +"Blend mode" = "Mode de fusion" +"Blue" = "Bleu" +"Blur" = "Flou" +"Boolean" = "Booléen" +"Boolean groups" = "Groupes booléens" +"Both directions" = "Les deux sens" +"Bottom" = "Bas" +"Bottom left radius" = "Rayon inférieur gauche" +"Bottom right radius" = "Rayon inférieur droit" +"Branch" = "Branche" +"Branch archived" = "Branche archivée" +"Branch merged" = "Branche fusionnée" +"Branch name" = "Nom de la branche" +"Branch of {file}" = "Branche de {file}" +"Branch of {file} · merged or archived" = "Branche de {file} · fusionnée ou archivée" +"Branch updated from main" = "Branche mise à jour depuis le fichier principal" +"Branch {name}" = "Branche {name}" +"Branches" = "Branches" +"Bring forward" = "Avancer" +"Bring the main file's changes into the branch" = "Apporte dans la branche les modifications du fichier principal" +"Bring to front" = "Mettre au premier plan" +"Bristle" = "Soies" +"Brush" = "Pinceau" +"Brush rotation jitter" = "Variation de rotation du pinceau" +"Brush scatter" = "Dispersion du pinceau" +"Brush size jitter" = "Variation de taille du pinceau" +"Brush spacing" = "Espacement du pinceau" +"Bulleted list" = "Liste à puces" +"CMYK colour" = "Couleur CMJN" +"Color profile: {name}" = "Profil colorimétrique : {name}" +"CSS custom properties…" = "Propriétés personnalisées CSS…" +"Can edit" = "Peut modifier" +"Can't read this library: {e}" = "Impossible de lire cette bibliothèque : {e}" +"Cancel" = "Annuler" +"Canvas" = "Canevas" +"Canvas stacking" = "Empilement sur le canevas" +"Cap height to baseline" = "Hauteur des capitales à la ligne de base" +"Case" = "Casse" +"Case-sensitive forms" = "Formes sensibles à la casse" +"Categories" = "Catégories" +"Center" = "Centre" +"Change alias" = "Changer l’alias" +"Change resolved" = "Modification résolue" +"Change style" = "Changer de style" +"Change to" = "Changer en" +"Change to needs a layer inside a variant" = "« Changer en » nécessite un calque dans une variante" +"Changed" = "Modifié" +"Changed on both sides: keep one" = "Modifié des deux côtés : conservez-en un" +"Changes on main" = "Modifications dans le fichier principal" +"Changes on the branch" = "Modifications dans la branche" +"Changes unknown" = "Modifications inconnues" +"Choose React, SwiftUI or Compose above to connect this component to its code." = "Choisissez React, SwiftUI ou Compose ci-dessus pour relier ce composant à son code." +"Choose another profile to change it." = "Choisissez un autre profil pour le changer." +"Choose collection" = "Choisir une collection" +"Choose image" = "Choisir une image" +"Choose mode" = "Choisir un mode" +"Choose variable" = "Choisir une variable" +"Circle" = "Cercle" +"Clear recent" = "Effacer les récents" +"Click + to replace mixed content" = "Cliquez sur + pour remplacer le contenu mixte" +"Click anywhere on the canvas to leave one." = "Cliquez n’importe où sur le canevas pour en laisser un." +"Click or drag to merge · {alt} removes" = "Cliquez ou faites glisser pour fusionner · {alt} supprime" +"Click or drag to remove · {alt} merges" = "Cliquez ou faites glisser pour supprimer · {alt} fusionne" +"Click to record a key" = "Cliquez pour enregistrer une touche" +"Clip content" = "Rogner le contenu" +"Clip to shape" = "Rogner à la forme" +"Close" = "Fermer" +"Close overlay" = "Fermer la superposition" +"Close preview" = "Fermer l’aperçu" +"Close tab" = "Fermer l’onglet" +"Close version history" = "Fermer l’historique des versions" +"Close when clicking outside" = "Fermer en cliquant à l’extérieur" +"Close without saving" = "Fermer sans enregistrer" +"Code" = "Code" +"Code syntax" = "Syntaxe du code" +"Collapse" = "Réduire" +"Collapse panel" = "Réduire le panneau" +"Collection" = "Collection" +"Collections" = "Collections" +"Color" = "Couleur" +"Color burn" = "Brûlage de couleur" +"Color dodge" = "Éclaircissement de couleur" +"Color format" = "Format de couleur" +"Color profile" = "Profil colorimétrique" +"Color styles" = "Styles de couleur" +"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" +"Column" = "Colonne" +"Column gap" = "Espacement des colonnes" +"Column sizes" = "Tailles des colonnes" +"Column span" = "Colonnes couvertes" +"Columns" = "Colonnes" +"Columns {count}" = "Colonnes {count}" +"Comment" = "Commentaire" +"Comments" = "Commentaires" +"Commits" = "Commits" +"Community" = "Communauté" +"Company" = "Entreprise" +"Compare changes" = "Comparer les modifications" +"Completed" = "Terminé" +"Component" = "Composant" +"Component name" = "Nom du composant" +"Component property" = "Propriété de composant" +"Component set" = "Ensemble de composants" +"Component sets" = "Ensembles de composants" +"Components" = "Composants" +"Conditional" = "Conditionnel" +"Confetti" = "Confettis" +"Conflicts" = "Conflits" +"Connect to code" = "Relier au code" +"Connected" = "Connecté" +"Connected to code: {from}" = "Relié au code : {from}" +"Connection lost, reconnecting (attempt {attempt})…" = "Connexion perdue, reconnexion (tentative {attempt})…" +"Constrain proportions" = "Conserver les proportions" +"Constraints" = "Contraintes" +"Content" = "Contenu" +"Contents hidden" = "Contenu masqué" +"Contents only" = "Contenu uniquement" +"Contextual alternates" = "Variantes contextuelles" +"Contrast" = "Contraste" +"Contributors" = "Contributeurs" +"Contributors: {people} · Commits: {commits}" = "Contributeurs : {people} · Commits : {commits}" +"Cool" = "Froid" +"Copied as CSS" = "Copié en CSS" +"Copied as PNG" = "Copié en PNG" +"Copied as SVG" = "Copié en SVG" +"Copied as text" = "Copié en texte" +"Copied {value}" = "Copié : {value}" +"Copy" = "Copier" +"Copy as" = "Copier en" +"Copy as CSS" = "Copier en CSS" +"Copy as PNG" = "Copier en PNG" +"Copy as SVG" = "Copier en SVG" +"Copy link" = "Copier le lien" +"Copy the {label}" = "Copier {label}" +"Copy {value}" = "Copier {value}" +"Corner radius" = "Rayon d’angle" +"Corner smoothing" = "Lissage des angles" +"Count" = "Nombre" +"Create" = "Créer" +"Create a variable collection first" = "Créez d’abord une collection de variables" +"Create a variable first" = "Créez d’abord une variable" +"Create alias" = "Créer un alias" +"Create branch" = "Créer une branche" +"Create collection" = "Créer une collection" +"Create component" = "Créer un composant" +"Create component property" = "Créer une propriété de composant" +"Create components, styles or variables to publish them as a library." = "Créez des composants, des styles ou des variables pour les publier en tant que bibliothèque." +"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é" +"Crop" = "Recadrer" +"Crop marks" = "Traits de coupe" +"Ctrl+arrows" = "Ctrl+flèches" +"Ctrl+click" = "Ctrl+clic" +"Ctrl+scroll" = "Ctrl+défilement" +"Current version" = "Version actuelle" +"Custom" = "Personnalisé" +"Cut" = "Couper" +"Dark" = "Sombre" +"Darken" = "Assombrir" +"Dash" = "Tirets" +"Decoration style" = "Style de décoration" +"Decoration" = "Décoration" +"Deep select" = "Sélection en profondeur" +"Default" = "Par défaut" +"Default content" = "Contenu par défaut" +"Default value (the top-left variant)" = "Valeur par défaut (la variante en haut à gauche)" +"Delay" = "Délai" +"Delete" = "Supprimer" +"Delete category (its annotations stay)" = "Supprimer la catégorie (ses annotations restent)" +"Delete collection" = "Supprimer la collection" +"Delete group" = "Supprimer le groupe" +"Delete mode" = "Supprimer le mode" +"Delete page" = "Supprimer la page" +"Delete preset" = "Supprimer le préréglage" +"Delete property" = "Supprimer la propriété" +"Delete the style (layers keep their values)" = "Supprimer le style (les calques conservent leurs valeurs)" +"Delete thread" = "Supprimer le fil" +"Delete variable" = "Supprimer la variable" +"Delete “{name}”? This can't be undone." = "Supprimer « {name} » ? Cette action est irréversible." +"Density" = "Densité" +"Depth" = "Profondeur" +"Describe how and when to use this component" = "Décrivez comment et quand utiliser ce composant" +"Describe what changed" = "Décrivez ce qui a changé" +"Description" = "Description" +"Description (optional)" = "Description (facultative)" +"Design" = "Design" +"Desktop" = "Ordinateur" +"Destination" = "Destination" +"Detach alias" = "Détacher l’alias" +"Detach instance" = "Détacher l’instance" +"Detach property" = "Détacher la propriété" +"Detach style" = "Détacher le style" +"Detach styles" = "Détacher les styles" +"Detach variable" = "Détacher la variable" +"Details" = "Détails" +"Dev Mode" = "Mode Dev" +"Dev resources" = "Ressources de développement" +"Development" = "Développement" +"Device" = "Appareil" +"Device at 100%" = "Appareil à 100 %" +"Diamond" = "Losange" +"Difference" = "Différence" +"Dimensions" = "Dimensions" +"Direction" = "Direction" +"Disconnect from code" = "Délier du code" +"Dispersion" = "Dispersion" +"Display name" = "Nom affiché" +"Dissolve" = "Fondu" +"Distribute and tidy" = "Répartir et ranger" +"Distribute horizontal spacing" = "Répartir l’espacement horizontal" +"Distribute vertical spacing" = "Répartir l’espacement vertical" +"Don't truncate" = "Ne pas tronquer" +"Done" = "Terminé" +"Done editing" = "Terminer la modification" +"Dots" = "Points" +"Dotted" = "Pointillé" +"Down" = "Bas" +"Drafts" = "Brouillons" +"Drag the stroke to add a width point" = "Faites glisser le contour pour ajouter un point de largeur" +"Draw" = "Dessin" +"Drawing tools" = "Outils de dessin" +"Drop shadow" = "Ombre portée" +"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" +"Duplicate by dragging" = "Dupliquer en faisant glisser" +"Duplicate mode" = "Dupliquer le mode" +"Duplicate page" = "Dupliquer la page" +"Edit" = "Modifier" +"Edit as an expression" = "Modifier en tant qu’expression" +"Edit colour" = "Modifier la couleur" +"Edit comment" = "Modifier le commentaire" +"Edit dev resource" = "Modifier la ressource de développement" +"Edit link" = "Lien de modification" +"Edit link copied" = "Lien de modification copié" +"Edit style" = "Modifier le style" +"Edit variable" = "Modifier la variable" +"Edit with the builder" = "Modifier avec l’assistant" +"Effect settings" = "Réglages de l’effet" +"Effect styles" = "Styles d’effet" +"Effects" = "Effets" +"Ellipse" = "Ellipse" +"Ellipses" = "Ellipses" +"Else" = "Sinon" +"Else if" = "Sinon si" +"Embedded profile" = "Profil incorporé" +"Empty" = "Vide" +"End" = "Fin" +"End point" = "Point final" +"Enter to save · Esc to cancel" = "Entrée pour enregistrer · Échap pour annuler" +"Eraser" = "Gomme" +"Esc" = "Échap" +"Essential" = "Essentiels" +"Every conflict has a choice." = "Chaque conflit a un choix." +"Every top-level frame already starts a flow" = "Chaque cadre de premier niveau démarre déjà un flux" +"Exact opacity (4 then 5: 45%)" = "Opacité exacte (4 puis 5 : 45 %)" +"Exclude" = "Exclure" +"Excluded" = "Exclus" +"Excluded from layout" = "Exclus de la mise en page" +"Excludes" = "Exclusions" +"Exclusion" = "Exclusion" +"Exit focus view (Esc)" = "Quitter la vue ciblée (Échap)" +"Expand" = "Développer" +"Export" = "Exporter" +"Export all" = "Tout exporter" +"Export page as PNG" = "Exporter la page en PNG" +"Export settings" = "Réglages d’exportation" +"Export variables" = "Exporter les variables" +"Export {name}" = "Exporter {name}" +"Export {n} layers" = { one = "Exporter {n} calque", other = "Exporter {n} calques" } +"Exported {file}" = "Exporté : {file}" +"Exported {name}" = "{name} exporté" +"Exported {n} files" = { one = "{n} fichier exporté", other = "{n} fichiers exportés" } +"Export…" = "Exporter…" +"Expose properties to instances" = "Exposer les propriétés aux instances" +"Exposure" = "Exposition" +"Expression" = "Expression" +"Extend collection" = "Étendre la collection" +"Extends \"{name}\": overridden values are marked" = "Étend « {name} » : les valeurs remplacées sont signalées" +"Eye" = "Œil" +"Fade" = "Fondu" +"False" = "Faux" +"Fetching from the server…" = "Récupération depuis le serveur…" +"File" = "Fichier" +"File name" = "Nom du fichier" +"Fill" = "Remplissage" +"Fill (fr)" = "Remplir (fr)" +"Fill container" = "Remplir le conteneur" +"Fill window" = "Remplir la fenêtre" +"Fills" = "Remplissages" +"Fill|sizing" = "Remplir" +"Filter and sort" = "Filtrer et trier" +"Find" = "Rechercher" +"Find and replace" = "Rechercher et remplacer" +"Find layers" = "Rechercher des calques" +"First" = "Premier" +"First commit" = "Premier commit" +"First on top" = "Premier au-dessus" +"Fit" = "Ajuster" +"Fit device to window" = "Ajuster l’appareil à la fenêtre" +"Fit to contents" = "Ajuster au contenu" +"Fit to window" = "Ajuster à la fenêtre" +"Fit width" = "Ajuster à la largeur" +"Fixed" = "Fixe" +"Fixed gap" = "Espacement fixe" +"Fixed size" = "Taille fixe" +"Flatten" = "Aplatir" +"Flip" = "Retourner" +"Flip horizontal" = "Retourner horizontalement" +"Flip text to the other side" = "Passer le texte de l’autre côté" +"Flip vertical" = "Retourner verticalement" +"Flip width profile" = "Inverser le profil de largeur" +"Flow starting point" = "Point de départ du flux" +"Flow starting points" = "Points de départ de flux" +"Flows" = "Flux" +"Focus view" = "Vue ciblée" +"Fold autosaves" = "Regrouper les sauvegardes auto" +"Follow {name}" = "Suivre {name}" +"Following" = "Suivi en cours" +"Following {name} · {key} to stop" = "Vous suivez {name} · {key} pour arrêter" +"Font" = "Police" +"Font not installed" = "Police non installée" +"Font size" = "Taille de police" +"Font style" = "Style de police" +"Fractions" = "Fractions" +"Frame" = "Cadre" +"Frame selection" = "Encadrer la sélection" +"Frame tools" = "Outils de cadre" +"Frames" = "Cadres" +"From the library \"{name}\": read-only" = "De la bibliothèque « {name} » : lecture seule" +"From {name}" = "De {name}" +"Frost" = "Givre" +"Gap" = "Espacement" +"Gap between columns" = "Espacement entre les colonnes" +"Gap between items" = "Espacement entre les éléments" +"Gap between rows" = "Espacement entre les lignes" +"Glass" = "Verre" +"Go to main component" = "Aller au composant principal" +"Go to {name}" = "Aller à {name}" +"Grab bag" = "Pêle-mêle" +"Gradient" = "Dégradé" +"Gray" = "Gris" +"Green" = "Vert" +"Grid" = "Grille" +"Grid ({size})" = "Grille ({size})" +"Grid styles" = "Styles de grille" +"Grid {size}" = "Grille {size}" +"Group" = "Groupe" +"Group selection" = "Grouper la sélection" +"Groups" = "Groupes" +"Gutter" = "Gouttière" +"Hand tool" = "Outil Main" +"Hanging list" = "Liste en retrait" +"Hanging punctuation" = "Ponctuation en débord" +"Hard light" = "Lumière dure" +"Height" = "Hauteur" +"Help" = "Aide" +"Help and resources" = "Aide et ressources" +"Help page" = "Page d’aide" +"Hidden" = "Masqué" +"Hide contents" = "Masquer le contenu" +"Hide from publishing" = "Exclure de la publication" +"Hide section contents" = "Masquer le contenu de la section" +"Highlight layers on hover" = "Mettre en évidence les calques au survol" +"Highlights" = "Hautes lumières" +"Hold Alt" = "Maintenir Alt" +"Hold Alt+Z" = "Maintenir Alt+Z" +"Hold Z" = "Maintenir Z" +"Hold ⌥" = "Maintenir ⌥" +"Hold ⌥Z" = "Maintenir ⌥Z" +"Home" = "Accueil" +"Horizontal" = "Horizontal" +"Horizontal align" = "Alignement horizontal" +"Horizontal hex" = "Hexagone horizontal" +"Horizontal padding" = "Marge intérieure horizontale" +"Horizontal spacing" = "Espacement horizontal" +"Hosting a session needs the desktop app; here you can join one." = "Héberger une session nécessite l’application de bureau ; ici, vous pouvez en rejoindre une." +"Hover a layer to see its properties" = "Survolez un calque pour voir ses propriétés" +"Hover other layers to measure the distance" = "Survolez d’autres calques pour mesurer la distance" +"Hue" = "Teinte" +"Hug" = "Ajuster" +"Hug contents" = "Ajuster au contenu" +"If" = "Si" +"If {condition}" = "Si {condition}" +"Ignore auto layout (absolute position)" = "Ignorer la mise en page auto (position absolue)" +"Image" = "Image" +"Import" = "Importer" +"Import path" = "Chemin d’importation" +"Import plugin from manifest" = "Importer un plugin depuis un manifeste" +"Import plugin from manifest…" = "Importer un plugin depuis un manifeste…" +"Import variables" = "Importer des variables" +"Imported {name}" = "{name} importé" +"Imported {n} new variables, updated {updated}" = { one = "{n} nouvelle variable importée, {updated} mises à jour", other = "{n} nouvelles variables importées, {updated} mises à jour" } +"Import…" = "Importer…" +"In an instance, this comes from the main component" = "Dans une instance, cette valeur vient du composant principal" +"In the browser you can join sessions the desktop app hosts and files on a FigCraft server. A page opened over https reaches other computers only through wss:// links (a server behind TLS)." = "Dans le navigateur, vous pouvez rejoindre les sessions hébergées par l’application de bureau et les fichiers d’un serveur FigCraft. Une page ouverte en https n’atteint d’autres ordinateurs que par des liens wss:// (un serveur derrière TLS)." +"Include bounding box" = "Inclure le cadre de délimitation" +"Include id attribute" = "Inclure l’attribut id" +"Included" = "Inclus" +"Included in layout" = "Inclus dans la mise en page" +"Individual corners" = "Angles individuels" +"Individual strokes" = "Contours individuels" +"Ink" = "Encre" +"Inner shadow" = "Ombre intérieure" +"Inside" = "Intérieur" +"Inspect" = "Inspecter" +"Inspect the layer under the pointer: size, colours, typography" = "Inspecter le calque sous le pointeur : taille, couleurs, typographie" +"Instance" = "Instance" +"Instance properties" = "Propriétés de l’instance" +"Instance swap" = "Permutation d’instance" +"Instance swap (no other component)" = "Permutation d’instance (aucun autre composant)" +"Instances" = "Instances" +"Instant" = "Instantané" +"Interaction" = "Interaction" +"Interactions" = "Interactions" +"Interface design and prototyping. A free, open-source, clean-room design tool written from scratch in Rust, part of the ArtCraft Crafting Apps." = "Design d’interfaces et prototypage. Un outil de design libre et gratuit, développé en salle blanche (clean-room) et écrit de zéro en Rust, membre des Crafting Apps d’ArtCraft." +"Intersect" = "Intersection" +"Intersects" = "Intersections" +"Invite link" = "Lien d’invitation" +"Invite link copied" = "Lien d’invitation copié" +"Join" = "Rejoindre" +"Join a session…" = "Rejoindre une session…" +"Join live session" = "Rejoindre la session en direct" +"Join us on Discord" = "Rejoignez-nous sur Discord" +"Joined" = "Connecté" +"Joined {file}" = "Connecté à {file}" +"Joining…" = "Connexion…" +"Join|stroke" = "Jointure" +"Just now" = "À l’instant" +"Justify" = "Justifier" +"Keep appearance" = "Conserver l’apparence" +"Keep appearance converts every color value to {profile} so colors look the same. Keep values leaves the numbers as they are, so colors shift." = "Conserver l’apparence convertit chaque valeur de couleur en {profile} pour que les couleurs restent identiques. Conserver les valeurs laisse les nombres tels quels, si bien que les couleurs changent." +"Keep tool selected after use" = "Garder l’outil sélectionné après usage" +"Keep values" = "Conserver les valeurs" +"Key/Gamepad" = "Touche/manette" +"Key/Gamepad {key}" = "Touche/manette {key}" +"Keyboard shortcuts" = "Raccourcis clavier" +"Language" = "Langue" +"Lasso" = "Lasso" +"Last" = "Dernier" +"Last change: {note}" = "Dernière modification : {note}" +"Last commit" = "Dernier commit" +"Last on top" = "Dernier au-dessus" +"Layer blur" = "Flou de calque" +"Layer name" = "Nom du calque" +"Layers" = "Calques" +"Layers in an instance take their position from the main component" = "Les calques d’une instance prennent leur position du composant principal" +"Layout" = "Disposition" +"Layout grid" = "Grille de mise en page" +"Layout grid settings" = "Réglages de la grille de mise en page" +"Layout grids" = "Grilles de mise en page" +"Leave session" = "Quitter la session" +"Leaves" = "Feuilles" +"Left" = "Gauche" +"Left & right" = "Gauche et droite" +"Left side" = "Côté gauche" +"Left side width" = "Largeur du côté gauche" +"Letter case" = "Casse" +"Letter spacing" = "Interlettrage" +"Libraries" = "Bibliothèques" +"Libraries in this file" = "Bibliothèques de ce fichier" +"Library updates available" = "Mises à jour de bibliothèque disponibles" +"Library: click to collapse" = "Bibliothèque : cliquez pour réduire" +"Library: click to expand" = "Bibliothèque : cliquez pour développer" +"Library: its variables are read-only here; edit them in the library file and publish it" = "Bibliothèque : ses variables sont en lecture seule ici ; modifiez-les dans le fichier de la bibliothèque, puis publiez-le" +"Light" = "Clair" +"Lighten" = "Éclaircir" +"Light|glass" = "Lumière" +"Line" = "Ligne" +"Line arrow" = "Flèche simple" +"Line delta" = "Écart de lignes" +"Line height" = "Hauteur de ligne" +"Linear" = "Linéaire" +"Lines" = "Lignes" +"Lines +/−" = "Lignes +/−" +"Lines added" = "Lignes ajoutées" +"Lines deleted" = "Lignes supprimées" +"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 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" +"Live session" = "Session en direct" +"Live · {people}" = "En direct · {people}" +"Local components" = "Composants locaux" +"Local styles" = "Styles locaux" +"Local variables" = "Variables locales" +"Lock/Unlock" = "Verrouiller/déverrouiller" +"Locked" = "Verrouillé" +"Lowercase" = "Minuscules" +"Luminance" = "Luminance" +"Luminosity" = "Luminosité" +"Main" = "Principal" +"Main component deleted" = "Composant principal supprimé" +"Main menu" = "Menu principal" +"Make slot" = "Créer un emplacement" +"Margin" = "Marge" +"Mark all as read" = "Tout marquer comme lu" +"Mark as resolved" = "Marquer comme résolu" +"Mark as unread" = "Marquer comme non lu" +"Mark as unresolved" = "Marquer comme non résolu" +"Mask" = "Masque" +"Mass · Stiffness · Damping" = "Masse · Rigidité · Amortissement" +"Max H" = "H max." +"Max W" = "L max." +"Max lines" = "Lignes max." +"Maximize" = "Agrandir" +"Measure to the selection" = "Mesurer jusqu’à la sélection" +"Merge into main" = "Fusionner dans le principal" +"Merge regions" = "Fusionner les régions" +"Merge the branch into the main file (one undo step) and archive it" = "Fusionne la branche dans le fichier principal (une seule étape d’annulation) et l’archive" +"Merged" = "Fusionnée" +"Merged PRs" = "PR fusionnées" +"Min H" = "H min." +"Min W" = "L min." +"Minimize" = "Réduire" +"Mirror angle" = "Symétrie d’angle" +"Mirror angle and length" = "Symétrie d’angle et de longueur" +"Mirroring" = "Symétrie" +"Missing" = "Introuvable" +"Missing layer" = "Calque introuvable" +"Missing style" = "Style introuvable" +"Missing variable" = "Variable introuvable" +"Miter" = "Onglet" +"Miter angle" = "Angle d’onglet" +"Mixed" = "Mixte" +"Mixed fonts" = "Polices mixtes" +"Mixed interactions: click + to replace them" = "Interactions mixtes : cliquez sur + pour les remplacer" +"Mode" = "Mode" +"Model" = "Modèle" +"Models" = "Modèles" +"Mono" = "Mono" +"More" = "Plus" +"More instance actions" = "Autres actions d’instance" +"Mouse down" = "Bouton enfoncé" +"Mouse enter" = "Entrée du pointeur" +"Mouse leave" = "Sortie du pointeur" +"Mouse up" = "Bouton relâché" +"Move" = "Déplacer" +"Move column left" = "Déplacer la colonne à gauche" +"Move column right" = "Déplacer la colonne à droite" +"Move down" = "Descendre" +"Move in" = "Entrée" +"Move out" = "Sortie" +"Move tools" = "Outils de déplacement" +"Move up" = "Monter" +"Moved to {name}" = "Déplacé vers {name}" +"Multi" = "Multi" +"Multiply" = "Multiplication" +"Muted" = "Atténué" +"Name" = "Nom" +"Name (A–Z)" = "Nom (A–Z)" +"Named instance" = "Instance nommée" +"Navigate to" = "Naviguer vers" +"Nested instance" = "Instance imbriquée" +"New design file" = "Nouveau fichier de design" +"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" +"Next size option" = "Option de taille suivante" +"No assets: no export settings, icons or images. Add export settings in the Design tab." = "Aucune ressource : ni réglage d’exportation, ni icône, ni image. Ajoutez des réglages d’exportation dans l’onglet Design." +"No boolean variables fit here." = "Aucune variable booléenne ne convient ici." +"No boolean variables yet. Create them in Local variables." = "Aucune variable booléenne pour l’instant. Créez-en dans Variables locales." +"No branches. A branch is a copy of the file to try changes in, then review and merge." = "Aucune branche. Une branche est une copie du fichier pour essayer des modifications, puis les relire et les fusionner." +"No category" = "Sans catégorie" +"No changes" = "Aucune modification" +"No colour variables fit here." = "Aucune variable de couleur ne convient ici." +"No colour variables yet. Create them in Local variables." = "Aucune variable de couleur pour l’instant. Créez-en dans Variables locales." +"No comments yet" = "Aucun commentaire pour l’instant" +"No components yet. Select layers and press {keys}." = "Aucun composant pour l’instant. Sélectionnez des calques et appuyez sur {keys}." +"No conflicts." = "Aucun conflit." +"No contributor data was built into this copy." = "Cette copie ne contient aucune donnée de contributeurs." +"No fonts match" = "Aucune police ne correspond" +"No layer changes to show." = "Aucune modification de calque à afficher." +"No libraries yet. Add a .figcraft file that was published as a library, or paste a team library's link." = "Aucune bibliothèque pour l’instant. Ajoutez un fichier .figcraft publié en tant que bibliothèque, ou collez le lien d’une bibliothèque d’équipe." +"No list" = "Aucune liste" +"No matching comments" = "Aucun commentaire correspondant" +"No matching components" = "Aucun composant correspondant" +"No matching layers" = "Aucun calque correspondant" +"No matching styles" = "Aucun style correspondant" +"No matching variables" = "Aucune variable correspondante" +"No mirroring" = "Aucune symétrie" +"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 paints" = "Aucune peinture" +"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." +"No preferred components" = "Aucun composant préféré" +"No preset" = "Aucun préréglage" +"No saved versions yet. Save a version to mark a point in your work you can come back to." = "Aucune version enregistrée pour l’instant. Enregistrez une version pour marquer un point de votre travail auquel revenir." +"No scrolling" = "Pas de défilement" +"No shortcuts match" = "Aucun raccourci ne correspond" +"No status" = "Aucun statut" +"No string variables fit here." = "Aucune variable de chaîne ne convient ici." +"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 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." +"Nobody else is here yet" = "Personne d’autre n’est encore là" +"Noise" = "Bruit" +"None" = "Aucun" +"None." = "Aucun." +"Normal" = "Normal" +"Not bound" = "Non lié" +"Not in a live session" = "Pas de session en direct" +"Not in this font" = "Absent de cette police" +"Not properties, kept as written: {names}" = "Pas des propriétés, conservés tels quels : {names}" +"Not read yet" = "Pas encore lu" +"Note {n}" = "Note {n}" +"Nothing changed since this was marked ready for dev." = "Rien n’a changé depuis que ceci a été marqué prêt pour le dev." +"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 to export" = "Rien à exporter" +"Now" = "Maintenant" +"Nudge (Shift: big nudge)" = "Décaler (Maj : grand décalage)" +"Nudge amount" = "Pas de décalage" +"Number" = "Nombre" +"Numbered list" = "Liste numérotée" +"Object" = "Objet" +"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" +"On click" = "Au clic" +"On drag" = "Au glissement" +"On the server's machine, `figcraft-server key` prints it." = "Sur la machine du serveur, `figcraft-server key` l’affiche." +"On this page" = "Sur cette page" +"Only the first changed layers are listed." = "Seuls les premiers calques modifiés sont listés." +"Only the first {n} changed layers are listed." = "Seuls les {n} premiers calques modifiés sont listés." +"Only this computer can join (turn on network sharing to invite others)." = "Seul cet ordinateur peut se connecter (activez le partage réseau pour inviter d’autres personnes)." +"Only your threads" = "Vos fils uniquement" +"Opacity" = "Opacité" +"Opacity & blend" = "Opacité et fusion" +"Opacity 10%…90%, 0: 100%" = "Opacité 10 %…90 %, 0 : 100 %" +"Open" = "Ouvrir" +"Open .figcraft, .svg or images" = "Ouvrez des fichiers .figcraft, .svg ou des images" +"Open branch" = "Ouvrir la branche" +"Open file" = "Ouvrir un fichier" +"Open files" = "Fichiers ouverts" +"Open in focus view" = "Ouvrir en vue ciblée" +"Open in new window" = "Ouvrir dans une nouvelle fenêtre" +"Open invite links in FigCraft" = "Ouvrir les liens d’invitation dans FigCraft" +"Open link" = "Ouvrir le lien" +"Open link {url}" = "Ouvrir le lien {url}" +"Open overlay" = "Ouvrir une superposition" +"Open prototype preview" = "Ouvrir l’aperçu du prototype" +"Open variables ({count})" = "Ouvrir les variables ({count})" +"Opened “{name}” in a new tab" = "« {name} » ouvert dans un nouvel onglet" +"Open|comments" = "Ouverts" +"Options" = "Options" +"Or keep the file on a FigCraft server and share links to edit or to view it." = "Ou gardez le fichier sur un serveur FigCraft et partagez des liens pour le modifier ou le consulter." +"Orange" = "Orange" +"Outline stroke" = "Convertir le contour en tracé" +"Outline text" = "Convertir le texte en tracés" +"Outlines" = "Contours" +"Outside" = "Extérieur" +"Overflow" = "Débordement" +"Overlay" = "Superposition" +"Overlay position" = "Position de la superposition" +"Overridden here (the collection it extends has another value)" = "Remplacé ici (la collection étendue a une autre valeur)" +"Overrides" = "Remplacements" +"PDF print options" = "Options d’impression PDF" +"PDF print settings" = "Réglages d’impression PDF" +"Padding" = "Marge intérieure" +"Page" = "Page" +"Pages" = "Pages" +"Pages: {pages}" = "Pages : {pages}" +"Paint bucket" = "Pot de peinture" +"Pan the canvas" = "Faire défiler le canevas" +"Panels" = "Panneaux" +"Paper" = "Papier" +"Paragraph indent" = "Retrait de paragraphe" +"Paragraph indent applies to left-aligned text" = "Le retrait de paragraphe s’applique au texte aligné à gauche" +"Paragraph spacing" = "Espacement des paragraphes" +"Pass through" = "Traverser" +"Paste a link (https://…)" = "Collez un lien (https://…)" +"Paste a team library link (a view link)" = "Collez le lien d’une bibliothèque d’équipe (un lien de consultation)" +"Paste here" = "Coller ici" +"Paste the invite link the host shared with you." = "Collez le lien d’invitation que l’hôte vous a envoyé." +"Paste to replace" = "Coller pour remplacer" +"Pattern" = "Motif" +"Pattern alignment" = "Alignement du motif" +"Pattern scale" = "Échelle du motif" +"Pattern source" = "Source du motif" +"Pen" = "Plume" +"Pencil" = "Crayon" +"People in this file" = "Personnes dans ce fichier" +"Phone" = "Téléphone" +"Pick color" = "Prélever une couleur" +"Pick color (I)" = "Prélever une couleur (I)" +"Pick one font family first" = "Choisissez d’abord une seule famille de polices" +"Pin a property" = "Épingler une propriété" +"Pinch" = "Pincement" +"Pixel grid" = "Grille de pixels" +"Pixel preview 1x" = "Aperçu des pixels 1x" +"Pixel preview 2x" = "Aperçu des pixels 2x" +"Place automatically" = "Placer automatiquement" +"Place image" = "Placer une image" +"Plugins" = "Plugins" +"Plus darker" = "Plus foncé" +"Plus lighter" = "Plus clair" +"Point" = "Point" +"Points" = "Points" +"Polygon" = "Polygone" +"Polygons" = "Polygones" +"Position" = "Position" +"Post" = "Publier" +"Preferences" = "Préférences" +"Preferred" = "Préférés" +"Present" = "Présenter" +"Present or preview" = "Présenter ou prévisualiser" +"Present this flow" = "Présenter ce flux" +"Presentation" = "Présentation" +"Preserve scroll position" = "Conserver la position de défilement" +"Presets" = "Préréglages" +"Press a key…" = "Appuyez sur une touche…" +"Preview" = "Aperçu" +"Preview this flow" = "Prévisualiser ce flux" +"Preview this frame" = "Prévisualiser ce cadre" +"Previous ready for dev" = "Prêt pour le dev précédent" +"Progressive" = "Progressif" +"Properties" = "Propriétés" +"Prototype" = "Prototype" +"Prototype preview" = "Aperçu du prototype" +"Prototype settings" = "Réglages du prototype" +"Publish" = "Publier" +"Publish changes" = "Publier les modifications" +"Publish to server" = "Publier sur un serveur" +"Publish to server…" = "Publier sur un serveur…" +"Published version {v}" = "Version {v} publiée" +"Published version {v} to the server" = "Version {v} publiée sur le serveur" +"Published version {v}: save the file so other files can use it" = "Version {v} publiée : enregistrez le fichier pour que d’autres fichiers puissent l’utiliser" +"Published · {people}" = "Publié · {people}" +"Publishing to a server needs the desktop app; in the browser you can join a server's files" = "Publier sur un serveur nécessite l’application de bureau ; dans le navigateur, vous pouvez rejoindre les fichiers d’un serveur" +"Publishing…" = "Publication…" +"Push" = "Pousser" +"Push changes to main component" = "Transmettre les modifications au composant principal" +"Put text on path" = "Placer le texte sur un tracé" +"Radial" = "Radial" +"Radius" = "Rayon" +"Ratio" = "Rapport" +"Reading the library…" = "Lecture de la bibliothèque…" +"Ready for dev" = "Prêt pour le dev" +"Real name" = "Vrai nom" +"Recent" = "Récents" +"Recent files" = "Fichiers récents" +"Recents" = "Récents" +"Recovered {n} unsaved files after the app quit unexpectedly: save them to keep them" = { one = "{n} fichier non enregistré a été récupéré après la fermeture inattendue de l’application : enregistrez-le pour le conserver", other = "{n} fichiers non enregistrés ont été récupérés après la fermeture inattendue de l’application : enregistrez-les pour les conserver" } +"Rectangle" = "Rectangle" +"Rectangles" = "Rectangles" +"Red" = "Rouge" +"Reduce motion" = "Réduire les animations" +"Refraction" = "Réfraction" +"Remove" = "Retirer" +"Remove all" = "Tout retirer" +"Remove annotation" = "Retirer l’annotation" +"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 guide" = "Retirer le repère" +"Remove interaction" = "Retirer l’interaction" +"Remove library from this file" = "Retirer la bibliothèque de ce fichier" +"Remove min and max" = "Retirer min. et max." +"Remove min and max height" = "Retirer la hauteur min. et max." +"Remove min and max width" = "Retirer la largeur min. et max." +"Remove regions" = "Retirer les régions" +"Remove slot" = "Retirer l’emplacement" +"Remove starting point" = "Retirer le point de départ" +"Remove stop" = "Retirer l’arrêt" +"Remove text from path" = "Retirer le texte du tracé" +"Remove the else and its actions" = "Retirer le « sinon » et ses actions" +"Remove this condition and its actions" = "Retirer cette condition et ses actions" +"Removed" = "Supprimé" +"Removed since it was marked" = "Supprimé depuis le marquage" +"Rename" = "Renommer" +"Rename duplicated layers" = "Renommer les calques dupliqués" +"Rename folder" = "Renommer le dossier" +"Rename group" = "Renommer le groupe" +"Rename mode" = "Renommer le mode" +"Rename page" = "Renommer la page" +"Replace all" = "Tout remplacer" +"Replace mixed export settings" = "Remplacer les réglages d’exportation mixtes" +"Replace with" = "Remplacer par" +"Replace with a new interaction" = "Remplacer par une nouvelle interaction" +"Reply" = "Répondre" +"Reset" = "Réinitialiser" +"Reset adjustments" = "Réinitialiser les réglages" +"Reset all changes" = "Réinitialiser toutes les modifications" +"Reset all overrides on this layer" = "Réinitialiser tous les remplacements de ce calque" +"Reset overrides" = "Réinitialiser les remplacements" +"Reset slot" = "Réinitialiser l’emplacement" +"Reset this override" = "Réinitialiser ce remplacement" +"Reset to style" = "Revenir au style" +"Reset to the inherited value" = "Revenir à la valeur héritée" +"Resize by the nudge amount" = "Redimensionner du pas de décalage" +"Resize frames to the device's screen (or the window without a device): their constraints and auto layout respond" = "Redimensionne les cadres à l’écran de l’appareil (ou à la fenêtre sans appareil) : leurs contraintes et leur mise en page auto s’adaptent" +"Resize to fit" = "Redimensionner au contenu" +"Resolve" = "Résoudre" +"Resolve change" = "Résoudre la modification" +"Resolved" = "Résolu" +"Resources" = "Ressources" +"Responsive" = "Adaptatif" +"Restart" = "Recommencer" +"Restore" = "Restaurer" +"Restore main component" = "Restaurer le composant principal" +"Restore this version" = "Restaurer cette version" +"Restored “{name}”" = "« {name} » restaurée" +"Reverse the order" = "Inverser l’ordre" +"Reversed triangle" = "Triangle inversé" +"Review and merge" = "Relire et fusionner" +"Ribbon" = "Ruban" +"Right" = "Droite" +"Right side" = "Côté droit" +"Right side width" = "Largeur du côté droit" +"Rotate 90°" = "Rotation de 90°" +"Rotate 90° right" = "Rotation de 90° à droite" +"Rotate to landscape" = "Passer en paysage" +"Rotate to portrait" = "Passer en portrait" +"Rotation" = "Rotation" +"Rotation jitter" = "Variation de rotation" +"Round" = "Arrondi" +"Rounded" = "Arrondi" +"Row" = "Ligne" +"Row gap" = "Espacement des lignes" +"Row sizes" = "Tailles des lignes" +"Row span" = "Lignes couvertes" +"Rows" = "Lignes" +"Rows {count}" = "Lignes {count}" +"Rulers" = "Règles" +"Run" = "Exécuter" +"Run {label}" = "Exécuter {label}" +"Same as layer" = "Comme le calque" +"Saturation" = "Saturation" +"Save" = "Enregistrer" +"Save as" = "Enregistrer sous" +"Save as preset…" = "Enregistrer comme préréglage…" +"Save version {key}" = "Enregistrer une version {key}" +"Saved" = "Enregistré" +"Saved {name}" = "{name} enregistré" +"Scale" = "Échelle" +"Scatter" = "Dispersion" +"Scoping: where pickers offer it" = "Portée : où les sélecteurs la proposent" +"Screen" = "Écran" +"Scroll behavior" = "Comportement de défilement" +"Scroll to" = "Défiler jusqu’à" +"Scroll to layer" = "Défiler jusqu’au calque" +"Scroll with parent" = "Défiler avec le parent" +"Search" = "Rechercher" +"Search actions, layers and tools" = "Rechercher des actions, des calques et des outils" +"Search assets" = "Rechercher des ressources" +"Search comments" = "Rechercher des commentaires" +"Search fonts" = "Rechercher des polices" +"Search layers" = "Rechercher des calques" +"Search shortcuts" = "Rechercher des raccourcis" +"Section" = "Section" +"Section color" = "Couleur de la section" +"Sections" = "Sections" +"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 to apply the style to" = "Sélectionnez les calques auxquels appliquer le style" +"Select overlapping shapes" = "Sélectionnez des formes qui se chevauchent" +"Select points to edit their position, radius and mirroring" = "Sélectionnez des points pour modifier leur position, leur rayon et leur symétrie" +"Select slot" = "Sélectionner l’emplacement" +"Selection" = "Sélection" +"Selection box, {w} by {h} at {x}, {y}: arrows move it, Shift+arrows size it, Enter selects, Escape cancels" = "Zone de sélection, {w} sur {h} à {x}, {y} : les flèches la déplacent, Maj+flèches la redimensionnent, Entrée sélectionne, Échap annule" +"Selection box: arrows move it, Shift+arrows size it, Enter selects, Escape cancels" = "Zone de sélection : les flèches la déplacent, Maj+flèches la redimensionnent, Entrée sélectionne, Échap annule" +"Send backward" = "Reculer" +"Send to back" = "Mettre à l’arrière-plan" +"Server address" = "Adresse du serveur" +"Set as default" = "Définir par défaut" +"Set variable" = "Définir la variable" +"Set variable mode" = "Définir le mode de variable" +"Set variable {name}" = "Définir la variable {name}" +"Set {name} to {value}" = "Définir {name} sur {value}" +"Shadows" = "Ombres" +"Shape" = "Forme" +"Shape builder" = "Générateur de formes" +"Shape tools" = "Outils de forme" +"Share" = "Partager" +"Share on the local network" = "Partager sur le réseau local" +"Share: live session, export" = "Partager : session en direct, exportation" +"Show" = "Afficher" +"Show as grid" = "Afficher en grille" +"Show as list" = "Afficher en liste" +"Show autosaves" = "Afficher les sauvegardes auto" +"Show behind transparent areas" = "Afficher derrière les zones transparentes" +"Show comments (Shift+C)" = "Afficher les commentaires (Maj+C)" +"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 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" +"Show this layer" = "Afficher ce calque" +"Show usage" = "Afficher l’utilisation" +"Show/Hide" = "Afficher/masquer" +"Show/Hide UI" = "Afficher/masquer l’interface" +"Side by side" = "Côte à côte" +"Sidebar" = "Barre latérale" +"Simplify stroke" = "Simplifier le contour" +"Size" = "Taille" +"Size jitter" = "Variation de taille" +"Skip ink" = "Interrompre aux jambages" +"Slashed zero" = "Zéro barré" +"Slice" = "Tranche" +"Slices" = "Tranches" +"Slide in" = "Glisser vers l’intérieur" +"Slide out" = "Glisser vers l’extérieur" +"Slot" = "Emplacement" +"Slot content" = "Contenu de l’emplacement" +"Small capitals" = "Petites capitales" +"Small caps" = "Petites capitales" +"Smart animate" = "Animation intelligente" +"Snap to pixel grid" = "Aimanter à la grille de pixels" +"Social media" = "Réseaux sociaux" +"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 date" = "Trier par date" +"Sort by page" = "Trier par page" +"Space around" = "Espace autour" +"Space between" = "Espace entre" +"Space drag" = "Espace et glisser" +"Space evenly" = "Espace égal" +"Space+drag" = "Espace+glisser" +"Spacing" = "Espacement" +"Splay" = "Évasement" +"Spread" = "Étendue" +"Square" = "Carré" +"Standard" = "Standard" +"Standard ligatures" = "Ligatures standard" +"Star" = "Étoile" +"Stars" = "Étoiles" +"Start" = "Début" +"Start from a blank canvas" = "Commencer avec un canevas vide" +"Start live session" = "Démarrer une session en direct" +"Start on path" = "Début sur le tracé" +"Start point" = "Point de départ" +"Status" = "Statut" +"Sticky" = "Collant" +"Stop following {name}" = "Ne plus suivre {name}" +"Stop session" = "Arrêter la session" +"Stop {n} {hex}" = "Arrêt {n} {hex}" +"Stretch" = "Étirer" +"Strikethrough" = "Barré" +"String" = "Chaîne" +"Stroke" = "Contour" +"Stroke style" = "Style de contour" +"Stroke weight" = "Épaisseur du contour" +"Strokes" = "Contours" +"Style" = "Style" +"Styles" = "Styles" +"Stylistic set 1" = "Jeu stylistique 1" +"Stylistic set 2" = "Jeu stylistique 2" +"Stylistic set 3" = "Jeu stylistique 3" +"Stylistic set 4" = "Jeu stylistique 4" +"Stylistic set 5" = "Jeu stylistique 5" +"Subtract" = "Soustraire" +"Subtracts" = "Soustractions" +"Suffix" = "Suffixe" +"Swap instance" = "Permuter l’instance" +"Swap library: use another library's assets of the same names" = "Permuter la bibliothèque : utiliser les ressources de mêmes noms d’une autre bibliothèque" +"Swap orientation" = "Changer d’orientation" +"Swap overlay" = "Permuter la superposition" +"Swap to {name}" = "Permuter avec {name}" +"Swap width and height" = "Permuter largeur et hauteur" +"Swapped instance" = "Instance permutée" +"Swapped {n} assets" = { one = "{n} ressource permutée", other = "{n} ressources permutées" } +"Swapped {n} assets; {missed} had no match and still use the old library" = { one = "{n} ressource permutée ; {missed} sans correspondance utilisent toujours l’ancienne bibliothèque", other = "{n} ressources permutées ; {missed} sans correspondance utilisent toujours l’ancienne bibliothèque" } +"Sweep" = "Balayage" +"System" = "Système" +"Tab / Shift+Tab" = "Tab / Maj+Tab" +"Table" = "Tableau" +"Tablet" = "Tablette" +"Tabular numbers" = "Chiffres tabulaires" +"Take the values from the first selected layer" = "Reprendre les valeurs du premier calque sélectionné" +"Taper" = "Effilé" +"Taper both ends" = "Effiler les deux extrémités" +"Temperature" = "Température" +"Template" = "Modèle" +"Text" = "Texte" +"Text align" = "Alignement du texte" +"Text content" = "Contenu du texte" +"Text style" = "Style de texte" +"Text styles" = "Styles de texte" +"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 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} »)" +"The link carries the session's secret: share it only with people you invite." = "Le lien contient le secret de la session : ne le partagez qu’avec les personnes que vous invitez." +"The selection uses several text styles: click to apply one" = "La sélection utilise plusieurs styles de texte : cliquez pour en appliquer un" +"Theme" = "Thème" +"There's no destination for that action" = "Cette action n’a pas de destination" +"Thickness" = "Épaisseur" +"This branch can't be reviewed: {e}" = "Impossible de relire cette branche : {e}" +"This branch was merged or archived." = "Cette branche a été fusionnée ou archivée." +"This condition is edited as an expression" = "Cette condition se modifie en tant qu’expression" +"This file" = "Ce fichier" +"This file has unsaved changes" = "Ce fichier contient des modifications non enregistrées" +"This frame is new on the branch." = "Ce cadre est nouveau dans la branche." +"This frame isn't on the branch." = "Ce cadre n’est pas dans la branche." +"Tidy up" = "Ranger" +"Tile" = "Mosaïque" +"Tile type" = "Type de mosaïque" +"Tint" = "Nuance" +"Title" = "Titre" +"Title case" = "Casse de titre" +"To share this library with your team, publish the file to a server (Share ▸ Publish to server…), then publish the library there." = "Pour partager cette bibliothèque avec votre équipe, publiez le fichier sur un serveur (Partager ▸ Publier sur un serveur…), puis publiez-y la bibliothèque." +"Toggle" = "Activer/désactiver" +"Toggle light/dark theme" = "Basculer entre thème clair et sombre" +"Toggle visibility" = "Afficher/masquer" +"Tools" = "Outils" +"Top" = "Haut" +"Top & bottom" = "Haut et bas" +"Top left radius" = "Rayon supérieur gauche" +"Top right radius" = "Rayon supérieur droit" +"Transform" = "Transformer" +"Triangle arrow" = "Flèche triangulaire" +"Trigger" = "Déclencheur" +"True" = "Vrai" +"Truncate text" = "Tronquer le texte" +"Truncate with an ellipsis" = "Tronquer avec des points de suspension" +"Try another search or filter." = "Essayez une autre recherche ou un autre filtre." +"Two digits" = "Deux chiffres" +"Type" = "Type" +"Type settings" = "Réglages typographiques" +"Typography" = "Typographie" +"Underline" = "Souligné" +"Undo takes back only your own changes; what others changed since stays." = "Annuler ne revient que sur vos propres modifications ; ce que les autres ont modifié depuis reste." +"Ungroup" = "Dissocier" +"Uniform" = "Uniforme" +"Union" = "Union" +"Unions" = "Unions" +"Unknown — treated as sRGB" = "Inconnu — traité comme sRGB" +"Unread" = "Non lus" +"Unresolve" = "Rouvrir" +"Unsaved changes" = "Modifications non enregistrées" +"Unsaved changes in {names}. Close the window and lose them?" = "Modifications non enregistrées dans {names}. Fermer la fenêtre et les perdre ?" +"Unsaved changes: save first ({save}), or close the tab with {alt}-click to discard" = "Modifications non enregistrées : enregistrez d’abord ({save}) ou fermez l’onglet avec {alt}+clic pour les abandonner" +"Unsaved changes: save first, or close again with {key} to discard" = "Modifications non enregistrées : enregistrez d’abord ou fermez à nouveau avec {key} pour les abandonner" +"Up" = "Haut" +"Update" = "Mettre à jour" +"Update from main" = "Mettre à jour depuis le principal" +"Update from selection" = "Mettre à jour depuis la sélection" +"Updated {components} and {styles}" = "{components} et {styles} mis à jour" +"Uploads this file to a FigCraft server and keeps this tab in sync with it. You get a link to edit and a link to view." = "Envoie ce fichier sur un serveur FigCraft et garde cet onglet synchronisé avec lui. Vous obtenez un lien de modification et un lien de consultation." +"Uppercase" = "Majuscules" +"Use a fixed value" = "Utiliser une valeur fixe" +"Use an expression, e.g. count + 1" = "Utiliser une expression, p. ex. count + 1" +"Use as mask" = "Utiliser comme masque" +"Use auto layout" = "Utiliser la mise en page auto" +"Use number keys for opacity" = "Utiliser les touches numériques pour l’opacité" +"Use the layer's fill" = "Utiliser le remplissage du calque" +"Used in {files} · {instances}" = "Utilisé dans {files} · {instances}" +"Username" = "Nom d’utilisateur" +"Value" = "Valeur" +"Variable" = "Variable" +"Variable collections" = "Collections de variables" +"Variable modes" = "Modes de variables" +"Variable width" = "Largeur variable" +"Variables" = "Variables" +"Variables JSON…" = "JSON de variables…" +"Variables store reusable values (colours, numbers, strings, booleans) with modes such as Light and Dark." = "Les variables stockent des valeurs réutilisables (couleurs, nombres, chaînes, booléens) avec des modes tels que Clair et Sombre." +"Variant" = "Variante" +"Vector" = "Vecteur" +"Vectors" = "Vecteurs" +"Version" = "Version" +"Version history" = "Historique des versions" +"Version {version}" = "Version {version}" +"Version {v} · {components} · {styles} · {variables}" = "Version {v} · {components} · {styles} · {variables}" +"Vertical" = "Vertical" +"Vertical align" = "Alignement vertical" +"Vertical hex" = "Hexagone vertical" +"Vertical padding" = "Marge intérieure verticale" +"Vertical spacing" = "Espacement vertical" +"Vertical trim" = "Rognage vertical" +"View" = "Affichage" +"View link" = "Lien de consultation" +"View link copied" = "Lien de consultation copié" +"View only" = "Consultation seule" +"View only: you see every change as it happens but can't edit. Leave to keep a copy you can edit." = "Consultation seule : vous voyez chaque modification en direct sans pouvoir modifier. Quittez la session pour garder une copie modifiable." +"Viewing “{name}”" = "Consultation de « {name} »" +"Violet" = "Violet" +"Visibility" = "Visibilité" +"Visible" = "Visible" +"Vivid" = "Vif" +"Warm" = "Chaud" +"Watch" = "Montre" +"Wavy" = "Ondulé" +"Web" = "Web" +"WebSocket URL" = "URL WebSocket" +"WebSocket URL copied" = "URL WebSocket copiée" +"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 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." +"While hovering" = "Pendant le survol" +"While pressing" = "Pendant l’appui" +"White" = "Blanc" +"Why it changed" = "Pourquoi cela a changé" +"Width" = "Largeur" +"Width point" = "Point de largeur" +"Width profile" = "Profil de largeur" +"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" +"Yellow" = "Jaune" +"Yesterday" = "Hier" +"You" = "Vous" +"You'll get the host's file as a new tab and edit it together." = "Vous recevrez le fichier de l’hôte dans un nouvel onglet pour le modifier ensemble." +"Your copy of the file stays open" = "Votre copie du fichier reste ouverte" +"Your name" = "Votre nom" +"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." +"Zoom" = "Zoom" +"Zoom around the pointer" = "Zoomer autour du pointeur" +"Zoom device to fill window" = "Zoomer l’appareil pour remplir la fenêtre" +"Zoom in" = "Zoom avant" +"Zoom out" = "Zoom arrière" +"Zoom to 100%" = "Zoom à 100 %" +"Zoom to 200%" = "Zoom à 200 %" +"Zoom to 50%" = "Zoom à 50 %" +"Zoom to fit" = "Zoom pour ajuster" +"Zoom to selection" = "Zoom sur la sélection" +"Zoom tool: click to zoom in, drag an area" = "Outil Zoom : cliquez pour zoomer, faites glisser une zone" +"Zoom tool: zoom out" = "Outil Zoom : zoom arrière" +"and {n} more" = { one = "et {n} autre", other = "et {n} autres" } +"bleed marks" = "repères de fond perdu" +"can edit the document" = "peut modifier le document" +"crop marks" = "traits de coupe" +"development: {path}" = "développement : {path}" +"e.g. count + 1" = "p. ex. count + 1" +"e.g. count >= 3 and not done" = "p. ex. count >= 3 and not done" +"figcraft:// links from a browser, chat or email open this app and join the session." = "Les liens figcraft:// d’un navigateur, d’une messagerie ou d’un e-mail ouvrent cette application et rejoignent la session." +"hidden" = "masqué" +"iOS" = "iOS" +"locked" = "verrouillé" +"no bleed" = "sans fond perdu" +"nobody else here yet" = "personne d’autre pour l’instant" +"now" = "maintenant" +"or" = "ou" +"reads the document" = "lit le document" +"the plugin" = "le plugin" +"this session only" = "cette session uniquement" +"{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}" +"{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})" +"{name} (you)" = "{name} (vous)" +"{name} ({layers} layers)" = "{name} ({layers} calques)" +"{name} ({tag}): {min} – {max}, default {default}. Double-click the slider to go back to the style's value; Escape while dragging cancels." = "{name} ({tag}) : {min} – {max}, par défaut {default}. Double-cliquez sur le curseur pour revenir à la valeur du style ; Échap pendant le glissement annule." +"{name} from {path}" = "{name} depuis {path}" +"{name} · deleted on main" = "{name} · supprimé dans le principal" +"{name} · deleted on the branch" = "{name} · supprimé dans la branche" +"{name} · not published" = "{name} · non publié" +"{name} · on a server" = "{name} · sur un serveur" +"{name} · published version {v}" = "{name} · version publiée {v}" +"{name} · version {v} on the server" = "{name} · version {v} sur le serveur" +"{name}, {kind}, {w} by {h}, selected" = "{name}, {kind}, {w} sur {h}, sélectionné" +"{n} added" = { one = "{n} ajouté", other = "{n} ajoutés" } +"{n} autosave versions" = { one = "{n} version enregistrée automatiquement", other = "{n} versions enregistrées automatiquement" } +"{n} changed" = { one = "{n} modifié", other = "{n} modifiés" } +"{n} columns" = { one = "{n} colonne", other = "{n} colonnes" } +"{n} components" = { one = "{n} composant", other = "{n} composants" } +"{n} components and styles have newer versions" = { one = "{n} composant ou style a une version plus récente", other = "{n} composants et styles ont des versions plus récentes" } +"{n} conflicts to resolve" = { one = "{n} conflit à résoudre", other = "{n} conflits à résoudre" } +"{n} days ago" = { one = "il y a {n} jour", other = "il y a {n} jours" } +"{n} files" = { one = "{n} fichier", other = "{n} fichiers" } +"{n} hours ago" = { one = "il y a {n} heure", other = "il y a {n} heures" } +"{n} instances" = { one = "{n} instance", other = "{n} instances" } +"{n} layers" = { one = "{n} calque", other = "{n} calques" } +"{n} layers as one file" = { one = "{n} calque en un seul fichier", other = "{n} calques en un seul fichier" } +"{n} layers selected" = { one = "{n} calque sélectionné", other = "{n} calques sélectionnés" } +"{n} layers · {parts}" = { one = "{n} calque · {parts}", other = "{n} calques · {parts}" } +"{n} matches" = { one = "{n} résultat", other = "{n} résultats" } +"{n} minutes ago" = { one = "il y a {n} minute", other = "il y a {n} minutes" } +"{n} months ago" = { one = "il y a {n} mois", other = "il y a {n} mois" } +"{n} of {total}" = "{n} sur {total}" +"{n} people joined" = { one = "{n} personne a rejoint la session", other = "{n} personnes ont rejoint la session" } +"{n} preferred components" = { one = "{n} composant préféré", other = "{n} composants préférés" } +"{n} ready" = { one = "{n} prêt", other = "{n} prêts" } +"{n} removed" = { one = "{n} supprimé", other = "{n} supprimés" } +"{n} replies" = { one = "{n} réponse", other = "{n} réponses" } +"{n} rows" = { one = "{n} ligne", other = "{n} lignes" } +"{n} styles" = { one = "{n} style", other = "{n} styles" } +"{n} variables" = { one = "{n} variable", other = "{n} variables" } +"{n} weeks ago" = { one = "il y a {n} semaine", other = "il y a {n} semaines" } +"{n} years ago" = { one = "il y a {n} an", other = "il y a {n} ans" } +"{n}d" = "{n} j" +"{n}h" = "{n} h" +"{n}m" = "{n} min" +"{n}w" = "{n} sem." +"{page}, nothing selected" = "{page}, aucune sélection" +"{profile} (current)" = "{profile} (actuel)" +"{property} is its value; {property ? \"a\" : \"b\"} picks a string. Other {…} stays as written." = "{property} donne sa valeur ; {property ? \"a\" : \"b\"} choisit un texte. Tout autre {…} reste tel quel." +"{tool} hold {key}" = "{tool} maintenir {key}" +"{value} isn't a colour" = "{value} n’est pas une couleur" +"{when} · edited" = "{when} · modifié" +"← ↑ → ↓" = "← ↑ → ↓" +"⇥ / ⇧⇥" = "⇥ / ⇧⇥" +"⌘ arrows" = "⌘ flèches" +"⌘ click" = "⌘ clic" +"⌘ scroll" = "⌘ défilement" +"⌥ drag" = "⌥ glisser" + +[commands] +"align.bottom" = "Aligner en bas" +"align.hcenter" = "Aligner les centres horizontalement" +"align.left" = "Aligner à gauche" +"align.right" = "Aligner à droite" +"align.top" = "Aligner en haut" +"align.vcenter" = "Aligner les centres verticalement" +"annotation.add" = "Ajouter une annotation" +"annotation.addCategory" = "Ajouter une catégorie d’annotation" +"annotation.categories" = "Catégories d’annotation" +"annotation.edit" = "Modifier l’annotation" +"annotation.editCategory" = "Modifier la catégorie d’annotation" +"annotation.list" = "Lister les annotations" +"annotation.remove" = "Retirer l’annotation" +"annotation.removeCategory" = "Supprimer la catégorie d’annotation" +"app.actions" = "Actions" +"app.preferences" = "Préférences" +"arrange.back" = "Mettre à l’arrière-plan" +"arrange.backward" = "Reculer" +"arrange.forward" = "Avancer" +"arrange.front" = "Mettre au premier plan" +"arrange.packH" = "Tasser horizontalement" +"arrange.packV" = "Tasser verticalement" +"arrange.roundToPixels" = "Arrondir aux pixels" +"arrange.tidy" = "Ranger" +"bool.exclude" = "Exclure la sélection" +"bool.flatten" = "Aplatir le booléen" +"bool.intersect" = "Intersection de la sélection" +"bool.subtract" = "Soustraire la sélection" +"bool.union" = "Union de la sélection" +"branch.archive" = "Archiver la branche" +"branch.create" = "Créer une branche" +"branch.list" = "Lister les branches" +"branch.merge" = "Fusionner la branche" +"branch.open" = "Ouvrir la branche" +"branch.review" = "Relire la branche" +"branch.updateFromMain" = "Mettre à jour depuis le principal" +"codeConnect.export" = "Exporter les liaisons au code" +"codeConnect.import" = "Importer les liaisons au code" +"codeConnect.remove" = "Délier du code" +"codeConnect.set" = "Relier au code" +"collab.cursor" = "Afficher le curseur à" +"collab.diff" = "Afficher les modifications synchronisées" +"collab.follow" = "Suivre" +"collab.host" = "Démarrer une session en direct" +"collab.join" = "Rejoindre une session en direct" +"collab.leave" = "Quitter la session en direct" +"collab.peers" = "Personnes dans ce fichier" +"collab.publish" = "Publier sur un serveur" +"collab.registerLinks" = "Ouvrir les liens d’invitation dans FigCraft" +"collab.stop" = "Arrêter la session en direct" +"command.batch" = "Exécuter plusieurs commandes" +"comment.add" = "Ajouter un commentaire" +"comment.delete" = "Supprimer le commentaire" +"comment.edit" = "Modifier le commentaire" +"comment.link" = "Copier le lien du commentaire" +"comment.list" = "Lister les commentaires" +"comment.markRead" = "Marquer le commentaire comme lu" +"comment.move" = "Déplacer le commentaire" +"comment.next" = "Commentaire suivant" +"comment.open" = "Ouvrir le commentaire" +"comment.people" = "Personnes dans les commentaires" +"comment.react" = "Réagir au commentaire" +"comment.reply" = "Répondre au commentaire" +"comment.resolve" = "Résoudre le commentaire" +"comment.zoom" = "Zoomer sur les commentaires" +"component.addProperty" = "Ajouter une propriété de composant" +"component.addVariant" = "Ajouter une variante" +"component.bindProperty" = "Lier le calque à une propriété" +"component.combineVariants" = "Combiner en variantes" +"component.create" = "Créer un composant" +"component.createMultiple" = "Créer plusieurs composants" +"component.deleteProperty" = "Supprimer la propriété de composant" +"component.detach" = "Détacher l’instance" +"component.editProperty" = "Modifier la propriété de composant" +"component.exposeInstance" = "Exposer l’instance imbriquée" +"component.goToMain" = "Aller au composant principal" +"component.list" = "Lister les composants" +"component.makeSlot" = "Créer un emplacement" +"component.properties" = "Propriétés du composant" +"component.pushChanges" = "Transmettre les modifications au composant principal" +"component.removeSlot" = "Retirer l’emplacement" +"component.resetInstance" = "Réinitialiser toutes les modifications" +"component.resetOverride" = "Réinitialiser le remplacement" +"component.restoreMain" = "Restaurer le composant principal" +"dev.compare" = "Comparer les modifications" +"dev.focus" = "Vue ciblée" +"dev.resolveChange" = "Résoudre la modification" +"dev.unfocus" = "Quitter la vue ciblée" +"devResource.add" = "Ajouter une ressource de développement" +"devResource.edit" = "Modifier la ressource de développement" +"devResource.list" = "Lister les ressources de développement" +"devResource.remove" = "Retirer la ressource de développement" +"distribute.horizontal" = "Répartir l’espacement horizontal" +"distribute.vertical" = "Répartir l’espacement vertical" +"doc.home" = "Accueil" +"doc.list" = "Lister les documents" +"doc.nextTab" = "Onglet suivant" +"doc.previousTab" = "Onglet précédent" +"doc.switch" = "Changer de document" +"edit.copy" = "Copier" +"edit.copyAsCss" = "Copier en CSS" +"edit.copyAsPng" = "Copier en PNG" +"edit.copyAsSvg" = "Copier en SVG" +"edit.copyAsText" = "Copier en texte" +"edit.copyLink" = "Copier le lien de la sélection" +"edit.copyProperties" = "Copier les propriétés" +"edit.cut" = "Couper" +"edit.delete" = "Supprimer" +"edit.duplicate" = "Dupliquer" +"edit.findReplace" = "Rechercher et remplacer" +"edit.paste" = "Coller" +"edit.pasteOver" = "Coller par-dessus la sélection" +"edit.pasteProperties" = "Coller les propriétés" +"edit.pasteReplace" = "Coller pour remplacer" +"edit.pickColor" = "Prélever une couleur" +"edit.redo" = "Rétablir" +"edit.repeat" = "Répéter la dernière commande" +"edit.setDefaultProperties" = "Définir les propriétés par défaut" +"edit.undo" = "Annuler" +"effect.add" = "Ajouter un effet" +"effect.move" = "Déplacer l’effet" +"effect.remove" = "Retirer l’effet" +"effect.set" = "Définir l’effet" +"export.add" = "Ajouter un réglage d’exportation" +"export.remove" = "Retirer le réglage d’exportation" +"export.update" = "Modifier le réglage d’exportation" +"file.close" = "Fermer l’onglet" +"file.colorProfile" = "Profil colorimétrique" +"file.duplicate" = "Dupliquer le fichier" +"file.export" = "Exporter" +"file.exportFramesPdf" = "Exporter les cadres en PDF" +"file.exportLayers" = "Exporter les calques" +"file.exportSvg" = "Exporter la sélection en SVG" +"file.import" = "Importer" +"file.new" = "Nouveau fichier de design" +"file.open" = "Ouvrir" +"file.openRecent" = "Ouvrir un fichier récent" +"file.placeImage" = "Placer une image" +"file.recover" = "Récupérer le fichier" +"file.rename" = "Renommer le fichier" +"file.revert" = "Revenir à la version enregistrée" +"file.save" = "Enregistrer" +"file.saveAs" = "Enregistrer sous" +"file.saveVersion" = "Enregistrer dans l’historique des versions" +"file.versionHistory" = "Afficher l’historique des versions" +"fill.add" = "Ajouter un remplissage" +"fill.move" = "Déplacer le remplissage" +"fill.pattern" = "Remplissage de motif" +"fill.remove" = "Retirer le remplissage" +"fill.set" = "Définir le remplissage" +"frame.create" = "Créer un cadre" +"frame.presets" = "Lister les préréglages de cadre" +"frame.swapOrientation" = "Changer d’orientation" +"grid.add" = "Ajouter une grille de mise en page" +"grid.move" = "Déplacer la grille de mise en page" +"grid.remove" = "Retirer la grille de mise en page" +"guide.add" = "Ajouter un repère" +"guide.clear" = "Retirer tous les repères" +"guide.move" = "Déplacer le repère" +"guide.remove" = "Retirer le repère" +"guide.select" = "Sélectionner le repère" +"help.about" = "À propos de FigCraft" +"help.page" = "Page d’aide" +"help.shortcuts" = "Raccourcis clavier" +"image.adjust" = "Régler l’image" +"image.deletePreset" = "Supprimer le préréglage d’image" +"image.place" = "Placer une image" +"image.presets" = "Préréglages d’image" +"image.savePreset" = "Enregistrer le préréglage d’image" +"inspect.assets" = "Inspecter les ressources" +"inspect.code" = "Code du calque" +"inspect.componentCode" = "Code du composant" +"inspect.properties" = "Inspecter les propriétés" +"inspect.readyForDev" = "Prêt pour le dev" +"instance.create" = "Créer une instance" +"instance.exposed" = "Instances imbriquées exposées" +"instance.place" = "Placer une instance" +"instance.resetSlot" = "Réinitialiser l’emplacement" +"instance.setProperties" = "Définir les propriétés de l’instance" +"instance.slotInsert" = "Insérer dans l’emplacement" +"instance.swap" = "Permuter l’instance" +"instance.swapAt" = "Permuter l’instance en un point" +"layers.collapseAll" = "Réduire les calques" +"layout.add" = "Ajouter la mise en page auto" +"layout.remove" = "Retirer la mise en page auto" +"layout.setTrack" = "Définir la taille d’une piste de grille" +"layout.suggest" = "Suggérer une mise en page auto" +"libraries.open" = "Bibliothèques" +"libraries.publish" = "Publier la bibliothèque…" +"library.acceptUpdates" = "Accepter les mises à jour de bibliothèque" +"library.add" = "Ajouter une bibliothèque" +"library.aliasVariable" = "Créer un alias de variable de bibliothèque" +"library.applyStyle" = "Appliquer un style de bibliothèque" +"library.bindVariable" = "Lier une variable de bibliothèque" +"library.extendCollection" = "Étendre une collection de bibliothèque" +"library.import" = "Importer un composant de bibliothèque" +"library.importVariable" = "Importer une variable de bibliothèque" +"library.list" = "Lister les bibliothèques" +"library.place" = "Placer un composant de bibliothèque" +"library.publish" = "Publier la bibliothèque" +"library.publishToServer" = "Publier la bibliothèque sur le serveur" +"library.remove" = "Retirer la bibliothèque" +"library.setVariableMode" = "Définir le mode de variable de bibliothèque" +"library.swap" = "Permuter la bibliothèque" +"library.swapAt" = "Permuter l’instance avec un composant de bibliothèque" +"library.updates" = "Mises à jour de bibliothèque" +"library.usage" = "Utilisation de la bibliothèque" +"measure.distances" = "Mesurer les distances" +"measure.padding" = "Mesurer la marge intérieure de la mise en page auto" +"node.create" = "Créer un calque" +"node.get" = "Obtenir le calque" +"node.reorder" = "Réordonner le calque" +"node.reparent" = "Déplacer le calque dans" +"node.set" = "Définir les propriétés" +"object.batchRename" = "Renommer par lot" +"object.flipH" = "Retourner horizontalement" +"object.flipV" = "Retourner verticalement" +"object.frameSelection" = "Encadrer la sélection" +"object.group" = "Grouper la sélection" +"object.hideOthers" = "Masquer les autres calques" +"object.mask" = "Utiliser comme masque" +"object.moveToPage" = "Déplacer vers la page" +"object.opacityKeys" = "Opacité par les touches numériques" +"object.rasterize" = "Pixelliser la sélection" +"object.releaseMask" = "Libérer le masque" +"object.removeFill" = "Retirer le remplissage" +"object.removeFrame" = "Retirer le cadre" +"object.removeStroke" = "Retirer le contour" +"object.rename" = "Renommer" +"object.resizeToFit" = "Redimensionner au contenu" +"object.rotate180" = "Rotation de 180°" +"object.rotateLeft" = "Rotation de 90° à gauche" +"object.rotateRight" = "Rotation de 90° à droite" +"object.setThumbnail" = "Définir comme miniature" +"object.swapFillStroke" = "Permuter remplissage et contour" +"object.toggleLock" = "Verrouiller/déverrouiller la sélection" +"object.toggleVisible" = "Afficher/masquer la sélection" +"object.ungroup" = "Dissocier la sélection" +"object.wrapInSection" = "Envelopper dans une nouvelle section" +"page.add" = "Ajouter une page" +"page.delete" = "Supprimer la page" +"page.duplicate" = "Dupliquer la page" +"page.list" = "Lister les pages" +"page.move" = "Déplacer la page" +"page.rename" = "Renommer la page" +"page.select" = "Aller à la page" +"page.setBackground" = "Arrière-plan de la page" +"paint.documentColors" = "Couleurs du document" +"plugin.close" = "Fermer le panneau du plugin" +"plugin.event" = "Utiliser une commande du panneau du plugin" +"plugin.import" = "Importer un plugin depuis un manifeste…" +"plugin.list" = "Lister les plugins" +"plugin.remove" = "Retirer le plugin" +"plugin.run" = "Exécuter le plugin" +"plugin.ui" = "Panneau du plugin" +"plugins.manage" = "Gérer les plugins…" +"plugins.runLast" = "Exécuter le dernier plugin" +"pref.highlightHover" = "Mettre en évidence les calques au survol" +"pref.keepTool" = "Garder l’outil sélectionné après usage" +"pref.language" = "Langue de l’interface" +"pref.nudge" = "Pas de décalage" +"pref.numberKeysOpacity" = "Utiliser les touches numériques pour l’opacité" +"pref.reduceMotion" = "Réduire les animations" +"pref.renameDuplicates" = "Renommer les calques dupliqués" +"pref.showDimensions" = "Afficher les dimensions sur les objets" +"pref.userName" = "Votre nom dans les commentaires" +"proto.action.add" = "Ajouter une action de prototype" +"proto.action.move" = "Réordonner l’action de prototype" +"proto.action.remove" = "Retirer l’action de prototype" +"proto.action.set" = "Modifier l’action de prototype" +"proto.closePreview" = "Fermer l’aperçu du prototype" +"proto.conditional.addBlock" = "Ajouter sinon si / sinon" +"proto.conditional.removeBlock" = "Retirer si / sinon si / sinon" +"proto.conditional.setCondition" = "Modifier la condition" +"proto.flow.add" = "Ajouter un point de départ de flux" +"proto.flow.remove" = "Retirer le flux" +"proto.flow.rename" = "Renommer le flux" +"proto.interaction.add" = "Ajouter une interaction" +"proto.interaction.clear" = "Retirer toutes les interactions" +"proto.interaction.remove" = "Retirer l’interaction" +"proto.interaction.set" = "Modifier l’interaction" +"proto.present" = "Présenter" +"proto.presentOptions" = "Options de présentation" +"proto.preview" = "Ouvrir l’aperçu du prototype" +"proto.settings" = "Réglages du prototype" +"section.toggleContents" = "Masquer/afficher le contenu de la section" +"select.add" = "Ajouter à la sélection" +"select.all" = "Tout sélectionner" +"select.area" = "Sélectionner une zone" +"select.byName" = "Sélectionner les calques par nom" +"select.children" = "Sélectionner les enfants" +"select.inverse" = "Inverser la sélection" +"select.layersAt" = "Calques en un point" +"select.matching" = "Sélectionner les calques correspondants" +"select.next" = "Sélectionner l’élément suivant" +"select.none" = "Tout désélectionner" +"select.parent" = "Sélectionner le parent" +"select.previous" = "Sélectionner l’élément précédent" +"select.remove" = "Retirer de la sélection" +"select.sameEffect" = "Sélectionner le même effet" +"select.sameFill" = "Sélectionner le même remplissage" +"select.sameFont" = "Sélectionner la même police" +"select.sameInstance" = "Sélectionner la même instance" +"select.sameProperties" = "Sélectionner les mêmes propriétés" +"select.sameStroke" = "Sélectionner le même contour" +"select.sameText" = "Sélectionner les mêmes propriétés de texte" +"select.set" = "Sélectionner" +"shape.arrow" = "Flèche" +"shape.ellipse" = "Ellipse" +"shape.line" = "Ligne" +"shape.polygon" = "Polygone" +"shape.rectangle" = "Rectangle" +"shape.star" = "Étoile" +"shapeBuilder.merge" = "Fusionner les régions" +"shapeBuilder.mode" = "Mode du générateur de formes" +"shapeBuilder.regions" = "Régions du générateur de formes" +"shapeBuilder.remove" = "Retirer les régions" +"stroke.add" = "Ajouter un contour" +"stroke.brush" = "Pinceau" +"stroke.move" = "Déplacer le contour" +"stroke.remove" = "Retirer le contour" +"stroke.set" = "Définir le contour" +"stroke.widthProfile" = "Profil de largeur" +"style.apply" = "Appliquer le style" +"style.create" = "Créer un style" +"style.delete" = "Supprimer le style" +"style.detach" = "Détacher le style" +"style.duplicate" = "Dupliquer le style" +"style.list" = "Lister les styles" +"style.move" = "Déplacer les styles" +"style.renameFolder" = "Renommer le dossier de styles" +"style.update" = "Modifier le style" +"text.alignCenter" = "Centrer" +"text.alignJustify" = "Justifier" +"text.alignLeft" = "Aligner à gauche" +"text.alignRight" = "Aligner à droite" +"text.bold" = "Gras" +"text.bulletList" = "Liste à puces" +"text.case" = "Casse" +"text.caseLower" = "Minuscules" +"text.caseOriginal" = "Casse d’origine" +"text.caseSmallCaps" = "Petites capitales" +"text.caseTitle" = "Casse de titre" +"text.caseUpper" = "Majuscules" +"text.create" = "Texte" +"text.decoration" = "Décoration" +"text.edit.begin" = "Modifier le texte" +"text.edit.caret" = "Placer le curseur de texte" +"text.edit.end" = "Arrêter de modifier le texte" +"text.edit.insert" = "Saisir du texte" +"text.edit.key" = "Touche de texte" +"text.edit.preedit" = "Composer du texte (IME)" +"text.edit.selectLine" = "Sélectionner la ligne" +"text.edit.selectWord" = "Sélectionner le mot" +"text.edit.selection" = "Sélection de texte" +"text.endPreview" = "Terminer l’aperçu du texte" +"text.fonts" = "Lister les polices" +"text.italic" = "Italique" +"text.lineHeightDown" = "Réduire la hauteur de ligne" +"text.lineHeightUp" = "Augmenter la hauteur de ligne" +"text.link" = "Créer un lien" +"text.listStyle" = "Style de liste" +"text.maxLines" = "Lignes max." +"text.numberList" = "Liste numérotée" +"text.onPath" = "Texte sur un tracé" +"text.paragraphIndent" = "Retrait de paragraphe" +"text.paragraphSpacing" = "Espacement des paragraphes" +"text.pathOptions" = "Options du texte sur un tracé" +"text.preview" = "Prévisualiser la modification du texte" +"text.removeFromPath" = "Retirer le texte du tracé" +"text.set" = "Définir le texte" +"text.setFeatures" = "Fonctionnalités OpenType" +"text.setVariations" = "Axes de police variable" +"text.sizeDown" = "Réduire la taille de police" +"text.sizeUp" = "Augmenter la taille de police" +"text.strikethrough" = "Barré" +"text.style" = "Styler une plage de texte" +"text.trackingDown" = "Réduire l’interlettrage" +"text.trackingUp" = "Augmenter l’interlettrage" +"text.underline" = "Souligné" +"text.weightDown" = "Réduire la graisse" +"text.weightUp" = "Augmenter la graisse" +"tool.arrow" = "Flèche" +"tool.comment" = "Commentaire" +"tool.ellipse" = "Ellipse" +"tool.frame" = "Cadre" +"tool.hand" = "Main" +"tool.line" = "Ligne" +"tool.move" = "Déplacer" +"tool.pen" = "Plume" +"tool.pencil" = "Crayon" +"tool.pencilBrush" = "Pinceau du crayon" +"tool.polygon" = "Polygone" +"tool.rectangle" = "Rectangle" +"tool.scale" = "Échelle" +"tool.scaleAnchor" = "Ancre de mise à l’échelle" +"tool.section" = "Section" +"tool.set" = "Choisir un outil" +"tool.shapeBuilder" = "Générateur de formes" +"tool.slice" = "Tranche" +"tool.star" = "Étoile" +"tool.text" = "Texte" +"transform.move" = "Déplacer" +"transform.moveTo" = "Déplacer vers" +"transform.nudge" = "Décaler" +"transform.nudgeSize" = "Redimensionner par décalage" +"transform.resize" = "Redimensionner" +"transform.rotate" = "Faire pivoter" +"transform.scale" = "Mettre à l’échelle" +"variable.addMode" = "Ajouter un mode" +"variable.bind" = "Lier une variable" +"variable.create" = "Créer une variable" +"variable.createCollection" = "Créer une collection de variables" +"variable.delete" = "Supprimer la variable" +"variable.deleteCollection" = "Supprimer la collection" +"variable.duplicate" = "Dupliquer la variable" +"variable.export" = "Exporter les variables" +"variable.import" = "Importer des variables" +"variable.list" = "Lister les variables" +"variable.moveMode" = "Déplacer le mode" +"variable.removeMode" = "Supprimer le mode" +"variable.renameCollection" = "Renommer la collection" +"variable.renameMode" = "Renommer le mode" +"variable.resetOverride" = "Réinitialiser le remplacement de variable" +"variable.set" = "Définir la valeur de la variable" +"variable.setMode" = "Définir le mode de variable" +"variable.update" = "Modifier la variable" +"vector.create" = "Vecteur" +"vector.deleteHeal" = "Supprimer et réparer la sélection" +"vector.edit.addVertex" = "Ajouter un point" +"vector.edit.begin" = "Modifier le vecteur" +"vector.edit.bend" = "Courber le segment" +"vector.edit.bounds" = "Limites des points sélectionnés" +"vector.edit.connect" = "Relier les points" +"vector.edit.cornerRadius" = "Rayon d’angle du point" +"vector.edit.cut" = "Couper le tracé" +"vector.edit.delete" = "Supprimer les points" +"vector.edit.end" = "Terminer la modification" +"vector.edit.erase" = "Effacer" +"vector.edit.lasso" = "Sélection au lasso" +"vector.edit.mirroring" = "Symétrie des poignées" +"vector.edit.moveHandles" = "Déplacer les poignées" +"vector.edit.moveVertices" = "Déplacer les points" +"vector.edit.nudge" = "Décaler les points" +"vector.edit.paint" = "Pot de peinture" +"vector.edit.pen" = "Point de plume" +"vector.edit.penEnd" = "Terminer le tracé à la plume" +"vector.edit.position" = "Position du point" +"vector.edit.resize" = "Redimensionner les points" +"vector.edit.rotate" = "Faire pivoter les points" +"vector.edit.select" = "Sélectionner des points" +"vector.edit.selectAll" = "Sélectionner tous les points" +"vector.edit.setHandle" = "Définir la poignée" +"vector.edit.smooth" = "Lisser ou rendre anguleux les points" +"vector.edit.state" = "État de la modification vectorielle" +"vector.edit.strokeCap" = "Extrémité du contour au point" +"vector.edit.strokeJoin" = "Jointure du contour au point" +"vector.edit.tool" = "Outil de modification vectorielle" +"vector.edit.transform" = "Transformer les points" +"vector.edit.widthPoint" = "Point de largeur" +"vector.flatten" = "Aplatir" +"vector.join" = "Joindre la sélection" +"vector.offset" = "Décaler le tracé" +"vector.outlineStroke" = "Convertir le contour en tracé" +"vector.reverse" = "Inverser le sens du tracé" +"vector.simplify" = "Simplifier le vecteur" +"vector.smoothJoin" = "Joindre la sélection en lissant" +"version.autosave" = "Enregistrer automatiquement une version" +"version.delete" = "Supprimer la version" +"version.duplicate" = "Dupliquer la version" +"version.exitPreview" = "Revenir à la version actuelle" +"version.list" = "Lister les versions" +"version.preview" = "Voir la version" +"version.rename" = "Renommer la version" +"version.restore" = "Restaurer la version" +"view.assets" = "Panneau Ressources" +"view.comments" = "Commentaires" +"view.contextMenu" = "Afficher le menu contextuel" +"view.design" = "Panneau Design" +"view.designPrototype" = "Basculer entre Design et Prototype" +"view.devMode" = "Mode Dev" +"view.frameOutlines" = "Contours des cadres" +"view.get" = "Obtenir l’affichage" +"view.layers" = "Panneau Calques" +"view.layoutGrids" = "Grilles de mise en page" +"view.leftSidebar" = "Afficher/masquer la barre latérale gauche" +"view.maskOutlines" = "Contours des masques" +"view.nextFrame" = "Zoomer sur le cadre suivant" +"view.nextPage" = "Page suivante" +"view.nextRegion" = "Activer la région suivante" +"view.outlines" = "Contours" +"view.outlinesSelection" = "Contours de la sélection" +"view.pixelGrid" = "Grille de pixels" +"view.pixelPreview" = "Aperçu des pixels" +"view.prevFrame" = "Zoomer sur le cadre précédent" +"view.prevPage" = "Page précédente" +"view.previousRegion" = "Activer la région précédente" +"view.proofSrgb" = "Épreuve écran sRGB" +"view.prototype" = "Panneau Prototype" +"view.rulers" = "Règles" +"view.set" = "Définir l’affichage" +"view.slices" = "Tranches" +"view.snapGeometry" = "Aimanter à la géométrie" +"view.snapObjects" = "Aimanter aux objets" +"view.snapPixel" = "Aimanter à la grille de pixels" +"view.themeDark" = "Thème sombre" +"view.themeLight" = "Thème clair" +"view.themeSystem" = "Suivre le thème du système" +"view.toggleUi" = "Afficher/masquer l’interface" +"view.zoom100" = "Zoom à 100 %" +"view.zoom200" = "Zoom à 200 %" +"view.zoom50" = "Zoom à 50 %" +"view.zoomAt" = "Outil Zoom" +"view.zoomFit" = "Zoom pour ajuster" +"view.zoomIn" = "Zoom avant" +"view.zoomOut" = "Zoom arrière" +"view.zoomSelection" = "Zoom sur la sélection" +"window.focus" = "Mettre la fenêtre au premier plan" +"window.new" = "Nouvelle fenêtre" + +[menu] +"bool.exclude" = "Exclure" +"bool.flatten" = "Aplatir" +"bool.intersect" = "Intersection" +"bool.subtract" = "Soustraire" +"bool.union" = "Union" +"file.duplicate" = "Dupliquer" +"file.import" = "Importer depuis un fichier…" +"file.rename" = "Renommer" +"libraries.open" = "Ouvrir les bibliothèques" +"select.sameEffect" = "Effet" +"select.sameFill" = "Remplissage" +"select.sameFont" = "Police" +"select.sameInstance" = "Instance" +"select.sameProperties" = "Propriétés" +"select.sameStroke" = "Contour" +"select.sameText" = "Propriétés de texte" +"text.alignCenter" = "Centrer le texte" +"text.alignJustify" = "Justifier le texte" +"text.alignLeft" = "Aligner le texte à gauche" +"text.alignRight" = "Aligner le texte à droite" +"view.assets" = "Ressources" +"view.design" = "Design" +"view.layers" = "Calques" +"view.outlines" = "Afficher les contours" +"view.outlinesSelection" = "Afficher les contours de la sélection" +"view.prototype" = "Prototype" +"view.themeDark" = "Sombre" +"view.themeLight" = "Clair" +"view.themeSystem" = "Suivre le système" diff --git a/crates/ui-egui/locales/pt-BR.toml b/crates/ui-egui/locales/pt-BR.toml new file mode 100644 index 0000000..a38e25b --- /dev/null +++ b/crates/ui-egui/locales/pt-BR.toml @@ -0,0 +1,1913 @@ +# FigCraft interface strings: Portuguese (Brazil). +# +# Draft — needs native review: machine-drafted from the English catalog. Brand names and keyboard +# glyphs stay as they are. Brazilian usage (você, arquivo, salvar, tela). See docs/translating.md. + +[meta] +name = "Português (Brasil)" +status = "draft — needs native review" + +[ui] +"% of all commits" = "% de todos os commits" +"(no longer published)" = "(não publicado mais)" +"({n} warnings: some entries were skipped)" = { one = "({n} aviso: algumas entradas foram ignoradas)", other = "({n} avisos: algumas entradas foram ignoradas)" } +"+ Create variable" = "+ Criar variável" +"1…9, 0" = "1…9, 0" +"@{login}: {prs} PRs, {commits} commits, +{added} / −{deleted} lines (Δ {delta}), +{bin_added} / −{bin_deleted} binary assets, {first} – {last}" = "@{login}: {prs} PRs, {commits} commits, +{added} / −{deleted} linhas (Δ {delta}), +{bin_added} / −{bin_deleted} arquivos binários, {first} – {last}" +"A collection of this file with these modes and variables: override their values per mode and add variables of its own" = "Uma coleção deste arquivo com estes modos e variáveis: substitua os valores por modo e adicione variáveis próprias" +"A spring plays until it settles: its mass, stiffness and damping set how long" = "Uma mola se move até se estabilizar: sua massa, rigidez e amortecimento definem a duração" +"About" = "Sobre" +"About FigCraft" = "Sobre o FigCraft" +"Action" = "Ação" +"Actions" = "Ações" +"Actions…" = "Ações…" +"Active" = "Ativa" +"Actual size (100%)" = "Tamanho real (100%)" +"Add a category" = "Adicionar uma categoria" +"Add a comment" = "Adicione um comentário" +"Add a description" = "Adicionar uma descrição" +"Add a frame (F) or a shape (R) to get started" = "Adicione um quadro (F) ou uma forma (R) para começar" +"Add a layer or component to tile first" = "Adicione primeiro uma camada ou um componente para o mosaico" +"Add a note for developers" = "Adicione uma nota para desenvolvedores" +"Add action" = "Adicionar ação" +"Add actions for when no condition holds" = "Adicionar ações para quando nenhuma condição for atendida" +"Add an annotation for developers" = "Adicione uma anotação para desenvolvedores" +"Add another condition" = "Adicionar outra condição" +"Add auto layout" = "Adicionar layout automático" +"Add background behind overlay" = "Adicionar fundo atrás da sobreposição" +"Add content to this slot" = "Adicionar conteúdo a este slot" +"Add dev resource" = "Adicionar recurso de desenvolvimento" +"Add effect" = "Adicionar efeito" +"Add export setting" = "Adicionar configuração de exportação" +"Add fill" = "Adicionar preenchimento" +"Add interaction" = "Adicionar interação" +"Add layout grid" = "Adicionar grade de layout" +"Add library" = "Adicionar biblioteca" +"Add library file…" = "Adicionar arquivo de biblioteca…" +"Add max height" = "Adicionar altura máx." +"Add max width" = "Adicionar largura máx." +"Add min height" = "Adicionar altura mín." +"Add min width" = "Adicionar largura mín." +"Add mode" = "Adicionar modo" +"Add new page" = "Adicionar nova página" +"Add or update collections from a variables JSON" = "Adicionar ou atualizar coleções a partir de um JSON de variáveis" +"Add properties to make instances configurable" = "Adicione propriedades para tornar as instâncias configuráveis" +"Add reaction" = "Adicionar reação" +"Add starting point" = "Adicionar ponto de partida" +"Add stroke" = "Adicionar traço" +"Add variant" = "Adicionar variante" +"Add variant with a new value" = "Adicionar variante com um novo valor" +"Added" = "Adicionado" +"Added the library \"{name}\"" = "Biblioteca \"{name}\" adicionada" +"Adjust" = "Ajustes" +"Adjustment presets" = "Predefinições" +"Advanced stroke" = "Traço avançado" +"After delay" = "Após atraso" +"After delay {ms}ms" = "Após {ms} ms" +"Align" = "Alinhamento" +"Align bottom" = "Alinhar embaixo" +"Align center" = "Alinhar ao centro" +"Align horizontal centers" = "Alinhar centros horizontalmente" +"Align left" = "Alinhar à esquerda" +"Align middle" = "Alinhar ao meio" +"Align right" = "Alinhar à direita" +"Align text baselines" = "Alinhar linhas de base do texto" +"Align top" = "Alinhar em cima" +"Align vertical centers" = "Alinhar centros verticalmente" +"Alignment" = "Alinhamento" +"All" = "Todos" +"All categories" = "Todas as categorias" +"All comments" = "Todos os comentários" +"All components" = "Todos os componentes" +"All fonts" = "Todas as fontes" +"All supported properties" = "Todas as propriedades compatíveis" +"All variables" = "Todas as variáveis" +"Alpha" = "Alfa" +"Alt+drag" = "Alt+arrastar" +"Anchor" = "Âncora" +"Android" = "Android" +"Angular" = "Angular" +"Animation" = "Animação" +"Annotations" = "Anotações" +"Annotations shown on the canvas" = "Anotações exibidas na tela" +"Any status" = "Qualquer status" +"Anyone on your network who has the invite link can join." = "Qualquer pessoa na sua rede com o link de convite pode entrar." +"Anyone with the edit link can change the file; the view link only lets people look. The links carry their secrets: share them like passwords. `figcraft-server links` makes more and revokes them." = "Qualquer pessoa com o link de edição pode alterar o arquivo; o link de visualização só permite ver. Os links carregam seus segredos: compartilhe-os como senhas. `figcraft-server links` cria outros e os revoga." +"Appearance" = "Aparência" +"Apply a component property" = "Aplicar uma propriedade de componente" +"Apply variable" = "Aplicar variável" +"Apply variable to text" = "Aplicar variável ao texto" +"Apply variable to visibility" = "Aplicar variável à visibilidade" +"Arc" = "Arco" +"Arc ratio" = "Proporção do arco" +"Arc start" = "Início do arco" +"Arc sweep" = "Abertura do arco" +"Archive" = "Arquivar" +"Archived" = "Arquivada" +"Arrange" = "Organizar" +"Arrow" = "Seta" +"As typed" = "Como digitado" +"Assets" = "Recursos" +"Auto" = "Auto" +"Auto (space around)" = "Auto (espaço ao redor)" +"Auto (space between)" = "Auto (espaço entre)" +"Auto (space evenly)" = "Auto (espaço uniforme)" +"Auto ({mode})" = "Auto ({mode})" +"Auto columns" = "Colunas automáticas" +"Auto gap" = "Espaço automático" +"Auto height" = "Altura automática" +"Auto layout" = "Layout automático" +"Auto rows" = "Linhas automáticas" +"Auto width" = "Largura automática" +"Back to the font's value" = "Voltar ao valor da fonte" +"Back" = "Voltar" +"Back to Ready for dev" = "Voltar para Pronto para dev" +"Back to Ready for dev: the next change compares with how it is now" = "Volta para Pronto para dev: a próxima alteração será comparada com o estado atual" +"Back to assets" = "Voltar para recursos" +"Back to current" = "Voltar para a atual" +"Back to styles" = "Voltar para estilos" +"Back to the canvas from a focused region" = "Voltar para a tela a partir de uma região em foco" +"Back to the current version" = "Voltar para a versão atual" +"Back to the values the font style implies" = "Voltar aos valores do estilo da fonte" +"Background" = "Fundo" +"Background blur" = "Desfoque de fundo" +"Basics" = "Básico" +"Before" = "Antes" +"Bend" = "Curvar" +"Bevel" = "Chanfro" +"Binary assets added" = "Arquivos binários adicionados" +"Binary assets removed" = "Arquivos binários removidos" +"Black & white" = "Preto e branco" +"Bleed" = "Sangria" +"Bleed marks" = "Marcas de sangria" +"Bleed marks need a bleed" = "Marcas de sangria exigem uma sangria" +"Blend" = "Mesclagem" +"Blend mode" = "Modo de mesclagem" +"Blue" = "Azul" +"Blur" = "Desfoque" +"Boolean" = "Booleano" +"Boolean groups" = "Grupos booleanos" +"Both directions" = "Ambas as direções" +"Bottom" = "Embaixo" +"Bottom left radius" = "Raio inferior esquerdo" +"Bottom right radius" = "Raio inferior direito" +"Branch" = "Branch" +"Branch archived" = "Branch arquivada" +"Branch merged" = "Branch mesclada" +"Branch name" = "Nome da branch" +"Branch of {file}" = "Branch de {file}" +"Branch of {file} · merged or archived" = "Branch de {file} · mesclada ou arquivada" +"Branch updated from main" = "Branch atualizada a partir do principal" +"Branch {name}" = "Branch {name}" +"Branches" = "Branches" +"Bring forward" = "Trazer para a frente" +"Bring the main file's changes into the branch" = "Traz para a branch as alterações do arquivo principal" +"Bring to front" = "Trazer para o primeiro plano" +"Bristle" = "Cerdas" +"Brush" = "Pincel" +"Brush rotation jitter" = "Variação de rotação do pincel" +"Brush scatter" = "Dispersão do pincel" +"Brush size jitter" = "Variação de tamanho do pincel" +"Brush spacing" = "Espaçamento do pincel" +"Bulleted list" = "Lista com marcadores" +"CMYK colour" = "Cor CMYK" +"Color profile: {name}" = "Perfil de cor: {name}" +"CSS custom properties…" = "Propriedades personalizadas CSS…" +"Can edit" = "Pode editar" +"Can't read this library: {e}" = "Não é possível ler esta biblioteca: {e}" +"Cancel" = "Cancelar" +"Canvas" = "Tela" +"Canvas stacking" = "Empilhamento na tela" +"Cap height to baseline" = "Da altura das maiúsculas à linha de base" +"Case" = "Maiúsculas e minúsculas" +"Case-sensitive forms" = "Formas sensíveis a maiúsculas" +"Categories" = "Categorias" +"Center" = "Centro" +"Change alias" = "Alterar alias" +"Change resolved" = "Alteração resolvida" +"Change style" = "Alterar estilo" +"Change to" = "Alterar para" +"Change to needs a layer inside a variant" = "\"Alterar para\" exige uma camada dentro de uma variante" +"Changed" = "Alterado" +"Changed on both sides: keep one" = "Alterado nos dois lados: mantenha um" +"Changes on main" = "Alterações no principal" +"Changes on the branch" = "Alterações na branch" +"Changes unknown" = "Alterações desconhecidas" +"Choose React, SwiftUI or Compose above to connect this component to its code." = "Escolha React, SwiftUI ou Compose acima para conectar este componente ao código dele." +"Choose another profile to change it." = "Escolha outro perfil para alterá-lo." +"Choose collection" = "Escolher coleção" +"Choose image" = "Escolher imagem" +"Choose mode" = "Escolher modo" +"Choose variable" = "Escolher variável" +"Circle" = "Círculo" +"Clear recent" = "Limpar recentes" +"Click + to replace mixed content" = "Clique em + para substituir o conteúdo misto" +"Click anywhere on the canvas to leave one." = "Clique em qualquer lugar da tela para deixar um." +"Click or drag to merge · {alt} removes" = "Clique ou arraste para mesclar · {alt} remove" +"Click or drag to remove · {alt} merges" = "Clique ou arraste para remover · {alt} mescla" +"Click to record a key" = "Clique para gravar uma tecla" +"Clip content" = "Recortar conteúdo" +"Clip to shape" = "Recortar na forma" +"Close" = "Fechar" +"Close overlay" = "Fechar sobreposição" +"Close preview" = "Fechar visualização" +"Close tab" = "Fechar aba" +"Close version history" = "Fechar histórico de versões" +"Close when clicking outside" = "Fechar ao clicar fora" +"Close without saving" = "Fechar sem salvar" +"Code" = "Código" +"Code syntax" = "Sintaxe de código" +"Collapse" = "Recolher" +"Collapse panel" = "Recolher painel" +"Collection" = "Coleção" +"Collections" = "Coleções" +"Color" = "Cor" +"Color burn" = "Subexposição de cor" +"Color dodge" = "Superexposição de cor" +"Color format" = "Formato de cor" +"Color profile" = "Perfil de cor" +"Color styles" = "Estilos de cor" +"Color values in this file are in this color space." = "Os valores de cor deste arquivo estão neste espaço de cor." +"Color variables" = "Variáveis de cor" +"Colour" = "Cor" +"Column" = "Coluna" +"Column gap" = "Espaço entre colunas" +"Column sizes" = "Tamanhos de coluna" +"Column span" = "Colunas ocupadas" +"Columns" = "Colunas" +"Columns {count}" = "Colunas {count}" +"Comment" = "Comentário" +"Comments" = "Comentários" +"Commits" = "Commits" +"Community" = "Comunidade" +"Company" = "Empresa" +"Compare changes" = "Comparar alterações" +"Completed" = "Concluído" +"Component" = "Componente" +"Component name" = "Nome do componente" +"Component property" = "Propriedade de componente" +"Component set" = "Conjunto de componentes" +"Component sets" = "Conjuntos de componentes" +"Components" = "Componentes" +"Conditional" = "Condicional" +"Confetti" = "Confete" +"Conflicts" = "Conflitos" +"Connect to code" = "Conectar ao código" +"Connected" = "Conectado" +"Connected to code: {from}" = "Conectado ao código: {from}" +"Connection lost, reconnecting (attempt {attempt})…" = "Conexão perdida, reconectando (tentativa {attempt})…" +"Constrain proportions" = "Manter proporções" +"Constraints" = "Restrições" +"Content" = "Conteúdo" +"Contents hidden" = "Conteúdo oculto" +"Contents only" = "Somente o conteúdo" +"Contextual alternates" = "Alternativas contextuais" +"Contrast" = "Contraste" +"Contributors" = "Colaboradores" +"Contributors: {people} · Commits: {commits}" = "Colaboradores: {people} · Commits: {commits}" +"Cool" = "Frio" +"Copied as CSS" = "Copiado como CSS" +"Copied as PNG" = "Copiado como PNG" +"Copied as SVG" = "Copiado como SVG" +"Copied as text" = "Copiado como texto" +"Copied {value}" = "Copiado: {value}" +"Copy" = "Copiar" +"Copy as" = "Copiar como" +"Copy as CSS" = "Copiar como CSS" +"Copy as PNG" = "Copiar como PNG" +"Copy as SVG" = "Copiar como SVG" +"Copy link" = "Copiar link" +"Copy the {label}" = "Copiar {label}" +"Copy {value}" = "Copiar {value}" +"Corner radius" = "Raio do canto" +"Corner smoothing" = "Suavização de cantos" +"Count" = "Quantidade" +"Create" = "Criar" +"Create a variable collection first" = "Crie primeiro uma coleção de variáveis" +"Create a variable first" = "Crie primeiro uma variável" +"Create alias" = "Criar alias" +"Create branch" = "Criar branch" +"Create collection" = "Criar coleção" +"Create component" = "Criar componente" +"Create component property" = "Criar propriedade de componente" +"Create components, styles or variables to publish them as a library." = "Crie componentes, estilos ou variáveis para publicá-los como biblioteca." +"Create property…" = "Criar propriedade…" +"Create style" = "Criar estilo" +"Create style from the selected text" = "Criar estilo a partir do texto selecionado" +"Crop" = "Cortar" +"Crop marks" = "Marcas de corte" +"Ctrl+arrows" = "Ctrl+setas" +"Ctrl+click" = "Ctrl+clique" +"Ctrl+scroll" = "Ctrl+rolar" +"Current version" = "Versão atual" +"Custom" = "Personalizado" +"Cut" = "Recortar" +"Dark" = "Escuro" +"Darken" = "Escurecer" +"Dash" = "Tracejado" +"Decoration style" = "Estilo da decoração" +"Decoration" = "Decoração" +"Deep select" = "Seleção profunda" +"Default" = "Padrão" +"Default content" = "Conteúdo padrão" +"Default value (the top-left variant)" = "Valor padrão (a variante no canto superior esquerdo)" +"Delay" = "Atraso" +"Delete" = "Excluir" +"Delete category (its annotations stay)" = "Excluir categoria (as anotações permanecem)" +"Delete collection" = "Excluir coleção" +"Delete group" = "Excluir grupo" +"Delete mode" = "Excluir modo" +"Delete page" = "Excluir página" +"Delete preset" = "Excluir predefinição" +"Delete property" = "Excluir propriedade" +"Delete the style (layers keep their values)" = "Excluir o estilo (as camadas mantêm seus valores)" +"Delete thread" = "Excluir conversa" +"Delete variable" = "Excluir variável" +"Delete “{name}”? This can't be undone." = "Excluir “{name}”? Isso não pode ser desfeito." +"Density" = "Densidade" +"Depth" = "Profundidade" +"Describe how and when to use this component" = "Descreva como e quando usar este componente" +"Describe what changed" = "Descreva o que mudou" +"Description" = "Descrição" +"Description (optional)" = "Descrição (opcional)" +"Design" = "Design" +"Desktop" = "Desktop" +"Destination" = "Destino" +"Detach alias" = "Desvincular alias" +"Detach instance" = "Desvincular instância" +"Detach property" = "Desvincular propriedade" +"Detach style" = "Desvincular estilo" +"Detach styles" = "Desvincular estilos" +"Detach variable" = "Desvincular variável" +"Details" = "Detalhes" +"Dev Mode" = "Modo Dev" +"Dev resources" = "Recursos de desenvolvimento" +"Development" = "Desenvolvimento" +"Device" = "Dispositivo" +"Device at 100%" = "Dispositivo a 100%" +"Diamond" = "Losango" +"Difference" = "Diferença" +"Dimensions" = "Dimensões" +"Direction" = "Direção" +"Disconnect from code" = "Desconectar do código" +"Dispersion" = "Dispersão" +"Display name" = "Nome de exibição" +"Dissolve" = "Dissolver" +"Distribute and tidy" = "Distribuir e organizar" +"Distribute horizontal spacing" = "Distribuir espaçamento horizontal" +"Distribute vertical spacing" = "Distribuir espaçamento vertical" +"Don't truncate" = "Não truncar" +"Done" = "Concluído" +"Done editing" = "Concluir edição" +"Dots" = "Pontos" +"Dotted" = "Pontilhado" +"Down" = "Para baixo" +"Drafts" = "Rascunhos" +"Drag the stroke to add a width point" = "Arraste o traço para adicionar um ponto de largura" +"Draw" = "Desenhar" +"Drawing tools" = "Ferramentas de desenho" +"Drop shadow" = "Sombra projetada" +"Dual-licensed MIT OR Apache-2.0. Made by the ArtCraft team and community." = "Licença dupla MIT OR Apache-2.0. Feito pela equipe e pela comunidade ArtCraft." +"Duo" = "Duo" +"Duplicate" = "Duplicar" +"Duplicate by dragging" = "Duplicar arrastando" +"Duplicate mode" = "Duplicar modo" +"Duplicate page" = "Duplicar página" +"Edit" = "Editar" +"Edit as an expression" = "Editar como expressão" +"Edit colour" = "Editar cor" +"Edit comment" = "Editar comentário" +"Edit dev resource" = "Editar recurso de desenvolvimento" +"Edit link" = "Link de edição" +"Edit link copied" = "Link de edição copiado" +"Edit style" = "Editar estilo" +"Edit variable" = "Editar variável" +"Edit with the builder" = "Editar com o construtor" +"Effect settings" = "Configurações do efeito" +"Effect styles" = "Estilos de efeito" +"Effects" = "Efeitos" +"Ellipse" = "Elipse" +"Ellipses" = "Elipses" +"Else" = "Senão" +"Else if" = "Senão, se" +"Embedded profile" = "Perfil incorporado" +"Empty" = "Vazio" +"End" = "Fim" +"End point" = "Ponto final" +"Enter to save · Esc to cancel" = "Enter para salvar · Esc para cancelar" +"Eraser" = "Borracha" +"Esc" = "Esc" +"Essential" = "Essenciais" +"Every conflict has a choice." = "Todos os conflitos têm uma escolha." +"Every top-level frame already starts a flow" = "Todos os quadros de nível superior já iniciam um fluxo" +"Exact opacity (4 then 5: 45%)" = "Opacidade exata (4 e depois 5: 45%)" +"Exclude" = "Excluir sobreposição" +"Excluded" = "Excluídos" +"Excluded from layout" = "Excluídos do layout" +"Excludes" = "Exclusões" +"Exclusion" = "Exclusão" +"Exit focus view (Esc)" = "Sair da visualização em foco (Esc)" +"Expand" = "Expandir" +"Export" = "Exportar" +"Export all" = "Exportar tudo" +"Export page as PNG" = "Exportar página como PNG" +"Export settings" = "Configurações de exportação" +"Export variables" = "Exportar variáveis" +"Export {name}" = "Exportar {name}" +"Export {n} layers" = { one = "Exportar {n} camada", other = "Exportar {n} camadas" } +"Exported {file}" = "Exportado: {file}" +"Exported {name}" = "{name} exportado" +"Exported {n} files" = { one = "{n} arquivo exportado", other = "{n} arquivos exportados" } +"Export…" = "Exportar…" +"Expose properties to instances" = "Expor propriedades às instâncias" +"Exposure" = "Exposição" +"Expression" = "Expressão" +"Extend collection" = "Estender coleção" +"Extends \"{name}\": overridden values are marked" = "Estende \"{name}\": os valores substituídos estão marcados" +"Eye" = "Olho" +"Fade" = "Esmaecer" +"False" = "Falso" +"Fetching from the server…" = "Buscando no servidor…" +"File" = "Arquivo" +"File name" = "Nome do arquivo" +"Fill" = "Preenchimento" +"Fill (fr)" = "Preencher (fr)" +"Fill container" = "Preencher contêiner" +"Fill window" = "Preencher janela" +"Fills" = "Preenchimentos" +"Fill|sizing" = "Preencher" +"Filter and sort" = "Filtrar e ordenar" +"Find" = "Localizar" +"Find and replace" = "Localizar e substituir" +"Find layers" = "Localizar camadas" +"First" = "Primeiro" +"First commit" = "Primeiro commit" +"First on top" = "Primeiro em cima" +"Fit" = "Ajustar" +"Fit device to window" = "Ajustar dispositivo à janela" +"Fit to contents" = "Ajustar ao conteúdo" +"Fit to window" = "Ajustar à janela" +"Fit width" = "Ajustar à largura" +"Fixed" = "Fixo" +"Fixed gap" = "Espaço fixo" +"Fixed size" = "Tamanho fixo" +"Flatten" = "Nivelar" +"Flip" = "Inverter" +"Flip horizontal" = "Inverter horizontalmente" +"Flip text to the other side" = "Passar o texto para o outro lado" +"Flip vertical" = "Inverter verticalmente" +"Flip width profile" = "Inverter perfil de largura" +"Flow starting point" = "Ponto de partida do fluxo" +"Flow starting points" = "Pontos de partida de fluxo" +"Flows" = "Fluxos" +"Focus view" = "Visualização em foco" +"Fold autosaves" = "Agrupar salvamentos automáticos" +"Follow {name}" = "Seguir {name}" +"Following" = "Seguindo" +"Following {name} · {key} to stop" = "Seguindo {name} · {key} para parar" +"Font" = "Fonte" +"Font not installed" = "Fonte não instalada" +"Font size" = "Tamanho da fonte" +"Font style" = "Estilo da fonte" +"Fractions" = "Frações" +"Frame" = "Quadro" +"Frame selection" = "Enquadrar seleção" +"Frame tools" = "Ferramentas de quadro" +"Frames" = "Quadros" +"From the library \"{name}\": read-only" = "Da biblioteca \"{name}\": somente leitura" +"From {name}" = "De {name}" +"Frost" = "Fosco" +"Gap" = "Espaço" +"Gap between columns" = "Espaço entre colunas" +"Gap between items" = "Espaço entre itens" +"Gap between rows" = "Espaço entre linhas" +"Glass" = "Vidro" +"Go to main component" = "Ir para o componente principal" +"Go to {name}" = "Ir para {name}" +"Grab bag" = "Miscelânea" +"Gradient" = "Gradiente" +"Gray" = "Cinza" +"Green" = "Verde" +"Grid" = "Grade" +"Grid ({size})" = "Grade ({size})" +"Grid styles" = "Estilos de grade" +"Grid {size}" = "Grade {size}" +"Group" = "Grupo" +"Group selection" = "Agrupar seleção" +"Groups" = "Grupos" +"Gutter" = "Medianiz" +"Hand tool" = "Ferramenta Mão" +"Hanging list" = "Lista com recuo deslocado" +"Hanging punctuation" = "Pontuação pendente" +"Hard light" = "Luz forte" +"Height" = "Altura" +"Help" = "Ajuda" +"Help and resources" = "Ajuda e recursos" +"Help page" = "Página de ajuda" +"Hidden" = "Oculta" +"Hide contents" = "Ocultar conteúdo" +"Hide from publishing" = "Não publicar" +"Hide section contents" = "Ocultar conteúdo da seção" +"Highlight layers on hover" = "Destacar camadas ao passar o cursor" +"Highlights" = "Realces" +"Hold Alt" = "Segure Alt" +"Hold Alt+Z" = "Segure Alt+Z" +"Hold Z" = "Segure Z" +"Hold ⌥" = "Segure ⌥" +"Hold ⌥Z" = "Segure ⌥Z" +"Home" = "Início" +"Horizontal" = "Horizontal" +"Horizontal align" = "Alinhamento horizontal" +"Horizontal hex" = "Hexágono horizontal" +"Horizontal padding" = "Espaçamento interno horizontal" +"Horizontal spacing" = "Espaçamento horizontal" +"Hosting a session needs the desktop app; here you can join one." = "Para hospedar uma sessão é preciso o app para desktop; aqui você pode entrar em uma." +"Hover a layer to see its properties" = "Passe o cursor sobre uma camada para ver suas propriedades" +"Hover other layers to measure the distance" = "Passe o cursor sobre outras camadas para medir a distância" +"Hue" = "Matiz" +"Hug" = "Ajustar" +"Hug contents" = "Ajustar ao conteúdo" +"If" = "Se" +"If {condition}" = "Se {condition}" +"Ignore auto layout (absolute position)" = "Ignorar layout automático (posição absoluta)" +"Image" = "Imagem" +"Import" = "Importar" +"Import path" = "Caminho de importação" +"Import plugin from manifest" = "Importar plugin a partir do manifesto" +"Import plugin from manifest…" = "Importar plugin a partir do manifesto…" +"Import variables" = "Importar variáveis" +"Imported {name}" = "{name} importado" +"Imported {n} new variables, updated {updated}" = { one = "{n} variável nova importada, {updated} atualizadas", other = "{n} variáveis novas importadas, {updated} atualizadas" } +"Import…" = "Importar…" +"In an instance, this comes from the main component" = "Em uma instância, isto vem do componente principal" +"In the browser you can join sessions the desktop app hosts and files on a FigCraft server. A page opened over https reaches other computers only through wss:// links (a server behind TLS)." = "No navegador você pode entrar em sessões hospedadas pelo app para desktop e em arquivos de um servidor FigCraft. Uma página aberta via https só alcança outros computadores por links wss:// (um servidor atrás de TLS)." +"Include bounding box" = "Incluir caixa delimitadora" +"Include id attribute" = "Incluir atributo id" +"Included" = "Incluídos" +"Included in layout" = "Incluídos no layout" +"Individual corners" = "Cantos individuais" +"Individual strokes" = "Traços individuais" +"Ink" = "Tinta" +"Inner shadow" = "Sombra interna" +"Inside" = "Dentro" +"Inspect" = "Inspecionar" +"Inspect the layer under the pointer: size, colours, typography" = "Inspecionar a camada sob o cursor: tamanho, cores, tipografia" +"Instance" = "Instância" +"Instance properties" = "Propriedades da instância" +"Instance swap" = "Troca de instância" +"Instance swap (no other component)" = "Troca de instância (nenhum outro componente)" +"Instances" = "Instâncias" +"Instant" = "Instantâneo" +"Interaction" = "Interação" +"Interactions" = "Interações" +"Interface design and prototyping. A free, open-source, clean-room design tool written from scratch in Rust, part of the ArtCraft Crafting Apps." = "Design de interfaces e prototipagem. Uma ferramenta de design gratuita e de código aberto, com implementação independente (clean-room), escrita do zero em Rust, parte dos Crafting Apps da ArtCraft." +"Intersect" = "Interseção" +"Intersects" = "Interseções" +"Invite link" = "Link de convite" +"Invite link copied" = "Link de convite copiado" +"Join" = "Entrar" +"Join a session…" = "Entrar em uma sessão…" +"Join live session" = "Entrar na sessão ao vivo" +"Join us on Discord" = "Junte-se a nós no Discord" +"Joined" = "Conectado" +"Joined {file}" = "Conectado a {file}" +"Joining…" = "Entrando…" +"Join|stroke" = "Junção" +"Just now" = "Agora mesmo" +"Justify" = "Justificar" +"Keep appearance" = "Manter aparência" +"Keep appearance converts every color value to {profile} so colors look the same. Keep values leaves the numbers as they are, so colors shift." = "Manter aparência converte cada valor de cor para {profile} para que as cores pareçam iguais. Manter valores deixa os números como estão, então as cores mudam." +"Keep tool selected after use" = "Manter a ferramenta selecionada após o uso" +"Keep values" = "Manter valores" +"Key/Gamepad" = "Tecla/Controle" +"Key/Gamepad {key}" = "Tecla/Controle {key}" +"Keyboard shortcuts" = "Atalhos de teclado" +"Language" = "Idioma" +"Lasso" = "Laço" +"Last" = "Último" +"Last change: {note}" = "Última alteração: {note}" +"Last commit" = "Último commit" +"Last on top" = "Último em cima" +"Layer blur" = "Desfoque de camada" +"Layer name" = "Nome da camada" +"Layers" = "Camadas" +"Layers in an instance take their position from the main component" = "As camadas de uma instância herdam a posição do componente principal" +"Layout" = "Layout" +"Layout grid" = "Grade de layout" +"Layout grid settings" = "Configurações da grade de layout" +"Layout grids" = "Grades de layout" +"Leave session" = "Sair da sessão" +"Leaves" = "Folhas" +"Left" = "Esquerda" +"Left & right" = "Esquerda e direita" +"Left side" = "Lado esquerdo" +"Left side width" = "Largura do lado esquerdo" +"Letter case" = "Maiúsculas e minúsculas" +"Letter spacing" = "Espaçamento entre letras" +"Libraries" = "Bibliotecas" +"Libraries in this file" = "Bibliotecas neste arquivo" +"Library updates available" = "Atualizações de biblioteca disponíveis" +"Library: click to collapse" = "Biblioteca: clique para recolher" +"Library: click to expand" = "Biblioteca: clique para expandir" +"Library: its variables are read-only here; edit them in the library file and publish it" = "Biblioteca: as variáveis dela são somente leitura aqui; edite-as no arquivo da biblioteca e publique-o" +"Light" = "Claro" +"Lighten" = "Clarear" +"Light|glass" = "Luz" +"Line" = "Linha" +"Line arrow" = "Seta de linha" +"Line delta" = "Diferença de linhas" +"Line height" = "Altura da linha" +"Linear" = "Linear" +"Lines" = "Linhas" +"Lines +/−" = "Linhas +/−" +"Lines added" = "Linhas adicionadas" +"Lines deleted" = "Linhas excluídas" +"Link" = "Link" +"Link copied" = "Link copiado" +"Link docs, code or tickets for developers." = "Vincule documentação, código ou tickets para desenvolvedores." +"Link this component to its code component: instances then show your real snippet with their values." = "Vincule este componente ao componente de código dele: assim as instâncias mostram o seu snippet real com os valores delas." +"List spacing" = "Espaçamento da lista" +"List style" = "Estilo da lista" +"Live session" = "Sessão ao vivo" +"Live · {people}" = "Ao vivo · {people}" +"Local components" = "Componentes locais" +"Local styles" = "Estilos locais" +"Local variables" = "Variáveis locais" +"Lock/Unlock" = "Bloquear/desbloquear" +"Locked" = "Bloqueada" +"Lowercase" = "Minúsculas" +"Luminance" = "Luminância" +"Luminosity" = "Luminosidade" +"Main" = "Principal" +"Main component deleted" = "Componente principal excluído" +"Main menu" = "Menu principal" +"Make slot" = "Transformar em slot" +"Margin" = "Margem" +"Mark all as read" = "Marcar tudo como lido" +"Mark as resolved" = "Marcar como resolvido" +"Mark as unread" = "Marcar como não lido" +"Mark as unresolved" = "Marcar como não resolvido" +"Mask" = "Máscara" +"Mass · Stiffness · Damping" = "Massa · Rigidez · Amortecimento" +"Max H" = "Alt. máx." +"Max W" = "Larg. máx." +"Max lines" = "Máx. de linhas" +"Maximize" = "Maximizar" +"Measure to the selection" = "Medir até a seleção" +"Merge into main" = "Mesclar no principal" +"Merge regions" = "Mesclar regiões" +"Merge the branch into the main file (one undo step) and archive it" = "Mescla a branch no arquivo principal (uma etapa de desfazer) e a arquiva" +"Merged" = "Mesclada" +"Merged PRs" = "PRs mesclados" +"Min H" = "Alt. mín." +"Min W" = "Larg. mín." +"Minimize" = "Minimizar" +"Mirror angle" = "Espelhar ângulo" +"Mirror angle and length" = "Espelhar ângulo e comprimento" +"Mirroring" = "Espelhamento" +"Missing" = "Não encontrado" +"Missing layer" = "Camada não encontrada" +"Missing style" = "Estilo não encontrado" +"Missing variable" = "Variável não encontrada" +"Miter" = "Esquadria" +"Miter angle" = "Ângulo de esquadria" +"Mixed" = "Misto" +"Mixed fonts" = "Fontes mistas" +"Mixed interactions: click + to replace them" = "Interações mistas: clique em + para substituí-las" +"Mode" = "Modo" +"Model" = "Modelo" +"Models" = "Modelos" +"Mono" = "Mono" +"More" = "Mais" +"More instance actions" = "Mais ações de instância" +"Mouse down" = "Ao pressionar o botão" +"Mouse enter" = "Ao entrar com o cursor" +"Mouse leave" = "Ao sair com o cursor" +"Mouse up" = "Ao soltar o botão" +"Move" = "Mover" +"Move column left" = "Mover coluna para a esquerda" +"Move column right" = "Mover coluna para a direita" +"Move down" = "Mover para baixo" +"Move in" = "Mover para dentro" +"Move out" = "Mover para fora" +"Move tools" = "Ferramentas de movimento" +"Move up" = "Mover para cima" +"Moved to {name}" = "Movido para {name}" +"Multi" = "Multi" +"Multiply" = "Multiplicação" +"Muted" = "Suave" +"Name" = "Nome" +"Name (A–Z)" = "Nome (A–Z)" +"Named instance" = "Instância nomeada" +"Navigate to" = "Navegar para" +"Nested instance" = "Instância aninhada" +"New design file" = "Novo arquivo de design" +"Next or previous control in the focused region" = "Controle seguinte ou anterior na região em foco" +"Next ready for dev" = "Próximo pronto para dev" +"Next size option" = "Próxima opção de tamanho" +"No assets: no export settings, icons or images. Add export settings in the Design tab." = "Nenhum recurso: nenhuma configuração de exportação, ícone ou imagem. Adicione configurações de exportação na aba Design." +"No boolean variables fit here." = "Nenhuma variável booleana se encaixa aqui." +"No boolean variables yet. Create them in Local variables." = "Ainda não há variáveis booleanas. Crie-as em Variáveis locais." +"No branches. A branch is a copy of the file to try changes in, then review and merge." = "Nenhuma branch. Uma branch é uma cópia do arquivo para testar alterações e depois revisá-las e mesclá-las." +"No category" = "Sem categoria" +"No changes" = "Nenhuma alteração" +"No colour variables fit here." = "Nenhuma variável de cor se encaixa aqui." +"No colour variables yet. Create them in Local variables." = "Ainda não há variáveis de cor. Crie-as em Variáveis locais." +"No comments yet" = "Ainda não há comentários" +"No components yet. Select layers and press {keys}." = "Ainda não há componentes. Selecione camadas e pressione {keys}." +"No conflicts." = "Nenhum conflito." +"No contributor data was built into this copy." = "Esta cópia não inclui dados de colaboradores." +"No fonts match" = "Nenhuma fonte corresponde" +"No layer changes to show." = "Nenhuma alteração de camada para mostrar." +"No libraries yet. Add a .figcraft file that was published as a library, or paste a team library's link." = "Ainda não há bibliotecas. Adicione um arquivo .figcraft publicado como biblioteca ou cole o link de uma biblioteca de equipe." +"No list" = "Sem lista" +"No matching comments" = "Nenhum comentário correspondente" +"No matching components" = "Nenhum componente correspondente" +"No matching layers" = "Nenhuma camada correspondente" +"No matching styles" = "Nenhum estilo correspondente" +"No matching variables" = "Nenhuma variável correspondente" +"No mirroring" = "Sem espelhamento" +"No model credits were built into this copy." = "Esta cópia não inclui créditos de modelos." +"No number variables fit here." = "Nenhuma variável numérica se encaixa aqui." +"No number variables yet. Create them in Local variables." = "Ainda não há variáveis numéricas. Crie-as em Variáveis locais." +"No paints" = "Nenhuma pintura" +"No plugins yet. Import a development plugin from its figcraft-plugin.json." = "Ainda não há plugins. Importe um plugin em desenvolvimento a partir do figcraft-plugin.json dele." +"No preferred components" = "Nenhum componente preferido" +"No preset" = "Nenhuma predefinição" +"No saved versions yet. Save a version to mark a point in your work you can come back to." = "Ainda não há versões salvas. Salve uma versão para marcar um ponto do seu trabalho ao qual você possa voltar." +"No scrolling" = "Sem rolagem" +"No shortcuts match" = "Nenhum atalho corresponde" +"No status" = "Sem status" +"No string variables fit here." = "Nenhuma variável de string se encaixa aqui." +"No string variables yet. Create them in Local variables." = "Ainda não há variáveis de string. Crie-as em Variáveis locais." +"No styles yet." = "Ainda não há estilos." +"No styles yet. Click + to create one from the selection." = "Ainda não há estilos. Clique em + para criar um a partir da seleção." +"No text styles yet. Click + to create one from the selected text." = "Ainda não há estilos de texto. Clique em + para criar um a partir do texto selecionado." +"No variables fit here." = "Nenhuma variável se encaixa aqui." +"No variables yet. Create them in Local variables." = "Ainda não há variáveis. Crie-as em Variáveis locais." +"Nobody else is here yet" = "Ainda não há mais ninguém aqui" +"Noise" = "Ruído" +"None" = "Nenhum" +"None." = "Nenhum." +"Normal" = "Normal" +"Not bound" = "Não vinculado" +"Not in a live session" = "Fora de uma sessão ao vivo" +"Not in this font" = "Não existe nesta fonte" +"Not properties, kept as written: {names}" = "Não são propriedades, mantidos como escritos: {names}" +"Not read yet" = "Ainda não lido" +"Note {n}" = "Nota {n}" +"Nothing changed since this was marked ready for dev." = "Nada mudou desde que isto foi marcado como pronto para dev." +"Nothing here yet. Set a frame's status to list it." = "Ainda não há nada aqui. Defina o status de um quadro para listá-lo." +"Nothing to export" = "Nada para exportar" +"Now" = "Agora" +"Nudge (Shift: big nudge)" = "Deslocar (Shift: deslocamento grande)" +"Nudge amount" = "Valor do deslocamento" +"Number" = "Número" +"Numbered list" = "Lista numerada" +"Object" = "Objeto" +"Off" = "Não" +"Offered first when filling the slot (any content is allowed)" = "Oferecidos primeiro ao preencher o slot (qualquer conteúdo é permitido)" +"Offered first when swapping the instance (any component is allowed)" = "Oferecidos primeiro ao trocar a instância (qualquer componente é permitido)" +"Offset" = "Deslocamento" +"On click" = "Ao clicar" +"On drag" = "Ao arrastar" +"On the server's machine, `figcraft-server key` prints it." = "Na máquina do servidor, `figcraft-server key` a exibe." +"On this page" = "Nesta página" +"Only the first changed layers are listed." = "Somente as primeiras camadas alteradas são listadas." +"Only the first {n} changed layers are listed." = "Somente as primeiras {n} camadas alteradas são listadas." +"Only this computer can join (turn on network sharing to invite others)." = "Somente este computador pode entrar (ative o compartilhamento em rede para convidar outras pessoas)." +"Only your threads" = "Somente suas conversas" +"Opacity" = "Opacidade" +"Opacity & blend" = "Opacidade e mesclagem" +"Opacity 10%…90%, 0: 100%" = "Opacidade 10%…90%, 0: 100%" +"Open" = "Abrir" +"Open .figcraft, .svg or images" = "Abra arquivos .figcraft, .svg ou imagens" +"Open branch" = "Abrir branch" +"Open file" = "Abrir arquivo" +"Open files" = "Arquivos abertos" +"Open in focus view" = "Abrir na visualização em foco" +"Open in new window" = "Abrir em nova janela" +"Open invite links in FigCraft" = "Abrir links de convite no FigCraft" +"Open link" = "Abrir link" +"Open link {url}" = "Abrir link {url}" +"Open overlay" = "Abrir sobreposição" +"Open prototype preview" = "Abrir visualização do protótipo" +"Open variables ({count})" = "Abrir variáveis ({count})" +"Opened “{name}” in a new tab" = "“{name}” aberto em uma nova aba" +"Open|comments" = "Abertos" +"Options" = "Opções" +"Or keep the file on a FigCraft server and share links to edit or to view it." = "Ou mantenha o arquivo em um servidor FigCraft e compartilhe links para editá-lo ou visualizá-lo." +"Orange" = "Laranja" +"Outline stroke" = "Contornar traço" +"Outline text" = "Converter texto em contornos" +"Outlines" = "Contornos" +"Outside" = "Fora" +"Overflow" = "Transbordamento" +"Overlay" = "Sobreposição" +"Overlay position" = "Posição da sobreposição" +"Overridden here (the collection it extends has another value)" = "Substituído aqui (a coleção estendida tem outro valor)" +"Overrides" = "Substituições" +"PDF print options" = "Opções de impressão em PDF" +"PDF print settings" = "Configurações de impressão em PDF" +"Padding" = "Espaçamento interno" +"Page" = "Página" +"Pages" = "Páginas" +"Pages: {pages}" = "Páginas: {pages}" +"Paint bucket" = "Balde de tinta" +"Pan the canvas" = "Mover a tela" +"Panels" = "Painéis" +"Paper" = "Papel" +"Paragraph indent" = "Recuo de parágrafo" +"Paragraph indent applies to left-aligned text" = "O recuo de parágrafo se aplica a texto alinhado à esquerda" +"Paragraph spacing" = "Espaçamento entre parágrafos" +"Pass through" = "Passagem" +"Paste a link (https://…)" = "Cole um link (https://…)" +"Paste a team library link (a view link)" = "Cole o link de uma biblioteca de equipe (um link de visualização)" +"Paste here" = "Colar aqui" +"Paste the invite link the host shared with you." = "Cole o link de convite que o anfitrião compartilhou com você." +"Paste to replace" = "Colar para substituir" +"Pattern" = "Padrão" +"Pattern alignment" = "Alinhamento do padrão" +"Pattern scale" = "Escala do padrão" +"Pattern source" = "Origem do padrão" +"Pen" = "Caneta" +"Pencil" = "Lápis" +"People in this file" = "Pessoas neste arquivo" +"Phone" = "Celular" +"Pick color" = "Selecionar cor" +"Pick color (I)" = "Selecionar cor (I)" +"Pick one font family first" = "Escolha primeiro uma única família de fontes" +"Pin a property" = "Fixar uma propriedade" +"Pinch" = "Pinça" +"Pixel grid" = "Grade de pixels" +"Pixel preview 1x" = "Visualização de pixels 1x" +"Pixel preview 2x" = "Visualização de pixels 2x" +"Place automatically" = "Posicionar automaticamente" +"Place image" = "Inserir imagem" +"Plugins" = "Plugins" +"Plus darker" = "Mais escuro" +"Plus lighter" = "Mais claro" +"Point" = "Ponto" +"Points" = "Pontos" +"Polygon" = "Polígono" +"Polygons" = "Polígonos" +"Position" = "Posição" +"Post" = "Publicar" +"Preferences" = "Preferências" +"Preferred" = "Preferidos" +"Present" = "Apresentar" +"Present or preview" = "Apresentar ou visualizar" +"Present this flow" = "Apresentar este fluxo" +"Presentation" = "Apresentação" +"Preserve scroll position" = "Manter posição de rolagem" +"Presets" = "Predefinições" +"Press a key…" = "Pressione uma tecla…" +"Preview" = "Visualização" +"Preview this flow" = "Visualizar este fluxo" +"Preview this frame" = "Visualizar este quadro" +"Previous ready for dev" = "Anterior pronto para dev" +"Progressive" = "Progressivo" +"Properties" = "Propriedades" +"Prototype" = "Protótipo" +"Prototype preview" = "Visualização do protótipo" +"Prototype settings" = "Configurações do protótipo" +"Publish" = "Publicar" +"Publish changes" = "Publicar alterações" +"Publish to server" = "Publicar no servidor" +"Publish to server…" = "Publicar no servidor…" +"Published version {v}" = "Versão {v} publicada" +"Published version {v} to the server" = "Versão {v} publicada no servidor" +"Published version {v}: save the file so other files can use it" = "Versão {v} publicada: salve o arquivo para que outros arquivos possam usá-la" +"Published · {people}" = "Publicado · {people}" +"Publishing to a server needs the desktop app; in the browser you can join a server's files" = "Para publicar em um servidor é preciso o app para desktop; no navegador você pode entrar em arquivos de um servidor" +"Publishing…" = "Publicando…" +"Push" = "Empurrar" +"Push changes to main component" = "Enviar alterações ao componente principal" +"Put text on path" = "Colocar texto no caminho" +"Radial" = "Radial" +"Radius" = "Raio" +"Ratio" = "Proporção" +"Reading the library…" = "Lendo a biblioteca…" +"Ready for dev" = "Pronto para dev" +"Real name" = "Nome real" +"Recent" = "Recentes" +"Recent files" = "Arquivos recentes" +"Recents" = "Recentes" +"Recovered {n} unsaved files after the app quit unexpectedly: save them to keep them" = { one = "{n} arquivo não salvo foi recuperado após o app fechar inesperadamente: salve-o para mantê-lo", other = "{n} arquivos não salvos foram recuperados após o app fechar inesperadamente: salve-os para mantê-los" } +"Rectangle" = "Retângulo" +"Rectangles" = "Retângulos" +"Red" = "Vermelho" +"Reduce motion" = "Reduzir movimento" +"Refraction" = "Refração" +"Remove" = "Remover" +"Remove all" = "Remover tudo" +"Remove annotation" = "Remover anotação" +"Remove auto layout" = "Remover layout automático" +"Remove dev resource" = "Remover recurso de desenvolvimento" +"Remove export setting" = "Remover configuração de exportação" +"Remove guide" = "Remover guia" +"Remove interaction" = "Remover interação" +"Remove library from this file" = "Remover biblioteca deste arquivo" +"Remove min and max" = "Remover mín. e máx." +"Remove min and max height" = "Remover altura mín. e máx." +"Remove min and max width" = "Remover largura mín. e máx." +"Remove regions" = "Remover regiões" +"Remove slot" = "Remover slot" +"Remove starting point" = "Remover ponto de partida" +"Remove stop" = "Remover parada" +"Remove text from path" = "Remover texto do caminho" +"Remove the else and its actions" = "Remover o \"senão\" e suas ações" +"Remove this condition and its actions" = "Remover esta condição e suas ações" +"Removed" = "Removido" +"Removed since it was marked" = "Removido desde a marcação" +"Rename" = "Renomear" +"Rename duplicated layers" = "Renomear camadas duplicadas" +"Rename folder" = "Renomear pasta" +"Rename group" = "Renomear grupo" +"Rename mode" = "Renomear modo" +"Rename page" = "Renomear página" +"Replace all" = "Substituir tudo" +"Replace mixed export settings" = "Substituir configurações de exportação mistas" +"Replace with" = "Substituir por" +"Replace with a new interaction" = "Substituir por uma nova interação" +"Reply" = "Responder" +"Reset" = "Redefinir" +"Reset adjustments" = "Redefinir ajustes" +"Reset all changes" = "Redefinir todas as alterações" +"Reset all overrides on this layer" = "Redefinir todas as substituições desta camada" +"Reset overrides" = "Redefinir substituições" +"Reset slot" = "Redefinir slot" +"Reset this override" = "Redefinir esta substituição" +"Reset to style" = "Redefinir para o estilo" +"Reset to the inherited value" = "Redefinir para o valor herdado" +"Resize by the nudge amount" = "Redimensionar pelo valor do deslocamento" +"Resize frames to the device's screen (or the window without a device): their constraints and auto layout respond" = "Redimensiona os quadros para a tela do dispositivo (ou para a janela, sem dispositivo): as restrições e o layout automático deles se adaptam" +"Resize to fit" = "Redimensionar para caber" +"Resolve" = "Resolver" +"Resolve change" = "Resolver alteração" +"Resolved" = "Resolvido" +"Resources" = "Recursos" +"Responsive" = "Responsivo" +"Restart" = "Reiniciar" +"Restore" = "Restaurar" +"Restore main component" = "Restaurar componente principal" +"Restore this version" = "Restaurar esta versão" +"Restored “{name}”" = "“{name}” restaurada" +"Reverse the order" = "Inverter a ordem" +"Reversed triangle" = "Triângulo invertido" +"Review and merge" = "Revisar e mesclar" +"Ribbon" = "Fita" +"Right" = "Direita" +"Right side" = "Lado direito" +"Right side width" = "Largura do lado direito" +"Rotate 90°" = "Girar 90°" +"Rotate 90° right" = "Girar 90° para a direita" +"Rotate to landscape" = "Girar para paisagem" +"Rotate to portrait" = "Girar para retrato" +"Rotation" = "Rotação" +"Rotation jitter" = "Variação de rotação" +"Round" = "Arredondado" +"Rounded" = "Arredondado" +"Row" = "Linha" +"Row gap" = "Espaço entre linhas" +"Row sizes" = "Tamanhos de linha" +"Row span" = "Linhas ocupadas" +"Rows" = "Linhas" +"Rows {count}" = "Linhas {count}" +"Rulers" = "Réguas" +"Run" = "Executar" +"Run {label}" = "Executar {label}" +"Same as layer" = "Igual à camada" +"Saturation" = "Saturação" +"Save" = "Salvar" +"Save as" = "Salvar como" +"Save as preset…" = "Salvar como predefinição…" +"Save version {key}" = "Salvar versão {key}" +"Saved" = "Salvo" +"Saved {name}" = "{name} salvo" +"Scale" = "Escala" +"Scatter" = "Dispersão" +"Scoping: where pickers offer it" = "Escopo: onde os seletores a oferecem" +"Screen" = "Tela" +"Scroll behavior" = "Comportamento de rolagem" +"Scroll to" = "Rolar até" +"Scroll to layer" = "Rolar até a camada" +"Scroll with parent" = "Rolar com o pai" +"Search" = "Pesquisar" +"Search actions, layers and tools" = "Pesquisar ações, camadas e ferramentas" +"Search assets" = "Pesquisar recursos" +"Search comments" = "Pesquisar comentários" +"Search fonts" = "Pesquisar fontes" +"Search layers" = "Pesquisar camadas" +"Search shortcuts" = "Pesquisar atalhos" +"Section" = "Seção" +"Section color" = "Cor da seção" +"Sections" = "Seções" +"Select a frame and add a starting point to present it as a flow." = "Selecione um quadro e adicione um ponto de partida para apresentá-lo como fluxo." +"Select a frame to preview it" = "Selecione um quadro para visualizá-lo" +"Select a layer to see its properties and code" = "Selecione uma camada para ver suas propriedades e seu código" +"Select all" = "Selecionar tudo" +"Select all with same" = "Selecionar tudo com o mesmo" +"Select layer" = "Selecionar camada" +"Select layers to apply the style to" = "Selecione as camadas às quais aplicar o estilo" +"Select overlapping shapes" = "Selecione formas sobrepostas" +"Select points to edit their position, radius and mirroring" = "Selecione pontos para editar posição, raio e espelhamento" +"Select slot" = "Selecionar slot" +"Selection" = "Seleção" +"Selection box, {w} by {h} at {x}, {y}: arrows move it, Shift+arrows size it, Enter selects, Escape cancels" = "Caixa de seleção, {w} por {h} em {x}, {y}: as setas a movem, Shift+setas a redimensionam, Enter seleciona, Esc cancela" +"Selection box: arrows move it, Shift+arrows size it, Enter selects, Escape cancels" = "Caixa de seleção: as setas a movem, Shift+setas a redimensionam, Enter seleciona, Esc cancela" +"Send backward" = "Enviar para trás" +"Send to back" = "Enviar para o plano de fundo" +"Server address" = "Endereço do servidor" +"Set as default" = "Definir como padrão" +"Set variable" = "Definir variável" +"Set variable mode" = "Definir modo de variável" +"Set variable {name}" = "Definir variável {name}" +"Set {name} to {value}" = "Definir {name} como {value}" +"Shadows" = "Sombras" +"Shape" = "Forma" +"Shape builder" = "Construtor de formas" +"Shape tools" = "Ferramentas de forma" +"Share" = "Compartilhar" +"Share on the local network" = "Compartilhar na rede local" +"Share: live session, export" = "Compartilhar: sessão ao vivo, exportar" +"Show" = "Mostrar" +"Show as grid" = "Mostrar em grade" +"Show as list" = "Mostrar em lista" +"Show autosaves" = "Mostrar salvamentos automáticos" +"Show behind transparent areas" = "Mostrar atrás de áreas transparentes" +"Show comments (Shift+C)" = "Mostrar comentários (Shift+C)" +"Show device frame" = "Mostrar moldura do dispositivo" +"Show dimensions on objects" = "Mostrar dimensões nos objetos" +"Show hotspot hints" = "Mostrar indicações de áreas clicáveis" +"Show only this on the canvas" = "Mostrar somente isto na tela" +"Show open" = "Mostrar abertos" +"Show section contents" = "Mostrar conteúdo da seção" +"Show this layer" = "Mostrar esta camada" +"Show usage" = "Mostrar uso" +"Show/Hide" = "Mostrar/ocultar" +"Show/Hide UI" = "Mostrar/ocultar interface" +"Side by side" = "Lado a lado" +"Sidebar" = "Barra lateral" +"Simplify stroke" = "Simplificar traço" +"Size" = "Tamanho" +"Size jitter" = "Variação de tamanho" +"Skip ink" = "Pular descendentes" +"Slashed zero" = "Zero cortado" +"Slice" = "Fatia" +"Slices" = "Fatias" +"Slide in" = "Deslizar para dentro" +"Slide out" = "Deslizar para fora" +"Slot" = "Slot" +"Slot content" = "Conteúdo do slot" +"Small capitals" = "Versaletes" +"Small caps" = "Versaletes" +"Smart animate" = "Animação inteligente" +"Snap to pixel grid" = "Encaixar na grade de pixels" +"Social media" = "Redes sociais" +"Soft light" = "Luz suave" +"Solid" = "Sólido" +"Some variants have the same property values: give each one a unique combination" = "Algumas variantes têm os mesmos valores de propriedade: dê a cada uma uma combinação única" +"Sort" = "Ordenar" +"Sort by date" = "Ordenar por data" +"Sort by page" = "Ordenar por página" +"Space around" = "Espaço ao redor" +"Space between" = "Espaço entre" +"Space drag" = "Espaço e arrastar" +"Space evenly" = "Espaço uniforme" +"Space+drag" = "Espaço+arrastar" +"Spacing" = "Espaçamento" +"Splay" = "Abertura" +"Spread" = "Expansão" +"Square" = "Quadrado" +"Standard" = "Padrão" +"Standard ligatures" = "Ligaduras padrão" +"Star" = "Estrela" +"Stars" = "Estrelas" +"Start" = "Início" +"Start from a blank canvas" = "Comece com uma tela em branco" +"Start live session" = "Iniciar sessão ao vivo" +"Start on path" = "Início no caminho" +"Start point" = "Ponto inicial" +"Status" = "Status" +"Sticky" = "Fixado" +"Stop following {name}" = "Parar de seguir {name}" +"Stop session" = "Encerrar sessão" +"Stop {n} {hex}" = "Parada {n} {hex}" +"Stretch" = "Esticar" +"Strikethrough" = "Tachado" +"String" = "String" +"Stroke" = "Traço" +"Stroke style" = "Estilo do traço" +"Stroke weight" = "Espessura do traço" +"Strokes" = "Traços" +"Style" = "Estilo" +"Styles" = "Estilos" +"Stylistic set 1" = "Conjunto estilístico 1" +"Stylistic set 2" = "Conjunto estilístico 2" +"Stylistic set 3" = "Conjunto estilístico 3" +"Stylistic set 4" = "Conjunto estilístico 4" +"Stylistic set 5" = "Conjunto estilístico 5" +"Subtract" = "Subtrair" +"Subtracts" = "Subtrações" +"Suffix" = "Sufixo" +"Swap instance" = "Trocar instância" +"Swap library: use another library's assets of the same names" = "Trocar biblioteca: usar os recursos com os mesmos nomes de outra biblioteca" +"Swap orientation" = "Trocar orientação" +"Swap overlay" = "Trocar sobreposição" +"Swap to {name}" = "Trocar por {name}" +"Swap width and height" = "Trocar largura e altura" +"Swapped instance" = "Instância trocada" +"Swapped {n} assets" = { one = "{n} recurso trocado", other = "{n} recursos trocados" } +"Swapped {n} assets; {missed} had no match and still use the old library" = { one = "{n} recurso trocado; {missed} sem correspondência continuam usando a biblioteca antiga", other = "{n} recursos trocados; {missed} sem correspondência continuam usando a biblioteca antiga" } +"Sweep" = "Abertura" +"System" = "Sistema" +"Tab / Shift+Tab" = "Tab / Shift+Tab" +"Table" = "Tabela" +"Tablet" = "Tablet" +"Tabular numbers" = "Números tabulares" +"Take the values from the first selected layer" = "Usar os valores da primeira camada selecionada" +"Taper" = "Afunilado" +"Taper both ends" = "Afunilar as duas pontas" +"Temperature" = "Temperatura" +"Template" = "Modelo" +"Text" = "Texto" +"Text align" = "Alinhamento do texto" +"Text content" = "Conteúdo do texto" +"Text style" = "Estilo de texto" +"Text styles" = "Estilos de texto" +"Texts" = "Textos" +"Texture" = "Textura" +"The canvas previews colors in sRGB; exported PNG, JPG and WebP files are tagged Display P3." = "A tela exibe as cores em sRGB; os arquivos PNG, JPG e WebP exportados são marcados como Display P3." +"The file now holds another library" = "O arquivo agora contém outra biblioteca" +"The file now holds another library (\"{name}\")" = "O arquivo agora contém outra biblioteca (\"{name}\")" +"The link carries the session's secret: share it only with people you invite." = "O link carrega o segredo da sessão: compartilhe-o somente com as pessoas que você convidar." +"The selection uses several text styles: click to apply one" = "A seleção usa vários estilos de texto: clique para aplicar um" +"Theme" = "Tema" +"There's no destination for that action" = "Essa ação não tem destino" +"Thickness" = "Espessura" +"This branch can't be reviewed: {e}" = "Não é possível revisar esta branch: {e}" +"This branch was merged or archived." = "Esta branch foi mesclada ou arquivada." +"This condition is edited as an expression" = "Esta condição é editada como expressão" +"This file" = "Este arquivo" +"This file has unsaved changes" = "Este arquivo tem alterações não salvas" +"This frame is new on the branch." = "Este quadro é novo na branch." +"This frame isn't on the branch." = "Este quadro não está na branch." +"Tidy up" = "Organizar" +"Tile" = "Mosaico" +"Tile type" = "Tipo de mosaico" +"Tint" = "Tonalidade" +"Title" = "Título" +"Title case" = "Iniciais maiúsculas" +"To share this library with your team, publish the file to a server (Share ▸ Publish to server…), then publish the library there." = "Para compartilhar esta biblioteca com sua equipe, publique o arquivo em um servidor (Compartilhar ▸ Publicar no servidor…) e depois publique a biblioteca lá." +"Toggle" = "Alternar" +"Toggle light/dark theme" = "Alternar tema claro/escuro" +"Toggle visibility" = "Alternar visibilidade" +"Tools" = "Ferramentas" +"Top" = "Em cima" +"Top & bottom" = "Em cima e embaixo" +"Top left radius" = "Raio superior esquerdo" +"Top right radius" = "Raio superior direito" +"Transform" = "Transformar" +"Triangle arrow" = "Seta triangular" +"Trigger" = "Gatilho" +"True" = "Verdadeiro" +"Truncate text" = "Truncar texto" +"Truncate with an ellipsis" = "Truncar com reticências" +"Try another search or filter." = "Tente outra pesquisa ou outro filtro." +"Two digits" = "Dois dígitos" +"Type" = "Tipo" +"Type settings" = "Configurações de texto" +"Typography" = "Tipografia" +"Underline" = "Sublinhado" +"Undo takes back only your own changes; what others changed since stays." = "Desfazer reverte somente as suas alterações; o que outras pessoas mudaram depois permanece." +"Ungroup" = "Desagrupar" +"Uniform" = "Uniforme" +"Union" = "União" +"Unions" = "Uniões" +"Unknown — treated as sRGB" = "Desconhecido — tratado como sRGB" +"Unread" = "Não lidos" +"Unresolve" = "Reabrir" +"Unsaved changes" = "Alterações não salvas" +"Unsaved changes in {names}. Close the window and lose them?" = "Há alterações não salvas em {names}. Fechar a janela e perdê-las?" +"Unsaved changes: save first ({save}), or close the tab with {alt}-click to discard" = "Alterações não salvas: salve primeiro ({save}) ou feche a aba com {alt}+clique para descartá-las" +"Unsaved changes: save first, or close again with {key} to discard" = "Alterações não salvas: salve primeiro ou feche de novo com {key} para descartá-las" +"Up" = "Para cima" +"Update" = "Atualizar" +"Update from main" = "Atualizar a partir do principal" +"Update from selection" = "Atualizar a partir da seleção" +"Updated {components} and {styles}" = "{components} e {styles} atualizados" +"Uploads this file to a FigCraft server and keeps this tab in sync with it. You get a link to edit and a link to view." = "Envia este arquivo para um servidor FigCraft e mantém esta aba sincronizada com ele. Você recebe um link para editar e outro para visualizar." +"Uppercase" = "Maiúsculas" +"Use a fixed value" = "Usar um valor fixo" +"Use an expression, e.g. count + 1" = "Usar uma expressão, por ex. count + 1" +"Use as mask" = "Usar como máscara" +"Use auto layout" = "Usar layout automático" +"Use number keys for opacity" = "Usar teclas numéricas para a opacidade" +"Use the layer's fill" = "Usar o preenchimento da camada" +"Used in {files} · {instances}" = "Usado em {files} · {instances}" +"Username" = "Nome de usuário" +"Value" = "Valor" +"Variable" = "Variável" +"Variable collections" = "Coleções de variáveis" +"Variable modes" = "Modos de variáveis" +"Variable width" = "Largura variável" +"Variables" = "Variáveis" +"Variables JSON…" = "JSON de variáveis…" +"Variables store reusable values (colours, numbers, strings, booleans) with modes such as Light and Dark." = "As variáveis guardam valores reutilizáveis (cores, números, strings, booleanos) com modos como Claro e Escuro." +"Variant" = "Variante" +"Vector" = "Vetor" +"Vectors" = "Vetores" +"Version" = "Versão" +"Version history" = "Histórico de versões" +"Version {version}" = "Versão {version}" +"Version {v} · {components} · {styles} · {variables}" = "Versão {v} · {components} · {styles} · {variables}" +"Vertical" = "Vertical" +"Vertical align" = "Alinhamento vertical" +"Vertical hex" = "Hexágono vertical" +"Vertical padding" = "Espaçamento interno vertical" +"Vertical spacing" = "Espaçamento vertical" +"Vertical trim" = "Corte vertical" +"View" = "Exibir" +"View link" = "Link de visualização" +"View link copied" = "Link de visualização copiado" +"View only" = "Somente visualização" +"View only: you see every change as it happens but can't edit. Leave to keep a copy you can edit." = "Somente visualização: você vê cada alteração em tempo real, mas não pode editar. Saia da sessão para ficar com uma cópia editável." +"Viewing “{name}”" = "Visualizando “{name}”" +"Violet" = "Violeta" +"Visibility" = "Visibilidade" +"Visible" = "Visível" +"Vivid" = "Vívido" +"Warm" = "Quente" +"Watch" = "Relógio" +"Wavy" = "Ondulado" +"Web" = "Web" +"WebSocket URL" = "URL do WebSocket" +"WebSocket URL copied" = "URL do WebSocket copiada" +"Wedge" = "Cunha" +"Weight" = "Espessura" +"What changed since it was marked ready for dev" = "O que mudou desde que foi marcado como pronto para dev" +"What it's for" = "Para que serve" +"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." = "Não se sabe de onde esta alteração partiu: ela ocorreu antes de o FigCraft guardar cópias dos quadros prontos para dev. Resolva a alteração (ou marque-o como pronto de novo) para comparar daqui em diante." +"While hovering" = "Enquanto passa o cursor" +"While pressing" = "Enquanto pressiona" +"White" = "Branco" +"Why it changed" = "Por que mudou" +"Width" = "Largura" +"Width point" = "Ponto de largura" +"Width profile" = "Perfil de largura" +"With the layers' export settings" = "Com as configurações de exportação das camadas" +"Wrap" = "Quebrar linha" +"Wrap in new section" = "Envolver em uma nova seção" +"Yellow" = "Amarelo" +"Yesterday" = "Ontem" +"You" = "Você" +"You'll get the host's file as a new tab and edit it together." = "Você vai receber o arquivo do anfitrião em uma nova aba para editarem juntos." +"Your copy of the file stays open" = "Sua cópia do arquivo continua aberta" +"Your name" = "Seu nome" +"Your name in comments" = "Seu nome nos comentários" +"Your system asks for reduced motion: animations stay off." = "Seu sistema pede movimento reduzido: as animações ficam desativadas." +"Zoom" = "Zoom" +"Zoom around the pointer" = "Zoom em torno do cursor" +"Zoom device to fill window" = "Ampliar o dispositivo para preencher a janela" +"Zoom in" = "Aumentar zoom" +"Zoom out" = "Diminuir zoom" +"Zoom to 100%" = "Zoom em 100%" +"Zoom to 200%" = "Zoom em 200%" +"Zoom to 50%" = "Zoom em 50%" +"Zoom to fit" = "Zoom para caber" +"Zoom to selection" = "Zoom na seleção" +"Zoom tool: click to zoom in, drag an area" = "Ferramenta de zoom: clique para aumentar, arraste uma área" +"Zoom tool: zoom out" = "Ferramenta de zoom: diminuir" +"and {n} more" = { one = "e mais {n}", other = "e mais {n}" } +"bleed marks" = "marcas de sangria" +"can edit the document" = "pode editar o documento" +"crop marks" = "marcas de corte" +"development: {path}" = "desenvolvimento: {path}" +"e.g. count + 1" = "por ex. count + 1" +"e.g. count >= 3 and not done" = "por ex. count >= 3 and not done" +"figcraft:// links from a browser, chat or email open this app and join the session." = "Links figcraft:// de um navegador, chat ou e-mail abrem este app e entram na sessão." +"hidden" = "oculta" +"iOS" = "iOS" +"locked" = "bloqueada" +"no bleed" = "sem sangria" +"nobody else here yet" = "ainda não há mais ninguém" +"now" = "agora" +"or" = "ou" +"reads the document" = "lê o documento" +"the plugin" = "o plugin" +"this session only" = "somente nesta sessão" +"{instances} in {files}" = "{instances} em {files}" +"{language}: draft translation, waiting for a native speaker's review." = "{language}: tradução em rascunho, aguardando revisão de um falante nativo." +"{length} bleed" = "sangria de {length}" +"{name}\nClick to apply to the selection" = "{name}\nClique para aplicar à seleção" +"{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}\nArraste para a tela ou clique para posicionar no centro da visualização.\nSegure Alt (Option) ao soltar sobre uma instância para trocá-la." +"{name} (from {library})" = "{name} (de {library})" +"{name} (you)" = "{name} (você)" +"{name} ({layers} layers)" = "{name} ({layers} camadas)" +"{name} ({tag}): {min} – {max}, default {default}. Double-click the slider to go back to the style's value; Escape while dragging cancels." = "{name} ({tag}): {min} – {max}, padrão {default}. Clique duas vezes no controle deslizante para voltar ao valor do estilo; Esc durante o arraste cancela." +"{name} from {path}" = "{name} de {path}" +"{name} · deleted on main" = "{name} · excluído no principal" +"{name} · deleted on the branch" = "{name} · excluído na branch" +"{name} · not published" = "{name} · não publicado" +"{name} · on a server" = "{name} · em um servidor" +"{name} · published version {v}" = "{name} · versão publicada {v}" +"{name} · version {v} on the server" = "{name} · versão {v} no servidor" +"{name}, {kind}, {w} by {h}, selected" = "{name}, {kind}, {w} por {h}, selecionado" +"{n} added" = { one = "{n} adicionada", other = "{n} adicionadas" } +"{n} autosave versions" = { one = "{n} versão salva automaticamente", other = "{n} versões salvas automaticamente" } +"{n} changed" = { one = "{n} alterada", other = "{n} alteradas" } +"{n} columns" = { one = "{n} coluna", other = "{n} colunas" } +"{n} components" = { one = "{n} componente", other = "{n} componentes" } +"{n} components and styles have newer versions" = { one = "{n} componente ou estilo tem uma versão mais recente", other = "{n} componentes e estilos têm versões mais recentes" } +"{n} conflicts to resolve" = { one = "{n} conflito para resolver", other = "{n} conflitos para resolver" } +"{n} days ago" = { one = "há {n} dia", other = "há {n} dias" } +"{n} files" = { one = "{n} arquivo", other = "{n} arquivos" } +"{n} hours ago" = { one = "há {n} hora", other = "há {n} horas" } +"{n} instances" = { one = "{n} instância", other = "{n} instâncias" } +"{n} layers" = { one = "{n} camada", other = "{n} camadas" } +"{n} layers as one file" = { one = "{n} camada em um só arquivo", other = "{n} camadas em um só arquivo" } +"{n} layers selected" = { one = "{n} camada selecionada", other = "{n} camadas selecionadas" } +"{n} layers · {parts}" = { one = "{n} camada · {parts}", other = "{n} camadas · {parts}" } +"{n} matches" = { one = "{n} resultado", other = "{n} resultados" } +"{n} minutes ago" = { one = "há {n} minuto", other = "há {n} minutos" } +"{n} months ago" = { one = "há {n} mês", other = "há {n} meses" } +"{n} of {total}" = "{n} de {total}" +"{n} people joined" = { one = "{n} pessoa entrou", other = "{n} pessoas entraram" } +"{n} preferred components" = { one = "{n} componente preferido", other = "{n} componentes preferidos" } +"{n} ready" = { one = "{n} pronto", other = "{n} prontos" } +"{n} removed" = { one = "{n} removida", other = "{n} removidas" } +"{n} replies" = { one = "{n} resposta", other = "{n} respostas" } +"{n} rows" = { one = "{n} linha", other = "{n} linhas" } +"{n} styles" = { one = "{n} estilo", other = "{n} estilos" } +"{n} variables" = { one = "{n} variável", other = "{n} variáveis" } +"{n} weeks ago" = { one = "há {n} semana", other = "há {n} semanas" } +"{n} years ago" = { one = "há {n} ano", other = "há {n} anos" } +"{n}d" = "{n} d" +"{n}h" = "{n} h" +"{n}m" = "{n} min" +"{n}w" = "{n} sem" +"{page}, nothing selected" = "{page}, nada selecionado" +"{profile} (current)" = "{profile} (atual)" +"{property} is its value; {property ? \"a\" : \"b\"} picks a string. Other {…} stays as written." = "{property} é o valor dela; {property ? \"a\" : \"b\"} escolhe uma string. Qualquer outro {…} fica como está escrito." +"{tool} hold {key}" = "{tool} segure {key}" +"{value} isn't a colour" = "{value} não é uma cor" +"{when} · edited" = "{when} · editado" +"← ↑ → ↓" = "← ↑ → ↓" +"⇥ / ⇧⇥" = "⇥ / ⇧⇥" +"⌘ arrows" = "⌘ setas" +"⌘ click" = "⌘ clique" +"⌘ scroll" = "⌘ rolar" +"⌥ drag" = "⌥ arrastar" + +[commands] +"align.bottom" = "Alinhar embaixo" +"align.hcenter" = "Alinhar centros horizontalmente" +"align.left" = "Alinhar à esquerda" +"align.right" = "Alinhar à direita" +"align.top" = "Alinhar em cima" +"align.vcenter" = "Alinhar centros verticalmente" +"annotation.add" = "Adicionar anotação" +"annotation.addCategory" = "Adicionar categoria de anotação" +"annotation.categories" = "Categorias de anotação" +"annotation.edit" = "Editar anotação" +"annotation.editCategory" = "Editar categoria de anotação" +"annotation.list" = "Listar anotações" +"annotation.remove" = "Remover anotação" +"annotation.removeCategory" = "Excluir categoria de anotação" +"app.actions" = "Ações" +"app.preferences" = "Preferências" +"arrange.back" = "Enviar para o plano de fundo" +"arrange.backward" = "Enviar para trás" +"arrange.forward" = "Trazer para a frente" +"arrange.front" = "Trazer para o primeiro plano" +"arrange.packH" = "Compactar na horizontal" +"arrange.packV" = "Compactar na vertical" +"arrange.roundToPixels" = "Arredondar para pixels" +"arrange.tidy" = "Organizar" +"bool.exclude" = "Excluir sobreposição da seleção" +"bool.flatten" = "Nivelar booleano" +"bool.intersect" = "Interseção da seleção" +"bool.subtract" = "Subtrair seleção" +"bool.union" = "União da seleção" +"branch.archive" = "Arquivar branch" +"branch.create" = "Criar branch" +"branch.list" = "Listar branches" +"branch.merge" = "Mesclar branch" +"branch.open" = "Abrir branch" +"branch.review" = "Revisar branch" +"branch.updateFromMain" = "Atualizar a partir do principal" +"codeConnect.export" = "Exportar conexões de código" +"codeConnect.import" = "Importar conexões de código" +"codeConnect.remove" = "Desconectar do código" +"codeConnect.set" = "Conectar ao código" +"collab.cursor" = "Mostrar cursor em" +"collab.diff" = "Mostrar alterações sincronizadas" +"collab.follow" = "Seguir" +"collab.host" = "Iniciar sessão ao vivo" +"collab.join" = "Entrar em uma sessão ao vivo" +"collab.leave" = "Sair da sessão ao vivo" +"collab.peers" = "Pessoas neste arquivo" +"collab.publish" = "Publicar no servidor" +"collab.registerLinks" = "Abrir links de convite no FigCraft" +"collab.stop" = "Encerrar sessão ao vivo" +"command.batch" = "Executar vários comandos" +"comment.add" = "Adicionar comentário" +"comment.delete" = "Excluir comentário" +"comment.edit" = "Editar comentário" +"comment.link" = "Copiar link do comentário" +"comment.list" = "Listar comentários" +"comment.markRead" = "Marcar comentário como lido" +"comment.move" = "Mover comentário" +"comment.next" = "Próximo comentário" +"comment.open" = "Abrir comentário" +"comment.people" = "Pessoas nos comentários" +"comment.react" = "Reagir ao comentário" +"comment.reply" = "Responder ao comentário" +"comment.resolve" = "Resolver comentário" +"comment.zoom" = "Zoom nos comentários" +"component.addProperty" = "Adicionar propriedade de componente" +"component.addVariant" = "Adicionar variante" +"component.bindProperty" = "Vincular camada a propriedade" +"component.combineVariants" = "Combinar como variantes" +"component.create" = "Criar componente" +"component.createMultiple" = "Criar vários componentes" +"component.deleteProperty" = "Excluir propriedade de componente" +"component.detach" = "Desvincular instância" +"component.editProperty" = "Editar propriedade de componente" +"component.exposeInstance" = "Expor instância aninhada" +"component.goToMain" = "Ir para o componente principal" +"component.list" = "Listar componentes" +"component.makeSlot" = "Transformar em slot" +"component.properties" = "Propriedades do componente" +"component.pushChanges" = "Enviar alterações ao componente principal" +"component.removeSlot" = "Remover slot" +"component.resetInstance" = "Redefinir todas as alterações" +"component.resetOverride" = "Redefinir substituição" +"component.restoreMain" = "Restaurar componente principal" +"dev.compare" = "Comparar alterações" +"dev.focus" = "Visualização em foco" +"dev.resolveChange" = "Resolver alteração" +"dev.unfocus" = "Sair da visualização em foco" +"devResource.add" = "Adicionar recurso de desenvolvimento" +"devResource.edit" = "Editar recurso de desenvolvimento" +"devResource.list" = "Listar recursos de desenvolvimento" +"devResource.remove" = "Remover recurso de desenvolvimento" +"distribute.horizontal" = "Distribuir espaçamento horizontal" +"distribute.vertical" = "Distribuir espaçamento vertical" +"doc.home" = "Início" +"doc.list" = "Listar documentos" +"doc.nextTab" = "Próxima aba" +"doc.previousTab" = "Aba anterior" +"doc.switch" = "Trocar de documento" +"edit.copy" = "Copiar" +"edit.copyAsCss" = "Copiar como CSS" +"edit.copyAsPng" = "Copiar como PNG" +"edit.copyAsSvg" = "Copiar como SVG" +"edit.copyAsText" = "Copiar como texto" +"edit.copyLink" = "Copiar link da seleção" +"edit.copyProperties" = "Copiar propriedades" +"edit.cut" = "Recortar" +"edit.delete" = "Excluir" +"edit.duplicate" = "Duplicar" +"edit.findReplace" = "Localizar e substituir" +"edit.paste" = "Colar" +"edit.pasteOver" = "Colar sobre a seleção" +"edit.pasteProperties" = "Colar propriedades" +"edit.pasteReplace" = "Colar para substituir" +"edit.pickColor" = "Selecionar cor" +"edit.redo" = "Refazer" +"edit.repeat" = "Repetir o último comando" +"edit.setDefaultProperties" = "Definir propriedades padrão" +"edit.undo" = "Desfazer" +"effect.add" = "Adicionar efeito" +"effect.move" = "Mover efeito" +"effect.remove" = "Remover efeito" +"effect.set" = "Definir efeito" +"export.add" = "Adicionar configuração de exportação" +"export.remove" = "Remover configuração de exportação" +"export.update" = "Editar configuração de exportação" +"file.close" = "Fechar aba" +"file.colorProfile" = "Perfil de cor" +"file.duplicate" = "Duplicar arquivo" +"file.export" = "Exportar" +"file.exportFramesPdf" = "Exportar quadros para PDF" +"file.exportLayers" = "Exportar camadas" +"file.exportSvg" = "Exportar seleção como SVG" +"file.import" = "Importar" +"file.new" = "Novo arquivo de design" +"file.open" = "Abrir" +"file.openRecent" = "Abrir recente" +"file.placeImage" = "Inserir imagem" +"file.recover" = "Recuperar arquivo" +"file.rename" = "Renomear arquivo" +"file.revert" = "Reverter para o salvo" +"file.save" = "Salvar" +"file.saveAs" = "Salvar como" +"file.saveVersion" = "Salvar no histórico de versões" +"file.versionHistory" = "Mostrar histórico de versões" +"fill.add" = "Adicionar preenchimento" +"fill.move" = "Mover preenchimento" +"fill.pattern" = "Preenchimento com padrão" +"fill.remove" = "Remover preenchimento" +"fill.set" = "Definir preenchimento" +"frame.create" = "Criar quadro" +"frame.presets" = "Listar predefinições de quadro" +"frame.swapOrientation" = "Trocar orientação" +"grid.add" = "Adicionar grade de layout" +"grid.move" = "Mover grade de layout" +"grid.remove" = "Remover grade de layout" +"guide.add" = "Adicionar guia" +"guide.clear" = "Remover todas as guias" +"guide.move" = "Mover guia" +"guide.remove" = "Remover guia" +"guide.select" = "Selecionar guia" +"help.about" = "Sobre o FigCraft" +"help.page" = "Página de ajuda" +"help.shortcuts" = "Atalhos de teclado" +"image.adjust" = "Ajustar imagem" +"image.deletePreset" = "Excluir predefinição de imagem" +"image.place" = "Inserir imagem" +"image.presets" = "Predefinições de imagem" +"image.savePreset" = "Salvar predefinição de imagem" +"inspect.assets" = "Inspecionar recursos" +"inspect.code" = "Código da camada" +"inspect.componentCode" = "Código do componente" +"inspect.properties" = "Inspecionar propriedades" +"inspect.readyForDev" = "Pronto para dev" +"instance.create" = "Criar instância" +"instance.exposed" = "Instâncias aninhadas expostas" +"instance.place" = "Inserir instância" +"instance.resetSlot" = "Redefinir slot" +"instance.setProperties" = "Definir propriedades da instância" +"instance.slotInsert" = "Inserir no slot" +"instance.swap" = "Trocar instância" +"instance.swapAt" = "Trocar instância em um ponto" +"layers.collapseAll" = "Recolher camadas" +"layout.add" = "Adicionar layout automático" +"layout.remove" = "Remover layout automático" +"layout.setTrack" = "Definir tamanho da faixa da grade" +"layout.suggest" = "Sugerir layout automático" +"libraries.open" = "Bibliotecas" +"libraries.publish" = "Publicar biblioteca…" +"library.acceptUpdates" = "Aceitar atualizações da biblioteca" +"library.add" = "Adicionar biblioteca" +"library.aliasVariable" = "Criar alias de variável da biblioteca" +"library.applyStyle" = "Aplicar estilo da biblioteca" +"library.bindVariable" = "Vincular variável da biblioteca" +"library.extendCollection" = "Estender coleção da biblioteca" +"library.import" = "Importar componente da biblioteca" +"library.importVariable" = "Importar variável da biblioteca" +"library.list" = "Listar bibliotecas" +"library.place" = "Inserir componente da biblioteca" +"library.publish" = "Publicar biblioteca" +"library.publishToServer" = "Publicar biblioteca no servidor" +"library.remove" = "Remover biblioteca" +"library.setVariableMode" = "Definir modo de variável da biblioteca" +"library.swap" = "Trocar biblioteca" +"library.swapAt" = "Trocar instância por componente da biblioteca" +"library.updates" = "Atualizações da biblioteca" +"library.usage" = "Uso da biblioteca" +"measure.distances" = "Medir distâncias" +"measure.padding" = "Medir espaçamento interno do layout automático" +"node.create" = "Criar camada" +"node.get" = "Obter camada" +"node.reorder" = "Reordenar camada" +"node.reparent" = "Mover camada para dentro de" +"node.set" = "Definir propriedades" +"object.batchRename" = "Renomear em lote" +"object.flipH" = "Inverter horizontalmente" +"object.flipV" = "Inverter verticalmente" +"object.frameSelection" = "Enquadrar seleção" +"object.group" = "Agrupar seleção" +"object.hideOthers" = "Ocultar as outras camadas" +"object.mask" = "Usar como máscara" +"object.moveToPage" = "Mover para a página" +"object.opacityKeys" = "Opacidade pelas teclas numéricas" +"object.rasterize" = "Rasterizar seleção" +"object.releaseMask" = "Liberar máscara" +"object.removeFill" = "Remover preenchimento" +"object.removeFrame" = "Remover quadro" +"object.removeStroke" = "Remover traço" +"object.rename" = "Renomear" +"object.resizeToFit" = "Redimensionar para caber" +"object.rotate180" = "Girar 180°" +"object.rotateLeft" = "Girar 90° para a esquerda" +"object.rotateRight" = "Girar 90° para a direita" +"object.setThumbnail" = "Definir como miniatura" +"object.swapFillStroke" = "Trocar preenchimento e traço" +"object.toggleLock" = "Bloquear/desbloquear seleção" +"object.toggleVisible" = "Mostrar/ocultar seleção" +"object.ungroup" = "Desagrupar seleção" +"object.wrapInSection" = "Envolver em uma nova seção" +"page.add" = "Adicionar página" +"page.delete" = "Excluir página" +"page.duplicate" = "Duplicar página" +"page.list" = "Listar páginas" +"page.move" = "Mover página" +"page.rename" = "Renomear página" +"page.select" = "Ir para a página" +"page.setBackground" = "Fundo da página" +"paint.documentColors" = "Cores do documento" +"plugin.close" = "Fechar painel do plugin" +"plugin.event" = "Usar controle do painel do plugin" +"plugin.import" = "Importar plugin a partir do manifesto…" +"plugin.list" = "Listar plugins" +"plugin.remove" = "Remover plugin" +"plugin.run" = "Executar plugin" +"plugin.ui" = "Painel do plugin" +"plugins.manage" = "Gerenciar plugins…" +"plugins.runLast" = "Executar o último plugin" +"pref.highlightHover" = "Destacar camadas ao passar o cursor" +"pref.keepTool" = "Manter a ferramenta selecionada após o uso" +"pref.language" = "Idioma da interface" +"pref.nudge" = "Valor do deslocamento" +"pref.numberKeysOpacity" = "Usar teclas numéricas para a opacidade" +"pref.reduceMotion" = "Reduzir movimento" +"pref.renameDuplicates" = "Renomear camadas duplicadas" +"pref.showDimensions" = "Mostrar dimensões nos objetos" +"pref.userName" = "Seu nome nos comentários" +"proto.action.add" = "Adicionar ação de protótipo" +"proto.action.move" = "Reordenar ação de protótipo" +"proto.action.remove" = "Remover ação de protótipo" +"proto.action.set" = "Editar ação de protótipo" +"proto.closePreview" = "Fechar visualização do protótipo" +"proto.conditional.addBlock" = "Adicionar senão, se / senão" +"proto.conditional.removeBlock" = "Remover se / senão, se / senão" +"proto.conditional.setCondition" = "Editar condição" +"proto.flow.add" = "Adicionar ponto de partida do fluxo" +"proto.flow.remove" = "Remover fluxo" +"proto.flow.rename" = "Renomear fluxo" +"proto.interaction.add" = "Adicionar interação" +"proto.interaction.clear" = "Remover todas as interações" +"proto.interaction.remove" = "Remover interação" +"proto.interaction.set" = "Editar interação" +"proto.present" = "Apresentar" +"proto.presentOptions" = "Opções de apresentação" +"proto.preview" = "Abrir visualização do protótipo" +"proto.settings" = "Configurações do protótipo" +"section.toggleContents" = "Ocultar/mostrar conteúdo da seção" +"select.add" = "Adicionar à seleção" +"select.all" = "Selecionar tudo" +"select.area" = "Selecionar área" +"select.byName" = "Selecionar camadas pelo nome" +"select.children" = "Selecionar filhos" +"select.inverse" = "Inverter seleção" +"select.layersAt" = "Camadas em um ponto" +"select.matching" = "Selecionar camadas correspondentes" +"select.next" = "Selecionar próximo elemento" +"select.none" = "Desmarcar tudo" +"select.parent" = "Selecionar pai" +"select.previous" = "Selecionar elemento anterior" +"select.remove" = "Remover da seleção" +"select.sameEffect" = "Selecionar mesmo efeito" +"select.sameFill" = "Selecionar mesmo preenchimento" +"select.sameFont" = "Selecionar mesma fonte" +"select.sameInstance" = "Selecionar mesma instância" +"select.sameProperties" = "Selecionar mesmas propriedades" +"select.sameStroke" = "Selecionar mesmo traço" +"select.sameText" = "Selecionar mesmas propriedades de texto" +"select.set" = "Selecionar" +"shape.arrow" = "Seta" +"shape.ellipse" = "Elipse" +"shape.line" = "Linha" +"shape.polygon" = "Polígono" +"shape.rectangle" = "Retângulo" +"shape.star" = "Estrela" +"shapeBuilder.merge" = "Mesclar regiões" +"shapeBuilder.mode" = "Modo do construtor de formas" +"shapeBuilder.regions" = "Regiões do construtor de formas" +"shapeBuilder.remove" = "Remover regiões" +"stroke.add" = "Adicionar traço" +"stroke.brush" = "Pincel" +"stroke.move" = "Mover traço" +"stroke.remove" = "Remover traço" +"stroke.set" = "Definir traço" +"stroke.widthProfile" = "Perfil de largura" +"style.apply" = "Aplicar estilo" +"style.create" = "Criar estilo" +"style.delete" = "Excluir estilo" +"style.detach" = "Desvincular estilo" +"style.duplicate" = "Duplicar estilo" +"style.list" = "Listar estilos" +"style.move" = "Mover estilos" +"style.renameFolder" = "Renomear pasta de estilos" +"style.update" = "Editar estilo" +"text.alignCenter" = "Centralizar" +"text.alignJustify" = "Justificar" +"text.alignLeft" = "Alinhar à esquerda" +"text.alignRight" = "Alinhar à direita" +"text.bold" = "Negrito" +"text.bulletList" = "Lista com marcadores" +"text.case" = "Maiúsculas e minúsculas" +"text.caseLower" = "Minúsculas" +"text.caseOriginal" = "Maiúsculas originais" +"text.caseSmallCaps" = "Versaletes" +"text.caseTitle" = "Iniciais maiúsculas" +"text.caseUpper" = "Maiúsculas" +"text.create" = "Texto" +"text.decoration" = "Decoração" +"text.edit.begin" = "Editar texto" +"text.edit.caret" = "Posicionar cursor de texto" +"text.edit.end" = "Parar de editar o texto" +"text.edit.insert" = "Digitar texto" +"text.edit.key" = "Tecla de texto" +"text.edit.preedit" = "Compor texto (IME)" +"text.edit.selectLine" = "Selecionar linha" +"text.edit.selectWord" = "Selecionar palavra" +"text.edit.selection" = "Seleção de texto" +"text.endPreview" = "Encerrar visualização do texto" +"text.fonts" = "Listar fontes" +"text.italic" = "Itálico" +"text.lineHeightDown" = "Diminuir altura da linha" +"text.lineHeightUp" = "Aumentar altura da linha" +"text.link" = "Criar link" +"text.listStyle" = "Estilo da lista" +"text.maxLines" = "Máx. de linhas" +"text.numberList" = "Lista numerada" +"text.onPath" = "Texto no caminho" +"text.paragraphIndent" = "Recuo de parágrafo" +"text.paragraphSpacing" = "Espaçamento entre parágrafos" +"text.pathOptions" = "Opções de texto no caminho" +"text.preview" = "Visualizar alteração de texto" +"text.removeFromPath" = "Remover texto do caminho" +"text.set" = "Definir texto" +"text.setFeatures" = "Recursos OpenType" +"text.setVariations" = "Eixos de fonte variável" +"text.sizeDown" = "Diminuir tamanho da fonte" +"text.sizeUp" = "Aumentar tamanho da fonte" +"text.strikethrough" = "Tachado" +"text.style" = "Estilizar trecho de texto" +"text.trackingDown" = "Diminuir espaçamento entre letras" +"text.trackingUp" = "Aumentar espaçamento entre letras" +"text.underline" = "Sublinhado" +"text.weightDown" = "Diminuir peso da fonte" +"text.weightUp" = "Aumentar peso da fonte" +"tool.arrow" = "Seta" +"tool.comment" = "Comentário" +"tool.ellipse" = "Elipse" +"tool.frame" = "Quadro" +"tool.hand" = "Mão" +"tool.line" = "Linha" +"tool.move" = "Mover" +"tool.pen" = "Caneta" +"tool.pencil" = "Lápis" +"tool.pencilBrush" = "Pincel do lápis" +"tool.polygon" = "Polígono" +"tool.rectangle" = "Retângulo" +"tool.scale" = "Escala" +"tool.scaleAnchor" = "Âncora de escala" +"tool.section" = "Seção" +"tool.set" = "Escolher ferramenta" +"tool.shapeBuilder" = "Construtor de formas" +"tool.slice" = "Fatia" +"tool.star" = "Estrela" +"tool.text" = "Texto" +"transform.move" = "Mover" +"transform.moveTo" = "Mover para" +"transform.nudge" = "Deslocar" +"transform.nudgeSize" = "Redimensionar por deslocamento" +"transform.resize" = "Redimensionar" +"transform.rotate" = "Girar" +"transform.scale" = "Dimensionar" +"variable.addMode" = "Adicionar modo" +"variable.bind" = "Vincular variável" +"variable.create" = "Criar variável" +"variable.createCollection" = "Criar coleção de variáveis" +"variable.delete" = "Excluir variável" +"variable.deleteCollection" = "Excluir coleção" +"variable.duplicate" = "Duplicar variável" +"variable.export" = "Exportar variáveis" +"variable.import" = "Importar variáveis" +"variable.list" = "Listar variáveis" +"variable.moveMode" = "Mover modo" +"variable.removeMode" = "Excluir modo" +"variable.renameCollection" = "Renomear coleção" +"variable.renameMode" = "Renomear modo" +"variable.resetOverride" = "Redefinir substituição de variável" +"variable.set" = "Definir valor da variável" +"variable.setMode" = "Definir modo de variável" +"variable.update" = "Editar variável" +"vector.create" = "Vetor" +"vector.deleteHeal" = "Excluir e reparar seleção" +"vector.edit.addVertex" = "Adicionar ponto" +"vector.edit.begin" = "Editar vetor" +"vector.edit.bend" = "Curvar segmento" +"vector.edit.bounds" = "Limites dos pontos selecionados" +"vector.edit.connect" = "Conectar pontos" +"vector.edit.cornerRadius" = "Raio do canto do ponto" +"vector.edit.cut" = "Cortar caminho" +"vector.edit.delete" = "Excluir pontos" +"vector.edit.end" = "Concluir edição" +"vector.edit.erase" = "Apagar" +"vector.edit.lasso" = "Seleção com laço" +"vector.edit.mirroring" = "Espelhamento das alças" +"vector.edit.moveHandles" = "Mover alças" +"vector.edit.moveVertices" = "Mover pontos" +"vector.edit.nudge" = "Deslocar pontos" +"vector.edit.paint" = "Balde de tinta" +"vector.edit.pen" = "Ponto de caneta" +"vector.edit.penEnd" = "Concluir caminho da caneta" +"vector.edit.position" = "Posição do ponto" +"vector.edit.resize" = "Redimensionar pontos" +"vector.edit.rotate" = "Girar pontos" +"vector.edit.select" = "Selecionar pontos" +"vector.edit.selectAll" = "Selecionar todos os pontos" +"vector.edit.setHandle" = "Definir alça" +"vector.edit.smooth" = "Suavizar ou afiar pontos" +"vector.edit.state" = "Estado da edição vetorial" +"vector.edit.strokeCap" = "Terminação do traço no ponto" +"vector.edit.strokeJoin" = "Junção do traço no ponto" +"vector.edit.tool" = "Ferramenta de edição vetorial" +"vector.edit.transform" = "Transformar pontos" +"vector.edit.widthPoint" = "Ponto de largura" +"vector.flatten" = "Nivelar" +"vector.join" = "Unir seleção" +"vector.offset" = "Deslocar caminho" +"vector.outlineStroke" = "Contornar traço" +"vector.reverse" = "Inverter direção do caminho" +"vector.simplify" = "Simplificar vetor" +"vector.smoothJoin" = "Unir seleção com suavização" +"version.autosave" = "Salvar versão automaticamente" +"version.delete" = "Excluir versão" +"version.duplicate" = "Duplicar versão" +"version.exitPreview" = "Voltar para a versão atual" +"version.list" = "Listar versões" +"version.preview" = "Ver versão" +"version.rename" = "Renomear versão" +"version.restore" = "Restaurar versão" +"view.assets" = "Painel de recursos" +"view.comments" = "Comentários" +"view.contextMenu" = "Mostrar menu de contexto" +"view.design" = "Painel de design" +"view.designPrototype" = "Alternar entre Design e Protótipo" +"view.devMode" = "Modo Dev" +"view.frameOutlines" = "Contornos dos quadros" +"view.get" = "Obter visualização" +"view.layers" = "Painel de camadas" +"view.layoutGrids" = "Grades de layout" +"view.leftSidebar" = "Mostrar/ocultar barra lateral esquerda" +"view.maskOutlines" = "Contornos das máscaras" +"view.nextFrame" = "Zoom no próximo quadro" +"view.nextPage" = "Próxima página" +"view.nextRegion" = "Focar a próxima região" +"view.outlines" = "Contornos" +"view.outlinesSelection" = "Contornos da seleção" +"view.pixelGrid" = "Grade de pixels" +"view.pixelPreview" = "Visualização de pixels" +"view.prevFrame" = "Zoom no quadro anterior" +"view.prevPage" = "Página anterior" +"view.previousRegion" = "Focar a região anterior" +"view.proofSrgb" = "Prova em tela sRGB" +"view.prototype" = "Painel de protótipo" +"view.rulers" = "Réguas" +"view.set" = "Definir visualização" +"view.slices" = "Fatias" +"view.snapGeometry" = "Encaixar na geometria" +"view.snapObjects" = "Encaixar nos objetos" +"view.snapPixel" = "Encaixar na grade de pixels" +"view.themeDark" = "Tema escuro" +"view.themeLight" = "Tema claro" +"view.themeSystem" = "Seguir o tema do sistema" +"view.toggleUi" = "Mostrar/ocultar interface" +"view.zoom100" = "Zoom em 100%" +"view.zoom200" = "Zoom em 200%" +"view.zoom50" = "Zoom em 50%" +"view.zoomAt" = "Ferramenta de zoom" +"view.zoomFit" = "Zoom para caber" +"view.zoomIn" = "Aumentar zoom" +"view.zoomOut" = "Diminuir zoom" +"view.zoomSelection" = "Zoom na seleção" +"window.focus" = "Trazer a janela para a frente" +"window.new" = "Nova janela" + +[menu] +"bool.exclude" = "Excluir sobreposição" +"bool.flatten" = "Nivelar" +"bool.intersect" = "Interseção" +"bool.subtract" = "Subtrair" +"bool.union" = "União" +"file.duplicate" = "Duplicar" +"file.import" = "Importar do arquivo…" +"file.rename" = "Renomear" +"libraries.open" = "Abrir bibliotecas" +"select.sameEffect" = "Efeito" +"select.sameFill" = "Preenchimento" +"select.sameFont" = "Fonte" +"select.sameInstance" = "Instância" +"select.sameProperties" = "Propriedades" +"select.sameStroke" = "Traço" +"select.sameText" = "Propriedades de texto" +"text.alignCenter" = "Centralizar texto" +"text.alignJustify" = "Justificar texto" +"text.alignLeft" = "Alinhar texto à esquerda" +"text.alignRight" = "Alinhar texto à direita" +"view.assets" = "Recursos" +"view.design" = "Design" +"view.layers" = "Camadas" +"view.outlines" = "Mostrar contornos" +"view.outlinesSelection" = "Mostrar contornos da seleção" +"view.prototype" = "Protótipo" +"view.themeDark" = "Escuro" +"view.themeLight" = "Claro" +"view.themeSystem" = "Seguir o sistema" diff --git a/crates/ui-egui/src/colorpicker.rs b/crates/ui-egui/src/colorpicker.rs index 9030cb1..0728515 100644 --- a/crates/ui-egui/src/colorpicker.rs +++ b/crates/ui-egui/src/colorpicker.rs @@ -822,7 +822,7 @@ fn pattern_controls(app: &mut FigApp, ui: &mut Ui, target: &PickerTarget, paint: let sources = pattern_sources(app, target); ui.horizontal(|ui| { ui.add_space(16.0); - let resp = widgets::elided_dropdown(ui, &name, 208.0); + let resp = widgets::dropdown(ui, &name, 208.0, None); crate::a11y::combo(&resp, tr("Pattern source"), &name, crate::a11y::menu_open(&resp)); crate::right::menu_popup(&resp).show(|ui| { for (id, label) in &sources { diff --git a/crates/ui-egui/src/home.rs b/crates/ui-egui/src/home.rs index 7701488..5f4bb62 100644 --- a/crates/ui-egui/src/home.rs +++ b/crates/ui-egui/src/home.rs @@ -7,6 +7,7 @@ use crate::FigApp; use crate::i18n::{tr, tr_noop}; use crate::icons::{self, Icon}; use crate::theme::{ACCENT, Tokens, regular, semibold}; +use crate::widgets; pub fn show(app: &mut FigApp, ui: &mut Ui) { let t = Tokens::get(ui.ctx()); @@ -40,14 +41,20 @@ pub fn show(app: &mut FigApp, ui: &mut Ui) { (Icon::Page, tr_noop("Open file"), tr_noop("Open .figcraft, .svg or images")), ] { let r = Rect::from_min_size(pos2(x, cy), vec2(260.0, 72.0)); - let resp = ui.interact(r, ui.id().with(("card", title)), Sense::click()); + let mut resp = ui.interact(r, ui.id().with(("card", title)), Sense::click()); + // One line each inside the card; a long translation ends with an ellipsis, in full on hover. + let text_w = r.width() - 72.0; + let (title_shown, sub_shown) = (widgets::elide_font(ui, tr(title), text_w, semibold(12.0)), widgets::elide(ui, tr(sub), text_w)); + if title_shown != tr(title) || sub_shown != tr(sub) { + resp = resp.on_hover_text(format!("{}\n{}", tr(title), tr(sub))); + } ui.painter().rect_filled(r, CornerRadius::same(8), if resp.hovered() { t.hover } else { t.panel }); ui.painter().rect_stroke(r, CornerRadius::same(8), Stroke::new(1.0, t.border), StrokeKind::Inside); let ir = Rect::from_min_size(pos2(r.min.x + 16.0, r.center().y - 16.0), vec2(32.0, 32.0)); ui.painter().rect_filled(ir, CornerRadius::same(6), ACCENT); icons::paint(ui.painter(), ir.shrink(8.0), icon, egui::Color32::WHITE); - ui.painter().text(pos2(r.min.x + 60.0, r.center().y - 8.0), Align2::LEFT_CENTER, tr(title), semibold(12.0), t.text); - ui.painter().text(pos2(r.min.x + 60.0, r.center().y + 9.0), Align2::LEFT_CENTER, tr(sub), regular(11.0), t.text_secondary); + ui.painter().text(pos2(r.min.x + 60.0, r.center().y - 8.0), Align2::LEFT_CENTER, title_shown, semibold(12.0), t.text); + ui.painter().text(pos2(r.min.x + 60.0, r.center().y + 9.0), Align2::LEFT_CENTER, sub_shown, regular(11.0), t.text_secondary); if resp.clicked() { if title.starts_with("New") { new_file = true; diff --git a/crates/ui-egui/src/i18n.rs b/crates/ui-egui/src/i18n.rs index f72bae5..ee091a6 100644 --- a/crates/ui-egui/src/i18n.rs +++ b/crates/ui-egui/src/i18n.rs @@ -49,19 +49,25 @@ pub fn current() -> Option<&'static Lang> { } /// Show the language of `pref` (a language code, or "system" for `system`, the OS or browser -/// language). Unknown languages show English. +/// languages, most preferred first and comma-separated). Unknown languages show English. pub fn set(pref: &str, system: Option<&str>) { CURRENT.store(resolve(pref, system), Ordering::Relaxed); } -/// The [`LANGS`] index for a preference: the exact tag ("pt-BR"), else its base language ("es" -/// for "es_ES.UTF-8"), else English. +/// The [`LANGS`] index for a preference: the first language in it the UI has, else English. fn resolve(pref: &str, system: Option<&str>) -> usize { let want = if pref.is_empty() || pref == "system" { system.unwrap_or("en") } else { pref }; - let tag = want.split(['.', '@']).next().unwrap_or("").replace('_', "-"); + want.split(',').find_map(resolve_one).unwrap_or(0) +} + +/// The [`LANGS`] index for one tag: the exact tag ("pt-BR"), else its base language ("es" for +/// "es_ES.UTF-8"), else a regional catalog of that language ("pt-BR" for "pt-PT"). +fn resolve_one(want: &str) -> Option { + let tag = want.trim().split(['.', '@']).next().unwrap_or("").replace('_', "-"); let base = tag.split('-').next().unwrap_or(""); let find = |t: &str| LANGS.iter().position(|l| l.code.eq_ignore_ascii_case(t)); - find(&tag).or_else(|| find(base)).unwrap_or(0) + let regional = || LANGS.iter().position(|l| !base.is_empty() && l.code.split('-').next().is_some_and(|b| b.eq_ignore_ascii_case(base))); + find(&tag).or_else(|| find(base)).or_else(regional) } fn find(table: &'static [(&'static str, Text)], key: &str) -> Option<&'static Text> { @@ -106,11 +112,13 @@ pub fn trn(key: &str, n: usize, args: &[(&str, &dyn Display)]) -> String { fill(text, &all) } -/// Whether count `n` takes the "one" form. -// shortcut: n == 1 is CLDR's rule for English and Spanish (Spanish "many" for millions reads as -// "other" here); add per-language rules when a language needs them (French: 0 and 1). -fn plural_one(_lang: usize, n: usize) -> bool { - n == 1 +/// Whether count `n` takes the "one" form: 0 and 1 in French and Brazilian Portuguese, 1 elsewhere +/// (CLDR's integer rules). +// shortcut: CLDR's "many" (French, Spanish and Portuguese millions) reads as "other" here; add it +// when a language needs a third form. +fn plural_one(lang: usize, n: usize) -> bool { + let zero_is_one = LANGS.get(lang).is_some_and(|l| matches!(l.code, "fr" | "pt-BR")); + n == 1 || (n == 0 && zero_is_one) } /// Replace each `{name}` in `text` with its argument, in one pass (an argument's own braces stay). diff --git a/crates/ui-egui/src/i18n_tests.rs b/crates/ui-egui/src/i18n_tests.rs index 44fc30e..77d6dab 100644 --- a/crates/ui-egui/src/i18n_tests.rs +++ b/crates/ui-egui/src/i18n_tests.rs @@ -301,6 +301,33 @@ fn lookups_fall_back_to_english_and_fill_placeholders() { assert!(matches!(lookup(es, k), Some(x) if std::ptr::eq(x, t))); } +#[test] +fn system_languages_pick_the_first_one_with_a_catalog() { + let code = |pref: &str, system: Option<&str>| LANGS[resolve(pref, system)].code; + assert_eq!(code("system", Some("fr-CA")), "fr"); + assert_eq!(code("system", Some("de_CH.UTF-8")), "de"); + assert_eq!(code("system", Some("pt-BR")), "pt-BR"); + // Portugal's Portuguese and a bare "pt" read the Brazilian catalog. + assert_eq!(code("system", Some("pt-PT")), "pt-BR"); + assert_eq!(code("pt", None), "pt-BR"); + // An OS list: the first language there is a catalog for (English counts). + assert_eq!(code("system", Some("nl-NL,de-DE,en-US")), "de"); + assert_eq!(code("system", Some("nl-NL, en-US,fr-FR")), "en"); + assert_eq!(code("system", Some("nl,sv")), "en"); + assert_eq!(code("fr", Some("de-DE")), "fr", "a chosen language beats the system's"); +} + +#[test] +fn french_and_portuguese_count_zero_as_singular() { + let one = |code: &str, n: usize| plural_one(LANGS.iter().position(|l| l.code == code).unwrap(), n); + for code in ["fr", "pt-BR"] { + assert!(one(code, 0) && one(code, 1) && !one(code, 2), "{code}"); + } + for code in ["en", "es", "de"] { + assert!(!one(code, 0) && one(code, 1) && !one(code, 2), "{code}"); + } +} + #[test] fn the_key_scanner_reads_rust_literals() { let src = r#"x(tr("A \"b\"")); trf( diff --git a/crates/ui-egui/src/right.rs b/crates/ui-egui/src/right.rs index 086258a..a9c6147 100644 --- a/crates/ui-egui/src/right.rs +++ b/crates/ui-egui/src/right.rs @@ -944,7 +944,7 @@ fn variable_modes(app: &mut FigApp, ui: &mut Ui, doc: &Document, sel: &[NodeId]) if name != c.name || r.library.is_some() { ui.interact(rect, Id::new(("var_mode_name", &c.id)), Sense::hover()).on_hover_text(&hover); } - let resp = widgets::elided_dropdown(ui, &label, pick_w); + let resp = widgets::dropdown(ui, &label, pick_w, None); menu_popup(&resp).width(180.0).show(|ui| { let mut pick = None; if menu_check(ui, own == Some(None), &auto, "") { diff --git a/crates/ui-egui/src/style_picker.rs b/crates/ui-egui/src/style_picker.rs index 7bfecd1..bc88307 100644 --- a/crates/ui-egui/src/style_picker.rs +++ b/crates/ui-egui/src/style_picker.rs @@ -673,10 +673,10 @@ fn text_properties(ui: &mut Ui, id: &str, def: &TextStyle, out: &mut Frame) { // The dropdowns' menus open outside the dark scope (they're regular popups). let (family_resp, style_resp) = crate::theme::on_dark(ui, |ui| { ui.spacing_mut().item_spacing = vec2(8.0, 6.0); - let family_resp = widgets::elided_dropdown(ui, &def.font_family, W).on_hover_text(tr("Font")); + let family_resp = widgets::dropdown(ui, &def.font_family, W, None).on_hover_text(tr("Font")); let mut style_resp = None; ui.horizontal(|ui| { - style_resp = Some(widgets::elided_dropdown(ui, &def.font_style, half).on_hover_text(tr("Font style"))); + style_resp = Some(widgets::dropdown(ui, &def.font_style, half, None).on_hover_text(tr("Font style"))); if let Some(widgets::FieldEdit::Set(v) | widgets::FieldEdit::Scrub(v, true)) = widgets::number_field(ui, Id::new(("ts_size", id)), widgets::Lead::Text(tr("Size")), Some(def.font_size), "", half, 1.0) { diff --git a/crates/ui-egui/src/typography.rs b/crates/ui-egui/src/typography.rs index 8fc4e2c..873ac0f 100644 --- a/crates/ui-egui/src/typography.rs +++ b/crates/ui-egui/src/typography.rs @@ -179,7 +179,7 @@ fn font_rows(app: &mut FigApp, ui: &mut Ui, ids: &[NodeId], styles: &[TextStyle] let fstyle = uniform(styles, |s| s.font_style.clone()); row(ui, 32.0, |ui| { let w = ui.available_width(); - let resp = widgets::elided_dropdown(ui, family.as_deref().unwrap_or(tr(MIXED)), w); + let resp = widgets::dropdown(ui, family.as_deref().unwrap_or(tr(MIXED)), w, None); menu_popup(&resp).width(w.max(240.0)).close_behavior(egui::PopupCloseBehavior::CloseOnClickOutside).show(|ui| { if let Some(f) = font_picker(ui, family.as_deref(), resp.clicked()) { remember_family(ui.ctx(), &f); @@ -192,7 +192,7 @@ fn font_rows(app: &mut FigApp, ui: &mut Ui, ids: &[NodeId], styles: &[TextStyle] // Style + size. let half = (ui.available_width() - PAD * 2.0 - 8.0) / 2.0; row(ui, 32.0, |ui| { - let resp = widgets::elided_dropdown(ui, fstyle.as_deref().unwrap_or(tr(MIXED)), half); + let resp = widgets::dropdown(ui, fstyle.as_deref().unwrap_or(tr(MIXED)), half, None); let fam = family.clone(); menu_popup(&resp).width(200.0).show(|ui| match &fam { Some(fam) => { @@ -736,7 +736,7 @@ fn named_instances( // An inline list (a menu would close the Type settings popover it opens from). let open_id = Id::new("ty_instances_open"); let mut open = ui.data(|d| d.get_temp::(open_id)).unwrap_or(false); - if widgets::elided_dropdown(ui, &label, ui.available_width()).on_hover_text(tr("Named instance")).clicked() { + if widgets::dropdown(ui, &label, ui.available_width(), None).on_hover_text(tr("Named instance")).clicked() { open = !open; } if open { diff --git a/crates/ui-egui/src/widgets.rs b/crates/ui-egui/src/widgets.rs index 35b0517..9b38abe 100644 --- a/crates/ui-egui/src/widgets.rs +++ b/crates/ui-egui/src/widgets.rs @@ -503,32 +503,23 @@ pub fn dropdown_lead(ui: &mut Ui, label: &str, width: f32, lead: Option {} } - let galley = ui.painter().layout(label.to_string(), regular(11.0), t.text, rect.width() - (x - rect.min.x) - 20.0); + // One line: a label longer than the field (a variable font style like "SemiBold SemiCondensed", + // a long translation) ends with an ellipsis and shows in full on hover. + let shown = elide(ui, label, rect.max.x - x - 20.0); + let galley = ui.painter().layout_no_wrap(shown.clone(), regular(11.0), t.text); ui.painter().galley(pos2(x, rect.center().y - galley.size().y / 2.0), galley, t.text); icons::paint(ui.painter(), Rect::from_center_size(pos2(rect.max.x - 10.0, rect.center().y), vec2(12.0, 12.0)), Icon::Chevron, t.icon_secondary); - resp + if shown != label { resp.on_hover_text(label) } else { resp } } -/// Horizontal space a dropdown takes besides its label (padding and chevron). -const DROPDOWN_CHROME: f32 = 30.0; - -/// A dropdown whose label stays on one line: long names (variable font styles like "SemiBold -/// SemiCondensed") end with an ellipsis and show in full on hover. -pub fn elided_dropdown(ui: &mut Ui, label: &str, width: f32) -> egui::Response { - let shown = elide(ui, label, width - DROPDOWN_CHROME); - let resp = dropdown(ui, &shown, width, None); - if shown != label { - // Screen readers get the whole name. - a11y::combo(&resp, "", label, a11y::menu_open(&resp)); - resp.on_hover_text(label) - } else { - resp - } -} - -/// `s` shortened with an ellipsis to fit `max_w` on one line. +/// `s` shortened with an ellipsis to fit `max_w` on one line at the UI's 11 px. pub fn elide(ui: &Ui, s: &str, max_w: f32) -> String { - let fits = |s: &str| ui.painter().layout_no_wrap(s.to_string(), regular(11.0), Color32::WHITE).size().x <= max_w; + elide_font(ui, s, max_w, regular(11.0)) +} + +/// [`elide`] in `font`. +pub fn elide_font(ui: &Ui, s: &str, max_w: f32, font: egui::FontId) -> String { + let fits = |s: &str| ui.painter().layout_no_wrap(s.to_string(), font.clone(), Color32::WHITE).size().x <= max_w; if fits(s) { return s.to_string(); } @@ -899,10 +890,15 @@ pub fn sublabels(ui: &mut Ui, a: &str, b: Option<&str>) { let t = Tokens::get(ui.ctx()); let w = ui.available_width(); let (r, _) = ui.allocate_exact_size(vec2(w, 18.0), Sense::hover()); - ui.painter().text(pos2(r.min.x + PAD, r.max.y - 2.0), Align2::LEFT_BOTTOM, a, regular(10.0), t.text_secondary); - if let Some(b) = b { - let col = col_width(w); - ui.painter().text(pos2(r.min.x + PAD + col + 8.0, r.max.y - 2.0), Align2::LEFT_BOTTOM, b, regular(10.0), t.text_secondary); + let col = col_width(w); + // Each label fits its column on one line (long translations end with an ellipsis, in full on hover). + let a_w = if b.is_some() { col } else { w - PAD * 2.0 }; + for (i, (text, x, max_w)) in [(a, PAD, a_w)].into_iter().chain(b.map(|b| (b, PAD + col + 8.0, w - col - 8.0 - PAD * 2.0))).enumerate() { + let shown = elide_font(ui, text, max_w, regular(10.0)); + let at = ui.painter().text(pos2(r.min.x + x, r.max.y - 2.0), Align2::LEFT_BOTTOM, &shown, regular(10.0), t.text_secondary); + if shown != text { + ui.interact(at, ui.id().with(("sublabel", i)), Sense::hover()).on_hover_text(text); + } } } diff --git a/docs/gaps.md b/docs/gaps.md index 97653bf..f97daf1 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-12 · **Change:** minor (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-12 · **Change:** minor (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 and a Spanish draft only (the layer landed 2026-10-11) | Localization | 45–75 | [localization-parity](localization-parity.md) | +| 5 | Localization: English plus unreviewed Spanish, French, German and Brazilian Portuguese drafts; no Japanese or Korean | Localization | 40–65 | [localization-parity](localization-parity.md) | | 6 | Plugins: no distribution or widgets; Figma's plugins don't run | Ecosystem | 15–40 | [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) | @@ -100,18 +100,21 @@ No alpha blockers: the alpha gate in [`roadmap.md`](roadmap.md#alpha-gate) passe - **Impact:** Figma users notice the feel within minutes; it decides whether they stay. - **Estimate:** 40–60 h. Detail in [`ui-parity.md`](ui-parity.md). -### 5. Localization: English and a Spanish draft only -- **Missing:** Figma's other UI languages (Japanese, Korean, French, German, Portuguese (Brazil)), a - native review of the Spanish draft, localized engine messages and number formatting. +### 5. Localization: English plus unreviewed drafts; no Japanese or Korean +- **Missing:** Figma's Japanese and Korean, native reviews of the Spanish, French, German and + Brazilian Portuguese drafts, localized engine messages and number formatting. - **Evidence (measured from source):** the layer landed 2026-10-11: catalogs in - `crates/ui-egui/locales/` (1,280 UI keys plus 501 command labels), Preferences ▸ Language, - `pref.language`; `en.toml` is complete and `es.toml` is a complete machine draft. Engine error + `crates/ui-egui/locales/` (1,351 UI keys plus 519 command labels and 29 menu wordings), + Preferences ▸ Language, `pref.language`; `en.toml` is complete, and `es.toml`, `fr.toml`, + `de.toml` and `pt-BR.toml` (2026-10-12) are complete machine drafts (only Spanish is held to + completeness by the check; the others show English for strings added later). Engine error messages and Dev Mode values stay English. - **Impact:** keeps out non-English designers, including Figma's large Japanese and Korean user bases. - **Estimate:** 3–7 h per language plus native review, 4–6 h for engine messages and numbers; - 45–75 h for the 11 key languages. Detail in [`localization-parity.md`](localization-parity.md); - how to add one in [`translating.md`](translating.md). + 40–65 h for the key languages left and the drafts' follow-ups. Detail in + [`localization-parity.md`](localization-parity.md); how to add one in + [`translating.md`](translating.md). ### 6. Plugins: no distribution or widgets; Figma's plugins don't run - **Landed (#101):** sandboxed WebAssembly plugins (wasmi, metered, memory cap, no WASI, also in @@ -324,6 +327,7 @@ No alpha blockers: the alpha gate in [`roadmap.md`](roadmap.md#alpha-gate) passe | Date | Change | Summary | |---|---|---| +| 2026-10-12 | minor | French, German and Brazilian Portuguese draft catalogs (gap 5): every UI string, command label and menu wording (1,899 entries) machine-drafted in each and marked as drafts awaiting native review, falling back to English per key (new strings need only English and Spanish); 0 counts as singular in French and Brazilian Portuguese; System picks the first OS language with a catalog (pt-PT and pt read pt-BR); long translations elide with a tooltip in dropdowns, two-column labels and the home cards. Gap 5 45–75 h → 40–65 h, rank unchanged | | 2026-10-12 | minor | Cursor chat and spotlight in live sessions (gap 2): `/` opens a chat bubble at your pointer, a spotlight makes everyone follow your view; ephemeral presence the host validates and rate-limits. Gap 2 45–90 h → 42–84 h | | 2026-10-12 | minor | Layers and Assets panels behaviour suite and fixes added to gap 4's landed list; ranking and hours unchanged | | 2026-10-12 | minor | Vector multi-edit and the vector edit tail, with a behaviour suite written from the public documentation (5 tests, about 30 table rows and steps, and a junk-parameter sweep of every vector command in multi-edit mode): several vector layers are edited at once (Enter, double-click or `vector.edit.begin {ids}`; a press on another layer's point, handle or segment makes it the active layer; Shift-click, marquee and lasso select across layers; dragging, the arrows, Delete, delete and heal, mirroring, smoothing, corner radius and point caps and joins reach every layer's selected points in one undo step; the pen, bend, paint bucket, cut and eraser work in the active layer); several Bezier handles are selected with Shift-click and dragged together (`vector.edit.moveHandles`); a sharp point next to a curved segment rounds (the curve is cut where the arc meets it and keeps its shape); a point can have its own stroke cap and join (`vector.edit.strokeCap`, `vector.edit.strokeJoin`, the Point section of the Design panel; canvas, PNG, SVG and PDF, outline stroke); the Pen outside edit mode connects to one of its own points and ends the path, and continues a selected open path from an end point. Left: corner smoothing beyond rectangles, the transform box around points of several layers, per-point caps and joins on dashed, variable-width and brush strokes. Gap 9 2–5 h → 1–3 h (pen pressure on macOS and Linux tablets left, blocked on winit). Shapes & vector 98%/72% → 99%/73%, 2–4 h → 1–3 h; Figma Draw extras 80%/55% → 88%/60%, 2–5 h → 1–3 h (gap 9: pen pressure on macOS and Linux tablets left). Totals recomputed by the doc's method, which rows since the last recompute had left stale: the area table's weighted breadth is 83.7% (~83%; core 94.1%, ~94%) and ready 63.1% (~63%; core 72.1%, ~72%), hours 133–284 (core 38–83); Features (depth) 61% → 63%, 46–94 h → 34–76 h; ready for real work 52.6% (~52%); mainstream weekly areas 71.0% → 72.1% (× 0.9 × 0.9 × 0.85 = 49.7%, ~49%, rounded down); essentials unchanged (~57%); full parity ~306–595 h → ~294–572 h (on top of the rows merged since: ~301–587 h → ~289–564 h; area-table totals recomputed on the merged table and rounded down: breadth ~84%, ready ~63%, core ~94%/~72%, mainstream weekly areas 72.4%, ~49%) | diff --git a/docs/localization-parity.md b/docs/localization-parity.md index c33cfeb..ca476b4 100644 --- a/docs/localization-parity.md +++ b/docs/localization-parity.md @@ -1,11 +1,11 @@ # Localization parity -> **Last reviewed:** 2026-10-10 · **Last updated:** 2026-10-11 · **Change:** major (localization layer; English catalog; Spanish as a draft) · **Target:** Figma Design (desktop app 126.10.7) +> **Last reviewed:** 2026-10-10 · **Last updated:** 2026-10-12 · **Change:** minor (French, German and Brazilian Portuguese drafts) · **Target:** Figma Design (desktop app 126.10.7) -FigCraft's interface has a localization layer with an English catalog and a complete Spanish draft -(machine-drafted, waiting for a native speaker's review). This page lists the twelve key languages -of the craftrules standard, then the other languages Figma ships. How to add a language: -[`translating.md`](translating.md). +FigCraft's interface has a localization layer with an English catalog and complete Spanish, French, +German and Brazilian Portuguese drafts (machine-drafted, waiting for native speakers' review). This +page lists the twelve key languages of the craftrules standard, then the other languages Figma +ships. How to add a language: [`translating.md`](translating.md). ## What Figma ships @@ -16,49 +16,56 @@ browser's page translation. The `.lproj` folders in `/Applications/Figma.app` (6 Electron/Chromium locale packs, not Figma's own UI languages. Text *content* in any script is supported by both apps (CJK, Arabic and Devanagari shaping, IME); Figma has no vertical text. -## What FigCraft has (measured 2026-10-11, from source) +## What FigCraft has (measured 2026-10-12, from source) - **Layer:** one TOML catalog per language in `crates/ui-egui/locales/`, baked into the binary by the UI crate's build script (desktop and web; nothing read at run time). Keys are the English text (`tr("Fill")`, `trf` for `{named}` placeholders, `trn` for counts with one/other plural forms), so a missing translation shows English, never a raw key. One English text that needs two translations takes a context (`"Fill|sizing"`). -- **Strings:** 1,280 UI keys in `en.toml` (35 with plural forms; ~110 are labels from engine and - document data, such as tool names, blend modes and Dev Mode properties) plus 501 command labels - and 29 menu wordings by command id. Command ids, the CLI, MCP and the control channel stay - English. Accessibility names come from the same strings. -- **Language preference:** Preferences ▸ Language (System, English, Español), applied at once - without a restart; System follows the OS (Windows language list, macOS AppleLanguages, the - locale variables on Linux and BSD) or the browser's language on the web. `pref.language - {language}` sets it from the CLI, MCP and the control channel. +- **Strings:** 1,351 UI keys in `en.toml` (36 with plural forms; ~110 are labels from engine and + document data, such as tool names, blend modes and Dev Mode properties) plus 519 command labels + and 29 menu wordings by command id: 1,899 entries. Command ids, the CLI, MCP and the control + channel stay English. Accessibility names come from the same strings. +- **Language preference:** Preferences ▸ Language (System, English, Deutsch, Español, Français, + Português (Brasil)), applied at once without a restart; System takes the first of the OS's + preferred languages that has a catalog (Windows' language list, macOS AppleLanguages, `LANGUAGE` + then the locale variables on Linux and BSD; a regional tag falls back to its language, and pt-PT + or pt to pt-BR) or the browser's language on the web. `pref.language {language}` sets it from + the CLI, MCP and the control channel. - **Check:** `cargo test -p figcraft-ui-egui i18n` fails on keys the code uses that `en.toml` lacks, keys no code uses, unknown command ids, placeholders that differ from English and, for - complete languages (Spanish), anything untranslated. + complete languages (Spanish), anything untranslated. The French, German and Brazilian Portuguese + drafts translate everything today but are not held to it: a string added later shows English + there until someone translates it. - **Not yet localized:** messages the engine writes (errors, a few toasts, Dev Mode property values - such as "inside"), number formatting (decimal points stay `.`), and plural rules beyond one/other - (enough for English and Spanish). + such as "inside"), number formatting (decimal points stay `.`), and plural forms beyond one/other + (French and Brazilian Portuguese take the singular for 0 as well; CLDR's "many" for millions + reads as the plural). - **Script support in documents:** Unicode bidi with Arabic shaping and mirrored brackets in text layers; right-to-left list markers and indents; right-to-left names in the layers panel, tabs and canvas labels (visual order, joined Arabic); inline IME composition with the candidate window at the caret; system-font fallback for scripts the UI fonts lack. Devanagari shapes through harfrust. No vertical text (Figma has none either). -- **Script support in the UI:** menus widen to their longest label; no mirrored (right-to-left) - layout of panels. +- **Script support in the UI:** menus widen to their longest label; dropdowns, the two-column + labels of the right panel and the home screen's cards keep a long translation on one line with an + ellipsis and show it in full on hover (checked in German, the longest); no mirrored + (right-to-left) layout of panels. ## Languages | Language | Code | UI strings translated | Dialogs / tooltips / help | Script support | Native review | Status | Hours to full | |---|---|---|---|---|---|---|---| -| English | en | 1,810 / 1,810 (100%, source) | yes | Latin | yes (source) | full | 0 | +| English | en | 1,899 / 1,899 (100%, source) | yes | Latin | yes (source) | full | 0 | | Simplified Chinese (Mandarin) | zh-Hans | 0 (0%) | no | CJK text, IME and font fallback work in documents; UI font needs CJK coverage | no | none | 4–7 | -| Spanish | es | 1,810 / 1,810 (100%, draft) | yes | Latin | no | draft | 1–2 (es-419 differences, after native review) | +| Spanish | es | 1,899 / 1,899 (100%, draft) | yes | Latin | no | draft | 1–2 (es-419 differences, 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 | 0 (0%) | no | Latin | no | none | 3–5 | -| Portuguese | pt (pt-BR) | 0 (0%) | no | Latin | no | none | 3–5 | +| French | fr | 1,899 / 1,899 (100%, draft) | yes | Latin | no | draft | 1–2 (after native review) | +| Portuguese | pt-BR | 1,899 / 1,899 (100%, draft) | yes | Latin | no | draft | 1–2 (after native review) | | Indonesian | id | 0 (0%) | no | Latin | no | none | 3–5 | | Japanese | ja | 0 (0%) | no | CJK text and IME work in documents; UI font needs CJK coverage | no | none | 4–7 | -| German | de | 0 (0%) | no | Latin; long words need wider panels | no | none | 3–5 | +| German | de | 1,899 / 1,899 (100%, draft) | yes | Latin; long words elide in narrow fields | no | draft | 1–2 (after native review) | | Korean | ko | 0 (0%) | no | Hangul text and IME work in documents; UI font needs coverage | no | none | 3–5 | | Vietnamese | vi | 0 (0%) | no | Latin with stacked diacritics | no | none | 3–5 | @@ -68,14 +75,15 @@ The layer is done. Per-language hours above are agent hours for a catalog of ~1, (a machine draft, then a pass over the panels for overflow), plus each language's plural rule where it isn't one/other; every language also needs a native speaker's review (human). Left before full parity besides the languages: localizing engine messages and number formatting (4–6 h); -right-to-left mirroring of the panels is in Arabic's hours. Total: **45–75 h**. +right-to-left mirroring of the panels is in Arabic's hours. Total: **40–65 h**. -Priority: Japanese, Korean, Portuguese (Brazil), French and German next (with Spanish, Figma's own -languages, so their users expect them), and a native review of the Spanish draft. +Priority: Japanese and Korean next (the last of Figma's own languages, so their users expect +them), and native reviews of the Spanish, French, German and Brazilian Portuguese drafts. ## Revision history | Date | Change | Summary | |---|---|---| +| 2026-10-12 | minor | French, German and Brazilian Portuguese draft catalogs (gap 5): `fr.toml`, `de.toml` and `pt-BR.toml` translate every UI string (1,351 keys, 36 with plural forms), command label (519) and menu wording (29), machine-drafted and marked as drafts awaiting native review; they fall back to English per key, so new strings need only English and Spanish. French and Brazilian Portuguese count 0 as singular (`plural_one`); System picks the first OS language with a catalog (Windows' and macOS's preferred-language lists, `LANGUAGE` then the locale on Linux and BSD; pt-PT and pt read pt-BR); Preferences ▸ Language lists Français, Deutsch and Português (Brasil). Dropdowns, two-column labels and the home cards keep long translations on one line with an ellipsis and show them in full on hover. Localization 20% → 30%, 45–75 h → 40–65 h | | 2026-10-11 | major | Localization layer landed (gap 5): catalogs per language baked in at build time, English text as keys and fallback, `{named}` placeholders and one/other plurals, command labels by command id, Preferences ▸ Language (System follows the OS or the browser) applied live, `pref.language`, and a catalog check; English catalog (1,280 UI keys) and a complete Spanish draft (1,810 entries with command labels) waiting for native review; localization 10% → 20%, 60–100 h → 45–75 h | | 2026-10-10 | major | Created: English only, string counts measured from source, Figma's eight UI languages from its help center | diff --git a/docs/mcp.md b/docs/mcp.md index da9506a..8d55b72 100644 --- a/docs/mcp.md +++ b/docs/mcp.md @@ -271,7 +271,7 @@ on; `key` resolves keys the way the canvas does. Commands behind keys: nested layers), Escape or a click drops it. - `pref.reduceMotion {on?}`: reduced motion (the interface's own animations off; the system's accessibility setting turns it on too). Prototype transitions still play. -- `pref.language {language: system|en|es|…}`: the app's interface language, applied live ("system": +- `pref.language {language: system|en|es|fr|de|pt-BR|…}`: the app's interface language, applied live ("system": the OS or browser language; a language without a catalog shows English). Command ids, labels and every result stay English. diff --git a/docs/roadmap.md b/docs/roadmap.md index 1c56e7b..82171a4 100644 --- a/docs/roadmap.md +++ b/docs/roadmap.md @@ -1,6 +1,6 @@ # FigCraft roadmap: milestones and what's next -> **Last reviewed:** 2026-10-10 · **Last updated:** 2026-10-11 · **Change:** minor (`.fig` import, best effort; 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 ~79%) · **Target:** Figma Design (desktop app 126.10.7) +> **Last reviewed:** 2026-10-10 · **Last updated:** 2026-10-12 · **Change:** minor (French, German and Brazilian Portuguese draft catalogs; `.fig` import, best effort; 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 ~79%) · **Target:** Figma Design (desktop app 126.10.7) Forward-looking plan. Where FigCraft stands today: [`ROADMAP.md`](../ROADMAP.md) and [`target-app-parity.md`](target-app-parity.md); the full ranked list: [`gaps.md`](gaps.md). Hours @@ -15,8 +15,8 @@ are one Opus 5.5 agent; most milestones split across 4–6 agents on disjoint cr exports, turn estimated percentages into measured ones: 15–30 h. 3. **Tool-by-tool interaction pass** against the running Figma ([`ui-parity.md`](ui-parity.md)): 40–60 h, parallel by tool. -4. **Languages** on the landed localization layer, Figma's own first (ja, ko, pt-BR, fr, de; es is - a draft awaiting native review): 3–7 h per language plus native review. +4. **Languages** on the landed localization layer, Figma's own first (ja, ko; es, fr, de and pt-BR + are drafts awaiting native review): 3–7 h per language plus native review. 5. **Multiplayer M9**: accounts and teams on top of the live sessions and the standalone server (the WebSocket transport, hosting from the app, invite links that open the app, document sync, live cursors, selections, text carets, avatars and follow, per-user undo, reconnect with offline edits, collision-free ids for styles, variables, collections and comments, joining from the browser, and `figcraft-server` with persistence, publishing from the app and share links to edit or view landed), per [`collab-protocol.md`](collab-protocol.md) and [`server.md`](server.md): 45–90 h. ## Alpha gate @@ -72,6 +72,7 @@ blockers. | Date | Change | Summary | |---|---|---| +| 2026-10-12 | minor | French, German and Brazilian Portuguese draft catalogs (gap 5): every UI string, command label and menu wording (1,899 entries) machine-drafted in each and marked as drafts awaiting native review, falling back to English per key (new strings need only English and Spanish); 0 counts as singular in French and Brazilian Portuguese; System picks the first OS language with a catalog (pt-PT and pt read pt-BR); long translations elide with a tooltip in dropdowns, two-column labels and the home cards. Current focus 4 now lists Japanese and Korean | | 2026-10-11 | minor | `.fig` import, best effort: current focus 1 and the alpha gate's `.fig` row move to the import's tail (30–60 h → 8–15 h); M6 ~55% → ~65%, 37–75 h → 15–30 h | | 2026-10-11 | minor | Display P3 honest minimum (gap 18): the colour picker of a Display P3 file warns when a colour is outside sRGB (Outside sRGB, with what the canvas and exports do), and View ▸ Soft-proof sRGB (`view.proofSrgb`) stripes the canvas pixels sRGB can't show. Why the canvas still shows sRGB: wgpu 30 can present Display P3 or extended-range sRGB surfaces (Metal, DX12, Vulkan, WebGPU canvases), but eframe/egui-wgpu 0.36 configure an 8-bit sRGB surface with no option for the format or colour space, and egui's renderer writes sRGB-encoded UI colours; showing P3 needs those two upstream (or a patched egui-wgpu). Hardware 13–27 h → 12–26 h; gap 18 6–12 h → 5–11 h; percentages, feature breadth (~79%) and ready for real work (~47%) unchanged at this rounding; full parity ~363–697 h → ~362–696 h | | 2026-10-11 | minor | Several windows (gap 18): File ▸ New window, a tab's Open in new window or a tab dragged off the tab strip opens files in another window with its own tabs, panels and canvas, sharing the files, preferences, libraries and clipboard; each window draws only when it needs to (idle: ~0% CPU), closing one closes its files after asking about unsaved changes (the main window too, which takes over another window instead of quitting; the last window quits), and the control channel and MCP open, list, focus and capture windows (`window.new`, `window.list`, `window.focus`, `window` on any request); the screen-reader tree covers the main window only (eframe 0.36), so with a screen reader running files stay tabs; one window in the browser. Hardware 55% → 60%, 13–27 h → 10–21 h; gap 18 6–12 h → 4–8 h (P3 on screen left); feature breadth (~79%) and ready for real work (~47%) unchanged at this rounding; full parity ~363–697 h → ~360–691 h | diff --git a/docs/target-app-parity.md b/docs/target-app-parity.md index f2f018d..f3fa5bc 100644 --- a/docs/target-app-parity.md +++ b/docs/target-app-parity.md @@ -1,6 +1,6 @@ # FigCraft parity with Figma -> **Last reviewed:** 2026-10-10 · **Last updated:** 2026-10-12 · **Change:** minor (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; 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%; last major: full re-measure against Figma desktop 126.10.7) · **Target:** Figma Design (desktop app 126.10.7, macOS) +> **Last reviewed:** 2026-10-10 · **Last updated:** 2026-10-12 · **Change:** minor (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; 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%; last major: full re-measure against Figma desktop 126.10.7) · **Target:** Figma Design (desktop app 126.10.7, macOS) The authoritative assessment of how close FigCraft is to Figma Design. [`ROADMAP.md`](../ROADMAP.md) summarizes it; [`gaps.md`](gaps.md) is the ranked work list; the measured menu checklist is @@ -20,8 +20,8 @@ summarizes it; [`gaps.md`](gaps.md) is the ranked work list; the measured menu c | Ready for real work | **~52%** | estimated (dimension table below: written weights × written per-dimension scores) | | Essentials user | **~57%** | estimated ([below](#essentials-user): core features 77.8% × discounts 0.92 × 0.92 × 0.88) | | Mainstream practitioner | **~49%** | estimated ([below](#mainstream-practitioner): weekly areas 72.6% × discounts 0.9 × 0.9 × 0.85) | -| Remaining to beta | **~170–305 h** one Opus 5.5 agent (~35–70 h wall-clock with 5 parallel agents) | estimated | -| Remaining to full parity | **~286–558 h** one agent (~86–150 h wall-clock with 5 parallel agents) | estimated | +| Remaining to beta | **~162–292 h** one Opus 5.5 agent (~33–67 h wall-clock with 5 parallel agents) | estimated | +| Remaining to full parity | **~281–548 h** one agent (~85–148 h wall-clock with 5 parallel agents) | estimated | | Stage | **alpha**: the alpha gate passes ([roadmap](roadmap.md#alpha-gate)); multiplayer and checking the best-effort `.fig` import on real files are beta gaps (see [ROADMAP](../ROADMAP.md#stage)) | | The previous figures (ROADMAP of 2026-10-10, "feature depth ~79%", "full parity 115–195 h") were @@ -35,7 +35,7 @@ tool; presence was being graded as behaviour in places. | Audience | Ready % | Opus 5.5 agent wall-clock hours to ~95% | Work that dominates | |---|---|---|---| -| Full target (ready for real work) | ~52% | ~291–560 h | multiplayer (42–84), localization (45–75), plugins (15–40), the interaction pass (40–60), GPU canvas (30–60), AI (30–60), the `.fig` import's tail (5–10) | +| Full target (ready for real work) | ~52% | ~286–550 h | multiplayer (42–84), localization (40–65), plugins (15–40), the interaction pass (40–60), GPU canvas (30–60), AI (30–60), the `.fig` import's tail (5–10) | | Mainstream practitioner | ~49% | ~130–244 h | core editor depth incl. the `.fig` import's tail (49–98), the interaction pass (40–60), real-file corpus and platform QA (25–50), `.fig` export for handing work back (15–30) | | Essentials user | ~57% | ~60–110 h | the `.fig` import's tail so the files people send open well (5–10), core tool polish (25–45), interaction pass on the core tools (15–25), stability QA (10–20), onboarding and starter templates (5–10) | @@ -129,11 +129,11 @@ Breadth: does it exist. Ready: depth, correctness and fidelity for real projects | Stability | 8 | 55% | 20–40 | Never-crash lints, command guard with rollback, recovery copies, 963 tests incl. junk-parameter sweeps and a seeded retained-render walk; but two days old, one release (v0.2.0), no field reports, QA mostly on macOS | [gaps](gaps.md) | | Performance | 6 | 60% | 30–60 | `cargo xtask bench`: 50k-layer page ~8 ms zoomed out, 10k-layer edits ~0.2 ms, 2,000-instance design system edits 4–64 ms; CPU (tiny-skia) canvas where Figma renders on the GPU; nothing timed against Figma on the same file | [hardware-parity](hardware-parity.md) | | Hardware | 3 | 60% | 10–21 | Trackpad pinch and HiDPI yes; pen pressure on Windows and from browser styluses (none from macOS/Linux tablets); several windows (screen-reader tree in the main one only); no GPU canvas, no P3 on screen | [hardware-parity](hardware-parity.md) | -| Localization | 3 | 20% | 45–75 | The layer, an English catalog and a complete Spanish draft (unreviewed); Figma ships 7 more UI languages; engine messages stay English | [localization-parity](localization-parity.md) | +| Localization | 3 | 30% | 40–65 | The layer, an English catalog and complete machine drafts of Spanish, French, German and Brazilian Portuguese (none reviewed by a native speaker); Figma's Japanese, Korean and Latin American Spanish are missing; engine messages stay English | [localization-parity](localization-parity.md) | | Platforms | 3 | 75% | 10–20 | macOS, Windows (x64/x86/arm64), Linux, FreeBSD, web all packaged (v0.2.0); Figma also has iOS/Android apps; non-macOS QA thin | [hardware-parity](hardware-parity.md) | | Ecosystem/plugins | 3 | 28% | 15–40 | Own WASM plugins with a Rust SDK and two examples (#101), plugin panels and settings (ABI v2); no Figma plugin compatibility, no widgets, no distribution or community files; the CLI, control channel and MCP server are ahead of Figma for agents | [gaps](gaps.md) | | AI features | 2 | 0% | 30–60 | None | [gaps](gaps.md) | -| **Ready for real work** | 100 | **~52%** | **~286–558** | | | +| **Ready for real work** | 100 | **~52%** | **~281–548** | | | Dimension hours add up to the full-parity total without double counting: the feature-area rows for import/export (14), multiplayer and team libraries (17, 19), plugins (18) and AI (21) are @@ -612,6 +612,7 @@ Carried over from the ROADMAP's "Shipped so far" (2026-10-10). The test count th | Date | Change | Summary | |---|---|---| +| 2026-10-12 | minor | French, German and Brazilian Portuguese draft catalogs (gap 5): every UI string, command label and menu wording (1,899 entries) machine-drafted in each and marked as drafts awaiting native review, falling back to English per key (new strings need only English and Spanish); 0 counts as singular in French and Brazilian Portuguese; System picks the first OS language with a catalog (pt-PT and pt read pt-BR); long translations elide with a tooltip in dropdowns, two-column labels and the home cards. Localization 20% → 30%, 45–75 h → 40–65 h; ready for real work unchanged (~52%; 52.6 → 52.9); full parity ~289–564 h → ~284–554 h; beta ~170–305 h → ~162–292 h (Figma's languages left on the way to beta: Japanese and Korean, 7–12 h) | | 2026-10-12 | minor | Cursor chat and spotlight in live sessions: `/` opens a chat bubble at your pointer that everyone sees as you type and that fades a few seconds after the last change; a spotlight (your avatar's menu, `collab.spotlight`) makes everyone follow your view and page, latecomers included, until they move their own. Both are ephemeral presence the host validates and rate-limits, passed only to clients that read them. Multiplayer & sharing breadth 15% → 17%, ready unchanged (5%), 45–90 h → 42–84 h; the Collaboration dimension's hours 55–110 → 52–104 h (the dimension hours still add up to the total); feature breadth (~84%) and ready for real work (~51%) unchanged at this rounding; full parity ~301–587 h → ~298–581 h | | 2026-10-12 | minor | Layers and Assets panels behaviour suite written from the public documentation (6 engine tests with about 50 table rows and 5 panel tests driven through the UI; about 30 rows that the code before the fixes contradicts) and its fixes: several layers dropped together in the layers panel land together (layers from apart split around the drop point); Collapse layers keeps the selection's rows open (it closed everything); the eye and padlock stay under the pointer (they vanished as it reached them, so clicks could miss) and dragging across them sets several layers in one undo step; several layers selected open a Rename layers dialog (match as text or a regular expression, Rename to, current name and number buttons, a start value, preview) instead of renaming the top one; `object.batchRename` counts `$n` up and `$N` down (they were swapped), pads with `$nnn`, takes `start`, regular expressions with `$1`…`$9`, `` $` `` / `$'` and codes in the replacement; pages are dragged to reorder, a blank page named with a hyphen is a divider (never opened, holds no layers), duplicates are named "Copy of …", the last page that isn't a divider can't be deleted; the Assets panel files components by page, frame and slash names in folders that fold away (`component.list` gives each `folder`); a leading `.` or `_` now keeps a component out of the library even after it was published, and removing it brings the component back. Pinned where the documentation is silent: Alt-click on an arrow, numbering in stacking order, hidden layers and locked frames taking drops, locking deselects. Layers panel 98%/82% → 99%/85%; percentages and full parity hours unchanged at this rounding | | 2026-10-12 | minor | Vector multi-edit and the vector edit tail, with a behaviour suite written from the public documentation (5 tests, about 30 table rows and steps, and a junk-parameter sweep of every vector command in multi-edit mode): several vector layers are edited at once (Enter, double-click or `vector.edit.begin {ids}`; a press on another layer's point, handle or segment makes it the active layer; Shift-click, marquee and lasso select across layers; dragging, the arrows, Delete, delete and heal, mirroring, smoothing, corner radius and point caps and joins reach every layer's selected points in one undo step; the pen, bend, paint bucket, cut and eraser work in the active layer); several Bezier handles are selected with Shift-click and dragged together (`vector.edit.moveHandles`); a sharp point next to a curved segment rounds (the curve is cut where the arc meets it and keeps its shape); a point can have its own stroke cap and join (`vector.edit.strokeCap`, `vector.edit.strokeJoin`, the Point section of the Design panel; canvas, PNG, SVG and PDF, outline stroke); the Pen outside edit mode connects to one of its own points and ends the path, and continues a selected open path from an end point. Left: corner smoothing beyond rectangles, the transform box around points of several layers, per-point caps and joins on dashed, variable-width and brush strokes. Shapes & vector 98%/72% → 99%/73%, 2–4 h → 1–3 h; Figma Draw extras 80%/55% → 88%/60%, 2–5 h → 1–3 h (gap 9: pen pressure on macOS and Linux tablets left). Totals recomputed by the doc's method, which rows since the last recompute had left stale: the area table's weighted breadth is 83.7% (~83%; core 94.1%, ~94%) and ready 63.1% (~63%; core 72.1%, ~72%), hours 133–284 (core 38–83); Features (depth) 61% → 63%, 46–94 h → 34–76 h; ready for real work 52.6% (~52%); mainstream weekly areas 71.0% → 72.1% (× 0.9 × 0.9 × 0.85 = 49.7%, ~49%, rounded down); essentials unchanged (~57%); full parity ~306–595 h → ~294–572 h (on top of the rows merged since: ~301–587 h → ~289–564 h; area-table totals recomputed on the merged table and rounded down: breadth ~84%, ready ~63%, core ~94%/~72%, mainstream weekly areas 72.4%, ~49%) | diff --git a/docs/translating.md b/docs/translating.md index 460281d..3a5b352 100644 --- a/docs/translating.md +++ b/docs/translating.md @@ -3,8 +3,13 @@ FigCraft's interface strings live in one TOML catalog per language in [`crates/ui-egui/locales/`](../crates/ui-egui/locales). The build bakes every catalog into the binary (desktop and web); nothing is read at run time. Preferences ▸ Language picks the language -(System follows the OS, or the browser on the web) and the interface switches at once. `pref.language -{language}` does the same from the CLI, MCP and the control channel. +and the interface switches at once. System takes the first of the OS's preferred languages that has +a catalog (the browser's language on the web): a regional tag reads its language's catalog +(`fr-CA` → `fr`), and a language with only a regional catalog reads that one (`pt-PT` → `pt-BR`). +`pref.language {language}` does the same from the CLI, MCP and the control channel. + +The catalogs: English (`en`, the source), and Spanish (`es`), French (`fr`), German (`de`) and +Brazilian Portuguese (`pt-BR`), machine-drafted and waiting for native speakers' review. ## The catalogs @@ -22,6 +27,10 @@ binary (desktop and web); nothing is read at run time. Preferences ▸ Language A key a catalog lacks shows its English text, so a partial catalog is safe to ship. +Typography follows each language: French puts a no-break space (`\u00A0` in the TOML) before +`:` `;` `?` `!`, inside « » and before `%`; German uses „ “ and formal address (Sie); Brazilian +Portuguese uses Brazilian words (arquivo, salvar, tela, você), not European ones. + ## Adding a language 1. Copy `crates/ui-egui/locales/es.toml` to `.toml` (a BCP 47 code: `fr`, `pt-BR`, `ja`) and @@ -29,14 +38,22 @@ A key a catalog lacks shows its English text, so a partial catalog is safe to sh 2. Translate every value; keep the keys. Keep `{placeholders}` exactly, "…" where English has it, brand names and keyboard glyphs. English labels of commands: `figcraft-cli commands`. 3. Plurals: give `one` only if the language has a singular form (Japanese, Korean and Chinese give - only `other`). `trn` picks `one` for a count of 1; a language with other rules (French: 0 and 1) - needs its rule in `plural_one` in [`crates/ui-egui/src/i18n.rs`](../crates/ui-egui/src/i18n.rs). + only `other`). `trn` picks `one` for a count of 1, and also for 0 in French and Brazilian + Portuguese (keep `{n}` in their `one` forms); a language with other rules needs its rule in + `plural_one` in [`crates/ui-egui/src/i18n.rs`](../crates/ui-egui/src/i18n.rs). 4. To require full coverage, add the code to `COMPLETE` in - [`crates/ui-egui/src/i18n_tests.rs`](../crates/ui-egui/src/i18n_tests.rs). + [`crates/ui-egui/src/i18n_tests.rs`](../crates/ui-egui/src/i18n_tests.rs). Every later PR that + adds a string then has to translate it into each complete language, so only Spanish is there: + French, German and Brazilian Portuguese are complete today but registered as drafts, and a + string added later shows English in them until it is translated. To list what a draft lacks, + add its code to `COMPLETE` locally and run the check. 5. Run the check and look at the panels in the app (longer words must fit the right panel): cargo test -p figcraft-ui-egui i18n + Dropdowns, the right panel's two-column labels and the home cards cut a label that doesn't fit + with "…" and show it in full on hover; elsewhere, look for clipped or wrapped text. + The check fails on keys the code uses that `en.toml` lacks (it prints the lines to paste), keys no code uses, unknown command ids, placeholders that don't match English, and, for complete languages, anything untranslated. Machine-drafted catalogs stay marked as drafts until a native speaker has @@ -48,7 +65,7 @@ Wrap every string a user sees or a screen reader hears: `tr` for plain text, `tr placeholders, `trn` for counts, `tr_noop` for literals in `const` tables that are looked up later with `tr(label)`. The key must be a string literal as the first argument (the check reads the source). Don't wrap ids, command ids, JSON, log messages, file extensions or document content. Then -add the key to `en.toml` and to each complete language. +add the key to `en.toml` and to each complete language (Spanish); the drafts may follow later. Labels from the engine and document crates (tool names, blend modes, easing curves…) are looked up at display with `tr(x.label())`; they are listed in `dynamic_labels` in `i18n_tests.rs`.