i18n: an English package status is translated after a language switch, in each language's plural form

The package status now says "file" or "files", and the catalogs' `@msg`
rows for it still matched only the old "file(s)" text, so a status
written in English stayed in English after a switch to another
language.

- Catalogs take a new `@msgplural` row: the English one|other forms as
  the source and the language's plural forms as the translation. The
  `{n}` value picks the form, so Czech shows "Zabaleny 3 soubory" for 3
  files and "Zabaleno 5 souborů" for 5.
- Every catalog replaces its four package status rows with `@msgplural`
  rows. The row for a status with a note finds the note by its opening
  parenthesis, so a folder name with spaces stays whole.
- `package_status` builds the status line for the folder and the web
  download.
This commit is contained in:
dotCooCoo
2026-11-01 01:22:07 +07:00
committed by bflatastic
parent 28014a9fed
commit 62401182e6
31 changed files with 205 additions and 131 deletions
+16 -15
View File
@@ -160,24 +160,11 @@ fn packaged(app: &mut VectorcraftApp, r: Result<Value, String>, web: bool, later
let (name, data) = (r["name"].as_str().unwrap_or("package.zip"), r["dataBase64"].as_str().unwrap_or_default());
let bytes = vectorcraft_format::base64_decode(data).ok_or("the package came back damaged")?;
io::write_named(app, None, name, &bytes)?;
let status = if shown_note.is_empty() {
crate::i18n::tn(n, "Packaged {n} file", "Packaged {n} files")
} else {
crate::i18n::fmt(&crate::i18n::tn(n, "Packaged {n} file {note}", "Packaged {n} files {note}"), &[("note", &shown_note)])
};
app.status(status);
app.status(package_status(n, None, &shown_note));
return Ok(r);
}
let folder = r["folder"].as_str().unwrap_or_default().to_string();
let status = if shown_note.is_empty() {
crate::i18n::fmt(&crate::i18n::tn(n, "Packaged {n} file in {folder}", "Packaged {n} files in {folder}"), &[("folder", &folder)])
} else {
crate::i18n::fmt(
&crate::i18n::tn(n, "Packaged {n} file in {folder} {note}", "Packaged {n} files in {folder} {note}"),
&[("folder", &folder), ("note", &shown_note)],
)
};
app.status(status);
app.status(package_status(n, Some(&folder), &shown_note));
let detail = if shown_note.is_empty() {
crate::i18n::fmt(
&crate::i18n::tn(n, "{n} file in {folder}. Show the package folder?", "{n} files in {folder}. Show the package folder?"),
@@ -195,6 +182,20 @@ fn packaged(app: &mut VectorcraftApp, r: Result<Value, String>, web: bool, later
Ok(r)
}
/// The status bar's line for a package of `n` files written to `folder` (`None`: the web's
/// download), followed by `note` from [`package_status_note`] when it isn't empty. Each catalog
/// also has `@msgplural` rows for the English line, shown after a language switch; they find the note
/// after the folder by its opening `(`, so a folder name with spaces stays whole.
pub(super) fn package_status(n: u64, folder: Option<&str>, note: &str) -> String {
let (one, other) = match (folder.is_some(), note.is_empty()) {
(false, true) => ("Packaged {n} file", "Packaged {n} files"),
(false, false) => ("Packaged {n} file {note}", "Packaged {n} files {note}"),
(true, true) => ("Packaged {n} file in {folder}", "Packaged {n} files in {folder}"),
(true, false) => ("Packaged {n} file in {folder} {note}", "Packaged {n} files in {folder} {note}"),
};
crate::i18n::fmt(&crate::i18n::tn(n, one, other), &[("folder", folder.unwrap_or_default()), ("note", note)])
}
/// Parenthetical notes after the folder path in a package status (`(2 linked files not found)` …),
/// joined with spaces and without a leading space (#3494).
pub(super) fn package_status_note(missing: usize, fonts: &str) -> String {
@@ -302,6 +302,40 @@ fn the_missing_links_note_uses_each_count_form() {
assert_eq!(note("cs", 5), "(Nenalezeno 5 propojených souborů)");
}
/// A package status written in English, for one file or several, with or without a folder and a
/// note, is translated by every catalog when the status bar shows it after a language switch, in
/// the form the language's plural rule picks for the count, and a folder whose name has a space
/// keeps its whole name.
#[test]
fn an_english_package_status_is_translated_after_a_language_switch() {
use crate::i18n::{Lang, message};
let mut statuses = vec![];
for n in [1, 3] {
for folder in [None, Some("/out/card Folder")] {
for note in ["", "(fonts not copied: Mono)"] {
statuses.push(package::package_status(n, folder, note));
}
}
}
assert!(statuses.contains(&"Packaged 1 file in /out/card Folder".to_string()), "{statuses:?}");
assert!(statuses.contains(&"Packaged 3 files".to_string()), "{statuses:?}");
for lang in Lang::all().filter(|l| l.code() != "en") {
for s in &statuses {
let shown = message(lang, s);
assert!(!shown.starts_with("Packaged"), "{}: {shown}", lang.code());
// A space in the folder's name stays in the path, with or without a note.
assert_eq!(s.contains("/out/card Folder"), shown.contains("/out/card Folder"), "{}: {shown}", lang.code());
}
}
let cs = Lang::from_code("cs").unwrap();
assert_eq!(message(cs, "Packaged 1 file in /out"), "Zabalen 1 soubor do /out");
assert_eq!(message(cs, "Packaged 3 files in /out"), "Zabaleny 3 soubory do /out");
assert_eq!(message(cs, "Packaged 5 files in /out"), "Zabaleno 5 souborů do /out");
let de = Lang::from_code("de").unwrap();
assert_eq!(message(de, "Packaged 1 file"), "1 Datei verpackt");
assert_eq!(message(de, "Packaged 3 files in /out"), "3 Dateien in /out verpackt");
}
#[test]
fn package_status_without_notes_has_no_extra_spaces() {
let dir = Folder::new("spaces");
+6 -1
View File
@@ -23,6 +23,8 @@
//! message itself stays English (the control channel, MCP and tests read it); `@msg` catalog
//! rows hold whole messages or templates such as `Couldn't open {name}: {e}`, and the values in
//! the placeholders are translated in turn (the reason after `: {e}` is often a message too).
//! A `@msgplural` row is a template with a count: its source holds the English `one|other`
//! forms, its translation the language's plural forms, and the `{n}` value picks the form.
mod catalog;
@@ -651,7 +653,10 @@ pub fn message(lang: Lang, s: &str) -> String {
}
fn message_at(lang: Lang, s: &str, depth: usize) -> String {
let Some((template, caps)) = lang.catalog().message(s) else { return s.to_string() };
let Some((forms, caps)) = lang.catalog().message_forms(s) else { return s.to_string() };
let count = caps.iter().find(|(k, _)| *k == "n").and_then(|(_, v)| v.parse::<u64>().ok());
let form = count.map_or(forms.len().saturating_sub(1), |n| (lang.0.plural)(n).min(forms.len().saturating_sub(1)));
let Some(template) = forms.get(form) else { return s.to_string() };
let values: Vec<(&str, String)> =
caps.into_iter().map(|(k, v)| (k, if depth > 1 { message_at(lang, v, depth - 1) } else { v.to_string() })).collect();
let args: Vec<(&str, &str)> = values.iter().map(|(k, v)| (*k, v.as_str())).collect();
+4 -4
View File
@@ -3833,7 +3833,7 @@ axis Both И двете
@msg PDF settings are not an object Настройките за PDF не са обект
@msg PDF security settings are not an object Настройките за сигурност на PDF не са обект
@msg PDF writer error: {0} Грешка на PDF записа: {0}
@msg Packaged {n} file(s) in {folder} {note} Пакетирани са {n} файла в {folder}{note}
@msgplural Packaged {n} file in {folder} ({note}|Packaged {n} files in {folder} ({note} Пакетиран е {n} файл в {folder} ({note}|Пакетирани са {n} файла в {folder} ({note}
@msg Packaged {n} file(s){note} Пакетирани са {n} файла{note}
@msg Preview in Browser needs the desktop app (the web downloads files instead) Прегледът в браузър изисква настолното приложение (уеб версията изтегля файловете вместо това)
@msg Release Guides: no guides Освобождаване на водачи: няма водачи
@@ -5504,9 +5504,9 @@ theme Appearance Външен вид
Slope: Наклон:
axis X Axis X ос
axis Y Axis Y ос
@msg Packaged {n} file(s) in {folder} Пакетирани са {n} файла в {folder}
@msg Packaged {n} file(s) {note} Пакетирани са {n} файла {note}
@msg Packaged {n} file(s) Пакетирани са {n} файла
@msgplural Packaged {n} file in {folder}|Packaged {n} files in {folder} Пакетиран е {n} файл в {folder}|Пакетирани са {n} файла в {folder}
@msgplural Packaged {n} file {note}|Packaged {n} files {note} Пакетиран е {n} файл {note}|Пакетирани са {n} файла {note}
@msgplural Packaged {n} file|Packaged {n} files Пакетиран е {n} файл|Пакетирани са {n} файла
@plural Packaged {n} file|Packaged {n} files Пакетиран е {n} файл|Пакетирани са {n} файла
@plural Packaged {n} file in {folder}|Packaged {n} files in {folder} Пакетиран е {n} файл в {folder}|Пакетирани са {n} файла в {folder}
@plural Packaged {n} file {note}|Packaged {n} files {note} Пакетиран е {n} файл {note}|Пакетирани са {n} файла {note}
Can't render this file because it contains an unexpected character in line 2 and column 73.
+4 -4
View File
@@ -4199,7 +4199,7 @@ imageTrace Outline Obris
@msg PDF settings are not an object PDF postavke nisu objekat
@msg PDF security settings are not an object PDF sigurnosne postavke nisu objekat
@msg PDF writer error: {0} greška PDF zapisivača: {0}
@msg Packaged {n} file(s) in {folder} {note} Upakovano datoteka u {folder}: {n} {note}
@msgplural Packaged {n} file in {folder} ({note}|Packaged {n} files in {folder} ({note} Upakovano datoteka u {folder}: {n} ({note}
@msg Packaged {n} file(s){note} Upakovano datoteka: {n}{note}
@msg Preview in Browser needs the desktop app (the web downloads files instead) Pregledaj u pregledniku zahtijeva desktop aplikaciju (web umjesto toga preuzima datoteke)
@msg Release Guides: no guides Oslobodi vodilice: nema vodilica
@@ -5524,9 +5524,9 @@ mark-style Japanese Japanski
Slope: Nagib:
axis X Axis X osa
axis Y Axis Y osa
@msg Packaged {n} file(s) in {folder} Upakovano datoteka u {folder}: {n}
@msg Packaged {n} file(s) {note} Upakovano datoteka: {n} {note}
@msg Packaged {n} file(s) Upakovano datoteka: {n}
@msgplural Packaged {n} file in {folder}|Packaged {n} files in {folder} Upakovano datoteka u {folder}: {n}
@msgplural Packaged {n} file {note}|Packaged {n} files {note} Upakovano datoteka: {n} {note}
@msgplural Packaged {n} file|Packaged {n} files Upakovano datoteka: {n}
@plural Packaged {n} file|Packaged {n} files Upakovano datoteka: {n}|Upakovano datoteka: {n}|Upakovano datoteka: {n}
@plural Packaged {n} file in {folder}|Packaged {n} files in {folder} Upakovano datoteka u {folder}: {n}|Upakovano datoteka u {folder}: {n}|Upakovano datoteka u {folder}: {n}
@plural Packaged {n} file {note}|Packaged {n} files {note} Upakovano datoteka: {n} {note}|Upakovano datoteka: {n} {note}|Upakovano datoteka: {n} {note}
Can't render this file because it contains an unexpected character in line 2 and column 73.
+4 -4
View File
@@ -5258,10 +5258,10 @@
@msg Opened with {_1} note(s): {_2} Obert amb {_1} nota(es): {_2}
@msg Opened {url} Obert {url}
@msg Outline Stroke: no stroked paths selected Contorneja el traç: no hi ha cap traçat amb traç seleccionat
@msg Packaged {n} file(s) Empaquetat {n} fitxer(s)
@msg Packaged {n} file(s) in {folder} Empaquetats {n} fitxer(s) a {folder}
@msg Packaged {n} file(s) in {folder} {note} Empaquetats {n} fitxer(s) a {folder} {note}
@msg Packaged {n} file(s) {note} Empaquetats {n} fitxer(s) {note}
@msgplural Packaged {n} file|Packaged {n} files S’ha empaquetat {n} fitxer|S’han empaquetat {n} fitxers
@msgplural Packaged {n} file in {folder}|Packaged {n} files in {folder} S’ha empaquetat {n} fitxer a {folder}|S’han empaquetat {n} fitxers a {folder}
@msgplural Packaged {n} file in {folder} ({note}|Packaged {n} files in {folder} ({note} S’ha empaquetat {n} fitxer a {folder} ({note}|S’han empaquetat {n} fitxers a {folder} ({note}
@msgplural Packaged {n} file {note}|Packaged {n} files {note} S’ha empaquetat {n} fitxer {note}|S’han empaquetat {n} fitxers {note}
@msg Packaged {n} file(s){note} Empaquetats {n} fitxer(s){note}
@msg Packaging {_1} Empaquetant {_1}
@msg page size {w} × {h} mida de pàgina {w} × {h}
Can't render this file because it contains an unexpected character in line 2 and column 73.
+27 -10
View File
@@ -15,7 +15,8 @@ pub struct Catalog {
plurals: HashMap<String, Vec<String>>,
/// status and error messages without placeholders (`@msg`): English → translation
messages: HashMap<String, String>,
/// status and error messages with `{name}` placeholders (`@msg`), most specific first
/// status and error messages with `{name}` placeholders (`@msg`, and each English form of a
/// `@msgplural` row), most specific first
templates: Vec<Template>,
}
@@ -26,22 +27,26 @@ enum Piece {
Hole(String),
}
/// A message template (`Couldn't open {name}: {e}`) and its translation.
/// A message template (`Couldn't open {name}: {e}`) and its translation: one form for `@msg`,
/// the plural forms for `@msgplural`.
#[derive(Debug)]
struct Template {
pieces: Vec<Piece>,
/// Bytes of literal text: a template with more of it is the more specific match.
literal: usize,
translation: String,
forms: Vec<String>,
}
/// The placeholder values of a matched message template: placeholder name and value.
pub type Captures<'p, 'a> = Vec<(&'p str, &'a str)>;
/// Messages longer than this are shown as they are (template matching backtracks).
const MAX_MESSAGE_LEN: usize = 2000;
impl Template {
/// `None` for a template that can't be matched reliably: no literal text, or two placeholders
/// in a row (where one ends and the next begins is unknowable).
fn parse(source: &str, translation: String) -> Option<Template> {
fn parse(source: &str, forms: Vec<String>) -> Option<Template> {
let mut pieces = Vec::new();
let mut rest = source;
while let Some(a) = rest.find('{') {
@@ -59,7 +64,7 @@ impl Template {
pieces.push(Piece::Text(rest.to_string()));
}
let literal = pieces.iter().map(|p| if let Piece::Text(t) = p { t.len() } else { 0 }).sum();
(literal > 0).then_some(Template { pieces, literal, translation })
(literal > 0).then_some(Template { pieces, literal, forms })
}
/// The placeholder values if `s` is an instance of this template.
@@ -162,11 +167,15 @@ impl Catalog {
}
"@msg" => {
if src.contains('{') {
c.templates.extend(Template::parse(&src, tr));
c.templates.extend(Template::parse(&src, vec![tr]));
} else {
c.messages.insert(src, tr);
}
}
"@msgplural" => {
let forms: Vec<String> = tr.split('|').map(str::to_string).collect();
c.templates.extend(src.split('|').filter_map(|english| Template::parse(english, forms.clone())));
}
_ => {
c.contextual.insert(format!("{ctx}\u{1}{src}"), tr);
}
@@ -189,17 +198,25 @@ impl Catalog {
self.ids.get(id).map(String::as_str)
}
/// [`Catalog::message_forms`] with the first form of the translation.
#[cfg(test)]
pub fn message<'a>(&self, s: &'a str) -> Option<(&str, Captures<'_, 'a>)> {
self.message_forms(s).and_then(|(forms, caps)| Some((forms.first()?.as_str(), caps)))
}
/// A status or error message: an exact `@msg` entry, else the first template it is an instance
/// of, with the placeholder values filled in. The values are returned for the caller to
/// translate (a reason after `…: {e}` is often a message of its own).
pub fn message<'a>(&self, s: &'a str) -> Option<(&str, Vec<(&str, &'a str)>)> {
/// translate (a reason after `…: {e}` is often a message of its own). The translation has one
/// form for an `@msg` row and the plural forms of a `@msgplural` row, of which the caller picks
/// one by the `{n}` value.
pub fn message_forms<'a>(&self, s: &'a str) -> Option<(&[String], Captures<'_, 'a>)> {
if let Some(tr) = self.messages.get(s) {
return Some((tr.as_str(), Vec::new()));
return Some((std::slice::from_ref(tr), Vec::new()));
}
if s.len() > MAX_MESSAGE_LEN {
return None;
}
self.templates.iter().find_map(|t| t.captures(s).map(|caps| (t.translation.as_str(), caps)))
self.templates.iter().find_map(|t| t.captures(s).map(|caps| (t.forms.as_slice(), caps)))
}
/// The plural form `index` of the message whose English forms are `one|other`.
+4 -4
View File
@@ -4236,7 +4236,7 @@ imageTrace Outline Obrys
@msg PDF settings are not an object nastavení PDF nejsou objekt
@msg PDF security settings are not an object nastavení zabezpečení PDF nejsou objekt
@msg PDF writer error: {0} chyba zápisu PDF: {0}
@msg Packaged {n} file(s) in {folder} {note} Zabaleno souborů: {n} do {folder}{note}
@msgplural Packaged {n} file in {folder} ({note}|Packaged {n} files in {folder} ({note} Zabalen {n} soubor do {folder} ({note}|Zabaleny {n} soubory do {folder} ({note}|Zabaleno {n} souborů do {folder} ({note}
@msg Packaged {n} file(s){note} Zabaleno souborů: {n}{note}
@msg Preview in Browser needs the desktop app (the web downloads files instead) Náhled v prohlížeči vyžaduje desktopovou aplikaci (webová verze místo toho stahuje soubory)
@msg Release Guides: no guides Uvolnit vodítka: žádná vodítka
@@ -5593,9 +5593,9 @@ mark-style Japanese Japonské
Slope: Sklon:
axis X Axis osa X
axis Y Axis osa Y
@msg Packaged {n} file(s) in {folder} Zabaleno souborů: {n} do {folder}
@msg Packaged {n} file(s) {note} Zabaleno souborů: {n} {note}
@msg Packaged {n} file(s) Zabaleno souborů: {n}
@msgplural Packaged {n} file in {folder}|Packaged {n} files in {folder} Zabalen {n} soubor do {folder}|Zabaleny {n} soubory do {folder}|Zabaleno {n} souborů do {folder}
@msgplural Packaged {n} file {note}|Packaged {n} files {note} Zabalen {n} soubor {note}|Zabaleny {n} soubory {note}|Zabaleno {n} souborů {note}
@msgplural Packaged {n} file|Packaged {n} files Zabalen {n} soubor|Zabaleny {n} soubory|Zabaleno {n} souborů
@plural Packaged {n} file|Packaged {n} files Zabalen {n} soubor|Zabaleny {n} soubory|Zabaleno {n} souborů
@plural Packaged {n} file in {folder}|Packaged {n} files in {folder} Zabalen {n} soubor do {folder}|Zabaleny {n} soubory do {folder}|Zabaleno {n} souborů do {folder}
@plural Packaged {n} file {note}|Packaged {n} files {note} Zabalen {n} soubor {note}|Zabaleny {n} soubory {note}|Zabaleno {n} souborů {note}
Can't render this file because it contains an unexpected character in line 2 and column 73.
+4 -4
View File
@@ -3953,7 +3953,7 @@ imageTrace Outline Kontur
@msg PDF settings are not an object PDF-indstillinger er ikke et objekt
@msg PDF security settings are not an object PDF-sikkerhedsindstillinger er ikke et objekt
@msg PDF writer error: {0} PDF-skriverfejl: {0}
@msg Packaged {n} file(s) in {folder} {note} Pakkede {n} fil(er) i {folder}{note}
@msgplural Packaged {n} file in {folder} ({note}|Packaged {n} files in {folder} ({note} Pakkede {n} fil i {folder} ({note}|Pakkede {n} filer i {folder} ({note}
@msg Packaged {n} file(s){note} Pakkede {n} fil(er){note}
@msg Preview in Browser needs the desktop app (the web downloads files instead) Forhåndsvisning i browser kræver skrivebordsappen (webversionen downloader filer i stedet)
@msg Release Guides: no guides Frigiv hjælpelinjer: ingen hjælpelinjer
@@ -5519,9 +5519,9 @@ swatch Bright Violet Kraftig violet
Slope: Hældning:
axis X Axis X-akse
axis Y Axis Y-akse
@msg Packaged {n} file(s) in {folder} Pakkede {n} fil(er) i {folder}
@msg Packaged {n} file(s) {note} Pakkede {n} fil(er) {note}
@msg Packaged {n} file(s) Pakkede {n} fil(er)
@msgplural Packaged {n} file in {folder}|Packaged {n} files in {folder} Pakkede {n} fil i {folder}|Pakkede {n} filer i {folder}
@msgplural Packaged {n} file {note}|Packaged {n} files {note} Pakkede {n} fil {note}|Pakkede {n} filer {note}
@msgplural Packaged {n} file|Packaged {n} files Pakkede {n} fil|Pakkede {n} filer
@plural Packaged {n} file|Packaged {n} files Pakkede {n} fil|Pakkede {n} filer
@plural Packaged {n} file in {folder}|Packaged {n} files in {folder} Pakkede {n} fil i {folder}|Pakkede {n} filer i {folder}
@plural Packaged {n} file {note}|Packaged {n} files {note} Pakkede {n} fil {note}|Pakkede {n} filer {note}
Can't render this file because it contains an unexpected character in line 2 and column 73.
+4 -4
View File
@@ -3848,7 +3848,7 @@ theme Appearance Erscheinungsbild
@msg PDF settings are not an object die PDF-Einstellungen sind kein Objekt
@msg PDF security settings are not an object die PDF-Sicherheitseinstellungen sind kein Objekt
@msg PDF writer error: {0} Fehler beim Schreiben der PDF-Datei: {0}
@msg Packaged {n} file(s) in {folder} {note} {n} Datei(en) in {folder} verpackt{note}
@msgplural Packaged {n} file in {folder} ({note}|Packaged {n} files in {folder} ({note} {n} Datei in {folder} verpackt ({note}|{n} Dateien in {folder} verpackt ({note}
@msg Packaged {n} file(s){note} {n} Datei(en) verpackt{note}
@msg Preview in Browser needs the desktop app (the web downloads files instead) „Vorschau im Browser“ erfordert die Desktop-App (im Web werden stattdessen Dateien heruntergeladen)
@msg Release Guides: no guides Hilfslinien zurückwandeln: keine Hilfslinien
@@ -5174,9 +5174,9 @@ effect Soft Weich
Slope: Steigung:
axis X Axis X-Achse
axis Y Axis Y-Achse
@msg Packaged {n} file(s) in {folder} {n} Datei(en) in {folder} verpackt
@msg Packaged {n} file(s) {note} {n} Datei(en) verpackt {note}
@msg Packaged {n} file(s) {n} Datei(en) verpackt
@msgplural Packaged {n} file in {folder}|Packaged {n} files in {folder} {n} Datei in {folder} verpackt|{n} Dateien in {folder} verpackt
@msgplural Packaged {n} file {note}|Packaged {n} files {note} {n} Datei verpackt {note}|{n} Dateien verpackt {note}
@msgplural Packaged {n} file|Packaged {n} files {n} Datei verpackt|{n} Dateien verpackt
@plural Packaged {n} file|Packaged {n} files {n} Datei verpackt|{n} Dateien verpackt
@plural Packaged {n} file in {folder}|Packaged {n} files in {folder} {n} Datei in {folder} verpackt|{n} Dateien in {folder} verpackt
@plural Packaged {n} file {note}|Packaged {n} files {note} {n} Datei verpackt {note}|{n} Dateien verpackt {note}
Can't render this file because it contains an unexpected character in line 2 and column 73.
+4 -4
View File
@@ -2161,7 +2161,7 @@ axis Both Και τα δύο
@msg PDF settings are not an object Οι ρυθμίσεις PDF δεν είναι αντικείμενο
@msg PDF security settings are not an object Οι ρυθμίσεις ασφαλείας PDF δεν είναι αντικείμενο
@msg PDF writer error: {0} Σφάλμα εγγραφής PDF: {0}
@msg Packaged {n} file(s) in {folder} {note} Συσκευάστηκαν {n} αρχεία στον φάκελο {folder}{note}
@msgplural Packaged {n} file in {folder} ({note}|Packaged {n} files in {folder} ({note} Συσκευάστηκε {n} αρχείο στον φάκελο {folder} ({note}|Συσκευάστηκαν {n} αρχεία στον φάκελο {folder} ({note}
@msg Packaged {n} file(s){note} Συσκευάστηκαν {n} αρχεία{note}
@msg Preview in Browser needs the desktop app (the web downloads files instead) Η προεπισκόπηση σε πρόγραμμα περιήγησης απαιτεί την εφαρμογή υπολογιστή (η έκδοση ιστού πραγματοποιεί λήψη αρχείων)
@msg Release Guides: no guides Αποδέσμευση οδηγών: δεν υπάρχουν οδηγοί
@@ -5545,9 +5545,9 @@ effect Points Σημεία
Slope: Κλίση:
axis X Axis Άξονας X
axis Y Axis Άξονας Y
@msg Packaged {n} file(s) in {folder} Συσκευάστηκαν {n} αρχεία στον φάκελο {folder}
@msg Packaged {n} file(s) {note} Συσκευάστηκαν {n} αρχεία {note}
@msg Packaged {n} file(s) Συσκευάστηκαν {n} αρχεία
@msgplural Packaged {n} file in {folder}|Packaged {n} files in {folder} Συσκευάστηκε {n} αρχείο στον φάκελο {folder}|Συσκευάστηκαν {n} αρχεία στον φάκελο {folder}
@msgplural Packaged {n} file {note}|Packaged {n} files {note} Συσκευάστηκε {n} αρχείο {note}|Συσκευάστηκαν {n} αρχεία {note}
@msgplural Packaged {n} file|Packaged {n} files Συσκευάστηκε {n} αρχείο|Συσκευάστηκαν {n} αρχεία
@plural Packaged {n} file|Packaged {n} files Συσκευάστηκε {n} αρχείο|Συσκευάστηκαν {n} αρχεία
@plural Packaged {n} file in {folder}|Packaged {n} files in {folder} Συσκευάστηκε {n} αρχείο στον φάκελο {folder}|Συσκευάστηκαν {n} αρχεία στον φάκελο {folder}
@plural Packaged {n} file {note}|Packaged {n} files {note} Συσκευάστηκε {n} αρχείο {note}|Συσκευάστηκαν {n} αρχεία {note}
Can't render this file because it contains an unexpected character in line 164 and column 5.
+4 -4
View File
@@ -3928,7 +3928,7 @@ axis Both Ambos
@msg PDF settings are not an object los ajustes de PDF no son un objeto
@msg PDF security settings are not an object los ajustes de seguridad de PDF no son un objeto
@msg PDF writer error: {0} error del escritor de PDF: {0}
@msg Packaged {n} file(s) in {folder} {note} Se empaquetaron {n} archivo(s) en {folder}{note}
@msgplural Packaged {n} file in {folder} ({note}|Packaged {n} files in {folder} ({note} Se empaquetó {n} archivo en {folder} ({note}|Se empaquetaron {n} archivos en {folder} ({note}
@msg Packaged {n} file(s){note} Se empaquetaron {n} archivo(s){note}
@msg Preview in Browser needs the desktop app (the web downloads files instead) Previsualizar en el navegador requiere la aplicación de escritorio (la versión web descarga los archivos)
@msg Release Guides: no guides Soltar guías: no hay guías
@@ -5535,9 +5535,9 @@ mark-style Japanese Japonesas
Slope: Pendiente:
axis X Axis Eje X
axis Y Axis Eje Y
@msg Packaged {n} file(s) in {folder} Se empaquetaron {n} archivo(s) en {folder}
@msg Packaged {n} file(s) {note} Se empaquetaron {n} archivo(s) {note}
@msg Packaged {n} file(s) Se empaquetaron {n} archivo(s)
@msgplural Packaged {n} file in {folder}|Packaged {n} files in {folder} Se empaquetó {n} archivo en {folder}|Se empaquetaron {n} archivos en {folder}
@msgplural Packaged {n} file {note}|Packaged {n} files {note} Se empaquetó {n} archivo {note}|Se empaquetaron {n} archivos {note}
@msgplural Packaged {n} file|Packaged {n} files Se empaquetó {n} archivo|Se empaquetaron {n} archivos
@plural Packaged {n} file|Packaged {n} files Se empaquetó {n} archivo|Se empaquetaron {n} archivos
@plural Packaged {n} file in {folder}|Packaged {n} files in {folder} Se empaquetó {n} archivo en {folder}|Se empaquetaron {n} archivos en {folder}
@plural Packaged {n} file {note}|Packaged {n} files {note} Se empaquetó {n} archivo {note}|Se empaquetaron {n} archivos {note}
Can't render this file because it contains an unexpected character in line 2 and column 73.
+4 -4
View File
@@ -4151,7 +4151,7 @@ imageTrace Outline Ääriviiva
@msg PDF settings are not an object PDF-asetukset eivät ole objekti
@msg PDF security settings are not an object PDF-suojausasetukset eivät ole objekti
@msg PDF writer error: {0} PDF-kirjoittimen virhe: {0}
@msg Packaged {n} file(s) in {folder} {note} Paketoitiin {n} tiedosto(a) kansioon {folder} {note}
@msgplural Packaged {n} file in {folder} ({note}|Packaged {n} files in {folder} ({note} Paketoitiin {n} tiedosto kansioon {folder} ({note}|Paketoitiin {n} tiedostoa kansioon {folder} ({note}
@msg Packaged {n} file(s){note} Paketoitiin {n} tiedosto(a){note}
@msg Preview in Browser needs the desktop app (the web downloads files instead) Esikatselu selaimessa vaatii työpöytäsovelluksen (verkkoversio lataa tiedostot sen sijaan)
@msg Release Guides: no guides Vapauta apuviivat: ei apuviivoja
@@ -5624,9 +5624,9 @@ swatch Bright Violet Kirkas violetti
Slope: Kaltevuus:
axis X Axis X-akseli
axis Y Axis Y-akseli
@msg Packaged {n} file(s) in {folder} Paketoitiin {n} tiedosto(a) kansioon {folder}
@msg Packaged {n} file(s) {note} Paketoitiin {n} tiedosto(a) {note}
@msg Packaged {n} file(s) Paketoitiin {n} tiedosto(a)
@msgplural Packaged {n} file in {folder}|Packaged {n} files in {folder} Paketoitiin {n} tiedosto kansioon {folder}|Paketoitiin {n} tiedostoa kansioon {folder}
@msgplural Packaged {n} file {note}|Packaged {n} files {note} Paketoitiin {n} tiedosto {note}|Paketoitiin {n} tiedostoa {note}
@msgplural Packaged {n} file|Packaged {n} files Paketoitiin {n} tiedosto|Paketoitiin {n} tiedostoa
@plural Packaged {n} file|Packaged {n} files Paketoitiin {n} tiedosto|Paketoitiin {n} tiedostoa
@plural Packaged {n} file in {folder}|Packaged {n} files in {folder} Paketoitiin {n} tiedosto kansioon {folder}|Paketoitiin {n} tiedostoa kansioon {folder}
@plural Packaged {n} file {note}|Packaged {n} files {note} Paketoitiin {n} tiedosto {note}|Paketoitiin {n} tiedostoa {note}
Can't render this file because it contains an unexpected character in line 2 and column 73.
+4 -4
View File
@@ -3924,7 +3924,7 @@ axis Both Les deux
@msg PDF settings are not an object Les paramètres PDF ne sont pas un objet
@msg PDF security settings are not an object Les paramètres de sécurité PDF ne sont pas un objet
@msg PDF writer error: {0} Erreur du générateur PDF : {0}
@msg Packaged {n} file(s) in {folder} {note} {n} fichier(s) assemblé(s) dans {folder}{note}
@msgplural Packaged {n} file in {folder} ({note}|Packaged {n} files in {folder} ({note} {n} fichier assemblé dans {folder} ({note}|{n} fichiers assemblés dans {folder} ({note}
@msg Packaged {n} file(s){note} {n} fichier(s) assemblé(s){note}
@msg Preview in Browser needs the desktop app (the web downloads files instead) Aperçu dans le navigateur nécessite l’application de bureau (la version web télécharge les fichiers à la place)
@msg Release Guides: no guides Annuler les repères : aucun repère
@@ -5591,9 +5591,9 @@ theme Appearance Apparence
Slope: Pente :
axis X Axis Axe X
axis Y Axis Axe Y
@msg Packaged {n} file(s) in {folder} {n} fichier(s) assemblé(s) dans {folder}
@msg Packaged {n} file(s) {note} {n} fichier(s) assemblé(s) {note}
@msg Packaged {n} file(s) {n} fichier(s) assemblé(s)
@msgplural Packaged {n} file in {folder}|Packaged {n} files in {folder} {n} fichier assemblé dans {folder}|{n} fichiers assemblés dans {folder}
@msgplural Packaged {n} file {note}|Packaged {n} files {note} {n} fichier assemblé {note}|{n} fichiers assemblés {note}
@msgplural Packaged {n} file|Packaged {n} files {n} fichier assemblé|{n} fichiers assemblés
@plural Packaged {n} file|Packaged {n} files {n} fichier assemblé|{n} fichiers assemblés
@plural Packaged {n} file in {folder}|Packaged {n} files in {folder} {n} fichier assemblé dans {folder}|{n} fichiers assemblés dans {folder}
@plural Packaged {n} file {note}|Packaged {n} files {note} {n} fichier assemblé {note}|{n} fichiers assemblés {note}
Can't render this file because it contains an unexpected character in line 2 and column 73.
+4 -4
View File
@@ -4955,7 +4955,7 @@ imageTrace Outline Körvonal
@msg Opened with {_1} note(s): {_2} Megnyitva; megjegyzések: {_1}: {_2}
@msg Opened {url} Megnyitva: {url}
@msg Outline Stroke: no stroked paths selected Körvonal útvonallá alakítása: nincs kijelölt körvonalas útvonal
@msg Packaged {n} file(s) in {folder} {note} Becsomagolt fájlok: {n}, mappa: {folder}{note}
@msgplural Packaged {n} file in {folder} ({note}|Packaged {n} files in {folder} ({note} Becsomagolt fájlok: {n}, mappa: {folder} ({note}
@msg Packaged {n} file(s){note} Becsomagolt fájlok: {n}{note}
@msg page size {w} × {h} oldalméret: {w} × {h}
@msg page {0} does not exist (the PDF has {1}) nincs ilyen oldal: {0} (a PDF oldalszáma: {1})
@@ -5579,9 +5579,9 @@ imageTrace Outline Körvonal
Slope: Lejtés:
axis X Axis X tengely
axis Y Axis Y tengely
@msg Packaged {n} file(s) in {folder} Becsomagolt fájlok: {n}, mappa: {folder}
@msg Packaged {n} file(s) {note} Becsomagolt fájlok: {n} {note}
@msg Packaged {n} file(s) Becsomagolt fájlok: {n}
@msgplural Packaged {n} file in {folder}|Packaged {n} files in {folder} Becsomagolt fájlok: {n}, mappa: {folder}
@msgplural Packaged {n} file {note}|Packaged {n} files {note} Becsomagolt fájlok: {n} {note}
@msgplural Packaged {n} file|Packaged {n} files Becsomagolt fájlok: {n}
@plural Packaged {n} file|Packaged {n} files Becsomagolt fájlok: {n}
@plural Packaged {n} file in {folder}|Packaged {n} files in {folder} Becsomagolt fájlok: {n}, mappa: {folder}
@plural Packaged {n} file {note}|Packaged {n} files {note} Becsomagolt fájlok: {n} {note}
Can't render this file because it contains an unexpected character in line 2 and column 73.
+4 -4
View File
@@ -3953,7 +3953,7 @@ imageTrace Outline Kontur
@msg PDF settings are not an object Pengaturan PDF bukan objek
@msg PDF security settings are not an object Pengaturan keamanan PDF bukan objek
@msg PDF writer error: {0} Kesalahan penulis PDF: {0}
@msg Packaged {n} file(s) in {folder} {note} Berhasil mengemas {n} file di {folder}{note}
@msgplural Packaged {n} file in {folder} ({note}|Packaged {n} files in {folder} ({note} Berhasil mengemas {n} file di {folder} ({note}
@msg Packaged {n} file(s){note} Berhasil mengemas {n} file{note}
@msg Preview in Browser needs the desktop app (the web downloads files instead) Pratinjau di Peramban memerlukan aplikasi desktop (versi web mengunduh file sebagai gantinya)
@msg Release Guides: no guides Lepaskan panduan: tidak ada panduan
@@ -5519,9 +5519,9 @@ swatch Bright Violet Violet cerah
Slope: Kemiringan:
axis X Axis Sumbu X
axis Y Axis Sumbu Y
@msg Packaged {n} file(s) in {folder} Berhasil mengemas {n} file di {folder}
@msg Packaged {n} file(s) {note} Berhasil mengemas {n} file {note}
@msg Packaged {n} file(s) Berhasil mengemas {n} file
@msgplural Packaged {n} file in {folder}|Packaged {n} files in {folder} Berhasil mengemas {n} file di {folder}
@msgplural Packaged {n} file {note}|Packaged {n} files {note} Berhasil mengemas {n} file {note}
@msgplural Packaged {n} file|Packaged {n} files Berhasil mengemas {n} file
@plural Packaged {n} file|Packaged {n} files Berhasil mengemas {n} file
@plural Packaged {n} file in {folder}|Packaged {n} files in {folder} Berhasil mengemas {n} file di {folder}
@plural Packaged {n} file {note}|Packaged {n} files {note} Berhasil mengemas {n} file {note}
Can't render this file because it contains an unexpected character in line 2175 and column 5.
+4 -4
View File
@@ -3968,7 +3968,7 @@ axis Both Entrambi
@msg PDF settings are not an object Le impostazioni PDF non sono un oggetto
@msg PDF security settings are not an object Le impostazioni di sicurezza PDF non sono un oggetto
@msg PDF writer error: {0} Errore del generatore PDF: {0}
@msg Packaged {n} file(s) in {folder} {note} Pacchetto creato con {n} file in {folder} {note}
@msgplural Packaged {n} file in {folder} ({note}|Packaged {n} files in {folder} ({note} Pacchetto creato con {n} file in {folder} ({note}
@msg Packaged {n} file(s){note} Pacchetto creato con {n} file{note}
@msg Preview in Browser needs the desktop app (the web downloads files instead) Anteprima nel browser richiede l'app desktop (sul web i file vengono invece scaricati)
@msg Release Guides: no guides Rilascia guide: nessuna guida
@@ -5208,9 +5208,9 @@ lighting Light Luce
Slope: Pendenza:
axis X Axis Asse X
axis Y Axis Asse Y
@msg Packaged {n} file(s) in {folder} Pacchetto creato con {n} file in {folder}
@msg Packaged {n} file(s) {note} Pacchetto creato con {n} file {note}
@msg Packaged {n} file(s) Pacchetto creato con {n} file
@msgplural Packaged {n} file in {folder}|Packaged {n} files in {folder} Pacchetto creato con {n} file in {folder}
@msgplural Packaged {n} file {note}|Packaged {n} files {note} Pacchetto creato con {n} file {note}
@msgplural Packaged {n} file|Packaged {n} files Pacchetto creato con {n} file
@plural Packaged {n} file|Packaged {n} files Pacchetto creato con {n} file|Pacchetto creato con {n} file
@plural Packaged {n} file in {folder}|Packaged {n} files in {folder} Pacchetto creato con {n} file in {folder}|Pacchetto creato con {n} file in {folder}
@plural Packaged {n} file {note}|Packaged {n} files {note} Pacchetto creato con {n} file {note}|Pacchetto creato con {n} file {note}
Can't render this file because it contains an unexpected character in line 2 and column 73.
+4 -4
View File
@@ -4459,7 +4459,7 @@ swatch Bright Violet ビビッドバイオレット
@msg {_1} linked image(s) changed on disk: Update Links shows the new versions {_1} 個のリンク画像がディスク上で変更されました: 「リンクを更新」で新しいバージョンを表示できます
@msg Updated {_1} linked file(s) changed on disk ディスク上で変更された {_1} 個のリンクファイルを更新しました
@msg pick a colour, gradient or pattern to save as a swatch スウォッチとして保存するカラー、グラデーション、またはパターンを選択してください
@msg Packaged {n} file(s) in {folder} {note} {n} 個のファイルを {folder} にパッケージしました{note}
@msgplural Packaged {n} file in {folder} ({note}|Packaged {n} files in {folder} ({note} {n} 個のファイルを {folder} にパッケージしました({note}
@msg Packaged {n} file(s){note} {n} 個のファイルをパッケージしました{note}
@msg choose a location for the package パッケージの保存場所を選択してください
@msg missing `folder` `folder` が指定されていません
@@ -5274,9 +5274,9 @@ lighting Light ライト
Slope: 勾配:
axis X Axis X 軸
axis Y Axis Y 軸
@msg Packaged {n} file(s) in {folder} {n} 個のファイルを {folder} にパッケージしました
@msg Packaged {n} file(s) {note} {n} 個のファイルをパッケージしました {note}
@msg Packaged {n} file(s) {n} 個のファイルをパッケージしました
@msgplural Packaged {n} file in {folder}|Packaged {n} files in {folder} {n} 個のファイルを {folder} にパッケージしました
@msgplural Packaged {n} file {note}|Packaged {n} files {note} {n} 個のファイルをパッケージしました {note}
@msgplural Packaged {n} file|Packaged {n} files {n} 個のファイルをパッケージしました
@plural Packaged {n} file|Packaged {n} files {n} 個のファイルをパッケージしました
@plural Packaged {n} file in {folder}|Packaged {n} files in {folder} {n} 個のファイルを {folder} にパッケージしました
@plural Packaged {n} file {note}|Packaged {n} files {note} {n} 個のファイルをパッケージしました {note}
Can't render this file because it contains an unexpected character in line 2 and column 73.
+4 -4
View File
@@ -3723,7 +3723,7 @@ font-technology Variable ცვლადი
@msg PDF settings are not an object PDF-ის პარამეტრები ობიექტი არ არის
@msg PDF security settings are not an object PDF-ის უსაფრთხოების პარამეტრები ობიექტი არ არის
@msg PDF writer error: {0} PDF-ის ჩამწერის შეცდომა: {0}
@msg Packaged {n} file(s) in {folder} {note} შეფუთულია ფაილი ({n}) საქაღალდეში {folder}{note}
@msgplural Packaged {n} file in {folder} ({note}|Packaged {n} files in {folder} ({note} შეფუთულია ფაილი ({n}) საქაღალდეში {folder} ({note}
@msg Packaged {n} file(s){note} შეფუთულია ფაილი ({n}){note}
@msg Preview in Browser needs the desktop app (the web downloads files instead) ბრაუზერში წინასწარ ნახვას დესკტოპის აპი სჭირდება (ვებში ფაილები ჩამოიტვირთება)
@msg Release Guides: no guides დამხმარე ხაზების მოხსნა: დამხმარე ხაზები არ არის
@@ -5505,9 +5505,9 @@ imageTrace Outline კონტური
Slope: დახრა:
axis X Axis X ღერძი
axis Y Axis Y ღერძი
@msg Packaged {n} file(s) in {folder} შეფუთულია ფაილი ({n}) საქაღალდეში {folder}
@msg Packaged {n} file(s) {note} შეფუთულია ფაილი ({n}) {note}
@msg Packaged {n} file(s) შეფუთულია ფაილი ({n})
@msgplural Packaged {n} file in {folder}|Packaged {n} files in {folder} შეფუთულია ფაილი ({n}) საქაღალდეში {folder}
@msgplural Packaged {n} file {note}|Packaged {n} files {note} შეფუთულია ფაილი ({n}) {note}
@msgplural Packaged {n} file|Packaged {n} files შეფუთულია ფაილი ({n})
@plural Packaged {n} file|Packaged {n} files შეფუთულია ფაილი ({n})
@plural Packaged {n} file in {folder}|Packaged {n} files in {folder} შეფუთულია ფაილი ({n}) საქაღალდეში {folder}
@plural Packaged {n} file {note}|Packaged {n} files {note} შეფუთულია ფაილი ({n}) {note}
Can't render this file because it is too large.
+4 -4
View File
@@ -4387,7 +4387,7 @@ theme Appearance 외관
@msg {_1} linked image(s) changed on disk: Update Links shows the new versions 링크된 이미지 {_1}개가 디스크에서 바뀌었습니다: 링크 업데이트를 하면 새 버전이 표시됩니다
@msg Updated {_1} linked file(s) changed on disk 디스크에서 바뀐 링크된 파일 {_1}개를 업데이트했습니다
@msg pick a colour, gradient or pattern to save as a swatch 견본으로 저장할 색상, 그레이디언트 또는 패턴을 선택하세요
@msg Packaged {n} file(s) in {folder} {note} {folder}에 파일 {n}개를 패키지했습니다{note}
@msgplural Packaged {n} file in {folder} ({note}|Packaged {n} files in {folder} ({note} {folder}에 파일 {n}개를 패키지했습니다({note}
@msg Packaged {n} file(s){note} 파일 {n}개를 패키지했습니다{note}
@msg choose a location for the package 패키지 위치를 선택하세요
@msg missing `folder` `folder`가 없습니다
@@ -5171,9 +5171,9 @@ lighting Light 광원
Slope: 기울기:
axis X Axis X축
axis Y Axis Y축
@msg Packaged {n} file(s) in {folder} {folder}에 파일 {n}개를 패키지했습니다
@msg Packaged {n} file(s) {note} 파일 {n}개를 패키지했습니다 {note}
@msg Packaged {n} file(s) 파일 {n}개를 패키지했습니다
@msgplural Packaged {n} file in {folder}|Packaged {n} files in {folder} {folder}에 파일 {n}개를 패키지했습니다
@msgplural Packaged {n} file {note}|Packaged {n} files {note} 파일 {n}개를 패키지했습니다 {note}
@msgplural Packaged {n} file|Packaged {n} files 파일 {n}개를 패키지했습니다
@plural Packaged {n} file|Packaged {n} files 파일 {n}개를 패키지했습니다
@plural Packaged {n} file in {folder}|Packaged {n} files in {folder} {folder}에 파일 {n}개를 패키지했습니다
@plural Packaged {n} file {note}|Packaged {n} files {note} 파일 {n}개를 패키지했습니다 {note}
Can't render this file because it contains an unexpected character in line 2 and column 73.
+4 -4
View File
@@ -3967,7 +3967,7 @@ imageTrace Outline Contour
@msg PDF settings are not an object PDF-instellingen zijn geen object
@msg PDF security settings are not an object PDF-beveiligingsinstellingen zijn geen object
@msg PDF writer error: {0} PDF-schrijffout: {0}
@msg Packaged {n} file(s) in {folder} {note} {n} bestand(en) verpakt in {folder} {note}
@msgplural Packaged {n} file in {folder} ({note}|Packaged {n} files in {folder} ({note} {n} bestand verpakt in {folder} ({note}|{n} bestanden verpakt in {folder} ({note}
@msg Packaged {n} file(s){note} {n} bestand(en) verpakt{note}
@msg Preview in Browser needs the desktop app (the web downloads files instead) Voorvertoning in browser heeft de desktop-app nodig (het web downloadt in plaats daarvan bestanden)
@msg Release Guides: no guides Hulplijnen vrijgeven: geen hulplijnen
@@ -5563,9 +5563,9 @@ swatch Bright Violet Felviolet
Slope: Helling:
axis X Axis X-as
axis Y Axis Y-as
@msg Packaged {n} file(s) in {folder} {n} bestand(en) verpakt in {folder}
@msg Packaged {n} file(s) {note} {n} bestand(en) verpakt {note}
@msg Packaged {n} file(s) {n} bestand(en) verpakt
@msgplural Packaged {n} file in {folder}|Packaged {n} files in {folder} {n} bestand verpakt in {folder}|{n} bestanden verpakt in {folder}
@msgplural Packaged {n} file {note}|Packaged {n} files {note} {n} bestand verpakt {note}|{n} bestanden verpakt {note}
@msgplural Packaged {n} file|Packaged {n} files {n} bestand verpakt|{n} bestanden verpakt
@plural Packaged {n} file|Packaged {n} files {n} bestand verpakt|{n} bestanden verpakt
@plural Packaged {n} file in {folder}|Packaged {n} files in {folder} {n} bestand verpakt in {folder}|{n} bestanden verpakt in {folder}
@plural Packaged {n} file {note}|Packaged {n} files {note} {n} bestand verpakt {note}|{n} bestanden verpakt {note}
Can't render this file because it contains an unexpected character in line 2 and column 73.
+4 -4
View File
@@ -4060,7 +4060,7 @@ imageTrace Outline Kontur
@msg PDF settings are not an object Ustawienia PDF nie są obiektem
@msg PDF security settings are not an object Ustawienia zabezpieczeń PDF nie są obiektem
@msg PDF writer error: {0} Błąd zapisu PDF: {0}
@msg Packaged {n} file(s) in {folder} {note} Spakowane pliki: {n} w {folder}{note}
@msgplural Packaged {n} file in {folder} ({note}|Packaged {n} files in {folder} ({note} Spakowane pliki: {n} w {folder} ({note}
@msg Packaged {n} file(s){note} Spakowane pliki: {n}{note}
@msg Preview in Browser needs the desktop app (the web downloads files instead) Podgląd w przeglądarce wymaga aplikacji desktopowej (wersja webowa zamiast tego pobiera pliki)
@msg Release Guides: no guides Uwolnij linie pomocnicze: brak linii pomocniczych
@@ -5447,9 +5447,9 @@ mark-style Japanese Japońskie
Slope: Nachylenie:
axis X Axis Oś X
axis Y Axis Oś Y
@msg Packaged {n} file(s) in {folder} Spakowane pliki: {n} w {folder}
@msg Packaged {n} file(s) {note} Spakowane pliki: {n} {note}
@msg Packaged {n} file(s) Spakowane pliki: {n}
@msgplural Packaged {n} file in {folder}|Packaged {n} files in {folder} Spakowane pliki: {n} w {folder}
@msgplural Packaged {n} file {note}|Packaged {n} files {note} Spakowane pliki: {n} {note}
@msgplural Packaged {n} file|Packaged {n} files Spakowane pliki: {n}
@plural Packaged {n} file|Packaged {n} files Spakowane pliki: {n}|Spakowane pliki: {n}|Spakowane pliki: {n}
@plural Packaged {n} file in {folder}|Packaged {n} files in {folder} Spakowane pliki: {n} w {folder}|Spakowane pliki: {n} w {folder}|Spakowane pliki: {n} w {folder}
@plural Packaged {n} file {note}|Packaged {n} files {note} Spakowane pliki: {n} {note}|Spakowane pliki: {n} {note}|Spakowane pliki: {n} {note}
Can't render this file because it contains an unexpected character in line 2 and column 73.
+4 -4
View File
@@ -3514,7 +3514,7 @@ axis Both Ambos
@msg PDF settings are not an object as configurações de PDF não são um objeto
@msg PDF security settings are not an object as configurações de segurança de PDF não são um objeto
@msg PDF writer error: {0} Erro do gravador de PDF: {0}
@msg Packaged {n} file(s) in {folder} {note} {n} arquivo(s) empacotado(s) em {folder}{note}
@msgplural Packaged {n} file in {folder} ({note}|Packaged {n} files in {folder} ({note} {n} arquivo empacotado em {folder} ({note}|{n} arquivos empacotados em {folder} ({note}
@msg Packaged {n} file(s){note} {n} arquivo(s) empacotado(s){note}
@msg Preview in Browser needs the desktop app (the web downloads files instead) Visualizar no navegador exige o aplicativo para desktop (na web, os arquivos são baixados)
@msg Release Guides: no guides Liberar guias: não há guias
@@ -5510,9 +5510,9 @@ mark-style Japanese Japonesas
Slope: Inclinação:
axis X Axis Eixo X
axis Y Axis Eixo Y
@msg Packaged {n} file(s) in {folder} {n} arquivo(s) empacotado(s) em {folder}
@msg Packaged {n} file(s) {note} {n} arquivo(s) empacotado(s) {note}
@msg Packaged {n} file(s) {n} arquivo(s) empacotado(s)
@msgplural Packaged {n} file in {folder}|Packaged {n} files in {folder} {n} arquivo empacotado em {folder}|{n} arquivos empacotados em {folder}
@msgplural Packaged {n} file {note}|Packaged {n} files {note} {n} arquivo empacotado {note}|{n} arquivos empacotados {note}
@msgplural Packaged {n} file|Packaged {n} files {n} arquivo empacotado|{n} arquivos empacotados
@plural Packaged {n} file|Packaged {n} files {n} arquivo empacotado|{n} arquivos empacotados
@plural Packaged {n} file in {folder}|Packaged {n} files in {folder} {n} arquivo empacotado em {folder}|{n} arquivos empacotados em {folder}
@plural Packaged {n} file {note}|Packaged {n} files {note} {n} arquivo empacotado {note}|{n} arquivos empacotados {note}
Can't render this file because it contains an unexpected character in line 6 and column 47.
+4 -4
View File
@@ -3964,7 +3964,7 @@ axis Both Оба
@msg PDF settings are not an object параметры PDF не являются объектом
@msg PDF security settings are not an object параметры безопасности PDF не являются объектом
@msg PDF writer error: {0} ошибка записи PDF: {0}
@msg Packaged {n} file(s) in {folder} {note} Упаковано файлов: {n} в {folder}{note}
@msgplural Packaged {n} file in {folder} ({note}|Packaged {n} files in {folder} ({note} Упаковано файлов: {n} в {folder} ({note}
@msg Packaged {n} file(s){note} Упаковано файлов: {n}{note}
@msg Preview in Browser needs the desktop app (the web downloads files instead) Просмотр в браузере требует настольного приложения (web-версия скачивает файлы)
@msg Release Guides: no guides Освобождение направляющих: нет направляющих
@@ -5204,9 +5204,9 @@ lighting Light Свет
Slope: Уклон:
axis X Axis Ось X
axis Y Axis Ось Y
@msg Packaged {n} file(s) in {folder} Упаковано файлов: {n} в {folder}
@msg Packaged {n} file(s) {note} Упаковано файлов: {n} {note}
@msg Packaged {n} file(s) Упаковано файлов: {n}
@msgplural Packaged {n} file in {folder}|Packaged {n} files in {folder} Упаковано файлов: {n} в {folder}
@msgplural Packaged {n} file {note}|Packaged {n} files {note} Упаковано файлов: {n} {note}
@msgplural Packaged {n} file|Packaged {n} files Упаковано файлов: {n}
@plural Packaged {n} file|Packaged {n} files Упаковано файлов: {n}|Упаковано файлов: {n}|Упаковано файлов: {n}
@plural Packaged {n} file in {folder}|Packaged {n} files in {folder} Упаковано файлов: {n} в {folder}|Упаковано файлов: {n} в {folder}|Упаковано файлов: {n} в {folder}
@plural Packaged {n} file {note}|Packaged {n} files {note} Упаковано файлов: {n} {note}|Упаковано файлов: {n} {note}|Упаковано файлов: {n} {note}
Can't render this file because it contains an unexpected character in line 2 and column 73.
+4 -4
View File
@@ -3845,7 +3845,7 @@ axis Both Båda
@msg PDF settings are not an object PDF-inställningarna är inte ett objekt
@msg PDF security settings are not an object PDF-säkerhetsinställningarna är inte ett objekt
@msg PDF writer error: {0} fel i PDF-skrivaren: {0}
@msg Packaged {n} file(s) in {folder} {note} Paketerade {n} fil(er) i {folder}{note}
@msgplural Packaged {n} file in {folder} ({note}|Packaged {n} files in {folder} ({note} Paketerade {n} fil i {folder} ({note}|Paketerade {n} filer i {folder} ({note}
@msg Packaged {n} file(s){note} Paketerade {n} fil(er){note}
@msg Preview in Browser needs the desktop app (the web downloads files instead) Förhandsgranska i webbläsare kräver skrivbordsappen (webbversionen hämtar filer i stället)
@msg Release Guides: no guides Släpp stödlinjer: inga stödlinjer
@@ -5617,9 +5617,9 @@ font-script Japanese Japanska
Slope: Lutning:
axis X Axis X-axel
axis Y Axis Y-axel
@msg Packaged {n} file(s) in {folder} Paketerade {n} fil(er) i {folder}
@msg Packaged {n} file(s) {note} Paketerade {n} fil(er) {note}
@msg Packaged {n} file(s) Paketerade {n} fil(er)
@msgplural Packaged {n} file in {folder}|Packaged {n} files in {folder} Paketerade {n} fil i {folder}|Paketerade {n} filer i {folder}
@msgplural Packaged {n} file {note}|Packaged {n} files {note} Paketerade {n} fil {note}|Paketerade {n} filer {note}
@msgplural Packaged {n} file|Packaged {n} files Paketerade {n} fil|Paketerade {n} filer
@plural Packaged {n} file|Packaged {n} files Paketerade {n} fil|Paketerade {n} filer
@plural Packaged {n} file in {folder}|Packaged {n} files in {folder} Paketerade {n} fil i {folder}|Paketerade {n} filer i {folder}
@plural Packaged {n} file {note}|Packaged {n} files {note} Paketerade {n} fil {note}|Paketerade {n} filer {note}
Can't render this file because it contains an unexpected character in line 5 and column 25.
+18 -1
View File
@@ -271,7 +271,7 @@ fn bundled_catalogs_are_consistent() {
let mut seen = std::collections::HashSet::new();
for (ctx, src, tr) in &entries {
assert!(seen.insert((ctx.clone(), src.clone())), "{}: duplicate {ctx:?} {src:?}", l.code);
if ctx == "@plural" {
if ctx == "@plural" || ctx == "@msgplural" {
let one_other: Vec<&str> = src.split('|').collect();
assert_eq!(one_other.len(), 2, "{}: plural source must be `one|other`: {src:?}", l.code);
for form in tr.split('|') {
@@ -1500,6 +1500,23 @@ fn package_status_message_templates_parse() {
assert!(Catalog::parse("@msg\tPackaged {n} file(s) in {folder}{note}\tbad\n").message("Packaged 1 file(s) in /a b").is_none());
}
/// A `@msgplural` row translates both English forms of a message with a count, and the count
/// picks the language's form.
#[test]
fn messages_with_a_count_take_the_plural_form() {
let c = Catalog::parse("@msgplural\tSaved {n} file|Saved {n} files\tone {n}|few {n}|many {n}\n");
for s in ["Saved 1 file", "Saved 4 files"] {
let (forms, caps) = c.message_forms(s).unwrap();
assert_eq!(forms, ["one {n}", "few {n}", "many {n}"], "{s}");
assert_eq!(caps.len(), 1, "{s}");
}
assert!(c.message_forms("Saved 1 files!").is_none());
let cs = cs();
assert_eq!(message(cs, "Packaged 1 file"), "Zabalen 1 soubor");
assert_eq!(message(cs, "Packaged 4 files"), "Zabaleny 4 soubory");
assert_eq!(message(cs, "Packaged 21 files"), "Zabaleno 21 souborů");
}
/// The scan reads the message of an error made with one of the engine's [`ERROR_HELPERS`] or with
/// an error enum's variant, `EngineError::Disabled`'s reason included: a literal or a `format!`
/// string, on the call's line or wrapped over several lines, in the same template form as the
+4 -4
View File
@@ -3735,7 +3735,7 @@ axis Both Her İkisi
@msg PDF settings are not an object PDF ayarları bir nesne değildir
@msg PDF security settings are not an object PDF güvenlik 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ı
@msgplural Packaged {n} file in {folder} ({note}|Packaged {n} files in {folder} ({note} {n} dosya {folder} klasörüne paketlendi ({note}
@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
@@ -5543,9 +5543,9 @@ theme Appearance Görünüm
axis X Axis X ekseni
axis Y Axis Y ekseni
@msg Packaged {n} file(s) in {folder} {folder} biçiminde paketlenmiş {n} dosyası/dosyaları
@msg Packaged {n} file(s) {note} Paketlenmiş {n} dosyası/dosyaları {note}
@msg Packaged {n} file(s) Paketlenmiş {n} dosyası/dosyaları
@msgplural Packaged {n} file in {folder}|Packaged {n} files in {folder} {n} dosya {folder} klasörüne paketlendi
@msgplural Packaged {n} file {note}|Packaged {n} files {note} {n} dosya paketlendi {note}
@msgplural Packaged {n} file|Packaged {n} files {n} dosya paketlendi
# Artwork drag between document tabs.
Drop Artwork Çizimi Bırak
@msg {key} must be [x, y] with finite coordinates {key}, sonlu koordinatlı [x, y] olmalı
Can't render this file because it contains an unexpected character in line 5 and column 25.
+4 -4
View File
@@ -3952,7 +3952,7 @@ axis Both Обидві
@msg PDF settings are not an object Параметри PDF не є об’єктом
@msg PDF security settings are not an object Параметри безпеки PDF не є об’єктом
@msg PDF writer error: {0} Помилка запису PDF: {0}
@msg Packaged {n} file(s) in {folder} {note} Упаковано файли: {n} {folder}{note}
@msgplural Packaged {n} file in {folder} ({note}|Packaged {n} files in {folder} ({note} Упаковано файли: {n} {folder} ({note}
@msg Packaged {n} file(s){note} Упаковано файли: {n}{note}
@msg Preview in Browser needs the desktop app (the web downloads files instead) Перегляд у браузері вимагає настільної програми (web-версія завантажує файли)
@msg Release Guides: no guides Звільнення напрямних: немає напрямних
@@ -5188,9 +5188,9 @@ lighting Light Світло
Slope: Ухил:
axis X Axis Вісь X
axis Y Axis Вісь Y
@msg Packaged {n} file(s) in {folder} Упаковано файли: {n} {folder}
@msg Packaged {n} file(s) {note} Упаковано файли: {n} {note}
@msg Packaged {n} file(s) Упаковано файли: {n}
@msgplural Packaged {n} file in {folder}|Packaged {n} files in {folder} Упаковано файли: {n} {folder}
@msgplural Packaged {n} file {note}|Packaged {n} files {note} Упаковано файли: {n} {note}
@msgplural Packaged {n} file|Packaged {n} files Упаковано файли: {n}
@plural Packaged {n} file|Packaged {n} files Упаковано файли: {n}|Упаковано файли: {n}|Упаковано файли: {n}
@plural Packaged {n} file in {folder}|Packaged {n} files in {folder} Упаковано файли: {n} {folder}|Упаковано файли: {n} {folder}|Упаковано файли: {n} {folder}
@plural Packaged {n} file {note}|Packaged {n} files {note} Упаковано файли: {n} {note}|Упаковано файли: {n} {note}|Упаковано файли: {n} {note}
Can't render this file because it contains an unexpected character in line 178 and column 5.
+4 -4
View File
@@ -4606,7 +4606,7 @@ theme Appearance Giao diện
@msg Opened with {_1} note(s): {_2} Đã mở với {_1} ghi chú: {_2}
@msg Opened {url} Đã mở {url}
@msg Outline Stroke: no stroked paths selected Đường bao nét: chưa chọn đường dẫn có nét
@msg Packaged {n} file(s) in {folder} {note} Đã đóng gói {n} tệp trong {folder}{note}
@msgplural Packaged {n} file in {folder} ({note}|Packaged {n} files in {folder} ({note} Đã đóng gói {n} tệp trong {folder} ({note}
@msg Packaged {n} file(s){note} Đã đóng gói {n} tệp{note}
@msg page size {w} × {h} kích thước trang {w} × {h}
@msg page {0} does not exist (the PDF has {1}) trang {0} không tồn tại (PDF có {1} trang)
@@ -5190,9 +5190,9 @@ theme Appearance Giao diện
Slope: Độ dốc:
axis X Axis Trục X
axis Y Axis Trục Y
@msg Packaged {n} file(s) in {folder} Đã đóng gói {n} tệp trong {folder}
@msg Packaged {n} file(s) {note} Đã đóng gói {n} tệp {note}
@msg Packaged {n} file(s) Đã đóng gói {n} tệp
@msgplural Packaged {n} file in {folder}|Packaged {n} files in {folder} Đã đóng gói {n} tệp trong {folder}
@msgplural Packaged {n} file {note}|Packaged {n} files {note} Đã đóng gói {n} tệp {note}
@msgplural Packaged {n} file|Packaged {n} files Đã đóng gói {n} tệp
@plural Packaged {n} file|Packaged {n} files Đã đóng gói {n} tệp
@plural Packaged {n} file in {folder}|Packaged {n} files in {folder} Đã đóng gói {n} tệp trong {folder}
@plural Packaged {n} file {note}|Packaged {n} files {note} Đã đóng gói {n} tệp {note}
Can't render this file because it contains an unexpected character in line 200 and column 5.
+4 -4
View File
@@ -4179,7 +4179,7 @@ imageTrace Outline 轮廓
@msg {undecoded} image(s) couldn't be decoded and show as crossed boxes 无法解码 {undecoded} 张图像:它们显示为打叉的方框
@msg {_1} linked image(s) changed on disk: Update Links shows the new versions 有 {_1} 个链接图像已在磁盘上更改:“更新链接”可显示新版本
@msg pick a colour, gradient or pattern to save as a swatch 请选取要保存为色板的颜色、渐变或图案
@msg Packaged {n} file(s) in {folder} {note} 已将 {n} 个文件打包到 {folder}{note}
@msgplural Packaged {n} file in {folder} ({note}|Packaged {n} files in {folder} ({note} 已将 {n} 个文件打包到 {folder}({note}
@msg Packaged {n} file(s){note} 已打包 {n} 个文件{note}
@msg choose a location for the package 请为打包选择位置
@msg missing `folder` 缺少 `folder`
@@ -5432,9 +5432,9 @@ lighting Light 光源
Slope: 斜率:
axis X Axis X 轴
axis Y Axis Y 轴
@msg Packaged {n} file(s) in {folder} 已将 {n} 个文件打包到 {folder}
@msg Packaged {n} file(s) {note} 已打包 {n} 个文件 {note}
@msg Packaged {n} file(s) 已打包 {n} 个文件
@msgplural Packaged {n} file in {folder}|Packaged {n} files in {folder} 已将 {n} 个文件打包到 {folder}
@msgplural Packaged {n} file {note}|Packaged {n} files {note} 已打包 {n} 个文件 {note}
@msgplural Packaged {n} file|Packaged {n} files 已打包 {n} 个文件
@plural Packaged {n} file|Packaged {n} files 已打包 {n} 个文件
@plural Packaged {n} file in {folder}|Packaged {n} files in {folder} 已将 {n} 个文件打包到 {folder}
@plural Packaged {n} file {note}|Packaged {n} files {note} 已打包 {n} 个文件 {note}
Can't render this file because it contains an unexpected character in line 2 and column 73.
+4 -4
View File
@@ -2114,7 +2114,7 @@ file-filter Templates 範本
@msg {undecoded} image(s) couldn't be decoded and show as crossed boxes 無法解碼 {undecoded} 張影像:它們顯示為打叉的方框
@msg {_1} linked image(s) changed on disk: Update Links shows the new versions 有 {_1} 個連結影像已在磁碟上變更:「更新連結」可顯示新版本
@msg pick a colour, gradient or pattern to save as a swatch 請挑選要儲存為色票的顏色、漸層或圖樣
@msg Packaged {n} file(s) in {folder} {note} 已將 {n} 個檔案封裝到 {folder}{note}
@msgplural Packaged {n} file in {folder} ({note}|Packaged {n} files in {folder} ({note} 已將 {n} 個檔案封裝到 {folder}({note}
@msg Packaged {n} file(s){note} 已封裝 {n} 個檔案{note}
@msg choose a location for the package 請選擇封裝的位置
@msg missing `folder` 未提供 `folder`
@@ -5227,9 +5227,9 @@ lighting Light 光源
Slope: 斜率:
axis X Axis X 軸
axis Y Axis Y 軸
@msg Packaged {n} file(s) in {folder} 已將 {n} 個檔案封裝到 {folder}
@msg Packaged {n} file(s) {note} 已封裝 {n} 個檔案 {note}
@msg Packaged {n} file(s) 已封裝 {n} 個檔案
@msgplural Packaged {n} file in {folder}|Packaged {n} files in {folder} 已將 {n} 個檔案封裝到 {folder}
@msgplural Packaged {n} file {note}|Packaged {n} files {note} 已封裝 {n} 個檔案 {note}
@msgplural Packaged {n} file|Packaged {n} files 已封裝 {n} 個檔案
@plural Packaged {n} file|Packaged {n} files 已封裝 {n} 個檔案
@plural Packaged {n} file in {folder}|Packaged {n} files in {folder} 已將 {n} 個檔案封裝到 {folder}
@plural Packaged {n} file {note}|Packaged {n} files {note} 已封裝 {n} 個檔案 {note}
Can't render this file because it contains an unexpected character in line 6 and column 47.