mirror of
https://github.com/storytold/vectorcraft.git
synced 2026-11-11 02:19:56 -06:00
Merge pull request #5471 from dotCooCoo/fix/ai-save-option-errors
.ai save: errors and notes name the legacy or non-PDF-compatible .ai
This commit is contained in:
@@ -420,7 +420,10 @@ pub fn encode(doc: &Document, format: &str, p: &Value) -> Result<Vec<u8>> {
|
||||
/// font; PDF, EPS, SVG, EMF, WMF and the raster formats: type that doesn't fit its frame).
|
||||
pub fn encode_with_warnings(doc: &Document, format: &str, p: &Value) -> Result<(Vec<u8>, Vec<String>)> {
|
||||
let f = super::writable(C, Some(format), None)?;
|
||||
encode_all(doc, f.id, p)?.single(f)
|
||||
let enc = encode_all(doc, f.id, p)?;
|
||||
// The error for a version 7 .ai of several artboards names the legacy .ai.
|
||||
let legacy = f.id == "ai" && super::legacy_ai::wanted(C, f, p)?;
|
||||
enc.single(&if legacy { super::legacy_ai::named(f) } else { *f })
|
||||
}
|
||||
|
||||
/// [`encode`], with every file the export writes.
|
||||
|
||||
@@ -41,7 +41,7 @@ use super::super::{Affine, EngineError, NodeId, Result, bad};
|
||||
use super::{ArtboardPick, Encoded, Format};
|
||||
|
||||
/// Does `p` ask a save in `f` for a legacy `.ai` file of version 7 (`aiVersion: "7"`)? An unknown
|
||||
/// version is an error, and so is version 7 for a `.ait` template, which is PDF-compatible only.
|
||||
/// version is an error, and so is version 7 for a `.ait` template, which is never a legacy file.
|
||||
pub(super) fn wanted(cmd: &str, f: &Format, p: &Value) -> Result<bool> {
|
||||
let legacy = match p.get("aiVersion") {
|
||||
None | Some(Value::Null) => false,
|
||||
@@ -51,11 +51,17 @@ pub(super) fn wanted(cmd: &str, f: &Format, p: &Value) -> Result<bool> {
|
||||
Some(v) => return Err(bad(cmd, format!("aiVersion {v}: \"pdf\" (PDF-compatible, the default) or \"7\" (legacy .ai, version 7)"))),
|
||||
};
|
||||
if legacy && f.id == "ait" {
|
||||
return Err(bad(cmd, "aiVersion 7 writes legacy .ai files; a .ait template is always PDF-compatible"));
|
||||
return Err(bad(cmd, "aiVersion 7 writes legacy .ai files, not .ait templates"));
|
||||
}
|
||||
Ok(legacy)
|
||||
}
|
||||
|
||||
/// `f` (the `.ai` format, whose label names the PDF-compatible file) named, in its errors, as the
|
||||
/// legacy `.ai` file.
|
||||
pub(super) fn named(f: &Format) -> Format {
|
||||
Format { label: "legacy .ai (version 7)", ..*f }
|
||||
}
|
||||
|
||||
/// What a legacy `.ai` does with the images it can't hold (`transparentImages`).
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
|
||||
enum SeeThrough {
|
||||
@@ -109,7 +115,7 @@ pub(super) fn encode(cmd: &str, f: &Format, doc: &Document, p: &Value) -> Result
|
||||
}
|
||||
let mode = see_through(cmd, p)?;
|
||||
let (hidden, outline_text) = (hidden_objects(cmd, p)?, outline_text(cmd, p)?);
|
||||
let picked: ArtboardPick = super::encode::options(f, p)?;
|
||||
let picked: ArtboardPick = super::encode::options(&named(f), p)?;
|
||||
let boards = picked.resolve(n).map_err(|e| bad(cmd, e))?.unwrap_or_else(|| (0..n).collect());
|
||||
let mut enc = Encoded { warnings: vec![FIDELITY.to_string()], ..Encoded::default() };
|
||||
if boards.len() > 1 {
|
||||
|
||||
@@ -249,11 +249,6 @@ pub fn save_plan(s: &Session, mode: SaveMode, p: &Value) -> Result<SavePlan> {
|
||||
if let Some((key, top, inner)) = disagreeing_option(p, is_svg(format)).map_err(|e| bad(cmd, e))? {
|
||||
return Err(bad(cmd, format!("`{key}: {top}` and `options.{key}: {inner}` disagree: give the option once")));
|
||||
}
|
||||
let notes = NATIVE_OPTIONS
|
||||
.iter()
|
||||
.filter(|k| p.get(**k).is_some_and(|v| !v.is_null()) && !reads_option(format, k))
|
||||
.map(|k| format!("`{k}` was not used: {} files don't read it", format.label))
|
||||
.collect();
|
||||
let mut given: Map<String, Value> = match p.get("options") {
|
||||
Some(Value::Object(o)) => o.iter().filter(|(k, _)| reads_option(format, k)).map(|(k, v)| (k.clone(), v.clone())).collect(),
|
||||
None | Some(Value::Null) => Map::new(),
|
||||
@@ -293,6 +288,12 @@ pub fn save_plan(s: &Session, mode: SaveMode, p: &Value) -> Result<SavePlan> {
|
||||
if let Some(path) = &path {
|
||||
super::check_not_lossy_overwrite(st, path, p, cmd)?;
|
||||
}
|
||||
let written = written_as(cmd, format, &Value::Object(options.clone()));
|
||||
let notes = NATIVE_OPTIONS
|
||||
.iter()
|
||||
.filter(|k| p.get(**k).is_some_and(|v| !v.is_null()) && !reads_option(format, k))
|
||||
.map(|k| format!("`{k}` was not used: {} files don't read it", written.label))
|
||||
.collect();
|
||||
Ok(SavePlan { mode, path, format, options, name, folder, modified, notes })
|
||||
}
|
||||
|
||||
@@ -576,6 +577,25 @@ fn blank_pages(doc: &Document) -> Document {
|
||||
/// Why a `.ai` file saved without PDF content looks empty elsewhere.
|
||||
const NOT_PDF_COMPATIBLE: &str = "saved without PDF content: VectorCraft opens it as before, other apps show empty pages";
|
||||
|
||||
/// `f` (`.ai` or `.ait`) named, in its option errors, as a file saved without PDF content.
|
||||
fn without_pdf(f: &Format) -> Format {
|
||||
let label = if f.id == "ait" { "non-PDF-compatible .ait template" } else { "non-PDF-compatible .ai" };
|
||||
Format { label, ..*f }
|
||||
}
|
||||
|
||||
/// `f` named, in its errors and notes, as the file a save with options `p` writes: a version 7
|
||||
/// `.ai` as the legacy `.ai`, and a `.ai` or `.ait` with `pdfCompatible: false` as one saved
|
||||
/// without PDF content.
|
||||
fn written_as(cmd: &str, f: &Format, p: &Value) -> Format {
|
||||
if f.id == "ai" && super::legacy_ai::wanted(cmd, f, p).unwrap_or(false) {
|
||||
super::legacy_ai::named(f)
|
||||
} else if matches!(f.id, "ai" | "ait") && !bool_or(p, "pdfCompatible", true) {
|
||||
without_pdf(f)
|
||||
} else {
|
||||
*f
|
||||
}
|
||||
}
|
||||
|
||||
/// `e`, an error of the export encoders, under the save command `cmd` instead of
|
||||
/// `document.export`.
|
||||
fn named_for_save(cmd: &str, e: crate::EngineError) -> crate::EngineError {
|
||||
@@ -585,8 +605,9 @@ fn named_for_save(cmd: &str, e: crate::EngineError) -> crate::EngineError {
|
||||
}
|
||||
}
|
||||
|
||||
/// The shared Save and Export encoder for PDF-compatible `.ai` files (and `.ait` templates, the
|
||||
/// same file).
|
||||
/// The shared Save and Export encoder for `.ai` files (and `.ait` templates, the same file):
|
||||
/// PDF-compatible by default, without PDF content (`pdfCompatible: false`), or legacy version 7
|
||||
/// `.ai` files (`aiVersion: "7"`).
|
||||
pub(super) fn encode_ai(cmd: &str, f: &Format, doc: &Document, p: &Value) -> Result<Encoded> {
|
||||
if super::legacy_ai::wanted(cmd, f, p)? {
|
||||
return super::legacy_ai::encode(cmd, f, doc, p);
|
||||
@@ -605,8 +626,9 @@ pub(super) fn encode_ai(cmd: &str, f: &Format, doc: &Document, p: &Value) -> Res
|
||||
}
|
||||
}
|
||||
}
|
||||
let native_options = super::native::ai_options(cmd, f, doc, ¶ms)?;
|
||||
let pdf_compatible = bool_or(¶ms, "pdfCompatible", true);
|
||||
let f = &if pdf_compatible { *f } else { without_pdf(f) };
|
||||
let native_options = super::native::ai_options(cmd, f, doc, ¶ms)?;
|
||||
if !pdf_compatible {
|
||||
let picked: ArtboardPick = super::encode::options(f, ¶ms)?;
|
||||
let picked = picked.resolve(doc.artboards.len()).map_err(|e| bad(cmd, e))?;
|
||||
|
||||
@@ -93,6 +93,31 @@ fn the_default_stays_pdf_compatible_and_other_versions_are_refused() {
|
||||
assert_eq!(v["options"]["aiVersion"]["value"], "pdf", "{v}");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn errors_name_the_legacy_ai_not_the_pdf_compatible_one() {
|
||||
let mut s = three_boards();
|
||||
for (cmd, p) in [
|
||||
("file.saveCopy", json!({"format": "ai", "aiVersion": "7", "artboard": "2"})),
|
||||
("document.export", json!({"format": "ai", "aiVersion": "7", "range": 2})),
|
||||
] {
|
||||
let e = s.execute(cmd, &p).unwrap_err().to_string();
|
||||
assert!(e.contains("legacy .ai (version 7) options: invalid type") && !e.contains("PDF-compatible"), "{cmd}: {e}");
|
||||
}
|
||||
// Version 7 writes a legacy .ai whatever pdfCompatible says, and its errors and notes name it.
|
||||
let e = s.execute("file.saveCopy", &json!({"format": "ai", "aiVersion": "7", "pdfCompatible": false, "artboard": "2"})).unwrap_err().to_string();
|
||||
assert!(e.contains("legacy .ai (version 7) options: invalid type"), "{e}");
|
||||
let r = s.execute("file.saveCopy", &json!({"format": "ai", "aiVersion": "7", "artboard": 1, "version": 3})).unwrap();
|
||||
assert!(r["warnings"].to_string().contains("`version` was not used: legacy .ai (version 7) files don't read it"), "{r}");
|
||||
// Several artboards are several files, which one encoded file can't hold.
|
||||
let d = &s.doc().unwrap().doc;
|
||||
let e = crate::cmd::fileio::encode_with_warnings(d, "ai", &json!({"aiVersion": "7"})).unwrap_err().to_string();
|
||||
assert!(e.contains("legacy .ai (version 7) writes one file per artboard here") && !e.contains("PDF-compatible"), "{e}");
|
||||
assert!(crate::cmd::fileio::encode_with_warnings(d, "ai", &json!({"aiVersion": "7", "artboard": 2})).is_ok());
|
||||
// The PDF-compatible file keeps its name.
|
||||
let e = s.execute("document.export", &json!({"format": "ai", "includeLinked": "yes"})).unwrap_err().to_string();
|
||||
assert!(e.contains("PDF-compatible .ai options: invalid type") && !e.contains("legacy"), "{e}");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn transparency_and_appearances_are_written_as_plain_art_and_type_as_text() {
|
||||
let mut s = Session::new();
|
||||
|
||||
@@ -213,6 +213,33 @@ fn ai_without_pdf_content_and_compression() {
|
||||
assert!(loose.len() > packed.len(), "{} vs {}", loose.len(), packed.len());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn ai_option_errors_name_a_file_saved_without_pdf_content() {
|
||||
let mut s = three_boards();
|
||||
for p in
|
||||
[json!({"format": "ai", "pdfCompatible": false, "artboard": "2"}), json!({"format": "ai", "pdfCompatible": false, "includeLinked": "yes"})]
|
||||
{
|
||||
let e = s.execute("file.saveCopy", &p).unwrap_err().to_string();
|
||||
assert!(e.contains("non-PDF-compatible .ai options: invalid type"), "{p}: {e}");
|
||||
}
|
||||
let e = s.execute("document.export", &json!({"format": "ai", "pdfCompatible": false, "artboard": "2"})).unwrap_err().to_string();
|
||||
assert!(e.contains("`document.export`") && e.contains("non-PDF-compatible .ai options: invalid type"), "{e}");
|
||||
let p = json!({"format": "ait", "pdfCompatible": false, "includeLinked": "yes"});
|
||||
let e = s.execute("file.saveAsTemplate", &p).unwrap_err().to_string();
|
||||
assert!(e.contains("non-PDF-compatible .ait template options: invalid type"), "{e}");
|
||||
// A template saved without PDF content is written.
|
||||
let r = s.execute("file.saveAsTemplate", &json!({"format": "ait", "pdfCompatible": false})).unwrap();
|
||||
assert!(r["warnings"].to_string().contains("without PDF content"), "{r}");
|
||||
// So are the notes on native options the file doesn't read.
|
||||
let r = s.execute("file.saveCopy", &json!({"format": "ai", "pdfCompatible": false, "version": 3})).unwrap();
|
||||
assert!(r["warnings"].to_string().contains("`version` was not used: non-PDF-compatible .ai files don't read it"), "{r}");
|
||||
// A PDF-compatible file keeps its name.
|
||||
let e = s.execute("file.saveCopy", &json!({"format": "ai", "includeLinked": "yes"})).unwrap_err().to_string();
|
||||
assert!(e.contains("PDF-compatible .ai options: invalid type") && !e.contains("non-PDF"), "{e}");
|
||||
let r = s.execute("file.saveCopy", &json!({"format": "ai", "version": 3})).unwrap();
|
||||
assert!(r["warnings"].to_string().contains("`version` was not used: PDF-compatible .ai files don't read it"), "{r}");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn a_remembered_artboard_the_document_no_longer_has_is_dropped() {
|
||||
let dir = Folder::new("remembered-artboards");
|
||||
|
||||
@@ -4256,7 +4256,7 @@ imageTrace Outline Obris
|
||||
@msg Save for Web: the image is empty Sačuvaj za web: slika je prazna
|
||||
@msg Save writes {_1}, not {_2}: use document.export for other formats Sačuvaj zapisuje {_1}, a ne {_2}: za druge formate koristite document.export
|
||||
@msg Save writes {_1}, not {_2}: use file.saveAsTemplate to write it Sačuvaj zapisuje {_1}, a ne {_2}: za zapisivanje koristite file.saveAsTemplate
|
||||
@msg aiVersion 7 writes legacy .ai files; a .ait template is always PDF-compatible aiVersion 7 zapisuje naslijeđene .ai datoteke; .ait predložak je uvijek kompatibilan s PDF-om
|
||||
@msg aiVersion 7 writes legacy .ai files, not .ait templates aiVersion 7 zapisuje naslijeđene .ai datoteke, a ne .ait predloške
|
||||
@msg Saved recovery data for {title} Sačuvani podaci za oporavak za {title}
|
||||
@msg Saved to User Defined: {_1} Sačuvano u korisnički definisano: {_1}
|
||||
@msg Saved {path} Sačuvano: {path}
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -4920,7 +4920,7 @@ digits Malayalam Malaiàlam
|
||||
@msg a {width}×{height} screenshot's byte count overflows el recompte de bytes d’una captura de pantalla de {width}×{height} es desborda
|
||||
@msg action is required cal una acció
|
||||
@msg add a format to export afegiu un format per exportar
|
||||
@msg aiVersion 7 writes legacy .ai files; a .ait template is always PDF-compatible aiVersion 7 escriu fitxers .ai heretats; una plantilla .ait sempre és compatible amb PDF
|
||||
@msg aiVersion 7 writes legacy .ai files, not .ait templates aiVersion 7 escriu fitxers .ai heretats, no plantilles .ait
|
||||
@msg already editing a pattern ja s’està editant un motiu
|
||||
@msg an exporter always gets an export's budget: leave `budget` out un exportador sempre rep el pressupost d’una exportació: ometeu `budget`
|
||||
@msg an image has no pixels and was left out una imatge no té píxels i s’ha omès
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -4304,7 +4304,7 @@ imageTrace Outline Obrys
|
||||
@msg Save for Web: the image is empty Uložit pro web: obraz je prázdný
|
||||
@msg Save writes {_1}, not {_2}: use document.export for other formats Uložení zapisuje {_1}, ne {_2}: pro jiné formáty použijte document.export
|
||||
@msg Save writes {_1}, not {_2}: use file.saveAsTemplate to write it Uložení zapisuje {_1}, ne {_2}: k jeho zápisu použijte file.saveAsTemplate
|
||||
@msg aiVersion 7 writes legacy .ai files; a .ait template is always PDF-compatible aiVersion 7 zapisuje starší soubory .ai; šablona .ait je vždy kompatibilní s PDF
|
||||
@msg aiVersion 7 writes legacy .ai files, not .ait templates aiVersion 7 zapisuje starší soubory .ai, ne šablony .ait
|
||||
@msg Saved recovery data for {title} Data pro obnovení uložena pro {title}
|
||||
@msg Saved to User Defined: {_1} Uloženo do uživatelských knihoven: {_1}
|
||||
@msg Saved {path} Uloženo: {path}
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -3911,7 +3911,7 @@ theme Appearance Erscheinungsbild
|
||||
@msg Save for Web: the image is empty Für Web speichern: Das Bild ist leer
|
||||
@msg Save writes {_1}, not {_2}: use document.export for other formats „Speichern“ schreibt {_1}, nicht {_2}: Verwenden Sie document.export für andere Formate
|
||||
@msg Save writes {_1}, not {_2}: use file.saveAsTemplate to write it „Speichern“ schreibt {_1}, nicht {_2}: Verwenden Sie dafür file.saveAsTemplate
|
||||
@msg aiVersion 7 writes legacy .ai files; a .ait template is always PDF-compatible aiVersion 7 schreibt ältere .ai-Dateien; eine .ait-Vorlage ist immer PDF-kompatibel
|
||||
@msg aiVersion 7 writes legacy .ai files, not .ait templates aiVersion 7 schreibt ältere .ai-Dateien, keine .ait-Vorlagen
|
||||
@msg Saved recovery data for {title} Wiederherstellungsdaten für {title} gespeichert
|
||||
@msg Saved to User Defined: {_1} In „Benutzerdefiniert“ gespeichert: {_1}
|
||||
@msg Saved {path} {path} gespeichert
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -2203,7 +2203,7 @@ axis Both Και τα δύο
|
||||
@msg Save for Web: the image is empty Αποθήκευση για ιστό: η εικόνα είναι κενή
|
||||
@msg Save writes {_1}, not {_2}: use document.export for other formats Η αποθήκευση γράφει {_1}, όχι {_2}: χρησιμοποιήστε το document.export για άλλες μορφές
|
||||
@msg Save writes {_1}, not {_2}: use file.saveAsTemplate to write it Η αποθήκευση γράφει {_1}, όχι {_2}: χρησιμοποιήστε το file.saveAsTemplate για να το γράψετε
|
||||
@msg aiVersion 7 writes legacy .ai files; a .ait template is always PDF-compatible Το aiVersion 7 γράφει αρχεία .ai παλαιού τύπου· ένα πρότυπο .ait είναι πάντα συμβατό με PDF
|
||||
@msg aiVersion 7 writes legacy .ai files, not .ait templates Το aiVersion 7 γράφει αρχεία .ai παλαιού τύπου, όχι πρότυπα .ait
|
||||
@msg Saved recovery data for {title} Αποθηκεύτηκαν δεδομένα ανάκτησης για το {title}
|
||||
@msg Saved to User Defined: {_1} Αποθηκεύτηκε στις προσαρμοσμένες ρυθμίσεις: {_1}
|
||||
@msg Saved {path} Αποθηκεύτηκε το {path}
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 163 and column 5.
|
@@ -3996,7 +3996,7 @@ axis Both Ambos
|
||||
@msg Save for Web: the image is empty Guardar para web: la imagen está vacía
|
||||
@msg Save writes {_1}, not {_2}: use document.export for other formats Guardar escribe {_1}, no {_2}: usa document.export para otros formatos
|
||||
@msg Save writes {_1}, not {_2}: use file.saveAsTemplate to write it Guardar escribe {_1}, no {_2}: usa file.saveAsTemplate para escribirlo
|
||||
@msg aiVersion 7 writes legacy .ai files; a .ait template is always PDF-compatible aiVersion 7 escribe archivos .ai heredados; una plantilla .ait siempre es compatible con PDF
|
||||
@msg aiVersion 7 writes legacy .ai files, not .ait templates aiVersion 7 escribe archivos .ai heredados, no plantillas .ait
|
||||
@msg Saved recovery data for {title} Se guardaron los datos de recuperación de {title}
|
||||
@msg Saved to User Defined: {_1} Se guardó en Definido por el usuario: {_1}
|
||||
@msg Saved {path} Se guardó {path}
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -4218,7 +4218,7 @@ imageTrace Outline Ääriviiva
|
||||
@msg Save for Web: the image is empty Tallenna verkkoon: kuva on tyhjä
|
||||
@msg Save writes {_1}, not {_2}: use document.export for other formats Tallenna kirjoittaa muotoa {_1}, ei {_2}: käytä muille muodoille komentoa document.export
|
||||
@msg Save writes {_1}, not {_2}: use file.saveAsTemplate to write it Tallenna kirjoittaa muotoa {_1}, ei {_2}: kirjoita se komennolla file.saveAsTemplate
|
||||
@msg aiVersion 7 writes legacy .ai files; a .ait template is always PDF-compatible aiVersion 7 kirjoittaa vanhoja .ai-tiedostoja; .ait-malli on aina PDF-yhteensopiva
|
||||
@msg aiVersion 7 writes legacy .ai files, not .ait templates aiVersion 7 kirjoittaa vanhoja .ai-tiedostoja, ei .ait-malleja
|
||||
@msg Saved recovery data for {title} Tallennettiin palautustiedot: {title}
|
||||
@msg Saved to User Defined: {_1} Tallennettiin kohteeseen Käyttäjän määrittämä: {_1}
|
||||
@msg Saved {path} Tallennettiin {path}
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -3986,7 +3986,7 @@ axis Both Les deux
|
||||
@msg Save for Web: the image is empty Enregistrer pour le Web : l’image est vide
|
||||
@msg Save writes {_1}, not {_2}: use document.export for other formats Enregistrer écrit du {_1}, pas du {_2} : utilisez document.export pour les autres formats
|
||||
@msg Save writes {_1}, not {_2}: use file.saveAsTemplate to write it Enregistrer écrit du {_1}, pas du {_2} : utilisez file.saveAsTemplate pour l’écrire
|
||||
@msg aiVersion 7 writes legacy .ai files; a .ait template is always PDF-compatible aiVersion 7 écrit des fichiers .ai hérités, alors qu’un modèle .ait est toujours compatible PDF
|
||||
@msg aiVersion 7 writes legacy .ai files, not .ait templates aiVersion 7 écrit des fichiers .ai hérités, pas des modèles .ait
|
||||
@msg Saved recovery data for {title} Données de récupération enregistrées pour {title}
|
||||
@msg Saved to User Defined: {_1} Enregistré dans Défini par l’utilisateur : {_1}
|
||||
@msg Saved {path} {path} enregistré
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -5103,7 +5103,7 @@ imageTrace Outline Körvonal
|
||||
@msg Save for Web: the image is empty Mentés webre: a kép üres
|
||||
@msg Save writes {_1}, not {_2}: use document.export for other formats a Mentés ezt írja: {_1}, ezt nem: {_2}; más formátumhoz használd a document.export parancsot
|
||||
@msg Save writes {_1}, not {_2}: use file.saveAsTemplate to write it a Mentés ezt írja: {_1}, ezt nem: {_2}; ennek írásához használd a file.saveAsTemplate parancsot
|
||||
@msg aiVersion 7 writes legacy .ai files; a .ait template is always PDF-compatible az aiVersion 7 régi .ai fájlokat ír; egy .ait sablon mindig PDF-kompatibilis
|
||||
@msg aiVersion 7 writes legacy .ai files, not .ait templates az aiVersion 7 régi .ai fájlokat ír, nem .ait sablonokat
|
||||
@msg saved panel layout is invalid; reset the workspace first a mentett panelelrendezés érvénytelen; előbb állítsd vissza a munkaterületet
|
||||
@msg Saved recovery data for {title} Helyreállítási adatok mentve: {title}
|
||||
@msg Saved to User Defined: {_1} Mentve a felhasználóiak közé: {_1}
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -4038,7 +4038,7 @@ axis Both Entrambi
|
||||
@msg Save for Web: the image is empty Salva per il web: l'immagine è vuota
|
||||
@msg Save writes {_1}, not {_2}: use document.export for other formats Salva scrive {_1}, non {_2}: usa document.export per gli altri formati
|
||||
@msg Save writes {_1}, not {_2}: use file.saveAsTemplate to write it Salva scrive {_1}, non {_2}: usa file.saveAsTemplate per scriverlo
|
||||
@msg aiVersion 7 writes legacy .ai files; a .ait template is always PDF-compatible aiVersion 7 scrive file .ai tradizionali; un modello .ait è sempre compatibile PDF
|
||||
@msg aiVersion 7 writes legacy .ai files, not .ait templates aiVersion 7 scrive file .ai tradizionali, non modelli .ait
|
||||
@msg Saved recovery data for {title} Dati di recupero salvati per {title}
|
||||
@msg Saved to User Defined: {_1} Salvato in Definito dall'utente: {_1}
|
||||
@msg Saved {path} Salvato {path}
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -4153,7 +4153,7 @@ swatch Bright Violet ビビッドバイオレット
|
||||
@msg {path}: no file system here (pass dataBase64 to open; omit the path to get dataBase64) {path}: この環境にはファイルシステムがありません (開くには dataBase64 を渡し、dataBase64 を受け取るにはパスを省略してください)
|
||||
@msg Save writes {_1}, not {_2}: use document.export for other formats 保存できる形式は {_1} のみで、{_2} 形式では保存できません: ほかの形式には document.export を使用してください
|
||||
@msg Save writes {_1}, not {_2}: use file.saveAsTemplate to write it 保存できる形式は {_1} のみで、{_2} 形式では保存できません: この形式で保存するには file.saveAsTemplate を使用してください
|
||||
@msg aiVersion 7 writes legacy .ai files; a .ait template is always PDF-compatible aiVersion 7 は従来の .ai ファイルを書き出します。.ait テンプレートは常に PDF 互換です
|
||||
@msg aiVersion 7 writes legacy .ai files, not .ait templates aiVersion 7 は従来の .ai ファイルを書き出し、.ait テンプレートは書き出しません
|
||||
@msg no changes since the last save 前回の保存以降、変更はありません
|
||||
@msg unknown format `{f}` (Save writes {_1}) `{f}` は不明な形式です (保存できる形式: {_1})
|
||||
@msg `svg` must be an object of SVG options (see document.formats) `svg` には SVG オプションのオブジェクトを指定してください (document.formats を参照)
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -5521,7 +5521,7 @@ imageTrace Outline კონტური
|
||||
@msg its editing data is for a {w} × {h} pt page, the file's {pw} × {ph} pt page at {scale} მისი რედაქტირების მონაცემები {w} × {h} pt გვერდს ეკუთვნის: ეს ფაილის {pw} × {ph} pt გვერდია მასშტაბით {scale}
|
||||
@msg no history to clear გასასუფთავებელი ისტორია არ არის
|
||||
@msg {_1} files are written by file.saveAsTemplate {_1} ფაილებს წერს file.saveAsTemplate
|
||||
@msg aiVersion 7 writes legacy .ai files; a .ait template is always PDF-compatible aiVersion 7 წერს ძველი ფორმატის .ai ფაილებს; .ait შაბლონი ყოველთვის PDF-თან თავსებადია
|
||||
@msg aiVersion 7 writes legacy .ai files, not .ait templates aiVersion 7 წერს ძველი ფორმატის .ai ფაილებს და არა .ait შაბლონებს
|
||||
@msg the file's variable library was partly read (entries skipped: {_1}): the Variables panel lists the rest ფაილის ცვლადების ბიბლიოთეკა მხოლოდ ნაწილობრივ იქნა წაკითხული (გამოტოვებული ჩანაწერები: {_1}): პანელი „ცვლადები“ დანარჩენს აჩვენებს
|
||||
@msg the file's variable library couldn't be read: the Variables panel doesn't list it ფაილის ცვლადების ბიბლიოთეკის წაკითხვა ვერ მოხერხდა: პანელი „ცვლადები“ მას არ აჩვენებს
|
||||
@msg a variable of unknown kind can't be bound to objects უცნობი სახის ცვლადის ობიექტებთან დაკავშირება შეუძლებელია
|
||||
|
||||
|
Can't render this file because it is too large.
|
@@ -4080,7 +4080,7 @@ theme Appearance 외관
|
||||
@msg {path}: no file system here (pass dataBase64 to open; omit the path to get dataBase64) {path}: 여기에는 파일 시스템이 없습니다(열려면 dataBase64를 전달하고, dataBase64를 얻으려면 경로를 생략하세요)
|
||||
@msg Save writes {_1}, not {_2}: use document.export for other formats 저장은 {_2}이(가) 아닌 {_1}(으)로 기록합니다. 다른 형식은 document.export를 사용하세요
|
||||
@msg Save writes {_1}, not {_2}: use file.saveAsTemplate to write it 저장은 {_2}이(가) 아닌 {_1}(으)로 기록합니다. 이 형식으로 기록하려면 file.saveAsTemplate를 사용하세요
|
||||
@msg aiVersion 7 writes legacy .ai files; a .ait template is always PDF-compatible aiVersion 7은(는) 레거시 .ai 파일을 기록합니다. .ait 템플릿은 항상 PDF 호환입니다
|
||||
@msg aiVersion 7 writes legacy .ai files, not .ait templates aiVersion 7은(는) 레거시 .ai 파일을 기록하며 .ait 템플릿은 기록하지 않습니다
|
||||
@msg no changes since the last save 마지막 저장 이후 변경 내용이 없습니다
|
||||
@msg unknown format `{f}` (Save writes {_1}) 알 수 없는 형식 `{f}`(저장은 {_1}(으)로 기록)
|
||||
@msg `svg` must be an object of SVG options (see document.formats) `svg`는 SVG 옵션 개체여야 합니다(document.formats 참조)
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -4127,7 +4127,7 @@ imageTrace Outline Kontur
|
||||
@msg Save for Web: the image is empty Zapisz dla Internetu: obraz jest pusty
|
||||
@msg Save writes {_1}, not {_2}: use document.export for other formats Zapis tworzy {_1}, nie {_2}: dla innych formatów użyj document.export
|
||||
@msg Save writes {_1}, not {_2}: use file.saveAsTemplate to write it Zapis tworzy {_1}, nie {_2}: aby go zapisać, użyj file.saveAsTemplate
|
||||
@msg aiVersion 7 writes legacy .ai files; a .ait template is always PDF-compatible aiVersion 7 zapisuje starsze pliki .ai; szablon .ait jest zawsze zgodny z PDF
|
||||
@msg aiVersion 7 writes legacy .ai files, not .ait templates aiVersion 7 zapisuje starsze pliki .ai, a nie szablony .ait
|
||||
@msg Saved recovery data for {title} Zapisano dane odzyskiwania dla {title}
|
||||
@msg Saved to User Defined: {_1} Zapisano w zdefiniowanych przez użytkownika: {_1}
|
||||
@msg Saved {path} Zapisano {path}
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -3590,7 +3590,7 @@ axis Both Ambos
|
||||
@msg Save for Web: the image is empty Salvar para Web: a imagem está vazia
|
||||
@msg Save writes {_1}, not {_2}: use document.export for other formats Salvar grava {_1}, não {_2}: use document.export para outros formatos
|
||||
@msg Save writes {_1}, not {_2}: use file.saveAsTemplate to write it Salvar grava {_1}, não {_2}: use file.saveAsTemplate para gravá-lo
|
||||
@msg aiVersion 7 writes legacy .ai files; a .ait template is always PDF-compatible aiVersion 7 grava arquivos .ai legados; um modelo .ait é sempre compatível com PDF
|
||||
@msg aiVersion 7 writes legacy .ai files, not .ait templates aiVersion 7 grava arquivos .ai legados, não modelos .ait
|
||||
@msg Saved recovery data for {title} Dados de recuperação de {title} salvos
|
||||
@msg Saved to User Defined: {_1} Salvo em Definido pelo usuário: {_1}
|
||||
@msg Saved {path} {path} salvo
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 6 and column 47.
|
@@ -4033,7 +4033,7 @@ axis Both Оба
|
||||
@msg Save for Web: the image is empty Сохранить для web: изображение пусто
|
||||
@msg Save writes {_1}, not {_2}: use document.export for other formats Сохранение записывает {_1}, а не {_2}: используйте document.export для других форматов
|
||||
@msg Save writes {_1}, not {_2}: use file.saveAsTemplate to write it Сохранение записывает {_1}, а не {_2}: чтобы записать его, используйте file.saveAsTemplate
|
||||
@msg aiVersion 7 writes legacy .ai files; a .ait template is always PDF-compatible aiVersion 7 записывает устаревшие файлы .ai; шаблон .ait всегда совместим с PDF
|
||||
@msg aiVersion 7 writes legacy .ai files, not .ait templates aiVersion 7 записывает устаревшие файлы .ai, а не шаблоны .ait
|
||||
@msg Saved recovery data for {title} Сохранены данные восстановления для {title}
|
||||
@msg Saved to User Defined: {_1} Сохранено в «Пользовательский»: {_1}
|
||||
@msg Saved {path} Сохранено: {path}
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -3907,7 +3907,7 @@ axis Both Båda
|
||||
@msg Save for Web: the image is empty Spara för webb: bilden är tom
|
||||
@msg Save writes {_1}, not {_2}: use document.export for other formats Spara skriver {_1}, inte {_2}: använd document.export för andra format
|
||||
@msg Save writes {_1}, not {_2}: use file.saveAsTemplate to write it Spara skriver {_1}, inte {_2}: använd file.saveAsTemplate för att skriva det
|
||||
@msg aiVersion 7 writes legacy .ai files; a .ait template is always PDF-compatible aiVersion 7 skriver äldre .ai-filer; en .ait-mall är alltid PDF-kompatibel
|
||||
@msg aiVersion 7 writes legacy .ai files, not .ait templates aiVersion 7 skriver äldre .ai-filer, inte .ait-mallar
|
||||
@msg Saved recovery data for {title} Sparade återställningsdata för {title}
|
||||
@msg Saved to User Defined: {_1} Sparat i Användardefinierat: {_1}
|
||||
@msg Saved {path} Sparade {path}
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 5 and column 25.
|
@@ -5402,7 +5402,7 @@ theme Appearance Görünüm
|
||||
@msg more than {MAX_CSV_ROWS} data sets: Import Data Sets reads at most {MAX_CSV_ROWS} {MAX_CSV_ROWS} veri setinden fazla: Veri Kümelerini İçe Aktar en fazla {MAX_CSV_ROWS} tane okur
|
||||
@msg more than {MAX_CSV_COLS} variables: Import Data Sets reads at most {MAX_CSV_COLS} {MAX_CSV_COLS} değişkenden fazla: Veri Kümelerini İçe Aktar en fazla {MAX_CSV_COLS} tane okur
|
||||
@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 aiVersion 7 writes legacy .ai files, not .ait templates aiVersion 7 eski .ai dosyalarını yazar, .ait şablonlarını yazmaz
|
||||
@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ı
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 5 and column 25.
|
@@ -4022,7 +4022,7 @@ axis Both Обидві
|
||||
@msg Save for Web: the image is empty Зберегти для Інтернету: зображення пусте
|
||||
@msg Save writes {_1}, not {_2}: use document.export for other formats Збереження записує {_1}, а не {_2}: використовуйте document.export для інших форматів
|
||||
@msg Save writes {_1}, not {_2}: use file.saveAsTemplate to write it Збереження записує {_1}, а не {_2}: щоб записати його, використовуйте file.saveAsTemplate
|
||||
@msg aiVersion 7 writes legacy .ai files; a .ait template is always PDF-compatible aiVersion 7 записує застарілі файли .ai; шаблон .ait завжди сумісний із PDF
|
||||
@msg aiVersion 7 writes legacy .ai files, not .ait templates aiVersion 7 записує застарілі файли .ai, а не шаблони .ait
|
||||
@msg Saved recovery data for {title} Збережено дані відновлення для {title}
|
||||
@msg Saved to User Defined: {_1} Збережено в «Користувацькі»: {_1}
|
||||
@msg Saved {path} Збережено: {path}
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 177 and column 5.
|
@@ -4757,7 +4757,7 @@ theme Appearance Giao diện
|
||||
@msg Save for Web: the image is empty Lưu cho Web: ảnh trống
|
||||
@msg Save writes {_1}, not {_2}: use document.export for other formats Lưu ghi {_1}, không phải {_2}: dùng document.export cho các định dạng khác
|
||||
@msg Save writes {_1}, not {_2}: use file.saveAsTemplate to write it Lưu ghi {_1}, không phải {_2}: dùng file.saveAsTemplate để ghi định dạng này
|
||||
@msg aiVersion 7 writes legacy .ai files; a .ait template is always PDF-compatible aiVersion 7 ghi tệp .ai cũ; mẫu .ait luôn tương thích PDF
|
||||
@msg aiVersion 7 writes legacy .ai files, not .ait templates aiVersion 7 ghi tệp .ai cũ, không ghi mẫu .ait
|
||||
@msg saved panel layout is invalid; reset the workspace first bố cục bảng đã lưu không hợp lệ; hãy đặt lại không gian làm việc trước
|
||||
@msg Saved recovery data for {title} Đã lưu dữ liệu phục hồi cho {title}
|
||||
@msg Saved to User Defined: {_1} Đã lưu vào Người dùng tùy chỉnh: {_1}
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 199 and column 5.
|
@@ -5434,7 +5434,7 @@ lighting Light 光源
|
||||
Enable Guides for 9-Slice Scaling 启用 9-slice 缩放参考线
|
||||
@msg cancelled; nothing was changed 已取消;未做任何更改
|
||||
@msg Save writes {_1}, not {_2}: use file.saveAsTemplate to write it 保存会写入 {_1},而不是 {_2}:要写入该格式请使用 file.saveAsTemplate
|
||||
@msg aiVersion 7 writes legacy .ai files; a .ait template is always PDF-compatible aiVersion 7 写入旧版 .ai 文件;.ait 模板始终与 PDF 兼容
|
||||
@msg aiVersion 7 writes legacy .ai files, not .ait templates aiVersion 7 写入旧版 .ai 文件,不写入 .ait 模板
|
||||
@msg a mask has more than one art block 蒙版包含多个图稿块
|
||||
@msg mask art ends outside a mask dictionary 蒙版图稿在蒙版字典之外结束
|
||||
@msg `{key}` must be a #rrggbb color `{key}` 必须是 #rrggbb 格式的颜色
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2 and column 73.
|
@@ -2496,7 +2496,7 @@ file-filter Templates 範本
|
||||
@msg the action has no steps 動作沒有步驟
|
||||
@msg cancelled; nothing was changed 已取消;未做任何變更
|
||||
@msg Save writes {_1}, not {_2}: use file.saveAsTemplate to write it 「儲存」會寫入 {_1},而非 {_2}:若要寫入該格式,請使用 file.saveAsTemplate
|
||||
@msg aiVersion 7 writes legacy .ai files; a .ait template is always PDF-compatible aiVersion 7 會寫入舊版 .ai 檔案;.ait 範本一律與 PDF 相容
|
||||
@msg aiVersion 7 writes legacy .ai files, not .ait templates aiVersion 7 會寫入舊版 .ai 檔案,不會寫入 .ait 範本
|
||||
@msg a mask has more than one art block 遮色片含有多個圖稿區塊
|
||||
@msg mask art ends outside a mask dictionary 遮色片圖稿在遮色片字典之外結束
|
||||
@msg `{key}` must be a #rrggbb color `{key}` 必須是 #rrggbb 格式的顏色
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 6 and column 47.
|
Reference in New Issue
Block a user