From 60f4c4f1455f67e3bbc445fb3e48a1b0f3cf458f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ju=CC=88rg=20Lehni?= Date: Thu, 22 Oct 2026 00:23:28 +0200 Subject: [PATCH 01/13] Render: moved type with mitred strokes redraws where its spikes reach Follows #3461: character strokes' miter spikes reach past half the weight, which the redrawn area missed. --- crates/doc/src/text.rs | 12 +++++++++++- crates/render/src/fx.rs | 7 ++++--- crates/render/src/tests_changed.rs | 22 ++++++++++++++++++++++ 3 files changed, 37 insertions(+), 4 deletions(-) diff --git a/crates/doc/src/text.rs b/crates/doc/src/text.rs index 1dc202553..62bca0ba1 100644 --- a/crates/doc/src/text.rs +++ b/crates/doc/src/text.rs @@ -1713,8 +1713,18 @@ impl TextObject { /// How far the characters' strokes paint past their glyphs, in document space: they scale /// with the type. pub fn char_stroke_outset(&self) -> f64 { + self.char_strokes(CharStyle::stroke_outset) + } + /// How far the characters' strokes can paint past their glyphs, their miter spikes and square + /// caps included ([`StrokeLayer::reach`]), in document space: what a change of the type must + /// redraw. The visual bounds take [`Self::char_stroke_outset`]. + pub fn char_stroke_reach(&self) -> f64 { + self.char_strokes(|style| if style.has_stroke() { style.stroke_layer().reach() } else { 0.0 }) + } + /// The farthest `outset` of the characters' styles, scaled with the type. + fn char_strokes(&self, outset: impl Fn(&CharStyle) -> f64) -> f64 { let k = crate::node::Scaling::factor(self.xf).unwrap_or(1.0); - self.runs.iter().map(|r| r.style.stroke_outset()).fold(0.0, f64::max) * k + self.runs.iter().map(|r| outset(&r.style)).fold(0.0, f64::max) * k } pub fn transform(&mut self, a: Affine) { self.xf = a * self.xf; diff --git a/crates/render/src/fx.rs b/crates/render/src/fx.rs index 98a1d6baa..b93d4fe2c 100644 --- a/crates/render/src/fx.rs +++ b/crates/render/src/fx.rs @@ -489,11 +489,12 @@ fn cull_bounds_in(symbols: &SymbolBoxes, n: &Node, after_reshape: bool) -> Optio } /// The box of type `t`'s glyphs as laid out (its layout bounds, else laid out now), grown by its -/// characters' strokes and by `outset`: on a path they stand above it and run past its ends, in an -/// area they can hang past its frame, where its own box ([`Node::visual_bounds_with`]) doesn't. +/// characters' strokes, miter spikes included, and by `outset`: on a path they stand above it and +/// run past its ends, in an area they can hang past its frame, where its own box +/// ([`Node::visual_bounds_with`]) doesn't. fn glyphs_box(t: &vectorcraft_doc::TextObject, outset: f64) -> Option { let b = t.cached_bounds.unwrap_or_else(|| vectorcraft_text::layout(vectorcraft_text::FontDb::global(), t).bounds); - let o = outset.max(t.char_stroke_outset()); + let o = outset.max(t.char_stroke_reach()); (b.width() > 0.0 || b.height() > 0.0).then(|| t.xf.transform_rect_bbox(b).inflate(o, o)) } diff --git a/crates/render/src/tests_changed.rs b/crates/render/src/tests_changed.rs index b5e78138f..21b75c158 100644 --- a/crates/render/src/tests_changed.rs +++ b/crates/render/src/tests_changed.rs @@ -192,6 +192,28 @@ fn reshaping_the_path_of_type_on_a_path_changes_where_its_letters_were_and_are() redraw(&old, &new); } +/// Stroked type with sharp corners: the miter spikes of its characters' strokes reach past half +/// the weight, and change where they were and where they are. +#[test] +fn moving_type_with_mitred_strokes_changes_where_its_spikes_reach() { + let mut old = Document::new(110.0, 80.0); + let l = old.layers[0].id; + let style = vectorcraft_doc::text::CharStyle { + size: 30.0, + stroke: Paint::solid(Color::BLACK), + stroke_width: 10.0, + stroke_join: vectorcraft_doc::LineJoin::Miter, + stroke_miter_limit: 10.0, + ..Default::default() + }; + let mut t = vectorcraft_doc::text::TextObject::point(Point::new(10.0, 50.0), "VAWV", style); + t.cached_bounds = Some(vectorcraft_text::layout(vectorcraft_text::FontDb::global(), &t).bounds); + let text = old.insert(Some(l), 0, Node::new(NodeId(0), NodeKind::Text(Box::new(t)))).unwrap(); + let mut new = old.clone(); + new.node_mut(text).unwrap().transform(Affine::translate((9.0, 7.0)), false); + redraw(&old, &new); +} + #[test] fn an_unchanged_document_changes_nothing_and_a_new_symbol_everything() { let (old, _) = document(); From ae3a8fe4c32a142199e21a9fffdbbc354f575aec Mon Sep 17 00:00:00 2001 From: nrq6993-a11y Date: Sun, 18 Oct 2026 11:59:19 +0300 Subject: [PATCH 02/13] G2: Effect Gallery dialog to browse and apply raster filter stacks MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds Effect → Effect Gallery with category browsing, procedural thumbnails, and a reorderable stack applied via command.batch as separate appearance effects. Co-authored-by: Cursor --- crates/ui-egui/src/dialogs/effect_gallery.rs | 330 +++++++++++++++++++ crates/ui-egui/src/dialogs/mod.rs | 2 + crates/ui-egui/src/menus.rs | 10 +- 3 files changed, 341 insertions(+), 1 deletion(-) create mode 100644 crates/ui-egui/src/dialogs/effect_gallery.rs diff --git a/crates/ui-egui/src/dialogs/effect_gallery.rs b/crates/ui-egui/src/dialogs/effect_gallery.rs new file mode 100644 index 000000000..81a379b1c --- /dev/null +++ b/crates/ui-egui/src/dialogs/effect_gallery.rs @@ -0,0 +1,330 @@ +//! Effect → Effect Gallery: browse Photoshop-style raster filters by category, build a stack, and +//! apply it as separate appearance effects in one undo step. + +use egui::{Color32, Rect, Sense, Stroke}; +use serde_json::{Value, json}; +use vectorcraft_effects::{EffectInfo, PIXEL_EFFECTS}; + +use super::DialogSpec; +use crate::state::Dialog; +use crate::theme::Tokens; +use crate::{VectorcraftApp, widgets}; + +/// Dialog kind for the Effect Gallery. +pub const KIND: &str = "effectGallery"; + +/// Raster effect submenus shown in the gallery (same paths as the Effect menu). +const CATEGORIES: [(&str, &[&str]); 10] = [ + ("Artistic", &["Effect", "Artistic"]), + ("Blur", &["Effect", "Blur"]), + ("Brush Strokes", &["Effect", "Brush Strokes"]), + ("Distort", &["Effect", "Distort"]), + ("Pixelate", &["Effect", "Pixelate"]), + ("Sharpen", &["Effect", "Sharpen"]), + ("Sketch", &["Effect", "Sketch"]), + ("Stylize", &["Effect", "Stylize"]), + ("Texture", &["Effect", "Texture"]), + ("Video", &["Effect", "Video"]), +]; + +pub(super) const SPEC: DialogSpec = DialogSpec { + heading: |_| tl!("Effect Gallery").into(), + body, + confirm, + min_width: 720.0, + max_width: Some(820.0), + ..DialogSpec::FORM +}; + +#[derive(Clone)] +struct StackEntry { + effect: String, + visible: bool, +} + +/// Open the gallery on the current selection. +pub fn open(app: &mut VectorcraftApp, _p: &Value) -> Result { + if !app.session.active().is_some_and(|s| !s.selection.is_empty()) { + return Err(tl!("Select artwork to apply effects").into()); + } + let selected = effects_in_category(0).first().map(|e| e.id).unwrap_or(""); + app.ui.dialog = Some(Dialog::new(KIND, json!({ "category": 0, "selected": selected, "stack": [], "stackSelected": 0 }))); + Ok(Value::Null) +} + +fn effects_in_category(cat: usize) -> Vec { + let path = CATEGORIES.get(cat).map(|(_, p)| *p).unwrap_or(CATEGORIES[0].1); + let mut out: Vec = vectorcraft_effects::effect_catalog() + .into_iter() + .filter(|e| e.menu == path && PIXEL_EFFECTS.contains(&e.id)) + .collect(); + out.sort_by(|a, b| a.label.cmp(b.label)); + out +} + +fn stack_of(d: &Dialog) -> Vec { + d.fields + .get("stack") + .and_then(Value::as_array) + .map(|rows| { + rows.iter() + .filter_map(|row| { + let effect = row.get("effect").and_then(Value::as_str)?; + let visible = row.get("visible").and_then(Value::as_bool).unwrap_or(true); + Some(StackEntry { effect: effect.to_string(), visible }) + }) + .collect() + }) + .unwrap_or_default() +} + +fn write_stack(d: &mut Dialog, stack: &[StackEntry]) { + let rows: Vec = stack.iter().map(|e| json!({ "effect": e.effect, "visible": e.visible })).collect(); + d.fields.insert("stack".into(), Value::Array(rows)); +} + +fn category_ix(d: &Dialog) -> usize { + d.fields.get("category").and_then(Value::as_u64).unwrap_or(0) as usize +} + +fn selected_id(d: &Dialog) -> String { + d.str("selected") +} + +fn set_selected(d: &mut Dialog, id: &str) { + d.fields.insert("selected".into(), json!(id)); +} + +/// A small procedural thumbnail from the effect id (no copied artwork). +fn thumb(ui: &mut egui::Ui, id: &str, size: f32) { + let (rect, _) = ui.allocate_exact_size(egui::vec2(size, size), Sense::hover()); + let hash = id.bytes().fold(0u32, |h, b| h.wrapping_mul(31).wrapping_add(b as u32)); + let c1 = Color32::from_rgb((hash & 0xFF) as u8 | 40, ((hash >> 8) & 0xFF) as u8 | 40, ((hash >> 16) & 0xFF) as u8 | 40); + let c2 = Color32::from_rgb(((hash >> 4) & 0xFF) as u8 | 20, ((hash >> 12) & 0xFF) as u8 | 20, ((hash >> 20) & 0xFF) as u8 | 20); + let painter = ui.painter(); + let steps = 6; + for i in 0..steps { + let t0 = i as f32 / steps as f32; + let t1 = (i + 1) as f32 / steps as f32; + let mix = |t: f32| { + let u = t; + Color32::from_rgba_unmultiplied( + (c1.r() as f32 * (1.0 - u) + c2.r() as f32 * u) as u8, + (c1.g() as f32 * (1.0 - u) + c2.g() as f32 * u) as u8, + (c1.b() as f32 * (1.0 - u) + c2.b() as f32 * u) as u8, + 255, + ) + }; + let band = Rect::from_min_max( + egui::pos2(rect.left() + rect.width() * t0, rect.top()), + egui::pos2(rect.left() + rect.width() * t1, rect.bottom()), + ); + painter.rect_filled(band, 0.0, mix((t0 + t1) * 0.5)); + } + painter.rect_stroke(rect, 0.0, Stroke::new(1.0, Tokens::get(ui.ctx()).input_border), egui::StrokeKind::Inside); +} + +fn effect_label(id: &str) -> String { + vectorcraft_effects::effect_info(id).map(|e| tl!(e.label).trim_end_matches('…').to_string()).unwrap_or_else(|| id.to_string()) +} + +fn body(_app: &mut VectorcraftApp, ui: &mut egui::Ui, d: &mut Dialog) -> bool { + let t = Tokens::get(ui.ctx()); + let cat = category_ix(d); + let effects = effects_in_category(cat); + let mut sel = selected_id(d); + if !effects.iter().any(|e| e.id == sel) { + sel = effects.first().map(|e| e.id.to_string()).unwrap_or_default(); + set_selected(d, &sel); + } + + ui.horizontal_top(|ui| { + ui.vertical(|ui| { + widgets::subheader(ui, tl!("Categories")); + ui.set_width(120.0); + for (i, (name, _)) in CATEGORIES.iter().enumerate() { + let count = effects_in_category(i).len(); + if count == 0 { + continue; + } + let label = tl!(name); + if ui.add(egui::Button::selectable(cat == i, label)).clicked() { + d.fields.insert("category".into(), json!(i)); + let first = effects_in_category(i).first().map(|e| e.id).unwrap_or(""); + set_selected(d, first); + } + } + }); + ui.add_space(8.0); + ui.vertical(|ui| { + widgets::subheader(ui, tl!("Filters")); + ui.set_width(220.0); + egui::ScrollArea::vertical().max_height(220.0).show(ui, |ui| { + for e in &effects { + let picked = e.id == sel; + ui.horizontal(|ui| { + thumb(ui, e.id, 28.0); + let name = tl!(e.label).trim_end_matches('…').to_string(); + let resp = ui.add(egui::Button::selectable(picked, name)); + if resp.clicked() { + set_selected(d, e.id); + } + if resp.double_clicked() { + set_selected(d, e.id); + add_selected(d, e.id); + } + }); + } + }); + if widgets::flat_button(ui, tl!("Add to Stack"), 120.0).clicked() && !sel.is_empty() { + add_selected(d, &sel); + } + }); + ui.add_space(8.0); + ui.vertical(|ui| { + widgets::subheader(ui, tl!("Preview")); + ui.set_width(200.0); + if !sel.is_empty() { + thumb(ui, &sel, 160.0); + ui.label(egui::RichText::new(effect_label(&sel)).color(t.text_strong)); + } else { + ui.label(egui::RichText::new(tl!("Choose a filter")).color(t.text_dim)); + } + }); + }); + + ui.add_space(10.0); + widgets::subheader(ui, tl!("Applied Filters")); + let mut stack = stack_of(d); + let mut stack_sel = d.fields.get("stackSelected").and_then(Value::as_u64).unwrap_or(0) as usize; + if stack_sel >= stack.len() && !stack.is_empty() { + stack_sel = stack.len() - 1; + } + enum StackOp { + Toggle(usize), + Up(usize), + Down(usize), + Remove(usize), + Select(usize), + } + let mut op = None; + let stack_len = stack.len(); + egui::ScrollArea::vertical().max_height(120.0).show(ui, |ui| { + if stack.is_empty() { + ui.label(egui::RichText::new(tl!("Add filters from the list above")).color(t.text_dim)); + return; + } + for (i, entry) in stack.iter().enumerate().take(stack_len) { + ui.horizontal(|ui| { + let eye = if entry.visible { "eye" } else { "eye-off" }; + if widgets::icon_button(ui, eye, tl!("Click to toggle visibility"), false, 22.0).clicked() { + op = Some(StackOp::Toggle(i)); + } + let name = effect_label(&entry.effect); + if ui.add(egui::Button::selectable(stack_sel == i, name)).clicked() { + op = Some(StackOp::Select(i)); + } + if widgets::icon_button_enabled(ui, "dc-arrow-up", tl!("Move Up"), false, i > 0, 22.0).clicked() { + op = Some(StackOp::Up(i)); + } + if widgets::icon_button_enabled(ui, "dc-arrow-down", tl!("Move Down"), false, i + 1 < stack_len, 22.0).clicked() { + op = Some(StackOp::Down(i)); + } + if widgets::flat_button(ui, tl!("Remove"), 64.0).clicked() { + op = Some(StackOp::Remove(i)); + } + }); + } + }); + match op { + Some(StackOp::Toggle(i)) if stack.get(i).is_some() => stack[i].visible = !stack[i].visible, + Some(StackOp::Select(i)) => stack_sel = i, + Some(StackOp::Up(i)) if i > 0 => { + stack.swap(i, i - 1); + stack_sel = i - 1; + } + Some(StackOp::Down(i)) if i + 1 < stack.len() => { + stack.swap(i, i + 1); + stack_sel = i + 1; + } + Some(StackOp::Remove(i)) if i < stack.len() => { + stack.remove(i); + if stack_sel >= stack.len() && !stack.is_empty() { + stack_sel = stack.len() - 1; + } + } + _ => {} + } + write_stack(d, &stack); + d.fields.insert("stackSelected".into(), json!(stack_sel)); + false +} + +fn add_selected(d: &mut Dialog, id: &str) { + let mut stack = stack_of(d); + stack.push(StackEntry { effect: id.to_string(), visible: true }); + write_stack(d, &stack); + d.fields.insert("stackSelected".into(), json!(stack.len().saturating_sub(1))); +} + +fn confirm(app: &mut VectorcraftApp, d: &Dialog) -> Result { + let stack = stack_of(d); + if stack.is_empty() { + app.ui.dialog = None; + return Ok(Value::Null); + } + let mut commands = Vec::with_capacity(stack.len() * 2); + for (i, entry) in stack.iter().enumerate() { + let params = vectorcraft_effects::effect_info(&entry.effect).map(|e| e.defaults.clone()).unwrap_or(json!({})); + commands.push(json!({ "command": "effect.apply", "params": { "effect": entry.effect, "params": params } })); + if !entry.visible { + commands.push(json!({ "command": "effect.setParams", "params": { "index": i, "visible": false } })); + } + } + let r = app.run("command.batch", json!({ "label": "Effect Gallery", "commands": commands })); + if r.is_ok() { + app.ui.dialog = None; + } + r +} + +#[cfg(test)] +mod tests { + use serde_json::json; + use vectorcraft_engine::Session; + + use crate::VectorcraftApp; + + fn frame(app: &mut VectorcraftApp) { + let ctx = egui::Context::default(); + crate::theme::install_fonts(&ctx); + crate::theme::apply(&ctx, Default::default()); + let raw = egui::RawInput { screen_rect: Some(egui::Rect::from_min_size(egui::Pos2::ZERO, egui::vec2(1200.0, 900.0))), ..Default::default() }; + let mut out = ctx.run_ui(raw, |ui| crate::dialogs::show(app, ui.ctx())); + out.textures_delta.clear(); + } + + #[test] + fn stack_ok_is_one_undo_step() { + let mut app = VectorcraftApp::new(Session::new(), Default::default()); + app.run("file.new", json!({"width": 200, "height": 200})).unwrap(); + let id = app.run("shape.rectangle", json!({"x": 10, "y": 10, "width": 40, "height": 40})).unwrap()["id"].as_u64().unwrap(); + app.run("ui.effectGalleryDialog", json!({})).unwrap(); + assert_eq!(app.ui.dialog.as_ref().map(|d| d.kind.as_str()), Some(super::KIND)); + let d = app.ui.dialog.as_mut().unwrap(); + d.fields.insert( + "stack".into(), + json!([{ "effect": "blur.gaussian", "visible": true }, { "effect": "stylize.glowingEdges", "visible": false }]), + ); + frame(&mut app); + let steps = app.session.active().unwrap().history.undo.len(); + crate::dialogs::confirm(&mut app).unwrap(); + let st = app.session.active().unwrap(); + let n = st.doc.node(vectorcraft_doc::NodeId(id)).unwrap(); + assert_eq!(n.appearance.effects.len(), 2); + assert_eq!(n.appearance.effects[0].id, "blur.gaussian"); + assert_eq!(n.appearance.effects[1].id, "stylize.glowingEdges"); + assert!(!n.appearance.effects[1].visible); + assert_eq!(st.history.undo.len(), steps + 1); + } +} diff --git a/crates/ui-egui/src/dialogs/mod.rs b/crates/ui-egui/src/dialogs/mod.rs index f02f75f48..ac2c422fb 100644 --- a/crates/ui-egui/src/dialogs/mod.rs +++ b/crates/ui-egui/src/dialogs/mod.rs @@ -24,6 +24,7 @@ pub mod dxf_import; pub mod dxf_options; pub mod edit_selection; mod effect; +pub mod effect_gallery; pub mod envelope; pub mod eps_options; pub mod expand; @@ -301,6 +302,7 @@ registry! { SwatchConflict: [swatch_conflict::KIND] => swatch_conflict::SPEC, FileInfo: [file_info::KIND] => file_info::SPEC, RasterEffectsSettings: [raster_effects::KIND] => raster_effects::SPEC, + EffectGallery: [effect_gallery::KIND] => effect_gallery::SPEC, MissingLinks: [missing_links::KIND] => missing_links::SPEC, MissingFonts: [missing_fonts::KIND] => missing_fonts::SPEC, FindLinks: [find_links::KIND] => find_links::SPEC, diff --git a/crates/ui-egui/src/menus.rs b/crates/ui-egui/src/menus.rs index 76f0b3176..16d1fd808 100644 --- a/crates/ui-egui/src/menus.rs +++ b/crates/ui-egui/src/menus.rs @@ -857,6 +857,12 @@ pub const UI_COMMANDS: &[(&str, &str, &str, &str)] = &[ "", "{} open Document Raster Effects Settings (dialog `rasterEffectsSettings`: the document.rasterEffectsSettings fields); OK runs it. The menu item opens it too", ), + ( + "ui.effectGalleryDialog", + "Effect Gallery Dialog", + "", + "{} open Effect Gallery (dialog `effectGallery`: browse raster filters, build a stack, OK applies it as separate effects in one undo step). Effect → Effect Gallery… opens it too", + ), ( "ui.pdfPresetsDialog", "PDF Presets…", @@ -1770,6 +1776,7 @@ pub fn run_ui_command(app: &mut VectorcraftApp, id: &str, p: &Value) -> Option io::export(app, s("format").as_deref(), s("path"), p), "ui.fileInfoDialog" => crate::dialogs::file_info::open(app), "ui.rasterEffectsSettingsDialog" => crate::dialogs::raster_effects::open(app), + "ui.effectGalleryDialog" => crate::dialogs::effect_gallery::open(app, p), "ui.pdfPresetsDialog" => { crate::dialogs::pdf_presets::open(app, s("selected").as_deref()); Ok(Value::Null) @@ -2436,7 +2443,7 @@ pub fn enabled(app: &VectorcraftApp, id: &str) -> bool { id if id.starts_with("view.goto") => { id["view.goto".len()..].parse::().is_ok_and(|n| n >= 1 && app.session.active().is_some_and(|d| n <= d.doc.views.len())) } - "effect.dialog" | "ui.recolorDialog" => app.session.active().is_some_and(|d| !d.selection.is_empty()), + "effect.dialog" | "ui.recolorDialog" | "ui.effectGalleryDialog" => app.session.active().is_some_and(|d| !d.selection.is_empty()), "ui.cropImage" => selected_image(app, |_| true), "effect.applyLast" | "effect.last" => app.last_effect.is_some() && app.session.active().is_some_and(|d| !d.selection.is_empty()), "file.export.pdf" | "ui.savePdfDialog" | "ui.fileInfoDialog" | "ui.rasterEffectsSettingsDialog" => app.session.active().is_some(), @@ -4055,6 +4062,7 @@ fn effect_menu() -> Vec { if !raster.is_empty() { out.push(Sep); out.push(Item::Header("Raster Effects")); + out.push(c("Effect Gallery…", "ui.effectGalleryDialog")); out.extend(raster); } // Anything not placed above (future effects) still shows up. From dd9c285252699db7f013f506f775dc972698b97d Mon Sep 17 00:00:00 2001 From: nrq6993-a11y Date: Sun, 18 Oct 2026 16:33:42 +0300 Subject: [PATCH 03/13] G2: Effect Gallery six categories and per-filter settings Limit gallery folders to the six Photoshop-style sets and edit stack params via the existing effect dialog body before apply. Co-authored-by: Cursor --- crates/ui-egui/src/dialogs/effect_gallery.rs | 173 ++++++++++++++++--- 1 file changed, 152 insertions(+), 21 deletions(-) diff --git a/crates/ui-egui/src/dialogs/effect_gallery.rs b/crates/ui-egui/src/dialogs/effect_gallery.rs index 81a379b1c..25a12d706 100644 --- a/crates/ui-egui/src/dialogs/effect_gallery.rs +++ b/crates/ui-egui/src/dialogs/effect_gallery.rs @@ -2,10 +2,10 @@ //! apply it as separate appearance effects in one undo step. use egui::{Color32, Rect, Sense, Stroke}; -use serde_json::{Value, json}; +use serde_json::{Map, Value, json}; use vectorcraft_effects::{EffectInfo, PIXEL_EFFECTS}; -use super::DialogSpec; +use super::{DialogSpec, effect, form}; use crate::state::Dialog; use crate::theme::Tokens; use crate::{VectorcraftApp, widgets}; @@ -13,18 +13,14 @@ use crate::{VectorcraftApp, widgets}; /// Dialog kind for the Effect Gallery. pub const KIND: &str = "effectGallery"; -/// Raster effect submenus shown in the gallery (same paths as the Effect menu). -const CATEGORIES: [(&str, &[&str]); 10] = [ +/// Raster effect submenus in the gallery (the six Photoshop-style folders it holds). +const CATEGORIES: [(&str, &[&str]); 6] = [ ("Artistic", &["Effect", "Artistic"]), - ("Blur", &["Effect", "Blur"]), ("Brush Strokes", &["Effect", "Brush Strokes"]), ("Distort", &["Effect", "Distort"]), - ("Pixelate", &["Effect", "Pixelate"]), - ("Sharpen", &["Effect", "Sharpen"]), ("Sketch", &["Effect", "Sketch"]), ("Stylize", &["Effect", "Stylize"]), ("Texture", &["Effect", "Texture"]), - ("Video", &["Effect", "Video"]), ]; pub(super) const SPEC: DialogSpec = DialogSpec { @@ -40,6 +36,7 @@ pub(super) const SPEC: DialogSpec = DialogSpec { struct StackEntry { effect: String, visible: bool, + params: Map, } /// Open the gallery on the current selection. @@ -48,7 +45,10 @@ pub fn open(app: &mut VectorcraftApp, _p: &Value) -> Result { return Err(tl!("Select artwork to apply effects").into()); } let selected = effects_in_category(0).first().map(|e| e.id).unwrap_or(""); - app.ui.dialog = Some(Dialog::new(KIND, json!({ "category": 0, "selected": selected, "stack": [], "stackSelected": 0 }))); + app.ui.dialog = Some(Dialog::new( + KIND, + json!({ "category": 0, "selected": selected, "stack": [], "stackSelected": 0, "stackFocus": false }), + )); Ok(Value::Null) } @@ -62,6 +62,20 @@ fn effects_in_category(cat: usize) -> Vec { out } +fn default_params(id: &str) -> Map { + match vectorcraft_effects::effect_info(id).map(|e| e.defaults) { + Some(Value::Object(m)) => m, + _ => Map::new(), + } +} + +fn merged_params(id: &str, stored: &Map) -> Map { + match vectorcraft_effects::merged_params(id, &Value::Object(stored.clone())) { + Value::Object(m) => m, + _ => default_params(id), + } +} + fn stack_of(d: &Dialog) -> Vec { d.fields .get("stack") @@ -71,7 +85,13 @@ fn stack_of(d: &Dialog) -> Vec { .filter_map(|row| { let effect = row.get("effect").and_then(Value::as_str)?; let visible = row.get("visible").and_then(Value::as_bool).unwrap_or(true); - Some(StackEntry { effect: effect.to_string(), visible }) + let params = row + .get("params") + .and_then(Value::as_object) + .cloned() + .map(|m| merged_params(effect, &m)) + .unwrap_or_else(|| default_params(effect)); + Some(StackEntry { effect: effect.to_string(), visible, params }) }) .collect() }) @@ -79,7 +99,10 @@ fn stack_of(d: &Dialog) -> Vec { } fn write_stack(d: &mut Dialog, stack: &[StackEntry]) { - let rows: Vec = stack.iter().map(|e| json!({ "effect": e.effect, "visible": e.visible })).collect(); + let rows: Vec = stack + .iter() + .map(|e| json!({ "effect": e.effect, "visible": e.visible, "params": e.params })) + .collect(); d.fields.insert("stack".into(), Value::Array(rows)); } @@ -95,6 +118,82 @@ fn set_selected(d: &mut Dialog, id: &str) { d.fields.insert("selected".into(), json!(id)); } +fn stack_focus(d: &Dialog) -> bool { + d.fields.get("stackFocus").and_then(Value::as_bool).unwrap_or(false) +} + +fn set_stack_focus(d: &mut Dialog, on: bool) { + d.fields.insert("stackFocus".into(), json!(on)); +} + +fn browse_params(d: &Dialog) -> Map { + let effect = d.fields.get("browseEffect").and_then(Value::as_str).unwrap_or(""); + let stored = d.fields.get("browseParams").and_then(Value::as_object).cloned().unwrap_or_default(); + if effect.is_empty() { + stored + } else { + merged_params(effect, &stored) + } +} + +fn set_browse_params(d: &mut Dialog, effect: &str, params: Map) { + d.fields.insert("browseEffect".into(), json!(effect)); + d.fields.insert("browseParams".into(), Value::Object(params)); +} + +/// The effect whose parameters the panel edits, and its values. +fn param_target(d: &Dialog, stack: &[StackEntry], stack_sel: usize, browse: &str) -> (String, Map) { + if stack_focus(d) { + let entry = stack.get(stack_sel); + if let Some(e) = entry { + return (e.effect.clone(), e.params.clone()); + } + } + let id = browse.to_string(); + let params = if d.fields.get("browseEffect").and_then(Value::as_str) == Some(browse) { + browse_params(d) + } else { + default_params(browse) + }; + (id, params) +} + +fn write_param_target(d: &mut Dialog, stack: &mut [StackEntry], stack_sel: usize, browse: &str, effect: &str, params: Map) { + if stack_focus(d) { + if let Some(e) = stack.get_mut(stack_sel) { + if e.effect == effect { + e.params = params; + } + } + return; + } + if browse == effect { + set_browse_params(d, effect, params); + } +} + +/// Reuse the live effect dialog's fields for `effect_id` and `params`. +fn effect_param_fields(app: &mut VectorcraftApp, ui: &mut egui::Ui, effect_id: &str, params: &mut Map) { + if effect_id.is_empty() { + return; + } + let label = vectorcraft_effects::effect_info(effect_id) + .map(|e| e.label.trim_end_matches('…').to_string()) + .unwrap_or_else(|| effect_id.to_string()); + let mut fields = params.clone(); + fields.insert("__effect".into(), json!(effect_id)); + fields.insert("__label".into(), json!(label)); + fields.insert("preview".into(), json!(false)); + let mut temp = Dialog::new("effect", Value::Object(fields)); + (effect::SPEC.body)(app, ui, &mut temp); + if let Value::Object(m) = form::params(&temp) { + *params = m; + } + if let Value::Object(m) = vectorcraft_effects::upgrade_params(effect_id, &Value::Object(params.clone())) { + *params = m; + } +} + /// A small procedural thumbnail from the effect id (no copied artwork). fn thumb(ui: &mut egui::Ui, id: &str, size: f32) { let (rect, _) = ui.allocate_exact_size(egui::vec2(size, size), Sense::hover()); @@ -128,7 +227,7 @@ fn effect_label(id: &str) -> String { vectorcraft_effects::effect_info(id).map(|e| tl!(e.label).trim_end_matches('…').to_string()).unwrap_or_else(|| id.to_string()) } -fn body(_app: &mut VectorcraftApp, ui: &mut egui::Ui, d: &mut Dialog) -> bool { +fn body(app: &mut VectorcraftApp, ui: &mut egui::Ui, d: &mut Dialog) -> bool { let t = Tokens::get(ui.ctx()); let cat = category_ix(d); let effects = effects_in_category(cat); @@ -138,6 +237,20 @@ fn body(_app: &mut VectorcraftApp, ui: &mut egui::Ui, d: &mut Dialog) -> bool { set_selected(d, &sel); } + let mut stack = stack_of(d); + let mut stack_sel = d.fields.get("stackSelected").and_then(Value::as_u64).unwrap_or(0) as usize; + if stack_sel >= stack.len() && !stack.is_empty() { + stack_sel = stack.len() - 1; + } + let (param_effect, mut param_values) = param_target(d, &stack, stack_sel, &sel); + if !param_effect.is_empty() { + widgets::subheader(ui, tl!("Settings")); + egui::ScrollArea::vertical().max_height(200.0).show(ui, |ui| { + effect_param_fields(app, ui, ¶m_effect, &mut param_values); + }); + write_param_target(d, &mut stack, stack_sel, &sel, ¶m_effect, param_values); + } + ui.horizontal_top(|ui| { ui.vertical(|ui| { widgets::subheader(ui, tl!("Categories")); @@ -152,6 +265,7 @@ fn body(_app: &mut VectorcraftApp, ui: &mut egui::Ui, d: &mut Dialog) -> bool { d.fields.insert("category".into(), json!(i)); let first = effects_in_category(i).first().map(|e| e.id).unwrap_or(""); set_selected(d, first); + set_stack_focus(d, false); } } }); @@ -168,25 +282,30 @@ fn body(_app: &mut VectorcraftApp, ui: &mut egui::Ui, d: &mut Dialog) -> bool { let resp = ui.add(egui::Button::selectable(picked, name)); if resp.clicked() { set_selected(d, e.id); + set_stack_focus(d, false); } if resp.double_clicked() { set_selected(d, e.id); + set_stack_focus(d, false); add_selected(d, e.id); + stack = stack_of(d); } }); } }); if widgets::flat_button(ui, tl!("Add to Stack"), 120.0).clicked() && !sel.is_empty() { add_selected(d, &sel); + stack = stack_of(d); } }); ui.add_space(8.0); ui.vertical(|ui| { widgets::subheader(ui, tl!("Preview")); ui.set_width(200.0); - if !sel.is_empty() { - thumb(ui, &sel, 160.0); - ui.label(egui::RichText::new(effect_label(&sel)).color(t.text_strong)); + let (param_effect, _) = param_target(d, &stack, stack_sel, &sel); + if !param_effect.is_empty() { + thumb(ui, ¶m_effect, 160.0); + ui.label(egui::RichText::new(effect_label(¶m_effect)).color(t.text_strong)); } else { ui.label(egui::RichText::new(tl!("Choose a filter")).color(t.text_dim)); } @@ -195,7 +314,6 @@ fn body(_app: &mut VectorcraftApp, ui: &mut egui::Ui, d: &mut Dialog) -> bool { ui.add_space(10.0); widgets::subheader(ui, tl!("Applied Filters")); - let mut stack = stack_of(d); let mut stack_sel = d.fields.get("stackSelected").and_then(Value::as_u64).unwrap_or(0) as usize; if stack_sel >= stack.len() && !stack.is_empty() { stack_sel = stack.len() - 1; @@ -238,7 +356,10 @@ fn body(_app: &mut VectorcraftApp, ui: &mut egui::Ui, d: &mut Dialog) -> bool { }); match op { Some(StackOp::Toggle(i)) if stack.get(i).is_some() => stack[i].visible = !stack[i].visible, - Some(StackOp::Select(i)) => stack_sel = i, + Some(StackOp::Select(i)) => { + stack_sel = i; + set_stack_focus(d, true); + } Some(StackOp::Up(i)) if i > 0 => { stack.swap(i, i - 1); stack_sel = i - 1; @@ -261,10 +382,16 @@ fn body(_app: &mut VectorcraftApp, ui: &mut egui::Ui, d: &mut Dialog) -> bool { } fn add_selected(d: &mut Dialog, id: &str) { + let params = if !stack_focus(d) && d.fields.get("browseEffect").and_then(Value::as_str) == Some(id) { + browse_params(d) + } else { + default_params(id) + }; let mut stack = stack_of(d); - stack.push(StackEntry { effect: id.to_string(), visible: true }); + stack.push(StackEntry { effect: id.to_string(), visible: true, params }); write_stack(d, &stack); d.fields.insert("stackSelected".into(), json!(stack.len().saturating_sub(1))); + set_stack_focus(d, true); } fn confirm(app: &mut VectorcraftApp, d: &Dialog) -> Result { @@ -275,7 +402,7 @@ fn confirm(app: &mut VectorcraftApp, d: &Dialog) -> Result { } let mut commands = Vec::with_capacity(stack.len() * 2); for (i, entry) in stack.iter().enumerate() { - let params = vectorcraft_effects::effect_info(&entry.effect).map(|e| e.defaults.clone()).unwrap_or(json!({})); + let params = Value::Object(entry.params.clone()); commands.push(json!({ "command": "effect.apply", "params": { "effect": entry.effect, "params": params } })); if !entry.visible { commands.push(json!({ "command": "effect.setParams", "params": { "index": i, "visible": false } })); @@ -314,7 +441,10 @@ mod tests { let d = app.ui.dialog.as_mut().unwrap(); d.fields.insert( "stack".into(), - json!([{ "effect": "blur.gaussian", "visible": true }, { "effect": "stylize.glowingEdges", "visible": false }]), + json!([ + { "effect": "artistic.cutout", "visible": true, "params": { "levels": 3 } }, + { "effect": "stylize.glowingEdges", "visible": false, "params": { "edgeWidth": 2 } } + ]), ); frame(&mut app); let steps = app.session.active().unwrap().history.undo.len(); @@ -322,7 +452,8 @@ mod tests { let st = app.session.active().unwrap(); let n = st.doc.node(vectorcraft_doc::NodeId(id)).unwrap(); assert_eq!(n.appearance.effects.len(), 2); - assert_eq!(n.appearance.effects[0].id, "blur.gaussian"); + assert_eq!(n.appearance.effects[0].id, "artistic.cutout"); + assert_eq!(n.appearance.effects[0].params.get("levels").and_then(|v| v.as_i64()), Some(3)); assert_eq!(n.appearance.effects[1].id, "stylize.glowingEdges"); assert!(!n.appearance.effects[1].visible); assert_eq!(st.history.undo.len(), steps + 1); From e72735bcf9b46ac9afbf2ab6d7fd4c883b567c8a Mon Sep 17 00:00:00 2001 From: nrq6993-a11y Date: Tue, 20 Oct 2026 21:40:51 +0300 Subject: [PATCH 04/13] G2: satisfy clippy and rustfmt on Effect Gallery dialog. Co-authored-by: Cursor --- crates/ui-egui/src/dialogs/effect_gallery.rs | 64 ++++++-------------- 1 file changed, 18 insertions(+), 46 deletions(-) diff --git a/crates/ui-egui/src/dialogs/effect_gallery.rs b/crates/ui-egui/src/dialogs/effect_gallery.rs index 25a12d706..263d6a54f 100644 --- a/crates/ui-egui/src/dialogs/effect_gallery.rs +++ b/crates/ui-egui/src/dialogs/effect_gallery.rs @@ -23,14 +23,8 @@ const CATEGORIES: [(&str, &[&str]); 6] = [ ("Texture", &["Effect", "Texture"]), ]; -pub(super) const SPEC: DialogSpec = DialogSpec { - heading: |_| tl!("Effect Gallery").into(), - body, - confirm, - min_width: 720.0, - max_width: Some(820.0), - ..DialogSpec::FORM -}; +pub(super) const SPEC: DialogSpec = + DialogSpec { heading: |_| tl!("Effect Gallery").into(), body, confirm, min_width: 720.0, max_width: Some(820.0), ..DialogSpec::FORM }; #[derive(Clone)] struct StackEntry { @@ -45,19 +39,14 @@ pub fn open(app: &mut VectorcraftApp, _p: &Value) -> Result { return Err(tl!("Select artwork to apply effects").into()); } let selected = effects_in_category(0).first().map(|e| e.id).unwrap_or(""); - app.ui.dialog = Some(Dialog::new( - KIND, - json!({ "category": 0, "selected": selected, "stack": [], "stackSelected": 0, "stackFocus": false }), - )); + app.ui.dialog = Some(Dialog::new(KIND, json!({ "category": 0, "selected": selected, "stack": [], "stackSelected": 0, "stackFocus": false }))); Ok(Value::Null) } fn effects_in_category(cat: usize) -> Vec { let path = CATEGORIES.get(cat).map(|(_, p)| *p).unwrap_or(CATEGORIES[0].1); - let mut out: Vec = vectorcraft_effects::effect_catalog() - .into_iter() - .filter(|e| e.menu == path && PIXEL_EFFECTS.contains(&e.id)) - .collect(); + let mut out: Vec = + vectorcraft_effects::effect_catalog().into_iter().filter(|e| e.menu == path && PIXEL_EFFECTS.contains(&e.id)).collect(); out.sort_by(|a, b| a.label.cmp(b.label)); out } @@ -99,10 +88,7 @@ fn stack_of(d: &Dialog) -> Vec { } fn write_stack(d: &mut Dialog, stack: &[StackEntry]) { - let rows: Vec = stack - .iter() - .map(|e| json!({ "effect": e.effect, "visible": e.visible, "params": e.params })) - .collect(); + let rows: Vec = stack.iter().map(|e| json!({ "effect": e.effect, "visible": e.visible, "params": e.params })).collect(); d.fields.insert("stack".into(), Value::Array(rows)); } @@ -129,11 +115,7 @@ fn set_stack_focus(d: &mut Dialog, on: bool) { fn browse_params(d: &Dialog) -> Map { let effect = d.fields.get("browseEffect").and_then(Value::as_str).unwrap_or(""); let stored = d.fields.get("browseParams").and_then(Value::as_object).cloned().unwrap_or_default(); - if effect.is_empty() { - stored - } else { - merged_params(effect, &stored) - } + if effect.is_empty() { stored } else { merged_params(effect, &stored) } } fn set_browse_params(d: &mut Dialog, effect: &str, params: Map) { @@ -150,20 +132,16 @@ fn param_target(d: &Dialog, stack: &[StackEntry], stack_sel: usize, browse: &str } } let id = browse.to_string(); - let params = if d.fields.get("browseEffect").and_then(Value::as_str) == Some(browse) { - browse_params(d) - } else { - default_params(browse) - }; + let params = if d.fields.get("browseEffect").and_then(Value::as_str) == Some(browse) { browse_params(d) } else { default_params(browse) }; (id, params) } fn write_param_target(d: &mut Dialog, stack: &mut [StackEntry], stack_sel: usize, browse: &str, effect: &str, params: Map) { if stack_focus(d) { - if let Some(e) = stack.get_mut(stack_sel) { - if e.effect == effect { - e.params = params; - } + if let Some(e) = stack.get_mut(stack_sel) + && e.effect == effect + { + e.params = params; } return; } @@ -177,9 +155,8 @@ fn effect_param_fields(app: &mut VectorcraftApp, ui: &mut egui::Ui, effect_id: & if effect_id.is_empty() { return; } - let label = vectorcraft_effects::effect_info(effect_id) - .map(|e| e.label.trim_end_matches('…').to_string()) - .unwrap_or_else(|| effect_id.to_string()); + let label = + vectorcraft_effects::effect_info(effect_id).map(|e| e.label.trim_end_matches('…').to_string()).unwrap_or_else(|| effect_id.to_string()); let mut fields = params.clone(); fields.insert("__effect".into(), json!(effect_id)); fields.insert("__label".into(), json!(label)); @@ -214,10 +191,8 @@ fn thumb(ui: &mut egui::Ui, id: &str, size: f32) { 255, ) }; - let band = Rect::from_min_max( - egui::pos2(rect.left() + rect.width() * t0, rect.top()), - egui::pos2(rect.left() + rect.width() * t1, rect.bottom()), - ); + let band = + Rect::from_min_max(egui::pos2(rect.left() + rect.width() * t0, rect.top()), egui::pos2(rect.left() + rect.width() * t1, rect.bottom())); painter.rect_filled(band, 0.0, mix((t0 + t1) * 0.5)); } painter.rect_stroke(rect, 0.0, Stroke::new(1.0, Tokens::get(ui.ctx()).input_border), egui::StrokeKind::Inside); @@ -382,11 +357,8 @@ fn body(app: &mut VectorcraftApp, ui: &mut egui::Ui, d: &mut Dialog) -> bool { } fn add_selected(d: &mut Dialog, id: &str) { - let params = if !stack_focus(d) && d.fields.get("browseEffect").and_then(Value::as_str) == Some(id) { - browse_params(d) - } else { - default_params(id) - }; + let params = + if !stack_focus(d) && d.fields.get("browseEffect").and_then(Value::as_str) == Some(id) { browse_params(d) } else { default_params(id) }; let mut stack = stack_of(d); stack.push(StackEntry { effect: id.to_string(), visible: true, params }); write_stack(d, &stack); From d275fbf725d408a8a1ac00c74431084c1a6b2c9e Mon Sep 17 00:00:00 2001 From: nrq6993-a11y Date: Wed, 21 Oct 2026 00:45:21 +0300 Subject: [PATCH 05/13] G2: catalog Effect Gallery dialog tl! strings for all locales. Co-authored-by: Cursor --- crates/ui-egui/src/i18n/bg.tsv | 8 ++++++++ crates/ui-egui/src/i18n/cs.tsv | 8 ++++++++ crates/ui-egui/src/i18n/da.tsv | 8 ++++++++ crates/ui-egui/src/i18n/de.tsv | 8 ++++++++ crates/ui-egui/src/i18n/el.tsv | 8 ++++++++ crates/ui-egui/src/i18n/es.tsv | 8 ++++++++ crates/ui-egui/src/i18n/fi.tsv | 8 ++++++++ crates/ui-egui/src/i18n/fr.tsv | 8 ++++++++ crates/ui-egui/src/i18n/hu.tsv | 8 ++++++++ crates/ui-egui/src/i18n/id.tsv | 8 ++++++++ crates/ui-egui/src/i18n/it.tsv | 8 ++++++++ crates/ui-egui/src/i18n/ja.tsv | 8 ++++++++ crates/ui-egui/src/i18n/ko.tsv | 8 ++++++++ crates/ui-egui/src/i18n/nl.tsv | 8 ++++++++ crates/ui-egui/src/i18n/pl.tsv | 8 ++++++++ crates/ui-egui/src/i18n/pt-br.tsv | 8 ++++++++ crates/ui-egui/src/i18n/ru.tsv | 8 ++++++++ crates/ui-egui/src/i18n/sv.tsv | 8 ++++++++ crates/ui-egui/src/i18n/uk.tsv | 8 ++++++++ crates/ui-egui/src/i18n/vi.tsv | 8 ++++++++ crates/ui-egui/src/i18n/zh-hans.tsv | 8 ++++++++ crates/ui-egui/src/i18n/zh-hant.tsv | 8 ++++++++ 22 files changed, 176 insertions(+) diff --git a/crates/ui-egui/src/i18n/bg.tsv b/crates/ui-egui/src/i18n/bg.tsv index a44438be7..f8ab8ca23 100644 --- a/crates/ui-egui/src/i18n/bg.tsv +++ b/crates/ui-egui/src/i18n/bg.tsv @@ -5310,6 +5310,14 @@ theme Appearance Външен вид Full Justify Пълно двустранно Minimum must not exceed Desired, nor Desired Maximum. Минималната стойност не може да надвишава желаната, нито желаната – максималната. Justification Подравняване + Add filters from the list above Добавете филтри от списъка по-горе + Add to Stack Добавяне към стека + Applied Filters Приложени филтри + Categories Категории + Choose a filter Изберете филтър + Effect Gallery Галерия с ефекти + Filters Филтри + Select artwork to apply effects Изберете графика, за да приложите ефекти @msg the file's variables and data sets weren't read (variables: {variables}, data sets: {data_sets}): the Variables panel doesn't list them променливите и наборите от данни на файла не бяха прочетени (променливи: {variables}, набори от данни: {data_sets}): панелът „Променливи“ не ги показва # Select by Color (select.color) Select by Color Избиране по цвят diff --git a/crates/ui-egui/src/i18n/cs.tsv b/crates/ui-egui/src/i18n/cs.tsv index 0bed38936..0124a1f20 100644 --- a/crates/ui-egui/src/i18n/cs.tsv +++ b/crates/ui-egui/src/i18n/cs.tsv @@ -5353,6 +5353,14 @@ mark-style Japanese Japonské Full Justify Zarovnat do bloku Minimum must not exceed Desired, nor Desired Maximum. Minimum nesmí překročit požadovanou hodnotu ani požadovaná hodnota maximum. Justification Zarovnání do bloku + Add filters from the list above Přidejte filtry ze seznamu výše + Add to Stack Přidat na zásobník + Applied Filters Použité filtry + Categories Kategorie + Choose a filter Vyberte filtr + Effect Gallery Galerie efektů + Filters Filtry + Select artwork to apply effects Vyberte grafiku, na kterou chcete použít efekty @msg the file's variables and data sets weren't read (variables: {variables}, data sets: {data_sets}): the Variables panel doesn't list them proměnné a sady dat souboru nebyly načteny (proměnné: {variables}, sady dat: {data_sets}): panel Proměnné je nezobrazuje # Select by Color (select.color) Select by Color Vybrat podle barvy diff --git a/crates/ui-egui/src/i18n/da.tsv b/crates/ui-egui/src/i18n/da.tsv index e5c9c6a74..047f7b073 100644 --- a/crates/ui-egui/src/i18n/da.tsv +++ b/crates/ui-egui/src/i18n/da.tsv @@ -5306,6 +5306,14 @@ swatch Bright Violet Kraftig violet Full Justify Lige margener Minimum must not exceed Desired, nor Desired Maximum. Minimum må ikke overstige Ønsket, og Ønsket ikke Maksimum. Justification Justering + Add filters from the list above Tilføj filtre fra listen ovenfor + Add to Stack Tilføj til stak + Applied Filters Anvendte filtre + Categories Kategorier + Choose a filter Vælg et filter + Effect Gallery Effektgalleri + Filters Filtre + Select artwork to apply effects Vælg grafik for at anvende effekter # Select by Color (select.color) Select by Color Markér efter farve Smudge Stick… Udtværingsstift… diff --git a/crates/ui-egui/src/i18n/de.tsv b/crates/ui-egui/src/i18n/de.tsv index a356bacb5..8fca8c3e9 100644 --- a/crates/ui-egui/src/i18n/de.tsv +++ b/crates/ui-egui/src/i18n/de.tsv @@ -4934,6 +4934,14 @@ effect Soft Weich Minimum must not exceed Desired, nor Desired Maximum. Das Minimum darf den optimalen Wert nicht übersteigen, der optimale Wert nicht das Maximum. Minimum Minimum Justification Abstände + Add filters from the list above Filter aus der Liste oben hinzufügen + Add to Stack Zum Stapel hinzufügen + Applied Filters Angewendete Filter + Categories Kategorien + Choose a filter Filter wählen + Effect Gallery Effekt-Galerie + Filters Filter + Select artwork to apply effects Wählen Sie Grafik aus, um Effekte anzuwenden @msg the file's variables and data sets weren't read (variables: {variables}, data sets: {data_sets}): the Variables panel doesn't list them die Variablen und Datensätze der Datei wurden nicht gelesen (Variablen: {variables}, Datensätze: {data_sets}): Das Bedienfeld „Variablen“ listet sie nicht auf # Select by Color (select.color) Select by Color Nach Farbe auswählen diff --git a/crates/ui-egui/src/i18n/el.tsv b/crates/ui-egui/src/i18n/el.tsv index 47459f07c..c97154f1f 100644 --- a/crates/ui-egui/src/i18n/el.tsv +++ b/crates/ui-egui/src/i18n/el.tsv @@ -5305,6 +5305,14 @@ effect Points Σημεία Full Justify Στοίχιση και στα δύο άκρα Minimum must not exceed Desired, nor Desired Maximum. Το ελάχιστο δεν πρέπει να υπερβαίνει το επιθυμητό, ούτε το επιθυμητό το μέγιστο. Justification Πλήρης στοίχιση + Add filters from the list above Προσθέστε φίλτρα από τη λίστα παραπάνω + Add to Stack Προσθήκη στη στοίβα + Applied Filters Εφαρμοσμένα φίλτρα + Categories Κατηγορίες + Choose a filter Επιλέξτε φίλτρο + Effect Gallery Συλλογή εφέ + Filters Φίλτρα + Select artwork to apply effects Επιλέξτε γραφικά για να εφαρμόσετε εφέ @msg the file's variables and data sets weren't read (variables: {variables}, data sets: {data_sets}): the Variables panel doesn't list them οι μεταβλητές και τα σύνολα δεδομένων του αρχείου δεν διαβάστηκαν (μεταβλητές: {variables}, σύνολα δεδομένων: {data_sets}): ο πίνακας Μεταβλητές δεν τα εμφανίζει # Select by Color (select.color) Select by Color Επιλογή βάσει χρώματος diff --git a/crates/ui-egui/src/i18n/es.tsv b/crates/ui-egui/src/i18n/es.tsv index db7a047b7..a5d9eae6d 100644 --- a/crates/ui-egui/src/i18n/es.tsv +++ b/crates/ui-egui/src/i18n/es.tsv @@ -5295,6 +5295,14 @@ mark-style Japanese Japonesas Full Justify Justificar completamente Minimum must not exceed Desired, nor Desired Maximum. El mínimo no puede superar el deseado, ni el deseado el máximo. Justification Justificación + Add filters from the list above Añada filtros de la lista de arriba + Add to Stack Añadir a la pila + Applied Filters Filtros aplicados + Categories Categorías + Choose a filter Elija un filtro + Effect Gallery Galería de efectos + Filters Filtros + Select artwork to apply effects Seleccione gráficos para aplicar efectos @msg the file's variables and data sets weren't read (variables: {variables}, data sets: {data_sets}): the Variables panel doesn't list them no se leyeron las variables ni los conjuntos de datos del archivo (variables: {variables}, conjuntos de datos: {data_sets}): el panel Variables no los muestra # Select by Color (select.color) Select by Color Seleccionar por color diff --git a/crates/ui-egui/src/i18n/fi.tsv b/crates/ui-egui/src/i18n/fi.tsv index d04facf00..88f14d09b 100644 --- a/crates/ui-egui/src/i18n/fi.tsv +++ b/crates/ui-egui/src/i18n/fi.tsv @@ -5317,6 +5317,14 @@ mark-style Japanese Japanilainen Full Justify Täysi tasaus Minimum must not exceed Desired, nor Desired Maximum. Minimi ei saa ylittää haluttua arvoa eikä haluttu arvo maksimia. Justification Tasaus + Add filters from the list above Lisää suodattimia yllä olevasta luettelosta + Add to Stack Lisää pinoon + Applied Filters Käytetyt suodattimet + Categories Luokat + Choose a filter Valitse suodatin + Effect Gallery Tehostegalleria + Filters Suodattimet + Select artwork to apply effects Valitse grafiikka, johon tehosteet otetaan @msg the file's variables and data sets weren't read (variables: {variables}, data sets: {data_sets}): the Variables panel doesn't list them tiedoston muuttujia ja tietojoukkoja ei luettu (muuttujia: {variables}, tietojoukkoja: {data_sets}): Muuttujat-paneeli ei näytä niitä # Select by Color (select.color) Select by Color Valitse värin mukaan diff --git a/crates/ui-egui/src/i18n/fr.tsv b/crates/ui-egui/src/i18n/fr.tsv index 9993f344e..69cd9ab56 100644 --- a/crates/ui-egui/src/i18n/fr.tsv +++ b/crates/ui-egui/src/i18n/fr.tsv @@ -5352,6 +5352,14 @@ theme Appearance Apparence Full Justify Justification complète Minimum must not exceed Desired, nor Desired Maximum. Le minimum ne doit pas dépasser la valeur optimale, ni la valeur optimale le maximum. Justification Justification + Add filters from the list above Ajoutez des filtres à partir de la liste ci-dessus + Add to Stack Ajouter à la pile + Applied Filters Filtres appliqués + Categories Catégories + Choose a filter Choisir un filtre + Effect Gallery Galerie d'effets + Filters Filtres + Select artwork to apply effects Sélectionnez des éléments graphiques pour appliquer des effets @msg the file's variables and data sets weren't read (variables: {variables}, data sets: {data_sets}): the Variables panel doesn't list them les variables et jeux de données du fichier n’ont pas été lus (variables : {variables}, jeux de données : {data_sets}) : le panneau Variables ne les affiche pas # Select by Color (select.color) Select by Color Sélectionner par couleur diff --git a/crates/ui-egui/src/i18n/hu.tsv b/crates/ui-egui/src/i18n/hu.tsv index f9f65f9fe..992560a4d 100644 --- a/crates/ui-egui/src/i18n/hu.tsv +++ b/crates/ui-egui/src/i18n/hu.tsv @@ -5339,6 +5339,14 @@ imageTrace Outline Körvonal Full Justify Teljes sorkizárás Minimum must not exceed Desired, nor Desired Maximum. A minimum nem haladhatja meg a kívánt értéket, sem a kívánt érték a maximumot. Justification Sorkizárás + Add filters from the list above Adjon hozzá szűrőket a fenti listából + Add to Stack Hozzáadás a veremhez + Applied Filters Alkalmazott szűrők + Categories Kategóriák + Choose a filter Válasszon szűrőt + Effect Gallery Effektusgaléria + Filters Szűrők + Select artwork to apply effects Válasszon ki grafikát az effektusok alkalmazásához @msg the file's variables and data sets weren't read (variables: {variables}, data sets: {data_sets}): the Variables panel doesn't list them a fájl változói és adatkészletei nem lettek beolvasva (változók: {variables}, adatkészletek: {data_sets}): a Változók panel nem listázza őket # Select by Color (select.color) Select by Color Kijelölés szín szerint diff --git a/crates/ui-egui/src/i18n/id.tsv b/crates/ui-egui/src/i18n/id.tsv index 17c6c7ceb..230b914f0 100644 --- a/crates/ui-egui/src/i18n/id.tsv +++ b/crates/ui-egui/src/i18n/id.tsv @@ -5306,6 +5306,14 @@ swatch Bright Violet Violet cerah Full Justify Rata Penuh Minimum must not exceed Desired, nor Desired Maximum. Minimum tidak boleh melebihi Diinginkan, dan Diinginkan tidak boleh melebihi Maksimum. Justification Justifikasi + Add filters from the list above Tambahkan filter dari daftar di atas + Add to Stack Tambahkan ke Tumpukan + Applied Filters Filter yang Diterapkan + Categories Kategori + Choose a filter Pilih filter + Effect Gallery Galeri Efek + Filters Filter + Select artwork to apply effects Pilih grafis untuk menerapkan efek # Select by Color (select.color) Select by Color Pilih berdasarkan warna Smudge Stick… Tongkat olesan… diff --git a/crates/ui-egui/src/i18n/it.tsv b/crates/ui-egui/src/i18n/it.tsv index 7333cb719..14824bafd 100644 --- a/crates/ui-egui/src/i18n/it.tsv +++ b/crates/ui-egui/src/i18n/it.tsv @@ -4968,6 +4968,14 @@ lighting Light Luce Minimum must not exceed Desired, nor Desired Maximum. Il minimo non può superare il valore desiderato, né il desiderato il massimo. Minimum Minimo Justification Giustificazione + Add filters from the list above Aggiungi filtri dall'elenco sopra + Add to Stack Aggiungi alla pila + Applied Filters Filtri applicati + Categories Categorie + Choose a filter Scegli un filtro + Effect Gallery Galleria effetti + Filters Filtri + Select artwork to apply effects Seleziona la grafica a cui applicare gli effetti @msg the file's variables and data sets weren't read (variables: {variables}, data sets: {data_sets}): the Variables panel doesn't list them le variabili e i set di dati del file non sono stati letti (variabili: {variables}, set di dati: {data_sets}): il pannello Variabili non li elenca # Select by Color (select.color) Select by Color Seleziona per colore diff --git a/crates/ui-egui/src/i18n/ja.tsv b/crates/ui-egui/src/i18n/ja.tsv index e58f4e0d7..21709cca2 100644 --- a/crates/ui-egui/src/i18n/ja.tsv +++ b/crates/ui-egui/src/i18n/ja.tsv @@ -5008,6 +5008,14 @@ lighting Light ライト Minimum must not exceed Desired, nor Desired Maximum. 最小値は最適値を、最適値は最大値を超えることはできません。 Minimum 最小 Justification 文字組み + Add filters from the list above 上のリストからフィルターを追加 + Add to Stack スタックに追加 + Applied Filters 適用したフィルター + Categories カテゴリ + Choose a filter フィルターを選択 + Effect Gallery 効果ギャラリー + Filters フィルター + Select artwork to apply effects 効果を適用するグラフィックを選択してください @msg the file's variables and data sets weren't read (variables: {variables}, data sets: {data_sets}): the Variables panel doesn't list them ファイルの変数とデータセットは読み込まれませんでした (変数: {variables}、データセット: {data_sets})。変数パネルには表示されません # Select by Color (select.color) Select by Color カラーで選択 diff --git a/crates/ui-egui/src/i18n/ko.tsv b/crates/ui-egui/src/i18n/ko.tsv index eb4baa015..71b16eb8c 100644 --- a/crates/ui-egui/src/i18n/ko.tsv +++ b/crates/ui-egui/src/i18n/ko.tsv @@ -4931,6 +4931,14 @@ lighting Light 광원 Minimum must not exceed Desired, nor Desired Maximum. 최소값은 희망값을, 희망값은 최대값을 넘을 수 없습니다. Minimum 최소 Justification 양끝 맞춤 + Add filters from the list above 위 목록에서 필터 추가 + Add to Stack 스택에 추가 + Applied Filters 적용된 필터 + Categories 범주 + Choose a filter 필터 선택 + Effect Gallery 효과 갤러리 + Filters 필터 + Select artwork to apply effects 효과를 적용할 그래픽을 선택하세요 @msg the file's variables and data sets weren't read (variables: {variables}, data sets: {data_sets}): the Variables panel doesn't list them 파일의 변수와 데이터 세트를 읽지 않았습니다(변수: {variables}, 데이터 세트: {data_sets}). 변수 패널에 표시되지 않습니다 # Select by Color (select.color) Select by Color 색상별 선택 diff --git a/crates/ui-egui/src/i18n/nl.tsv b/crates/ui-egui/src/i18n/nl.tsv index 70ffeafc6..452a7d650 100644 --- a/crates/ui-egui/src/i18n/nl.tsv +++ b/crates/ui-egui/src/i18n/nl.tsv @@ -5348,6 +5348,14 @@ swatch Bright Violet Felviolet Full Justify Volledig uitvullen Minimum must not exceed Desired, nor Desired Maximum. Minimum mag niet groter zijn dan Gewenst, en Gewenst niet groter dan Maximum. Justification Uitvullen + Add filters from the list above Voeg filters toe uit de lijst hierboven + Add to Stack Toevoegen aan stapel + Applied Filters Toegepaste filters + Categories Categorieën + Choose a filter Kies een filter + Effect Gallery Effectgalerij + Filters Filters + Select artwork to apply effects Selecteer grafiek om effecten toe te passen # Select by Color (select.color) Select by Color Selecteren op kleur Smudge Stick… Uitsmeerstift… diff --git a/crates/ui-egui/src/i18n/pl.tsv b/crates/ui-egui/src/i18n/pl.tsv index 1192bb98f..16e2a9cfc 100644 --- a/crates/ui-egui/src/i18n/pl.tsv +++ b/crates/ui-egui/src/i18n/pl.tsv @@ -5205,6 +5205,14 @@ mark-style Japanese Japońskie Full Justify Pełne justowanie Minimum must not exceed Desired, nor Desired Maximum. Minimum nie może przekraczać wartości optymalnej, a wartość optymalna maksimum. Justification Justowanie + Add filters from the list above Dodaj filtry z listy powyżej + Add to Stack Dodaj do stosu + Applied Filters Zastosowane filtry + Categories Kategorie + Choose a filter Wybierz filtr + Effect Gallery Galeria efektów + Filters Filtry + Select artwork to apply effects Wybierz grafikę, aby zastosować efekty @msg the file's variables and data sets weren't read (variables: {variables}, data sets: {data_sets}): the Variables panel doesn't list them zmienne i zestawy danych pliku nie zostały wczytane (zmienne: {variables}, zestawy danych: {data_sets}): panel Zmienne ich nie wyświetla # Select by Color (select.color) Select by Color Zaznacz według koloru diff --git a/crates/ui-egui/src/i18n/pt-br.tsv b/crates/ui-egui/src/i18n/pt-br.tsv index 0af3fe6c2..c54d1ad32 100644 --- a/crates/ui-egui/src/i18n/pt-br.tsv +++ b/crates/ui-egui/src/i18n/pt-br.tsv @@ -5270,6 +5270,14 @@ mark-style Japanese Japonesas Full Justify Justificação Completa Minimum must not exceed Desired, nor Desired Maximum. O mínimo não pode passar do desejado, nem o desejado do máximo. Justification Justificação + Add filters from the list above Adicione filtros da lista acima + Add to Stack Adicionar à Pilha + Applied Filters Filtros Aplicados + Categories Categorias + Choose a filter Escolha um filtro + Effect Gallery Galeria de Efeitos + Filters Filtros + Select artwork to apply effects Selecione a arte para aplicar efeitos @msg the file's variables and data sets weren't read (variables: {variables}, data sets: {data_sets}): the Variables panel doesn't list them as variáveis e os conjuntos de dados do arquivo não foram lidos (variáveis: {variables}, conjuntos de dados: {data_sets}): o painel Variáveis não os lista # Select by Color (select.color) Select by Color Selecionar por Cor diff --git a/crates/ui-egui/src/i18n/ru.tsv b/crates/ui-egui/src/i18n/ru.tsv index a1b7dd319..62d504105 100644 --- a/crates/ui-egui/src/i18n/ru.tsv +++ b/crates/ui-egui/src/i18n/ru.tsv @@ -4964,6 +4964,14 @@ lighting Light Свет Minimum must not exceed Desired, nor Desired Maximum. Минимум не может превышать желательное значение, а желательное — максимум. Minimum Минимум Justification Выключка + Add filters from the list above Добавьте фильтры из списка выше + Add to Stack Добавить в стек + Applied Filters Применённые фильтры + Categories Категории + Choose a filter Выберите фильтр + Effect Gallery Галерея эффектов + Filters Фильтры + Select artwork to apply effects Выберите графику, чтобы применить эффекты @msg the file's variables and data sets weren't read (variables: {variables}, data sets: {data_sets}): the Variables panel doesn't list them переменные и наборы данных файла не прочитаны (переменных: {variables}, наборов данных: {data_sets}): панель «Переменные» их не показывает # Select by Color (select.color) Select by Color Выделить по цвету diff --git a/crates/ui-egui/src/i18n/sv.tsv b/crates/ui-egui/src/i18n/sv.tsv index 843b3cbfd..6d0b1c417 100644 --- a/crates/ui-egui/src/i18n/sv.tsv +++ b/crates/ui-egui/src/i18n/sv.tsv @@ -5309,6 +5309,14 @@ theme Appearance Utseende Full Justify Fullständig marginaljustering Minimum must not exceed Desired, nor Desired Maximum. Minimum får inte överstiga Önskat, och Önskat inte Maximum. Justification Justering + Add filters from the list above Lägg till filter från listan ovan + Add to Stack Lägg till i stacken + Applied Filters Tillämpade filter + Categories Kategorier + Choose a filter Välj ett filter + Effect Gallery Effektgalleri + Filters Filter + Select artwork to apply effects Välj grafik för att tillämpa effekter @msg the file's variables and data sets weren't read (variables: {variables}, data sets: {data_sets}): the Variables panel doesn't list them filens variabler och datauppsättningar lästes inte (variabler: {variables}, datauppsättningar: {data_sets}): panelen Variabler visar dem inte # Select by Color (select.color) Select by Color Markera efter färg diff --git a/crates/ui-egui/src/i18n/uk.tsv b/crates/ui-egui/src/i18n/uk.tsv index b422ebcad..cb4a2e80a 100644 --- a/crates/ui-egui/src/i18n/uk.tsv +++ b/crates/ui-egui/src/i18n/uk.tsv @@ -4948,6 +4948,14 @@ lighting Light Світло Minimum must not exceed Desired, nor Desired Maximum. Мінімум не може перевищувати бажане значення, а бажане — максимум. Minimum Мінімум Justification Вирівнювання за шириною + Add filters from the list above Додайте фільтри зі списку вище + Add to Stack Додати до стека + Applied Filters Застосовані фільтри + Categories Категорії + Choose a filter Виберіть фільтр + Effect Gallery Галерея ефектів + Filters Фільтри + Select artwork to apply effects Виберіть графіку, щоб застосувати ефекти @msg the file's variables and data sets weren't read (variables: {variables}, data sets: {data_sets}): the Variables panel doesn't list them змінні та набори даних файлу не прочитано (змінних: {variables}, наборів даних: {data_sets}): панель «Змінні» їх не показує # Select by Color (select.color) Select by Color Виділити за кольором diff --git a/crates/ui-egui/src/i18n/vi.tsv b/crates/ui-egui/src/i18n/vi.tsv index 38ce6e879..bef27182b 100644 --- a/crates/ui-egui/src/i18n/vi.tsv +++ b/crates/ui-egui/src/i18n/vi.tsv @@ -4948,6 +4948,14 @@ theme Appearance Giao diện Minimum must not exceed Desired, nor Desired Maximum. Giá trị tối thiểu không được vượt quá giá trị mong muốn, và giá trị mong muốn không được vượt quá tối đa. Minimum Tối thiểu Justification Căn đều + Add filters from the list above Thêm bộ lọc từ danh sách phía trên + Add to Stack Thêm vào ngăn xếp + Applied Filters Bộ lọc đã áp dụng + Categories Danh mục + Choose a filter Chọn bộ lọc + Effect Gallery Thư viện hiệu ứng + Filters Bộ lọc + Select artwork to apply effects Chọn đồ họa để áp dụng hiệu ứng @msg the file's variables and data sets weren't read (variables: {variables}, data sets: {data_sets}): the Variables panel doesn't list them các biến và tập dữ liệu của tệp chưa được đọc (biến: {variables}, tập dữ liệu: {data_sets}): bảng Biến không liệt kê chúng # Select by Color (select.color) Select by Color Chọn theo màu diff --git a/crates/ui-egui/src/i18n/zh-hans.tsv b/crates/ui-egui/src/i18n/zh-hans.tsv index 4fb69a12d..95f9fd49c 100644 --- a/crates/ui-egui/src/i18n/zh-hans.tsv +++ b/crates/ui-egui/src/i18n/zh-hans.tsv @@ -5192,6 +5192,14 @@ lighting Light 光源 Minimum must not exceed Desired, nor Desired Maximum. 最小值不能超过所需值,所需值不能超过最大值。 Minimum 最小值 Justification 对齐设置 + Add filters from the list above 从上方列表添加滤镜 + Add to Stack 添加到堆栈 + Applied Filters 已应用的滤镜 + Categories 类别 + Choose a filter 选择滤镜 + Effect Gallery 效果库 + Filters 滤镜 + Select artwork to apply effects 选择要应用效果的图稿 @msg the file's variables and data sets weren't read (variables: {variables}, data sets: {data_sets}): the Variables panel doesn't list them 文件的变量和数据集未被读取(变量:{variables},数据集:{data_sets}):“变量”面板不会列出它们 # Select by Color (select.color) Select by Color 按颜色选择 diff --git a/crates/ui-egui/src/i18n/zh-hant.tsv b/crates/ui-egui/src/i18n/zh-hant.tsv index 8a0043f58..8654c00c8 100644 --- a/crates/ui-egui/src/i18n/zh-hant.tsv +++ b/crates/ui-egui/src/i18n/zh-hant.tsv @@ -4982,6 +4982,14 @@ lighting Light 光源 Minimum must not exceed Desired, nor Desired Maximum. 最小值不可超過所需值,所需值不可超過最大值。 Minimum 最小值 Justification 對齊設定 + Add filters from the list above 從上方清單新增濾鏡 + Add to Stack 加入堆疊 + Applied Filters 已套用的濾鏡 + Categories 類別 + Choose a filter 選擇濾鏡 + Effect Gallery 效果庫 + Filters 濾鏡 + Select artwork to apply effects 選取要套用效果的圖稿 # Select by Color (select.color) Select by Color 依顏色選取 @msg missing integer `{key}` 未提供整數 `{key}` From 757eaf9afa5b6a06573de90fa5b914b5d80b6c60 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Wed, 21 Oct 2026 17:40:07 +0000 Subject: [PATCH 06/13] Effect Gallery: plain filter list and live stack preview Remove hash-coloured thumbnails; preview the selection with the applied filter stack on the canvas (Cancel rolls back). OK commits via batch. Co-authored-by: nrq6993-a11y --- crates/ui-egui/src/dialogs/effect_gallery.rs | 171 ++++++++++++------- crates/ui-egui/src/i18n/bg.tsv | 2 + crates/ui-egui/src/i18n/cs.tsv | 2 + crates/ui-egui/src/i18n/da.tsv | 2 + crates/ui-egui/src/i18n/de.tsv | 2 + crates/ui-egui/src/i18n/el.tsv | 2 + crates/ui-egui/src/i18n/es.tsv | 2 + crates/ui-egui/src/i18n/fi.tsv | 2 + crates/ui-egui/src/i18n/fr.tsv | 2 + crates/ui-egui/src/i18n/hu.tsv | 2 + crates/ui-egui/src/i18n/id.tsv | 2 + crates/ui-egui/src/i18n/it.tsv | 2 + crates/ui-egui/src/i18n/ja.tsv | 2 + crates/ui-egui/src/i18n/ka.tsv | 9 + crates/ui-egui/src/i18n/ko.tsv | 2 + crates/ui-egui/src/i18n/nl.tsv | 2 + crates/ui-egui/src/i18n/pl.tsv | 2 + crates/ui-egui/src/i18n/pt-br.tsv | 2 + crates/ui-egui/src/i18n/ru.tsv | 2 + crates/ui-egui/src/i18n/sv.tsv | 2 + crates/ui-egui/src/i18n/uk.tsv | 2 + crates/ui-egui/src/i18n/vi.tsv | 2 + crates/ui-egui/src/i18n/zh-hans.tsv | 2 + crates/ui-egui/src/i18n/zh-hant.tsv | 2 + 24 files changed, 161 insertions(+), 63 deletions(-) diff --git a/crates/ui-egui/src/dialogs/effect_gallery.rs b/crates/ui-egui/src/dialogs/effect_gallery.rs index 263d6a54f..c2bfd76b4 100644 --- a/crates/ui-egui/src/dialogs/effect_gallery.rs +++ b/crates/ui-egui/src/dialogs/effect_gallery.rs @@ -1,7 +1,7 @@ //! Effect → Effect Gallery: browse Photoshop-style raster filters by category, build a stack, and //! apply it as separate appearance effects in one undo step. -use egui::{Color32, Rect, Sense, Stroke}; +use egui; use serde_json::{Map, Value, json}; use vectorcraft_effects::{EffectInfo, PIXEL_EFFECTS}; @@ -23,8 +23,15 @@ const CATEGORIES: [(&str, &[&str]); 6] = [ ("Texture", &["Effect", "Texture"]), ]; -pub(super) const SPEC: DialogSpec = - DialogSpec { heading: |_| tl!("Effect Gallery").into(), body, confirm, min_width: 720.0, max_width: Some(820.0), ..DialogSpec::FORM }; +pub(super) const SPEC: DialogSpec = DialogSpec { + heading: |_| tl!("Effect Gallery").into(), + body, + confirm, + preview: true, + min_width: 720.0, + max_width: Some(820.0), + ..DialogSpec::FORM +}; #[derive(Clone)] struct StackEntry { @@ -39,7 +46,10 @@ pub fn open(app: &mut VectorcraftApp, _p: &Value) -> Result { return Err(tl!("Select artwork to apply effects").into()); } let selected = effects_in_category(0).first().map(|e| e.id).unwrap_or(""); - app.ui.dialog = Some(Dialog::new(KIND, json!({ "category": 0, "selected": selected, "stack": [], "stackSelected": 0, "stackFocus": false }))); + app.ui.dialog = Some(Dialog::new( + KIND, + json!({ "category": 0, "selected": selected, "stack": [], "stackSelected": 0, "stackFocus": false, "preview": true }), + )); Ok(Value::Null) } @@ -171,31 +181,66 @@ fn effect_param_fields(app: &mut VectorcraftApp, ui: &mut egui::Ui, effect_id: & } } -/// A small procedural thumbnail from the effect id (no copied artwork). -fn thumb(ui: &mut egui::Ui, id: &str, size: f32) { - let (rect, _) = ui.allocate_exact_size(egui::vec2(size, size), Sense::hover()); - let hash = id.bytes().fold(0u32, |h, b| h.wrapping_mul(31).wrapping_add(b as u32)); - let c1 = Color32::from_rgb((hash & 0xFF) as u8 | 40, ((hash >> 8) & 0xFF) as u8 | 40, ((hash >> 16) & 0xFF) as u8 | 40); - let c2 = Color32::from_rgb(((hash >> 4) & 0xFF) as u8 | 20, ((hash >> 12) & 0xFF) as u8 | 20, ((hash >> 20) & 0xFF) as u8 | 20); - let painter = ui.painter(); - let steps = 6; - for i in 0..steps { - let t0 = i as f32 / steps as f32; - let t1 = (i + 1) as f32 / steps as f32; - let mix = |t: f32| { - let u = t; - Color32::from_rgba_unmultiplied( - (c1.r() as f32 * (1.0 - u) + c2.r() as f32 * u) as u8, - (c1.g() as f32 * (1.0 - u) + c2.g() as f32 * u) as u8, - (c1.b() as f32 * (1.0 - u) + c2.b() as f32 * u) as u8, - 255, - ) - }; - let band = - Rect::from_min_max(egui::pos2(rect.left() + rect.width() * t0, rect.top()), egui::pos2(rect.left() + rect.width() * t1, rect.bottom())); - painter.rect_filled(band, 0.0, mix((t0 + t1) * 0.5)); +fn stack_batch_commands(stack: &[StackEntry]) -> Vec { + let mut commands = Vec::with_capacity(stack.len() * 2); + for (i, entry) in stack.iter().enumerate() { + let params = Value::Object(entry.params.clone()); + commands.push(json!({ "command": "effect.apply", "params": { "effect": entry.effect, "params": params } })); + if !entry.visible { + commands.push(json!({ "command": "effect.setParams", "params": { "index": i, "visible": false } })); + } + } + commands +} + +fn stack_batch_params(stack: &[StackEntry]) -> Value { + json!({ "label": "Effect Gallery", "commands": stack_batch_commands(stack) }) +} + +/// Live canvas preview of the stack (`command.batch` would settle the dialog interaction each frame). +fn preview_stack_on_canvas(app: &mut VectorcraftApp, stack: &[StackEntry]) { + if app.session.in_interaction() { + let _ = app.session.cancel_interaction(); + } + let _ = app.session.begin_interaction("Effect Gallery"); + for (i, entry) in stack.iter().enumerate() { + let params = Value::Object(entry.params.clone()); + if app.run("effect.apply", json!({ "effect": entry.effect, "params": params })).is_err() { + let _ = app.session.cancel_interaction(); + return; + } + if !entry.visible && app.run("effect.setParams", json!({ "index": i, "visible": false })).is_err() { + let _ = app.session.cancel_interaction(); + return; + } + } +} + +fn stack_preview_row(app: &mut VectorcraftApp, ui: &mut egui::Ui, d: &mut Dialog, stack: &[StackEntry]) { + const LAST: &str = super::form::PREVIEWED; + ui.add_space(8.0); + let mut on = d.bool("preview"); + if widgets::check(ui, tl!("Preview"), on, true) { + on = !on; + d.fields.insert("preview".into(), json!(on)); + } + if !on { + if d.fields.remove(LAST).is_some() { + let _ = app.session.cancel_interaction(); + } + return; + } + if stack.is_empty() { + if d.fields.remove(LAST).is_some() { + let _ = app.session.cancel_interaction(); + } + return; + } + let batch = stack_batch_params(stack); + if d.fields.get(LAST) != Some(&batch) || !app.session.in_interaction() { + preview_stack_on_canvas(app, stack); + d.fields.insert(LAST.into(), batch); } - painter.rect_stroke(rect, 0.0, Stroke::new(1.0, Tokens::get(ui.ctx()).input_border), egui::StrokeKind::Inside); } fn effect_label(id: &str) -> String { @@ -251,21 +296,18 @@ fn body(app: &mut VectorcraftApp, ui: &mut egui::Ui, d: &mut Dialog) -> bool { egui::ScrollArea::vertical().max_height(220.0).show(ui, |ui| { for e in &effects { let picked = e.id == sel; - ui.horizontal(|ui| { - thumb(ui, e.id, 28.0); - let name = tl!(e.label).trim_end_matches('…').to_string(); - let resp = ui.add(egui::Button::selectable(picked, name)); - if resp.clicked() { - set_selected(d, e.id); - set_stack_focus(d, false); - } - if resp.double_clicked() { - set_selected(d, e.id); - set_stack_focus(d, false); - add_selected(d, e.id); - stack = stack_of(d); - } - }); + let name = tl!(e.label).trim_end_matches('…').to_string(); + let resp = ui.add(egui::Button::selectable(picked, name)); + if resp.clicked() { + set_selected(d, e.id); + set_stack_focus(d, false); + } + if resp.double_clicked() { + set_selected(d, e.id); + set_stack_focus(d, false); + add_selected(d, e.id); + stack = stack_of(d); + } } }); if widgets::flat_button(ui, tl!("Add to Stack"), 120.0).clicked() && !sel.is_empty() { @@ -273,18 +315,6 @@ fn body(app: &mut VectorcraftApp, ui: &mut egui::Ui, d: &mut Dialog) -> bool { stack = stack_of(d); } }); - ui.add_space(8.0); - ui.vertical(|ui| { - widgets::subheader(ui, tl!("Preview")); - ui.set_width(200.0); - let (param_effect, _) = param_target(d, &stack, stack_sel, &sel); - if !param_effect.is_empty() { - thumb(ui, ¶m_effect, 160.0); - ui.label(egui::RichText::new(effect_label(¶m_effect)).color(t.text_strong)); - } else { - ui.label(egui::RichText::new(tl!("Choose a filter")).color(t.text_dim)); - } - }); }); ui.add_space(10.0); @@ -353,6 +383,7 @@ fn body(app: &mut VectorcraftApp, ui: &mut egui::Ui, d: &mut Dialog) -> bool { } write_stack(d, &stack); d.fields.insert("stackSelected".into(), json!(stack_sel)); + stack_preview_row(app, ui, d, &stack); false } @@ -369,18 +400,17 @@ fn add_selected(d: &mut Dialog, id: &str) { fn confirm(app: &mut VectorcraftApp, d: &Dialog) -> Result { let stack = stack_of(d); if stack.is_empty() { + if app.session.in_interaction() { + let _ = app.session.cancel_interaction(); + } app.ui.dialog = None; return Ok(Value::Null); } - let mut commands = Vec::with_capacity(stack.len() * 2); - for (i, entry) in stack.iter().enumerate() { - let params = Value::Object(entry.params.clone()); - commands.push(json!({ "command": "effect.apply", "params": { "effect": entry.effect, "params": params } })); - if !entry.visible { - commands.push(json!({ "command": "effect.setParams", "params": { "index": i, "visible": false } })); - } + let batch = stack_batch_params(&stack); + if d.bool("preview") && app.session.in_interaction() { + return super::form::commit_preview(app, "command.batch", batch); } - let r = app.run("command.batch", json!({ "label": "Effect Gallery", "commands": commands })); + let r = app.run("command.batch", batch); if r.is_ok() { app.ui.dialog = None; } @@ -403,6 +433,21 @@ mod tests { out.textures_delta.clear(); } + #[test] + fn stack_preview_is_one_interaction() { + let mut app = VectorcraftApp::new(Session::new(), Default::default()); + app.run("file.new", json!({"width": 200, "height": 200})).unwrap(); + let id = app.run("shape.rectangle", json!({"x": 10, "y": 10, "width": 40, "height": 40})).unwrap()["id"].as_u64().unwrap(); + app.run("ui.effectGalleryDialog", json!({})).unwrap(); + let d = app.ui.dialog.as_mut().unwrap(); + d.fields.insert("stack".into(), json!([{ "effect": "artistic.cutout", "visible": true, "params": { "levels": 3 } }])); + frame(&mut app); + assert!(app.session.in_interaction(), "the stack previews on the canvas"); + crate::dialogs::cancel(&mut app); + assert!(!app.session.in_interaction()); + assert!(app.session.active().unwrap().doc.node(vectorcraft_doc::NodeId(id)).unwrap().appearance.effects.is_empty()); + } + #[test] fn stack_ok_is_one_undo_step() { let mut app = VectorcraftApp::new(Session::new(), Default::default()); diff --git a/crates/ui-egui/src/i18n/bg.tsv b/crates/ui-egui/src/i18n/bg.tsv index f8ab8ca23..0ab57b7a3 100644 --- a/crates/ui-egui/src/i18n/bg.tsv +++ b/crates/ui-egui/src/i18n/bg.tsv @@ -5351,3 +5351,5 @@ theme Appearance Външен вид Shift: Изместване: Fresco… Фреска… Fresco Фреска + Effect Gallery… Галерия с ефекти… + Effect Gallery Dialog Диалог „Галерия с ефекти“ diff --git a/crates/ui-egui/src/i18n/cs.tsv b/crates/ui-egui/src/i18n/cs.tsv index 0124a1f20..54f38c94b 100644 --- a/crates/ui-egui/src/i18n/cs.tsv +++ b/crates/ui-egui/src/i18n/cs.tsv @@ -5394,3 +5394,5 @@ mark-style Japanese Japonské Shift: Posun: Fresco… Freska… Fresco Freska + Effect Gallery… Galerie efektů… + Effect Gallery Dialog Dialog Galerie efektů diff --git a/crates/ui-egui/src/i18n/da.tsv b/crates/ui-egui/src/i18n/da.tsv index 047f7b073..14bdad93a 100644 --- a/crates/ui-egui/src/i18n/da.tsv +++ b/crates/ui-egui/src/i18n/da.tsv @@ -5367,3 +5367,5 @@ swatch Bright Violet Kraftig violet Shift: Forskydning: Fresco… Fresko… Fresco Fresko + Effect Gallery… Effektgalleri… + Effect Gallery Dialog Dialogboksen Effektgalleri diff --git a/crates/ui-egui/src/i18n/de.tsv b/crates/ui-egui/src/i18n/de.tsv index 8fca8c3e9..6aacd6e3c 100644 --- a/crates/ui-egui/src/i18n/de.tsv +++ b/crates/ui-egui/src/i18n/de.tsv @@ -4975,3 +4975,5 @@ effect Soft Weich Shift: Verschiebung: Fresco… Fresko… Fresco Fresko + Effect Gallery… Effekt-Galerie… + Effect Gallery Dialog Dialogfeld „Effekt-Galerie“ diff --git a/crates/ui-egui/src/i18n/el.tsv b/crates/ui-egui/src/i18n/el.tsv index c97154f1f..2ea3887d3 100644 --- a/crates/ui-egui/src/i18n/el.tsv +++ b/crates/ui-egui/src/i18n/el.tsv @@ -5346,3 +5346,5 @@ effect Points Σημεία Shift: Μετατόπιση: Fresco… Νωπογραφία… Fresco Νωπογραφία + Effect Gallery… Συλλογή εφέ… + Effect Gallery Dialog Παράθυρο διαλόγου Συλλογή εφέ diff --git a/crates/ui-egui/src/i18n/es.tsv b/crates/ui-egui/src/i18n/es.tsv index a5d9eae6d..00a483a19 100644 --- a/crates/ui-egui/src/i18n/es.tsv +++ b/crates/ui-egui/src/i18n/es.tsv @@ -5336,3 +5336,5 @@ mark-style Japanese Japonesas Shift: Desplazamiento: Fresco… Fresco… Fresco Fresco + Effect Gallery… Galería de efectos… + Effect Gallery Dialog Cuadro de diálogo Galería de efectos diff --git a/crates/ui-egui/src/i18n/fi.tsv b/crates/ui-egui/src/i18n/fi.tsv index 88f14d09b..19db20bff 100644 --- a/crates/ui-egui/src/i18n/fi.tsv +++ b/crates/ui-egui/src/i18n/fi.tsv @@ -5425,3 +5425,5 @@ swatch Bright Violet Kirkas violetti Shift: Siirtymä: Fresco… Fresko… Fresco Fresko + Effect Gallery… Tehostegalleria… + Effect Gallery Dialog Tehostegalleria-valintaikkuna diff --git a/crates/ui-egui/src/i18n/fr.tsv b/crates/ui-egui/src/i18n/fr.tsv index 69cd9ab56..a1abcc6ba 100644 --- a/crates/ui-egui/src/i18n/fr.tsv +++ b/crates/ui-egui/src/i18n/fr.tsv @@ -5393,3 +5393,5 @@ theme Appearance Apparence Shift: Décalage : Fresco… Fresque… Fresco Fresque + Effect Gallery… Galerie d'effets… + Effect Gallery Dialog Boîte de dialogue Galerie d'effets diff --git a/crates/ui-egui/src/i18n/hu.tsv b/crates/ui-egui/src/i18n/hu.tsv index 992560a4d..448ee605f 100644 --- a/crates/ui-egui/src/i18n/hu.tsv +++ b/crates/ui-egui/src/i18n/hu.tsv @@ -5380,3 +5380,5 @@ imageTrace Outline Körvonal Shift: Eltolás: Fresco… Freskó… Fresco Freskó + Effect Gallery… Effektusgaléria… + Effect Gallery Dialog Effektusgaléria párbeszédpanel diff --git a/crates/ui-egui/src/i18n/id.tsv b/crates/ui-egui/src/i18n/id.tsv index 230b914f0..917c48816 100644 --- a/crates/ui-egui/src/i18n/id.tsv +++ b/crates/ui-egui/src/i18n/id.tsv @@ -5367,3 +5367,5 @@ swatch Bright Violet Violet cerah Shift: Pergeseran: Fresco… Fresko… Fresco Fresko + Effect Gallery… Galeri Efek… + Effect Gallery Dialog Dialog Galeri Efek diff --git a/crates/ui-egui/src/i18n/it.tsv b/crates/ui-egui/src/i18n/it.tsv index 14824bafd..ac59807ef 100644 --- a/crates/ui-egui/src/i18n/it.tsv +++ b/crates/ui-egui/src/i18n/it.tsv @@ -5009,3 +5009,5 @@ lighting Light Luce Shift: Spostamento: Fresco… Affresco… Fresco Affresco + Effect Gallery… Galleria effetti… + Effect Gallery Dialog Finestra di dialogo Galleria effetti diff --git a/crates/ui-egui/src/i18n/ja.tsv b/crates/ui-egui/src/i18n/ja.tsv index 21709cca2..fd68fd1f9 100644 --- a/crates/ui-egui/src/i18n/ja.tsv +++ b/crates/ui-egui/src/i18n/ja.tsv @@ -5056,3 +5056,5 @@ lighting Light ライト Shift: シフト: Fresco… フレスコ… Fresco フレスコ + Effect Gallery… 効果ギャラリー… + Effect Gallery Dialog 効果ギャラリーダイアログ diff --git a/crates/ui-egui/src/i18n/ka.tsv b/crates/ui-egui/src/i18n/ka.tsv index abebbb73d..db1915b3b 100644 --- a/crates/ui-egui/src/i18n/ka.tsv +++ b/crates/ui-egui/src/i18n/ka.tsv @@ -5296,3 +5296,12 @@ imageTrace Outline კონტური Shift: წანაცვლება: Fresco… ფრესკა… Fresco ფრესკა + Effect Gallery ეფექტების გალერეა + Add filters from the list above დაამატეთ ფილტრები ზემოთ მოცემული სიიდან + Add to Stack დასტაში დამატება + Applied Filters გამოყენებული ფილტრები + Categories კატეგორიები + Filters ფილტრები + Select artwork to apply effects აირჩიეთ ნამუშევარი ეფექტების გამოსაყენებლად + Effect Gallery… ეფექტების გალერეა… + Effect Gallery Dialog ეფექტების გალერეა დიალოგი diff --git a/crates/ui-egui/src/i18n/ko.tsv b/crates/ui-egui/src/i18n/ko.tsv index 71b16eb8c..2337fad72 100644 --- a/crates/ui-egui/src/i18n/ko.tsv +++ b/crates/ui-egui/src/i18n/ko.tsv @@ -4972,3 +4972,5 @@ lighting Light 광원 Shift: 이동: Fresco… 프레스코… Fresco 프레스코 + Effect Gallery… 효과 갤러리… + Effect Gallery Dialog 효과 갤러리 대화 상자 diff --git a/crates/ui-egui/src/i18n/nl.tsv b/crates/ui-egui/src/i18n/nl.tsv index 452a7d650..a0040b531 100644 --- a/crates/ui-egui/src/i18n/nl.tsv +++ b/crates/ui-egui/src/i18n/nl.tsv @@ -5409,3 +5409,5 @@ swatch Bright Violet Felviolet Shift: Verschuiving: Fresco… Fresco… Fresco Fresco + Effect Gallery… Effectgalerij… + Effect Gallery Dialog Dialoogvenster Effectgalerij diff --git a/crates/ui-egui/src/i18n/pl.tsv b/crates/ui-egui/src/i18n/pl.tsv index 16e2a9cfc..761bb0dae 100644 --- a/crates/ui-egui/src/i18n/pl.tsv +++ b/crates/ui-egui/src/i18n/pl.tsv @@ -5246,3 +5246,5 @@ mark-style Japanese Japońskie Shift: Przesunięcie: Fresco… Fresk… Fresco Fresk + Effect Gallery… Galeria efektów… + Effect Gallery Dialog Okno dialogowe Galeria efektów diff --git a/crates/ui-egui/src/i18n/pt-br.tsv b/crates/ui-egui/src/i18n/pt-br.tsv index c54d1ad32..e40d6801b 100644 --- a/crates/ui-egui/src/i18n/pt-br.tsv +++ b/crates/ui-egui/src/i18n/pt-br.tsv @@ -5311,3 +5311,5 @@ mark-style Japanese Japonesas Shift: Deslocamento: Fresco… Afresco… Fresco Afresco + Effect Gallery… Galeria de Efeitos… + Effect Gallery Dialog Caixa de diálogo Galeria de Efeitos diff --git a/crates/ui-egui/src/i18n/ru.tsv b/crates/ui-egui/src/i18n/ru.tsv index 62d504105..2925e2fd8 100644 --- a/crates/ui-egui/src/i18n/ru.tsv +++ b/crates/ui-egui/src/i18n/ru.tsv @@ -5005,3 +5005,5 @@ lighting Light Свет Shift: Сдвиг: Fresco… Фреска… Fresco Фреска + Effect Gallery… Галерея эффектов… + Effect Gallery Dialog Диалог «Галерея эффектов» diff --git a/crates/ui-egui/src/i18n/sv.tsv b/crates/ui-egui/src/i18n/sv.tsv index 6d0b1c417..2ba5a4201 100644 --- a/crates/ui-egui/src/i18n/sv.tsv +++ b/crates/ui-egui/src/i18n/sv.tsv @@ -5350,3 +5350,5 @@ theme Appearance Utseende Shift: Förskjutning: Fresco… Fresk… Fresco Fresk + Effect Gallery… Effektgalleri… + Effect Gallery Dialog Dialogrutan Effektgalleri diff --git a/crates/ui-egui/src/i18n/uk.tsv b/crates/ui-egui/src/i18n/uk.tsv index cb4a2e80a..e9fea9f52 100644 --- a/crates/ui-egui/src/i18n/uk.tsv +++ b/crates/ui-egui/src/i18n/uk.tsv @@ -4989,3 +4989,5 @@ lighting Light Світло Shift: Зсув: Fresco… Фреска… Fresco Фреска + Effect Gallery… Галерея ефектів… + Effect Gallery Dialog Діалог «Галерея ефектів» diff --git a/crates/ui-egui/src/i18n/vi.tsv b/crates/ui-egui/src/i18n/vi.tsv index bef27182b..1858de13b 100644 --- a/crates/ui-egui/src/i18n/vi.tsv +++ b/crates/ui-egui/src/i18n/vi.tsv @@ -4989,3 +4989,5 @@ theme Appearance Giao diện Shift: Dịch chuyển: Fresco… Bích họa… Fresco Bích họa + Effect Gallery… Thư viện hiệu ứng… + Effect Gallery Dialog Hộp thoại Thư viện hiệu ứng diff --git a/crates/ui-egui/src/i18n/zh-hans.tsv b/crates/ui-egui/src/i18n/zh-hans.tsv index 95f9fd49c..849044e52 100644 --- a/crates/ui-egui/src/i18n/zh-hans.tsv +++ b/crates/ui-egui/src/i18n/zh-hans.tsv @@ -5233,3 +5233,5 @@ lighting Light 光源 Shift: 偏移: Fresco… 壁画… Fresco 壁画 + Effect Gallery… 效果库… + Effect Gallery Dialog 效果库对话框 diff --git a/crates/ui-egui/src/i18n/zh-hant.tsv b/crates/ui-egui/src/i18n/zh-hant.tsv index 8654c00c8..05ac2082a 100644 --- a/crates/ui-egui/src/i18n/zh-hant.tsv +++ b/crates/ui-egui/src/i18n/zh-hant.tsv @@ -5028,3 +5028,5 @@ lighting Light 光源 Shift: 偏移: Fresco… 壁畫… Fresco 壁畫 + Effect Gallery… 效果庫… + Effect Gallery Dialog 效果庫對話框 From 17fbf6ad6a2ac01b91c4c79c10854f10cc2277c9 Mon Sep 17 00:00:00 2001 From: dotCooCoo Date: Wed, 21 Oct 2026 11:31:14 -0700 Subject: [PATCH 07/13] =?UTF-8?q?Library=20panels:=20Locate=20Library?= =?UTF-8?q?=E2=80=A6=20refuses=20a=20panel=20whose=20library=20is=20there?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ui.libraryPanel.locate checked only that the panel was open. Run on an open panel whose library was there, such as the built-in Pastels, it loaded the file given or picked and showed that library in the panel in place of Pastels. It now answers "library panel `{given}` isn't missing its library" for such a panel, before it asks for a file or loads one, and the panel keeps its library. A persistent panel whose library's file is gone locates as before. Docs: docs/mcp.md (ui.libraryPanel.locate). --- crates/ui-egui/src/i18n/cs.tsv | 1 + crates/ui-egui/src/i18n/de.tsv | 1 + crates/ui-egui/src/i18n/el.tsv | 1 + crates/ui-egui/src/i18n/es.tsv | 1 + crates/ui-egui/src/i18n/fi.tsv | 1 + crates/ui-egui/src/i18n/fr.tsv | 1 + crates/ui-egui/src/i18n/hu.tsv | 1 + crates/ui-egui/src/i18n/it.tsv | 1 + crates/ui-egui/src/i18n/ja.tsv | 1 + crates/ui-egui/src/i18n/ka.tsv | 1 + crates/ui-egui/src/i18n/ko.tsv | 1 + crates/ui-egui/src/i18n/nl.tsv | 1 + crates/ui-egui/src/i18n/pl.tsv | 1 + crates/ui-egui/src/i18n/pt-br.tsv | 1 + crates/ui-egui/src/i18n/ru.tsv | 1 + crates/ui-egui/src/i18n/sv.tsv | 1 + crates/ui-egui/src/i18n/uk.tsv | 1 + crates/ui-egui/src/i18n/vi.tsv | 1 + crates/ui-egui/src/i18n/zh-hans.tsv | 1 + crates/ui-egui/src/i18n/zh-hant.tsv | 1 + crates/ui-egui/src/panels/library_panel.rs | 34 ++++++++++++++++++---- docs/mcp.md | 4 ++- 22 files changed, 52 insertions(+), 6 deletions(-) diff --git a/crates/ui-egui/src/i18n/cs.tsv b/crates/ui-egui/src/i18n/cs.tsv index 54f38c94b..2e94229f2 100644 --- a/crates/ui-egui/src/i18n/cs.tsv +++ b/crates/ui-egui/src/i18n/cs.tsv @@ -5333,6 +5333,7 @@ mark-style Japanese Japonské @msg Persistent libraries not found: {files} Trvalé knihovny nebyly nalezeny: {files} @msg `{given}` isn't a library panel (see window.swatchLibrary) `{given}` není panel knihovny (viz window.swatchLibrary) @msg library panel `{given}` isn't open panel knihovny `{given}` není otevřený +@msg library panel `{given}` isn't missing its library knihovna panelu knihovny `{given}` nechybí @msg too many library panels were opened in this session v této relaci bylo otevřeno příliš mnoho panelů knihoven @msg The image is {_1} × {_2} pixels, more than {LARGE_TRACE_SIDE} on a side: it is traced, but more slowly. A lower-fidelity preset or a smaller copy of the image traces faster. Obraz má {_1} × {_2} pixelů, na jedné straně více než {LARGE_TRACE_SIDE}: vektorizuje se, ale pomaleji. Rychleji se vektorizuje s předvolbou nižší věrnosti nebo menší kopie obrazu. @msg The image was traced at {_1} × {_2} pixels, scaled down from {_3} × {_4} ({_5} megapixels at most). Obraz byl vektorizován v rozlišení {_1} × {_2} pixelů, zmenšený z {_3} × {_4} (nejvýše {_5} megapixelů). diff --git a/crates/ui-egui/src/i18n/de.tsv b/crates/ui-egui/src/i18n/de.tsv index 6aacd6e3c..d1d0185cb 100644 --- a/crates/ui-egui/src/i18n/de.tsv +++ b/crates/ui-egui/src/i18n/de.tsv @@ -4913,6 +4913,7 @@ effect Soft Weich @msg Persistent libraries not found: {files} Dauerhafte Bibliotheken nicht gefunden: {files} @msg `{given}` isn't a library panel (see window.swatchLibrary) `{given}` ist kein Bibliotheksbedienfeld (siehe window.swatchLibrary) @msg library panel `{given}` isn't open Bibliotheksbedienfeld `{given}` ist nicht geöffnet +@msg library panel `{given}` isn't missing its library dem Bibliotheksbedienfeld `{given}` fehlt seine Bibliothek nicht @msg too many library panels were opened in this session in dieser Sitzung wurden zu viele Bibliotheksbedienfelder geöffnet @msg The image is {_1} × {_2} pixels, more than {LARGE_TRACE_SIDE} on a side: it is traced, but more slowly. A lower-fidelity preset or a smaller copy of the image traces faster. Das Bild hat {_1} × {_2} Pixel, mehr als {LARGE_TRACE_SIDE} auf einer Seite: Es wird nachgezeichnet, aber langsamer. Eine Vorgabe mit geringerer Detailtreue oder eine kleinere Kopie des Bildes geht schneller. @msg The image was traced at {_1} × {_2} pixels, scaled down from {_3} × {_4} ({_5} megapixels at most). Das Bild wurde mit {_1} × {_2} Pixeln nachgezeichnet, verkleinert von {_3} × {_4} (höchstens {_5} Megapixel). diff --git a/crates/ui-egui/src/i18n/el.tsv b/crates/ui-egui/src/i18n/el.tsv index 2ea3887d3..c17cdda94 100644 --- a/crates/ui-egui/src/i18n/el.tsv +++ b/crates/ui-egui/src/i18n/el.tsv @@ -5285,6 +5285,7 @@ effect Points Σημεία @msg Persistent libraries not found: {files} Δεν βρέθηκαν μόνιμες βιβλιοθήκες: {files} @msg `{given}` isn't a library panel (see window.swatchLibrary) Το `{given}` δεν είναι πίνακας βιβλιοθήκης (δείτε window.swatchLibrary) @msg library panel `{given}` isn't open ο πίνακας βιβλιοθήκης `{given}` δεν είναι ανοιχτός +@msg library panel `{given}` isn't missing its library η βιβλιοθήκη του πίνακα βιβλιοθήκης `{given}` δεν λείπει @msg too many library panels were opened in this session άνοιξαν πάρα πολλοί πίνακες βιβλιοθηκών σε αυτή τη συνεδρία @msg The image is {_1} × {_2} pixels, more than {LARGE_TRACE_SIDE} on a side: it is traced, but more slowly. A lower-fidelity preset or a smaller copy of the image traces faster. Η εικόνα είναι {_1} × {_2} εικονοστοιχεία, πάνω από {LARGE_TRACE_SIDE} σε μία πλευρά: ανιχνεύεται, αλλά πιο αργά. Μια προρύθμιση χαμηλότερης πιστότητας ή ένα μικρότερο αντίγραφο της εικόνας ανιχνεύεται γρηγορότερα. @msg The image was traced at {_1} × {_2} pixels, scaled down from {_3} × {_4} ({_5} megapixels at most). Η εικόνα ανιχνεύτηκε σε {_1} × {_2} εικονοστοιχεία, σμικρυμένη από {_3} × {_4} (το πολύ {_5} megapixel). diff --git a/crates/ui-egui/src/i18n/es.tsv b/crates/ui-egui/src/i18n/es.tsv index 00a483a19..97dd0d381 100644 --- a/crates/ui-egui/src/i18n/es.tsv +++ b/crates/ui-egui/src/i18n/es.tsv @@ -5275,6 +5275,7 @@ mark-style Japanese Japonesas @msg Persistent libraries not found: {files} No se encontraron bibliotecas persistentes: {files} @msg `{given}` isn't a library panel (see window.swatchLibrary) `{given}` no es un panel de biblioteca (consulte window.swatchLibrary) @msg library panel `{given}` isn't open el panel de biblioteca `{given}` no está abierto +@msg library panel `{given}` isn't missing its library la biblioteca del panel de biblioteca `{given}` no falta @msg too many library panels were opened in this session se abrieron demasiados paneles de biblioteca en esta sesión @msg The image is {_1} × {_2} pixels, more than {LARGE_TRACE_SIDE} on a side: it is traced, but more slowly. A lower-fidelity preset or a smaller copy of the image traces faster. La imagen tiene {_1} × {_2} píxeles, más de {LARGE_TRACE_SIDE} en un lado: se calcará, pero más despacio. Un ajuste preestablecido de menor fidelidad o una copia más pequeña de la imagen se calcan más rápido. @msg The image was traced at {_1} × {_2} pixels, scaled down from {_3} × {_4} ({_5} megapixels at most). La imagen se calcó a {_1} × {_2} píxeles, reducida desde {_3} × {_4} ({_5} megapíxeles como máximo). diff --git a/crates/ui-egui/src/i18n/fi.tsv b/crates/ui-egui/src/i18n/fi.tsv index 19db20bff..f93764862 100644 --- a/crates/ui-egui/src/i18n/fi.tsv +++ b/crates/ui-egui/src/i18n/fi.tsv @@ -5297,6 +5297,7 @@ mark-style Japanese Japanilainen @msg Persistent libraries not found: {files} Pysyviä kirjastoja ei löytynyt: {files} @msg `{given}` isn't a library panel (see window.swatchLibrary) `{given}` ei ole kirjastopaneeli (katso window.swatchLibrary) @msg library panel `{given}` isn't open kirjastopaneeli `{given}` ei ole auki +@msg library panel `{given}` isn't missing its library kirjastopaneelin `{given}` kirjasto ei puutu @msg too many library panels were opened in this session tässä istunnossa on avattu liian monta kirjastopaneelia @msg The image is {_1} × {_2} pixels, more than {LARGE_TRACE_SIDE} on a side: it is traced, but more slowly. A lower-fidelity preset or a smaller copy of the image traces faster. Kuva on {_1} × {_2} kuvapistettä, yhdeltä sivultaan yli {LARGE_TRACE_SIDE}: se jäljitetään, mutta hitaammin. Pienemmän tarkkuuden esiasetus tai kuvan pienempi kopio jäljittyy nopeammin. @msg The image was traced at {_1} × {_2} pixels, scaled down from {_3} × {_4} ({_5} megapixels at most). Kuva jäljitettiin kokoon {_1} × {_2} kuvapistettä pienennettynä koosta {_3} × {_4} (enintään {_5} megapikseliä). diff --git a/crates/ui-egui/src/i18n/fr.tsv b/crates/ui-egui/src/i18n/fr.tsv index a1abcc6ba..bc687ba3a 100644 --- a/crates/ui-egui/src/i18n/fr.tsv +++ b/crates/ui-egui/src/i18n/fr.tsv @@ -5332,6 +5332,7 @@ theme Appearance Apparence @msg Persistent libraries not found: {files} Bibliothèques persistantes introuvables : {files} @msg `{given}` isn't a library panel (see window.swatchLibrary) `{given}` n’est pas un panneau de bibliothèque (voir window.swatchLibrary) @msg library panel `{given}` isn't open le panneau de bibliothèque `{given}` n’est pas ouvert +@msg library panel `{given}` isn't missing its library la bibliothèque du panneau de bibliothèque `{given}` ne manque pas @msg too many library panels were opened in this session trop de panneaux de bibliothèque ont été ouverts dans cette session @msg The image is {_1} × {_2} pixels, more than {LARGE_TRACE_SIDE} on a side: it is traced, but more slowly. A lower-fidelity preset or a smaller copy of the image traces faster. L’image fait {_1} × {_2} pixels, plus de {LARGE_TRACE_SIDE} sur un côté : elle est vectorisée, mais plus lentement. Un paramètre prédéfini moins fidèle ou une copie plus petite de l’image se vectorise plus vite. @msg The image was traced at {_1} × {_2} pixels, scaled down from {_3} × {_4} ({_5} megapixels at most). L’image a été vectorisée à {_1} × {_2} pixels, réduite de {_3} × {_4} ({_5} mégapixels au plus). diff --git a/crates/ui-egui/src/i18n/hu.tsv b/crates/ui-egui/src/i18n/hu.tsv index 448ee605f..7ec409f11 100644 --- a/crates/ui-egui/src/i18n/hu.tsv +++ b/crates/ui-egui/src/i18n/hu.tsv @@ -5319,6 +5319,7 @@ imageTrace Outline Körvonal @msg Persistent libraries not found: {files} Nem találhatók állandó könyvtárak: {files} @msg `{given}` isn't a library panel (see window.swatchLibrary) A(z) `{given}` nem könyvtárpanel (lásd: window.swatchLibrary) @msg library panel `{given}` isn't open a(z) `{given}` könyvtárpanel nincs megnyitva +@msg library panel `{given}` isn't missing its library a(z) `{given}` könyvtárpanel könyvtára nem hiányzik @msg too many library panels were opened in this session ebben a munkamenetben túl sok könyvtárpanel nyílt meg @msg The image is {_1} × {_2} pixels, more than {LARGE_TRACE_SIDE} on a side: it is traced, but more slowly. A lower-fidelity preset or a smaller copy of the image traces faster. A kép {_1} × {_2} képpont, egyik oldalán több mint {LARGE_TRACE_SIDE}: a vektorizálás megtörténik, de lassabban. Kisebb hűségű előbeállítással vagy a kép kisebb másolatával gyorsabb. @msg The image was traced at {_1} × {_2} pixels, scaled down from {_3} × {_4} ({_5} megapixels at most). A kép vektorizálása {_1} × {_2} képponton történt, {_3} × {_4} méretről kicsinyítve (legfeljebb {_5} megapixel). diff --git a/crates/ui-egui/src/i18n/it.tsv b/crates/ui-egui/src/i18n/it.tsv index ac59807ef..f32fb2d07 100644 --- a/crates/ui-egui/src/i18n/it.tsv +++ b/crates/ui-egui/src/i18n/it.tsv @@ -4947,6 +4947,7 @@ lighting Light Luce @msg Persistent libraries not found: {files} Librerie persistenti non trovate: {files} @msg `{given}` isn't a library panel (see window.swatchLibrary) `{given}` non è un pannello libreria (vedi window.swatchLibrary) @msg library panel `{given}` isn't open il pannello libreria `{given}` non è aperto +@msg library panel `{given}` isn't missing its library la libreria del pannello libreria `{given}` non è mancante @msg too many library panels were opened in this session in questa sessione sono stati aperti troppi pannelli libreria @msg The image is {_1} × {_2} pixels, more than {LARGE_TRACE_SIDE} on a side: it is traced, but more slowly. A lower-fidelity preset or a smaller copy of the image traces faster. L’immagine è di {_1} × {_2} pixel, più di {LARGE_TRACE_SIDE} su un lato: viene vettorializzata, ma più lentamente. Un predefinito a fedeltà più bassa o una copia più piccola dell’immagine è più veloce. @msg The image was traced at {_1} × {_2} pixels, scaled down from {_3} × {_4} ({_5} megapixels at most). L’immagine è stata vettorializzata a {_1} × {_2} pixel, ridotta da {_3} × {_4} (al massimo {_5} megapixel). diff --git a/crates/ui-egui/src/i18n/ja.tsv b/crates/ui-egui/src/i18n/ja.tsv index fd68fd1f9..14a040be2 100644 --- a/crates/ui-egui/src/i18n/ja.tsv +++ b/crates/ui-egui/src/i18n/ja.tsv @@ -4987,6 +4987,7 @@ lighting Light ライト @msg Persistent libraries not found: {files} 永続ライブラリが見つかりません: {files} @msg `{given}` isn't a library panel (see window.swatchLibrary) `{given}` はライブラリパネルではありません (window.swatchLibrary を参照) @msg library panel `{given}` isn't open ライブラリパネル `{given}` は開いていません +@msg library panel `{given}` isn't missing its library ライブラリパネル `{given}` のライブラリは欠落していません @msg too many library panels were opened in this session このセッションで開いたライブラリパネルが多すぎます @msg The image is {_1} × {_2} pixels, more than {LARGE_TRACE_SIDE} on a side: it is traced, but more slowly. A lower-fidelity preset or a smaller copy of the image traces faster. 画像は {_1} × {_2} ピクセルで、一辺が {LARGE_TRACE_SIDE} を超えています。トレースはできますが、時間がかかります。忠実度の低いプリセットや画像の小さいコピーを使うと速くなります。 @msg The image was traced at {_1} × {_2} pixels, scaled down from {_3} × {_4} ({_5} megapixels at most). 画像は {_3} × {_4} から縮小した {_1} × {_2} ピクセルでトレースされました (最大 {_5} メガピクセル)。 diff --git a/crates/ui-egui/src/i18n/ka.tsv b/crates/ui-egui/src/i18n/ka.tsv index db1915b3b..4fbddc362 100644 --- a/crates/ui-egui/src/i18n/ka.tsv +++ b/crates/ui-egui/src/i18n/ka.tsv @@ -5191,6 +5191,7 @@ imageTrace Outline კონტური @msg handle must be in or out handle უნდა იყოს in ან out @msg index must be ≥ 0 index უნდა იყოს ≥ 0 @msg library panel `{given}` isn't open ბიბლიოთეკის პანელი `{given}` გახსნილი არ არის +@msg library panel `{given}` isn't missing its library ბიბლიოთეკის პანელს `{given}` ბიბლიოთეკა არ აკლია @msg mask art ends outside a mask dictionary ნიღბის ნახატი ნიღბის ლექსიკონის გარეთ მთავრდება @msg missing number `{key}` აკლია რიცხვი `{key}` @msg missing integer `{key}` აკლია მთელი რიცხვი `{key}` diff --git a/crates/ui-egui/src/i18n/ko.tsv b/crates/ui-egui/src/i18n/ko.tsv index 2337fad72..130c42491 100644 --- a/crates/ui-egui/src/i18n/ko.tsv +++ b/crates/ui-egui/src/i18n/ko.tsv @@ -4910,6 +4910,7 @@ lighting Light 광원 @msg Persistent libraries not found: {files} 지속 라이브러리를 찾을 수 없습니다: {files} @msg `{given}` isn't a library panel (see window.swatchLibrary) `{given}`은(는) 라이브러리 패널이 아닙니다(window.swatchLibrary 참조) @msg library panel `{given}` isn't open 라이브러리 패널 `{given}`이(가) 열려 있지 않습니다 +@msg library panel `{given}` isn't missing its library 라이브러리 패널 `{given}`의 라이브러리가 누락되지 않았습니다 @msg too many library panels were opened in this session 이 세션에서 라이브러리 패널을 너무 많이 열었습니다 @msg The image is {_1} × {_2} pixels, more than {LARGE_TRACE_SIDE} on a side: it is traced, but more slowly. A lower-fidelity preset or a smaller copy of the image traces faster. 이미지가 {_1} × {_2}픽셀로 한 변이 {LARGE_TRACE_SIDE}을 넘습니다. 추적은 되지만 더 느립니다. 충실도가 낮은 사전 설정이나 이미지의 작은 사본을 사용하면 더 빠릅니다. @msg The image was traced at {_1} × {_2} pixels, scaled down from {_3} × {_4} ({_5} megapixels at most). 이미지를 {_3} × {_4}에서 축소한 {_1} × {_2}픽셀로 추적했습니다(최대 {_5}메가픽셀). diff --git a/crates/ui-egui/src/i18n/nl.tsv b/crates/ui-egui/src/i18n/nl.tsv index a0040b531..d6e4572f4 100644 --- a/crates/ui-egui/src/i18n/nl.tsv +++ b/crates/ui-egui/src/i18n/nl.tsv @@ -5329,6 +5329,7 @@ swatch Bright Violet Felviolet @msg Persistent libraries not found: {files} Permanente bibliotheken niet gevonden: {files} @msg `{given}` isn't a library panel (see window.swatchLibrary) `{given}` is geen bibliotheekpaneel (zie window.swatchLibrary) @msg library panel `{given}` isn't open bibliotheekpaneel `{given}` is niet geopend +@msg library panel `{given}` isn't missing its library de bibliotheek van bibliotheekpaneel `{given}` ontbreekt niet @msg too many library panels were opened in this session er zijn in deze sessie te veel bibliotheekpanelen geopend @msg The image is {_1} × {_2} pixels, more than {LARGE_TRACE_SIDE} on a side: it is traced, but more slowly. A lower-fidelity preset or a smaller copy of the image traces faster. De afbeelding is {_1} × {_2} pixels, meer dan {LARGE_TRACE_SIDE} aan één zijde: ze wordt getraceerd, maar langzamer. Een voorinstelling met minder detail of een kleinere kopie van de afbeelding traceert sneller. @msg The image was traced at {_1} × {_2} pixels, scaled down from {_3} × {_4} ({_5} megapixels at most). De afbeelding is getraceerd op {_1} × {_2} pixels, verkleind van {_3} × {_4} (maximaal {_5} megapixels). diff --git a/crates/ui-egui/src/i18n/pl.tsv b/crates/ui-egui/src/i18n/pl.tsv index 761bb0dae..d8765edc7 100644 --- a/crates/ui-egui/src/i18n/pl.tsv +++ b/crates/ui-egui/src/i18n/pl.tsv @@ -5185,6 +5185,7 @@ mark-style Japanese Japońskie @msg Persistent libraries not found: {files} Nie znaleziono trwałych bibliotek: {files} @msg `{given}` isn't a library panel (see window.swatchLibrary) `{given}` nie jest panelem biblioteki (zobacz window.swatchLibrary) @msg library panel `{given}` isn't open panel biblioteki `{given}` nie jest otwarty +@msg library panel `{given}` isn't missing its library panelowi biblioteki `{given}` nie brakuje biblioteki @msg too many library panels were opened in this session w tej sesji otwarto zbyt wiele paneli bibliotek @msg The image is {_1} × {_2} pixels, more than {LARGE_TRACE_SIDE} on a side: it is traced, but more slowly. A lower-fidelity preset or a smaller copy of the image traces faster. Obraz ma {_1} × {_2} pikseli, ponad {LARGE_TRACE_SIDE} na jednym boku: zostanie obrysowany, ale wolniej. Ustawienie wstępne o niższej wierności lub mniejsza kopia obrazu obrysuje się szybciej. @msg The image was traced at {_1} × {_2} pixels, scaled down from {_3} × {_4} ({_5} megapixels at most). Obraz obrysowano w rozdzielczości {_1} × {_2} pikseli, po zmniejszeniu z {_3} × {_4} (najwyżej {_5} megapikseli). diff --git a/crates/ui-egui/src/i18n/pt-br.tsv b/crates/ui-egui/src/i18n/pt-br.tsv index e40d6801b..026abe5d5 100644 --- a/crates/ui-egui/src/i18n/pt-br.tsv +++ b/crates/ui-egui/src/i18n/pt-br.tsv @@ -5250,6 +5250,7 @@ mark-style Japanese Japonesas @msg Persistent libraries not found: {files} Bibliotecas persistentes não encontradas: {files} @msg `{given}` isn't a library panel (see window.swatchLibrary) `{given}` não é um painel de biblioteca (consulte window.swatchLibrary) @msg library panel `{given}` isn't open o painel de biblioteca `{given}` não está aberto +@msg library panel `{given}` isn't missing its library a biblioteca do painel de biblioteca `{given}` não está faltando @msg too many library panels were opened in this session foram abertos painéis de biblioteca demais nesta sessão @msg The image is {_1} × {_2} pixels, more than {LARGE_TRACE_SIDE} on a side: it is traced, but more slowly. A lower-fidelity preset or a smaller copy of the image traces faster. A imagem tem {_1} × {_2} pixels, mais de {LARGE_TRACE_SIDE} em um lado: ela é traçada, mas mais devagar. Uma predefinição de menor fidelidade ou uma cópia menor da imagem traça mais rápido. @msg The image was traced at {_1} × {_2} pixels, scaled down from {_3} × {_4} ({_5} megapixels at most). A imagem foi traçada em {_1} × {_2} pixels, reduzida de {_3} × {_4} (no máximo {_5} megapixels). diff --git a/crates/ui-egui/src/i18n/ru.tsv b/crates/ui-egui/src/i18n/ru.tsv index 2925e2fd8..6cb399014 100644 --- a/crates/ui-egui/src/i18n/ru.tsv +++ b/crates/ui-egui/src/i18n/ru.tsv @@ -4943,6 +4943,7 @@ lighting Light Свет @msg Persistent libraries not found: {files} Постоянные библиотеки не найдены: {files} @msg `{given}` isn't a library panel (see window.swatchLibrary) `{given}` — не панель библиотеки (см. window.swatchLibrary) @msg library panel `{given}` isn't open панель библиотеки `{given}` не открыта +@msg library panel `{given}` isn't missing its library библиотека панели библиотеки `{given}` не отсутствует @msg too many library panels were opened in this session в этом сеансе открыто слишком много панелей библиотек @msg The image is {_1} × {_2} pixels, more than {LARGE_TRACE_SIDE} on a side: it is traced, but more slowly. A lower-fidelity preset or a smaller copy of the image traces faster. Изображение {_1} × {_2} пикселей, больше {LARGE_TRACE_SIDE} по одной стороне: трассировка выполняется, но медленнее. Стиль с меньшей точностью или уменьшенная копия изображения трассируются быстрее. @msg The image was traced at {_1} × {_2} pixels, scaled down from {_3} × {_4} ({_5} megapixels at most). Изображение трассировано в размере {_1} × {_2} пикселей, уменьшенное с {_3} × {_4} (не более {_5} мегапикселей). diff --git a/crates/ui-egui/src/i18n/sv.tsv b/crates/ui-egui/src/i18n/sv.tsv index 2ba5a4201..fda86c8c6 100644 --- a/crates/ui-egui/src/i18n/sv.tsv +++ b/crates/ui-egui/src/i18n/sv.tsv @@ -5289,6 +5289,7 @@ theme Appearance Utseende @msg Persistent libraries not found: {files} Beständiga bibliotek hittades inte: {files} @msg `{given}` isn't a library panel (see window.swatchLibrary) `{given}` är inte en bibliotekspanel (se window.swatchLibrary) @msg library panel `{given}` isn't open bibliotekspanelen `{given}` är inte öppen +@msg library panel `{given}` isn't missing its library bibliotekspanelen `{given}` saknar inte sitt bibliotek @msg too many library panels were opened in this session för många bibliotekspaneler har öppnats i den här sessionen @msg The image is {_1} × {_2} pixels, more than {LARGE_TRACE_SIDE} on a side: it is traced, but more slowly. A lower-fidelity preset or a smaller copy of the image traces faster. Bilden är {_1} × {_2} pixlar, mer än {LARGE_TRACE_SIDE} på en sida: den vektoriseras, men långsammare. En förinställning med lägre återgivning eller en mindre kopia av bilden går snabbare. @msg The image was traced at {_1} × {_2} pixels, scaled down from {_3} × {_4} ({_5} megapixels at most). Bilden vektoriserades vid {_1} × {_2} pixlar, nedskalad från {_3} × {_4} (högst {_5} megapixlar). diff --git a/crates/ui-egui/src/i18n/uk.tsv b/crates/ui-egui/src/i18n/uk.tsv index e9fea9f52..ef7daebb2 100644 --- a/crates/ui-egui/src/i18n/uk.tsv +++ b/crates/ui-egui/src/i18n/uk.tsv @@ -4927,6 +4927,7 @@ lighting Light Світло @msg Persistent libraries not found: {files} Постійні бібліотеки не знайдено: {files} @msg `{given}` isn't a library panel (see window.swatchLibrary) `{given}` — не панель бібліотеки (див. window.swatchLibrary) @msg library panel `{given}` isn't open панель бібліотеки `{given}` не відкрита +@msg library panel `{given}` isn't missing its library бібліотека панелі бібліотеки `{given}` не відсутня @msg too many library panels were opened in this session у цьому сеансі відкрито забагато панелей бібліотек @msg The image is {_1} × {_2} pixels, more than {LARGE_TRACE_SIDE} on a side: it is traced, but more slowly. A lower-fidelity preset or a smaller copy of the image traces faster. Зображення {_1} × {_2} пікселів, понад {LARGE_TRACE_SIDE} з одного боку: трасування виконується, але повільніше. Стиль із нижчою точністю або менша копія зображення трасуються швидше. @msg The image was traced at {_1} × {_2} pixels, scaled down from {_3} × {_4} ({_5} megapixels at most). Зображення трасовано в розмірі {_1} × {_2} пікселів, зменшене з {_3} × {_4} (щонайбільше {_5} мегапікселів). diff --git a/crates/ui-egui/src/i18n/vi.tsv b/crates/ui-egui/src/i18n/vi.tsv index 1858de13b..5a22e739b 100644 --- a/crates/ui-egui/src/i18n/vi.tsv +++ b/crates/ui-egui/src/i18n/vi.tsv @@ -4927,6 +4927,7 @@ theme Appearance Giao diện @msg Persistent libraries not found: {files} Không tìm thấy thư viện lưu giữ: {files} @msg `{given}` isn't a library panel (see window.swatchLibrary) `{given}` không phải là bảng thư viện (xem window.swatchLibrary) @msg library panel `{given}` isn't open bảng thư viện `{given}` chưa được mở +@msg library panel `{given}` isn't missing its library thư viện của bảng thư viện `{given}` không bị thiếu @msg too many library panels were opened in this session đã mở quá nhiều bảng thư viện trong phiên này @msg The image is {_1} × {_2} pixels, more than {LARGE_TRACE_SIDE} on a side: it is traced, but more slowly. A lower-fidelity preset or a smaller copy of the image traces faster. Ảnh có kích thước {_1} × {_2} điểm ảnh, hơn {LARGE_TRACE_SIDE} ở một cạnh: ảnh vẫn được dò, nhưng chậm hơn. Một thiết lập sẵn có độ trung thực thấp hơn hoặc một bản sao nhỏ hơn của ảnh sẽ dò nhanh hơn. @msg The image was traced at {_1} × {_2} pixels, scaled down from {_3} × {_4} ({_5} megapixels at most). Ảnh đã được dò ở {_1} × {_2} điểm ảnh, thu nhỏ từ {_3} × {_4} (tối đa {_5} megapixel). diff --git a/crates/ui-egui/src/i18n/zh-hans.tsv b/crates/ui-egui/src/i18n/zh-hans.tsv index 849044e52..1ffd5a84b 100644 --- a/crates/ui-egui/src/i18n/zh-hans.tsv +++ b/crates/ui-egui/src/i18n/zh-hans.tsv @@ -5166,6 +5166,7 @@ lighting Light 光源 @msg Persistent libraries not found: {files} 找不到持久库:{files} @msg `{given}` isn't a library panel (see window.swatchLibrary) `{given}` 不是库面板 (请参阅 window.swatchLibrary) @msg library panel `{given}` isn't open 库面板 `{given}` 未打开 +@msg library panel `{given}` isn't missing its library 库面板 `{given}` 的库未缺失 @msg too many library panels were opened in this session 本次会话中打开的库面板过多 @msg The image is {_1} × {_2} pixels, more than {LARGE_TRACE_SIDE} on a side: it is traced, but more slowly. A lower-fidelity preset or a smaller copy of the image traces faster. 图像为 {_1} × {_2} 像素,某一边超过 {LARGE_TRACE_SIDE}:会进行描摹,但速度较慢。使用保真度较低的预设或图像的较小副本会更快。 @msg The image was traced at {_1} × {_2} pixels, scaled down from {_3} × {_4} ({_5} megapixels at most). 图像已按 {_1} × {_2} 像素描摹,由 {_3} × {_4} 缩小而来(最多 {_5} 百万像素)。 diff --git a/crates/ui-egui/src/i18n/zh-hant.tsv b/crates/ui-egui/src/i18n/zh-hant.tsv index 05ac2082a..380583bbf 100644 --- a/crates/ui-egui/src/i18n/zh-hant.tsv +++ b/crates/ui-egui/src/i18n/zh-hant.tsv @@ -2329,6 +2329,7 @@ file-filter Templates 範本 @msg Persistent libraries not found: {files} 找不到持久資料庫:{files} @msg `{given}` isn't a library panel (see window.swatchLibrary) `{given}` 不是資料庫面板 (請參閱 window.swatchLibrary) @msg library panel `{given}` isn't open 資料庫面板 `{given}` 未開啟 +@msg library panel `{given}` isn't missing its library 資料庫面板 `{given}` 的資料庫未遺失 @msg too many library panels were opened in this session 本次工作階段開啟的資料庫面板過多 @msg The image is {_1} × {_2} pixels, more than {LARGE_TRACE_SIDE} on a side: it is traced, but more slowly. A lower-fidelity preset or a smaller copy of the image traces faster. 影像為 {_1} × {_2} 像素,有一邊超過 {LARGE_TRACE_SIDE}:仍會描圖,但速度較慢。使用精確度較低的預設集或較小的影像拷貝,描圖會較快。 @msg The image was traced at {_1} × {_2} pixels, scaled down from {_3} × {_4} ({_5} megapixels at most). 影像已以 {_1} × {_2} 像素描圖,由 {_3} × {_4} 縮小而來 (最多 {_5} 百萬像素)。 diff --git a/crates/ui-egui/src/panels/library_panel.rs b/crates/ui-egui/src/panels/library_panel.rs index bd4420236..b75eefaa0 100644 --- a/crates/ui-egui/src/panels/library_panel.rs +++ b/crates/ui-egui/src/panels/library_panel.rs @@ -487,17 +487,21 @@ pub(crate) fn command(app: &mut VectorcraftApp, p: &Value) -> Result Result { let given = p.get("panel").and_then(Value::as_str).unwrap_or_default(); let (k, id) = parse(given).ok_or_else(|| format!("`{given}` isn't a library panel (see window.swatchLibrary)"))?; if !is_open(&app.ui, given) { return Err(format!("library panel `{given}` isn't open")); } + if missing_file(app, k, id).is_none() { + return Err(format!("library panel `{given}` isn't missing its library")); + } let path = p.get("path").and_then(Value::as_str).map(str::to_string); let Some(path) = pick_library_file(app, path)? else { return Ok(Value::Null) }; let r = app.run(k.load, json!({ "path": path }))?; @@ -1293,6 +1297,26 @@ mod tests { let _ = std::fs::remove_dir_all(dir); } + #[test] + fn locate_library_leaves_a_panel_whose_library_is_there_alone() { + let dir = std::env::temp_dir().join(format!("vc-locate-found-library-{}", std::process::id())); + let _ = std::fs::remove_dir_all(&dir); + std::fs::create_dir_all(&dir).unwrap(); + let gpl = dir.join("Brand.gpl"); + std::fs::write(&gpl, "GIMP Palette\nName: Brand\n#\n255 0 0\tRed\n").unwrap(); + let mut app = app(); + let pastels = panel_of(app.run("window.swatchLibrary", json!({"library": "pastels"})).unwrap()); + for persistent in [false, true] { + app.run("ui.libraryPanel", json!({"panel": pastels, "persistent": persistent})).unwrap(); + let e = app.run("ui.libraryPanel.locate", json!({"panel": pastels, "path": gpl.to_string_lossy()})).unwrap_err(); + assert!(e.contains("isn't missing its library"), "{e}"); + assert!(is_open(&app.ui, &pastels), "persistent: {persistent}"); + assert_eq!(settings(&app.ui, "swatches", "pastels").map(|s| s.persistent), Some(persistent)); + } + assert!(SwatchLibraries::get(&app, &format!("loaded/{}", gpl.to_string_lossy())).is_none(), "the file isn't loaded"); + let _ = std::fs::remove_dir_all(dir); + } + #[test] fn previous_and_next_show_the_neighbouring_library_in_the_same_panel() { let mut app = app(); diff --git a/docs/mcp.md b/docs/mcp.md index 5ae30991b..e692715a4 100644 --- a/docs/mcp.md +++ b/docs/mcp.md @@ -1718,7 +1718,9 @@ under `ui.library_panels`. `ui.libraryPanel.locate {panel, path?}` is Locate Library…: it loads the library at `path` (without one, it asks for a file) as Other Library… does and shows it in the open panel `panel`, which keeps its view, find field and Persistent, and answers as `ui.libraryPanel` does. When the file's library already has a panel open, -`panel` closes and is forgotten, and that panel is brought forward, made persistent when `panel` was. +`panel` closes and is forgotten, and that panel is brought forward, made persistent when `panel` was. On a +panel whose library isn't missing, it answers an error without asking for or loading a file, and the panel +keeps its library. `window.swatchLibrary` and `window.graphicStyleLibrary` also take a missing library's id, so a closed missing panel opens again; they answer its file's name without the extension and `count: 0`. From 66655c67c227c4d027ef1bd76f87dbf1228b0e89 Mon Sep 17 00:00:00 2001 From: dotCooCoo Date: Wed, 21 Oct 2026 16:37:07 -0700 Subject: [PATCH 08/13] Tests: the Expand Appearance reply test fails when the reply leaves out the expanded object (#3374) the_reply_names_each_expanded_copy_by_its_own_id checked that no id in the effect.expandAppearance reply repeats and that each one names a node in the document. Only for group copies did it check which ids the reply holds. In the other four cases a reply that left out the expanded object, or held no ids at all, passed. The test now checks in every case that the reply starts with the id of the selected object, and keeps the exact check of the group and the two copies of the square for group copies. --- crates/engine/src/tests_expand.rs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/crates/engine/src/tests_expand.rs b/crates/engine/src/tests_expand.rs index 9256494ae..3d7e0baea 100644 --- a/crates/engine/src/tests_expand.rs +++ b/crates/engine/src/tests_expand.rs @@ -159,9 +159,10 @@ fn expanded_art_keeps_the_random_transforms_the_canvas_drew() { assert_eq!(differ, RANDOM_CASES.map(|case| (case, 0))); } -/// The reply lists each object whose appearance expanded once, by the id it has in the document. -/// In "group copies" the two copies of the square share an id until Expand Appearance gives them -/// ids of their own, and the reply names the group, then each copy by its new id. +/// The reply lists each object whose appearance expanded once, by the id it has in the document, +/// starting with the selected object. In "group copies" the two copies of the square share an id +/// until Expand Appearance gives them ids of their own, and the reply names the group, then each +/// copy by its new id. #[test] fn the_reply_names_each_expanded_copy_by_its_own_id() { for case in RANDOM_CASES { @@ -169,6 +170,7 @@ fn the_reply_names_each_expanded_copy_by_its_own_id() { let id = random_transforms(&mut s, case); let r = run(&mut s, "effect.expandAppearance", json!({})); let ids: Vec = r["ids"].as_array().unwrap().iter().map(|v| v.as_u64().unwrap()).collect(); + assert_eq!(ids.first(), Some(&id.0), "{case}: {ids:?}"); let unique: std::collections::HashSet<_> = ids.iter().collect(); assert_eq!(unique.len(), ids.len(), "{case}: {ids:?}"); assert!(ids.iter().all(|&i| s.doc().unwrap().doc.node(NodeId(i)).is_some()), "{case}: {ids:?}"); From 9bd9f570aea29853bbdd0cce8c6cb72bfe89d337 Mon Sep 17 00:00:00 2001 From: Murat Vural Date: Sun, 18 Oct 2026 23:20:04 +0300 Subject: [PATCH 09/13] i18n: size Document Setup Edit Artboards button to fit localized labels --- crates/ui-egui/src/dialogs/document_setup.rs | 2 +- crates/ui-egui/src/widgets.rs | 34 ++++++++++++++++++++ 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/crates/ui-egui/src/dialogs/document_setup.rs b/crates/ui-egui/src/dialogs/document_setup.rs index 3aff969f6..139160a5d 100644 --- a/crates/ui-egui/src/dialogs/document_setup.rs +++ b/crates/ui-egui/src/dialogs/document_setup.rs @@ -88,7 +88,7 @@ fn general(app: &mut VectorcraftApp, ui: &mut egui::Ui, d: &mut Dialog) -> bool let mut close = false; widgets::label_row(ui, "", LABEL, |ui| { // Applies the settings, then edits the artboards with the Artboard tool. - if widgets::flat_button(ui, tl!("Edit Artboards"), 120.0).clicked() && confirm(app, d).is_ok() { + if widgets::flat_button_fit(ui, tl!("Edit Artboards"), 120.0).clicked() && confirm(app, d).is_ok() { app.select_tool("artboard"); // The shared frame restores its working copy after drawing the body. Tell it to // close too, otherwise it reopens the dialog that confirm just closed. diff --git a/crates/ui-egui/src/widgets.rs b/crates/ui-egui/src/widgets.rs index c2d878ba1..a7a3e9173 100644 --- a/crates/ui-egui/src/widgets.rs +++ b/crates/ui-egui/src/widgets.rs @@ -44,6 +44,20 @@ pub fn flat_button(ui: &mut Ui, text: &str, width: f32) -> Response { resp } +/// A [`flat_button`] that expands to fit localized labels wider than `min_width`. +pub fn flat_button_fit(ui: &mut Ui, text: &str, min_width: f32) -> Response { + let t = Tokens::get(ui.ctx()); + let galley = ui.painter().layout_no_wrap(tl!(text).to_string(), egui::FontId::proportional(12.5), t.text_strong); + let width = (galley.size().x + 24.0).max(min_width); + let (rect, resp) = ui.allocate_exact_size(vec2(width, 24.0), Sense::click()); + let rect = rect.shrink2(vec2(0.0, 0.5)); + ui.painter().rect_filled(rect, CornerRadius::same(5), t.button); + flat_fill(ui, rect, &resp); + ui.painter().with_clip_rect(rect).text(rect.center(), egui::Align2::CENTER_CENTER, tl!(text), egui::FontId::proportional(12.5), t.text_strong); + resp.widget_info(|| egui::WidgetInfo::labeled(egui::WidgetType::Button, ui.is_enabled(), tl!(text))); + resp +} + /// Width of a [`split_button`]'s arrow. pub const SPLIT_ARROW: f32 = 18.0; @@ -2845,3 +2859,23 @@ mod combo_keyboard_tests { assert!(!egui::Popup::is_any_open(&ctx), "the list closes after a keyboard pick"); } } + +#[cfg(test)] +mod button_tests { + use super::*; + + #[test] + fn flat_button_fit_expands_for_long_text() { + let ctx = egui::Context::default(); + crate::theme::install_fonts(&ctx); + let raw = egui::RawInput::default(); + let mut out = ctx.run_ui(raw, |ui| { + let resp_short = flat_button_fit(ui, "OK", 100.0); + assert_eq!(resp_short.rect.width(), 100.0); + + let resp_long = flat_button_fit(ui, "Çalışma Yüzeylerini Düzenle", 100.0); + assert!(resp_long.rect.width() > 160.0); + }); + out.textures_delta.clear(); + } +} From e33094e11d674faabac4b9062fad91176d116882 Mon Sep 17 00:00:00 2001 From: Murat Vural Date: Sun, 18 Oct 2026 23:20:12 +0300 Subject: [PATCH 10/13] i18n: add Turkish (tr) localization - Add crates/ui-egui/src/i18n/tr.tsv covering all menu strings, commands, UI labels, and status/error messages with standard Turkish vector software vocabulary. - Register Turkish in LANGUAGES with plural_none and complete_menus: true. - Support tr, tr-TR, tr_TR.UTF-8, tr-CY locale mapping in lang_from_tag. - Add Turkish typographic quotation marks in crates/doc/src/setup.rs. - Add turkish_reads_as_turkish unit test and register tr in KEEPS_MENU_NAMES and COMPLETE_MESSAGES. - Include RTF diagnostic message with exact TSV escaping. --- crates/doc/src/setup.rs | 1 + crates/ui-egui/src/dialogs/document_setup.rs | 1 + crates/ui-egui/src/i18n/mod.rs | 6 +- crates/ui-egui/src/i18n/tests.rs | 39 +- crates/ui-egui/src/i18n/tr.tsv | 5363 ++++++++++++++++++ crates/ui-egui/src/widgets.rs | 1 + 6 files changed, 5408 insertions(+), 3 deletions(-) create mode 100644 crates/ui-egui/src/i18n/tr.tsv diff --git a/crates/doc/src/setup.rs b/crates/doc/src/setup.rs index 796c02a21..d3860fc58 100644 --- a/crates/doc/src/setup.rs +++ b/crates/doc/src/setup.rs @@ -154,6 +154,7 @@ pub const LANGUAGES: &[(&str, Quotes)] = &[ ("Polish", Quotes { double: ['„', '”'], single: ['‚', '’'] }), ("Czech", Quotes { double: ['„', '“'], single: ['‚', '‘'] }), ("Russian", Quotes { double: ['«', '»'], single: ['„', '“'] }), + ("Turkish", Quotes { double: ['“', '”'], single: ['‘', '’'] }), ("Japanese", Quotes { double: ['「', '」'], single: ['『', '』'] }), ("Chinese", Quotes { double: ['“', '”'], single: ['‘', '’'] }), ]; diff --git a/crates/ui-egui/src/dialogs/document_setup.rs b/crates/ui-egui/src/dialogs/document_setup.rs index 139160a5d..4182be5de 100644 --- a/crates/ui-egui/src/dialogs/document_setup.rs +++ b/crates/ui-egui/src/dialogs/document_setup.rs @@ -78,6 +78,7 @@ fn unit(d: &Dialog) -> Unit { Unit::named(&d.str("units")).unwrap_or_default() } +/// The General tab of Document Setup (units, bleed, artboard editing, options). fn general(app: &mut VectorcraftApp, ui: &mut egui::Ui, d: &mut Dialog) -> bool { let units: Vec<(&str, &str)> = Unit::ALL.iter().map(|u| (u.label(), u.label())).collect(); choice(ui, d, "units", tl!("Units:"), &units); diff --git a/crates/ui-egui/src/i18n/mod.rs b/crates/ui-egui/src/i18n/mod.rs index 3a29b4173..78b8e2c98 100644 --- a/crates/ui-egui/src/i18n/mod.rs +++ b/crates/ui-egui/src/i18n/mod.rs @@ -94,7 +94,7 @@ fn plural_polish(n: u64) -> usize { } /// The registry. English first: it is the fallback and the source language. -pub static LANGUAGES: [LangInfo; 24] = [ +pub static LANGUAGES: [LangInfo; 25] = [ LangInfo { code: "en", name: "English", source: "", plural: plural_one_other, complete_menus: false, catalog: OnceLock::new() }, // Greek: the whole interface and the status and error messages, keeping the same names in // English as Spanish; every `el-*` locale (including `el-GR` and `el-CY`) resolves here. @@ -263,6 +263,10 @@ pub static LANGUAGES: [LangInfo; 24] = [ // English as Spanish; one/other plurals with the partitive after any number but 1 ("2 tasoa"). // Every `fi-*` locale resolves here. LangInfo { code: "fi", name: "Suomi", source: include_str!("fi.tsv"), plural: plural_one_other, complete_menus: true, catalog: OnceLock::new() }, + // Turkish: the whole interface and the status and error messages, keeping the same names in + // English as Spanish; a count takes the singular ("3 katman"), so plurals have one form. Every + // `tr-*` locale (including `tr-TR` and `tr-CY`) resolves here. + LangInfo { code: "tr", name: "Türkçe", source: include_str!("tr.tsv"), plural: plural_none, complete_menus: true, catalog: OnceLock::new() }, ]; impl LangInfo { diff --git a/crates/ui-egui/src/i18n/tests.rs b/crates/ui-egui/src/i18n/tests.rs index e38361532..ca7985025 100644 --- a/crates/ui-egui/src/i18n/tests.rs +++ b/crates/ui-egui/src/i18n/tests.rs @@ -870,7 +870,7 @@ fn cs() -> Lang { } /// Languages whose catalogs leave [`MENU_KEEP_AS_IS`] in English. -const KEEPS_MENU_NAMES: [&str; 17] = ["cs", "de", "el", "es", "fr", "hu", "it", "ja", "ka", "ko", "pl", "pt-br", "ru", "sv", "uk", "vi", "fi"]; +const KEEPS_MENU_NAMES: [&str; 18] = ["cs", "de", "el", "es", "fr", "hu", "it", "ja", "ka", "ko", "pl", "pt-br", "ru", "sv", "uk", "vi", "fi", "tr"]; /// Menu labels the menu-complete catalogs (Czech, German, Spanish, Italian, Japanese, Brazilian Portuguese) show as they are: the product name, a format name, the built-in workspace /// names and the perspective grid presets (names, shown untranslated wherever else they appear). @@ -1190,6 +1190,41 @@ fn finnish_reads_as_finnish() { assert_eq!(message(fi(), nested), "komento `object.group` ei ole nyt käytettävissä: mitään ei ole valittu"); } +/// The Turkish catalog registers under `tr`, claims complete menus and messages, and passes +/// locale resolution, vocabulary and count formatting checks. +#[test] +fn turkish_reads_as_turkish() { + assert_eq!(tr_lang().name(), "Türkçe"); + assert!(tr_lang().complete_menus()); + assert_eq!(Lang::from_pref("tr"), tr_lang()); + assert_eq!(Lang::from_pref("TR"), tr_lang()); + for tag in ["tr", "tr-TR", "tr_TR.UTF-8", "TR-tr", "tr-CY"] { + assert_eq!(lang_from_tag(tag), Some(tr_lang()), "{tag}"); + } + for (en, want) in [ + ("Artboard Tool", "Çalışma Yüzeyi Aracı"), + ("Swatches", "Renk Örnekleri"), + ("Stroke", "Kontur"), + ("Fill", "Dolgu"), + ("Direct Selection Tool", "Doğrudan Seçim Aracı"), + ("Save As…", "Farklı Kaydet…"), + ("Undo", "Geri Al"), + ("Close", "Kapat"), + ] { + assert_eq!(tr(tr_lang(), en), want); + } + for n in [0, 1, 3, 21] { + assert_eq!(trn(tr_lang(), n, "{n} Layer", "{n} Layers"), format!("{n} Katman")); + } + let nested = "command `object.group` is not available right now: nothing selected"; + assert_eq!(message(tr_lang(), nested), "`object.group` komutu şu anda kullanılamıyor: hiçbir şey seçilmedi"); +} + +/// The [`Lang`] handle for the Turkish catalog. +fn tr_lang() -> Lang { + Lang::from_code("tr").expect("tr registered") +} + /// Ambiguous English terms keep their intended Vietnamese meaning across UI contexts. #[test] fn vietnamese_domain_terms_are_consistent() { @@ -2104,7 +2139,7 @@ fn shared_param_check_errors_are_translated() { /// Languages whose catalogs cover every status and error message. const COMPLETE_MESSAGES: &[&str] = - &["cs", "de", "el", "es", "fr", "hu", "it", "ja", "ka", "ko", "pl", "pt-br", "ru", "sv", "uk", "vi", "zh-hans", "zh-hant", "fi"]; + &["cs", "de", "el", "es", "fr", "hu", "it", "ja", "ka", "ko", "pl", "pt-br", "ru", "sv", "uk", "vi", "zh-hans", "zh-hant", "fi", "tr"]; /// Crates whose error and status messages reach the status bar. const MESSAGE_CRATES: &[&str] = &["ui-egui", "engine", "doc", "format", "svg", "pdf", "eps", "text", "plugins", "metafile", "cad", "trace"]; diff --git a/crates/ui-egui/src/i18n/tr.tsv b/crates/ui-egui/src/i18n/tr.tsv new file mode 100644 index 000000000..6bc70c894 --- /dev/null +++ b/crates/ui-egui/src/i18n/tr.tsv @@ -0,0 +1,5363 @@ +# Turkish (tr) catalog. Columns, separated by a TAB: context English source Turkish translation +# +# context empty for a plain UI string; other contexts (@id, @plural …) as in the other catalogs +# escapes \n \t \\ inside a column. {placeholders} appear in both columns and may be reordered; +# a trailing "…" (dialog commands) is kept. +# lines starting with # and blank lines are ignored. +# +# Written from VectorCraft's English strings, using ordinary Turkish software vocabulary. No other catalog +# and no proprietary localisation was translated from or copied. Labels use sentence case, commands +# are imperatives; product, format and key-cap names keep their spelling. + + Glowing Edges… Parlayan Kenarlar… + Glowing Edges Parlayan Kenarlar + Edge Width Kenar Genişliği + Edge Brightness Kenar Parlaklığı + Smoothness Pürüzsüzlük + Radial Blur… Radyal Bulanıklık… + Smart Blur… Akıllı Bulanıklaştırma… + Sharpen Keskinleştir + Unsharp Mask… Keskinliği Azaltma Maskesi… + Pixelate Pikselleştir + Color Halftone… Renk Noktalı Resim… + Crystallize… Kristalleş… + Mezzotint… Mezotint… + Pointillize… Noktalaştır… + Color Halftone Renk Noktalı Resim + Crystallize Kristalleş + Mezzotint Mezotint + Pointillize Noktalaştır + Max. Radius Maks. Yarıçap + Channel 1 Kanal 1 + Channel 2 Kanal 2 + Channel 3 Kanal 3 + Channel 4 Kanal 4 + Cell Size Hücre Boyutu + Fine Dots İnce Noktalar + Medium Dots Orta Noktalar + Grainy Dots Grenli Noktalar + Coarse Dots Kaba Noktalar + Short Lines Kısa Çizgiler + Medium Lines Orta Çizgiler + Long Lines Uzun Çizgiler + Short Strokes Kısa Vuruşlar + Medium Strokes Orta Vuruşlar + Long Strokes Uzun Vuruşlar + Radial Blur Radyal Bulanıklık + Smart Blur Akıllı Bulanıklaştırma + Unsharp Mask Keskinliği Azaltma Maskesi + Gaussian Blur Gauss Bulanıklığı + Method Yöntem + Quality Kalite + Radius Yarıçap + Spin Döndürme + Draft Taslak + Good İyi + Best En iyi + Mode Mod + Blur Mode Bulanıklaştırma Modu + Edge Only Yalnızca Kenar + Overlay Edge Kaplama Kenarı + — missing - eksik + to search every command her komutu aramak için + (closest) (en yakın) + + Add Scale + Ölçek Ekle + 0.2 (quality) to 100 (speed) 0,2 (kalite) ila 100 (hız) + 1 Color Job… 1 Renk İşi… + 1 {unit} on the artboard stands for {real} {unit} in the scene. Çalışma yüzeyindeki 1 {unit}, sahnedeki {real} {unit} anlamına gelir. + 2 Color Job… 2 Renkli İş… + 3 Color Job… 3 Renkli İş… + 30° Angles 30° Açılar + 3D and Materials 3D ve Malzemeler + 3D Ribbon 3D Şerit + 45° Angles 45° Açılar + 60° Angles 60° Açılar + 90° & 45° & 30° Angles 90° & 45° & 30° Açılar + 90° & 45° Angles 90° ve 45° Açılar + 90° Angles 90° Açılar + < 1 sec < 1 saniye + + [Default] is protected: New… starts an editable copy. [Varsayılan] korumalıdır: Yeni… düzenlenebilir bir kopya başlatır. + [Unnamed] [İsimsiz] + A File… Bir Dosya… + A lower value follows the stroke closely; a higher one gives fewer points and smoother curves. Daha düşük bir değer konturu yakından takip eder; daha yüksek olanı daha az nokta ve daha yumuşak eğriler verir. + A new preset starting from the selected one Seçilenden başlayarak yeni bir ön ayar + A saved copy of the selected preset Seçilen ön ayarın kaydedilmiş bir kopyası + About VectorCraft VectorCraft Hakkında + above yukarıda + Absolute Position Mutlak Konum + Accurate Doğru + Abutting bitişik + Action {n} Eylem {n} + Actions Eylemler + Activate Document Belgeyi Etkinleştir + Active Perspective Plane Aktif Perspektif Düzlemi + Actual Size Gerçek Boyut + Add Ekle + Add Anchor (Pen) Çapa Ekle (Kalem) + Add Anchor Point Bağlantı Noktası Ekle + Add Anchor Point Tool Bağlantı Noktası Ekleme Aracı + Add Anchor Points Bağlantı Noktaları Ekle + Add Effect Efekt Ekle + Add Freeform Line Serbest Biçimli Çizgi Ekle + Add Freeform Point Serbest Biçim Noktası Ekle + Add Guide Kılavuz Ekle + Add Mesh Line Mesh Hattı Ekle + Add New Yeni Ekle + Add New Effect Yeni Efekt Ekle + Add New Fill Yeni Dolgu Ekle + Add New Stroke Yeni Kontur Ekle + Add Selected Artwork (Alt: as one asset) Seçilen Resmi Ekle (Alt: tek varlık olarak) + Add Selected Artwork as Multiple Assets Seçilen Sanat Eserini Birden Çok Öğe Olarak Ekle + Add Selected Artwork as One Asset Seçilen Sanat Eserini Tek Varlık Olarak Ekle + Add Spine Point Omurga Noktası Ekle + Add Swatches Renk Örnekleri Ekle + Add to Graphic Styles Grafik Stillerine Ekle + Add to Profiles Profillere Ekle + Add to Profiles… Profillere Ekle… + Add to Selection Seçime Ekle + Add to Swatches Renk Örneklerine Ekle + Add Used Colors Kullanılan Renkleri Ekle + Additional Plug-ins Folder Ek Eklentiler Klasörü + Additional Fonts Folder Ek Yazı Tipleri Klasörü + Adjust Adjoining Width Points Bitişik Genişlik Noktalarını Ayarlayın + Adjust Color Balance… Renk Dengesini Ayarlayın… + Adjust Colors Renkleri Ayarla + Adjust Options: Seçenekleri Ayarlayın: + Advanced Gelişmiş + Advanced Options Gelişmiş Seçenekler + Align Hizala + Align center Ortaya hizala + Align left Sola hizala + Align Objects: Nesneleri Hizala: + Align On: Hizalama Açık: + Align right Sağa hizala + Align Stroke to Center Konturu Merkeze Hizala + Align Stroke to Inside Konturu İçeri Hizala + Align Stroke to Outside Konturu Dışarıya Hizala + Align Stroke: Konturu Hizala: + Align to Artboard Çalışma Yüzeyine Hizala + Align to Glyph Bounds Glif Sınırlarına Hizala + Align to Key Object Anahtar Nesneye Hizala + Align to Page Sayfaya Hizala + Align to Path Yola Hizala + Align to Selection Seçime Hizala + Align To: Şuna Hizala: + Align: Hizala: + Alignment Guides Hizalama Kılavuzları + Alignment: Hizalama: + All Hepsi + All Artwork Above Yukarıdaki Tüm Sanat Eserleri + All Caps Tamamı Büyük Harf + All Categories Tüm Kategoriler + All colours are within the CMYK gamut Tüm renkler CMYK gamındadır + All on Active Artboard Hepsi Aktif Çalışma Yüzeyinde + All on Same Layers Hepsi Aynı Katmanlarda + All printer's marks Tüm yazıcı işaretleri + All Scripts Tüm Komut Dosyaları + All Text Objects Tüm Metin Nesneleri + All the art Tüm sanat + All Tools Tüm Araçlar + Alt Alternatif + Alt: Alternatif: + Alter Paths for Appearance Görünüm İçin Yolları Değiştirin + Amount Tutar + Amount: Tutar: + Anchor Point Bağlantı Noktası + Anchor Point Tool Bağlantı Noktası Aracı + Anchor Points Bağlantı Noktaları + Anchor Points, Handle, and Bounding Box Display Bağlantı Noktaları, Tutamaç ve Sınırlandırma Kutusu Görünümü + Anchor/Path Labels Bağlantı/Yol Etiketleri + Anchors: Çapalar: + Angle Açı + Angle: Açı: + Angles Açılar + Animated Zoom Animasyonlu Yakınlaştırma + Anti-alias Kenar yumuşatma + Anti-Alias Kenar Yumuşatma + Anti-alias Rasters Kenar Yumuşatma Rasterleri + Anti-aliased Artwork Kenar Yumuşatılmış Sanat Çalışması + Anti-aliasing: Kenar yumuşatma: + Any Kind Her Türlü + Appearance Görünüm + Appearance Attribute Görünüm Özniteliği + Appearance Item Görünüm Öğesi + Appearance of Black Siyahın Görünümü + Appearance Panel Görünüm Paneli + Appearance panel Görünüm paneli + Applies when the linked file is relinked or updated. Bağlantılı dosya yeniden bağlandığında veya güncellendiğinde geçerlidir. + Applies the next time VectorCraft starts. VectorCraft'ın bir sonraki başlatılışında uygulanır. + Apply Uygula + Apply Brush Fırça Uygula + Apply Character Style Karakter Stilini Uygula + Apply Effect Efekt Uygula + Apply Graphic Style Grafik Stili Uygula + Apply Last Color Son Rengi Uygula + Apply Last Effect Son Efekti Uygula + Apply Last Gradient Son Degradeyi Uygula + Apply Paragraph Style Paragraf Stilini Uygula + Apply SVG Filter… SVG Filtresini Uygula… + Apply to All Tümüne Uygula + Apply to All ({count} more missing) Tümüne Uygula ({count} daha eksik) + Arc Yay + Arc Lower… Ark Alt… + Arc Tool Yay Aracı + Arc Upper… Ark Üst… + Arch… Kemer… + Arc… Yay… + Area / Path Type Alan / Yol Türü + Area Graph Tool Alan Grafiği Aracı + Area Text Objects Alan Metin Nesneleri + Area Type Options Alan Tipi Seçenekleri + Area Type Options… Alan Tipi Seçenekleri… + Area Type Tool Alan Metni Aracı + Around Object Nesnenin Etrafında + Arrange Düzenle + Arrange: Bring to Front Düzenle: Öne Getir + Arrowheads: Ok uçları: + Art Sanat + Art using a deleted global swatch keeps its colour. Silinen bir global renk örneğini kullanan sanat eseri rengini korur. + Artboard Options Çalışma Yüzeyi Seçenekleri + Artboard Options… Çalışma Yüzeyi Seçenekleri… + Artboard Tool Çalışma Yüzeyi Aracı + Artboard {number} Çalışma yüzeyi {number} + Artboard: Çalışma yüzeyi: + Artboards Çalışma Yüzeyleri + ArtCraft Website ArtCraft Web Sitesi + ArtCraft website ArtCraft web sitesi + Artwork Colors Sanat Eseri Renkleri + As Multiple Assets Çoklu Varlıklar Olarak + As Single Asset Tek Varlık Olarak + Ascender Yükselen + Ask When Modified Değiştirildiğinde Sor + Aspect Ratio En Boy Oranı + Asset Export Varlık Dışa Aktarma + Asset Export Settings Varlık Dışa Aktarma Ayarları + Assets Varlıklar + Assign Ata + Assign Profile… Profil Ata… + Assign: Ata: + Attach to Active Plane Etkin Düzlem'e Ekle + Attributes Nitelikler + Author Title: Yazarın Adı: + Author: Yazar: + Auto Otomatik + Auto Color Otomatik Renk + Automatic Otomatik + Auto Size New Area Type Otomatik Boyutlandırma Yeni Alan Türü + Auto Spell Check Otomatik Yazım Denetimi + Auto-Collapse Iconic Panels İkonik Panelleri Otomatik Daralt + Ellipse Properties: Elips Özellikleri: + Invert Pie Pastayı Ters Çevir + Side Length: Yan Uzunluk: + Make Sides Equal Tarafları Eşitleyin + Pie End Angle: Pasta Sonu Açısı: + Pie Start Angle: Pasta Başlangıç Açısı: + Show Tool Group Labels Araç Grubu Etiketlerini Göster + Auto-Rotate (turn the paper to each artboard) Otomatik Döndürme (kağıdı her çalışma yüzeyine çevirin) + Automatic flatness Otomatik düzlük + Automatically Otomatik olarak + Automatically Save Recovery Data Kurtarma Verilerini Otomatik Olarak Kaydet + Average Ortalama + Average… Ortalama… + Axis: Eksen: + Background Color: Arka Plan Rengi: + Background Contents Arka Plan İçeriği + Background Contents: Arkaplan İçeriği: + Background: Arka plan: + Backspace Geri tuşu + Bar Graph Tool Çubuk Grafik Aracı + Baseline Temel + Baseline Shift Taban Çizgisi Kayması + Basic Latin Temel Latince + Batch Toplu + Begin Recording Kaydı Başlat + Bend: Bükülme: + Bevel Join Eğimli Birleştirme + Bitmap Bit eşlem + Black Siyah + Black and White Siyah ve Beyaz + Black and White Logo Siyah Beyaz Logo + BLANK DOCUMENT PRESETS BOŞ BELGE ÖN AYARLARI + Bleed kanama + Bleed: Kanama: + Bleeds Kanamalar + Blend Karışım + Blend Front to Back Önden Arkaya Karıştırın + Blend Horizontally Yatay Olarak Karıştır + Blend Info Karışım Bilgisi + Blend Options Karışım Seçenekleri + Blend Options… Karışım Seçenekleri… + Blend Tool Karışım Aracı + Blend Vertically Dikey Olarak Karıştır + Blending Mode Karıştırma Modu + Blends and Transparency Karışımlar ve Şeffaflık + Bloat Tool Şişirme Aracı + Blob Brush Kabarcık Fırçası + Blob Brush Tool Kabarcık Fırçası Aracı + Blue Mavi + Blur Bulanıklaştırma + Bottom Alt + Bottom in Front Alt Ön + Bottom: Alt: + Bounds Sınırlar + Bounds (Fill Proportionally) Sınırlar (Orantılı Doldurun) + Bounds (Fit Proportionally) Sınırlar (Orantılı Olarak Sığdır) + Break Link to Graphic Style Grafik Stiliyle Bağlantıyı Kes + Break Link to Symbol Sembol Bağlantısını Kes + Brick by Column Sütun Tuğla + Brick by Row Sıra Sıra Tuğla + Brick Offset: Tuğla Ofseti: + Brightness Parlaklık + Brightness/Contrast… Parlaklık/Kontrast… + Brights Parlaklar + Bring Forward Öne Çıkar + Bring to Front Öne Getir + Bristle kıl + Bristle Brush Strokes Kıl Fırça Darbeleri + Browser Tarayıcı + Brush Affects: Fırça Etkileri: + Brush Definition Fırça Tanımı + Brush Libraries Fırça Kitaplıkları + Brush Libraries (on the roadmap) Fırça Kitaplıkları (yol haritasında) + Brush Options… Fırça Seçenekleri… + Brush Strokes Fırça Darbeleri + Brushes Fırçalar + Built-in Libraries Yerleşik Kütüphaneler + Built-in presets are read-only: New… starts an editable copy. Yerleşik ön ayarlar salt okunurdur: Yeni… düzenlenebilir bir kopya başlatır. + Built-in presets don't change: New makes a copy you can edit. Yerleşik ön ayarlar değişmez: Yeni, düzenleyebileceğiniz bir kopya oluşturur. + Built-in presets don't change: New… starts an editable copy. Yerleşik ön ayarlar değişmez: Yeni… düzenlenebilir bir kopya başlatır. + Bulge… çıkıntı… + Bullet Madde işareti + Butt Cap Popo Kapağı + Byte Order: Bayt Sırası: + Calligraphic Kaligrafi + Can't print these settings: see the Summary Bu ayarlar yazdırılamıyor: Özet'e bakın + Cancel İptal + Cancel Key Object Anahtar Nesneyi İptal Et + Canvas Color Kanvas Rengi + Cap Kap + Cap: Kapak: + Cascade Çağlayan + Center Merkez + Center Artwork Merkez Resmi + Center on Artboard Çalışma Yüzeyinde Ortala + Center-Justified Tab Ortaya Yaslanmış Sekme + Centimeters Santimetre + Change Değiştir + Change All Tümünü Değiştir + Change Case Büyük/Küçük Harf Değiştir + Change Screen Mode (F) Ekran Modunu Değiştir (F) + Change to Global Rulers Küresel Yöneticilerde Değişiklik + Change to Right-to-Left Layout Sağdan Sola Düzene Geç + Changed since the last Refresh. Son Yenilemeden bu yana değişti. + Changes allowed: İzin verilen değişiklikler: + Changes made since it was last saved will be lost. Son kaydedilmesinden bu yana yapılan değişiklikler kaybolacak. + Changing these settings changes how raster effects look when exported, flattened or expanded. Bu ayarların değiştirilmesi, dışa aktarıldığında, düzleştirildiğinde veya genişletildiğinde tarama efektlerinin nasıl görüneceğini değiştirir. + Channel Kanal + Character Karakter + Character Alignment Karakter Hizalaması + Character / Paragraph Karakter / Paragraf + Character Rotation Karakter Rotasyonu + Character Set: Karakter Seti: + Character Style Karakter Stili + Character Style Options Karakter Stili Seçenekleri + Character Styles Karakter Stilleri + Check Links Bağlantıları Kontrol Et + Check Script Komut Dosyasını Kontrol Et + Check Script… Komut Dosyasını Kontrol Et… + Copy Report Raporu Kopyala + VectorCraft read this script without running it. VectorCraft bu betiği çalıştırmadan okudu. + Needs nothing beyond plain JavaScript Sade JavaScript'in ötesinde hiçbir şeye ihtiyaç duymaz + Needs the script language's own objects or directives Betik dilinin kendi nesnelerine veya direktiflerine ihtiyaç duyar + Needs the document model Belge modeline ihtiyaç var + Needs files Dosyalara ihtiyaç var + Needs menu commands Menü komutlarına ihtiyaç duyar + Needs dialogs Diyaloglara ihtiyaç var + Needs features only the reference app has Yalnızca referans uygulamanın sahip olduğu özelliklere ihtiyaç duyar + Outside the document Belgenin dışında + Writes, moves or deletes files Dosyaları yazar, taşır veya siler + Opens files in other apps Dosyaları diğer uygulamalarda açar + Opens network connections Ağ bağlantılarını açar + Loads native code Yerel kodu yükler + Sends messages to other apps Diğer uygulamalara mesaj gönderir + Reads or sets environment variables Ortam değişkenlerini okur veya ayarlar + Runs code the checker can't read Denetleyicinin okuyamadığı kodu çalıştırır + Changes the reference app's preferences Referans uygulamasının tercihlerini değiştirir + Menu commands Menü komutları + Names the script builds as it runs: {count} Betiğin çalıştığı sırada oluşturduğu adları belirtir: {count} + Document model Belge modeli + Object types: {names} Nesne türleri: {names} + Directives Direktifler + Includes İçerir + Checked İşaretlendi + Not followed: outside the script's folder Takip edilmedi: betiğin klasörünün dışında + Includes itself Kendini içerir + Not read Okunmadı + Not read: a limit was reached Okunmadı: sınıra ulaşıldı + Compiled or not text Derlenmiş veya metin değil + Problems Sorunlar + String not closed Dize kapatılmadı + Comment not closed Yorum kapatılmadı + Regular expression not closed Normal ifade kapatılmadı + Template literal not closed Şablon değişmez bilgisi kapatılmadı + XML literal not closed XML değişmez değeri kapatılmadı + Bracket never closed Braket asla kapanmadı + Closing bracket with no opening one Açıklığı olmayan kapatma braketi + Syntax newer than ES3 Sözdizimi ES3'ten daha yeni + Unknown directive Bilinmeyen direktif + Not valid UTF-8: unreadable bytes were replaced Geçerli değil UTF-8: okunamayan baytlar değiştirildi + Mixed line endings Karışık satır sonları + Nesting too deep to follow Takip edilemeyecek kadar derine yuvalanmak + line {line} satır {line} + lines {lines} satırlar {lines} + {file}, line {line} {file}, {line} satırı + Compiled script: ask its author for the .jsx file Derlenmiş komut dosyası: yazarından .jsx dosyasını isteyin + Too large to check Kontrol edilemeyecek kadar büyük + Not a script for the reference app Referans uygulaması için bir komut dosyası değil + Some lists were cut short at their limit. Bazı listeler sınırlarına göre kısaltıldı. + Check Spelling… Yazımı Kontrol Et… + Choose a folder Bir klasör seçin + Choose… Seç… + Circle daire + Classic Defaults Klasik Varsayılanlar + Clean Up… Temizleme… + Clear Temizle + Clear All Tabs Tüm Sekmeleri Temizle + Above Text Metnin Üstünde + Position Panel Above Text Paneli Metnin Üstüne Konumlandırın + Clear Appearance Görünümü Temizle + Clear Guides Kılavuzları Temizle + Clear Overrides Geçersiz Kılmaları Temizle + Clear Recent Files Son Dosyaları Temizle + Click Tıklayın + Click an anchor point Bir bağlantı noktasını tıklayın + Click or drag Tıklayın veya sürükleyin + Click the art with the Gradient tool to add or select points. Nokta eklemek veya seçmek için Degrade aracıyla resme tıklayın. + Click the first point İlk noktaya tıklayın + Click the ramp or a type button to apply a gradient. Degrade uygulamak için rampayı veya bir yazma düğmesini tıklayın. + Click to add a tab stop, drag to move it, drag it off the ruler to delete it Sekme durağı eklemek için tıklayın, taşımak için sürükleyin, silmek için cetvelin dışına sürükleyin + Click to choose a swatch, Shift-click to mix a colour Bir renk örneğini seçmek için tıklayın, bir rengi karıştırmak için Shift tuşunu basılı tutarak tıklayın + Click to edit the mask; Alt-click to view only the mask; Shift-click to disable or enable it Maskeyi düzenlemek için tıklayın; Yalnızca maskeyi görüntülemek için Alt tuşunu basılı tutarak tıklayın; Devre dışı bırakmak veya etkinleştirmek için Shift tuşunu basılı tutarak tıklayın + Click to place each file at 100%, or drag to size it; arrow keys switch files, Esc skips one. Her dosyayı %100'e yerleştirmek için tıklayın veya boyutlandırmak için sürükleyin; ok tuşları dosyaları değiştirir, Esc birini atlar. + Click to select, double-click to edit Seçmek için tıklayın, düzenlemek için çift tıklayın + Click to toggle visibility Görünürlüğü değiştirmek için tıklayın + Click to zoom in, Alt-click to zoom out, drag to pan, double-click to fit Yakınlaştırmak için tıklayın, uzaklaştırmak için Alt tuşunu basılı tutarak tıklayın, kaydırmak için sürükleyin, sığdırmak için çift tıklayın + Client-side (.html) İstemci tarafı (.html) + Clip Klip + Clip Complex Regions Karmaşık Bölgeleri Kırp + Clip to Art Sanata Klip + Clip to Artboard Çalışma Yüzeyine Klip + Clip to Bounding Box Sınırlayıcı Kutuya Klip + Clipboard as PDF PDF olarak pano + Clipboard as PNG PNG olarak pano + Clipboard as SVG SVG olarak pano + Clipboard as Text Metin Olarak Pano + Clipboard Formats Pano Formatları + Clipboard Handling Pano Kullanımı + Clipping Mask Kırpma Maskesi + Clipping Masks Kırpma Maskeleri + Close Kapat + Close All Tümünü Kapat + Close Library Kitaplığı Kapat + Close Path Yolu Kapat + Close paths when ends are within: Uçlar şu aralıkta olduğunda yolları kapatın: + Cmd Komut + CMYK CMYK + CMYK Color CMYK Rengi + CMYK colours print with their own values; off, they go through the colour settings too. CMYK renkleri kendi değerleriyle yazdırılır; kapalıysa, renk ayarlarından da geçerler. + Collapse Panels to Icons Panelleri Simgelere Daralt + Collapse to Icons Simgelere Daralt + Collate Harmanla + Collect for Export İhracat için toplayın + Collect in New Layer Yeni Katmanda Topla + Collect Links in a Separate Folder Bağlantıları Ayrı Bir Klasörde Toplayın + Color Renk + Color (,) Renk (,) + Color Adjustments Renk Ayarlamaları + Color bars Renk çubukları + Color blindness – Deuteranopia-type Renk körlüğü – Döteranopi tipi + Color blindness – Protanopia-type Renk körlüğü – Protanopi tipi + Color blindness – Tritanopia-type Renk körlüğü – Tritanopia tipi + Color Burn Renkli Yanık + Color conversion: Renk dönüşümü: + Color Dodge Renk Soldurma + Color Group Renk Grubu + Color Group: Renk Grubu: + Color Group: {name} Renk Grubu: {name} + Color Guide Renk Kılavuzu + Color Guide Options Renk Kılavuzu Seçenekleri + Color Guide Options… Renk Kılavuzu Seçenekleri… + Color images Renkli görseller + Color Library Renk Kitaplığı + Color Library… Renk Kitaplığı… + Color Management Renk Yönetimi + Color Mixer (Shift-click the chip) Renk Karıştırıcı (Çipe Shift tuşuna basarak tıklayın) + Color Mode Renk Modu + Color Mode: Renk Modu: + Color Model: Renk Modeli: + Color Models Renkli Modeller + Color Picker Renk Seçici + Color Picker… Renk Seçici… + Color Reduction: Renk Azaltma: + Color Settings Renk Ayarları + Color Settings… Renk Ayarları… + Color Space Renk Alanı + Color Swatches Renk Örnekleri + Color Table Renk Tablosu + Color Table ({n} color) Renk Tablosu ({n} renk) + Color Table ({n} colors) Renk Tablosu ({n} renkleri) + Color Theme Renk Teması + Color Themes Renk Temaları + Color Type: Renk Türü: + Color: Renk: + Colorize Renklendir + Colors Renkler + Colors: Renkler: + Column Graph Tool Sütun Grafiği Aracı + Columns: Sütunlar: + Column… Sütun… + Combine Slices Dilimleri Birleştir + Coming soon — tracked in the parity plan Çok yakında — eşlik planında takip ediliyor + Command Click to Select Objects Behind Komut Arkasındaki Nesneleri Seçmek İçin Tıklayın + Command Dialog Komut İletişim Kutusu + Community Topluluk + Compatibility: Uyumluluk: + Compatible Gradient and Gradient Mesh Printing Uyumlu Degrade ve Degrade Mesh Baskı + Complement Tamamlayıcı + Complexity: Karmaşıklık: + Composite colours are converted to it; separations separate with it when it is a CMYK profile. Bileşik renkler buna dönüştürülür; CMYK profili olduğunda ayrımlar onunla ayrılır. + Compound Path Bileşik Yol + Compress (RLE) Sıkıştır (RLE) + Compress text and line art Metni ve çizgi resmini sıkıştır + Compression Sıkıştırma + Compression › Color › Above Ppi Sıkıştırma › Renk › Ppi'nin üstünde + Compression: Sıkıştırma: + Condition identifier: Durum tanımlayıcı: + Conflict {n} of {count} {count}'nin {n} çatışması + Connect Selected End Points Seçilen Uç Noktaları Bağlayın + Consolidate All Windows Tüm Pencereleri Birleştir + Constrain Angle Açıyı Sınırla + Constrain Width and Height Proportions Genişlik ve Yükseklik Oranlarını Sınırla + Construction Guides İnşaat Kılavuzları + Contextual Alternates Bağlamsal Alternatifler + Contextual Task Bar Bağlamsal Görev Çubuğu + Pin Bar Position Pim Çubuğu Konumu + Reset Bar Position Çubuk Konumunu Sıfırla + Contrast Kontrast + Control Kontrol + Convert Dönüştür + Convert All Spot Colors to Process Tüm Spot Renkleri Proses Renklere Dönüştür + Convert All Strokes to Outlines Tüm Konturları Anahatlara Dönüştür + Convert All Text to Outlines Tüm Metni Ana Hatlara Dönüştür + Convert Anchor Point Bağlantı Noktasını Dönüştür + Convert Anchor Points Bağlantı Noktalarını Dönüştür + Convert Color Rengi Dönüştür + Convert Document Color Mode Belge Renk Modunu Dönüştür + Convert Process to Global Süreci Globale Dönüştürün + Convert Selected Anchor Points to Corner Seçilen Bağlantı Noktalarını Köşeye Dönüştür + Convert Selected Anchor Points to Smooth Seçilen Bağlantı Noktalarını Düzgünleştir + Convert text to outlines Metni ana hatlara dönüştürün + Convert To Area Type Alan Tipine Dönüştür + Convert to Artboards Çalışma Yüzeylerine Dönüştür + Convert to CMYK CMYK'ye dönüştür + Convert to Grayscale Gri Tonlamaya Dönüştür + Convert To Outlines Anahatlara Dönüştür + Convert To Point Type Nokta Türüne Dönüştür + Convert to RGB RGB'ye dönüştür + Convert to Shape Şekle Dönüştür + Convert to sRGB sRGB'ye dönüştür + Convert to Straight Lines Düz Çizgilere Dönüştür + Convert: Dönüştür: + Copied the CSS of {rules} object(s) {rules} nesnelerinin CSS'si kopyalandı + Copies: Kopyalar: + Copy Kopyala + Copy (make a transformed copy) Kopyala (dönüştürülmüş bir kopya oluştur) + Copy All Objects Tüm Nesneleri Kopyala + Copy All Styles Tüm Stilleri Kopyala + Copy Color Value (Hex) Renk Değerini Kopyala (Hex) + Copy Fonts Used in the Document Belgede Kullanılan Yazı Tiplerini Kopyala + Copy Links Bağlantıları Kopyala + Copy Selected Style Seçilen Stili Kopyala + Copy to User Defined Kullanıcı Tanımlıya Kopyala + Copy Width Point Genişlik Noktasını Kopyala + Copyright Telif hakkı + Copyright Info URL: Telif Hakkı Bilgisi URL'si: + Copyright Notice: Telif Hakkı Bildirimi: + Copyright Status: Telif Hakkı Durumu: + Copyright Symbol Telif Hakkı Sembolü + Corner Point Angle Threshold: Köşe Noktası Açı Eşiği: + Corner Radius Köşe Yarıçapı + Corner Radius: Köşe Yarıçapı: + Corner: Köşe: + Corners Köşeler + Chamfer Pah + Corners… Köşeler… + Cut Path Yolu Kes + Descender iniş + Flip Çevir + Inverted Round Ters Yuvarlak + Radius: Yarıçap: + Round Yuvarlak + Couldn't copy to the system clipboard: {e} Sistem panosuna kopyalanamadı: {e} + Couldn't paste from the clipboard: {e} Panodan yapıştırılamadı: {e} + Couldn't save recovery data: {e} Kurtarma verileri kaydedilemedi: {e} + Couldn't {} {name}: {e} {} yapılamadı {name}: {e} + Create Oluştur + Create Clipping Mask Kırpma Maskesi Oluştur + Create Document Belge Oluştur + Create from Guides Rehberlerden Oluştur + Create from Selection Seçimden Oluştur + Create From: Şuradan Oluştur: + Create Gradient Mesh… Degrade Kafes Oluştur… + Create Graph Grafik Oluştur + Create New Layer Yeni Katman Oluştur + Create New Sublayer Yeni Alt Katman Oluştur + Create New Swatch… Yeni Renk Örneği Oluştur… + Create New {kind} Style Yeni {kind} Stili Oluşturun + Create Object Mosaic… Nesne Mozaiği Oluştur… + Create Outlines Anahatlar Oluştur + Create Path Yol Oluştur + Create PDF layers from layers and sublayers Katmanlardan ve alt katmanlardan PDF katmanları oluşturun + Create PDF layers from top-level layers Üst düzey katmanlardan PDF katmanları oluşturun + Create PDF-Compatible File PDF Uyumlu Dosya Oluşturun + Create Report Rapor Oluştur + Create Slice Dilim Oluştur + Create Sub-folders Alt Klasörler Oluşturun + Create Text Metin Oluştur + Create Trim Marks Kesim İşaretleri Oluşturun + Created Oluşturuldu + Created: Oluşturuldu: + Crop Kırpma + Crop Image Resmi Kırp + Mask Maske + Crop Marks Kırpma İşaretleri + Crop To Kırpma Hedefi + Crystallize Tool Kristalleştirme Aracı + CSS Properties CSS Özellikleri + Ctrl Ctrl + Currency & Symbols Para Birimi ve Semboller + Current Brush Güncel Fırça + Current Colors ({total}) Mevcut Renkler ({total}) + Current Symbol Mevcut Sembol + Curvature Eğrilik + Curvature Tool Kavis Aracı + Curves… Eğriler… + Custom Özel + Customize… Özelleştir… + Cut Kes + Cut Path at Selected Anchor Points Seçilen Bağlantı Noktalarında Yolu Kes + Cyan Camgöbeği + Dark Karanlık + Darken Koyulaştır + Darkness Karanlık + dash kısa çizgi + Dash Pattern Çizgi Deseni + Dashed Kesikli + Dashed Line Kesikli Çizgi + Data Recovery Veri Kurtarma + Data… Veri… + Dates Tarihler + Decimal-Justified Tab Ondalık Blokla Sekme + Decimal: Ondalık: + Decorative Dekoratif + Default Varsayılan + Default Actions Varsayılan Eylemler + Default Figure Varsayılan Şekil + Default Fill and Stroke Varsayılan Dolgu ve Kontur + Default Fill and Stroke (D) Varsayılan Dolgu ve Kontur (D) + Default Language Varsayılan Dil + Default Printer Varsayılan Yazıcı + Default Swatches Varsayılan Renk Örnekleri + Define Grid… Izgarayı Tanımla… + Define Perspective Grid Perspektif Izgarasını Tanımla + Define Perspective Grid… Perspektif Izgarasını Tanımla… + Delete Sil + Delete All Tümünü Sil + Delete Anchor Point Bağlantı Noktasını Sil + Delete Anchor Point Tool Bağlantı Noktası Silme Aracı + Delete Anchor Points Bağlantı Noktalarını Sil + Delete Artboard Çalışma Yüzeyini Sil + Delete Artboards Çalışma Yüzeylerini Sil + Delete Brush Fırçayı Sil + Delete Character Style Karakter Stilini Sil + Delete Empty Artboards Boş Çalışma Yüzeylerini Sil + Delete Freeform Point Serbest Biçim Noktasını Sil + Delete Graphic Style Grafik Stilini Sil + Delete Graphic Style (Alt-click: without asking) Grafik Stilini Sil (Alt tuşuyla tıklayın: sormadan) + Delete Layer Katmanı Sil + Delete Mesh Point Mesh Noktasını Sil + Delete Paragraph Style Paragraf Stilini Sil + Delete Pattern Deseni Sil + Delete PDF Preset PDF Hazır Ayarını Sil + Delete Perspective Grid Preset Perspektif Izgarası Ön Ayarını Sil + Delete Point Noktayı Sil + Delete Preset Ön Ayarı Sil + Delete Print Preset Yazdırma Ön Ayarını Sil + Delete Profile Profili Sil + Delete Save for Web Preset Web Ön Ayarı için Kaydet'i Sil + Delete Selected Item Seçilen Öğeyi Sil + Delete Selection Seçimi Sil + Delete Slices Dilimleri Sil + Delete Spine Point Omurga Noktasını Sil + Delete Stop Durdurmayı Sil + Delete Swatch Renk Örneğini Sil + Delete Symbol Sembolü Sil + Delete Tab Sekmeyi Sil + Delete the graphic style “{name}”? “{name}” grafik stili silinsin mi? + Delete Theme Temayı Sil + Delete theme Temayı sil + Delete these {count} swatches and groups? Bu {count} renk örnekleri ve grupları silinsin mi? + Delete these {n} graphic styles? Bu {n} grafik stilleri silinsin mi? + Delete this saved preset Bu kayıtlı ön ayarı silin + Delete this {n} graphic style? Bu {n} grafik stili silinsin mi? + Delete Transparency Flattener Preset Saydamlık Düzleştirici Ön Ayarını Sil + Delete Width Point Genişlik Noktasını Sil + Delete Workspace Çalışma Alanını Sil + Delete {kind} Style {kind} Stilini Sil + Delete “{name}”? “{name}” silinsin mi? + Depth: Derinlik: + Description Açıklama + Description: Açıklama: + Deselect Seçimi kaldır + Design… Tasarım… + Destination: Hedef: + Detail: Detay: + Devices Cihazlar + Dialog Diyalog + Diamond Elmas + Difference Fark + Differences from {preset}: {preset}'den farklar: + Dim Copies to: Karartılmış Kopyalar: + Dim Images to: Görüntüleri Karart: + Dimensions Boyutlar + Direct Selection Tool Doğrudan Seçim Aracı + Direction Handles Yön Kolları + Disable Auto Add/Delete Otomatik Ekleme/Silmeyi Devre Dışı Bırak + Disable Opacity Mask Opaklık Maskesini Devre Dışı Bırak + Discard At + Discard Empty Type Boş Türü At + Discard Recovered Documents Kurtarılan Belgeleri Atın + Discard White Overprint in Output Çıktıdaki Beyaz Üst Baskıyı At + Discarded {} recovered document(s) Kurtarılan {} belge atıldı + Discord Discord + Discretionary Hyphen İsteğe Bağlı Kısa Çizgi + Discretionary Ligatures İsteğe Bağlı Bitişik Harfler + Display All Blacks Accurately Tüm Siyahları Doğru Şekilde Görüntüleyin + Display All Blacks as Rich Black Tüm Siyahları Zengin Siyah Olarak Görüntüle + Display Bitmaps as Anti-aliased Images in Pixel Preview Piksel Önizlemede Bitmap'leri Kenar Yumuşatılmış Görüntüler Olarak Görüntüleme + Display Options Ekran Seçenekleri + Display Print Size at 100% Zoom Baskı Boyutunu %100 Yakınlaştırmada Görüntüle + Distort & Transform Deforme Et ve Dönüştür + Distort Appearance Görünümü Deforme Etme + Distort Linear Gradients Doğrusal Degradeleri Deforme Etme + Distort Pattern Fills Desen Dolgularını Deforme Etme + Distortion Bozulma + Distribute Dağıt + Distribute Objects: Nesneleri Dağıt: + Distribute Spacing Aralığı Dağıt + Distribute Spacing: Aralığı Dağıt: + Dither: Titreme: + Divide Böl + Divide Horizontally Into Yatay Olarak Böl + Divide Objects Below Aşağıdaki Nesneleri Böl + Divide Slices Dilimleri Böl + Divide Slices… Dilimleri Böl… + Divide Vertically Into Dikey Olarak Böl + Do Not Move Hareket Etme + Do you want to save the changes you made to “{name}”? “{name}”de yaptığınız değişiklikleri kaydetmek istiyor musunuz? + Can't open “{name}”. “{name}” açılamıyor. + Can't save “{name}”. “{name}” kaydedilemiyor. + Can't export “{name}”. “{name}” dışa aktarılamıyor. + Document Belge + Document Color Mode Belge Renk Modu + Document Info Belge Bilgisi + Document Ink Options Belge Mürekkebi Seçenekleri + Document JSON JSON'u belgeleyin + Document open password Belge açma şifresi + Document profile Belge profili + Document Raster Effects Settings Belge Raster Efekt Ayarları + Document Raster Effects Settings Dialog Belge Tarama Efektleri Ayarları İletişim Kutusu + Document Raster Effects Settings… Belge Raster Efekt Ayarları… + Use Document Raster Effects Resolution Belge Raster Efektleri Çözünürlüğünü Kullan + Document Setup Belge Kurulumu + Document Setup… Belge Düzeni… + Document Swatches Belge Renk Örnekleri + Document Title: Belge Başlığı: + Documents you create appear here. Oluşturduğunuz belgeler burada görünür. + Don't Save Kaydetme + Don't Show Center Merkezi Gösterme + Done Bitti + Dots Noktalar + Double Click To Isolate Yalıtmak İçin Çift Tıklayın + Double Left Quotation Marks Çift Sol Tırnak İşaretleri + Double Quotes: Çift Tırnak: + Double Right Quotation Marks Çift Sağ Tırnak İşaretleri + Double-click Çift tıklama + Double-click to edit the characters' paint Karakterlerin boyasını düzenlemek için çift tıklayın + Double-click to insert Eklemek için çift tıklayın + Double-click to rename Yeniden adlandırmak için çift tıklayın + Double-click to target the contents İçeriği hedeflemek için çift tıklayın + Download İndir + Download: İndir: + Downloaded {what} {what} indirildi + Downloaded {} file(s) {} dosya indirildi + Drag Sürükle + Drag a handle Bir tutamacı sürükleyin + Drag art here, or select it and click +. Hold Alt for one asset of several objects. Resmi buraya sürükleyin veya seçip + işaretine tıklayın. Birkaç nesneden oluşan bir varlık için Alt tuşunu basılı tutun. + Drag onto art to apply this appearance Bu görünümü uygulamak için resmin üzerine sürükleyin + Drag the art to move it on the paper Resmi kağıt üzerinde taşımak için sürükleyin + Draw Beraberlik + Draw Behind Arkaya Çiz + Draw in Perspective Perspektifte Çiz + Draw Inside İçini Çiz + Draw Normal Normal Çiz + Draw: Beraberlik: + Drawing Mode Çizim Modu + Drop Shadow Alt Gölge + Drop Shadow… Alt Gölge… + Duotone Gradients Çift Tonlu Degradeler + Duplicate Çoğalt + Duplicate and Offset 10 pt Çoğalt ve Ofset 10 pt + Duplicate Artboard Çalışma Yüzeyini Çoğalt + Copy Artboard Çalışma Yüzeyini Kopyala + Cut Artboard Çalışma Yüzeyini Kes + Duplicate Artboards Çalışma Yüzeylerini Çoğalt + Duplicate Brush Yinelenen Fırça + Duplicate Character Style Yinelenen Karakter Stili + Duplicate Effect Yinelenen Efekt + Duplicate Graphic Style Grafik Stilini Çoğalt + Duplicate Item Yinelenen Öğe + Duplicate Layer Katmanı Çoğalt + Duplicate Paragraph Style Yinelenen Paragraf Stili + Duplicate Selected Item Seçilen Öğeyi Çoğalt + Duplicate Selection Seçimi Çoğalt + Duplicate Slice Yinelenen Dilim + Duplicate Swatch Renk Örneğini Çoğalt + Duplicate Symbol Yinelenen Sembol + Duplicate {kind} Style Çoğaltılmış {kind} Stili + Dutch Hollandaca + DXF Import Options DXF İçe Aktarma Seçenekleri + DXF Info DXF Bilgisi + DXF Options DXF Seçenekleri + DXF Options Dialog DXF Seçenekleri İletişim Kutusu + e.g. 1-3, 5 örneğin 1-3, 5 + Each page prints as one image, at the document's raster effects resolution. Her sayfa, belgenin tarama efektleri çözünürlüğünde tek bir görüntü olarak yazdırılır. + Earth Tones Toprak Tonları + East Asian Type Doğu Asya Tipi + Edit Düzenle + Edit Artboards Çalışma Yüzeylerini Düzenle + Edit Clipping Path Kırpma Yolunu Düzenle + Edit Color Group Renk Grubunu Düzenle + Edit Colors Renkleri Düzenle + Edit Contents İçeriği Düzenle + Edit Custom Dictionary… Özel Sözlüğü Düzenle… + Edit Envelope Zarfı Düzenle + Edit Freeform Point Serbest Biçim Noktasını Düzenle + Edit Gradient Degradeyi Düzenle + Edit Opacity Mask Opaklık Maskesini Düzenle + Edit or Apply Color Group Renk Grubunu Düzenle veya Uygula + Edit or Apply Color Group… Renk Grubunu Düzenle veya Uygula… + Edit or Apply Colors Renkleri Düzenleyin veya Uygulayın + Edit Original Orijinali Düzenle + Edit Pattern Deseni Düzenle + Edit PDF Preset PDF Hazır Ayarını Düzenle + Edit Print Preset Yazdırma Ön Ayarını Düzenle + Edit selected paths within: Seçilen yolları şunun içinde düzenleyin: + Edit Selection Seçimi Düzenle + Edit Selection… Seçimi Düzenle… + Edit Symbol Sembolü Düzenle + Edit Text Metni Düzenle + Edit the applied effect, or add another one? Uygulanan efekti düzenlemek veya başka bir efekt eklemek mi istiyorsunuz? + Edit the selected point's colour in the Color panel Seçilen noktanın rengini Renk panelinde düzenleyin + Edit the stop Durağı düzenle + Edit Theme Temayı Düzenle + Edit theme Temayı düzenle + Edit Toolbar Araç Çubuğunu Düzenle + Edit Views Görünümleri Düzenle + Edit Views… Görünümleri Düzenle… + Edit… Düzenle… + Effect Efekt + Effect Options Efekt Seçenekleri + Effective PPI Etkili ÜFE + Effects Efektler + Effect… Etki… + Ellipse elips + Ellipse Tool Elips Aracı + Ellipse… elips… + Ellipsis Üç nokta + Em Box Bottom/Left Em Kutusu Alt/Sol + Em Box Center Em Kutusu Merkezi + Em Box Top/Right Em Kutusu Üst/Sağ + Em Dash Em Dash + Em Space Em Uzay + Embed Göm + Embed Fonts (for other applications) Yazı Tiplerini Göm (diğer uygulamalar için) + Embed Fonts (Glyphs Used) Gömülü Yazı Tipleri (Kullanılan Glifler) + Embed ICC Profile ICC Profilini Yerleştirin + Embed ICC Profiles ICC Profillerini Göm + Embed Image Resim Göm + Embed Image(s) Resim(ler)i Göm + Embed page thumbnails Sayfa küçük resimlerini yerleştirme + Embedded Gömülü + Embedded Image Gömülü Resim + Embedded {n} image(s) Gömülü {n} görselleri + Embedded {n} image(s); {missing} missing: relink them first Gömülü {n} görselleri; {missing} eksik: önce onları yeniden bağlayın + Emulsion: Emülsiyon: + En Dash En Dash + En Space Uzayda + Enable Background Export Arka Plan Dışa Aktarmayı Etkinleştir + Enable Background Save Arka Planda Kaydetmeyi Etkinleştir + Enable Contextual Task Bar Bağlamsal Görev Çubuğunu Etkinleştir + Enable copying of text, images and other content Metin, resim ve diğer içeriklerin kopyalanmasını etkinleştirin + Enable in-menu font previews Menü içi yazı tipi önizlemelerini etkinleştir + Enable Missing Glyph Protection Eksik Glif Korumasını Etkinleştir + Enable Opacity Mask Opaklık Maskesini Etkinleştir + Enable plaintext metadata Düz metin meta verilerini etkinleştir + Enable Rubber Band for Lastik Bandı Etkinleştir + Enable text access for screen readers Ekran okuyucular için metin erişimini etkinleştirin + Enable Touch Gestures Dokunma Hareketlerini Etkinleştir + Enable Touch Workspace Dokunmatik Çalışma Alanını Etkinleştir + Encoding Kodlama + Encoding: Kodlama: + Encryption: {name} (set by Compatibility) Şifreleme: {name} (Uyumluluk tarafından ayarlanır) + End arrowhead Son ok ucu + English English + English: UK İngilizce: İngiltere + English: USA İngilizce: ABD + Enter Girin + Enter Isolation Mode İzolasyon Moduna Girin + Entire Font Yazı Tipinin Tamamı + Envelope Distort Zarf Deformasyonu + Envelope Info Zarf Bilgisi + Envelope Mesh Zarf Mesh + Envelope Options Zarf Seçenekleri + Envelope Options… Zarf Seçenekleri… + EPS Options EPS Seçenekleri + EPS Options Dialog EPS Seçenekleri İletişim Kutusu + Eraser Silgi + Eraser Tool Silgi Aracı + Error Hata + Esc Esc + Every (minutes) Her (dakika) + Every option is at its default. Her seçenek varsayılan değerdedir. + Every option matches {base}. Her seçenek {base} ile eşleşir. + Every-line Composer Her Satır Bestecisi + Exact dash lengths Tam çizgi uzunlukları + Exceptions (comma separated) İstisnalar (virgülle ayrılmış) + Exclude Hariç tut + Exclusion Hariç Tutma + Exit Isolation Mode İzolasyon Modundan Çık + Expand Genişlet + Expand Appearance Görünümü Genişlet + Expand applies to compound shapes (Alt-click a shape mode) — on the roadmap Genişletme, yol haritasındaki bileşik şekillere uygulanır (Alt tuşuyla bir şekil moduna tıklayın) + Expand Brush Strokes Fırça Darbelerini Genişlet + Expand Compound Shape Bileşik Şekli Genişlet + Expand Gradient Mesh Degrade Mesh'i Genişlet + Expand Gradient To Degradeyi Genişlet + Expand Layers Panel Rows Katmanlar Paneli Satırlarını Genişlet + Expand Options Seçenekleri Genişlet + Expand Panels Panelleri Genişlet + Expand Repeat Tekrarı Genişlet + Expand Shape Şekli Genişlet + Expand: Genişlet: + Expand… Genişlet… + Export Dışa Aktar + Export All… Tümünü Dışa Aktar… + Export and Clipboard Transparency Flattener Settings Dışa Aktarma ve Pano Şeffaflığı Düzleştirici Ayarları + Export Artboard Çalışma Yüzeyini Dışa Aktar + A File per Object Nesne Başına Bir Dosya + Example: {name} Örnek: {name} + Export Preset: Dışa Aktarma Ön Ayarı: + Folders: Klasörler: + Insert Ekle + Nothing is selected. Select the art to export, then open this tab again. Hiçbir şey seçilmedi. Dışa aktarılacak resmi seçin ve ardından bu sekmeyi tekrar açın. + One File of the Selection Seçimin Bir Dosyası + Start at: Başlangıç tarihi: + {n} objects selected {n} nesneleri seçildi + Delete Export Preset Dışa Aktarma Ön Ayarını Sil + Export Presets Ön Ayarları Dışa Aktarma + Save Export Preset Dışa Aktarma Ön Ayarını Kaydet + Export Layer Katmanı Dışa Aktar + Export Selection Seçimi Dışa Aktar + All in One Folder Hepsi Bir Klasörde + By Size or Row Boyuta veya Satıra Göre + By Format Formata Göre + By Artboard or Item Çalışma Yüzeyine veya Öğeye Göre + By Item, Then Format Öğeye Göre, Sonra Biçimlendir + Document Name Belge Adı + Artboard or Item Name Çalışma Yüzeyi veya Öğe Adı + Number (####) Sayı (####) + Date (YYYYMMDD) Tarih (YYYYAAGG) + Date (YYYY-MM-DD) Tarih (YYYY-AA-GG) + Time (hhmmss) Zaman (hhmmss) + PDF Print PDF Yazdır + Export As Farklı Dışa Aktar + Export As PNG… PNG Olarak Dışa Aktar… + Export As SVG… SVG Olarak Dışa Aktar… + Export Asset Varlığı Dışa Aktar + Export Assets Varlıkları Dışa Aktar + Export As… Farklı Dışa Aktar… + Export CSS CSS'yi dışa aktar + Export CSS… CSS'yi dışa aktar… + Export Document Belgeyi Dışa Aktar + Export DXF DXF'yi dışa aktar + Export EPS EPS'yi dışa aktar + Export for Screens Ekranlar için Dışa Aktarma + Export for Screens Settings Ekran Ayarları için Dışa Aktarma + Export for Screens… Ekranlar için Dışa Aktarma… + Export Keyboard Shortcuts… Klavye Kısayollarını Dışa Aktar… + Export Option Dışa Aktarma Seçeneği + Export PDF PDF'yi dışa aktar + Export PDF Presets PDF Hazır Ayarlarını Dışa Aktar + Export Perspective Grid Presets Perspektif Izgarası Ön Ayarlarını Dışa Aktarma + Export Print Presets Yazdırma Ön Ayarlarını Dışa Aktar + Export Selected Art Only Yalnızca Seçilen Sanatı Dışa Aktar + Export Selected CSS… Seçilen CSS'yi Dışa Aktar… + Export Selection… Seçimi Dışa Aktar… + Export Settings Ayarları Dışa Aktarma + Export the selected assets (else all of them) Seçilen varlıkları dışa aktarın (aksi takdirde tümü) + Export to: Şuraya aktar: + Export Transparency Flattener Presets Şeffaflık Düzleştirici Ön Ayarlarını Dışa Aktarma + Export {count} Selected Seçilen {count}'yi Dışa Aktar + Export: İhracat: + Exported {count} file(s) to {folder} {count} dosyası/dosyaları {folder}'ye aktarıldı + Exported {path} Dışa aktarılan {path} + Exported {what} Dışa aktarılan {what} + Exported {what} with {} note(s): {first} {what}, {} notla birlikte dışa aktarıldı: {first} + Exporting {} {} dışa aktarılıyor + Export… İhracat… + Extrude & Bevel… Ekstrüzyon ve Eğim… + Eyedropper Damlalık + Sample Color from Screen Ekrandan Örnek Renk + This system has no screen color sampler Bu sistemin ekran rengi örnekleyicisi yok + The active document changed while the screen color sampler was open Ekran rengi örnekleyici açıkken etkin belge değişti + Eyedropper Applies: Damlalık Uygulanır: + Eyedropper Options Damlalık Seçenekleri + Eyedropper Picks Up: Damlalık Alır: + Eyedropper Tool Damlalık Aracı + Eyedropper: click the art to sample the stop's colour Damlalık: durağın rengini örneklemek için resme tıklayın + Favorites Favoriler + Feather… tüy… + Feet Fit + Feet & Inches Fit ve İnç + Fewer Elements Daha az Öğesi + Fidelity: Sadakat: + Figure Space Şekil Alanı + Figure: Şekil: + File Dosya + File Dimensions Dosya Boyutları + File Format: Dosya Formatı: + File Formats Dosya Formatları + File Handling Dosya İşleme + File Info Dosya Bilgileri + File Info Dialog Dosya Bilgileri İletişim Kutusu + File Info… Dosya Bilgileri… + File Name: Dosya Adı: + File › Place… brings in an image, linked or embedded. Dosya › Yer… bağlantılı veya gömülü bir görüntüyü getirir. + Files Dosyalar + Files of a PDF standard can't be password-protected. PDF standardının dosyaları parola korumalı olamaz. + Files of this standard tag their colours with ICC profiles. Bu standardın dosyaları renklerini ICC profilleriyle etiketler. + Fill Dolgu + Fill & Stroke Doldur ve Konturla + Fill (X), double-click for the Color Picker Doldur (X), Renk Seçici için çift tıklayın + Fill and Stroke Doldur ve Konturla + Fill new strokes Yeni konturları doldur + Keep selected Seçili kal + Merge only with selection Yalnızca seçimle birleştir + Fill Color Dolgu Rengi + Fill New Type Objects With Placeholder Text Yeni Yazım Nesnelerini Yer Tutucu Metinle Doldurun + Fill Rule Doldurma Kuralı + Fill with Placeholder Text Yer Tutucu Metinle Doldur + Fill: Doldurun: + Fill: click for swatches, Shift-click for the color mixer Doldur: renk örnekleri için tıklayın, renk karıştırıcı için Shift tuşunu basılı tutarak tıklayın + Find Bul + Find and Replace… Bul ve Değiştir… + Find Font Yazı Tipi Bul + Find Font… Yazı Tipi Bul… + Find Next Sonrakini Bul + Find Objects Nesneleri Bul + First Page İlk Sayfa + First-line Left Indent Birinci Satırda Sol Girinti + Fisheye… Balıkgözü… + Fish… Balık… + Fit All Tümünü Sığdır + Fit All in Window Tümünü Pencereye Sığdır + Fit Artboard in Window Çalışma Yüzeyini Pencereye Sığdır + Fit dashes to corners and ends Çizgileri köşelere ve uçlara sığdır + Fit Headline Başlığı Sığdır + Decrease Font Size Yazı Tipi Boyutunu Azalt + Decrease Font Size by Five Steps Yazı Tipi Boyutunu Beş Adım Azaltın + Increase Font Size Yazı Tipi Boyutunu Artır + Increase Font Size by Five Steps Yazı Tipi Boyutunu Beş Adım Artırın + Reset Tracking and Kerning İzlemeyi ve Karakter Aralığını Sıfırla + Reset Horizontal Scale Yatay Ölçeği Sıfırla + Spacing Aralık + Step Type Adım Türü + Fit in View Görünüme Sığdır + Fit in Window Pencereye Sığdır + Fit on Screen Ekrana Sığdır + Fit to Artwork Bounds Sanat Eseri Sınırlarına Uygun + Fit to Selected Art Seçilen Sanata Sığdır + Flag… Bayrak… + Flare parlama + Flare Tool Mercek Parlaması Aracı + Flare Tool Options Genişletme Aracı Seçenekleri + Halo Hale + Rays Işınlar + Rings Yüzükler + Diameter: Çap: + Brightness: Parlaklık: + Growth: Büyüme: + Fuzziness: Bulanıklık: + Number: Sayı: + Longest: En uzun: + Path: Yol: + Largest: En büyük: + Direction: Yön: + Symbolism Tools Options Sembolizm Araçları Seçenekleri + Symbol Set Density: Sembol Seti Yoğunluğu: + Flat Image Düz Resim + Flat Logo Düz Logo + Flatness: Düzlük: + Flatten Artwork Resmi Düzleştir + Flatten Transparency Şeffaflığı Düzleştir + Flatten Transparency… Şeffaflığı Düzleştir… + Flattener preset: Düzleştirici ön ayarı: + Flattener presets Düzleştirici ön ayarları + Flattener Preview Düzleştirici Önizlemesi + Flip Across Çapraz Çevir + Flip Along Boyunca Çevir + Flip Along Horizontal Axis Yatay Eksen Boyunca Çevir + Flip Along Vertical Axis Dikey Eksen Boyunca Çevir + Flip Horizontal Yatay Çevir + Flip Row Order Satır Sırasını Çevir + Flip Vertical Dikey Çevir + Float in Window Pencerede Yüzer Yap + Focal Fill Odak Dolgusu + Focal Stroke Odak Konturu + Folder Klasör + Folder Name: Klasör Adı: + Font Yazı tipi + Font Family Yazı Tipi Ailesi + Font Family & Style Yazı Tipi Ailesi ve Stili + Font Family, Style & Size Yazı Tipi Ailesi, Stili ve Boyutu + Font List Yazı Tipi Listesi + Font Preview Size Yazı Tipi Önizleme Boyutu + Font Size Yazı Tipi Boyutu + Font: Yazı tipi: + Fonts Yazı tipleri + Fonts in Document Belgedeki Yazı Tipleri + Fonts in Document: {count} Belgedeki Yazı Tipleri: {count} + Fonts whose licence doesn't allow embedding are not copied. Lisansı yerleştirmeye izin vermeyen yazı tipleri kopyalanmaz. + Forced Line Break Zorunlu Satır Sonu + Format Biçim + Format Options Biçim Seçenekleri + Format Settings Biçim Ayarları + Format: Biçim: + Formats: Formatlar: + Fractional Widths Kesirli Genişlikler + Fractions Kesirler + Free Ücretsiz + Free Distort Serbest Deformasyon + Free Distort… Serbest Deformasyon… + Free Transform Tool Serbest Dönüştürme Aracı + Freeform Gradient Serbest Biçimli Degrade + French Fransızca + Frequencies and angles are the output device's to apply. Frekanslar ve açılar çıkış cihazının uygulayacağı değerlerdir. + Frequency Frekans + Full Document Tam Belge + Full Screen Mode Tam Ekran Modu + Full Screen Mode with Menu Bar Menü Çubuğuyla Tam Ekran Modu + Gamma Gama + Gamut Check Gamut Kontrolü + Gamut Warning Gamut Uyarısı + gap boşluk + Gap Options… Boşluk Seçenekleri… + Gaussian Blur… Gauss Bulanıklığı… + General Genel + General › Placement › X Genel › Yerleştirme › X + General › Thumbnails Genel › Küçük Resimler + Generate CSS CSS oluştur + Generate CSS: the whole document's CSS while nothing is selected CSS oluştur: hiçbir şey seçili değilken tüm belgenin CSS'si + German Almanca + Get Preferences Tercihleri Al + Get Text Range Metin Aralığını Al + Global Küresel + Global Brush Dimensions Küresel Fırça Boyutları + Global Process Color Global Proses Rengi + Global Process Color, CMYK Küresel Proses Rengi, CMYK + glyph {id} glif {id} + Glyphs Glifler + Go to Artboard Artboard'a git + Go To Link Bağlantıya Git + GPL palettes keep solid colours only, as RGB. GPL paletleri yalnızca düz renkleri RGB olarak tutar. + GPU Performance GPU Performansı + Gradient Degrade + Gradient (.) Gradyan (.) + Gradient across stroke Kontur boyunca gradyan + Gradient along stroke Kontur boyunca gradyan + Gradient and Mesh Resolution: Gradyan ve Mesh Çözünürlüğü: + Gradient Fill: click to apply, drag onto art Degrade Dolgu: uygulamak için tıklayın, resmin üzerine sürükleyin + Gradient Finishes Gradyan Kaplamalar + Gradient Mesh Degrade Örgü + Gradient swatches Degrade renk örnekleri + Gradient Tool Degrade Aracı + Gradient Vector Gradyan Vektör + Gradient within stroke Kontur içindeki gradyan + Gradients Degradeler + Graph Grafik + Graph Data Grafik Verileri + Graph Type Grafik Türü + Graph Design Grafik Tasarımı + Graph Marker Grafik İşaretleyici + New Design Yeni Tasarım + Delete Design Tasarımı Sil + Paste Design Tasarımı Yapıştır + Select Unused Kullanılmayan'ı seçin + Import Data… Verileri İçe Aktar… + Transpose Transpoze + Switch x/y x/y'yi değiştir + Number of Decimals: Ondalık Sayı Sayısı: + Column Width: Sütun Genişliği: + No Legend Efsane Yok + Standard Legend Standart Açıklama + Legends in Wedges Takozlardaki Efsaneler + Ratio Oran + Even Hatta + Stacked Yığılmış + Graphic Style Grafik Stili + Graphic Style Libraries Grafik Stili Kitaplıkları + Graphic Style Libraries Menu Grafik Stili Kitaplıkları Menüsü + Graphic Style Library Grafik Stili Kitaplığı + Graphic Style Options Grafik Stili Seçenekleri + Graphic Style Options… Grafik Stili Seçenekleri… + Symbol Options Sembol Seçenekleri + Symbol Options… Sembol Seçenekleri… + Graphic Styles Grafik Stilleri + Graphic Styles Options Grafik Stilleri Seçenekleri + Graphics Grafik + Graphics Processor Grafik İşlemcisi + Graphics: {adapter} Grafik: {adapter} + Gravity Yerçekimi + Grays Griler + Grays and Neutrals Griler ve Nötrler + Grayscale Gri tonlamalı + Grayscale images Gri tonlamalı görüntüler + Greek & Cyrillic Yunanca ve Kiril + Green Yeşil + Grid Izgara + Grid Color & Opacity Izgara Rengi ve Opaklığı + Grid Colors: Izgara Renkleri: + Grid Size: Izgara Boyutu: + Gridline every Kılavuz çizgisi her + Gridline every: Kılavuz çizgisi her: + Grids In Back Arkadaki Izgaralar + Group Grup + Group Selection Tool Grup Seçim Aracı + Guides Kılavuzlar + Guides & Grid Kılavuzlar ve Izgara + H Spacing: H Aralığı: + H: H: + Hair Space Saç Alanı + Hand Tool El Aracı + Hand-Drawn elle çizilmiş + Handles Kollar + Hard Light Sert Işık + Harmony Rules: Uyum Kuralları: + Harmony Sets Armoni Setleri + Height Yükseklik + Height: Yükseklik: + Help Yardım + Help › Search Commands… Yardım › Arama Komutları… + Hex by Column Sütunlara göre Hex + Hex by Row Satır bazında Hex + Hide Gizle + Hide Artboards Çalışma Yüzeylerini Gizle + Hide Bounding Box Sınırlayıcı Kutuyu Gizle + Hide Code Kodu Gizle + Hide Bar Çubuğu Gizle + More Options Daha Fazla Seçenek + Show Properties Panel Özellikler Panelini Göster + Hide Corner Widget Köşe Widget'ını Gizle + Hide Corner Widget for angles greater than Şu değerden daha büyük açılar için Köşe Widget'ını gizle: + Hide Edges Kenarları Gizle + Hide Gradient Annotator Degrade Açıklayıcıyı Gizle + Hide Grid Izgarayı Gizle + Hide Guides Kılavuzları Gizle + Hide Hidden Characters Gizli Karakterleri Gizle + Hide Note Notu Gizle + Hide Options Seçenekleri Gizle + Hide Others Diğerlerini Gizle + Hide Print Tiling Baskı Döşemeyi Gizle + Hide Rulers Cetvelleri Gizle + Hide Slices Dilimleri Gizle + Hide Template Şablonu Gizle + Hide Text Threads Metin Konularını Gizle + Hide Thumbnail Küçük Resmi Gizle + Hide Thumbnails Küçük Resimleri Gizle + Hide Transparency Grid Şeffaflık Izgarasını Gizle + High Yüksek + High (300 ppi) Yüksek (300 ppi) + High Performance (discrete) Yüksek Performans (ayrık) + Highlight Alternate Glyphs Alternatif Glifleri Vurgula + Highlight anchors on mouse over Fareyle üzerine gelindiğinde bağlantı noktalarını vurgulayın + Highlight Rows Satırları Vurgula + Highlight Variable Değişkeni Vurgula + Highlight Substituted Fonts Değiştirilen Yazı Tiplerini Vurgula + Highlight Substituted Glyphs Değiştirilen Glifleri Vurgula + History Geçmiş + History Options… Geçmiş Seçenekleri… + History States Geçmiş Durumları + Hollow içi boş + Home Ana Sayfa + Horizon Height: Ufuk Yüksekliği: + Horizontal Yatay + Horizontal % Yatay % + Horizontal Align Center Yatay Hizalama Merkezi + Horizontal Align Left Yatay Sola Hizala + Horizontal Align Right Yatay Sağa Hizala + Horizontal Distribute Center Yatay Dağıtım Merkezi + Horizontal Distribute Left Yatay Sola Dağıt + Horizontal Distribute Right Yatay Sağa Dağıt + Horizontal Distribute Space Yatay Dağıtım Alanı + Horizontal Grid: Yatay Izgara: + Horizontal Plane Yatay Düzlem + Horizontal Scale % Yatay Ölçek %'si + Horizontal: Yatay: + How colours outside the press's gamut are separated. Baskı makinesinin gamının dışındaki renklerin nasıl ayrıldığı. + Hue renk tonu + Hue/Saturation… Ton/Doygunluk… + Hyphenate Tireleme + Hyphenation Tireleme + Hyphenation… Tireleme… + Words Longer Than: Şundan Daha Uzun Kelimeler: + After First: İlk Sonra: + Before Last: Sondan Önce: + Hyphen Limit: Kısa Çizgi Sınırı: + Hyphenation Zone: Tireleme Bölgesi: + letters harfler + hyphens kısa çizgiler + Hyphenate Capitalized Words Büyük Harfli Kelimeleri Tirele + ICC Profile ICC Profili + Identify Objects By Nesneleri Şuna Göre Tanımla: + Ignore Yoksay + Ignore Artboards (all the art as one page) Çalışma Yüzeylerini Yoksay (tüm görseller tek sayfa olarak) + Auto Grouping Otomatik Gruplama + Enhanced Geliştirilmiş + Ignore Color Rengi Yoksay + Ignore White Beyazı Yoksay + Palette: Palet: + Limited Sınırlı + Full Tone Tam Ton + Document Library Belge Kitaplığı + Library: Kütüphane: + Image Resim + Image Info Resim Bilgisi + Image Map: Görüntü Haritası: + Image Size Resim Boyutu + Image Trace Görüntü İzleme + Image Tracing Görüntü İzleme + Tracing Presets İzleme Ön Ayarları + Image Trace Presets Görüntü İzleme Ön Ayarları + Image: Resim: + Images: Görseller: + Import Keyboard Shortcuts… Klavye Kısayollarını İçe Aktar… + Import PDF PDF'yi içe aktar + Import PDF Presets PDF Hazır Ayarlarını İçe Aktar + Import Perspective Grid Presets Perspektif Izgarası Ön Ayarlarını İçe Aktar + Import Print Presets Yazdırma Ön Ayarlarını İçe Aktar + Import Transparency Flattener Presets Saydamlık Düzleştirici Ön Ayarlarını İçe Aktar + Imported {what}: {} İçe aktarılan {what}: {} + Import… İthalat… + In Tangent Handles Teğet Tutamaçlarda + In the selected objects Seçilen nesnelerde + Inches İnç + Include Blacks with CMY: CMY ile Siyahları Dahil Et: + Include Bleed Taşmayı Dahil Et + Include Cmy Blacks Cmy Black'leri dahil et + Include CMYK PostScript in RGB Files CMYK PostScript'i RGB Dosyalarına Ekle + Include Document Thumbnails Belge Küçük Resimlerini Ekle + Include Hidden Layers Gizli Katmanları Ekle + Include Linked Files Bağlantılı Dosyaları Ekle + Include Metadata Meta Verileri Ekle + Include non-printing layers Yazdırılmayan katmanları dahil et + Include SVG Code SVG Kodunu Ekle + Include Swatches for Tints Renk Tonları için Renk Örneklerini Ekle + Inflate… Şişir… + Info Bilgi + Ink Mürekkep + Inner Glow… İç Işıma… + Input Black Siyah Giriş + Input White Beyaz Giriş + Insert Break Character Ara Karakteri Ekle + Insert Character Karakter Ekle + Insert Special Character Özel Karakter Ekle + Insert Whitespace Character Boşluk Karakteri Ekle + Inspect Document Belgeyi İncele + Inspect Object Nesneyi İncele + Install Plug-in Eklentiyi Yükle + Install Plug-in… Eklentiyi Yükle… + Installed plug-in {} Yüklü eklenti {} + Intensity: Yoğunluk: + Intent: Niyet: + Interlaced Taramalı + Internal CSS Dahili CSS + Internet Standard RGB (sRGB) İnternet Standardı RGB (sRGB) + Intersect Kesişme + Intertwine iç içe + Arrange Intertwine Area İç İçe Alanı Düzenleme + Inverse Ters + Invert Ters çevir + Invert Colors Renkleri Ters Çevir + Invert Mask Maskeyi Ters Çevir + Isolate İzole et + Isolate Blending İzole Harmanlama + Isolate Group İzolasyon Grubu + Italian İtalyan + Japanese Japonca + Join Katıl + Join Our Discord Discord'umuza Katılın + Join our Discord Discord'umuza katılın + Join the ArtCraft community on Discord (discord.gg/artcraft) Discord'daki ArtCraft topluluğuna katılın (discord.gg/artcraft) + Join the lines of each paragraph Her paragrafın satırlarını birleştirin + Join Tool Birleştirme Aracı + Justification… İki Yana Yaslama… + Justify all lines Tüm satırları iki yana yasla + Justify with last line aligned center Son satıra hizalanmış merkeze yasla + Justify with last line aligned left Son satırı sola hizalanmış şekilde iki yana yasla + Justify with last line aligned right Son satırı sağa hizalayarak yasla + Keep a link to an image file instead of only embedding it Yalnızca gömmek yerine bir görüntü dosyasının bağlantısını koruyun + Keep both sides the same width Her iki tarafı da aynı genişlikte tutun + Keep Formatting Biçimlendirmeye Devam Et + Keep Original Orijinali Koru + Keep Plain Text Düz Metni Koru + Keep the pasted color as a new swatch with a numbered name. Yapıştırılan rengi numaralı bir adla yeni bir renk örneği olarak koruyun. + Keep this row's colors (exclude) Bu satırın renklerini koru (hariç tut) + Keep: Sakla: + Kerning (0 = Auto) Karakter Aralığı (0 = Otomatik) + Keyboard Increment Klavye Artışı + Keyboard Shortcut Conflicts Klavye Kısayolu Çakışmaları + Keyboard Shortcut Set Klavye Kısayol Seti + Keyboard Shortcuts… Klavye Kısayolları… + Import Shortcut Set Kısayol Kümesini İçe Aktar + Import Shortcut Set… Kısayol Kümesini İçe Aktar… + Each entry of the file is matched to a VectorCraft tool, command or panel. Check the matches and answer what is left. Dosyanın her girişi bir VectorCraft aracı, komutu veya paneliyle eşleştirilir. Eşleşmeleri kontrol edin ve kalanları cevaplayın. + Keys Anahtarlar + The file writes keys and modifiers as codes. Check the proposed meanings and answer the codes that are not known yet. Dosya, anahtarları ve değiştiricileri kod olarak yazar. Önerilen anlamları kontrol ederek henüz bilinmeyen kodları cevaplayınız. + Click, then press the key this code stands for (Esc cancels) Tıklayın ve ardından bu kodun temsil ettiği tuşa basın (Esc iptal eder) + Press a key… Bir tuşa basın… + from your earlier imports önceki ithalatlarınızdan + from the format's public description formatın genel açıklamasından + not known yet henüz bilinmiyor + Shortcuts Kısayollar + In the File Dosyada + In VectorCraft VectorCraft'ta + Needs Attention Only Yalnızca Dikkat Gerekir + Ready Hazır + Needs a choice Bir seçime ihtiyacı var + Needs a key Bir anahtara ihtiyacı var + No equivalent Eşdeğeri yok + Tools take a single key (optionally with Shift) Araçlar tek bir tuş alır (isteğe bağlı olarak Shift ile) + A later row takes this shortcut Daha sonraki bir satır bu kısayolu alır + Same item as a later row Daha sonraki bir satırla aynı öğe + Start from VectorCraft Defaults VectorCraft Varsayılanlarından Başlayın + Add to the Current Shortcuts Geçerli Kısayollara Ekle + Remember My Choices Seçimlerimi Hatırla + {ready} of {total} ready {total}'nin {ready}'si hazır + The file is too large to read in full, so only its first part is listed. Dosya tam olarak okunamayacak kadar büyük olduğundan yalnızca ilk kısmı listelenmiştir. + Report copied Rapor kopyalandı + Line {line} {line} Hattı + Line {line}: {name}: {status} Hat {line}: {name}: {status} + Read Shortcut Set File Kısayol Seti Dosyasını Oku + Import Matches Eşleşmeleri İçe Aktar + Remember Import Matches İçe Aktarılan Eşleşmeleri Hatırla + Forget Import Matches İçe Aktarma Eşleşmelerini Unutun +@plural agrees with {n} default shortcut|agrees with {n} default shortcuts {n} varsayılan kısayolla eşleşiyor +@plural {n} part of the file wasn't read|{n} parts of the file weren't read dosyanın {n} bölümü okunamadı + Keywords: Anahtar Kelimeler: + Knife Bıçak + Knockout Group Nakavt Grubu + Lab Laboratuvar + Lab Spot Colors: Laboratuvar Spot Renkleri: + Lab Values Laboratuvar Değerleri + Landscape Manzara + Interface Language Arayüz Dili + Language Dil + Language Options Dil Seçenekleri + Language: Dil: + Large Büyük + Large List View Büyük Liste Görünümü + Large Tabs Büyük Sekmeler + Large Thumbnail View Büyük Küçük Resim Görünümü + Large Thumbnails Büyük Küçük Resimler + Lasso Tool Kement Aracı + Last Effect: {name} Son Etki: {name} + Last Effect: {} Son Etki: {} + Last Effect… Son Etki… + Last Page Son Sayfa + Latin Latince + Thai Tay dili + Latin Extended Latince Genişletilmiş + Latin-1 Supplement Latin-1 Eki + Layer Katman + Layer Names Katman Adları + Layer Options Katman Seçenekleri + Layer Options… Katman Seçenekleri… + Layers Katmanlar + Layers Panel Options Katmanlar Paneli Seçenekleri + Layout: Düzen: + Leader: Lider: + Leading Lider + Left Sol + Left Grid: Sol Izgara: + Left in Front Sol Önde + Left Indent Sol Girinti + Left Plane Sol Düzlem + Left-Justified Tab Sola Yaslanmış Sekme + Left-to-Right Paragraph Direction Soldan Sağa Paragraf Yönü + Left: Sol: + Legacy Macintosh RGB (Gamma 1.8) Eski Macintosh RGB (Gama 1.8) + Legacy vector clipboard Eski vektör panosu + Legacy (version 7) Eski (sürüm 7) + Transparent Images: Şeffaf Görseller: + Flatten Düzleştir + Omit Atla + Legacy .ai Options Eski .ai Seçenekleri + A legacy .ai file holds one artboard: each artboard you check is saved as a separate file. Eski bir .ai dosyasında bir çalışma yüzeyi bulunur: kontrol ettiğiniz her çalışma yüzeyi ayrı bir dosya olarak kaydedilir. + {count} of {total} artboards {total} çalışma yüzeylerinin {count}'si + Check an artboard to save. Kaydedilecek çalışma yüzeyini kontrol edin. + Hidden Objects: Gizli Nesneler: + Hidden Layer Gizli Katman + Make Visible Görünür Yap + Text: Metin: + Editable Düzenlenebilir + PDF-compatible PDF uyumlu + Legacy vector clipboard (no transparency) Eski vektör panosu (saydamlık yok) + Less Daha az + Letter Mektup + Levels… Seviyeler… + Libraries Kütüphaneler + Ligatures are off while the text is tracked. Metin izlenirken bitişik harfler kapalıdır. + Light Işık + Light Blue Açık Mavi + Lighten hafifletmek + Lightness hafiflik + Limit Color Guide to Library Renk Kılavuzunu Kitaplıkla Sınırlandır + Limit colors to swatch library Renkleri renk örneği kitaplığıyla sınırlandırın + Limit colors to swatch library: {name} Renkleri renk örneği kitaplığıyla sınırlayın: {name} + Limit to Library: Kütüphaneyle Sınırlama: + Limit: Sınır: + Line Hat + Line Art and Text Resolution: Çizgi Sanatı ve Metin Çözünürlüğü: + Line Breaks Satır Sonları + Line Color Çizgi Rengi + Line Cut Çizgi Kesim + Line Cut Tool Çizgi Kesme Aracı + Line Endings: Satır Sonları: + Line Graph Tool Çizgi Grafik Aracı + Line Segment Çizgi Segmenti + Line Segment Tool Çizgi Parçası Aracı + Line Segment Tool Options Çizgi Segmenti Aracı Seçenekleri + Line-end Punctuation Half Width Satır Sonu Noktalama İşaretleri Yarım Genişlik + Linear Gradient Doğrusal Degrade + Lines çizgiler + Lines: clicks add points joined by a line Çizgiler: tıklamalar bir çizgiyle birleştirilen noktaları ekler + Link Bağlantı + Link harmony colors Bağlantı uyumu renkleri + Link Info Bağlantı Bilgisi + Link Opacity Mask Bağlantı Opaklığı Maskesi + Link start and end arrowhead scales Bağlantı başlangıç ve bitiş ok ucu ölçekleri + Link the mask Maskeyi bağlayın + Linked Bağlantılı + Linked File Bağlantılı Dosya + Linked File Not Found Bağlantılı Dosya Bulunamadı + Links Bağlantılar + Liquify Sıvılaştır + List Graphic Styles Grafik Stillerini Listeleme + List Keyboard Shortcuts Klavye Kısayollarını Listeleme + List Patterns Desenleri Listeleme + List Plug-ins Eklentileri Listele + List Preferences Tercihleri Listele + List Slices Dilimleri Listeleme + List View Liste Görünümü + List Workspaces Çalışma Alanlarını Listeleme + Live Paint Canlı Boyama + Live Paint Bucket Canlı Boyama Kovası + Live Paint Bucket (Stroke) Canlı Boya Kovası (Strok) + Live Paint Info Canlı Boyama Bilgisi + Live Paint Selection Tool Canlı Boyama Seçim Aracı + Live Shape Properties Canlı Şekil Özellikleri + Load Color Profile… Renk Profilini Yükle… + Load Image into Clipboard Resmi Panoya Yükle + Load Metafile into Clipboard Meta Dosyasını Panoya Yükle + Load PDF into Clipboard PDF'yi Panoya Yükle + Load Place Cursor Yer İmlecini Yükle + Load Profile… Profili Yükle… + Load SVG into Clipboard SVG'yi Panoya yükleyin + Load Text into Clipboard Metni Panoya Yükle + Local Libraries Yerel Kütüphaneler + Locate Object Nesneyi Bul + Location Konum + Location: Konum: + Lock Kilitle + Lock (⌘2) Kilitle (⌘2) + Lock Grid Izgarayı Kilitle + Lock Guides Kilit Kılavuzları + Lock Others Diğerlerini Kilitle + Lock Slices Dilimleri Kilitle + Lock Station Point Kilit İstasyon Noktası + Lossless (lossy WebP isn't available yet) Kayıpsız (kayıplı WebP henüz mevcut değil) + Lossy: Kayıplı: + Low Düşük + lowercase küçük harf + Luminosity parlaklık + LZW Compression LZW Sıkıştırma + Mac Mac + Magenta Macenta + Magic Wand Sihirli Değnek + Magic Wand Options Sihirli Değnek Seçenekleri + Magic Wand Settings Sihirli Değnek Ayarları + Magic Wand Tool Sihirli Değnek Aracı + Maintain Envelope Shape Zarf Şeklini Koruyun + Make Yap + Make a theme on Create and save it. Oluştur'da bir tema oluşturun ve kaydedin. + Make all bleed settings the same Tüm taşma payı ayarlarını aynı yapın + Make and Expand Yap ve Genişlet + Make Clipping Mask Kırpma Maskesi Yap + Make Compound Shape Bileşik Şekil Yap + Make Envelope Zarf Yap + Make Guides Kılavuzlar Oluşturun + Make Mask Maske Yap + Make Opacity Mask Opaklık Maskesi Yap + Make Pixel Perfect Pixel'i Mükemmelleştirin + Make the bleed values differ Taşma değerlerinin farklı olmasını sağlayın + Make with Mesh… Mesh ile Yap… + Make with Top Object Üst Nesneyle Yap + Make with Warp… Warp ile yap… + Make/Release Clipping Mask Kırpma Maskesini Yap/Serbest Bırak + Manage Workspaces Çalışma Alanlarını Yönet + Manage Workspaces… Çalışma Alanlarını Yönet… + Manually Manuel olarak + Mark as trapped Sıkışmış olarak işaretle + Mark Older Files as [Converted] When Opened Eski Dosyaları Açıldığında [Dönüştürülmüş] Olarak İşaretle + Marker… işaretleyici… + Marks İşaretler + Marks and Bleed İşaretler ve Taşma Payı + Marks and Bleeds İşaretler ve Kanamalar + Match User Interface Brightness Kullanıcı Arayüzü Parlaklığını Eşleştir + Light Gray Açık Gri + Medium Gray Orta Gri + Dark Gray Koyu Gri + Materials… Malzemeler… + Matte Mat + Matte: Mat: + Maximize Büyüt + Maximum Maksimum + Maximum Editability Maksimum Düzenlenebilirlik + Measure Tool Ölçüm Aracı + Measurement Labels Ölçü Etiketleri + Media Medya + Medium Orta + Medium (150 ppi) Orta (150 ppi) + Medium Dark Orta Koyu + Medium Light Orta Işık + Medium Thumbnail View Orta Küçük Resim Görünümü + Medium Thumbnails Orta Boy Küçük Resimler + Menu Dialog Menü İletişim Kutusu + Merge Birleştir + Merge colors into one row Renkleri tek satırda birleştirme + Merge Graphic Styles Grafik Stillerini Birleştir + Merge Graphic Styles… Grafik Stillerini Birleştir… + Merge Layers Katmanları Birleştir + Merge Selected Seçilenleri Birleştir + Merge Swatches Renk Örneklerini Birleştir + Mesh Tool Kafes Aracı + Message: Mesaj: + Metadata: Meta veriler: + Metallic Gradients Metalik Degradeler + Meters Metre + Method: Yöntem: + Millimeters Milimetre + Minify Küçült + Minimal Asgari + Minimize Küçült + Minus Back Eksi Geri + Minus Front Eksi Ön + Mirror Ayna + Mirror & Cut Aynalama ve Kesim + Mirror & Cut Tool Ayna ve Kesme Aracı + Missing Eksik + Missing: {path} Eksik: {path} + Miter Join Gönye Birleştirme + Miter Limit Gönye Sınırı + Miter Limit: Gönye Sınırı: + Mixed Appearances Karışık Görünümler + Mixed Objects Karışık Nesneler + Mode: Mod: + Model Modeli + Modified Değiştirildi + Modified since it was read: {path} Okunduktan sonra değiştirildi: {path} + Modified: Değiştirildi: + Modify Değiştir + Mojikumi Mojikumi + Mojikumi Set Mojikumi Seti + Kinsoku Set Kinsoku Seti + Hard Sert + Soft Yumuşak + Monitor RGB RGB'yi izleyin + Mono Mono + Monochrome images Tek renkli görüntüler + Monospaced Tek aralıklı + More Daha Fazla + More Pathfinder options Daha fazla Yol Bulucu seçeneği + More Align options Daha fazla Hizalama seçeneği + More Paragraph options Daha fazla Paragraf seçeneği + More Settings Diğer Ayarlar + Move Taşı + Move All Objects Tüm Nesneleri Taşı + Move Anchors Çapaları Taşı + Move Appearance Görünümü Taşı + Move Artboard Çalışma Yüzeyini Taşı + Move Artboard Up/Down Çalışma Yüzeyini Yukarı/Aşağı Taşı + Move Direction Handle Yön Tutamaçını Taşıma + Move Down Aşağı Taşı + Move Effect Hareket Efekti + Move Envelope Mesh Point Zarf Örgü Noktasını Taşı + Move Graphic Style Grafik Stilini Taşı + Move Guide Taşıma Kılavuzu + Move in Perspective Perspektifte Hareket Et + Move Locked and Hidden Artwork with Artboard Çalışma Yüzeyi ile Kilitli ve Gizli Resimleri Taşıma + Move Mesh Point Mesh Noktasını Taşı + Move Plane Düzlemi Taşı + Move Plane to Match Object Nesneyi Eşleştirecek Düzlemi Taşı + Move Rows Satırları Taşı + Move Slices Dilimleri Taşı + Move Spine Point Omurga Noktasını Taşı + Reshape Spine Segment Omurga Segmentini Yeniden Şekillendirin + Move Swatch Renk Örneğini Taşı + Move Up Yukarı Taşı + Move… Taşı… + Multiply Çarp + My Themes Temalarım + N pt per N pt per + N slices …, evenly spaced N dilim…, eşit aralıklı + Name İsim + Name 40% İsim %40 + Name* @ 66.67 % (RGB/Preview) Ad* @ %66,67 (RGB/Önizleme) + Name* @ 66.67% (RGB/Preview) Ad* @ %66,67 (RGB/Önizleme) + Name: İsim: + Navigate Gezin + Navigator Gezgin + Needs the desktop app Masaüstü uygulaması gerekiyor + Neutral Gradients Nötr Degradeler + New Yeni + New Art Appearance Yeni Sanat Görünümü + New Art Brush from Selection Seçimden Yeni Resim Fırçası + New Art Has Basic Appearance Yeni Sanat Temel Görünüme Sahiptir + New Artboard Yeni Çalışma Yüzeyi + New Bristle Brush Yeni Kıl Fırça + Calligraphic Brush Options Kaligrafi Fırçası Seçenekleri + Bristle Brush Options Kıl Fırça Seçenekleri + Scatter Brush Options Saçılma Fırçası Seçenekleri + Art Brush Options Resim Fırçası Seçenekleri + Pattern Brush Options Desen Fırçası Seçenekleri + Scatter: Dağılım: + Rotation: Rotasyon: + Rotation relative to: Şuna göre rotasyon: + Brush Scale Options Fırça Ölçeği Seçenekleri + Scale Proportionately Orantılı Olarak Ölçeklendirin + Stretch to Fit Stroke Length Kontur Uzunluğuna Sığacak Şekilde Esnetin + Stretch Between Guides Kılavuzlar Arasını Uzat + Start: Başlangıç: + End: Bitiş: + Left to Right Soldan Sağa + Right to Left Sağdan Sola + Top to Bottom Yukarıdan Aşağıya + Bottom to Top Aşağıdan Yukarıya + Flip: Çevir: + Outer Corner Tile Dış Köşe Döşemesi + Side Tile Yan Kiremit + Inner Corner Tile İç Köşe Döşemesi + Start Tile Döşemeyi Başlat + End Tile Son Döşeme + Fit Uygun + Stretch to fit Sığdırmak için uzatın + Add space to fit Sığdırmak için alan ekleyin + Approximate path Yaklaşık yol + Colorization Renklendirme + Tints Renk tonları + Tints and Shades Renk Tonları ve Gölgeler + Hue Shift Ton Değiştirme + Key Color: Anahtar Rengi: + Roundness: Yuvarlaklık: + Fixed Sabit + Pressure Basınç + Shape: Şekil: + Bristle Length: Kıl Uzunluğu: + Bristle Density: Kıl Yoğunluğu: + Bristle Thickness: Kıl Kalınlığı: + Paint Opacity: Boya Opaklığı: + Stiffness: Sertlik: + Round Point Yuvarlak Nokta + Flat Point Düz Nokta + Round Blunt Yuvarlak Küt + Flat Blunt Düz Künt + Round Curve Yuvarlak Eğri + Flat Curve Düz Eğri + Round Angle Yuvarlak Açı + Flat Angle Düz Açı + Round Fan Yuvarlak Fan + Flat Fan Düz Fan + New Brush… Yeni Fırça… + New Calligraphic Brush Yeni Kaligrafi Fırçası + New Character Style Yeni Karakter Stili + New Color Group Yeni Renk Grubu + New Color Group… Yeni Renk Grubu… + New Document Presets Yeni Belge Ön Ayarları + New file Yeni dosya + New from Template Şablondan yeni + New from Template… Şablondan yeni… + New Graphic Style Yeni Grafik Stili + New Graphic Style (Alt-click to name it) Yeni Grafik Stili (Adını vermek için Alt tuşuna basarak tıklayın) + New Graphic Style… Yeni Grafik Stili… + New Layer Options… Yeni Katman Seçenekleri… + New Layer… Yeni Katman… + New Opacity Masks Are Clipping Yeni Opaklık Maskeleri Kırpılıyor + New Opacity Masks Are Inverted Yeni Opaklık Maskeleri Ters Çevrildi + New Paragraph Style Yeni Paragraf Stili + New Pattern Brush from Selection Seçimden Yeni Desen Fırçası + New PDF Preset Yeni PDF Hazır Ayarı + New Print Preset Yeni Yazdırma Ön Ayarı + New Scatter Brush from Selection Seçimden Yeni Saçma Fırçası + New Sublayer… Yeni Alt Katman… + New Swatch Yeni Renk Örneği + New Swatch… Yeni Renk Örneği… + New Symbol Yeni Sembol + New Symbol… Yeni Sembol… + New theme from the current color Mevcut renkten yeni tema + New View Yeni Görünüm + New View… Yeni Görünüm… + New Window Yeni Pencere + New Workspace Yeni Çalışma Alanı + New Workspace… Yeni Çalışma Alanı… + New {kind} Style… Yeni {kind} Stili… + New… Yeni… + Next Sonraki + Next Library Sonraki Kütüphane + Next Object Above Yukarıdaki Sonraki Nesne + Next Object Below Sonraki Nesne Aşağıda + Next Page Sonraki Sayfa + Next page Sonraki sayfa + No actions. Press ● to record. Eylem yok. Kaydetmek için ● tuşuna basın. + No assets Öğe yok + No assets yet. Collect art with Object › Collect for Export, or drag it into the Asset Export panel. Henüz öğe yok. Nesne › Dışa Aktarma için Topla ile sanatı toplayın veya Varlık Dışa Aktarma paneline sürükleyin. + No Break Mola Yok + No brushes Fırça yok + No colors to recolor (preserved colors are left out). Yeniden renklendirilecek renk yok (korunan renkler dışarıda bırakılır). + No CSS CSS yok + No document Belge yok + No Document Belge Yok + No document open Hiçbir belge açık değil + No document open. Hiçbir belge açık değil. + No filter plug-ins installed Filtre eklentisi yüklü değil + No fonts are available. Hiçbir yazı tipi mevcut değil. + No gradient swatches Degrade renk örneği yok + No graphic styles Grafik stili yok + No images Resim yok + No matches. Eşleşme yok. + No matching fonts Eşleşen yazı tipi yok + No options Seçenek yok + No printer settings to open here Burada açılacak yazıcı ayarı yok + No saved themes Kaydedilmiş tema yok + No saved views (View → New View…) Kaydedilmiş görünüm yok (Görünüm → Yeni Görünüm…) + No Selection Seçim Yok + No selection Seçim yok + No symbols in this document Bu belgede sembol yok + No text selected Metin seçilmedi + No Thumbnails Küçük Resim Yok + Noise Gürültü + Create: Oluştur: + Fills Dolgular + Strokes Konturlar + Nonbreaking Hyphen Bölünmeyen Kısa Çizgi + Nonbreaking Space Bölünmeyen Alan + None Yok + None (/) Yok (/) + None (keep transparency) Yok (şeffaflığı koruyun) + None. Yok. + Normal Normal + Normal Screen Mode Normal Ekran Modu + Note: Not: + Nothing matches the Show filter. Hiçbir şey Göster filtresiyle eşleşmiyor. + Nothing to print Yazdırılacak bir şey yok + Nudge Dürt + Nudge in Perspective Perspektifte İtme + Number of Artboards: Çalışma Yüzeyi Sayısı: + Number of Colors: Renk Sayısı: + Number of Recent Files to Display Görüntülenecek Son Dosya Sayısı + Number of Recent Fonts Son Yazı Tiplerinin Sayısı + Numbers Without Units Are Points Birimi Olmayan Sayılar Noktadır + Object Nesne + Object Highlighting Nesne Vurgulama + Object IDs: Nesne kimlikleri: + Object Name Nesne Adı + Object Properties Nesne Özellikleri + Object Selection by Path Only Yalnızca Yola Göre Nesne Seçimi + Objects Nesneler + Objects using them keep their look but are no longer linked. Bunları kullanan nesneler görünümlerini korur ancak artık bağlantılı değildir. + of characters used kullanılan karakterlerin sayısı + of {count} {count}'nin + Off Kapalı + Offset Path Ofset Yolu + Offset Path… Ofset Yolu… + Offset X Ofset X + Offset: Ofset: + OK Tamam + On Açık + On Copy Kopyalamada + On Paste Yapıştırıldığında + On Screen Ekranda + One file per artboard: -.{ext} Çalışma yüzeyi başına bir dosya: -.{ext} + One page per artboard. Çalışma yüzeyi başına bir sayfa. + One Point Bir Nokta + One Point Perspective Tek Nokta Perspektifi + One Point Perspective Preset 1 Tek Noktalı Perspektif Ön Ayarı 1 + One Point Perspective Preset 2 Tek Noktalı Perspektif Ön Ayarı 2 + One Point Perspective Preset 3 Tek Noktalı Perspektif Ön Ayarı 3 + One Point Perspective Preset 4 Tek Noktalı Perspektif Ön Ayarı 4 + One Point Perspective Preset 5 Tek Noktalı Perspektif Ön Ayarı 5 + Only Web Colors Yalnızca Web Renkleri + Opacity Opaklık + Opacity & Mask Define Knockout Shape Opaklık ve Maske Tanımlama Nakavt Şekli + Opacity Mask Opaklık Maskesi + Opacity Mask Info Opaklık Maskesi Bilgisi + Opacity Mask Options Opaklık Maskesi Seçenekleri + Opacity: Opaklık: + Opacity: 50% Multiply Opaklık: %50 Çarpma + Opacity: Default Opaklık: Varsayılan + Opacity: {value} Opaklık: {value} + Opaque Opak + Open Açık + Open a document to edit its patterns. Desenlerini düzenlemek için bir belge açın. + Open a document to navigate it. Gezinmek için bir belge açın. + Open a document to preview its flattening. Düzleştirilmesinin önizlemesini görmek için bir belge açın. + Open a document to preview its pages Sayfalarını önizlemek için bir belge açın + Open a document to see its artboards. Çalışma yüzeylerini görmek için bir belge açın. + Open a document to see its graphic styles. Grafik stillerini görmek için bir belge açın. + Open a document to see its history. Geçmişini görmek için bir belge açın. + Open a document to see its swatches. Renk örneklerini görmek için bir belgeyi açın. + Open Document Belgeyi Aç + Open Documents As Tabs Belgeleri Sekme Olarak Açma + Open Graphic Style Library Grafik Stil Kitaplığını Aç + Open Location after Export Dışa Aktarma Sonrası Konumu Aç + Open password: Şifreyi aç: + Open Paths Yolları Aç + Open Recent File 1 Son Dosyayı Aç 1 + Open Recent File 10 Son Dosyayı Aç 10 + Open Recent File 11 Son Dosyayı Aç 11 + Open Recent File 12 Son Dosyayı Aç 12 + Open Recent File 13 Son Dosyayı Aç 13 + Open Recent File 14 Son Dosyayı Aç 14 + Open Recent File 15 Son Dosyayı Aç 15 + Open Recent File 16 Son Dosyayı Aç 16 + Open Recent File 17 Son Dosyayı Aç 17 + Open Recent File 18 Son Dosyayı Aç 18 + Open Recent File 19 Son Dosyayı Aç 19 + Open Recent File 2 Son Dosyayı Aç 2 + Open Recent File 20 Son Dosyayı Aç 20 + Open Recent File 21 Son Dosyayı Aç 21 + Open Recent File 22 Son Dosyayı Aç 22 + Open Recent File 23 Son Dosyayı Aç 23 + Open Recent File 24 Son Dosyayı Aç 24 + Open Recent File 25 Son Dosyayı Aç 25 + Open Recent File 26 Son Dosyayı Aç 26 + Open Recent File 27 Son Dosyayı Aç 27 + Open Recent File 28 Son Dosyayı Aç 28 + Open Recent File 29 Son Dosyayı Aç 29 + Open Recent File 3 Son Dosyayı Aç 3 + Open Recent File 30 Son Dosyayı Aç 30 + Open Recent File 4 Son Dosyayı Aç 4 + Open Recent File 5 Son Dosyayı Aç 5 + Open Recent File 6 Son Dosyayı Aç 6 + Open Recent File 7 Son Dosyayı Aç 7 + Open Recent File 8 Son Dosyayı Aç 8 + Open Recent File 9 Son Dosyayı Aç 9 + Open Recent Files Son Dosyaları Aç + Open Swatch Library Swatch Kitaplığını Aç + Open the URL in the web browser URL'yi web tarayıcısında açın + Opened with {} note(s): {} {} notla açıldı: {} + Open… Aç… + Optical Margin Alignment Optik Kenar Boşluğu Hizalaması + Optimize for fast web view Hızlı web görünümü için optimize edin + Optimized Optimize edilmiş + Options Seçenekler + Options for Selection… Seçim Seçenekleri… + Options: Seçenekler: + Options… Seçenekler… + or more spaces with a tab veya sekmeli daha fazla alan + Order: Sipariş: + Ordinals Sıra Sayıları + Orientation Oryantasyon + Orientation: Oryantasyon: + Original Orijinal + Original: click to restore Orijinal: geri yüklemek için tıklayın + Other Diğer + Other Layers Diğer Katmanlar + Other Libraries Diğer Kütüphaneler + Other Library… Diğer Kütüphane… + Other Script… Diğer Komut Dosyası… + Out of Gamut Warning Gamut Dışı Uyarısı + Out of Web Color Warning Web Dışı Renk Uyarısı + Out Tangent Handles Dışarıya Teğet Tutamaçlar + Outer Glow… Dış Parıltı… + Outline Taslak + Outline Object Anahat Nesnesi + Outline Others Anahat Diğerleri + Outline Stroke Anahat Konturu + Outline Text Anahat Metni + Outlines and Rules Ana Hatlar ve Kurallar + Output Çıkış + Output All Blacks Accurately Tüm Siyahların Doğru Şekilde Çıktısını Alın + Output All Blacks as Rich Black Tüm Siyahların Çıkışını Zengin Siyah Olarak Çıkarın + Output Black Çıkış Siyah + Output condition: Çıkış durumu: + Output Intent Çıkış Amacı + Output intent profile: Çıkış amacı profili: + Output White Çıkış Beyaz + Output › Mode Çıkış › Mod + Output: Çıkış: + Overlap: Örtüşme: + Overlapping Örtüşen + Overlay Kaplama + Overprint Üst Baskı + Overprint and Transparency Flattener Üst Baskı ve Asetat Düzleştirici + Overprint and Transparency Flattener Options Üst Baskı ve Asetat Düzleştirici Seçenekleri + Overprint Black… Üst Baskı Siyah… + Overprint Fill Üst Baskı Dolgusu + Overprint Preview Üst Baskı Önizleme + Overprint Preview (separations) Üst Baskı Önizleme (ayrımlar) + Overprint Stroke Üst Baskı Konturu + Overprint: Üst baskı: + Overprints: Üst baskılar: + Override Character Color Karakter Rengini Geçersiz Kıl + Package Paket + Package collects a saved document with its linked files and fonts. Paket, kayıtlı bir belgeyi bağlantılı dosyaları ve yazı tipleriyle birlikte toplar. + Package created Paket oluşturuldu + Packaged {n} file(s) in {folder}{note} {folder}{note} biçiminde paketlenmiş {n} dosyası/dosyaları + Packaged {n} file(s){note} Paketlenmiş {n} dosyası/dosyaları{note} + Package… Paket… + Page Sayfa + Page information Sayfa bilgisi + Page Isolated Blending Sayfa Yalıtılmış Harmanlama + Page Knockout Group Sayfa Nakavt Grubu + Pages Sayfalar + Paintbrush Boya fırçası + Paintbrush Tool Boya Fırçası Aracı + Panel menu Panel menüsü + Panel Options… Panel Seçenekleri… + Panels Paneller + Panels Except Tools and Control Araçlar ve Kontrol Dışındaki Paneller + Paragraph Paragraf + Paragraph Style Paragraf Stili + Paragraph Style Options Paragraf Stili Seçenekleri + Paragraph Styles Paragraf Stilleri + Paragraph Symbol Paragraf Sembolü + Part of ArtCraft. MIT OR Apache-2.0. Fonts: Source Sans 3, Inter, JetBrains Mono (OFL). Icons: Lucide (ISC) + VectorCraft. ArtCraft'ın bir parçası. MIT VEYA Apache-2.0. Yazı Tipleri: Source Sans 3, Inter, JetBrains Mono (OFL). Simgeler: Lucide (ISC) + VectorCraft. + Password Şifre + Paste Yapıştır + Paste in Back Arkaya Yapıştır + Paste in Front Öne Yapıştır + Paste in Place Yerine Yapıştır + Paste Offset Uzaklığı Yapıştır + Paste on All Artboards Tüm Çalışma Yüzeylerine Yapıştır + Paste Remembers Layers Yapıştır Katmanları Hatırlar + Paste without Formatting Formatlamadan Yapıştır + Pasted Yapıştırıldı + Pastels Pastel + Path Yol + Path Eraser Yol Silici + Path Eraser Tool Yol Silme Aracı + Pathfinder Yol Bulucu + Pathfinder Options… Yol Bulucu Seçenekleri… + Pathfinders: Yol Bulucular: + Paths Yollar + Path Length Yol Uzunluğu + Paths: {paths} Anchors: {anchors} Colors: {colors} Yollar: {paths} Bağlantılar: {anchors} Renkler: {colors} + Pattern Desen + Pattern Editing Desen Düzenleme + Pattern Options Desen Seçenekleri + Pattern options are available in pattern editing mode. Desen seçenekleri desen düzenleme modunda mevcuttur. + PDF PDF'ler + PDF 1.3 files have no transparency: the preset flattens it. PDF 1.3 dosyalarının şeffaflığı yoktur: ön ayar onu düzleştirir. + PDF Info PDF Bilgisi + PDF Preset PDF Ön Ayarı + PDF Preset: PDF Ön Ayarı: + PDF Presets PDF Hazır Ayarları + PDF Presets… PDF Hazır Ayarları… + PDF Settings PDF Ayarları + PDF/A files carry their own output intent. PDF/A dosyaları kendi çıktı amaçlarını taşır. + PDF/X-1a files are CMYK: every colour is converted to the destination (blank: the output intent's CMYK profile), untagged. PDF/X-1a dosyaları CMYK'dir: her renk hedefe dönüştürülür (boş: çıktı hedefinin CMYK profili), etiketsiz. + Pen Tool Kalem Aracı + Pencil Kalem + Pencil Tool Kurşun Kalem Aracı + per slice dilim başına + Percent: Yüzde: + Perceptual Scales Algısal Ölçekler + Performance Performans + Performance & Storage Performans ve Depolama + Permissions İzinler + Permissions password: İzin şifresi: + Perspective Perspektif + Perspective Grid Perspektif Izgarası + Perspective Grid Options Perspektif Izgarası Seçenekleri + Perspective Grid Preset Perspektif Izgarası Ön Ayarı + Perspective Grid Presets Perspektif Izgarası Ön Ayarları + Perspective grid presets Perspektif ızgarası ön ayarları + Perspective Grid Presets… Perspektif Izgarası Ön Ayarları… + Perspective Grid Settings Perspektif Izgarası Ayarları + Perspective Grid Tool Perspektif Izgarası Aracı + Perspective Plane Options… Perspektif Düzlemi Seçenekleri… + Perspective Selection Tool Perspektif Seçim Aracı + Phone 390×844 Telefon 390×844 + Picas Pikalar + Pie Graph Tool Pasta Grafik Aracı + Pixel Preview Piksel Önizlemesi + Pixels Piksel + Place Yer + Place DXF DXF'yi yerleştir + Place onto a new locked, dimmed template layer below the current layer Geçerli katmanın altındaki yeni kilitli, soluk şablon katmanına yerleştirin + Place PDF PDF'yi yerleştir + Place Symbol Instance Sembol Örneğini Yerleştir + Place the pages with the placement again Sayfaları yerleşimle tekrar yerleştirin + Placed File Info Yerleştirilen Dosya Bilgileri + Placement Options Yerleşim Seçenekleri + Placement Options… Yerleşim Seçenekleri… + Placement: Yerleştirme: + Place… Yerleştir… + Plates Plakalar + Platform: Platform: + Play Current Selection Geçerli Seçimi Oynat + Plug-in Info Eklenti Bilgisi + Plug-ins Eklentiler + Plug-in… Eklenti… + Point Sample Nokta Örneği + Point Text Objects Nokta Metin Nesneleri + Points Punto + Points: clicks add free points Noktalar: tıklamalar serbest noktalar ekler + Polar Grid Kutupsal Izgara + Polar Grid Tool Yuvarlak Izgara Aracı + Polygon Çokgen + Polygon Properties: Poligon Özellikleri: + Polygon Tool Çokgen Aracı + Portrait Portre + Power Saving (integrated) Güç Tasarrufu (entegre) + Portuguese Portekizce + Position Pozisyon + Postcard Kartpostal + PostScript: PostScript: + PPI ÜFE + Preferences Tercihler + Preferences… Tercihler… + Prefix: Önek: + Presentation Attributes Sunum Nitelikleri + Presentation Mode Sunum Modu + Preserve Alpha Transparency Alfa Şeffaflığını Koruyun + Preserve Appearance and Overprints Görünümü ve Üst Baskıları Koru + Preserve CMYK Numbers CMYK Numaralarını Koru + Preserve Editing Capabilities Düzenleme Yeteneklerini Koruyun + Preserve editing capabilities Düzenleme yeteneklerini koruyun + Preserve Lightness Hafifliği Koruyun + Preserve Overprints and Spot Colors Üst Baskıları ve Spot Renkleri Koru + Preserve Paths Yolları Koru + Preserve Shape Using: Şunları Kullanarak Şekli Koru: + Preserve Spot Colors Spot Renkleri Koru + Preserve Text Appearance Metin Görünümünü Koru + Preserve Text Editability Metnin Düzenlenebilirliğini Koruyun + Preserve: Koru: + PRESET DETAILS ÖN AYAR DETAYLARI + Preset Name Ön Ayar Adı + Preset name: Ön ayar adı: + Preset {} Ön ayar {} + Preset: Ön ayar: + Presets you save with the Save Preset button appear here. Ön Ayarı Kaydet düğmesiyle kaydettiğiniz ön ayarlar burada görünür. + Presets: Ön ayarlar: + Press Basın + Preview Önizleme + Preview All Layers Tüm Katmanları Önizle + Preview in Browser Tarayıcıda Önizleme + Preview in Browser needs the desktop app (the web downloads files instead) Tarayıcıdaki önizleme için masaüstü uygulaması gerekir (bunun yerine web, dosyaları indirir) + Preview Mode Önizleme Modu + Preview the document as it is now Belgeyi şu anki haliyle önizleyin + Previous Önceki + Previous Library Önceki Kütüphane + Previous Page Önceki Sayfa + Previous page Önceki sayfa + Primary Birincil + Print Yazdır + Print as Bitmap Bitmap olarak yazdır + Print Layers: Katmanları Yazdır: + Print Preset Yazdırma Ön Ayarı + Print Preset: Yazdırma Ön Ayarı: + Print Presets Yazdırma Ön Ayarları + Print presets Yazdırma ön ayarları + Print Presets… Yazdırma Ön Ayarları… + Print Preview Baskı Önizleme + Print Setup Yazdırma Kurulumu + Print Tiling Döşemeyi Yazdır + Print Tiling Pages Döşeme Sayfalarını Yazdır + Print Tiling Tool Baskı Döşeme Aracı + Printer Yazıcı + Printer mark type: Yazıcı işareti türü: + Printer profile: Yazıcı profili: + Printer Setup… Yazıcı Kurulumu… + Printer: Yazıcı: + Printers Yazıcılar + Printing / Exporting Yazdırma / Dışa Aktarma + Printing allowed: İzin verilen yazdırma: + Print… Yazdır… + Process Color Proses Rengi + Profile inclusion: Profilin dahil edilmesi: + Profile: Profil: + Progressive Aşamalı + Projecting Cap Projeksiyon Kapağı + Proof Colors Prova Renkleri + Proof Setup Prova Kurulumu + Properties Özellikler + Proportional Metrics Orantılı Metrikler + Digits Rakamlar + Arabic Arapça + Hindi Hintçe + Farsi Farsça + Proportional Oldstyle Orantılı Eski Stil + Pucker & Bloat… Büzüşme ve Şişkinlik… + Pucker Tool Büzme Aracı + Punctuation Noktalama işaretleri + Punctuation Space Noktalama İşareti Alanı + Puppet Warp Kukla Çözgü + Puppet Warp Pins Kukla Çözgü Pimleri + Puppet Warp Tool Kukla Çarpıtma Aracı + Quality {quality} Kalite {quality} + Quality: Kalite: + Quarter Space Çeyrek Alan + Quick Actions Hızlı Eylemler + Quickly start a new file Hızlı bir şekilde yeni bir dosya başlatın + Quit VectorCraft VectorCraft'tan çıkın + Radar Graph Tool Radar Grafik Aracı + Radial Radyal + Radial Glows Radyal Parıltılar + Radial Gradient Radyal Gradyan + Radius 1 Yarıçap 1 + Radius 2 Yarıçap 2 + Radius1 Yarıçap1 + Radius2 Yarıçap2 + Rainbow Gökkuşağı + Random Rastgele + Randomize Colors Renkleri Rastgeleleştir + Randomly change color order Renk sırasını rastgele değiştir + Randomly change saturation and brightness Doygunluğu ve parlaklığı rastgele değiştirin + Range: Aralık: + Raster Effects Raster Efektleri + Raster File Format: Raster Dosya Formatı: + Raster Sample Size: Raster Örnek Boyutu: + Raster/Vector Balance: Raster/Vektör Dengesi: + Rasterize Rasterleştir + Rasterize Unsupported Art Desteklenmeyen Sanatı Rasterleştir + Rasterize… Rasterleştir… + Rasters Rasterler + Rating: Değerlendirme: + Real World: Gerçek Dünya: + Real-time Drawing and Editing Gerçek Zamanlı Çizim ve Düzenleme + Rearrange All Artboards Tüm Çalışma Yüzeylerini Yeniden Düzenleme + Rearrange All Tümünü Yeniden Düzenle + Layout Order: Yerleşim Sırası: + Change to Left-to-Right Layout Soldan Sağa Düzene Geç + Grid by Row Satırlara Göre Izgara + Grid by Column Sütuna Göre Izgara + Arrange by Row Satıra Göre Düzenleme + Arrange by Column Sütuna göre düzenle + Move Artwork with Artboard Resmi Çalışma Yüzeyiyle Taşıma + Scale Artwork with Artboard Çalışma Yüzeyi ile Resmi Ölçeklendirin + Artboards: {n} Çalışma yüzeyleri: {n} + Rearrange All Artboards… Tüm Çalışma Yüzeylerini Yeniden Düzenleme… + Recall Selection Seçimi Geri Çağır + RECENT SON + Recent Son + Recent Colors Son Renkler + Recent File Son Dosya + Recent Files Son Dosyalar + Recent Font Son Yazı Tipi + Recent Font 1 En Son Yazı Tipi 1 + Recent Font 10 Son Yazı Tipi 10 + Recent Font 11 Son Yazı Tipi 11 + Recent Font 12 Son Yazı Tipi 12 + Recent Font 13 Son Yazı Tipi 13 + Recent Font 14 Son Yazı Tipi 14 + Recent Font 15 Son Yazı Tipi 15 + Recent Font 2 Son Yazı Tipi 2 + Recent Font 3 Son Yazı Tipi 3 + Recent Font 4 Son Yazı Tipi 4 + Recent Font 5 Son Yazı Tipi 5 + Recent Font 6 Son Yazı Tipi 6 + Recent Font 7 Son Yazı Tipi 7 + Recent Font 8 Son Yazı Tipi 8 + Recent Font 9 Son Yazı Tipi 9 + Recent Fonts Son Yazı Tipleri + Recent URLs Son URL'ler + Recolor Yeniden renklendir + Recolor Artwork Resmi Yeniden Renklendir + Recolor Artwork… Resmi Yeniden Renklendir… + Recolor this row Bu satırı yeniden renklendir + Recolor with Preset Ön Ayarla Yeniden Renklendirme + Recover Documents Belgeleri Kurtar + Recovery Data Kurtarma Verileri + Rectangle Dikdörtgen + Rectangle Cut Dikdörtgen Kesim + Rectangle Cut Tool Dikdörtgen Kesme Aracı + Rectangle Properties: Dikdörtgen Özellikleri: + Rectangle Tool Dikdörtgen Aracı + Rectangle: Sunshine Dikdörtgen: Güneş Işığı + Rectangle… Dikdörtgen… + Rectangular Grid Dikdörtgen Izgara + Horizontal Dividers: Yatay Bölücüler: + Vertical Dividers: Dikey Bölücüler: + Rectangular Grid Tool Dikdörtgen Izgara Aracı + Red Kırmızı + Redefine Character Style Karakter Stilini Yeniden Tanımlayın + Redefine Graphic Style Grafik Stilini Yeniden Tanımlayın + Redefine Graphic Style “{name}” “{name}” Grafik Stilini Yeniden Tanımlayın + Redefine Paragraph Style Paragraf Stilini Yeniden Tanımlayın + Redefine Symbol Sembolü Yeniden Tanımla + Redefine {kind} Style {kind} Stilini Yeniden Tanımlayın + Redo Yinele + List Folder Klasörü Listele + Begin Undo Group Geri Alma Grubunu Başlat + End Undo Group Geri Alma Grubunu Sonlandır + Redo {name} {name}'yi yeniden yap + Redo {} {}'i yeniden yap + Reduce Colors Renkleri Azalt + Reduce to Basic Appearance Temel Görünüme Düşürme + Reduction: Azaltma: + Reference Point Referans Noktası + Reflect Yansıt + Reflect Horizontal Yatay Yansıt + Reflect Tool Yansıtma Aracı + Reflect X X'i yansıt + Reflect Y Y'yi yansıt + Reflect… Yansıt… + Refresh Yenile + Refresh Font List Yazı Tipi Listesini Yenile + Missing Fonts Eksik Yazı Tipleri + Missing Fonts Dialog Eksik Yazı Tipleri İletişim Kutusu + These fonts aren't available. Their text shows in another font. Bu yazı tipleri mevcut değil. Metinleri başka bir yazı tipinde gösterilir. + Search Fonts Folder Yazı Tipleri Klasörünü Ara + Find in Folder… Klasörde Bul… + Find Fonts in Folder… Klasördeki Yazı Tiplerini Bul… + Find Font Files Yazı Tipi Dosyalarını Bul + Add Font Files Yazı Tipi Dosyaları Ekle + Add Fonts Yazı Tipleri Ekle + Find Fonts Yazı Tiplerini Bul + Stop Durdur + Searching… Aranıyor… + Not found Bulunamadı + {folders} folder(s) and {files} file(s) searched {folders} klasör(ler)i ve {files} dosya(lar)ı arandı + {count} folder(s) skipped, such as other apps' and the system's folders and hidden ones Diğer uygulamaların ve sistemin klasörleri ve gizli klasörleri gibi {count} klasörleri atlandı + {count} folder(s) or file(s) couldn't be read {count} klasör(ler)i veya dosya(lar) okunamadı + The search stopped at its limit: search a smaller folder. Arama sınırda durdu: daha küçük bir klasörde arama yapın. + Copy only fonts you own or are licensed to install. Yalnızca sahip olduğunuz veya yükleme lisansına sahip olduğunuz yazı tiplerini kopyalayın. + VectorCraft copies the fonts to {folder}. VectorCraft yazı tiplerini {folder}'ye kopyalar. + Registered Trademark Symbol Kayıtlı Ticari Marka Sembolü + Registration marks Kayıt işaretleri + Registry name: Kayıt adı: + Regular Düzenli + Release Sürüm + Release Compound Shape Bileşik Şeklini Serbest Bırakın + Release Guides Sürüm Kılavuzları + Release Opacity Mask Opaklık Maskesini Serbest Bırak + Release Selection Sürüm Seçimi + Release to Layers (Build) Katmanlara Yayınlama (Derleme) + Release to Layers (Sequence) Katmanlara Serbest Bırakma (Sıra) + Release with Perspective Perspektifli Yayın + Relink Yeniden bağla + Relink Linked Files to the Document Bağlantılı Dosyaları Belgeye Yeniden Bağlama + Relink to Folder… Klasöre Yeniden Bağlan… + Relinked {n} image(s) Yeniden bağlanan {n} görselleri + Relinked {n} image(s); not in that folder: {} Yeniden bağlanan {n} görselleri; bu klasörde değil: {} + Relinked {} image(s) {} resim yeniden bağlandı + Relink… Yeniden bağla… + Find Linked Files Bağlantılı Dosyaları Bul + Find Linked Files in Folder… Klasördeki Bağlantılı Dosyaları Bul… + Choose the file to relink each linked file to. Files with the size and contents saved with the link come first. Bağlantılı her dosyanın yeniden bağlanacağı dosyayı seçin. Bağlantıyla kaydedilen boyut ve içeriğe sahip dosyalar ilk sırada gelir. + Same file Aynı dosya + Same size Aynı boyut + Don't Relink Yeniden Bağlama + Copy into the document's folder Belgenin klasörüne kopyalayın + Reload Plug-ins Eklentileri Yeniden Yükle + Remove Kaldır + Remove Anchor Points Bağlantı Noktalarını Kaldır + Remove Asset Varlığı Kaldır + Remove blank lines between paragraphs Paragraflar arasındaki boş satırları kaldırın + Remove Brush Stroke Fırça Darbesini Kaldır + Remove Effect Efekti Kaldır + Remove Guide Kılavuzu Kaldır + Remove Item Öğeyi Kaldır + Remove Plug-in Eklentiyi Kaldır + Remove Selected Assets Seçilen Varlıkları Kaldır + Remove Threading Diş Açmayı Kaldır + Remove “{keyword}” “{keyword}”yi kaldırın + Rename Yeniden adlandır + Rename Asset Varlığı Yeniden Adlandır + Rename Character Style Karakter Stilini Yeniden Adlandır + Rename Graphic Style Grafik Stilini Yeniden Adlandır + Rename Paragraph Style Paragraf Stilini Yeniden Adlandır + Rename Workspace Çalışma Alanını Yeniden Adlandır + Render Threads (-1 = Automatic) İşleme Konuları (-1 = Otomatik) + Rendering intent: Oluşturma amacı: + Reorder Yeniden sırala + Reorder Appearance Item Görünüm Öğesini Yeniden Sırala + Repeat Tekrarla + Repeat Options Tekrarlama Seçenekleri + Repeat Pathfinder Yol Bulucuyu Tekrarla + Repeat Tab Sekmeyi Tekrarla + Repeat {name} {name}'yi tekrarla + Replace Değiştir + Replace Font Yazı Tipini Değiştir + Replace it with another file, or ignore it: its images keep showing the preview saved with the document. Onu başka bir dosyayla değiştirin veya yok sayın: resimleri, belgeyle birlikte kaydedilen önizlemeyi göstermeye devam eder. + Replace Spine Omurgayı Değiştir + Replace Symbol Sembolü Değiştir + Replace With Font Yazı Tipiyle Değiştir + Replaces the saved preset of that name. Bu adın kayıtlı ön ayarını değiştirir. + Replace… Değiştir… + Require a password to open the document Belgeyi açmak için parola gerektir + Reselect Yeniden seç + Reset Sıfırla + Reset Bounding Box Sınırlayıcı Kutuyu Sıfırla + Reset Envelope Mesh Zarf Ağını Sıfırla + Reset Envelope Shape Zarf Şeklini Sıfırla + Reset Essentials Essentials'ı sıfırla + Reset Keyboard Shortcuts Klavye Kısayollarını Sıfırla + Reset OpenType Features OpenType Özelliklerini Sıfırla + Reset Panel Paneli Sıfırla + Reset Preferences Tercihleri Sıfırla + Reset Profiles Profilleri Sıfırla + Reset Rotate View Döndürme Görünümünü Sıfırla + Rotate View to Selection Görünümü Seçime Döndür + Reset the rows to the artwork's colors Satırları resmin renklerine göre sıfırlayın + Reset to Default Varsayılana Sıfırla + Reset to White, Black Beyaz, Siyah'a Sıfırla + Reset with Mesh Mesh ile Sıfırla + Reset with Mesh… Mesh ile Sıfırla… + Reset with Warp Warp ile Sıfırla + Reset with Warp… Warp ile Sıfırla… + Reset {name} {name}'yi sıfırla + Reset {} {}'ı sıfırla + Reshape Yeniden şekillendir + Reshape Segment Segmenti Yeniden Şekillendir + Reshape Tool Yeniden Şekillendir Aracı + Reshape Type Area Yazı Alanını Yeniden Şekillendir + Resolution: Çözünürlük: + Responsive duyarlı + Restore Geri yükle + Restore every preference to its default (applied on OK) Her tercihi varsayılana geri yükleyin (Tamam'a uygulanır) + Restore Recovered Documents Kurtarılan Belgeleri Geri Yükle + Restored documents open unsaved: save them to keep them. Geri yüklenen belgeler kaydedilmeden açılır: saklamak için kaydedin. + Restored {} recovered document(s): save them to keep them Geri yüklenen {} kurtarılmış belge: onları saklamak için kaydedin + Restrict printing, editing and other tasks Yazdırmayı, düzenlemeyi ve diğer görevleri kısıtlayın + Reverse Front to Back Önden Arkaya Ters Çevir + Reverse Gradient Ters Degrade + Reverse Order Ters Sıralama + Reverse Path Direction Yol Yönünü Ters Çevir + Reverse Path Direction Off Yol Yönünü Ters Çevir Kapalı + Reverse Path Direction On Yol Yönünü Ters Çevirme Açık + Reverse Spine Ters Omurga + Revert Geri Döndür + Revert to the saved version of “{name}”? “{name}”nin kayıtlı sürümüne dönülsün mü? + Replace “{name}”, the file this document was opened from? Bu belgenin açıldığı dosya olan "{name}" değiştirilsin mi? + Opening it left out what VectorCraft can't read yet ({what}), so replacing it loses that for good. Save under another name to keep it. Bunu açmak, VectorCraft'ın henüz okuyamadığı şeyi ({what}) dışarıda bıraktı, bu nedenle onu değiştirmek onu tamamen kaybeder. Saklamak için başka bir adla kaydedin. + Revolve… Döndür… + RGB Color RGB Rengi + Right Sağ + Right Grid: Sağ Izgara: + Right in Front Sağ Önde + Right Indent Sağ Girinti + Right Plane Sağ Düzlem + Right-Justified Tab Sağa Yaslanmış Sekme + Right-to-Left Paragraph Direction Sağdan Sola Paragraf Yönü + Right: Doğru: + Rise… Yüksel… + Roman Baseline Roma Taban Çizgisi + Roman Hanging Punctuation Roma Asılı Noktalama İşaretleri + Rotate Döndür + Rotate 90° CW 90° CW döndür + Rotate Tool Döndürme Aracı + Rotate View Tool Görünümü Döndür Aracı + Rotate… Döndür… + Rotation Döndürme + Roughen… Pürüzlendirmek… + Round Cap Yuvarlak Başlık + Round Corners… Yuvarlak Köşeler… + Round Join Yuvarlak Katıl + Rounded Yuvarlak + Rounded Rectangle Yuvarlatılmış Dikdörtgen + Rounded Rectangle Tool Yuvarlak Köşeli Dikdörtgen Aracı + Rounded Rectangle… Yuvarlatılmış Dikdörtgen… + Row Size: Satır Boyutu: + Rows: Satırlar: + Rule: Kural: + Rulers Cetveller + Rulers & Grids Cetveller ve Izgaralar + Run Plug-in Eklentiyi Çalıştır + Same Aynı + Same As Source Kaynakla Aynı + Sample Color Örnek Renk + Sans Serif / Gothic Sans Serif / Gotik + Saturate Doygunluk + Saturate… Doygunluk… + Saturation Doygunluk + Save Kaydet + Save a Copy Bir Kopyasını Kaydet + Save a Copy… Bir Kopyasını Kaydet… + Save As Farklı Kaydet + Save as PDF… PDF olarak kaydet… + Save as preset: Ön ayar olarak kaydet: + Save as Template Şablon olarak kaydet + Save as Template… Şablon Olarak Kaydet… + Save As… Farklı Kaydet… + Save changes to {name} Değişiklikleri {name}'ye kaydet + Save color group to Swatch panel Renk grubunu Swatch paneline kaydedin + Save Colors as Swatches Renkleri Renk Örnekleri Olarak Kaydet + Save Document Belgeyi Kaydet + Save Document Info… Belge Bilgilerini Kaydet… + Save each artboard to a separate file Her çalışma yüzeyini ayrı bir dosyaya kaydedin + Save for Office Documents Office Belgeleri için Kaydet + Save for Office Documents… Office Belgeleri için Kaydet… + Save for Web Web için Kaydet + Save for Web (Legacy)… Web için Kaydet (Eski)… + Save for Web Presets Web Ön Ayarları için Kaydet + Save for Web Preview Web Önizlemesi için Kaydet + Save for Web Settings Web Ayarları için Kaydet + Save Graphic Style Library Grafik Stil Kitaplığını Kaydet + Save Graphic Style Library… Grafik Stil Kitaplığını Kaydet… + Save Grid as Preset Izgarayı Ön Ayar Olarak Kaydet + Save Grid as Preset… Izgarayı Ön Ayar Olarak Kaydet… + Save PDF PDF'yi kaydet + Save PDF Dialog PDF İletişim Kutusunu Kaydet + Save PDF Preset PDF Hazır Ayarını Kaydet + Save Perspective Grid Preset Perspektif Izgarası Ön Ayarını Kaydet + Save Preset Ön Ayarı Kaydet + Save Preset… Ön Ayarı Kaydet… + Save Print Preset Yazdırma Ön Ayarını Kaydet + Save Recovery Data Kurtarma Verilerini Kaydet + Save Save for Web Preset Kaydet Web Ön Ayarı için Kaydet + Save selected colors as swatches Seçilen renkleri renk örnekleri olarak kaydet + Save Selection… Seçimi Kaydet… + Update Selection Seçimi Güncelle + Save Swatch Library Swatch Kitaplığını Kaydet + Save Swatch Library… Swatch Kitaplığını Kaydet… + Save the current layout under this name Geçerli düzeni bu adla kaydedin + Save the document first? Önce belge kaydedilsin mi? + Save the selected preset to a file Seçilen ön ayarı bir dosyaya kaydedin + Save the settings as a preset Ayarları ön ayar olarak kaydedin + Save Theme Temayı Kaydet + Save theme to My Themes Temayı Temalarım'a kaydet + Save these settings as a preset Bu ayarları ön ayar olarak kaydedin + Save these settings as a print preset Bu ayarları yazdırma ön ayarı olarak kaydedin + Save to Swatches Renk Örneklerine Kaydet + Save To: Şuraya Kaydet: + Save Transparency Flattener Preset Saydamlık Düzleştirici Ön Ayarını Kaydet + Save Transparency Flattener Preset… Saydamlık Düzleştirici Ön Ayarını Kaydet… + SAVED KAYDEDİLDİ + Saved Kaydedildi + Saved recovery data for {title} {title} için kayıtlı kurtarma verileri + Saved Selection 1 Seçim 1 Kaydedildi + Saved Selection 10 Seçim 10 Kaydedildi + Saved Selection 11 Seçim 11 Kaydedildi + Saved Selection 12 Seçim 12 Kaydedildi + Saved Selection 13 Seçim 13 Kaydedildi + Saved Selection 14 Kaydedilen Seçim 14 + Saved Selection 15 Seçim 15 Kaydedildi + Saved Selection 16 Kaydedilen Seçim 16 + Saved Selection 17 Kaydedilen Seçim 17 + Saved Selection 18 Kaydedilen Seçim 18 + Saved Selection 19 Kaydedilen Seçim 19 + Saved Selection 2 Seçim 2 Kaydedildi + Saved Selection 20 Seçim 20 Kaydedildi + Saved Selection 21 Seçim 21 Kaydedildi + Saved Selection 22 Seçim 22 Kaydedildi + Saved Selection 23 Kaydedilen Seçim 23 + Saved Selection 24 Kaydedilen Seçim 24 + Saved Selection 25 Seçim 25 Kaydedildi + Saved Selection 3 Seçim 3 Kaydedildi + Saved Selection 4 Seçim 4 Kaydedildi + Saved Selection 5 Seçim 5 Kaydedildi + Saved Selection 6 Seçim 6 Kaydedildi + Saved Selection 7 Seçim 7 Kaydedildi + Saved Selection 8 Seçim 8 Kaydedildi + Saved Selection 9 Seçim 9 Kaydedildi + Saved Selections Kaydedilen Seçimler + Saved to User Defined: {} Kullanıcı Tanımlı'ya kaydedildi: {} + Saved View 1 Kaydedilen Görünüm 1 + Saved View 10 Kaydedilen Görünüm 10 + Saved View 2 Kaydedilen Görünüm 2 + Saved View 3 Kaydedilen Görünüm 3 + Saved View 4 Kaydedilen Görünüm 4 + Saved View 5 Kaydedilen Görünüm 5 + Saved View 6 Kaydedilen Görünüm 6 + Saved View 7 Kaydedilen Görünüm 7 + Saved View 8 Kaydedilen Görünüm 8 + Saved View 9 Kaydedilen Görünüm 9 + Saved Views Kayıtlı Görünümler + Saved {n} files beside {path} {path}'nin yanında kaydedilen {n} dosyaları + Saved {path} {path} kaydedildi + Saved {path} with {} note(s): {first} {path}, {} notla kaydedildi: {first} + Saves the current bars, toolbar and panel layout. Geçerli çubukları, araç çubuğunu ve panel düzenini kaydeder. + Save… Kaydet… + Saving Kaydediliyor + Saving Poster.vectorcraft Poster.vectorcraft Kaydediliyor + Saving recovery data for {} {} için kurtarma verileri kaydediliyor + Saving {} {} kaydediliyor + Scale Ölçek + Scale Corners Köşeleri Ölçeklendir + Scale Cursor Proportional to UI İmleci Kullanıcı Arayüzüne Orantılı Olarak Ölçeklendir + Scale Lineweights Çizgi Kalınlıklarını Ölçeklendir + Scale Strokes & Effects Ölçek Konturları ve Efektleri + Scale to Fit Artboard Çalışma Yüzeyine Sığacak Şekilde Ölçeklendir + Scale Tool Ölçek Aracı + Scale: Ölçek: + Scale… Ölçek… + Scaling Ölçeklendirme + Scaling: Ölçekleme: + Scallop Tool Tarak Aracı + Scans: Taramalar: + Scatter Dağılım + Scatter Graph Tool Saçılma Grafiği Aracı + Scissors Tool Makas Aracı + Scratch Disks Kazı Diskleri + Screen Ekran + Screen (72 ppi) Ekran (72 ppi) + Screen Mode Ekran Modu + Screens Ekranlar + Scribble… Karalama… + Script / Brush Senaryo / Fırça + Scripts Komut dosyaları + Search Ara + Search All Tümünü Ara + Filter Filtre + Clear All Tümünü Temizle + By Object Nesneye göre + By Layer Katmana göre + Images Görseller + Groups Gruplar + Linked Files Bağlantılı Dosyalar + Locked Kilitli + Hidden Gizli + Filter Layers Panel Rows Katmanları Filtrele Panel Satırları + Add Light Işık Ekle + Artboard {n} of {total} Çalışma Yüzeyi {n} / {total} + Auto Leading: Otomatik Satır Aralığı: + Cancel Export Dışa Aktarmayı İptal Et + Clear History Geçmişi Temizle + Continue in Background Arka Planda Devam Et + Delete Light Işığı Sil + Desired İstenen + Edit Path Yolu Düzenle + Encoding and writing the file… Dosya kodlanıyor ve yazılıyor… + Full Justify Tam Yasla + Glyph Scaling: Glif Ölçekleme: + If a drawing tablet's pen doesn't draw, choose an X11 (XWayland) option. Çizim tabletinin kalemi çizmiyorsa, bir X11 (XWayland) seçeneği belirleyin. + Justification İki Yana Yaslama + Letter Spacing: Harf Boşluğu: + Lights Işıklar + Minimum must not exceed Desired, nor Desired Maximum. Minimum, İstenen'i; İstenen ise Maksimum'u aşmamalıdır. + Select by Color Renge Göre Seç + Set History Limit… Geçmiş Sınırını Ayarla… + Single Word Justification: Tek Sözcük Yaslama: + Step Backward Geriye Doğru Adım + Step Forward İleriye Doğru Adım + Word Spacing: Sözcük Boşluğu: + X11 (XWayland) When a Pen Is Attached Kalem Takıldığında X11 (XWayland) + Apply {name} “{name}” Stilini Uygula + Redefine {name} “{name}” Stilini Yeniden Tanımla +@msg `{key}` must be an array of these names: {_1} "{key}" şu adlardan oluşan bir dizi olmalıdır: {_1} + Search commands and tools Komutları ve araçları arayın + Search commands and tools… Komutları ve araçları arayın… + Search Commands… Arama Komutları… + Secondary İkincil + Section Symbol Bölüm Sembolü + Security Güvenlik + Select Seç + Select a text object Bir metin nesnesi seçin + Select a text object to edit its character attributes. Karakter niteliklerini düzenlemek için bir metin nesnesi seçin. + Select a text object to edit its paragraph attributes. Paragraf niteliklerini düzenlemek için bir metin nesnesi seçin. + Select a text object to set its tab stops. Sekme duraklarını ayarlamak için bir metin nesnesi seçin. + Select All Tümünü Seç + Select All Art on Layer Katmandaki Tüm Resimleri Seç + Select All Assets Tüm Varlıkları Seç + Select All Instances Tüm Örnekleri Seç + Select All Pins Tüm Pinleri Seç + Select All Unused Kullanılmayanların Tümünü Seç + Select an image to see its Link Info. Bağlantı Bilgilerini görmek için bir görsel seçin. + Select an image to trace İzlenecek bir görüntü seçin + Select Anchors Çapaları Seçin + Select Segments Segmentleri Seçin + Select Appearance Item Görünüm Öğesini Seçin + Select Art Sanat Seç + Select art and choose Object › Pattern › Make. Sanatı seçin ve Nesne › Desen › Yap'ı seçin. + Select art and click New Symbol to make one. Resmi seçin ve bir tane oluşturmak için Yeni Sembol'e tıklayın. + Select art and use New Brush to make one. Sanatı seçin ve bir tane oluşturmak için Yeni Fırça'yı kullanın. + Select Freeform Point Serbest Biçim Noktasını Seçin + Select Gradient Stop Degrade Durdurmayı Seçin + Select Guides Kılavuzları Seçin + Select Objects Nesneleri Seç + Select objects to see their CSS, or Generate CSS for the whole document. CSS'lerini görmek için nesneleri seçin veya belgenin tamamı için CSS oluşturun. + Select Same Tint % Aynı Ton Yüzdesini Seç + Select Slices Dilimleri Seç + Select styled art and click New Graphic Style. Stillendirilmiş resmi seçin ve Yeni Grafik Stili'ni tıklayın. + Select text Metni seçin + Select Text by Font Yazı Tipine Göre Metni Seçin + Select text or click into text with the Type tool to insert glyphs Glif eklemek için metni seçin veya Yazım aracıyla metne tıklayın + Select text to set its OpenType features. OpenType özelliklerini ayarlamak için metni seçin. + Select the art (and, on top of it, the mask object) Resmi seçin (ve bunun üzerine maske nesnesini) + Select Tool Aracı Seç + Select: Seçin: + Selected Artwork Seçilen Sanat Eseri + Selected Styles Only Yalnızca Seçilen Stiller + Selected Swatches Seçilen Renk Örnekleri + Selected Swatches Only Yalnızca Seçilen Renk Örnekleri + Selection Seçim + Selection & Anchor Display Seçim ve Bağlantı Ekranı + Selection Only Yalnızca Seçim + Selection Tool Seçim Aracı + Send Backward Geriye Gönder + Send to Back Arkaya Gönder + Send to Current Layer Geçerli Katmana Gönder + Sentence case Cümle durumu + Separate colors into rows Renkleri satırlara ayırın + Separate several keywords with commas. Birkaç anahtar kelimeyi virgülle ayırın. + Separations list the document's inks here: one page per ink that prints. Ayırmalar belgenin mürekkeplerini burada listeler: yazdırılan mürekkep başına bir sayfa. + Separations Preview Ayrımlar Önizlemesi + Serialize Document Belgeyi Serileştir + Serif / Mincho Serif / Minço + Server-side (.map) Sunucu tarafı (.map) + Set 1 Set 1 + Set Anchors Bağlantı Noktalarını Ayarla + Set base color Temel rengi ayarla + Set base color to the current color Temel rengi geçerli renge ayarla + Set Bounds Sınırları Belirle + Set Current Layer Geçerli Katmanı Ayarla + Set Keyboard Shortcut Klavye Kısayolunu Ayarla + Set Mesh Point Color Kafes Noktası Rengini Ayarla + Set Preference Tercihi Ayarla + Set Slice Rectangle Dilim Dikdörtgenini Ayarla + Set Tab Stops Sekme Duraklarını Ayarla + Set Text Metni Ayarla + Set the selected color to the current color Seçilen rengi geçerli renge ayarla + Set Zoom Yakınlaştırmayı Ayarla + Settings… Ayarlar… + Setup… Kurulum… + Shadows and Glows Gölgeler ve Parıltılar + Shape Şekil + Shape Builder Şekil Oluşturucu + Shape Builder Regions Şekil Oluşturucu Bölgeleri + Shape Builder Tool Şekil Oluşturucu Aracı + Shape Effects Şekil Efektleri + Shape Modes: Şekil Modları: + Shape Properties: Şekil Özellikleri: + Shaper Tool Şekillendirici Aracı + Shapes Şekiller + Shear Kesme + Shear Tool Yamultma Aracı + Shear… Kesme… + Shell Lower… Kabuk Alt Kısmı… + Shell Upper… Kabuk Üstü… + Shift Shift + Shift to Color… Renge Geçiş… + Shifts the tints of global and spot colors; other colors stay. Global ve spot renklerin tonlarını değiştirir; diğer renkler kalıyor. + Show Göster + Show Active Plane Widget Aktif Düzlem Widget'ını Göster + Show All Tümünü Göster + Show All Hidden Attributes Tüm Gizli Özellikleri Göster + Show All Layers Tüm Katmanları Göster + Show All Plates Tüm Plakaları Göster + Show all plates Tüm plakaları göster + Show All Swatches Tüm Renk Örneklerini Göster + Show and print from the Lab definition; PDF files carry it as the ink's alternate color. Laboratuvar tanımını gösterin ve yazdırın; PDF dosyaları bunu mürekkebin alternatif rengi olarak taşır. + Show and separate through the working CMYK space, as in older documents. Eski belgelerde olduğu gibi çalışan CMYK alanını gösterin ve ayırın. + Show Artboards Çalışma Yüzeylerini Göster + Show Bounding Box Sınırlayıcı Kutuyu Göster + Show Brush Size Fırça Boyutunu Göster + Show Center Gösteri Merkezi + Show Code Kodu Göster + Show Color Groups Renk Gruplarını Göster + Show Color Swatches Renk Örneklerini Göster + Show Corner Widget Köşe Widget'ını Göster + Show East Asian Options Doğu Asya Seçeneklerini Göster + Show Edges Kenarları Göster + Show Embedded Gömülüleri Göster + Show Find Field Bulma Alanını Göster + Show Font Names in English İngilizce Yazı Tipi Adlarını Göster + Show Gradient Annotator Degrade Açıklayıcıyı Göster + Show Gradient Swatches Degrade Renk Örneklerini Göster + Show Grid Izgarayı Göster + Show Grid (⌘') Izgarayı Göster (⌘') + Show Guides Kılavuzları Göster + Show handles when multiple anchors are selected Birden çok bağlantı seçildiğinde tutamaçları göster + Show Hidden Characters Gizli Karakterleri Göster + Bold Kalın + Italic italik + Show Images in Outline Mode Görüntüleri Anahat Modunda Göster + Show in Folder Klasörde Göster + Show Indic Options Hintçe Seçeneklerini Göster + Show Layers Only Yalnızca Katmanları Göster + Show Link Info Bağlantı Bilgilerini Göster + Show List View Liste Görünümünü Göster + Show Mesh Mesh'i Göster + Show Missing Eksikleri Göster + Show Modified Değiştirilenleri Göster + Show Note Notu Göster + Show Options Seçenekleri Göster + Show Original Path Orijinal Yolu Göster + Color Panel Options Renk Paneli Seçenekleri + Show Package Paketi Göster + Show Panel Paneli Göster + Show Pattern Swatches Desen Örneklerini Göster + Show Perspective Grid Perspektif Izgarasını Göster + Show Pixel Grid (Above 600% Zoom) Piksel Izgarasını Göster (%600 Yakınlaştırmanın Üstünde) + Show Print Tiling Yazdırma Döşemesini Göster + Show Rulers Cetvelleri Göster + Show Rulers (⌘R) Cetvelleri Göster (⌘R) + Show Slice Numbers Dilim Numaralarını Göster + Show Slices Dilimleri Göster + Show Swatch Bounds Renk Örneği Sınırlarını Göster + Show Swatch Kinds Renk Örneği Çeşitlerini Göster + Show Template Şablonu Göster + Show Text Threads Metin Konularını Göster + Show The Home Screen When No Documents Are Open Hiçbir Belge Açık Olmadığında Ana Ekranı Göster + Show Thumbnail Küçük Resmi Göster + Show Thumbnail View Küçük Resim Görünümünü Göster + Show Thumbnails Küçük Resimleri Göster + Show Tile Edge Döşeme Kenarını Göster + Show Tints/Shades Renk Tonlarını/Gölgeleri Göster + Show Tool Tips Araç İpuçlarını Göster + Show Transparency Grid Şeffaflık Izgarasını Göster + Show Video Rulers Video Cetvellerini Göster + Show Vivid/Muted Canlı/Sessiz Göster + Show Warm/Cool Sıcak/Soğuk Göster + Show {kind} Brushes {kind} Fırçalarını Göster + Show/hide plate (Alt-click: only this plate) Plakayı göster/gizle (Alt tuşuyla tıklayın: yalnızca bu plaka) + Show: Göster: + Shown with the optimised preview. Optimize edilmiş önizlemeyle gösterilir. + Side 1: 1. Taraf: + Side 2: 2. Taraf: + Sides: Taraflar: + Simplify Basitleştir + Simplify: Basitleştirin: + Simplify… Basitleştir… + Simulate Colored Paper Renkli Kağıdı Simüle Et + Simulate Paper Kağıdı Simüle Et + Double Column Çift Sütun + Single Left Quotation Mark Tek Sol Tırnak İşareti + Single Quotes: Tek Alıntılar: + Single Right Quotation Mark Tek Sağ Tırnak İşareti + Single-line Composer Tek Satır Oluşturucu + Sixth Space Altıncı Uzay + Size Boyut + Size Tile to Art Sanata Boyut Döşeme + Size/Leading Boyut/Öncülük + Size: Boyut: + Ridges per segment: Segment başına sırtlar: + Size: {size} Tracking: {tracking} Boyut: {size} Takip: {tracking} + Skew Eğik + Skin Tone Ramps Cilt Tonu Rampaları + Skip Blank Artboards Boş Çalışma Yüzeylerini Atla + Sky Gradients Gökyüzü Gradyanları + Slice Dilim + Slice Options Dilim Seçenekleri + Slice Options… Dilim Seçenekleri… + Slice Selection Tool Dilim Seçimi Aracı + Slice Tool Dilim Aracı + Slice Type: Dilim Türü: + Slices Dilimler + slices across, evenly spaced eşit aralıklı dilimler + slices down, evenly spaced aşağı doğru dilimler, eşit aralıklarla + Slices: Dilimler: + Small Küçük + Small Caps Küçük Büyük Harfler + Small Caps (on the roadmap) Küçük Büyük Harfler (yol haritasında) + Small Caps: Küçük Büyük Harfler: + Small List View Küçük Liste Görünümü + Small Thumbnail View Küçük Küçük Resim Görünümü + Small Thumbnails Küçük Küçük Resimler + Smaller ↔ Larger Daha küçük ↔ Daha büyük + Smart Guides Akıllı Kılavuzlar + Smart Guides (View → Smart Guides) Akıllı Kılavuzlar (Görünüm → Akıllı Kılavuzlar) + Smart Guides (⌘U) Akıllı Kılavuzlar (⌘U) + Smart Punctuation… Akıllı Noktalama… + Smooth Pürüzsüz + Corner Köşe + Relative akraba + Absolute Mutlak + Smooth Color Pürüzsüz Renk + Smooth Tool Düzgünleştirme Aracı + Snap Curves To Lines Eğrileri Çizgilere Yasla + View: Görünüm: + Tracing Result İzleme Sonucu + Tracing Result with Outlines Anahatlarla Sonucu İzleme + Outlines Ana hatlar + Outlines with Source Image Kaynak Resimli Ana Hatlar + Source Image Kaynak Resim + Image Trace View Görüntü İzleme Görünümü + Snap Options Yapış Seçenekleri + Snap to Glyph Glif'e Yapış + Snap to Grid Izgaraya Yasla + Snap to Pixel Piksel'e Yapış + Precise Cursors Hassas İmleçler + Snap to Point Noktaya Yasla + Snapping Tolerance Yapışma Toleransı + Social Square Post 1080×1080 Sosyal Meydan Gönderisi 1080×1080 + Soft Light Yumuşak Işık + Solid Katı + Sort by Kind Türe göre sırala + Sort by Name Ada Göre Sırala + Sort by Status Duruma göre sırala + Source code on GitHub GitHub'daki kaynak kodu + Source Sans 3 Kaynak Sans 3 + Space After Paragraph Paragraftan Sonra Boşluk + Space Before Paragraph Paragraftan Önce Boşluk + Spaces Alanlar + Spacing Guides Aralık Kılavuzları + Spacing: Aralık: + Spanish İspanyolca + Specified Distance Belirtilen Mesafe + Specified Steps Belirtilen Adımlar + Specify: Belirtiniz: + Spectrum Gradients Spektrum Gradyanları + Spelling Yazım + Spiral Sarmal + Spiral Tool Spiral Aracı + Split Freeform Line Serbest Biçimli Çizgiyi Böl + Split Into Grid Izgaraya Böl + Total: Toplam: + Add Guides Kılavuz Ekle + Split Into Grid… Izgaraya Böl… + Split Path Bölünmüş Yol + spot nokta + Spot Color Nokta Rengi + Spot Colors Nokta Renkleri + Spot Colors… Nokta Renkleri… + Spread: Yayılma: + Square Kare + Squeeze… Sıkıştır… + Stacked Bar Graph Tool Yığınlanmış Çubuk Grafik Aracı + Stacked Column Graph Tool Yığınlanmış Sütun Grafik Aracı + Stair Step Merdiven Basamağı + Standard Ligatures Standart Bitişik Harfler + Standard Vertical Roman Alignment Standart Dikey Roma Hizalaması + Standard: Standart: + Star Yıldız + Star Tool Yıldız Aracı + Start arrowhead Ok ucunu başlat + Start Global Edit Genel Düzenlemeyi Başlat + Status Durum + Steps: Adımlar: + Stop Editing Opacity Mask Opaklık Maskesini Düzenlemeyi Durdur + Stop editing the opacity mask Opaklık maskesini düzenlemeyi durdur + Stop Playing/Recording Oynatmayı/Kaydı Durdur + Stray Points Kaçak Noktalar + Strikethrough Üstü çizili + Stroke Kontur + Stroke (X), double-click for the Color Picker Kontur (X), Renk Seçici için çift tıklayın + Stroke Color Kontur Rengi + Stroke Options Kontur Seçenekleri + Character: Karakter: + Character options Karakter seçenekleri + Stroke options Kontur seçenekleri + Transform options Dönüştürme seçenekleri + Stroke Weight Kontur Kalınlığı + Stroke: Kontur: + Stroke: click for swatches, Shift-click for the color mixer Kontur: renk örnekleri için tıklayın, renk karıştırıcı için Shift tuşunu basılı tutarak tıklayın + Style Stil + Style Attributes Stil Nitelikleri + Style Attributes (Entity References) Stil Nitelikleri (Varlık Referansları) + Style Name: Stil Adı: + Style: Stil: + Styling: Şekillendirme: + Stylize Stilize Et + Subdivisions Alt bölümler + Subscript Abonelik + Subscript (on the roadmap) Abonelik (yol haritasında) + Subscript: Abonelik: + Subset fonts below: Aşağıdaki yazı tiplerinin alt kümesi: + Subtract Çıkar + Suffix son ek + Summary Özet + Superscript Üst simge + Superscript (on the roadmap) Üst simge (yol haritasında) + Superscript: Üst simge: + SVG Filters SVG Filtreleri + SVG Interactivity SVG Etkileşimi + SVG Options SVG Seçenekleri + SVG Profile: SVG Profili: + Swap Fill and Stroke Dolgu ve Konturu Değiştir + Swap Fill and Stroke (Shift+X) Dolgu ve Konturu Değiştir (Shift+X) + Swap start and end arrowheads Başlangıç ve bitiş ok uçlarını değiştirin + Swap the selected object for the file, keeping its place and transform Seçilen nesneyi, yerini koruyarak dosyayla değiştirin ve dönüştürün + Swash çalkalama + Swatch Conflict Renk Örneği Çatışması + Swatch Conflicts Renk Örneği Çatışmaları + Swatch exchange files keep solid colors only. Renk örneği değişim dosyaları yalnızca düz renkleri korur. + Swatch Libraries Renk Örneği Kitaplıkları + Swatch Libraries Menu Swatch Kitaplıkları Menüsü + Swatch Library Renk Örneği Kitaplığı + Swatch Name: Renk Örneği Adı: + Swatch Options Renk Örneği Seçenekleri + Swatch Options… Renk Örneği Seçenekleri… + Swatch Tiles Renk Örneği Fayansları + Swatches Renk Örnekleri + Switch workspace Çalışma alanını değiştir + Add Content İçerik Ekle + Click to apply to the selected type Seçilen türe uygulamak için tıklayın + Create New Library Yeni Kitaplık Oluştur + Create New Library… Yeni Kitaplık Oluştur… + Rename Library… Kitaplığı Yeniden Adlandır… + Delete the library “{name}”? “{name}” kitaplığı silinsin mi? + Drag art or swatches here, or use + to add the selection's colors and text styles. Resmi veya renk örneklerini buraya sürükleyin veya seçimin renklerini ve metin stillerini eklemek için + işaretini kullanın. + Its graphics, colors and text styles are deleted from this machine. Grafikleri, renkleri ve metin stilleri bu makineden silinir. + Keep graphics, colors and text styles here to use them in any document. Libraries are stored on this machine — no account required. Grafikleri, renkleri ve metin stillerini herhangi bir belgede kullanmak için burada tutun. Kitaplıklar bu makinede depolanır; hesap gerekmez. + This library is empty Bu kütüphane boş + Add to Library Kitaplığa Ekle + Delete Library Kitaplığı Sil + Delete Library Item Kitaplık Öğesini Sil + No results Sonuç yok + No items in this library match “{query}”. Bu kitaplıktaki hiçbir öğe “{query}” ile eşleşmiyor. + Right-click an item to move it into this group. Bu gruba taşımak için bir öğeyi sağ tıklayın. + New Group Yeni Grup + New Group… Yeni Grup… + Move to Group Gruba Taşı + No Group Grup Yok + Rename Group… Grubu Yeniden Adlandır… + Delete Group Grubu Sil + Import Library… Kütüphaneyi İçe Aktar… + Export Library… Kütüphaneyi Dışa Aktar… + Import Library Kütüphaneyi İçe Aktar + Export Library Kütüphaneyi Dışa Aktar + New Library Group Yeni Kütüphane Grubu + Rename Library Group Kitaplık Grubunu Yeniden Adlandır + Delete Library Group Kütüphane Grubunu Sil + Move Library Item to Group Kitaplık Öğesini Gruba Taşı + Library Kütüphane + Rename Library Kitaplığı Yeniden Adlandır + Show Library Kitaplığı Göster + Use Library Item Kitaplık Öğesini Kullan + Graphic Grafik + Show all open documents Tüm açık belgeleri göster + Symbol Instance Sembol Örneği + Symbol Libraries Sembol Kitaplıkları + Symbol Libraries (on the roadmap) Sembol Kitaplıkları (yol haritasında) + Symbol Screener Tool Sembol Perdeleyici Aracı + Symbol Scruncher Tool Sembol Ezici Aracı + Symbol Shifter Tool Sembol Yer Değiştirme Aracı + Symbol Sizer Tool Sembol Boyutlandırıcı Aracı + Symbol Spinner Tool Sembol Çevirici Aracı + Symbol Sprayer Sembol Püskürtücü + Symbol Sprayer Tool Sembol Spreyi Aracı + Symbol Stainer Tool Sembol Boyayıcı Aracı + Symbol Styler Tool Sembol Stilcisi Aracı + Symbolism Tool Sembolizm Aracı + Symbols Semboller + System Layout Sistem Düzeni + Tab Sekme + Tab Stops Sekme Durakları + Tabs Sekmeler + Tabular Lining Sekmeli Astar + Tabular Oldstyle Tablolu Eski Stil + Target Hedef + Target Contents Hedef İçerikler + Target: Hedef: + Tate-chu-yoko Tate-chu-yoko + Temperature Sıcaklık + Temperature/Tint… Sıcaklık/Renk Tonu… + Template Şablon + Templates Şablonlar + Templates Folder Şablonlar Klasörü + Templates… Şablonlar… + Text Displayed in Cell: Hücrede Görüntülenen Metin: + Text Export Options Metin Dışa Aktarma Seçenekleri + Text Fill Color Metin Dolgu Rengi + Text Import Options Metin İçe Aktarma Seçenekleri + Text Stroke Color Metin Kontur Rengi + Text Wrap Metin Kaydırma + Text Wrap Options Metin Sarma Seçenekleri + Text Wrap Options… Metin Sarma Seçenekleri… + The bounds of the visible art. Görünür sanatın sınırları. + The cell shows the type object's text as HTML. Hücre, yazım nesnesinin metnini HTML olarak gösterir. + The document has no colour swatches. Belgede renk örneği yok. + The edge of the paper the printer can't reach: the art goes inside it, and the preview shows it dashed. Yazıcının kağıdın ulaşamayacağı kenarı: Resim onun içine girer ve önizlemede kesikli çizgi gösterilir. + The page as it prints Sayfa yazdırılırken + the preset ön ayar + The Print Tiling tool placed the pages. Yazdırma Döşeme aracı sayfaları yerleştirdi. + The selected objects have no CSS of their own (see below). Seçilen nesnelerin kendilerine ait CSS'leri yoktur (aşağıya bakın). + The system's settings of this printer Bu yazıcının sistem ayarları + Thin Space İnce Uzay + Third Space Üçüncü Uzay + Third Vanishing Point: Üçüncü Ufuk Noktası: + This document already has a swatch named “{name}” with another color. Bu belgede zaten "{name}" adında ve başka bir renkte bir renk örneği var. + This library is empty. Bu kütüphane boş. + This panel is on the roadmap (see the parity plan). Bu panel yol haritası üzerindedir (eşlik planına bakınız). + Threaded Text Zincirli Metin + Threads Konular + Three Point Üç Nokta + Three Point Perspective Üç Noktalı Perspektif + Three Point Perspective Preset 1 Üç Noktalı Perspektif Ön Ayarı 1 + Three Point Perspective Preset 2 Üç Noktalı Perspektif Ön Ayarı 2 + Three Point Perspective Preset 3 Üç Noktalı Perspektif Ön Ayarı 3 + Three Point Perspective Preset 4 Üç Noktalı Perspektif Ön Ayarı 4 + Three Point Perspective Preset 5 Üç Noktalı Perspektif Ön Ayarı 5 + Threshold Eşik + Thumbnail View Küçük Resim Görünümü + Thumbnails: Küçük resimler: + Tile Fayans + Tile Edge Color Döşeme Kenar Rengi + Tile Edge Color… Döşeme Kenar Rengi… + Tile Full Pages Tam Sayfaları Döşe + Tile Range: Döşeme Aralığı: + Tile Type: Döşeme Türü: + tile {number} kiremit {number} + Tiles are numbered across, then down; leave the range empty for every tile. Fayanslar önce baştan sonra aşağı doğru numaralandırılır; aralığı her döşeme için boş bırakın. + Tint Renk tonu + Tip extends past the end point İpucu bitiş noktasının ötesine uzanıyor + Tip on the end point Bitiş noktasına dair ipucu + Title Case Başlık Durumu + to için + Toggle Fill/Stroke Focus Dolgu/Kontur Odağını Değiştir + Toggle Selection Seçimi Değiştir + Toggle single/double column Tek/çift sütunu değiştir + Tolerance Hoşgörü + Tolerance: Tolerans: + Tool Option Araç Seçeneği + Tool Options… Araç Seçenekleri… + Toolbar: Advanced / Basic Araç Çubuğu: Gelişmiş / Temel + Toolbar: Single/Double Column Araç Çubuğu: Tek/Çift Sütun + Toolbar: Add Tool Araç Çubuğu: Araç Ekle + Toolbar: Remove Tool Araç Çubuğu: Aracı Kaldır + Toolbar: Reset Araç Çubuğu: Sıfırla + Toolbars Araç çubukları + Tools Araçlar + Top Üst + Top in Front Önde Üst + Top: Üst: + Total Width: Toplam Genişlik: + Touch Type Tool Dokunmatik Yazım Aracı + Trace İz + Trace the image with the Default preset Görüntüyü Varsayılan ön ayarla izleyin + Tracking Takip + Trademark Symbol Ticari Marka Sembolü + Transform Dönüştür + Transform Again Yeniden Dönüştür + Transform Both Her İkisini de Dönüştür + Transform Each Her Birini Dönüştür + Transform Each… Her Birini Dönüştür… + Transform in Perspective Perspektifte Dönüşüm + Transform Object Only Yalnızca Nesneyi Dönüştür + Transform Panel Paneli Dönüştür + Transform Pattern Only Yalnızca Deseni Dönüştür + Transform Pattern Tiles Desen Döşemelerini Dönüştür + Transform Patterns Desenleri Dönüştür + Transform Tools Dönüştürme Araçları + Transforms Dönüşümler + Transform… Dönüştür… + Transparency Saydamlık + Transparency Flattener Presets Şeffaflık Düzleştirici Ön Ayarları + Transparency Flattener Presets… Şeffaflık Düzleştirici Ön Ayarları… + Transparency Grid Şeffaflık Izgarası + Transparency Info Şeffaflık Bilgileri + Transparency is flattened with the preset. Type is written as outlines; gradients as bands of colour. Şeffaflık ön ayarla düzleştirilir. Tip ana hatlar halinde yazılır; renk bantları olarak degradeler. + Transparency is flattened with the preset. Type is written as outlines; gradients stay smooth. Şeffaflık ön ayarla düzleştirilir. Tip ana hatlar halinde yazılır; degradeler düzgün kalır. + Transparency Options Şeffaflık Seçenekleri + Transparent Şeffaf + Transparent (Default) Şeffaf (Varsayılan) + Transparent Background Şeffaf Arka Plan + Transverse (the page a quarter turn on the paper) Enine (kağıt üzerinde çeyrek tur dönüş yapan sayfa) + Trap… Tuzak… + Trim Kırpma + Trim mark weight: Trim işareti ağırlığı: + Trim marks Kırpma işaretleri + Trim View Görünümü Kırp + True colour needs version 2004 or later: the nearest of 256 colours is written. Gerçek rengin 2004 veya üzeri bir sürüme ihtiyacı vardır: 256 renkten en yakın olanı yazılır. + Turn off Data Recovery for complex documents Karmaşık belgeler için Veri Kurtarma'yı kapatın + Tweak… İnce ayar… + Twirl Rate: Dönme Hızı: + Twirl Tool Burgu Aracı + Twist… Büküm… + Two Point İki Nokta + Two Point Perspective İki Noktalı Perspektif + Two Point Perspective Preset 1 İki Noktalı Perspektif Ön Ayarı 1 + Two Point Perspective Preset 2 İki Noktalı Perspektif Ön Ayarı 2 + Two Point Perspective Preset 3 İki Noktalı Perspektif Ön Ayarı 3 + Two Point Perspective Preset 4 İki Noktalı Perspektif Ön Ayarı 4 + Two Point Perspective Preset 5 İki Noktalı Perspektif Ön Ayarı 5 + Type Yazı + Type becomes outlines, and strokes a CAD line can't draw become filled shapes. Yazı ana hatlara dönüşür ve bir CAD çizgisinin çizemediği konturlar doldurulmuş şekillere dönüşür. + Type Object Selection by Path Only Yalnızca Yola Göre Nesne Seçimini Yazın + Type on a Path Bir Yola Yazın + Type on a Path Options Yol Seçenekleri Üzerine Yazma + Type on a Path Options… Yol Seçenekleri Üzerine Yazma… + Type on a Path Tool Yola Yazma Aracı + Type Orientation Tip Yönü + Type stays text, and every stroke is a line with its lineweight and dashes. Yazı metin olarak kalır ve her kontur, çizgi kalınlığı ve tireleriyle birlikte bir çizgidir. + Type Tool Yazım Aracı + Type: Tür: + Type… Tür… + UI Brightness Kullanıcı Arayüzü Parlaklığı + UI Scaling Kullanıcı Arayüzü Ölçeklendirme + Underline Altı çizili + Undo Geri Al + Undo {name} {name}'yi geri al + Undo {} {} işlemini geri al + Unembed Gömmeyi kaldır + Unembedded to {} {} konumuna kaldırıldı + Unembed… Gömmeyi kaldır… + Ungroup Grubu Çöz + Ungroup Color Group Renk Grubunun Grubunu Çöz + Unicode Unicode + Unicode (UTF-16) Unicode (UTF-16) + Unicode (UTF-8) Unicode (UTF-8) + Uniform Üniforma + Unique Benzersiz + Unite Birleşin + Unite and Simplify Birleşin ve Basitleştirin + Units Birimler + Units: Birimler: + Units: {units} Birimler: {units} + Unlink harmony colors Uyum renklerinin bağlantısını kaldır + Unlink Opacity Mask Opaklık Maskesinin Bağlantısını Kaldır + Unlink the mask Maskenin bağlantısını kaldır + Unlock Kilidi aç + Unlock All Tümünün Kilidini Aç + Unlock All Layers Tüm Katmanların Kilidini Aç + Unlock Grid Izgaranın Kilidini Aç + Unlock Guides Kılavuzların Kilidini Aç + Unnamed Objects Adsız Nesneler + Unprintable margin: Yazdırılamayan kenar boşluğu: + Unshift Kaydırmayı kaldır + Untitled İsimsiz + Update Link Bağlantıyı Güncelle + Update Links Bağlantıları Güncelle + Update Changed Links Değiştirilen Bağlantıları Güncelle + Update Modified Links Değiştirilen Bağlantıları Güncelle + Updated {} image(s) {} resim güncellendi + UPPERCASE BÜYÜK HARF + URL: URL'si: + Use Kullanım + Use Artboards Çalışma Yüzeylerini Kullan + Use Black Point Compensation Siyah Nokta Telafisi Kullan + Use Compression Sıkıştırmayı Kullan + Use document bleed settings Belge taşma payı ayarlarını kullan + Use Even-Odd Fill Rule Çift-Tek Doldurma Kuralını Kullan + Use Japanese Crop Marks Japonca Kırpma İşaretlerini Kullan + Use Low Resolution Proxy for Linked EPS Bağlantılı EPS için Düşük Çözünürlüklü Proxy Kullanın + Use Non-Zero Winding Fill Rule Sıfır Olmayan Sarma Doldurma Kuralını Kullan + Use Precise Cursors Hassas İmleçler Kullanın + Use Pressure Pen Basınç Kalemini Kullan + Use Preview Bounds Önizleme Sınırlarını Kullan + Use Registration Point for Symbol Sembol için Kayıt Noktasını Kullan + Use Square for Previews Önizlemeler için Square'i kullanın + Use Text for Previews Önizlemeler için Metin Kullan + Use the document's swatch: pasted colors take its color. Belgenin renk örneğini kullanın: yapıştırılan renkler kendi rengini alır. + Use the Selected Text's Font Seçilen Metnin Yazı Tipini Kullan + Use Typographer's Quotes Tipografın Sözlerini Kullan + User Defined Kullanıcı Tanımlı + User Defined Libraries Kullanıcı Tanımlı Kütüphaneler + User Graphic Style Library 1 Kullanıcı Grafik Stili Kitaplığı 1 + User Graphic Style Library 10 Kullanıcı Grafik Stili Kitaplığı 10 + User Graphic Style Library 2 Kullanıcı Grafik Stili Kitaplığı 2 + User Graphic Style Library 3 Kullanıcı Grafik Stili Kitaplığı 3 + User Graphic Style Library 4 Kullanıcı Grafik Stili Kitaplığı 4 + User Graphic Style Library 5 Kullanıcı Grafik Stili Kitaplığı 5 + User Graphic Style Library 6 Kullanıcı Grafiği Stil Kitaplığı 6 + User Graphic Style Library 7 Kullanıcı Grafiği Stil Kitaplığı 7 + User Graphic Style Library 8 Kullanıcı Grafik Stili Kitaplığı 8 + User Graphic Style Library 9 Kullanıcı Grafik Stili Kitaplığı 9 + User Interface Kullanıcı Arayüzü + User Library Kullanıcı Kitaplığı + User Preset Kullanıcı Ön Ayarı + User Swatch Library 1 Kullanıcı Swatch Kitaplığı 1 + User Swatch Library 10 Kullanıcı Swatch Kitaplığı 10 + User Swatch Library 2 Kullanıcı Swatch Kitaplığı 2 + User Swatch Library 3 Kullanıcı Swatch Kitaplığı 3 + User Swatch Library 4 Kullanıcı Swatch Kitaplığı 4 + User Swatch Library 5 Kullanıcı Renk Örneği Kitaplığı 5 + User Swatch Library 6 Kullanıcı Swatch Kitaplığı 6 + User Swatch Library 7 Kullanıcı Renk Örneği Kitaplığı 7 + User Swatch Library 8 Kullanıcı Swatch Kitaplığı 8 + User Swatch Library 9 Kullanıcı Swatch Kitaplığı 9 + V Spacing: V Aralığı: + V: V: + Variable Width Profile Değişken Genişlik Profili + Variables Değişkenler + New Variable Yeni Değişken + Delete Variable Değişkeni Sil + List Variables Değişkenleri Listeleme + Bind Variable Değişkeni Bağla + Unbind Variable Değişkenin Bağlantısını Çöz + New Data Set Yeni Veri Seti + Delete Data Set Veri Kümesini Sil + List Data Sets Veri Kümelerini Listeleme + Select Data Set Veri Kümesini Seçin + Next Data Set Sonraki Veri Seti + Previous Data Set Önceki Veri Seti + Data Sets Veri Setleri + New Variable… Yeni Değişken… + New Data Set… Yeni Veri Seti… + Edit Data Set… Veri Kümesini Düzenle… + Data Set Veri Seti + Kind tür + Variable Değişken + no document belge yok + no data set to edit düzenlenecek veri kümesi yok + Make Text Dynamic Metni Dinamik Hale Getirin + Make Visibility Dynamic Görünürlüğü Dinamik Hale Getirin + Capture Data Set Veri Kümesini Yakala + Update Data Set Veri Kümesini Güncelle + Rename Data Set… Veri Kümesini Yeniden Adlandır… + Variable Options… Değişken Seçenekler… + Select Bound Object Bağlı Nesneyi Seç + Select All Bound Objects Tüm Bağlı Nesneleri Seç + Multiple objects Çoklu nesneler + New Name Yeni Ad + no variable to rename yeniden adlandırılacak değişken yok + no data set to rename yeniden adlandırılacak veri kümesi yok + Variation: Varyasyon: + Vector Effects Vektör Efektleri + Vector Halftone Vektör Noktalı Resim + Vector Halftone… Vektör Noktalı Resim… + Vector illustration — fast, open, scriptable. Vektör illüstrasyonu — hızlı, açık, yazılabilir. + VectorCraft didn't quit normally last time. These documents had unsaved changes: VectorCraft geçen sefer normal şekilde kapanmamıştı. Bu belgelerde kaydedilmemiş değişiklikler vardı: + VectorCraft Help… VectorCraft Yardımı… + VectorCraft on getartcraft.com Getartcraft.com'da VectorCraft + VectorCraft on GitHub GitHub'da VectorCraft + Vectors Vektörler + Version {version} — open-source vector illustration in pure Rust. Sürüm {version} — saf Rust'ta açık kaynaklı vektör çizimi. + Version: Sürüm: + Vertical Dikey + Vertical % Dikey % + Vertical Align Bottom Dikey Alta Hizala + Vertical Align Center Dikey Hizalama Merkezi + Horizontal & Vertical Align Center Yatay ve Dikey Hizalama Merkezi + Vertical Align Top Dikey Hizalama Üst + Vertical Area Type Tool Dikey Alan Metni Aracı + Vertical Distribute Bottom Dikey Dağıtım Alt + Vertical Distribute Center Dikey Dağıtım Merkezi + Vertical Distribute Space Dikey Dağıtım Alanı + Vertical Distribute Top Dikey Dağıt Üst + Vertical Scale % Dikey Ölçek %'si + Vertical Type on a Path Tool Dikey Yola Yazma Aracı + Vertical Type Tool Dikey Metin Aracı + Vertical: Dikey: + Very High Çok Yüksek + View Görünüm + View Artboard Only Yalnızca Çalışma Yüzeyini Görüntüle + View Opacity Mask Opaklık Maskesini Görüntüle + View PDF after saving Kaydettikten sonra PDF'yi görüntüle + View {n} {n}'yi görüntüle + Viewing Angle: Görüş Açısı: + Viewing Distance: Görüş Mesafesi: + W: W: + Warnings Uyarılar + Warp Çözgü + Warp Options Çözgü Seçenekleri + Warp Tool Çarpıtma Aracı + Wave… Dalga… + Web 1920×1080 İnternet 1920×1080 + Web Safe 216 Web Güvenliği 216 + Web Safe RGB Web Güvenli RGB + Web Shift Web Değişimi + Web Snap: Web Snap: + Weight Ağırlık + Weight: Ağırlık: + Welcome to VectorCraft VectorCraft'a hoş geldiniz + When pasting text Metin yapıştırırken + White Beyaz + Widget Position: Widget Konumu: + Width Genişlik + Width and Height Genişlik ve Yükseklik + Width Point Genişlik Noktası + Width Point Edit Genişlik Noktası Düzenle + Width Point Edit… Genişlik Noktası Düzenle… + Width Profile Genişlik Profili + Width Profiles Genişlik Profilleri + Width Tool Genişlik Aracı + Width: Genişlik: + Window Pencere + Windows Windows + Working CMYK CMYK'de çalışıyor + Working CMYK (don't tag) CMYK çalışıyor (etiketlemeyin) + Workspace Çalışma Alanı + Workspace {i} Çalışma Alanı {i} + Wrinkle Tool Kırışıklık Aracı + Write Layers Katmanları Yaz + XML ID XML kimliği + Yards Yarda + Yellow Sarı + Your browser downloads the files (several as one .zip). Tarayıcınız dosyaları indirir (birkaç tanesi tek bir .zip olarak). + Your changes will be lost if you don't save them. Kaydetmezseniz değişiklikleriniz kaybolacaktır. + Zig Zag… Zig Zag… + Zoom In Yakınlaştır + Zoom Out Uzaklaştır + Zoom to Selection Seçimi Yakınlaştır + Zoom Tool Yakınlaştırma Aracı + Zoom with Mouse Wheel Fare Tekerleği ile Yakınlaştırma + Scrub Numeric Fields by Dragging Sayısal Alanları Sürükleyerek Fırçalayın + {count} file(s) in {folder}{note}. Show the package folder? {folder}{note} içindeki {count} dosyası/dosyaları. Paket klasörü gösterilsin mi? + {count} linked file(s) not found {count} bağlantılı dosya(lar) bulunamadı + fonts not copied: {fonts} kopyalanmayan yazı tipleri: {fonts} + {count} linked image(s) changed since this document was saved. Show the new versions? {count} bağlantılı görseller bu belgenin kaydedilmesinden bu yana değiştirildi. Yeni sürümler gösterilsin mi? + {count} linked image(s) changed on disk. Show the new versions? {count} bağlantılı görseller diskte değiştirildi. Yeni sürümler gösterilsin mi? + {count} more rules: Export writes every one. {count} daha fazla kural: Dışa aktarma her birini yazar. + {count} unnamed objects left out: name them, or turn on Unnamed Objects in the panel menu. {count} adsız nesneler dışarıda bırakıldı: bunlara ad verin veya panel menüsünde Adsız Nesneler'i açın. + {effect} is already applied {effect} zaten uygulandı + {format} Options {format} Seçenekleri + {kind} Gradient {kind} Degrade + {kind} Style Options… {kind} Stil Seçenekleri… + {kind}, {model} {kind}, {model} + {name} (spot) {name} (nokta) + {pages} in all, {count} per copy Toplam {pages}, kopya başına {count} + {page} of {count} {count}'nin {page}'si + {percent}% opacity {percent}% opaklık + {secs} sec {secs} sn + {shortcut} with the tool sizes the brush Fırçayı boyutlandırma aracıyla {shortcut} + {title} (selection) {title} (seçim) + {tool} Options {tool} Seçenekleri + {tool} Tool Options {tool} Araç Seçenekleri + {warning}: click to correct to the closest color ({hex}) {warning}: en yakın renge ({hex}) düzeltmek için tıklayın + “{file}” is protected by a password. “{file}” bir şifre ile korunmaktadır. + ● Recording ● Kayıt +imageTrace Outline Kontur +@plural {n} item|{n} items {n} öğe +@plural Color Table ({n} color)|Color Table ({n} colors) Renk Tablosu ({n} renk) +@plural Delete this {n} graphic style?|Delete these {n} graphic styles? Bu {n} grafik stili silinsin mi? +@plural {n} Layer|{n} Layers {n} Katman +@plural {n} Object|{n} Objects {n} Nesne +@plural {n} area highlighted|{n} areas highlighted {n} alan vurgulandı +@plural {n} color|{n} colors {n} renk +@plural {n} fill|{n} fills {n} dolgu +@plural {n} glyph|{n} glyphs {n} glif +@plural {n} object highlighted|{n} objects highlighted {n} nesne vurgulandı +@plural {n} star|{n} stars {n} yıldız +@plural {n} step|{n} steps {n} adım +@plural {n} stroke|{n} strokes {n} kontur + the object to select | seçilecek nesne | + to select multiple objects | birden fazla nesne seçmek için | + the object to duplicate çoğaltılacak nesne + an anchor or path segment to select it | seçmek için bir bağlantı veya yol parçası | + to move | taşınmak | + to add eklemek + to add a corner point | köşe noktası eklemek için | + to add a smooth point | düzgün bir nokta eklemek için | + to close | kapatmak için | + to finish bitirmek + to add smooth points | düzgün noktalar eklemek için | + to toggle corner | köşeyi değiştirmek için | + to create point type | nokta türü oluşturmak için | + to create area type | alan türü oluşturmak için | + to exit editing düzenlemeden çıkmak için + to draw | çizmek | + to constrain proportions | oranları sınırlamak için | + from center | merkezden | + for exact size tam boyut için + to set the reference point | referans noktasını ayarlamak için | + to transform | dönüştürmek | + for exact values kesin değerler için + to pan the view görünümü kaydırmak için + to zoom in | yakınlaştırmak için | + to zoom out | uzaklaştırmak için | + to zoom into an area bir alanı yakınlaştırmak için + Hold Basılı tutun + right or left to zoom in or out | yakınlaştırmak veya uzaklaştırmak için sağa veya sola | + to keep zooming yakınlaştırmaya devam etmek + an object to copy its attributes | niteliklerini kopyalayacak bir nesne | + to apply the selection's to it | seçimi ona uygulamak için | + to sample a color bir rengi örneklemek + across a selected object to set the gradient direction degrade yönünü ayarlamak için seçilen bir nesnenin üzerinde + to select an artboard | çalışma yüzeyi seçmek için | + on the canvas to create one bir tane oluşturmak için tuval üzerinde + a stroke to add a width point | genişlik noktası eklemek için kontur | + to change one side | bir tarafı değiştirmek için | + to select more points | daha fazla nokta seçmek için | + a point to edit it | düzenlemek için bir nokta | + to remove points noktaları kaldırmak için + the art to add a pin | raptiye ekleme sanatı | + to select more pins | daha fazla pin seçmek için | + a pin to warp | çözgü için bir iğne | + near a selected pin to rotate | döndürmek için seçilen raptiyenin yakınında | + to remove pins pinleri çıkarmak için + across paths to push them along | onları ilerletmek için yollar boyunca | + to size the brush ( fırçayı boyutlandırmak için ( + keeps its proportions) oranlarını korur) + over paths, and hold still to keep going | yolların üzerinden geçin ve ilerlemeye devam etmek için hareketsiz kalın | + over paths to roughen their outlines | ana hatlarını pürüzlendirmek için yollar üzerinde | + to move in perspective | perspektifte hareket etmek için | + to copy | kopyalamak için | + while dragging to move perpendicular to the plane | düzleme dik olarak taşımak için sürüklerken | + to scale in perspective perspektifte ölçeklendirmek + an object, then another to blend them | bir nesne, ardından bunları karıştırmak için başka bir nesne | + to blend from it | ondan harmanlamak için | + to set spacing and orientation aralığı ve yönlendirmeyi ayarlamak için + : : + Isolate Selected Group Seçili Grubu İzole Et + Isolate Selected Object Seçili Nesneyi Ayır + Release Clipping Mask Kırpma Maskesini Serbest Bırakın + Make Compound Path Bileşik Yol Yap + Release Compound Path Bileşik Yolu Serbest Bırak + — substituted by {style} - {style} ile değiştirildi + — {n} characters from another font — Başka bir yazı tipinden {n} karakterler + [Normal Character Style] [Normal Karakter Stili] + [Normal Paragraph Style] [Normal Paragraf Stili] + Top-to-Top Leading Tepeden Tepeye Liderlik + Bottom-to-Bottom Leading Aşağıdan Aşağıya Öncülük + Burasagari Burasagari + Force kuvvet + About Hakkında + Contributors Katkıda Bulunanlar + Models Modeller + Username Kullanıcı adı + Display name Görünen ad + Real name Gerçek isim + Sort Sırala + Reverse the order Sırayı tersine çevir + Grab bag Çantayı al + Table Tablo + Name (A–Z) Ad (A–Z) + Merged PRs Birleştirilmiş PR'ler + Commits Taahhütler + Lines added Satırlar eklendi + Lines deleted Satırlar silindi + Line delta Çizgi deltası + Binary assets added İkili varlıklar eklendi + Binary assets removed İkili varlıklar kaldırıldı + First commit İlk taahhüt + Last commit Son taahhüt + First İlk + Last Son + {people} contributors · {commits} commits {people} katkıda bulunanlar · {commits} taahhütleri + No contributor data was built into this copy. Bu kopyaya hiçbir katkıda bulunan verisi eklenmedi. + No model credits were built into this copy. Bu kopyaya hiçbir model kredisi eklenmemiştir. + Company Şirket + Version Sürüm + % of all commits Tüm taahhütlerin yüzdesi + Lines +/− Çizgiler +/− + Joins Katılıyor + Miter Gönye + Bevel Eğim + Offset Ofset + Axis Eksen +axis Horizontal Yatay +axis Vertical Dikey +axis Both Her İkisi + Drag to move Taşımak için sürükleyin + Drag to move out of the set Setin dışına çıkmak için sürükleyin + Drag to float as a toolbar Bağımsız araç çubuğu yapmak için sürükleyin + Put back in the toolbar Araç çubuğuna geri yerleştir + Float Panel Paneli Yüzer Yap + Dock Panel Bağlantı İstasyonu Paneli + Drag to float the panel group Panel grubunu ayırmak için sürükleyin + Put back in the dock Dock'a geri koy + Drag to float the toolbar Araç çubuğunu ayırmak için sürükleyin + Drag to the window's left edge to dock Sabitlemek için pencerenin sol kenarına sürükleyin + Float Tool Group Araç Grubunu Yüzer Yap +@msg no library `{id}` `{id}` kütüphanesi yok +@msg select some type first önce bir tür seçin +@msg {_1} has no {_2} style {_1}'nin {_2} stili yok +@msg a layer couldn't be read bir katman okunamadı +@msg it has more than one artboard birden fazla çalışma yüzeyi var +@msg it has no page sayfası yok +@msg it has too many text objects çok fazla metin nesnesi var +@msg it has too much text çok fazla metin var +@msg its editing data doesn't say where its artboard is düzenleme verileri çalışma yüzeyinin nerede olduğunu söylemiyor +@msg its editing data has no layers düzenleme verilerinin katmanı yok +@msg its editing data is damaged düzenleme verileri zarar görmüş +@msg its editing data is for a different page düzenleme verileri farklı bir sayfaya aittir +@msg its layers use {_1}, which aren't read yet katmanları henüz okunmamış {_1} kullanıyor +@msg its page has text, and its layers have no text objects to put it in sayfasında metin var ve katmanlarında onu koyacak metin nesneleri yok +@msg its type is to come in as outlines, which only its page has türü, yalnızca kendi sayfasında bulunan ana hatlar olarak gelmektir +@msg the art on them differs from the page's in {_1}% of it üzerlerindeki görseller sayfadakilerden %{_1} oranında farklı +@msg the art on them differs from the page's in {_1}% of it: they come from its editing data all the same üzerlerindeki görseller sayfanınkinden %{_1} oranında farklıdır: yine de düzenleme verilerinden gelirler +@msg the file's layers weren't read ({_1}): it comes in as its page, in one layer dosyanın katmanları okunmadı ({_1}): tek katmanda kendi sayfası olarak geliyor +@msg the file's layers weren't read from its editing data ({_1}): they come from its PDF part dosyanın katmanları düzenleme verilerinden okunmadı ({_1}): PDF kısmından geliyorlar +@msg `to` must be "corner" or "smooth" "to" "köşe" veya "pürüzsüz" olmalıdır +@msg BMP files are RGB or grayscale: colorModel rgb or gray BMP dosyaları RGB veya gri tonlamalıdır: colorModel rgb veya gri +@msg Blend colors: select at least three objects with filled colours Renkleri karıştır: dolgulu renklere sahip en az üç nesne seçin +@msg Combine Slices: the slices have no bounds Dilimleri Birleştir: dilimlerin sınırları yoktur +@msg Convert to Artboards: selection has no area Çalışma Yüzeylerine Dönüştür: seçimin alanı yok +@msg Convert to Shape: no rectangles or ellipses selected Şekle Dönüştür: seçili dikdörtgen veya elips yok +@msg Copied the CSS of {rules} object(s) {rules} nesnelerinin CSS'si kopyalandı +@msg Copied the script report Komut dosyası raporu kopyalandı +@msg Corners edits the corners of a path Köşeler bir yolun köşelerini düzenler +@msg Couldn't copy to the system clipboard: {e} Sistem panosuna kopyalanamadı: {e} +@msg Couldn't open {name}: {e} {name} açılamadı: {e} +@msg Couldn't place {name}: the document it was dropped on was closed {name} yerleştirilemedi: bırakıldığı belge kapatıldı +@msg Couldn't read {name}: {e} {name} okunamadı: {e} +@msg Couldn't save recovery data: {e} Kurtarma verileri kaydedilemedi: {e} +@msg Create Outlines: select text objects Anahatlar Oluştur: metin nesnelerini seçin +@msg Create from Guides: the document has no artboard Kılavuzlardan Oluştur: belgede çalışma yüzeyi yok +@msg Create from Guides: the guides make more than {MAX_PIECES} slices Kılavuzlardan Oluşturun: kılavuzlar {MAX_PIECES} dilimlerinden daha fazlasını oluşturur +@msg Create from Selection: the selection has no area Seçimden Oluştur: Seçimin alanı yok +@msg Data Recovery has nowhere to keep copies: set Preferences → File Handling → Data Recovery → Folder (recoveryFolder) Veri Kurtarma'nın kopyaları saklayacak yeri yoktur: Tercihleri ayarlayın → Dosya İşleme → Veri Kurtarma → Klasör (recoveryFolder) +@msg direct-select anchor points to cut at (not the end points of open paths) kesilecek bağlantı noktalarını doğrudan seçin (açık yolların bitiş noktalarını değil) +@msg Divide Objects Below: select a path Aşağıdaki Nesneleri Böl: bir yol seçin +@msg Divide Objects Below: select exactly one path Aşağıdaki Nesneleri Böl: tam olarak bir yol seçin +@msg Downloaded {_1} file(s) İndirilen {_1} dosya(lar)ı +@msg Downloaded {what} {what} indirildi +@msg Expand Appearance: the selection has a basic appearance Görünümü Genişlet: seçimin temel bir görünümü vardır +@msg Expand: no brush strokes selected Genişlet: seçili fırça darbesi yok +@msg Expand: no gradient fills Genişlet: degrade dolgu yok +@msg Expand: nothing to expand Genişlet: genişletilecek bir şey yok +@msg Exported {count} file(s) to {folder} {count} dosyası/dosyaları {folder}'ye aktarıldı +@msg Exported {path} Dışa aktarılan {path} +@msg Flatten Transparency: select objects to flatten Düzleştir Şeffaflığı: düzleştirilecek nesneleri seçin +@msg Flatten Transparency: {e} Şeffaflığı Düzleştir: {e} +@msg Image Trace: the traced image is missing Görüntü İzleme: izlenen görüntü eksik +@msg Imported {what}: {_1} İthal {what}: {_1} +@msg Installed plug-in {_1} Yüklü eklenti {_1} +@msg Internal error: {msg} (please report this bug) Dahili hata: {msg} (lütfen bu hatayı bildirin) +@msg Live Paint Merge: select a Live Paint group and the paths to add Canlı Boyama Birleştirme: Canlı Boyama grubunu ve eklenecek yolları seçin +@msg Live Paint: select paths or compound paths Canlı Boyama: yolları veya bileşik yolları seçin +@msg Live Paint: these paths are too degenerate to paint Canlı Boyama: Bu yollar boyanamayacak kadar yozlaşmış +@msg Make Guides: select paths Kılavuzlar Oluşturun: yolları seçin +@msg No saved selections (Select → Save Selection…) Kaydedilmiş seçim yok (Seç → Seçimi Kaydet…) +@msg No saved views (View → New View…) Kaydedilmiş görünüm yok (Görünüm → Yeni Görünüm…) +@msg Offset Path: select paths Yolu Ofset: yolları seçin +@msg Offset Path: the offset leaves nothing of the selected paths (an inset larger than the shapes) Yolu Ofset: ofset, seçilen yollardan hiçbir şey bırakmaz (şekillerden daha büyük bir ek) +@msg Opened with {_1} note(s): {_2} {_1} notu/notları ile açıldı: {_2} +@msg Opened {url} {url} açıldı +@msg Outline Stroke: no stroked paths selected Anahat Konturu: konturlu yol seçilmedi +@msg PDF settings are not an object PDF ayarları bir nesne değildir +@msg PDF writer error: {0} PDF yazıcı hatası: {0} +@msg Packaged {n} file(s) in {folder}{note} {folder}{note} biçiminde paketlenmiş {n} dosyası/dosyaları +@msg Packaged {n} file(s){note} Paketlenmiş {n} dosyası/dosyaları{note} +@msg Preview in Browser needs the desktop app (the web downloads files instead) Tarayıcıdaki önizleme için masaüstü uygulaması gerekir (bunun yerine web, dosyaları indirir) +@msg Release Guides: no guides Sürüm Kılavuzları: kılavuz yok +@msg Release: no layer to put the rectangle in Serbest bırakma: dikdörtgeni yerleştirecek katman yok +@msg Replace Spine: select a blend and a path Omurgayı Değiştir: bir karışım ve yol seçin +@msg select two or more objects to distribute dağıtılacak iki veya daha fazla nesne seçin +@msg select paths or anchor points yolları veya bağlantı noktalarını seçin +@msg SVG parse error: {0} SVG ayrıştırma hatası: {0} +@msg Save for Web: the image is empty Web için Kaydet: resim boş +@msg Save writes {_1}, not {_2}: use document.export for other formats Kaydetme {_2} değil, {_1} yazar: diğer formatlar için document.export'u kullanın +@msg Saved recovery data for {title} {title} için kayıtlı kurtarma verileri +@msg Saved to User Defined: {_1} Kullanıcı Tanımlı'ya kaydedildi: {_1} +@msg Saved {path} {path} kaydedildi +@msg Select text or click into text with the Type tool to insert glyphs Glif eklemek için metni seçin veya Yazım aracıyla metne tıklayın +@msg Shape Builder: no region under the pointer Şekil Oluşturucu: işaretçinin altında bölge yok +@msg Shape Builder: select paths or compound paths Şekil Oluşturucu: yolları veya bileşik yolları seçin +@msg Show All Hidden Attributes: nothing is hidden Tüm Gizli Özellikleri Göster: hiçbir şey gizli değildir +@msg Split Into Grid: select paths large enough for the grid Izgaraya Böl: ızgara için yeterince büyük yollar seçin +@msg Targa files are RGB: colorModel rgb Targa dosyaları RGB'dir: colorModel rgb +@msg Text Wrap: select a wrap object Metin Sarma: bir sarma nesnesi seçin +@msg This shortcut file is in a form VectorCraft can't read. Bu kısayol dosyası VectorCraft'ın okuyamayacağı bir biçimdedir. +@msg `aspect` must be a number (%) "boyut" bir sayı olmalıdır (%) +@msg `at` must be [x, y] `at` [x, y] olmalıdır +@msg `color` must be a colour "renk" bir renk olmalıdır +@msg `command` must be a command whose menu item opens a dialog (see ui.menuDialog) `komut`, menü öğesi bir iletişim kutusu açan bir komut olmalıdır (bkz. ui.menuDialog) +@msg `freeform.points` must be an array "freeform.points" bir dizi olmalıdır +@msg `freeform.lines` must be an array "freeform.lines" bir dizi olmalıdır +@msg `gradient` must be an object "gradyan" bir nesne olmalıdır +@msg `library` is a library id or name (see {list}) 'kitaplık' bir kitaplık kimliği veya adıdır (bkz. {list}) +@msg `mode` applies to freeform gradients "mod" serbest biçimli degradeler için geçerlidir +@msg `sampleSize` must be 1, 3 or 5 "sampleSize" 1, 3 veya 5 olmalıdır +@msg `stops` must be an array "duraklar" bir dizi olmalıdır +@msg `svg` must be an object of SVG options (see document.formats) `svg`, SVG seçeneklerinin bir nesnesi olmalıdır (bkz. document.formats) +@msg `{_1}` is no save command `{_1}` kaydetme komutu değil +@msg `{area}` is no recovery area name `{area}`, kurtarma alanı adı değildir +@msg `{color}` is not a colour (#rrggbb or a preset name) `{color}` bir renk değildir (#rrggbb veya önceden ayarlanmış bir ad) +@msg `{id}` has no envelope dialog `{id}`de zarf iletişim kutusu yok +@msg `{keep}` is not a side of this axis `{keep}` bu eksenin bir tarafı değil +@msg `{key}` must be `auto` or a language code such as `en` or `zh-hant` "{key}", "auto" veya "en" veya "zh-hant" gibi bir dil kodu olmalıdır +@msg `{key}` must be a #rrggbb colour "{key}" #rrggbb rengi olmalıdır +@msg `{key}` must be a number "{key}" bir sayı olmalıdır +@msg `{key}` must be a string "{key}" bir dize olmalıdır +@msg `{key}` must be a whole number `{key}` bir tam sayı olmalıdır +@msg `{key}` must be a whole number between {min} and {max} (got {x}) `{key}`, {min} ile {max} arasında bir tam sayı olmalıdır ({x}'yi aldı) +@msg `{key}` must be between {min} and {max} (got {x}) `{key}`, {min} ile {max} arasında olmalıdır ({x}'yi aldı) +@msg `{key}` must be one of {_1} `{key}`, {_1}'den biri olmalıdır +@msg `{key}` must be true or false "{key}" doğru veya yanlış olmalıdır +@msg `mode` must be grayscale, rgb, hsb, cmyk or websafe "mod" gri tonlamalı, rgb, hsb, cmyk veya web uyumlu olmalıdır +@msg `{k}` must be [x, y] "{k}" [x, y] olmalıdır +@msg `{name}` has no options `{name}`nin seçeneği yok +@msg `{name}` is a built-in workspace; choose another name `{name}` yerleşik bir çalışma alanıdır; başka bir isim seç +@msg `{name}` is a process colour: tints apply to global and spot colours `{name}` bir proses renktir: renk tonları global ve spot renklere uygulanır +@msg `{name}` is no recovery entry name `{name}`, kurtarma girişi adı değil +@msg `{name}` isn't a colour swatch `{name}` bir renk örneği değil +@msg `{path}` must be a bool or an object of bools `{path}` bir bool veya bool nesnesi olmalıdır +@msg `{s}` is not a colour (#rrggbb or a preset name) `{s}` bir renk değildir (#rrggbb veya önceden ayarlanmış bir ad) +@msg `{tool}` isn't a Liquify tool `{tool}` bir Sıvılaştırma aracı değil +@msg `{tool}` isn't a freehand tool `{tool}` serbest bir araç değil +@msg `{to}` is not an available name `{to}` mevcut bir ad değil +@msg a PostScript error ({name} in `{op}`) PostScript hatası (`{op}`de {name}) +@msg a PostScript error ({name} in `{op}`), in {procs} {procs}'de PostScript hatası (`{op}`de {name}) +@msg a PostScript error ({name} in `{op}`: {at}) PostScript hatası (`{op}`de {name}: {at}) +@msg a PostScript error ({name} in `{op}`: {at}), in {procs} {procs} içinde PostScript hatası (`{op}` içinde {name}: {at}) +@msg a PostScript error ({name}) PostScript hatası ({name}) +@msg a bitmap is empty bir bitmap boş +@msg a bitmap is too large to read bir bitmap okunamayacak kadar büyük +@msg a colour index is 0 to {_1}, not {n} renk indeksi {n} değil, 0 ila {_1}'dir +@msg a colour is an index, #rrggbb or a preset name, not {v} renk {v} değil, bir dizin, #rrggbb veya önceden ayarlanmış bir addır +@msg a document needs at least one artboard bir belgenin en az bir çalışma yüzeyine ihtiyacı var +@msg a document needs at least one layer bir belgenin en az bir katmana ihtiyacı vardır +@msg a freeform gradient keeps at least one point serbest biçimli bir degrade en az bir noktayı korur +@msg a gradient needs at least two stops bir degradenin en az iki durağa ihtiyacı vardır +@msg a graphic style named `{to}` already exists `{to}` adlı bir grafik stili zaten mevcut +@msg a page is missing bir sayfa eksik +@msg a page out of range aralık dışında bir sayfa +@msg a page tree kid isn't a reference sayfa ağacı çocuğu bir referans değildir +@msg a page tree node has no kids sayfa ağacı düğümünün çocuğu yok +@msg a page's placement is not finite bir sayfanın yerleşimi sınırlı değildir +@msg a preset named `{_1}` exists `{_1}` adında bir ön ayar mevcut +@msg a slice size must be a positive number of points dilim boyutu pozitif sayıda nokta olmalıdır +@msg a stream runs past the end bir akış sonundan geçiyor +@msg a stream's length is wrong bir akışın uzunluğu yanlış +@msg a stream's length isn't a number bir akışın uzunluğu bir sayı değildir +@msg add a format to export dışa aktarılacak formatı ekleme +@msg already editing a pattern zaten bir desen düzenliyor +@msg an object can't be read bir nesne okunamıyor +@msg an object in perspective would leave the edited grid perspektifteki bir nesne düzenlenen ızgaradan ayrılır +@msg antiAlias `{id}`: none, art or type antiAlias `{id}`: yok, resim veya tür +@msg artboard {0} does not exist {0} çalışma yüzeyi mevcut değil +@msg at this scale the drawing is {w} × {h} pt, more than the canvas holds: choose a smaller scale or fit it to the artboard bu ölçekte çizim {w} × {h} nk, kanvasın sığabileceğinden daha fazladır: daha küçük bir ölçek seçin veya çalışma yüzeyine sığdırın +@msg axis must be "vertical", "horizontal" or an angle in degrees, not `{v}` eksen "{v}" değil, "dikey", "yatay" veya derece cinsinden bir açı olmalıdır +@msg background {other}: transparent, white, black or a colour such as "#ff8800" arka plan {other}: şeffaf, beyaz, siyah veya "#ff8800" gibi bir renk +@msg bad color {v} kötü renk {v} +@msg the Color Picker is not open Renk Seçici açık değil +@msg the screen color sampler is already open ekran rengi örnekleyici zaten açık +@msg this system has no screen color sampler bu sistemin ekran rengi örnekleyicisi yok +@msg bad colour `{hex}` (#rrggbb) kötü renk `{hex}` (#rrggbb) +@msg bad page tree kötü sayfa ağacı +@msg bad shortcut kötü kısayol +@msg bad stream length Kötü akış uzunluğu +@msg bad trailer kötü römork +@msg balance must be between 0 and 100 bakiye 0 ile 100 arasında olmalıdır +@msg batch step {_1} (`{id}`) failed: {e} toplu adım {_1} (`{id}`) başarısız oldu: {e} +@msg brightness must be dark|mediumDark|mediumLight|light parlaklık koyu|ortaKoyu|ortaAçık|açık olmalıdır +@msg can't encode the document: {0} belge kodlanamıyor: {0} +@msg can't parse shortcut `{c}` `{c}` kısayolu ayrıştırılamıyor +@msg can't parse shortcut `{s}` for `{k}` `{k}` için `{s}` kısayolu ayrıştırılamıyor +@msg can't save version {0}: VectorCraft writes versions {MIN_VERSION} to {VERSION} {0} sürümü kaydedilemiyor: VectorCraft, {MIN_VERSION} sürümlerini {VERSION}'ye yazıyor +@msg can't write .{ext} images .{ext} görselleri yazılamıyor +@msg cannot distort a zero-size bounding box sıfır boyutlu bir sınırlayıcı kutuyu bozamaz +@msg cannot read PDF: {0} PDF okunamıyor: {0} +@msg cannot split an open path at its end point açık bir yolu bitiş noktasında bölemez +@msg closing needs three anchors Kapanış üç çapaya ihtiyaç duyar +@msg check an asset to export dışa aktarılacak bir varlığı kontrol etme +@msg check a layer to export dışa aktarılacak katmanı kontrol edin +@msg select the art to export first önce dışa aktarılacak resmi seçin +@msg choice must be "merge" or "add", not `{choice}` seçim "{choice}" değil "birleştir" veya "ekle" olmalıdır +@msg choose a direction to divide in bölmek için bir yön seçin +@msg choose a folder to export to dışa aktarılacak bir klasör seçin +@msg choose a location for the package paket için bir yer seçin +@msg clipboard is empty pano boş +@msg colorTable.{what}: `{h}` is not a colour such as "#ff8800" colorTable.{what}: `{h}`, "#ff8800" gibi bir renk değil +@msg colorTable.{what}: at most {MAX_TABLE} colours colorTable.{what}: en fazla {MAX_TABLE} renginde +@msg command `{0}` is not available right now: {1} `{0}` komutu şu anda kullanılamıyor: {1} +@msg compound paths can only contain paths bileşik yollar yalnızca yollar içerebilir +@msg compressed (RLE) bitmaps can't be read yet sıkıştırılmış (RLE) bitmapler henüz okunamıyor +@msg damaged hasarlı +@msg decimals must be {_1}–{_2} (got {_3}) ondalık sayılar {_1}–{_2} olmalıdır ({_3}'yi aldı) +@msg divide into 1 to {MAX_PIECES} slices 1 ila {MAX_PIECES} dilimlerine bölün +@msg effect {k} is `{_1}`, not `{id}` {k} efekti "{id}" değil "{_1}"dir +@msg empty brush stroke boş fırça darbesi +@msg empty cutter boş kesici +@msg empty path boş yol +@msg file version {0} is newer than this VectorCraft supports ({VERSION}) dosya sürümü {0}, VectorCraft'ın desteklediğinden daha yenidir ({VERSION}) +@msg freeform point {i} needs `at` [x, y] and a valid `color` serbest biçimli nokta {i}'nin "[x, y]'de" ve geçerli bir "renk"te olması gerekir +@msg freeform line {i} must be an array of point indices Serbest biçimli çizgi {i}, bir nokta indeks dizisi olmalıdır +@msg give both `start` and `end` [x, y] (or neither) hem "başlangıç" hem de "son" [x, y] verin (ya da ikisini de) +@msg give corners of the path: anchors where its sides meet at an angle yolun köşelerini verin: kenarlarının belli bir açıyla buluştuğu noktalara sabitleyin +@msg give horizontal or vertical yatay veya dikey ver +@msg give the path `id` and the width point `index` yol `id`sini ve genişlik noktası `index`i verin +@msg guides are locked kılavuzlar kilitli +@msg image '{key}' has no pixels and was left out '{key}' resminde piksel yok ve dışarıda bırakıldı +@msg image data `{_1}` is missing `{_1}` resim verisi eksik +@msg image would be too large; lower the resolution resim çok büyük olur; çözünürlüğü düşür +@msg index must be a number or first, previous, next or last dizin bir sayı veya ilk, önceki, sonraki veya son olmalıdır +@msg index must be a number or first, previous, next or last, not `{other}` dizin bir sayı veya ilk, önceki, sonraki veya son olmalıdır, "{other}" değil +@msg installing from a path is not available on the web; pass the module as `dataBase64` bir yoldan kurulum web'de mümkün değildir; modülü `dataBase64` olarak iletin +@msg internal error in `{cmd}`: {msg} (the document was left as it was before; please report this bug) `{cmd}`de dahili hata: {msg} (belge daha önce olduğu gibi bırakıldı; lütfen bu hatayı bildirin) +@msg internal error: {msg} (please report this bug) dahili hata: {msg} (lütfen bu hatayı bildirin) +@msg invalid PDF setting: {0} geçersiz PDF ayarı: {0} +@msg invalid image data for `{0}` `{0}` için geçersiz resim verileri +@msg invalid parameters for `{cmd}`: {msg} `{cmd}` için geçersiz parametreler: {msg} +@msg is not an image VectorCraft reads VectorCraft'ın okuduğu bir resim değil +@msg it uses `{at}`, which VectorCraft's PostScript reader doesn't know VectorCraft'ın PostScript okuyucusunun bilmediği `{at}`yi kullanıyor +@msg it uses `{at}`, which VectorCraft's PostScript reader doesn't know, in {procs} {procs}'de VectorCraft'ın PostScript okuyucusunun bilmediği `{at}`yi kullanıyor +@msg its Windows metafile preview was opened instead, which may simplify the art bunun yerine Windows meta dosyası önizlemesi açıldı, bu da işi basitleştirebilir +@msg its preview was placed instead, at screen resolution bunun yerine önizlemesi ekran çözünürlüğüne yerleştirildi +@msg join needs open paths katılmak için açık yollara ihtiyaç var +@msg lang must be one of {_1} dil {_1}'den biri olmalıdır +@msg layers can't be wrap objects katmanlar sarma nesneleri olamaz +@msg missing `folder` 'klasör' eksik +@msg missing `id` (see plugin.list) `kimlik` eksik (bkz. eklenti.liste) +@msg missing `name` "isim" eksik +@msg missing `tool` 'araç' eksik +@msg missing index eksik dizin +@msg multiple windows land with M11.5 M11.5 ile birden fazla pencere açılır +@msg name the file dosyayı adlandırın +@msg no CSS to copy: select objects with CSS of their own kopyalanacak CSS yok: kendilerine ait CSS'ye sahip nesneleri seçin +@msg no Live Paint edge near that point bu noktanın yakınında Canlı Boyama kenarı yok +@msg no Live Paint face at that point bu noktada Canlı Boyama yüzü yok +@msg no PNG encoder PNG kodlayıcı yok +@msg no active document etkin belge yok +@msg no active perspective plane aktif perspektif düzlemi yok +@msg no anchor points selected bağlantı noktası seçilmedi +@msg no app to open files here burada dosyaları açacak uygulama yok +@msg no artboard çalışma yüzeyi yok +@msg no artboard {i} (0-based; the document has {_1}) çalışma yüzeyi yok {i} (0 tabanlı; belgede {_1} var) +@msg no artboard {i} (0-based; the document has {count}) çalışma yüzeyi yok {i} (0 tabanlı; belgede {count} var) +@msg no artboards named adlandırılmış çalışma yüzeyi yok +@msg no artwork sanat eseri yok +@msg no blend options karışım seçeneği yok +@msg no bounds sınır yok +@msg no brush named `{name}` `{name}` adlı fırça yok +@msg no brush selected fırça seçilmedi +@msg no catalog katalog yok +@msg no changes since the last save son kaydetmeden bu yana değişiklik yok +@msg no clock to keep a heartbeat by kalp atışını tutacak saat yok +@msg no colour group `{g}` renk grubu yok `{g}` +@msg no cross-reference table çapraz referans tablosu yok +@msg no current layer geçerli katman yok +@msg no data veri yok +@msg no dialog open iletişim kutusu açık değil +@msg no document belge yok +@msg no document open hiçbir belge açık değil +@msg no effect applied yet henüz hiçbir efekt uygulanmadı +@msg no effect at index {k} {k} endeksinde etkisi yok +@msg no end record son kayıt yok +@msg no file manager here burada dosya yöneticisi yok +@msg no file reader dosya okuyucu yok +@msg no file system here burada dosya sistemi yok +@msg no file writer dosya yazarı yok +@msg no files to place yerleştirilecek dosya yok +@msg no format to export to dışa aktarılacak format yok +@msg no free recovery area ücretsiz kurtarma alanı yok +@msg no gradient stop or freeform point is selected degrade durağı veya serbest biçim noktası seçili değil +@msg no graphic style `{name}` grafik stili yok `{name}` +@msg no graphic style `{n}` grafik stili yok `{n}` +@msg no interaction in progress herhangi bir etkileşim devam etmiyor +@msg no key object anahtar nesne yok +@msg no library `{key}` (see {list}) `{key}` kitaplığı yok (bkz. {list}) +@msg no native format yerel format yok +@msg no pages sayfa yok +@msg no pattern `{name}` "{name}" modeli yok +@msg no perspective grid preset named `{name}` `{name}` adında perspektif ızgarası ön ayarı yok +@msg no plug-in {0} is installed {0} eklentisi kurulu değil +@msg no plug-in {id} is installed {id} eklentisi kurulu değil +@msg no point {i} (the gradient has {_1}) {i} noktası yok (gradyan {_1}'ye sahiptir) +@msg no preset editor önceden ayarlanmış düzenleyici yok +@msg no previous transform önceki dönüşüm yok +@msg no print preset named `{base}` `{base}` adlı yazdırma ön ayarı yok +@msg no print preset named `{name}` `{name}` adlı yazdırma ön ayarı yok +@msg no print service baskı hizmeti yok +@msg no revert command geri alma komutu yok +@msg no saved PDF preset named `{name}` (built-in presets are read-only: start a new one from them) `{name}` adında kayıtlı bir PDF hazır ayarı yok (yerleşik hazır ayarlar salt okunurdur: onlardan yeni bir tane başlatın) +@msg no saved presets kayıtlı ön ayar yok +@msg no saved print preset named `{name}` ({DEFAULT_PRESET} is protected: start a new one from it) `{name}` adında kayıtlı bir yazdırma ön ayarı yok ({DEFAULT_PRESET} korumalı: ondan yeni bir tane başlatın) +@msg no saved profiles kayıtlı profil yok +@msg no saved selection recalled kayıtlı seçim geri çağrılmadı +@msg no saved selections kayıtlı seçim yok +@msg no saved themes kayıtlı tema yok +@msg no segment {segment} on line {line} {line} hattında {segment} segmenti yok +@msg no selected slice in the image: select slices, or save all of them görüntüde seçili dilim yok: dilimleri seçin veya hepsini kaydedin +@msg no selection bounds seçim sınırı yok +@msg no slice selected dilim seçilmedi +@msg no such action öyle bir eylem yok +@msg no such anchor öyle bir çapa yok +@msg no such artboard böyle bir çalışma yüzeyi yok +@msg no such document öyle bir belge yok +@msg no such layer or object böyle bir katman veya nesne yok +@msg no such object {0} böyle bir nesne yok {0} +@msg no such perspective grid preset böyle bir perspektif ızgarası ön ayarı yok +@msg no such recent file böyle yeni bir dosya yok +@msg no such recent font böyle yeni bir yazı tipi yok +@msg no such saved selection böyle kayıtlı bir seçim yok +@msg no such segment öyle bir bölüm yok +@msg no such subpath böyle bir alt yol yok +@msg no such user library böyle bir kullanıcı kütüphanesi yok +@msg no such view öyle bir görüş yok +@msg no such width point böyle bir genişlik noktası yok +@msg no swatch `{name}` renk örneği yok `{name}` +@msg no swatch library `{l}` (see swatch.library.list) renk örneği kitaplığı yok `{l}` (bkz. swatch.library.list) +@msg no symbol instances selected sembol örneği seçilmedi +@msg no target object has an opacity mask: select one or give `id` hiçbir hedef nesnenin opaklık maskesi yok: birini seçin veya "id" verin +@msg no threaded text selected dizili metin seçilmedi +@msg no user library folder here burada kullanıcı kitaplığı klasörü yok +@msg no user workspace `{from}` kullanıcı çalışma alanı yok `{from}` +@msg node {_1} is not text {_1} düğümü metin değil +@msg not a DXF drawing DXF çizimi değil +@msg not a VectorCraft file: {0} bir VectorCraft dosyası değil: {0} +@msg not a VectorCraft shortcut set (missing `overrides`) VectorCraft kısayol seti değil ("geçersiz kılmalar" eksik) +@msg not a graphic style library (format `{_1}`) grafik stili kitaplığı değil (`{_1}` biçimi) +@msg not a shortcut set: the text doesn't start with a slash name and an opening brace bir kısayol seti değil: metin eğik çizgi adı ve açılış paranteziyle başlamıyor +@msg not a stored central record saklanan merkezi bir kayıt değil +@msg not a valid plug-in module: {0} geçerli bir eklenti modülü değil: {0} +@msg not an EMF or WMF file EMF veya WMF dosyası değil +@msg not an RTF file: it doesn't start with {\\rtf bir RTF dosyası değil: {\\rtf ile başlamıyor +@msg not found bulunamadı +@msg not in pattern editing mode desen düzenleme modunda değil +@msg nothing encoded kodlanmış hiçbir şey yok +@msg nothing selected hiçbir şey seçilmedi +@msg nothing to align hizalanacak hiçbir şey yok +@msg nothing to distort çarpıtılacak hiçbir şey yok +@msg nothing to export: the document has no visible art (or turn on Use Artboards) dışa aktarılacak bir şey yok: belgede görünür resim yok (veya Çalışma Yüzeylerini Kullan'ı açın) +@msg nothing to preview önizlenecek bir şey yok +@msg nothing to print yazdırılacak bir şey yok +@msg nothing to redo yeniden yapılacak bir şey yok +@msg nothing to save: the document has no visible art kaydedilecek bir şey yok: belgede görünür resim yok +@msg nothing to undo geri alınacak hiçbir şey yok +@msg nothing to warp çarpıtılacak hiçbir şey yok +@msg nothing to wrap sarılacak bir şey yok +@msg object {0} cannot have children {0} nesnesinin çocuğu olamaz +@msg object {id} is not a path {id} nesnesi bir yol değil +@msg object {id} is not a selected top-level object {id} nesnesi seçilmiş bir üst düzey nesne değil +@msg page size {w} × {h} sayfa boyutu {w} × {h} +@msg page {0} does not exist (the PDF has {1}) sayfa {0} mevcut değil (PDF'de {1} var) +@msg paste unavailable yapıştırma kullanılamıyor +@msg path is already closed yol zaten kapalı +@msg paths contain invalid coordinates yollar geçersiz koordinatlar içeriyor +@msg paths: give at least one file yollar: en az bir dosya verin +@msg pattern missing desen eksik +@msg patterns nested too deeply are filled with mid-grey çok derin iç içe geçmiş desenler orta gri renkle dolu +@msg percent must be above 0 and at most 6400, not {p} yüzde {p} değil, 0'ın üzerinde ve en fazla 6400 olmalıdır +@msg pick a colour, gradient or pattern to save as a swatch renk örneği olarak kaydetmek için bir renk, degrade veya desen seçin +@msg plane must be left, right or ground düzlem solda, sağda veya yerde olmalıdır +@msg plug-in ABI: {0} eklenti ABI: {0} +@msg plug-in exceeded its {0} eklenti {0} sınırını aştı +@msg plug-in failed: {0} eklenti başarısız oldu: {0} +@msg plug-in manifest: {0} eklenti bildirimi: {0} +@msg plug-in output: {0} eklenti çıkışı: {0} +@msg plug-in parameters: {0} eklenti parametreleri: {0} +@msg plug-in trapped: {0} eklenti sıkıştı: {0} +@msg print settings are not an object yazdırma ayarları bir nesne değil +@msg printing isn't available here yazdırma burada mevcut değil +@msg range `{s}` is empty `{s}` aralığı boş +@msg range `{s}`: `{part}` names no number aralık `{s}`: `{part}` adları sayı yok +@msg range `{s}`: `{part}` runs backwards aralık `{s}`: `{part}` geriye doğru çalışır +@msg range `{s}`: `{t}` is not a number from 1 to {count} aralık `{s}`: `{t}` 1'den {count}'ye kadar bir sayı değil +@msg recovery copy `{file}`: {e} kurtarma kopyası `{file}`: {e} +@msg resolutions must be between 1 and 2400 ppi çözünürlükler 1 ile 2400 ppi arasında olmalıdır +@msg result would exceed the canvas (coordinates out of range) sonuç tuvali aşacaktır (koordinatlar aralık dışındadır) +@msg objects can't be nested more than 32 deep nesneler 32'den fazla derinliğe yerleştirilemez +@msg the SVG's elements are nested more than {0} deep SVG'nin öğeleri {0} derinliğinden daha fazla yuvalanmıştır +@msg scale must be a number from {_1} to {_2}, not {_3} ölçek {_3} değil, {_1} ile {_2} arasında bir sayı olmalıdır +@msg scale must be a number from {_1} to {_2}, not {s} ölçek {s} değil, {_1} ile {_2} arasında bir sayı olmalıdır +@msg select (or target) objects whose appearance isn't basic Görünümü temel olmayan nesneleri seçin (veya hedefleyin) +@msg select a Live Paint group bir Canlı Boyama grubu seçin +@msg select a blend bir karışım seç +@msg select a clip group bir klip grubu seçin +@msg select a gradient mesh bir degrade ağı seçin +@msg select a linked image: an embedded one has no file bağlantılı bir görsel seçin: gömülü görselin dosyası yok +@msg select a repeat bir tekrar seç +@msg select an Intertwine group bir Intertwine grubu seçin +@msg select a stroke with a variable width değişken genişliğe sahip bir kontur seçin +@msg select a symbol instance bir sembol örneği seçin +@msg select an Image Trace object bir Görüntü İzleme nesnesi seçin +@msg could not decode image: {0} görüntünün kodu çözülemedi: {0} +@msg image is empty resim boş +@msg the image is {width} × {height} pixels, more than Image Trace takes ({max} megapixels) görüntü {width} × {height} pikseldir; Görüntü İzleme'nin aldığından daha fazladır ({max} megapiksel) +@msg this trace would make more than {max} anchor points, more than the document can show smoothly: raise Noise, lower Paths or Colors, or pick a lower-fidelity preset bu iz, {max} bağlantı noktalarından daha fazlasını, yani belgenin düzgün bir şekilde gösterebileceğinden daha fazlasını oluşturur: Gürültüyü artırın, Yolları veya Renkleri düşürün veya aslına uygunluğu daha düşük bir ön ayar seçin +@msg select an envelope bir zarf seç +@msg select an image bir resim seç +@msg select an object in perspective perspektifte bir nesne seç +@msg select artwork (or a colour group) to recolor yeniden renklendirilecek resmi (veya bir renk grubunu) seçin +@msg select at least two objects en az iki nesne seç +@msg select objects, not layers katmanları değil nesneleri seçin +@msg select one path, or give its `id` bir yol seçin veya "kimliğini" verin +@msg select paths to join katılmak için yolları seçin +@msg select the art to repeat tekrarlanacak resmi seçin +@msg select the artwork to warp çarpıtılacak resmi seçin +@msg select the objects to transform in perspective perspektifte dönüştürülecek nesneleri seçin +@msg select two or more graphic styles to merge birleştirmek için iki veya daha fazla grafik stili seçin +@msg select type in perspective perspektifte yazı seç +@msg selection has no bounds Seçimin sınırı yok +@msg shadings of an unknown type were left out bilinmeyen türdeki gölgeler dışarıda bırakıldı +@msg shadings of more than 4096 patches or triangles were left out 4096'dan fazla yamanın veya üçgenin gölgeleri dışarıda bırakıldı +@msg shadings whose functions are of an unknown type are filled with their middle colour İşlevi bilinmeyen tipteki gölgelikler orta renkle doldurulur +@msg shortcut for `{k}` must be a string "{k}" kısayolu bir dize olmalıdır +@msg stop {i} needs `offset` {i}'nin `ofset`e ihtiyacı var +@msg stop {i} needs a valid `color` stop {i}'nin geçerli bir "renk"e ihtiyacı var +@msg stop {i}: `{k}` must be a number {i}'yi durdur: `{k}` bir sayı olmalıdır +@msg the EMF header is damaged EMF başlığı hasarlı +@msg the PDF has no pages PDF'de sayfa yok +@msg the PDF is no longer loaded PDF artık yüklenmiyor +@msg the PDF is password-protected: give its password PDF şifre korumalıdır: şifresini verin +@msg the PDF password is wrong PDF şifresi yanlış +@msg the Save PDF dialog didn't open PDF'yi Kaydet iletişim kutusu açılmadı +@msg the WMF header is damaged WMF başlığı hasarlı +@msg the art could not be sampled sanat örneği alınamadı +@msg the art has no bounds sanatın sınırı yoktur +@msg the art is too light for any dots sanat herhangi bir nokta için çok hafif +@msg the artboard to fit must be a positive size up to {_1} pt sığacak çalışma yüzeyi {_1} pt'ye kadar pozitif boyutta olmalıdır +@msg the background worker stopped arka plan çalışanı durdu +@msg the compressed file unpacks to more than {_1} MB sıkıştırılmış dosya {_1} MB'den daha fazlasına açılıyor +@msg the document has never been saved belge hiç kaydedilmedi +@msg the document has no artboard belgede çalışma yüzeyi yok +@msg the document has no artboards belgede çalışma yüzeyi yok +@msg the document has no patterns belgede desen yok +@msg the document has no slices belgede dilim yok +@msg the document has no symbols belgede sembol yok +@msg the drawing has no layout `{_1}` (it has {_2}) çizimde `{_1}` düzeni yok ({_2} var) +@msg the drawing is no longer loaded çizim artık yüklenmiyor +@msg the drawing is too large to open çizim açılamayacak kadar büyük +@msg the export region is empty ihracat bölgesi boş +@msg the export region is not finite ihracat bölgesi sınırlı değil +@msg the export returned unreadable data dışa aktarma okunamayan veriler döndürdü +@msg the export wrote no file dışa aktarma hiçbir dosya yazmadı +@msg the file holds only a placeholder page, not its art (it was saved without PDF compatibility): save it again with PDF compatibility on, or as PDF or SVG dosya, resmini değil, yalnızca bir yer tutucu sayfayı içerir (PDF uyumluluğu olmadan kaydedilmiştir): PDF uyumluluğuyla veya PDF veya SVG olarak yeniden kaydedin +@msg the file was read up to an error ({why}): what follows it was left out dosya bir hataya kadar okundu ({why}): bundan sonra yazılanlar dışarıda bırakıldı +@msg the file's preview header points outside the file dosyanın önizleme başlığı dosyanın dışına işaret ediyor +@msg the image's pixels don't match its size resmin pikselleri boyutuyla eşleşmiyor +@msg the layer has no objects to clip by katmanda kırpılacak nesne yok +@msg the layer or group is locked katman veya grup kilitli +@msg the guide is on a hidden or locked layer kılavuz gizli veya kilitli bir katmandadır +@msg the target layer is locked or hidden hedef katman kilitli veya gizli +@msg the layer to flatten into is hidden düzleştirilecek katman gizli +@msg the object already has an opacity mask nesnenin zaten bir opaklık maskesi var +@msg the object has no geometry nesnenin geometrisi yoktur +@msg the object has no opacity mask nesnenin opaklık maskesi yok +@msg the object has no stroke nesnenin konturu yok +@msg the object is beyond the plane's horizon nesne uçağın ufkunun ötesinde +@msg the object isn't in perspective nesne perspektifte değil +@msg the object isn't on a perspective plane nesne perspektif düzleminde değil +@msg the object would cross the horizon of the perspective plane nesne perspektif düzleminin ufkunu geçecektir +@msg the objects would leave the grid nesneler ızgarayı terk ederdi +@msg the package came back damaged paket hasarlı olarak geri geldi +@msg the pointer is beyond the plane's horizon işaretçi uçağın ufkunun ötesinde +@msg the preview image is empty önizleme resmi boş +@msg the print job has no data yazdırma işinde veri yok +@msg the scale is not a usable number ölçek kullanılabilir bir sayı değil +@msg the selected stroke's profile is already listed as {_1} seçilen konturun profili zaten {_1} olarak listeleniyor +@msg the selection has no URL (or they differ) seçimin URL'si yok (veya farklılar) +@msg the selection isn't in perspective seçim perspektifte değil +@msg the stroke has no weight konturun kalınlığı yok +@msg the thumbnail image is malformed küçük resim görüntüsü bozuk +@msg the top object must be a path, compound path or text object to use as a clipping mask üstteki nesne, kırpma maskesi olarak kullanılacak bir yol, bileşik yol veya metin nesnesi olmalıdır +@msg the {tool} tool has no options {tool} aracının seçeneği yok +@msg there are no objects to release serbest bırakılacak hiçbir nesne yok +@msg there are no printer settings to open here burada açılacak yazıcı ayarı yok +@msg this PostScript file can't be read ({why}): save it as PDF or SVG in the app that made it bu PostScript dosyası okunamıyor ({why}): onu oluşturan uygulamada PDF veya SVG olarak kaydedin +@msg this file's PostScript couldn't be read ({why}): {what} bu dosyanın PostScript'i okunamadı ({why}): {what} +@msg this format holds one artboard: export several as PDF or with document.exportForScreens bu formatta bir çalışma yüzeyi bulunur: birkaçını PDF olarak veya document.exportForScreens ile dışa aktarın +@msg this is a DWG drawing, which can't be read: save it from the CAD app as an ASCII DXF and open that bu okunamayan bir DWG çizimidir: CAD uygulamasından ASCII DXF olarak kaydedin ve açın. +@msg this is a PostScript file (an .ai saved in an older format or without PDF compatibility, or an EPS file), not a PDF: File › Open and File › Place read it as EPS bu bir PostScript dosyasıdır (eski bir formatta kaydedilmiş veya PDF uyumluluğu olmayan bir .ai veya bir EPS dosyası), PDF değil: Dosya › Aç ve Dosya › Yerleştir, EPS olarak oku +@msg this is not a PostScript file bu bir PostScript dosyası değil +@msg tool shortcuts must be a single key (optionally with Shift) araç kısayolları tek tuş olmalıdır (isteğe bağlı olarak Shift ile) +@msg truncated kesik +@msg unknown command `{0}` bilinmeyen komut `{0}` +@msg unknown effect `{id}` bilinmeyen etki `{id}` +@msg unknown format bilinmeyen format +@msg unknown format `{f}` (Save writes {_1}) bilinmeyen format `{f}` (Kaydet, {_1} yazar) +@msg unknown freeform mode `{m}` (points, lines) bilinmeyen serbest biçimli mod `{m}` (noktalar, çizgiler) +@msg unknown gradient kind `{k}` (linear, radial, freeform) bilinmeyen gradyan türü `{k}` (doğrusal, radyal, serbest biçimli) +@msg unknown highlight `{h}` bilinmeyen vurgu `{h}` +@msg unknown option `{path}.{k}` bilinmeyen seçenek '{path}.{k}' +@msg unknown overprints `{o}` (preserve, simulate or discard) bilinmeyen üst baskılar `{o}` (koru, benzet veya at) +@msg unknown panel `{raw}` bilinmeyen panel `{raw}` +@msg unknown preference `{key}` bilinmeyen tercih `{key}` +@msg unknown preset (one of {_1}) bilinmeyen ön ayar ({_1}'den biri) +@msg unknown preset `{name}` (high, medium, low or a saved one: see flattener.presets.list) bilinmeyen ön ayar `{name}` (yüksek, orta, düşük veya kaydedilmiş bir ayar: bkz. flattener.presets.list) +@msg unknown preset `{name}` (see flattener.presets.list) bilinmeyen ön ayar `{name}` (bkz. düzleştirici.presets.list) +@msg unknown preset `{name}` (see webExport.presets.list) bilinmeyen ön ayar `{name}` (bkz. webExport.presets.list) +@msg unknown side `{other}` (left|right|top|bottom) bilinmeyen taraf `{other}` (sol|sağ|üst|alt) +@msg unknown tool `{tool}` bilinmeyen araç `{tool}` +@msg unknown tool `{t}` bilinmeyen araç `{t}` +@msg unknown tool or command `{key}` bilinmeyen araç veya komut `{key}` +@msg unknown workspace (one of {_1}) bilinmeyen çalışma alanı ({_1}'den biri) +@msg unsupported: {0} desteklenmeyen: {0} +@msg version {0} files can't be compressed: only version {COMPRESSED_SINCE} and later open compressed files {0} sürümü dosyaları sıkıştırılamaz: yalnızca {COMPRESSED_SINCE} sürümü ve sonraki sürümler sıkıştırılmış dosyaları açar +@msg width and height are at least 1 pixel genişlik ve yükseklik en az 1 pikseldir +@msg workspace name can't be empty çalışma alanı adı boş olamaz +@msg {C}: no effect at index {from} {C}: {from} endeksinde etkisi yok +@msg {_1} failed: {e} {_1} başarısız oldu: {e} +@msg {_1} files can be opened but not written (see document.formats) {_1} dosyaları açılabilir ancak yazılamaz (bkz. document.formats) +@msg {_1} font families available {_1} yazı tipi aileleri mevcut +@msg {_1} is a live effect (Effect › Plug-ins) {_1} canlı bir efekttir (Efekt › Eklentiler) +@msg {_1} is already used by {_2} {_1} zaten {_2} tarafından kullanılıyor +@msg {_1} linked file(s) can't be read here: their previews show {_1} bağlantılı dosya(lar) burada okunamıyor: önizlemeleri gösteriliyor +@msg {_1} linked image(s) changed on disk: Update Links shows the new versions {_1} bağlantılı görseller diskte değiştirildi: Güncelleme Bağlantıları yeni sürümleri gösteriyor +@msg Updated {_1} linked file(s) changed on disk Güncellenmiş {_1} bağlantılı dosya(lar) diskte değiştirildi +@msg {_1}: not saved, so not closed {_1}: kaydedilmedi, dolayısıyla kapatılmadı +@msg {bpp}-bit bitmaps can't be read {bpp} bit bit eşlemleri okunamıyor +@msg {command} didn't create an object {command} bir nesne yaratmadı +@msg {label} produced an empty result {label} boş bir sonuç üretti +@msg {label}: lost track of a shape's style {label}: şeklin stilinin izini kaybettirdi +@msg {label}: select paths {label}: yolları seç +@msg {label}: select paths, compound paths, groups or text {label}: yolları, bileşik yolları, grupları veya metni seçin +@msg {label}… {label}… +@msg {name}: CRC mismatch {name}: CRC uyumsuzluğu +@msg {name}: no local header {name}: yerel başlık yok +@msg {name}: no such recovery entry {name}: böyle bir kurtarma girişi yok +@msg {path} can't be found: relink it first {path} bulunamıyor: önce yeniden bağlayın +@msg {path}: no file system here (pass dataBase64 to open; omit the path to get dataBase64) {path}: burada dosya sistemi yok (açmak için dataBase64'ü iletin; dataBase64'ü alma yolunu atlayın) +@msg {path}: not a file {path}: dosya değil +@msg {path}: {e} {path}: {e} +@msg {status} ({e}) {status} ({e}) +@msg Couldn't place {name}: {e} {name} yerleştirilemedi: {e} +@msg Couldn't paste from the clipboard: {e} Panodan yapıştırılamadı: {e} +@msg Saved {path} with {_1} note(s): {first} {path}, {_1} notlarıyla kaydedildi: {first} +@msg Exported {what} with {_1} note(s): {first} {_1} notlarıyla birlikte dışa aktarılan {what}: {first} +@msg Exported {what} Dışa aktarılan {what} +@msg Saved {n} files beside {path} {path}'nin yanında kaydedilen {n} dosyaları +@msg Saving Kaydediliyor +@msg Saving {_1} {_1} kaydediliyor +@msg Exporting {_1} {_1}'yi dışa aktarma +@msg Saving recovery data for {_1} {_1} için kurtarma verileri kaydediliyor +@msg Discarded {_1} recovered document(s) Atılan {_1} kurtarılan belge(ler) +@msg Restored {_1} recovered document(s): save them to keep them Geri yüklenen {_1} kurtarılan belge(ler): saklamak için bunları kaydedin +@msg Embedded {n} image(s); {missing} missing: relink them first Gömülü {n} görselleri; {missing} eksik: önce onları yeniden bağlayın +@msg Embedded {n} image(s) Gömülü {n} görselleri +@msg Relinked {_1} image(s) Yeniden bağlanan {_1} görselleri +@msg Relinked {n} image(s) Yeniden bağlanan {n} görselleri +@msg Relinked {n} image(s); not in that folder: {_1} Yeniden bağlanan {n} görselleri; bu klasörde değil: {_1} +@msg Updated {_1} image(s) Güncellenmiş {_1} görselleri +@msg Unembedded to {_1} {_1}'ye gömülü değil +@msg Reset {_1} {_1}'yi sıfırla +@msg Sent to {_1} {_1}'ye gönderildi +@msg {_1} files {_1} dosyaları +@msg The graphics were lost and have been restarted Grafikler kayboldu ve yeniden başlatıldı +@msg The graphics processor tried first couldn't show the window, so VectorCraft started again on {summary} İlk önce denenen grafik işlemcisi pencereyi gösteremedi, bu yüzden VectorCraft {summary}'de yeniden başladı +@msg The last start of VectorCraft ended on {name} before its window appeared, so it started on {summary}. To try that graphics processor again, change Preferences › Performance › Graphics Processor or start with WGPU_BACKEND set VectorCraft'ın son başlangıcı, penceresi görünmeden önce {name}'de sona erdi, bu nedenle {summary}'de başladı. Bu grafik işlemciyi tekrar denemek için Tercihler › Performans › Grafik İşlemcisi seçeneğini değiştirin veya WGPU_BACKEND ayarıyla başlayın +@msg The last start of VectorCraft ended while it listed the graphics processors, so it started on {summary} with OpenGL alone. To try the other graphics backends again, change Preferences › Performance › Graphics Processor or start with WGPU_BACKEND set VectorCraft'ın son başlangıcı grafik işlemcilerini listelerken sona erdi ve {summary}'de yalnızca OpenGL ile başladı. Diğer grafik arka uçlarını tekrar denemek için Tercihler › Performans › Grafik İşlemci seçeneğini değiştirin veya WGPU_BACKEND ayarıyla başlayın +@msg Loading VectorCraft… VectorCraft Yükleniyor… +@msg VectorCraft failed to start: {e} VectorCraft başlatılamadı: {e} +@msg A browser with WebGPU or WebGL2 is required. WebGPU veya WebGL2'ye sahip bir tarayıcı gereklidir. +@msg The graphics were lost and couldn't be restarted. Grafikler kayboldu ve yeniden başlatılamadı. +@msg Your unsaved changes are kept in this browser: reload the page to get them back. Kaydedilmemiş değişiklikleriniz bu tarayıcıda tutuluyor: onları geri almak için sayfayı yeniden yükleyin. +@msg Reload the page to go on (changes not saved yet may be lost). Devam etmek için sayfayı yeniden yükleyin (henüz kaydedilmemiş değişiklikler kaybolabilir). +@msg tool (a tool id) is required araç (araç kimliği) gerekli +@msg {tool} isn't in a toolbar group of several tools {tool} çeşitli araçlardan oluşan bir araç çubuğu grubunda değil +@msg onto must name a panel floating in another group üzerine başka bir grupta yüzen bir panel adı verilmelidir +@msg below and above must name a panel floating in another group alt ve üst, başka bir grupta yüzen bir panele ad vermelidir +@msg give only one of onto, below and above üstüne, altına ve üstüne yalnızca birini verin +@msg column must be true or a number from 1 sütun doğru veya 1'den bir sayı olmalıdır +@msg x and y must both be numbers x ve y'nin her ikisi de sayı olmalıdır +@msg "{0}" is not a colour: write it as #rrggbb "{0}" bir renk değildir: #rrggbb olarak yazın +@msg this isn't a flat-colour logo ({_1}% of its solid areas match a few flat colours), so Flat Logo mode would turn its gradients into patches: use Color mode instead bu düz renkli bir logo değildir (düz alanların %{_1}'si birkaç düz renkle eşleşir), dolayısıyla Düz Logo modu degradelerini yamalara dönüştürür: bunun yerine Renk modunu kullanın +@msg `{what}` closes nothing `{what}` hiçbir şeyi kapatmaz +@msg `{what}` closes something it didn't open `{what}` açmadığı bir şeyi kapatıyor +@msg a path has too many points bir yolun çok fazla noktası var +@msg it ends inside a layer bir katmanın içinde bitiyor +@msg it has art outside its layers katmanlarının dışında sanat var +@msg it has more than {MAX_NODES} objects {MAX_NODES}'den daha fazla nesneye sahip +@msg it has no layers katmanı yok +@msg it has too many values in a row arka arkaya çok fazla değer var +@msg it has {_1}, which VectorCraft doesn't read from it yet VectorCraft'ın henüz okumadığı {_1} var +@msg its objects are nested too deeply nesneleri çok derin bir şekilde iç içe geçmiş +@msg its section ending with `%{end}` doesn't end `%{end}` ile biten bölümü bitmiyor +@msg objects with several fills or strokes, effects or brushes came in as their drawn look ({_1}): their appearance isn't editable yet çeşitli dolgulara veya konturlara, efektlere veya fırçalara sahip nesneler çizilmiş görünümleri olarak geldi ({_1}): görünümleri henüz düzenlenemez +@msg gradient “{name}” isn't defined in the file: a plain colour stands in for it “{name}” degradesi dosyada tanımlı değil: onun yerine düz bir renk geliyor +@msg an image VectorCraft can't read was left out VectorCraft'ın okuyamadığı bir resim dışarıda bırakıldı +@msg an image whose data is cut short was left out verileri kısa kesilen bir resim dışarıda bırakıldı +@msg linked pictures show the low-resolution preview saved in the file until their files are found: relink them in the Links panel bağlantılı resimler, dosyaları bulunana kadar dosyaya kaydedilen düşük çözünürlüklü önizlemeyi gösterir: bunları Bağlantılar panelinde yeniden bağlayın +@msg area type in frames too short for a line of the font it shows in got taller frames ({_1}): their type wouldn't show otherwise çerçevelerdeki alan türü, daha uzun çerçevelerde gösterdiği yazı tipinin bir satırı için çok kısa ({_1}): bunların türü aksi halde gösterilmez +@msg its editing data doesn't say where its art is düzenleme verileri sanatın nerede olduğunu söylemiyor +@msg this file was saved without PDF compatibility, and its editing data can't be read ({why}) bu dosya PDF uyumluluğu olmadan kaydedildi ve düzenleme verileri okunamıyor ({why}) +@msg No fonts are missing in this document Bu belgede eksik yazı tipi yok +@msg VectorCraft doesn't search other apps' or the system's folders: {path} VectorCraft diğer uygulamaların veya sistemin klasörlerini aramaz: {path} +@msg VectorCraft doesn't search the Shared or Public folder in Users: {path} VectorCraft, Kullanıcılar'daki Paylaşılan veya Genel klasörü aramıyor: {path} +@msg {path} is not a folder {path} bir klasör değil +@msg the search couldn't start: try again in a moment arama başlatılamadı: birazdan tekrar deneyin +@msg searching a folder isn't available on the web Web'de klasör arama özelliği kullanılamıyor +@msg every search thread stopped on an internal error (please report this bug) her arama dizisi dahili bir hata nedeniyle durduruldu (lütfen bu hatayı bildirin) +@msg VectorCraft's Fonts folder isn't set here: the desktop app and vectorcraft-cli set it VectorCraft'ın Fonts klasörü burada ayarlanmamış: masaüstü uygulaması ve Vectorcraft-cli bunu ayarlıyor +@msg choose the font files to add eklenecek yazı tipi dosyalarını seçin +@msg {n} font file(s) are now in {folder} {n} yazı tipi dosyası/dosyaları artık {folder}'de +@msg {n} font file(s) are now in {folder}; {failed} couldn't be added: {reason} {n} yazı tipi dosyası/dosyaları artık {folder}'de; {failed} eklenemedi: {reason} +@msg {n} font(s) aren't available here: their text shows in another font {n} yazı tipleri burada mevcut değil: metinleri başka bir yazı tipinde gösteriliyor +@msg not a file dosya değil +@msg not a font file yazı tipi dosyası değil +@msg that document is no longer open bu belge artık açık değil +@msg larger than 256 MB 256 MB'tan büyük +@msg the files come to more than 1 GB: add fewer at a time dosyalar 1 GB'tan fazla geliyor: bir kerede daha azını ekleyin +@msg every numbered name for it is taken in the Fonts folder bunun için numaralandırılmış her ad Yazı Tipleri klasöründe alınır +@msg every numbered name for {name} is taken in the document's folder {name} için numaralandırılmış her ad belgenin klasöründe alınır +@msg No linked files to look for Aranacak bağlantılı dosya yok +@msg Relinked {n} image(s); {name} couldn't be relinked: {reason} Yeniden bağlanan {n} görselleri; {name} yeniden bağlanamadı: {reason} + Services Hizmetler + Hide VectorCraft VectorCraft'ı gizle + Zoom Yakınlaştır + Bring All to Front Herkesi Öne Çıkarın + Settings Ayarlar + Break Link Bağlantıyı Kes + On: one locked object showing the document, updated when it changes. Açık: Belgeyi gösteren, değiştiğinde güncellenen kilitli bir nesne. + Off: an editable copy of its art, embedded in this document. Kapalı: Bu belgeye yerleştirilmiş resmin düzenlenebilir bir kopyası. + Images: link to the file instead of only embedding it. Resimler: dosyayı yalnızca gömmek yerine dosyaya bağlantı verin. + VectorCraft documents: one locked object, updated when the file changes. VectorCraft belgeleri: Dosya değiştiğinde güncellenen tek bir kilitli nesne. + A file dialog is open: choose there first Bir dosya iletişim kutusu açık: önce orayı seçin + The document was closed while its file dialog was open Belge, dosya iletişim kutusu açıkken kapatıldı + The dialog was closed before its file dialog answered Dosya iletişim kutusu yanıtlanmadan iletişim kutusu kapatıldı + Shaper Şekillendirici + Expand Shaper Group Shaper Grubunu Genişlet + Release Shaper Group Şekillendirici Grubunu Yayınla + Select Shaper Face Şekillendirici Yüz'ü seçin + Drag art, colors and text styles here to reuse them across documents. Libraries are stored on this machine — no account required. Resimleri, renkleri ve metin stillerini belgelerde yeniden kullanmak için buraya sürükleyin. Kitaplıklar bu makinede depolanır; hesap gerekmez. + 1 Color Job 1 Renk İşi + 2 Color Job 2 Renkli İş + 3 Color Job 3 Renkli İş + CMYK Equivalents CMYK Eşdeğerleri + 3 x 3 Average 3 x 3 Ortalama + 5 x 5 Average 5 x 5 Ortalama + PDF File PDF Dosyası + CMYK profile in effect CMYK profili yürürlükte + Artboard Çalışma Yüzeyi + Constrain Sınırla + Exit Çıkış + Free Transform Serbest Dönüşüm + Perspective Distort Perspektif Deformasyonu + Insert Inline Symbol Satır İçi Sembol Ekle + ICF Top/Right ICF Üst/Sağ + ICF Bottom/Left ICF Alt/Sol +@msg `id` is the step reference {r}, which only `run` and `command_batch` resolve "id", yalnızca "run" ve "command_batch" çözümleyen {r} adım referansıdır +@msg `ids` must be an array of object ids, not {v} "kimlikler" {v} değil, bir nesne kimlikleri dizisi olmalıdır +@msg `corners` must be an array of anchor indices, not {v} "köşeler" {v} değil, bir bağlantı indeksleri dizisi olmalıdır +@msg `{text}`: step {i}'s result has no such value (write $$ for a literal $) `{text}`: {i} adımının sonucunun böyle bir değeri yok (değişmez $ için $$ yazın) +@msg `{text}`: there is no step {i} before this one (steps count from 0; write $$ for a literal $) `{text}`: bundan önce {i} adımı yok (adımlar 0'dan itibaren sayılır; $$ yerine $ yazın) +@msg object ids are non-negative integers, not {v} nesne kimlikleri {v} değil, negatif olmayan tam sayılardır +@msg automation filesystem access is not granted: read authority is absent: {path} otomasyon dosya sistemine erişim izni verilmedi: okuma yetkisi yok: {path} +@msg automation filesystem access is not granted: write authority is absent: {path} otomasyon dosya sistemine erişim izni verilmedi: yazma yetkisi yok: {path} +@msg automation path rejected: outside the read root {root}: {path} otomasyon yolu reddedildi: okuma kökünün dışında {root}: {path} +@msg automation path rejected: outside the write root {root}: {path} otomasyon yolu reddedildi: yazma kökünün dışında {root}: {path} +@msg automation path rejected: path is empty otomasyon yolu reddedildi: yol boş +@msg automation path rejected: a link that leads nowhere: {path} otomasyon yolu reddedildi: hiçbir yere gitmeyen bağlantı: {path} +@msg automation path rejected: cannot resolve {path}: {e} otomasyon yolu reddedildi: {path} çözülemiyor: {e} +@msg automation path rejected: parent traversal below a folder that doesn't exist: {path} otomasyon yolu reddedildi: var olmayan bir klasörün altında üst öğe geçişi: {path} +@msg automation path rejected: reserved device names are not allowed: {path} otomasyon yolu reddedildi: ayrılmış cihaz adlarına izin verilmiyor: {path} +@msg Multichannel PSD files can't be read: save it in RGB, CMYK or Grayscale mode Çok kanallı PSD dosyaları okunamıyor: RGB, CMYK veya Gri Tonlama modunda kaydedin +@msg not a PSD file PSD dosyası değil +@msg the PSD file has an unknown colour mode ({m}) PSD dosyasında bilinmeyen bir renk modu var ({m}) +@msg the PSD file's image data uses an unknown compression ({m}) PSD dosyasının görüntü verileri bilinmeyen bir sıkıştırma kullanıyor ({m}) +@msg the PSD image is too large to read ({_1} × {_2} pixels) PSD görüntüsü okunamayacak kadar büyük ({_1} × {_2} piksel) +@msg zipped 32-bit PSD image data with prediction can't be read Tahmin içeren sıkıştırılmış 32 bit PSD görüntü verileri okunamıyor +@msg {depth}-bit PSD files in this colour mode can't be read Bu renk modunda {depth}-bit PSD dosyaları okunamaz +@msg the PSD file is cut short PSD dosyası kısa kesildi +@msg the PSD file's header is damaged PSD dosyasının başlığı hasarlı +@msg the PSD file's image data can't be read: {e} PSD dosyasının görüntü verileri okunamıyor: {e} + Video video + De-Interlace… Taramasızlaştırma… + De-Interlace Taramasızlaştırma + NTSC Colors NTSC Renkleri + Eliminate Ortadan kaldır + Create New Fields by Şuna göre Yeni Alanlar Oluştur: + Odd Fields Tek Alanlar + Even Fields Çift Alanlar + Duplication Çoğaltma + Interpolation Enterpolasyon +@msg Imported library {name} İçe aktarılan kitaplık {name} + RGB: RGB: + CMYK: CMYK: + Texture Doku + Craquelure… Küçük çatlak… + Grain… Tahıl… + Mosaic Tiles… Mozaik Fayans… + Patchwork… yama işi… + Stained Glass… Vitray… + Texturizer… Dokulaştırıcı… + Craquelure Küçük çatlak + Grain Tahıl + Mosaic Tiles Mozaik Fayans + Patchwork yama işi + Stained Glass Vitray + Texturizer Dokulaştırıcı + Crack Spacing Çatlak Aralığı + Crack Depth Çatlak Derinliği + Crack Brightness Çatlak Parlaklığı + Intensity Yoğunluk + Grain Type Tahıl Türü + Tile Size Döşeme Boyutu + Grout Width Derz Genişliği + Lighten Grout Harcı hafifletmek + Square Size Kare Boyutu + Relief Rahatlama + Border Thickness Kenar Kalınlığı + Light Intensity Işık Yoğunluğu + Light Direction Işık Yönü + Sprinkles serpintiler + Clumped Topaklanmış + Contrasty Kontrastlı + Enlarged Büyütülmüş + Stippled noktalanmış + Speckle Benek + Brick Tuğla + Burlap Çuval bezi + Canvas Tuval + Sandstone Kumtaşı + Bottom Left Sol Alt + Top Left Sol Üst + Top Right Sağ Üst + Bottom Right Sağ Alt +effect Soft Yumuşak + Edge Kenar + System Title Bar Sistem Başlık Çubuğu + Value Axis Değer Ekseni + On Left Side Sol Tarafta + On Right Side Sağ Tarafta + On Both Sides Her İki Tarafta + Short Kısa + Full Width Tam Genişlik + Distort Deforme etmek + Diffuse Glow… Yaygın Parıltı… + Glass… Cam… + Ocean Ripple… Okyanus Dalgalanması… + Diffuse Glow Yaygın Parıltı + Glass Cam + Ocean Ripple Okyanus Dalgalanması + Graininess Taneciklilik + Glow Amount Işıma Miktarı + Clear Amount Tutarı Temizle + Ripple Size Dalgalanma Boyutu + Ripple Magnitude Dalgalanma Büyüklüğü + Blocks Bloklar + Frosted Buzlu + Tiny Lens Minik Mercek + Loaded Texture Yüklü Doku + Load Texture… Doku Yükle… + Texture Image Doku Görüntüsü + Rename Data Set Veri Kümesini Yeniden Adlandır + Rename Variable Değişkeni Yeniden Adlandır + Variable Options Değişken Seçenekler + Edit Data Set Veri Kümesini Düzenle + Define a variable first Önce bir değişken tanımlayın + Text Metin + Visibility Görünürlük + Activate Panel Paneli Etkinleştir + Change Panel Layout Panel Düzenini Değiştir + Close Panel Paneli Kapat + Move Panel Paneli Taşı + Group with Şununla grupla: + Resize panels Panelleri yeniden boyutlandır + Resize panel window Panel penceresini yeniden boyutlandır +@msg Invalid panel layout; restored the default dock Geçersiz panel düzeni; varsayılan dock'u geri yükledim +@msg action is required eylem gerekli +@msg anchor must name a registered panel çapa kayıtlı bir panele isim vermelidir +@msg before must name a panel önce bir panele isim vermeliyim +@msg docking action contains an unknown panel or an excessive split path yerleştirme eylemi bilinmeyen bir panel veya aşırı bölünmüş yol içeriyor +@msg group must be true or false grup doğru veya yanlış olmalıdır +@msg move requires a destination panel taşıma bir hedef paneli gerektirir +@msg move requires an existing destination panel taşıma mevcut bir hedef paneli gerektirir +@msg onto must name a floating panel üzerine kayan bir panel adı verilmelidir +@msg panel group is empty panel grubu boş +@msg panel must name a registered panel panel kayıtlı bir panele isim vermelidir +@msg saved panel layout is invalid; reset the workspace first kayıtlı panel düzeni geçersiz; önce çalışma alanını sıfırlayın +@msg zone must be a string bölge bir dize olmalıdır +@msg zone must be tab, center, left, right, top or bottom bölge sekme, orta, sol, sağ, üst veya alt olmalıdır +@msg {key} must be a finite coordinate {key} sonlu bir koordinat olmalıdır +@msg x and y must be provided together x ve y birlikte sağlanmalıdır +@msg invalid restored panel group geçersiz geri yüklenen panel grubu + Lighting Aydınlatma + Revolve angle Dönme açısı + Axis side Eksen tarafı + Rotation X Rotasyon X + Rotation Y Y Dönüşü + Rotation Z Z dönüşü + Shading Gölgeleme + Segments Segmentler + Show axis Ekseni göster + Reset all Tümünü sıfırla + Reset to default Varsayılana sıfırla + Reset all Revolve settings to their defaults. Tüm Revolve ayarlarını varsayılan değerlerine sıfırlayın. + Drag values or labels. Double-click a value to type. Değerleri veya etiketleri sürükleyin. Yazmak için bir değeri çift tıklayın. + Drag rings to rotate. Shift snaps to 15°. Döndürmek için halkaları sürükleyin. Kaydırma 15°'ye sabitlenir. + Drag the light, or its rings. Shift snaps to 15°. Işığı veya halkalarını sürükleyin. Kaydırma 15°'ye sabitlenir. + Keep visible surfaces only when expanding Görünür yüzeyleri yalnızca genişletirken koruyun + Trim covered geometry on Expand Appearance. Live preview keeps the full surface. Transparent paints and surfaces exceeding visibility limits retain all faces. Görünümü Genişlet'te kapsanan geometriyi kırpın. Canlı önizleme tüm yüzeyi korur. Şeffaf boyalar ve görünürlük sınırlarını aşan yüzeyler tüm yüzleri korur. +lighting Light Işık + Accented Edges… Vurgulu Kenarlar… + Angled Strokes… Açılı Vuruşlar… + Crosshatch… Çapraz tarama… + Dark Strokes… Karanlık Vuruşlar… + Ink Outlines… Mürekkep Ana Hatları… + Spatter… Sıçrama… + Sprayed Strokes… Püskürtülmüş Vuruşlar… + Sumi-e… Sumi-e… + Accented Edges Vurgulu Kenarlar + Angled Strokes Açılı Vuruşlar + Crosshatch Çapraz tarama + Dark Strokes Karanlık Vuruşlar + Ink Outlines Mürekkep Ana Hatları + Spatter Sıçrama + Sprayed Strokes Püskürtülmüş Vuruşlar + Sumi-e Sumi-e + Direction Balance Yön Dengesi + Stroke Length Strok Uzunluğu + Sharpness Keskinlik + Strength Güç + Balance Bakiye + Black Intensity Siyah Yoğunluğu + White Intensity Beyaz Yoğunluğu + Dark Intensity Karanlık Yoğunluk + Spray Radius Püskürtme Yarıçapı + Stroke Direction Strok Yönü + Stroke Width Kontur Genişliği + Stroke Pressure Strok Basıncı + Right Diagonal Sağ Diyagonal + Left Diagonal Sol Çapraz + Vertical Guide Dikey Kılavuz + Horizontal Guide Yatay Kılavuz + Move Guide to Layer Kılavuzu Katmana Taşı +@msg invalid native panel set geçersiz yerel panel seti +@msg missing panel layout eksik panel düzeni +@msg unsupported native docking operation desteklenmeyen yerel yerleştirme işlemi + Linux Display Server Linux Görüntü Sunucusu + X11 (XWayland) X11 (XWayland) + Ruler Origin Cetvelin Kökeni + Reset Ruler Origin Cetvel Başlangıç Noktasını Sıfırla + Artistic Sanatsal + Film Grain… Film Tahıl… + Highlight Area Alanı Vurgula +@msg the compressed file unpacks to more than VectorCraft reads ({_1} MB of document, {_2} MB per image) sıkıştırılmış dosya, VectorCraft'ın okuduğundan daha fazlasına açılır (belgenin {_1} MB'ı, görüntü başına {_2} MB) +@msg the document is too large to save compressed ({0}): save it with Use Compression off belge sıkıştırılmış olarak kaydedilemeyecek kadar büyük ({0}): Sıkıştırmayı Kullan kapalı olarak kaydedin +@msg the file stopped being read (please report this bug) dosyanın okunması durduruldu (lütfen bu hatayı bildirin) + Concentric Dividers: Eşmerkezli Bölücüler: + Radial Dividers: Radyal Bölücüler: + Skew: Eğim: + Inside İçeride + Outside Dışarıda + Use Outside Rectangle As Frame Dış Dikdörtgeni Çerçeve Olarak Kullan + Create Compound Path From Ellipses Elipslerden Bileşik Yol Oluşturma + Fill Grid Izgarayı Doldur + Select two or more objects, or a group İki veya daha fazla nesneyi veya bir grubu seçin + Back Geri + Both sides Her iki taraf + Classic Klasik + Cove Koy + Depth Derinlik + Front Ön + Isometric Bottom İzometrik Alt + Isometric Left İzometrik Sol + Isometric Right İzometrik Sağ + Isometric Top İzometrik Üst + Off-Axis Back Eksen Dışı Geri + Off-Axis Bottom Eksen Dışı Alt + Off-Axis Front Eksen Dışı Ön + Off-Axis Left Eksen Dışı Sol + Off-Axis Right Eksen Dışı Sağ + Off-Axis Top Eksen Dışı Üst + Ogee Ogee + Reset all 3D settings to their defaults. Tüm 3D ayarlarını varsayılan değerlerine sıfırlayın. + Step Adım + Taper Konik + Twist Büküm + Volume Hacim +3d Cap Kapak +3d Solid Katı +3d Hollow İçi Boş +3d Bevel Eğim +3d Rounded Yuvarlatılmış +3d Space Boşluk + Bevel Shape Eğim Şekli + Bevel Inside Eğim İçi + Bevel both sides Her iki tarafa da eğim verin + Presets Ön ayarlar +@msg An object takes one 3D effect. Edit the existing effect's options, or remove it first. Bir nesne bir 3D efekti alır. Mevcut efektin seçeneklerini düzenleyin veya önce onu kaldırın. +@msg {label} currently requires a path or compound path. Convert type, images and groups to paths first. {label} şu anda bir yol veya bileşik yol gerektiriyor. Önce türü, görüntüleri ve grupları yollara dönüştürün. +@msg {label} requires a shape with at least two anchors {label} en az iki bağlantı noktasına sahip bir şekil gerektirir +@msg The shape is too complex for a 3D effect Şekli 3 boyutlu bir efekt için fazla karmaşık +@msg The 3D surface is too complex; simplify the shape 3 boyutlu yüzey çok karmaşık; şekli basitleştir + Transform Objects Nesneleri Dönüştür +@msg unknown parameter `{key}`; did you mean `{near}`? bilinmeyen parametre `{key}`; `{near}` mi demek istediniz? +@msg unknown parameter `{key}`; the command takes no parameters bilinmeyen parametre `{key}`; komut hiçbir parametre almaz +@msg unknown parameter `{key}`; the command takes: {keys} bilinmeyen parametre `{key}`; komut şunları alır: {keys} + 1 Layer 1 Katman + 1 bit 1 bit + 16 Colors 16 Renk + 16 bit 16 bit + 16 bits/pixel 16 bit/piksel + 2-Up 2'li + 24 bit 24 bit + 24 bits/pixel 24 bit/piksel + 256 Colors 256 Renk + 2K Cinema 2K Sinema + 2up 2yukarı + 3 Colors 3 Renk + 32 bit 32 bit + 32 bits/pixel 32 bit/piksel + 4 bit 4 bit + 4-Up 4'lü Yukarı + 4K Cinema 4K Sinema + 4K UHD 4K UHD + 4up 4'lü + 6 Colors 6 Renk + 8 Colors 8 Renk + 8 bit 8 bit + 8K UHD 8K UHD + @{login}: {prs}, {commits}, +{added} / −{deleted} lines (Δ {delta}), +{binary_added} / −{binary_deleted} binary assets, {first} – {last} @{login}: {prs}, {commits}, +{added} / −{deleted} hatları (Δ {delta}), +{binary_added} / −{binary_deleted} ikili varlıklar, {first} – {last} + A3 A3 + A4 A4 + A5 A5 + A6 A6 + Absolute Colorimetric Mutlak Kolorimetrik + Adaptive Uyarlanabilir + All Affected Objects Etkilenen Tüm Nesneler + All Layers Tüm Katmanlar + All Rasterized Regions Tüm Rasterleştirilmiş Bölgeler + All Slices Tüm Dilimler + All shortcuts reset to defaults. Tüm kısayollar varsayılanlara sıfırlanır. + Alt+Click Alt+Tıklama + Alt+Drag Alt+Sürükle + Analogous Benzer + Analogous 2 Benzer 2 + Anchors Çapalar + Any except extracting pages Sayfaların çıkarılması dışında herhangi biri + Area Type Alan Türü + Arrow Ok + Arrow (open) Ok (açık) + Art & Illustration Sanat ve İllüstrasyon + Art Optimized Sanat İçin Optimize Edilmiş + Art and Bright Colors Sanat ve Parlak Renkler + Ascent Yükseliş + Auto Size Otomatik Boyut + B4 B4 + B5 B5 + Bar Bar + Barbed Dikenli + Baseline (Standard) Temel (Standart) + Baseline Optimized Temel Optimize Edilmiş + Basic Temel + Bicubic Bikübik + Black & White Siyah Beyaz + Black Outline Siyah Anahat + Bloat şişkinlik + Bounding Box Sınırlayıcı Kutu + Bracket Braket + Branding Markalaşma + Brown Kahverengi + Business Card 3.5 × 2 in Kartvizit 3,5 × 2 inç + Business Card 85 × 55 mm Kartvizit 85×55 mm + CRLF (Windows) CRLF (Windows) + Cap Height Kapak Yüksekliği + Chevron Şerit + Circle (open) Daire (açık) + Click, then press the new shortcut (Esc cancels) Tıklayın, ardından yeni kısayola basın (Esc iptal edilir) + Clip Group Klip Grubu + Color Table (4 colors) Renk Tablosu (4 renk) + Command Komut + Commenting, filling in form fields and signing Yorum yapma, form alanlarını doldurma ve imzalama + Complementary Tamamlayıcı + Complementary 2 Tamamlayıcı 2 + Complete Tamamlandı + Composite Kompozit + Compound Bileşik + Compound 2 Bileşik 2 + Concave içbükey + Convert to Global Global'e Dönüştür + Convert to destination Hedefe dönüştür + Convert to destination (preserve numbers) Hedefe dönüştür (numaraları koru) + Cool Harika + Copyright and Contact Info Telif Hakkı ve İletişim Bilgileri + Copyrighted Telif hakkıyla korunuyor + Cross Çapraz + Current Colors Güncel Renkler + Current Colors (0) Güncel Renkler (0) + Custom Scale Özel Ölçek + DWG (use DXF) DWG (DXF kullanın) + Default Graphic Style Varsayılan Grafik Stili + Diamond (open) Elmas (açık) + Differences from VectorCraft Default: VectorCraft Varsayılanından Farklar: + Differences from [Default]: [Varsayılan]'dan farkları: + Diffusion Difüzyon + Direct Selection Doğrudan Seçim + Distance Mesafe + Distance: Mesafe: + Do Not Scale Ölçeklendirme + Don't include profiles Profilleri ekleme + Dot Gain 15% Nokta Kazanımı %15 + Dot on Bar Çubuktaki Nokta + Double Arrow Çift Ok + Double Bar Çift Çubuk + Double Slash Çift Eğik Çizgi + Down (right reading) Aşağı (sağ okuma) + Drop Bırak + Envelope Zarf + Envelope #10 Zarf #10 + Envelope DL Zarf DL + Exact tam + Expand 1 Selected 1 Seçileni Genişlet + Expand Object Nesneyi Genişlet + Expanded Patterns Genişletilmiş Desenler + Feather tüy + Filling in form fields and signing Form alanlarını doldurma ve imzalama + Film & Video Film ve Video + First Baseline İlk Temel + Fit to Page Sayfaya Sığdır + Fork Çatal + Freeform Serbest biçimli + GIF, 128 colours GIF, 128 renk + Go to Conflict Çatışmaya git + Graphic Styles (4) Grafik Stilleri (4) + Gray Gri + Gray Gamma 2.2 Gri Gama 2.2 + Greeting Card Tebrik Kartı + Grey Gri + Grid Repeat Izgara Tekrarı + Group Selection Grup Seçimi + Guide Rehber + Gutter Oluk + Gutter: Oluk: + HDTV 1080p HDTV1080p + HDTV 720p HDTV720p + HTML and Images HTML ve Görseller + Half Arrow (left) Yarım Ok (sol) + Half Arrow (right) Yarım Ok (sağ) + Half Circle Yarım Daire + Hand El + Harmony Rules Uyum Kuralları + Heavy Ink Ağır Mürekkep + Hexagon Altıgen + Hexagon (open) Altıgen (açık) + High Contrast Yüksek Kontrast + High Contrast 2 Yüksek Kontrast 2 + High Contrast 3 Yüksek Kontrast 3 + High Fidelity Photo Yüksek Kaliteli Fotoğraf + High Quality Print Yüksek Kaliteli Baskı + High Resolution Yüksek Çözünürlük + High resolution Yüksek çözünürlük + Image Trace (Make and Expand) Görüntü İzleme (Yap ve Genişlet) + Images Only Yalnızca Görseller + Imported. Press OK to keep the imported set. İthal. İçe aktarılan seti korumak için Tamam'a basın. + Include all profiles Tüm profilleri dahil et + Include destination profile Hedef profilini dahil et + Include tagged source profiles Etiketli kaynak profillerini dahil et + Inserting, deleting and rotating pages Sayfa ekleme, silme ve döndürme + Joins: Katılma: + Justify İki Yana Yasla + Keeps the document editable: VectorCraft reopens the PDF with nothing lost. For files you'll edit again. Belgeyi düzenlenebilir tutar: VectorCraft, PDF'yi hiçbir şey kaybolmadan yeniden açar. Dosyalar için tekrar düzenleme yapacaksınız. + Keyboard Shortcuts Klavye Kısayolları + Kite Uçurtma + LF (macOS, Linux) LF (macOS, Linux) + Lab Spot Colors Laboratuvar Spot Renkleri + Landscape (flipped) Manzara (ters çevrilmiş) + Language Level 2 Dil Seviyesi 2 + Language Level 3 Dil Seviyesi 3 + Lasso Kement + Leaf Yaprak + Left Complement Sol Tamamlayıcı + Legal Yasal + Length Uzunluk + Length: Uzunluk: + Letterhead A4 Antetli Kağıt A4 + Letterhead Letter Antetli Mektup + Line Art Hat sanatı + Linear Doğrusal + Logo 1000×1000 logo 1000×1000 + Low Fidelity Photo Düşük Kaliteli Fotoğraf + Low Resolution Düşük Çözünürlük + Low resolution (150 ppi) Düşük çözünürlük (150 ppi) + Make Text Wrap Metin Sarma Yap + Maximize Editability Düzenlenebilirliği En Üst Düzeye Çıkarın + Measure Ölçü + Medium Resolution Orta Çözünürlük + Menu Commands Menü Komutları + Mesh ağ + Minimum Asgari + Mirror Repeat Ayna Tekrarı + Mobile Mobil + Monochromatic Tek renkli + Monochrome Tek renkli + Muted Sessize alındı + Negative Negatif + No Dither Titreşim Yok + No Slices Dilim Yok + No conversion Dönüşüm yok + No downsampling Alt örnekleme yok + None (Color Preview) Yok (Renk Önizleme) + Orange Turuncu + Outlined Strokes Anahatlı Konturlar + Outlined Text Özetlenen Metin + Oval oval + PDF 1.7 PDF1.7 + PDF/X-1a:2001 PDF/X-1a:2001 + PDF/X-3:2002 PDF/X-3:2002 + PDF/X-4:2010 PDF/X-4:2010 + PRs PR'ler + Page Cover 1640×624 Sayfa Kapağı 1640×624 + Part of ArtCraft. MIT OR Apache-2.0. Fonts: Source Sans 3, Inter, JetBrains Mono, Noto Sans SC (OFL). Icons: Lucide (ISC) + VectorCraft. ArtCraft'ın bir parçası. MIT VEYA Apache-2.0. Yazı Tipleri: Source Sans 3, Inter, JetBrains Mono, Noto Sans SC (OFL). Simgeler: Lucide (ISC) + VectorCraft. + Pattern Swatches Desen Örnekleri + Pen Kalem + Pentagram Pentagram + Perceptual algısal + Phone 360×800 Telefon 360×800 + Phone 375×667 Telefon 375×667 + Phone 375×812 Telefon 375×812 + Phone 393×852 Telefon 393×852 + Phone 412×915 Telefon 412×915 + Phone 430×932 Telefon 430×932 + Photo Low Fidelity Fotoğrafın Düşük Doğruluğu + Pink Pembe + Pixel Piksel + Placed Document Yerleştirilen Belge + Plus Artı + Points: Punto: + Portrait (flipped) Portre (ters çevrilmiş) + Positive Olumlu + Poster 18 × 24 in Poster 18 × 24 inç + Poster 24 × 36 in Poster 24 × 36 inç + Preserve Koru + Preserve Appearance Görünümü Koru + Preserve Tints Renk Tonlarını Koru + Preset {number} Ön ayarlı {number} + Press Quality Baskı Kalitesi + Press keys… Tuşlara basın… + Print & Proof Baskı ve Prova + Printing & Proofing Baskı ve Prova + Profile Cover 1500×500 Profil Kapağı 1500×500 + Public Domain Kamu Alanı + Pucker Büzülme + Purple Mor + RECENT (1) SON (1) + RGB RGB + Radial Repeat Radyal Tekrar + Rasterized Complex Regions Rasterleştirilmiş Karmaşık Bölgeler + Relative Colorimetric Bağıl Kolorimetrik + Release Image Trace Görüntü İzlemeyi Serbest Bırak + Release Text Wrap Metin Sarmayı Serbest Bırak + Remove the shortcut Kısayolu kaldır + Reset Automation Otomasyonu Sıfırla + Reset Essentials Classic Essentials Classic'i sıfırla + Reset Layout Düzeni Sıfırla + Reset Painting Boyamayı Sıfırla + Reset Printing and Proofing Yazdırma ve Prova İşlemini Sıfırla + Reset Tracing İzlemeyi Sıfırla + Reset Typography Tipografiyi Sıfırla + Reset Web Web'i Sıfırla + Reset to Defaults Varsayılanlara Sıfırla + Restricted Colors Kısıtlı Renkler + Reverse Triangle Ters Üçgen + Right Complement Sağ Tamamlayıcı + Roman Roma + Rotate View Görünümü Döndür + Run Length Koşu Uzunluğu + SVG 1.1 SVG1.1 + Save Selection Seçimi Kaydet + Scale Tints Renk Tonlarını Ölçeklendir + Scale X Ölçek X + Scale X: Ölçek X: + Scale Y Y Ölçeği + Scale Y: Ölçek Y: + Scallop tarak + Scissors Makas + Selected Slices Seçilen Dilimler + Selected Styles Only (0) Yalnızca Seçilen Stiller (0) + Selected Swatches Only (0) Yalnızca Seçilen Renk Örnekleri (0) + Selective seçici + Separations Ayrılıklar + Set: Ayarla: + Shades Gölgeler + Shades of Gray Grinin Tonları + Shear: Kesme: + Shift+Click Shift+Tıklama + Shift+Drag Shift+Sürükle + Shortcut Kısayol + Shrink Text to Fit Metni Sığacak Şekilde Küçült + Silhouettes Siluetler + Simplified Chinese Basitleştirilmiş Çince + Simulate Simülasyon + Simulate prints overprints as Overprint Preview shows them; separations always keep them. A preset flattens transparency before printing (PostScript files always flatten it). Üst Baskı Önizlemesi'nin gösterdiği şekilde baskı üst baskılarını simüle edin; ayrılıklar onları hep korur. Bir ön ayar, yazdırmadan önce şeffaflığı düzleştirir (PostScript dosyaları her zaman düzleştirir). + Sketched Art Eskiz Sanatı + Slash Eğik çizgi + Smallest File Size En Küçük Dosya Boyutu + Social Sosyal + Social Landscape Post 1200×630 Sosyal Peyzaj Gönderisi 1200×630 + Social Portrait Post 1080×1350 Sosyal Portre Gönderisi 1080×1350 + Social Story 1080×1920 Sosyal Hikaye 1080×1920 + Social Tall Post 1000×1500 Sosyal Uzun Mesaj 1000×1500 + Sort by Hue Ton'a göre sırala + Sort by Luminance Parlaklığa göre sırala + Sort by Popularity Popülerliğe Göre Sırala + Spectrum Spektrum + Split Complementary Bölünmüş Tamamlayıcı + Spot Colors (0) Nokta Renkleri (0) + Square (open) Kare (açık) + Square 8 × 8 in Kare 8 × 8 inç + Subsample Alt örnek + Subset Alt küme + Sunshine Güneş ışığı + Swallowtail Kırlangıç kuyruğu + Symbol Sembol + TIFF (8-bit Color) TIFF (8 bit Renkli) + TIFF (Black & White) TIFF (Siyah Beyaz) + Tablet 1024×1366 Tablet 1024×1366 + Tablet 1024×768 Tablet 1024×768 + Tablet 768×1024 Tablet 768×1024 + Tablet 800×1280 Tablet 800×1280 + Tablet 820×1180 Tablet 820×1180 + Tablet 834×1194 Tablet 834×1194 + Tabloid Tabloid + Tag Etiket + Tag (open) Etiket (açık) + Technical Drawing Teknik Çizim + Tetrad dörtlü + Tetrad 2 dörtlü 2 + Tetrad 3 dörtlü 3 + Text Displayed in Cell Hücrede Görüntülenen Metin + Tile Imageable Areas Görüntülenebilir Alanları Döşeme + Tool Araç + Touch Type Dokunma Türü + Transparent Objects Şeffaf Nesneler + Triad üçlü + Triad 2 Üçlü 2 + Triad 3 Üçlü 3 + Triangle Üçgen + Triangle (open) Üçgen (açık) + Triangle to Bar Üçgenden Çubuğa + True Colors Gerçek Renkler + Twirl Burgu + Type Optimized Tür Optimize Edildi + UTF-16 (Unicode) UTF-16 (Unicode) + Unknown Bilinmiyor + Unsorted Sıralanmamış + Up (right reading) Yukarı (sağ okuma) + Use Default Varsayılanı Kullan + Variation Varyasyon + VectorCraft Default VectorCraft Varsayılanı + VectorCraft Defaults VectorCraft Varsayılanları + VectorCraft Generic CMYK (SWOP-like) VectorCraft Genel CMYK (SWOP benzeri) + VectorCraft Swatches (.vcswatches) VectorCraft Renk Örnekleri (.vcswatches) + Vertical Align Dikey Hizalama + Vertical Area Type Dikey Alan Türü + Vertical Type Dikey Tip + Vertical Type on a Path Yola Dikey Yazım + Video 1920×1080 Video 1920×1080 + Video 3840×2160 Video 3840×2160 + Video Banner 2560×1440 Video Banner'ı 2560×1440 + Video Thumbnail 1280×720 Video Küçük Resmi 1280×720 + Visible & Printable Layers Görünür ve Yazdırılabilir Katmanlar + Visible Layers Görünür Katmanlar + Vivid Canlı + Warm Sıcak + Watch 184×224 184×224 izle + Watch 198×242 198×242 izle + Web 1024×768 İnternet 1024×768 + Web 1280×720 İnternet 1280×720 + Web 1280×800 İnternet 1280×800 + Web 1366×768 İnternet 1366×768 + Web 1440×900 İnternet 1440×900 + Web 1600×900 İnternet 1600×900 + WebP WebP + Working RGB Çalışan RGB + Wrinkle Kırışıklık + X: X: + Y: Y: + [Custom] [Özel] + [Default] [Varsayılan] + [High Quality Print] [Yüksek Kaliteli Baskı] + [High Resolution] [Yüksek Çözünürlük] + [Low Resolution] [Düşük Çözünürlük] + [Medium Resolution] [Orta Çözünürlük] + [PDF/X-1a:2001] [PDF/X-1a:2001] + [PDF/X-3:2002] [PDF/X-3:2002] + [PDF/X-4:2010] [PDF/X-4:2010] + [Press Quality] [Basın Kalitesi] + [Smallest File Size] [En Küçük Dosya Boyutu] + [VectorCraft Default] [VectorCraft Varsayılanı] + of arasında + sRGB IEC61966-2.1 sRGB IEC61966-2.1 + x Height x Yükseklik + ▾ Default Actions ▾ Varsayılan Eylemler + ⚠ {chord} was already used by {names} — it has been removed there. ⚠ {chord} zaten {names} tarafından kullanılmıştı — oradan kaldırıldı. +@id file.close Kapat +@id pathfinder.add Birleştir +@msg give corners of the path: anchors between two straight sides yolun köşelerini verin: iki düz kenar arasındaki çapalar +@msg this kind of brush has no options dialog yet bu tür bir fırçanın henüz seçenekler iletişim kutusu yok +@plural {n} PR|{n} PRs {n} PR +@plural {n} commit|{n} commits {n} commit +@plural {n} shortcut is assigned more than once|{n} shortcuts are assigned more than once {n} kısayol birden fazla kez atanmış +diagnostics render işleme +diagnostics ui arayüz +effect Horizontal Yatay +effect Points Noktalar +effect Regular Düzenli +effect Vertical Dikey +file-filter All placeable files Yerleştirilebilir tüm dosyalar +file-filter All readable files Okunabilir tüm dosyalar +file-filter Flattener presets Düzleştirici önayarları +file-filter PDF presets PDF önayarları +file-filter PDF-compatible .ai PDF ile uyumlu .ai +file-filter Print presets Baskı önayarları +file-filter SVG Compressed Sıkıştırılmış SVG +file-filter Swatch libraries Renk örneği kitaplıkları +file-filter Templates Şablonlar +file-filter VectorCraft Template VectorCraft Şablonu +gradient-kind Radial Radyal +mark-style Japanese Japon +theme Appearance Görünüm + Load EPS into Clipboard EPS'yi Panoya Yükle +@msg an image of {w} × {h} pixels is too large to draw {w} × {h} piksellik bir görüntü çizilemeyecek kadar büyük +@msg the image can't be read as a texture görüntü doku olarak okunamıyor + Fill and Stroke Controls Dolgu ve Kontur Kontrolleri + Coloring Controls Renklendirme Kontrolleri + Draw Mode Controls Çizim Modu Kontrolleri + Screen Mode Controls Ekran Modu Kontrolleri + Drawer menu Çekmece menüsü + Toolbar: Show Controls Araç Çubuğu: Kontrolleri Göster +@msg control must be fillStroke, coloring, drawMode or screenMode kontrol fillStroke, colouring, DrawMode veya screenMode olmalıdır +@msg unknown control `{name}`: fillStroke, coloring, drawMode or screenMode bilinmeyen kontrol `{name}`: fillStroke, colouring,drawMode veya screenMode +@msg give a fraction `t` from 0 to 1 0'dan 1'e kadar bir `t` kesri verin +@msg give the path `id` `id` yolunu ver +@msg invalid stroke widths geçersiz kontur genişlikleri +@msg object has no weighted stroke nesnenin ağırlıklı konturu yok + Single Corner Radius Tek Köşe Yarıçapı + Top Left: Sol Üst: + Top Right: Sağ Üst: + Bottom Left: Sol Alt: + Bottom Right: Sağ Alt: + Softness Yumuşaklık + Ambient Light Ortam Işığı + Light behind the object Nesnenin arkasındaki ışık + Registration: Kayıt: + Dimension Boyut + Drawing : real size — 1:10 labels 1 unit on the page as 10. Çizim : Gerçek boyut — 1:10 etiketler sayfada 10 adet olarak 1 adettir. + Preview (1 inch on the page) Önizleme (sayfada 1 inç) + Set as Default Varsayılan Olarak Ayarla + out from a highlighted edge to place its dimension | boyutunu yerleştirmek için vurgulanan kenardan dışarı | + cancels | Double-click the tool for options iptal | Seçenekler için araca çift tıklayın + Angular Açısal + Away from the Line Çizgiden Uzakta + Between Line and Object Çizgi ile Nesne Arasında + Drag out from a segment, or click two points, then click to place. Bir parçadan dışarı sürükleyin veya iki noktayı tıklayın, ardından yerleştirmek için tıklayın. + Drag out from a corner, or click two straight lines, then click to place. Bir köşeden dışarı sürükleyin veya iki düz çizgiyi tıklayın, ardından yerleştirmek için tıklayın. + Drag out from a circle or arc for its radius, inwards for its diameter. Yarıçapı için bir daire veya yaydan dışarı, çapı için içeriye doğru sürükleyin. +@msg Choose a circle or a perfect arc Bir daire veya mükemmel bir yay seçin +@msg Choose a precision from 0 to 6 0'dan 6'ya kadar bir hassasiyet seçin + Create Dimension Boyut Oluştur + Dimension Tool Boyut Aracı + Dimension Tool Options Ölçümlendirme Aracı Seçenekleri + Display Ekran + Font Family: Yazı Tipi Ailesi: + Font Style: Yazı Tipi Stili: + Precision: Hassasiyet: + Update Dimensions Boyutları Güncelle +@msg Angles require two straight segments Açılar iki düz parça gerektirir +@msg Choose two different points İki farklı nokta seçin +@msg Choose two non-parallel straight segments Paralel olmayan iki düz parça seçin +@msg Choose two nonzero angle arms Sıfır olmayan iki açılı kol seçin +@msg Dimension point is outside the canvas Boyut noktası tuvalin dışında +@msg Dimension size is outside its supported range Boyut boyutu desteklenen aralığın dışında +@msg First measured segment no longer exists İlk ölçülen segment artık mevcut değil +@msg Invalid dimension distance Geçersiz boyut mesafesi +@msg Invalid dimension font name Geçersiz boyut yazı tipi adı +@msg Invalid drawing scale Geçersiz çizim ölçeği +@msg Invalid real scale Geçersiz gerçek ölçek +@msg Measured anchor no longer exists Ölçülen çapa artık mevcut değil +@msg Measured segment no longer exists Ölçülen segment artık mevcut değil +@msg Non-finite dimension Sonlu olmayan boyut +@msg Scale must be drawing:real, for example 1:10 Ölçek çizim olmalıdır:gerçek, örneğin 1:10 +@msg Scale ratio must be between 1:1000000 and 1000000:1 Ölçek oranı 1:1000000 ile 1000000:1 arasında olmalıdır +@msg Second measured segment no longer exists Ölçülen ikinci segment artık mevcut değil +@msg Unknown dimension mode Bilinmeyen boyut modu +@msg Unknown dimension option {k} Bilinmeyen boyut seçeneği {k} +@msg Unknown dimension style Bilinmeyen boyut stili +@msg Unknown unit Bilinmeyen birim + Close the circular ends of open profiles. Partial sweeps keep their cut sides open. Açık profillerin dairesel uçlarını kapatın. Kısmi süpürmeler kesik taraflarını açık tutar. +@msg span must be "object" or "selection", got {v} yayılma "nesne" veya "seçim" olmalıdır, {v} var +@msg span: "selection" places a `gradient`, not a swatch yayılma: "seçim" bir renk örneği değil, bir "degrade" yerleştirir +@msg span: "selection" places a gradient: give `gradient` span: "selection" bir degrade yerleştirir: "gradient" verir +@msg span: "selection" places a linear or radial gradient, not a freeform one yayılma: "seçim" serbest biçimli bir degrade değil, doğrusal veya radyal bir degrade yerleştirir +@msg span: "selection" places the gradient itself: leave out `start` and `end` (they already place it in document coordinates) span: "selection" degradeyi kendisi yerleştirir: "start" ve "end"i dışarıda bırakın (bunu zaten belge koordinatlarına yerleştirdiler) + Make Image Dynamic Görüntüyü Dinamik Hale Getirin + Import Data Sets… Veri Kümelerini İçe Aktar… + Export Data Sets… Veri Kümelerini Dışa Aktarma… + Make Graph Dynamic Grafiği Dinamik Hale Getirin + Batch… Toplu… + Source Folder: Kaynak Klasörü: + Destination Folder: Hedef Klasör: + Overrides Geçersiz kılmalar + Uses every data set of the open document. Açık belgenin her veri kümesini kullanır. +@msg Batch: {count} processed Toplu iş: {count} işlenmiş +@msg Batch: {count} processed, {failed} failed Toplu iş: {count} işlendi, {failed} başarısız oldu +@msg choose a destination folder bir hedef klasör seçin +@msg choose a source folder bir kaynak klasör seçin +@msg open a document with data sets veri kümeleri içeren bir belge açın +@msg the action has no steps eylemin hiçbir adımı yok + Accent Color Vurgu Rengi + Amber kehribar + Coral Mercan + Violet Menekşe + Sketch Eskiz + Halftone Pattern… Noktalı Resim Deseni… + Halftone Pattern Noktalı Resim Deseni + Pattern Type Desen Türü + Dot Nokta + Color Scheme Renk Şeması + Modern Çağdaş + Export Type: İhracat Türü: + Movie Clip Film Klibi +@msg name is empty isim boş +@msg no symbol named `{n}` `{n}` adında bir sembol yok + Artboard Options: edit with the Artboard tool Çalışma Yüzeyi Seçenekleri: Çalışma Yüzeyi aracıyla düzenleme +@msg this is a PostScript file (an .ai saved in an older format or without PDF compatibility, or an EPS file), which can't be opened yet: save it as PDF, PDF-compatible .ai or SVG bu henüz açılamayan bir PostScript dosyasıdır (eski bir formatta kaydedilmiş veya PDF uyumluluğu olmayan bir .ai veya bir EPS dosyası): PDF, PDF uyumlu .ai veya SVG olarak kaydedin + Add Event Etkinlik Ekle + Add JavaScript File JavaScript Dosyası Ekle + Apply Data Set Veri Kümesini Uygula + Cancel Pattern Editing Desen Düzenlemeyi İptal Et + Change to Artboard Rulers Çalışma Yüzeyi Cetvellerine Geç + Chop Design Tasarımı Kırp + Clear Events Etkinlikleri Temizle + Close Gaps With Paths Boşlukları Yollarla Kapat + Color wheel Renk tekerleği + Column Type: Sütun Türü: + Connect Bağla + Copy Appearance Görünümü Kopyala + Copy Guide Kılavuzu Kopyala + Copy in Perspective Perspektifte Kopyala + Create Slice from Selection Seçimden Dilim Oluştur + Create Slices from Guides Kılavuzlardan Dilimler Oluştur + Cutout Kesme + Cutout… Kesme… + Delete All Slices Tüm Dilimleri Sil + Delete Data Sets Veri Kümelerini Sil + Delete Graphic Styles Grafik Stillerini Sil + Delete Guide Kılavuzu Sil + Delete Guides Kılavuzları Sil + Delete Slice Dilimi Sil + Delete Style Stili Sil + Delete Variables Değişkenleri Sil + Delete View Görünümü Sil + Done Editing Pattern Desen Düzenlemeyi Bitir + Duplicate Rows Satırları Çoğalt + Each Design Represents: Her Tasarımın Temsil Ettiği: + Edge Fidelity Kenar Doğruluğu + Edge Intensity Kenar Yoğunluğu + Edge Simplicity Kenar Sadeliği + Edge Thickness Kenar Kalınlığı + Edit Perspective Grid Perspektif Izgarasını Düzenle + Enable Guides for 9-Slice Scaling 9 Dilimli Ölçekleme İçin Kılavuzları Etkinleştir + Event: Etkinlik: + Expand Blend Karışımı Genişlet + Expand Envelope Zarfı Genişlet + Expand Image Trace Görüntü İzlemeyi Genişlet + Expand Live Paint Canlı Boyamayı Genişlet + File or URL: Dosya veya URL: + First Artboard İlk Çalışma Yüzeyi + For Fractions: Kesirler İçin: + Gap Detection Boşluk Algılama + Gap Options Boşluk Seçenekleri + Gap Preview Color: Boşluk Önizleme Rengi: + Glow Brightness Parıltı Parlaklığı + Glow Size Parıltı Boyutu + Graph Column Grafik Sütunu + JavaScript Files JavaScript Dosyaları + JavaScript: JavaScript: + Large Gaps Büyük Boşluklar + Last Artboard Son Çalışma Yüzeyi + Levels Düzeyler + Library Panel Options Kütüphane Paneli Seçenekleri + Link JavaScript Files… JavaScript Dosyalarını Bağla… + Live Shape Canlı Şekil + Lock Variables Değişkenleri Kilitle + Make Blend Karışım Yap + Make Dynamic Dinamik Yap + Make Intertwine İç İçe Geçir + Make Live Paint Canlı Boyama Yap + Make Pattern Desen Yap + Make Slice Dilim Yap + Medium Gaps Orta Boşluklar + Merge Live Paint Canlı Boyamayı Birleştir + Mesh Point Color Ağ Noktası Rengi + Move Envelope Point Zarf Noktasını Taşı + Move Plane and Copy Objects Düzlemi Taşı ve Nesneleri Kopyala + Move Plane and Objects Düzlemi ve Nesneleri Taşı + Move Slice Dilimi Taşı + Move Type on a Path Yol Üzerindeki Yazıyı Taşı + Neon Glow Neon Parıltısı + Neon Glow… Neon Parıltısı… + New Artboard Options… Yeni Çalışma Yüzeyi Seçenekleri… + New Guide Yeni Kılavuz + Next Artboard Sonraki Çalışma Yüzeyi + Paint Stops At: Boyanın Durduğu Yer: + Persistent Kalıcı + Place from Library Kütüphaneden Yerleştir + Poster Edges Poster Kenarları + Poster Edges… Poster Kenarları… + Posterization Posterleştirme + Previous Artboard Önceki Çalışma Yüzeyi + Rearrange Artboards Çalışma Yüzeylerini Yeniden Düzenle + Release Blend Karışımı Serbest Bırak + Release Envelope Zarfı Serbest Bırak + Release Intertwine İç İçe Geçirmeyi Serbest Bırak + Release Live Paint Canlı Boyamayı Serbest Bırak + Release Repeat Yinelemeyi Serbest Bırak + Release Slice Dilimi Serbest Bırak + Release Threaded Text Bağlantılı Metni Serbest Bırak + Remove Color Profile… Renk Profilini Kaldır… + Remove JavaScript File JavaScript Dosyasını Kaldır + Remove Selected Entry Seçili Girişi Kaldır + Rename Design Tasarımı Yeniden Adlandır + Rename Style Stili Yeniden Adlandır + Rename View Görünümü Yeniden Adlandır + Reorder Appearance Görünümü Yeniden Sırala + Reorder Artboards Çalışma Yüzeylerini Yeniden Sırala + Repeating Yinelenen + Reshape Spine Omurgayı Yeniden Şekillendir + Resize Yeniden Boyutlandır + Resize Artboard Çalışma Yüzeyini Yeniden Boyutlandır + Resize Slice Dilimi Yeniden Boyutlandır + Resize Type Area Yazı Alanını Yeniden Boyutlandır + Scale Design Tasarımı Ölçekle + Scale in Perspective Perspektifte Ölçekle + Shape Builder Delete Şekil Oluşturucu Silme + Sliding Kayar + Small Gaps Küçük Boşluklar + Sort Swatches Renk Örneklerini Sırala + Step up or down Bir adım yukarı veya aşağı + Symbol Screener Sembol Saydamlaştırıcı + Symbol Scruncher Sembol Sıkıştırıcı + Symbol Shifter Sembol Kaydırıcı + Symbol Sizer Sembol Boyutlandırıcı + Symbol Spinner Sembol Döndürücü + Symbol Stainer Sembol Renklendirici + Symbol Styler Sembol Stil Verici + Text Orientation Metin Yönü + The name in the save panel was “{typed}”; VectorCraft added the file type's extension. Replacing the file overwrites its contents. Kayıt panelindeki ad “{typed}” idi; VectorCraft dosya türünün uzantısını ekledi. Dosyayı değiştirmek içeriğinin üzerine yazar. + Thread Text Metni Bağla + Trackpad Gesture to Rotate View Görünümü Döndürmek İçin İzleme Dörtgeni Hareketi + Typing Yazma + Uniformly Scaled Tekdüze Ölçeklenmiş + Unlock Variables Değişkenlerin Kilidini Aç + Variable Font Değişken Yazı Tipi + Vertically Scaled Dikey Ölçeklenmiş + “{name}” already exists. Replace it? “{name}” zaten var. Değiştirilsin mi? +@msg Persistent libraries not found: {files} Kalıcı kütüphaneler bulunamadı: {files} +@msg Save writes {_1}, not {_2}: use file.saveAsTemplate to write it Kaydet {_1} yazar, {_2} değil: yazmak için file.saveAsTemplate kullanın +@msg `{given}` isn't a library panel (see window.swatchLibrary) `{given}` bir kütüphane paneli değil (bkz. window.swatchLibrary) +@msg `{key}` must be a #rrggbb color `{key}` bir #rrggbb rengi olmalıdır +@msg a key object sits on that point bu noktanın üzerinde bir anahtar nesne bulunuyor +@msg a linked image can't become a gradient mesh: embed it first bağlantılı bir görüntü degrade ağına dönüştürülemez: önce görüntüyü gömün +@msg a mask has more than one art block bir maskede birden fazla çizim bloğu var +@msg a spine keeps at least two points bir omurga en az iki nokta barındırır +@msg cancelled; nothing was changed iptal edildi; hiçbir şey değiştirilmedi +@msg handle must be in or out handle in veya out olmalıdır +@msg index must be ≥ 0 dizin ≥ 0 olmalıdır +@msg library panel `{given}` isn't open `{given}` kütüphane paneli açık değil +@msg mask art ends outside a mask dictionary maske çizimi bir maske sözlüğünün dışında bitiyor +@msg missing number `{key}` `{key}` sayısı eksik +@msg no such spine point böyle bir omurga noktası yok +@msg no such spine segment böyle bir omurga segmenti yok +@msg not a blend bir karışım değil +@msg select a blend or give `id` bir karışım seçin veya `id` belirtin +@msg t, dx and dy must be finite t, dx ve dy sonlu olmalıdır +@msg the blend has no spine karışımın omurgası yok +@msg the image has no usable size or position görüntünün kullanılabilir bir boyutu veya konumu yok +@msg the image's pixels can't be read görüntünün pikselleri okunamıyor +@msg the spine has no segments omurganın segmenti yok +@msg too many library panels were opened in this session bu oturumda çok fazla kütüphane paneli açıldı +@msg variables are locked değişkenler kilitli +@msg x and y must be finite x ve y sonlu olmalıdır +@msg aiVersion 7 writes legacy .ai files; a .ait template is always PDF-compatible aiVersion 7 eski .ai dosyalarını yazar; bir .ait şablonu her zaman PDF uyumludur +@msg Edit Original opens image and document files only; “{name}” is not one Özgünü Düzenle yalnızca görüntü ve belge dosyalarını açar; “{name}” bunlardan biri değil +@msg its editing data is for a {w} × {h} pt page, not the file's {pw} × {ph} pt page düzenleme verileri {w} × {h} pt boyutunda bir sayfa içindir, dosyanın {pw} × {ph} pt sayfası için değil +@msg its editing data is for a {w} × {h} pt page, the file's {pw} × {ph} pt page at {scale} düzenleme verileri {w} × {h} pt boyutunda bir sayfa içindir, dosyanın {scale} ölçeğindeki {pw} × {ph} pt sayfası +@msg no history to clear temizlenecek geçmiş yok +@msg only http, https and mailto URLs open in the browser, not “{url}” tarayıcıda yalnızca http, https ve mailto URL'leri açılır, “{url}” açılmaz +@msg {_1} files are written by file.saveAsTemplate {_1} dosyaları file.saveAsTemplate tarafından yazılır +@msg {id} opens another app: only the person at the keyboard can run it {id} başka bir uygulamayı açar: yalnızca klavye başındaki kişi çalıştırabilir +@msg “{name}” is not a file “{name}” bir dosya değil +@msg `{key}` must be a number, not {v} `{key}` bir sayı olmalıdır, {v} değil +@msg missing integer `{key}` `{key}` tam sayısı eksik +@msg {key} must be an array of non-negative integer object ids {key}, negatif olmayan tam sayı nesne kimlikleri dizisi olmalıdır +@msg invalid object id {value}: expected a non-negative integer geçersiz nesne kimliği {value}: negatif olmayan bir tam sayı bekleniyordu +@msg no such object id {value} böyle bir nesne kimliği yok: {value} +@msg {key} must be Unix seconds (an integer) or null {key}, Unix saniyesi (bir tam sayı) veya null olmalıdır +@msg its zlib compression is damaged zlib sıkıştırması hasarlı +@msg its Zstandard compression is damaged Zstandard sıkıştırması hasarlı +@msg it decompresses to more than {_1} MB açıldığında {_1} MB'tan fazla alan kaplıyor +@msg the file's variables and data sets weren't read (variables: {variables}, data sets: {data_sets}): the Variables panel doesn't list them dosyanın değişkenleri ve veri kümeleri okunmadı (değişkenler: {variables}, veri kümeleri: {data_sets}): Değişkenler paneli bunları listelemiyor +@msg nothing in data set {name} was applied: no object is bound to a variable it has a value for {name} veri kümesinden hiçbir şey uygulanmadı: değer içerdiği bir değişkene bağlı hiçbir nesne yok +@msg select an Objects on Path group bir Yol Üzerindeki Nesneler grubu seçin +@msg the Simplify slider is not open Basitleştirme kaydırıcısı açık değil +@msg {_1} is an exporter (File › Export › Export As…) {_1} bir dışa aktarma eklentisidir (Dosya › Dışa Aktar › Farklı Dışa Aktar…) + Alt key toggles to Smooth Tool Alt tuşu Düzleştirme Aracına geçiş yapar + Auto-Simplify Otomatik Basitleştir + Drag an item here, or right-click one, to put it in this group. Bu gruba eklemek için bir öğeyi buraya sürükleyin veya sağ tıklayın. + Drop here to take it out of its group Grup dışına çıkarmak için buraya bırakın + Locate Selected Objects Seçili Nesneleri Bul + Open this dialog with these settings next time Bu iletişim kutusunu bir sonraki seferde bu ayarlarla aç + Open this setting's help page Bu ayarın yardım sayfasını aç + Overlap Örtüşme + Select Fills Dolguları Seç + Select Strokes Konturları Seç + Snap to Unit Birim Değerine Yasla + The plug-in writes the whole document. Eklenti tüm belgeyi yazar. + Attach İliştir + Attach Objects on Path Yol Üzerindeki Nesneleri İliştir + Bas Relief Alçak Rölyef + Bas Relief… Alçak Rölyef… + Chalk & Charcoal Tebeşir ve Kömür + Chalk & Charcoal… Tebeşir ve Kömür… + Charcoal Kömür Kalem + Charcoal… Kömür Kalem… + Chrome Krom + Chrome… Krom… + Expand Objects on Path Yol Üzerindeki Nesneleri Genişlet + Graphic Pen Grafik Kalemi + Graphic Pen… Grafik Kalemi… + Move Anchor Point Bağlantı Noktasını Taşı + Move Library Group Kitaplık Grubunu Taşı + Note Paper Not Kâğıdı + Note Paper… Not Kâğıdı… + Objects on Path Yol Üzerindeki Nesneler + Objects on Path Options Yol Üzerindeki Nesneler Seçenekleri + Objects on Path Tool Yol Üzerindeki Nesneler Aracı + Photocopy Fotokopi + Photocopy… Fotokopi… + Plaster Alçı + Plaster… Alçı… + Plastic Wrap Streç Film + Plastic Wrap… Streç Film… + Reticulation Ağlanma + Reticulation… Ağlanma… + Smudge Stick Dağıtma Çubuğu + Smudge Stick… Dağıtma Çubuğu… + Sponge Sünger + Sponge… Sünger… + Stamp Damga + Stamp… Damga… + Watercolor Sulu Boya + Watercolor… Sulu Boya… +@msg Scale Text Attributes: selected type has no scale to bake Metin Niteliklerini Ölçeklendir: seçili metinde uygulanacak bir ölçek yok +@msg a bristle brush name can have at most {max} characters: `{name}` has {count} bir kıl fırça adı en fazla {max} karakter içerebilir: `{name}` {count} karakter içeriyor +@msg the artboard is locked çalışma yüzeyi kilitli +@msg brushes move only within their type fırçalar yalnızca kendi türleri içinde taşınabilir +@msg a path inside a compound path, blend, envelope, repeat or Intertwine group can't take objects bileşik yol, karışım, zarf, yineleme veya Girişme grubu içindeki bir yol nesne alamaz +@msg a clipping path can't take objects kırpma yolu nesne alamaz +@msg objects inside a blend, envelope, repeat or Intertwine group can't be attached to a path karışım, zarf, yineleme veya Girişme grubu içindeki nesneler bir yola iliştirilemez +@msg a clipping path can't be attached to a path kırpma yolu bir yola iliştirilemez +@msg the program ends a dictionary it didn't begin program başlamadığı bir sözlüğü sonlandırıyor +@msg the program opens a file, which the reader can't do program dosya açıyor ancak okuyucu bunu yapamaz +@msg the program restores a saved state that was already restored program zaten geri yüklenmiş bir kayıtlı durumu geri yüklüyor +@msg data the program reads is damaged or cut short, or the program asks for a position in a file that has none programın okuduğu veriler hasarlı veya kesilmiş ya da program dosyada bulunmayan bir konumu istiyor +@msg the program goes past one of the reader's limits program okuyucunun sınırlarından birini aşıyor +@msg the path has no point to continue from yolun devam edeceği bir nokta yok +@msg a value is outside the range the operator takes bir değer işlecin kabul ettiği aralığın dışında +@msg the operator needs more values than the stack holds işleç yığının içerdiğinden daha fazla değere ihtiyaç duyuyor +@msg part of the program isn't valid PostScript text programın bir kısmı geçerli bir PostScript metni değil +@msg a value has the wrong type for the operator bir değer işleç için yanlış türe sahip +@msg the program runs, deletes or renames a file, which the reader can't do program bir dosyayı çalıştırıyor, siliyor veya yeniden adlandırıyor ancak okuyucu bunu yapamaz +@msg the program asks for a resource that isn't defined program tanımlanmamış bir kaynak istiyor +@msg a calculation has no result, as in a division by zero sıfıra bölmede olduğu gibi bir hesaplamanın sonucu yok +@msg the operator looks for a mark on the stack and finds none işleç yığında bir işaret arıyor ancak bulamıyor + Art Brush Resim Fırçası + Artwork Çizim + Black and white stay as they are. Dark colors become shades of the stroke color and light colors become tints of it. Siyah ve beyaz olduğu gibi kalır. Koyu renkler kontur renginin tonları, açık renkler ise açık tonları haline gelir. + Black becomes the stroke color and white stays white. Other colors become tints of the stroke color by their lightness. Siyah kontur rengi olur ve beyaz beyaz kalır. Diğer renkler açıklıklarına göre kontur renginin açık tonları haline gelir. + Bottom-Justified Tab Aşağı Hizalı Sekme + Bristle Brush Kıl Fırça + Calligraphic Brush Kaligrafi Fırçası + Colorization Tips Renklendirme İpuçları + Consider Open Filled Paths as Closed Açık Dolgulu Yolları Kapalı Kabul Et + Cursor Swatch Preview İmleç Renk Örneği Önizlemesi + Diffuse Yayılma + Eyedropper: click the art to sample the key color Damlalık: anahtar rengi örneklemek için çizime tıklayın + Highlight: Vurgu: + Insert Kashidas Keşide Ekle + Load Variable Library… Değişken Kitaplığı Yükle… + Long Uzun + New Brush Yeni Fırça + Pattern Brush Desen Fırçası + Pick Color From: Rengi Buradan Al: + Scatter Brush Serpme Fırçası + Select art to make a scatter, art or pattern brush. Bir serpme, resim veya desen fırçası oluşturmak için çizim seçin. + Selection: Seçim: + Standard Standart + Straight Line Düz Çizgi + Stylistic Biçimsel + The art keeps its own colors. Çizim kendi renklerini korur. + The key color becomes the stroke color. The other colors shift their hue by the same amount and keep their saturation and brightness. Anahtar renk kontur rengi olur. Diğer renkler aynı miktarda renk tonu kaydırır ve doygunluk ile parlaklıklarını korur. + The samples show this brush on a blue stroke. Örnekler bu fırçayı mavi bir kontur üzerinde gösterir. + Tips İpuçları + Top-Justified Tab Yukarı Hizalı Sekme + on the canvas to create one ( tuval üzerinde bir tane oluşturmak için ( + selects several, or draws one inside an artboard) birkaç tanesini seçer veya bir çalışma yüzeyi içinde çizer) + 3D Lighting Preset 3D Aydınlatma Hazır Ayarı + Brush Art Fırça Çizimi + Colored Pencil… Kuru Boya… + Colored Pencil Kuru Boya + Dark Rough Koyu Pürüzlü + Dry Brush… Kuru Fırça… + Dry Brush Kuru Fırça + Hard Mix Sert Karışım + Hide Live Paint Gaps Canlı Boyama Boşluklarını Gizle + Light Rough Açık Pürüzlü + Load Variable Library Değişken Kitaplığı Yükle + Locate Library… Kitaplığı Bul… + Move Brush Fırçayı Taşı + New Without Dialog İletişim Kutusu Olmadan Yeni + Paint Daubs… Boya Lekeleri… + Paint Daubs Boya Lekeleri + Palette Knife… Palet Bıçağı… + Palette Knife Palet Bıçağı + Rough Pastels… Pürüzlü Pasteller… + Rough Pastels Pürüzlü Pasteller + Ruby… Ruby… + Ruby Ruby + Scale Text Attributes Metin Niteliklerini Ölçeklendir + Show Live Paint Gaps Canlı Boyama Boşluklarını Göster + Simple Basit + Soft Mix Yumuşak Karışım + Sparkle Parıltı + Underpainting… Astar Boyama… + Underpainting Astar Boyama + Water Paper… Islak Kâğıt… + Water Paper Islak Kâğıt + Wide Blurry Geniş Bulanık + Wide Sharp Geniş Keskin +@msg a PostScript error ({name} in `{op}`; {meaning}) PostScript hatası (`{op}` içinde {name}; {meaning}) +@msg a PostScript error ({name} in `{op}`; {meaning}), in {procs} {procs} içinde PostScript hatası (`{op}` içinde {name}; {meaning}) +@msg a PostScript error ({name} in `{op}`: {at}; {meaning}) PostScript hatası (`{op}` içinde {name}: {at}; {meaning}) +@msg a PostScript error ({name} in `{op}`: {at}; {meaning}), in {procs} {procs} içinde PostScript hatası (`{op}` içinde {name}: {at}; {meaning}) +@msg a PostScript error ({name}; {meaning}) PostScript hatası ({name}; {meaning}) + Character Direction Karakter Yönü + Repeat Objects Yineleme Nesneleri +@msg a swatch or color group named `{n}` exists `{n}` adlı bir renk örneği veya renk grubu zaten var +@msg an image has no pixels and was left out piksel içermeyen bir görüntü dışarıda bırakıldı +@msg thumbnail: no page {n} (the file has 1) thumbnail: {n}. sayfa yok (dosyada 1 sayfa var) +@msg variables that aren't text were left out: {kinds} metin olmayan değişkenler dışarıda bırakıldı: {kinds} + Collapse Panel Group Panel Grubunu Daralt +@msg panel floats; collapse its group with window.panel.float {panel, collapsed} panel kayan durumda; grubunu window.panel.float {panel, collapsed} ile daraltın +@msg panel is not in a dock group panel bir yuva grubunda değil +@msg only a dock group above or below others collapses, not one beside another yalnızca diğerlerinin üstünde veya altındaki bir yuva grubu daraltılabilir, yanındaki değil +@msg icon must be true or false icon true veya false olmalı +@msg icon only docks a panel in the icon column, with no anchor icon, bir paneli yalnızca simge sütununa yerleştirir, anchor olmadan +@msg column docks a set as a dock column, with no anchor or icon column, bir kümeyi yuva sütunu olarak yerleştirir, anchor veya icon olmadan +3d Light Işık + Torn Edges… Yırtık Kenarlar… + Torn Edges Yırtık Kenarlar + Brush Size Fırça Boyutu + Texture Coverage Doku Kapsamı + Definition Tanım + Brush Detail Fırça Ayrıntısı + Shadow Intensity Gölge Yoğunluğu + Thickness Kalınlık + Detail Ayrıntı + Light/Dark Balance Açık/Koyu Dengesi +@msg library panel `{given}` isn't missing its library `{given}` kitaplık panelinin kitaplığı eksik değil +@msg The image is {_1} × {_2} pixels, more than {LARGE_TRACE_SIDE} on a side: it is traced, but more slowly. A lower-fidelity preset or a smaller copy of the image traces faster. Görüntü {_1} × {_2} piksel, bir kenarı {LARGE_TRACE_SIDE} değerinden büyük: izlenir, ancak daha yavaş. Daha düşük doğruluklu bir ön ayar veya görüntünün daha küçük bir kopyası daha hızlı izlenir. +@msg The image was traced at {_1} × {_2} pixels, scaled down from {_3} × {_4} ({_5} megapixels at most). Görüntü {_3} × {_4} boyutundan küçültülerek {_1} × {_2} pikselde izlendi (en fazla {_5} megapiksel). + Gap Length: Boşluk Uzunluğu: +@plural {n} more export waiting|{n} more exports waiting {n} dışa aktarma daha bekliyor|{n} dışa aktarma daha bekliyor +@msg Export cancelled Dışa aktarma iptal edildi + Add filters from the list above Yukarıdaki listeden filtre ekleyin + Add to Stack Yığına Ekle + Applied Filters Uygulanan Filtreler + Categories Kategoriler + Choose a filter Bir filtre seçin + Effect Gallery Efekt Galerisi + Filters Filtreler + Select artwork to apply effects Efekt uygulamak için çizim seçin +@msg {label} keeps 1 of the document's {n} artboards: the file reopens with one. Turn on Preserve Editing Capabilities to keep them all. {label}, belgenin {n} çalışma yüzeyinden 1 tanesini korur: dosya tek çalışma yüzeyiyle yeniden açılır. Hepsini korumak için Düzenleme Yeteneklerini Koru seçeneğini açın. + Ease In Yavaş Başla + Ease Out Yavaş Bitir + Ease In Out Yavaş Başla ve Bitir + Ease Out In Yavaş Bitir ve Başla + Ramp: Eğim: + Shift: Kaydırma: + Fresco… Fresk… + Fresco Fresk + Effect Gallery… Efekt Galerisi… + Effect Gallery Dialog Efekt Galerisi İletişim Kutusu diff --git a/crates/ui-egui/src/widgets.rs b/crates/ui-egui/src/widgets.rs index a7a3e9173..065669080 100644 --- a/crates/ui-egui/src/widgets.rs +++ b/crates/ui-egui/src/widgets.rs @@ -2864,6 +2864,7 @@ mod combo_keyboard_tests { mod button_tests { use super::*; + /// [`flat_button_fit`] preserves minimum width for short labels and expands for long ones. #[test] fn flat_button_fit_expands_for_long_text() { let ctx = egui::Context::default(); From fe9ceb3dfa2c8f3939b3f3f91ef6eb77ec2ace2a Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Wed, 21 Oct 2026 22:14:53 +0000 Subject: [PATCH 11/13] G11: copy fill/stroke by dragging between proxies (#3467) ## Summary Dragging the Fill or Stroke proxy onto the other square applies that paint there, like dropping a swatch on art. Matches Illustrator's fill/stroke chips accepting a dragged color from the other. ## Tests - panels::tests::dropping_a_proxy_paint_on_the_other_proxy_applies_it Closes storytold/vectorcraft#3467 Co-authored-by: nrq6993-a11y --- crates/ui-egui/src/panels/mod.rs | 43 ++++++++++++++++++++++++++++++++ crates/ui-egui/src/widgets.rs | 26 ++++++++++++++++++- 2 files changed, 68 insertions(+), 1 deletion(-) diff --git a/crates/ui-egui/src/panels/mod.rs b/crates/ui-egui/src/panels/mod.rs index 048774c88..566db5efc 100644 --- a/crates/ui-egui/src/panels/mod.rs +++ b/crates/ui-egui/src/panels/mod.rs @@ -382,6 +382,12 @@ pub(crate) fn proxy(app: &mut VectorcraftApp, ui: &mut Ui, size: f32) { if let Some(stroke) = c.pick { app.run("ui.colorPicker", json!({ "stroke": stroke })).ok(); } + if let Some(p) = c.dropped_fill { + app.run("paint.setFill", p).ok(); + } + if let Some(p) = c.dropped_stroke { + app.run("paint.setStroke", p).ok(); + } } /// The Fill (or `stroke`) chip of the Control bar and the Properties panel, `size` square (with a @@ -538,6 +544,43 @@ pub(crate) fn empty_state(ui: &mut Ui, icon: &str, title: &str, body: &str) { mod tests { use super::*; + #[test] + fn dropping_a_proxy_paint_on_the_other_proxy_applies_it() { + use egui::{Event, Modifiers, PointerButton}; + use vectorcraft_color::{Color, Paint}; + + use crate::widgets::PanelDrag; + + let mut app = crate::VectorcraftApp::new(vectorcraft_engine::Session::new(), Default::default()); + app.run("file.new", json!({"width": 200, "height": 200})).unwrap(); + app.run("shape.rectangle", json!({"x": 10, "y": 10, "width": 40, "height": 40})).unwrap(); + app.run("paint.setFill", json!({"color": "#ff0000"})).unwrap(); + app.run("paint.setStroke", json!({"color": "#0000ff"})).unwrap(); + let ctx = egui::Context::default(); + let stroke_at = std::cell::Cell::new(egui::Pos2::ZERO); + let frame = |app: &mut crate::VectorcraftApp, events: Vec| { + let mut out = ctx.run_ui(egui::RawInput { events, ..Default::default() }, |ui| { + proxy(app, ui, 36.0); + if let Some(c) = ctx.read_response(ui.id().with("stroke-proxy")).map(|r| r.rect.center()) { + stroke_at.set(c); + } + }); + out.textures_delta.clear(); + }; + frame(&mut app, vec![]); + let at = stroke_at.get(); + let red = PanelDrag::paint(Paint::solid(Color::from_hex("#ff0000").unwrap())); + egui::DragAndDrop::set_payload(&ctx, red); + let release = Event::PointerButton { pos: at, button: PointerButton::Primary, pressed: false, modifiers: Modifiers::NONE }; + frame(&mut app, vec![Event::PointerMoved(at), release]); + let stroke = app.session.shown_stroke().unwrap(); + assert_eq!(stroke.paint.color().map(|c| c.to_hex()), Some("#ff0000".into()), "{}", app.ui.status); + let st = app.session.active().unwrap(); + let id = st.selection.objects[0]; + assert_eq!(st.doc.node(id).unwrap().appearance.fill_paint().color().map(|c| c.to_hex()), Some("#ff0000".into())); + assert!(egui::DragAndDrop::payload::(&ctx).is_none()); + } + #[test] fn paint_params_roundtrip_shapes() { assert_eq!(paint_params(&Paint::None), json!({"none": true})); diff --git a/crates/ui-egui/src/widgets.rs b/crates/ui-egui/src/widgets.rs index 065669080..306c75e80 100644 --- a/crates/ui-egui/src/widgets.rs +++ b/crates/ui-egui/src/widgets.rs @@ -839,7 +839,7 @@ pub fn chip_button_named(ui: &mut Ui, size: f32, chevron: bool, tip: &str, draw: } /// What the user did on a [`fill_stroke_proxy`]. -#[derive(Clone, Copy, Debug, Default, PartialEq, Eq)] +#[derive(Clone, Debug, Default, PartialEq, Eq)] pub struct ProxyClicks { pub fill: bool, pub stroke: bool, @@ -847,6 +847,10 @@ pub struct ProxyClicks { pub default: bool, /// Double-clicked a square: open the Color Picker for it (`true` = the stroke). pub pick: Option, + /// A paint dragged from the other proxy (or a swatch) dropped on the fill square. + pub dropped_fill: Option, + /// A paint dropped on the stroke square. + pub dropped_stroke: Option, } /// The Fill/Stroke proxy pair (two overlapping squares). `mixed` (fill, stroke) draws a "?" square @@ -859,6 +863,8 @@ pub fn fill_stroke_proxy(ui: &mut Ui, fill: &Paint, stroke: &Paint, mixed: (bool let stroke_r = Rect::from_min_size(rect.max - Vec2::splat(s), Vec2::splat(s)); let stroke_resp = ui.interact(stroke_r, ui.id().with("stroke-proxy"), Sense::click_and_drag()); let fill_resp = ui.interact(fill_r, ui.id().with("fill-proxy"), Sense::click_and_drag()); + let dropped_fill = if mixed.0 { None } else { proxy_paint_drop(ui, &fill_resp) }; + let dropped_stroke = if mixed.1 { None } else { proxy_paint_drop(ui, &stroke_resp) }; // A proxy drags its paint (onto the Swatches panel or art), unless it shows "?". for (resp, paint, mixed) in [(&fill_resp, fill, mixed.0), (&stroke_resp, stroke, mixed.1)] { if !mixed { @@ -915,9 +921,27 @@ pub fn fill_stroke_proxy(ui: &mut Ui, fill: &Paint, stroke: &Paint, mixed: (bool swap: swap.on_hover_text(tl!("Swap Fill and Stroke (Shift+X)")).clicked(), default: def.on_hover_text(tl!("Default Fill and Stroke (D)")).clicked(), pick, + dropped_fill, + dropped_stroke, } } +/// A [`PanelDrag::Paint`] released on a Fill/Stroke proxy square: highlight while held over it. +fn proxy_paint_drop(ui: &Ui, resp: &Response) -> Option { + if let Some(drag) = resp.dnd_hover_payload::() { + if let PanelDrag::Paint { params, .. } = &*drag { + if !params.is_null() { + let t = Tokens::get(ui.ctx()); + ui.painter().rect_stroke(resp.rect, 0.0, Stroke::new(2.0, t.accent), StrokeKind::Outside); + } + } + } + resp.dnd_release_payload::().and_then(|d| { + let PanelDrag::Paint { params, .. } = &*d else { return None }; + (!params.is_null()).then_some(params.clone()) + }) +} + /// A compact dropdown of interface labels (shown in the UI language). Returns the chosen index. pub fn dropdown(ui: &mut Ui, id: impl std::hash::Hash + std::fmt::Debug, current: &str, options: &[&str], width: f32) -> Option { dropdown_with(ui, id, current, options, width, |_| true) From 1388b8ec1a914a61142a0bca5711cbe7e76b76c4 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Wed, 21 Oct 2026 22:16:53 +0000 Subject: [PATCH 12/13] G11: clippy collapse in proxy_paint_drop Co-authored-by: nrq6993-a11y --- crates/ui-egui/src/widgets.rs | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/crates/ui-egui/src/widgets.rs b/crates/ui-egui/src/widgets.rs index 306c75e80..f62f105c0 100644 --- a/crates/ui-egui/src/widgets.rs +++ b/crates/ui-egui/src/widgets.rs @@ -928,13 +928,12 @@ pub fn fill_stroke_proxy(ui: &mut Ui, fill: &Paint, stroke: &Paint, mixed: (bool /// A [`PanelDrag::Paint`] released on a Fill/Stroke proxy square: highlight while held over it. fn proxy_paint_drop(ui: &Ui, resp: &Response) -> Option { - if let Some(drag) = resp.dnd_hover_payload::() { - if let PanelDrag::Paint { params, .. } = &*drag { - if !params.is_null() { - let t = Tokens::get(ui.ctx()); - ui.painter().rect_stroke(resp.rect, 0.0, Stroke::new(2.0, t.accent), StrokeKind::Outside); - } - } + if let Some(drag) = resp.dnd_hover_payload::() + && let PanelDrag::Paint { params, .. } = &*drag + && !params.is_null() + { + let t = Tokens::get(ui.ctx()); + ui.painter().rect_stroke(resp.rect, 0.0, Stroke::new(2.0, t.accent), StrokeKind::Outside); } resp.dnd_release_payload::().and_then(|d| { let PanelDrag::Paint { params, .. } = &*d else { return None }; From 1fbec667ec1ba901d7008364994f8953ec0c1387 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Wed, 21 Oct 2026 23:47:16 +0000 Subject: [PATCH 13/13] Fix #3465: Swatch Libraries Other Library lists .ase on Linux MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary Linux file portals grey out files that do not match the open dialog's default filter. Other Library… and Locate Library… used File › Open filters, whose first entry is All readable files and omits swatch-library extensions such as .ase. Add library_open_filters with the library formats first (matching Illustrator's Swatch Libraries › Other Library…) and use it from swatch and graphic style library pickers. ## Tests - engine: library_open_filters_list_library_formats_first - ui-egui: other_swatch_library_asks_off_the_ui_thread asserts Swatch libraries is the default filter and includes ase Closes storytold/vectorcraft#3465 Co-authored-by: nrq6993-a11y --- crates/engine/src/cmd/fileio/mod.rs | 11 ++++++++++ crates/engine/src/cmd/fileio/tests.rs | 8 +++++++ crates/ui-egui/src/panels/graphic_styles.rs | 2 +- crates/ui-egui/src/panels/library_panel.rs | 24 +++++++++++++++++---- crates/ui-egui/src/panels/swatches.rs | 2 +- crates/ui-egui/src/tests_picks.rs | 5 ++++- 6 files changed, 45 insertions(+), 7 deletions(-) diff --git a/crates/engine/src/cmd/fileio/mod.rs b/crates/engine/src/cmd/fileio/mod.rs index 3135e2bfa..3931defdb 100644 --- a/crates/engine/src/cmd/fileio/mod.rs +++ b/crates/engine/src/cmd/fileio/mod.rs @@ -793,6 +793,17 @@ pub fn open_filters() -> impl Iterator impl Iterator { + std::iter::once((library_label, library_exts)).chain(open_filters()) +} + /// File → Place dialog filters: "All placeable files", then one per placeable format, then text, /// RTF and Word. pub fn place_filters() -> impl Iterator { diff --git a/crates/engine/src/cmd/fileio/tests.rs b/crates/engine/src/cmd/fileio/tests.rs index fe2dc7251..e656965e1 100644 --- a/crates/engine/src/cmd/fileio/tests.rs +++ b/crates/engine/src/cmd/fileio/tests.rs @@ -384,6 +384,14 @@ fn open_exts_cover_every_readable_format() { assert_eq!(filters.last(), Some(&("Plug-ins", crate::cmd::plugin::EXTS)), "File › Open installs plug-ins"); } +#[test] +fn library_open_filters_list_library_formats_first() { + let filters: Vec<_> = library_open_filters("Swatch libraries", super::swatchlib::LIBRARY_EXTS).collect(); + assert_eq!(filters[0], ("Swatch libraries", super::swatchlib::LIBRARY_EXTS)); + assert!(filters[0].1.contains(&"ase")); + assert_eq!(filters[1], ("All readable files", OPEN_EXTS)); +} + /// The extensions usage texts list for export: one per writable format, each picking that format /// (`.png` picks PNG; PNG-8 is asked for by `format`). #[test] diff --git a/crates/ui-egui/src/panels/graphic_styles.rs b/crates/ui-egui/src/panels/graphic_styles.rs index 5929185fb..8b0f2366c 100644 --- a/crates/ui-egui/src/panels/graphic_styles.rs +++ b/crates/ui-egui/src/panels/graphic_styles.rs @@ -767,7 +767,7 @@ pub(crate) fn load_library(app: &mut VectorcraftApp, params: Value) -> Result) -> Result { - match library_panel::pick_library_file(app, path)? { + match library_panel::pick_library_file(app, path, library_panel::library_pick_filters(GraphicStyleLibraries::KIND))? { Some(path) => load_library(app, json!({ "path": path })), None => Ok(Value::Null), } diff --git a/crates/ui-egui/src/panels/library_panel.rs b/crates/ui-egui/src/panels/library_panel.rs index b75eefaa0..6ef14648e 100644 --- a/crates/ui-egui/src/panels/library_panel.rs +++ b/crates/ui-egui/src/panels/library_panel.rs @@ -17,7 +17,9 @@ use std::sync::{Mutex, PoisonError}; use egui::{Rect, Sense, Ui}; use serde::{Deserialize, Serialize}; use serde_json::{Value, json}; -use vectorcraft_engine::cmd::swatchlib::LibraryInfo; +use vectorcraft_doc::style_libs::STYLES_EXT; +use vectorcraft_engine::cmd::fileio; +use vectorcraft_engine::cmd::swatchlib::{self, LibraryInfo}; use super::swatches::{View, click_selection, folder_tile, list_row, list_row_name, tile_grid}; use super::{pstate, set_pstate}; @@ -503,7 +505,8 @@ pub(crate) fn locate(app: &mut VectorcraftApp, p: &Value) -> Result Vec<(&'static str, &'static [&'static str])> { + match kind { + super::swatches::SwatchLibraries::KIND => fileio::library_open_filters("Swatch libraries", swatchlib::LIBRARY_EXTS).collect(), + super::graphic_styles::GraphicStyleLibraries::KIND => fileio::library_open_filters("Graphic Style Libraries", &[STYLES_EXT]).collect(), + _ => fileio::open_filters().collect(), + } +} + /// Other Library…: the library file at `path`, else one picked in an open dialog; `None` when the /// pick is asynchronous (on the web the picked file arrives later through [`crate::io::open_bytes`]). -pub(crate) fn pick_library_file(app: &mut VectorcraftApp, path: Option) -> Result, String> { +pub(crate) fn pick_library_file( + app: &mut VectorcraftApp, + path: Option, + filters: Vec<(&'static str, &'static [&'static str])>, +) -> Result, String> { if path.is_none() && let Some(f) = app.services.open_async.as_mut() { @@ -539,7 +555,7 @@ pub(crate) fn pick_library_file(app: &mut VectorcraftApp, path: Option) return Ok(None); } path.or_else(|| { - let pick = crate::FilePick { filters: crate::FilePick::filters(vectorcraft_engine::cmd::fileio::open_filters()), ..Default::default() }; + let pick = crate::FilePick { filters: crate::FilePick::filters(filters), ..Default::default() }; crate::picks::open(app, &pick) }) .map(Some) diff --git a/crates/ui-egui/src/panels/swatches.rs b/crates/ui-egui/src/panels/swatches.rs index 17679ca8d..75861ff5c 100644 --- a/crates/ui-egui/src/panels/swatches.rs +++ b/crates/ui-egui/src/panels/swatches.rs @@ -1214,7 +1214,7 @@ pub(crate) fn load_library(app: &mut VectorcraftApp, params: Value) -> Result) -> Result { - match library_panel::pick_library_file(app, path)? { + match library_panel::pick_library_file(app, path, library_panel::library_pick_filters(SwatchLibraries::KIND))? { Some(path) => load_library(app, json!({ "path": path })), None => Ok(Value::Null), } diff --git a/crates/ui-egui/src/tests_picks.rs b/crates/ui-egui/src/tests_picks.rs index 3aa8f21b3..47fca62ad 100644 --- a/crates/ui-egui/src/tests_picks.rs +++ b/crates/ui-egui/src/tests_picks.rs @@ -260,7 +260,10 @@ fn other_swatch_library_asks_off_the_ui_thread() { app.run("swatch.new", json!({"name": "Signal", "color": "#ff3300"})).unwrap(); let (dir, file) = saved_document(&mut app, "swatches"); click(&mut app, "Other Library…", library_menu::); - assert!(matches!(shown.requests().as_slice(), [PickRequest::Open(_)])); + assert!(matches!( + shown.requests().as_slice(), + [PickRequest::Open(p)] if p.filters.first().is_some_and(|(label, exts)| label == "Swatch libraries" && exts.iter().any(|e| e == "ase")) + )); poll(&mut app); assert!(library_panel::last_open(&app.ui).is_none() && app.ui.status.is_empty(), "{}", app.ui.status); shown.answer(&[&file]);