diff --git a/README.md b/README.md index f6e3d769..63c8fb3d 100644 --- a/README.md +++ b/README.md @@ -244,7 +244,7 @@ The desktop app also offers a loopback-only control channel (`figcraft --control - **Its own renderer:** tiny-skia on every core for the canvas and exports, with layer blending, effects and masks; booleans from linesweeper, geometry from kurbo, text from skrifa and HarfRust. - **Runs in the browser:** the whole engine and UI compile to WebAssembly. - **Accessible:** screen readers get names, roles, values and states for the tools, layer rows, fields, dropdowns, tabs and menus (AccessKit on desktop), F6 moves the keyboard between the toolbar, layers, canvas and properties (Tab within them, Escape back to the canvas), the system's reduce-motion setting is honoured, and panel text meets WCAG AA contrast in both themes. -- **Languages:** English, Russian and Turkish (reviewed by native speakers), and Spanish, French, German, Brazilian Portuguese, Japanese, Korean, Simplified Chinese, Czech, Indonesian, Georgian and Vietnamese drafts, picked in Preferences or taken from the system or browser and switched live; adding a language is one catalog file ([`docs/translating.md`](docs/translating.md)). +- **Languages:** English, Russian and Turkish (reviewed by native speakers), and Spanish, French, German, Brazilian Portuguese, Japanese, Korean, Simplified Chinese, Czech, Indonesian, Georgian, Vietnamese and Bosnian drafts, picked in Preferences or taken from the system or browser and switched live; adding a language is one catalog file ([`docs/translating.md`](docs/translating.md)). - **Plugins:** sandboxed WebAssembly plugins (a metered, pure-Rust interpreter with a memory cap and no file or network access, in the browser too) that act through the same commands, each run one undo step, within the permissions their manifest asks for. A Rust SDK and four example plugins are in [`plugins/`](plugins); see [`docs/plugins.md`](docs/plugins.md). - **Live sessions (preview):** share the open file from the app (Share ▸ Start sharing: online through a server, or on your local network), give the others the short join code it shows (or the invite link), and edit it together: everyone's changes sync live, with cursors, selections, avatars and follow, and undo takes back only your own changes. Others join from the desktop app (invite links open it) or from the browser build. See [`docs/collab-protocol.md`](docs/collab-protocol.md). - **A server of your own (preview):** `figcraft-server` keeps a team's files, publishes them from the app (File ▸ Publish to server…, or Share ▸ Online with your server in Preferences) and hands out share links and join codes that let people edit or only view; files survive restarts and apps reconnect where they were. No accounts yet: links are the access. Releases ship it for Linux, and the desktop app joins over `wss://`; [hosting it on a rented Linux server](docs/server.md#deploy-on-a-linux-server) takes a systemd unit and Caddy or nginx (or Docker). See [`docs/server.md`](docs/server.md). diff --git a/ROADMAP.md b/ROADMAP.md index 935f0339..6059b437 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -2,7 +2,7 @@ **Stage: alpha** · next: beta, ~26 points and ~162–292 h away (one Opus 5.5 agent; ~33–67 h wall-clock with 5 agents) -> **Last reviewed:** 2026-10-10 · **Last updated:** 2026-10-30 · **Change:** minor (damaged font tracking table offsets are checked instead of wrapping on 32-bit targets, and font indexing makes its existing offset bounds explicit (#1125); text style dedupe is O(spans) via a last-two cache and fingerprint buckets (#1102); pasted layers whose image the clipboard lacks are named and show a placeholder that reads as missing (#1646); paint-style colours on layers pasted from another design app keep their style instead of turning black (#1638); progress docs cleaned of what merges left twice: rows merged into one, repeated status items removed, and `cargo xtask docs` (in `ci`) fails on a repeated table row or status item; a name typed for a variable or collection finds the one with that exact id before one named like it, and stored mode ids, font family variables and the panels' labels read exact ids (#1613); plugin widgets have hover styles: a layer's `hover` fill, stroke, opacity or text colour shows while the pointer is over it (gap 6); `.fig` elbowed and curved connectors without a saved path are routed like board connectors instead of drawn straight (gap 1); every file a command reads whole by path is a regular file within a cap that fits it: documents 16 GiB, placed images 256 MiB, CLI scripts 1 GiB; `figcraft-cli connect publish` publishes a code repository's code connect mappings to a design file (gap 16); while a drag only moves a large selection, its outlines, box, slots, spacing and Design panel values are worked out once and shifted, not rebuilt on every move (#1571); Shift+Cmd/Ctrl+Enter on a selected board shape adds the next shape already joined to it, and goes on typing (#1597); an imported or pasted file finds an installed family under the other names its fonts give it, and with other case and spacing, instead of reporting it missing (#1292); a development example generates figcraft-cli's shell completions and man pages from its clap definitions (part of #1396); `.fig` ZIP image reads share a total byte budget and count skipped images in the import warnings (#1076); German terminology corrections (M10): gradient stops, OpenType stylistic sets and the Home-screen preference; a component set's property rows fit the 240 px right panel: variant values wrap two to a line there and every + and − stays in view; the server key is checked by comparing SHA-256 hashes of the presented and the kept key, as the deployment guide says (#1130); opening a file contacts no team library server it names until you check it (#1097); a hostile server can no longer grow a client's memory with made-up people, and a session remembers a bounded number of deleted layer ids (#1121); `doc.list` gives AI agents and plugins the open files' names, not their paths (#1117); with a large selection, frames where nothing changed reuse the selection's outlines, box and slots and the Design panel's instance and position values instead of working them out again (#1571); team libraries and plugins larger than the 16 MiB download burst can be downloaded again, more slowly (#1089); a batch keeps one undo snapshot, not one per step (#1099); files nested 256 levels deep import on the browser's 1 MB stack (#1101); SVG and PDF exports count pattern sources and the renders they embed from the layer's depth, so one cap bounds a whole export (#1082); an explicit variables file path (`variable.import`, the `variables` of `file.open` and `file.import`) is refused past 256 MiB or when it isn't a regular file, as the sibling `variables.json` already was (part of #1114); joining and leaving a file nobody is editing reads and writes nothing on the server: it stays loaded a minute after everyone leaves (#1074); opening a `.figcraft` file unpacks at most 6 GiB in all (2 GiB in the browser), every area together (#1079); hovering the canvas hit-tests once per pointer move, not on every frame, and moving an auto layout frame no longer lays out its contents again on every move (#1571); `.fig` instance expansion no longer walks variable nodes for every instance or copies every outer override row into each nested instance (#1077); `comment.people` lists names that were only @mentioned, and `comment.next` and `comment.prompt` carry the mentions too (#1415); grid auto-placement looks for free cells a 64-bit word at a time and skips what blocks it, with the same placements (#1083); with the pen out, Enter or a double-click ends the path and edits the vector with the Move tool instead of drawing on (#1430); a recovery copy made while a version is previewed holds the file, not the version shown; a FigJam `.jam` file opens as a board (#1342); the Actions palette offers only commands that run from it, and no second row reading like a menu item: Place image opens the file dialog (#1574); share links can comment: a third access level beside edit and view, whose holder sees the file live and adds, replies to, reacts to and resolves comments but can't change the design; Preferences ▸ Scroll wheel zoom: a mouse wheel zooms the canvas about the pointer and Cmd/Ctrl+wheel scrolls (#1390); `comment.list {mentions}` lists only the threads that @mention a name (#1415); in the browser an internal error that stops the page keeps its unsaved files, which open again on reload (#1123); boolean operations refuse input past their caps, and a boolean group past them draws without its result (#1104); figcraft-cli parses its arguments with clap, following RFC-0012 (#1396); the selection and hover outlines of rounded rectangles and frames follow their corners (#1506); component properties keep the order they were made in when one is renamed, and Make slot asks for the slot's name first (#1536, #1537); the browser build publishes files to a server, so Share ▸ Online and Publish to server work there (#917); the browser build uses the fonts installed on the computer once asked, each read when text uses it (#1051); SVG import reads `color()` and `color-mix()` colours, with a note and a grey for those it can't (#1550); the portable Windows zip keeps its settings, recovery copies and plugins in `config\` beside the executable, starting with an installed copy's preferences; the window starts on other graphics when its first ones fail before the first frame: Direct3D 12 compiles with FXC and no device compiles wgpu's indirect-validation shaders, then Vulkan, OpenGL and lower requirements on the power-saving GPU (#965, #1438); Thai, Lao, Khmer and Burmese lines break between words (#1219); an AI agent attached over MCP shows where it works (#1416); a manual overlay's position can be dragged on the canvas (#405); one name for live sessions and comments: Preferences ▸ Your name, in the Join dialog too, kept in the browser, and a rename shows at once in the sessions you are in (#1380); requests that change a server's files have a budget per address, the server key's too, and join codes are found by their hash (#1075); the Join dialog shows a join from the click until its file is ready, with Cancel, and a failed join with Try again (#1381); SVG import draws each pattern tile once per scale, within the layer budget (#1080); Vietnamese letters typed with combining marks (decomposed) take one font that has every mark, instead of missing-glyph boxes beside the letter (#1478); comment.list reports each message's @mentions (#1415); mask groups draw only over the area they can paint, and nested isolated layers share one memory budget (#1061); components can't contain their own instances, directly or through other components; `edit.duplicate` returns an id map with `map: true` (#995); the batches kept for reconnecting apps are bounded in bytes by default, and `figcraft-server` takes `max_log_mb` (#1069); MCP and control calls name their document (#998); sibling placement in live sessions searches instead of counting (#1065); an AI agent attached over MCP comments under its own name, with an Agent label (#1414); the instance-swap menus have a search field (#1338); a refused batch's fixes take time linear in the batch (#1063); the connector tool shows the connector it will make while dragging, ends snapping to attach points (#1387); large images on the canvas draw from a smaller copy, so two 16k images no longer lag (#1483); a file's JPEG thumbnail can't crash the home screen (#1491's progressive JPEG check, now shared); `.fig` import: library text styles linked by asset key, and override rows restating a nested level (#1234); `.fig` import keeps the file's saved line breaks while the text and its box are unedited (#1236); Download a missing free font from the Missing fonts window (`font.download`, #754); the web build's wasm back under its 24 MiB gate (#1472); shadows of images with transparent pixels follow their alpha (#1289); Crop image: Object ▸ Crop image, the right-click menu and the image fill row enter crop mode (`image.crop`, #1464); offline Penpot 2.x import/export (#1143); optional batch continue-on-error with per-step outcomes (#1386); the Design panel's sections on one grid (#858); FigJam outer shape outlines and sticky body fallback beside author text (#1341, #1397); images placed at their own size, 2x screenshots in points (#1360); the toolbar on one 32 pt grid, without its Resources button (#1210); M4: zero-length round-capped dashes draw dots; dash expansion uses the existing safety budget; extracted from #1143; Arabic draft catalog; scaled instances keep their scale when their main is rebuilt (#922); .fig embedded images are copied once per blob, not once per hash (#1059); page ruler guides survive save and reopen (#1476); colour picker LCH and OKLCH models; non-ASCII layer names transliterate in code export (#1235); branches in live sessions and branch history entries, gap 17; plugin widgets take text input and a property menu (plugin API 4); boards: templates and tables; boards: a shared timer and voting sessions; boards: the dot grid, connector ends dragged to re-attach, curved connectors; Installed weights of an embedded font family (#1246); `.sketch` import, best effort (Sketch 48 and newer); CJK line breaking: JIS X 4051's line-start and line-end sets completed with the halfwidth small kana, the halfwidth and spacing (semi-)voiced sound marks, the iteration marks 〱–〵 and the halfwidth parentheses, with behaviour cases for each; Adobe Fonts found on macOS (#298); egui 0.37 hidden-capture deadline contract; Dev Mode measurements kept on the canvas and a read-only layers panel; boards: a board area row and progress entry; community fixes in #507, #510, #529 and #530: auto-save, a text box by dragging, batch step references, removing someone from a live session, Russian and Turkish catalogs reviewed, Czech and Indonesian drafts, the Japanese draft completed, zoom previews, the web clipboard, Alt-drag snapping and Cmd+D repeat, recovery copies, crash and rollback fixes, colour emoji, `.fig` import fixes; earlier changes are in the revision history below) · **Target:** Figma Design (desktop app 126.10.7) +> **Last reviewed:** 2026-10-10 · **Last updated:** 2026-10-30 · **Change:** minor (damaged font tracking table offsets are checked instead of wrapping on 32-bit targets, and font indexing makes its existing offset bounds explicit (#1125); Bosnian (`bs`) draft catalog; text style dedupe is O(spans) via a last-two cache and fingerprint buckets (#1102); pasted layers whose image the clipboard lacks are named and show a placeholder that reads as missing (#1646); paint-style colours on layers pasted from another design app keep their style instead of turning black (#1638); progress docs cleaned of what merges left twice: rows merged into one, repeated status items removed, and `cargo xtask docs` (in `ci`) fails on a repeated table row or status item; a name typed for a variable or collection finds the one with that exact id before one named like it, and stored mode ids, font family variables and the panels' labels read exact ids (#1613); plugin widgets have hover styles: a layer's `hover` fill, stroke, opacity or text colour shows while the pointer is over it (gap 6); `.fig` elbowed and curved connectors without a saved path are routed like board connectors instead of drawn straight (gap 1); every file a command reads whole by path is a regular file within a cap that fits it: documents 16 GiB, placed images 256 MiB, CLI scripts 1 GiB; `figcraft-cli connect publish` publishes a code repository's code connect mappings to a design file (gap 16); while a drag only moves a large selection, its outlines, box, slots, spacing and Design panel values are worked out once and shifted, not rebuilt on every move (#1571); Shift+Cmd/Ctrl+Enter on a selected board shape adds the next shape already joined to it, and goes on typing (#1597); an imported or pasted file finds an installed family under the other names its fonts give it, and with other case and spacing, instead of reporting it missing (#1292); a development example generates figcraft-cli's shell completions and man pages from its clap definitions (part of #1396); `.fig` ZIP image reads share a total byte budget and count skipped images in the import warnings (#1076); German terminology corrections (M10): gradient stops, OpenType stylistic sets and the Home-screen preference; a component set's property rows fit the 240 px right panel: variant values wrap two to a line there and every + and − stays in view; the server key is checked by comparing SHA-256 hashes of the presented and the kept key, as the deployment guide says (#1130); opening a file contacts no team library server it names until you check it (#1097); a hostile server can no longer grow a client's memory with made-up people, and a session remembers a bounded number of deleted layer ids (#1121); `doc.list` gives AI agents and plugins the open files' names, not their paths (#1117); with a large selection, frames where nothing changed reuse the selection's outlines, box and slots and the Design panel's instance and position values instead of working them out again (#1571); team libraries and plugins larger than the 16 MiB download burst can be downloaded again, more slowly (#1089); a batch keeps one undo snapshot, not one per step (#1099); files nested 256 levels deep import on the browser's 1 MB stack (#1101); SVG and PDF exports count pattern sources and the renders they embed from the layer's depth, so one cap bounds a whole export (#1082); an explicit variables file path (`variable.import`, the `variables` of `file.open` and `file.import`) is refused past 256 MiB or when it isn't a regular file, as the sibling `variables.json` already was (part of #1114); joining and leaving a file nobody is editing reads and writes nothing on the server: it stays loaded a minute after everyone leaves (#1074); opening a `.figcraft` file unpacks at most 6 GiB in all (2 GiB in the browser), every area together (#1079); hovering the canvas hit-tests once per pointer move, not on every frame, and moving an auto layout frame no longer lays out its contents again on every move (#1571); `.fig` instance expansion no longer walks variable nodes for every instance or copies every outer override row into each nested instance (#1077); `comment.people` lists names that were only @mentioned, and `comment.next` and `comment.prompt` carry the mentions too (#1415); grid auto-placement looks for free cells a 64-bit word at a time and skips what blocks it, with the same placements (#1083); with the pen out, Enter or a double-click ends the path and edits the vector with the Move tool instead of drawing on (#1430); a recovery copy made while a version is previewed holds the file, not the version shown; a FigJam `.jam` file opens as a board (#1342); the Actions palette offers only commands that run from it, and no second row reading like a menu item: Place image opens the file dialog (#1574); share links can comment: a third access level beside edit and view, whose holder sees the file live and adds, replies to, reacts to and resolves comments but can't change the design; Preferences ▸ Scroll wheel zoom: a mouse wheel zooms the canvas about the pointer and Cmd/Ctrl+wheel scrolls (#1390); `comment.list {mentions}` lists only the threads that @mention a name (#1415); in the browser an internal error that stops the page keeps its unsaved files, which open again on reload (#1123); boolean operations refuse input past their caps, and a boolean group past them draws without its result (#1104); figcraft-cli parses its arguments with clap, following RFC-0012 (#1396); the selection and hover outlines of rounded rectangles and frames follow their corners (#1506); component properties keep the order they were made in when one is renamed, and Make slot asks for the slot's name first (#1536, #1537); the browser build publishes files to a server, so Share ▸ Online and Publish to server work there (#917); the browser build uses the fonts installed on the computer once asked, each read when text uses it (#1051); SVG import reads `color()` and `color-mix()` colours, with a note and a grey for those it can't (#1550); the portable Windows zip keeps its settings, recovery copies and plugins in `config\` beside the executable, starting with an installed copy's preferences; the window starts on other graphics when its first ones fail before the first frame: Direct3D 12 compiles with FXC and no device compiles wgpu's indirect-validation shaders, then Vulkan, OpenGL and lower requirements on the power-saving GPU (#965, #1438); Thai, Lao, Khmer and Burmese lines break between words (#1219); an AI agent attached over MCP shows where it works (#1416); a manual overlay's position can be dragged on the canvas (#405); one name for live sessions and comments: Preferences ▸ Your name, in the Join dialog too, kept in the browser, and a rename shows at once in the sessions you are in (#1380); requests that change a server's files have a budget per address, the server key's too, and join codes are found by their hash (#1075); the Join dialog shows a join from the click until its file is ready, with Cancel, and a failed join with Try again (#1381); SVG import draws each pattern tile once per scale, within the layer budget (#1080); Vietnamese letters typed with combining marks (decomposed) take one font that has every mark, instead of missing-glyph boxes beside the letter (#1478); comment.list reports each message's @mentions (#1415); mask groups draw only over the area they can paint, and nested isolated layers share one memory budget (#1061); components can't contain their own instances, directly or through other components; `edit.duplicate` returns an id map with `map: true` (#995); the batches kept for reconnecting apps are bounded in bytes by default, and `figcraft-server` takes `max_log_mb` (#1069); MCP and control calls name their document (#998); sibling placement in live sessions searches instead of counting (#1065); an AI agent attached over MCP comments under its own name, with an Agent label (#1414); the instance-swap menus have a search field (#1338); a refused batch's fixes take time linear in the batch (#1063); the connector tool shows the connector it will make while dragging, ends snapping to attach points (#1387); large images on the canvas draw from a smaller copy, so two 16k images no longer lag (#1483); a file's JPEG thumbnail can't crash the home screen (#1491's progressive JPEG check, now shared); `.fig` import: library text styles linked by asset key, and override rows restating a nested level (#1234); `.fig` import keeps the file's saved line breaks while the text and its box are unedited (#1236); Download a missing free font from the Missing fonts window (`font.download`, #754); the web build's wasm back under its 24 MiB gate (#1472); shadows of images with transparent pixels follow their alpha (#1289); Crop image: Object ▸ Crop image, the right-click menu and the image fill row enter crop mode (`image.crop`, #1464); offline Penpot 2.x import/export (#1143); optional batch continue-on-error with per-step outcomes (#1386); the Design panel's sections on one grid (#858); FigJam outer shape outlines and sticky body fallback beside author text (#1341, #1397); images placed at their own size, 2x screenshots in points (#1360); the toolbar on one 32 pt grid, without its Resources button (#1210); M4: zero-length round-capped dashes draw dots; dash expansion uses the existing safety budget; extracted from #1143; Arabic draft catalog; scaled instances keep their scale when their main is rebuilt (#922); .fig embedded images are copied once per blob, not once per hash (#1059); page ruler guides survive save and reopen (#1476); colour picker LCH and OKLCH models; non-ASCII layer names transliterate in code export (#1235); branches in live sessions and branch history entries, gap 17; plugin widgets take text input and a property menu (plugin API 4); boards: templates and tables; boards: a shared timer and voting sessions; boards: the dot grid, connector ends dragged to re-attach, curved connectors; Installed weights of an embedded font family (#1246); `.sketch` import, best effort (Sketch 48 and newer); CJK line breaking: JIS X 4051's line-start and line-end sets completed with the halfwidth small kana, the halfwidth and spacing (semi-)voiced sound marks, the iteration marks 〱–〵 and the halfwidth parentheses, with behaviour cases for each; Adobe Fonts found on macOS (#298); egui 0.37 hidden-capture deadline contract; Dev Mode measurements kept on the canvas and a read-only layers panel; boards: a board area row and progress entry; community fixes in #507, #510, #529 and #530: auto-save, a text box by dragging, batch step references, removing someone from a live session, Russian and Turkish catalogs reviewed, Czech and Indonesian drafts, the Japanese draft completed, zoom previews, the web clipboard, Alt-drag snapping and Cmd+D repeat, recovery copies, crash and rollback fixes, colour emoji, `.fig` import fixes; earlier changes are in the revision history below) · **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 @@ -112,7 +112,7 @@ native speakers' reviews of the nine language drafts need people. | Korean | ko | 95% | draft (needs native review) | | Vietnamese | vi | 100% | draft (needs native review) | -Percentages measured 2026-10-17 over 2,272 entries (strings added since a draft show English). Also shipped: Russian (`ru`, 99%, reviewed by VanTan), Swedish (`sv`, 99.6%, command labels since 2026-10-17; native review welcome), Turkish (`tr`, 99%) and Czech (`cs`, 99%, draft). Figma ships English, Japanese, Korean, French, German, Spanish and Portuguese +Percentages measured 2026-10-17 over 2,272 entries (strings added since a draft show English). Also shipped: Russian (`ru`, 99%, reviewed by VanTan), Swedish (`sv`, 99.6%, command labels since 2026-10-17; native review welcome), Turkish (`tr`, 99%), Czech (`cs`, 99%, draft) and Bosnian (`bs`, 100% on 2026-10-30, draft). Figma ships English, Japanese, Korean, French, German, Spanish and Portuguese (Brazil); FigCraft has the localization layer, English and Spanish (Spain and Latin America), French, German, Brazilian Portuguese, Japanese, Korean, Simplified Chinese, Indonesian, Vietnamese and Arabic drafts (Preferences ▸ Language; Traditional Chinese has no catalog; CJK UI @@ -358,6 +358,7 @@ Ranked; detail and milestones in [`docs/roadmap.md`](docs/roadmap.md). | Date | Change | Summary | |---|---|---| +| 2026-10-30 | minor | M10: Bosnian (`bs`, Bosanski) draft catalog: all 1,901 UI strings, 629 command labels and 31 menu wordings, machine-drafted in Latin script (ijekavian) and waiting for a native speaker's review. Bosnian's integer plural rule (one for 1, 21, 31… except 11; few for 2–4, 22–24… except 12–14; other otherwise) in `i18n::plural`. Numbers unchanged. Tests: `bosnian_tags_and_integer_plurals`. | | 2026-10-30 | minor | Text style dedupe is O(spans) (M8, #1102): `shape_text`'s scan over collected styles replaced by a last-two cache and fingerprint buckets resolved with the full equality — same result, O(spans) for the styles that usually differ, never worse than the scan; the font-db write lock untouched (face loading needs it). `layout_dedupe_tests`. Numbers unchanged | | 2026-10-30 | minor | M6, #1646: a layer pasted from another design app whose image the clipboard didn't carry came in flat grey, like a grey the design chose, and the paste said only that some kinds of content were left out. Now the placeholder an import stores for an image it doesn't have is light grey crossed by darker diagonal stripes (REST JSON, `.fig` and paste alike), the fill keeps the image's own name, the `.fig` and paste note is a fixed, translated one per image ("image fills whose image isn't in the file show a missing-image placeholder and keep its name"), `edit.pasteDesignLayers` returns `missingImages` (the names of the pasted layers concerned), the paste's message names them, and a paste with notes opens the import report like an import. Tests: `fig/missing_image_tests.rs`, `paste_missing_image_tests.rs`, `import_report_tests.rs`. | | 2026-10-30 | minor | M6, #1638: layers pasted from another design app lost the colours of their shared paint styles: a component's glyphs, and the same glyphs in its instances, came in black. The clipboard links each style by the guid it has in the library it came from, which the clipboard doesn't hold, as well as by its library asset, whose copy it does hold; the `.fig` mapping took the guid and found nothing. Now a guid names a style, variable collection or other resource only when the file holds a node by it, and otherwise the asset it also names finds the file's copy, so `.fig` import and paste agree. A link to a style the file really doesn't hold keeps the colours stored with the layer, as before, now with a note. Tests: `paste_style_tests.rs` (design data built in code, read as paste reads it). | diff --git a/crates/engine/src/cmd/view.rs b/crates/engine/src/cmd/view.rs index 5351e52f..c7fea9f9 100644 --- a/crates/engine/src/cmd/view.rs +++ b/crates/engine/src/cmd/view.rs @@ -442,7 +442,7 @@ pub fn specs() -> Vec { spec!( "pref.language", "Interface language", - "{language: system|en|cs|ru|es|es-419|fr|de|pt-BR|ja|ka|ko|vi|zh-Hans|…; else English}", + "{language: system|en|bs|cs|ru|es|es-419|fr|de|pt-BR|ja|ka|ko|vi|zh-Hans|…; else English}", false, |s, p| { let lang = req_string("pref.language", p, "language")?; diff --git a/crates/ui-egui/locales/bs.toml b/crates/ui-egui/locales/bs.toml new file mode 100644 index 00000000..909a0012 --- /dev/null +++ b/crates/ui-egui/locales/bs.toml @@ -0,0 +1,2580 @@ +# FigCraft interface strings: Bosnian (bosanski), Latin script, ijekavian. +# +# Written from the English catalog with ordinary Bosnian software vocabulary; no other catalog and no +# proprietary localisation was translated from. Brand names and keyboard glyphs stay as they are. +# Buttons and menu items use bare imperatives (Sačuvaj, Izbriši); instructions use the formal Vi +# (Odaberite, Kliknite). Plurals follow CLDR: one (1, 21, 31…), few (2–4, 22–24…), other. + +[meta] +name = "Bosanski" +status = "draft — needs native review" + +[ui] + +"% of all commits" = "% svih commitova" +"(no longer published)" = "(više nije objavljeno)" +"({n} warnings: some entries were skipped)" = { one = "({n} upozorenje: neki unosi su preskočeni)", few = "({n} upozorenja: neki unosi su preskočeni)", other = "({n} upozorenja: neki unosi su preskočeni)" } +"+ Create variable" = "+ Kreiraj varijablu" +".fig (experimental)" = ".fig (eksperimentalno)" +"1…9, 0" = "1…9, 0" +"@{login}: {prs} PRs, {commits} commits, +{added} / −{deleted} lines (Δ {delta}), +{bin_added} / −{bin_deleted} binary assets, {first} – {last}" = "@{login}: PR-ova: {prs}, commitova: {commits}, +{added} / −{deleted} redova (Δ {delta}), +{bin_added} / −{bin_deleted} binarnih resursa, {first} – {last}" +"A collection of this file with these modes and variables: override their values per mode and add variables of its own" = "Kolekcija ove datoteke s ovim načinima i varijablama: zamijenite njihove vrijednosti po načinu i dodajte vlastite varijable" +"A .figcraft file with this name already exists. Choose its full name to confirm replacement." = "Datoteka .figcraft s ovim imenom već postoji. Odaberite njeno puno ime da potvrdite zamjenu." +"A layer on its own aligns to its frame: select more layers, or one in a frame" = "Jedan sloj se poravnava prema svom okviru: odaberite više slojeva ili jedan sloj u okviru" +"A responsive product page: hero, features, figures, a quote and a footer" = "Responzivna stranica proizvoda: naslovni dio, mogućnosti, brojke, citat i podnožje" +"A spring plays until it settles: its mass, stiffness and damping set how long" = "Opruga traje dok se ne smiri: njena masa, krutost i prigušenje određuju koliko dugo" +"A title, an agenda, a big figure, a chart and a closing slide" = "Naslov, dnevni red, velika brojka, grafikon i završni slajd" +"A to Z" = "A do Ž" +"About" = "O aplikaciji" +"About FigCraft" = "O FigCraftu" +"About this server" = "O ovom serveru" +"Action" = "Radnja" +"Actions" = "Radnje" +"Actions for {name}" = "Radnje za {name}" +"Actions…" = "Radnje…" +"Active" = "Aktivno" +"Actual size (100%)" = "Stvarna veličina (100%)" +"Add a category" = "Dodaj kategoriju" +"Add a comment" = "Dodaj komentar" +"Add a connected shape" = "Dodaj povezani oblik" +"Add a description" = "Dodaj opis" +"Add a frame (F) or a shape (R) to get started" = "Dodajte okvir (F) ili oblik (R) da započnete" +"Add a layer or component to tile first" = "Prvo dodajte sloj ili komponentu za popločavanje" +"Add a minute" = "Dodaj minutu" +"Add a note for developers" = "Dodaj bilješku za programere" +"Add action" = "Dodaj radnju" +"Add actions for when no condition holds" = "Dodaj radnje za slučaj kada nijedan uslov nije ispunjen" +"Add an annotation for developers" = "Dodaj anotaciju za programere" +"Add another condition" = "Dodaj još jedan uslov" +"Add auto layout" = "Dodaj automatski raspored" +"Add background behind overlay" = "Dodaj pozadinu iza preklopa" +"Add column" = "Dodaj kolonu" +"Add content to this slot" = "Dodaj sadržaj u ovaj slot" +"Add dev resource" = "Dodaj resurs za programere" +"Add effect" = "Dodaj efekat" +"Add export setting" = "Dodaj postavku izvoza" +"Add fill" = "Dodaj ispunu" +"Add interaction" = "Dodaj interakciju" +"Add layout grid" = "Dodaj mrežu rasporeda" +"Add library" = "Dodaj biblioteku" +"Add library file…" = "Dodaj datoteku biblioteke…" +"Add max height" = "Dodaj najveću visinu" +"Add max width" = "Dodaj najveću širinu" +"Add measurement" = "Dodaj mjerenje" +"Add min height" = "Dodaj najmanju visinu" +"Add min width" = "Dodaj najmanju širinu" +"Add mode" = "Dodaj način" +"Add new page" = "Dodaj novu stranicu" +"Add or update collections from a variables JSON" = "Dodaj ili ažuriraj kolekcije iz JSON-a s varijablama" +"Add properties to make instances configurable" = "Dodajte svojstva da instance budu podesive" +"Add reaction" = "Dodaj reakciju" +"Add row" = "Dodaj red" +"Add starting point" = "Dodaj početnu tačku" +"Add stroke" = "Dodaj obrub" +"Add variant" = "Dodaj varijantu" +"Add variant with a new value" = "Dodaj varijantu s novom vrijednošću" +"Added" = "Dodano" +"Added the library \"{name}\"" = "Dodana je biblioteka „{name}“" +"Adding to {name}" = "Dodavanje u {name}" +"Adjust" = "Prilagodi" +"Adjustment presets" = "Unaprijed postavljene prilagodbe" +"Advanced" = "Napredno" +"Advanced stroke" = "Napredni obrub" +"After delay" = "Nakon kašnjenja" +"After delay {ms}ms" = "Nakon kašnjenja od {ms} ms" +"Agent" = "Agent" +"Align" = "Poravnaj" +"Align bottom" = "Poravnaj dno" +"Align center" = "Poravnaj po sredini" +"Align horizontal centers" = "Poravnaj horizontalna središta" +"Align left" = "Poravnaj lijevo" +"Align middle" = "Poravnaj po sredini" +"Align right" = "Poravnaj desno" +"Align text baselines" = "Poravnaj osnovne linije teksta" +"Align top" = "Poravnaj vrh" +"Align vertical centers" = "Poravnaj vertikalna središta" +"Alignment" = "Poravnanje" +"All" = "Sve" +"All categories" = "Sve kategorije" +"All comments" = "Svi komentari" +"All components" = "Sve komponente" +"All fonts" = "Svi fontovi" +"All objects" = "Svi objekti" +"All supported properties" = "Sva podržana svojstva" +"All the fonts this file uses are installed" = "Svi fontovi koje ova datoteka koristi su instalirani" +"All variables" = "Sve varijable" +"Allow and download" = "Dozvoli i preuzmi" +"Allow downloading fonts?" = "Dozvoliti preuzimanje fontova?" +"Along the bottom" = "Duž dna" +"Along the left" = "Duž lijeve strane" +"Along the right" = "Duž desne strane" +"Along the top" = "Duž vrha" +"Alpha" = "Alfa" +"Alphabetical" = "Abecedno" +"Alt+drag" = "Alt+prevlačenje" +"An analytics screen on a grid: figures, charts drawn from vectors and a table" = "Analitički ekran na mreži: brojke, grafikoni nacrtani vektorima i tabela" +"An invite link that opens FigCraft and joins" = "Pozivni link koji otvara FigCraft i pridružuje se" +"Anchor" = "Sidro" +"Android" = "Android" +"Android Vector Drawable" = "Android Vector Drawable" +"Angular" = "Kutni" +"Animation" = "Animacija" +"Annotations" = "Anotacije" +"Annotations shown on the canvas" = "Anotacije prikazane na platnu" +"Another server, or one that needs its key. The usual server is set in Preferences." = "Drugi server ili server kojem treba ključ. Uobičajeni server se postavlja u Postavkama." +"Any status" = "Bilo koji status" +"Anyone on your network with this code can edit the file, while this app stays open." = "Svako na Vašoj mreži s ovim kodom može uređivati datoteku dok je ova aplikacija otvorena." +"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." = "Svako s linkom za uređivanje može mijenjati datoteku; link za pregled omogućava samo gledanje. Linkovi nose svoje tajne: dijelite ih kao lozinke. `figcraft-server links` pravi nove i opoziva ih." +"Anyone with this code can edit the file." = "Svako s ovim kodom može uređivati datoteku." +"Anyone with this code can look at the file, not change it." = "Svako s ovim kodom može gledati datoteku, ali ne i mijenjati je." +"Anyone with this code can look at the file and comment on it, not change it." = "Svako s ovim kodom može gledati datoteku i komentarisati je, ali ne i mijenjati." +"Appearance" = "Izgled" +"Apply a component property" = "Primijeni svojstvo komponente" +"Apply variable" = "Primijeni varijablu" +"Apply variable to text" = "Primijeni varijablu na tekst" +"Apply variable to visibility" = "Primijeni varijablu na vidljivost" +"Apps" = "Aplikacije" +"Apr" = "apr." +"Arc" = "Luk" +"Arc ratio" = "Omjer luka" +"Arc start" = "Početak luka" +"Arc sweep" = "Raspon luka" +"Archive" = "Arhiviraj" +"Archived" = "Arhivirano" +"Arrange" = "Rasporedi" +"Arrow" = "Strelica" +"Arrow at the end" = "Strelica na kraju" +"As typed" = "Kako je otkucano" +"Asking the server…" = "Upit serveru…" +"Assets" = "Resursi" +"Aug" = "aug." +"Auto" = "Automatski" +"Auto (space around)" = "Automatski (razmak okolo)" +"Auto (space between)" = "Automatski (razmak između)" +"Auto (space evenly)" = "Automatski (ravnomjeran razmak)" +"Auto ({mode})" = "Automatski ({mode})" +"Auto columns" = "Automatske kolone" +"Auto gap" = "Automatski razmak" +"Auto height" = "Automatska visina" +"Auto layout" = "Automatski raspored" +"Auto rows" = "Automatski redovi" +"Auto width" = "Automatska širina" +"Back to the FigCraft server" = "Nazad na FigCraft server" +"Back to the font's value" = "Nazad na vrijednost fonta" +"Back" = "Nazad" +"Back to Ready for dev" = "Nazad na Spremno za razvoj" +"Back to Ready for dev: the next change compares with how it is now" = "Nazad na Spremno za razvoj: sljedeća promjena se poredi s trenutnim stanjem" +"Back to assets" = "Nazad na resurse" +"Back to current" = "Nazad na trenutno" +"Back to styles" = "Nazad na stilove" +"Back to the canvas from a focused region" = "Nazad na platno iz fokusirane oblasti" +"Back to the current version" = "Nazad na trenutnu verziju" +"Back to the values the font style implies" = "Nazad na vrijednosti koje podrazumijeva stil fonta" +"Background" = "Pozadina" +"Background blur" = "Zamućenje pozadine" +"Basics" = "Osnove" +"Before" = "Prije" +"Bend" = "Savij" +"Best effort" = "Najbolje moguće" +"Between the selected layers" = "Između odabranih slojeva" +"Bevel" = "Zakošeno" +"Binary assets added" = "Dodani binarni resursi" +"Binary assets removed" = "Uklonjeni binarni resursi" +"Black & white" = "Crno-bijelo" +"Bleed" = "Prelijevanje" +"Bleed marks" = "Oznake prelijevanja" +"Bleed marks need a bleed" = "Oznakama prelijevanja treba prelijevanje" +"Blend" = "Miješanje" +"Blend mode" = "Način miješanja" +"Blue" = "Plava" +"Blur" = "Zamućenje" +"Board grid" = "Mreža ploče" +"Boolean" = "Logička vrijednost" +"Boolean groups" = "Booleove grupe" +"Both directions" = "Oba smjera" +"Bottom" = "Dno" +"Bottom left radius" = "Radijus donjeg lijevog ugla" +"Bottom padding" = "Donja unutrašnja margina" +"Bottom right radius" = "Radijus donjeg desnog ugla" +"Brainstorm" = "Brainstorming" +"Branch" = "Grana" +"Branch archived" = "Grana arhivirana" +"Branch merged" = "Grana spojena" +"Branch name" = "Ime grane" +"Branch of {file}" = "Grana datoteke {file}" +"Branch of {file} · merged or archived" = "Grana datoteke {file} · spojena ili arhivirana" +"Branch updated from main" = "Grana ažurirana iz glavne datoteke" +"Branch {name}" = "Grana {name}" +"Branches" = "Grane" +"Bound to {name}. Click to detach the variable." = "Povezano s {name}. Kliknite da odvojite varijablu." +"Bring forward" = "Pomakni naprijed" +"Bring the main file's changes into the branch" = "Unesi promjene glavne datoteke u granu" +"Bring to front" = "Pomakni na vrh" +"Bristle" = "Čekinje" +"Browse" = "Pretraži" +"Brush" = "Kist" +"Brush rotation jitter" = "Nasumična rotacija kista" +"Brush scatter" = "Rasipanje kista" +"Brush size jitter" = "Nasumična veličina kista" +"Brush spacing" = "Razmak kista" +"Bulleted list" = "Lista s oznakama" +"C or Shift+C" = "C ili Shift+C" +"C or ⇧C" = "C ili ⇧C" +"CMYK colour" = "CMYK boja" +"Calculated from other variables; it follows them" = "Izračunato iz drugih varijabli; prati ih" +"Can view" = "Može gledati" +"Can comment" = "Može komentarisati" +"Check" = "Provjeri" +"Check for Updates" = "Provjeri ažuriranja" +"Check for updates" = "Provjeri ažuriranja" +"Check for updates…" = "Provjeri ažuriranja…" +"Checking for updates…" = "Provjera ažuriranja…" +"Checking the fonts installed on this computer…" = "Provjera fontova instaliranih na ovom računaru…" +"Checking the server…" = "Provjera servera…" +"Chevron" = "Ševron" +"Clear from this list" = "Ukloni s ove liste" +"Clear results" = "Očisti rezultate" +"Click objects to vote; click your badge to take a vote back" = "Kliknite objekte da glasate; kliknite svoju značku da povučete glas" +"Code or invite link" = "Kod ili pozivni link" +"Color profile: {name}" = "Profil boja: {name}" +"Colour and text styles, Light and Dark variables, buttons, inputs and cards" = "Stilovi boja i teksta, svijetle i tamne varijable, dugmad, polja za unos i kartice" +"Compatibility" = "Kompatibilnost" +"Connector" = "Konektor" +"Convert to frame" = "Pretvori u okvir" +"Convert to section" = "Pretvori u sekciju" +"CSS custom properties…" = "Prilagođena CSS svojstva…" +"Dart constants for Flutter…" = "Dart konstante za Flutter…" +"Can edit" = "Može uređivati" +"Can't read this library: {e}" = "Nije moguće pročitati ovu biblioteku: {e}" +"Cancel" = "Otkaži" +"Canvas" = "Platno" +"Canvas stacking" = "Redoslijed na platnu" +"Cap height to baseline" = "Od visine velikih slova do osnovne linije" +"Case" = "Veličina slova" +"Case-sensitive forms" = "Oblici ovisni o veličini slova" +"Categories" = "Kategorije" +"Center" = "Sredina" +"Change alias" = "Promijeni alias" +"Change resolved" = "Promjena riješena" +"Change style" = "Promijeni stil" +"Change to" = "Promijeni u" +"Change to needs a layer inside a variant" = "Za „Promijeni u“ potreban je sloj unutar varijante" +"Changed" = "Promijenjeno" +"Changed on both sides: keep one" = "Promijenjeno na obje strane: zadržite jedno" +"Changes on main" = "Promjene u glavnoj datoteci" +"Changes on the branch" = "Promjene u grani" +"Changes unknown" = "Promjene nepoznate" +"Choose React, Leptos, Vue, SwiftUI, Compose, ArkUI or Flutter above to connect this component to its code." = "Odaberite React, Leptos, Vue, SwiftUI, Compose, ArkUI ili Flutter iznad da povežete ovu komponentu s njenim kodom." +"Choose another profile to change it." = "Odaberite drugi profil da ga promijenite." +"Choose collection" = "Odaberi kolekciju" +"Choose image" = "Odaberi sliku" +"Choose mode" = "Odaberi način" +"Choose variable" = "Odaberi varijablu" +"Circle" = "Krug" +"Clear recent" = "Očisti nedavne" +"Click + to replace mixed content" = "Kliknite + da zamijenite miješani sadržaj" +"Click anywhere on the canvas to leave one." = "Kliknite bilo gdje na platnu da ga ostavite." +"Click or drag to merge · {alt} removes" = "Kliknite ili prevucite da spojite · {alt} uklanja" +"Click or drag to remove · {alt} merges" = "Kliknite ili prevucite da uklonite · {alt} spaja" +"Click to record a key" = "Kliknite da snimite tipku" +"Clip content" = "Odsijeci sadržaj" +"Clip to shape" = "Odsijeci prema obliku" +"Close" = "Zatvori" +"Close overlay" = "Zatvori preklop" +"Close preview" = "Zatvori pregled" +"Close tab" = "Zatvori karticu" +"Close version history" = "Zatvori historiju verzija" +"Close when clicking outside" = "Zatvori klikom izvan" +"Code" = "Kod" +"Code syntax" = "Sintaksa koda" +"Collapse" = "Skupi" +"Collapse panel" = "Skupi panel" +"Collection" = "Kolekcija" +"Collections" = "Kolekcije" +"Color" = "Boja" +"Color burn" = "Tamnjenje boje" +"Color dodge" = "Posvjetljivanje boje" +"Color format" = "Format boje" +"Color profile" = "Profil boja" +"Color styles" = "Stilovi boja" +"Color values in this file are in this color space." = "Vrijednosti boja u ovoj datoteci su u ovom prostoru boja." +"Color variables" = "Varijable boja" +"Colour" = "Boja" +"Column" = "Kolona" +"Column gap" = "Razmak kolona" +"Column sizes" = "Veličine kolona" +"Column span" = "Raspon kolona" +"Columns" = "Kolone" +"Columns {count}" = "Kolone {count}" +"Comment" = "Komentar" +"Comments" = "Komentari" +"Commits" = "Commitovi" +"Company" = "Kompanija" +"Compare changes" = "Uporedi promjene" +"Compare with" = "Uporedi s" +"Compatibility notes" = "Napomene o kompatibilnosti" +"Completed" = "Završeno" +"Component" = "Komponenta" +"Component name" = "Ime komponente" +"Component property" = "Svojstvo komponente" +"Component set" = "Skup komponenti" +"Component sets" = "Skupovi komponenti" +"Components" = "Komponente" +"Conditional" = "Uslovno" +"Confetti" = "Konfete" +"Conflicts" = "Sukobi" +"Connect to code" = "Poveži s kodom" +"Connected" = "Povezano" +"Connected to code: {from}" = "Povezano s kodom: {from}" +"Connection lost, reconnecting (attempt {attempt})…" = "Veza prekinuta, ponovno povezivanje (pokušaj {attempt})…" +"Constrain proportions" = "Zadrži proporcije" +"Constraints" = "Ograničenja" +"Content" = "Sadržaj" +"Contents hidden" = "Sadržaj skriven" +"Contextual alternates" = "Kontekstualne alternative" +"Contrast" = "Kontrast" +"Contributors" = "Saradnici" +"Contributors: {people} · Commits: {commits}" = "Saradnici: {people} · Commitovi: {commits}" +"Controller" = "Kontroler" +"Cool" = "Hladno" +"Copied as CSS" = "Kopirano kao CSS" +"Copied as PNG" = "Kopirano kao PNG" +"Copied as SVG" = "Kopirano kao SVG" +"Copied as text" = "Kopirano kao tekst" +"Copied comments for AI" = "Komentari kopirani za AI" +"Copied {value}" = "Kopirano: {value}" +"Copy" = "Kopiraj" +"Copy as" = "Kopiraj kao" +"Copy as CSS" = "Kopiraj kao CSS" +"Copy as PNG" = "Kopiraj kao PNG" +"Copy as SVG" = "Kopiraj kao SVG" +"Copy code" = "Kopiraj kod" +"Copy effect" = "Kopiraj efekat" +"Copy fill" = "Kopiraj ispunu" +"Copy for AI" = "Kopiraj za AI" +"Copy link" = "Kopiraj link" +"Copy stroke" = "Kopiraj obrub" +"Copy the {label}" = "Kopiraj: {label}" +"Copy {value}" = "Kopiraj {value}" +"Corner radius" = "Radijus ugla" +"Corner smoothing" = "Zaglađivanje uglova" +"Could not check for updates:\n{error}" = "Nije moguće provjeriti ažuriranja:\n{error}" +"Couldn't download the variables" = "Nije moguće preuzeti varijable" +"Couldn't download {name}" = "Nije moguće preuzeti {name}" +"Couldn't reach {server}: showing what this computer remembers." = "Server {server} nije dostupan: prikazuje se ono što ovaj računar pamti." +"Couldn't read {name}." = "Nije moguće pročitati {name}." +"Couldn't save automatically: {error}" = "Automatsko čuvanje nije uspjelo: {error}" +"Couldn't save the file" = "Nije moguće sačuvati datoteku" +"Count" = "Broj" +"Create" = "Kreiraj" +"Create a variable collection first" = "Prvo kreirajte kolekciju varijabli" +"Create a variable first" = "Prvo kreirajte varijablu" +"Create alias" = "Kreiraj alias" +"Create branch" = "Kreiraj granu" +"Create collection" = "Kreiraj kolekciju" +"Create component" = "Kreiraj komponentu" +"Create component property" = "Kreiraj svojstvo komponente" +"Create components, styles or variables to publish them as a library." = "Kreirajte komponente, stilove ili varijable da ih objavite kao biblioteku." +"Create property…" = "Kreiraj svojstvo…" +"Create style" = "Kreiraj stil" +"Create style from the selected text" = "Kreiraj stil iz odabranog teksta" +"Created" = "Kreirano" +"Crop" = "Izreži" +"Crop image" = "Izreži sliku" +"Crop marks" = "Oznake rezanja" +"Ctrl+arrows" = "Ctrl+strelice" +"Ctrl+click" = "Ctrl+klik" +"Ctrl+scroll" = "Ctrl+skrolanje" +"Current name" = "Trenutno ime" +"Current version" = "Trenutna verzija" +"Cursor chat" = "Chat kursorom" +"Custom" = "Prilagođeno" +"Custom size" = "Prilagođena veličina" +"Cut" = "Izreži" +"Dark" = "Tamna" +"Darken" = "Zatamni" +"Dash" = "Crtica" +"Dashboard" = "Kontrolna tabla" +"Date created" = "Datum kreiranja" +"Dec" = "dec." +"Decoration style" = "Stil dekoracije" +"Decoration" = "Dekoracija" +"Deep select" = "Duboki odabir" +"Default" = "Zadano" +"Default content" = "Zadani sadržaj" +"Default value (the top-left variant)" = "Zadana vrijednost (gornja lijeva varijanta)" +"Delay" = "Kašnjenje" +"Delete" = "Izbriši" +"Delete category (its annotations stay)" = "Izbriši kategoriju (njene anotacije ostaju)" +"Delete collection" = "Izbriši kolekciju" +"Delete group" = "Izbriši grupu" +"Delete mode" = "Izbriši način" +"Delete page" = "Izbriši stranicu" +"Delete preset" = "Izbriši predložak" +"Delete property" = "Izbriši svojstvo" +"Delete the style (layers keep their values)" = "Izbriši stil (slojevi zadržavaju svoje vrijednosti)" +"Delete thread" = "Izbriši nit" +"Delete variable" = "Izbriši varijablu" +"Delete “{name}”? This can't be undone." = "Izbrisati „{name}“? Ovo se ne može poništiti." +"Density" = "Gustina" +"Depth" = "Dubina" +"Describe how and when to use this component" = "Opišite kako i kada koristiti ovu komponentu" +"Describe what changed" = "Opišite šta se promijenilo" +"Description" = "Opis" +"Description (optional)" = "Opis (neobavezno)" +"Design" = "Dizajn" +"Design panel" = "Panel dizajna" +"Design system starter" = "Početni dizajn sistem" +"Desktop" = "Desktop" +"Destination" = "Odredište" +"Detach alias" = "Odvoji alias" +"Detach calculation" = "Odvoji izračun" +"Detach instance" = "Odvoji instancu" +"Detach property" = "Odvoji svojstvo" +"Detach style" = "Odvoji stil" +"Detach styles" = "Odvoji stilove" +"Detach variable" = "Odvoji varijablu" +"Details" = "Detalji" +"Dev Mode" = "Dev Mode" +"Dev Mode only inspects: switch to Design (Shift+D) to edit" = "Dev Mode služi samo za pregled: prebacite se na Dizajn (Shift+D) za uređivanje" +"Dev resources" = "Resursi za programere" +"Development" = "Razvoj" +"Device" = "Uređaj" +"Device at 100%" = "Uređaj na 100%" +"Diamond" = "Romb" +"Difference" = "Razlika" +"Dimensions" = "Dimenzije" +"Direction" = "Smjer" +"Disconnect from code" = "Prekini vezu s kodom" +"Dispersion" = "Disperzija" +"Display name" = "Prikazno ime" +"Dissolve" = "Rastvaranje" +"Distribute and tidy" = "Raspodijeli i uredi" +"Distribute horizontal spacing" = "Raspodijeli horizontalni razmak" +"Distribute vertical spacing" = "Raspodijeli vertikalni razmak" +"Divider" = "Razdjelnik" +"Don't Save" = "Ne čuvaj" +"Don't show this again" = "Ne prikazuj ovo ponovo" +"Don't truncate" = "Ne skraćuj" +"Done" = "Gotovo" +"Done editing" = "Uređivanje završeno" +"Dots" = "Tačke" +"Dotted" = "Tačkasto" +"Down" = "Dolje" +"Download" = "Preuzmi" +"Downloading… {percent}%" = "Preuzimanje… {percent}%" +"Drafts" = "Nacrti" +"Drag the stroke to add a width point" = "Prevucite obrub da dodate tačku širine" +"Draw" = "Crtanje" +"Draw a frame" = "Nacrtaj okvir" +"Drawing tools" = "Alati za crtanje" +"Drop a .figcraft, .fig, .jam, .sketch, .json, .svg or image file." = "Ispustite datoteku .figcraft, .fig, .jam, .sketch, .json, .svg ili sliku." +"Drop to import" = "Ispustite za uvoz" +"Drop to open" = "Ispustite za otvaranje" +"Drop shadow" = "Sjena" +"Dual-licensed MIT OR Apache-2.0. Made by the ArtCraft team and community." = "Dvostruka licenca MIT OR Apache-2.0. Napravili ArtCraft tim i zajednica." +"Duo" = "Duo" +"Duplicate" = "Dupliciraj" +"Duplicate by dragging" = "Dupliciraj prevlačenjem" +"Duplicate mode" = "Dupliciraj način" +"Duplicate page" = "Dupliciraj stranicu" +"Edit" = "Uredi" +"Edit as an expression" = "Uredi kao izraz" +"Edit colour" = "Uredi boju" +"Edit comment" = "Uredi komentar" +"Edit dev resource" = "Uredi resurs za programere" +"Edit link" = "Link za uređivanje" +"Edit link copied" = "Link za uređivanje kopiran" +"Edit style" = "Uredi stil" +"Edit variable" = "Uredi varijablu" +"Edit with the builder" = "Uredi pomoću graditelja" +"Edited {when}" = "Uređeno {when}" +"Effect settings" = "Postavke efekta" +"Effect styles" = "Stilovi efekata" +"Effects" = "Efekti" +"Curved" = "Zakrivljeno" +"Elbow" = "Lakat" +"Ellipse" = "Elipsa" +"Ellipses" = "Elipse" +"Else" = "Inače" +"Else if" = "Inače ako" +"Embedded profile" = "Ugrađeni profil" +"Empty" = "Prazno" +"End" = "Kraj" +"End point" = "Krajnja tačka" +"End vote" = "Završi glasanje" +"Ends the session; everyone keeps their copy" = "Završava sesiju; svako zadržava svoju kopiju" +"Enter" = "Enter" +"Enter the address of a figcraft-server and press Browse to see the plugins it offers." = "Unesite adresu figcraft-servera i pritisnite Pretraži da vidite dodatke koje nudi." +"Enter to save · Esc to cancel" = "Enter za čuvanje · Esc za otkazivanje" +"Eraser" = "Gumica" +"Esc" = "Esc" +"Essential" = "Osnovno" +"Every conflict has a choice." = "Svaki sukob ima izbor." +"Every top-level frame already starts a flow" = "Svaki okvir najvišeg nivoa već započinje tok" +"Exact only" = "Samo tačno" +"Exact opacity (4 then 5: 45%)" = "Tačna neprozirnost (4 pa 5: 45%)" +"Exclude" = "Isključi" +"Excluded" = "Isključeno" +"Excluded from layout" = "Isključeno iz rasporeda" +"Excludes" = "Isključuje" +"Exclusion" = "Isključenje" +"Exit focus view (Esc)" = "Izađi iz fokusiranog prikaza (Esc)" +"Expand" = "Proširi" +"Export" = "Izvoz" +"Export all" = "Izvezi sve" +"Export frames and layers as PNG, JPG, SVG or PDF" = "Izvezite okvire i slojeve kao PNG, JPG, SVG ili PDF" +"Export page as PNG" = "Izvezi stranicu kao PNG" +"Export settings" = "Postavke izvoza" +"Export variables" = "Izvezi varijable" +"Export {name}" = "Izvezi {name}" +"Export {n} layers" = { one = "Izvezi {n} sloj", few = "Izvezi {n} sloja", other = "Izvezi {n} slojeva" } +"Exported {file}" = "Izvezeno: {file}" +"Exported {name}" = "Izvezeno: {name}" +"Exported {name}; {n} kinds of content were changed or left out" = { one = "Izvezeno: {name}; {n} vrsta sadržaja je promijenjena ili izostavljena", few = "Izvezeno: {name}; {n} vrste sadržaja su promijenjene ili izostavljene", other = "Izvezeno: {name}; {n} vrsta sadržaja je promijenjeno ili izostavljeno" } +"Exported {name}; {n} kinds of content were left out" = { one = "Izvezeno: {name}; {n} vrsta sadržaja je izostavljena", few = "Izvezeno: {name}; {n} vrste sadržaja su izostavljene", other = "Izvezeno: {name}; {n} vrsta sadržaja je izostavljeno" } +"Exported {n} files" = { one = "Izvezena {n} datoteka", few = "Izvezene {n} datoteke", other = "Izvezeno {n} datoteka" } +"Exported {n} files; some content was changed or left out" = { one = "Izvezena {n} datoteka; dio sadržaja je promijenjen ili izostavljen", few = "Izvezene {n} datoteke; dio sadržaja je promijenjen ili izostavljen", other = "Izvezeno {n} datoteka; dio sadržaja je promijenjen ili izostavljen" } +"Export…" = "Izvoz…" +"Expose properties to instances" = "Izloži svojstva instancama" +"Exposure" = "Ekspozicija" +"Expression" = "Izraz" +"Extend collection" = "Proširi kolekciju" +"Extends \"{name}\": overridden values are marked" = "Proširuje „{name}“: zamijenjene vrijednosti su označene" +"Eye" = "Oko" +"F" = "F" +"Fade" = "Blijeđenje" +"False" = "Netačno" +"Feb" = "feb." +"Fetching from the server…" = "Preuzimanje sa servera…" +"FigCraft couldn't open its window: {error}" = "FigCraft nije mogao otvoriti svoj prozor: {error}" +"FigCraft doesn't support every feature of these files yet. The notes list what was left out or changed in the imported copy; the original file is unchanged." = "FigCraft još ne podržava sve mogućnosti ovih datoteka. Napomene navode šta je izostavljeno ili promijenjeno u uvezenoj kopiji; originalna datoteka je nepromijenjena." +"FigCraft stopped because of an internal error." = "FigCraft je zaustavljen zbog interne greške." +"FigCraft {version} is currently the newest version available." = "FigCraft {version} je trenutno najnovija dostupna verzija." +"File" = "Datoteka" +"File name" = "Ime datoteke" +"File not found" = "Datoteka nije pronađena" +"File published" = "Datoteka objavljena" +"Files aren't end-to-end encrypted: the server's operator can read them." = "Datoteke nisu šifrovane s kraja na kraj: operater servera ih može čitati." +"Files nobody opens for {n} days are deleted." = { one = "Datoteke koje niko ne otvori {n} dan se brišu.", few = "Datoteke koje niko ne otvori {n} dana se brišu.", other = "Datoteke koje niko ne otvori {n} dana se brišu." } +"Fill" = "Ispuna" +"Fill (fr)" = "Ispuni (fr)" +"Fill container" = "Ispuni kontejner" +"Fill window" = "Ispuni prozor" +"Fills" = "Ispune" +"Fill|sizing" = "Ispuni" +"Filter and sort" = "Filtriraj i sortiraj" +"Find" = "Pronađi" +"Find and replace" = "Pronađi i zamijeni" +"Find layers" = "Pronađi slojeve" +"First" = "Prvi" +"First commit" = "Prvi commit" +"First on top" = "Prvi na vrhu" +"Fit" = "Uklopi" +"Fit device to window" = "Uklopi uređaj u prozor" +"Fit to contents" = "Uklopi u sadržaj" +"Fit to window" = "Uklopi u prozor" +"Fit width" = "Uklopi širinu" +"Fixed" = "Fiksno" +"Fixed gap" = "Fiksni razmak" +"Fixed size" = "Fiksna veličina" +"Flatten" = "Spljošti" +"Flip" = "Okreni" +"Flip horizontal" = "Okreni horizontalno" +"Flip text to the other side" = "Prebaci tekst na drugu stranu" +"Flip vertical" = "Okreni vertikalno" +"Flip width profile" = "Okreni profil širine" +"Flow chart" = "Dijagram toka" +"Flow starting point" = "Početna tačka toka" +"Flow starting points" = "Početne tačke toka" +"Flows" = "Tokovi" +"Focus view" = "Fokusirani prikaz" +"Fold autosaves" = "Sažmi automatska čuvanja" +"Folder: click to collapse" = "Folder: kliknite da skupite" +"Folder: click to expand" = "Folder: kliknite da proširite" +"Follow" = "Prati" +"Follow {name}" = "Prati: {name}" +"Following" = "Praćenje" +"Following {name} · {key} to stop" = "Praćenje: {name} · {key} za prekid" +"Font" = "Font" +"Font not installed" = "Font nije instaliran" +"Font size" = "Veličina fonta" +"Font style" = "Stil fonta" +"Forget on this computer" = "Zaboravi na ovom računaru" +"Format" = "Format" +"Four screens of a trail app with components and a prototype flow" = "Četiri ekrana aplikacije za staze s komponentama i tokom prototipa" +"Fractions" = "Razlomci" +"Frame" = "Okvir" +"Frame selection" = "Uokviri odabir" +"Frame tools" = "Alati za okvire" +"Frames" = "Okviri" +"Free fonts come from Google Fonts and Noto, through jsDelivr and GitHub. Each file is checked against the font index before it is installed into the font folder the Craft apps share. Nothing is downloaded until you allow it." = "Besplatni fontovi dolaze iz Google Fonts i Noto, preko jsDelivra i GitHuba. Svaka datoteka se provjerava prema indeksu fontova prije nego što se instalira u folder fontova koji dijele Craft aplikacije. Ništa se ne preuzima dok to ne dozvolite." +"From the library \"{name}\": read-only" = "Iz biblioteke „{name}“: samo za čitanje" +"From {name}" = "Iz: {name}" +"From {server}" = "Sa servera {server}" +"Frost" = "Inje" +"Gap" = "Razmak" +"Gap between columns" = "Razmak između kolona" +"Gap between items" = "Razmak između stavki" +"Gap between rows" = "Razmak između redova" +"Getting started" = "Prvi koraci" +"Give the address of a server open to the public, or a server's address with its key (`figcraft-server key` prints it)." = "Navedite adresu javno dostupnog servera ili adresu servera s njegovim ključem (`figcraft-server key` ga ispisuje)." +"Glass" = "Staklo" +"Go to main component" = "Idi na glavnu komponentu" +"Go to {name}" = "Idi na {name}" +"Grab bag" = "Miješano" +"Gradient" = "Gradijent" +"Graph paper" = "Milimetarski papir" +"Gray" = "Siva" +"Green" = "Zelena" +"Greyscale components and two example screens to sketch a flow with" = "Komponente u nijansama sive i dva primjera ekrana za skiciranje toka" +"Grid" = "Mreža" +"Grid ({size})" = "Mreža ({size})" +"Grid styles" = "Stilovi mreže" +"Grid {size}" = "Mreža {size}" +"Group" = "Grupa" +"Group selection" = "Grupiši odabir" +"Groups" = "Grupe" +"Gutter" = "Međuprostor" +"Hand tool" = "Alat ruka" +"Hanging list" = "Viseća lista" +"Hanging punctuation" = "Viseća interpunkcija" +"Hard light" = "Jako svjetlo" +"Heart" = "Srce" +"Height" = "Visina" +"Help" = "Pomoć" +"Help and resources" = "Pomoć i resursi" +"Help page" = "Stranica pomoći" +"Here: {names}" = "Ovdje: {names}" +"Hidden" = "Skriveno" +"Hide contents" = "Sakrij sadržaj" +"Hide from publishing" = "Sakrij pri objavljivanju" +"Hide section contents" = "Sakrij sadržaj sekcije" +"Hide these tips (Getting started in the Help menu shows them again)" = "Sakrij ove savjete (Prvi koraci u meniju Pomoć ih ponovo prikazuju)" +"Hide when publishing" = "Sakrij pri objavljivanju" +"Highlight layers on hover" = "Istakni slojeve pri prelasku mišem" +"Highlighter" = "Marker" +"Highlights" = "Svijetli tonovi" +"Hold Alt" = "Držite Alt" +"Hold Alt+Z" = "Držite Alt+Z" +"Hold Ctrl" = "Držite Ctrl" +"Hold Z" = "Držite Z" +"Hold ⌃ or ⌘" = "Držite ⌃ ili ⌘" +"Hold ⌥" = "Držite ⌥" +"Hold ⌥Z" = "Držite ⌥Z" +"Home" = "Početna" +"Horizontal" = "Horizontalno" +"Horizontal align" = "Horizontalno poravnanje" +"Horizontal hex" = "Horizontalni heksagon" +"Horizontal padding" = "Horizontalna unutrašnja margina" +"Horizontal spacing" = "Horizontalni razmak" +"Hosted by {operator}" = "Hostuje: {operator}" +"Hover a layer to see its properties" = "Pređite mišem preko sloja da vidite njegova svojstva" +"Hover other layers to measure the distance" = "Pređite mišem preko drugih slojeva da izmjerite udaljenost" +"Hue" = "Nijansa" +"Hug" = "Obuhvati" +"Hug contents" = "Obuhvati sadržaj" +"Icon components on a 24 px grid with keylines and a size preview" = "Komponente ikona na mreži od 24 px s pomoćnim linijama i pregledom veličina" +"Icon set starter" = "Početni skup ikona" +"If it keeps happening, please report it at {link} with this message." = "Ako se ovo nastavi dešavati, prijavite to na {link} s ovom porukom." +"If" = "Ako" +"If {condition}" = "Ako {condition}" +"Ignore auto layout (absolute position)" = "Zanemari automatski raspored (apsolutni položaj)" +"Ignore overlapping layers" = "Zanemari slojeve koji se preklapaju" +"Ignore unsupported" = "Zanemari nepodržano" +"Image" = "Slika" +"Images" = "Slike" +"Import" = "Uvoz" +"Import path" = "Putanja uvoza" +"Import plugin from manifest" = "Uvezi dodatak iz manifesta" +"Import plugin from manifest…" = "Uvezi dodatak iz manifesta…" +"Import report" = "Izvještaj o uvozu" +"Import variables" = "Uvezi varijable" +"Imported document" = "Uvezeni dokument" +"Imported {name}" = "Uvezeno: {name}" +"Imported {n} new variables, updated {updated}" = { one = "Uvezena {n} nova varijabla, ažurirano: {updated}", few = "Uvezene {n} nove varijable, ažurirano: {updated}", other = "Uvezeno {n} novih varijabli, ažurirano: {updated}" } +"Import…" = "Uvoz…" +"In an instance, this comes from the main component" = "U instanci ovo dolazi iz glavne komponente" +"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)." = "U pregledniku se možete pridružiti sesijama koje hostuje desktop aplikacija i datotekama na FigCraft serveru. Stranica otvorena preko https-a dopire do drugih računara samo preko wss:// linkova (server iza TLS-a)." +"Include bounding box" = "Uključi granični okvir" +"Include id attribute" = "Uključi atribut id" +"Included" = "Uključeno" +"Included in layout" = "Uključeno u raspored" +"Individual corners" = "Pojedinačni uglovi" +"Individual padding" = "Pojedinačne unutrašnje margine" +"Individual strokes" = "Pojedinačni obrubi" +"Ink" = "Tinta" +"Inner shadow" = "Unutrašnja sjena" +"Inside" = "Unutra" +"Inspect" = "Pregled" +"Inspect the layer under the pointer: size, colours, typography" = "Pregledajte sloj ispod pokazivača: veličinu, boje, tipografiju" +"Install plugin" = "Instaliraj dodatak" +"Install" = "Instaliraj" +"Installed {name}" = "Instalirano: {name}" +"Installed" = "Instalirano" +"Installing…" = "Instaliranje…" +"Instance" = "Instanca" +"Instance properties" = "Svojstva instance" +"Instance swap" = "Zamjena instance" +"Instance swap (no other component)" = "Zamjena instance (nema druge komponente)" +"Instances" = "Instance" +"Instant" = "Trenutno" +"Intensity" = "Intenzitet" +"Interaction" = "Interakcija" +"Interactions" = "Interakcije" +"Interface design and prototyping. A free, open-source, clean-room design tool written from scratch in Rust, part of the ArtCraft Crafting Apps." = "Dizajn interfejsa i prototipiranje. Besplatan alat za dizajn otvorenog koda, napravljen metodom „čiste sobe“ i napisan od nule u Rustu, dio ArtCraft Crafting Apps." +"Interface size" = "Veličina interfejsa" +"Intersect" = "Presjek" +"Intersects" = "Presijeca" +"Invalid color" = "Neispravna boja" +"Invite link" = "Pozivni link" +"Invite link copied" = "Pozivni link kopiran" +"It asks permission to:" = "Traži dozvolu da:" +"Jan" = "jan." +"Join" = "Pridruži se" +"Join code copied" = "Kod za pridruživanje kopiran" +"Join code or invite link" = "Kod za pridruživanje ili pozivni link" +"Join live session" = "Pridruži se sesiji uživo" +"Join us on Discord" = "Pridružite nam se na Discordu" +"Join with a code" = "Pridruži se pomoću koda" +"Joined" = "Pridruženo" +"Joined {file}" = "Pridruženo: {file}" +"Joining live session…" = "Pridruživanje sesiji uživo…" +"Joining…" = "Pridruživanje…" +"Join|stroke" = "Spoj" +"Jul" = "jul." +"Jun" = "jun." +"Just now" = "Upravo sada" +"Justify" = "Obostrano poravnanje" +"Kanban board" = "Kanban ploča" +"Keep a measurement on the canvas for developers" = "Zadrži mjerenje na platnu za programere" +"Keep appearance" = "Zadrži izgled" +"Keep appearance converts every color value to {profile} so colors look the same. Keep values leaves the numbers as they are, so colors shift." = "Zadrži izgled pretvara svaku vrijednost boje u {profile} tako da boje izgledaju isto. Zadrži vrijednosti ostavlja brojeve kakvi jesu, pa se boje mijenjaju." +"Keep tool selected after use" = "Zadrži alat odabranim nakon upotrebe" +"Keep values" = "Zadrži vrijednosti" +"Key/Gamepad" = "Tipka/gamepad" +"Key/Gamepad {key}" = "Tipka/gamepad {key}" +"Keyboard shortcuts" = "Prečice na tastaturi" +"Kits" = "Kompleti" +"Landing page" = "Odredišna stranica" +"Language" = "Jezik" +"Lasso" = "Laso" +"Last" = "Posljednji" +"Last change: {note}" = "Posljednja promjena: {note}" +"Last commit" = "Posljednji commit" +"Last modified" = "Posljednja izmjena" +"Last on top" = "Posljednji na vrhu" +"Layer blur" = "Zamućenje sloja" +"Layer name" = "Ime sloja" +"Layers" = "Slojevi" +"Layers in an instance take their position from the main component" = "Slojevi u instanci preuzimaju položaj iz glavne komponente" +"Layout" = "Raspored" +"Layout grid" = "Mreža rasporeda" +"Layout grid settings" = "Postavke mreže rasporeda" +"Layout grids" = "Mreže rasporeda" +"Leave session" = "Napusti sesiju" +"Leaves" = "Lišće" +"Leaving the prototype" = "Napuštanje prototipa" +"Left" = "Lijevo" +"Left & right" = "Lijevo i desno" +"Left padding" = "Lijeva unutrašnja margina" +"Left side" = "Lijeva strana" +"Left side width" = "Širina lijeve strane" +"Letter case" = "Veličina slova" +"Letter spacing" = "Razmak slova" +"Libraries" = "Biblioteke" +"Libraries in this file" = "Biblioteke u ovoj datoteci" +"Library updates available" = "Dostupna ažuriranja biblioteka" +"Library: click to collapse" = "Biblioteka: kliknite da skupite" +"Library: click to expand" = "Biblioteka: kliknite da proširite" +"Library: its variables are read-only here; edit them in the library file and publish it" = "Biblioteka: njene varijable su ovdje samo za čitanje; uredite ih u datoteci biblioteke i objavite je" +"Light" = "Svijetla" +"Lighten" = "Posvijetli" +"Light|glass" = "Svjetlo" +"Line" = "Linija" +"Line arrow" = "Linija sa strelicom" +"Line delta" = "Razlika redova" +"Line height" = "Visina reda" +"Linear" = "Linearno" +"Lines" = "Linije" +"Lines +/−" = "Redovi +/−" +"Lines added" = "Dodani redovi" +"Lines deleted" = "Obrisani redovi" +"Link" = "Link" +"Link copied" = "Link kopiran" +"Link docs, code or tickets for developers." = "Povežite dokumentaciju, kod ili tikete za programere." +"Link frames on the Prototype tab, then present the flow" = "Povežite okvire na kartici Prototip, a zatim prezentujte tok" +"Link this component to its code component: instances then show your real snippet with their values." = "Povežite ovu komponentu s njenom komponentom u kodu: instance tada prikazuju Vaš stvarni isječak sa svojim vrijednostima." +"List spacing" = "Razmak liste" +"List style" = "Stil liste" +"Live session" = "Sesija uživo" +"Live · {people}" = "Uživo · {people}" +"Local components" = "Lokalne komponente" +"Local network" = "Lokalna mreža" +"Local styles" = "Lokalni stilovi" +"Local variables" = "Lokalne varijable" +"Lock/Unlock" = "Zaključaj/otključaj" +"Locked" = "Zaključano" +"Lowercase" = "Mala slova" +"Luminance" = "Luminancija" +"Luminosity" = "Svjetlina" +"Main" = "Glavna" +"Main component deleted" = "Glavna komponenta izbrisana" +"Main menu" = "Glavni meni" +"Make a component" = "Napravi komponentu" +"Make slot" = "Napravi slot" +"Scroll wheel zoom" = "Zumiranje kotačićem miša" +"Slot name" = "Ime slota" +"Mar" = "mar." +"Margin" = "Margina" +"Mark all as read" = "Označi sve kao pročitano" +"Mark as resolved" = "Označi kao riješeno" +"Mark as unread" = "Označi kao nepročitano" +"Mark as unresolved" = "Označi kao neriješeno" +"Marker" = "Flomaster" +"Mask" = "Maska" +"Mass · Stiffness · Damping" = "Masa · Krutost · Prigušenje" +"Match (empty: the whole name)" = "Podudaranje (prazno: cijelo ime)" +"Max H" = "Maks. V" +"Max W" = "Maks. Š" +"Max lines" = "Najviše redova" +"Maximize" = "Maksimiziraj" +"May" = "maj" +"Measure to the selection" = "Mjeri do odabira" +"Measurements" = "Mjerenja" +"Merge into main" = "Spoji u glavnu" +"Merge regions" = "Spoji oblasti" +"Merge the branch into the main file (one undo step) and archive it" = "Spoji granu u glavnu datoteku (jedan korak poništavanja) i arhiviraj je" +"Merged" = "Spojeno" +"Merged PRs" = "Spojeni PR-ovi" +"Min H" = "Min. V" +"Min W" = "Min. Š" +"Minimize" = "Minimiziraj" +"Minutes" = "Minute" +"Mirror angle" = "Zrcali ugao" +"Mirror angle and length" = "Zrcali ugao i dužinu" +"Mirroring" = "Zrcaljenje" +"Missing" = "Nedostaje" +"Missing fonts" = "Nedostajući fontovi" +"Missing layer" = "Nedostajući sloj" +"Missing style" = "Nedostajući stil" +"Missing variable" = "Nedostajuća varijabla" +"Miter" = "Šiljasto" +"Miter angle" = "Ugao šiljka" +"Mixed" = "Miješano" +"Mixed fonts" = "Miješani fontovi" +"Mixed interactions: click + to replace them" = "Miješane interakcije: kliknite + da ih zamijenite" +"Mobile app" = "Mobilna aplikacija" +"Mode" = "Način" +"Model" = "Model" +"Models" = "Modeli" +"Mono" = "Mono" +"More" = "Više" +"More instance actions" = "Više radnji za instancu" +"Mouse down" = "Pritisak miša" +"Mouse enter" = "Ulazak miša" +"Mouse leave" = "Izlazak miša" +"Mouse up" = "Otpuštanje miša" +"Move along the toolbar or the layer rows" = "Kretanje po traci s alatima ili redovima slojeva" +"Move" = "Pomjeri" +"Move column left" = "Pomjeri kolonu lijevo" +"Move column right" = "Pomjeri kolonu desno" +"Move down" = "Pomjeri dolje" +"Move in" = "Uđi" +"Move out" = "Izađi" +"Move tools" = "Alati za pomjeranje" +"Move up" = "Pomjeri gore" +"Moved to {name}" = "Premješteno u {name}" +"Multi" = "Više" +"Multiply" = "Množenje" +"Muted" = "Prigušeno" +"Name" = "Ime" +"Name (A–Z)" = "Ime (A–Ž)" +"Named instance" = "Imenovana instanca" +"Navigate to" = "Idi na" +"Nested instance" = "Ugniježđena instanca" +"New board" = "Nova ploča" +"New design file" = "Nova datoteka dizajna" +"Newest first" = "Najnovije prvo" +"Next or previous control in the focused region" = "Sljedeća ili prethodna kontrola u fokusiranoj oblasti" +"Next frame" = "Sljedeći okvir" +"Next ready for dev" = "Sljedeće spremno za razvoj" +"Next size option" = "Sljedeća opcija veličine" +"No assets: no export settings, icons or images. Add export settings in the Design tab." = "Nema resursa: nema postavki izvoza, ikona ni slika. Dodajte postavke izvoza na kartici Dizajn." +"No boolean variables fit here." = "Nijedna logička varijabla ne odgovara ovdje." +"No boolean variables yet. Create them in Local variables." = "Još nema logičkih varijabli. Kreirajte ih u Lokalnim varijablama." +"No branches. A branch is a copy of the file to try changes in, then review and merge." = "Nema grana. Grana je kopija datoteke u kojoj isprobavate promjene, zatim ih pregledate i spojite." +"No category" = "Bez kategorije" +"No changes" = "Nema promjena" +"No color styles" = "Nema stilova boja" +"No colour variables fit here." = "Nijedna varijabla boje ne odgovara ovdje." +"No colour variables yet. Create them in Local variables." = "Još nema varijabli boja. Kreirajte ih u Lokalnim varijablama." +"No comments to copy" = "Nema komentara za kopiranje" +"No comments yet" = "Još nema komentara" +"No compatibility warnings reported" = "Nema prijavljenih upozorenja o kompatibilnosti" +"No components yet. Select layers and press {keys}." = "Još nema komponenti. Odaberite slojeve i pritisnite {keys}." +"No conflicts." = "Nema sukoba." +"No contributor data was built into this copy." = "U ovu kopiju nisu ugrađeni podaci o saradnicima." +"No device" = "Bez uređaja" +"No fonts match" = "Nijedan font ne odgovara" +"No files or templates match your search" = "Nijedna datoteka ni predložak ne odgovaraju pretrazi" +"No join code here (the server is older than join codes, or this address can't be put in one): share the link instead." = "Ovdje nema koda za pridruživanje (server je stariji od kodova za pridruživanje ili se ova adresa ne može staviti u kod): umjesto toga podijelite link." +"No layer changes to show." = "Nema promjena slojeva za prikaz." +"No libraries yet. Add a .figcraft file that was published as a library, or paste a team library's link." = "Još nema biblioteka. Dodajte datoteku .figcraft koja je objavljena kao biblioteka ili zalijepite link timske biblioteke." +"No list" = "Bez liste" +"No matching comments" = "Nema odgovarajućih komentara" +"No matching components" = "Nema odgovarajućih komponenti" +"No matching layers" = "Nema odgovarajućih slojeva" +"No matching styles" = "Nema odgovarajućih stilova" +"No matching variables" = "Nema odgovarajućih varijabli" +"No mirroring" = "Bez zrcaljenja" +"No model credits were built into this copy." = "U ovu kopiju nisu ugrađene zasluge za modele." +"No number variables fit here." = "Nijedna brojčana varijabla ne odgovara ovdje." +"No number variables yet. Create them in Local variables." = "Još nema brojčanih varijabli. Kreirajte ih u Lokalnim varijablama." +"No other pages" = "Nema drugih stranica" +"No paints" = "Nema boja" +"No plugins on {server}." = "Nema dodataka na serveru {server}." +"No plugins yet. Import a development plugin from its figcraft-plugin.json." = "Još nema dodataka. Uvezite razvojni dodatak iz njegovog figcraft-plugin.json." +"No preferred components" = "Nema preferiranih komponenti" +"No preset" = "Bez predloška" +"No saved versions yet. Save a version to mark a point in your work you can come back to." = "Još nema sačuvanih verzija. Sačuvajte verziju da označite tačku u radu na koju se možete vratiti." +"No scrolling" = "Bez skrolanja" +"No shortcuts match" = "Nijedna prečica ne odgovara" +"No status" = "Bez statusa" +"No string variables fit here." = "Nijedna tekstualna varijabla ne odgovara ovdje." +"No string variables yet. Create them in Local variables." = "Još nema tekstualnih varijabli. Kreirajte ih u Lokalnim varijablama." +"No styles yet." = "Još nema stilova." +"No styles yet. Click + to create one from the selection." = "Još nema stilova. Kliknite + da kreirate stil iz odabira." +"No templates match your search" = "Nijedan predložak ne odgovara pretrazi" +"No text styles yet. Click + to create one from the selected text." = "Još nema stilova teksta. Kliknite + da kreirate stil iz odabranog teksta." +"No variables fit here." = "Nijedna varijabla ne odgovara ovdje." +"No variables yet. Create them in Local variables." = "Još nema varijabli. Kreirajte ih u Lokalnim varijablama." +"No votes yet" = "Još nema glasova" +"Nobody else is here yet" = "Ovdje još nema nikog drugog" +"Noise" = "Šum" +"None" = "Ništa" +"None." = "Ništa." +"Normal" = "Normalno" +"Not bound" = "Nije povezano" +"Not in a live session" = "Niste u sesiji uživo" +"Not in this font" = "Nije u ovom fontu" +"Not now" = "Ne sada" +"Not properties, kept as written: {names}" = "Nisu svojstva, zadržano kako je napisano: {names}" +"Not checked yet" = "Još nije provjereno" +"Not read yet" = "Još nije pročitano" +"Not shared" = "Nije podijeljeno" +"Note {n}" = "Bilješka {n}" +"Nothing changed since this version." = "Ništa se nije promijenilo od ove verzije." +"Nothing changed since this was marked ready for dev." = "Ništa se nije promijenilo otkako je ovo označeno kao spremno za razvoj." +"Nothing here yet. Set a frame's status to list it." = "Ovdje još nema ničega. Postavite status okvira da se pojavi na listi." +"Nothing online yet. Use Share on a file to put it online and it is listed here." = "Još ništa nije na mreži. Koristite Dijeli na datoteci da je postavite na mrežu i ona se pojavljuje ovdje." +"Nothing to export" = "Nema ničega za izvoz" +"Nov" = "nov." +"Now" = "Sada" +"Nudge (Shift: big nudge)" = "Pomak (Shift: veliki pomak)" +"Nudge amount" = "Iznos pomaka" +"Number" = "Broj" +"Number ↑" = "Broj ↑" +"Number ↓" = "Broj ↓" +"Numbered list" = "Numerisana lista" +"Object" = "Objekat" +"Oct" = "okt." +"Off" = "Isključeno" +"Offered first when filling the slot (any content is allowed)" = "Nudi se prvo pri popunjavanju slota (dozvoljen je bilo koji sadržaj)" +"Offered first when swapping the instance (any component is allowed)" = "Nudi se prvo pri zamjeni instance (dozvoljena je bilo koja komponenta)" +"Offset" = "Pomak" +"Oldest first" = "Najstarije prvo" +"On click" = "Na klik" +"On drag" = "Na prevlačenje" +"On this page" = "Na ovoj stranici" +"One announcement in five common sizes: square, portrait, story, link and banner" = "Jedna objava u pet uobičajenih veličina: kvadrat, portret, priča, link i baner" +"Online" = "Na mreži" +"Online files" = "Datoteke na mreži" +"Online sharing is off: files are shared on the local network only." = "Dijeljenje na mreži je isključeno: datoteke se dijele samo na lokalnoj mreži." +"Only the first changed layers are listed." = "Navedeni su samo prvi promijenjeni slojevi." +"Only the first {n} changed layers are listed." = "Navedeno je samo prvih {n} promijenjenih slojeva." +"Only your threads" = "Samo Vaše niti" +"Opacity" = "Neprozirnost" +"Opacity & blend" = "Neprozirnost i miješanje" +"Opacity 10%…90%, 0: 100%" = "Neprozirnost 10%…90%, 0: 100%" +"Open" = "Otvori" +"Open .figcraft, .svg or images" = "Otvori .figcraft, .svg ili slike" +"Open branch" = "Otvori granu" +"Open file" = "Otvori datoteku" +"Open files" = "Otvorene datoteke" +"Open presentations" = "Otvorene prezentacije" +"Open in focus view" = "Otvori u fokusiranom prikazu" +"Open in new window" = "Otvori u novom prozoru" +"Open invite links in FigCraft" = "Otvaraj pozivne linkove u FigCraftu" +"Open link" = "Otvori link" +"Open link {url}" = "Otvori link {url}" +"Open overlay" = "Otvori preklop" +"Open prototype preview" = "Otvori pregled prototipa" +"Open variables ({count})" = "Otvori varijable ({count})" +"Opened as a new document" = "Otvoreno kao novi dokument" +"Opened “{name}” in a new tab" = "„{name}“ otvoreno u novoj kartici" +"Opening the file…" = "Otvaranje datoteke…" +"Opening {n} files as new files" = { one = "Otvaranje {n} datoteke kao nove datoteke", few = "Otvaranje {n} datoteke kao novih datoteka", other = "Otvaranje {n} datoteka kao novih datoteka" } +"Open|comments" = "Otvoreno" +"Options" = "Opcije" +"Orange" = "Narandžasta" +"Order" = "Redoslijed" +"Other apps may not open every .fig file exported here." = "Druge aplikacije možda neće otvoriti svaku .fig datoteku izvezenu ovdje." +"Other" = "Ostalo" +"Others lose access and keep their copy; the file stays on the server for you" = "Ostali gube pristup i zadržavaju svoju kopiju; datoteka ostaje na serveru za Vas" +"Others type this under Share ▸ Join with a code" = "Ostali ovo unose pod Dijeli ▸ Pridruži se pomoću koda" +"Outline stroke" = "Pretvori obrub u konturu" +"Outline text" = "Pretvori tekst u konture" +"Outlines" = "Konture" +"Outside" = "Izvana" +"Overflow" = "Prelijevanje sadržaja" +"Overlay" = "Preklop" +"Overlay position" = "Položaj preklopa" +"Overridden here (the collection it extends has another value)" = "Zamijenjeno ovdje (kolekcija koju proširuje ima drugu vrijednost)" +"Overrides" = "Zamjene" +"Owner token" = "Token vlasnika" +"Owner token copied" = "Token vlasnika kopiran" +"PDF print options" = "Opcije PDF štampe" +"PDF print settings" = "Postavke PDF štampe" +"Padding" = "Unutrašnja margina" +"Page" = "Stranica" +"Page deleted" = "Stranica izbrisana" +"Pages" = "Stranice" +"Pages added to the document" = "Stranice dodane u dokument" +"Pause" = "Pauza" +"Pink" = "Ružičasta" +"Placed on the current page" = "Postavljeno na trenutnu stranicu" +"Pages: {pages}" = "Stranice: {pages}" +"Paint bucket" = "Kanta s bojom" +"Pan the canvas" = "Pomjeri platno" +"Pan with nothing selected (Shift: farther)" = "Pomjeranje kada ništa nije odabrano (Shift: dalje)" +"Panels" = "Paneli" +"Paper" = "Papir" +"Paragraph indent" = "Uvlačenje pasusa" +"Paragraph indent applies to left-aligned text" = "Uvlačenje pasusa se primjenjuje na lijevo poravnat tekst" +"Paragraph spacing" = "Razmak pasusa" +"Pass through" = "Propusti" +"Paste a link (https://…)" = "Zalijepite link (https://…)" +"Paste a team library link (a view link)" = "Zalijepite link timske biblioteke (link za pregled)" +"Paste effect" = "Zalijepi efekat" +"Paste fill" = "Zalijepi ispunu" +"Paste here" = "Zalijepi ovdje" +"Paste stroke" = "Zalijepi obrub" +"Paste to replace" = "Zalijepi kao zamjenu" +"Pasted design layers; {n} kinds of content were left out" = { one = "Zalijepljeni slojevi dizajna; {n} vrsta sadržaja je izostavljena", few = "Zalijepljeni slojevi dizajna; {n} vrste sadržaja su izostavljene", other = "Zalijepljeni slojevi dizajna; {n} vrsta sadržaja je izostavljeno" } +"Pattern" = "Uzorak" +"Pattern alignment" = "Poravnanje uzorka" +"Pattern scale" = "Razmjera uzorka" +"Pattern source" = "Izvor uzorka" +"Pen" = "Olovka" +"Pencil" = "Grafitna olovka" +"People in this file" = "Osobe u ovoj datoteci" +"People join from anywhere with a code. The file is kept on {server} while you share it." = "Osobe se pridružuju s bilo kojeg mjesta pomoću koda. Datoteka se čuva na serveru {server} dok je dijelite." +"People on your network join with a code. Nothing goes through a server." = "Osobe na Vašoj mreži se pridružuju pomoću koda. Ništa ne ide preko servera." +"Phone" = "Telefon" +"Pick color" = "Odaberi boju" +"Pick color (I)" = "Odaberi boju (I)" +"Pick one font family first" = "Prvo odaberite jednu porodicu fontova" +"Pick the Frame tool, then drag on the canvas or choose a device size" = "Odaberite alat Okvir, a zatim prevucite po platnu ili odaberite veličinu uređaja" +"Pin a property" = "Prikači svojstvo" +"Pinch" = "Štipanje" +"Pixel grid" = "Mreža piksela" +"Pixel preview 1x" = "Pregled piksela 1x" +"Pixel preview 2x" = "Pregled piksela 2x" +"Place a shape or frame (its tool chosen)" = "Postavi oblik ili okvir (odabran je njegov alat)" +"Place automatically" = "Postavi automatski" +"Place image" = "Postavi sliku" +"Plugin" = "Dodatak" +"Plugins run in FigCraft's sandbox, without files, network or clock. Install only plugins you trust." = "Dodaci se izvršavaju u FigCraftovom izolovanom okruženju, bez datoteka, mreže i sata. Instalirajte samo dodatke kojima vjerujete." +"Plugins" = "Dodaci" +"Plugins & widgets" = "Dodaci i vidžeti" +"Plus darker" = "Plus tamnije" +"Plus lighter" = "Plus svjetlije" +"Plus one" = "Plus jedan" +"Point" = "Tačka" +"Points" = "Tačke" +"Polygon" = "Poligon" +"Polygons" = "Poligoni" +"Port" = "Port" +"Position" = "Položaj" +"Post" = "Objavi" +"Preferences" = "Postavke" +"Preferred" = "Preferirano" +"Present" = "Prezentuj" +"Present or preview" = "Prezentuj ili pregledaj" +"Present this flow" = "Prezentuj ovaj tok" +"Presentation" = "Prezentacija" +"Presentation slides" = "Slajdovi prezentacije" +"Presenting: comments" = "Prezentovanje: komentari" +"Presenting: cycle the size options" = "Prezentovanje: kruženje kroz opcije veličine" +"Presenting: full screen" = "Prezentovanje: preko cijelog ekrana" +"Presenting: next frame" = "Prezentovanje: sljedeći okvir" +"Presenting: previous frame" = "Prezentovanje: prethodni okvir" +"Presenting: restart" = "Prezentovanje: počni ispočetka" +"Preserve scroll position" = "Zadrži položaj skrolanja" +"Presets" = "Predlošci" +"Press a key…" = "Pritisnite tipku…" +"Playground" = "Igralište" +"Preview" = "Pregled" +"Preview this flow" = "Pregledaj ovaj tok" +"Preview this frame" = "Pregledaj ovaj okvir" +"Previous frame" = "Prethodni okvir" +"Previous ready for dev" = "Prethodno spremno za razvoj" +"Progressive" = "Progresivno" +"Properties" = "Svojstva" +"Properties copied" = "Svojstva kopirana" +"Prototype" = "Prototip" +"Prototype preview" = "Pregled prototipa" +"Prototype settings" = "Postavke prototipa" +"Publish" = "Objavi" +"Publish changes" = "Objavi promjene" +"Publish to another server…" = "Objavi na drugi server…" +"Publish to server" = "Objavi na server" +"Published version {v}" = "Objavljena verzija {v}" +"Published version {v} to the server" = "Verzija {v} objavljena na serveru" +"Published version {v}: save the file so other files can use it" = "Objavljena verzija {v}: sačuvajte datoteku da je druge datoteke mogu koristiti" +"Published · {people}" = "Objavljeno · {people}" +"Publishing with the server's key." = "Objavljivanje pomoću ključa servera." +"Publishing…" = "Objavljivanje…" +"Push" = "Potisni" +"Push changes to main component" = "Potisni promjene u glavnu komponentu" +"Put text on path" = "Postavi tekst na putanju" +"Question" = "Pitanje" +"R" = "R" +"Radial" = "Radijalno" +"Radius" = "Radijus" +"Ratio" = "Omjer" +"Reading the library…" = "Čitanje biblioteke…" +"Ready for dev" = "Spremno za razvoj" +"Real name" = "Pravo ime" +"Recent" = "Nedavno" +"Recent files" = "Nedavne datoteke" +"Recents" = "Nedavno" +"Recovered {n} unsaved files after the app quit unexpectedly: save them to keep them" = { one = "Vraćena je {n} nesačuvana datoteka nakon neočekivanog zatvaranja aplikacije: sačuvajte je da je zadržite", few = "Vraćene su {n} nesačuvane datoteke nakon neočekivanog zatvaranja aplikacije: sačuvajte ih da ih zadržite", other = "Vraćeno je {n} nesačuvanih datoteka nakon neočekivanog zatvaranja aplikacije: sačuvajte ih da ih zadržite" } +"Rectangle" = "Pravougaonik" +"Rectangles" = "Pravougaonici" +"Red" = "Crvena" +"Reduce motion" = "Smanji pokrete" +"Refraction" = "Prelamanje" +"Regular expression" = "Regularni izraz" +"Relative to" = "U odnosu na" +"Relative to your system's display scaling (100% is the system's own size). Document zoom is separate." = "U odnosu na skaliranje ekrana Vašeg sistema (100% je veličina samog sistema). Zumiranje dokumenta je odvojeno." +"Reload the page to get back the unsaved files the browser had room for." = "Ponovo učitajte stranicu da vratite nesačuvane datoteke za koje je preglednik imao mjesta." +"Reload the page to get your unsaved files back." = "Ponovo učitajte stranicu da vratite nesačuvane datoteke." +"Reload the page to start again." = "Ponovo učitajte stranicu da počnete iznova." +"Remove" = "Ukloni" +"Remove all" = "Ukloni sve" +"Remove annotation" = "Ukloni anotaciju" +"Remove auto layout" = "Ukloni automatski raspored" +"Remove column" = "Ukloni kolonu" +"Remove dev resource" = "Ukloni resurs za programere" +"Remove export setting" = "Ukloni postavku izvoza" +"Remove from recents" = "Ukloni iz nedavnih" +"Remove from server" = "Ukloni sa servera" +"Remove from server…" = "Ukloni sa servera…" +"Remove guide" = "Ukloni vodilicu" +"Remove interaction" = "Ukloni interakciju" +"Remove library from this file" = "Ukloni biblioteku iz ove datoteke" +"Remove measurement" = "Ukloni mjerenje" +"Remove min and max" = "Ukloni min. i maks." +"Remove min and max height" = "Ukloni min. i maks. visinu" +"Remove min and max width" = "Ukloni min. i maks. širinu" +"Remove regions" = "Ukloni oblasti" +"Remove row" = "Ukloni red" +"Remove slot" = "Ukloni slot" +"Remove starting point" = "Ukloni početnu tačku" +"Remove stop" = "Ukloni tačku gradijenta" +"Remove text from path" = "Ukloni tekst s putanje" +"Remove the else and its actions" = "Ukloni „inače“ i njegove radnje" +"Remove this condition and its actions" = "Ukloni ovaj uslov i njegove radnje" +"Remove this file from the server? It can't be shared or opened from there again. Your copy stays open here." = "Ukloniti ovu datoteku sa servera? Više se ne može dijeliti ni otvarati odatle. Vaša kopija ostaje otvorena ovdje." +"Remove {name} from session" = "Ukloni {name} iz sesije" +"Remove {name} from {server}?" = "Ukloniti {name} sa servera {server}?" +"Removed" = "Uklonjeno" +"Removed from the server" = "Uklonjeno sa servera" +"Removed since it was marked" = "Uklonjeno otkako je označeno" +"Removed since this version" = "Uklonjeno od ove verzije" +"Rename" = "Preimenuj" +"Rename duplicated layers" = "Preimenuj duplicirane slojeve" +"Rename folder" = "Preimenuj folder" +"Rename group" = "Preimenuj grupu" +"Rename layers" = "Preimenuj slojeve" +"Rename mode" = "Preimenuj način" +"Rename on the server" = "Preimenuj na serveru" +"Rename on the server…" = "Preimenuj na serveru…" +"Rename page" = "Preimenuj stranicu" +"Rename to" = "Preimenuj u" +"Reorder selection" = "Promijeni redoslijed odabira" +"Replace all" = "Zamijeni sve" +"Replace mixed export settings" = "Zamijeni miješane postavke izvoza" +"Replace with" = "Zamijeni s" +"Replace with a new interaction" = "Zamijeni novom interakcijom" +"Reply" = "Odgovori" +"Report" = "Izvještaj" +"Report this file…" = "Prijavi ovu datoteku…" +"Reset" = "Resetuj" +"Reset adjustments" = "Resetuj prilagodbe" +"Reset all changes" = "Resetuj sve promjene" +"Reset all overrides on this layer" = "Resetuj sve zamjene na ovom sloju" +"Reset grid" = "Resetuj mrežu" +"Reset overrides" = "Resetuj zamjene" +"Reset slot" = "Resetuj slot" +"Reset this override" = "Resetuj ovu zamjenu" +"Reset to style" = "Vrati na stil" +"Reset to the inherited value" = "Vrati na naslijeđenu vrijednost" +"Resize by the nudge amount" = "Promijeni veličinu za iznos pomaka" +"Resize frames to the device's screen (or the window without a device): their constraints and auto layout respond" = "Prilagodi veličinu okvira ekranu uređaja (ili prozoru bez uređaja): njihova ograničenja i automatski raspored reaguju" +"Resize to fit" = "Prilagodi veličinu sadržaju" +"Resizing" = "Promjena veličine" +"Resolve" = "Riješi" +"Resolve change" = "Riješi promjenu" +"Resolved" = "Riješeno" +"Responsive" = "Responzivno" +"Restart" = "Počni ispočetka" +"Restore" = "Vrati" +"Restore main component" = "Vrati glavnu komponentu" +"Restore this version" = "Vrati ovu verziju" +"Restored “{name}”" = "Vraćeno: „{name}“" +"Retrospective" = "Retrospektiva" +"Results" = "Rezultati" +"Resume" = "Nastavi" +"Reverse the order" = "Obrni redoslijed" +"Reversed triangle" = "Obrnuti trougao" +"Review and merge" = "Pregledaj i spoji" +"Ribbon" = "Traka" +"Right" = "Desno" +"Right padding" = "Desna unutrašnja margina" +"Right side" = "Desna strana" +"Right side width" = "Širina desne strane" +"Rotate 90°" = "Rotiraj za 90°" +"Rotate 90° right" = "Rotiraj za 90° udesno" +"Rotate to landscape" = "Rotiraj u položeno" +"Rotate to portrait" = "Rotiraj u uspravno" +"Rotation" = "Rotacija" +"Rotation jitter" = "Nasumična rotacija" +"Round" = "Zaobljeno" +"Rounded" = "Zaobljeno" +"Rounded rectangle" = "Zaobljeni pravougaonik" +"Row" = "Red" +"Row gap" = "Razmak redova" +"Row sizes" = "Veličine redova" +"Row span" = "Raspon redova" +"Rows" = "Redovi" +"Rows {count}" = "Redovi {count}" +"Rulers" = "Ravnala" +"Run" = "Pokreni" +"Run {label}" = "Pokreni: {label}" +"Save file" = "Sačuvaj datoteku" +"Save files automatically" = "Automatski čuvaj datoteke" +"Search templates" = "Pretraži predloške" +"See all templates" = "Pogledaj sve predloške" +"Select layers and they space themselves as their content changes" = "Odaberite slojeve i oni će sami podešavati razmak kako im se sadržaj mijenja" +"SHA-256: {sha}…" = "SHA-256: {sha}…" +"Same as layer" = "Isto kao sloj" +"Saturation" = "Zasićenost" +"Save" = "Sačuvaj" +"Save as" = "Sačuvaj kao" +"Save as preset…" = "Sačuvaj kao predložak…" +"Save version {key}" = "Sačuvaj verziju {key}" +"Saved" = "Sačuvano" +"Saved {name}" = "Sačuvano: {name}" +"Say something" = "Recite nešto" +"Scale" = "Razmjera" +"Scatter" = "Rasipanje" +"Scoping: where pickers offer it" = "Opseg: gdje je birači nude" +"Screen" = "Ekran" +"Scroll behavior" = "Ponašanje skrolanja" +"Scroll to" = "Skrolaj do" +"Scroll to layer" = "Skrolaj do sloja" +"Scroll with parent" = "Skrolaj s roditeljem" +"Search plugins" = "Pretraži dodatke" +"Search" = "Pretraži" +"Search actions, layers and tools" = "Pretraži radnje, slojeve i alate" +"Search assets" = "Pretraži resurse" +"Search comments" = "Pretraži komentare" +"Search files and templates" = "Pretraži datoteke i predloške" +"Search results" = "Rezultati pretrage" +"Search fonts" = "Pretraži fontove" +"Use fonts installed on this computer…" = "Koristi fontove instalirane na ovom računaru…" +"Search layers" = "Pretraži slojeve" +"Search pages" = "Pretraži stranice" +"Search shortcuts" = "Pretraži prečice" +"Section" = "Sekcija" +"Section color" = "Boja sekcije" +"Sections" = "Sekcije" +"Select a frame and add a starting point to present it as a flow." = "Odaberite okvir i dodajte početnu tačku da ga prezentujete kao tok." +"Select a frame to preview it" = "Odaberite okvir da ga pregledate" +"Select a layer to see its properties and code" = "Odaberite sloj da vidite njegova svojstva i kod" +"Select all" = "Odaberi sve" +"Select all with same" = "Odaberi sve s istim" +"Select layer" = "Odaberi sloj" +"Select layers to apply the style to" = "Odaberite slojeve na koje se primjenjuje stil" +"Select layers with this color" = "Odaberi slojeve s ovom bojom" +"Select overlapping shapes" = "Odaberite oblike koji se preklapaju" +"Select points to edit their position, radius and mirroring" = "Odaberite tačke da uredite njihov položaj, radijus i zrcaljenje" +"Select slot" = "Odaberi slot" +"Selection colors" = "Boje odabira" +"Selection" = "Odabir" +"Selection box, {w} by {h} at {x}, {y}: arrows move it, Shift+arrows or {cmd}+arrows size it, Enter selects, Escape cancels" = "Okvir odabira, {w} sa {h} na {x}, {y}: strelice ga pomjeraju, Shift+strelice ili {cmd}+strelice mijenjaju veličinu, Enter odabire, Escape otkazuje" +"Selection box: arrows move it, Shift+arrows or {cmd}+arrows size it, Enter selects, Escape cancels" = "Okvir odabira: strelice ga pomjeraju, Shift+strelice ili {cmd}+strelice mijenjaju veličinu, Enter odabire, Escape otkazuje" +"Send backward" = "Pomakni nazad" +"Send report" = "Pošalji izvještaj" +"Send to back" = "Pomakni na dno" +"Sep" = "sep." +"Server address (ws://host:47900/)" = "Adresa servera (ws://host:47900/)" +"Server address" = "Adresa servera" +"Server for online sharing" = "Server za dijeljenje na mreži" +"Server key" = "Ključ servera" +"Set as default" = "Postavi kao zadano" +"Set corner smoothing to 60%" = "Postavi zaglađivanje uglova na 60%" +"Set variable" = "Postavi varijablu" +"Set variable mode" = "Postavi način varijable" +"Set variable {name}" = "Postavi varijablu {name}" +"Set {name} to {value}" = "Postavi {name} na {value}" +"Shadows" = "Tamni tonovi" +"Shape" = "Oblik" +"Shape builder" = "Graditelj oblika" +"Shape tools" = "Alati za oblike" +"Shapes" = "Oblici" +"Share" = "Dijeli" +"Share this file" = "Dijeli ovu datoteku" +"Share with a code" = "Dijeli pomoću koda" +"Share: live session, export" = "Dijeli: sesija uživo, izvoz" +"Shared" = "Podijeljeno" +"Shared: copy its code from the file's menu" = "Podijeljeno: kopirajte njen kod iz menija datoteke" +"Online sharing is off: no server is set in Preferences. Here you can join a shared file." = "Dijeljenje na mreži je isključeno: u Postavkama nije postavljen server. Ovdje se možete pridružiti podijeljenoj datoteci." +"Sharing on the local network (online sharing is off: no server is set in Preferences)." = "Dijeljenje na lokalnoj mreži (dijeljenje na mreži je isključeno: u Postavkama nije postavljen server)." +"Sharing on your network · {people}" = "Dijeljenje na Vašoj mreži · {people}" +"Sharing online · {people}" = "Dijeljenje na mreži · {people}" +"Sharing stopped: the file stays on the server, open only to you" = "Dijeljenje zaustavljeno: datoteka ostaje na serveru, otvorena samo Vama" +"Show" = "Prikaži" +"Show all templates" = "Prikaži sve predloške" +"Show as grid" = "Prikaži kao mrežu" +"Show as list" = "Prikaži kao listu" +"Show autosaves" = "Prikaži automatska čuvanja" +"Show behind transparent areas" = "Prikaži iza prozirnih oblasti" +"Show comments (Shift+C)" = "Prikaži komentare (Shift+C)" +"Show device frame" = "Prikaži okvir uređaja" +"Show dimensions on objects" = "Prikaži dimenzije na objektima" +"Show hotspot hints" = "Prikaži nagovještaje aktivnih zona" +"Show in Explorer" = "Prikaži u Exploreru" +"Show in Finder" = "Prikaži u Finderu" +"Show in folder" = "Prikaži u folderu" +"Show only this on the canvas" = "Prikaži samo ovo na platnu" +"Show open" = "Prikaži otvorene" +"Show section contents" = "Prikaži sadržaj sekcije" +"Show this layer" = "Prikaži ovaj sloj" +"Show usage" = "Prikaži upotrebu" +"Show/Hide" = "Prikaži/sakrij" +"Show/Hide UI" = "Prikaži/sakrij interfejs" +"Side by side" = "Jedno pored drugog" +"Sidebar" = "Bočna traka" +"Simplify stroke" = "Pojednostavi obrub" +"Size" = "Veličina" +"Size jitter" = "Nasumična veličina" +"Skip ink" = "Preskoči tintu" +"Slashed zero" = "Precrtana nula" +"Slice" = "Isječak" +"Slices" = "Isječci" +"Slide in" = "Uklizavanje" +"Slide out" = "Izlizavanje" +"Slot" = "Slot" +"Slot content" = "Sadržaj slota" +"Small capitals" = "Mala velika slova" +"Small caps" = "Mala velika slova" +"Smart animate" = "Pametna animacija" +"Snap to pixel grid" = "Prianjaj uz mrežu piksela" +"Social and slides" = "Društvene mreže i slajdovi" +"Social media" = "Društvene mreže" +"Social post sizes" = "Veličine objava za društvene mreže" +"Soft light" = "Meko svjetlo" +"Solid" = "Puna" +"Some variants have the same property values: give each one a unique combination" = "Neke varijante imaju iste vrijednosti svojstava: dajte svakoj jedinstvenu kombinaciju" +"Sort" = "Sortiraj" +"Sort by" = "Sortiraj po" +"Sort by date" = "Sortiraj po datumu" +"Sort by page" = "Sortiraj po stranici" +"Sort by {column}" = "Sortiraj po: {column}" +"Space around" = "Razmak okolo" +"Space between" = "Razmak između" +"Space drag" = "Prevlačenje uz Space" +"Space evenly" = "Ravnomjeran razmak" +"Space+drag" = "Space+prevlačenje" +"Spacing" = "Razmak" +"Spam, stolen work, abuse…" = "Spam, ukradeni rad, zloupotreba…" +"Speech bubble" = "Oblačić" +"Splay" = "Raširi" +"Spotlight me" = "Stavi me u fokus" +"Spread" = "Širenje" +"Square" = "Kvadrat" +"Stamp" = "Pečat" +"Stamps" = "Pečati" +"Standard" = "Standardno" +"Standard ligatures" = "Standardne ligature" +"Star" = "Zvijezda" +"Stars" = "Zvijezde" +"Start" = "Početak" +"Start ascending from / stop descending at" = "Počni rasti od / prestani opadati na" +"Start from a blank canvas" = "Počni od praznog platna" +"Start from a template" = "Počni od predloška" +"Start on path" = "Početak na putanji" +"Start on the Home screen" = "Pokreni na početnom ekranu" +"Start point" = "Početna tačka" +"Start sharing" = "Počni dijeliti" +"Start sharing with the Share button, then pass on the code it gives" = "Počnite dijeliti dugmetom Dijeli, a zatim proslijedite kod koji ono da" +"Start vote" = "Počni glasanje" +"Starting to share…" = "Pokretanje dijeljenja…" +"Status" = "Status" +"Sticky" = "Ljepljivo" +"Sticky note" = "Ljepljiva bilješka" +"Sticky note colors" = "Boje ljepljivih bilješki" +"Sticky notes" = "Ljepljive bilješke" +"Sticky notes, shapes and connectors" = "Ljepljive bilješke, oblici i konektori" +"Stop" = "Zaustavi" +"Stop following {name}" = "Prestani pratiti: {name}" +"Stop session" = "Zaustavi sesiju" +"Stop sharing" = "Zaustavi dijeljenje" +"Stop spotlighting" = "Prekini fokusiranje" +"Stop timer" = "Zaustavi tajmer" +"Stop {n} {hex}" = "Tačka {n} {hex}" +"Straight" = "Ravno" +"Stretch" = "Rastegni" +"Strikethrough" = "Precrtano" +"String" = "Tekst" +"Stroke" = "Obrub" +"Stroke style" = "Stil obruba" +"Stroke weight" = "Debljina obruba" +"Strokes" = "Obrubi" +"Strong line every" = "Jača linija svakih" +"Style" = "Stil" +"Styles" = "Stilovi" +"Stylistic set 1" = "Stilski skup 1" +"Stylistic set 2" = "Stilski skup 2" +"Stylistic set 3" = "Stilski skup 3" +"Stylistic set 4" = "Stilski skup 4" +"Stylistic set 5" = "Stilski skup 5" +"Subtract" = "Oduzmi" +"Subtracts" = "Oduzima" +"Suffix" = "Sufiks" +"Suspend snapping while dragging" = "Privremeno isključi prianjanje pri prevlačenju" +"Swap instance" = "Zamijeni instancu" +"Swap library: use another library's assets of the same names" = "Zamijeni biblioteku: koristi istoimene resurse druge biblioteke" +"Swap orientation" = "Zamijeni orijentaciju" +"Swap overlay" = "Zamijeni preklop" +"Swap to {name}" = "Zamijeni s {name}" +"Swap width and height" = "Zamijeni širinu i visinu" +"Swapped instance" = "Zamijenjena instanca" +"Swapped {n} assets" = { one = "Zamijenjen {n} resurs", few = "Zamijenjena {n} resursa", other = "Zamijenjeno {n} resursa" } +"Swapped {n} assets; {missed} had no match and still use the old library" = { one = "Zamijenjen {n} resurs; bez podudaranja: {missed}, i dalje koriste staru biblioteku", few = "Zamijenjena {n} resursa; bez podudaranja: {missed}, i dalje koriste staru biblioteku", other = "Zamijenjeno {n} resursa; bez podudaranja: {missed}, i dalje koriste staru biblioteku" } +"Sweep" = "Raspon" +"System" = "Sistem" +"Tab / Shift+Tab" = "Tab / Shift+Tab" +"Table" = "Tabela" +"Tablet" = "Tablet" +"Tabular numbers" = "Tabelarne brojke" +"Take the values from the first selected layer" = "Preuzmi vrijednosti s prvog odabranog sloja" +"Taper" = "Suženje" +"Taper both ends" = "Suzi oba kraja" +"Tell the server's operator what is wrong with it" = "Recite operateru servera šta nije u redu s njom" +"Temperature" = "Temperatura" +"Template" = "Predložak" +"Templates" = "Predlošci" +"Terms" = "Uslovi" +"Text" = "Tekst" +"Text align" = "Poravnanje teksta" +"Text content" = "Sadržaj teksta" +"Text on a path" = "Tekst na putanji" +"Text size" = "Veličina teksta" +"Text style" = "Stil teksta" +"Text styles" = "Stilovi teksta" +"Texts" = "Tekstovi" +"Texture" = "Tekstura" +"The canvas previews colors in sRGB; exported PNG, JPG and WebP files are tagged Display P3." = "Platno prikazuje boje u sRGB-u; izvezene PNG, JPG i WebP datoteke su označene kao Display P3." +"The destination document is unavailable. Nothing was imported." = "Odredišni dokument nije dostupan. Ništa nije uvezeno." +"The destination document was closed. Nothing was imported." = "Odredišni dokument je zatvoren. Ništa nije uvezeno." +"The destination page was removed. Nothing was imported." = "Odredišna stranica je uklonjena. Ništa nije uvezeno." +"The file is deleted from the server: nobody can open or join it from there again, and this can't be undone. Copies that are open stay with whoever has them." = "Datoteka se briše sa servera: niko je više ne može otvoriti niti joj se pridružiti odatle, i ovo se ne može poništiti. Otvorene kopije ostaju kod onih koji ih imaju." +"The file now holds another library" = "Datoteka sada sadrži drugu biblioteku" +"The file now holds another library (\"{name}\")" = "Datoteka sada sadrži drugu biblioteku („{name}“)" +"The files you shared or published online from this computer. They stay on their server until you remove them." = "Datoteke koje ste podijelili ili objavili na mreži s ovog računara. Ostaju na svom serveru dok ih ne uklonite." +"The link carries the session's secret: share it only with people you invite." = "Link nosi tajnu sesije: dijelite ga samo s osobama koje pozovete." +"The name in your online files and on the server. The document inside keeps its own name." = "Ime u Vašim datotekama na mreži i na serveru. Dokument unutra zadržava svoje ime." +"The selection uses several text styles: click to apply one" = "Odabir koristi nekoliko stilova teksta: kliknite da primijenite jedan" +"The server deletes this file if nobody opens it before {date}." = "Server briše ovu datoteku ako je niko ne otvori prije {date}." +"The whole file" = "Cijela datoteka" +"The window is too small for {size}%, so the interface is drawn at {drawn}%. Make the window larger to use {size}%." = "Prozor je premalen za {size}%, pa je interfejs iscrtan na {drawn}%. Povećajte prozor da koristite {size}%." +"Theme" = "Tema" +"There's no destination for that action" = "Za tu radnju nema odredišta" +"Thickness" = "Debljina" +"This branch can't be reviewed: {e}" = "Ova grana se ne može pregledati: {e}" +"This branch was merged or archived." = "Ova grana je spojena ili arhivirana." +"This computer only" = "Samo ovaj računar" +"This computer remembers the owner token, so the file can be managed from the home screen's Online list. Copy it to manage the file from somewhere else: it is a password for this file and won't be shown again." = "Ovaj računar pamti token vlasnika, pa se datotekom može upravljati s liste Na mreži na početnom ekranu. Kopirajte ga da upravljate datotekom s drugog mjesta: to je lozinka za ovu datoteku i neće se ponovo prikazati." +"This file uses team libraries on servers you haven't used here. They aren't contacted until you check them." = "Ova datoteka koristi timske biblioteke na serverima koje ovdje niste koristili. Ne kontaktiraju se dok ih ne provjerite." +"This page keeps the owner token only while it is open. Copy it to manage the file later: it is a password for this file and won't be shown again." = "Ova stranica čuva token vlasnika samo dok je otvorena. Kopirajte ga da kasnije upravljate datotekom: to je lozinka za ovu datoteku i neće se ponovo prikazati." +"This condition is edited as an expression" = "Ovaj uslov se uređuje kao izraz" +"This file" = "Ova datoteka" +"This file has unsaved changes" = "Ova datoteka ima nesačuvane promjene" +"This file is too large to join here (up to {mb} MB)" = "Ova datoteka je prevelika za pridruživanje ovdje (do {mb} MB)" +"This file uses fonts that aren't installed on this computer. Their text is drawn in a fallback font until you install them." = "Ova datoteka koristi fontove koji nisu instalirani na ovom računaru. Njihov tekst se iscrtava rezervnim fontom dok ih ne instalirate." +"This file is on {server}, open only to you. Share it to let others in with a new code." = "Ova datoteka je na serveru {server}, otvorena samo Vama. Podijelite je da drugi uđu s novim kodom." +"This frame is new on the branch." = "Ovaj okvir je nov u grani." +"This frame isn't on the branch." = "Ovaj okvir nije u grani." +"This link opens a website outside the prototype:" = "Ovaj link otvara web stranicu izvan prototipa:" +"This link opens your mail app to write a message:" = "Ovaj link otvara Vašu aplikaciju za e-poštu da napišete poruku:" +"This server is open to the public: no key needed." = "Ovaj server je javno dostupan: ključ nije potreban." +"This server needs its key: add ?key=… to the address (`figcraft-server key` prints it on the server's machine)." = "Ovom serveru treba njegov ključ: dodajte ?key=… adresi (`figcraft-server key` ga ispisuje na računaru servera)." +"This server takes files only with its key: see Advanced." = "Ovaj server prima datoteke samo s njegovim ključem: pogledajte Napredno." +"Thumbs up" = "Palac gore" +"This version can't be read." = "Ova verzija se ne može pročitati." +"This version doesn't have it: all of it is new." = "Ova verzija to nema: sve je novo." +"Tidy up" = "Uredi" +"Tile" = "Popločaj" +"Tile type" = "Vrsta popločavanja" +"Timer" = "Tajmer" +"Tint" = "Nijansiranje" +"Title" = "Naslov" +"Title case" = "Velika početna slova" +"To share this library with your team, publish the file to a server (Share ▸ Publish to server…), then publish the library there." = "Da podijelite ovu biblioteku sa svojim timom, objavite datoteku na server (Dijeli ▸ Objavi na server…), a zatim tamo objavite biblioteku." +"To the layer around it" = "Do sloja oko njega" +"Toggle" = "Uključi/isključi" +"Toggle light/dark theme" = "Prebaci svijetlu/tamnu temu" +"Toggle visibility" = "Prebaci vidljivost" +"Tools" = "Alati" +"Top" = "Vrh" +"Top & bottom" = "Vrh i dno" +"Top left radius" = "Radijus gornjeg lijevog ugla" +"Top padding" = "Gornja unutrašnja margina" +"Top right radius" = "Radijus gornjeg desnog ugla" +"Transform" = "Transformiši" +"Triangle" = "Trougao" +"Triangle arrow" = "Trouglasta strelica" +"Trigger" = "Okidač" +"Trigger layer" = "Sloj okidača" +"True" = "Tačno" +"Truncate text" = "Skrati tekst" +"Truncate with an ellipsis" = "Skrati trotačkom" +"Try again" = "Pokušaj ponovo" +"Try another search or filter." = "Pokušajte drugu pretragu ili filter." +"Try another search, or browse templates." = "Pokušajte drugu pretragu ili pregledajte predloške." +"Try another word, or look at every kind." = "Pokušajte drugu riječ ili pogledajte sve vrste." +"Turn a layer into a component, reuse it, and change every copy at once" = "Pretvorite sloj u komponentu, ponovo je koristite i promijenite svaku kopiju odjednom" +"Two digits" = "Dvije cifre" +"Type" = "Vrsta" +"Type settings" = "Postavke tipografije" +"Type the join code you were given, or paste an invite link." = "Unesite kod za pridruživanje koji ste dobili ili zalijepite pozivni link." +"Typography" = "Tipografija" +"Underline" = "Podvučeno" +"Undo takes back only your own changes; what others changed since stays." = "Poništavanje vraća samo Vaše promjene; ono što su drugi u međuvremenu promijenili ostaje." +"Ungroup" = "Razgrupiši" +"Uniform" = "Ujednačeno" +"Union" = "Unija" +"Unions" = "Ujedinjuje" +"Unknown — treated as sRGB" = "Nepoznato — tretira se kao sRGB" +"Unread" = "Nepročitano" +"Unresolve" = "Poništi rješenje" +"Unsaved changes" = "Nesačuvane promjene" +"Unsaved changes in {names}. Save them before closing?" = "Nesačuvane promjene u: {names}. Sačuvati ih prije zatvaranja?" +"Unsaved changes: save first ({save}), or close the tab with {alt}-click to discard" = "Nesačuvane promjene: prvo sačuvajte ({save}) ili zatvorite karticu uz {alt}-klik da ih odbacite" +"Unsaved changes: save first, or close again with {key} to discard" = "Nesačuvane promjene: prvo sačuvajte ili ponovo zatvorite s {key} da ih odbacite" +"Up" = "Gore" +"Update check is not supported in the web browser." = "Provjera ažuriranja nije podržana u web pregledniku." +"Update plugin" = "Ažuriraj dodatak" +"Update" = "Ažuriraj" +"Update from main" = "Ažuriraj iz glavne" +"Update from selection" = "Ažuriraj iz odabira" +"Updated {components} and {styles}" = "Ažurirano: {components} i {styles}" +"Updated {name}" = "Ažurirano: {name}" +"Updating the graphics driver often helps. To use OpenGL only, start FigCraft from a Command Prompt with:" = "Ažuriranje grafičkog drajvera često pomaže. Da koristite samo OpenGL, pokrenite FigCraft iz Command Prompta s:" +"Updating the graphics driver often helps. WGPU_BACKEND (vulkan, gl, metal) names another graphics API to try." = "Ažuriranje grafičkog drajvera često pomaže. WGPU_BACKEND (vulkan, gl, metal) navodi drugi grafički API za pokušaj." +"FigCraft tried {apis}, then again with lower requirements on the power-saving GPU. Updating the graphics driver often helps." = "FigCraft je pokušao {apis}, a zatim ponovo s nižim zahtjevima na štedljivom GPU-u. Ažuriranje grafičkog drajvera često pomaže." +"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." = "Otprema ovu datoteku na FigCraft server i drži ovu karticu usklađenom s njom. Dobijate link za uređivanje i link za pregled." +"Uppercase" = "Velika slova" +"Use a fixed value" = "Koristi fiksnu vrijednost" +"Use an expression, e.g. count + 1" = "Koristite izraz, npr. count + 1" +"Use as mask" = "Koristi kao masku" +"Use auto layout" = "Koristi automatski raspored" +"Use number keys for opacity" = "Koristi brojeve za neprozirnost" +"Use the .figcraft or .fig extension." = "Koristite ekstenziju .figcraft ili .fig." +"Use the layer's fill" = "Koristi ispunu sloja" +"Use your browser's zoom to change the interface size." = "Koristite zumiranje preglednika da promijenite veličinu interfejsa." +"Used in {files} · {instances}" = "Korišteno u: {files} · {instances}" +"Username" = "Korisničko ime" +"Value" = "Vrijednost" +"Uses variables: each layer shows them in its own mode" = "Koristi varijable: svaki sloj ih prikazuje u svom načinu" +"Variable" = "Varijabla" +"Variable collections" = "Kolekcije varijabli" +"Variable modes" = "Načini varijabli" +"Variable width" = "Promjenjiva širina" +"Variables" = "Varijable" +"Variables JSON…" = "JSON varijabli…" +"Variables store reusable values (colours, numbers, strings, booleans) with modes such as Light and Dark." = "Varijable čuvaju vrijednosti za višekratnu upotrebu (boje, brojeve, tekstove, logičke vrijednosti) s načinima kao što su Svijetli i Tamni." +"Variant" = "Varijanta" +"Vector" = "Vektor" +"Vectors" = "Vektori" +"Version" = "Verzija" +"Version history" = "Historija verzija" +"Version {version}" = "Verzija {version}" +"Version {v} · {components} · {styles} · {variables}" = "Verzija {v} · {components} · {styles} · {variables}" +"Vertical" = "Vertikalno" +"Vertical align" = "Vertikalno poravnanje" +"Vertical hex" = "Vertikalni heksagon" +"Vertical padding" = "Vertikalna unutrašnja margina" +"Vertical spacing" = "Vertikalni razmak" +"Vertical trim" = "Vertikalno skraćivanje" +"View" = "Prikaz" +"View link" = "Link za pregled" +"View link copied" = "Link za pregled kopiran" +"View only" = "Samo pregled" +"View only: you see every change as it happens but can't edit. Leave to keep a copy you can edit." = "Samo pregled: vidite svaku promjenu dok se dešava, ali ne možete uređivati. Napustite da zadržite kopiju koju možete uređivati." +"Can comment: you see every change as it happens and can comment, but can't edit. Leave to keep a copy you can edit." = "Može komentarisati: vidite svaku promjenu dok se dešava i možete komentarisati, ali ne i uređivati. Napustite da zadržite kopiju koju možete uređivati." +"Viewing “{name}”" = "Pregled: „{name}“" +"Violet" = "Ljubičasta" +"Visibility" = "Vidljivost" +"Visible" = "Vidljivo" +"Vivid" = "Živo" +"Votes per person" = "Glasova po osobi" +"Voting session" = "Sesija glasanja" +"WGPU_BACKEND is set and names the graphics API to use; unsetting it lets FigCraft choose." = "WGPU_BACKEND je postavljen i navodi grafički API koji se koristi; ako ga uklonite, FigCraft bira sam." +"Warm" = "Toplo" +"Watch" = "Prati" +"Wavy" = "Valovito" +"Web" = "Web" +"Websites" = "Web stranice" +"WebSocket URL" = "WebSocket URL" +"WebSocket URL copied" = "WebSocket URL kopiran" +"Wedge" = "Klin" +"Weekly planner" = "Sedmični planer" +"Weight" = "Debljina" +"What changed since a saved version" = "Šta se promijenilo od sačuvane verzije" +"What you try here changes this preview and the code below, not the file" = "Ono što ovdje isprobate mijenja ovaj pregled i kod ispod, ne datoteku" +"What changed since it was marked ready for dev" = "Šta se promijenilo otkako je označeno kao spremno za razvoj" +"What is wrong with this file? The server's operator gets your report." = "Šta nije u redu s ovom datotekom? Operater servera dobija Vaš izvještaj." +"What it's for" = "Čemu služi" +"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." = "Nije poznato iz čega se ovo promijenilo: promijenilo se prije nego što je FigCraft čuvao kopiju okvira spremnih za razvoj. Riješite promjenu (ili je ponovo označite kao spremnu) da poredite od sada." +"When marked ready" = "Kada je označeno kao spremno" +"While hovering" = "Dok je miš iznad" +"While pressing" = "Dok je pritisnuto" +"White" = "Bijela" +"Who runs it, its terms and how long it keeps files" = "Ko ga vodi, njegovi uslovi i koliko dugo čuva datoteke" +"Whole screen" = "Cijeli ekran" +"Why it changed" = "Zašto se promijenilo" +"Widget" = "Vidžet" +"Widgets" = "Vidžeti" +"Width" = "Širina" +"Width point" = "Tačka širine" +"Width profile" = "Profil širine" +"Wireframe kit" = "Komplet za žičane modele" +"With the layers' export settings" = "S postavkama izvoza slojeva" +"Wrap" = "Prelomi" +"Wrap in new section" = "Umotaj u novu sekciju" +"Yellow" = "Žuta" +"Yesterday" = "Jučer" +"You" = "Vi" +"You'll get the shared file as a new tab and edit it together." = "Dobit ćete podijeljenu datoteku kao novu karticu i uređivati je zajedno." +"You're spotlighting: everyone follows your view" = "Vi ste u fokusu: svi prate Vaš prikaz" +"Your copy of the file stays open" = "Vaša kopija datoteke ostaje otvorena" +"Your copy stays open; the file stays on the server" = "Vaša kopija ostaje otvorena; datoteka ostaje na serveru" +"Your name" = "Vaše ime" +"Your system asks for reduced motion: animations stay off." = "Vaš sistem traži smanjene pokrete: animacije ostaju isključene." +"Your unsaved files were too large for the browser to keep." = "Vaše nesačuvane datoteke su bile prevelike da ih preglednik zadrži." +"Z" = "Z" +"Z to A" = "Ž do A" +"Zoom" = "Zumiranje" +"Zoom around the pointer" = "Zumiraj oko pokazivača" +"Zoom device to fill window" = "Zumiraj uređaj da ispuni prozor" +"Zoom in" = "Uvećaj" +"Zoom out" = "Umanji" +"Zoom to 100%" = "Zumiraj na 100%" +"Zoom to 200%" = "Zumiraj na 200%" +"Zoom to 50%" = "Zumiraj na 50%" +"Zoom to fit" = "Zumiraj da stane" +"Zoom to selection" = "Zumiraj na odabir" +"Zoom tool: click to zoom in, drag an area" = "Alat za zumiranje: kliknite da uvećate, prevucite oblast" +"Zoom tool: zoom out" = "Alat za zumiranje: umanji" +"and {n} more" = { one = "i još {n}", few = "i još {n}", other = "i još {n}" } +"bleed marks" = "oznake prelijevanja" +"by {author}" = "autor: {author}" +"call any command its access allows" = "poziva bilo koju naredbu koju njegov pristup dozvoljava" +"call only: {commands}" = "poziva samo: {commands}" +"can edit the document" = "može uređivati dokument" +"can save files" = "može čuvati datoteke" +"conditional prototype actions nested too deeply were skipped" = "preskočene su uslovne radnje prototipa koje su previše duboko ugniježđene" +"conditional prototype actions with conditions that can't be evaluated were skipped" = "preskočene su uslovne radnje prototipa s uslovima koji se ne mogu izračunati" +"connector label background was skipped: style data is missing" = "pozadina oznake konektora je preskočena: nedostaju podaci o stilu" +"connector label was skipped: background bounds are invalid" = "oznaka konektora je preskočena: granice pozadine nisu ispravne" +"connector label was skipped: background transform is invalid" = "oznaka konektora je preskočena: transformacija pozadine nije ispravna" +"connector label was skipped: composed text transform is invalid" = "oznaka konektora je preskočena: složena transformacija teksta nije ispravna" +"connector label was skipped: derived background bounds are missing" = "oznaka konektora je preskočena: nedostaju izvedene granice pozadine" +"connector label was skipped: derived text bounds are missing" = "oznaka konektora je preskočena: nedostaju izvedene granice teksta" +"connector label was skipped: text bounds are invalid" = "oznaka konektora je preskočena: granice teksta nisu ispravne" +"connector label was skipped: text style data is missing" = "oznaka konektora je preskočena: nedostaju podaci o stilu teksta" +"connector label was skipped: text transform is invalid" = "oznaka konektora je preskočena: transformacija teksta nije ispravna" +"connector labels were skipped" = "oznake konektora su preskočene" +"connector layers import as static frame/vector snapshots with labels when present; live endpoint bindings are not retained" = "slojevi konektora se uvoze kao statični snimci okvira/vektora s oznakama ako postoje; žive veze krajnjih tačaka se ne zadržavaju" +"connector snapshot vector data is missing; connector was left empty" = "nedostaju vektorski podaci snimka konektora; konektor je ostavljen prazan" +"connectors whose ends can't be placed are empty" = "konektori čiji se krajevi ne mogu postaviti su prazni" +"crop marks" = "oznake rezanja" +"damaged vector geometry was skipped" = "oštećena vektorska geometrija je preskočena" +"damaged vector networks import as outlines" = "oštećene vektorske mreže se uvoze kao konture" +"development: {path}" = "razvoj: {path}" +"document children other than pages were skipped" = "elementi dokumenta koji nisu stranice su preskočeni" +"duplicate grid track sizing entries use equal tracks" = "duplirani unosi veličina traka mreže koriste jednake trake" +"e.g. count + 1" = "npr. count + 1" +"e.g. count >= 3 and not done" = "npr. count >= 3 and not done" +"elbowed and curved connectors without a saved path follow FigCraft's own routing" = "kutni i zakrivljeni konektori bez sačuvane putanje slijede FigCraftovo vlastito usmjeravanje" +"entries without a node type were skipped" = "unosi bez vrste čvora su preskočeni" +"figcraft:// links from a browser, chat or email open this app and join the session." = "figcraft:// linkovi iz preglednika, chata ili e-pošte otvaraju ovu aplikaciju i pridružuju se sesiji." +"from {server}" = "sa servera {server}" +"gamepad triggers without exactly one known controller button were skipped" = "preskočeni su okidači gamepada bez tačno jednog poznatog dugmeta kontrolera" +"grid track list exceeds 1000 entries; the tracks use the default equal sizing" = "lista traka mreže premašuje 1000 unosa; trake koriste zadanu jednaku veličinu" +"grid track sizing is unsupported or malformed; affected tracks use equal sizing" = "veličine traka mreže nisu podržane ili su neispravne; pogođene trake koriste jednaku veličinu" +"grid track sizing list exceeds 1000 entries; the tracks use the default equal sizing" = "lista veličina traka mreže premašuje 1000 unosa; trake koriste zadanu jednaku veličinu" +"hidden" = "skriveno" +"iOS" = "iOS" +"image filters are ambiguous because both filter containers are present; filter conversion was skipped" = "filteri slike su dvosmisleni jer su prisutna oba kontejnera filtera; pretvaranje filtera je preskočeno" +"image filters use FigCraft's approximate renderer" = "filteri slike koriste FigCraftov približni renderer" +"instance swap properties whose default component isn't in the file were skipped" = "preskočena su svojstva zamjene instance čija zadana komponenta nije u datoteci" +"instance swap properties whose default component was past the layer limit were skipped" = "preskočena su svojstva zamjene instance čija je zadana komponenta bila iza ograničenja slojeva" +"instances inside their own main component were imported as frames" = "instance unutar vlastite glavne komponente su uvezene kao okviri" +"instances of components that aren't in the file show no layers" = "instance komponenti koje nisu u datoteci ne prikazuju slojeve" +"instances of components that aren't in the file were imported as frames" = "instance komponenti koje nisu u datoteci su uvezene kao okviri" +"instances that would nest a component inside itself were imported as frames" = "instance koje bi ugnijezdile komponentu u samu sebe su uvezene kao okviri" +"instances whose component was past the layer limit were imported as frames" = "instance čija je komponenta bila iza ograničenja slojeva su uvezene kao okviri" +"instances without a main component were imported as empty frames" = "instance bez glavne komponente su uvezene kao prazni okviri" +"invalid internal .fig text path data was ignored" = "neispravni interni .fig podaci putanje teksta su zanemareni" +"invalid or oversized vector networks import as outlines" = "neispravne ili prevelike vektorske mreže se uvoze kao konture" +"invalid or oversized vector path data was skipped" = "neispravni ili preveliki podaci vektorske putanje su preskočeni" +"invalid vector region fill paint list; layer fill used" = "neispravna lista ispune vektorske oblasti; korištena je ispuna sloja" +"invalid vector region paints were skipped" = "neispravne boje vektorskih oblasti su preskočene" +"just now" = "upravo sada" +"key triggers without a supported key were skipped" = "okidači tipki bez podržane tipke su preskočeni" +"key up triggers import as key presses" = "okidači otpuštanja tipke se uvoze kao pritisci tipke" +"layers without a position were placed at their parent's origin" = "slojevi bez položaja su postavljeni u ishodište roditelja" +"layers without a type were skipped" = "slojevi bez vrste su preskočeni" +"legacy image filter container is unsupported; filter conversion was skipped" = "stari kontejner filtera slike nije podržan; pretvaranje filtera je preskočeno" +"linked vector region fill styles keep resolved appearance; live style links were left out" = "povezani stilovi ispune vektorskih oblasti zadržavaju razriješeni izgled; žive veze sa stilovima su izostavljene" +"locked" = "zaključano" +"malformed image filters container was skipped" = "neispravan kontejner filtera slike je preskočen" +"malformed image paintFilter container was skipped" = "neispravan kontejner paintFilter slike je preskočen" +"malformed slot content assignment was skipped" = "neispravna dodjela sadržaja slota je preskočena" +"no bleed" = "bez prelijevanja" +"nobody else here yet" = "ovdje još nema nikog drugog" +"non-default slot settings are not represented and were skipped" = "nezadane postavke slota nisu predstavljene i preskočene su" +"note or shape generated child has invalid bounds; child skipped" = "generisani podelement bilješke ili oblika ima neispravne granice; podelement je preskočen" +"note or shape generated child is missing its style or bounds; child skipped" = "generisanom podelementu bilješke ili oblika nedostaju stil ili granice; podelement je preskočen" +"note or shape generated children exceed the layer or nesting limit; remaining children skipped" = "generisani podelementi bilješke ili oblika premašuju ograničenje slojeva ili ugnježđivanja; preostali podelementi su preskočeni" +"note or shape generated layout is missing or unsupported; using its outer frame" = "generisani raspored bilješke ili oblika nedostaje ili nije podržan; koristi se njegov vanjski okvir" +"now" = "sada" +"offer files to save if it asks to (you choose where each one goes)" = "nudi datoteke za čuvanje ako to zatraži (Vi birate gdje ide svaka)" +"only in a text style or variable" = "samo u stilu teksta ili varijabli" +"or" = "ili" +"point stroke joins were preserved; dashed or variable-width strokes render with the layer join" = "spojevi obruba u tačkama su sačuvani; isprekidani obrubi ili obrubi promjenjive širine se iscrtavaju sa spojem sloja" +"preferred slot component keys cannot be resolved to file nodes and were skipped" = "ključevi preferiranih komponenti slota ne mogu se razriješiti u čvorove datoteke i preskočeni su" +"prototype actions of unknown types were skipped" = "radnje prototipa nepoznatih vrsta su preskočene" +"prototype actions without a destination in the file were skipped" = "radnje prototipa bez odredišta u datoteci su preskočene" +"prototype expressions on variables that aren't in the variables JSON were skipped" = "preskočeni su izrazi prototipa na varijablama koje nisu u JSON-u varijabli" +"prototype expressions with unsupported functions were skipped" = "izrazi prototipa s nepodržanim funkcijama su preskočeni" +"prototype interactions without supported actions were skipped" = "interakcije prototipa bez podržanih radnji su preskočene" +"prototype navigations of unknown types were skipped" = "navigacije prototipa nepoznatih vrsta su preskočene" +"prototype transitions of unknown types play instantly" = "prelazi prototipa nepoznatih vrsta se izvode trenutno" +"prototype triggers of unknown types were skipped" = "okidači prototipa nepoznatih vrsta su preskočeni" +"put a widget on the canvas" = "postavlja vidžet na platno" +"read and edit the document" = "čita i uređuje dokument" +"read the document" = "čita dokument" +"reads the document" = "čita dokument" +"set-variable actions on variables that aren't in the variables JSON were skipped" = "preskočene su radnje postavljanja varijable na varijablama koje nisu u JSON-u varijabli" +"set-variable actions with values that can't be evaluated were skipped" = "preskočene su radnje postavljanja varijable s vrijednostima koje se ne mogu izračunati" +"set-variable actions with values that don't fit the variable were skipped" = "preskočene su radnje postavljanja varijable s vrijednostima koje ne odgovaraju varijabli" +"set-variable actions without a value were skipped" = "preskočene su radnje postavljanja varijable bez vrijednosti" +"set-variable-mode actions on collections or modes that aren't in the variables JSON were skipped" = "preskočene su radnje postavljanja načina varijable na kolekcijama ili načinima koji nisu u JSON-u varijabli" +"shape generated outline is missing or damaged; using its rectangle" = "generisana kontura oblika nedostaje ili je oštećena; koristi se njegov pravougaonik" +"slot content assignment target is missing or is not slot content" = "cilj dodjele sadržaja slota nedostaje ili nije sadržaj slota" +"slot content assignment uses the empty GUID sentinel and was skipped" = "dodjela sadržaja slota koristi prazni GUID graničnik i preskočena je" +"slot layers without a matching slot property were imported as frames" = "slojevi slota bez odgovarajućeg svojstva slota su uvezeni kao okviri" +"some vector points refer to point settings missing from the file; they use the layer's joins and plain corners" = "neke vektorske tačke upućuju na postavke tačaka koje nedostaju u datoteci; koriste spojeve sloja i obične uglove" +"some vector segments refer to style settings missing from the file; they use the layer's stroke" = "neki vektorski segmenti upućuju na postavke stila koje nedostaju u datoteci; koriste obrub sloja" +"stale or invalid grid track sizing entries were ignored" = "zastarjeli ili neispravni unosi veličina traka mreže su zanemareni" +"stars and polygons without point counts or geometry use the default point count" = "zvijezde i poligoni bez broja tačaka ili geometrije koriste zadani broj tačaka" +"style settings of some vector segments aren't supported; those segments use the layer's stroke" = "postavke stila nekih vektorskih segmenata nisu podržane; ti segmenti koriste obrub sloja" +"text path underline or strikethrough decoration is not rendered" = "podvlačenje ili precrtavanje teksta na putanji se ne iscrtava" +"text style overrides refer to missing table entries" = "zamjene stila teksta upućuju na nedostajuće unose tabele" +"the file has no pages" = "datoteka nema stranica" +"the plugin" = "dodatak" +"the variables JSON has no `variableCollections` (expected the local variables response) and was ignored" = "JSON varijabli nema `variableCollections` (očekivan je odgovor lokalnih varijabli) i zanemaren je" +"this session only" = "samo ova sesija" +"unknown component property types were skipped" = "nepoznate vrste svojstava komponenti su preskočene" +"variable aliases to variables that aren't in the variables JSON (or of another type) were skipped" = "preskočeni su aliasi na varijable koje nisu u JSON-u varijabli (ili su druge vrste)" +"variable bindings to properties the layer doesn't have were skipped" = "preskočena su povezivanja varijabli sa svojstvima koja sloj nema" +"variable bindings to variables that aren't in the variables JSON (library variables) were skipped" = "preskočena su povezivanja s varijablama koje nisu u JSON-u varijabli (varijable biblioteke)" +"variable bindings were skipped: the file JSON has no variable definitions (pass the local variables JSON as `variables`, or embed its `meta` next to the file JSON)" = "povezivanja varijabli su preskočena: JSON datoteke nema definicije varijabli (proslijedite JSON lokalnih varijabli kao `variables` ili ugradite njegov `meta` pored JSON-a datoteke)" +"variable bindings whose variable type doesn't fit the property were skipped" = "preskočena su povezivanja varijabli čija vrsta varijable ne odgovara svojstvu" +"variable collections without modes were skipped" = "kolekcije varijabli bez načina su preskočene" +"variable mode lookups in prototype expressions that aren't a variable and one of its modes were skipped" = "preskočena su traženja načina varijable u izrazima prototipa koja nisu varijabla i jedan od njenih načina" +"variable modes of collections that aren't in the file were skipped" = "preskočeni su načini varijabli kolekcija koje nisu u datoteci" +"variable modes of collections that aren't in the variables JSON were skipped" = "preskočeni su načini varijabli kolekcija koje nisu u JSON-u varijabli" +"variable values that don't match their type (or composed colours) were skipped" = "preskočene su vrijednosti varijabli koje ne odgovaraju svojoj vrsti (ili složene boje)" +"variable-bound vector region paints keep resolved appearance; live bindings were left out" = "boje vektorskih oblasti povezane s varijablama zadržavaju razriješeni izgled; žive veze su izostavljene" +"variables of unknown types were skipped" = "varijable nepoznatih vrsta su preskočene" +"variables whose collection isn't in the variables JSON were skipped" = "preskočene su varijable čija kolekcija nije u JSON-u varijabli" +"variables without readable values were skipped" = "varijable bez čitljivih vrijednosti su preskočene" +"vector points with unknown stroke joins use the layer join" = "vektorske tačke s nepoznatim spojevima obruba koriste spoj sloja" +"vector region paint data exceeded import limits and was skipped" = "podaci o bojama vektorske oblasti premašili su ograničenja uvoza i preskočeni su" +"vector region references a missing fill style; layer fill used" = "vektorska oblast upućuje na nedostajući stil ispune; korištena je ispuna sloja" +"vectors without geometry are empty" = "vektori bez geometrije su prazni" +"vectors without geometry are empty (export the file JSON with geometry=paths)" = "vektori bez geometrije su prazni (izvezite JSON datoteke s geometry=paths)" +"very long text was cut to 1,048,576 characters" = "vrlo dug tekst je skraćen na 1.048.576 znakova" +"very long vector paths were skipped" = "vrlo duge vektorske putanje su preskočene" +"video actions are not supported and were skipped" = "video radnje nisu podržane i preskočene su" +"video triggers are not supported and were skipped" = "video okidači nisu podržani i preskočeni su" +"yesterday" = "jučer" +"{instances} in {files}" = "{instances} u {files}" +"{language}: draft translation, waiting for a native speaker's review." = "{language}: nacrt prijevoda, čeka pregled izvornog govornika." +"{length} bleed" = "Prelijevanje {length}" +"{month} {day}, {year}" = "{day}. {month} {year}." +"{name} cleared from the list" = "{name} uklonjeno s liste" +"{name} is forgotten on this computer; the file stays on {server}" = "{name} je zaboravljeno na ovom računaru; datoteka ostaje na serveru {server}" +"{name} is on the server." = "{name} je na serveru." +"{name} is spotlighting" = "{name} je u fokusu" +"{name} is too large to open in the browser (over 512 MB)." = "{name} je preveliko za otvaranje u pregledniku (preko 512 MB)." +"{name}\nClick to apply to the selection" = "{name}\nKliknite da primijenite na odabir" +"{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}\nPrevucite na platno ili kliknite da postavite u sredinu prikaza.\nDržite Alt (Option) dok ispuštate na instancu da je zamijenite." +"{name} (from {library})" = "{name} (iz {library})" +"{name} (you)" = "{name} (Vi)" +"{name} ({layers} layers)" = "{name} (slojeva: {layers})" +"{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}, zadano {default}. Dvaput kliknite klizač da se vratite na vrijednost stila; Escape tokom prevlačenja otkazuje." +"{name} from {path}" = "{name} iz {path}" +"{name} was removed from the server" = "{name} je uklonjeno sa servera" +"{name} · deleted on main" = "{name} · izbrisano u glavnoj" +"{name} · deleted on the branch" = "{name} · izbrisano u grani" +"{name} · not published" = "{name} · nije objavljeno" +"{name} · on a server" = "{name} · na serveru" +"{name} · published version {v}" = "{name} · objavljena verzija {v}" +"{name} · version {v} on the server" = "{name} · verzija {v} na serveru" +"{name}, in a live session" = "{name}, u sesiji uživo" +"{name}, online, open only to you" = "{name}, na mreži, otvoreno samo Vama" +"{name}, {kind}, {w} by {h}, selected" = "{name}, {kind}, {w} sa {h}, odabrano" +"{n} added" = { one = "{n} dodan", few = "{n} dodana", other = "{n} dodanih" } +"{n} autosave versions" = { one = "{n} automatski sačuvana verzija", few = "{n} automatski sačuvane verzije", other = "{n} automatski sačuvanih verzija" } +"{n} changed" = { one = "{n} promijenjen", few = "{n} promijenjena", other = "{n} promijenjenih" } +"{n} columns" = { one = "{n} kolona", few = "{n} kolone", other = "{n} kolona" } +"{n} components" = { one = "{n} komponenta", few = "{n} komponente", other = "{n} komponenti" } +"{n} components and styles have newer versions" = { one = "{n} komponenta ili stil ima noviju verziju", few = "{n} komponente i stilovi imaju novije verzije", other = "{n} komponenti i stilova ima novije verzije" } +"{n} conflicts to resolve" = { one = "{n} sukob za rješavanje", few = "{n} sukoba za rješavanje", other = "{n} sukoba za rješavanje" } +"{n} days ago" = { one = "prije {n} dan", few = "prije {n} dana", other = "prije {n} dana" } +"{n} files" = { one = "{n} datoteka", few = "{n} datoteke", other = "{n} datoteka" } +"{n} hours ago" = { one = "prije {n} sat", few = "prije {n} sata", other = "prije {n} sati" } +"{n} instances" = { one = "{n} instanca", few = "{n} instance", other = "{n} instanci" } +"{n} layers" = { one = "{n} sloj", few = "{n} sloja", other = "{n} slojeva" } +"{n} layers as one file" = { one = "{n} sloj kao jedna datoteka", few = "{n} sloja kao jedna datoteka", other = "{n} slojeva kao jedna datoteka" } +"{n} layers selected" = { one = "{n} sloj odabran", few = "{n} sloja odabrana", other = "{n} slojeva odabrano" } +"{n} layers · {parts}" = { one = "{n} sloj · {parts}", few = "{n} sloja · {parts}", other = "{n} slojeva · {parts}" } +"{n} matches" = { one = "{n} podudaranje", few = "{n} podudaranja", other = "{n} podudaranja" } +"{n} min" = "{n} min" +"{n} minutes ago" = { one = "prije {n} minutu", few = "prije {n} minute", other = "prije {n} minuta" } +"{n} months ago" = { one = "prije {n} mjesec", few = "prije {n} mjeseca", other = "prije {n} mjeseci" } +"{n} more notes omitted from this report" = { one = "još {n} napomena izostavljena iz ovog izvještaja", few = "još {n} napomene izostavljene iz ovog izvještaja", other = "još {n} napomena izostavljeno iz ovog izvještaja" } +"{n} of {total}" = "{n} od {total}" +"{n} people joined" = { one = "{n} osoba se pridružila", few = "{n} osobe su se pridružile", other = "{n} osoba se pridružilo" } +"{n} preferred components" = { one = "{n} preferirana komponenta", few = "{n} preferirane komponente", other = "{n} preferiranih komponenti" } +"{n} ready" = { one = "{n} spreman", few = "{n} spremna", other = "{n} spremnih" } +"{n} removed" = { one = "{n} uklonjen", few = "{n} uklonjena", other = "{n} uklonjenih" } +"{n} replies" = { one = "{n} odgovor", few = "{n} odgovora", other = "{n} odgovora" } +"{n} rows" = { one = "{n} red", few = "{n} reda", other = "{n} redova" } +"{n} styles" = { one = "{n} stil", few = "{n} stila", other = "{n} stilova" } +"{n} text layers" = { one = "{n} tekstualni sloj", few = "{n} tekstualna sloja", other = "{n} tekstualnih slojeva" } +"{n} variables" = { one = "{n} varijabla", few = "{n} varijable", other = "{n} varijabli" } +"{n} votes" = { one = "{n} glas", few = "{n} glasa", other = "{n} glasova" } +"{n} votes left" = { one = "preostao {n} glas", few = "preostala {n} glasa", other = "preostalo {n} glasova" } +"{n} weeks ago" = { one = "prije {n} sedmicu", few = "prije {n} sedmice", other = "prije {n} sedmica" } +"{n} years ago" = { one = "prije {n} godinu", few = "prije {n} godine", other = "prije {n} godina" } +"{n}d" = "{n} d" +"{n}h" = "{n} h" +"{n}m" = "{n} min" +"{n}w" = "{n} sed." +"{page}, nothing selected" = "{page}, ništa nije odabrano" +"{percent}%" = "{percent}%" +"{profile} (current)" = "{profile} (trenutni)" +"{property} is its value; {property ? \"a\" : \"b\"} picks a string. Other {…} stays as written." = "{property} je njegova vrijednost; {property ? \"a\" : \"b\"} bira tekst. Ostalo {…} ostaje kako je napisano." +"{server} can't say what became of your files (it is older than this app)." = "{server} ne može reći šta je bilo s Vašim datotekama (stariji je od ove aplikacije)." +"{server} · No longer on the server" = "{server} · Više nije na serveru" +"{server} · {shared} · Opened {date}" = "{server} · {shared} · Otvoreno {date}" +"{tool} hold {key}" = "{tool} držite {key}" +"{value} isn't a colour" = "{value} nije boja" +"{when} · edited" = "{when} · uređeno" +"← ↑ → ↓" = "← ↑ → ↓" +"← → ↑ ↓" = "← → ↑ ↓" +"←" = "←" +"→, Space or N" = "→, Space ili N" +"↵" = "↵" +"⇥ / ⇧⇥" = "⇥ / ⇧⇥" +"⌘ arrows" = "⌘ strelice" +"⌘ click" = "⌘ klik" +"⌘ scroll" = "⌘ skrolanje" +"⌥ drag" = "⌥ prevlačenje" + +[commands] + +"align.bottom" = "Poravnaj dno" +"align.hcenter" = "Poravnaj horizontalna središta" +"align.left" = "Poravnaj lijevo" +"align.right" = "Poravnaj desno" +"align.top" = "Poravnaj vrh" +"align.vcenter" = "Poravnaj vertikalna središta" +"annotation.add" = "Dodaj anotaciju" +"annotation.addCategory" = "Dodaj kategoriju anotacija" +"annotation.categories" = "Kategorije anotacija" +"annotation.edit" = "Uredi anotaciju" +"annotation.editCategory" = "Uredi kategoriju anotacija" +"annotation.list" = "Prikaži anotacije" +"annotation.remove" = "Ukloni anotaciju" +"annotation.removeCategory" = "Izbriši kategoriju anotacija" +"app.actions" = "Radnje" +"app.preferences" = "Postavke" +"arrange.back" = "Pomakni na dno" +"arrange.backward" = "Pomakni nazad" +"arrange.forward" = "Pomakni naprijed" +"arrange.front" = "Pomakni na vrh" +"arrange.packH" = "Zbij horizontalno" +"arrange.packV" = "Zbij vertikalno" +"arrange.reorder" = "Promijeni redoslijed odabira" +"arrange.roundToPixels" = "Zaokruži na piksele" +"arrange.spacing" = "Razmak" +"arrange.tidy" = "Uredi" +"board.connector" = "Konektor" +"board.grid" = "Mreža ploče" +"board.ink" = "Potez flomasterom" +"board.label" = "Oznaka konektora" +"board.nextSticky" = "Sljedeća ljepljiva bilješka" +"board.reattach" = "Ponovo prikači konektor" +"board.setColor" = "Boja ploče" +"board.setStyle" = "Stil ploče" +"board.shape" = "Oblik s tekstom" +"board.stamp" = "Pečat" +"board.sticky" = "Ljepljiva bilješka" +"board.table" = "Tabela" +"board.tableEdit" = "Uredi tabelu" +"board.template" = "Predložak ploče" +"board.templates" = "Prikaži predloške ploča" +"board.timer" = "Tajmer" +"board.timerState" = "Stanje tajmera" +"board.vote" = "Sesija glasanja" +"board.voteResults" = "Rezultati glasanja" +"bool.exclude" = "Isključi odabir" +"bool.flatten" = "Spljošti Booleovu grupu" +"bool.intersect" = "Presijeci odabir" +"bool.subtract" = "Oduzmi odabir" +"bool.union" = "Ujedini odabir" +"branch.archive" = "Arhiviraj granu" +"branch.create" = "Kreiraj granu" +"branch.list" = "Prikaži grane" +"branch.merge" = "Spoji granu" +"branch.open" = "Otvori granu" +"branch.review" = "Pregledaj granu" +"branch.updateFromMain" = "Ažuriraj iz glavne" +"codeConnect.export" = "Izvezi veze s kodom" +"codeConnect.import" = "Uvezi veze s kodom" +"codeConnect.remove" = "Prekini vezu s kodom" +"codeConnect.set" = "Poveži s kodom" +"collab.cursor" = "Prikaži kursor na" +"collab.cursorChat" = "Chat kursorom" +"collab.diff" = "Prikaži promjene sinhronizacije" +"collab.files" = "Vaše datoteke na mreži" +"collab.follow" = "Prati" +"collab.forgetFile" = "Zaboravi datoteku na mreži" +"collab.host" = "Pokreni sesiju uživo" +"collab.join" = "Pridruži se sesiji uživo" +"collab.leave" = "Napusti sesiju uživo" +"collab.manageFile" = "Upravljaj objavljenom datotekom" +"collab.openFile" = "Otvori datoteku na mreži" +"collab.peers" = "Osobe u ovoj datoteci" +"collab.publish" = "Objavi na server" +"collab.recoverFile" = "Vrati datoteku na mreži" +"collab.registerLinks" = "Otvaraj pozivne linkove u FigCraftu" +"collab.removePerson" = "Ukloni iz sesije" +"collab.report" = "Prijavi datoteku operateru servera" +"collab.serverInfo" = "Informacije o serveru" +"collab.share" = "Dijeli pomoću koda za pridruživanje" +"collab.spotlight" = "Stavi me u fokus" +"collab.stop" = "Zaustavi sesiju uživo" +"command.batch" = "Pokreni nekoliko naredbi" +"comment.add" = "Dodaj komentar" +"comment.delete" = "Izbriši komentar" +"comment.edit" = "Uredi komentar" +"comment.link" = "Kopiraj link na komentar" +"comment.list" = "Prikaži komentare" +"comment.markRead" = "Označi komentar kao pročitan" +"comment.move" = "Premjesti komentar" +"comment.next" = "Sljedeći komentar" +"comment.open" = "Otvori komentar" +"comment.people" = "Osobe u komentarima" +"comment.prompt" = "Kopiraj komentare za AI" +"comment.react" = "Reaguj na komentar" +"comment.reply" = "Odgovori na komentar" +"comment.resolve" = "Riješi komentar" +"comment.zoom" = "Zumiraj na komentare" +"component.addProperty" = "Dodaj svojstvo komponente" +"component.addVariant" = "Dodaj varijantu" +"component.bindProperty" = "Poveži sloj sa svojstvom" +"component.combineVariants" = "Kombinuj kao varijante" +"component.create" = "Kreiraj komponentu" +"component.createMultiple" = "Kreiraj više komponenti" +"component.deleteProperty" = "Izbriši svojstvo komponente" +"component.detach" = "Odvoji instancu" +"component.editProperty" = "Uredi svojstvo komponente" +"component.exposeInstance" = "Izloži ugniježđenu instancu" +"component.goToMain" = "Idi na glavnu komponentu" +"component.hideWhenPublishing" = "Sakrij pri objavljivanju" +"component.list" = "Prikaži komponente" +"component.makeSlot" = "Napravi slot" +"component.playground" = "Igralište komponente" +"component.properties" = "Svojstva komponente" +"component.pushChanges" = "Potisni promjene u glavnu komponentu" +"component.removeSlot" = "Ukloni slot" +"component.resetInstance" = "Resetuj sve promjene" +"component.resetOverride" = "Resetuj zamjenu" +"component.restoreMain" = "Vrati glavnu komponentu" +"data.fill" = "Popuni kopije podacima" +"dev.compare" = "Uporedi promjene" +"dev.focus" = "Fokusirani prikaz" +"dev.resolveChange" = "Riješi promjenu" +"dev.unfocus" = "Izađi iz fokusiranog prikaza" +"devMode.addMeasurement" = "Dodaj mjerenje" +"devMode.measurements" = "Prikaži mjerenja" +"devMode.removeMeasurement" = "Ukloni mjerenje" +"devResource.add" = "Dodaj resurs za programere" +"devResource.edit" = "Uredi resurs za programere" +"devResource.list" = "Prikaži resurse za programere" +"devResource.remove" = "Ukloni resurs za programere" +"distribute.horizontal" = "Raspodijeli horizontalni razmak" +"distribute.vertical" = "Raspodijeli vertikalni razmak" +"doc.home" = "Početna" +"doc.list" = "Prikaži dokumente" +"doc.nextTab" = "Sljedeća kartica" +"doc.previousTab" = "Prethodna kartica" +"doc.switch" = "Promijeni dokument" +"edit.copy" = "Kopiraj" +"edit.copyAsCss" = "Kopiraj kao CSS" +"edit.copyAsPng" = "Kopiraj kao PNG" +"edit.copyAsSvg" = "Kopiraj kao SVG" +"edit.copyAsText" = "Kopiraj kao tekst" +"edit.copyLink" = "Kopiraj link na odabir" +"edit.copyProperties" = "Kopiraj svojstva" +"edit.cut" = "Izreži" +"edit.delete" = "Izbriši" +"edit.duplicate" = "Dupliciraj" +"edit.findReplace" = "Pronađi i zamijeni" +"edit.paste" = "Zalijepi" +"edit.pasteDesignLayers" = "Zalijepi slojeve dizajna" +"edit.pasteOver" = "Zalijepi preko odabira" +"edit.pasteProperties" = "Zalijepi svojstva" +"edit.pasteReplace" = "Zalijepi kao zamjenu" +"edit.pickColor" = "Odaberi boju" +"edit.redo" = "Ponovi" +"edit.repeat" = "Ponovi posljednju naredbu" +"edit.setDefaultProperties" = "Postavi zadana svojstva" +"edit.undo" = "Poništi" +"effect.add" = "Dodaj efekat" +"effect.copy" = "Kopiraj efekat" +"effect.move" = "Premjesti efekat" +"effect.paste" = "Zalijepi efekat" +"effect.remove" = "Ukloni efekat" +"effect.set" = "Postavi efekat" +"export.add" = "Dodaj postavku izvoza" +"export.remove" = "Ukloni postavku izvoza" +"export.update" = "Uredi postavku izvoza" +"file.close" = "Zatvori karticu" +"file.colorProfile" = "Profil boja" +"file.duplicate" = "Dupliciraj datoteku" +"file.export" = "Izvoz" +"file.exportFramesPdf" = "Izvezi okvire u PDF" +"file.exportLayers" = "Izvezi slojeve" +"file.exportSvg" = "Izvezi odabir kao SVG" +"file.fontReport" = "Pregledaj fontove dokumenta" +"file.import" = "Uvoz" +"file.markSaved" = "Označi kao sačuvano" +"file.moveTab" = "Premjesti karticu" +"file.new" = "Nova datoteka dizajna" +"file.newBoard" = "Nova ploča" +"file.newFromTemplate" = "Novo iz predloška" +"file.open" = "Otvori" +"file.openRecent" = "Otvori nedavno" +"file.placeImage" = "Postavi sliku" +"file.recover" = "Vrati datoteku" +"file.rename" = "Preimenuj datoteku" +"file.revert" = "Vrati na sačuvano" +"file.save" = "Sačuvaj" +"file.saveAs" = "Sačuvaj kao" +"file.saveVersion" = "Sačuvaj u historiju verzija" +"file.versionHistory" = "Prikaži historiju verzija" +"fill.add" = "Dodaj ispunu" +"fill.copy" = "Kopiraj ispunu" +"fill.move" = "Premjesti ispunu" +"fill.paste" = "Zalijepi ispunu" +"fill.pattern" = "Ispuna uzorkom" +"fill.remove" = "Ukloni ispunu" +"fill.set" = "Postavi ispunu" +"font.download" = "Preuzmi font" +"font.downloads" = "Preuzimanja fontova" +"frame.create" = "Kreiraj okvir" +"frame.presets" = "Prikaži predloške okvira" +"frame.swapOrientation" = "Zamijeni orijentaciju" +"grid.add" = "Dodaj mrežu rasporeda" +"grid.move" = "Premjesti mrežu rasporeda" +"grid.remove" = "Ukloni mrežu rasporeda" +"guide.add" = "Dodaj vodilicu" +"guide.clear" = "Ukloni sve vodilice" +"guide.move" = "Premjesti vodilicu" +"guide.remove" = "Ukloni vodilicu" +"guide.select" = "Odaberi vodilicu" +"help.about" = "O FigCraftu" +"help.gettingStarted" = "Prvi koraci" +"help.page" = "Stranica pomoći" +"help.shortcuts" = "Prečice na tastaturi" +"image.adjust" = "Prilagodi sliku" +"image.crop" = "Izreži sliku" +"image.deletePreset" = "Izbriši predložak slike" +"image.place" = "Postavi sliku" +"image.presets" = "Predlošci slike" +"image.savePreset" = "Sačuvaj predložak slike" +"inspect.assets" = "Pregledaj resurse" +"inspect.code" = "Kod za sloj" +"inspect.componentCode" = "Kod komponente" +"inspect.properties" = "Pregledaj svojstva" +"inspect.readyForDev" = "Spremno za razvoj" +"instance.create" = "Kreiraj instancu" +"instance.exposed" = "Izložene ugniježđene instance" +"instance.place" = "Postavi instancu" +"instance.resetSlot" = "Resetuj slot" +"instance.setProperties" = "Postavi svojstva instance" +"instance.slotInsert" = "Umetni u slot" +"instance.swap" = "Zamijeni instancu" +"instance.swapAt" = "Zamijeni instancu na tački" +"layers.collapseAll" = "Skupi slojeve" +"layout.add" = "Dodaj automatski raspored" +"layout.remove" = "Ukloni automatski raspored" +"layout.setTrack" = "Postavi veličinu trake mreže" +"layout.suggest" = "Predloži automatski raspored" +"libraries.open" = "Biblioteke" +"libraries.publish" = "Objavi biblioteku…" +"library.acceptUpdates" = "Prihvati ažuriranja biblioteke" +"library.add" = "Dodaj biblioteku" +"library.aliasVariable" = "Alias varijable biblioteke" +"library.applyStyle" = "Primijeni stil biblioteke" +"library.bindVariable" = "Poveži varijablu biblioteke" +"library.check" = "Provjeri ažuriranja timskih biblioteka" +"library.extendCollection" = "Proširi kolekciju biblioteke" +"library.import" = "Uvezi komponentu biblioteke" +"library.importVariable" = "Uvezi varijablu biblioteke" +"library.list" = "Prikaži biblioteke" +"library.place" = "Postavi komponentu biblioteke" +"library.publish" = "Objavi biblioteku" +"library.publishToServer" = "Objavi biblioteku na server" +"library.remove" = "Ukloni biblioteku" +"library.setVariableMode" = "Postavi način varijable biblioteke" +"library.swap" = "Zamijeni biblioteku" +"library.swapAt" = "Zamijeni instancu komponentom biblioteke" +"library.updates" = "Ažuriranja biblioteka" +"library.usage" = "Upotreba biblioteke" +"measure.distances" = "Izmjeri udaljenosti" +"measure.padding" = "Izmjeri unutrašnje margine automatskog rasporeda" +"node.create" = "Kreiraj sloj" +"node.find" = "Pronađi slojeve" +"node.get" = "Dohvati sloj" +"node.reorder" = "Promijeni redoslijed sloja" +"node.reparent" = "Premjesti sloj u" +"node.set" = "Postavi svojstva" +"object.batchRename" = "Skupno preimenovanje" +"object.convertToFrame" = "Pretvori u okvir" +"object.convertToGroup" = "Pretvori u grupu" +"object.convertToSection" = "Pretvori u sekciju" +"object.flipH" = "Okreni horizontalno" +"object.flipV" = "Okreni vertikalno" +"object.frameSelection" = "Uokviri odabir" +"object.group" = "Grupiši odabir" +"object.hideOthers" = "Sakrij ostale slojeve" +"object.mask" = "Koristi kao masku" +"object.moveToPage" = "Premjesti na stranicu" +"object.opacityKeys" = "Neprozirnost pomoću brojeva" +"object.rasterize" = "Rasterizuj odabir" +"object.releaseMask" = "Oslobodi masku" +"object.removeFill" = "Ukloni ispunu" +"object.removeFrame" = "Ukloni okvir" +"object.removeStroke" = "Ukloni obrub" +"object.rename" = "Preimenuj" +"object.resizeToFit" = "Prilagodi veličinu sadržaju" +"object.rotate180" = "Rotiraj za 180°" +"object.rotateLeft" = "Rotiraj za 90° ulijevo" +"object.rotateRight" = "Rotiraj za 90° udesno" +"object.setThumbnail" = "Postavi kao sličicu" +"object.swapFillStroke" = "Zamijeni ispunu i obrub" +"object.toggleLock" = "Zaključaj/otključaj odabir" +"object.toggleVisible" = "Prikaži/sakrij odabir" +"object.ungroup" = "Razgrupiši odabir" +"object.wrapInSection" = "Umotaj u novu sekciju" +"page.add" = "Dodaj stranicu" +"page.delete" = "Izbriši stranicu" +"page.duplicate" = "Dupliciraj stranicu" +"page.list" = "Prikaži stranice" +"page.move" = "Premjesti stranicu" +"page.rename" = "Preimenuj stranicu" +"page.select" = "Idi na stranicu" +"page.setBackground" = "Pozadina stranice" +"paint.documentColors" = "Boje dokumenta" +"plugin.close" = "Zatvori panel dodatka" +"plugin.directory.install" = "Instaliraj dodatak iz direktorija" +"plugin.directory.list" = "Pretraži direktorij dodataka" +"plugin.directory.publish" = "Objavi dodatak u direktorij" +"plugin.directory.unpublish" = "Povuci dodatak iz direktorija" +"plugin.event" = "Koristi kontrolu panela dodatka" +"plugin.import" = "Uvezi dodatak iz manifesta…" +"plugin.list" = "Prikaži dodatke" +"plugin.remove" = "Ukloni dodatak" +"plugin.run" = "Pokreni dodatak" +"plugin.ui" = "Panel dodatka" +"plugins.manage" = "Upravljaj dodacima…" +"plugins.runLast" = "Pokreni posljednji dodatak" +"pref.autoSave" = "Automatski čuvaj datoteke" +"pref.highlightHover" = "Istakni slojeve pri prelasku mišem" +"pref.keepTool" = "Zadrži alat odabranim nakon upotrebe" +"pref.language" = "Jezik interfejsa" +"pref.nudge" = "Iznos pomaka" +"pref.numberKeysOpacity" = "Koristi brojeve za neprozirnost" +"pref.publishServer" = "Server za dijeljenje na mreži" +"pref.reduceMotion" = "Smanji pokrete" +"pref.renameDuplicates" = "Preimenuj duplicirane slojeve" +"pref.scrollWheelZoom" = "Zumiranje kotačićem miša" +"pref.showDimensions" = "Prikaži dimenzije na objektima" +"pref.startOnHome" = "Pokreni na početnom ekranu" +"pref.uiScale" = "Veličina interfejsa" +"pref.userName" = "Vaše ime" +"proto.action.add" = "Dodaj radnju prototipa" +"proto.action.move" = "Promijeni redoslijed radnje prototipa" +"proto.action.remove" = "Ukloni radnju prototipa" +"proto.action.set" = "Uredi radnju prototipa" +"proto.closePreview" = "Zatvori pregled prototipa" +"proto.conditional.addBlock" = "Dodaj inače ako / inače" +"proto.conditional.removeBlock" = "Ukloni ako / inače ako / inače" +"proto.conditional.setCondition" = "Uredi uslov" +"proto.evaluate" = "Izračunaj izraz prototipa" +"proto.flow.add" = "Dodaj početnu tačku toka" +"proto.flow.remove" = "Ukloni tok" +"proto.flow.rename" = "Preimenuj tok" +"proto.interaction.add" = "Dodaj interakciju" +"proto.interaction.clear" = "Ukloni sve interakcije" +"proto.interaction.remove" = "Ukloni interakciju" +"proto.interaction.set" = "Uredi interakciju" +"proto.linkNotice" = "Obavještenje prije odlaska na link" +"proto.present" = "Prezentuj" +"proto.presentOptions" = "Opcije prezentacije" +"proto.preview" = "Otvori pregled prototipa" +"proto.settings" = "Postavke prototipa" +"section.toggleContents" = "Sakrij/prikaži sadržaj sekcije" +"select.add" = "Dodaj u odabir" +"select.all" = "Odaberi sve" +"select.area" = "Odaberi oblast" +"select.byName" = "Odaberi slojeve po imenu" +"select.children" = "Odaberi podređene" +"select.inverse" = "Obrni odabir" +"select.layersAt" = "Slojevi na tački" +"select.matching" = "Odaberi odgovarajuće slojeve" +"select.next" = "Odaberi sljedeći susjedni sloj" +"select.none" = "Poništi odabir" +"select.parent" = "Odaberi roditelja" +"select.previous" = "Odaberi prethodni susjedni sloj" +"select.remove" = "Ukloni iz odabira" +"select.sameEffect" = "Odaberi isti efekat" +"select.sameFill" = "Odaberi istu ispunu" +"select.sameFont" = "Odaberi isti font" +"select.sameInstance" = "Odaberi istu instancu" +"select.sameProperties" = "Odaberi ista svojstva" +"select.sameStroke" = "Odaberi isti obrub" +"select.sameText" = "Odaberi ista svojstva teksta" +"select.set" = "Odaberi" +"selection.applyColorStyle" = "Primijeni stil boje odabira" +"selection.bindColorVariable" = "Primijeni varijablu boje odabira" +"selection.colors" = "Boje odabira" +"selection.detachColor" = "Odvoji boju odabira" +"selection.selectColor" = "Odaberi slojeve s bojom" +"selection.setPaint" = "Promijeni boju odabira" +"shape.arrow" = "Strelica" +"shape.ellipse" = "Elipsa" +"shape.line" = "Linija" +"shape.polygon" = "Poligon" +"shape.rectangle" = "Pravougaonik" +"shape.star" = "Zvijezda" +"shapeBuilder.merge" = "Spoji oblasti" +"shapeBuilder.mode" = "Način graditelja oblika" +"shapeBuilder.regions" = "Oblasti graditelja oblika" +"shapeBuilder.remove" = "Ukloni oblasti" +"stroke.add" = "Dodaj obrub" +"stroke.brush" = "Kist" +"stroke.copy" = "Kopiraj obrub" +"stroke.move" = "Premjesti obrub" +"stroke.paste" = "Zalijepi obrub" +"stroke.remove" = "Ukloni obrub" +"stroke.set" = "Postavi obrub" +"stroke.widthProfile" = "Profil širine" +"style.apply" = "Primijeni stil" +"style.bind" = "Poveži varijablu u stilu" +"style.create" = "Kreiraj stil" +"style.delete" = "Izbriši stil" +"style.detach" = "Odvoji stil" +"style.duplicate" = "Dupliciraj stil" +"style.list" = "Prikaži stilove" +"style.move" = "Premjesti stilove" +"style.renameFolder" = "Preimenuj folder stilova" +"style.update" = "Uredi stil" +"template.list" = "Prikaži predloške" +"text.alignCenter" = "Poravnaj po sredini" +"text.alignJustify" = "Obostrano poravnanje" +"text.alignLeft" = "Poravnaj lijevo" +"text.alignRight" = "Poravnaj desno" +"text.bold" = "Podebljano" +"text.bulletList" = "Lista s oznakama" +"text.case" = "Veličina slova" +"text.caseLower" = "Mala slova" +"text.caseOriginal" = "Izvorna veličina slova" +"text.caseSmallCaps" = "Mala velika slova" +"text.caseTitle" = "Velika početna slova" +"text.caseUpper" = "Velika slova" +"text.create" = "Tekst" +"text.decoration" = "Dekoracija" +"text.edit.begin" = "Uredi tekst" +"text.edit.caret" = "Postavi kursor" +"text.edit.end" = "Završi uređivanje teksta" +"text.edit.insert" = "Unesi tekst" +"text.edit.key" = "Tipka teksta" +"text.edit.preedit" = "Sastavi tekst (IME)" +"text.edit.selectLine" = "Odaberi red" +"text.edit.selectWord" = "Odaberi riječ" +"text.edit.selection" = "Odabir teksta" +"text.endPreview" = "Završi pregled teksta" +"text.fit" = "Uklopi tekst u okvir" +"text.fonts" = "Prikaži fontove" +"text.italic" = "Kurziv" +"text.lineHeightDown" = "Smanji visinu reda" +"text.lineHeightUp" = "Povećaj visinu reda" +"text.link" = "Kreiraj link" +"text.listIndent" = "Uvuci listu" +"text.listOutdent" = "Izvuci listu" +"text.listStyle" = "Stil liste" +"text.loadFont" = "Učitaj datoteku fonta" +"text.maxLines" = "Najviše redova" +"text.missingFonts" = "Nedostajući fontovi" +"text.numberList" = "Numerisana lista" +"text.onPath" = "Tekst na putanji" +"text.paragraphIndent" = "Uvlačenje pasusa" +"text.paragraphSpacing" = "Razmak pasusa" +"text.pathOptions" = "Opcije putanje teksta" +"text.preview" = "Pregledaj promjenu" +"text.refit" = "Uklopi tekst prema fontovima" +"text.removeFromPath" = "Ukloni tekst s putanje" +"text.rescanFonts" = "Ponovo skeniraj instalirane fontove" +"text.set" = "Postavi tekst" +"text.setFeatures" = "OpenType mogućnosti" +"text.setVariations" = "Ose varijabilnog fonta" +"text.sizeDown" = "Smanji veličinu fonta" +"text.sizeUp" = "Povećaj veličinu fonta" +"text.strikethrough" = "Precrtano" +"text.style" = "Stilizuj dio teksta" +"text.trackingDown" = "Smanji razmak slova" +"text.trackingUp" = "Povećaj razmak slova" +"text.underline" = "Podvučeno" +"text.weightDown" = "Smanji debljinu fonta" +"text.weightUp" = "Povećaj debljinu fonta" +"tool.arrow" = "Strelica" +"tool.comment" = "Komentar" +"tool.connector" = "Konektor" +"tool.ellipse" = "Elipsa" +"tool.eraser" = "Gumica" +"tool.frame" = "Okvir" +"tool.hand" = "Ruka" +"tool.highlighter" = "Marker" +"tool.line" = "Linija" +"tool.marker" = "Flomaster" +"tool.move" = "Pomjeranje" +"tool.pen" = "Olovka" +"tool.pencil" = "Grafitna olovka" +"tool.pencilBrush" = "Kist grafitne olovke" +"tool.place" = "Postavi alatom" +"tool.polygon" = "Poligon" +"tool.rectangle" = "Pravougaonik" +"tool.scale" = "Skaliranje" +"tool.scaleAnchor" = "Sidro skaliranja" +"tool.section" = "Sekcija" +"tool.set" = "Odaberi alat" +"tool.shape" = "Oblici" +"tool.shapeBuilder" = "Graditelj oblika" +"tool.slice" = "Isječak" +"tool.stamp" = "Pečat" +"tool.star" = "Zvijezda" +"tool.sticky" = "Ljepljiva bilješka" +"tool.text" = "Tekst" +"tool.textOnPath" = "Tekst na putanji" +"transform.move" = "Pomjeri" +"transform.moveTo" = "Pomjeri na" +"transform.nudge" = "Pomakni" +"transform.nudgeSize" = "Promijeni veličinu pomakom" +"transform.resize" = "Promijeni veličinu" +"transform.rotate" = "Rotiraj" +"transform.rotationOrigin" = "Pomjeri središte rotacije" +"transform.scale" = "Skaliraj" +"transform.setRotationOrigin" = "Postavi središte rotacije" +"variable.addMode" = "Dodaj način" +"variable.bind" = "Poveži varijablu" +"variable.create" = "Kreiraj varijablu" +"variable.createCollection" = "Kreiraj kolekciju varijabli" +"variable.delete" = "Izbriši varijablu" +"variable.deleteCollection" = "Izbriši kolekciju" +"variable.duplicate" = "Dupliciraj varijablu" +"variable.export" = "Izvezi varijable" +"variable.import" = "Uvezi varijable" +"variable.list" = "Prikaži varijable" +"variable.moveMode" = "Premjesti način" +"variable.removeMode" = "Izbriši način" +"variable.renameCollection" = "Preimenuj kolekciju" +"variable.renameMode" = "Preimenuj način" +"variable.resetOverride" = "Resetuj zamjenu varijable" +"variable.set" = "Postavi vrijednost varijable" +"variable.setMode" = "Postavi način varijable" +"variable.update" = "Uredi varijablu" +"vector.create" = "Vektor" +"vector.deleteHeal" = "Izbriši i zacijeli odabir" +"vector.edit.addVertex" = "Dodaj tačku" +"vector.edit.begin" = "Uredi vektor" +"vector.edit.bend" = "Savij segment" +"vector.edit.bounds" = "Granice odabranih tačaka" +"vector.edit.connect" = "Poveži tačke" +"vector.edit.cornerRadius" = "Radijus ugla tačke" +"vector.edit.cut" = "Presijeci putanju" +"vector.edit.delete" = "Izbriši tačke" +"vector.edit.end" = "Uređivanje završeno" +"vector.edit.erase" = "Briši" +"vector.edit.lasso" = "Odabir lasom" +"vector.edit.mirroring" = "Zrcaljenje ručica" +"vector.edit.moveHandles" = "Pomjeri ručice" +"vector.edit.moveVertices" = "Pomjeri tačke" +"vector.edit.nudge" = "Pomakni tačke" +"vector.edit.paint" = "Kanta s bojom" +"vector.edit.pen" = "Tačka olovke" +"vector.edit.penEnd" = "Završi putanju olovke" +"vector.edit.position" = "Položaj tačke" +"vector.edit.resize" = "Promijeni veličinu tačaka" +"vector.edit.rotate" = "Rotiraj tačke" +"vector.edit.select" = "Odaberi tačke" +"vector.edit.selectAll" = "Odaberi sve tačke" +"vector.edit.setHandle" = "Postavi ručicu" +"vector.edit.smooth" = "Zagladi ili izoštri tačke" +"vector.edit.state" = "Stanje uređivanja vektora" +"vector.edit.strokeCap" = "Završetak obruba tačke" +"vector.edit.strokeJoin" = "Spoj obruba tačke" +"vector.edit.tool" = "Alat za uređivanje vektora" +"vector.edit.transform" = "Transformiši tačke" +"vector.edit.widthPoint" = "Tačka širine" +"vector.fillRule" = "Postavi pravilo ispune" +"vector.flatten" = "Spljošti" +"vector.join" = "Spoji odabir" +"vector.offset" = "Pomakni putanju" +"vector.outlineStroke" = "Pretvori obrub u konturu" +"vector.reverse" = "Obrni smjer putanje" +"vector.reverseLoop" = "Obrni petlju" +"vector.simplify" = "Pojednostavi vektor" +"vector.smoothJoin" = "Glatko spoji odabir" +"version.autosave" = "Automatski sačuvana verzija" +"version.delete" = "Izbriši verziju" +"version.duplicate" = "Dupliciraj verziju" +"version.exitPreview" = "Nazad na trenutnu verziju" +"version.list" = "Prikaži verzije" +"version.preview" = "Pogledaj verziju" +"version.rename" = "Preimenuj verziju" +"version.restore" = "Vrati verziju" +"view.assets" = "Panel resursa" +"view.comments" = "Komentari" +"view.contextMenu" = "Prikaži kontekstni meni" +"view.design" = "Panel dizajna" +"view.designPrototype" = "Prebacuj između Dizajna i Prototipa" +"view.devMode" = "Dev Mode" +"view.frameOutlines" = "Konture okvira" +"view.fullscreen" = "Preko cijelog ekrana" +"view.get" = "Dohvati prikaz" +"view.layers" = "Panel slojeva" +"view.layoutGrids" = "Mreže rasporeda" +"view.leftSidebar" = "Prikaži/sakrij lijevu bočnu traku" +"view.maskOutlines" = "Konture maski" +"view.multiplayerCursors" = "Kursori saradnika" +"view.nextFrame" = "Zumiraj na sljedeći okvir" +"view.nextPage" = "Sljedeća stranica" +"view.nextRegion" = "Fokusiraj sljedeću oblast" +"view.outlines" = "Konture" +"view.outlinesHiddenLayers" = "Uključi skrivene slojeve u konture" +"view.outlinesObjectBounds" = "Uključi granice objekata u konture" +"view.outlinesSelection" = "Konture za odabir" +"view.pan" = "Pomjeri prikaz" +"view.panelWidths" = "Resetuj širine panela" +"view.pixelGrid" = "Mreža piksela" +"view.pixelPreview" = "Pregled piksela" +"view.prevFrame" = "Zumiraj na prethodni okvir" +"view.prevPage" = "Prethodna stranica" +"view.previousRegion" = "Fokusiraj prethodnu oblast" +"view.proofSrgb" = "Probni prikaz sRGB" +"view.prototype" = "Panel prototipa" +"view.rulers" = "Ravnala" +"view.set" = "Postavi prikaz" +"view.slices" = "Isječci" +"view.snapGeometry" = "Prianjaj uz geometriju" +"view.snapObjects" = "Prianjaj uz objekte" +"view.snapPixel" = "Prianjaj uz mrežu piksela" +"view.themeDark" = "Tamna tema" +"view.themeLight" = "Svijetla tema" +"view.themeSystem" = "Prati temu sistema" +"view.toggleUi" = "Prikaži/sakrij interfejs" +"view.zoom100" = "Zumiraj na 100%" +"view.zoom200" = "Zumiraj na 200%" +"view.zoom50" = "Zumiraj na 50%" +"view.zoomAt" = "Alat za zumiranje" +"view.zoomFit" = "Zumiraj da stane" +"view.zoomIn" = "Uvećaj" +"view.zoomOut" = "Umanji" +"view.zoomSelection" = "Zumiraj na odabir" +"widget.click" = "Klikni vidžet" +"widget.insert" = "Umetni vidžet" +"widget.list" = "Prikaži vidžete" +"widget.menu" = "Meni vidžeta" +"widget.setText" = "Uredi polje vidžeta" +"window.focus" = "Dovedi prozor naprijed" +"window.new" = "Novi prozor" + +[menu] + +"bool.exclude" = "Isključi" +"bool.flatten" = "Spljošti" +"bool.intersect" = "Presjek" +"bool.subtract" = "Oduzmi" +"bool.union" = "Unija" +"file.duplicate" = "Dupliciraj" +"file.import" = "Uvezi iz datoteke…" +"file.rename" = "Preimenuj" +"libraries.open" = "Otvori biblioteke" +"select.sameEffect" = "Efekat" +"select.sameFill" = "Ispuna" +"select.sameFont" = "Font" +"select.sameInstance" = "Instanca" +"select.sameProperties" = "Svojstva" +"select.sameStroke" = "Obrub" +"select.sameText" = "Svojstva teksta" +"text.alignCenter" = "Centriraj tekst" +"text.alignJustify" = "Obostrano poravnaj tekst" +"text.alignLeft" = "Poravnaj tekst lijevo" +"text.alignRight" = "Poravnaj tekst desno" +"view.assets" = "Resursi" +"view.design" = "Dizajn" +"view.layers" = "Slojevi" +"view.outlines" = "Prikaži konture" +"view.outlinesHiddenLayers" = "Uključi skrivene slojeve" +"view.outlinesObjectBounds" = "Uključi granice objekata" +"view.outlinesSelection" = "Prikaži konture za odabir" +"view.prototype" = "Prototip" +"view.themeDark" = "Tamna" +"view.themeLight" = "Svijetla" +"view.themeSystem" = "Prati sistem" diff --git a/crates/ui-egui/src/cjk.rs b/crates/ui-egui/src/cjk.rs index ccd54975..fa326d38 100644 --- a/crates/ui-egui/src/cjk.rs +++ b/crates/ui-egui/src/cjk.rs @@ -179,7 +179,7 @@ mod tests { assert_eq!(language("zh-Hans"), HAN); assert_eq!(language("bn"), BENGALI); assert_eq!(language("fr"), 0); - assert!(["en", "es", "es-419", "fr", "de", "pt-BR", "tr", "id", "vi"].iter().all(|c| can_show(c))); + assert!(["en", "es", "es-419", "fr", "de", "pt-BR", "tr", "id", "vi", "bs"].iter().all(|c| can_show(c))); } #[test] diff --git a/crates/ui-egui/src/i18n.rs b/crates/ui-egui/src/i18n.rs index fd737435..d05f4d03 100644 --- a/crates/ui-egui/src/i18n.rs +++ b/crates/ui-egui/src/i18n.rs @@ -179,6 +179,9 @@ fn plural(code: &str, n: usize) -> Plural { "ru" if n % 10 == 1 && n % 100 != 11 => Plural::One, "ru" | "pl" if (2..=4).contains(&(n % 10)) && !(12..=14).contains(&(n % 100)) => Plural::Few, "ru" | "pl" => Plural::Many, + "bs" if n % 10 == 1 && n % 100 != 11 => Plural::One, + "bs" if (2..=4).contains(&(n % 10)) && !(12..=14).contains(&(n % 100)) => Plural::Few, + "bs" => Plural::Other, "ja" | "ko" | "th" | "zh-Hans" | "vi" => Plural::Other, "fr" | "pt-BR" if n <= 1 => Plural::One, _ if n == 1 => Plural::One, @@ -187,7 +190,8 @@ fn plural(code: &str, n: usize) -> Plural { } // CLDR's million-count "many" in French, Spanish and Portuguese still reads their existing -// "other" wording. Czech supplies separate few forms; Russian and Polish supply few/many forms. +// "other" wording. Czech supplies separate few forms; Russian and Polish supply few/many forms; +// Bosnian takes Russian's one and few and reads "other" for the rest (CLDR has no "many" there). /// Whether count `n` takes the "one" form: 0 and 1 in French and Brazilian Portuguese, never in /// Japanese, Korean, Thai, Chinese and Vietnamese (no plural forms: always "other"), 1 elsewhere (CLDR's integer rules). diff --git a/crates/ui-egui/src/i18n/tests.rs b/crates/ui-egui/src/i18n/tests.rs index 86f6efa1..1cc4623e 100644 --- a/crates/ui-egui/src/i18n/tests.rs +++ b/crates/ui-egui/src/i18n/tests.rs @@ -431,6 +431,36 @@ fn swedish_is_picked_for_swedish_locales() { assert!(!plural_one(sv, 0) && plural_one(sv, 1) && !plural_one(sv, 2)); } +#[test] +fn bosnian_tags_and_integer_plurals() { + let code = |pref: &str, system: Option<&str>| LANGS[resolve(pref, system)].code; + for tag in ["bs", "bs-BA", "bs-Latn-BA", "bs_BA.UTF-8"] { + assert_eq!(code("system", Some(tag)), "bs", "{tag}"); + } + let bs = LANGS.iter().position(|l| l.code == "bs").unwrap(); + assert_eq!(LANGS[bs].name, "Bosanski"); + assert!(LANGS[bs].draft); + for n in [1, 21, 31, 101, 1001] { + assert_eq!(plural("bs", n), Plural::One, "{n}"); + } + for n in [2, 3, 4, 22, 24, 102] { + assert_eq!(plural("bs", n), Plural::Few, "{n}"); + } + for n in [0, 5, 11, 12, 14, 20, 111, 112] { + assert_eq!(plural("bs", n), Plural::Other, "{n}"); + } + // "one" covers 21 and 31 too, so every form keeps the count. + for (key, text) in LANGS[bs].ui { + if let Text::Plural(Forms { one, few, other, .. }) = text { + for form in [*one, *few, Some(*other)].into_iter().flatten() { + assert!(form.contains("{n}"), "{key}: {form}"); + } + } + } + let layers = [1, 3, 5, 21].map(|n| fill(counted(bs, "{n} layers", n), &[("n", &n)])); + assert_eq!(layers, ["1 sloj", "3 sloja", "5 slojeva", "21 sloj"]); +} + #[test] fn latin_american_spanish_overlays_spanish() { let code = |pref: &str, system: Option<&str>| LANGS[resolve(pref, system)].code; diff --git a/docs/localization-parity.md b/docs/localization-parity.md index 41e21919..04db2a88 100644 --- a/docs/localization-parity.md +++ b/docs/localization-parity.md @@ -1,10 +1,10 @@ # Localization parity -> **Last reviewed:** 2026-10-10 · **Last updated:** 2026-10-29 · **Change:** minor (German terminology corrections (M10): gradient stops, OpenType stylistic sets and the Home-screen preference; partial review, catalog remains a draft; Arabic draft catalog, count-neutral plurals and web font gate; Thai draft catalog and Thai UI fonts; a missing translation fails no check: `cargo xtask i18n-report` lists them; Vietnamese draft catalog; string counts re-measured: 2,352 entries; Russian and Turkish catalogs reviewed by native speakers, Russian one/few/many plurals; Czech and Indonesian drafts; the Japanese draft completed; counts re-measured; Windows UI language from the first preferred language; draft catalogs catch up: every draft translates every string again; Simplified Chinese draft catalog; macOS finds its downloadable CJK system fonts (#406); string counts re-measured: 2,272 entries, the drafts at 95–99%; Swedish command labels and menu wordings; Russian, Swedish, Turkish, Czech and Indonesian listed; a duplicated paragraph removed) · **Target:** Figma Design (desktop app 126.10.7) +> **Last reviewed:** 2026-10-10 · **Last updated:** 2026-10-29 · **Change:** minor (Bosnian draft catalog, one/few/other plurals; German terminology corrections (M10): gradient stops, OpenType stylistic sets and the Home-screen preference; partial review, catalog remains a draft; Arabic draft catalog, count-neutral plurals and web font gate; Thai draft catalog and Thai UI fonts; a missing translation fails no check: `cargo xtask i18n-report` lists them; Vietnamese draft catalog; string counts re-measured: 2,352 entries; Russian and Turkish catalogs reviewed by native speakers, Russian one/few/many plurals; Czech and Indonesian drafts; the Japanese draft completed; counts re-measured; Windows UI language from the first preferred language; draft catalogs catch up: every draft translates every string again; Simplified Chinese draft catalog; macOS finds its downloadable CJK system fonts (#406); string counts re-measured: 2,272 entries, the drafts at 95–99%; Swedish command labels and menu wordings; Russian, Swedish, Turkish, Czech and Indonesian listed; a duplicated paragraph removed) · **Target:** Figma Design (desktop app 126.10.7) FigCraft's interface has a localization layer with an English catalog, a Russian catalog reviewed by a native speaker, and Spanish (with a Latin American overlay), French, German, Brazilian -Portuguese, Japanese, Korean, Simplified Chinese, Indonesian, Vietnamese and Czech drafts (machine-drafted, +Portuguese, Japanese, Korean, Simplified Chinese, Indonesian, Vietnamese, Bosnian and Czech drafts (machine-drafted, waiting for native speakers' review), plus Swedish and Turkish catalogs. 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). @@ -31,7 +31,7 @@ supported by both apps (CJK, Arabic and Devanagari shaping, IME); Figma has no v Spanish catalog's command and menu tables). Command ids, the CLI, MCP and the control channel stay English. Accessibility names come from the same strings. - **Language preference:** Preferences ▸ Language (System, then each catalog by its own name: - English, Čeština, Deutsch, Español, Español (Latinoamérica), Français, Bahasa Indonesia, 日本語, + English, Bosanski, Čeština, Deutsch, Español, Español (Latinoamérica), Français, Bahasa Indonesia, 日本語, 한국어, Português (Brasil), Русский, Svenska, Türkçe, Tiếng Việt, 简体中文), applied at once without a restart; System takes the first of the OS's preferred languages that has a catalog (on Windows only the first preferred language counts, since that list also holds the languages added for a @@ -53,7 +53,7 @@ supported by both apps (CJK, Arabic and Devanagari shaping, IME); Figma has no v 2026-10-12; by 2026-10-17 the strings added since left them at 95–99% (table below). - **Not yet localized:** messages the engine writes (errors, a few toasts, Dev Mode property values such as "inside"), number formatting (decimal points stay `.`), and decimal plural rules - (`trn` takes integers: Czech uses one/few/other and Russian one/few/many; French and Brazilian + (`trn` takes integers: Czech and Bosnian use one/few/other and Russian one/few/many; French and Brazilian Portuguese take the singular for 0 as well; Japanese, Korean, Chinese and Vietnamese have one form; CLDR's "many" for millions in French, Spanish and Portuguese reads as the plural). - **Script support in documents:** Unicode bidi with Arabic shaping and mirrored brackets in text @@ -105,7 +105,9 @@ Other languages (measured 2026-10-22): Russian (`ru`) 2,352 / 2,352 (100%), revi by VanTan, one/few/many integer plurals; Swedish (`sv`) 2,314 / 2,352 (98.4%), its command labels and menu wordings added 2026-10-17 (#599), native review welcome; Turkish (`tr`) 2,291 / 2,352 (97.4%), whose header says it was machine-drafted and reviewed by a native speaker; Czech (`cs`) 2,292 / 2,352 (97.4%), a draft -with one/few/other plurals. Figma ships none beyond the eight above. +with one/few/other plurals; Bosnian (`bs`, Bosanski, added 2026-10-30) 2,561 / 2,561 (100%: 1,901 UI +strings, 629 command labels, 31 menu wordings), a machine draft awaiting native review, with +one/few/other plurals (21 takes one). Figma ships none beyond the eight above. The layer is done. Per-language hours above are agent hours for a catalog of ~1,800 entries (a machine draft, then a pass over the panels for overflow), plus each language's plural rule where @@ -123,6 +125,7 @@ Hindi and Arabic. Traditional Chinese is not planned (no catalog; its users see | Date | Change | Summary | |---|---|---| +| 2026-10-30 | minor | Bosnian (`bs`, Bosanski) draft catalog: every UI string (1,901), command label (629) and menu wording (31), machine-drafted in Latin script with ijekavian forms and marked as a draft awaiting native review. Bosnian plurals: one for 1, 21, 31… (not 11), few for 2–4, 22–24… (not 12–14), other for the rest. Grade and hours unchanged (Bosnian is not one of the twelve key languages) | | 2026-10-29 | minor | German terminology corrections (M10): gradient stops, OpenType stylistic sets and the Home-screen preference; partial review, catalog remains a draft. Nine existing translations corrected; keys, placeholders, coverage, grade and estimates unchanged | | 2026-10-28 | minor | Arabic draft: 1,857 UI entries, 620 command labels and 31 menu wordings, with count-neutral plurals. AI-assisted, native review pending. Desktop uses the existing Arabic fallback and bidi; web requires an embedded Arabic face. No panel mirroring or parity-grade increase claimed | | 2026-10-24 | minor | Thai (`th`) draft catalog: `th.toml` translates every UI string (1,791), 589 command labels and the 31 menu wordings, machine-drafted and marked as a draft awaiting native review (9 newer command labels read English, as in the other drafts). The desktop UI now adds an installed Thai face (Noto Sans Thai, Leelawadee UI, Tahoma, Sukhumvit Set, Thonburi, Ayuthaya, Sarabun, Loma, Garuda or Waree) when a layer or page name or the UI language needs it, so Thai names no longer show as tofu squares. No plural forms for Thai. Grade and hours unchanged | diff --git a/docs/mcp.md b/docs/mcp.md index 6538bc0b..5978f05f 100644 --- a/docs/mcp.md +++ b/docs/mcp.md @@ -656,7 +656,7 @@ on; `key` resolves keys the way the canvas does. Commands behind keys: - `pref.startOnHome {on?}`: the desktop app starts on the Home screen instead of in a new file (off by default; files named on the command line still open, and `--control` starts in a new file anyway, so control callers have a document). -- `pref.language {language: system|en|cs|ru|es|es-419|fr|de|pt-BR|ja|ka|ko|sv|vi|zh-Hans|…}`: the app's interface language, applied live ("system": +- `pref.language {language: system|en|bs|cs|ru|es|es-419|fr|de|pt-BR|ja|ka|ko|sv|vi|zh-Hans|…}`: 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/translating.md b/docs/translating.md index ed9ff567..9c8aea04 100644 --- a/docs/translating.md +++ b/docs/translating.md @@ -17,7 +17,7 @@ Simplified. The catalogs: English (`en`, the source), and Spanish (`es`, with the Latin American overlay `es-419`), French (`fr`), German (`de`), Dutch (`nl`), Brazilian Portuguese (`pt-BR`), Japanese (`ja`), Korean (`ko`), Simplified Chinese (`zh-Hans`), Czech (`cs`), Indonesian (`id`), Finnish -(`fi`), Bengali (`bn`), Italian (`it`), Vietnamese (`vi`) and Thai (`th`), machine-drafted and waiting for native speakers' review. Polish (`pl`, +(`fi`), Bengali (`bn`), Italian (`it`), Vietnamese (`vi`), Thai (`th`) and Bosnian (`bs`), machine-drafted and waiting for native speakers' review. Polish (`pl`, Polski) was reviewed and approved by Lucas (@lukasz-sklad). Georgian (`ka`) was written with AI assistance and reviewed by a native speaker, and stays a draft until a maintainer changes its status. Russian (`ru`, Русский) was reviewed and approved by VanTan; its catalog keeps Frame, Dev Mode and @@ -67,7 +67,12 @@ plural entries give only `other`. Thai is concise, with bare imperatives for but menu items (บันทึก, ลบ), no ครับ/ค่ะ endings, no spaces between Thai words (a space only separates clauses, and Thai from Latin words or numbers), and design terms transliterated as Thai designers say them (เฟรม, เลเยอร์, คอมโพเนนต์, อินสแตนซ์, ออโต้เลย์เอาต์). It has no plural forms: plural entries give -only `other`, and dates read `{day} {month} {year}` with Thai month abbreviations. +only `other`, and dates read `{day} {month} {year}` with Thai month abbreviations. Bosnian is +written in Latin script with ijekavian forms and Bosnian words (historija, hiljada, sačuvati, +sedmica), uses bare imperatives for buttons and menu items (Sačuvaj, Izbriši) and the formal Vi for +instructions (Odaberite, Kliknite), „ “ quotes, and consistent design terms (okvir, sloj, +komponenta, instanca, varijanta, automatski raspored, ograničenja, ispuna, obrub, efekat, varijabla, +stil, način for a variable mode, dodatak for a plugin). CJK and Thai text need their own fonts, which egui and Inter lack: the desktop app adds an installed one when something on screen needs it, so layer and page names in those scripts show whatever the @@ -116,6 +121,9 @@ right-to-left interface. Native review and representative in-app checks remain r three forms. Czech's CLDR `many` applies only to decimals; `trn` takes integer counts. Polish uses `one` for 1 only, `few` like Russian (2–4, 22–24… except 12–14) and `many` for the other integers, including 0 and 21 (e.g. `{n} warstwa`, `{n} warstwy`, `{n} warstw`). + Bosnian uses `one` for 1, 21, 31… except 11, `few` for 2–4, 22–24… except 12–14, and `other` + for the rest, including 0 (e.g. `{n} sloj`, `{n} sloja`, `{n} slojeva`); since `one` covers 21, + keep `{n}` in every form. 4. A string added later shows English in every language until someone translates it; a missing translation never fails a check or a build. `cargo xtask i18n-report` lists what each language lacks (UI strings, command labels, menu wordings), and `cargo xtask ci` prints the same list.