From ad35bd27ac78918a5568de327060e0f8529b69d0 Mon Sep 17 00:00:00 2001 From: Nai-ITA Date: Mon, 12 Oct 2026 18:54:35 +0200 Subject: [PATCH 01/33] Add files via upload --- crates/ui-egui/src/i18n/it.tsv | 214 +++++++++++++++++++++++++++++++++ 1 file changed, 214 insertions(+) diff --git a/crates/ui-egui/src/i18n/it.tsv b/crates/ui-egui/src/i18n/it.tsv index 5448ef639..ee7285733 100644 --- a/crates/ui-egui/src/i18n/it.tsv +++ b/crates/ui-egui/src/i18n/it.tsv @@ -2347,3 +2347,217 @@ animation effects Off Disattivati The linked PDF opened, but its named destination was not applied. Il PDF collegato è stato aperto, ma la sua destinazione con nome non è stata applicata. The linked PDF opened, but its page destination was out of range. Il PDF collegato è stato aperto, ma la pagina di destinazione è fuori intervallo. Local cross-PDF links require the desktop app I collegamenti locali tra PDF richiedono l'app desktop + +# Signature validation, accessibility checker, calendar and certificate details. + A font isn't embedded Un font non è incorporato + A {} action isn't allowed Un'azione {} non è consentita + A {} annotation has additional actions Un'annotazione {} ha azioni aggiuntive + A {} annotation has no appearance stream Un'annotazione {} non ha un flusso di aspetto + A {} annotation isn't set to print, or is hidden Un'annotazione {} non è impostata per la stampa, oppure è nascosta + Accessibility Report Rapporto di accessibilità + CRL Signing Firma di CRL + Certificate Signing Firma di certificati + Change Author Cambia autore + Change Keywords Cambia parole chiave + Change Subject Cambia oggetto + Change Title Cambia titolo + Choose a digital ID. Scegli un ID digitale. + Color Colore + Comment Commento + Create links Crea collegamenti + Creator Applicazione di origine + Cut and stack needs Two-sided: Off. Print single-sided sheets. Taglia e impila richiede Fronte/retro: disattivato. Stampa fogli su un solo lato. + Data Encipherment Cifratura dei dati + Decipher Only Solo decifratura + Detailed Report Rapporto dettagliato + DeviceCMYK is used, but the PDF/A output intent isn't a CMYK profile Viene usato DeviceCMYK, ma l'intento di output PDF/A non è un profilo CMYK + DeviceRGB is used, but the PDF/A output intent isn't an RGB profile Viene usato DeviceRGB, ma l'intento di output PDF/A non è un profilo RGB + Digital Signature Firma digitale + Encipher Only Solo cifratura + English Inglese + Enter a URL Inserisci un URL + Enter a name. Inserisci un nome. + Enter a page number Inserisci un numero di pagina + Enter the field names Inserisci i nomi dei campi + Error Errore + Field "{}" on page {p} has no description (tooltip) Il campo "{}" a pagina {p} non ha una descrizione (descrizione comando) + Filename Nome file + Flatten Fill & Sign Appiattisci Compila e firma + Font Font + Font (unnamed) on page {p} doesn't map its characters to Unicode Il font (senza nome) a pagina {p} non associa i suoi caratteri a Unicode + Font {} on page {p} doesn't map its characters to Unicode Il font {} a pagina {p} non associa i suoi caratteri a Unicode + Form field on page {p} isn't tagged Il campo modulo a pagina {p} non ha tag + H{n} follows an H{d}; headings should not skip levels H{n} segue un H{d}; i titoli non dovrebbero saltare livelli + Inspector Ispettore + Key Agreement Accordo di chiavi + Key Encipherment Cifratura delle chiavi + Next Avanti + No document language is set Non è impostata la lingua del documento + No page has text: the document appears to be images of pages Nessuna pagina contiene testo: il documento sembra composto da immagini di pagine + Non-Repudiation Non ripudio + On Attivo + Page {p} doesn't tab in structure order La tabulazione della pagina {p} non segue l'ordine della struttura + Page {p}: {n} untagged content item Pagina {p}: {n} elemento di contenuto senza tag + Page {p}: {n} untagged content items Pagina {p}: {n} elementi di contenuto senza tag + Page {} has additional actions La pagina {} ha azioni aggiuntive + Panel layout could not be restored: {error} Impossibile ripristinare il layout dei pannelli: {error} + Panel move was not applied: {error} Lo spostamento del pannello non è stato applicato: {error} + PdfCraft can't check this signature yet: {}. PdfCraft non può ancora verificare questa firma: {}. + Producer Produttore + Rendering… Rendering… + Report created Rapporto creato + Rev. {rev}: Certified by an unknown signer Rev. {rev}: certificato da un firmatario sconosciuto + Rev. {rev}: Certified by {name} Rev. {rev}: certificato da {name} + Rev. {rev}: Signed by an unknown signer Rev. {rev}: firmato da un firmatario sconosciuto + Rev. {rev}: Signed by {name} Rev. {rev}: firmato da {name} + Rotate view clockwise (⇧⌘+) Ruota la vista in senso orario (⇧⌘+) + Rule Name Nome regola + Save (M4) Salva (M4) + Save as {level} Salva come {level} + Save changes? Salvare le modifiche? + Signature is invalid La firma non è valida + Signature is valid La firma è valida + Signature validity is unknown La validità della firma è sconosciuta + Signing time is from the clock on the signer's computer. L'ora della firma proviene dall'orologio del computer del firmatario. + Still rendering — this page is unusually complex… Rendering ancora in corso — questa pagina è insolitamente complessa… + System Sistema + The ECDSA signature is not in canonical DER (trailing bytes, padding or a missing sign byte); it was read anyway. La firma ECDSA non è in DER canonico (byte in coda, riempimento o byte di segno mancante); è stata comunque letta. + The ECDSA signature is the raw r and s values instead of a DER sequence; it was read anyway. La firma ECDSA è composta dai valori r e s grezzi invece che da una sequenza DER; è stata comunque letta. + The RSA signature value does not have the length of the key's modulus (leading zero bytes dropped or added); it was read anyway. Il valore della firma RSA non ha la lunghezza del modulo della chiave (byte zero iniziali rimossi o aggiunti); è stato comunque letto. + The RSA signature's DigestInfo has no NULL parameter (older signers write it so); it was read anyway. Il DigestInfo della firma RSA non ha il parametro NULL (i firmatari più vecchi lo scrivono così); è stato comunque letto. + The certificate of {} does not allow this many CA certificates below it (path length), so it is not used to vouch for {}. Il certificato di {} non consente così tanti certificati CA al di sotto (lunghezza del percorso), quindi non viene usato per garantire {}. + The certificate of {} is not a CA certificate that may issue certificates, so it is not used to vouch for {}. Il certificato di {} non è un certificato CA autorizzato a emettere certificati, quindi non viene usato per garantire {}. + The certificate of {} was not valid at the time of signing, so it is not used to vouch for {}. Il certificato di {} non era valido al momento della firma, quindi non viene usato per garantire {}. + The checker found problems which may prevent the document from being fully accessible. Il controllo ha rilevato problemi che potrebbero impedire la piena accessibilità del documento. + The document has been altered or corrupted since the signature was applied. Il documento è stato alterato o danneggiato dopo l'applicazione della firma. + The document has been altered or corrupted since the timestamp was applied. Il documento è stato alterato o danneggiato dopo l'applicazione della marca temporale. + The document has been altered since this signature was applied in ways it does not permit ({}). Il documento è stato alterato dopo l'applicazione di questa firma in modi che non consente ({}). + The document has been altered since this timestamp was applied in ways it does not permit ({}). Il documento è stato alterato dopo l'applicazione di questa marca temporale in modi che non consente ({}). + The document has been modified since this signature was applied, but the changes are permitted ({}). Il documento è stato modificato dopo l'applicazione di questa firma, ma le modifiche sono consentite ({}). + The document has been modified since this timestamp was applied, but the changes are permitted ({}). Il documento è stato modificato dopo l'applicazione di questa marca temporale, ma le modifiche sono consentite ({}). + The document has no tags (structure tree) Il documento non ha tag (albero della struttura) + The document has no title Il documento non ha un titolo + The document isn't marked as tagged (MarkInfo Marked) Il documento non è contrassegnato come dotato di tag (MarkInfo Marked) + The document isn't tagged, so none of its content is Il documento non ha tag, quindi nessuno dei suoi contenuti li ha + The document's embedded revocation information shows that the signer's certificate has not been revoked. Le informazioni di revoca incorporate nel documento mostrano che il certificato del firmatario non è stato revocato. + The embedded timestamp token is valid and its authority is trusted; trusted time is {}. Il token di marca temporale incorporato è valido e la sua autorità è attendibile; l'ora attendibile è {}. + The font {} isn't embedded Il font {} non è incorporato + The metadata doesn't identify the file as {} I metadati non identificano il file come {} + The password is incorrect. La password non è corretta. + The password must have at least 6 characters. La password deve avere almeno 6 caratteri. + The passwords do not match. Le password non corrispondono. + The security settings don't allow screen readers to read the text Le impostazioni di sicurezza non consentono ai lettori di schermo di leggere il testo + The signature algorithm and the SignerInfo's digest algorithm name different hashes; the signature was made with the SignerInfo's. L'algoritmo di firma e l'algoritmo di digest del SignerInfo indicano hash diversi; la firma è stata creata con quello del SignerInfo. + The signature carries an unverified timestamp ({}): the timestamp authority is not in your list of trusted certificates, so the signing time claimed by the signer is used instead. La firma contiene una marca temporale non verificata ({}): l'autorità di marca temporale non è nel tuo elenco di certificati attendibili, quindi viene usata l'ora di firma dichiarata dal firmatario. + The signature contents are not hexadecimal. Il contenuto della firma non è esadecimale. + The signature could not be checked ({}). Impossibile controllare la firma ({}). + The signature could not be read ({}). Impossibile leggere la firma ({}). + The signature could not be verified ({}). Impossibile verificare la firma ({}). + The signature has no valid byte range. La firma non ha un intervallo di byte valido. + The signature includes an embedded timestamp. La firma include una marca temporale incorporata. + The signature is BER-encoded (indefinite lengths) rather than DER; it was read leniently. La firma è codificata in BER (lunghezze indefinite) anziché in DER; è stata letta in modo tollerante. + The signature uses the legacy adbe.x509.rsa_sha1 format. La firma usa il formato legacy adbe.x509.rsa_sha1. + The signature value does not match the signer's certificate: the signature is corrupt. Il valore della firma non corrisponde al certificato del firmatario: la firma è danneggiata. + The signature's byte range does not exclude exactly its contents. L'intervallo di byte della firma non esclude esattamente il suo contenuto. + The signature's byte range does not match the file. L'intervallo di byte della firma non corrisponde al file. + The signature's timestamp token could not be verified ({}). Impossibile verificare il token di marca temporale della firma ({}). + The signature's timestamp token does not cover the signature value. Il token di marca temporale della firma non copre il valore della firma. + The signed content is a constructed (segmented) OCTET STRING, as BER allows; it was read anyway. Il contenuto firmato è un OCTET STRING costruito (segmentato), come consente BER; è stato comunque letto. + The signer's certificate does not allow digital signatures (its key usage has neither digital signature nor non-repudiation). Il certificato del firmatario non consente firme digitali (il suo utilizzo chiave non prevede né la firma digitale né il non ripudio). + The signer's certificate has been revoked ({}). Il certificato del firmatario è stato revocato ({}). + The signer's certificate has critical extensions PdfCraft does not recognize ({}). Il certificato del firmatario ha estensioni critiche che PdfCraft non riconosce ({}). + The signer's certificate is not in the signature. Il certificato del firmatario non è presente nella firma. + The signer's certificate is not issued for signing documents (its extended key usage has no document-signing purpose). Il certificato del firmatario non è emesso per firmare documenti (il suo utilizzo chiave esteso non prevede la firma di documenti). + The signer's certificate was not valid at the time of signing. Il certificato del firmatario non era valido al momento della firma. + The signer's identity is unknown because it has not been included in your list of trusted certificates and none of its parent certificates are trusted certificates. L'identità del firmatario è sconosciuta perché non è stata inclusa nel tuo elenco di certificati attendibili e nessuno dei suoi certificati padre è attendibile. + The signer's identity is valid. L'identità del firmatario è valida. + The timestamp authority's certificate was not valid at the time of timestamping. Il certificato dell'autorità di marca temporale non era valido al momento della marcatura. + The timestamp contents are not hexadecimal. Il contenuto della marca temporale non è esadecimale. + The timestamp has no valid byte range. La marca temporale non ha un intervallo di byte valido. + The timestamp token could not be read ({}). Impossibile leggere il token di marca temporale ({}). + The timestamp token is valid and its authority is trusted. Il token di marca temporale è valido e la sua autorità è attendibile. + The timestamp token is valid, but the timestamp authority is not in your list of trusted certificates. Il token di marca temporale è valido, ma l'autorità di marca temporale non è nel tuo elenco di certificati attendibili. + The timestamp's byte range does not exclude exactly its contents. L'intervallo di byte della marca temporale non esclude esattamente il suo contenuto. + The timestamp's byte range does not match the file. L'intervallo di byte della marca temporale non corrisponde al file. + The window shows the file name, not the title (Initial View > Show) La finestra mostra il nome del file, non il titolo (Vista iniziale > Mostra) + There is no folder to save the digital ID in. Non c'è una cartella in cui salvare l'ID digitale. + This document has not been modified since this signature was applied. Questo documento non è stato modificato dopo l'applicazione di questa firma. + This document has not been modified since this timestamp was applied. Questo documento non è stato modificato dopo l'applicazione di questa marca temporale. + This signature uses RIPEMD-160, a legacy 160-bit hash algorithm that is no longer recommended for signatures. It still validates, but it should not be relied on. Questa firma usa RIPEMD-160, un algoritmo di hash legacy a 160 bit non più consigliato per le firme. È ancora valida, ma non dovrebbe essere considerata affidabile. + This signature uses SHA-1, a weak hash algorithm: collisions in it have been demonstrated. It still validates because many documents signed years ago use it, but it should not be relied on. Questa firma usa SHA-1, un algoritmo di hash debole per cui sono state dimostrate collisioni. È ancora valida perché molti documenti firmati anni fa lo usano, ma non dovrebbe essere considerata affidabile. + Tools Strumenti + Unsigned signature field Campo firma non firmato + Unsigned signature field: {name} Campo firma non firmato: {name} + Zoom in / out (also pinch or ⌘-scroll) Ingrandisci / riduci (anche con il pizzico o ⌘+scorrimento) + alternate text hides an annotation inside it il testo alternativo nasconde un'annotazione al suo interno + alternate text on an element with no page content testo alternativo su un elemento senza contenuto di pagina + comments commenti + document security store archivio di sicurezza del documento + document structure struttura del documento + form fill compilazione modulo + its alternate text is inside another element's and will never be read il suo testo alternativo è dentro quello di un altro elemento e non verrà mai letto + links collegamenti + metadata metadati + no alternate text nessun testo alternativo + no header cells (TH) nessuna cella di intestazione (TH) + no summary nessun riepilogo + not in a TR non è in un TR + not in a Table, THead, TBody or TFoot non è in un Table, THead, TBody o TFoot + not in an L (list) non è in un L (elenco) + not in an LI (list item) non è in un LI (voce di elenco) + of di + other changes altre modifiche + page content contenuto della pagina + page {n} is out of range (1–{count}) la pagina {n} è fuori intervallo (1–{count}) + pages added or removed pagine aggiunte o rimosse + rows have between {min} and {max} columns le righe hanno da {min} a {max} colonne + the first heading is an H{n}; headings should not skip levels il primo titolo è un H{n}; i titoli non dovrebbero saltare livelli + the signed version could not be read impossibile leggere la versione firmata + {n} pages and no bookmarks {n} pagine e nessun segnalibro + {page} is not a page number or label {page} non è un numero o un'etichetta di pagina + {ty} element on page {p}: {what} Elemento {ty} a pagina {p}: {what} + {ty} element: {what} Elemento {ty}: {what} + {who}, certificate issued by an unknown issuer. {who}, certificato emesso da un'autorità sconosciuta. + {who}, certificate issued by {issuer}. {who}, certificato emesso da {issuer}. + {} annotation on page {p} isn't tagged L'annotazione {} a pagina {p} non ha tag + {} annotations aren't allowed Le annotazioni {} non sono consentite + … and {n} more … e altri {n} +@plural {n} byte|{n} bytes {n} byte|{n} byte +@plural {n} image optimized|{n} images optimized {n} immagine ottimizzata|{n} immagini ottimizzate +@plural {n} item discarded|{n} items discarded {n} elemento scartato|{n} elementi scartati +@plural {n} pixel|{n} pixels {n} pixel|{n} pixel +calendar date April aprile +calendar date August agosto +calendar date December dicembre +calendar date February febbraio +calendar date January gennaio +calendar date July luglio +calendar date June giugno +calendar date March marzo +calendar date May maggio +calendar date November novembre +calendar date October ottobre +calendar date September settembre +calendar weekday Fr Ve +calendar weekday Mo Lu +calendar weekday Sa Sa +calendar weekday Su Do +calendar weekday Th Gi +calendar weekday Tu Ma +calendar weekday We Me +certificate Basic constraints Vincoli di base +certificate Intended usage Utilizzo previsto +certificate Issued by Emesso da +certificate Issued to Emesso a +certificate Issuer Emittente +certificate Key usage Utilizzo chiave +certificate Public key Chiave pubblica +certificate SHA-1 digest Digest SHA-1 +certificate SHA-256 digest Digest SHA-256 +certificate Self-signed Autofirmato +certificate Serial number Numero di serie +certificate Valid from Valido dal +certificate Valid to Valido fino al +certificate Validity ends Fine validità +certificate Validity starts Inizio validità +certificate Version Versione From 6973d78b572e84ac85d0b77c3bed2f39bb545829 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fernando=20Are=C3=A1n=20Mag=C3=A1n?= Date: Tue, 13 Oct 2026 12:58:39 +0200 Subject: [PATCH 02/33] docs: merge the duplicated catalog paragraph in localization.md The "Dialogs, panels, menus" paragraph appears twice, the same artifact as the Auto paragraph in #1525. Two language additions each edited it and both versions were kept: one ends "Czech and Turkish cover the menus so far", the other lists Slovenian among the translated languages and says only Czech covers the menus. Neither list is current. Turkish has had a complete catalog since #1057, and five of the shipped languages are in neither copy: Kazakh, Polish, Greek, Turkish and Lithuanian, all with full catalogs per docs/localization-parity.md. Czech is still menus only (135 of the 2,143-key union there). So keep one paragraph, and stop enumerating the languages in it: that list is what both additions edited at once, and the paragraph already points at localization-parity.md, which carries the per-language counts and coverage. The rest of the paragraph is unchanged. Docs only, no code. Co-Authored-By: Claude Opus 5 --- docs/localization.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/localization.md b/docs/localization.md index 05240cafb..912e25098 100644 --- a/docs/localization.md +++ b/docs/localization.md @@ -14,8 +14,7 @@ The control channel exposes the setting through `ui.set`: The value is `auto` or a language code (`en`, `ja`, `zh-hans`, `zh-hant`, `cs`, `pt-br`, `de`, `es`, `fr`, `ru`, `kk`, `bg`, `te`, `hu`, `uk`, `it`, `ar`, `pl`, `sl`, `el`, `tr`, `lt`), in any case. `ui.state` reports `language` as written in the preferences (`auto`, `en`, `ja`, `zh-hans`, `zh-hant`, `cs`, `pt-br`, `de`, `es`, `fr`, `ru`, `kk`, `bg`, `te`, `hu`, `uk`, `it`, `ar`, `pl`, `sl`, `el`, `tr` or `lt`). Unknown values return an error without changing the current setting. Preferences saved before this setting existed follow the system language. -Dialogs, panels, menus, notices and history labels go through the catalog (`tl!`). Japanese, Traditional Chinese, Simplified Chinese, Russian, Bulgarian, German, Spanish, French, Telugu, Hungarian, Ukrainian, Italian, Brazilian Portuguese and Arabic translate them (about 2,000–2,140 entries each); Czech and Turkish cover the menus so far. Untranslated labels use English. Error details that come from the engine or the operating system are shown as they are, inside a translated frame ("操作「…」に失敗しました: …"). The command palette matches the translated label, the English label and the command id. Vertical Japanese PDF rendering is an existing viewer feature; this change does not add vertical text editing. Per-language coverage, script support and what each language still needs are in [localization-parity.md](localization-parity.md). -Dialogs, panels, menus, notices and history labels go through the catalog (`tl!`). Japanese, Traditional Chinese, Simplified Chinese, Russian, Bulgarian, German, Spanish, French, Telugu, Hungarian, Ukrainian, Italian, Brazilian Portuguese, Arabic and Slovenian translate them (about 2,000–2,190 entries each); Czech covers the menus so far. Untranslated labels use English. Error details that come from the engine or the operating system are shown as they are, inside a translated frame ("操作「…」に失敗しました: …"). The command palette matches the translated label, the English label and the command id. Vertical Japanese PDF rendering is an existing viewer feature; this change does not add vertical text editing. Per-language coverage, script support and what each language still needs are in [localization-parity.md](localization-parity.md). +Dialogs, panels, menus, notices and history labels go through the catalog (`tl!`). Every bundled language translates them (about 2,000–2,580 entries each), except Czech, which covers the menus so far. Untranslated labels use English. Error details that come from the engine or the operating system are shown as they are, inside a translated frame ("操作「…」に失敗しました: …"). The command palette matches the translated label, the English label and the command id. Vertical Japanese PDF rendering is an existing viewer feature; this change does not add vertical text editing. Per-language coverage, script support and what each language still needs are in [localization-parity.md](localization-parity.md). Whole sentences that the layers below word — what the accessibility checker found, what the PDF/A verifier reports, what a signature's details say, what is wrong with the pages to print, what an edit is called in the history — are translated too, because those layers hand the sentence over apart from the document's own words. See [Sentences the engine words](#sentences-the-engine-words). From c699e88c93fef33611982612542ab762c6170431 Mon Sep 17 00:00:00 2001 From: Saimirbaci Date: Mon, 12 Oct 2026 19:51:42 -0400 Subject: [PATCH 03/33] i18n: add Albanian (sq) interface language 2,330-entry clean-room catalog, Albanian month and weekday names for date formats, Preferences entry, locale matching for sq-*, coverage tests, font coverage test, attribution entry and docs. Co-Authored-By: Claude Sonnet 5.5 --- ATTRIBUTION.md | 3 +- ATTRIBUTION.toml | 11 + ROADMAP.md | 1 + crates/engine/src/dates.rs | 13 +- crates/ui-egui/src/i18n/mod.rs | 58 +- crates/ui-egui/src/i18n/sq.tsv | 2354 ++++++++++++++++++++++++++++++++ crates/ui-egui/tests/fonts.rs | 3 +- docs/localization-parity.md | 4 +- docs/localization.md | 18 +- 9 files changed, 2452 insertions(+), 13 deletions(-) create mode 100644 crates/ui-egui/src/i18n/sq.tsv diff --git a/ATTRIBUTION.md b/ATTRIBUTION.md index 3b451f246..10f8eddd7 100644 --- a/ATTRIBUTION.md +++ b/ATTRIBUTION.md @@ -4,7 +4,7 @@ Every asset PdfCraft includes, bundles or uses to build its published material, with its author, source and licence. The policy is in [AGENTS.md](AGENTS.md) §1. The machine-readable list, with SHA-256 hashes, is [ATTRIBUTION.toml](ATTRIBUTION.toml). Licence texts are kept beside the assets and summarised in [NOTICE](NOTICE). -## In this repository (270) +## In this repository (271) | Asset | Title | Author | Licence | Source | Used for | |---|---|---|---|---|---| @@ -278,6 +278,7 @@ Every asset PdfCraft includes, bundles or uses to build its published material, | `crates/sign/tests/data/x509-rsa-sha1.pdf` | One-page PDF with a legacy adbe.x509.rsa_sha1 signature by the RSA test key | PdfCraft contributors | MIT OR Apache-2.0 | Contributor-original: hand-written PDF objects; signature made with `openssl dgst -sha1 -sign` over its byte ranges (see crates/sign/tests/data/README.md) | Signature validation tests (crates/sign/tests/pdf.rs): the legacy adbe.x509.rsa_sha1 format | | `assets/icons/monitor.svg` | Lucide icon "monitor" | Lucide Contributors (portions Cole Bemis, Feather) | ISC | https://github.com/lucide-icons/lucide (npm lucide-static 1.49.0, icons/monitor.svg) | UI icon, embedded via crates/ui-egui/src/icon_data.rs | | `crates/ui-egui/src/i18n/sl.tsv` | Slovene interface translation catalog | PdfCraft contributors | MIT OR Apache-2.0 | Contributor-original: clean-room translations of PdfCraft's English UI labels, no proprietary localisation resources | Slovene UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs | +| `crates/ui-egui/src/i18n/sq.tsv` | Albanian interface translation catalog | PdfCraft contributors | MIT OR Apache-2.0 | Contributor-original: clean-room translations of PdfCraft's English UI labels, no proprietary localisation resources | Albanian UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs | ## Compiled in through dependencies (6) diff --git a/ATTRIBUTION.toml b/ATTRIBUTION.toml index 07433fc45..659049732 100644 --- a/ATTRIBUTION.toml +++ b/ATTRIBUTION.toml @@ -3352,3 +3352,14 @@ licence_file = "LICENSE-MIT" kind = "translation" usage = "Slovene UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs" sha256 = "9bbbd0d516f284b571ad6e2ed811f6bbdee283cea8483686f4aa939db38ea288" + +[[asset]] +path = "crates/ui-egui/src/i18n/sq.tsv" +title = "Albanian interface translation catalog" +author = "PdfCraft contributors" +source = "Contributor-original: clean-room translations of PdfCraft's English UI labels, no proprietary localisation resources" +licence = "MIT OR Apache-2.0" +licence_file = "LICENSE-MIT" +kind = "translation" +usage = "Albanian UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs" +sha256 = "ca7e318035c785ef0e06e77aea1d81335eab243be6619371ed9cf751085789aa" diff --git a/ROADMAP.md b/ROADMAP.md index b4ab4ea8a..195ec8185 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -445,3 +445,4 @@ Newest first: the date, what moved, and the new overall estimate. | 2026-10-05 | major | Honest assessment and "Where we're lacking" added | - **2026-10-12 (M8):** Redaction cleans indirect and form structure references, preserving surviving form tags. +- **2026-10-12 (i18n):** Albanian (`sq`, Shqip) added: 2,343-entry catalog, month and weekday names, Preferences entry; not yet reviewed by a native speaker. diff --git a/crates/engine/src/dates.rs b/crates/engine/src/dates.rs index e26d9ec60..f6aeeb551 100644 --- a/crates/engine/src/dates.rs +++ b/crates/engine/src/dates.rs @@ -56,7 +56,7 @@ const AR_DAYS: [&str; 7] = ["الأحد", "الاثنين", "الثلاثاء", /// The languages month and weekday names can be written in (Preferences ▸ Date format ▸ Language): /// the interface languages, in the same order and with the same names. -pub static DATE_LANGUAGES: [DateLanguage; 22] = [ +pub static DATE_LANGUAGES: [DateLanguage; 23] = [ DateLanguage { code: "en", name: "English", @@ -360,6 +360,15 @@ pub static DATE_LANGUAGES: [DateLanguage; 22] = [ days: ["sekmadienis", "pirmadienis", "antradienis", "trečiadienis", "ketvirtadienis", "penktadienis", "šeštadienis"], days_short: ["sk", "pr", "an", "tr", "kt", "pn", "št"], }, + DateLanguage { + code: "sq", + name: "Shqip", + months: ["janar", "shkurt", "mars", "prill", "maj", "qershor", "korrik", "gusht", "shtator", "tetor", "nëntor", "dhjetor"], + months_with_day: None, + months_short: ["jan", "shk", "mar", "pri", "maj", "qer", "korr", "gush", "sht", "tet", "nën", "dhj"], + days: ["e diel", "e hënë", "e martë", "e mërkurë", "e enjte", "e premte", "e shtunë"], + days_short: ["die", "hën", "mar", "mër", "enj", "pre", "sht"], + }, ]; /// The date language for `code` (any case), or `None` when there's none. @@ -643,6 +652,8 @@ mod tests { assert_eq!(in_lang("yyyy\\年mmmmd\\日 dddd", "ja"), "2026年3月7日 土曜日"); assert_eq!(in_lang("yyyy\\年mmmmd\\日 dddd", "zh-hans"), "2026年三月7日 星期六"); assert_eq!(in_lang("ddd", "zh-hant"), "週六"); + assert_eq!(in_lang("dddd, d mmmm yyyy", "sq"), "e shtunë, 7 mars 2026"); + assert_eq!(in_lang("ddd d mmm", "sq"), "sht 7 mar"); assert_eq!(date_language("PT-BR").map(|l| l.code), Some("pt-br")); assert!(date_language("xx").is_none()); for l in &DATE_LANGUAGES { diff --git a/crates/ui-egui/src/i18n/mod.rs b/crates/ui-egui/src/i18n/mod.rs index 18a0fc54b..118dee0e7 100644 --- a/crates/ui-egui/src/i18n/mod.rs +++ b/crates/ui-egui/src/i18n/mod.rs @@ -147,7 +147,7 @@ fn plural_sl(n: u64) -> usize { } /// The registry. English first: it is the fallback and the source language. -pub static LANGUAGES: [LangInfo; 22] = [ +pub static LANGUAGES: [LangInfo; 23] = [ LangInfo { code: "en", name: "English", source: "", plural: plural_one_other, rtl: false, catalog: OnceLock::new() }, LangInfo { code: "ja", name: "日本語", source: include_str!("ja.tsv"), plural: plural_none, rtl: false, catalog: OnceLock::new() }, // Simplified Chinese; `zh`, `zh-CN`, `zh-SG` and `zh-Hans-*` locales resolve here (see `candidates`). @@ -207,6 +207,8 @@ pub static LANGUAGES: [LangInfo; 22] = [ LangInfo { code: "tr", name: "Türkçe", source: include_str!("tr.tsv"), plural: plural_none, rtl: false, catalog: OnceLock::new() }, // Lithuanian; every `lt-*` locale (`lt-LT`, `lt_LT.UTF-8`) resolves here. Three plural forms (one, few, other). LangInfo { code: "lt", name: "Lietuvių", source: include_str!("lt.tsv"), plural: plural_lithuanian, rtl: false, catalog: OnceLock::new() }, + // Albanian; every `sq-*` locale (`sq-AL`, `sq_AL.UTF-8`, `sq-XK`) resolves here. One/other plural, like English. + LangInfo { code: "sq", name: "Shqip", source: include_str!("sq.tsv"), plural: plural_one_other, rtl: false, catalog: OnceLock::new() }, ]; impl LangInfo { @@ -2288,6 +2290,60 @@ mod tests { assert_eq!(restored.language, "sl"); } + #[test] + fn albanian_is_registered_and_persists() { + let sq = Lang::from_code("sq").expect("sq registered"); + assert_eq!(sq.name(), "Shqip"); + assert_eq!(normalize_pref("SQ"), Some("sq")); + for tag in ["sq", "sq-AL", "sq_AL.UTF-8", "SQ-xk", "sq_XK@variant"] { + assert_eq!(lang_from_tag(tag), Some(sq), "{tag}"); + } + assert_eq!(first_supported("sq-AL\r\nen-US"), Some(sq)); + assert_eq!(tr(sq, "File"), "Skedari"); + // one (1), other (0, 2+) + assert_eq!((0..=3).map(|n| (sq.0.plural)(n)).collect::>(), [1, 0, 1, 1]); + assert_eq!(trn(sq, 1, "{n} page", "{n} pages"), "1 faqe"); + assert_eq!(trn(sq, 0, "{n} page", "{n} pages"), "0 faqe"); + assert_eq!(trn(sq, 5, "{n} page", "{n} pages"), "5 faqe"); + let mut app = crate::PdfCraftApp::default(); + app.set_option("language", "SQ").unwrap(); + assert_eq!(app.language, "sq"); + let mut restored = crate::PdfCraftApp::default(); + restored.restore(&app.persist()); + assert_eq!(restored.language, "sq"); + assert!(restored.set_option("language", "xx").is_err()); + assert_eq!(restored.language, "sq"); + } + + /// Albanian translates every registered command and every All tools group, section and item. + #[test] + fn albanian_covers_commands_and_catalogue() { + let sq = Lang::from_code("sq").expect("sq registered"); + for command in pdfcraft_engine::commands::COMMANDS { + assert!(has(sq, command.label), "missing command: {}", command.label); + if let Some(menu) = command.menu { + assert!(has(sq, menu), "missing menu: {menu}"); + } + } + for group in pdfcraft_engine::catalog::TOOL_GROUPS { + assert!(has(sq, group.label), "missing group: {}", group.label); + for section in group.sections { + assert!(has(sq, section.title), "missing section: {}", section.title); + for item in section.items { + assert!(has(sq, item.label), "missing item: {}", item.label); + } + } + } + } + + /// New tl!("literal") labels must not silently fall back to English. + #[test] + fn albanian_covers_ui_literals() { + let sq = Lang::from_code("sq").expect("sq registered"); + let missing: Vec<_> = scan_ui_literals(false).into_iter().filter(|label| !has(sq, label)).collect(); + assert!(missing.is_empty(), "untranslated Albanian UI literals: {missing:#?}"); + } + #[test] fn slovene_plurals_cover_dual_few_teens_and_large_counts() { let sl = Lang::from_code("sl").expect("sl registered"); diff --git a/crates/ui-egui/src/i18n/sq.tsv b/crates/ui-egui/src/i18n/sq.tsv new file mode 100644 index 000000000..cbaf9b8e5 --- /dev/null +++ b/crates/ui-egui/src/i18n/sq.tsv @@ -0,0 +1,2354 @@ +# Albanian (sq) catalog. Format: see the header of ja.tsv +# (context source translation; @id, @plural and other contexts; escapes \n \t \\). +# Plural forms (see `plural_one_other` in i18n/mod.rs): one (1) | other (0, 2 and above). +# +# Clean-room: every entry was written from the plain meaning of the English label using ordinary +# Albanian computing vocabulary. No proprietary localisation resource, string table or product UI +# (Acrobat's included) was consulted or copied; add entries the same way. +# Product and technology names (PdfCraft, PDF, Acrobat JavaScript ...) are not translated; +# the trailing "…" of dialog commands is kept. + + Menu Menyja + File Skedari + Edit Redakto + Pages Faqet + View Pamja + Help Ndihma + Preferences Preferencat + Preferences… Preferencat… + Interface language Gjuha e ndërfaqes +@plural {n} page|{n} pages {n} faqe|{n} faqe + · not fixable here · nuk mund të rregullohet këtu + (page {p}) (faqja {p}) + (searching… {s} of {p} pages) (duke kërkuar… {s} nga {p} faqe) + ({s} not exported: {first}) ({s} nuk u eksportuan: {first}) + on page {p} në faqen {p} + · password-protected · e mbrojtur me fjalëkalim + % of all commits % e të gjitha commit-eve + (none) (asnjë) + +Bin +Bin + +LOC +LOC + , Expires: , Skadon: + 1 difference found U gjet 1 ndryshim + 1 file 1 skedar + 1 file done 1 skedar u krye + 1 file needs attention 1 skedar kërkon vëmendje + 1 instance 1 rast + 1 issue 1 problem + 1 mark 1 shenjë + 1 page 1 faqe + 1 page selected 1 faqe e zgjedhur + 1 page selected. 1 faqe e zgjedhur. + 180 degrees 180 gradë + 9 digit, A letter, O letter or digit, X any character 9 shifër, A shkronjë, O shkronjë ose shifër, X çdo karakter + ; 1 page already had text ; 1 faqe kishte tashmë tekst + ; failed: {list} ; dështoi: {list} + ; {n} pages already had text ; {n} faqe kishin tashmë tekst + ? of {n} ? nga {n} + @{login}: {prs} PRs, {commits} commits, +{added} / −{deleted} lines (Δ {delta}), +{bin_added} / −{bin_deleted} binary assets, {first} – {last} @{login}: {prs} PR, {commits} commit, +{added} / −{deleted} rreshta (Δ {delta}), +{bin_added} / −{bin_deleted} burime binare, {first} – {last} + A button Një buton + A clean-room, open-source PDF application written in Rust. MIT OR Apache-2.0. Një aplikacion PDF me kod të hapur, i zhvilluar në mënyrë clean-room dhe i shkruar në Rust. MIT OR Apache-2.0. + A diagonal CONFIDENTIAL watermark on every page. Një watermark diagonal CONFIDENTIAL në çdo faqe. + A document needs at least one page: copy instead Një dokument ka nevojë për të paktën një faqe: kopjoje në vend të kësaj + A form field has additional actions Një fushë formulari ka veprime shtesë + A link Një lidhje + A script Një skript + A stream refers to an external file Një rrjedhë i referohet një skedari të jashtëm + A stream uses LZW compression Një rrjedhë përdor kompresimin LZW + A summary describes the table's purpose and layout. Add a Summary attribute to each table. Një përmbledhje përshkruan qëllimin dhe strukturën e tabelës. Shtoni atributin Summary në çdo tabelë. + AI assistant Asistenti AI + About Rreth + About PdfCraft Rreth PdfCraft + Accepted Pranuar + Accessibility Qasshmëria + Accessibility Checker Kontrolluesi i qasshmërisë + Accessibility Checker Options Opsionet e kontrolluesit të qasshmërisë + Accessibility permission flag Flamuri i lejes së qasshmërisë + Accessibility permission flag is set Flamuri i lejes së qasshmërisë është vendosur + Acrobat 3.0 and later (40-bit RC4) Acrobat 3.0 e më vonë (RC4 40-bit) + Acrobat 5.0 and later (128-bit RC4) Acrobat 5.0 e më vonë (RC4 128-bit) + Acrobat 7.0 and later (128-bit AES) Acrobat 7.0 e më vonë (AES 128-bit) + Acrobat X and later (256-bit AES) Acrobat X e më vonë (AES 256-bit) + Action Wizard Asistenti i veprimeve + Action Wizard… Asistenti i veprimeve… + Action name: Emri i veprimit: + Actions Veprimet + Actions list Lista e veprimeve + Actual Size Madhësia aktuale + Actual size Madhësia aktuale + Add Shto + Add Bates numbering… Shto numërtimin Bates… + Add Page Numbers Shto numrat e faqeve + Add Step Shto hap + Add a button Shto një buton + Add a callout Shto një përmendje + Add a checkbox Shto një kuti zgjedhjeje + Add a comment Shto një koment + Add a date field Shto një fushë date + Add a digital signature field Shto një fushë nënshkrimi dixhital + Add a drop-down list Shto një listë zbritëse + Add a list box Shto një kuti liste + Add a radio button Shto një buton radio + Add a reply Shto një përgjigje + Add a stamp Shto një vulë + Add a sticky note Shto një shënim ngjitës + Add a sticky note here Shto një shënim ngjitës këtu + Add a text box Shto një kuti teksti + Add a text field Shto një fushë teksti + Add alternate text Shto tekst alternativ + Add alternate text… Shto tekst alternativ… + Add an Action Shto një veprim + Add an image field Shto një fushë imazhi + Add arrow Shto shigjetë + Add at least two files Shto të paktën dy skedarë + Add background Shto sfond + Add background… Shto sfond… + Add bookmark Shto libërshënues + Add callout Shto përmendje + Add checkmark Shto shenjë vlefshmërie + Add cloud Shto re + Add comments Shto komente + Add connected lines Shto vija të lidhura + Add content Shto përmbajtje + Add cross Shto kryq + Add dot Shto pikë + Add drawing Shto vizatim + Add field Shto fushë + Add file attachment Shto bashkëngjitje skedari + Add files to combine Shto skedarë për t'u bashkuar + Add files… Shto skedarë… + Add folder Shto dosje + Add folder and subfolders Shto dosjen dhe nëndosjet + Add folder and subfolders… Shto dosjen dhe nëndosjet… + Add folder… Shto dosje… + Add footer Shto fund faqeje + Add form components Shto komponentë formulari + Add header Shto krye faqeje + Add header & footer Shto krye dhe fund faqeje + Add header & footer… Shto krye dhe fund faqeje… + Add highlight Shto theksim + Add image Shto imazh + Add image… Shto imazh… + Add inserted text Shto tekst të futur + Add line Shto vijë + Add link Shto lidhje + Add open documents Shto dokumentet e hapura + Add or edit links Shto ose redakto lidhje + Add oval Shto oval + Add polygon Shto shumëkëndësh + Add printer marks Shto shenja shtypjeje + Add rectangle Shto drejtkëndësh + Add redaction mark Shto shenjë redaktimi + Add search index Shto indeks kërkimi + Add signature Shto nënshkrim + Add squiggly underline Shto nënvizim të valëzuar + Add stamp Shto vulë + Add sticky note Shto shënim ngjitës + Add strikethrough Shto vijëzim + Add text Shto tekst + Add text box Shto kuti teksti + Add the PDFs to combine Shto PDF-të për t'u bashkuar + Add the choices people pick from. Shto zgjedhjet nga të cilat zgjedhin përdoruesit. + Add the steps this action runs, in order. Shto hapat që ekzekuton ky veprim, sipas radhës. + Add to Trusted Certificates Shto te certifikatat e besuara + Add to trusted certificates Shto te certifikatat e besuara + Add underline Shto nënvizim + Add watermark Shto watermark + Add watermark… Shto watermark… + Add {what} Shto {what} + Added 1 comment U shtua 1 koment + Added more than once Shtuar më shumë se një herë + Added the first {n} PDFs in {folder} U shtuan {n} PDF-të e para në {folder} + Added {n} comments U shtuan {n} komente + Adding images arrives on the web with file pickers for images Shtimi i imazheve vjen në ueb me zgjedhës skedarësh për imazhe + Adds invisible text over each word; the page image is not changed Shton tekst të padukshëm mbi çdo fjalë; imazhi i faqes nuk ndryshon + Advanced Të avancuara + Advanced Options {chevron} Opsione të avancuara {chevron} + Advanced optimization Optimizim i avancuar + Advanced options Opsione të avancuara + Advanced search… Kërkim i avancuar… + Algorithm Algoritmi + Align Rreshto + Align fields Rreshto fushat + Align left Rreshto majtas + Align right Rreshto djathtas + Alignment: Rreshtimi: + All Të gjitha + All annotations are tagged Të gjitha shënimet janë të etiketuara + All document contents I gjithë përmbajtja e dokumentit + All document contents except metadata I gjithë përmbajtja e dokumentit përveç metadatave + All form fields are tagged Të gjitha fushat e formularit janë të etiketuara + All form fields have description Të gjitha fushat e formularit kanë përshkrim + All multimedia objects are tagged Të gjitha objektet multimediale janë të etiketuara + All open documents Të gjitha dokumentet e hapura + All page content is tagged I gjithë përmbajtja e faqes është e etiketuar + All pages Të gjitha faqet + All pages in document Të gjitha faqet në dokument + All pages in range Të gjitha faqet në interval + All tools Të gjitha mjetet + Allow Rich Text Formatting Lejo formatimin e tekstit të pasur + Allow user to enter custom text Lejo përdoruesin të shkruajë tekst të personalizuar + Allowed Lejuar + Alternate Text Tekst alternativ + Alternate text Tekst alternativ + Alternate text inside an element that already has alternate text is never read. Remove the inner alternate text. Teksti alternativ brenda një elementi që ka tashmë tekst alternativ nuk lexohet kurrë. Hiqni tekstin alternativ të brendshëm. + Alternate text must be associated with some content Teksti alternativ duhet të lidhet me një përmbajtje + Alternate text on an element that contains a link or field hides that annotation from assistive technology. Move the alternate text. Teksti alternativ në një element që përmban lidhje ose fushë e fsheh atë shënim nga teknologjia ndihmëse. Zhvendoseni tekstin alternativ. + Alternate text on an element without page content is never reached. Remove it or attach the element to content. Teksti alternativ në një element pa përmbajtje faqeje nuk arrihet kurrë. Hiqeni ose lidheni elementin me përmbajtje. + Alternate text should not hide annotation Teksti alternativ nuk duhet ta fshehë shënimin + Alternate text that will never be read Tekst alternativ që nuk do të lexohet kurrë + An action is already running Një veprim po ekzekutohet tashmë + An action with this name already exists. Ekziston tashmë një veprim me këtë emër. + An embedded file has no AFRelationship Një skedar i ngulitur nuk ka AFRelationship + An image asks to be interpolated Një imazh kërkon të interpolohet + An image has alternates or OPI information Një imazh ka alternativa ose informacion OPI + An open-source PDF workbench — local, private, and scriptable. Një hapësirë pune PDF me kod të hapur — lokale, private dhe e programueshme me skripte. + Angle Këndi + Animation that flashes can cause seizures. Check scripts and media for flicker. Animacioni që xixëllon mund të shkaktojë kriza. Kontrolloni skriptet dhe median për dridhje. + Annotations, form fill-in, and digital signatures Shënime, plotësim formularësh dhe nënshkrime dixhitale + Another file dialog is still open. Finish with it first. Një dialog tjetër skedari është ende i hapur. Përfundoni fillimisht me të. + Any Çfarëdo + Any except extracting pages Çfarëdo përveç nxjerrjes së faqeve + Anyone opening the document will need this password. It's applied when you save. Kushdo që hap dokumentin do të ketë nevojë për këtë fjalëkalim. Zbatohet kur ruani. + Appear behind page Shfaqet pas faqes + Appear on top of page Shfaqet mbi faqe + Appearance Pamja + Application Aplikacioni + Applied 1 redaction mark. Save to remove the content from the file. U zbatua 1 shenjë redaktimi. Ruani për ta hequr përmbajtjen nga skedari. + Applied {n} redaction marks. Save to remove the content from the file. U zbatuan {n} shenja redaktimi. Ruani për ta hequr përmbajtjen nga skedari. + Applies to 1 page Zbatohet në 1 faqe + Applies to {n} pages Zbatohet në {n} faqe + Apply Zbato + Apply PDF standards Zbato standardet PDF + Apply redactions Zbato redaktimet + Apply redactions… Zbato redaktimet… + Apply scale Zbato shkallën + Appropriate nesting Fole e përshtatshme + April Prill + Arbitrary Mask Maskë arbitrare + Archive documents Arkivo dokumentet + Area Sipërfaqja + Arrow Shigjetë + ArtCraft website Faqja e internetit e ArtCraft + Ask about this document Pyet për këtë dokument + Asks GitHub for the latest release. Nothing is downloaded or installed automatically. I kërkon GitHub-it versionin më të fundit. Asgjë nuk shkarkohet ose instalohet automatikisht. + Associated with content E lidhur me përmbajtjen + At least one signature has problems. Të paktën një nënshkrim ka probleme. + At least one signature is invalid. Të paktën një nënshkrim është i pavlefshëm. + At most Më së shumti + Attach a file Bashkëngjit një skedar + Attach file Bashkëngjit skedar + Attachment Bashkëngjitje + Attachments Bashkëngjitjet + Attachments Panel and Page Paneli i bashkëngjitjeve dhe faqja + Audit space usage Audito përdorimin e hapësirës + Audit space usage… Audito përdorimin e hapësirës… + August Gusht + Author Autori + Auto Automatik + Auto portrait/landscape Portret/peizazh automatik + Auto-rotate pages Rrotullo faqet automatikisht + Auto-size text to fit redaction region Përshtat madhësinë e tekstit automatikisht me zonën e redaktimit + Automatically tag PDF Etiketo PDF automatikisht + Available Në dispozicion + Back Mbrapa + Back side only Vetëm ana e pasme + Back to all tools Kthehu te të gjitha mjetet + Back to the document Kthehu te dokumenti + Background Sfondi + Basic constraints Kufizime bazë + Bates numbering Numërtim Bates + Before each selected page (select pages in Organize) Para çdo faqeje të zgjedhur (zgjidhni faqet te Organizo) + Before the number Para numrit + Beveled Me anë të pjerrëta + Bicubic downsampling to Ulje bikubike e mostrimit në + Binary assets added Burime binare të shtuara + Binary assets removed Burime binare të hequra + Binding Lidhja + Binding: Lidhja: + Black E zezë + Blank page Faqe boshe + Blue Blu + Bold Të trasha + Booklet Broshurë + Booklet subset: Nënbashkësia e broshurës: + Bookmark options Opsionet e libërshënuesit + Bookmarks Libërshënuesit + Bookmarks Panel and Page Paneli i libërshënuesve dhe faqja + Bookmarks are present in large documents Libërshënuesit ekzistojnë në dokumentet e mëdha + Border Color: Ngjyra e kornizës: + Borders and Colors Kornizat dhe ngjyrat + Both Të dyja + Both sides Të dyja anët + Bottom Poshtë + Bottom: Poshtë: + Box Kuti + Bring your own model (off by default) Sill modelin tënd (joaktiv si parazgjedhje) + Browse… Shfleto… + Button Buton + Button Properties Vetitë e butonit + Button Style: Stili i butonit: + Button is checked by default Butoni është i zgjedhur si parazgjedhje + Buttons with the same name and value are selected in unison Butonat me të njëjtin emër dhe vlerë zgjidhen së bashku + Bytes Bajte + Calculate Llogarit + Calibrate from two points Kalibro nga dy pika + Callout Përmendje + Can't be read: {e} Nuk mund të lexohet: {e} + Cancel Anulo + Cancelled Anuluar + Cancelling… Duke anuluar… + Case-sensitive Dallon shkronjat e mëdha + Category: Kategoria: + Center Qendër + Center Footer Text Teksti qendror i fundit të faqes + Center Header Text Teksti qendror i kreut të faqes + Center horizontally Qendro horizontalisht + Center vertically Qendro vertikalisht + Center window on screen Qendro dritaren në ekran + Centre Qendër + Certificate Viewer Shikuesi i certifikatave + Certificates Certifikatat + Certified by {by} Certifikuar nga {by} + Certify Certifiko + Certify (invisible signature) Certifiko (nënshkrim i padukshëm) + Certify (visible signature) Certifiko (nënshkrim i dukshëm) + Change comment properties Ndrysho vetitë e komentit + Change document properties Ndrysho vetitë e dokumentit + Change field properties Ndrysho vetitë e fushës + Change initial view Ndrysho pamjen fillestare + Change initials Ndrysho inicialet + Change link properties Ndrysho vetitë e lidhjes + Change reading options Ndrysho opsionet e leximit + Change reading options… Ndrysho opsionet e leximit… + Change settings… Ndrysho cilësimet… + Change signature Ndrysho nënshkrimin + Change {key} Ndrysho {key} + Change {what} Ndrysho {what} + Changes allowed Ndryshimet e lejuara + Changing the document Ndryshimi i dokumentit + Character encoding Kodimi i karaktereve + Character spacing Hapësira mes karaktereve + Check Kontrollo + Check Again Kontrollo përsëri + Check Box Properties Vetitë e kutisë së zgjedhjes + Check Box Style: Stili i kutisë së zgjedhjes: + Check again Kontrollo përsëri + Check box is checked by default Kutia e zgjedhjes është e zgjedhur si parazgjedhje + Check for accessibility Kontrollo qasshmërinë + Check for accessibility… Kontrollo qasshmërinë… + Check for updates Kontrollo për përditësime + Check for updates… Kontrollo për përditësime… + Check spelling Kontrollo drejtshkrimin + Check that the tags read in the order a sighted reader would. Use the Reading Order tool or the Tags panel to correct it. Kontrolloni që etiketat lexohen në radhën që do t'i lexonte një lexues që sheh. Përdorni mjetin e radhës së leximit ose panelin e etiketave për ta korrigjuar. + Check the pages of {name}: {why} Kontrolloni faqet e {name}: {why} + CheckBox Kuti zgjedhjeje + Checkbox Kuti zgjedhjeje + Checked E zgjedhur + Checking Options ({on} of 32 in all categories) Opsionet e kontrollit ({on} nga 32 në të gjitha kategoritë) + Checking for a newer version… Duke kontrolluar për një version më të ri… + Checkmark Shenjë vlefshmërie + Choose a PNG or JPEG image (up to 4 MiB). Transparency is preserved. Zgjidhni një imazh PNG ose JPEG (deri në 4 MiB). Transparenca ruhet. + Choose a folder for the exported files Zgjidhni një dosje për skedarët e eksportuar + Choose a folder for the extracted pages Zgjidhni një dosje për faqet e nxjerra + Choose a folder for the results Zgjidhni një dosje për rezultatet + Choose a folder for the searchable files Zgjidhni një dosje për skedarët e kërkueshëm + Choose a folder for the split files Zgjidhni një dosje për skedarët e ndarë + Choose a folder on this computer to pin Zgjidhni një dosje në këtë kompjuter për ta fiksuar + Choose a layout: Zgjidhni një paraqitje: + Choose a stamp, then click on the page to place it. Zgjidhni një vulë, pastaj klikoni në faqe për ta vendosur. + Choose an image Zgjidhni një imazh + Choose images Zgjidhni imazhe + Choose the digital ID that you want to use for signing: Zgjidhni identitetin dixhital që dëshironi të përdorni për nënshkrim: + Circle Rreth + Clean Up Pastro + Clear Pastro + Clear All Pastro të gjitha + Clear Recent Files Pastro skedarët e fundit + Clear all Pastro të gjitha + Clear form Pastro formularin + Clear redaction marks Pastro shenjat e redaktimit + Clear selection / close find Pastro përzgjedhjen / mbyll kërkimin + Click on the page to add a {tool}, or drag to set its size Klikoni në faqe për të shtuar {tool}, ose tërhiqni për të caktuar madhësinë + Click on the page to add text; each click starts a new box, and ✓ finishes. Drag items to move them, drag a corner to resize, double-click text to edit it. Klikoni në faqe për të shtuar tekst; çdo klikim nis një kuti të re dhe ✓ përfundon. Tërhiqni elementet për t'i lëvizur, tërhiqni një qoshe për të ndryshuar madhësinë, klikoni dyfish te teksti për ta redaktuar. + Click text or an image to edit it Klikoni një tekst ose një imazh për ta redaktuar + Click the first point to begin. Klikoni pikën e parë për të filluar. + Click to sort, drag to move the column. Drag its edge to resize it. Klikoni për të renditur, tërhiqni për të lëvizur kolonën. Tërhiqni skajin e saj për të ndryshuar madhësinë. + Click vertices. Enter or double-click finishes a perimeter or area. Click the first point to close an area. Klikoni kulmet. Enter ose klikimi dyfish përfundon një perimetër ose sipërfaqe. Klikoni pikën e parë për të mbyllur një sipërfaqe. + Clipboard Clipboard + Clockwise 90 degrees 90 gradë në drejtim orar + Close Mbyll + Close (Esc) Mbyll (Esc) + Close all Mbyll të gjitha + Close file Mbyll skedarin + Close panel Mbyll panelin + Cloud Re + Collapse Palos + Collapse all bookmarks Palos të gjithë libërshënuesit + Collate Rendit kopjet + Color Images Imazhe me ngjyra + Color Spaces Hapësirat e ngjyrave + Color contrast Kontrasti i ngjyrave + Color: Ngjyra: + Colour Ngjyra + Comb of Krehër me + Combine Bashko + Combine files Bashko skedarët + Combine files… Bashko skedarët… + Combined {n} files U bashkuan {n} skedarë + Combo Kombinim + Coming in milestone Vjen në etapën + Coming in milestone {m}. Items marked Ready work today. Vjen në etapën {m}. Elementët e shënuar Gati funksionojnë sot. + Command Komandë + Comment and form data Të dhënat e komenteve dhe formularëve + Comment list Lista e komenteve + Commenting Komentim + Commenting, filling in form fields, and signing existing signature fields Komentim, plotësim i fushave të formularit dhe nënshkrim i fushave ekzistuese të nënshkrimit + Comments Komente + Comments & Forms Komente dhe formularë + Comments and markups Komente dhe shënime + Comments only Vetëm komente + Comments panel Paneli i komenteve + Comments, links and fields must be in the tag tree to be announced. Tag the annotations. Komentet, lidhjet dhe fushat duhet të jenë në pemën e etiketave për t'u lexuar me zë. Etiketo shënimet. + Commit selected value immediately Konfirmo menjëherë vlerën e zgjedhur + Commits Ndryshimet + Common Properties Veti të përbashkëta + Company Kompania + Compare Krahaso + Compare Files Krahaso skedarët + Compare files Krahaso skedarët + Compare files… Krahaso skedarët… + Compare this file with an older version: Compare files… in All tools. Krahaso këtë skedar me një version më të vjetër: Krahaso skedarët… te Të gjitha mjetet. + Compatibility Përputhshmëria + Completed Përfunduar + Compress a PDF Ngjeshe një PDF + Compress document structure (object streams) Ngjeshe strukturën e dokumentit (rrjedhat e objekteve) + Compression Ngjeshja + Configure New Digital ID Konfiguro ID të re dixhitale + Configure a Digital ID for Signing Konfiguro një ID dixhitale për nënshkrim + Confirm Password Konfirmo fjalëkalimin + Conformance level: Niveli i përputhshmërisë: + Connected lines Vija të lidhura + Console Konsola + Content Streams Rrjedhat e përmbajtjes + Content copying Kopjimi i përmbajtjes + Content copying for accessibility Kopjimi i përmbajtjes për qasshmëri + Continue Vazhdo + Continuous scrolling Lëvizje e vazhdueshme + Contributors Kontribuesit + Convert Konverto + Convert colors Konverto ngjyrat + Copied {what} U kopjua {what} + Copies: Kopje: + Copy Kopjo + Copy or cut pages first Kopjo ose preji faqet së pari + Copy pages Kopjo faqet + Copy selected text Kopjo tekstin e zgjedhur + Copy text Kopjo tekstin + Correct recognized text Korrigjo tekstin e njohur + Could not save: {e} Nuk u ruajt: {e} + Couldn't add {name}: {e} Nuk u shtua {name}: {e} + Couldn't check for updates: {e} Nuk u kontrollua për përditësime: {e} + Couldn't combine files: {e} Nuk u bashkuan skedarët: {e} + Couldn't create a PDF: {e} Nuk u krijua dot një PDF: {e} + Couldn't download {name}: {e} Nuk u shkarkua {name}: {e} + Couldn't extract pages: {e} Nuk u nxorën faqet: {e} + Couldn't fit the visible content: {e} Nuk u përshtat përmbajtja e dukshme: {e} + Couldn't import the signature image: {e} Nuk u importua dot imazhi i nënshkrimit: {e} + Couldn't open revision {n}: {e} Nuk u hap rishikimi {n}: {e} + Couldn't open the result: {e} Nuk u hap dot rezultati: {e} + Couldn't open the signed version: {e} Nuk u hap dot versioni i nënshkruar: {e} + Couldn't open {name}: {e} Nuk u hap {name}: {e} + Couldn't optimize the file Nuk u optimizua dot skedari + Couldn't optimize the file: {e} Nuk u optimizua dot skedari: {e} + Couldn't read {name}: {e} Nuk u lexua {name}: {e} + Couldn't recover {name}: {e} Nuk u rikuperua {name}: {e} + Couldn't save the image: {e} Nuk u ruajt dot imazhi: {e} + Couldn't save {name}: {e} Nuk u ruajt {name}: {e} + Couldn't save: {e} Nuk u ruajt: {e} + Couldn't show the file picker. Please try again. Nuk u shfaq dot zgjedhësi i skedarëve. Provo përsëri. + Couldn't split: {e} Nuk u nda dot: {e} + Couldn't summarize comments: {e} Nuk u përmblodhën dot komentet: {e} + Couldn't take the snapshot: {e} Nuk u bë dot pamja e çastit: {e} + Couldn't use {name}: {e} Nuk u përdor dot {name}: {e} + Couldn't write {name}: {e} Nuk u shkrua {name}: {e} + Couldn't write {path}: {e} Nuk u shkrua {path}: {e} + Counterclockwise 90 degrees 90 gradë në të kundërt të akrepave të orës + Country/Region Shteti/Rajoni + Create Krijo + Create Custom Stamp Krijo vulë të personalizuar + Create Link Krijo lidhje + Create PDF Comment Summary Krijo përmbledhje komentesh të PDF + Create PDF comment summary… Krijo përmbledhje komentesh të PDF… + Create PDF from clipboard Krijo PDF nga clipboard + Create PDF from file… Krijo PDF nga skedari… + Create PDF from images Krijo PDF nga imazhet + Create PDF from images… Krijo PDF nga imazhet… + Create PDF from multiple files… Krijo PDF nga disa skedarë… + Create separate PDFs… Krijo PDF të veçanta… + Create a PDF Krijo një PDF + Create a new Digital ID (self-signed, saved to a password-protected file) Krijo një ID të re dixhitale (e vetënënshkruar, e ruajtur në një skedar të mbrojtur me fjalëkalim) + Create accessibility report Krijo raport qasshmërie + Create custom stamp… Krijo vulë të personalizuar… + Create from Krijo nga + Create link Krijo lidhje + Create links from URLs Krijo lidhje nga URL-të + Create {what} Krijo {what} + Created 1 link U krijua 1 lidhje + Created a PDF from the first {n} files U krijua një PDF nga {n} skedarët e parë + Created a PDF from {n} files U krijua një PDF nga {n} skedarë + Created a PDF from {n} files; left out: {names} U krijua një PDF nga {n} skedarë; të lënë jashtë: {names} + Created a comment summary U krijua një përmbledhje komentesh + Created {n} links U krijuan {n} lidhje + Creates 1 file from {n} pages. Krijon 1 skedar nga {n} faqe. + Creates {f} files from {n} pages. Krijon {f} skedarë nga {n} faqe. + Credit Cards Kartat e kreditit + Crop (% trimmed from each side) Prit (% e prerë nga secila anë) + Crop page Prit faqen + Crop pages Prit faqet + Cross Kryq + Currency symbol: Simboli i monedhës: + Current page Faqja aktuale + Current page ({n}) Faqja aktuale ({n}) + Current page — type a page number or label (such as iv) and press Enter Faqja aktuale — shkruaj një numër ose etiketë faqeje (p.sh. iv) dhe shtyp Enter + Custom E personalizuar + Custom scale: Shkallë e personalizuar: + Custom stamps arrive on the web with file pickers for images Vulat e personalizuara vijnë në uebin me zgjedhës skedarësh për imazhe + Custom text: Tekst i personalizuar: + Custom: E personalizuar: + Cut Preji + Cut and stack Preji dhe grumbulloji + Cut marks Shenja prerjeje + Cut pages Preji faqet + Cut {what} Preji {what} + DPI sets the printed page size without resampling the image. DPI cakton madhësinë e faqes së printuar pa e rimostruar imazhin. + Dark gray Gri e errët + Dark gray theme Tema gri e errët + Dashed Me vija të ndërprera + Date Data + Date field Fusha e datës + Dates Datat + December Dhjetor + Decimal places: Shifra dhjetore: + Decimals Dhjetore + Declared conformance: {shown} Përputhshmëria e deklaruar: {shown} + Decorative figure Figurë dekorative + Default Parazgjedhja + Default Value: Vlera e parazgjedhur: + Default page display Shfaqja e parazgjedhur e faqes + Default workspace mode Mënyra e parazgjedhur e hapësirës së punës + Default zoom Zmadhimi i parazgjedhur + Default: Parazgjedhja: + Delete Fshi + Delete bookmark Fshi libërshënuesin + Delete comment Fshi komentin + Delete content Fshi përmbajtjen + Delete document JavaScript Fshi JavaScript-in e dokumentit + Delete field Fshi fushën + Delete image Fshi imazhin + Delete link Fshi lidhjen + Delete page Fshi faqen + Delete pages Fshi faqet + Delete pages (Delete) Fshi faqet (Delete) + Delete pages after extracting Fshi faqet pas nxjerrjes + Delete selected fields Fshi fushat e zgjedhura + Delete selected pages (Organize) Fshi faqet e zgjedhura (Organizo) + Delete stamp Fshi vulën + Delete {o} Fshi {o} + Deleted U fshi + Describe the figure Përshkruaj figurën + Description Përshkrimi + Description: Përshkrimi: + Details Detajet + Detect form fields Zbulo fushat e formularit + Detected 1 form field U zbulua 1 fushë formulari + Detected {n} form fields U zbuluan {n} fusha formulari + Device colour is used, but there is no PDF/A output intent Përdoret ngjyra e pajisjes, por nuk ka synim dalje (output intent) PDF/A + DeviceCMYK is used: it needs a CMYK output intent (not added automatically) Përdoret DeviceCMYK: kërkon një synim dalje CMYK (nuk shtohet automatikisht) + Diagnostic details Detaje diagnostikimi + Diamond Romb + Digital ID ID dixhitale + Digital ID password Fjalëkalimi i ID-së dixhitale + Digital Signature Properties Vetitë e nënshkrimit dixhital + Digital signature Nënshkrim dixhital + Digitally sign Nënshkruaj dixhitalisht + Direction: Drejtimi: + Discard Hidhe tej + Discard Objects Hidh tej objektet + Discard User Data Hidh tej të dhënat e përdoruesit + Discard all comments, forms and multimedia Hidh tej të gjitha komentet, formularët dhe multimedian + Discard all links, actions and JavaScript Hidh tej të gjitha lidhjet, veprimet dhe JavaScript-in + Discard all object data (file attachments) Hidh tej të gjitha të dhënat e objekteve (bashkëngjitjet e skedarëve) + Discard alternate images Hidh tej imazhet alternative + Discard bookmarks Hidh tej libërshënuesit + Discard document information and metadata Hidh tej informacionin e dokumentit dhe metadatat + Discard document tags Hidh tej etiketat e dokumentit + Discard embedded page thumbnails Hidh tej miniaturat e faqeve të ngulitura + Discard embedded print settings Hidh tej cilësimet e printimit të ngulitura + Discard hidden layer content Hidh tej përmbajtjen e shtresave të fshehura + Discard hidden text Hidh tej tekstin e fshehur + Discard private data of other applications Hidh tej të dhënat private të aplikacioneve të tjera + Dismiss Mbylle + Display name Emri i shfaqur + Display theme Tema e shfaqjes + Distance Distanca + Distinguished name Emri dallues + Distribute Shpërndaj + Distribute fields Shpërndaj fushat + Document Dokumenti + Document JavaScripts JavaScript-et e dokumentit + Document JavaScripts… JavaScript-et e dokumentit… + Document Overhead Ngarkesa e dokumentit + Document Properties Vetitë e dokumentit + Document Title Titulli i dokumentit + Document actions Veprimet e dokumentit + Document and markups Dokumenti dhe shënimet + Document and stamps Dokumenti dhe vulat + Document assembly Montimi i dokumentit + Document has appropriate color contrast Dokumenti ka kontrast të përshtatshëm ngjyrash + Document is not image-only PDF Dokumenti nuk është PDF vetëm me imazhe + Document is tagged PDF Dokumenti është PDF i etiketuar + Document language Gjuha e dokumentit + Document properties (⌘D) Vetitë e dokumentit (⌘D) + Document properties… Vetitë e dokumentit… + Document sanitized. Save to finish: saving rewrites the whole file. Dokumenti u pastrua. Ruaje për ta përfunduar: ruajtja e rishkruan gjithë skedarin. + Document structure provides a logical reading order Struktura e dokumentit jep një rend logjik leximi + Document title is showing in title bar Titulli i dokumentit shfaqet në shiritin e titullit + Documents and view Dokumentet dhe pamja + Documents of more than 20 pages need bookmarks for navigation. Add bookmarks for the main sections. Dokumentet me më shumë se 20 faqe kanë nevojë për libërshënues për lundrim. Shto libërshënues për seksionet kryesore. + Don't save Mos e ruaj + Done U krye + Dot Pikë + Double-click Klikim i dyfishtë + Download Shkarko + Downloaded {name} U shkarkua {name} + Downloading attachments on the web arrives with M3.10 ({n} bytes ready) Shkarkimi i bashkëngjitjeve në ueb vjen me M3.10 ({n} bajte gati) + Downsample to Zvogëlo rezolucionin në + Also recognize pages that already have text Njih edhe faqet që kanë tashmë tekst + Pictures on those pages are recognized too; words already in the page's text are not added again Edhe figurat në ato faqe njihen; fjalët që ekzistojnë tashmë në tekstin e faqes nuk shtohen përsëri + Drag a rectangle around the area to copy Tërhiq një drejtkëndësh rreth zonës që do të kopjohet + Drag a rectangle on a page to crop it; double-click a page for Set Page Boxes Tërhiq një drejtkëndësh mbi një faqe për ta prerë; kliko dyfish një faqe për Cakto kutitë e faqes + Drag a rectangle to create a link; double-click a link to edit it Tërhiq një drejtkëndësh për të krijuar një lidhje; kliko dyfish një lidhje për ta ndryshuar + Drag to draw the area where the signature should appear. Tërhiq për të vizatuar zonën ku duhet të shfaqet nënshkrimi. + Drag to reorder Tërhiq për ta renditur + Draw Vizato + Draw a cloud Vizato një re + Draw a line Vizato një vijë + Draw a polygon Vizato një shumëkëndësh + Draw a rectangle Vizato një drejtkëndësh + Draw an arrow Vizato një shigjetë + Draw an oval Vizato një oval + Draw connected lines Vizato vija të lidhura + Draw freehand Vizato lirisht + Draw your {what} below. Vizato {what} më poshtë. + Drawing Vizatim + Drawing scale Shkalla e vizatimit + Drop PDFs or folders here, or choose them. Hidh PDF ose dosje këtu, ose zgjidh ato. + Drop-down list Listë rënëse + Dropdown Properties Vetitë e listës rënëse + Duplicate "{name}" onto: Dyfisho "{name}" në: + Duplicate Field Dyfisho fushën + Duplicate field Dyfisho fushën + Duplicate page Dyfisho faqen + Duplicate pages Dyfisho faqet + Duplicate… Dyfisho… + Dynamic Dinamike + Dynamic XFA form laid out from its template: {pages}, {fields}. Formular dinamik XFA i ndërtuar nga shablloni i tij: {pages}, {fields}. + This form's scripts are turned off because one ran too long. Reopen the document to run them again. Skriptet e këtij formulari janë çaktivizuar sepse njëri u ekzekutua shumë gjatë. Rihape dokumentin për t'i ekzekutuar përsëri. + E-Sign Nënshkrim elektronik + Each field needs a tooltip that says what to enter. Add one in Field Properties > General > Tooltip. Çdo fushë ka nevojë për një këshillë që tregon çfarë të shkruhet. Shtoje te Vetitë e fushës > Të përgjithshme > Këshilla. + Each file holds as many of the {n} pages as fit. Çdo skedar mban aq nga {n} faqet sa përshtaten. + Each image is measured where pages draw it; an image is replaced only if the result is smaller. Çdo imazh matet aty ku e vizatojnë faqet; një imazh zëvendësohet vetëm nëse rezultati është më i vogël. + Each image once, named after the document and page. JPEG images are saved unchanged; others as PNG. Çdo imazh një herë, me emrin e dokumentit dhe të faqes. Imazhet JPEG ruhen të pandryshuara; të tjerat si PNG. + Earlier in tab order Më herët në rendin e tabit + Edit Action Ndrysho veprimin + Edit a PDF Redakto një PDF + Edit comment Ndrysho komentin + Edit content Ndrysho përmbajtjen + Edit document JavaScript Ndrysho JavaScript-in e dokumentit + Edit fields Ndrysho fushat + Edit image Ndrysho imazhin + Edit script of {name} Ndrysho skriptin e {name} + Edit text Ndrysho tekstin + Load document font Ngarko shkronjën e dokumentit + Edit text & images Ndrysho tekstin dhe imazhet + Edit text… Ndrysho tekstin… + Editing Redaktim + Edit… Ndrysho… + Email Address Adresa e email-it + Email Addresses Adresat e email-it + Embedded Files Skedarët e ngulitur + Embedded files must be PDF/A files themselves (use PDF/A-3 for others) Skedarët e ngulitur duhet të jenë vetë skedarë PDF/A (përdor PDF/A-3 për të tjerët) + Enable Acrobat JavaScript Aktivizo Acrobat JavaScript + Enable copying of text, images, and other content Lejo kopjimin e tekstit, imazheve dhe përmbajtjes tjetër + Enable text access for screen reader devices for the visually impaired Lejo qasjen në tekst për lexuesit e ekranit për personat me shikim të dobët + Encrypt Enkripto + Encrypt with certificate Enkripto me certifikatë + Encryption Enkriptimi + Endpoint Pika fundore + Endpoints Pikat fundore + Enhance scanned file Përmirëso skedarin e skanuar + Enter the password that opens it Shkruaj fjalëkalimin që e hap + Enter the permissions password to allow combining Shkruaj fjalëkalimin e lejeve për të lejuar bashkimin + Entire page Gjithë faqja + Erase Fshi + Erase drawings Fshi vizatimet + Eraser Gomë + Even Pages Only Vetëm faqet çifte + Even and Odd Pages Faqet çifte dhe tek + Even pages Faqet çifte + Even pages only Vetëm faqet çifte + Every PDF in the folder Çdo PDF në dosje + Every PDF in the folder and the folders inside it Çdo PDF në dosje dhe në nëndosjet e saj + Everything on a page must be tagged or marked as an artifact (decoration, headers, footers). Tag the untagged content. Gjithçka në një faqe duhet të jetë e etiketuar ose e shënuar si artefakt (dekor, kokë, fund faqeje). Etiketo përmbajtjen e paetiketuar. + Example: {sample} Shembull: {sample} + Exclude images smaller than Përjashto imazhet më të vogla se + Execute a menu item Ekzekuto një element menuje + Expand Zgjero + Expand all bookmarks Zgjero të gjithë libërshënuesit + Expand top-level bookmarks Zgjero libërshënuesit e nivelit të parë + Explain Shpjego + Export Eksporto + Export All Images Eksporto të gjitha imazhet + Export Value: {on} Vlera e eksportit: {on} + Export a PDF Eksporto një PDF + Export all comments to data file… Eksporto të gjitha komentet në skedar të dhënash… + Export all images Eksporto të gjitha imazhet + Export all images… Eksporto të gjitha imazhet… + Export all to data file… Eksporto gjithçka në skedar të dhënash… + Export certificate Eksporto certifikatën + Export certificate… Eksporto certifikatën… + Export comments Eksporto komentet + Export data Eksporto të dhënat + Export form data Eksporto të dhënat e formularit + Export form data… Eksporto të dhënat e formularit… + Export measurements Eksporto matjet + Export measurements as CSV Eksporto matjet si CSV + Export stopped: {e} Eksporti u ndal: {e} + Export to Eksporto në + Export to HTML… Eksporto në HTML… + Export to Image Eksporto si imazh + Export to RTF… Eksporto në RTF… + Export to Text Eksporto si tekst + Export to Word… Eksporto në Word… + Export to PowerPoint… Eksporto në PowerPoint… + Export to image… Eksporto si imazh… + Export to text… Eksporto si tekst… + Exported 1 image U eksportua 1 imazh + Exported the text of 1 page U eksportua teksti i 1 faqeje + Exported the text of {n} pages U eksportua teksti i {n} faqeve + Exported to {path} U eksportua te {path} + Exported {n} images U eksportuan {n} imazhe + Exporting… {d} of {t} Po eksportohet… {d} nga {t} + Export… Eksporto… + Extended Graphics States Gjendjet grafike të zgjeruara + Extract Nxirr + Extract pages Nxirr faqet + Extract pages as separate files Nxirr faqet si skedarë të veçantë + Extract pages to a new document Nxirr faqet në një dokument të ri + Extract pages… Nxirr faqet… + Extracted 1 page U nxor 1 faqe + Extracted {n} pages U nxorën {n} faqe + Failed Dështoi + February Shkurt + Field Fusha + Field descriptions Përshkrimet e fushave + Field is used for file selection Fusha përdoret për zgjedhjen e skedarit + Field list Lista e fushave + Field names (comma-separated) Emrat e fushave (të ndarë me presje) + Field names with + - * / and parentheses; put \\ before spaces in names. Emrat e fushave me + - * / dhe kllapa; vendos \\ para hapësirave në emra. + Field properties Vetitë e fushës + Field properties… Vetitë e fushës… + Field value is in range: Vlera e fushës është brenda intervalit: + Field value is not validated Vlera e fushës nuk vlerësohet + Field: {field} on page {p} Fusha: {field} në faqen {p} + Fields Fushat + Fields to reset (comma-separated; empty: all) Fushat që do të rivendosen (të ndara me presje; bosh: të gjitha) + Figure {i} of {n}{page} Figura {i} nga {n}{page} + Figures alternate text Teksti alternativ i figurave + Figures require alternate text Figurat kërkojnë tekst alternativ + File (.p12, .pfx) Skedar (.p12, .pfx) + File Name Emri i skedarit + File attachments Bashkëngjitjet e skedarëve + File name Emri i skedarit + File size Madhësia e skedarit + Files are combined from top to bottom. Leave Pages empty to take every page. Skedarët bashkohen nga lart poshtë. Lëre Faqet bosh për të marrë çdo faqe. + Files are combined in this order. Leave Pages empty to take every page. Skedarët bashkohen sipas këtij rendi. Lëre Faqet bosh për të marrë çdo faqe. + Files for {name} Skedarët për {name} + Files you open in PdfCraft appear here. Drop a PDF anywhere to open it. Skedarët që hap në PdfCraft shfaqen këtu. Hidh një PDF kudo për ta hapur. + Fill Plotëso + Fill & Sign Plotëso dhe nënshkruaj + Fill & Sign: add text Plotëso dhe nënshkruaj: shto tekst + Fill & Sign: change initials Plotëso dhe nënshkruaj: ndrysho inicialet + Fill & Sign: change signature Plotëso dhe nënshkruaj: ndrysho nënshkrimin + Fill & Sign: checkmark Plotëso dhe nënshkruaj: shenjë vlefshmërie + Fill & Sign: cross Plotëso dhe nënshkruaj: kryq + Fill & Sign: date Plotëso dhe nënshkruaj: data + Fill & Sign: dot Plotëso dhe nënshkruaj: pikë + Fill & Sign: initials Plotëso dhe nënshkruaj: inicialet + Fill & Sign: line Plotëso dhe nënshkruaj: vijë + Fill & Sign: remove saved initials Plotëso dhe nënshkruaj: hiq inicialet e ruajtura + Fill & Sign: remove saved signature Plotëso dhe nënshkruaj: hiq nënshkrimin e ruajtur + Fill & Sign: sign Plotëso dhe nënshkruaj: nënshkruaj + Fill Color: Ngjyra e mbushjes: + Fill in {name} Plotëso {name} + Filling in form fields and signing existing signature fields Plotësimi i fushave të formularit dhe nënshkrimi i fushave ekzistuese të nënshkrimit + Filling of form fields Plotësimi i fushave të formularit + Filter comments Filtro komentet + Find options Opsionet e kërkimit + Find text Gjej tekst + Find text and redact Gjej tekst dhe redakto + Find text and redact… Gjej tekst dhe redakto… + Find tools and commands Gjej mjete dhe komanda + Find tools and commands… Gjej mjete dhe komanda… + Find… Gjej… + First I pari + First / last page Faqja e parë / e fundit + First commit Commit-i i parë + Fit Përshtat + Fit Height Përshtat lartësinë + Fit Page Përshtat faqen + Fit Visible Përshtat pjesën e dukshme + Fit Width Përshtat gjerësinë + Fit one full page Përshtat një faqe të plotë + Fit to height Përshtat sipas lartësisë + Fit to page Përshtat sipas faqes + Fit to width Përshtat sipas gjerësisë + Fit to width scrolling Përshtat sipas gjerësisë me rrëshqitje + Fit visible Përshtat pjesën e dukshme + Fix Ndrysho + Fix hairlines Ndrysho vijat e holla + Fix reading order Ndrysho renditjen e leximit + Fixed what could be fixed; 1 problem remains U ndreqën ato që mund të ndreqeshin; mbetet 1 problem + Fixed what could be fixed; {n} problems remain U ndreqën ato që mund të ndreqeshin; mbeten {n} probleme + Flatten Rrafshoje + Flatten comments Rrafshoji komentet + Flatten form fields Rrafshoji fushat e formularit + Flip Horizontal Përmbys horizontalisht + Flip Vertical Përmbys vertikalisht + Flip horizontal Përmbys horizontalisht + Flip image Përmbys imazhin + Flip on long edge Përmbys sipas anës së gjatë + Flip on short edge Përmbys sipas anës së shkurtër + Flip vertical Përmbys vertikalisht + Folders Dosjet + Font Size: Madhësia e shkronjave: + Font colour: Ngjyra e shkronjave: + Font size: Madhësia e shkronjave: + Font: Shkronja: + Font: Helvetica Shkronja: Helvetica + Fonts Shkronjat + Fonts must map their characters to Unicode so text can be read and copied. Fix the fonts or recreate the PDF. Shkronjat duhet t'i lidhin karakteret me Unicode që teksti të mund të lexohet dhe kopjohet. Ndreqi shkronjat ose krijo PDF-në nga e para. + Form data and PDF forms Të dhënat e formularit dhe formularët PDF + Form fields Fushat e formularit + Form fields are flattened: their values stay visible. Saving rewrites the whole file. Fushat e formularit janë rrafshuar: vlerat e tyre mbeten të dukshme. Ruajtja rishkruan të gjithë skedarin. + Form fields must be in the tag tree (Form tags) to be announced. Tag the form fields. Fushat e formularit duhet të jenë në pemën e etiketave (etiketat Form) që të lexohen me zë. Etiketo fushat e formularit. + Form fields only Vetëm fushat e formularit + Form fields panel Paneli i fushave të formularit + Form fill-in and digital signatures Plotësimi i formularëve dhe nënshkrimet dixhitale + Format Formati + Finding document fonts… Po gjenden shkronjat e dokumentit… + Installed fonts… Shkronjat e instaluara… + Keep source fonts Mbaj shkronjat burimore + Load font… Ngarko shkronja… + No openly licensed document fonts found. Load a font file. Nuk u gjetën shkronja dokumenti me licencë të hapur. Ngarko një skedar shkronjash. + Format text Formato tekstin + Format: Formati: + Forms Formularët + Formulas and similar non-text elements need alternate text. Add alternate text to them. Formulat dhe elementët e ngjashëm jo tekst kanë nevojë për tekst alternativ. Shtoju tekst alternativ. + From Nga + From a PDF page or an image Nga një faqe PDF ose një imazh + From colour Nga ngjyra + From {file} Nga {file} + From: Nga: + Front side only Vetëm ana e përparme + Full screen mode Modaliteti me ekran të plotë + General Të përgjithshme + Geospatial location Vendndodhja gjeohapësinore + Get help, share feedback and follow development on Discord. Merr ndihmë, ndaj komente dhe ndiq zhvillimin në Discord. + Go to a page view Shko te një pamje faqeje + Go to page {p} Shko te faqja {p} + Go to page… Shko te faqja… + Go to the page Shko te faqja + Go to this result Shko te ky rezultat + Grab bag Të ndryshme + Gray Gri + Grayscale Images Imazhe në nuanca gri + Green Jeshile + H / Space (hold) H / Hapësira (mbaje shtypur) + HTML web page Faqe interneti HTML + Hand (H) Dora (H) + Has JavaScript actions (run in M6) Ka veprime JavaScript (ekzekutohen në M6) + Header and footer Koka dhe këmba e faqes + Header cells (TH) tell listeners what each column or row holds. Mark the header cells. Qelizat e kokës (TH) u tregojnë dëgjuesve çfarë përmban çdo kolonë ose rresht. Shëno qelizat e kokës. + Headers Kokat + Heading levels shouldn't skip (an H1 followed by an H3). Retag the headings. Nivelet e titujve nuk duhet të anashkalohen (një H1 i ndjekur nga një H3). Rietiketo titujt. + Headings Titujt + Height Lartësia + Height: Lartësia: + Hidden layers Shtresat e fshehura + Hidden text Teksti i fshehur + Hide a field Fshih një fushë + Hide all comments Fshih të gjitha komentet + Hide field highlights Fshih theksimet e fushave + Hide layer Fshih shtresën + Hide menu bar Fshih shiritin e menysë + Hide password Fshih fjalëkalimin + Hide toolbars Fshih shiritat e mjeteve + Hide window controls Fshih kontrollet e dritares + Hides annotation Fsheh shënimin + High E lartë + High Resolution Rezolucion i lartë + High resolution Rezolucion i lartë + Highlight Thekso + Highlight Style: Stili i theksimit: + Highlight fields Thekso fushat + Highlight text Thekso tekstin + Home Kreu + Home / End Home / End + Horizontal Horizontal + Horizontal reversed Horizontal i kundërt + Horizontal scale Shkalla horizontale + Horizontally Horizontalisht + Icon Ikona + Identity Identiteti + Image Imazh + Image (PNG) Imazh (PNG) + Image field Fushë imazhi + Image-only PDF PDF vetëm me imazhe + Images Imazhet + Images and text Imazhet dhe teksti + Images and text (converted to PDF) Imazhet dhe teksti (të konvertuara në PDF) + Import comments… Importo komente… + Import data Importo të dhëna + Import form data… Importo të dhënat e formularit… + Import {name} Importo {name} + Importing data arrives on the web with file pickers for data files Importimi i të dhënave në ueb vjen me zgjedhës skedarësh për skedarët e të dhënave + In multiple files Në disa skedarë + In this file Në këtë skedar + Includes unsaved changes Përfshin ndryshime të paruajtura + Incorrect password. Try again. Fjalëkalim i pasaktë. Provo përsëri. + Indent Zhvendos djathtas + Index Indeksi + Initial View Pamja fillestare + Initials Inicialet + Insert Fut + Insert Date Fut datën + Insert Page Number Fut numrin e faqes + Insert a blank page after the selection Fut një faqe bosh pas përzgjedhjes + Insert a file at the end Fut një skedar në fund + Insert a file before page {label} Fut një skedar para faqes {label} + Insert blank page Fut faqe bosh + Insert pages Fut faqe + Insert pages from a file… Fut faqe nga një skedar… + Insert pages from file… Fut faqe nga skedari… + Insert pages from {name} Fut faqe nga {name} + Insert pages from {name} — 1 field renamed Fut faqe nga {name} — 1 fushë u riemërua + Insert pages from {name} — fields renamed Fut faqe nga {name} — fushat u riemëruan + Insert text Fut tekst + Inserted Futur + Inserted text Teksti i futur + Inserting, deleting, and rotating pages Futja, fshirja dhe rrotullimi i faqeve + Inset Brendashkruaj + Intended usage Përdorimi i synuar + Intersection Prerja + Intersections Prerjet + Invert Përmbys ngjyrat + Invisible Rectangle Drejtkëndësh i padukshëm + Irregular tables confuse cell navigation. Give every row the same number of cells (counting spans). Tabelat e parregullta ngatërrojnë lëvizjen nëpër qeliza. Jepi çdo rreshti të njëjtin numër qelizash (duke numëruar edhe bashkimet). + Issued by Lëshuar nga + Issued by: Lëshuar nga: + Issued to Lëshuar për + Issuer Lëshuesi + Italic Zhdrejtë + Item List Lista e artikujve + Item: Artikulli: + Items marked Ready work today. Artikujt e shënuar Gati funksionojnë sot. + Its security settings don't allow copying pages Cilësimet e tij të sigurisë nuk lejojnë kopjimin e faqeve + January Janar + JavaScript JavaScript + JavaScript Console Konsola JavaScript + JavaScript console… Konsola JavaScript… + JavaScript is turned off (Preferences ▸ JavaScript). JavaScript është çaktivizuar (Preferencat > JavaScript). + JavaScript, e.g. getField("total").value JavaScript, p.sh. getField("total").value + Join our Discord Bashkohu me Discord-in tonë + Join the ArtCraft Discord Bashkohu me Discord-in e ArtCraft + Join the ArtCraft community Bashkohu me komunitetin e ArtCraft + July Korrik + June Qershor + Justify Drejto në të dyja anët + Keep tool selected Mbaje mjetin të zgjedhur + Keep tool selected: on Mbaje mjetin të zgjedhur: aktiv + Key Algorithm Algoritmi i çelësit + Key usage Përdorimi i çelësit + Keyboard shortcuts Shkurtoret e tastierës + Keychain · Zinxhiri i çelësave · + Keywords Fjalët kyçe + LI must be a child of L LI duhet të jetë fëmijë i L + Label Etiketa + Labels Etiketat + Labels: {preview}. Later pages keep their labels. Etiketat: {preview}. Faqet e mëvonshme i mbajnë etiketat e tyre. + Landscape Peizazh + Landscape Pages Faqe në peizazh + Landscape and Portrait Pages Faqe në peizazh dhe portret + Landscape pages Faqet në peizazh + Language Gjuha + Last E fundit + Last commit Commit-i i fundit + Later Më vonë + Later in tab order Më vonë në rendin e tabit + Layers Shtresat + Layers Panel and Page Paneli i shtresave dhe faqja + Layout and Magnification Faqosja dhe zmadhimi + Lbl and LBody Lbl dhe LBody + Lbl and LBody must be children of LI Lbl dhe LBody duhet të jenë fëmijë të LI + Left Majtas + Left Edge Skaji i majtë + Left Footer Text Teksti i këmbës majtas + Left Header Text Teksti i kokës majtas + Left: Majtas: + Light blue Blu e çelët + Light gray Gri e çelët + Light theme Tema e çelët + Limit of Kufiri i + Line Vijë + Line Style: Stili i vijës: + Line Thickness: Trashësia e vijës: + Line delta Ndryshimi i rreshtave + Line spacing Hapësira ndërmjet rreshtave + Line thickness Trashësia e vijës + Lines +/− Rreshta +/− + Lines added Rreshta të shtuar + Lines deleted Rreshta të fshirë + Link Lidhje + Link Action Veprimi i lidhjes + Link Appearance Pamja e lidhjes + Link Properties Vetitë e lidhjes + Link Type: Lloji i lidhjes: + Links, actions and JavaScripts Lidhjet, veprimet dhe JavaScript-et + List Listë + List Box Properties Vetitë e kutisë së listës + List box Kuti liste + List items Artikujt e listës + List items belong in a list. Fix the list's tags. Artikujt e listës i përkasin një liste. Ndreqi etiketat e listës. + List labels and bodies belong in a list item. Fix the list's tags. Etiketat dhe trupat e listës i përkasin një artikulli liste. Ndreqi etiketat e listës. + Lists Listat + Location Vendndodhja + Lock comment Blloko komentin + Locked E bllokuar + Logical Reading Order Renditja logjike e leximit + Looking for PDFs… Po kërkohen PDF… + Low E ulët + Low Resolution (150 dpi) Rezolucion i ulët (150 dpi) + Low resolution Rezolucion i ulët + Magnification Zmadhimi + Make Current Properties Default Bëje vetitë aktuale parazgjedhje + Make accessible Bëje të aksesueshëm + Make scans searchable, then make them smaller. Bëji skanimet të kërkueshme, pastaj zvogëloji. + Manage embedded index Menaxho indeksin e ngulitur + March Mars + Margins (in) Margjinat (in) + Mark Page Range Shëno intervalin e faqeve + Mark all Shëno të gjitha + Mark as Confidential Shëno si konfidenciale + Mark as comments Shëno si komente + Mark differences Shëno dallimet + Mark figure as decorative Shëno figurën si dekorative + Mark for redaction Shëno për redaktim + Mark pages for redaction Shëno faqet për redaktim + Mark with checkmark Shëno me shenjë vizë + Marked I shënuar + Markup Shënime + Marquee zoom Zmadhim me zgjedhje + Mask: Maska: + Match field sizes Përputh madhësitë e fushave + Maximum Maksimumi + May Maj + Measure Mat + Measure area Mat sipërfaqen + Measure distance Mat distancën + Measure objects Mat objektet + Measure perimeter Mat perimetrin + Measurement information Informacioni i matjes + Measurement snapping Kapja e matjes + Measuring tool Mjeti i matjes + Medium Mesatar + Merge data files into spreadsheet… Bashko skedarët e të dhënave në fletëllogaritëse… + Merged 1 file into {path} U bashkua 1 skedar në {path} + Merged PRs PR-të e bashkuara + Merged {n} files into {path} U bashkuan {n} skedarë në {path} + Merging data files needs the desktop app Bashkimi i skedarëve të të dhënave kërkon aplikacionin për desktop + Metadata Metadatat + Microsoft Word (.docx) Microsoft Word (.docx) + Midpoint Pika e mesit + Midpoints Pikat e mesit + Minimum Minimumi + Model Modeli + Models Modelet + Modified Ndryshuar + Modify page Modifiko faqen + More Më shumë + More options Më shumë opsione + More options: Më shumë opsione: + More ways to add files Më shumë mënyra për të shtuar skedarë + Mouse Down Maus poshtë + Mouse Enter Maus brenda + Mouse Exit Maus jashtë + Mouse Up Maus lart + Move bookmark Zhvendos libërshënuesin + Move comment Zhvendos komentin + Move down Zhvendos poshtë + Move earlier Zhvendos më herët + Move image Zhvendos imazhin + Move later Zhvendos më vonë + Move page Zhvendos faqen + Move pages Zhvendos faqet + Move up Zhvendos lart + Multi-line Shumë rreshta + Multiple Të shumëfishta + Multiple files Disa skedarë + Separate PDFs PDF të veçanta + Multiple selection Zgjedhje e shumëfishtë + Name Emri + Name (A–Z) Emri (A–Zh) + Name on new comments Emri në komentet e reja + Name: Emri: + Named Destinations Destinacionet me emër + Navigation links Lidhjet e navigimit + Navigation links are not repetitive Lidhjet e navigimit nuk përsëriten + Navigation tab Tabi i navigimit + Needs manual check Kërkon kontroll manual + Negative number style: Stili i numrave negativë: + Nested alternate text Tekst alternativ i brendshëm + New Action Veprim i ri + New Action… Veprim i ri… + New blank PDF PDF e re bosh + New bookmark Libërshënues i ri + New bookmark (⌘B) Libërshënues i ri (⌘B) + New file: Skedari i ri: + New {tool} comments will look like this one Komentet e reja {tool} do të duken si ky + Next (⌘G) Tjetri (⌘G) + Next / previous match Përputhja tjetër / e mëparshme + Next figure Figura tjetër + Next month Muaji tjetër + Next page Faqja tjetër + Next sheet Fleta tjetër + Next view Pamja tjetër + No Jo + No PDFs found in {folder} Nuk u gjetën PDF në {folder} + No PDFs in this folder yet Ende nuk ka PDF në këtë dosje + No actions Nuk ka veprime + No changes allowed Nuk lejohen ndryshime + No changes to save Nuk ka ndryshime për t'u ruajtur + No check has run yet. Ende nuk është ekzekutuar asnjë kontroll. + No color Pa ngjyrë + No colour Pa ngjyrë + No comments match. Asnjë koment nuk përputhet. + No comments yet. Ende nuk ka komente. + No contributor data was built into this copy. Në këtë kopje nuk u ndërtuan të dhëna kontribuesish. + No differences in the text. Nuk ka dallime në tekst. + No digital IDs yet. Ende nuk ka ID dixhitale. + No documents are open Nuk ka dokumente të hapura + No file chosen Nuk u zgjodh asnjë skedar + No fonts are referenced by the pages. Faqet nuk referojnë asnjë shkronjë. + No form fields were detected Nuk u zbuluan fusha formulari + No inaccessible scripts Nuk ka skripte të paaksesueshme + No issues found Nuk u gjetën probleme + No limit Pa kufi + No matches Nuk ka përputhje + No matches. Nuk ka përputhje. + No matching tools Nuk ka mjete që përputhen + No model credits were built into this copy. Në këtë kopje nuk u ndërtuan kredite modelesh. + No pages match those choices Asnjë faqe nuk përputhet me ato zgjedhje + No pages selected Nuk është zgjedhur asnjë faqe + No preview Pa pamje paraprake + No problems found: the document conforms to {level}. Nuk u gjetën probleme: dokumenti është në përputhje me {level}. + No recent files Nuk ka skedarë të fundit + No security Pa siguri + No sheets Nuk ka fletë + No status has been set. Nuk është caktuar asnjë status. + No unlinked web addresses were found in the text Në tekst nuk u gjetën adresa uebi pa lidhje + None Asnjë + None (prefix only) Asnjë (vetëm prefiks) + None found Nuk u gjet asnjë + None of those files can be made into a PDF; use PDFs, images or .txt files Asnjë nga ato skedarë nuk mund të bëhet PDF; përdor PDF, imazhe ose skedarë .txt + None — everything is allowed Asnjë — gjithçka lejohet + Not allowed Nuk lejohet + Not present Nuk ekziston + Note Shënim + Nothing to redo Nuk ka asgjë për ripërsëritje + Nothing to undo Nuk ka asgjë për zhbërje + November Nëntor + Number Numri + Number every page in the footer. Numëro çdo faqe në fund të faqes. + Number of pages Numri i faqeve + Number pages Numëro faqet + Number pages… Numëro faqet… + OK OK + October Tetor + Odd Pages Only Vetëm faqet tek + Odd pages Faqet tek + Odd pages only Vetëm faqet tek + Off Joaktiv + Old file: Skedari i vjetër: + On Blur Kur humbet fokusin + On Focus Kur merr fokusin + On the web, open or drop an image to convert it Në ueb, hap ose lësho një imazh për ta konvertuar + One {f} file per page, named after the document. Një skedar {f} për faqe, me emrin e dokumentit. + Only continue if you trust this document. An address can carry information from the document, such as what you typed into its form. Vazhdo vetëm nëse i beson këtij dokumenti. Një adresë mund të mbartë informacion nga dokumenti, si ajo që shkruatë në formularin e tij. + Only the document's owner can change its security (open it with the permissions password) Vetëm zotëruesi i dokumentit mund të ndryshojë sigurinë e tij (hape me fjalëkalimin e lejeve) + Only the page content changes: links, comments, form fields and bookmarks on the original pages stay. Ndryshon vetëm përmbajtja e faqes: lidhjet, komentet, fushat e formularit dhe libërshënuesit në faqet origjinale mbeten. + Opacity Tejdukshmëria + Open Hap + Open Recent Hap të fundit + Open a PDF (⌘O) Hap një PDF (⌘O) + Open a PDF to measure it. Hap një PDF për ta matur. + Open a document first Hap fillimisht një dokument + Open a web link Hap një lidhje ueb + Open a web page Hap një faqe ueb + Open accessibility report Hap raportin e aksesueshmërisë + Open email app Hap aplikacionin e emailit + Open file Hap skedarin + Open in Full Screen mode Hap në ekran të plotë + Open in a new tab Hap në një skedë të re + Open link Hap lidhjen + Open the file as it was saved then Hap skedarin siç ishte ruajtur atëherë + Open the older version first Hap fillimisht versionin më të vjetër + Open this web page? Të hapet kjo faqe ueb? + Open to page Hap te faqja + Opened with Hapur me + Opened, but its security settings don't allow combining. Enter the permissions password. U hap, por cilësimet e sigurisë së tij nuk lejojnë bashkimin. Fut fjalëkalimin e lejeve. + Open… Hap… + Optimization cancelled Optimizimi u anulua + Optimization is already running Optimizimi është tashmë në punë + Optimize Optimizo + Optimize PDF… Optimizo PDF… + Optimize Scanned Documents Optimizo dokumentet e skanuara + Optimize scanned documents Optimizo dokumentet e skanuara + Optimize scanned documents… Optimizo dokumentet e skanuara… + Optimizing… cleaning up Duke optimizuar… duke pastruar + Optimizing… image {d} of {t} Duke optimizuar… imazhi {d} nga {t} + Optimizing… merging identical objects Duke optimizuar… duke bashkuar objektet identike + Optimizing… removing user data Duke optimizuar… duke hequr të dhënat e përdoruesit + Optimizing… writing the copy Duke optimizuar… duke shkruar kopjen + Optional Opsionale + Optional: needs an AI provider you configure Opsionale: kërkon një ofrues IA që e konfiguron ti + Options Opsionet + Options… Opsionet… + Orange Portokalli + Organization Name Emri i organizatës + Organizational Unit Njësia organizative + Organize pages Organizo faqet + Orientation: Orientimi: + Original: replace pages Origjinali: zëvendëso faqet + Other elements alternate text Teksti alternativ i elementeve të tjerë + Other elements that require alternate text Elementet e tjerë që kërkojnë tekst alternativ + Outdent Zvogëlo identimin + Outline Strukturë + Output Dalja + Output appears here. Dalja shfaqet këtu. + Output intent: {list} Qëllimi i daljes: {list} + Output preview Pamja paraprake e daljes + Oval Ovale + Overlap: Mbivendosja: + Owner password (no restrictions apply) Fjalëkalimi i zotëruesit (pa kufizime) + PDF Optimizer Optimizuesi i PDF + PDF or image PDF ose imazh + PDF producer Prodhuesi i PDF + PDF version Versioni i PDF + PDF, images and text PDF, imazhe dhe tekst + PDF/A… PDF/A… + PRs PR-të + Page Faqja + Page Content Përmbajtja e faqes + Page Only Vetëm faqja + Page Range Intervali i faqeve + Page Range Options Opsionet e intervalit të faqeve + Page Sizing & Handling Madhësia dhe trajtimi i faqes + Page display Shfaqja e faqes + Page display: {layout} Shfaqja e faqes: {layout} + Page does not require timed responses Faqja nuk kërkon përgjigje me kohë të kufizuar + Page grid Rrjeta e faqes + Page labels Etiketat e faqeve + Page layout Paraqitja e faqes + Page navigation Navigimi i faqeve + Page number Numri i faqes + Page options Opsionet e faqes + Page order: Radha e faqeve: + Page size Madhësia e faqes + Page thumbnails Miniaturat e faqeve + Page transitions Kalimet mes faqeve + Page will not cause screen flicker Faqja nuk do të shkaktojë dridhje të ekranit + Page {label} Faqja {label} + Page {p} of {n} Faqja {p} nga {n} + Pages Panel and Page Paneli i faqeve dhe faqja + Pages from Faqet nga + Pages of {name} to combine, e.g. 1-3, 6 Faqet e {name} për t'u bashkuar, p.sh. 1-3, 6 + Pages per file Faqe për skedar + Pages per sheet: Faqe për fletë: + Pages that are only pictures of text can't be read aloud or searched. Recognize text (OCR) to add a text layer. Faqet që janë vetëm figura teksti nuk mund të lexohen me zë ose të kërkohen. Njih tekstin (OCR) për të shtuar një shtresë teksti. + Pages to Print Faqet për t'u printuar + Pages with links, comments or fields should tab in structure order. The fix sets each page's tab order to Use Document Structure. Faqet me lidhje, komente ose fusha duhet të kalojnë me tab sipas radhës së strukturës. Rregullimi vendos radhën e tab-it të çdo faqeje te Përdor strukturën e dokumentit. + Pages: Faqet: + Paper: Letra: + Part of Pjesë e + Passed Kaloi + Password Fjalëkalimi + Password protection will be applied when you save Mbrojtja me fjalëkalim do të zbatohet kur të ruash + Password required Kërkohet fjalëkalimi + Password security Siguria me fjalëkalim + Password-protected E mbrojtur me fjalëkalim + Paste after Ngjit pas + Paste pages Ngjit faqet + Path Rruga + Paths Rrugët + Patterns Modelet + Patterns (graphics objects) Modelet (objekte grafike) + PdfCraft didn't shut down normally. These documents had changes that were autosaved: PdfCraft nuk u mbyll normalisht. Këta dokumente kishin ndryshime të ruajtura automatikisht: + PdfCraft on GitHub PdfCraft në GitHub + PdfCraft web page Faqja ueb e PdfCraft + PdfCraft works offline. No telemetry, no account, and no cloud processing unless you add a provider. PdfCraft funksionon pa internet. Pa telemetri, pa llogari dhe pa përpunim në re, përveçse nëse shton një ofrues. + PdfCraft {c} is up to date. PdfCraft {c} është i përditësuar. + PdfCraft {v} is available. PdfCraft {v} është i disponueshëm. + People may need more time to respond. Check that nothing has a time limit. Njerëzit mund të kenë nevojë për më shumë kohë për të përgjigjur. Kontrollo që asgjë të mos ketë kufi kohe. + Percentage Përqindja + Perimeter Perimetri + Permitted actions after certifying Veprimet e lejuara pas certifikimit + Phone Number Numri i telefonit + Phone Numbers Numrat e telefonit + Pick a tool in the quick bar, or type above. Zgjidh një mjet te shiriti i shpejtë, ose shkruaj më sipër. + Pictures need alternate text that describes them, or must be marked decorative. Add alternate text to each figure. Fotografitë kanë nevojë për tekst alternativ që i përshkruan, ose duhen shënuar si dekorative. Shto tekst alternativ për çdo figurë. + Pin a folder to Home Fiksoje një dosje te Kreu + Pin a folder to list its newest PDFs here, such as where your scanner or a synced cloud drive saves them. Fikso një dosje për të listuar këtu PDF-të e saj më të reja, p.sh. ku ruan skaneri ose një disk i sinkronizuar në re. + Pin a folder… Fikso një dosje… + Pin folder to Home… Fikso dosjen te Kreu… + Pink Rozë + Pinned folders need the desktop app Dosjet e fiksuara kërkojnë aplikacionin për desktop + Pinned {folder} to Home U fiksua {folder} te Kreu + Place saved {what} Vendos {what} të ruajtur + Plain text in reading order; pages are separated by form feeds. Tekst i thjeshtë sipas radhës së leximit; faqet ndahen me ndërprerje formulari. + Planned Planifikuar + Planned for milestone Planifikuar për fazën + Planned for milestone {m} — open to see what it will include Planifikuar për fazën {m} — hape për të parë çfarë do të përfshijë + Planned · {m} Planifikuar · {m} + Points from the page's bottom-left corner. Pikë nga këndi i poshtëm majtas i faqes. + Polygon Shumëkëndësh + Polyline Vijë e thyer + Portable mode is off: {folder} can't be written ({error}). Settings are kept in your user folder instead. Modaliteti portativ është joaktiv: nuk mund të shkruhet në {folder} ({error}). Cilësimet ruhen në dosjen tënde të përdoruesit. + Portrait Portret + Portrait Pages Faqe portret + Portrait pages Faqe portret + Position Pozicioni + Post Posto + PostScript / EPS PostScript / EPS + PostScript XObjects aren't allowed Objektet XObject PostScript nuk lejohen + Poster Poster + Prefix Parashtesa + Preflight Preflight + Prepare a form Përgatit një formular + Prepare for Distribution Përgatit për shpërndarje + Prepare for accessibility Përgatit për aksesueshmëri + Prepare for distribution Përgatit për shpërndarje + Prepare for distribution… Përgatit për shpërndarje… + Presentation (.pptx) Prezantim (.pptx) + Preview Pamje paraprake + Preview: page {p} of {n} Pamje paraprake: faqja {p} nga {n} + Previous (⇧⌘G) E mëparshmja (⇧⌘G) + Previous / next page Faqja e mëparshme / tjetër + Previous figure Figura e mëparshme + Previous month Muaji i mëparshëm + Previous page Faqja e mëparshme + Previous sheet Fleta e mëparshme + Previous view Pamja e mëparshme + Primary language Gjuha kryesore + Print Printo + Print (⌘P) Printo (⌘P) + Print in grayscale Printo me tonet e grisë + Print page border Printo kornizën e faqes + Print production Prodhimi për shtyp + Print single-sided. Keep the sheets in order, cut at the marks, then stack the piles left to right, top to bottom. Printo vetëm nga njëra anë. Mbaji fletët në radhë, pri te shenjat, pastaj vendosi grumbujt nga e majta në të djathtë, nga lart poshtë. + Print, NextPage, PrevPage, FirstPage or LastPage Print, NextPage, PrevPage, FirstPage ose LastPage + Printer: Printeri: + Printing Printimi + Printing allowed Printimi lejohet + Print… Printo… + Privacy Privatësia + Private data of other applications Të dhënat private të aplikacioneve të tjera + Properties… Vetitë… + Protect Mbro + Protect Using Password Mbro me fjalëkalim + Protect a PDF Mbro një PDF + Protect using password… Mbro me fjalëkalim… + Protect with password Mbro me fjalëkalim + Protected: the combined file won't keep its security settings Mbrojtur: skedari i bashkuar nuk do t'i ruajë cilësimet e sigurisë + Public key Çelësi publik + Purple Vjollcë + PushButton PushButton + Quality Cilësia + Radio Radio + Radio Button Properties Vetitë e butonit radio + Radio button Butoni radio + Re-type Password Shkruaje sërish fjalëkalimin + Read Lexo + Read Only Vetëm lexim + Read mode Modaliteti i leximit + Ready Gati + Real name Emri real + Reason Arsyeja + Recent Të fundit + Recognize Text Njih tekstin + Recognize text Njih tekstin + Recognize text in multiple files… Njih tekstin në disa skedarë… + Recognize text… Njih tekstin… + Recognized 1 word U njoh 1 fjalë + Recognized {n} words U njohën {n} fjalë + Recognized {w} words in 1 file U njohën {w} fjalë në 1 skedar + Recognized {w} words in {n} files U njohën {w} fjalë në {n} skedarë + Recognizing text… file {d} of {t} Duke njohur tekstin… skedari {d} nga {t} + Recognizing text… page {d} of {t} Duke njohur tekstin… faqja {d} nga {t} + Recommended tools Mjetet e rekomanduara + Recover Rikupero + Recover unsaved documents? Të rikuperohen dokumentet e paruajtura? + Rectangle Drejtkëndësh + Red E kuqe + Redact Redakto + Redact a PDF Redakto një PDF + Redact all Redakto të gjitha + Redact pages Redakto faqet + Redact pages… Redakto faqet… + Redact text and images Redakto tekstin dhe imazhet + Redacted area fill colour: Ngjyra e mbushjes së zonës së redaktuar: + Redaction Tool Properties Vetitë e mjetit të redaktimit + Redaction properties… Vetitë e redaktimit… + Redid {label} U ribë {label} + Redo Ribëj + Redo {action} Ribëj {action} + Reduce file size Zvogëlo madhësinë e skedarit + Reduce file size… Zvogëlo madhësinë e skedarit… + Regularity Rregullsia + Rejected Refuzuar + Reliable character encoding is provided Ofrohet kodim i besueshëm i karaktereve + Remove Hiq + Remove all links Hiq të gjitha lidhjet + No links to remove Nuk ka lidhje për t'u hequr + Removed 1 link U hoq 1 lidhje + Removed {n} links U hoqën {n} lidhje + Remove background Hiq sfondin + Remove checkmark Hiq shenjën e zgjedhjes + Remove from Recent Hiq nga të fundit + Remove header & footer Hiq kokën dhe fundin e faqes + Remove hidden information Hiq informacionin e fshehur + Remove hidden information and flatten comments and form fields, so recipients see only the pages. Hiq informacionin e fshehur dhe sheshoji komentet e fushat e formularit, që marrësit të shohin vetëm faqet. + Remove hidden information, metadata, scripts and embedded content, and rewrite the files. Hiq informacionin e fshehur, metadatat, skriptet dhe përmbajtjen e ngulitur, dhe rishkruaj skedarët. + Remove hidden information… Hiq informacionin e fshehur… + Remove invalid links and bookmarks Hiq lidhjet dhe libërshënuesit e pavlefshëm + Remove redaction marks Hiq shenjat e redaktimit + Remove saved {what} Hiq {what} të ruajtur + Remove security Hiq sigurinë + Remove unreferenced named destinations Hiq destinacionet e emërtuara të pareferuara + Remove unused objects and merge identical ones Hiq objektet e papërdorura dhe bashko ato identike + Remove watermark Hiq filigranën + Remove {name} Hiq {name} + Remove {name} from Recent Hiq {name} nga të fundit + Remove {n} files Hiq {n} skedarë + Removed 1 hidden item. Save to remove them from the file. U hoq 1 element i fshehur. Ruaje për ta hequr nga skedari. + Removed {n} hidden items. Save to remove them from the file. U hoqën {n} elemente të fshehur. Ruaje për t'i hequr nga skedari. + Rename Riemërto + Rename bookmark Riemërto libërshënuesin + Rendering: hayro (bootstrap) · UI: egui · Icons: Lucide (ISC) · Fonts: Inter, JetBrains Mono, Dancing Script (OFL) Duke vizatuar: hayro (fillestar) · UI: egui · Ikonat: Lucide (ISC) · Shkronjat: Inter, JetBrains Mono, Dancing Script (OFL) + Reopen the files that were open when PdfCraft last closed Rihap skedarët që ishin hapur kur u mbyll PdfCraft për herë të fundit + Repair log Regjistri i riparimeve + Repairs Riparimet + Repeat overlay text Përsërit tekstin e mbivendosjes + Repeated navigation links should be skippable. Check links that appear on every page. Lidhjet e përsëritura të navigimit duhet të mund të anashkalohen. Kontrollo lidhjet që shfaqen në çdo faqe. + Replace Zëvendëso + Replace Image… Zëvendëso imazhin… + Replace Pages Zëvendëso faqet + Replace image Zëvendëso imazhin + Replace page Zëvendëso faqen + Replace pages Zëvendëso faqet + Replace pages… Zëvendëso faqet… + Replace text Zëvendëso tekstin + Replaced Zëvendësuar + Replacement text Teksti zëvendësues + Replacement: pages of {name} Zëvendësimi: faqet e {name} + Replaces the existing one on those pages. Zëvendëson atë ekzistues në ato faqe. + Replacing images arrives on the web with image file pickers Zëvendësimi i imazheve vjen në ueb me zgjedhësit e skedarëve të imazhit + Replacing images on page {p} arrives on the web with image pickers ({i}) Zëvendësimi i imazheve në faqen {p} vjen në ueb me zgjedhësit e imazhit ({i}) + Reply Përgjigju + Report Raporti + Report Options Opsionet e raportit + Report… Raporti… + Required E detyrueshme + Requires user to enter a password for: Kërkon që përdoruesi të fusë një fjalëkalim për: + Reset a form Rivendos një formular + Reset columns Rivendos kolonat + Resize comment Ndrysho madhësinë e komentit + Resize window to initial page Ndrysho madhësinë e dritares sipas faqes fillestare + Resolution Rezolucioni + Restrictions Kufizimet + Retain existing Mbaj ekzistueset + Reverse pages Ktheje radhën e faqeve + Reverse the order Ktheje radhën + Revert Rikthe + Revert to the previously saved version of “{name}”? Changes since then can't be undone afterwards. Të rikthehet te versioni i ruajtur më parë i “{name}”? Ndryshimet e bëra që atëherë nuk mund të zhbëhen më pas. + Reverted to the last saved version U rikthye te versioni i fundit i ruajtur + Review Rishiko + Review History Historiku i rishikimeve + Revisions Rishikimet + Rich Text Format (.rtf) Rich Text Format (.rtf) + Right Djathtas + Right Edge Skaji i djathtë + Right Footer Text Teksti i fundit të faqes djathtas + Right Header Text Teksti i kokës së faqes djathtas + Rotate Rrotullo + Rotate Clockwise Rrotullo në drejtim orar + Rotate Counterclockwise Rrotullo në drejtim kundërorar + Rotate Pages Rrotullo faqet + Rotate clockwise Rrotullo në drejtim orar + Rotate counterclockwise Rrotullo në drejtim kundërorar + Rotate image Rrotullo imazhin + Rotate page Rrotullo faqen + Rotate pages Rrotullo faqet + Rotate pages clockwise Rrotullo faqet në drejtim orar + Rotate pages counterclockwise Rrotullo faqet në drejtim kundërorar + Rotate pages… Rrotullo faqet… + Rotate view Rrotullo pamjen + Rotate view clockwise Rrotullo pamjen në drejtim orar + Rotate view clockwise (⇧⌘+) Rrotullo pamjen në drejtim orar (⇧⌘+) + Rotate view counterclockwise Rrotullo pamjen në drejtim kundërorar + Rotate: Rrotullo: + Rotation Rrotullimi + Rows Rreshtat + Run Ekzekuto + Run JavaScript Ekzekuto JavaScript + Run a JavaScript Ekzekuto një JavaScript + Run form script Ekzekuto skriptin e formularit + Running action… file {d} of {t} Duke ekzekutuar veprimin… skedari {d} nga {t} + SHA-1 digest Përmbledhja SHA-1 + SHA-256 digest Përmbledhja SHA-256 + Sanitize Pastro + Sanitize Documents Pastro dokumentet + Sanitize document Pastro dokumentin + Sanitize document… Pastro dokumentin… + Sanitizing removes hidden information from the document: metadata, file attachments, comments, form fields (flattened), hidden text and layers, bookmarks, links, actions and scripts, and private application data. Pastrimi heq nga dokumenti informacionin e fshehur: metadatat, bashkëngjitjet, komentet, fushat e formularit (të sheshuara), tekstin dhe shtresat e fshehura, libërshënuesit, lidhjet, veprimet dhe skriptet, si dhe të dhënat private të aplikacioneve. + Save Ruaj + Save & Close Ruaj dhe mbyll + Save (M4) Ruaj (M4) + Save Image As… Ruaj imazhin si… + Copy Image Kopjo imazhin + The image has been copied ({w} × {h} pixels) Imazhi u kopjua ({w} × {h} piksel) + Couldn't copy the image: {e} Imazhi nuk u kopjua: {e} + Copy Image in Original Format Kopjo imazhin në formatin origjinal + The image has been copied as a {ext} file Imazhi u kopjua si skedar {ext} + The page has changed; select the image again Faqja ka ndryshuar; zgjidh sërish imazhin + Save as PDF Ruaj si PDF + Save as PDF/A Ruaj si PDF/A + Save as PDF/A-1b Ruaj si PDF/A-1b + Save as PDF/A-2b Ruaj si PDF/A-2b + Save as PDF/A-3b Ruaj si PDF/A-3b + Save as PDF/UA Ruaj si PDF/UA + Save as PDF/X Ruaj si PDF/X + Save as… Ruaj si… + Save attachment… Ruaj bashkëngjitjen… + Save changes to “{name}” before closing? Të ruhen ndryshimet në “{name}” para mbylljes? + Save image Ruaj imazhin + Save pages Ruaj faqet + Save the accessibility report Ruaj raportin e aksesueshmërisë + Save the document afterwards: saving rewrites the whole file so no trace of the removed content stays in it. Ruaje dokumentin më pas: ruajtja rishkruan të gjithë skedarin, që të mos mbetet asnjë gjurmë e përmbajtjes së hequr. + Save the document afterwards; saving rewrites the whole file so nothing removed stays in it. Ruaje dokumentin më pas; ruajtja rishkruan të gjithë skedarin, që asgjë e hequr të mos mbetet në të. + Save the spreadsheet Ruaj fletëllogaritësen + Save these pages as one PDF Ruaj këto faqe si një PDF + Saved measurements Matjet e ruajtura + Saved measurements. Matjet e ruajtura. + Saved the print-ready PDF to {path} PDF-ja gati për shtyp u ruajt në {path} + Saved {name} U ruajt {name} + Saved {place}: {before} → {after} ({pct}% smaller){detail} U ruajt {place}: {before} → {after} ({pct}% më e vogël){detail} + Saved, but reopening failed: {e} U ruajt, por rihapja dështoi: {e} + Scale relative to target page Shkalla në raport me faqen e synuar + Scan & OCR Skanim dhe OCR + Screen flicker Dridhja e ekranit + Screen readers choose their voice from the document's language. Set it in Document Properties > Advanced > Language. Lexuesit e ekranit e zgjedhin zërin sipas gjuhës së dokumentit. Caktojeni te Veçoritë e dokumentit > Të avancuara > Gjuha. + Script Name: Emri i skriptit: + Script: Skripti: + Scripted content must be usable with a keyboard and assistive technology. Check the document's scripts. Përmbajtja me skripte duhet të jetë e përdorshme me tastierë dhe teknologji ndihmëse. Kontrolloni skriptet e dokumentit. + Scripts Skriptet + Scripts run in a sandbox without file or network access. A script that asks to open a web page needs your permission first. With JavaScript off, Acrobat's standard format, validate and calculate functions still work. Skriptet ekzekutohen në një ambient të izoluar, pa qasje te skedarët apo rrjeti. Një skript që kërkon të hapë një faqe web ka nevojë më parë për lejen tuaj. Me JavaScript të çaktivizuar, funksionet standarde të Acrobat për formatim, vlerësim dhe llogaritje vazhdojnë të punojnë. + Scripts run in a sandbox without file or network access. With JavaScript off, Acrobat's standard format, validate and calculate functions still work. Skriptet ekzekutohen në një ambient të izoluar, pa qasje te skedarët apo rrjeti. Me JavaScript të çaktivizuar, funksionet standarde të Acrobat për formatim, vlerësim dhe llogaritje vazhdojnë të punojnë. + Scroll long text Lëviz tekstin e gjatë + Search Kërko + Search comments Kërko te komentet + Search tools and commands… Kërko mjete dhe komanda… + Searchable Image (Exact) Imazh i kërkueshëm (i saktë) + Searching… {s} of {p} pages Po kërkohet… {s} nga {p} faqe + Searching… {s}/{p} Po kërkohet… {s}/{p} + Security Siguria + Security method Metoda e sigurisë + Security properties Veçoritë e sigurisë + Security properties… Veçoritë e sigurisë… + Security settings Cilësimet e sigurisë + Security settings must allow assistive technology to read the content ("Enable text access for screen reader devices"). Change the document's security to allow it. Cilësimet e sigurisë duhet t'i lejojnë teknologjisë ndihmëse ta lexojë përmbajtjen ("Enable text access for screen reader devices"). Ndryshoni sigurinë e dokumentit për ta lejuar. + Security will be removed when you save Siguria do të hiqet kur ta ruani + Select (V) Zgjidh (V) + Select Action: Zgjidh veprimin: + Select All Zgjidh të gjitha + Select Icon Zgjidh ikonën + Select Trigger: Zgjidh nxitësin: + Select a file first Zgjidhni fillimisht një skedar + Select a file for the stamp Zgjidhni një skedar për vulën + Select a password-protected file first Zgjidhni fillimisht një skedar të mbrojtur me fjalëkalim + Select a word Zgjidh një fjalë + Select all pages (Organize) Zgjidh të gjitha faqet (Organizo) + Select data files to merge Zgjidh skedarët e të dhënave për t'u bashkuar + Select files to compare Zgjidh skedarët për krahasim + Select format category: Zgjidh kategorinë e formatit: + Select pages Zgjidh faqet + Select the items to remove from this document. Zgjidhni elementët që do të hiqen nga ky dokument. + Selected image files: {count} Skedarë imazhi të zgjedhur: {count} + Selected pages Faqet e zgjedhura + Selection Përzgjedhja + Self-signed I vetënënshkruar + Sensitivity Ndjeshmëria + Sent to {printer} U dërgua te {printer} + Sent to {printer}: {msg} U dërgua te {printer}: {msg} + Separator style: Stili i ndarësit: + September Shtator + Serial number Numri serik + Set Alternate Text Cakto tekstin alternativ + Set Fields to Same Size Cakto fushat me madhësi të njëjtë + Set Page Boxes Cakto kutitë e faqes + Set alternate text Cakto tekstin alternativ + Set bookmark destination Cakto destinacionin e libërshënuesit + Set document title Cakto titullin e dokumentit + Set layer visibility Cakto dukshmërinë e shtresës + Set measurement scale Cakto shkallën e matjes + Set page boxes Cakto kutitë e faqes + Set page boxes… Cakto kutitë e faqes… + Set properties Cakto veçoritë + Set status Cakto statusin + Set status Accepted Cakto statusin Pranuar + Set status Cancelled Cakto statusin Anuluar + Set status Completed Cakto statusin Përfunduar + Set status None Cakto statusin Asnjë + Set status Rejected Cakto statusin Refuzuar + Set status Unmarked Cakto statusin Pa shënuar + Set tab order Cakto renditjen e tabit + Set the image of {name} Cakto imazhin e {name} + Set to current page ({n}) Cakto në faqen aktuale ({n}) + Set to zero Cakto në zero + Settings Cilësimet + Shadings Hijëzimet + Sheet {s} of {n} Fleta {s} nga {n} + Shift constrains to 45 degrees. Backspace removes a vertex. Escape cancels. Shift e kufizon në 45 gradë. Backspace heq një kulm. Escape anulon. + Show Shfaq + Show Report Shfaq raportin + Show a field Shfaq një fushë + Show all Shfaq të gjitha + Show all comments Shfaq të gjitha komentet + Show certificate… Shfaq certifikatën… + Show cover page in two-page view Shfaq faqen e kopertinës në pamjen me dy faqe + Show layer Shfaq shtresën + Show less Shfaq më pak + Show password Shfaq fjalëkalimin + Show the accessibility report Shfaq raportin e qasshmërisë + Show this dialog when the Checker starts Shfaq këtë dialog kur nis Kontrolluesi + Show {n} more Shfaq edhe {n} + Show: Shfaq: + Shrink oversized pages Zvogëlo faqet e mëdha + Side panels Panelet anësore + Sign Nënshkruaj + Sign Here Nënshkruani këtu + Sign this field… Nënshkruaj këtë fushë… + Sign with a Digital ID Nënshkruaj me një ID dixhitale + Sign yourself Nënshkruani vetë + Signature Nënshkrimi + Signature Details Detajet e nënshkrimit + Signature is INVALID: Nënshkrimi është i PAVLEFSHËM: + Signature is valid: Nënshkrimi është i vlefshëm: + Signature panel Paneli i nënshkrimit + Signature validity is UNKNOWN: Vlefshmëria e nënshkrimit është E PANJOHUR: + Signatures Nënshkrimet + Signatures panel Paneli i nënshkrimeve + Signed and all signatures are valid. Është nënshkruar dhe të gjitha nënshkrimet janë të vlefshme. + Signed and saved to {path} U nënshkrua dhe u ruajt te {path} + Signer Nënshkruesi + Signing time Koha e nënshkrimit + Simplified field notation: Shënimi i thjeshtuar i fushës: + Single Page Faqe e vetme + Single Page Continuous Faqe e vetme e vazhdueshme + Single file Skedar i vetëm + Single page Faqe e vetme + Single word or phrase Fjalë ose frazë e vetme + Size Madhësia + Skip Rule Kapërce rregullin + Skipped U kapërcye + Snap to drawing Ngjit te vizatimi + Snapping Ngjitja + Social Security Number Numri i sigurimeve shoqërore + Social Security Numbers Numrat e sigurimeve shoqërore + Solid I plotë + Some page content couldn't be read; snapping uses the rest. Një pjesë e përmbajtjes së faqes nuk u lexua; ngjitja përdor pjesën tjetër. + Sort Rendit + Sort by Rendit sipas + Sort comments by: Rendit komentet sipas: + Sort items Rendit elementët + Source Burimi + Space Audit Auditimi i hapësirës + Special Speciale + Split Ndaj + Split document Ndaj dokumentin + Split document… Ndaj dokumentin… + Split into files… Ndaj në skedarë… + Spreadsheet (.xlsx) Fletë llogaritjeje (.xlsx) + Square Katror + Squiggly Valëzuar + Squiggly underline Nënvizim i valëzuar + Squiggly underline text Nënvizo tekstin me valëzim + Stamp Vulë + Stamp palette Paleta e vulave + Stamps Vulat + Standard Business Biznes standard + Thai and Arabic use regular fallback fonts when available. Tajlandishtja dhe arabishtja përdorin shkronja rezervë të zakonshme kur ka të tilla. + Standards Standardet + Star Yll + Start Fillo + Start Checking Fillo kontrollin + Start page number Numri i faqes fillestare + Status Statusi + Steps Hapat + Sticky note Shënim ngjitës + Strength: {s} Fuqia: {s} + Strikethrough Vizë mbi tekst + Strikethrough text Tekst me vizë mbi të + Strong E fortë + Structure Info Info e strukturës + Style Stili + Subject Subjekti + Submit a form Dërgo një formular + Subset Nënbashkësi + Summarize Përmblidh + Summarize Options Opsionet e përmbledhjes + Summarize comments Përmblidh komentet + Summary Përmbledhje + Switch light / dark theme Ndërro temën e çelët / të errët + Switch to two-page view first to show the cover page Kaloni fillimisht te pamja me dy faqe për të shfaqur faqen e kopertinës + TH and TD TH dhe TD + TH and TD must be children of TR TH dhe TD duhet të jenë fëmijë të TR + TR must be a child of Table, THead, TBody, or TFoot TR duhet të jetë fëmijë i Table, THead, TBody ose TFoot + Tab order Renditja e tabit + Tab order by columns Renditja e tabit sipas kolonave + Tab order by rows Renditja e tabit sipas rreshtave + Tab order is consistent with structure order Renditja e tabit përputhet me renditjen e strukturës + Tab order: by columns Renditja e tabit: sipas kolonave + Tab order: by document structure Renditja e tabit: sipas strukturës së dokumentit + Tab order: by rows Renditja e tabit: sipas rreshtave + Tab order: move a field with its arrows. Renditja e tabit: lëvizni një fushë me shigjetat e saj. + Table Tabela + Table cells belong in a row. Fix the table's tags. Qelizat e tabelës duhet të jenë në një rresht. Rregulloni etiketat e tabelës. + Table rows belong directly in a table or its head, body or foot. Fix the table's tags. Rreshtat e tabelës duhet të jenë drejtpërdrejt në një tabelë ose në kokën, trupin ose fundin e saj. Rregulloni etiketat e tabelës. + Tables Tabelat + Tables must contain the same number of columns in each row and rows in each column Tabelat duhet të kenë të njëjtin numër kolonash në çdo rresht dhe rreshtash në çdo kolonë + Tables must have a summary Tabelat duhet të kenë një përmbledhje + Tables should have headers Tabelat duhet të kenë tituj + Tagged PDF PDF me etiketa + Tagged annotations Shënime me etiketa + Tagged content Përmbajtje me etiketa + Tagged form fields Fusha formulari me etiketa + Tagged multimedia Multimedia me etiketa + Tags give the document a logical structure that assistive technology follows. Tag the document (Automatically tag PDF). Etiketat i japin dokumentit një strukturë logjike që e ndjek teknologjia ndihmëse. Etiketoni dokumentin (Etiketo PDF automatikisht). + Take a snapshot Merr një pamje + Text Tekst + Text (plain) Tekst (i thjeshtë) + Text Color: Ngjyra e tekstit: + Text Field Properties Veçoritë e fushës së tekstit + Text alignment: Drejtimi i tekstit: + Text box Kuti teksti + Text field Fushë teksti + Text in images isn't found; recognise text (OCR) first. Teksti në imazhe nuk gjendet; njihni fillimisht tekstin (OCR). + Text is compared word by word; the differences are shown on the new file. Teksti krahasohet fjalë për fjalë; dallimet shfaqen te skedari i ri. + Text language is specified Gjuha e tekstit është caktuar + Text must contrast enough with its background for people with low vision. Check the colours by eye or with a contrast tool. Teksti duhet të kontrastojë mjaftueshëm me sfondin për personat me shikim të dobët. Kontrolloni ngjyrat me sy ose me një mjet kontrasti. + Text recognition is already running Njohja e tekstit është tashmë në punë + Text recognition isn't installed: its models are missing (run `cargo xtask models`, or set PDFCRAFT_MODELS). Njohja e tekstit nuk është e instaluar: mungojnë modelet e saj (ekzekutoni `cargo xtask models`, ose caktoni PDFCRAFT_MODELS). + Text to find Teksti për t'u gjetur + Text to insert Teksti për t'u futur + That didn't work: an internal error stopped it ({m}). Nuk funksionoi: një gabim i brendshëm e ndali ({m}). + That didn't work: an internal error stopped it ({m}). Your documents are unchanged. Nuk funksionoi: një gabim i brendshëm e ndali ({m}). Dokumentet tuaja nuk janë ndryshuar. + The Keychain's digital IDs couldn't be listed: {e} ID-të dixhitale të Keychain nuk u listuan dot: {e} + The Windows store's digital IDs couldn't be listed: {e} ID-të dixhitale të depos së Windows nuk u listuan dot: {e} + The checker found 1 problem which may prevent the document from being fully accessible. Kontrolluesi gjeti 1 problem që mund ta pengojë dokumentin të jetë plotësisht i qasshëm. + The checker found no problems in this document. Kontrolluesi nuk gjeti probleme në këtë dokument. + The checker found {n} problems which may prevent the document from being fully accessible. Kontrolluesi gjeti {n} probleme që mund ta pengojnë dokumentin të jetë plotësisht i qasshëm. + The clipboard has no image or text Kujtesa e fragmenteve nuk ka imazh apo tekst + The document changed while you were choosing a file, so nothing was changed. Dokumenti ndryshoi ndërsa zgjidhnit një skedar, ndaj nuk u ndryshua asgjë. + The document has additional actions (/AA) Dokumenti ka veprime shtesë (/AA) + The document has document-level JavaScript Dokumenti ka JavaScript në nivel dokumenti + The document has no XMP metadata Dokumenti nuk ka metadata XMP + The document is encrypted Dokumenti është i enkriptuar + The document now conforms to {level}; save it to keep the changes Dokumenti tani është në përputhje me {level}; ruajeni për t'i mbajtur ndryshimet + The document opens without a password; this password is needed to change the restrictions. It's applied when you save. Dokumenti hapet pa fjalëkalim; ky fjalëkalim nevojitet për të ndryshuar kufizimet. Zbatohet kur ruani. + The document was closed before it could be saved. Dokumenti u mbyll para se të ruhej. + The document's security settings don't allow filling in form fields Cilësimet e sigurisë së dokumentit nuk lejojnë plotësimin e fushave të formularit + The document's security settings don't allow this change Cilësimet e sigurisë së dokumentit nuk e lejojnë këtë ndryshim + The form asks to be submitted to {u}; PdfCraft doesn't send form data. Save the document to keep your entries. Formulari kërkon të dërgohet te {u}; PdfCraft nuk dërgon të dhëna formulari. Ruajeni dokumentin për të mbajtur të dhënat tuaja. + The form asks viewers to make appearances (NeedAppearances) Formulari u kërkon shikuesve të krijojnë pamjet (NeedAppearances) + The key is in the Windows certificate store, which may ask to allow PdfCraft to use it. Çelësi është në depon e certifikatave të Windows, e cila mund të kërkojë të lejohet PdfCraft ta përdorë. + The key is in the macOS Keychain, which may ask to allow PdfCraft to use it. Çelësi është në Keychain të macOS, i cili mund të kërkojë të lejohet PdfCraft ta përdorë. + The newest {n} of {total} PDFs {n} PDF-të më të reja nga {total} + The operation failed. Veprimi dështoi. + The pages were extracted but not deleted, because the document changed while you were choosing a folder. Faqet u nxorën por nuk u fshinë, sepse dokumenti ndryshoi ndërsa zgjidhnit një dosje. + The password is only used to read the file; it isn't saved. Fjalëkalimi përdoret vetëm për të lexuar skedarin; nuk ruhet. + The passwords don't match. Fjalëkalimet nuk përputhen. + The replacement file doesn't have that many pages. Skedari zëvendësues nuk ka kaq shumë faqe. + The same password is tried on each file. I njëjti fjalëkalim provohet te çdo skedar. + The selected area has been copied ({w} × {h} pixels) Zona e zgjedhur u kopjua ({w} × {h} piksel) + The signature will be invisible. Nënshkrimi do të jetë i padukshëm. + The existing action will be preserved. Veprimi ekzistues do të ruhet. + The text is the same Teksti është i njëjtë + The title in the metadata and the document information differ Titulli te metadata dhe te informacioni i dokumentit ndryshojnë + The value is shown as typed. Vlera shfaqet siç është shkruar. + The window should show a meaningful title rather than the file name. Set a title and Initial View > Show: Document Title. Dritarja duhet të shfaqë një titull kuptimplotë në vend të emrit të skedarit. Caktoni një titull dhe Pamja fillestare > Shfaq: Titulli i dokumentit. + There are no redaction marks (mark text, areas or pages first) Nuk ka shenja redaktimi (shënoni fillimisht tekst, zona ose faqe) + There are no redaction marks to apply Nuk ka shenja redaktimi për t'u zbatuar + Thick E trashë + Thickness Trashësia + Thin E hollë + This area has too many overlapping paths; intersection snapping is limited. Kjo zonë ka shumë shtigje që mbivendosen; ngjitja te prerjet është e kufizuar. + This certificate is in your list of trusted certificates. Kjo certifikatë është në listën tuaj të certifikatave të besuara. + This certificate is not trusted. Signatures made with it show an unknown identity. Kjo certifikatë nuk është e besuar. Nënshkrimet e bëra me të shfaqin një identitet të panjohur. + This certificate is trusted through a certificate above it in the chain. Kjo certifikatë besohet nëpërmjet një certifikate mbi të në zinxhir. + This comment's appearance can't be changed yet. Pamja e këtij komenti nuk mund të ndryshohet ende. + This compatibility level supports only plain ASCII passwords. Ky nivel përputhshmërie mbështet vetëm fjalëkalime të thjeshta ASCII. + This dialog shows the details of a certificate and its chain. Ky dialog shfaq detajet e një certifikate dhe të zinxhirit të saj. + This document can't be checked: it couldn't be read for editing Ky dokument nuk mund të kontrollohet: nuk u lexua dot për redaktim + This document contains {n} interactive form fields. Ky dokument përmban {n} fusha interaktive formulari. + This document has no attachments. Ky dokument nuk ka bashkëngjitje. + This document has no bookmarks. Ky dokument nuk ka libërshënues. + This document has no comments to flatten Ky dokument nuk ka komente për t'u sheshuar + This document has no document-level scripts. Ky dokument nuk ka skripte në nivel dokumenti. + This document has no form fields to flatten Ky dokument nuk ka fusha formulari për t'u sheshuar + This document has no form fields you can fill in Ky dokument nuk ka fusha formulari që mund të plotësoni + This document has no form fields. Ky dokument nuk ka fusha formulari. + This document has no layers. Ky dokument nuk ka shtresa. + This document has no pages. Ky dokument nuk ka faqe. + This document has no signatures. Ky dokument nuk ka nënshkrime. + This document has no tagged figures. Ky dokument nuk ka figura me etiketa. + This document has no {kind} to change Ky dokument nuk ka {kind} për t'u ndryshuar + This document hasn't been checked yet. Ky dokument nuk është kontrolluar ende. + This document is secured. Some changes are restricted by its security settings. Ky dokument është i siguruar. Disa ndryshime kufizohen nga cilësimet e sigurisë së tij. + This document isn't password-protected Ky dokument nuk është i mbrojtur me fjalëkalim + This drawing exceeds the snapping limit; only the first paths are used. Ky vizatim e tejkalon kufirin e ngjitjes; përdoren vetëm shtigjet e para. + This field is locked. Unlock it to change its properties. Kjo fushë është e kyçur. Shkyçeni për të ndryshuar veçoritë e saj. + This file was damaged and has been repaired. Saving keeps the repaired version. Ky skedar ishte i dëmtuar dhe u riparua. Ruajtja mban versionin e riparuar. + This folder isn't available right now. It may have moved, or its drive or cloud sync is offline. Kjo dosje nuk është e disponueshme tani. Mund të jetë zhvendosur, ose disku apo sinkronizimi i saj në re është jashtë linje. + This form also contains XFA data, which PdfCraft doesn't read yet. You can fill its fields, but Acrobat may show the XFA values instead. Ky formular përmban edhe të dhëna XFA, të cilat PdfCraft ende nuk i lexon. Mund t'i plotësoni fushat e tij, por Acrobat mund të shfaqë në vend të tyre vlerat XFA. + This is a dynamic XFA form, which PdfCraft can't display yet. What you see is the file's placeholder page. Ky është një formular dinamik XFA, të cilin PdfCraft ende nuk mund ta shfaqë. Ajo që shihni është faqja zëvendësuese e skedarit. + This measurement needs at least {n} points. Kjo matje kërkon të paktën {n} pika. + This page couldn't be displayed.\n{e} Kjo faqe nuk u shfaq dot.\n{e} + This web address mixes letters from different alphabets, a common way to imitate another site's name. Kjo adresë web përzien shkronja nga alfabete të ndryshme, një mënyrë e zakonshme për të imituar emrin e një faqeje tjetër. + This web address uses letters from another alphabet, which can look like familiar ones. Kjo adresë web përdor shkronja nga një alfabet tjetër, të cilat mund të duken si ato të njohurat. + Thumbnails Miniaturat + Tile scale: Shkalla e pllakave: + Time Ora + Timed responses Përgjigje të kohëzuara + Timestamp Vula kohore + Title Titulli + To: Për: + Toggle fit page / fit width Ndërro përshtatjen e faqes / gjerësisë + Tool Mjeti + Tooltip: Këshilla e mjetit: + Top Sipër + Top-level bookmarks ({n}) Libërshënuesit e nivelit të parë ({n}) + Total Totali + Translate Përkthe + Trust Besim + Try the form as people filling it in will see it Provoni formularin siç do ta shohin ata që e plotësojnë + Two-Up (Cover Page) Dy faqe (me kopertinë) + Two-Up (Facing) Dy faqe (përballë) + Two-Up Continuous (Cover Page) Dy faqe të vazhdueshme (me kopertinë) + Two-Up Continuous (Facing) Dy faqe të vazhdueshme (përballë) + Two-page view Pamja me dy faqe + Two-sided: Dyanëshe: + Type Lloji + Type Password Shkruaj fjalëkalimin + Type a password. Shkruani një fjalëkalim. + Type text Shkruaj tekst + Type the web address. Shkruani adresën web. + Type your {what}. Shkruani {what} tuaj. + Typewriter Makinë shkrimi + URL to submit to URL-ja ku do të dërgohet + Unchecked Pa shënuar + Underline Nënvizim + Underline text Nënvizo tekstin + Undid {label} U zhbë {label} + Undo Zhbëj + Undo {action} Zhbëj {action} + Unit Njësia + Units Njësitë + Unknown E panjohur + Unknown author Autor i panjohur + Unlock Shkyç + Unlock comment Shkyç komentin + Unlock {name} Shkyç {name} + Unlock {n} files Shkyç {n} skedarë + Unlocked {n} of {m} files U shkyçën {n} nga {m} skedarë + Unlocked: the combined file won't be password-protected Shkyçur: skedari i bashkuar nuk do të mbrohet me fjalëkalim + Unlock… Shkyç… + Unpin Hiq gozhdimin + Unpin {folder} Hiq gozhdimin e {folder} + Unplaced I paplasuar + Unsupported measurements Matje të pambështetura + Up Lart + Update Përditëso + Update background Përditëso sfondin + Update background… Përditëso sfondin… + Update header & footer Përditëso kokën & fundin + Update header & footer… Përditëso kokën & fundin… + Update watermark Përditëso filigranin + Update watermark… Përditëso filigranin… + Use 72 DPI (one point per pixel) Përdor 72 DPI (një pikë për piksel) + Use Flate to encode streams that are not encoded Përdor Flate për të koduar rrjedhat që nuk janë të koduara + Use JavaScript Përdor JavaScript + Use a Digital ID from a file Përdor një ID dixhitale nga një skedar + Use a certificate Përdor një certifikatë + Use custom DPI Përdor DPI të personalizuar + Use each image's embedded DPI; use 72 DPI when it is absent. Përdor DPI-në e ngulitur të çdo imazhi; përdor 72 DPI kur mungon. + Use guided actions Përdor veprime të udhëzuara + Use image resolution Përdor rezolucionin e imazhit + Use now Përdor tani + Use overlay text Përdor tekst mbivendosës + Use print production Përdor prodhimin e shtypit + Use system setting Përdor cilësimin e sistemit + Use {what} Përdor {what} + Used when a PDF doesn't ask for a layout or zoom. Continuous scrolling never snaps between pages. Përdoret kur një PDF nuk kërkon paraqitje apo zmadhim. Lëvizja e vazhdueshme nuk ngjitet kurrë mes faqeve. + Used when opening PDFs. An explicit launch or control mode takes precedence for the session. Përdoret kur hapen PDF-të. Një nisje e qartë ose mënyra e kontrollit ka përparësi gjatë sesionit. + User Interface Options Opsionet e ndërfaqes së përdoruesit + User password Fjalëkalimi i përdoruesit + Username Emri i përdoruesit + Valid I vlefshëm + Valid for 5 years, for digital signatures. Self-signed IDs are usually not trusted by others. E vlefshme për 5 vjet, për nënshkrime dixhitale. ID-të e vetënënshkruara zakonisht nuk besohen nga të tjerët. + Valid from E vlefshme nga + Valid to E vlefshme deri + Validate Vlerëso + Validate all Vlerëso të gjitha + Validate all signatures Vlerëso të gjitha nënshkrimet + Validity ends Vlefshmëria mbaron + Validity starts Vlefshmëria fillon + Value is not calculated Vlera nuk llogaritet + Value is the Vlera është + Value: Vlera: + Verify Verifiko + Verify to see what the document needs. Verifikoni për të parë çfarë i nevojitet dokumentit. + Version Versioni + Version {v} Versioni {v} + Vertical Vertikale + Vertical reversed Vertikale e kthyer + Vertically Vertikalisht + Video, sound and rich media must be tagged to be announced. Tag the multimedia annotations. Videoja, zëri dhe media e pasur duhet të etiketohen për t'u lexuar. Etiketoni shënimet e multimedias. + View less Shiko më pak + View more Shiko më shumë + View revision {n} Shiko rishikimin {n} + View signed version Shiko versionin e nënshkruar + Viewing Shikimi + Viewport Dritarja e pamjes + Viewport rectangle in page points (x, y, width, height) Drejtkëndëshi i dritares së pamjes në pika faqeje (x, y, gjerësia, lartësia) + Visible Rectangle Drejtkëndësh i dukshëm + Visual Pamor + Warnings Paralajmërimet + Watermark Filigran + Weak E dobët + Welcome to PdfCraft Mirë se vini në PdfCraft + What word or phrase would you like to search for? Çfarë fjale ose fraze do të kërkoni? + Whole words only Vetëm fjalë të plota + Width Gjerësia + Width: Gjerësia: + Window Options Opsionet e dritares + Windows store · Dyqani i Windows · + Write this email? Ta shkruani këtë email? + Wrong password Fjalëkalim i gabuar + Wrote 1 file to {dir} U shkrua 1 skedar te {dir} + Wrote {n} files to {dir} U shkruan {n} skedarë te {dir} + X Object Forms Forma X Object + XFA form: its fields and its XFA data are kept in step, so other viewers show what you fill in. Formular XFA: fushat dhe të dhënat XFA mbahen në përputhje, kështu që shfletuesit e tjerë shfaqin atë që plotësoni. + Yellow E verdhë + Yes Po + You are about to apply 1 redaction mark. Text, images and drawings under the marks, and comments and form fields that overlap them, are removed permanently. Jeni gati të zbatoni 1 shenjë redaktimi. Teksti, imazhet dhe vizatimet nën shenjat, si dhe komentet dhe fushat e formularit që mbivendosen me to, hiqen përgjithmonë. + You are about to apply {n} redaction marks. Text, images and drawings under the marks, and comments and form fields that overlap them, are removed permanently. Jeni gati të zbatoni {n} shenja redaktimi. Teksti, imazhet dhe vizatimet nën shenjat, si dhe komentet dhe fushat e formularit që mbivendosen me to, hiqen përgjithmonë. + You can pin up to {n} folders. Unpin one first. Mund të fiksoni deri në {n} dosje. Hiqni fiksimin e njërës më parë. + You have version {c}. All releases are listed at {page}. Keni versionin {c}. Të gjitha botimet janë të listuara te {page}. + You have version {c}. Download the new version from its release page. Keni versionin {c}. Shkarkoni versionin e ri nga faqja e botimit. + Your changes will be lost if you don't save them. Ndryshimet tuaja do të humbasin nëse nuk i ruani. + Your name Emri juaj + ZIP ZIP + Zip Code Kodi postar + Zip Code + 4 Kodi postar + 4 + Zoom Zmadhimi + Zoom in Zmadho + Zoom in (⌘+) Zmadho (⌘+) + Zoom in / out (also pinch or ⌘-scroll) Zmadho / zvogëlo (edhe me pinch ose ⌘-rrotullim) + Zoom out Zvogëlo + Zoom out (⌘−) Zvogëlo (⌘−) + Zoom to page level Zmadho në nivelin e faqes + `{command}` {when} `{command}` {when} + a bookmark cannot be moved inside itself një libërshënues nuk mund të zhvendoset brenda vetes + a document must keep at least one page një dokument duhet të mbajë të paktën një faqe + average mesatarja + background sfondi + characters karaktere + e.g. My stamps p.sh. Pullat e mia + e.g. en-US p.sh. en-US + for images above për imazhet mbi + header or footer koka ose këmba + initials inicialet + is available është i disponueshëm + is not available yet nuk është ende i disponueshëm + just now pikërisht tani + maximum maksimumi + minimum minimumi + needs an AI provider (off by default) kërkon një ofrues IA (i çaktivizuar si parazgjedhje) + no such document nuk ka dokument të tillë + none asnjë + nothing in the file matches this document asgjë në skedar nuk përputhet me këtë dokument + nothing to redo asgjë për ta ribërë + nothing to undo asgjë për ta zhbërë + of the following fields: e fushave të mëposhtme: + of {name} e {name} + of {pages} e {pages} + on page {label} në faqen {label} + open to see what it will include hapeni për të parë çfarë do të përfshijë + pages faqe + product (x) prodhimi (x) + ships in milestone {m} vjen në fazën {m} + signature nënshkrimi + sorted ascending renditur në rritje + sorted descending renditur në zbritje + sum (+) shuma (+) + the document has no form fields dokumenti nuk ka fusha formulari + the document has no page tree dokumenti nuk ka pemë faqesh + the document has no tags dokumenti nuk ka etiketa + the document is protected by a password dokumenti është i mbrojtur me fjalëkalim + the image is empty imazhi është bosh + the password is incorrect fjalëkalimi është i pasaktë + the title must not be empty titulli nuk duhet të jetë bosh + there are no pages to print nuk ka faqe për t'u printuar + there are no redaction marks to apply nuk ka shenja redaktimi për t'u zbatuar + this document is signed: rewriting it would invalidate its signatures (save it incrementally instead) ky dokument është i nënshkruar: rishkrimi i tij do të bënte të pavlefshme nënshkrimet (ruajeni në mënyrë inkrementale) + this file isn't XFDF, FDF, XML or text form data ky skedar nuk është të dhëna formulari XFDF, FDF, XML ose tekst + to deri në + to {n} deri në {n} + watermark filigrami + yesterday dje + {0}: {1} {0}: {1} + {c} of {n}{more} {c} nga {n}{more} + {dpi} pixels/inch {dpi} piksele/inç + {field}: {e} {field}: {e} + {file} is too large for a stamp (at most {n} MB) {file} është shumë i madh për një pullë (më së shumti {n} MB) + {folder} is already pinned to Home {folder} është tashmë i fiksuar te Kreu + {kind} Properties Vetitë e {kind} + {kind} field Fusha {kind} + {kind} · page {p} {kind} · faqja {p} + {kind} — click to show it on the page {kind} — klikoni për ta shfaqur në faqe + {k} of {n} {k} nga {n} + {label} (1 issue) {label} (1 problem) + {label} ({n} issues) {label} ({n} probleme) + {label} failed: {e} {label} dështoi: {e} + {month} {day}, {y} {day} {month}, {y} + {month} {y} {month} {y} + {msg} to {dir} {msg} te {dir} + {name} (default) {name} (parazgjedhja) + {name} can't be combined: {why} {name} nuk mund të kombinohet: {why} + {name} has no action {name} nuk ka veprim + {name} is read-only {name} është vetëm për lexim + {name} submits the form to {url}; PdfCraft doesn't send form data. Save the document to keep your entries. {name} dërgon formularin te {url}; PdfCraft nuk dërgon të dhëna formulari. Ruajeni dokumentin për të mbajtur të dhënat tuaja. + {name} — unsaved changes {name} — ndryshime të paruajtura + {name}: choosing images arrives on the web with file pickers for images {name}: zgjedhja e imazheve vjen në ueb me zgjedhës skedarësh për imazhe + {name}: the {other} action isn't supported yet {name}: veprimi {other} nuk mbështetet ende + {n} contributors · {c} commits {n} kontribues · {c} commit + {n} days ago {n} ditë më parë + {n} differences found U gjetën {n} dallime + {n} files {n} skedarë + {n} files done {n} skedarë përfunduan + {n} files need attention {n} skedarë kërkojnë vëmendje + {n} h ago {n} orë më parë + {n} instances {n} instanca + {n} issues {n} probleme + {n} marks {n} shenja + {n} match(es) marked for redaction. {n} përputhje u shënuan për redaktim. + {n} measurements use an unsupported format and are left out. {n} matje përdorin një format të pambështetur dhe janë lënë jashtë. + {n} min ago {n} min më parë + {n} pages {n} faqe + {n} pages selected {n} faqe të zgjedhura + {n} pages selected. {n} faqe të zgjedhura. + {n} selected {n} të zgjedhura + {n} {kind} {n} {kind} + {rule} - {status} {rule} - {status} + {s} action Veprimi {s} + This PDF uses the unsupported {s} action. Ky PDF përdor veprimin e pambështetur {s}. + {verb} Background {verb} sfondin + {verb} Header and Footer {verb} kokën dhe këmbën + {verb} Watermark {verb} filigranin + {verb} as "{name}" {verb} si "{name}" + {who} in this document tried to open an address PdfCraft won't open: {e}. {who} në këtë dokument u përpoq të hapte një adresë që PdfCraft nuk e hap: {e}. + {who} in this document tried to open an address PdfCraft won't open: {e}. Only web (http, https) and email (mailto) links open from documents. {who} në këtë dokument u përpoq të hapte një adresë që PdfCraft nuk e hap: {e}. Nga dokumentet hapen vetëm lidhjet e uebit (http, https) dhe të emailit (mailto). + {who} in this document wants to open this address in your browser: {who} në këtë dokument dëshiron ta hapë këtë adresë në shfletuesin tuaj: + {who} in this document wants to open your email app with this address: {who} në këtë dokument dëshiron të hapë aplikacionin tuaj të emailit me këtë adresë: + {words} on {pages} {words} në {pages} + ΔLOC ΔLOC + — (protection is applied when you save) — (mbrojtja zbatohet kur ruani) + “{name}” is protected. Enter a password to open it. “{name}” është i mbrojtur. Vendosni një fjalëkalim për ta hapur. + −Bin −Bin + −LOC −LOC +action wizard Start Fillo +certificate Subject Subjekti +comment menu Edit Redakto +signature pad Type Shkruaj +@plural {n} field|{n} fields {n} fushë|{n} fusha + ({n} at {dpi} dpi, the largest size they can be drawn at) ({n} në {dpi} dpi, madhësia më e madhe në të cilën mund të vizatohen) + A selected field has no widget on any page, so the fields can't be edited together. Një fushë e zgjedhur nuk ka widget në asnjë faqe, kështu që fushat nuk mund të redaktohen së bashku. + Butt Skaj i sheshtë + Character limit 0 means no limit. A comb of characters needs a limit. Kufiri 0 i karaktereve do të thotë pa kufi. Një krehër karakteresh kërkon një kufi. + Character limit: Kufiri i karaktereve: + Closed arrow Shigjetë e mbyllur + Comb of characters Krehër karakteresh + Couldn't open the printer's preferences: {e} Nuk u hapën preferencat e printerit: {e} + Custom font Font i personalizuar + Date format Formati i datës + Document properties ({key}) Vetitë e dokumentit ({key}) + Fill & Sign dates Datat e Fill & Sign + Flatten Fill & Sign when saving Sheshoje Fill & Sign gjatë ruajtjes + Font size 0 uses automatic sizing. Madhësia 0 e fontit përdor përmasim automatik. + Import list… Importo listën… + Larger pages Faqe më të mëdha + Line ending Fundi i vijës + Mixed E përzier + Multiple words or phrases Fjalë ose fraza të shumta + New bookmark ({key}) Libërshënues i ri ({key}) + New bookmarks from structure Libërshënues të rinj nga struktura + Next ({key}) Tjetra ({key}) + One word or phrase per line Një fjalë ose frazë për rresht + Only checked properties will change. Mixed means the selected fields have different values. Vetëm vetitë e shënuara do të ndryshojnë. E përzier do të thotë se fushat e zgjedhura kanë vlera të ndryshme. + Open a PDF ({key}) Hap një PDF ({key}) + Open arrow Shigjetë e hapur + Opens the printer driver's preferences. They are saved for every print from this computer; the copies, two-sided, grayscale and paper chosen here still apply. Hap preferencat e drajverit të printerit. Ato ruhen për çdo printim nga ky kompjuter; kopjet, dyanshmi, nuanca gri dhe letra e zgjedhur këtu vlejnë prapë. + Pattern Modeli + PdfCraft is drawing without a graphics processor, so it may be slow. Updating the graphics driver may help. PdfCraft po vizaton pa procesor grafik, ndaj mund të jetë i ngadaltë. Përditësimi i drajverit grafik mund të ndihmojë. + Previous ({key}) E mëparshmja ({key}) + Print ({key}) Printo ({key}) + Printer properties Vetitë e printerit + Redaction code: Kodi i redaktimit: + Reset page size Rivendos madhësinë e faqes + Reset to printer defaults Rivendos te parazgjedhjet e printerit + Reverse closed arrow Shigjetë e mbyllur e kundërt + Reverse open arrow Shigjetë e hapur e kundërt + Rotate view clockwise ({key}) Rrotullo pamjen në drejtim orar ({key}) + Rotation: Rrotullimi: + Same as interface ({language}) Njësoj si ndërfaqja ({language}) + Scroll tabs left Lëviz skedat majtas + Scroll tabs right Lëviz skedat djathtas + Shared Field Properties Vetitë e përbashkëta të fushës + Shift- or Ctrl/Command-click to select several fields. Shift- ose Ctrl/Command-klikoni për të zgjedhur disa fusha. + Slash Vijë e pjerrët + Smaller pages Faqe më të vogla + Text recognition isn't installed: its model files are missing. Reinstall PdfCraft, or set PDFCRAFT_MODELS to the folder that holds them. Njohja e tekstit nuk është e instaluar: mungojnë skedarët e modelit. Instaloni përsëri PdfCraft, ose vendosni PDFCRAFT_MODELS te dosja që i përmban. + Text, marks and signatures become part of the page. Other comments stay editable. Teksti, shenjat dhe nënshkrimet bëhen pjesë e faqes. Komentet e tjera mbeten të redaktueshme. + The document changed while you were editing field properties. Dokumenti ndryshoi ndërsa po redaktonit vetitë e fushës. + The document is no longer open. Dokumenti nuk është më i hapur. + The field properties could not be changed. Vetitë e fushës nuk mund të ndryshoheshin. + The field properties dialog is no longer open. Dialogu i vetive të fushës nuk është më i hapur. + The field {name} no longer exists. Fusha {name} nuk ekziston më. + The printer driver's own settings for this print: paper tray, paper type, finishing and more. Cilësimet e vetë drajverit të printerit për këtë printim: tabaka e letrës, lloji i letrës, përfundimi e më shumë. + The selected fields could not be found. Select them again. Fushat e zgjedhura nuk u gjetën. Zgjidhni ato përsëri. + The PDF text fonts can't draw “{c}” ({code}). Choose supported text. Fontet e tekstit PDF nuk mund të vizatojnë “{c}” ({code}). Zgjidhni tekst të mbështetur. + This printer offers no settings of its own. Ky printer nuk ofron cilësime të veta. + To change locked fields, also set Locked to No. Për të ndryshuar fushat e kyçura, vendosni edhe Kyçur në Jo. + Today: {date} Sot: {date} + Zoom in ({key}) Zmadho ({key}) + Zoom in / out (also pinch or {key}-scroll) Zmadho / zvogëlo (edhe me pinch ose {key}-rrotullim) + Zoom out ({key}) Zvogëlo ({key}) + the text recognition models are not installed (reinstall PdfCraft, or set PDFCRAFT_MODELS to the folder that holds them) modelet e njohjes së tekstit nuk janë të instaluara (instaloni përsëri PdfCraft, ose vendosni PDFCRAFT_MODELS te dosja që i përmban) + yyyy or yy year · m or mm month · mmm or mmmm month name · d or dd day · ddd or dddd weekday. H, h, M, s and t are time letters and can't be used on their own: put {escape} before a letter to show it as is. yyyy ose yy vit · m ose mm muaj · mmm ose mmmm emri i muajit · d ose dd ditë · ddd ose dddd ditë e javës. H, h, M, s dhe t janë shkronja ore dhe nuk mund të përdoren vetëm: vendosni {escape} para një shkronje për ta shfaqur siç është. + {chars} can't be written into the PDF yet: Fill & Sign text is Western European only. Pick a numeric format such as dd.mm.yyyy. {chars} nuk mund të shkruhet ende në PDF: teksti i Fill & Sign është vetëm evropianoperëndimor. Zgjidhni një format numerik si dd.mm.yyyy. + {name} is too large for a word list (at most 1 MB). {name} është shumë i madh për një listë fjalësh (më së shumti 1 MB). + {n} fields selected {n} fusha të zgjedhura + {n} word(s) or phrase(s) {n} fjalë ose frazë + Auto ({percent}%) Auto ({percent}%) + Auto follows the system's text size. Pages always render at the display's full resolution. Auto ndjek madhësinë e tekstit të sistemit. Faqet vizatohen gjithmonë në rezolucionin e plotë të ekranit. + Check the pages Kontrollo faqet + Collapse all Palos të gjitha + Column select Zgjedhje kolone + Drag the selection to move it. Esc clears the selection. Zvarrit zgjedhjen për ta lëvizur. Esc e pastron zgjedhjen. + Expand all Zgjero të gjitha + Files are combined in the order shown. Drag them to change it. Skedarët kombinohen sipas rendit të treguar. Zvarritini për ta ndryshuar. + Fill colour Ngjyra e mbushjes + Fill colour: none Ngjyra e mbushjes: asnjë + Finish or discard the text being edited before selecting several objects. Përfundoni ose hidhni tekstin që po redaktohet para se të zgjidhni disa objekte. + Grid view Pamja me rrjetë + Interface size Madhësia e ndërfaqes + List view Pamja me listë + Move object Lëviz objektin + Move objects Lëviz objektet + No fill Pa mbushje + Pages: {k} of {n} Faqet: {k} nga {n} + Preview unavailable: {e} Pamja paraprake nuk është e disponueshme: {e} + Remove page Hiq faqen + Remove {n} pages Hiq {n} faqe + Saved {place}: {before} → {after} (not smaller){detail} U ruajt {place}: {before} → {after} (jo më i vogël){detail} + Select at most 1000 objects at a time. Zgjidhni më së shumti 1000 objekte njëherësh. + Shift-click to select several objects. Drag empty space to select an area. Shift-klikoni për të zgjedhur disa objekte. Zvarrisni mbi hapësirë të zbrazët për të zgjedhur një zonë. + Some bookmarks are not shown here: the panel lists a limited number, nested a limited depth. Disa libërshënues nuk shfaqen këtu: paneli liston një numër të kufizuar, të ndërthurur në një thellësi të kufizuar. + Switch to List view to change the pages it takes. Kaloni te pamja me listë për të ndryshuar faqet që merr. + Text used as a clipping path cannot be moved with this selection. Teksti i përdorur si shteg prerjeje nuk mund të lëvizet me këtë zgjedhje. + These objects could not be moved. Select them again and try a smaller move. Këto objekte nuk mund të lëviznin. Zgjidhni ato përsëri dhe provoni një lëvizje më të vogël. + This file is already as small as it can be made ({size}). No copy was saved. Ky skedar është tashmë sa më i vogël që mund të bëhet ({size}). Nuk u ruajt asnjë kopje. + This page contains objects that cannot be selected together. Kjo faqe përmban objekte që nuk mund të zgjidhen së bashku. + Vertical text cannot be moved with this selection. Teksti vertikal nuk mund të lëvizet me këtë zgjedhje. +key Ctrl Ctrl +key Delete Fshi +key End End +key Esc Esc +key Home Home +key Shift Shift +key Space Hapësirë +@plural {n} object selected|{n} objects selected {n} objekt i zgjedhur|{n} objekte të zgjedhura + Looking for printers… Po kërkohen printerë… + Sending to {printer}… Po dërgohet te {printer}… + Float panel Shkëput panelin + Inspector Inspektori + Move to group Zhvendos te grupi + Panels Panelet + Reset panel layout Rivendos strukturën e paneleve + Resize panel window Ndrysho madhësinë e dritares së panelit + Resize panels Ndrysho madhësinë e paneleve + Tools Veglat + Appearance mode Mënyra e pamjes + Light E çelët + Dark E errët + Active Aktive + Dark theme Tema e errët + Appearance settings… Cilësimet e pamjes… + Save ({key}) Ruaj ({key}) + Select page {label} Zgjidh faqen {label} + Rotate page {label} counterclockwise Rrotullo faqen {label} në drejtim kundërorar + Rotate page {label} clockwise Rrotullo faqen {label} në drejtim orar + Delete page {label} Fshi faqen {label} + Offset from centre Zhvendosja nga qendra + Graphic Grafik + Signer's name Emri i nënshkruesit + Fill & Sign signature Nënshkrimi Fill & Sign + Choose image… Zgjidh imazhin… + Enter permissions password… Vendos fjalëkalimin e lejeve… + Permissions password Fjalëkalimi i lejeve + “{name}” has security restrictions. Enter its permissions password to lift them. “{name}” ka kufizime sigurie. Vendosni fjalëkalimin e lejeve për t'i hequr. + Restrictions lifted Kufizimet u hoqën + Couldn't unlock {name}: {e} Nuk u zhbllokua {name}: {e} + This document has no restrictions to lift Ky dokument nuk ka kufizime për t'u hequr + The document's security settings don't allow copying text and images Cilësimet e sigurisë së dokumentit nuk lejojnë kopjimin e tekstit dhe imazheve + Add the files to combine Shtoni skedarët për t'u kombinuar + Leave out files that can't be read? Të lihen jashtë skedarët që nuk lexohen? + These files can't be read, so they won't be in the combined PDF: Këta skedarë nuk lexohen, ndaj nuk do të jenë në PDF-në e kombinuar: + Combine the rest Kombino pjesën tjetër + and {n} more dhe {n} të tjerë + Drop PDFs, images, text files or folders here, or choose them. Hidhni këtu PDF, imazhe, skedarë teksti ose dosje, ose zgjidhini. + Every PDF, image and text file in the folder Çdo skedar PDF, imazh dhe teksti në dosje + Every PDF, image and text file in the folder and the folders inside it Çdo skedar PDF, imazh dhe teksti në dosje dhe në dosjet brenda saj + No PDFs, images or text files found in {folder} Nuk u gjetën PDF, imazhe ose skedarë teksti në {folder} + Added the first {n} files in {folder} U shtuan {n} skedarët e parë në {folder} + Margins Margjinat + For page sizes and margins. Për madhësitë e faqeve dhe margjinat. + PDF page: {size} Faqja PDF: {size} + Match page at 100% Përputh faqen në 100% + PDF scale: {scale}% Shkalla e PDF: {scale}% + Printer paper and scaling may differ. Check driver settings. Letra dhe shkallëzimi i printerit mund të ndryshojnë. Kontrolloni cilësimet e drajverit. + Drawing scale changes. Use Actual size for full-scale plans. Shkalla e vizatimit ndryshon. Përdorni Madhësinë aktuale për planet në shkallë të plotë. + Reload documents when their files change on disk Ringarko dokumentet kur skedarët e tyre ndryshojnë në disk + This file changed on disk. Reload it to see the new version; your unsaved changes will be lost. Ky skedar ndryshoi në disk. Ringarkojeni për të parë versionin e ri; ndryshimet tuaja të paruajtura do të humbasin. + Reload Ringarko + Couldn't reload {name}: {e} Nuk u ringarkua {name}: {e} + Mouse wheel scroll speed Shpejtësia e lëvizjes me rrotëzën e miut +scroll speed Slow Ngadalë +scroll speed Normal Normale +scroll speed Fast Shpejt + Animation effects Efektet e animacionit +animation effects On Aktiv +animation effects Off Joaktiv + Enhance camera image Përmirëso imazhin e kamerës + Drag the corners onto the document's edges, then choose Enhance page. Zvarrisni qoshet te skajet e dokumentit, pastaj zgjidhni Përmirëso faqen. + Enhance page Përmirëso faqen + Done adding text Përfundoi shtimi i tekstit + Discard this text (Esc) Hidhe këtë tekst (Esc) + Clean-up Pastrimi + Original Origjinali + Greyscale Nuanca gri + Black and white Bardhë e zi + Reading colours Ngjyrat e leximit + Replace document colours Zëvendëso ngjyrat e dokumentit + Black on white E zezë mbi të bardhë + White on black E bardhë mbi të zezë + Yellow on black E verdhë mbi të zezë + Green on black E gjelbër mbi të zezë + Page background Sfondi i faqes + Only change the colour of black text or line art Ndrysho vetëm ngjyrën e tekstit të zi ose të vijave + Change the colour of line art as well as text Ndrysho ngjyrën e vijave si dhe të tekstit + Colours are remapped while rendering; the document itself never changes. Ngjyrat ripërcaktohen gjatë vizatimit; vetë dokumenti nuk ndryshon kurrë. + This printer's driver doesn't take two-sided settings from other programs, so its own setting applies. Change it in Properties… Drajveri i këtij printeri nuk i merr cilësimet dyanshe nga programet e tjera, ndaj zbatohet cilësimi i tij. Ndryshojeni te Vetitë… + This field's font can't draw “{c}” ({code}), so PdfCraft shows ? in its place. The value is saved, and other PDF viewers redraw the field from it. Fonti i kësaj fushe nuk mund të vizatojë “{c}” ({code}), ndaj PdfCraft shfaq ? në vend të tij. Vlera ruhet dhe shfaqësit e tjerë PDF e vizatojnë fushën nga ajo. + The fonts PdfCraft writes with can't draw “{c}” ({code}), so it shows as ? in every PDF viewer. The text is saved. Fontet me të cilat shkruan PdfCraft nuk mund të vizatojnë “{c}” ({code}), ndaj shfaqet si ? në çdo shfaqës PDF. Teksti ruhet. + Browser's print dialog Dialogu i printimit të shfletuesit + Copies, two-sided printing and colour are chosen in the browser's print dialog. Kopjet, printimi dyanësh dhe ngjyra zgjidhen në dialogun e printimit të shfletuesit. + Preparing {n} sheets for printing… Po përgatiten {n} fletë për printim… + Preparing sheet {done} of {total} for printing… Po përgatitet fleta {done} nga {total} për printim… + Opening the browser's print dialog… Po hapet dialogu i printimit të shfletuesit… + Couldn't print from the browser ({e}); downloaded {name} to print instead Nuk u printua nga shfletuesi ({e}); u shkarkua {name} për ta printuar + Tools panel side Ana e panelit të veglave + Add comment Shto koment + Change tag properties Ndrysho vetitë e etiketës + Tags panel Paneli i etiketave + Tags Etiketat + Tag type Lloji i etiketës + Actual text Teksti aktual + Find a tag Gjej një etiketë + Collapse tag Palos etiketën + Expand tag Zgjero etiketën + Revert changes Ktheji ndryshimet + Save tag properties Ruaj vetitë e etiketës + This document has no editable structure tags. Ky dokument nuk ka etiketa strukture të redaktueshme. + {n} tags {n} etiketa + Save or revert changes before selecting another tag. Ruani ose ktheni ndryshimet para se të zgjidhni një etiketë tjetër. + Left out: {names} Lënë jashtë: {names} + already a PDF tashmë një PDF + no unused output name nuk ka emër të papërdorur dalës + no output folder was chosen nuk u zgjodh dosje dalëse +@plural Downloaded {n} PDF|Downloaded {n} PDFs U shkarkua {n} PDF|U shkarkuan {n} PDF +@plural {n} field name collides with earlier files and will be renamed: {list}|{n} field names collide with earlier files and will be renamed: {list} {n} emër fushe përplaset me skedarët e mëparshëm dhe do të riemërtohet: {list}|{n} emra fushash përplasen me skedarët e mëparshëm dhe do të riemërtohen: {list} + Scan Skano + Sign a sheet of white paper and take a photo of it in bright, even light (use the flash). Choose the photo or drop it here: PdfCraft finds the signature and removes the paper. Nënshkruani një fletë letre të bardhë dhe bëni një foto në dritë të fortë e të njëtrajtshme (përdorni blicin). Zgjidhni foton ose hidheni këtu: PdfCraft gjen nënshkrimin dhe heq letrën. + Choose photo… Zgjidh foton… + No photo chosen Nuk u zgjodh foto + Photo Foto + Ink sensitivity Ndjeshmëria e bojës + No signature was found in the frame. Move the frame over the signature or raise the ink sensitivity. Nuk u gjet nënshkrim në kornizë. Lëvizeni kornizën mbi nënshkrim ose rritni ndjeshmërinë e bojës. + Couldn't use the photo: {e} Nuk u përdor dot fotoja: {e} + Close Tab Mbyll skedën + Reopen Closed Tab Rihap skedën e mbyllur + Reveal in Finder Shfaq në Finder + Reveal in File Explorer Shfaq në File Explorer + Other colour… Ngjyrë tjetër… + Recent colours Ngjyrat e fundit + Couldn't follow linked PDF: {reason} Nuk u ndoq dot PDF-ja e lidhur: {reason} + The linked PDF opened, but its named destination was not applied. PDF-ja e lidhur u hap, por destinacioni i saj i emërtuar nuk u zbatua. + The linked PDF opened, but its page destination was out of range. PDF-ja e lidhur u hap, por destinacioni i faqes ishte jashtë kufijve. + Local cross-PDF links require the desktop app Lidhjet e brendshme midis PDF-ve lokale kërkojnë aplikacionin desktop + Next tab Skeda tjetër + Minimize Minimizo + Maximize Maksimizo + Restore Rikthe + Use system title bar Përdor shiritin e titullit të sistemit + Show a basic title bar for the window buttons instead of the tab strip. GNOME doesn't draw title bars for apps, so this one doesn't follow its theme. Shfaq një shirit bazë titulli për butonat e dritares në vend të shiritit të skedave. GNOME nuk vizaton shirita titulli për aplikacionet, prandaj ky nuk e ndjek temën e tij. + Allow Lejo + Only allow this if you trust the source document. Lejoje vetëm nëse i beson dokumentit burimor. + Open this local PDF? Të hapet ky PDF lokal? + This document is trying to open a local file: Ky dokument po përpiqet të hapë një skedar lokal: + Move tag earlier Zhvendose etiketën më herët + Move tag later Zhvendose etiketën më vonë + Remove "{name}" from this list? The file itself is not deleted. Të hiqet «{name}» nga kjo listë? Vetë skedari nuk fshihet. + Previous tab Skeda e mëparshme diff --git a/crates/ui-egui/tests/fonts.rs b/crates/ui-egui/tests/fonts.rs index 63a31d4cf..3251377ba 100644 --- a/crates/ui-egui/tests/fonts.rs +++ b/crates/ui-egui/tests/fonts.rs @@ -264,7 +264,7 @@ fn ui_fonts_work_without_craft_fonts() { theme::install_fonts(&ctx); } -/// Latin- and Cyrillic-script catalogs (Czech, Brazilian Portuguese, German, Spanish, French, Russian, Bulgarian, Hungarian, Ukrainian, Italian, Slovene) are drawn entirely by the app's own faces +/// Latin- and Cyrillic-script catalogs (Czech, Brazilian Portuguese, German, Spanish, French, Russian, Bulgarian, Hungarian, Ukrainian, Italian, Slovene, Albanian) are drawn entirely by the app's own faces /// (Inter, JetBrains Mono): no letter falls through to egui's defaults or a CJK fallback. (egui's /// `has_glyphs` can't answer this: with only the primary face it is also the replacement face.) #[test] @@ -287,6 +287,7 @@ fn primary_ui_fonts_cover_latin_and_cyrillic_catalogs() { ("tr", include_str!("../src/i18n/tr.tsv")), ("sl", include_str!("../src/i18n/sl.tsv")), ("lt", include_str!("../src/i18n/lt.tsv")), + ("sq", include_str!("../src/i18n/sq.tsv")), ] { let mut text = String::from("áčďéěíňóřšťúůýžÁČĎÉĚÍŇÓŘŠŤÚŮÝŽãõçâêôàÃÕÇÂÊÔÀñÑüÜäÄöÖőűß„“¿¡«»…ґҐєЄіІїЇәғқңөұүһӘҒҚҢӨҰҮҺ"); for line in catalog.lines().filter(|l| !l.starts_with('#')) { diff --git a/docs/localization-parity.md b/docs/localization-parity.md index ccd5f88b9..ccfd19e78 100644 --- a/docs/localization-parity.md +++ b/docs/localization-parity.md @@ -66,8 +66,9 @@ none has translated help. | Greek | `el` | 2,341 entries | partial | no | | Turkish | `tr` | 2,313 entries | partial | yes | | Lithuanian | `lt` | 2,578 entries | partial; community native-speaker review ([#1401](https://github.com/storytold/pdfcraft/pull/1401)) | no | +| Albanian | `sq` | 2,344 entries | partial; not yet reviewed by a native speaker | no | -**14 other languages** ship (21 catalogs plus English, 22 interface languages in Preferences). +**15 other languages** ship (22 catalogs plus English, 23 interface languages in Preferences). The entry counts without percentages were measured on 2026-10-12; they are not percentages of the older 2,143-key snapshot above. Their presence does not imply a detailed linguistic or runtime review. Acrobat languages PdfCraft lacks: Danish, Dutch, Finnish, Norwegian, Swedish, Hebrew. @@ -75,5 +76,6 @@ Acrobat languages PdfCraft lacks: Danish, Dutch, Finnish, Norwegian, Swedish, He | Date | Change | Summary | |---|---|---| +| 2026-10-12 | minor | Added Albanian (`sq`): catalog, date names, Preferences entry | | 2026-10-12 | minor | Added current counts for Kazakh, Polish, Slovenian, Greek, Turkish and Lithuanian; retained existing language assessments and the original percentage snapshot | | 2026-10-10 | major | Created. Catalog counts measured from `crates/ui-egui/src/i18n/*.tsv` against the 2,143-key union; Acrobat's localizations from its bundle's `.lproj` and Sequences folder names | diff --git a/docs/localization.md b/docs/localization.md index 05240cafb..b45b2cbb3 100644 --- a/docs/localization.md +++ b/docs/localization.md @@ -1,10 +1,10 @@ # Interface language -Choose **Menu > Edit > Preferences…** (Command-comma on macOS, Ctrl-comma elsewhere) **> Interface language** and select **Auto**, **English**, **日本語**, **简体中文**, **繁體中文**, **Čeština**, **Português (Brasil)**, **Deutsch**, **Español**, **Français**, **Русский**, **Қазақша**, **Български**, **తెలుగు**, **Magyar**, **Українська**, **Italiano**, **العربية**, **Polski**, **Slovenščina**, **Ελληνικά**, **Türkçe** or **Lietuvių**. The change applies immediately and persists between launches. Command ids, document contents and file names are unchanged. +Choose **Menu > Edit > Preferences…** (Command-comma on macOS, Ctrl-comma elsewhere) **> Interface language** and select **Auto**, **English**, **日本語**, **简体中文**, **繁體中文**, **Čeština**, **Português (Brasil)**, **Deutsch**, **Español**, **Français**, **Русский**, **Қазақша**, **Български**, **తెలుగు**, **Magyar**, **Українська**, **Italiano**, **العربية**, **Polski**, **Slovenščina**, **Ελληνικά**, **Türkçe**, **Lietuvių** or **Shqip**. The change applies immediately and persists between launches. Command ids, document contents and file names are unchanged. Displayed keyboard shortcuts use the same active interface language. For example, German shows `Strg+K` and `Strg+Umschalt+S` in the toolbar, menus, command palette, tooltips and Keyboard shortcuts dialog; macOS keeps its modifier symbols (`⌘`, `⇧`, `⌃`). Key names have their own `key` catalog context, so the Delete key can read `Entf` while the command remains `Löschen`. A missing key-name entry falls back to the English key name. Actual bindings and machine-facing command ids remain stable. -**Auto** (the default) follows the system language: `LC_ALL`, `LC_MESSAGES` or `LANG`, then the preferred-languages list on macOS. Any Portuguese locale (`pt_BR`, `pt_PT`) uses the Brazilian catalog, any French locale (`fr`, `fr_FR`, `fr_CA`, `fr_BE`) the French one, any German locale (`de`, `de_DE`, `de_AT`, `de_CH`) the German one, and Chinese locales for Taiwan, Hong Kong and Macau (`zh_TW`, `zh_HK`, `zh_MO`, `zh-Hant`) the Traditional Chinese one; other Chinese locales (`zh`, `zh_CN`, `zh_SG`, `zh-Hans`) the Simplified Chinese one. Telugu locales (`te`, `te_IN`) use the Telugu catalog, Bulgarian locales (`bg`, `bg_BG`) the Bulgarian one, and Hungarian locales (`hu`, `hu_HU`) the Hungarian one, and Ukrainian locales (`uk`, `uk_UA`) the Ukrainian one, and Italian locales (`it`, `it_IT`, `it_CH`) the Italian one, and Arabic locales (`ar`, `ar_MA`, `ar_EG`, `ar_SA`, …) the Arabic one, and Turkish locales (`tr`, `tr_TR`) the Turkish one, and Slovenian locales (`sl`, `sl_SI`) the Slovenian one. A system language without a catalog shows English. On Windows, **Auto** uses the Windows display languages, in preference order, when no supported locale is selected by those environment variables. Neutral `C`/`POSIX` locale values (including `C.UTF-8`) inherited from a launcher do not override the Windows display language; explicitly named supported locales such as `fr_FR.UTF-8` still do. The query asks Windows directly (`GetUserPreferredUILanguages`, through the `sys-locale` crate) without starting a process, and is cached for the process. If detection fails or the display language has no catalog, PdfCraft shows English. +**Auto** (the default) follows the system language: `LC_ALL`, `LC_MESSAGES` or `LANG`, then the preferred-languages list on macOS. Any Portuguese locale (`pt_BR`, `pt_PT`) uses the Brazilian catalog, any French locale (`fr`, `fr_FR`, `fr_CA`, `fr_BE`) the French one, any German locale (`de`, `de_DE`, `de_AT`, `de_CH`) the German one, and Chinese locales for Taiwan, Hong Kong and Macau (`zh_TW`, `zh_HK`, `zh_MO`, `zh-Hant`) the Traditional Chinese one; other Chinese locales (`zh`, `zh_CN`, `zh_SG`, `zh-Hans`) the Simplified Chinese one. Telugu locales (`te`, `te_IN`) use the Telugu catalog, Bulgarian locales (`bg`, `bg_BG`) the Bulgarian one, and Hungarian locales (`hu`, `hu_HU`) the Hungarian one, and Ukrainian locales (`uk`, `uk_UA`) the Ukrainian one, and Italian locales (`it`, `it_IT`, `it_CH`) the Italian one, and Arabic locales (`ar`, `ar_MA`, `ar_EG`, `ar_SA`, …) the Arabic one, and Turkish locales (`tr`, `tr_TR`) the Turkish one, and Slovenian locales (`sl`, `sl_SI`) the Slovenian one, and Albanian locales (`sq`, `sq_AL`, `sq_XK`, …) the Albanian one. A system language without a catalog shows English. On Windows, **Auto** uses the Windows display languages, in preference order, when no supported locale is selected by those environment variables. Neutral `C`/`POSIX` locale values (including `C.UTF-8`) inherited from a launcher do not override the Windows display language; explicitly named supported locales such as `fr_FR.UTF-8` still do. The query asks Windows directly (`GetUserPreferredUILanguages`, through the `sys-locale` crate) without starting a process, and is cached for the process. If detection fails or the display language has no catalog, PdfCraft shows English. The control channel exposes the setting through `ui.set`: @@ -12,10 +12,10 @@ The control channel exposes the setting through `ui.set`: {"method":"ui.set","params":{"key":"language","value":"ja"}} ``` -The value is `auto` or a language code (`en`, `ja`, `zh-hans`, `zh-hant`, `cs`, `pt-br`, `de`, `es`, `fr`, `ru`, `kk`, `bg`, `te`, `hu`, `uk`, `it`, `ar`, `pl`, `sl`, `el`, `tr`, `lt`), in any case. `ui.state` reports `language` as written in the preferences (`auto`, `en`, `ja`, `zh-hans`, `zh-hant`, `cs`, `pt-br`, `de`, `es`, `fr`, `ru`, `kk`, `bg`, `te`, `hu`, `uk`, `it`, `ar`, `pl`, `sl`, `el`, `tr` or `lt`). Unknown values return an error without changing the current setting. Preferences saved before this setting existed follow the system language. +The value is `auto` or a language code (`en`, `ja`, `zh-hans`, `zh-hant`, `cs`, `pt-br`, `de`, `es`, `fr`, `ru`, `kk`, `bg`, `te`, `hu`, `uk`, `it`, `ar`, `pl`, `sl`, `el`, `tr`, `lt`, `sq`), in any case. `ui.state` reports `language` as written in the preferences (`auto`, `en`, `ja`, `zh-hans`, `zh-hant`, `cs`, `pt-br`, `de`, `es`, `fr`, `ru`, `kk`, `bg`, `te`, `hu`, `uk`, `it`, `ar`, `pl`, `sl`, `el`, `tr`, `lt` or `sq`). Unknown values return an error without changing the current setting. Preferences saved before this setting existed follow the system language. -Dialogs, panels, menus, notices and history labels go through the catalog (`tl!`). Japanese, Traditional Chinese, Simplified Chinese, Russian, Bulgarian, German, Spanish, French, Telugu, Hungarian, Ukrainian, Italian, Brazilian Portuguese and Arabic translate them (about 2,000–2,140 entries each); Czech and Turkish cover the menus so far. Untranslated labels use English. Error details that come from the engine or the operating system are shown as they are, inside a translated frame ("操作「…」に失敗しました: …"). The command palette matches the translated label, the English label and the command id. Vertical Japanese PDF rendering is an existing viewer feature; this change does not add vertical text editing. Per-language coverage, script support and what each language still needs are in [localization-parity.md](localization-parity.md). -Dialogs, panels, menus, notices and history labels go through the catalog (`tl!`). Japanese, Traditional Chinese, Simplified Chinese, Russian, Bulgarian, German, Spanish, French, Telugu, Hungarian, Ukrainian, Italian, Brazilian Portuguese, Arabic and Slovenian translate them (about 2,000–2,190 entries each); Czech covers the menus so far. Untranslated labels use English. Error details that come from the engine or the operating system are shown as they are, inside a translated frame ("操作「…」に失敗しました: …"). The command palette matches the translated label, the English label and the command id. Vertical Japanese PDF rendering is an existing viewer feature; this change does not add vertical text editing. Per-language coverage, script support and what each language still needs are in [localization-parity.md](localization-parity.md). +Dialogs, panels, menus, notices and history labels go through the catalog (`tl!`). Japanese, Traditional Chinese, Simplified Chinese, Russian, Bulgarian, German, Spanish, French, Telugu, Hungarian, Ukrainian, Italian, Brazilian Portuguese, Arabic and Albanian translate them (about 2,000–2,140 entries each); Czech and Turkish cover the menus so far. Untranslated labels use English. Error details that come from the engine or the operating system are shown as they are, inside a translated frame ("操作「…」に失敗しました: …"). The command palette matches the translated label, the English label and the command id. Vertical Japanese PDF rendering is an existing viewer feature; this change does not add vertical text editing. Per-language coverage, script support and what each language still needs are in [localization-parity.md](localization-parity.md). +Dialogs, panels, menus, notices and history labels go through the catalog (`tl!`). Japanese, Traditional Chinese, Simplified Chinese, Russian, Bulgarian, German, Spanish, French, Telugu, Hungarian, Ukrainian, Italian, Brazilian Portuguese, Arabic, Slovenian and Albanian translate them (about 2,000–2,190 entries each); Czech covers the menus so far. Untranslated labels use English. Error details that come from the engine or the operating system are shown as they are, inside a translated frame ("操作「…」に失敗しました: …"). The command palette matches the translated label, the English label and the command id. Vertical Japanese PDF rendering is an existing viewer feature; this change does not add vertical text editing. Per-language coverage, script support and what each language still needs are in [localization-parity.md](localization-parity.md). Whole sentences that the layers below word — what the accessibility checker found, what the PDF/A verifier reports, what a signature's details say, what is wrong with the pages to print, what an edit is called in the history — are translated too, because those layers hand the sentence over apart from the document's own words. See [Sentences the engine words](#sentences-the-engine-words). @@ -25,12 +25,14 @@ The Lithuanian catalog has 2,578 entries and three integer plural forms. Calenda Edit text reads Hebrew lines in typing order and writes them back in drawing order (`crates/edit/src/bidi.rs`); letters the page's own font lacks are drawn with the craft-fonts `Hebr` face (Noto Sans Hebrew) as Type 3 glyphs, and a build without one says so. Hebrew points (niqqud) can't be written yet. The craft-fonts revision pinned for CI and releases has no `Hebr` face yet, so until one is added releases report that error instead of drawing the missing letters. -Japanese interface text uses BIZ UDPGothic from [craft-fonts](https://github.com/storytold/craft-fonts), an optional build input that every release includes (`CRAFT_FONTS_DIR`; see the README). A build made without it has no Japanese face, so Japanese labels show replacement boxes. Chinese is drawn with the same craft-fonts CJK faces (in Simplified Chinese the `Hans` faces come first, so a line never mixes faces with different baselines), so a character none of them has shows a replacement box (and every Chinese character does in a build without craft-fonts). Russian, Bulgarian, Czech, Brazilian Portuguese, German, Spanish, French, Hungarian, Italian, Turkish and Lithuanian need only the bundled Latin faces (tested in `tests/fonts.rs`). Hungarian uses the same one/other plural rule as English: 1 is singular, and every other count — including 0 — is the other form. After a numeral the noun stays singular (`1 oldal`, `2 oldal`). Telugu is drawn with a craft-fonts `Telu` face (Noto Sans Telugu, kept in the web build too), whose conjuncts egui shapes; a build without one shows Telugu labels as replacement boxes, and the release-pinned craft-fonts input has no Telugu face yet. -Japanese interface text uses BIZ UDPGothic from [craft-fonts](https://github.com/storytold/craft-fonts), an optional build input that every release includes (`CRAFT_FONTS_DIR`; see the README). A build made without it has no Japanese face, so Japanese labels show replacement boxes. Chinese is drawn with the same craft-fonts CJK faces (in Simplified Chinese the `Hans` faces come first, so a line never mixes faces with different baselines), so a character none of them has shows a replacement box (and every Chinese character does in a build without craft-fonts). Russian, Bulgarian, Czech, Brazilian Portuguese, German, Spanish, French, Hungarian, Italian and Slovenian need only the bundled Latin faces (tested in `tests/fonts.rs`). Slovenian has four plural forms: one (1, 101, 201…), two (2, 102…), few (3, 4, 103…) and other (everything else, including 0, 5–20 and 21+), so `@plural` entries list four forms (`1 stran`, `2 strani`, `3 strani`, `5 strani`). Hungarian uses the same one/other plural rule as English: 1 is singular, and every other count — including 0 — is the other form. After a numeral the noun stays singular (`1 oldal`, `2 oldal`). Telugu is drawn with a craft-fonts `Telu` face (Noto Sans Telugu, kept in the web build too), whose conjuncts egui shapes; a build without one shows Telugu labels as replacement boxes, and the release-pinned craft-fonts input has no Telugu face yet. -Japanese interface text uses BIZ UDPGothic from [craft-fonts](https://github.com/storytold/craft-fonts), an optional build input that every release includes (`CRAFT_FONTS_DIR`; see the README). A build made without it has no Japanese face, so Japanese labels show replacement boxes. Chinese is drawn with the same craft-fonts CJK faces (in Simplified Chinese the `Hans` faces come first, so a line never mixes faces with different baselines), so a character none of them has shows a replacement box (and every Chinese character does in a build without craft-fonts). Until craft-fonts has an allowed `Hans` face, the desktop app draws a Chinese interface with a Chinese face already installed on the machine (Microsoft YaHei or JhengHei on Windows, PingFang, Hiragino Sans GB or STHeiti on macOS, WenQuanYi or Droid Sans Fallback on Linux; never Noto CJK or Source Han), placed before the Japanese faces so a line keeps one face (#826). The web build has no installed fonts to fall back on. Russian, Bulgarian, Czech, Brazilian Portuguese, German, Spanish, French, Hungarian and Italian need only the bundled Latin faces (tested in `tests/fonts.rs`). Hungarian uses the same one/other plural rule as English: 1 is singular, and every other count — including 0 — is the other form. After a numeral the noun stays singular (`1 oldal`, `2 oldal`). Telugu is drawn with a craft-fonts `Telu` face (Noto Sans Telugu, kept in the web build too), whose conjuncts egui shapes; a build without one shows Telugu labels as replacement boxes, and the release-pinned craft-fonts input has no Telugu face yet. +Japanese interface text uses BIZ UDPGothic from [craft-fonts](https://github.com/storytold/craft-fonts), an optional build input that every release includes (`CRAFT_FONTS_DIR`; see the README). A build made without it has no Japanese face, so Japanese labels show replacement boxes. Chinese is drawn with the same craft-fonts CJK faces (in Simplified Chinese the `Hans` faces come first, so a line never mixes faces with different baselines), so a character none of them has shows a replacement box (and every Chinese character does in a build without craft-fonts). Russian, Bulgarian, Czech, Brazilian Portuguese, German, Spanish, French, Hungarian, Italian, Turkish, Lithuanian and Albanian need only the bundled Latin faces (tested in `tests/fonts.rs`). Hungarian uses the same one/other plural rule as English: 1 is singular, and every other count — including 0 — is the other form. After a numeral the noun stays singular (`1 oldal`, `2 oldal`). Telugu is drawn with a craft-fonts `Telu` face (Noto Sans Telugu, kept in the web build too), whose conjuncts egui shapes; a build without one shows Telugu labels as replacement boxes, and the release-pinned craft-fonts input has no Telugu face yet. +Japanese interface text uses BIZ UDPGothic from [craft-fonts](https://github.com/storytold/craft-fonts), an optional build input that every release includes (`CRAFT_FONTS_DIR`; see the README). A build made without it has no Japanese face, so Japanese labels show replacement boxes. Chinese is drawn with the same craft-fonts CJK faces (in Simplified Chinese the `Hans` faces come first, so a line never mixes faces with different baselines), so a character none of them has shows a replacement box (and every Chinese character does in a build without craft-fonts). Russian, Bulgarian, Czech, Brazilian Portuguese, German, Spanish, French, Hungarian, Italian, Slovenian and Albanian need only the bundled Latin faces (tested in `tests/fonts.rs`). Slovenian has four plural forms: one (1, 101, 201…), two (2, 102…), few (3, 4, 103…) and other (everything else, including 0, 5–20 and 21+), so `@plural` entries list four forms (`1 stran`, `2 strani`, `3 strani`, `5 strani`). Hungarian uses the same one/other plural rule as English: 1 is singular, and every other count — including 0 — is the other form. After a numeral the noun stays singular (`1 oldal`, `2 oldal`). Telugu is drawn with a craft-fonts `Telu` face (Noto Sans Telugu, kept in the web build too), whose conjuncts egui shapes; a build without one shows Telugu labels as replacement boxes, and the release-pinned craft-fonts input has no Telugu face yet. +Japanese interface text uses BIZ UDPGothic from [craft-fonts](https://github.com/storytold/craft-fonts), an optional build input that every release includes (`CRAFT_FONTS_DIR`; see the README). A build made without it has no Japanese face, so Japanese labels show replacement boxes. Chinese is drawn with the same craft-fonts CJK faces (in Simplified Chinese the `Hans` faces come first, so a line never mixes faces with different baselines), so a character none of them has shows a replacement box (and every Chinese character does in a build without craft-fonts). Until craft-fonts has an allowed `Hans` face, the desktop app draws a Chinese interface with a Chinese face already installed on the machine (Microsoft YaHei or JhengHei on Windows, PingFang, Hiragino Sans GB or STHeiti on macOS, WenQuanYi or Droid Sans Fallback on Linux; never Noto CJK or Source Han), placed before the Japanese faces so a line keeps one face (#826). The web build has no installed fonts to fall back on. Russian, Bulgarian, Czech, Brazilian Portuguese, German, Spanish, French, Hungarian, Italian and Albanian need only the bundled Latin faces (tested in `tests/fonts.rs`). Hungarian uses the same one/other plural rule as English: 1 is singular, and every other count — including 0 — is the other form. After a numeral the noun stays singular (`1 oldal`, `2 oldal`). Telugu is drawn with a craft-fonts `Telu` face (Noto Sans Telugu, kept in the web build too), whose conjuncts egui shapes; a build without one shows Telugu labels as replacement boxes, and the release-pinned craft-fonts input has no Telugu face yet. The Brazilian Portuguese catalog has 2,000 entries: the ~1,826-entry gist André Cardoso posted in [#288](https://github.com/storytold/pdfcraft/issues/288), the labels added since, and a review of the existing wording. Portuguese, like French, treats 0 and 1 as singular (`1 página`, `2 páginas`). +The Albanian catalog (`sq.tsv`, interface name **Shqip**) is written in Standard Albanian with the imperative for commands (`Ruaj`, `Hap`, `Fshi`). Albanian uses two plural forms like English: 1 is singular and every other count, including 0, is plural (`1 faqe`, `2 faqe`). Month and weekday names are lowercase (`mars`, `e shtunë`), and the letters `ë` and `ç` are covered by the bundled Latin faces. It has not been reviewed by a native Albanian speaker yet. + ## Arabic and right-to-left text The Arabic catalog has 2,137 entries in Modern Standard Arabic with Western digits. Counts use the six [CLDR Arabic forms](https://www.unicode.org/cldr/charts/48/supplemental/language_plural_rules.html#ar) (`0`, `1`, `2`, `3–10`, `11–99`, the rest), and dates use the Arabic names of the Gregorian months. From d2fc6c1be38ef39f7e7fd254d8736abcb61ce926 Mon Sep 17 00:00:00 2001 From: marcintrojnacki Date: Thu, 15 Oct 2026 09:53:00 +0200 Subject: [PATCH 04/33] M14: Polish says what a signature says, and the rest of the interface MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A Polish signature panel headed "Ważność podpisu jest NIEZNANA" and listed its details in English: the catalog had none of the engine's signature wordings (sign::pdf::WORDINGS, 57) or the changes after signing they name (kind::ALL, 10), and lacked 34 UI literals besides. All 101 are translated, and two tests keep them so: - polish_covers_ui_literals, every tl!() literal (as Japanese has); - polish_says_what_a_signature_says, the signature wordings and change kinds with their {} holes. Both fail on the previous catalog. ATTRIBUTION.toml carries the new hash. Co-Authored-By: Claude Opus 5.5 --- ATTRIBUTION.toml | 2 +- ROADMAP.md | 1 + crates/ui-egui/src/i18n/mod.rs | 20 +++++++ crates/ui-egui/src/i18n/pl.tsv | 106 +++++++++++++++++++++++++++++++++ parity/acrobat-features.toml | 4 +- 5 files changed, 130 insertions(+), 3 deletions(-) diff --git a/ATTRIBUTION.toml b/ATTRIBUTION.toml index 3f3791f71..a26ab23c0 100644 --- a/ATTRIBUTION.toml +++ b/ATTRIBUTION.toml @@ -129,7 +129,7 @@ licence = "MIT OR Apache-2.0" licence_file = "LICENSE-MIT" kind = "translation" usage = "Polish UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs" -sha256 = "988bcf2e0322a46c0464ff7b91ab5d90193b0ea7f454812d12595eb843de6fc7" +sha256 = "b0661ac2cceb945d244eff959505b77077816708ae90c8a97184c03b1cee0915" [[asset]] path = "crates/ui-egui/src/i18n/ru.tsv" diff --git a/ROADMAP.md b/ROADMAP.md index fe9723fdf..8c01e47f7 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -201,6 +201,7 @@ Ranked; detail and the full milestone table in [docs/roadmap.md](docs/roadmap.md - **2026-10-14 (M3, control-click candidate):** Coordinate clicks retain hover warmup and pair press/release in one input pass so slow frames do not turn a click into a hold. Text multi-click selection accepts the actual press event when egui has already cleared its origin. Regression cases cover slow-frame button activation, disabled controls and coalesced text selection; estimates unchanged. - **2026-10-14 (community, M7, #128 Hebrew in Add text):** Add text and `page_add_text` draw Hebrew with the craft-fonts Hebr face (Noto Sans Hebrew), through the same shaped path as Arabic and Thai: right-to-left display order with numbers and Latin in place, points and cantillation kept on their letter as one Type 3 glyph, ToUnicode and per-line ActualText so extraction, search and the editor get typing order. Builds without the face refuse Hebrew rather than write `?`. Regular style only. Estimates unchanged. - **2026-10-14 (M9, #1787):** Changes after signing are judged by the role an object held when signed for a page's resources too: a rewritten font, XObject, graphics state or resources dictionary is page content however its new version is labelled, so a `/FT` or `/Subtype /Widget` added by the attacker no longer reads as a permitted form fill. A category dictionary that only gained a name is judged as before. +- **2026-10-15 (community, M14, Polish signature panel):** A Polish signature panel listed its details in English: the catalog lacked every signature wording, the changes after signing they name and 34 UI literals. All 101 are translated; `polish_covers_ui_literals` and `polish_says_what_a_signature_says` keep them so. Estimates unchanged. - **2026-10-13 (M3, native-opening candidate):** Chosen tools survive preparation, conversion and password retries; startup intake waits for pending preparation. Regression tests cover completion, cancellation and document identity. Estimates unchanged. - **2026-10-13 (community, M3, #531 touchpad momentum):** On Wayland a two-finger swipe keeps gliding after the fingers lift and slows to a stop, measured from the gesture's last 0.1 s and decaying with a 0.35 s time constant through the #759 1:1 path. Any wheel input, click, key, zoom or edge ends it (fingers resting on the touchpad don't yet: the vendored winit binds no Wayland hold gestures); single-page paging, macOS (which sends its own momentum), the web, and Animation effects Off never glide. Unit tests for the physics and two headless view tests. Estimates unchanged. - **2026-10-13 (M3, native-open admission):** Later prepared replies stay queued while a modal or native picker owns the foreground. Picker completion, cancellation and abandonment wake retained opens. Regressions cover recipient ownership, exactly-once admission, source/history preservation and one-shot repaint requests. Estimates unchanged. diff --git a/crates/ui-egui/src/i18n/mod.rs b/crates/ui-egui/src/i18n/mod.rs index 5bb2889c9..dec85f5ec 100644 --- a/crates/ui-egui/src/i18n/mod.rs +++ b/crates/ui-egui/src/i18n/mod.rs @@ -961,6 +961,26 @@ mod tests { } } + /// Polish translates every `tl!("…")` literal in the UI source, as Japanese does. + #[test] + fn polish_covers_ui_literals() { + let pl = Lang::from_code("pl").expect("pl registered"); + let missing: Vec<_> = ui_literals().into_iter().filter(|label| !has(pl, label)).collect(); + assert!(missing.is_empty(), "untranslated Polish UI literals: {missing:#?}"); + } + + /// Polish says everything a signature's validation says, and the changes after signing it + /// names, keeping each sentence's holes: a Polish signature panel listed these in English. + #[test] + fn polish_says_what_a_signature_says() { + let pl = Lang::from_code("pl").expect("pl registered"); + for wording in pdfcraft_engine::sign::pdf::WORDINGS.iter().chain(pdfcraft_engine::sign::pdf::kind::ALL) { + assert!(has(pl, wording), "missing signature wording: {wording}"); + let said = tr(pl, wording); + assert_eq!(wording.matches("{}").count(), said.matches("{}").count(), "the Polish of {wording:?} loses a hole: {said:?}"); + } + } + /// Japanese translates every `tl!("…")` literal in the UI source, so a new string can't ship in /// English by accident (the same check French, German, Russian and Simplified Chinese have). #[test] diff --git a/crates/ui-egui/src/i18n/pl.tsv b/crates/ui-egui/src/i18n/pl.tsv index 3dbb24705..d07329979 100644 --- a/crates/ui-egui/src/i18n/pl.tsv +++ b/crates/ui-egui/src/i18n/pl.tsv @@ -2408,3 +2408,109 @@ animation effects Off Wyłączone Make properties default Ustaw właściwości jako domyślne Pages selected Zaznaczone strony Page properties Właściwości strony + +# Signature validation: what a signature's details say and the changes after signing they name +# (pdfcraft_engine::sign::pdf::WORDINGS and kind::ALL). + The signature has no valid byte range. Podpis nie ma prawidłowego zakresu bajtów. + The signature's byte range does not match the file. Zakres bajtów podpisu nie odpowiada plikowi. + The signature's byte range does not exclude exactly its contents. Zakres bajtów podpisu nie pomija dokładnie jego zawartości. + The signature contents are not hexadecimal. Zawartość podpisu nie jest zapisana szesnastkowo. + The signature could not be read ({}). Nie udało się odczytać podpisu ({}). + PdfCraft can't check this signature yet: {}. PdfCraft nie potrafi jeszcze sprawdzić tego podpisu: {}. + The signature uses the legacy adbe.x509.rsa_sha1 format. Podpis używa przestarzałego formatu adbe.x509.rsa_sha1. + The signature is BER-encoded (indefinite lengths) rather than DER; it was read leniently. Podpis jest zakodowany w BER (długości nieokreślone), a nie w DER; odczytano go z tolerancją. + The signed content is a constructed (segmented) OCTET STRING, as BER allows; it was read anyway. Podpisana treść jest złożonym (segmentowanym) OCTET STRING, na co pozwala BER; mimo to ją odczytano. + The RSA signature value does not have the length of the key's modulus (leading zero bytes dropped or added); it was read anyway. Wartość podpisu RSA nie ma długości modułu klucza (pominięte lub dodane początkowe bajty zerowe); mimo to ją odczytano. + The RSA signature's DigestInfo has no NULL parameter (older signers write it so); it was read anyway. DigestInfo podpisu RSA nie ma parametru NULL (tak zapisują go starsze programy); mimo to go odczytano. + The ECDSA signature is not in canonical DER (trailing bytes, padding or a missing sign byte); it was read anyway. Podpis ECDSA nie jest w kanonicznym DER (nadmiarowe bajty końcowe, dopełnienie lub brak bajtu znaku); mimo to go odczytano. + The ECDSA signature is the raw r and s values instead of a DER sequence; it was read anyway. Podpis ECDSA zawiera surowe wartości r i s zamiast sekwencji DER; mimo to go odczytano. + The signature algorithm and the SignerInfo's digest algorithm name different hashes; the signature was made with the SignerInfo's. Algorytm podpisu i algorytm skrótu w SignerInfo wskazują różne funkcje skrótu; podpis złożono funkcją wskazaną w SignerInfo. + This signature uses SHA-1, a weak hash algorithm: collisions in it have been demonstrated. It still validates because many documents signed years ago use it, but it should not be relied on. Ten podpis używa SHA-1, słabej funkcji skrótu, dla której wykazano kolizje. Podpis nadal przechodzi weryfikację, bo używa jej wiele dokumentów podpisanych przed laty, ale nie należy na nim polegać. + This signature uses RIPEMD-160, a legacy 160-bit hash algorithm that is no longer recommended for signatures. It still validates, but it should not be relied on. Ten podpis używa RIPEMD-160, przestarzałej 160-bitowej funkcji skrótu, której nie zaleca się już do podpisów. Podpis nadal przechodzi weryfikację, ale nie należy na nim polegać. + The document has been altered or corrupted since the signature was applied. Dokument został zmieniony lub uszkodzony po złożeniu podpisu. + The signer's certificate is not in the signature. Podpis nie zawiera certyfikatu podpisującego. + The signature value does not match the signer's certificate: the signature is corrupt. Wartość podpisu nie pasuje do certyfikatu podpisującego: podpis jest uszkodzony. + The signature could not be checked ({}). Nie udało się sprawdzić podpisu ({}). + The signature could not be verified ({}). Nie udało się zweryfikować podpisu ({}). + This document has not been modified since this signature was applied. Dokument nie był modyfikowany od złożenia tego podpisu. + The document has been modified since this signature was applied, but the changes are permitted ({}). Dokument zmodyfikowano po złożeniu tego podpisu, ale zmiany są dozwolone ({}). + The document has been altered since this signature was applied in ways it does not permit ({}). Dokument zmieniono po złożeniu tego podpisu w sposób, na który podpis nie pozwala ({}). + The signer's certificate was not valid at the time of signing. Certyfikat podpisującego nie był ważny w chwili podpisania. + The signer's certificate does not allow digital signatures (its key usage has neither digital signature nor non-repudiation). Certyfikat podpisującego nie pozwala na podpisy cyfrowe (jego użycie klucza nie obejmuje ani podpisu cyfrowego, ani niezaprzeczalności). + The signer's certificate is not issued for signing documents (its extended key usage has no document-signing purpose). Certyfikat podpisującego nie jest wystawiony do podpisywania dokumentów (jego rozszerzone użycie klucza nie obejmuje podpisywania dokumentów). + The signer's certificate has critical extensions PdfCraft does not recognize ({}). Certyfikat podpisującego ma rozszerzenia krytyczne, których PdfCraft nie rozpoznaje ({}). + The certificate of {} is not a CA certificate that may issue certificates, so it is not used to vouch for {}. Certyfikat podmiotu {} nie jest certyfikatem urzędu certyfikacji, który może wystawiać certyfikaty, dlatego nie poświadcza certyfikatu {}. + The certificate of {} does not allow this many CA certificates below it (path length), so it is not used to vouch for {}. Certyfikat podmiotu {} nie dopuszcza tylu certyfikatów urzędów certyfikacji poniżej siebie (długość ścieżki), dlatego nie poświadcza certyfikatu {}. + The certificate of {} was not valid at the time of signing, so it is not used to vouch for {}. Certyfikat podmiotu {} nie był ważny w chwili podpisania, dlatego nie poświadcza certyfikatu {}. + The signer's identity is unknown because it has not been included in your list of trusted certificates and none of its parent certificates are trusted certificates. Tożsamość podpisującego jest nieznana, ponieważ jego certyfikatu nie ma na liście zaufanych certyfikatów i żaden z certyfikatów nadrzędnych nie jest zaufany. + The signer's identity is valid. Tożsamość podpisującego jest prawidłowa. + The signature includes an embedded timestamp. Podpis zawiera osadzony znacznik czasu. + Signing time is from the clock on the signer's computer. Czas podpisania pochodzi z zegara komputera podpisującego. + The signature's timestamp token does not cover the signature value. Token znacznika czasu nie obejmuje wartości podpisu. + The signature's timestamp token could not be verified ({}). Nie udało się zweryfikować tokenu znacznika czasu podpisu ({}). + The embedded timestamp token is valid and its authority is trusted; trusted time is {}. Osadzony token znacznika czasu jest prawidłowy, a jego urząd jest zaufany; zaufany czas to {}. + The signature carries an unverified timestamp ({}): the timestamp authority is not in your list of trusted certificates, so the signing time claimed by the signer is used instead. Podpis zawiera niezweryfikowany znacznik czasu ({}): urzędu znacznika czasu nie ma na liście zaufanych certyfikatów, dlatego użyto czasu podpisania podanego przez podpisującego. + The signer's certificate has been revoked ({}). Certyfikat podpisującego został unieważniony ({}). + The document's embedded revocation information shows that the signer's certificate has not been revoked. Osadzone w dokumencie informacje o unieważnieniach potwierdzają, że certyfikat podpisującego nie został unieważniony. + The timestamp has no valid byte range. Znacznik czasu nie ma prawidłowego zakresu bajtów. + The timestamp's byte range does not match the file. Zakres bajtów znacznika czasu nie odpowiada plikowi. + The timestamp's byte range does not exclude exactly its contents. Zakres bajtów znacznika czasu nie pomija dokładnie jego zawartości. + The timestamp contents are not hexadecimal. Zawartość znacznika czasu nie jest zapisana szesnastkowo. + The timestamp token could not be read ({}). Nie udało się odczytać tokenu znacznika czasu ({}). + The document has been altered or corrupted since the timestamp was applied. Dokument został zmieniony lub uszkodzony po dodaniu znacznika czasu. + The timestamp authority's certificate was not valid at the time of timestamping. Certyfikat urzędu znacznika czasu nie był ważny w chwili oznaczania czasem. + This document has not been modified since this timestamp was applied. Dokument nie był modyfikowany od dodania tego znacznika czasu. + The document has been modified since this timestamp was applied, but the changes are permitted ({}). Dokument zmodyfikowano po dodaniu tego znacznika czasu, ale zmiany są dozwolone ({}). + The document has been altered since this timestamp was applied in ways it does not permit ({}). Dokument zmieniono po dodaniu tego znacznika czasu w sposób, na który znacznik nie pozwala ({}). + The timestamp token is valid and its authority is trusted. Token znacznika czasu jest prawidłowy, a jego urząd jest zaufany. + The timestamp token is valid, but the timestamp authority is not in your list of trusted certificates. Token znacznika czasu jest prawidłowy, ale urzędu znacznika czasu nie ma na liście zaufanych certyfikatów. + Unsigned signature field Niepodpisane pole podpisu + Signature is valid Podpis jest prawidłowy + Signature validity is unknown Ważność podpisu jest nieznana + Signature is invalid Podpis jest nieprawidłowy + page content zawartość stron + form fill wypełnianie formularzy + comments komentarze + document security store magazyn zabezpieczeń dokumentu + metadata metadane + links łącza + document structure struktura dokumentu + pages added or removed dodane lub usunięte strony + other changes inne zmiany + the signed version could not be read nie udało się odczytać podpisanej wersji + +# The rest of the interface the Polish catalog lacked. + Auto ({percent}%) Automatycznie ({percent}%) + Auto follows the system's text size. Pages always render at the display's full resolution. Tryb automatyczny dopasowuje się do rozmiaru tekstu w systemie. Strony są zawsze renderowane w pełnej rozdzielczości ekranu. + Check the pages Sprawdź strony + Collapse all Zwiń wszystko + Discard this text (Esc) Odrzuć ten tekst (Esc) + Done adding text Zakończ dodawanie tekstu + Drawing scale changes. Use Actual size for full-scale plans. Skala rysunku się zmieni. Do planów w pełnej skali użyj opcji Rzeczywisty rozmiar. + Expand all Rozwiń wszystko + Files are combined in the order shown. Drag them to change it. Pliki są łączone w pokazanej kolejności. Przeciągnij je, aby ją zmienić. + Fill colour Kolor wypełnienia + Fill colour: none Kolor wypełnienia: brak + For page sizes and margins. Dotyczy rozmiarów stron i marginesów. + Grid view Widok siatki + Import list… Importuj listę… + Interface size Rozmiar interfejsu + List view Widok listy + Margins Marginesy + Match page at 100% Dopasuj stronę w skali 100% + Multiple words or phrases Wiele słów lub fraz + New bookmarks from structure Nowe zakładki ze struktury + No fill Bez wypełnienia + Offset from centre Przesunięcie od środka + One word or phrase per line Jedno słowo lub fraza w wierszu + PDF page: {size} Strona PDF: {size} + PDF scale: {scale}% Skala PDF: {scale}% + Pages: {k} of {n} Strony: {k} z {n} + Preview unavailable: {e} Podgląd niedostępny: {e} + Printer paper and scaling may differ. Check driver settings. Papier i skalowanie w drukarce mogą się różnić. Sprawdź ustawienia sterownika. + Remove page Usuń stronę + Remove {n} pages Usuń strony ({n}) + Some bookmarks are not shown here: the panel lists a limited number, nested a limited depth. Niektóre zakładki nie są tu widoczne: panel pokazuje ograniczoną ich liczbę i ograniczoną głębokość zagnieżdżenia. + Switch to List view to change the pages it takes. Przełącz na widok listy, aby zmienić strony, które obejmuje. + The document's security settings don't allow copying text and images Ustawienia zabezpieczeń dokumentu nie pozwalają kopiować tekstu i obrazów + {n} word(s) or phrase(s) Słowa lub frazy: {n} diff --git a/parity/acrobat-features.toml b/parity/acrobat-features.toml index e841dec08..380da6318 100644 --- a/parity/acrobat-features.toml +++ b/parity/acrobat-features.toml @@ -9952,9 +9952,9 @@ status = "partial" commands = ["app.preferences"] tools = [] evidence = ["crates/ui-egui/src/commands.rs::localized_shortcut_labels_follow_language_and_platform", "crates/ui-egui/src/i18n/mod.rs::keyboard_key_names_have_a_separate_context_and_english_fallback", "crates/ui-egui/tests/commands.rs::localized_shortcuts_update_immediately_and_keep_command_ids_and_key_bindings", "crates/ui-egui/src/i18n/mod.rs::windows_display_language_resolves_chinese_scripts", "crates/ui-egui/src/i18n/mod.rs::neutral_locale_does_not_override_display_language", "crates/ui-egui/src/i18n/mod.rs::windows_display_language_query_returns_a_locale_tag", "crates/ui-egui/src/i18n/mod.rs::language_persists_and_invalid_input_keeps_current_language", "crates/ui-egui/src/i18n/mod.rs::bundled_catalogs_are_consistent", "crates/ui-egui/src/i18n/mod.rs::arabic_is_registered_and_persists", "crates/ui-egui/src/i18n/mod.rs::arabic_lookups_are_in_display_order", "crates/ui-egui/src/i18n/mod.rs::arabic_plurals_follow_the_six_cldr_forms", "crates/ui-egui/src/i18n/mod.rs::arabic_covers_commands_and_catalogue", "crates/ui-egui/src/i18n/mod.rs::arabic_covers_ui_literals", "crates/ui-egui/src/i18n/mod.rs::arabic_labels_have_glyphs", "crates/ui-egui/src/bidi.rs::rtl_labels_keep_placeholders_whole", "crates/ui-egui/src/i18n/mod.rs::japanese_covers_commands_and_catalogue", "crates/ui-egui/src/i18n/mod.rs::simplified_chinese_covers_commands_and_catalogue", "crates/ui-egui/src/i18n/mod.rs::simplified_chinese_covers_ui_literals", "crates/ui-egui/src/i18n/mod.rs::simplified_chinese_history_and_diagnostics_preserve_user_values", "crates/ui-egui/tests/control.rs::simplified_chinese_signature_prompts_and_errors_keep_document_state", "crates/ui-egui/tests/control.rs::language_switch_preserves_document_and_command_ids", "crates/ui-egui/tests/control.rs::japanese_controls_and_search_keep_command_ids", "crates/ui-egui/tests/control.rs::japanese_dialogs_errors_and_custom_action_names", "crates/ui-egui/src/i18n/mod.rs::french_is_registered", "crates/ui-egui/src/i18n/mod.rs::french_covers_commands_and_catalogue", "crates/ui-egui/src/i18n/mod.rs::french_covers_ui_literals", "crates/ui-egui/src/i18n/mod.rs::french_history_and_diagnostics_preserve_user_values", "crates/ui-egui/src/i18n/mod.rs::german_certificate_subject_has_a_distinct_context", "crates/ui-egui/src/widgets.rs::search_placeholder_never_overlaps_the_shortcut", "crates/ui-egui/src/home.rs::translated_card_description_leaves_room_for_the_action", "crates/ui-egui/tests/control.rs::german_preferences_and_search_keep_command_ids", "crates/ui-egui/src/i18n/mod.rs::telugu_covers_commands_and_catalogue", "crates/ui-egui/src/i18n/mod.rs::telugu_labels_have_glyphs", "crates/ui-egui/src/i18n/mod.rs::hungarian_is_registered", "crates/ui-egui/src/i18n/mod.rs::hungarian_covers_commands_and_catalogue", "crates/ui-egui/src/i18n/mod.rs::hungarian_covers_ui_literals", "crates/ui-egui/src/i18n/mod.rs::hungarian_history_and_diagnostics_preserve_user_values", "crates/ui-egui/src/i18n/mod.rs::ukrainian_is_registered_and_persists", "crates/ui-egui/src/i18n/mod.rs::ukrainian_integer_plurals_cover_teens_and_large_counts", "crates/ui-egui/src/i18n/mod.rs::ukrainian_calendar_uses_month_case_for_dates", "crates/ui-egui/src/i18n/mod.rs::ukrainian_catalog_does_not_leave_english_ui_text", "crates/ui-egui/src/i18n/mod.rs::ukrainian_covers_commands_and_catalogue", "crates/ui-egui/src/i18n/mod.rs::ukrainian_covers_ui_literals", "crates/ui-egui/src/i18n/mod.rs::ukrainian_history_and_diagnostics_preserve_user_values", "crates/ui-egui/src/i18n/mod.rs::spanish_covers_ui_literals", "crates/ui-egui/src/i18n/mod.rs::spanish_covers_what_the_engine_says", "crates/ui-egui/src/i18n/mod.rs::spanish_keeps_the_holes_in_what_the_engine_says", "crates/print/src/tests.rs::wordings_are_said"] -notes = "Shortcut modifiers and key names use a dedicated catalog context across toolbar, menus, palette, Help and tooltips, with English fallback and macOS symbols preserved. Preferences switches Auto (system language)/English/Japanese/Simplified Chinese/Traditional Chinese/Czech/Brazilian Portuguese/German/Spanish/French/Telugu/Hungarian/Ukrainian/Italian/Arabic and persists; ui.set language auto|en|ja|zh-hans|zh-hant|cs|pt-br|de|es|fr|te|hu|uk|it|ar and ui.state expose it. TSV catalogs per language (same system as PhotoCraft); every dialog, panel and notice goes through tl!. Japanese, Traditional Chinese, Simplified Chinese, German, Spanish, French and Hungarian cover commands, dialogs, panels, shortcuts and history labels; Czech and Brazilian Portuguese the menus. French locales (fr, fr_FR, fr_CA, fr_BE) select the French catalog, German locales (de, de_DE, de_AT, de_CH) the German one, Hungarian locales (hu, hu_HU) the Hungarian one. German search hints reserve shortcut space, Home cards bound translated text, certificate Subject has its own context, and inserted tool names keep their capitalization. The sentences the layers below word for themselves (accessibility findings and the saved report, PDF/A problems, signature details, page-range mistakes, edit labels) are handed over apart from the document's own values and go through the catalog too, through said(&i18n::words); Spanish translates them and the other catalogs fall back to English. OS error details, and faults rather than mistakes, stay as they are. Auto detects the Windows display language after explicitly named supported locale overrides; neutral C/POSIX launcher locales are skipped on Windows, with Chinese script/region mapping and English fallback. Arabic (ar and every ar-* locale) covers commands, dialogs and panels with the six CLDR plural forms; its labels are put into display order when the catalog loads, because egui joins Arabic letters but lays words out left to right. Missing: a right-to-left layout (Arabic labels sit in the left-to-right layout, a wrapped Arabic paragraph breaks at the wrong end, and text typed into a field is not reordered), Czech and Brazilian Portuguese dialogs, Chinese and Telugu font delivery in releases (the pinned craft-fonts revision has an Arabic face; its Noto Sans CJK SC is never embedded, AGENTS.md §1.1), the engine's sentences in the other catalogs, a full localization audit." +notes = "Shortcut modifiers and key names use a dedicated catalog context across toolbar, menus, palette, Help and tooltips, with English fallback and macOS symbols preserved. Preferences switches Auto (system language)/English/Japanese/Simplified Chinese/Traditional Chinese/Czech/Brazilian Portuguese/German/Spanish/French/Telugu/Hungarian/Ukrainian/Italian/Arabic and persists; ui.set language auto|en|ja|zh-hans|zh-hant|cs|pt-br|de|es|fr|te|hu|uk|it|ar and ui.state expose it. TSV catalogs per language (same system as PhotoCraft); every dialog, panel and notice goes through tl!. Japanese, Traditional Chinese, Simplified Chinese, German, Spanish, French and Hungarian cover commands, dialogs, panels, shortcuts and history labels; Czech and Brazilian Portuguese the menus. French locales (fr, fr_FR, fr_CA, fr_BE) select the French catalog, German locales (de, de_DE, de_AT, de_CH) the German one, Hungarian locales (hu, hu_HU) the Hungarian one. German search hints reserve shortcut space, Home cards bound translated text, certificate Subject has its own context, and inserted tool names keep their capitalization. The sentences the layers below word for themselves (accessibility findings and the saved report, PDF/A problems, signature details, page-range mistakes, edit labels) are handed over apart from the document's own values and go through the catalog too, through said(&i18n::words); Spanish translates them, Polish the signature details and the changes after signing, and the other catalogs fall back to English. OS error details, and faults rather than mistakes, stay as they are. Auto detects the Windows display language after explicitly named supported locale overrides; neutral C/POSIX launcher locales are skipped on Windows, with Chinese script/region mapping and English fallback. Arabic (ar and every ar-* locale) covers commands, dialogs and panels with the six CLDR plural forms; its labels are put into display order when the catalog loads, because egui joins Arabic letters but lays words out left to right. Missing: a right-to-left layout (Arabic labels sit in the left-to-right layout, a wrapped Arabic paragraph breaks at the wrong end, and text typed into a field is not reordered), Czech and Brazilian Portuguese dialogs, Chinese and Telugu font delivery in releases (the pinned craft-fonts revision has an Arabic face; its Noto Sans CJK SC is never embedded, AGENTS.md §1.1), the engine's sentences in the other catalogs, a full localization audit." evidence = ["crates/ui-egui/src/commands.rs::localized_shortcut_labels_follow_language_and_platform", "crates/ui-egui/src/i18n/mod.rs::keyboard_key_names_have_a_separate_context_and_english_fallback", "crates/ui-egui/tests/commands.rs::localized_shortcuts_update_immediately_and_keep_command_ids_and_key_bindings", "crates/ui-egui/src/i18n/mod.rs::windows_display_language_resolves_chinese_scripts", "crates/ui-egui/src/i18n/mod.rs::neutral_locale_does_not_override_display_language", "crates/ui-egui/src/i18n/mod.rs::windows_display_language_query_returns_a_locale_tag", "crates/ui-egui/src/i18n/mod.rs::language_persists_and_invalid_input_keeps_current_language", "crates/ui-egui/src/i18n/mod.rs::bundled_catalogs_are_consistent", "crates/ui-egui/src/i18n/mod.rs::arabic_is_registered_and_persists", "crates/ui-egui/src/i18n/mod.rs::arabic_lookups_are_in_display_order", "crates/ui-egui/src/i18n/mod.rs::arabic_plurals_follow_the_six_cldr_forms", "crates/ui-egui/src/i18n/mod.rs::arabic_covers_commands_and_catalogue", "crates/ui-egui/src/i18n/mod.rs::arabic_covers_ui_literals", "crates/ui-egui/src/i18n/mod.rs::arabic_labels_have_glyphs", "crates/ui-egui/src/bidi.rs::rtl_labels_keep_placeholders_whole", "crates/ui-egui/src/i18n/mod.rs::japanese_covers_commands_and_catalogue", "crates/ui-egui/src/i18n/mod.rs::simplified_chinese_covers_commands_and_catalogue", "crates/ui-egui/src/i18n/mod.rs::simplified_chinese_covers_ui_literals", "crates/ui-egui/src/i18n/mod.rs::simplified_chinese_history_and_diagnostics_preserve_user_values", "crates/ui-egui/tests/control.rs::simplified_chinese_signature_prompts_and_errors_keep_document_state", "crates/ui-egui/tests/control.rs::language_switch_preserves_document_and_command_ids", "crates/ui-egui/tests/control.rs::japanese_controls_and_search_keep_command_ids", "crates/ui-egui/tests/control.rs::japanese_dialogs_errors_and_custom_action_names", "crates/ui-egui/src/i18n/mod.rs::french_is_registered", "crates/ui-egui/src/i18n/mod.rs::french_covers_commands_and_catalogue", "crates/ui-egui/src/i18n/mod.rs::french_covers_ui_literals", "crates/ui-egui/src/i18n/mod.rs::french_history_and_diagnostics_preserve_user_values", "crates/ui-egui/src/i18n/mod.rs::german_certificate_subject_has_a_distinct_context", "crates/ui-egui/src/widgets.rs::search_placeholder_never_overlaps_the_shortcut", "crates/ui-egui/src/home.rs::translated_card_description_leaves_room_for_the_action", "crates/ui-egui/tests/control.rs::german_preferences_and_search_keep_command_ids", "crates/ui-egui/src/i18n/mod.rs::telugu_covers_commands_and_catalogue", "crates/ui-egui/src/i18n/mod.rs::telugu_labels_have_glyphs", "crates/ui-egui/src/i18n/mod.rs::hungarian_is_registered", "crates/ui-egui/src/i18n/mod.rs::hungarian_covers_commands_and_catalogue", "crates/ui-egui/src/i18n/mod.rs::hungarian_covers_ui_literals", "crates/ui-egui/src/i18n/mod.rs::hungarian_history_and_diagnostics_preserve_user_values", "crates/ui-egui/src/i18n/mod.rs::ukrainian_is_registered_and_persists", "crates/ui-egui/src/i18n/mod.rs::ukrainian_integer_plurals_cover_teens_and_large_counts", "crates/ui-egui/src/i18n/mod.rs::ukrainian_calendar_uses_month_case_for_dates", "crates/ui-egui/src/i18n/mod.rs::ukrainian_catalog_does_not_leave_english_ui_text", "crates/ui-egui/src/i18n/mod.rs::ukrainian_covers_commands_and_catalogue", "crates/ui-egui/src/i18n/mod.rs::ukrainian_covers_ui_literals", "crates/ui-egui/src/i18n/mod.rs::ukrainian_history_and_diagnostics_preserve_user_values", "crates/ui-egui/src/i18n/mod.rs::spanish_covers_what_the_engine_says", "crates/ui-egui/src/i18n/mod.rs::spanish_keeps_the_holes_in_what_the_engine_says", "crates/print/src/tests.rs::wordings_are_said"] -notes = "Shortcut modifiers and key names use a dedicated catalog context across toolbar, menus, palette, Help and tooltips, with English fallback and macOS symbols preserved. Preferences switches Auto (system language)/English/Japanese/Simplified Chinese/Traditional Chinese/Czech/Brazilian Portuguese/German/Spanish/French/Telugu/Hungarian/Ukrainian/Italian/Arabic and persists; ui.set language auto|en|ja|zh-hans|zh-hant|cs|pt-br|de|es|fr|te|hu|uk|it|ar and ui.state expose it. TSV catalogs per language (same system as PhotoCraft); every dialog, panel and notice goes through tl!. Japanese, Traditional Chinese, Simplified Chinese, German, Spanish, French and Hungarian cover commands, dialogs, panels, shortcuts and history labels; Czech and Brazilian Portuguese the menus. French locales (fr, fr_FR, fr_CA, fr_BE) select the French catalog, German locales (de, de_DE, de_AT, de_CH) the German one, Hungarian locales (hu, hu_HU) the Hungarian one. German search hints reserve shortcut space, Home cards bound translated text, certificate Subject has its own context, and inserted tool names keep their capitalization. The sentences the layers below word for themselves (accessibility findings and the saved report, PDF/A problems, signature details, page-range mistakes, edit labels) are handed over apart from the document's own values and go through the catalog too, through said(&i18n::words); Spanish and Italian translate them and the other catalogs fall back to English. OS error details, and faults rather than mistakes, stay as they are. Auto detects the Windows display language after explicitly named supported locale overrides; neutral C/POSIX launcher locales are skipped on Windows, with Chinese script/region mapping and English fallback. Arabic (ar and every ar-* locale) covers commands, dialogs and panels with the six CLDR plural forms; its labels are put into display order when the catalog loads, because egui joins Arabic letters but lays words out left to right. Missing: a right-to-left layout (Arabic labels sit in the left-to-right layout, a wrapped Arabic paragraph breaks at the wrong end, and text typed into a field is not reordered), Czech and Brazilian Portuguese dialogs, Chinese and Telugu font delivery in releases (the pinned craft-fonts revision has an Arabic face; its Noto Sans CJK SC is never embedded, AGENTS.md §1.1), the engine's sentences in the other catalogs, a full localization audit." +notes = "Shortcut modifiers and key names use a dedicated catalog context across toolbar, menus, palette, Help and tooltips, with English fallback and macOS symbols preserved. Preferences switches Auto (system language)/English/Japanese/Simplified Chinese/Traditional Chinese/Czech/Brazilian Portuguese/German/Spanish/French/Telugu/Hungarian/Ukrainian/Italian/Arabic and persists; ui.set language auto|en|ja|zh-hans|zh-hant|cs|pt-br|de|es|fr|te|hu|uk|it|ar and ui.state expose it. TSV catalogs per language (same system as PhotoCraft); every dialog, panel and notice goes through tl!. Japanese, Traditional Chinese, Simplified Chinese, German, Spanish, French and Hungarian cover commands, dialogs, panels, shortcuts and history labels; Czech and Brazilian Portuguese the menus. French locales (fr, fr_FR, fr_CA, fr_BE) select the French catalog, German locales (de, de_DE, de_AT, de_CH) the German one, Hungarian locales (hu, hu_HU) the Hungarian one. German search hints reserve shortcut space, Home cards bound translated text, certificate Subject has its own context, and inserted tool names keep their capitalization. The sentences the layers below word for themselves (accessibility findings and the saved report, PDF/A problems, signature details, page-range mistakes, edit labels) are handed over apart from the document's own values and go through the catalog too, through said(&i18n::words); Spanish and Italian translate them, Polish the signature details and the changes after signing, and the other catalogs fall back to English. OS error details, and faults rather than mistakes, stay as they are. Auto detects the Windows display language after explicitly named supported locale overrides; neutral C/POSIX launcher locales are skipped on Windows, with Chinese script/region mapping and English fallback. Arabic (ar and every ar-* locale) covers commands, dialogs and panels with the six CLDR plural forms; its labels are put into display order when the catalog loads, because egui joins Arabic letters but lays words out left to right. Missing: a right-to-left layout (Arabic labels sit in the left-to-right layout, a wrapped Arabic paragraph breaks at the wrong end, and text typed into a field is not reordered), Czech and Brazilian Portuguese dialogs, Chinese and Telugu font delivery in releases (the pinned craft-fonts revision has an Arabic face; its Noto Sans CJK SC is never embedded, AGENTS.md §1.1), the engine's sentences in the other catalogs, a full localization audit." [[feature]] id = "misc.prefs-reading" From aad803caae022f0f160d063722bf064ebfac9952 Mon Sep 17 00:00:00 2001 From: Guillem Vela Date: Wed, 14 Oct 2026 19:26:06 +0200 Subject: [PATCH 05/33] M14: add Catalan interface and date localization MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Register Catalan (`ca`) as an interface and date language with a 2,592-entry contributor-original catalog written from the meaning of the English labels. Plurals use the one/other rule; every `ca-*` locale, including Valencian (`ca_ES@valencia`), resolves to this catalog. Tests cover registration and persistence, every command, menu, tool group and section, every `tl!` literal in the UI source, and every key in the other bundled catalogs. The Latin-script glyph test in tests/fonts.rs now includes Catalan (the interpunct of l·l is covered by the bundled faces). Catalan dates elide the preposition before a vowel (7 de març, 7 d'abril, 8 d'octubre), so the date language sets months_with_day, as Czech and Russian do; a unit test pins it. Update localization docs, the parity table and the roadmap log, and add the ATTRIBUTION.toml entry (ATTRIBUTION.md regenerated). The contributor, a native Catalan speaker, has reviewed the translation. Validation: cargo fmt --check; clippy -D warnings and tests on pdfcraft-ui-egui (i18n, fonts); pdfcraft-engine dates tests; cargo xtask assets; cargo xtask layers. Co-Authored-By: Claude Sonnet 5.5 --- ATTRIBUTION.md | 3 +- ATTRIBUTION.toml | 11 + ROADMAP.md | 1 + crates/engine/src/dates.rs | 36 +- crates/ui-egui/src/i18n/ca.tsv | 2681 ++++++++++++++++++++++++++++++++ crates/ui-egui/src/i18n/mod.rs | 87 +- crates/ui-egui/tests/fonts.rs | 3 +- docs/localization-parity.md | 9 +- docs/localization.md | 8 +- docs/roadmap.md | 1 + 10 files changed, 2828 insertions(+), 12 deletions(-) create mode 100644 crates/ui-egui/src/i18n/ca.tsv diff --git a/ATTRIBUTION.md b/ATTRIBUTION.md index c9acb0512..1181cf727 100644 --- a/ATTRIBUTION.md +++ b/ATTRIBUTION.md @@ -4,7 +4,7 @@ Every asset PdfCraft includes, bundles or uses to build its published material, with its author, source and licence. The policy is in [AGENTS.md](AGENTS.md) §1. The machine-readable list, with SHA-256 hashes, is [ATTRIBUTION.toml](ATTRIBUTION.toml). Licence texts are kept beside the assets and summarised in [NOTICE](NOTICE). -## In this repository (272) +## In this repository (273) | Asset | Title | Author | Licence | Source | Used for | |---|---|---|---|---|---| @@ -280,6 +280,7 @@ Every asset PdfCraft includes, bundles or uses to build its published material, | `assets/icons/monitor.svg` | Lucide icon "monitor" | Lucide Contributors (portions Cole Bemis, Feather) | ISC | https://github.com/lucide-icons/lucide (npm lucide-static 1.49.0, icons/monitor.svg) | UI icon, embedded via crates/ui-egui/src/icon_data.rs | | `crates/ui-egui/src/i18n/sl.tsv` | Slovene interface translation catalog | PdfCraft contributors | MIT OR Apache-2.0 | Contributor-original: clean-room translations of PdfCraft's English UI labels, no proprietary localisation resources | Slovene UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs | | `vendor/vello_common/assets/probe.png` | vello_common probe reference image (rendered from probe.rgba) | Linebender vello contributors | MIT OR Apache-2.0 | vello_common 0.0.8 (crates.io), vendored in vendor/vello_common; regenerated by its vello_sparse_tests regenerate_probe_reference binary | Reference picture of the vendored vello_common probe module, for people only; the build reads probe.rgba, not this file | +| `crates/ui-egui/src/i18n/ca.tsv` | Catalan interface translation catalog | PdfCraft contributors | MIT OR Apache-2.0 | Contributor-original: clean-room translations of PdfCraft's English UI labels, written from their meaning; no proprietary localisation resources | Catalan UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs | ## Compiled in through dependencies (6) diff --git a/ATTRIBUTION.toml b/ATTRIBUTION.toml index 3f3791f71..4b6f553fa 100644 --- a/ATTRIBUTION.toml +++ b/ATTRIBUTION.toml @@ -3375,3 +3375,14 @@ licence_file = "vendor/vello_common/LICENSE-MIT" kind = "image" usage = "Reference picture of the vendored vello_common probe module, for people only; the build reads probe.rgba, not this file" sha256 = "78c59a0cfd2c829909d77006f94e34dac1ae5d1f90e7f10f72e84de541fef697" + +[[asset]] +path = "crates/ui-egui/src/i18n/ca.tsv" +title = "Catalan interface translation catalog" +author = "PdfCraft contributors" +source = "Contributor-original: clean-room translations of PdfCraft's English UI labels, written from their meaning; no proprietary localisation resources" +licence = "MIT OR Apache-2.0" +licence_file = "LICENSE-MIT" +kind = "translation" +usage = "Catalan UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs" +sha256 = "0988fff524d2b76e21a977d078e92da67ea927c9422ac5b67a9ac476c0f441d5" diff --git a/ROADMAP.md b/ROADMAP.md index fe9723fdf..488c3c8a9 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -201,6 +201,7 @@ Ranked; detail and the full milestone table in [docs/roadmap.md](docs/roadmap.md - **2026-10-14 (M3, control-click candidate):** Coordinate clicks retain hover warmup and pair press/release in one input pass so slow frames do not turn a click into a hold. Text multi-click selection accepts the actual press event when egui has already cleared its origin. Regression cases cover slow-frame button activation, disabled controls and coalesced text selection; estimates unchanged. - **2026-10-14 (community, M7, #128 Hebrew in Add text):** Add text and `page_add_text` draw Hebrew with the craft-fonts Hebr face (Noto Sans Hebrew), through the same shaped path as Arabic and Thai: right-to-left display order with numbers and Latin in place, points and cantillation kept on their letter as one Type 3 glyph, ToUnicode and per-line ActualText so extraction, search and the editor get typing order. Builds without the face refuse Hebrew rather than write `?`. Regular style only. Estimates unchanged. - **2026-10-14 (M9, #1787):** Changes after signing are judged by the role an object held when signed for a page's resources too: a rewritten font, XObject, graphics state or resources dictionary is page content however its new version is labelled, so a `/FT` or `/Subtype /Widget` added by the attacker no longer reads as a permitted form fill. A category dictionary that only gained a name is judged as before. +- **2026-10-14 (M14, Catalan localization):** Added Catalan as another interface and date language, with a 2,592-entry clean-room catalog, one/other plurals and coverage tests for commands, tools, UI literals and every key in the other catalogs. A native Catalan speaker (the contributor) has reviewed the translation. Estimates unchanged. - **2026-10-13 (M3, native-opening candidate):** Chosen tools survive preparation, conversion and password retries; startup intake waits for pending preparation. Regression tests cover completion, cancellation and document identity. Estimates unchanged. - **2026-10-13 (community, M3, #531 touchpad momentum):** On Wayland a two-finger swipe keeps gliding after the fingers lift and slows to a stop, measured from the gesture's last 0.1 s and decaying with a 0.35 s time constant through the #759 1:1 path. Any wheel input, click, key, zoom or edge ends it (fingers resting on the touchpad don't yet: the vendored winit binds no Wayland hold gestures); single-page paging, macOS (which sends its own momentum), the web, and Animation effects Off never glide. Unit tests for the physics and two headless view tests. Estimates unchanged. - **2026-10-13 (M3, native-open admission):** Later prepared replies stay queued while a modal or native picker owns the foreground. Picker completion, cancellation and abandonment wake retained opens. Regressions cover recipient ownership, exactly-once admission, source/history preservation and one-shot repaint requests. Estimates unchanged. diff --git a/crates/engine/src/dates.rs b/crates/engine/src/dates.rs index 8c14a5b1b..7d7da5711 100644 --- a/crates/engine/src/dates.rs +++ b/crates/engine/src/dates.rs @@ -56,7 +56,7 @@ const AR_DAYS: [&str; 7] = ["الأحد", "الاثنين", "الثلاثاء", /// The languages month and weekday names can be written in (Preferences ▸ Date format ▸ Language): /// the interface languages, in the same order and with the same names. -pub static DATE_LANGUAGES: [DateLanguage; 23] = [ +pub static DATE_LANGUAGES: [DateLanguage; 24] = [ DateLanguage { code: "en", name: "English", @@ -398,6 +398,29 @@ pub static DATE_LANGUAGES: [DateLanguage; 23] = [ days: ["Chủ Nhật", "Thứ Hai", "Thứ Ba", "Thứ Tư", "Thứ Năm", "Thứ Sáu", "Thứ Bảy"], days_short: ["CN", "T2", "T3", "T4", "T5", "T6", "T7"], }, + DateLanguage { + code: "ca", + name: "Català", + months: ["gener", "febrer", "març", "abril", "maig", "juny", "juliol", "agost", "setembre", "octubre", "novembre", "desembre"], + // After a day the month carries its own preposition, elided before a vowel: `7 d'abril`. + months_with_day: Some([ + "de gener", + "de febrer", + "de març", + "d'abril", + "de maig", + "de juny", + "de juliol", + "d'agost", + "de setembre", + "d'octubre", + "de novembre", + "de desembre", + ]), + months_short: ["gen.", "febr.", "març", "abr.", "maig", "juny", "jul.", "ag.", "set.", "oct.", "nov.", "des."], + days: ["diumenge", "dilluns", "dimarts", "dimecres", "dijous", "divendres", "dissabte"], + days_short: ["dg.", "dl.", "dt.", "dx.", "dj.", "dv.", "ds."], + }, ]; /// The date language for `code` (any case), or `None` when there's none. @@ -718,6 +741,17 @@ mod tests { assert_eq!(in_lang("dddd, mmmm", "cs"), "sobota, březen"); } + #[test] + fn catalan_months_elide_the_preposition_after_a_day() { + assert_eq!(in_lang("dddd d mmmm \\de yyyy", "ca"), "dissabte 7 de març de 2026"); + assert_eq!(in_lang("mmmm yyyy", "ca"), "març 2026"); + let ca = date_language("ca").unwrap(); + assert_eq!(format_day("d mmmm \\de yyyy", (2026, 4, 23), ca), "23 d'abril de 2026"); + assert_eq!(format_day("d mmmm", (2026, 8, 1), ca), "1 d'agost"); + assert_eq!(format_day("d mmmm", (2026, 10, 8), ca), "8 d'octubre"); + assert_eq!(format_day("mmmm", (2026, 10, 8), ca), "octubre", "no preposition without a day"); + } + #[test] fn the_session_writes_names_in_its_date_language() { let mut s = Session::new().with_clock(|| 1_700_000_000); diff --git a/crates/ui-egui/src/i18n/ca.tsv b/crates/ui-egui/src/i18n/ca.tsv new file mode 100644 index 000000000..dcaec4d48 --- /dev/null +++ b/crates/ui-egui/src/i18n/ca.tsv @@ -0,0 +1,2681 @@ +# Catalan (ca) catalog. Format: see the header of ja.tsv +# (context source translation; @id, @plural and other contexts; escapes \n \t \\). +# Plural forms (see `plural_one_other` in i18n/mod.rs): one (1) | other. +# +# Clean-room: every entry was written from the plain meaning of the English label using ordinary +# Catalan computing vocabulary (standard Catalan, commands in the second-person imperative, informal +# "tu" or impersonal wording in notices). No proprietary localisation resource, string table or +# product UI (Acrobat's included) was consulted or copied; add entries the same way. +# Product and technology names (PdfCraft, PDF, Acrobat JavaScript ...) are not translated; +# the trailing "…" of dialog commands is kept. + + Menu Menú + File Fitxer + Edit Edita + Pages Pàgines + View Visualitza + Help Ajuda + Preferences Preferències + Preferences… Preferències… + Interface language Idioma de la interfície + Interface size Mida de la interfície + Auto ({percent}%) Automàtica ({percent} %) + Auto follows the system's text size. Pages always render at the display's full resolution. L'opció automàtica segueix la mida del text del sistema. Les pàgines sempre es renderitzen a la resolució completa de la pantalla. + Identity Identitat + Name on new comments Nom als comentaris nous + Open… Obre… + Open Recent Obre un recent + Clear Recent Files Esborra els fitxers recents + Remove from Recent Elimina dels recents + Remove {name} from Recent Elimina {name} dels recents + Pin folder to Home… Fixa la carpeta a l'inici… + Folders Carpetes + Pin a folder… Fixa una carpeta… + Pin a folder to Home Fixa una carpeta a l'inici + Pin a folder to list its newest PDFs here, such as where your scanner or a synced cloud drive saves them. Fixa una carpeta per llistar-hi els PDF més recents, com ara on els desa l'escàner o una unitat al núvol sincronitzada. + Unpin Deixa de fixar + Unpin {folder} Deixa de fixar {folder} + Looking for PDFs… Cercant PDF… + This folder isn't available right now. It may have moved, or its drive or cloud sync is offline. Aquesta carpeta no està disponible ara mateix. Pot haver-se mogut, o la seva unitat o la sincronització al núvol no té connexió. + No PDFs in this folder yet Encara no hi ha cap PDF en aquesta carpeta + Show less Mostra'n menys + Show {n} more Mostra'n {n} més + The newest {n} of {total} PDFs Els {n} més recents de {total} PDF + Pinned folders need the desktop app Les carpetes fixades requereixen l'aplicació d'escriptori + Choose a folder on this computer to pin Tria una carpeta d'aquest ordinador per fixar-la + {folder} is already pinned to Home {folder} ja està fixada a l'inici + You can pin up to {n} folders. Unpin one first. Es poden fixar fins a {n} carpetes. Primer deixa'n de fixar una. + Pinned {folder} to Home S'ha fixat {folder} a l'inici + No recent files No hi ha fitxers recents + New blank PDF Nou PDF en blanc + Create PDF from file… Crea un PDF des d'un fitxer… + Create PDF from images… Crea un PDF des d'imatges… + Create PDF from multiple files… Crea un PDF des de diversos fitxers… + Create separate PDFs… Crea PDF separats… + Create PDF from clipboard Crea un PDF des del porta-retalls + Combine files… Combina fitxers… + Save Desa + Save as… Anomena i desa… + Close file Tanca el fitxer + Close all Tanca-ho tot + Revert Reverteix + Print… Imprimeix… + Document properties… Propietats del document… + Undo Desfés + Redo Refés + Find… Cerca… + Advanced search… Cerca avançada… + Copy pages Copia pàgines + Cut pages Retalla pàgines + Paste pages Enganxa pàgines + Fit visible Ajusta a l'àrea visible + Marquee zoom Zoom de marc + Take a snapshot Fes una captura + Column select Selecció per columnes + Full screen mode Mode de pantalla completa + Read mode Mode de lectura + Next tab Pestanya següent + Previous tab Pestanya anterior + Switch light / dark theme Canvia el tema clar / fosc + Comments panel Tauler de comentaris + Form fields panel Tauler de camps de formulari + Clear form Neteja el formulari + Find tools and commands… Cerca eines i ordres… + Zoom Zoom + Actual size Mida real + Zoom to page level Zoom a nivell de pàgina + Fit to width Ajusta a l'amplada + Display theme Tema de visualització + Side panels Taulers laterals + Enable Acrobat JavaScript Activa Acrobat JavaScript + Flatten Fill & Sign when saving Aplana Omple i signa en desar + Text, marks and signatures become part of the page. Other comments stay editable. El text, les marques i les signatures passen a formar part de la pàgina. Els altres comentaris continuen sent editables. + OK D'acord + Join our Discord Uneix-te al nostre Discord + Close Tanca + Next / previous match Coincidència següent / anterior + Copy selected text Copia el text seleccionat + Double-click Doble clic + Select a word Selecciona una paraula + Clear selection / close find Esborra la selecció / tanca la cerca + Zoom in / out (also pinch or {key}-scroll) Apropa / allunya (també amb pessic o {key} i desplaçament) + Rotate view Gira la visualització + First / last page Primera / última pàgina + Previous / next page Pàgina anterior / següent + Delete selected pages (Organize) Suprimeix les pàgines seleccionades (Organitza) + Select all pages (Organize) Selecciona totes les pàgines (Organitza) + Home Inici + Open Obre + Open a PDF ({key}) Obre un PDF ({key}) + Dark gray theme Tema gris fosc + Light theme Tema clar + Appearance mode Mode d'aparença + Light Clar + Dark Fosc + Active Actiu + Dark theme Tema fosc + Appearance settings… Configuració de l'aparença… + All tools Totes les eines + Read Llegeix + Convert Converteix + E-Sign Signatura electrònica + Print ({key}) Imprimeix ({key}) + Save ({key}) Desa ({key}) + Document properties ({key}) Propietats del document ({key}) + Find tools and commands Cerca eines i ordres + Fit to height Ajusta a l'alçada + Zoom in Apropa + Zoom out Allunya + Rotate view clockwise Gira la visualització en sentit horari + Rotate view counterclockwise Gira la visualització en sentit antihorari + Page navigation Navegació per pàgines + Previous view Visualització anterior + Next view Visualització següent + Page display Visualització de pàgines + Continuous scrolling Desplaçament continu + Two-page view Visualització de dues pàgines + Single page Pàgina única + Show cover page in two-page view Mostra la portada en la visualització de dues pàgines + Use system setting Usa la configuració del sistema + Light gray Gris clar + Dark gray Gris fosc + Comments Comentaris + Bookmarks Marcadors + Fields Camps + Layers Capes + Attachments Adjunts + Signatures Signatures + Accessibility Checker Verificador d'accessibilitat + Search Cerca + Compare Compara + Page thumbnails Miniatures de pàgina + Form fields Camps de formulari + Zoom out ({key}) Allunya ({key}) + Zoom in ({key}) Apropa ({key}) + Rotate view clockwise ({key}) Gira la visualització en sentit horari ({key}) + Toggle fit page / fit width Alterna entre ajustar a la pàgina / a l'amplada + Next page Pàgina següent + Previous page Pàgina anterior + Current page — type a page number or label (such as iv) and press Enter Pàgina actual — escriu un número o una etiqueta de pàgina (com ara iv) i prem Retorn + Welcome to PdfCraft Et donem la benvinguda a PdfCraft + An open-source PDF workbench — local, private, and scriptable. Un banc de treball de PDF de codi obert — local, privat i programable. + Join the ArtCraft community Uneix-te a la comunitat d'ArtCraft + Get help, share feedback and follow development on Discord. Obtén ajuda, comparteix comentaris i segueix el desenvolupament a Discord. + Recommended tools Eines recomanades + Use now Utilitza-ho ara + Open file Obre el fitxer + Recent Recents + Files you open in PdfCraft appear here. Drop a PDF anywhere to open it. Els fitxers que obris a PdfCraft apareixen aquí. Deixa anar un PDF en qualsevol lloc per obrir-lo. + Privacy Privadesa + PdfCraft works offline. No telemetry, no account, and no cloud processing unless you add a provider. PdfCraft funciona sense connexió. Sense telemetria, sense compte i sense processament al núvol tret que afegeixis un proveïdor. + Scripts run in a sandbox without file or network access. With JavaScript off, Acrobat's standard format, validate and calculate functions still work. Els scripts s'executen en un entorn aïllat sense accés a fitxers ni a la xarxa. Amb JavaScript desactivat, les funcions estàndard de format, validació i càlcul d'Acrobat continuen funcionant. + Back to all tools Torna a totes les eines + Close panel Tanca el tauler + View less Mostra'n menys + View more Mostra'n més + Available Disponible + Ready Llest + Search tools and commands… Cerca eines i ordres… + No matching tools Cap eina coincident + Tool Eina + Command Ordre + Add a sticky note Afegeix una nota adhesiva + Add a text box Afegeix un quadre de text + Highlight text Ressalta el text + Underline text Subratlla el text + Strikethrough text Ratlla el text + Squiggly underline text Subratlla el text amb ondulació + Draw freehand Dibuixa a mà alçada + Draw a line Dibuixa una línia + Draw an arrow Dibuixa una fletxa + Draw a rectangle Dibuixa un rectangle + Draw an oval Dibuixa un oval + Draw a polygon Dibuixa un polígon + Draw connected lines Dibuixa línies connectades + Draw a cloud Dibuixa un núvol + Add a callout Afegeix una llegenda + Insert text Insereix text + Replace text Substitueix el text + Attach a file Adjunta un fitxer + Erase drawings Esborra els dibuixos + Flatten comments Aplana els comentaris + Import comments… Importa comentaris… + Add a stamp Afegeix un segell + Export all comments to data file… Exporta tots els comentaris a un fitxer de dades… + Hide all comments Amaga tots els comentaris + Summarize comments Resumeix els comentaris + Import form data… Importa dades de formulari… + Export form data… Exporta dades de formulari… + PDF/A… PDF/A… + Action Wizard… Assistent d'accions… + Prepare for distribution… Prepara per a la distribució… + Optimize scanned documents… Optimitza documents escanejats… + Compare files… Compara fitxers… + Detect form fields Detecta camps de formulari + Merge data files into spreadsheet… Combina fitxers de dades en un full de càlcul… + Flatten form fields Aplana els camps de formulari + Prepare a form Prepara un formulari + Tab order: by rows Ordre de tabulació: per files + Tab order: by columns Ordre de tabulació: per columnes + Tab order: by document structure Ordre de tabulació: per estructura del document + Add text Afegeix text + Edit text & images Edita text i imatges + Add or edit links Afegeix o edita enllaços + Create links from URLs Crea enllaços a partir d'URL + Remove all links Elimina tots els enllaços + No links to remove No hi ha enllaços per eliminar + Removed 1 link S'ha eliminat 1 enllaç + Removed {n} links S'han eliminat {n} enllaços + Add Bates numbering… Afegeix numeració Bates… + Add image… Afegeix una imatge… + Redact text and images Censura text i imatges + Redact pages… Censura pàgines… + Find text and redact… Cerca text i censura… + Redaction properties… Propietats de la censura… + Apply redactions… Aplica les censures… + Clear redaction marks Esborra les marques de censura + Remove hidden information… Elimina la informació oculta… + Sanitize document… Neteja el document… + Field properties… Propietats del camp… + Add a text field Afegeix un camp de text + Add a checkbox Afegeix una casella de selecció + Add a radio button Afegeix un botó d'opció + Add a drop-down list Afegeix una llista desplegable + Add a list box Afegeix un quadre de llista + Add a button Afegeix un botó + Add an image field Afegeix un camp d'imatge + Add a date field Afegeix un camp de data + Add a digital signature field Afegeix un camp de signatura digital + Digitally sign Signa digitalment + Certify (visible signature) Certifica (signatura visible) + Certify (invisible signature) Certifica (signatura invisible) + Validate all signatures Valida totes les signatures + Signatures panel Tauler de signatures + Fill & Sign: add text Omple i signa: afegeix text + Fill & Sign: checkmark Omple i signa: marca de verificació + Fill & Sign: cross Omple i signa: creu + Fill & Sign: dot Omple i signa: punt + Fill & Sign: line Omple i signa: línia + Fill & Sign: date Omple i signa: data + Fill & Sign: sign Omple i signa: signa + Fill & Sign: initials Omple i signa: inicials + Export to image… Exporta a imatge… + Reduce file size… Redueix la mida del fitxer… + Optimize PDF… Optimitza el PDF… + Export to text… Exporta a text… + Export to Word… Exporta a Word… + Export to PowerPoint… Exporta a PowerPoint… + Export to HTML… Exporta a HTML… + Export to RTF… Exporta a RTF… + JavaScript console… Consola de JavaScript… + Document JavaScripts… JavaScripts del document… + Recognize text… Reconeix el text… + Recognize text in multiple files… Reconeix el text en diversos fitxers… + Check for accessibility… Comprova l'accessibilitat… + Open accessibility report Obre l'informe d'accessibilitat + Change reading options… Canvia les opcions de lectura… + Add alternate text… Afegeix text alternatiu… + Export all images… Exporta totes les imatges… + Add header & footer… Afegeix capçalera i peu de pàgina… + Update header & footer… Actualitza la capçalera i el peu de pàgina… + Remove header & footer Elimina la capçalera i el peu de pàgina + Add watermark… Afegeix una marca d'aigua… + Update watermark… Actualitza la marca d'aigua… + Remove watermark Elimina la marca d'aigua + Add background… Afegeix un fons… + Update background… Actualitza el fons… + Remove background Elimina el fons + Protect using password… Protegeix amb contrasenya… + Remove security Elimina la seguretat + Security properties… Propietats de seguretat… + Organize pages Organitza pàgines + New bookmark Marcador nou + New bookmarks from structure Marcadors nous a partir de l'estructura + Rotate pages clockwise Gira les pàgines en sentit horari + Rotate pages counterclockwise Gira les pàgines en sentit antihorari + Delete pages Suprimeix pàgines + Insert blank page Insereix una pàgina en blanc + Rotate pages… Gira pàgines… + Duplicate pages Duplica pàgines + Crop pages Escapça pàgines + Set page boxes… Defineix els quadres de pàgina… + Insert pages from file… Insereix pàgines des d'un fitxer… + Replace pages… Substitueix pàgines… + Extract pages… Extreu pàgines… + Split document… Divideix el document… + Number pages… Numera les pàgines… + Keyboard shortcuts Dreceres de teclat + Join the ArtCraft Discord Uneix-te al Discord d'ArtCraft + PdfCraft web page Pàgina web de PdfCraft + PdfCraft on GitHub PdfCraft a GitHub + ArtCraft website Lloc web d'ArtCraft + Check for updates… Cerca actualitzacions… + About PdfCraft Quant a PdfCraft + Export a PDF Exporta un PDF + Export to Exporta a + Microsoft Word (.docx) Microsoft Word (.docx) + Spreadsheet (.xlsx) Full de càlcul (.xlsx) + Presentation (.pptx) Presentació (.pptx) + Image (PNG) Imatge (PNG) + Export all images Exporta totes les imatges + HTML web page Pàgina web HTML + Rich Text Format (.rtf) Format de text enriquit (.rtf) + Text (plain) Text (net) + PostScript / EPS PostScript / EPS + Fill & Sign Omple i signa + Fill Omple + Checkmark Marca de verificació + Cross Creu + Dot Punt + Line Línia + Date Data + Signature Signatura + Initials Inicials + Edit a PDF Edita un PDF + Modify page Modifica la pàgina + Rotate pages Gira pàgines + Insert pages Insereix pàgines + Extract pages Extreu pàgines + Add content Afegeix contingut + Text Text + Image Imatge + Header and footer Capçalera i peu de pàgina + Watermark Marca d'aigua + Link Enllaç + Bates numbering Numeració Bates + Background Fons + Attach file Adjunta un fitxer + Create a PDF Crea un PDF + Create from Crea des de + Single file Fitxer únic + Multiple files Diversos fitxers + Separate PDFs PDF separats + Images Imatges + Clipboard Porta-retalls + Blank page Pàgina en blanc + Combine files Combina fitxers + Combine Combina + Add files to combine Afegeix fitxers per combinar + Page options Opcions de pàgina + Page grid Quadrícula de pàgines + Rotate Gira + Delete Suprimeix + Extract Extreu + Insert Insereix + Replace Substitueix + Split Divideix + More Més + Set page boxes Defineix els quadres de pàgina + Page labels Etiquetes de pàgina + Page transitions Transicions de pàgina + Add comments Afegeix comentaris + Markup Marcatge + Sticky note Nota adhesiva + Underline Subratlla + Strikethrough Ratllat + Squiggly underline Subratllat ondulat + Text box Quadre de text + Drawing Dibuix + Rectangle Rectangle + Oval Oval + Arrow Fletxa + Cloud Núvol + Stamp Segell + Review Revisa + Comment list Llista de comentaris + Scan & OCR Escaneig i OCR + Recognize text Reconeixement de text + In this file En aquest fitxer + In multiple files En diversos fitxers + Enhance scanned file Millora el fitxer escanejat + Correct recognized text Corregeix el text reconegut + Protect a PDF Protegeix un PDF + Protect Protegeix + Protect with password Protegeix amb contrasenya + Remove hidden information Elimina la informació oculta + Advanced options Opcions avançades + Encrypt with certificate Xifra amb certificat + Security properties Propietats de seguretat + Redact a PDF Censura un PDF + Redact Censura + Redact pages Censura pàgines + Find text and redact Cerca text i censura + Set properties Defineix les propietats + Sanitize document Neteja el document + Compress a PDF Comprimeix un PDF + Optimize Optimitza + Reduce file size Redueix la mida del fitxer + Advanced optimization Optimització avançada + Audit space usage Audita l'ús d'espai + Field list Llista de camps + Field properties Propietats del camp + Tab order by rows Ordre de tabulació per files + Tab order by columns Ordre de tabulació per columnes + Import data Importa dades + Export data Exporta dades + Add form components Afegeix components de formulari + Text field Camp de text + Checkbox Casella de selecció + Radio button Botó d'opció + Drop-down list Llista desplegable + List box Quadre de llista + Button Botó + Image field Camp d'imatge + Date field Camp de data + Digital signature Signatura digital + Stamps Segells + Stamp palette Paleta de segells + Use a certificate Utilitza un certificat + Certificates Certificats + Timestamp Marca de temps + Use print production Utilitza la producció d'impressió + Print production Producció d'impressió + Output preview Previsualització de sortida + Preflight Verificació prèvia (preflight) + Convert colors Converteix els colors + Add printer marks Afegeix marques d'impressora + Fix hairlines Corregeix les línies fines + Measure objects Mesura objectes + Measure Mesura + Measuring tool Eina de mesura + Geospatial location Ubicació geoespacial + Compare files Compara fitxers + Select files to compare Selecciona els fitxers per comparar + Use guided actions Utilitza accions guiades + Actions list Llista d'accions + Action Wizard Assistent d'accions + Make accessible Fes-lo accessible + Prepare for distribution Prepara per a la distribució + Optimize scanned documents Optimitza documents escanejats + Archive documents Arxiva documents + Prepare for accessibility Prepara per a l'accessibilitat + Accessibility Accessibilitat + Automatically tag PDF Etiqueta el PDF automàticament + Change reading options Canvia les opcions de lectura + Check for accessibility Comprova l'accessibilitat + Add alternate text Afegeix text alternatiu + Fix reading order Corregeix l'ordre de lectura + Apply PDF standards Aplica estàndards PDF + Standards Estàndards + Save as PDF/A Anomena i desa com a PDF/A + Save as PDF/X Anomena i desa com a PDF/X + Save as PDF/UA Anomena i desa com a PDF/UA + Add search index Afegeix un índex de cerca + Index Índex + Manage embedded index Gestiona l'índex incrustat + Use JavaScript Utilitza JavaScript + JavaScript JavaScript + Console Consola + Document JavaScripts JavaScripts del document + Document actions Accions del document + AI assistant Assistent d'IA + Bring your own model (off by default) Porta el teu propi model (desactivat per defecte) + Summarize Resumeix + Ask about this document Pregunta sobre aquest document + Translate Tradueix + pages pàgines + Planned Planificat + Planned for milestone Planificat per a la fita + open to see what it will include obre per veure què inclourà + Optional: needs an AI provider you configure Opcional: requereix un proveïdor d'IA que configuris + Coming in milestone Arribarà a la fita + Items marked Ready work today. Les opcions marcades com a Llest ja funcionen. + Preview Previsualitza + Edit fields Edita els camps + Try the form as people filling it in will see it Prova el formulari tal com el veuran les persones que l'ompliran + Redact all Censura-ho tot + Clear all Esborra-ho tot + Rotate page Gira la pàgina + Delete page Suprimeix la pàgina + Move page Mou la pàgina + Move pages Mou les pàgines + Duplicate page Duplica la pàgina + Replace page Substitueix la pàgina + Replace pages Substitueix les pàgines + Crop page Escapça la pàgina + Cancel Cancel·la + Don't save No desis + Apply Aplica + Run Executa + Clear Esborra + Sanitize Neteja + Mark all Marca-ho tot + Save changes to “{name}” before closing? Vols desar els canvis a “{name}” abans de tancar? + Your changes will be lost if you don't save them. Els canvis es perdran si no els deses. + Password required Cal una contrasenya + “{name}” is protected. Enter a password to open it. “{name}” està protegit. Introdueix una contrasenya per obrir-lo. + Password Contrasenya + Incorrect password. Try again. Contrasenya incorrecta. Torna-ho a provar. + Recognize Text Reconeixement de text + Password protection will be applied when you save La protecció amb contrasenya s'aplicarà en desar + Saved the print-ready PDF to {path} S'ha desat el PDF llest per imprimir a {path} + Could not save: {e} No s'ha pogut desar: {e} + Earlier in tab order Abans en l'ordre de tabulació + Later in tab order Després en l'ordre de tabulació + From: De: + To: A: + High Resolution Alta resolució + Print Imprimeix + Verify to see what the document needs. Verifica per veure què necessita el document. + Set Page Boxes Defineix els quadres de pàgina + Signature panel Tauler de signatures + {month} {day}, {y} {day} de {month} de {y} + The document's security settings don't allow filling in form fields La configuració de seguretat del document no permet omplir camps de formulari + {name} is read-only {name} és de només lectura + {name} has no action {name} no té cap acció + Previous month Mes anterior + Next month Mes següent + January gener + February febrer + March març + April abril + May maig + June juny + July juliol + August agost + September setembre + October octubre + November novembre + December desembre + Done Fet + This certificate is in your list of trusted certificates. Aquest certificat és a la teva llista de certificats de confiança. + This certificate is trusted through a certificate above it in the chain. Aquest certificat és de confiança mitjançant un certificat superior de la cadena. + This certificate is not trusted. Signatures made with it show an unknown identity. Aquest certificat no és de confiança. Les signatures fetes amb ell mostren una identitat desconeguda. + Add to Trusted Certificates Afegeix als certificats de confiança + Export… Exporta… + PDF Optimizer Optimitzador de PDF + Discard Objects Descarta objectes + Discard User Data Descarta dades d'usuari + Clean Up Neteja + Color Images Imatges en color + Grayscale Images Imatges en escala de grisos + Bicubic downsampling to Reducció bicúbica de resolució a + for images above per a imatges de més de + Compression Compressió + ZIP ZIP + Retain existing Conserva l'existent + Minimum Mínima + Low Baixa + High Alta + Maximum Màxima + Each image is measured where pages draw it; an image is replaced only if the result is smaller. Cada imatge es mesura allà on les pàgines la dibuixen; una imatge només se substitueix si el resultat és més petit. + Discard all links, actions and JavaScript Descarta tots els enllaços, accions i JavaScript + Discard alternate images Descarta les imatges alternatives + Discard embedded page thumbnails Descarta les miniatures de pàgina incrustades + Discard document tags Descarta les etiquetes del document + Discard embedded print settings Descarta la configuració d'impressió incrustada + Discard bookmarks Descarta els marcadors + Discard hidden layer content Descarta el contingut de capes ocultes + Discard all comments, forms and multimedia Descarta tots els comentaris, formularis i multimèdia + Discard document information and metadata Descarta la informació i les metadades del document + Discard all object data (file attachments) Descarta totes les dades d'objecte (fitxers adjunts) + Discard private data of other applications Descarta les dades privades d'altres aplicacions + Discard hidden text Descarta el text ocult + Use Flate to encode streams that are not encoded Utilitza Flate per codificar els fluxos que no estan codificats + Remove invalid links and bookmarks Elimina els enllaços i marcadors no vàlids + Remove unreferenced named destinations Elimina les destinacions amb nom sense referència + Compress document structure (object streams) Comprimeix l'estructura del document (fluxos d'objectes) + Remove unused objects and merge identical ones Elimina els objectes no utilitzats i combina els idèntics + Audit space usage… Auditoria de l'espai utilitzat… + Space Audit Auditoria d'espai + Bytes Bytes + Content Streams Fluxos de contingut + X Object Forms Formularis X Object + Structure Info Informació d'estructura + Thumbnails Miniatures + Named Destinations Destinacions amb nom + Color Spaces Espais de color + Shadings Degradats + Patterns (graphics objects) Patrons (objectes gràfics) + Extended Graphics States Estats gràfics ampliats + Embedded Files Fitxers incrustats + Document Overhead Sobrecàrrega del document + Total Total + Text Field Properties Propietats del camp de text + Check Box Properties Propietats de la casella de selecció + Radio Button Properties Propietats del botó d'opció + Dropdown Properties Propietats de la llista desplegable + List Box Properties Propietats del quadre de llista + Button Properties Propietats del botó + Digital Signature Properties Propietats de la signatura digital + Position Posició + Options Opcions + Validate Valida + Calculate Calcula + Actions Accions + This field is locked. Unlock it to change its properties. Aquest camp està bloquejat. Desbloqueja'l per canviar-ne les propietats. + Tooltip: Suggeriment: + Common Properties Propietats comunes + Read Only Només lectura + Required Obligatori + Font Size: Mida del tipus de lletra: + Auto Automàtica + Text Color: Color del text: + Borders and Colors Vores i colors + Border Color: Color de la vora: + Fill Color: Color de farciment: + No color Sense color + Beveled Bisellat + Left: Esquerra: + Bottom: Inferior: + Width: Amplada: + Height: Alçada: + Rotation: Rotació: + Points from the page's bottom-left corner. Punts des de la cantonada inferior esquerra de la pàgina. + Alignment: Alineació: + Default Value: Valor per defecte: + Multi-line Diverses línies + Scroll long text Desplaça el text llarg + Allow Rich Text Formatting Permet el format de text enriquit + Limit of Límit de + characters caràcters + Field is used for file selection El camp s'utilitza per seleccionar fitxers + Check spelling Revisa l'ortografia + Comb of Pentinat de + Export Value: {on} Valor d'exportació: {on} + Check box is checked by default La casella de selecció està marcada per defecte + Button is checked by default El botó està marcat per defecte + Buttons with the same name and value are selected in unison Els botons amb el mateix nom i valor se seleccionen alhora + Item: Element: + Item List Llista d'elements + Up Amunt + Delete {o} Suprimeix {o} + Add the choices people pick from. Afegeix les opcions entre les quals es pot triar. + Default: Per defecte: + (none) (cap) + Sort items Ordena els elements + Allow user to enter custom text Permet introduir text personalitzat + Multiple selection Selecció múltiple + Commit selected value immediately Confirma immediatament el valor seleccionat + Number Número + Percentage Percentatge + Time Hora + Special Especial + Select format category: Selecciona la categoria de format: + The value is shown as typed. El valor es mostra tal com s'ha escrit. + Decimal places: Posicions decimals: + Separator style: Estil del separador: + Currency symbol: Símbol de moneda: + Before the number Abans del número + Negative number style: Estil dels números negatius: + Format: Format: + Custom: Personalitzat: + Zip Code Codi postal + Zip Code + 4 Codi postal + 4 + Phone Number Número de telèfon + Social Security Number Número de la seguretat social + Arbitrary Mask Màscara arbitrària + Mask: Màscara: + 9 digit, A letter, O letter or digit, X any character 9 dígit, A lletra, O lletra o dígit, X qualsevol caràcter + Example: {sample} Exemple: {sample} + Field value is not validated El valor del camp no es valida + Field value is in range: El valor del camp és dins de l'interval: + Add an Action Afegeix una acció + Select Trigger: Selecciona l'activador: + Mouse Up Ratolí amunt + Mouse Down Ratolí avall + Mouse Enter El ratolí entra + Mouse Exit El ratolí surt + On Focus En rebre el focus + On Blur En perdre el focus + Select Action: Selecciona l'acció: + Open a web link Obre un enllaç web + Reset a form Restableix un formulari + Execute a menu item Executa un element de menú + Show a field Mostra un camp + Hide a field Amaga un camp + Submit a form Envia un formulari + Fields to reset (comma-separated; empty: all) Camps per restablir (separats per comes; buit: tots) + Print, NextPage, PrevPage, FirstPage or LastPage Print, NextPage, PrevPage, FirstPage o LastPage + Field names (comma-separated) Noms dels camps (separats per comes) + URL to submit to URL on enviar + Script: Script: + Value: Valor: + No actions Cap acció + Value is not calculated El valor no es calcula + Value is the El valor és + sum (+) suma (+) + product (x) producte (x) + average mitjana + minimum mínim + maximum màxim + of the following fields: dels camps següents: + Simplified field notation: Notació simplificada de camps: + Field names with + - * / and parentheses; put \\ before spaces in names. Noms de camps amb + - * / i parèntesis; posa \\ abans dels espais als noms. + Finding document fonts… Cerca de tipus de lletra del document… + Installed fonts… Tipus de lletra instal·lats… + Keep source fonts Conserva els tipus de lletra d'origen + Load font… Carrega un tipus de lletra… + No openly licensed document fonts found. Load a font file. No s'ha trobat cap tipus de lletra de document amb llicència oberta. Carrega un fitxer de tipus de lletra. + Format text Dona format al text + Bold Negreta + Italic Cursiva + Align left Alinea a l'esquerra + Centre Centra + Align right Alinea a la dreta + Justify Justifica + Thai and Arabic use regular fallback fonts when available. El tailandès i l'àrab utilitzen tipus de lletra alternatius normals quan estan disponibles. + Edit image Edita la imatge + Rotate counterclockwise Gira en sentit antihorari + Rotate clockwise Gira en sentit horari + Flip horizontal Capgira horitzontalment + Flip vertical Capgira verticalment + Replace image Substitueix la imatge + Crop (% trimmed from each side) Escapça (% escapçat de cada costat) + Click on the page to add text; each click starts a new box, and ✓ finishes. Drag items to move them, drag a corner to resize, double-click text to edit it. Fes clic a la pàgina per afegir text; cada clic comença un quadre nou i ✓ finalitza. Arrossega els elements per moure'ls, arrossega una cantonada per canviar-ne la mida i fes doble clic al text per editar-lo. + Choose an image Tria una imatge + Export to Image Exporta a imatge + Export to Text Exporta a text + Export All Images Exporta totes les imatges + Resolution Resolució + Format Format + Quality Qualitat + One {f} file per page, named after the document. Un fitxer {f} per pàgina, amb el nom del document. + Exclude images smaller than Exclou les imatges més petites de + No limit Sense límit + Each image once, named after the document and page. JPEG images are saved unchanged; others as PNG. Cada imatge una sola vegada, amb el nom del document i la pàgina. Les imatges JPEG es desen sense canvis; les altres com a PNG. + Plain text in reading order; pages are separated by form feeds. Text sense format en ordre de lectura; les pàgines se separen amb salts de pàgina. + Create {what} Crea {what} + initials inicials + signature signatura + Create Custom Stamp Crea un segell personalitzat + From {file} Des de {file} + Category: Categoria: + e.g. My stamps p. ex. Els meus segells + Name: Nom: + Custom Personalitzat + Delete stamp Suprimeix el segell + Create custom stamp… Crea un segell personalitzat… + From a PDF page or an image Des d'una pàgina PDF o una imatge + Line spacing Interlineat + Character spacing Espaiat de caràcters + Horizontal scale Escala horitzontal + Rotate Clockwise Gira en sentit horari + Rotate Counterclockwise Gira en sentit antihorari + Flip Horizontal Capgira horitzontalment + Flip Vertical Capgira verticalment + Replace Image… Substitueix la imatge… + Save Image As… Anomena i desa la imatge… + Copy Image Copia la imatge + The image has been copied ({w} × {h} pixels) S'ha copiat la imatge ({w} × {h} píxels) + Couldn't copy the image: {e} No s'ha pogut copiar la imatge: {e} + Copy Image in Original Format Copia la imatge en el format original + The image has been copied as a {ext} file S'ha copiat la imatge com a fitxer {ext} + The page has changed; select the image again La pàgina ha canviat; torna a seleccionar la imatge + Check for updates Cerca actualitzacions + No check has run yet. Encara no s'ha fet cap comprovació. + Checking for a newer version… S'està cercant una versió més recent… + PdfCraft {v} is available. PdfCraft {v} està disponible. + You have version {c}. Download the new version from its release page. Tens la versió {c}. Baixa la versió nova des de la seva pàgina de publicació. + PdfCraft {c} is up to date. PdfCraft {c} està actualitzat. + Couldn't check for updates: {e} No s'han pogut cercar actualitzacions: {e} + You have version {c}. All releases are listed at {page}. Tens la versió {c}. Totes les versions es llisten a {page}. + Asks GitHub for the latest release. Nothing is downloaded or installed automatically. Consulta a GitHub la darrera versió. No es baixa ni s'instal·la res automàticament. + Download Baixa + Later Més tard + none cap + Declared conformance: {shown} Conformitat declarada: {shown} + Output intent: {list} Intenció de sortida: {list} + Conformance level: Nivell de conformitat: + No problems found: the document conforms to {level}. No s'ha trobat cap problema: el document és conforme a {level}. + (page {p}) (pàgina {p}) + · not fixable here · no es pot corregir aquí + Verify Verifica + Box Quadre + Units Unitats + Set to zero Posa a zero + Current page ({n}) Pàgina actual ({n}) + Subset Subconjunt + Update Actualitza + Add Afegeix + {verb} Header and Footer {verb} capçalera i peu de pàgina + {verb} Watermark {verb} marca d'aigua + {verb} Background {verb} fons + Margins Marges + Left Header Text Text de la capçalera esquerra + Center Header Text Text de la capçalera central + Right Header Text Text de la capçalera dreta + Left Footer Text Text del peu de pàgina esquerre + Center Footer Text Text del peu de pàgina central + Right Footer Text Text del peu de pàgina dret + Insert Page Number Insereix el número de pàgina + Insert Date Insereix la data + Start page number Número de pàgina inicial + Source Origen + Fit to page Ajusta a la pàgina + Rotation Rotació + Appear behind page Apareix darrere de la pàgina + Appear on top of page Apareix sobre la pàgina + Offset from centre Desplaçament des del centre + From colour Des del color + Page Range Options Opcions de l'interval de pàgines + Preview: page {p} of {n} Previsualització: pàgina {p} de {n} + Applies to 1 page S'aplica a 1 pàgina + Applies to {n} pages S'aplica a {n} pàgines + Replaces the existing one on those pages. Substitueix l'existent en aquestes pàgines. + PDF or image PDF o imatge + No file chosen Cap fitxer triat + Page number Número de pàgina + Scale relative to target page Escala relativa a la pàgina de destinació + Link Properties Propietats de l'enllaç + Create Link Crea un enllaç + Link Appearance Aparença de l'enllaç + Link Type: Tipus d'enllaç: + Visible Rectangle Rectangle visible + Invisible Rectangle Rectangle invisible + Highlight Style: Estil de ressaltat: + Invert Inverteix + Outline Contorn + Inset Enfonsat + Line Thickness: Gruix de línia: + Thin Fina + Thick Gruixuda + Line Style: Estil de línia: + Solid Contínua + Dashed Discontínua + Color: Color: + Link Action Acció de l'enllaç + Open a web page Obre una pàgina web + Go to a page view Ves a una vista de pàgina + Type the web address. Escriu l'adreça web. + This document has no signatures. Aquest document no té signatures. + The Keychain's digital IDs couldn't be listed: {e} No s'han pogut llistar els identificadors digitals del Clauer: {e} + Signed and saved to {path} Signat i desat a {path} + Couldn't open revision {n}: {e} No s'ha pogut obrir la revisió {n}: {e} + Couldn't open the signed version: {e} No s'ha pogut obrir la versió signada: {e} + Sign with a Digital ID Signa amb un identificador digital + Choose the digital ID that you want to use for signing: Tria l'identificador digital que vols utilitzar per signar: + Keychain · Clauer · + Windows store · Magatzem de Windows · + Issued by: Emès per: + , Expires: , caduca: + No digital IDs yet. Encara no hi ha cap identificador digital. + Configure New Digital ID Configura un identificador digital nou + Remove "{name}" from this list? The file itself is not deleted. Vols eliminar "{name}" d'aquesta llista? El fitxer en si no se suprimeix. + Continue Continua + Configure a Digital ID for Signing Configura un identificador digital per signar + Use a Digital ID from a file Utilitza un identificador digital d'un fitxer + Create a new Digital ID (self-signed, saved to a password-protected file) Crea un identificador digital nou (autosignat, desat en un fitxer protegit amb contrasenya) + Name Nom + Organizational Unit Unitat organitzativa + Organization Name Nom de l'organització + Email Address Adreça electrònica + Country/Region País/regió + Key Algorithm Algorisme de clau + Confirm Password Confirma la contrasenya + Valid for 5 years, for digital signatures. Self-signed IDs are usually not trusted by others. Vàlid durant 5 anys, per a signatures digitals. Els identificadors autosignats normalment no són de confiança per a altres persones. + File (.p12, .pfx) Fitxer (.p12, .pfx) + Digital ID Identificador digital + Browse… Navega… + {verb} as "{name}" {verb} com a "{name}" + Certify Certifica + The signature will be invisible. La signatura serà invisible. + Distinguished name Nom distingit + Labels Etiquetes + Graphic Gràfic + Signer's name Nom del signant + Fill & Sign signature Signatura d'Omple i signa + Choose image… Tria una imatge… + Permitted actions after certifying Accions permeses després de certificar + No changes allowed No es permet cap canvi + Annotations, form fill-in, and digital signatures Anotacions, emplenament de formularis i signatures digitals + Form fill-in and digital signatures Emplenament de formularis i signatures digitals + The key is in the macOS Keychain, which may ask to allow PdfCraft to use it. La clau és al clauer de macOS, que pot demanar permís perquè PdfCraft la utilitzi. + The key is in the Windows certificate store, which may ask to allow PdfCraft to use it. La clau és al magatzem de certificats de Windows, que pot demanar permís perquè PdfCraft la utilitzi. + Digital ID password Contrasenya de l'identificador digital + Back Enrere + Validate all Valida-ho tot + Sign this field… Signa aquest camp… + Signature is valid: La signatura és vàlida: + Signature validity is UNKNOWN: La validesa de la signatura és DESCONEGUDA: + Signature is INVALID: La signatura NO és vàlida: + Signature Details Detalls de la signatura + Reason Motiu + Signing time Hora de signatura + Algorithm Algorisme + Signer Signant + Issued by Emès per + Valid Vàlid + Field Camp + Field: {field} on page {p} Camp: {field} a la pàgina {p} + Add to trusted certificates Afegeix als certificats de confiança + View signed version Mostra la versió signada + Show certificate… Mostra el certificat… + Export certificate… Exporta el certificat… + Certificate Viewer Visor de certificats + This dialog shows the details of a certificate and its chain. Aquest diàleg mostra els detalls d'un certificat i la seva cadena. + Trust Confia + Issued to Emès per a + Valid from Vàlid des de + Valid to Vàlid fins a + Intended usage Ús previst + Any Qualsevol + Version Versió + Serial number Número de sèrie + Issuer Emissor + Validity starts La validesa comença + Validity ends La validesa acaba + Public key Clau pública + Key usage Ús de la clau + Not present No present + Self-signed Autosignat + Edit Action Edita l'acció + New Action Acció nova + Action name: Nom de l'acció: + Description: Descripció: + Steps Passos + Add the steps this action runs, in order. Afegeix els passos que executa aquesta acció, per ordre. + Add Step Afegeix un pas + An action with this name already exists. Ja existeix una acció amb aquest nom. + New Action… Acció nova… + Edit… Edita… + Add watermark Afegeix una marca d'aigua + Add header Afegeix una capçalera + Add footer Afegeix un peu de pàgina + Set document title Defineix el títol del document + Run a JavaScript Executa un JavaScript + Prepare for Distribution Prepara per a la distribució + Remove hidden information and flatten comments and form fields, so recipients see only the pages. Elimina la informació oculta i aplana els comentaris i els camps de formulari, de manera que els destinataris només vegin les pàgines. + Optimize Scanned Documents Optimitza els documents escanejats + Make scans searchable, then make them smaller. Fes que els escanejats siguin cercables i després redueix-ne la mida. + Add Page Numbers Afegeix números de pàgina + Number every page in the footer. Numera cada pàgina al peu de pàgina. + Mark as Confidential Marca com a confidencial + A diagonal CONFIDENTIAL watermark on every page. Una marca d'aigua diagonal CONFIDENCIAL a cada pàgina. + Sanitize Documents Neteja els documents + Remove hidden information, metadata, scripts and embedded content, and rewrite the files. Elimina la informació oculta, les metadades, els scripts i el contingut incrustat, i reescriu els fitxers. + Type text Escriu text + Text to insert Text per inserir + Inserted text Text inserit + Replacement text Text de substitució + Edit text… Edita el text… + Add a sticky note here Afegeix aquí una nota adhesiva + {kind} Properties Propietats de {kind} + Appearance Aparença + General General + Review History Historial de revisió + This comment's appearance can't be changed yet. L'aparença d'aquest comentari encara no es pot canviar. + Icon Icona + Thickness Gruix + Line ending Final de línia + Modified Modificat + No status has been set. No s'ha definit cap estat. + Compare Files Compara fitxers + Old file: Fitxer antic: + Open the older version first Obre primer la versió més antiga + New file: Fitxer nou: + Text is compared word by word; the differences are shown on the new file. El text es compara paraula per paraula; les diferències es mostren al fitxer nou. + Compare this file with an older version: Compare files… in All tools. Compara aquest fitxer amb una versió més antiga: Compara fitxers… a Totes les eines. + No differences in the text. No hi ha diferències al text. + {n} {kind} {n} {kind} + Inserted Inserit + Deleted Suprimit + Replaced Substituït + Visual Visual + Mark as comments Marca com a comentaris + Report… Informe… + {kind} · page {p} {kind} · pàgina {p} + Set Alternate Text Defineix el text alternatiu + This document has no tagged figures. Aquest document no té figures etiquetades. + on page {p} a la pàgina {p} + Figure {i} of {n}{page} Figura {i} de {n}{page} + No preview Sense previsualització + Alternate text Text alternatiu + Describe the figure Descriu la figura + Decorative figure Figura decorativa + Previous figure Figura anterior + Next figure Figura següent + Save & Close Desa i tanca + Accessibility Checker Options Opcions del verificador d'accessibilitat + Report Options Opcions de l'informe + Create accessibility report Crea un informe d'accessibilitat + Page Range Interval de pàgines + All pages in document Totes les pàgines del document + Checking Options ({on} of 32 in all categories) Opcions de comprovació ({on} de 32 en totes les categories) + Show this dialog when the Checker starts Mostra aquest diàleg quan s'iniciï el verificador + Select All Selecciona-ho tot + Clear All Esborra-ho tot + Start Checking Inicia la comprovació + This document hasn't been checked yet. Aquest document encara no s'ha comprovat. + No issues found No s'ha trobat cap problema + 1 issue 1 problema + {n} issues {n} problemes + {label} (1 issue) {label} (1 problema) + {label} ({n} issues) {label} ({n} problemes) + Check again Torna a comprovar + Report Informe + Show the accessibility report Mostra l'informe d'accessibilitat + Collapse Replega + Expand Desplega + {rule} - {status} {rule} - {status} + Passed Superada + Failed Fallida + Needs manual check Cal comprovació manual + Skipped Omesa + Fix Corregeix + Skip Rule Omet la regla + Explain Explica + Check Again Torna a comprovar + Show Report Mostra l'informe + Options… Opcions… + Go to the page Ves a la pàgina + Page Content Contingut de la pàgina + Forms Formularis + Alternate Text Text alternatiu + Tables Taules + Lists Llistes + Headings Encapçalaments + Accessibility permission flag Indicador de permís d'accessibilitat + Accessibility permission flag is set L'indicador de permís d'accessibilitat està activat + Security settings must allow assistive technology to read the content ("Enable text access for screen reader devices"). Change the document's security to allow it. La configuració de seguretat ha de permetre que la tecnologia d'assistència llegeixi el contingut ("Enable text access for screen reader devices"). Canvia la seguretat del document per permetre-ho. + Image-only PDF PDF només d'imatge + Document is not image-only PDF El document no és un PDF només d'imatge + Pages that are only pictures of text can't be read aloud or searched. Recognize text (OCR) to add a text layer. Les pàgines que només són imatges de text no es poden llegir en veu alta ni cercar. Reconeix el text (OCR) per afegir-hi una capa de text. + Document is tagged PDF El document és un PDF etiquetat + Tags give the document a logical structure that assistive technology follows. Tag the document (Automatically tag PDF). Les etiquetes donen al document una estructura lògica que segueix la tecnologia d'assistència. Etiqueta el document (Automatically tag PDF). + Logical Reading Order Ordre de lectura lògic + Document structure provides a logical reading order L'estructura del document proporciona un ordre de lectura lògic + Check that the tags read in the order a sighted reader would. Use the Reading Order tool or the Tags panel to correct it. Comprova que les etiquetes es llegeixin en l'ordre en què ho faria un lector amb visió. Utilitza l'eina d'ordre de lectura o el tauler d'etiquetes per corregir-lo. + Primary language Idioma principal + Text language is specified S'ha especificat l'idioma del text + Screen readers choose their voice from the document's language. Set it in Document Properties > Advanced > Language. Els lectors de pantalla trien la veu segons l'idioma del document. Defineix-lo a Propietats del document > Avançat > Idioma. + Document title is showing in title bar El títol del document es mostra a la barra de títol + The window should show a meaningful title rather than the file name. Set a title and Initial View > Show: Document Title. La finestra hauria de mostrar un títol significatiu en lloc del nom del fitxer. Defineix un títol i Visualització inicial > Mostra: Títol del document. + Bookmarks are present in large documents Hi ha marcadors en documents grans + Documents of more than 20 pages need bookmarks for navigation. Add bookmarks for the main sections. Els documents de més de 20 pàgines necessiten marcadors per navegar-hi. Afegeix marcadors per a les seccions principals. + Color contrast Contrast de color + Document has appropriate color contrast El document té un contrast de color adequat + Text must contrast enough with its background for people with low vision. Check the colours by eye or with a contrast tool. El text ha de contrastar prou amb el fons per a les persones amb baixa visió. Comprova els colors a ull o amb una eina de contrast. + Tagged content Contingut etiquetat + All page content is tagged Tot el contingut de la pàgina està etiquetat + Everything on a page must be tagged or marked as an artifact (decoration, headers, footers). Tag the untagged content. Tot el que hi ha en una pàgina ha d'estar etiquetat o marcat com a artefacte (decoració, capçaleres, peus de pàgina). Etiqueta el contingut sense etiquetar. + Tagged annotations Anotacions etiquetades + All annotations are tagged Totes les anotacions estan etiquetades + Comments, links and fields must be in the tag tree to be announced. Tag the annotations. Els comentaris, els enllaços i els camps han de ser a l'arbre d'etiquetes perquè es puguin anunciar. Etiqueta les anotacions. + Tab order Ordre de tabulació + Tab order is consistent with structure order L'ordre de tabulació coincideix amb l'ordre de l'estructura + Pages with links, comments or fields should tab in structure order. The fix sets each page's tab order to Use Document Structure. Les pàgines amb enllaços, comentaris o camps haurien de tabular segons l'ordre de l'estructura. La correcció estableix l'ordre de tabulació de cada pàgina a Utilitza l'estructura del document. + Character encoding Codificació de caràcters + Reliable character encoding is provided Es proporciona una codificació de caràcters fiable + Fonts must map their characters to Unicode so text can be read and copied. Fix the fonts or recreate the PDF. Els tipus de lletra han d'associar els seus caràcters a Unicode perquè el text es pugui llegir i copiar. Corregeix els tipus de lletra o torna a crear el PDF. + Tagged multimedia Multimèdia etiquetada + All multimedia objects are tagged Tots els objectes multimèdia estan etiquetats + Video, sound and rich media must be tagged to be announced. Tag the multimedia annotations. El vídeo, el so i el contingut multimèdia enriquit han d'estar etiquetats per ser anunciats. Etiqueta les anotacions multimèdia. + Screen flicker Parpelleig de pantalla + Page will not cause screen flicker La pàgina no provocarà parpelleig de pantalla + Animation that flashes can cause seizures. Check scripts and media for flicker. Les animacions amb llampecs poden provocar convulsions. Revisa els scripts i el contingut multimèdia per detectar parpelleig. + Scripts Scripts + No inaccessible scripts Cap script inaccessible + Timed responses Respostes cronometrades + Page does not require timed responses La pàgina no requereix respostes cronometrades + People may need more time to respond. Check that nothing has a time limit. És possible que les persones necessitin més temps per respondre. Comprova que res tingui un límit de temps. + Navigation links Enllaços de navegació + Navigation links are not repetitive Els enllaços de navegació no són repetitius + Repeated navigation links should be skippable. Check links that appear on every page. Els enllaços de navegació repetits haurien de poder-se ometre. Revisa els enllaços que apareixen a totes les pàgines. + Tagged form fields Camps de formulari etiquetats + All form fields are tagged Tots els camps de formulari estan etiquetats + Form fields must be in the tag tree (Form tags) to be announced. Tag the form fields. Els camps de formulari han de ser a l'arbre d'etiquetes (etiquetes Form) per ser anunciats. Etiqueta els camps de formulari. + Field descriptions Descripcions dels camps + All form fields have description Tots els camps de formulari tenen descripció + Each field needs a tooltip that says what to enter. Add one in Field Properties > General > Tooltip. Cada camp necessita un suggeriment que digui què cal introduir. Afegeix-ne un a Propietats del camp > General > Suggeriment. + Figures alternate text Text alternatiu de les figures + Figures require alternate text Les figures requereixen text alternatiu + Pictures need alternate text that describes them, or must be marked decorative. Add alternate text to each figure. Les imatges necessiten un text alternatiu que les descrigui, o s'han de marcar com a decoratives. Afegeix text alternatiu a cada figura. + Nested alternate text Text alternatiu imbricat + Alternate text that will never be read Text alternatiu que mai es llegirà + Alternate text inside an element that already has alternate text is never read. Remove the inner alternate text. El text alternatiu dins d'un element que ja en té mai es llegeix. Elimina el text alternatiu interior. + Associated with content Associat amb contingut + Alternate text must be associated with some content El text alternatiu ha d'estar associat amb algun contingut + Alternate text on an element without page content is never reached. Remove it or attach the element to content. El text alternatiu d'un element sense contingut de pàgina mai s'assoleix. Elimina'l o vincula l'element a contingut. + Hides annotation Amaga l'anotació + Alternate text should not hide annotation El text alternatiu no hauria d'amagar l'anotació + Alternate text on an element that contains a link or field hides that annotation from assistive technology. Move the alternate text. El text alternatiu d'un element que conté un enllaç o un camp amaga aquesta anotació a la tecnologia d'assistència. Mou el text alternatiu. + Other elements alternate text Text alternatiu d'altres elements + Other elements that require alternate text Altres elements que requereixen text alternatiu + Formulas and similar non-text elements need alternate text. Add alternate text to them. Les fórmules i altres elements que no són text necessiten text alternatiu. Afegeix-hi text alternatiu. + Rows Files + TR must be a child of Table, THead, TBody, or TFoot TR ha de ser fill de Table, THead, TBody o TFoot + Table cells belong in a row. Fix the table's tags. Les cel·les de taula pertanyen a una fila. Corregeix les etiquetes de la taula. + Headers Capçaleres + Tables should have headers Les taules haurien de tenir capçaleres + Header cells (TH) tell listeners what each column or row holds. Mark the header cells. Les cel·les de capçalera (TH) indiquen als oients què conté cada columna o fila. Marca les cel·les de capçalera. + Regularity Regularitat + Tables must contain the same number of columns in each row and rows in each column Les taules han de contenir el mateix nombre de columnes a cada fila i de files a cada columna + Irregular tables confuse cell navigation. Give every row the same number of cells (counting spans). Les taules irregulars confonen la navegació per cel·les. Dona a cada fila el mateix nombre de cel·les (comptant els abastos). + Summary Resum + Tables must have a summary Les taules han de tenir un resum + A summary describes the table's purpose and layout. Add a Summary attribute to each table. Un resum descriu la finalitat i la disposició de la taula. Afegeix un atribut Summary a cada taula. + List items Elements de llista + LI must be a child of L LI ha de ser fill de L + List items belong in a list. Fix the list's tags. Els elements de llista pertanyen a una llista. Corregeix les etiquetes de la llista. + Lbl and LBody Lbl i LBody + Lbl and LBody must be children of LI Lbl i LBody han de ser fills de LI + List labels and bodies belong in a list item. Fix the list's tags. Les etiquetes i els cossos de llista pertanyen a un element de llista. Corregeix les etiquetes de la llista. + Appropriate nesting Imbricació adequada + Heading levels shouldn't skip (an H1 followed by an H3). Retag the headings. Els nivells d'encapçalament no s'haurien de saltar (un H1 seguit d'un H3). Torna a etiquetar els encapçalaments. + TH and TD TH i TD + TH and TD must be children of TR TH i TD han de ser fills de TR + Mark Page Range Marca l'interval de pàgines + Pages from Pàgines des de + Single word or phrase Una sola paraula o frase + Text to find Text que cal cercar + Patterns Patrons + Phone Numbers Números de telèfon + Email Addresses Adreces de correu electrònic + Credit Cards Targetes de crèdit + Social Security Numbers Números de la seguretat social + Dates Dates + Text in images isn't found; recognise text (OCR) first. El text de les imatges no es troba; reconeix el text (OCR) primer. + No matches. Cap coincidència. + Some bookmarks are not shown here: the panel lists a limited number, nested a limited depth. Alguns marcadors no es mostren aquí: el tauler en llista un nombre limitat, imbricats fins a una profunditat limitada. + {n} match(es) marked for redaction. {n} coincidència(es) marcada(es) per censurar. + Multiple words or phrases Diverses paraules o frases + One word or phrase per line Una paraula o frase per línia + Import list… Importa una llista… + {n} word(s) or phrase(s) {n} paraula(es) o frase(s) + {name} is too large for a word list (at most 1 MB). {name} és massa gran per a una llista de paraules (com a màxim 1 MB). + Redaction Tool Properties Propietats de l'eina de censura + Redacted area fill colour: Color d'emplenament de l'àrea censurada: + Use overlay text Utilitza text superposat + Custom text: Text personalitzat: + Redaction code: Codi de censura: + Font: Tipus de lletra: + Font size: Mida del tipus de lletra: + Auto-size text to fit redaction region Ajusta automàticament la mida del text a la regió censurada + Font colour: Color del tipus de lletra: + Repeat overlay text Repeteix el text superposat + Text alignment: Alineació del text: + Center Centrat + Apply redactions Aplica les censures + You are about to apply 1 redaction mark. Text, images and drawings under the marks, and comments and form fields that overlap them, are removed permanently. Estàs a punt d'aplicar 1 marca de censura. El text, les imatges i els dibuixos que hi ha sota les marques, i els comentaris i camps de formulari que se superposen, se suprimeixen de manera permanent. + You are about to apply {n} redaction marks. Text, images and drawings under the marks, and comments and form fields that overlap them, are removed permanently. Estàs a punt d'aplicar {n} marques de censura. El text, les imatges i els dibuixos que hi ha sota les marques, i els comentaris i camps de formulari que se superposen, se suprimeixen de manera permanent. + Save the document afterwards: saving rewrites the whole file so no trace of the removed content stays in it. Desa el document després: en desar, es reescriu tot el fitxer perquè no hi quedi cap rastre del contingut suprimit. + Select the items to remove from this document. Selecciona els elements que s'han d'eliminar d'aquest document. + Metadata Metadades + File attachments Fitxers adjunts + Comments and markups Comentaris i marques + Hidden text Text ocult + Hidden layers Capes ocultes + Links, actions and JavaScripts Enllaços, accions i JavaScripts + Private data of other applications Dades privades d'altres aplicacions + None found No se n'ha trobat cap + Form fields are flattened: their values stay visible. Saving rewrites the whole file. Els camps de formulari s'aplanen: els valors continuen visibles. En desar, es reescriu tot el fitxer. + Remove Elimina + Sanitizing removes hidden information from the document: metadata, file attachments, comments, form fields (flattened), hidden text and layers, bookmarks, links, actions and scripts, and private application data. La neteja elimina la informació oculta del document: metadades, fitxers adjunts, comentaris, camps de formulari (aplanats), text i capes ocults, marcadors, enllaços, accions i scripts, i dades privades d'aplicacions. + Save the document afterwards; saving rewrites the whole file so nothing removed stays in it. Desa el document després; en desar, es reescriu tot el fitxer perquè no hi quedi res del que s'ha eliminat. + Printer: Impressora: + Save as PDF Anomena i desa com a PDF + {name} (default) {name} (per defecte) + Copies: Còpies: + Collate Intercala + Print in grayscale Imprimeix en escala de grisos + Two-sided: A doble cara: + Off Desactivat + Flip on long edge Gira pel costat llarg + Flip on short edge Gira pel costat curt + Paper: Paper: + Pages to Print Pàgines per imprimir + More options: Més opcions: + All pages in range Totes les pàgines de l'interval + Odd pages only Només les pàgines senars + Even pages only Només les pàgines parelles + Reverse pages Inverteix les pàgines + Page Sizing & Handling Mida i gestió de les pàgines + Size Mida + Poster Pòster + Multiple Múltiple + Booklet Quadern + Fit Ajusta + Shrink oversized pages Redueix les pàgines que no hi caben + Custom scale: Escala personalitzada: + Tile scale: Escala de mosaic: + Overlap: Superposició: + Cut marks Marques de tall + Pages per sheet: Pàgines per full: + Page order: Ordre de les pàgines: + Horizontal Horitzontal + Horizontal reversed Horitzontal invertit + Vertical Vertical + Vertical reversed Vertical invertit + Print page border Imprimeix la vora de la pàgina + Auto-rotate pages Gira les pàgines automàticament + Booklet subset: Subconjunt del quadern: + Both sides Les dues cares + Front side only Només la cara anterior + Back side only Només la cara posterior + Binding: Enquadernació: + Left Esquerra + Right Dreta + Orientation: Orientació: + Auto portrait/landscape Vertical/horitzontal automàtic + Portrait Vertical + Landscape Horitzontal + Comments & Forms Comentaris i formularis + Document Document + Document and markups Document i marques + Document and stamps Document i segells + Form fields only Només els camps de formulari + Previous sheet Full anterior + Next sheet Full següent + No sheets Cap full + Sheet {s} of {n} Full {s} de {n} + Removed 1 hidden item. Save to remove them from the file. S'ha eliminat 1 element ocult. Desa per eliminar-lo del fitxer. + Removed {n} hidden items. Save to remove them from the file. S'han eliminat {n} elements ocults. Desa per eliminar-los del fitxer. + Document sanitized. Save to finish: saving rewrites the whole file. Document netejat. Desa per acabar: en desar, es reescriu tot el fitxer. + Applied 1 redaction mark. Save to remove the content from the file. S'ha aplicat 1 marca de censura. Desa per eliminar el contingut del fitxer. + Applied {n} redaction marks. Save to remove the content from the file. S'han aplicat {n} marques de censura. Desa per eliminar el contingut del fitxer. + JavaScript Console Consola de JavaScript + JavaScript is turned off (Preferences ▸ JavaScript). JavaScript està desactivat (Preferències > JavaScript). + Output appears here. La sortida apareix aquí. + Script Name: Nom de l'script: + This document has no document-level scripts. Aquest document no té scripts a nivell de document. + No form fields were detected No s'ha detectat cap camp de formulari + Detected 1 form field S'ha detectat 1 camp de formulari + Detected {n} form fields S'han detectat {n} camps de formulari + {field}: {e} {field}: {e} + Current page Pàgina actual + Selected pages Pàgines seleccionades + Document language Idioma del document + Output Sortida + Searchable Image (Exact) Imatge amb text cercable (exacte) + Adds invisible text over each word; the page image is not changed Afegeix text invisible sobre cada paraula; la imatge de la pàgina no canvia + Downsample to Redueix la resolució a + Also recognize pages that already have text Reconeix també les pàgines que ja tenen text + Pictures on those pages are recognized too; words already in the page's text are not added again També es reconeixen les imatges d'aquestes pàgines; les paraules que ja són al text de la pàgina no es tornen a afegir + Text recognition isn't installed: its model files are missing. Reinstall PdfCraft, or set PDFCRAFT_MODELS to the folder that holds them. El reconeixement de text no està instal·lat: falten els seus fitxers de model. Reinstal·la PdfCraft o defineix PDFCRAFT_MODELS amb la carpeta que els conté. + Settings Configuració + Optional Opcional + Planned · {m} Previst · {m} + Planned for milestone {m} — open to see what it will include Previst per a la fita {m} — obre per veure què inclourà + Coming in milestone {m}. Items marked Ready work today. Arribarà a la fita {m}. Els elements marcats com a Llest funcionen avui. + 1 mark 1 marca + {n} marks {n} marques + Dynamic Dinàmic + Sign Here Signa aquí + Standard Business Empresarial estàndard + Choose a stamp, then click on the page to place it. Tria un segell i fes clic a la pàgina per col·locar-lo. + Note Nota + Polyline Polilínia + Attachment Adjunt + Callout Crida + Typewriter Màquina d'escriure + Checked Marcat + Unchecked Desmarcat + Marked Assenyalat + Locked Bloquejat + Search comments Cerca comentaris + Add a comment Afegeix un comentari + No comments yet. Encara no hi ha comentaris. + Pick a tool in the quick bar, or type above. Tria una eina a la barra ràpida o escriu a dalt. + No comments match. Cap comentari coincideix. + Unknown author Autor desconegut + No colour Sense color + Remove checkmark Elimina la marca de verificació + Mark with checkmark Marca amb una marca de verificació + Reply Respon + Add a reply Afegeix una resposta + Post Publica + Page {label} Pàgina {label} + {kind} — click to show it on the page {kind} — fes clic per mostrar-ho a la pàgina + Set status Defineix l'estat + Copy text Copia el text + Properties… Propietats… + Make Current Properties Default Estableix les propietats actuals com a per defecte + More options Més opcions + Sort by Ordena per + Author Autor + Type Tipus + Colour Color + Show all comments Mostra tots els comentaris + Create PDF comment summary… Crea un resum de comentaris en PDF… + Export all to data file… Exporta-ho tot a un fitxer de dades… + Filter comments Filtra els comentaris + Status Estat + Accepted Acceptat + Rejected Rebutjat + Cancelled Cancel·lat + Completed Completat + Show all Mostra-ho tot + Yellow Groc + Orange Taronja + Red Vermell + Pink Rosa + Purple Porpra + Blue Blau + Light blue Blau clar + Green Verd + Gray Gris + Black Negre + Bookmark options Opcions dels marcadors + Expand all bookmarks Expandeix tots els marcadors + Expand top-level bookmarks Expandeix els marcadors de primer nivell + Collapse all bookmarks Replega tots els marcadors + New bookmark ({key}) Marcador nou ({key}) + This document has no bookmarks. Aquest document no té marcadors. + This document has no layers. Aquest document no té capes. + This document has no attachments. Aquest document no té adjunts. + Hide layer Amaga la capa + Show layer Mostra la capa + Set layer visibility Defineix la visibilitat de la capa + on page {label} a la pàgina {label} + Save attachment… Desa l'adjunt… + Open in a new tab Obre en una pestanya nova + This document has no pages. Aquest document no té pàgines. + Find text Cerca text + No matches Cap coincidència + Searching… {s}/{p} Cercant… {s}/{p} + {c} of {n}{more} {c} de {n}{more} + Previous ({key}) Anterior ({key}) + Next ({key}) Següent ({key}) + Find options Opcions de cerca + Whole words only Només paraules senceres + Case-sensitive Distingeix majúscules i minúscules + Close (Esc) Tanca (Esc) + Align Alinea + Top Superior + Bottom Inferior + Center horizontally Centra horitzontalment + Center vertically Centra verticalment + Distribute Distribueix + Horizontally Horitzontalment + Vertically Verticalment + Set Fields to Same Size Estableix els camps a la mateixa mida + Height Alçada + Width Amplada + Both Ambdues + Duplicate… Duplica… + All pages Totes les pàgines + Odd pages Pàgines senars + Even pages Pàgines parelles + Landscape pages Pàgines horitzontals + Portrait pages Pàgines verticals + Move earlier Mou abans + Move later Mou després + Back to the document Torna al document + Protect Using Password Protegeix amb contrasenya + Requires user to enter a password for: Requereix que l'usuari introdueixi una contrasenya per a: + Viewing Visualització + Editing Edició + Type Password Escriu la contrasenya + Re-type Password Torna a escriure la contrasenya + Strength: {s} Fortalesa: {s} + Strong Forta + Medium Mitjana + Weak Feble + Advanced Options {chevron} Opcions avançades {chevron} + Compatibility Compatibilitat + Acrobat X and later (256-bit AES) Acrobat X i posteriors (AES de 256 bits) + Acrobat 7.0 and later (128-bit AES) Acrobat 7.0 i posteriors (AES de 128 bits) + Acrobat 5.0 and later (128-bit RC4) Acrobat 5.0 i posteriors (RC4 de 128 bits) + Acrobat 3.0 and later (40-bit RC4) Acrobat 3.0 i posteriors (RC4 de 40 bits) + Encrypt Xifra + All document contents Tot el contingut del document + All document contents except metadata Tot el contingut del document excepte les metadades + Printing allowed Impressió permesa + Low Resolution (150 dpi) Baixa resolució (150 dpi) + Changes allowed Canvis permesos + Inserting, deleting, and rotating pages Inserció, supressió i gir de pàgines + Filling in form fields and signing existing signature fields Emplenament de camps de formulari i signatura de camps de signatura existents + Commenting, filling in form fields, and signing existing signature fields Comentaris, emplenament de camps de formulari i signatura de camps de signatura existents + Any except extracting pages Qualsevol excepte l'extracció de pàgines + Enable copying of text, images, and other content Permet copiar text, imatges i altre contingut + Enable text access for screen reader devices for the visually impaired Permet l'accés al text als lectors de pantalla per a persones amb discapacitat visual + Type a password. Escriu una contrasenya. + The passwords don't match. Les contrasenyes no coincideixen. + This compatibility level supports only plain ASCII passwords. Aquest nivell de compatibilitat només admet contrasenyes en ASCII simple. + Anyone opening the document will need this password. It's applied when you save. Qualsevol persona que obri el document necessitarà aquesta contrasenya. S'aplica en desar. + The document opens without a password; this password is needed to change the restrictions. It's applied when you save. El document s'obre sense contrasenya; aquesta contrasenya cal per canviar les restriccions. S'aplica en desar. + Recover unsaved documents? Vols recuperar els documents no desats? + PdfCraft didn't shut down normally. These documents had changes that were autosaved: PdfCraft no s'ha tancat amb normalitat. Aquests documents tenien canvis desats automàticament: + just now ara mateix + {n} min ago fa {n} min + {n} h ago fa {n} h + · password-protected · protegit amb contrasenya + Recover Recupera + Discard Descarta + Version {v} Versió {v} + A clean-room, open-source PDF application written in Rust. MIT OR Apache-2.0. Una aplicació PDF de codi obert i clean-room escrita en Rust. MIT OR Apache-2.0. + Part of Part de + Summarize Options Opcions de resum + Choose a layout: Tria una disposició: + Comments only Només comentaris + Sort comments by: Ordena els comentaris per: + Create PDF Comment Summary Crea un resum de comentaris en PDF + Revert to the previously saved version of “{name}”? Changes since then can't be undone afterwards. Vols revertir a la versió desada anteriorment de “{name}”? Els canvis fets des d'aleshores no es podran desfer després. + Number pages Numera les pàgines + Style Estil + None (prefix only) Cap (només prefix) + Prefix Prefix + Start Inici + Labels: {preview}. Later pages keep their labels. Etiquetes: {preview}. Les pàgines posteriors mantenen les seves etiquetes. + Even and Odd Pages Pàgines parelles i senars + Even Pages Only Només pàgines parelles + Odd Pages Only Només pàgines senars + Landscape and Portrait Pages Pàgines horitzontals i verticals + Landscape Pages Pàgines horitzontals + Portrait Pages Pàgines verticals + Duplicate Field Duplica el camp + Duplicate "{name}" onto: Duplica "{name}" a: + 1 page selected. 1 pàgina seleccionada. + {n} pages selected. {n} pàgines seleccionades. + Delete pages after extracting Suprimeix les pàgines després d'extreure-les + Extract pages as separate files Extreu les pàgines com a fitxers separats + Rotate Pages Gira les pàgines + Direction: Direcció: + Clockwise 90 degrees 90 graus en sentit horari + Counterclockwise 90 degrees 90 graus en sentit antihorari + 180 degrees 180 graus + Pages: Pàgines: + All Totes + Selection Selecció + From Des de + Rotate: Gira: + Repairs Reparacions + Repair log Registre de reparacions + Split document Divideix el document + Number of pages Nombre de pàgines + Pages per file Pàgines per fitxer + File size Mida del fitxer + At most Com a màxim + Top-level bookmarks ({n}) Marcadors de primer nivell ({n}) + Before each selected page (select pages in Organize) Abans de cada pàgina seleccionada (selecciona pàgines a Organitza) + Creates 1 file from {n} pages. Crea 1 fitxer a partir de {n} pàgines. + Creates {f} files from {n} pages. Crea {f} fitxers a partir de {n} pàgines. + Each file holds as many of the {n} pages as fit. Cada fitxer conté tantes de les {n} pàgines com hi càpiguen. + Replace Pages Substitueix pàgines + Original: replace pages Original: substitueix les pàgines + to a + to {n} a {n} + Replacement: pages of {name} Substitució: pàgines de {name} + of {name} de {name} + Only the page content changes: links, comments, form fields and bookmarks on the original pages stay. Només canvia el contingut de la pàgina: els enllaços, comentaris, camps de formulari i marcadors de les pàgines originals es mantenen. + The replacement file doesn't have that many pages. El fitxer de substitució no té tantes pàgines. + Tagged PDF PDF etiquetat + Document Properties Propietats del document + Description Descripció + Initial View Visualització inicial + Security Seguretat + Fonts Tipus de lletra + Advanced Avançat + Title Títol + Subject Assumpte + Keywords Paraules clau + Application Aplicació + PDF producer Productor del PDF + Layout and Magnification Disposició i ampliació + Navigation tab Pestanya de navegació + Page Only Només la pàgina + Bookmarks Panel and Page Tauler de marcadors i pàgina + Pages Panel and Page Tauler de pàgines i pàgina + Attachments Panel and Page Tauler d'adjunts i pàgina + Layers Panel and Page Tauler de capes i pàgina + Page layout Disposició de la pàgina + Default Per defecte + Single Page Pàgina única + Single Page Continuous Pàgina única contínua + Two-Up (Facing) Dues pàgines (enfrontades) + Two-Up Continuous (Facing) Dues pàgines contínues (enfrontades) + Two-Up (Cover Page) Dues pàgines (amb coberta) + Two-Up Continuous (Cover Page) Dues pàgines contínues (amb coberta) + Magnification Ampliació + Actual Size Mida real + Fit Page Ajusta a la pàgina + Fit Width Ajusta a l'amplada + Fit Height Ajusta a l'alçada + Fit Visible Ajusta a la part visible + Open to page Obre a la pàgina + of {pages} de {pages} + Window Options Opcions de finestra + Resize window to initial page Redimensiona la finestra a la pàgina inicial + Center window on screen Centra la finestra a la pantalla + Open in Full Screen mode Obre en mode de pantalla completa + Show: Mostra: + File Name Nom del fitxer + Document Title Títol del document + User Interface Options Opcions de la interfície d'usuari + Hide menu bar Amaga la barra de menús + Hide toolbars Amaga les barres d'eines + Hide window controls Amaga els controls de la finestra + Security method Mètode de seguretat + No security Sense seguretat + Restrictions Restriccions + None — everything is allowed Cap — tot està permès + Password security Seguretat amb contrasenya + Encryption Xifratge + Opened with S'ha obert amb + — (protection is applied when you save) — (la protecció s'aplica en desar) + Owner password (no restrictions apply) Contrasenya del propietari (no s'aplica cap restricció) + User password Contrasenya de l'usuari + Change settings… Canvia la configuració… + Printing Impressió + Not allowed No permès + Allowed Permès + High resolution Alta resolució + Low resolution Baixa resolució + Changing the document Canvi del document + Document assembly Assemblatge del document + Content copying Còpia del contingut + Content copying for accessibility Còpia del contingut per a l'accessibilitat + Commenting Comentaris + Filling of form fields Emplenament de camps de formulari + No fonts are referenced by the pages. Les pàgines no fan referència a cap tipus de lletra. + PDF version Versió del PDF + Location Ubicació + Page size Mida de la pàgina + Yes Sí + No No + Revisions Revisions + View revision {n} Mostra la revisió {n} + Open the file as it was saved then Obre el fitxer tal com es va desar aleshores + Binding Enquadernació + Left Edge Vora esquerra + Right Edge Vora dreta + Language Idioma + Saved {place}: {before} → {after} ({pct}% smaller){detail} S'ha desat {place}: {before} → {after} ({pct} % més petit){detail} + This file is already as small as it can be made ({size}). No copy was saved. Aquest fitxer ja és tan petit com es pot fer ({size}). No s'ha desat cap còpia. + Saved {place}: {before} → {after} (not smaller){detail} S'ha desat {place}: {before} → {after} (no és més petit){detail} + Couldn't save the image: {e} No s'ha pogut desar la imatge: {e} + Adding images arrives on the web with file pickers for images L'addició d'imatges arribarà al web amb selectors de fitxers d'imatge + Replacing images on page {p} arrives on the web with image pickers ({i}) La substitució d'imatges a la pàgina {p} arribarà al web amb selectors d'imatges ({i}) + {name}: choosing images arrives on the web with file pickers for images {name}: la selecció d'imatges arribarà al web amb selectors de fitxers d'imatge + Replacing images arrives on the web with image file pickers La substitució d'imatges arribarà al web amb selectors de fitxers d'imatge + Couldn't create a PDF: {e} No s'ha pogut crear un PDF: {e} + The clipboard has no image or text El porta-retalls no té cap imatge ni text + On the web, open or drop an image to convert it Al web, obre o deixa anar una imatge per convertir-la + Couldn't optimize the file: {e} No s'ha pogut optimitzar el fitxer: {e} + Couldn't write {path}: {e} No s'ha pogut escriure {path}: {e} + The form asks to be submitted to {u}; PdfCraft doesn't send form data. Save the document to keep your entries. El formulari demana que s'enviï a {u}; PdfCraft no envia dades de formularis. Desa el document per conservar les dades introduïdes. + This PDF uses the unsupported {s} action. Aquest PDF utilitza l'acció {s}, que no és compatible. + {name}: the {other} action isn't supported yet {name}: l'acció {other} encara no és compatible + {name} submits the form to {url}; PdfCraft doesn't send form data. Save the document to keep your entries. {name} envia el formulari a {url}; PdfCraft no envia dades de formularis. Desa el document per conservar les dades introduïdes. + Export stopped: {e} Exportació aturada: {e} + Exported 1 image S'ha exportat 1 imatge + Exported {n} images S'han exportat {n} imatges + ({s} not exported: {first}) ({s} no s'han exportat: {first}) + Exported the text of 1 page S'ha exportat el text d'1 pàgina + Exported the text of {n} pages S'ha exportat el text de {n} pàgines + {msg} to {dir} {msg} a {dir} + Exporting… {d} of {t} Exportant… {d} de {t} + Choose a folder for the exported files Tria una carpeta per als fitxers exportats + New {tool} comments will look like this one Els comentaris nous de {tool} tindran aquest aspecte + This document can't be checked: it couldn't be read for editing No es pot comprovar aquest document: no s'ha pogut llegir per editar-lo + The checker found no problems in this document. El verificador no ha trobat cap problema en aquest document. + The checker found 1 problem which may prevent the document from being fully accessible. El verificador ha trobat 1 problema que pot impedir que el document sigui totalment accessible. + The checker found {n} problems which may prevent the document from being fully accessible. El verificador ha trobat {n} problemes que poden impedir que el document sigui totalment accessible. + The text is the same El text és el mateix + 1 difference found S'ha trobat 1 diferència + {n} differences found S'han trobat {n} diferències + Added 1 comment S'ha afegit 1 comentari + Added {n} comments S'han afegit {n} comentaris + Choose a folder for the results Tria una carpeta per als resultats + Files for {name} Fitxers de {name} + An action is already running Ja hi ha una acció en execució + Running action… file {d} of {t} Executant l'acció… fitxer {d} de {t} + No unlinked web addresses were found in the text No s'ha trobat cap adreça web sense enllaç al text + Created 1 link S'ha creat 1 enllaç + Created {n} links S'han creat {n} enllaços + Text recognition is already running El reconeixement de text ja s'està executant + Optimizing… removing user data Optimitzant… eliminant les dades d'usuari + Optimizing… image {d} of {t} Optimitzant… imatge {d} de {t} + Optimizing… cleaning up Optimitzant… netejant + Optimizing… merging identical objects Optimitzant… combinant objectes idèntics + Optimizing… writing the copy Optimitzant… escrivint la còpia + Cancelling… Cancel·lant… + Optimization is already running L'optimització ja s'està executant + Optimization cancelled Optimització cancel·lada + Couldn't optimize the file No s'ha pogut optimitzar el fitxer + Recognizing text… file {d} of {t} Reconeixent text… fitxer {d} de {t} + Recognizing text… page {d} of {t} Reconeixent text… pàgina {d} de {t} + Recognized 1 word S'ha reconegut 1 paraula + Recognized {n} words S'han reconegut {n} paraules + {words} on {pages} {words} a {pages} + ; 1 page already had text ; 1 pàgina ja tenia text + ; {n} pages already had text ; {n} pàgines ja tenien text + Recognized {w} words in 1 file S'han reconegut {w} paraules en 1 fitxer + Recognized {w} words in {n} files S'han reconegut {w} paraules en {n} fitxers + ; failed: {list} ; ha fallat: {list} + 1 file done 1 fitxer fet + {n} files done {n} fitxers fets + The selected area has been copied ({w} × {h} pixels) S'ha copiat l'àrea seleccionada ({w} × {h} píxels) + Couldn't take the snapshot: {e} No s'ha pogut fer la captura: {e} + Couldn't recover {name}: {e} No s'ha pogut recuperar {name}: {e} + The document now conforms to {level}; save it to keep the changes El document ara compleix {level}; desa'l per conservar els canvis + Fixed what could be fixed; 1 problem remains S'ha corregit el que s'ha pogut; queda 1 problema + Fixed what could be fixed; {n} problems remain S'ha corregit el que s'ha pogut; queden {n} problemes + Custom stamps arrive on the web with file pickers for images Els segells personalitzats arriben a la web amb selectors de fitxers per a les imatges + {file} is too large for a stamp (at most {n} MB) {file} és massa gran per a un segell (com a màxim {n} MB) + Sent to {printer} Enviat a {printer} + Sent to {printer}: {msg} Enviat a {printer}: {msg} + Looking for printers… Cercant impressores… + Sending to {printer}… Enviant a {printer}… + Choose a folder for the searchable files Tria una carpeta per als fitxers amb text cercable + Files are combined in this order. Leave Pages empty to take every page. Els fitxers es combinen en aquest ordre. Deixa Pàgines en blanc per agafar totes les pàgines. + Files are combined from top to bottom. Leave Pages empty to take every page. Els fitxers es combinen de dalt a baix. Deixa Pàgines en blanc per agafar totes les pàgines. + Unlock… Desbloqueja… + Select a password-protected file first Selecciona primer un fitxer protegit amb contrasenya + Enter the permissions password to allow combining Introdueix la contrasenya de permisos per permetre la combinació + Enter the password that opens it Introdueix la contrasenya que l'obre + Unlock {name} Desbloqueja {name} + Unlock {n} files Desbloqueja {n} fitxers + The same password is tried on each file. Es prova la mateixa contrasenya a cada fitxer. + Hide password Amaga la contrasenya + Show password Mostra la contrasenya + Wrong password Contrasenya incorrecta + The password is only used to read the file; it isn't saved. La contrasenya només s'utilitza per llegir el fitxer; no es desa. + Unlock Desbloqueja + Opened, but its security settings don't allow combining. Enter the permissions password. S'ha obert, però la seva configuració de seguretat no permet combinar. Introdueix la contrasenya de permisos. + Unlocked: the combined file won't be password-protected Desbloquejat: el fitxer combinat no estarà protegit amb contrasenya + Unlocked {n} of {m} files S'han desbloquejat {n} de {m} fitxers + Drop PDFs, images, text files or folders here, or choose them. Deixa aquí PDF, imatges, fitxers de text o carpetes, o tria'ls. + Add folder… Afegeix una carpeta… + Add folder and subfolders… Afegeix una carpeta i les subcarpetes… + More ways to add files Més maneres d'afegir fitxers + Every PDF, image and text file in the folder Tots els PDF, imatges i fitxers de text de la carpeta + Every PDF, image and text file in the folder and the folders inside it Tots els PDF, imatges i fitxers de text de la carpeta i de les carpetes que conté + Add folder Afegeix una carpeta + Add folder and subfolders Afegeix una carpeta i les subcarpetes + No PDFs, images or text files found in {folder} No s'ha trobat cap PDF, imatge ni fitxer de text a {folder} + Added the first {n} files in {folder} S'han afegit els primers {n} fitxers de {folder} +comment menu Edit Edita + Undo {action} Desfés {action} + Redo {action} Refés {action} +certificate Subject Subjecte +action wizard Start Inicia + Click to sort, drag to move the column. Drag its edge to resize it. Fes clic per ordenar i arrossega per moure la columna. Arrossega'n la vora per canviar-ne la mida. + Reset columns Restableix les columnes + Remove {n} files Elimina {n} fitxers + {n} selected {n} seleccionats + sorted ascending ordenat de manera ascendent + sorted descending ordenat de manera descendent + Protected: the combined file won't keep its security settings Protegit: el fitxer combinat no conservarà la configuració de seguretat + Add open documents Afegeix els documents oberts + All open documents Tots els documents oberts + No documents are open No hi ha cap document obert + Select a file first Selecciona primer un fitxer + 1 file 1 fitxer + {n} files {n} fitxers + 1 file needs attention 1 fitxer requereix atenció + {n} files need attention {n} fitxers requereixen atenció + {name} can't be combined: {why} {name} no es pot combinar: {why} + Check the pages of {name}: {why} Comprova les pàgines de {name}: {why} + Add the files to combine Afegeix els fitxers que vulguis combinar + File name Nom del fitxer + Warnings Avisos + Drag to reorder Arrossega per reordenar + {k} of {n} {k} de {n} + ? of {n} ? de {n} + Added more than once Afegit més d'una vegada + yesterday ahir + {n} days ago fa {n} dies + No pages selected Cap pàgina seleccionada + Password-protected Protegit amb contrasenya + Its security settings don't allow copying pages La seva configuració de seguretat no permet copiar pàgines + Can't be read: {e} No es pot llegir: {e} + Leave out files that can't be read? Vols excloure els fitxers que no es poden llegir? + These files can't be read, so they won't be in the combined PDF: Aquests fitxers no es poden llegir, de manera que no apareixeran al PDF combinat: + Combine the rest Combina la resta + and {n} more i {n} més + Includes unsaved changes Inclou canvis sense desar + Pages of {name} to combine, e.g. 1-3, 6 Pàgines de {name} que cal combinar, p. ex. 1-3, 6 + Remove {name} Elimina {name} + Add files… Afegeix fitxers… + Add at least two files Afegeix almenys dos fitxers + Couldn't add {name}: {e} No s'ha pogut afegir {name}: {e} + Couldn't combine files: {e} No s'han pogut combinar els fitxers: {e} + Export comments Exporta els comentaris + Export form data Exporta les dades del formulari + Comment and form data Dades de comentaris i formularis + Export Exporta + Select data files to merge Selecciona els fitxers de dades que vols combinar + Form data and PDF forms Dades de formulari i formularis PDF + Save the spreadsheet Desa el full de càlcul + Save the accessibility report Desa l'informe d'accessibilitat + Save image Desa la imatge + Export certificate Exporta el certificat + Choose a folder for the extracted pages Tria una carpeta per a les pàgines extretes + Choose a folder for the split files Tria una carpeta per als fitxers dividits + Couldn't use {name}: {e} No s'ha pogut utilitzar {name}: {e} + Couldn't extract pages: {e} No s'han pogut extreure les pàgines: {e} + Couldn't write {name}: {e} No s'ha pogut escriure {name}: {e} + Wrote 1 file to {dir} S'ha escrit 1 fitxer a {dir} + Wrote {n} files to {dir} S'han escrit {n} fitxers a {dir} + No pages match those choices Cap pàgina coincideix amb aquestes opcions + Couldn't split: {e} No s'ha pogut dividir: {e} + Couldn't summarize comments: {e} No s'han pogut resumir els comentaris: {e} + Couldn't open the result: {e} No s'ha pogut obrir el resultat: {e} + Importing data arrives on the web with file pickers for data files La importació de dades arriba a la web amb selectors de fitxers per als fitxers de dades + Exported to {path} Exportat a {path} + Merging data files needs the desktop app Combinar fitxers de dades requereix l'aplicació d'escriptori + Merged 1 file into {path} S'ha combinat 1 fitxer a {path} + Merged {n} files into {path} S'han combinat {n} fitxers a {path} + Combined {n} files S'han combinat {n} fitxers + Extracted 1 page S'ha extret 1 pàgina + Extracted {n} pages S'han extret {n} pàgines + Created a comment summary S'ha creat un resum de comentaris + Couldn't open {name}: {e} No s'ha pogut obrir {name}: {e} + Couldn't read {name}: {e} No s'ha pogut llegir {name}: {e} + Portable mode is off: {folder} can't be written ({error}). Settings are kept in your user folder instead. El mode portàtil està desactivat: no es pot escriure a {folder} ({error}). La configuració es conserva a la carpeta d'usuari. + PdfCraft is drawing without a graphics processor, so it may be slow. Updating the graphics driver may help. PdfCraft dibuixa sense processador gràfic, de manera que pot anar lent. Pot ajudar actualitzar el controlador gràfic. + Couldn't save: {e} No s'ha pogut desar: {e} + Downloading attachments on the web arrives with M3.10 ({n} bytes ready) La baixada d'adjunts a la web arriba amb M3.10 ({n} bytes preparats) + `{command}` {when} `{command}` {when} + ships in milestone {m} arriba a la fita {m} + needs an AI provider (off by default) requereix un proveïdor d'IA (desactivat per defecte) + is available està disponible + is not available yet encara no està disponible + {label} failed: {e} {label} ha fallat: {e} + Undid {label} S'ha desfet {label} + Redid {label} S'ha refet {label} + A document needs at least one page: copy instead Un document necessita almenys una pàgina: copia-la en lloc de retallar-la + Cut {what} S'ha retallat {what} + Copied {what} S'ha copiat {what} + 1 page 1 pàgina + {n} pages {n} pàgines + Copy or cut pages first Copia o retalla primer unes pàgines + Couldn't save {name}: {e} No s'ha pogut desar {name}: {e} + Saved {name} S'ha desat {name} + Saved, but reopening failed: {e} S'ha desat, però no s'ha pogut tornar a obrir: {e} + Downloaded {name} S'ha baixat {name} + Couldn't download {name}: {e} No s'ha pogut baixar {name}: {e} + Reverted to the last saved version S'ha revertit a l'última versió desada + That didn't work: an internal error stopped it ({m}). Your documents are unchanged. Això no ha funcionat: un error intern l'ha aturat ({m}). Els teus documents no s'han modificat. + Nothing to undo No hi ha res per desfer + Nothing to redo No hi ha res per refer + This document has no form fields you can fill in Aquest document no té camps de formulari que es puguin emplenar + This document has no comments to flatten Aquest document no té comentaris per aplanar + This document has no form fields to flatten Aquest document no té camps de formulari per aplanar + There are no redaction marks (mark text, areas or pages first) No hi ha marques de censura (marca primer text, àrees o pàgines) + This document has no {kind} to change Aquest document no té cap {kind} per canviar + header or footer capçalera o peu de pàgina + watermark marca d'aigua + background fons + This document isn't password-protected Aquest document no està protegit amb contrasenya + Enter permissions password… Introdueix la contrasenya de permisos… + Permissions password Contrasenya de permisos + “{name}” has security restrictions. Enter its permissions password to lift them. “{name}” té restriccions de seguretat. Introdueix-ne la contrasenya de permisos per aixecar-les. + Restrictions lifted Restriccions aixecades + Couldn't unlock {name}: {e} No s'ha pogut desbloquejar {name}: {e} + This document has no restrictions to lift Aquest document no té restriccions per aixecar + The document's security settings don't allow this change La configuració de seguretat del document no permet aquest canvi + The document's security settings don't allow copying text and images La configuració de seguretat del document no permet copiar text ni imatges + Open a document first Obre primer un document + Security will be removed when you save La seguretat s'eliminarà en desar + Click text or an image to edit it Fes clic en un text o una imatge per editar-lo + Drag a rectangle to create a link; double-click a link to edit it Arrossega un rectangle per crear un enllaç; fes doble clic en un enllaç per editar-lo + There are no redaction marks to apply No hi ha marques de censura per aplicar + Drag to draw the area where the signature should appear. Arrossega per dibuixar l'àrea on ha d'aparèixer la signatura. + Couldn't fit the visible content: {e} No s'ha pogut ajustar el contingut visible: {e} + Drag a rectangle around the area to copy Arrossega un rectangle al voltant de l'àrea que vols copiar + Click on the page to add a {tool}, or drag to set its size Fes clic a la pàgina per afegir-hi un element {tool}, o arrossega per definir-ne la mida + Drag a rectangle on a page to crop it; double-click a page for Set Page Boxes Arrossega un rectangle sobre una pàgina per escapçar-la; fes doble clic en una pàgina per definir els quadres de pàgina + Keep tool selected: on Mantén l'eina seleccionada: activat + Keep tool selected Mantén l'eina seleccionada + Opacity Opacitat + Line thickness Gruix de línia + What word or phrase would you like to search for? Quina paraula o frase vols cercar? + Searching… {s} of {p} pages Cercant… {s} de {p} pàgines + (searching… {s} of {p} pages) (cercant… {s} de {p} pàgines) + 1 instance 1 coincidència + {n} instances {n} coincidències + Go to this result Ves a aquest resultat + Highlight Ressalta + Draw Dibuixa + Polygon Polígon + Connected lines Línies connectades + Eraser Goma d'esborrar + Sign Signa + Certified by {by} Certificat per {by} + At least one signature is invalid. Almenys una signatura no és vàlida. + Signed and all signatures are valid. Signat i totes les signatures són vàlides. + At least one signature has problems. Almenys una signatura té problemes. + This document is secured. Some changes are restricted by its security settings. Aquest document està protegit. Alguns canvis estan restringits per la seva configuració de seguretat. + This is a dynamic XFA form, which PdfCraft can't display yet. What you see is the file's placeholder page. Aquest és un formulari XFA dinàmic, que PdfCraft encara no pot mostrar. El que veus és la pàgina de substitució del fitxer. + This form also contains XFA data, which PdfCraft doesn't read yet. You can fill its fields, but Acrobat may show the XFA values instead. Aquest formulari també conté dades XFA, que PdfCraft encara no llegeix. Pots emplenar-ne els camps, però Acrobat pot mostrar els valors XFA. + This document contains {n} interactive form fields. Aquest document conté {n} camps de formulari interactius. + This file was damaged and has been repaired. Saving keeps the repaired version. Aquest fitxer estava malmès i s'ha reparat. En desar, es conserva la versió reparada. + Dismiss Descarta + Hide field highlights Amaga el ressaltat dels camps + Highlight fields Ressalta els camps + Security settings Configuració de seguretat + Details Detalls + Select (V) Selecciona (V) + Hand (H) Mà (H) + Delete pages (Delete) Suprimeix pàgines (Supr) + Insert a blank page after the selection Insereix una pàgina en blanc després de la selecció + Insert pages from a file… Insereix pàgines d'un fitxer… + Extract pages to a new document Extreu pàgines a un document nou + Split into files… Divideix en fitxers… + Select pages Selecciona pàgines + Cut Retalla + Copy Copia + Paste after Enganxa després + Rename Canvia el nom + Set to current page ({n}) Defineix com a pàgina actual ({n}) + Move up Mou amunt + Move down Mou avall + Indent Sagna + Outdent Treu el sagnat + This document has no form fields. Aquest document no té camps de formulari. + Tab order: move a field with its arrows. Ordre de tabulació: mou un camp amb les fletxes. + Unplaced Sense col·locar + Has JavaScript actions (run in M6) Té accions de JavaScript (s'executen a M6) + Page Pàgina + None Cap + Delete selected fields Suprimeix els camps seleccionats + Diagnostic details Detalls de diagnòstic + The operation failed. L'operació ha fallat. + no such document no existeix aquest document + nothing to undo no hi ha res per desfer + nothing to redo no hi ha res per refer + this document is signed: rewriting it would invalidate its signatures (save it incrementally instead) aquest document està signat: reescriure'l invalidaria les signatures (desa'l de manera incremental) + the document is protected by a password el document està protegit amb una contrasenya + the password is incorrect la contrasenya és incorrecta + the document has no page tree el document no té arbre de pàgines + a document must keep at least one page un document ha de conservar almenys una pàgina + a bookmark cannot be moved inside itself un marcador no es pot moure dins d'ell mateix + the title must not be empty el títol no pot estar buit + the document has no form fields el document no té camps de formulari + there are no redaction marks to apply no hi ha marques de censura per aplicar + there are no pages to print no hi ha pàgines per imprimir + the document has no tags el document no té etiquetes + {0}: {1} {0}: {1} + the text recognition models are not installed (reinstall PdfCraft, or set PDFCRAFT_MODELS to the folder that holds them) els models de reconeixement de text no estan instal·lats (reinstal·la PdfCraft o defineix PDFCRAFT_MODELS amb la carpeta que els conté) + the image is empty la imatge és buida + this file isn't XFDF, FDF, XML or text form data aquest fitxer no és de dades de formulari XFDF, FDF, XML ni de text + nothing in the file matches this document res del fitxer coincideix amb aquest document + This page couldn't be displayed.\n{e} No s'ha pogut mostrar aquesta pàgina.\n{e} + Go to page {p} Ves a la pàgina {p} + {s} action Acció {s} + Page {p} of {n} Pàgina {p} de {n} + 1 page selected 1 pàgina seleccionada + {n} pages selected {n} pàgines seleccionades + {name} — unsaved changes {name} — canvis sense desar + {kind} field Camp de tipus {kind} + Select a file for the stamp Selecciona un fitxer per al segell + JavaScript, e.g. getField("total").value JavaScript, p. ex. getField("total").value + Font: Helvetica Tipus de lletra: Helvetica + e.g. en-US p. ex. ca-ES + Rendering: hayro (bootstrap) · UI: egui · Icons: Lucide (ISC) · Fonts: Inter, JetBrains Mono, Dancing Script (OFL) Renderització: hayro (bootstrap) · Interfície: egui · Icones: Lucide (ISC) · Tipus de lletra: Inter, JetBrains Mono, Dancing Script (OFL) + CheckBox Casella de selecció + Radio Botó d'opció + PushButton Botó d'acció + Combo Llista combinada + List Llista + Unknown Desconegut + The document has no XMP metadata El document no té metadades XMP + The title in the metadata and the document information differ El títol de les metadades i la informació del document difereixen + The document is encrypted El document està xifrat + Device colour is used, but there is no PDF/A output intent S'utilitza color de dispositiu, però no hi ha cap intenció de sortida PDF/A + DeviceCMYK is used: it needs a CMYK output intent (not added automatically) S'utilitza DeviceCMYK: necessita una intenció de sortida CMYK (no s'afegeix automàticament) + DeviceCMYK is used, but the PDF/A output intent isn't a CMYK profile S'utilitza DeviceCMYK, però la intenció de sortida PDF/A no és un perfil CMYK + DeviceRGB is used, but the PDF/A output intent isn't an RGB profile S'utilitza DeviceRGB, però la intenció de sortida PDF/A no és un perfil RGB + The document has additional actions (/AA) El document té accions addicionals (/AA) + The document has document-level JavaScript El document té JavaScript a nivell de document + The form asks viewers to make appearances (NeedAppearances) El formulari demana als visualitzadors que generin aparences (NeedAppearances) + A form field has additional actions Un camp de formulari té accions addicionals + A stream uses LZW compression Un flux utilitza compressió LZW + A stream refers to an external file Un flux fa referència a un fitxer extern + An image asks to be interpolated Una imatge demana ser interpolada + An image has alternates or OPI information Una imatge té alternatives o informació OPI + PostScript XObjects aren't allowed No es permeten els XObjects PostScript + Embedded files must be PDF/A files themselves (use PDF/A-3 for others) Els fitxers incrustats han de ser fitxers PDF/A (utilitza PDF/A-3 per a la resta) + An embedded file has no AFRelationship Un fitxer incrustat no té AFRelationship + Select Icon Selecciona la icona + Choose images Tria imatges + {dpi} pixels/inch {dpi} píxels/polzada + Type your {what}. Escriu {what}. + Draw your {what} below. Dibuixa {what} a sota. + Your name El teu nom + Images and text (converted to PDF) Imatges i text (convertits a PDF) + Images and text Imatges i text + Check Box Style: Estil de la casella de selecció: + Button Style: Estil del botó: + Check Marca + Circle Cercle + Diamond Rombe + Square Quadrat + Star Estrella + {month} {y} {month} {y} + Change {key} Canvia {key} + Insert pages from {name} Insereix pàgines de {name} + Insert pages from {name} — 1 field renamed Insereix pàgines de {name} — 1 camp s'ha reanomenat + Insert pages from {name} — fields renamed Insereix pàgines de {name} — camps reanomenats + Fill in {name} Emplena {name} + Set the image of {name} Defineix la imatge de {name} + Edit script of {name} Edita l'script de {name} + Import {name} Importa {name} + Add bookmark Afegeix un marcador + Rename bookmark Canvia el nom del marcador + Delete bookmark Suprimeix el marcador + Move bookmark Mou el marcador + Set bookmark destination Defineix la destinació del marcador + Add stamp Afegeix un segell + Delete comment Suprimeix el comentari + Edit comment Edita el comentari + Erase Esborra + Lock comment Bloqueja el comentari + Unlock comment Desbloqueja el comentari + Move comment Mou el comentari + Resize comment Canvia la mida del comentari + Change comment properties Canvia les propietats del comentari + Add field Afegeix un camp + Change field properties Canvia les propietats del camp + Delete field Suprimeix el camp + Duplicate field Duplica el camp + Set tab order Defineix l'ordre de tabulació + Change initial view Canvia la visualització inicial + Set alternate text Defineix el text alternatiu + Mark figure as decorative Marca la figura com a decorativa + Run JavaScript Executa JavaScript + Delete document JavaScript Suprimeix el JavaScript del document + Edit document JavaScript Edita el JavaScript del document + Edit text Edita el text + Load document font Carrega el tipus de lletra del document + Move image Mou la imatge + Rotate image Gira la imatge + Flip image Inverteix la imatge + Delete image Suprimeix la imatge + Add header & footer Afegeix capçalera i peu de pàgina + Update header & footer Actualitza la capçalera i el peu de pàgina + Update watermark Actualitza la marca d'aigua + Add background Afegeix un fons + Update background Actualitza el fons + Add image Afegeix una imatge + Edit content Edita el contingut + Delete content Suprimeix el contingut + Remove redaction marks Elimina les marques de censura + Add link Afegeix un enllaç + Change link properties Canvia les propietats de l'enllaç + Delete link Suprimeix l'enllaç + Create link Crea un enllaç + Flatten Aplana + Flatten Fill & Sign Aplana Emplena i signa + Add sticky note Afegeix una nota adhesiva + Add highlight Afegeix un ressaltat + Add underline Afegeix un subratllat + Add strikethrough Afegeix un ratllat + Add squiggly underline Afegeix un subratllat ondulat + Add rectangle Afegeix un rectangle + Add oval Afegeix un oval + Add arrow Afegeix una fletxa + Add line Afegeix una línia + Add drawing Afegeix un dibuix + Add text box Afegeix un quadre de text + Add checkmark Afegeix una marca de verificació + Add cross Afegeix una creu + Add dot Afegeix un punt + Add signature Afegeix una signatura + Add redaction mark Afegeix una marca de censura + Add cloud Afegeix un núvol + Add polygon Afegeix un polígon + Add connected lines Afegeix línies connectades + Add callout Afegeix una crida + Add inserted text Afegeix un text inserit + Add file attachment Afegeix un fitxer adjunt + Set status Accepted Defineix l'estat Acceptat + Set status Rejected Defineix l'estat Rebutjat + Set status Cancelled Defineix l'estat Cancel·lat + Set status Completed Defineix l'estat Completat + Set status None Defineix l'estat Cap + Set status Unmarked Defineix l'estat Sense marcar + Save as PDF/A-1b Anomena i desa com a PDF/A-1b + Save as PDF/A-2b Anomena i desa com a PDF/A-2b + Save as PDF/A-3b Anomena i desa com a PDF/A-3b + Fill & Sign: change signature Emplena i signa: canvia la signatura + Fill & Sign: change initials Emplena i signa: canvia les inicials + Fill & Sign: remove saved signature Emplena i signa: elimina la signatura desada + Fill & Sign: remove saved initials Emplena i signa: elimina les inicials desades + Change signature Canvia la signatura + Change initials Canvia les inicials + Measure distance Mesura la distància + Measure perimeter Mesura el perímetre + Measure area Mesura l'àrea + Set measurement scale Defineix l'escala de mesura + Measurement information Informació de mesura + Measurement snapping Ajust de mesura + Export measurements as CSV Exporta les mesures com a CSV + Distance Distància + Perimeter Perímetre + Area Àrea + Drawing scale Escala del dibuix + Snapping Ajust + Export measurements Exporta les mesures + Open a PDF to measure it. Obre un PDF per mesurar-lo. + Click vertices. Enter or double-click finishes a perimeter or area. Click the first point to close an area. Fes clic als vèrtexs. Retorn o doble clic finalitza un perímetre o una àrea. Fes clic al primer punt per tancar una àrea. + Shift constrains to 45 degrees. Backspace removes a vertex. Escape cancels. Maj restringeix a 45 graus. Retrocés elimina un vèrtex. Esc cancel·la. + Angle Angle + Click the first point to begin. Fes clic al primer punt per començar. + Snap to drawing Ajusta al dibuix + Endpoints Extrems + Midpoints Punts mitjans + Intersections Interseccions + Paths Traçats + Sensitivity Sensibilitat + Unit Unitat + Decimals Decimals + Calibrate from two points Calibra a partir de dos punts + Entire page Pàgina sencera + Viewport rectangle in page points (x, y, width, height) Rectangle de la zona visible en punts de pàgina (x, y, amplada, alçada) + Viewport Zona visible + Apply scale Aplica l'escala + Saved measurements Mesures desades + Saved measurements. Mesures desades. + Endpoint Extrem + Midpoint Punt mitjà + Intersection Intersecció + Path Traçat + This drawing exceeds the snapping limit; only the first paths are used. Aquest dibuix supera el límit d'ajust; només s'utilitzen els primers traçats. + Some page content couldn't be read; snapping uses the rest. Part del contingut de la pàgina no s'ha pogut llegir; l'ajust utilitza la resta. + Unsupported measurements Mesures no compatibles + Label Etiqueta + {n} measurements use an unsupported format and are left out. {n} mesures utilitzen un format no compatible i s'han deixat fora. + This area has too many overlapping paths; intersection snapping is limited. Aquesta àrea té massa traçats superposats; l'ajust a les interseccions és limitat. + This measurement needs at least {n} points. Aquesta mesura necessita almenys {n} punts. + Change {what} Canvia {what} + Cut and stack Cascada i apilat + Default workspace mode Mode d'espai de treball per defecte + Documents and view Documents i visualització + Open email app Obre l'aplicació de correu + Open link Obre l'enllaç + Open this web page? Vols obrir aquesta pàgina web? + Scripts run in a sandbox without file or network access. A script that asks to open a web page needs your permission first. With JavaScript off, Acrobat's standard format, validate and calculate functions still work. Els scripts s'executen en un entorn aïllat sense accés a fitxers ni a la xarxa. Un script que demana obrir una pàgina web necessita primer el teu permís. Amb JavaScript desactivat, les funcions estàndard de format, validació i càlcul d'Acrobat continuen funcionant. + Sign yourself Signa tu mateix + Used when opening PDFs. An explicit launch or control mode takes precedence for the session. S'utilitza en obrir PDF. Un mode d'inici o de control explícit té prioritat durant la sessió. + Write this email? Vols escriure aquest correu? + {who} in this document wants to open this address in your browser: {who} d'aquest document vol obrir aquesta adreça al navegador: + {who} in this document wants to open your email app with this address: {who} d'aquest document vol obrir l'aplicació de correu amb aquesta adreça: + This web address mixes letters from different alphabets, a common way to imitate another site's name. Aquesta adreça web barreja lletres de diferents alfabets, una manera habitual d'imitar el nom d'un altre lloc. + This web address uses letters from another alphabet, which can look like familiar ones. Aquesta adreça web utilitza lletres d'un altre alfabet, que poden semblar-se a les habituals. + Create PDF from images Crea un PDF a partir d'imatges + Selected image files: {count} Fitxers d'imatge seleccionats: {count} + Use image resolution Utilitza la resolució de la imatge + Use each image's embedded DPI; use 72 DPI when it is absent. Utilitza els DPI incrustats de cada imatge; si no n'hi ha, utilitza 72 DPI. + Use 72 DPI (one point per pixel) Utilitza 72 DPI (un punt per píxel) + Use custom DPI Utilitza uns DPI personalitzats + DPI sets the printed page size without resampling the image. Els DPI defineixen la mida de la pàgina impresa sense remostrejar la imatge. + Create Crea + Dynamic XFA form laid out from its template: {pages}, {fields}. Formulari XFA dinàmic disposat a partir de la seva plantilla: {pages}, {fields}. + This form's scripts are turned off because one ran too long. Reopen the document to run them again. Els scripts d'aquest formulari estan desactivats perquè un s'ha executat massa temps. Torna a obrir el document per executar-los de nou. + XFA form: its fields and its XFA data are kept in step, so other viewers show what you fill in. Formulari XFA: els seus camps i les seves dades XFA es mantenen sincronitzats, de manera que altres visualitzadors mostren el que emplenes. +@plural {n} page|{n} pages {n} pàgina|{n} pàgines +@plural {n} field|{n} fields {n} camp|{n} camps +@plural {n} field name collides with earlier files and will be renamed: {list}|{n} field names collide with earlier files and will be renamed: {list} {n} camp té un nom que col·lideix amb fitxers anteriors i es reanomenarà: {list}|{n} camps tenen un nom que col·lideix amb fitxers anteriors i es reanomenaran: {list} + Switch to two-page view first to show the cover page Canvia primer a la visualització de dues pàgines per mostrar la portada + Page display: {layout} Visualització de pàgina: {layout} + Fit to width scrolling Desplaçament ajustat a l'amplada + Fit one full page Ajusta una pàgina sencera + Default page display Visualització de pàgina per defecte + Default zoom Zoom per defecte + Used when a PDF doesn't ask for a layout or zoom. Continuous scrolling never snaps between pages. S'utilitza quan un PDF no demana cap disposició ni zoom. El desplaçament continu mai no salta entre pàgines. + Show Mostra + Sort Ordena + Reverse the order Inverteix l'ordre + Grab bag Calaix de sastre + Table Taula + Username Nom d'usuari + Display name Nom visible + Real name Nom real + Name (A–Z) Nom (A–Z) + Merged PRs PR combinats + PRs PR + Commits Commits + Lines added Línies afegides + +LOC +LOC + Lines deleted Línies suprimides + −LOC −LOC + Line delta Diferència de línies + ΔLOC ΔLOC + Binary assets added Recursos binaris afegits + +Bin +Bin + Binary assets removed Recursos binaris eliminats + −Bin −Bin + First commit Primera contribució + First Primera + Last commit Última contribució + Last Última + No contributor data was built into this copy. En aquesta còpia no s'han inclòs dades de contribuïdors. + No model credits were built into this copy. En aquesta còpia no s'han inclòs crèdits de models. + {n} contributors · {c} commits {n} contribuïdors · {c} contribucions + Company Empresa + Model Model + % of all commits % de totes les contribucions + Lines +/− Línies +/− + @{login}: {prs} PRs, {commits} commits, +{added} / −{deleted} lines (Δ {delta}), +{bin_added} / −{bin_deleted} binary assets, {first} – {last} @{login}: {prs} PR, {commits} contribucions, +{added} / −{deleted} línies (Δ {delta}), +{bin_added} / −{bin_deleted} recursos binaris, {first} – {last} + Reopen the files that were open when PdfCraft last closed Reobre els fitxers que eren oberts l'última vegada que es va tancar PdfCraft + Add {what} Afegeix {what} + Use {what} Utilitza {what} + Place saved {what} Col·loca {what} desats + Remove saved {what} Elimina {what} desats + A link Un enllaç + A button Un botó + A script Un script + {who} in this document tried to open an address PdfCraft won't open: {e}. {who} d'aquest document ha intentat obrir una adreça que PdfCraft no obre: {e}. + {who} in this document tried to open an address PdfCraft won't open: {e}. Only web (http, https) and email (mailto) links open from documents. {who} d'aquest document ha intentat obrir una adreça que PdfCraft no obre: {e}. Als documents només s'hi poden obrir enllaços web (http, https) i de correu electrònic (mailto). + Another file dialog is still open. Finish with it first. Hi ha un altre diàleg de fitxers obert. Acaba'l primer. + Couldn't show the file picker. Please try again. No s'ha pogut mostrar el selector de fitxers. Torna-ho a provar. + The document changed while you were choosing a file, so nothing was changed. El document ha canviat mentre triaves un fitxer, de manera que no s'ha modificat res. + The document was closed before it could be saved. El document s'ha tancat abans de poder-se desar. + The pages were extracted but not deleted, because the document changed while you were choosing a folder. Les pàgines s'han extret però no s'han suprimit, perquè el document ha canviat mentre triaves una carpeta. + That didn't work: an internal error stopped it ({m}). No ha funcionat: un error intern ho ha aturat ({m}). + The Windows store's digital IDs couldn't be listed: {e} No s'han pogut llistar els identificadors digitals de l'emmagatzematge de Windows: {e} + Align fields Alinea els camps + Distribute fields Distribueix els camps + Match field sizes Iguala la mida dels camps + Mark for redaction Marca per censurar + Mark pages for redaction Marca pàgines per censurar + Change document properties Canvia les propietats del document + Mark differences Marca les diferències + Run form script Executa l'script del formulari + Scripted content must be usable with a keyboard and assistive technology. Check the document's scripts. El contingut amb scripts ha de ser utilitzable amb teclat i amb tecnologies d'assistència. Revisa els scripts del document. + Table rows belong directly in a table or its head, body or foot. Fix the table's tags. Les files d'una taula han d'anar directament dins la taula o dins de la seva capçalera, cos o peu. Corregeix les etiquetes de la taula. + Basic constraints Restriccions bàsiques + SHA-1 digest Resum SHA-1 + SHA-256 digest Resum SHA-256 + Squiggly Ondulat + Home / End Inici / Fi + H / Space (hold) H / Espai (mantén premut) + Reload documents when their files change on disk Torna a carregar els documents quan els seus fitxers canviïn al disc + This file changed on disk. Reload it to see the new version; your unsaved changes will be lost. Aquest fitxer ha canviat al disc. Torna'l a carregar per veure'n la versió nova; es perdran els canvis sense desar. + Reload Torna a carregar + Couldn't reload {name}: {e} No s'ha pogut tornar a carregar {name}: {e} + Created a PDF from {n} files S'ha creat un PDF a partir de {n} fitxers + PDF, images and text PDF, imatges i text + Insert a file before page {label} Insereix un fitxer abans de la pàgina {label} + Insert a file at the end Insereix un fitxer al final + Save pages Desa les pàgines + Save these pages as one PDF Desa aquestes pàgines com un sol PDF + No changes to save No hi ha canvis per desar + Created a PDF from {n} files; left out: {names} S'ha creat un PDF a partir de {n} fitxers; exclosos: {names} + Created a PDF from the first {n} files S'ha creat un PDF a partir dels primers {n} fitxers + None of those files can be made into a PDF; use PDFs, images or .txt files Cap d'aquests fitxers es pot convertir en PDF; utilitza PDF, imatges o fitxers .txt + Choose a PNG or JPEG image (up to 4 MiB). Transparency is preserved. Tria una imatge PNG o JPEG (fins a 4 MiB). Es conserva la transparència. + Couldn't import the signature image: {e} No s'ha pogut importar la imatge de la signatura: {e} + Go to page… Vés a la pàgina… + About Quant a + Contributors Contribuïdors + Models Models + Only continue if you trust this document. An address can carry information from the document, such as what you typed into its form. Continua només si confies en aquest document. Una adreça pot dur informació del document, com ara el que has escrit al formulari. + Print single-sided. Keep the sheets in order, cut at the marks, then stack the piles left to right, top to bottom. Imprimeix a una cara. Mantén els fulls en ordre, talla per les marques i apila els munts d'esquerra a dreta i de dalt a baix. + For page sizes and margins. Per a les mides de pàgina i els marges. + The PDF text fonts can't draw “{c}” ({code}). Choose supported text. Els tipus de lletra de text del PDF no poden dibuixar “{c}” ({code}). Tria un text compatible. + The standard fonts can't draw “{c}” ({code}). Only Western European characters can be added as text for now. Els tipus de lletra estàndard no poden dibuixar “{c}” ({code}). De moment només es poden afegir com a text caràcters d'Europa occidental. + This field's font can't draw “{c}” ({code}), so PdfCraft shows ? in its place. The value is saved, and other PDF viewers redraw the field from it. El tipus de lletra d'aquest camp no pot dibuixar “{c}” ({code}), de manera que PdfCraft hi mostra un ?. El valor es desa i altres visors de PDF tornen a dibuixar el camp a partir d'ell. + The fonts PdfCraft writes with can't draw “{c}” ({code}), so it shows as ? in every PDF viewer. The text is saved. Els tipus de lletra amb què escriu PdfCraft no poden dibuixar “{c}” ({code}), de manera que es mostra com a ? a tots els visors de PDF. El text es desa. + Open arrow Fletxa oberta + Closed arrow Fletxa tancada + Butt Pla + Reverse open arrow Fletxa oberta inversa + Reverse closed arrow Fletxa tancada inversa + Slash Barra inclinada + Larger pages Pàgines més grans + Smaller pages Pàgines més petites + Reset page size Restableix la mida de la pàgina + Date format Format de data + Fill & Sign dates Dates d'Omple i signa + Pattern Patró + Today: {date} Avui: {date} + yyyy or yy year · m or mm month · mmm or mmmm month name · d or dd day · ddd or dddd weekday. H, h, M, s and t are time letters and can't be used on their own: put {escape} before a letter to show it as is. yyyy o yy any · m o mm mes · mmm o mmmm nom del mes · d o dd dia · ddd o dddd dia de la setmana. H, h, M, s i t són lletres d'hora i no es poden usar soles: posa {escape} davant d'una lletra per mostrar-la tal com és. + Same as interface ({language}) Igual que la interfície ({language}) + {chars} can't be written into the PDF yet: Fill & Sign text is Western European only. Pick a numeric format such as dd.mm.yyyy. {chars} encara no es pot escriure al PDF: el text d'Omple i signa només admet l'europeu occidental. Tria un format numèric com dd.mm.yyyy. + Opens the printer driver's preferences. They are saved for every print from this computer; the copies, two-sided, grayscale and paper chosen here still apply. Obre les preferències del controlador de la impressora. Es desen per a totes les impressions d'aquest ordinador; les còpies, la impressió a doble cara, l'escala de grisos i el paper triats aquí continuen aplicant-se. + The printer driver's own settings for this print: paper tray, paper type, finishing and more. La configuració pròpia del controlador de la impressora per a aquesta impressió: safata de paper, tipus de paper, acabats i més. + Couldn't open the printer's preferences: {e} No s'han pogut obrir les preferències de la impressora: {e} + Printer properties Propietats de la impressora + Reset to printer defaults Restableix els valors per defecte de la impressora + This printer offers no settings of its own. Aquesta impressora no ofereix cap configuració pròpia. + Scroll tabs left Desplaça les pestanyes cap a l'esquerra + Scroll tabs right Desplaça les pestanyes cap a la dreta + Shared Field Properties Propietats compartides dels camps + {n} fields selected {n} camps seleccionats + Mixed Barrejat + Custom font Tipus de lletra personalitzat + Only checked properties will change. Mixed means the selected fields have different values. Només canviaran les propietats marcades. Barrejat vol dir que els camps seleccionats tenen valors diferents. + Shift- or Ctrl/Command-click to select several fields. Fes clic amb Maj o Ctrl/Ordre premuts per seleccionar diversos camps. + Font size 0 uses automatic sizing. La mida de lletra 0 utilitza la mida automàtica. + Character limit: Límit de caràcters: + Character limit 0 means no limit. A comb of characters needs a limit. Un límit de caràcters 0 vol dir sense límit. Una pinta de caràcters necessita un límit. + To change locked fields, also set Locked to No. Per canviar camps bloquejats, defineix també Bloquejat com a No. + Comb of characters Pinta de caràcters + The document changed while you were editing field properties. El document ha canviat mentre n'editaves les propietats dels camps. + The document is no longer open. El document ja no és obert. + The field properties dialog is no longer open. El diàleg de propietats dels camps ja no és obert. + The field properties could not be changed. No s'han pogut canviar les propietats dels camps. + The selected fields could not be found. Select them again. No s'han trobat els camps seleccionats. Torna'ls a seleccionar. + The field {name} no longer exists. El camp {name} ja no existeix. + A selected field has no widget on any page, so the fields can't be edited together. Un camp seleccionat no té cap giny a cap pàgina, de manera que els camps no es poden editar junts. + ({n} at {dpi} dpi, the largest size they can be drawn at) ({n} a {dpi} ppp, la mida més gran a la qual es poden dibuixar) + The security settings don't allow screen readers to read the text La configuració de seguretat no permet que els lectors de pantalla llegeixin el text + No page has text: the document appears to be images of pages Cap pàgina no té text: el document sembla ser imatges de pàgines + The document has no tags (structure tree) El document no té etiquetes (arbre d'estructura) + The document isn't marked as tagged (MarkInfo Marked) El document no està marcat com a etiquetat (MarkInfo Marked) + No document language is set No s'ha definit cap idioma del document + The document has no title El document no té títol + The window shows the file name, not the title (Initial View > Show) La finestra mostra el nom del fitxer, no el títol (Visualització inicial > Mostra) + {n} pages and no bookmarks {n} pàgines i cap marcador + The document isn't tagged, so none of its content is El document no està etiquetat, de manera que cap dels seus continguts ho està + Page {p}: {n} untagged content item Pàgina {p}: {n} element de contingut sense etiquetar + Page {p}: {n} untagged content items Pàgina {p}: {n} elements de contingut sense etiquetar + Form field on page {p} isn't tagged El camp de formulari de la pàgina {p} no està etiquetat + {} annotation on page {p} isn't tagged L'anotació {} de la pàgina {p} no està etiquetada + Page {p} doesn't tab in structure order La pàgina {p} no segueix l'ordre d'estructura en tabular + Font {} on page {p} doesn't map its characters to Unicode El tipus de lletra {} de la pàgina {p} no assigna els seus caràcters a Unicode + Font (unnamed) on page {p} doesn't map its characters to Unicode El tipus de lletra (sense nom) de la pàgina {p} no assigna els seus caràcters a Unicode + Field "{}" on page {p} has no description (tooltip) El camp "{}" de la pàgina {p} no té descripció (suggeriment) + {ty} element: {what} Element {ty}: {what} + {ty} element on page {p}: {what} Element {ty} a la pàgina {p}: {what} + no alternate text sense text alternatiu + its alternate text is inside another element's and will never be read el seu text alternatiu és dins del d'un altre element i no es llegirà mai + alternate text on an element with no page content text alternatiu en un element sense contingut de pàgina + alternate text hides an annotation inside it el text alternatiu amaga una anotació que hi ha dins + not in a Table, THead, TBody or TFoot no és dins d'un Table, THead, TBody o TFoot + not in a TR no és dins d'un TR + no header cells (TH) sense cel·les de capçalera (TH) + rows have between {min} and {max} columns les files tenen entre {min} i {max} columnes + no summary sense resum + not in an L (list) no és dins d'un L (llista) + not in an LI (list item) no és dins d'un LI (element de llista) + the first heading is an H{n}; headings should not skip levels el primer encapçalament és un H{n}; els encapçalaments no haurien de saltar nivells + H{n} follows an H{d}; headings should not skip levels H{n} va després d'un H{d}; els encapçalaments no haurien de saltar nivells + … and {n} more … i {n} més + Accessibility Report Informe d'accessibilitat + Filename Nom del fitxer + Report created Informe creat + The checker found problems which may prevent the document from being fully accessible. El verificador ha trobat problemes que poden impedir que el document sigui plenament accessible. + Detailed Report Informe detallat + Rule Name Nom de la regla + The metadata doesn't identify the file as {} Les metadades no identifiquen el fitxer com a {} + Page {} has additional actions La pàgina {} té accions addicionals + A {} action isn't allowed No es permet una acció {} + {} annotations aren't allowed No es permeten les anotacions {} + A {} annotation isn't set to print, or is hidden Una anotació {} no està configurada per imprimir-se, o està amagada + A {} annotation has no appearance stream Una anotació {} no té flux d'aparença + A {} annotation has additional actions Una anotació {} té accions addicionals + The font {} isn't embedded El tipus de lletra {} no està incrustat + A font isn't embedded Un tipus de lletra no està incrustat + The signature has no valid byte range. La signatura no té un interval de bytes vàlid. + The signature's byte range does not match the file. L'interval de bytes de la signatura no coincideix amb el fitxer. + The signature's byte range does not exclude exactly its contents. L'interval de bytes de la signatura no exclou exactament el seu contingut. + The signature contents are not hexadecimal. El contingut de la signatura no és hexadecimal. + The signature could not be read ({}). No s'ha pogut llegir la signatura ({}). + PdfCraft can't check this signature yet: {}. PdfCraft encara no pot comprovar aquesta signatura: {}. + The signature uses the legacy adbe.x509.rsa_sha1 format. La signatura utilitza el format antic adbe.x509.rsa_sha1. + The signature is BER-encoded (indefinite lengths) rather than DER; it was read leniently. La signatura està codificada en BER (longituds indefinides) en lloc de DER; s'ha llegit de manera permissiva. + The signed content is a constructed (segmented) OCTET STRING, as BER allows; it was read anyway. El contingut signat és un OCTET STRING construït (segmentat), com permet el BER; s'ha llegit igualment. + The RSA signature value does not have the length of the key's modulus (leading zero bytes dropped or added); it was read anyway. El valor de la signatura RSA no té la longitud del mòdul de la clau (s'han suprimit o afegit bytes zero inicials); s'ha llegit igualment. + The RSA signature's DigestInfo has no NULL parameter (older signers write it so); it was read anyway. El DigestInfo de la signatura RSA no té el paràmetre NULL (els signants més antics l'escriuen així); s'ha llegit igualment. + The ECDSA signature is not in canonical DER (trailing bytes, padding or a missing sign byte); it was read anyway. La signatura ECDSA no està en DER canònic (bytes finals, farciment o byte de signe que falta); s'ha llegit igualment. + The ECDSA signature is the raw r and s values instead of a DER sequence; it was read anyway. La signatura ECDSA són els valors r i s en brut en lloc d'una seqüència DER; s'ha llegit igualment. + The signature algorithm and the SignerInfo's digest algorithm name different hashes; the signature was made with the SignerInfo's. L'algorisme de signatura i l'algorisme de resum del SignerInfo indiquen resums diferents; la signatura es va fer amb el del SignerInfo. + This signature uses SHA-1, a weak hash algorithm: collisions in it have been demonstrated. It still validates because many documents signed years ago use it, but it should not be relied on. Aquesta signatura utilitza SHA-1, un algorisme de resum feble: se n'han demostrat col·lisions. Encara se'n valida perquè molts documents signats fa anys l'utilitzen, però no s'hi ha de confiar. + This signature uses RIPEMD-160, a legacy 160-bit hash algorithm that is no longer recommended for signatures. It still validates, but it should not be relied on. Aquesta signatura utilitza RIPEMD-160, un algorisme de resum antic de 160 bits que ja no es recomana per a signatures. Encara es valida, però no s'hi ha de confiar. + The document has been altered or corrupted since the signature was applied. El document ha estat alterat o s'ha corromput des que es va aplicar la signatura. + The signer's certificate is not in the signature. El certificat del signant no és a la signatura. + The signature value does not match the signer's certificate: the signature is corrupt. El valor de la signatura no coincideix amb el certificat del signant: la signatura està corrompuda. + The signature could not be checked ({}). No s'ha pogut comprovar la signatura ({}). + The signature could not be verified ({}). No s'ha pogut verificar la signatura ({}). + This document has not been modified since this signature was applied. Aquest document no s'ha modificat des que es va aplicar aquesta signatura. + The document has been modified since this signature was applied, but the changes are permitted ({}). El document s'ha modificat des que es va aplicar aquesta signatura, però els canvis són permesos ({}). + The document has been altered since this signature was applied in ways it does not permit ({}). El document ha estat alterat des que es va aplicar aquesta signatura d'una manera que no permet ({}). + The signer's certificate was not valid at the time of signing. El certificat del signant no era vàlid en el moment de signar. + The signer's certificate does not allow digital signatures (its key usage has neither digital signature nor non-repudiation). El certificat del signant no permet signatures digitals (el seu ús de clau no inclou ni signatura digital ni no repudi). + The signer's certificate is not issued for signing documents (its extended key usage has no document-signing purpose). El certificat del signant no s'ha emès per signar documents (el seu ús estès de clau no inclou el propòsit de signatura de documents). + The signer's certificate has critical extensions PdfCraft does not recognize ({}). El certificat del signant té extensions crítiques que PdfCraft no reconeix ({}). + The certificate of {} is not a CA certificate that may issue certificates, so it is not used to vouch for {}. El certificat de {} no és un certificat de CA que pugui emetre certificats, de manera que no s'utilitza per avalar {}. + The certificate of {} does not allow this many CA certificates below it (path length), so it is not used to vouch for {}. El certificat de {} no permet tants certificats de CA per sota seu (longitud de camí), de manera que no s'utilitza per avalar {}. + The certificate of {} was not valid at the time of signing, so it is not used to vouch for {}. El certificat de {} no era vàlid en el moment de signar, de manera que no s'utilitza per avalar {}. + The signer's identity is unknown because it has not been included in your list of trusted certificates and none of its parent certificates are trusted certificates. La identitat del signant és desconeguda perquè no s'ha inclòs a la llista de certificats de confiança i cap dels seus certificats pare és un certificat de confiança. + The signer's identity is valid. La identitat del signant és vàlida. + The signature includes an embedded timestamp. La signatura inclou una marca de temps incrustada. + Signing time is from the clock on the signer's computer. L'hora de signatura prové del rellotge de l'ordinador del signant. + The signature's timestamp token does not cover the signature value. El testimoni de marca de temps de la signatura no cobreix el valor de la signatura. + The signature's timestamp token could not be verified ({}). No s'ha pogut verificar el testimoni de marca de temps de la signatura ({}). + The embedded timestamp token is valid and its authority is trusted; trusted time is {}. El testimoni de marca de temps incrustat és vàlid i la seva autoritat és de confiança; l'hora de confiança és {}. + The signature carries an unverified timestamp ({}): the timestamp authority is not in your list of trusted certificates, so the signing time claimed by the signer is used instead. La signatura porta una marca de temps no verificada ({}): l'autoritat de marca de temps no és a la llista de certificats de confiança, de manera que s'utilitza l'hora de signatura indicada pel signant. + The signer's certificate has been revoked ({}). El certificat del signant ha estat revocat ({}). + The document's embedded revocation information shows that the signer's certificate has not been revoked. La informació de revocació incrustada al document mostra que el certificat del signant no ha estat revocat. + The timestamp has no valid byte range. La marca de temps no té un interval de bytes vàlid. + The timestamp's byte range does not match the file. L'interval de bytes de la marca de temps no coincideix amb el fitxer. + The timestamp's byte range does not exclude exactly its contents. L'interval de bytes de la marca de temps no exclou exactament el seu contingut. + The timestamp contents are not hexadecimal. El contingut de la marca de temps no és hexadecimal. + The timestamp token could not be read ({}). No s'ha pogut llegir el testimoni de marca de temps ({}). + The document has been altered or corrupted since the timestamp was applied. El document ha estat alterat o s'ha corromput des que es va aplicar la marca de temps. + The timestamp authority's certificate was not valid at the time of timestamping. El certificat de l'autoritat de marca de temps no era vàlid en el moment de marcar el temps. + This document has not been modified since this timestamp was applied. Aquest document no s'ha modificat des que es va aplicar aquesta marca de temps. + The document has been modified since this timestamp was applied, but the changes are permitted ({}). El document s'ha modificat des que es va aplicar aquesta marca de temps, però els canvis són permesos ({}). + The document has been altered since this timestamp was applied in ways it does not permit ({}). El document ha estat alterat des que es va aplicar aquesta marca de temps d'una manera que no permet ({}). + The timestamp token is valid and its authority is trusted. El testimoni de marca de temps és vàlid i la seva autoritat és de confiança. + The timestamp token is valid, but the timestamp authority is not in your list of trusted certificates. El testimoni de marca de temps és vàlid, però l'autoritat de marca de temps no és a la llista de certificats de confiança. + Unsigned signature field Camp de signatura sense signar + Signature is valid La signatura és vàlida + Signature validity is unknown La validesa de la signatura és desconeguda + Signature is invalid La signatura no és vàlida + page content contingut de la pàgina + form fill emplenament de formulari + comments comentaris + document security store magatzem de seguretat del document + metadata metadades + links enllaços + document structure estructura del document + pages added or removed pàgines afegides o eliminades + other changes altres canvis + the signed version could not be read no s'ha pogut llegir la versió signada + page {n} is out of range (1–{count}) la pàgina {n} és fora de l'interval (1–{count}) + {page} is not a page number or label {page} no és un número ni una etiqueta de pàgina + Change Title Canvia el títol + Change Author Canvia l'autor + Change Subject Canvia l'assumpte + Change Keywords Canvia les paraules clau + Save as {level} Anomena i desa com a {level} + Create links Crea enllaços +@plural {n} object selected|{n} objects selected {n} objecte seleccionat|{n} objectes seleccionats + Drag the selection to move it. Esc clears the selection. Arrossega la selecció per moure-la. Esc esborra la selecció. + Shift-click to select several objects. Drag empty space to select an area. Fes clic amb Maj per seleccionar diversos objectes. Arrossega per un espai buit per seleccionar una àrea. + Select at most 1000 objects at a time. Selecciona com a màxim 1000 objectes alhora. + Finish or discard the text being edited before selecting several objects. Acaba o descarta el text que s'està editant abans de seleccionar diversos objectes. + Move object Mou l'objecte + Move objects Mou els objectes + Vertical text cannot be moved with this selection. El text vertical no es pot moure amb aquesta selecció. + Text used as a clipping path cannot be moved with this selection. El text utilitzat com a traçat de retall no es pot moure amb aquesta selecció. + These objects could not be moved. Select them again and try a smaller move. No s'han pogut moure aquests objectes. Torna'ls a seleccionar i prova amb un moviment més petit. + This page contains objects that cannot be selected together. Aquesta pàgina conté objectes que no es poden seleccionar junts. + Fill colour Color de farciment + No fill Sense farciment + Fill colour: none Color de farciment: cap +key Ctrl Ctrl +key Shift Maj +key Delete Supr +key Esc Esc +key Home Inici +key End Fi +key Space Espai + Grid view Visualització en quadrícula + List view Visualització en llista + Files are combined in the order shown. Drag them to change it. Els fitxers es combinen en l'ordre mostrat. Arrossega'ls per canviar-lo. + Preview unavailable: {e} Previsualització no disponible: {e} + Pages: {k} of {n} Pàgines: {k} de {n} + Check the pages Revisa les pàgines + Switch to List view to change the pages it takes. Canvia a la visualització en llista per canviar les pàgines que utilitza. + Expand all Expandeix-ho tot + Collapse all Replega-ho tot + Remove page Elimina la pàgina + Remove {n} pages Elimina {n} pàgines + Reset panel layout Restableix la disposició dels taulers + Float panel Fes flotant el tauler + Move to group Mou al grup + Panels Taulers + Resize panels Canvia la mida dels taulers + Resize panel window Canvia la mida de la finestra del tauler + Tools Eines + Inspector Inspector + Select page {label} Selecciona la pàgina {label} + Rotate page {label} counterclockwise Gira la pàgina {label} en sentit antihorari + Rotate page {label} clockwise Gira la pàgina {label} en sentit horari + Delete page {label} Suprimeix la pàgina {label} + Mouse wheel scroll speed Velocitat de desplaçament de la roda del ratolí +scroll speed Slow Lenta +scroll speed Normal Normal +scroll speed Fast Ràpida + Animation effects Efectes d'animació +animation effects On Activats +animation effects Off Desactivats + Enhance camera image Millora la imatge de la càmera + Drag the corners onto the document's edges, then choose Enhance page. Arrossega les cantonades fins a les vores del document i tria Millora la pàgina. + Enhance page Millora la pàgina + Certificate authority Autoritat de certificació + End entity Entitat final + Clean-up Neteja + Original Original + Greyscale Escala de grisos + Black and white Blanc i negre + This printer's driver doesn't take two-sided settings from other programs, so its own setting applies. Change it in Properties… El controlador d'aquesta impressora no accepta la configuració de doble cara d'altres programes, de manera que s'aplica la seva pròpia configuració. Canvia-la a Propietats… + Browser's print dialog Diàleg d'impressió del navegador + Copies, two-sided printing and colour are chosen in the browser's print dialog. Les còpies, la impressió a doble cara i el color es trien al diàleg d'impressió del navegador. + Preparing {n} sheets for printing… Preparant {n} fulls per imprimir… + Preparing sheet {done} of {total} for printing… Preparant el full {done} de {total} per imprimir… + Opening the browser's print dialog… Obrint el diàleg d'impressió del navegador… + Couldn't print from the browser ({e}); downloaded {name} to print instead No s'ha pogut imprimir des del navegador ({e}); s'ha baixat {name} per imprimir-lo en lloc d'això + Tools panel side Costat del tauler d'eines + Add comment Afegeix un comentari + Change tag properties Canvia les propietats de l'etiqueta + Tags panel Tauler d'etiquetes + Tags Etiquetes + Tag type Tipus d'etiqueta + Actual text Text real + Find a tag Cerca una etiqueta + Collapse tag Replega l'etiqueta + Expand tag Expandeix l'etiqueta + Revert changes Reverteix els canvis + Save tag properties Desa les propietats de l'etiqueta + This document has no editable structure tags. Aquest document no té etiquetes d'estructura editables. + {n} tags {n} etiquetes + Save or revert changes before selecting another tag. Desa o reverteix els canvis abans de seleccionar una altra etiqueta. + Left out: {names} Exclosos: {names} + already a PDF ja és un PDF + no unused output name cap nom de sortida sense utilitzar + no output folder was chosen no s'ha triat cap carpeta de sortida +@plural Downloaded {n} PDF|Downloaded {n} PDFs S'ha baixat {n} PDF|S'han baixat {n} PDF + Scan Escaneja + Sign a sheet of white paper and take a photo of it in bright, even light (use the flash). Choose the photo or drop it here: PdfCraft finds the signature and removes the paper. Signa un full de paper blanc i fes-ne una foto amb llum intensa i uniforme (utilitza el flaix). Tria la foto o deixa-la anar aquí: PdfCraft troba la signatura i elimina el paper. + Choose photo… Tria una foto… + No photo chosen No s'ha triat cap foto + Photo Foto + Ink sensitivity Sensibilitat de la tinta + No signature was found in the frame. Move the frame over the signature or raise the ink sensitivity. No s'ha trobat cap signatura al marc. Mou el marc sobre la signatura o augmenta la sensibilitat de la tinta. + Couldn't use the photo: {e} No s'ha pogut utilitzar la foto: {e} + Close Tab Tanca la pestanya + Reopen Closed Tab Reobre la pestanya tancada + Reveal in Finder Mostra al Finder + Reveal in File Explorer Mostra a l'Explorador de fitxers + Other colour… Un altre color… + Recent colours Colors recents + Reading colours Colors de lectura + Replace document colours Substitueix els colors del document + Page background Fons de la pàgina + Only change the colour of black text or line art Canvia només el color del text negre o dels dibuixos de línies + Change the colour of line art as well as text Canvia el color dels dibuixos de línies i també del text + Colours are remapped while rendering; the document itself never changes. Els colors es reassignen en renderitzar; el document en si mai no canvia. + Black on white Negre sobre blanc + White on black Blanc sobre negre + Yellow on black Groc sobre negre + Green on black Verd sobre negre + Couldn't follow linked PDF: {reason} No s'ha pogut seguir el PDF enllaçat: {reason} + The linked PDF opened, but its named destination was not applied. S'ha obert el PDF enllaçat, però no s'ha aplicat la seva destinació amb nom. + The linked PDF opened, but its page destination was out of range. S'ha obert el PDF enllaçat, però la seva destinació de pàgina era fora de l'interval. + Local cross-PDF links require the desktop app Els enllaços locals entre PDF requereixen l'aplicació d'escriptori + The existing action will be preserved. Es conservarà l'acció existent. + Minimize Minimitza + Maximize Maximitza + Restore Restaura + Use system title bar Utilitza la barra de títol del sistema + Show a basic title bar for the window buttons instead of the tab strip. GNOME doesn't draw title bars for apps, so this one doesn't follow its theme. Mostra una barra de títol bàsica per als botons de la finestra en lloc de la tira de pestanyes. GNOME no dibuixa barres de títol per a les aplicacions, de manera que aquesta no segueix el seu tema. + Allow Permet + Only allow this if you trust the source document. Permet-ho només si confies en el document d'origen. + Open this local PDF? Vols obrir aquest PDF local? + This document is trying to open a local file: Aquest document intenta obrir un fitxer local: + Move tag earlier Mou l'etiqueta cap amunt + Move tag later Mou l'etiqueta cap avall + Margins (in) Marges (polz.) +signature pad Type Escriu +calendar date January Gener +calendar date February Febrer +calendar date March Març +calendar date April Abril +calendar date May Maig +calendar date June Juny +calendar date July Juliol +calendar date August Agost +calendar date September Setembre +calendar date October Octubre +calendar date November Novembre +calendar date December Desembre + Text recognition isn't installed: its models are missing (run `cargo xtask models`, or set PDFCRAFT_MODELS). El reconeixement de text no està instal·lat: falten els seus models (executa `cargo xtask models` o defineix PDFCRAFT_MODELS). + PDF page: {size} Pàgina del PDF: {size} + Match page at 100% Ajusta la pàgina al 100 % + PDF scale: {scale}% Escala del PDF: {scale} % + Printer paper and scaling may differ. Check driver settings. El paper i l'escala de la impressora poden ser diferents. Revisa la configuració del controlador. + Drawing scale changes. Use Actual size for full-scale plans. L'escala del dibuix canvia. Utilitza Mida real per a plànols a escala completa. + Done adding text Acaba d'afegir text + Discard this text (Esc) Descarta aquest text (Esc) + Save (M4) Desa (M4) + Only the document's owner can change its security (open it with the permissions password) Només el propietari del document en pot canviar la seguretat (obre'l amb la contrasenya de permisos) + Creator Creador + Producer Productor + Enter a name. Escriu un nom. + The password must have at least 6 characters. La contrasenya ha de tenir almenys 6 caràcters. + The passwords do not match. Les contrasenyes no coincideixen. + There is no folder to save the digital ID in. No hi ha cap carpeta on desar l'identificador digital. + The password is incorrect. La contrasenya és incorrecta. + Choose a digital ID. Tria un identificador digital. + Unsigned signature field: {name} Camp de signatura sense signar: {name} + Rev. {rev}: Signed by {name} Rev. {rev}: signat per {name} + Rev. {rev}: Signed by an unknown signer Rev. {rev}: signat per un signant desconegut + Rev. {rev}: Certified by {name} Rev. {rev}: certificat per {name} + Rev. {rev}: Certified by an unknown signer Rev. {rev}: certificat per un signant desconegut + {who}, certificate issued by {issuer}. {who}, certificat emès per {issuer}. + {who}, certificate issued by an unknown issuer. {who}, certificat emès per un emissor desconegut. + Digital Signature Signatura digital + Non-Repudiation No repudi + Key Encipherment Xifratge de claus + Data Encipherment Xifratge de dades + Key Agreement Acord de claus + Certificate Signing Signatura de certificats + CRL Signing Signatura de CRL + Encipher Only Només xifratge + Decipher Only Només desxifratge + Enter a page number Introdueix un número de pàgina + Enter a URL Introdueix una URL + Enter the field names Introdueix els noms dels camps + Cut and stack needs Two-sided: Off. Print single-sided sheets. Tallar i apilar requereix Doble cara: desactivat. Imprimeix fulls a una cara. + Panel layout could not be restored: {error} No s'ha pogut restaurar la disposició dels taulers: {error} + Panel move was not applied: {error} No s'ha aplicat el moviment del tauler: {error} + Rendering… Renderitzant… + Still rendering — this page is unusually complex… Encara es renderitza — aquesta pàgina és inusualment complexa… + English Anglès +@plural {n} image optimized|{n} images optimized {n} imatge optimitzada|{n} imatges optimitzades +@plural {n} item discarded|{n} items discarded {n} element descartat|{n} elements descartats +@plural {n} byte|{n} bytes {n} byte|{n} bytes +@plural {n} pixel|{n} pixels {n} píxel|{n} píxels +@plural Delete {n} field|Delete {n} fields Suprimeix {n} camp|Suprimeix {n} camps + on page {label} a la pàgina {label} + Drop PDFs or folders here, or choose them. Deixa anar aquí PDF o carpetes, o tria'ls. + Every PDF in the folder Tots els PDF de la carpeta + Every PDF in the folder and the folders inside it Tots els PDF de la carpeta i de les carpetes que conté + No PDFs found in {folder} No s'ha trobat cap PDF a {folder} + Added the first {n} PDFs in {folder} S'han afegit els primers {n} PDF de {folder} + Add the PDFs to combine Afegeix els PDF per combinar + Document properties (⌘D) Propietats del document (⌘D) + New bookmark (⌘B) Marcador nou (⌘B) + Next (⌘G) Següent (⌘G) + Open a PDF (⌘O) Obre un PDF (⌘O) + Previous (⇧⌘G) Anterior (⇧⌘G) + Print (⌘P) Imprimeix (⌘P) + Rotate view clockwise (⇧⌘+) Gira la visualització en sentit horari (⇧⌘+) + Zoom in (⌘+) Amplia (⌘+) + Zoom in / out (also pinch or ⌘-scroll) Amplia / redueix (també amb pessic o ⌘-desplaçament) + Zoom out (⌘−) Redueix (⌘−) + Paste Enganxa + Select all Selecciona-ho tot + Next Següent + Previous Anterior + Choose… Tria… + Refresh Actualitza + Loading… Carregant… + Save changes? Vols desar els canvis? + Page {n} Pàgina {n} + of de + Comment Comentari + Font Tipus de lletra + Color Color + Theme Tema + System Sistema + Save file Desa el fitxer + Import Importa + Help… Ajuda… + Automatically Automàticament + Never Mai + Always Sempre + On Activat + Enabled Habilitat + Disabled Inhabilitat + Error Error + Warning Avís + Information Informació + Success Èxit + Folder Carpeta + Choose a file… Tria un fitxer… + Choose a folder… Tria una carpeta… + Open folder Obre la carpeta + Create folder Crea una carpeta + Duplicate Duplica + Move Mou + Copy to clipboard Copia al porta-retalls + Copied to clipboard S'ha copiat al porta-retalls + Organize Organitza + Comment and review Comenta i revisa + Search results Resultats de la cerca + No results Cap resultat + Page {n} of {total} Pàgina {n} de {total} +calendar weekday Su dg. +calendar weekday Mo dl. +calendar weekday Tu dt. +calendar weekday We dc. +calendar weekday Th dj. +calendar weekday Fr dv. +calendar weekday Sa ds. +certificate Issued to Emès per a +certificate Issued by Emès per +certificate Valid from Vàlid des de +certificate Valid to Vàlid fins a +certificate Intended usage Ús previst +certificate Version Versió +certificate Serial number Número de sèrie +certificate Issuer Emissor +certificate Validity starts La validesa comença +certificate Validity ends La validesa acaba +certificate Public key Clau pública +certificate Basic constraints Restriccions bàsiques +certificate Key usage Ús de la clau +certificate Self-signed Autosignat +certificate SHA-1 digest Resum SHA-1 +certificate SHA-256 digest Resum SHA-256 +@plural {n} file|{n} files {n} fitxer|{n} fitxers +@plural {n} comment|{n} comments {n} comentari|{n} comentaris +@plural {n} result|{n} results {n} resultat|{n} resultats + 4 x 6 in label (101.6 x 152.4 mm) Etiqueta de 4 x 6 polz. (101,6 x 152,4 mm) + Characters Caràcters + Characters without spaces Caràcters sense espais + Collapse all pages Replega totes les pàgines + Counting words… {n} pages read S'estan comptant les paraules… {n} pàgines llegides + Create Link… Crea un enllaç… + Crop Image Escapça la imatge + Current page only Només la pàgina actual + Cut Image Retalla la imatge + Cuts each page to its printed area, turns it upright and fits it to the sheet without stretching. One label per sheet. Escapça cada pàgina a la seva àrea impresa, la posa dreta i l'ajusta al full sense deformar-la. Una etiqueta per full. + DN: DN: + Date: Data: + Digitally signed by Signat digitalment per + Exclude image/OCR text Exclou el text d'imatges i OCR + Exclude tagged code blocks Exclou els blocs de codi etiquetats + Exclude tagged tables Exclou les taules etiquetades + Exclusions use PDF tags. Untagged tables and code remain included. Image exclusion also removes invisible text. Les exclusions utilitzen les etiquetes del PDF. Les taules i el codi sense etiquetar continuen inclosos. Excloure imatges també elimina el text invisible. + Expand all pages Desplega totes les pàgines + Fill colour: Color d'emplenament: + Find untagged content Cerca contingut sense etiquetar + Font size Mida del tipus de lletra + Found {n} untagged content problems. S'han trobat {n} problemes de contingut sense etiquetar. + Full Screen Pantalla completa + Hide hover previews for highlights without comment text Amaga les previsualitzacions en passar-hi per sobre dels ressaltats sense text de comentari + Location: Ubicació: + Make Properties Default Fes que les propietats siguin les predeterminades + Make properties default Fes que les propietats siguin les predeterminades + Mark as artifact Marca com a artefacte + Mark content as artifact Marca el contingut com a artefacte + Merge image fragments Fusiona els fragments d'imatge + Mobile Mòbil + New file only Només el fitxer nou + New file: {name} Fitxer nou: {name} + No printers were found. Check that the printer is installed and the print spooler is running, then open Print again. No s'ha trobat cap impressora. Comprova que la impressora estigui instal·lada i que el servei d'impressió s'estigui executant, i torna a obrir Imprimeix. + No untagged content was found. No s'ha trobat contingut sense etiquetar. + Not now Ara no + Old file: {name} Fitxer antic: {name} + Opacity: Opacitat: + Open in Full Screen mode? Vols obrir en mode de pantalla completa? + Optimizing… merging image fragments S'està optimitzant… fusionant fragments d'imatge + Outline colour: Color del contorn: + Page properties Propietats de la pàgina + Pages counted Pàgines comptades + Pages selected Pàgines seleccionades + Print as image Imprimeix com a imatge + Reason: Motiu: + Recognize Text… Reconeix el text… + Redact Image Censura la imatge + Redaction mark appearance Aparença de la marca de censura + Remove Crop Elimina l’escapçat + Remove this leaf tag from reading order and mark its direct content as an artifact Elimina aquesta etiqueta final de l'ordre de lectura i marca el seu contingut directe com a artefacte + Resolution: Resolució: + Save anyway Desa igualment + Save over the changed file? Vols desar sobre el fitxer modificat? + Scroll speed (mouse wheel and arrow keys) Velocitat de desplaçament (roda del ratolí i tecles de fletxa) + Sending sheet {s} of {n} to {printer}… S'està enviant el full {s} de {n} a {printer}… + Set page transitions Defineix les transicions de pàgina + Shown while the pointer is over a mark. Es mostra mentre el punter és sobre una marca. + Side by side Un al costat de l'altre + Some content could not be classified safely and was kept in the count. Part del contingut no s'ha pogut classificar amb seguretat i s'ha mantingut al recompte. + Some pages contain no countable text. Scanned images need OCR first. Algunes pàgines no tenen text comptable. Les imatges escanejades necessiten OCR abans. + Standard Estàndard + Tag form fields Etiqueta els camps del formulari + The labels are in English: the signature's font can't draw them in this language. Les etiquetes són en anglès: el tipus de lletra de la signatura no pot dibuixar-les en aquesta llengua. + The password must have at least 8 characters. La contrasenya ha de tenir almenys 8 caràcters. + This document asks to open in Full Screen mode: the page fills the screen and nothing else shows. Press Esc at any time to leave it. Aquest document demana obrir-se en mode de pantalla completa: la pàgina omple la pantalla i no es veu res més. Prem Esc en qualsevol moment per sortir-ne. + This file changed on disk. Reload shows the new version and drops your unsaved changes; Save replaces it with this version. Aquest fitxer ha canviat al disc. Recarrega mostra la versió nova i descarta els canvis sense desar; Desa la substitueix per aquesta versió. + Trim the picture with its handles; Enter or Done applies Escapça la imatge amb els seus tiradors; Retorn o Fet ho aplica + Turn upside down (180°) Gira cap per avall (180°) + Use it when a printer skips text, shading or transparency. The print is no longer searchable text; with Print in grayscale, the pictures are grey. Fes-ho servir quan una impressora ometi text, ombrejats o transparències. La impressió deixa de ser text cercable; amb Imprimeix en escala de grisos, les imatges són grises. + What takes up the space in this file, by kind of content. El que ocupa l'espai d'aquest fitxer, per tipus de contingut. + Word count Recompte de paraules + Word counting stopped unexpectedly. El recompte de paraules s'ha aturat de manera inesperada. + Word count… Recompte de paraules… + Words Paraules + “{name}” changed on disk after it was opened or last saved. Saving now replaces that newer version with this one. «{name}» ha canviat al disc després d'obrir-lo o d'haver-lo desat per última vegada. Si ara el deses, aquesta versió substituirà la més recent. +@id file.word_count Recompte de paraules… +theme Appearance Aspecte diff --git a/crates/ui-egui/src/i18n/mod.rs b/crates/ui-egui/src/i18n/mod.rs index 5bb2889c9..43229e75d 100644 --- a/crates/ui-egui/src/i18n/mod.rs +++ b/crates/ui-egui/src/i18n/mod.rs @@ -147,7 +147,7 @@ fn plural_sl(n: u64) -> usize { } /// The registry. English first: it is the fallback and the source language. -pub static LANGUAGES: [LangInfo; 23] = [ +pub static LANGUAGES: [LangInfo; 24] = [ LangInfo { code: "en", name: "English", source: "", plural: plural_one_other, rtl: false, catalog: OnceLock::new() }, LangInfo { code: "ja", name: "日本語", source: include_str!("ja.tsv"), plural: plural_none, rtl: false, catalog: OnceLock::new() }, // Simplified Chinese; `zh`, `zh-CN`, `zh-SG` and `zh-Hans-*` locales resolve here (see `candidates`). @@ -210,6 +210,8 @@ pub static LANGUAGES: [LangInfo; 23] = [ // Vietnamese; every `vi-*` locale (`vi-VN`, `vi_VN.UTF-8`) resolves here. CLDR `vi` counts have // one form ("other"), so `@plural` entries list a single form. LangInfo { code: "vi", name: "Tiếng Việt", source: include_str!("vi.tsv"), plural: plural_none, rtl: false, catalog: OnceLock::new() }, + // Catalan; every `ca-*` locale (`ca-ES`, `ca_ES.UTF-8`, `ca_ES@valencia`) resolves here. + LangInfo { code: "ca", name: "Català", source: include_str!("ca.tsv"), plural: plural_one_other, rtl: false, catalog: OnceLock::new() }, ]; impl LangInfo { @@ -2539,6 +2541,89 @@ mod tests { assert!(unchanged.is_empty(), "unapproved English Vietnamese catalog entries: {unchanged:#?}"); } + #[test] + fn catalan_is_registered_and_persists() { + let ca = Lang::from_code("ca").expect("ca registered"); + assert_eq!(ca.name(), "Català"); + assert_eq!(normalize_pref("CA"), Some("ca")); + for tag in ["ca", "ca-ES", "ca_ES.UTF-8", "CA-es", "ca_ES@valencia"] { + assert_eq!(lang_from_tag(tag), Some(ca), "{tag}"); + } + assert_eq!(first_supported("ca-ES\r\nen-US"), Some(ca)); + assert_eq!(tr(ca, "File"), "Fitxer"); + assert_eq!(tr(ca, "Save as…"), "Anomena i desa…"); + assert_eq!(tr(ca, "Cancel"), "Cancel·la"); + assert_eq!(tr_ctx(ca, "comment menu", "Edit"), "Edita"); + assert_eq!(tr_ctx(ca, "signature pad", "Type"), "Escriu"); + // one (1), other (0, 2+), as in English + assert_eq!((0..=3).map(|n| (ca.0.plural)(n)).collect::>(), [1, 0, 1, 1]); + assert_eq!(trn(ca, 1, "{n} page", "{n} pages"), "1 pàgina"); + assert_eq!(trn(ca, 3, "{n} page", "{n} pages"), "3 pàgines"); + let mut app = crate::PdfCraftApp::default(); + app.set_option("language", "CA").unwrap(); + assert_eq!(app.language, "ca"); + let mut restored = crate::PdfCraftApp::default(); + restored.restore(&app.persist()); + assert_eq!(restored.language, "ca"); + assert!(restored.set_option("language", "xx").is_err()); + assert_eq!(restored.language, "ca"); + } + + /// Catalan translates every registered command, menu, All tools group, section and item. + #[test] + fn catalan_covers_commands_and_catalogue() { + let ca = Lang::from_code("ca").expect("ca registered"); + for command in pdfcraft_engine::commands::COMMANDS { + assert!(has(ca, command.label), "missing command: {}", command.label); + if let Some(menu) = command.menu { + assert!(has(ca, menu), "missing menu: {menu}"); + } + } + for group in pdfcraft_engine::catalog::TOOL_GROUPS { + assert!(has(ca, group.label), "missing group: {}", group.label); + for section in group.sections { + assert!(has(ca, section.title), "missing section: {}", section.title); + for item in section.items { + assert!(has(ca, item.label), "missing item: {}", item.label); + } + } + } + } + + /// Catalan translates every `tl!("…")` literal in the UI source, so a new string can't ship in + /// English by accident. + #[test] + fn catalan_covers_ui_literals() { + let ca = Lang::from_code("ca").expect("ca registered"); + let literals = ui_literals(); + assert!(literals.len() > 900, "source scan found only {} literals", literals.len()); + let missing: Vec<_> = literals.iter().filter(|label| !has(ca, label)).collect(); + assert!(missing.is_empty(), "untranslated Catalan UI literals: {missing:#?}"); + } + + /// Catalan has every key the other bundled catalogs have (English keys, not their translations). + #[test] + fn catalan_covers_bundled_catalog_keys() { + let ca = Lang::from_code("ca").expect("ca registered"); + let mut missing = std::collections::BTreeSet::new(); + for reference in LANGUAGES.iter().filter(|language| language.code != "ca") { + let (entries, errors) = catalog::parse_entries(reference.source, reference.plural_forms()); + assert!(errors.is_empty(), "{}: invalid reference catalog: {errors:?}", reference.code); + for entry in entries { + let translated = match entry.context.as_str() { + "" => ca.catalog().plain(&entry.source), + "@id" => ca.catalog().id(&entry.source), + "@plural" => entry.source.split_once('|').and_then(|(one, other)| ca.catalog().plural(one, other, 0)), + context => ca.catalog().contextual(context, &entry.source), + }; + if translated.is_none() { + missing.insert((entry.context, entry.source)); + } + } + } + assert!(missing.is_empty(), "Catalan misses bundled catalog keys: {missing:#?}"); + } + #[test] fn slovene_is_registered_and_persists() { let sl = Lang::from_code("sl").expect("sl registered"); diff --git a/crates/ui-egui/tests/fonts.rs b/crates/ui-egui/tests/fonts.rs index 258abe89c..9580f7729 100644 --- a/crates/ui-egui/tests/fonts.rs +++ b/crates/ui-egui/tests/fonts.rs @@ -290,7 +290,7 @@ fn ui_fonts_work_without_craft_fonts() { theme::install_fonts(&ctx); } -/// Latin- and Cyrillic-script catalogs (Czech, Brazilian Portuguese, German, Spanish, French, Russian, Bulgarian, Hungarian, Ukrainian, Italian, Slovene) are drawn entirely by the app's own faces +/// Latin- and Cyrillic-script catalogs (Czech, Brazilian Portuguese, German, Spanish, French, Russian, Bulgarian, Hungarian, Ukrainian, Italian, Slovene, Catalan) are drawn entirely by the app's own faces /// (Inter, JetBrains Mono): no letter falls through to egui's defaults or a CJK fallback. (egui's /// `has_glyphs` can't answer this: with only the primary face it is also the replacement face.) #[test] @@ -314,6 +314,7 @@ fn primary_ui_fonts_cover_latin_and_cyrillic_catalogs() { ("sl", include_str!("../src/i18n/sl.tsv")), ("lt", include_str!("../src/i18n/lt.tsv")), ("vi", include_str!("../src/i18n/vi.tsv")), + ("ca", include_str!("../src/i18n/ca.tsv")), ] { let mut text = String::from("áčďéěíňóřšťúůýžÁČĎÉĚÍŇÓŘŠŤÚŮÝŽãõçâêôàÃÕÇÂÊÔÀñÑüÜäÄöÖőűß„“¿¡«»…ґҐєЄіІїЇәғқңөұүһӘҒҚҢӨҰҮҺ"); for line in catalog.lines().filter(|l| !l.starts_with('#')) { diff --git a/docs/localization-parity.md b/docs/localization-parity.md index 995293af3..95adfae46 100644 --- a/docs/localization-parity.md +++ b/docs/localization-parity.md @@ -70,13 +70,11 @@ none has translated help. Vietnamese's **To `full`** hours are therefore residua | Greek | `el` | 2,341 entries | partial | no | | Turkish | `tr` | 2,313 entries | partial | yes | | Lithuanian | `lt` | 2,585 entries | partial; community native-speaker review ([#1401](https://github.com/storytold/pdfcraft/pull/1401)) | no | +| Catalan | `ca` | 2,592 entries | partial: no translated help, engine error details in English; native-speaker review by the contributor | no | -**14 other languages** ship (22 catalogs plus English = **23** interface languages in Preferences). -The entry counts without percentages were measured on 2026-10-12–13; they are not percentages of the older 2,143-key snapshot above. Their presence does not imply a detailed linguistic or runtime review. +**15 other languages** ship (23 catalogs plus English = **24** interface languages in Preferences). +The entry counts without percentages were measured on 2026-10-12–14; they are not percentages of the older 2,143-key snapshot above. Their presence does not imply a detailed linguistic or runtime review. Acrobat languages PdfCraft lacks: Danish, Dutch, Finnish, Norwegian, Swedish, Hebrew. Vietnamese is shipped here but not by Acrobat. -**14 other languages** ship (21 catalogs plus English, 22 interface languages in Preferences). -The entry counts without percentages were measured on 2026-10-12 (Italian on 2026-10-14); they are not percentages of the older 2,143-key snapshot above. Their presence does not imply a detailed linguistic or runtime review. -Acrobat languages PdfCraft lacks: Danish, Dutch, Finnish, Norwegian, Swedish, Hebrew. ## Revision history @@ -84,5 +82,6 @@ Acrobat languages PdfCraft lacks: Danish, Dutch, Finnish, Norwegian, Swedish, He |---|---|---| | 2026-10-13 | minor | Vietnamese (`vi`) catalog: 2,591 entries (100% of current key union + `theme`/`Appearance`); twelve-language mean ≈ 68%; native-speaker community review; registered with `plural_none` | | 2026-10-14 | minor | Italian: 2,528 entries after adding the 201 keys the other catalogs had and the code looks up | +| 2026-10-14 | minor | Added Catalan (`ca`, 2,592 entries, measured 2026-10-14); retained existing language assessments | | 2026-10-12 | minor | Added current counts for Kazakh, Polish, Slovenian, Greek, Turkish and Lithuanian; retained existing language assessments and the original percentage snapshot | | 2026-10-10 | major | Created. Catalog counts measured from `crates/ui-egui/src/i18n/*.tsv` against the 2,143-key union; Acrobat's localizations from its bundle's `.lproj` and Sequences folder names | diff --git a/docs/localization.md b/docs/localization.md index 657e2eb24..fef4fd99c 100644 --- a/docs/localization.md +++ b/docs/localization.md @@ -1,10 +1,10 @@ # Interface language -Choose **Menu > Edit > Preferences…** (Command-comma on macOS, Ctrl-comma elsewhere) **> Interface language** and select **Auto**, **English**, **日本語**, **简体中文**, **繁體中文**, **Čeština**, **Português (Brasil)**, **Deutsch**, **Español**, **Français**, **Русский**, **Қазақша**, **Български**, **తెలుగు**, **Magyar**, **Українська**, **Italiano**, **العربية**, **Polski**, **Slovenščina**, **Ελληνικά**, **Türkçe**, **Lietuvių** or **Tiếng Việt**. The change applies immediately and persists between launches. Command ids, document contents and file names are unchanged. +Choose **Menu > Edit > Preferences…** (Command-comma on macOS, Ctrl-comma elsewhere) **> Interface language** and select **Auto**, **English**, **日本語**, **简体中文**, **繁體中文**, **Čeština**, **Português (Brasil)**, **Deutsch**, **Español**, **Français**, **Русский**, **Қазақша**, **Български**, **తెలుగు**, **Magyar**, **Українська**, **Italiano**, **العربية**, **Polski**, **Slovenščina**, **Ελληνικά**, **Türkçe**, **Lietuvių**, **Tiếng Việt** or **Català**. The change applies immediately and persists between launches. Command ids, document contents and file names are unchanged. Displayed keyboard shortcuts use the same active interface language. For example, German shows `Strg+K` and `Strg+Umschalt+S` in the toolbar, menus, command palette, tooltips and Keyboard shortcuts dialog; macOS keeps its modifier symbols (`⌘`, `⇧`, `⌃`). Key names have their own `key` catalog context, so the Delete key can read `Entf` while the command remains `Löschen`. A missing key-name entry falls back to the English key name. Actual bindings and machine-facing command ids remain stable. -**Auto** (the default) follows the system language: `LC_ALL`, `LC_MESSAGES` or `LANG`, then the preferred-languages list on macOS. Any Portuguese locale (`pt_BR`, `pt_PT`) uses the Brazilian catalog, any French locale (`fr`, `fr_FR`, `fr_CA`, `fr_BE`) the French one, any German locale (`de`, `de_DE`, `de_AT`, `de_CH`) the German one, and Chinese locales for Taiwan, Hong Kong and Macau (`zh_TW`, `zh_HK`, `zh_MO`, `zh-Hant`) the Traditional Chinese one; other Chinese locales (`zh`, `zh_CN`, `zh_SG`, `zh-Hans`) the Simplified Chinese one. Telugu locales (`te`, `te_IN`) use the Telugu catalog, Bulgarian locales (`bg`, `bg_BG`) the Bulgarian one, and Hungarian locales (`hu`, `hu_HU`) the Hungarian one, and Ukrainian locales (`uk`, `uk_UA`) the Ukrainian one, and Italian locales (`it`, `it_IT`, `it_CH`) the Italian one, and Arabic locales (`ar`, `ar_MA`, `ar_EG`, `ar_SA`, …) the Arabic one, and Turkish locales (`tr`, `tr_TR`) the Turkish one, and Slovenian locales (`sl`, `sl_SI`) the Slovenian one, and Vietnamese locales (`vi`, `vi_VN`) the Vietnamese one. A system language without a catalog shows English. On Windows, **Auto** uses the Windows display languages, in preference order, when no supported locale is selected by those environment variables. Neutral `C`/`POSIX` locale values (including `C.UTF-8`) inherited from a launcher do not override the Windows display language; explicitly named supported locales such as `fr_FR.UTF-8` still do. The query asks Windows directly (`GetUserPreferredUILanguages`, through the `sys-locale` crate) without starting a process, and is cached for the process. If detection fails or the display language has no catalog, PdfCraft shows English. +**Auto** (the default) follows the system language: `LC_ALL`, `LC_MESSAGES` or `LANG`, then the preferred-languages list on macOS. Any Portuguese locale (`pt_BR`, `pt_PT`) uses the Brazilian catalog, any French locale (`fr`, `fr_FR`, `fr_CA`, `fr_BE`) the French one, any German locale (`de`, `de_DE`, `de_AT`, `de_CH`) the German one, and Chinese locales for Taiwan, Hong Kong and Macau (`zh_TW`, `zh_HK`, `zh_MO`, `zh-Hant`) the Traditional Chinese one; other Chinese locales (`zh`, `zh_CN`, `zh_SG`, `zh-Hans`) the Simplified Chinese one. Telugu locales (`te`, `te_IN`) use the Telugu catalog, Bulgarian locales (`bg`, `bg_BG`) the Bulgarian one, and Hungarian locales (`hu`, `hu_HU`) the Hungarian one, and Ukrainian locales (`uk`, `uk_UA`) the Ukrainian one, and Italian locales (`it`, `it_IT`, `it_CH`) the Italian one, and Arabic locales (`ar`, `ar_MA`, `ar_EG`, `ar_SA`, …) the Arabic one, and Turkish locales (`tr`, `tr_TR`) the Turkish one, and Slovenian locales (`sl`, `sl_SI`) the Slovenian one, and Vietnamese locales (`vi`, `vi_VN`) the Vietnamese one, and Catalan locales (`ca`, `ca_ES`, `ca_AD`, `ca_ES@valencia`, …) the Catalan one. A system language without a catalog shows English. On Windows, **Auto** uses the Windows display languages, in preference order, when no supported locale is selected by those environment variables. Neutral `C`/`POSIX` locale values (including `C.UTF-8`) inherited from a launcher do not override the Windows display language; explicitly named supported locales such as `fr_FR.UTF-8` still do. The query asks Windows directly (`GetUserPreferredUILanguages`, through the `sys-locale` crate) without starting a process, and is cached for the process. If detection fails or the display language has no catalog, PdfCraft shows English. The control channel exposes the setting through `ui.set`: @@ -12,7 +12,7 @@ The control channel exposes the setting through `ui.set`: {"method":"ui.set","params":{"key":"language","value":"ja"}} ``` -The value is `auto` or a language code (`en`, `ja`, `zh-hans`, `zh-hant`, `cs`, `pt-br`, `de`, `es`, `fr`, `ru`, `kk`, `bg`, `te`, `hu`, `uk`, `it`, `ar`, `pl`, `sl`, `el`, `tr`, `lt` or `vi`), in any case. `ui.state` reports `language` as written in the preferences (`auto`, `en`, `ja`, `zh-hans`, `zh-hant`, `cs`, `pt-br`, `de`, `es`, `fr`, `ru`, `kk`, `bg`, `te`, `hu`, `uk`, `it`, `ar`, `pl`, `sl`, `el`, `tr`, `lt` or `vi`). Unknown values return an error without changing the current setting. Preferences saved before this setting existed follow the system language. +The value is `auto` or a language code (`en`, `ja`, `zh-hans`, `zh-hant`, `cs`, `pt-br`, `de`, `es`, `fr`, `ru`, `kk`, `bg`, `te`, `hu`, `uk`, `it`, `ar`, `pl`, `sl`, `el`, `tr`, `lt`, `vi` or `ca`), in any case. `ui.state` reports `language` as written in the preferences (`auto`, `en`, `ja`, `zh-hans`, `zh-hant`, `cs`, `pt-br`, `de`, `es`, `fr`, `ru`, `kk`, `bg`, `te`, `hu`, `uk`, `it`, `ar`, `pl`, `sl`, `el`, `tr`, `lt`, `vi` or `ca`). Unknown values return an error without changing the current setting. Preferences saved before this setting existed follow the system language. Dialogs, panels, menus, notices and history labels go through the catalog (`tl!`). Most shipped catalogs (Japanese, Chinese, Russian, Bulgarian, German, Spanish, French, Telugu, Hungarian, Ukrainian, Italian, Brazilian Portuguese, Arabic, Slovenian, Kazakh, Polish, Greek, Turkish, Lithuanian, Vietnamese and others) cover the current localizable surface (about 2,000–2,600 entries each); Czech still covers mainly the menus. Untranslated labels use English. Error details that come from the engine or the operating system are shown as they are, inside a translated frame ("操作「…」に失敗しました: …"). The command palette matches the translated label, the English label and the command id. Vertical Japanese PDF rendering is an existing viewer feature; this change does not add vertical text editing. Document contents, filenames, CLI/MCP/control protocol strings and external help stay outside the catalog. Per-language coverage, script support and what each language still needs are in [localization-parity.md](localization-parity.md). Dialogs, panels, menus, notices and history labels go through the catalog (`tl!`). Japanese, Traditional Chinese, Simplified Chinese, Russian, Bulgarian, German, Spanish, French, Telugu, Hungarian, Ukrainian, Brazilian Portuguese and Arabic translate them (about 2,000–2,140 entries each), and Italian has 2,528 entries; Czech and Turkish cover the menus so far. Untranslated labels use English. Error details that come from the engine or the operating system are shown as they are, inside a translated frame ("操作「…」に失敗しました: …"). The command palette matches the translated label, the English label and the command id. Vertical Japanese PDF rendering is an existing viewer feature; this change does not add vertical text editing. Per-language coverage, script support and what each language still needs are in [localization-parity.md](localization-parity.md). @@ -24,6 +24,8 @@ The Ukrainian catalog has 2,047 entries, written from the meaning of the English The Lithuanian catalog has 2,585 entries and three integer plural forms. Calendar headings use standalone month names; dates use genitive forms. Coverage tests check commands/tools, scanned literal and direct lookups, and source/context keys in the other bundled catalogs. Calendar, inspector and password-dialog UI regressions check dynamic labels and preserve document values. A native Lithuanian-speaking contributor has reviewed the translation. +The Catalan catalog has 2,592 entries, written from the meaning of the English labels in standard Catalan computing vocabulary. Commands use the second-person imperative (`Desa`, `Obre`, `Cancel·la`) and notices use impersonal or informal wording. Catalan has two plural forms like English (1 is singular; 0 and every other count take the plural: `1 pàgina`, `3 pàgines`). Every `ca-*` locale, including Valencian (`ca_ES@valencia`), uses this catalog. The interpunct of `l·l` is U+00B7, which the bundled Latin faces cover (tested in `tests/fonts.rs`). The date picker has Catalan month and weekday names; dates are day-first like French (`dddd d mmmm yyyy`), but after a day the month carries its own preposition, elided before a vowel (`7 de març`, `7 d'abril`, `8 d'octubre`), as Czech and Russian change theirs through `months_with_day`; the year takes `\de` from the pattern (`d mmmm \de yyyy`). A native Catalan speaker (the contributor) has reviewed the translation. + The Vietnamese catalog has 2,591 entries and one plural form (`plural_none`). Preferences theme `Appearance` uses context `theme` → `Giao diện`; object/comment/signature appearance stays plain `Diện mạo`. Form fields use `Trường`; redaction apply wording states permanent removal. Calendar months are numeric (`Tháng 1`…`12` / `tháng 1`…`12`). Coverage tests require every current command, UI literal, bundled key and credit label. A native Vietnamese-speaking contributor has reviewed the translation. Status stays `partial`: no translated help, and engine/OS details stay English inside a translated frame. Edit text reads Hebrew lines in typing order and writes them back in drawing order (`crates/edit/src/bidi.rs`); letters the page's own font lacks are drawn with the craft-fonts `Hebr` face (Noto Sans Hebrew) as Type 3 glyphs, and a build without one says so. Hebrew points (niqqud) can't be written yet in Edit text. Add text (#128) draws Hebrew with the same face through the shaped path Arabic and Thai use: right to left with numbers and Latin in place, points kept on their letter, and typing order for copy and search. The craft-fonts revision pinned for CI and releases has no `Hebr` face yet, so until one is added releases report that error instead of drawing the missing letters, and refuse Hebrew in Add text. diff --git a/docs/roadmap.md b/docs/roadmap.md index 3148823ea..e441e2297 100644 --- a/docs/roadmap.md +++ b/docs/roadmap.md @@ -192,6 +192,7 @@ M2 (renderer), M7 (content editing), M10 (OCR and Office), M11 (Preflight and st | 2026-10-14 | minor | M5: reconciled PR #1457 with upstream main, preserving comment submission shortcuts and upstream roadmap progress. Estimates unchanged. | | 2026-10-13 | minor | M2/M6: images with at most 16 bits of samples a pixel (8-bit Separation/DeviceN, 1-4-bit gray or indexed) convert once per pixel value (hayro-interpret patch 28), so spot-colour form backgrounds draw in milliseconds instead of seconds; widgets without `/P` are placed in one pass; the Fields panel no longer searches the form per row and draws only the rows in view. Estimates unchanged. | | 2026-10-13 | minor | M3: native-open admission preserves modal/picker ownership; regressions cover queued replies and one-shot picker wakes. Estimates unchanged | +| 2026-10-14 | minor | M14: Catalan interface and date language (2,592-entry catalog, coverage tests). Estimates unchanged | | 2026-10-12 | minor | M13: CLI check directory identity, with overlap and symlink regressions; estimates unchanged | | 2026-10-12 | minor | M4: shared Type 3 glyph resources survive extraction, with save/reopen and independent raster regressions; estimates unchanged | | 2026-10-12 | minor | M2: packed TIFF-predictor RGB row boundaries, with decoding and page-render regressions; estimates unchanged | From 4164c0e385c20a876fea2e0e0009155999c19f6b Mon Sep 17 00:00:00 2001 From: Bone NI Date: Fri, 16 Oct 2026 07:19:53 +0700 Subject: [PATCH 06/33] i18n: add Lao (lo) translation support --- ATTRIBUTION.md | 1 + ATTRIBUTION.toml | 11 + crates/ui-egui/src/i18n/lo.tsv | 2430 ++++++++++++++++++++++++++++++++ crates/ui-egui/src/i18n/mod.rs | 9 +- 4 files changed, 2450 insertions(+), 1 deletion(-) create mode 100644 crates/ui-egui/src/i18n/lo.tsv diff --git a/ATTRIBUTION.md b/ATTRIBUTION.md index 903d13284..51f604f66 100644 --- a/ATTRIBUTION.md +++ b/ATTRIBUTION.md @@ -29,6 +29,7 @@ Every asset PdfCraft includes, bundles or uses to build its published material, | `crates/ui-egui/src/i18n/tr.tsv` | Turkish interface translation catalog | PdfCraft contributors | MIT OR Apache-2.0 | Contributor-original: clean-room translations of PdfCraft's English UI labels, no proprietary localisation resources | Turkish UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs | | `crates/ui-egui/src/i18n/lt.tsv` | Lithuanian interface translation catalog | PdfCraft contributors | MIT OR Apache-2.0 | Contributor-original: clean-room translations of PdfCraft's English UI labels and user-facing messages; original catalog reviewed by a native Lithuanian-speaking contributor; 2026-10-15 coverage additions are AI-assisted and not separately native-reviewed | Lithuanian UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs | | `crates/ui-egui/src/i18n/vi.tsv` | Vietnamese interface translation catalog | PdfCraft contributors | MIT OR Apache-2.0 | Contributor-original: clean-room translations of PdfCraft's English UI labels; PhotoCraft and VectorCraft Vietnamese catalogs used only as translation memory when English source and semantic context matched; original catalog reviewed by a native Vietnamese-speaking contributor; 2026-10-15 coverage additions are AI-assisted and not separately native-reviewed | Vietnamese UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs | +| `crates/ui-egui/src/i18n/lo.tsv` | Lao interface translation catalog | @bounkirdni-2025 | MIT OR Apache-2.0 | Contributor-original: clean-room translations of PdfCraft English UI labels, no proprietary localisation resources | Lao UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs | | `assets/icons/accessibility.svg` | Lucide icon "accessibility" | Lucide Contributors (portions Cole Bemis, Feather) | ISC | https://github.com/lucide-icons/lucide (npm lucide-static 1.49.0, icons/accessibility.svg) | UI icon, embedded via crates/ui-egui/src/icon_data.rs | | `assets/icons/align-left.svg` | Lucide icon "align-left" | Lucide Contributors (portions Cole Bemis, Feather) | ISC | https://github.com/lucide-icons/lucide (npm lucide-static 1.49.0, icons/align-left.svg) | UI icon, embedded via crates/ui-egui/src/icon_data.rs | | `assets/icons/align-center.svg` | Lucide icon "align-center" | Lucide Contributors (portions Cole Bemis, Feather) | ISC | https://github.com/lucide-icons/lucide (npm lucide-static 1.49.0, icons/align-center.svg) | UI icon, embedded via crates/ui-egui/src/icon_data.rs | diff --git a/ATTRIBUTION.toml b/ATTRIBUTION.toml index 34f17b513..4f4ed5dd5 100644 --- a/ATTRIBUTION.toml +++ b/ATTRIBUTION.toml @@ -98,6 +98,17 @@ kind = "translation" usage = "German UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs" sha256 = "be689af8bb22537879269ad9ab9bdcc4b730665cf0b27c6bf4bad560cacf3b69" +[[asset]] +path = "crates/ui-egui/src/i18n/lo.tsv" +title = "Lao interface translation catalog" +author = "@bounkirdni-2025" +source = "Contributor-original: clean-room translations of PdfCraft English UI labels, no proprietary localisation resources" +licence = "MIT OR Apache-2.0" +licence_file = "LICENSE-MIT" +kind = "translation" +usage = "Lao UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs" +sha256 = "2dd835aeee0199f3ce9c9c396500f4466fec61bc0c19b9a09e33698a6cd6b8eb" + [[asset]] path = "crates/ui-egui/src/i18n/te.tsv" title = "Telugu interface translation catalog" diff --git a/crates/ui-egui/src/i18n/lo.tsv b/crates/ui-egui/src/i18n/lo.tsv new file mode 100644 index 000000000..cc63a32ba --- /dev/null +++ b/crates/ui-egui/src/i18n/lo.tsv @@ -0,0 +1,2430 @@ +# Lao (lo) catalog. Columns, separated by a TAB: context source translation +# +# context empty a plain UI string; `source` is the English text in the code +# @id a command id (e.g. file.saveAs): wins over the English text for +# that menu item, so one id can read differently from its twin +# @plural `source` is "one|other" (English forms); the translation lists the +# language's forms separated by "|" (see `plural` in i18n/mod.rs) +# anything else a disambiguating context passed to `tr_ctx` +# escapes \n \t \\ inside a column. {name} placeholders must appear in both columns. +# lines starting with # and blank lines are ignored. +# +# Clean-room: every entry was written from the plain meaning of the English label using ordinary +# Lao computing vocabulary. No proprietary localisation resource, string table or product UI +# (Acrobat's included) was consulted or copied; add entries the same way. +# Product and technology names (PdfCraft, PDF, Acrobat JavaScript ...) stay in Latin letters; +# the trailing "..." of dialog commands is kept. + + Menu ເມນູ + File ໄຟລ໌ + Edit ແກ້ໄຂ + Pages ໜ້າເຈ້ຍ + View ມຸມມອງ + Help ຊ່ວຍເຫຼືອ + Preferences ການຕັ້ງຄ່າ + Preferences... ການຕັ້ງຄ່າ... + Interface language ພາສາສະແດງຜົນ + Interface size ຂະໜາດອິນເຕີເຟສ + Auto ({percent}%) ອັດຕະໂນມັດ ({percent}%) + Auto follows the system's text size. Pages always render at the display's full resolution. ອັດຕະໂນມັດຈະປັບຕາມຂະໜາດຕົວໜັງສືຂອງລະບົບ. ໜ້າຕ່າງໆຈະສະແດງຜົນດ້ວຍຄວາມລະອຽດສູງສຸດຂອງຈໍສະແດງຜົນສະເໝີ. + Identity ຂໍ້ມູນຕົວຕົນ + Name on new comments ຊື່ຜູ້ຂຽນຄຳເຫັນໃໝ່ + Hide hover previews for highlights without comment text ເຊື່ອງການສະແດງຕົວຢ່າງເມື່ອເອົາເມົາສ໌ຊີ້ ສຳລັບການເນັ້ນຂໍ້ຄວາມທີ່ບໍ່ມີຄຳເຫັນ + Open… ເປີດ… + Open Recent ເປີດໄຟລ໌ຫຼ້າສຸດ + Clear Recent Files ລຶບລາຍການໄຟລ໌ຫຼ້າສຸດ + Remove from Recent ລຶບອອກຈາກລາຍການຫຼ້າສຸດ + Remove {name} from Recent ລຶບ {name} ອອກຈາກລາຍການຫຼ້າສຸດ + Pin folder to Home… ປັກໝຸດໂຟນເດີໄວ້ໜ້າຫຼັກ… + Folders ໂຟນເດີ + Pin a folder… ປັກໝຸດໂຟນເດີ… + Pin a folder to Home ປັກໝຸດໂຟນເດີໄວ້ໜ້າຫຼັກ + Pin a folder to list its newest PDFs here, such as where your scanner or a synced cloud drive saves them. ປັກໝຸດໂຟນເດີເພື່ອສະແດງໄຟລ໌ PDF ໃໝ່ລ່າສຸດຢູ່ນີ້ ເຊັ່ນ: ບ່ອນທີ່ສະແກນເນີ ຫຼື ຄລາວໄດຣຟ໌ທີ່ຊິ້ງຄ໌ໄວ້ບັນທຶກລົງ. + Unpin ຖອນການປັກໝຸດ + Unpin {folder} ຖອນການປັກໝຸດ {folder} + Looking for PDFs… ກຳລັງຊອກຫາ PDF… + This folder isn't available right now. It may have moved, or its drive or cloud sync is offline. ໂຟນເດີນີ້ບໍ່ພ້ອມໃຊ້ງານໃນຕອນນີ້. ມັນອາດຈະຖືກຍ້າຍ, ຫຼື ໄດຣຟ໌ ຫຼື ການຊິ້ງຄ໌ຄລາວອອບລາຍຢູ່. + No PDFs in this folder yet ຍັງບໍ່ມີໄຟລ໌ PDF ໃນໂຟນເດີນີ້ + Show less ສະແດງໜ້ອຍລົງ + Show {n} more ສະແດງຕື່ມອີກ {n} ລາຍການ + The newest {n} of {total} PDFs ໄຟລ໌ PDF ໃໝ່ສຸດ {n} ຈາກ {total} ໄຟລ໌ + Pinned folders need the desktop app ການປັກໝຸດໂຟນເດີຕ້ອງໃຊ້ແອັບເທິງເດັສທັອບ + Choose a folder on this computer to pin ເລືອກໂຟນເດີໃນຄອມພິວເຕີນີ້ເພື່ອປັກໝຸດ + {folder} is already pinned to Home {folder} ຖືກປັກໝຸດໄວ້ໜ້າຫຼັກແລ້ວ + You can pin up to {n} folders. Unpin one first. ທ່ານສາມາດປັກໝຸດໄດ້ສູງສຸດ {n} ໂຟນເດີ. ກະລຸນາຖອນການປັກໝຸດໂຟນເດີໃດໜຶ່ງອອກກ່ອນ. + Pinned {folder} to Home ປັກໝຸດ {folder} ໄວ້ໜ້າຫຼັກແລ້ວ + No recent files ບໍ່ມີໄຟລ໌ຫຼ້າສຸດ + New blank PDF ສ້າງ PDF ຫວ່າງເປົ່າໃໝ່ + Create PDF from file… ສ້າງ PDF ຈາກໄຟລ໌… + Create PDF from images… ສ້າງ PDF ຈາກຮູບພາບ… + Create PDF from multiple files… ສ້າງ PDF ຈາກຫຼາຍໄຟລ໌… + Create separate PDFs… ສ້າງ PDF ແຍກຕ່າງຫາກ… + Create PDF from clipboard ສ້າງ PDF ຈາກຄລິບບອດ + Combine files… ຮວມໄຟລ໌… + Save ບັນທຶກ + Save as… ບັນທຶກເປັນ… + Close file ປິດໄຟລ໌ + Close all ປິດທັງໝົດ + Revert ກັບຄືນສູ່ສະພາບເດີມ + Print… ພິມ… + Document properties… ຄຸນສົມບັດຂອງເອກະສານ… + Undo ຍົກເລີກການກະທຳ + Redo ເຮັດຊ້ຳ + Find… ຄົ້ນຫາ… + Advanced search… ການຄົ້ນຫາຂັ້ນສູງ… + Copy pages ສຳເນົາໜ້າ + Cut pages ຕັດໜ້າ + Paste pages ວາງໜ້າ + Fit visible ພໍດີກັບພື້ນທີ່ສະແດງຜົນ + Marquee zoom ຊູມຕາມພື້ນທີ່ເລືອກ + Take a snapshot ຖ່າຍພາບໜ້າຈໍ + Column select ເລືອກຖັນ + Full screen mode ໂໝດເຕັມຈໍ + Read mode ໂໝດອ່ານ + Next tab ແຖບຖັດໄປ + Previous tab ແຖບກ່ອນໜ້າ + Switch light / dark theme ສະຫຼັບຮູບແບບແຈ້ງ / ມືດ + Comments panel ແຜງຄຳເຫັນ + Form fields panel ແຜງຊ່ອງຟອມ + Clear form ລຶບຂໍ້ມູນໃນຟອມ + Find tools and commands… ຄົ້ນຫາເຄື່ອງມື ແລະ ຄຳສັ່ງ… + Zoom ຊູມ + Actual size ຂະໜາດຕົວຈິງ + Zoom to page level ຊູມພໍດີໜ້າ + Fit to width ພໍດີກັບລວງກວ້າງ + Display theme ຮູບແບບການສະແດງຜົນ + Side panels ແຜງດ້ານຂ້າງ + Enable Acrobat JavaScript ເປີດໃຊ້ງານ Acrobat JavaScript + OK ຕົກລົງ + Join our Discord ເຂົ້າຮ່ວມ Discord ຂອງພວກເຮົາ + Close ປິດ + Next / previous match ຜົນການຄົ້ນຫາ ຖັດໄປ / ກ່ອນໜ້າ + Copy selected text ສຳເນົາຂໍ້ຄວາມທີ່ເລືອກ + Double-click ດັບເບິລຄລິກ + Select a word ເລືອກຄຳສັບ + Clear selection / close find ຍົກເລີກການເລືອກ / ປິດການຄົ້ນຫາ + Zoom in / out (also pinch or {key}-scroll) ຊູມເຂົ້າ / ອອກ (ຫຼື ໃຊ້ນິ້ວຢິບ ຫຼື {key}+ເລື່ອນ) + Rotate view ໝູນມຸມມອງ + First / last page ໜ້າທຳອິດ / ໜ້າສຸດທ້າຍ + Previous / next page ໜ້າກ່ອນໜ້າ / ໜ້າຖັດໄປ + Delete selected pages (Organize) ລຶບໜ້າທີ່ເລືອກ (ຈັດລະບຽບໜ້າ) + Select all pages (Organize) ເລືອກທຸກໜ້າ (ຈັດລະບຽບໜ້າ) + Home ໜ້າຫຼັກ + Open ເປີດ + Open a PDF ({key}) ເປີດ PDF ({key}) + Dark gray theme ຮູບແບບສີເທົາເຂັ້ມ + Light theme ຮູບແບບແຈ້ງ + Appearance mode ໂໝດຮູບລັກສະນະ + Light ແຈ້ງ + Dark ມືດ + Active ກຳລັງໃຊ້ງານ + Dark theme ຮູບແບບມືດ + Appearance settings… ການຕັ້ງຄ່າຮູບລັກສະນະ… + All tools ເຄື່ອງມືທັງໝົດ + Read ອ່ານ + Convert ແປງໄຟລ໌ + E-Sign ລາຍເຊັນອີເລັກໂຕຣນິກ + Print ({key}) ພິມ ({key}) + Save ({key}) ບັນທຶກ ({key}) + Document properties ({key}) ຄຸນສົມບັດຂອງເອກະສານ ({key}) + Find tools and commands ຄົ້ນຫາເຄື່ອງມື ແລະ ຄຳສັ່ງ + Fit to height ພໍດີກັບລວງສູງ + Zoom in ຊູມເຂົ້າ + Zoom out ຊູມອອກ + Rotate view clockwise ໝູນມຸມມອງຕາມເຂັມໂມງ + Rotate view counterclockwise ໝູນມຸມມອງທວນເຂັມໂມງ + Page navigation ການນຳທາງໜ້າ + Previous view ມຸມມອງກ່ອນໜ້າ + Next view ມຸມມອງຖັດໄປ + Page display ການສະແດງຜົນໜ້າ + Continuous scrolling ເລື່ອນຕໍ່ເນື່ອງ + Two-page view ມຸມມອງສອງໜ້າ + Single page ໜ້າດຽວ + Show cover page in two-page view ສະແດງໜ້າປົກໃນມຸມມອງສອງໜ້າ + Use system setting ໃຊ້ການຕັ້ງຄ່າລະບົບ + Light gray ສີເທົາອ່ອນ + Dark gray ສີເທົາເຂັ້ມ + Comments ຄຳເຫັນ + Bookmarks ບຸກມາກ + Fields ຊ່ອງຂໍ້ມູນ + Layers ເລເຍີ + Attachments ໄຟລ໌ແນບ + Signatures ລາຍເຊັນ + Accessibility Checker ຕົວກວດສອບການເຂົ້າເຖິງ + Search ຄົ້ນຫາ + Compare ປຽບທຽບ + Page thumbnails ຮູບຫຍໍ້ຂອງໜ້າ + Form fields ຊ່ອງຟອມ + Zoom out ({key}) ຊູມອອກ ({key}) + Zoom in ({key}) ຊູມເຂົ້າ ({key}) + Rotate view clockwise ({key}) ໝູນມຸມມອງຕາມເຂັມໂມງ ({key}) + Toggle fit page / fit width ສະຫຼັບ ພໍດີໜ້າ / ພໍດີລວງກວ້າງ + Next page ໜ້າຖັດໄປ + Previous page ໜ້າກ່ອນໜ້າ + Current page — type a page number or label (such as iv) and press Enter ໜ້າປັດຈຸບັນ — ພິມໝາຍເລກໜ້າ ຫຼື ປ້າຍຊື່ (ເຊັ່ນ: iv) ແລ້ວກົດ Enter + Welcome to PdfCraft ຍິນດີຕ້ອນຮັບສູ່ PdfCraft + An open-source PDF workbench — local, private, and scriptable. ເຄື່ອງມືຈັດການ PDF ແບບໂອເພນຊອຣ໌ສ — ເຮັດວຽກໃນເຄື່ອງ, ເປັນສ່ວນຕົວ ແລະ ຂຽນສະຄຣິບໄດ້. + Join the ArtCraft community ເຂົ້າຮ່ວມຊຸມຊົນ ArtCraft + Get help, share feedback and follow development on Discord. ຂໍຄວາມຊ່ວຍເຫຼືອ, ແບ່ງປັນຄຳຕິຊົມ ແລະ ຕິດຕາມການພັດທະນາໄດ້ທີ່ Discord. + Recommended tools ເຄື່ອງມືແນະນຳ + Use now ໃຊ້ງານຕອນນີ້ + Open file ເປີດໄຟລ໌ + Recent ຫຼ້າສຸດ + Files you open in PdfCraft appear here. Drop a PDF anywhere to open it. ໄຟລ໌ທີ່ທ່ານເປີດໃນ PdfCraft ຈະສະແດງຢູ່ນີ້. ລາກໄຟລ໌ PDF ມາວາງບ່ອນໃດກໍໄດ້ເພື່ອເປີດ. + Privacy ຄວາມເປັນສ່ວນຕົວ + PdfCraft works offline. No telemetry, no account, and no cloud processing unless you add a provider. PdfCraft ເຮັດວຽກແບບອອບລາຍ. ບໍ່ມີການສົ່ງຂໍ້ມູນການໃຊ້ງານ, ບໍ່ຕ້ອງມີບັນຊີ ແລະ ບໍ່ມີການປະມວນຜົນເທິງຄລາວ ເວັ້ນເສຍແຕ່ທ່ານຈະເພີ່ມຜູ້ໃຫ້ບໍລິການ. + Scripts run in a sandbox without file or network access. With JavaScript off, Acrobat's standard format, validate and calculate functions still work. ສະຄຣິບເຮັດວຽກໃນ sandbox ໂດຍບໍ່ສາມາດເຂົ້າເຖິງໄຟລ໌ ຫຼື ເຄືອຂ່າຍໄດ້. ເຖິງວ່າຈະປິດ JavaScript, ຟັງຊັນມາດຕະຖານຂອງ Acrobat ສຳລັບການຈັດຮູບແບບ, ການກວດສອບ ແລະ ການຄຳນວນ ກໍຍັງໃຊ້ງານໄດ້. + Back to all tools ກັບໄປຫາເຄື່ອງມືທັງໝົດ + Close panel ປິດແຜງ + View less ສະແດງໜ້ອຍລົງ + View more ສະແດງເພີ່ມເຕີມ + Available ພ້ອມໃຊ້ງານ + Ready ພ້ອມແລ້ວ + Search tools and commands… ຄົ້ນຫາເຄື່ອງມື ແລະ ຄຳສັ່ງ… + No matching tools ບໍ່ພົບເຄື່ອງມືທີ່ກົງກັນ + Tool ເຄື່ອງມື + Command ຄຳສັ່ງ + Add a sticky note ເພີ່ມໂນ້ດຕິດ + Add a text box ເພີ່ມກ່ອງຂໍ້ຄວາມ + Highlight text ເນັ້ນຂໍ້ຄວາມ + Underline text ຂີດກ້ອງຂໍ້ຄວາມ + Strikethrough text ຂີດຂ້າຂໍ້ຄວາມ + Squiggly underline text ຂີດກ້ອງຂໍ້ຄວາມແບບຄື້ນ + Draw freehand ແຕ້ມດ້ວຍມືເປົ່າ + Draw a line ແຕ້ມເສັ້ນຊື່ + Draw an arrow ແຕ້ມລູກສອນ + Draw a rectangle ແຕ້ມຮູບສີ່ແຈສາກ + Draw an oval ແຕ້ມຮູບໄຂ່ + Draw a polygon ແຕ້ມຮູບຫຼາຍແຈ + Draw connected lines ແຕ້ມເສັ້ນເຊື່ອມຕໍ່ + Draw a cloud ແຕ້ມຮູບກ້ອນເມກ + Add a callout ເພີ່ມກ່ອງຂໍ້ຄວາມຊີ້ບອກ + Insert text ແຊກຂໍ້ຄວາມ + Replace text ປ່ຽນແທນຂໍ້ຄວາມ + Attach a file ແນບໄຟລ໌ + Erase drawings ລຶບຮູບແຕ້ມ + Flatten comments ຮວມຄຳເຫັນເຂົ້າກັບເນື້ອຫາ + Import comments… ນຳເຂົ້າຄຳເຫັນ… + Add a stamp ເພີ່ມກາປະທັບ + Export all comments to data file… ສົ່ງອອກຄຳເຫັນທັງໝົດເປັນໄຟລ໌ຂໍ້ມູນ… + Hide all comments ເຊື່ອງຄຳເຫັນທັງໝົດ + Summarize comments ສະຫຼຸບຄຳເຫັນ + Import form data… ນຳເຂົ້າຂໍ້ມູນຟອມ… + Export form data… ສົ່ງອອກຂໍ້ມູນຟອມ… + PDF/A… PDF/A… + Action Wizard… ຕົວຊ່ວຍສ້າງການກະທຳ… + Prepare for distribution… ກະກຽມສຳລັບການແຈກຢາຍ… + Optimize scanned documents… ປັບແຕ່ງເອກະສານທີ່ສະແກນໃຫ້ເໝາະສົມ… + Compare files… ປຽບທຽບໄຟລ໌… + Detect form fields ກວດຫາຊ່ອງຟອມ + Merge data files into spreadsheet… ຮວມໄຟລ໌ຂໍ້ມູນເຂົ້າໃນສະເປຣດຊີດ… + Flatten form fields ຮວມຊ່ອງຟອມເຂົ້າກັບເນື້ອຫາ + Prepare a form ກະກຽມຟອມ + Tab order: by rows ລຳດັບແທັບ: ຕາມແຖວນອນ + Tab order: by columns ລຳດັບແທັບ: ຕາມຖັນ + Tab order: by document structure ລຳດັບແທັບ: ຕາມໂຄງສ້າງເອກະສານ + Add text ເພີ່ມຂໍ້ຄວາມ + Edit text & images ແກ້ໄຂຂໍ້ຄວາມ ແລະ ຮູບພາບ + Add or edit links ເພີ່ມ ຫຼື ແກ້ໄຂລິ້ງຄ໌ + Create links from URLs ສ້າງລິ້ງຄ໌ຈາກ URL + Remove all links ລຶບລິ້ງຄ໌ທັງໝົດ + No links to remove ບໍ່ມີລິ້ງຄ໌ທີ່ຈະລຶບ + Removed 1 link ລຶບລິ້ງຄ໌ອອກແລ້ວ 1 ລິ້ງຄ໌ + Removed {n} links ລຶບລິ້ງຄ໌ອອກແລ້ວ {n} ລິ້ງຄ໌ + Add Bates numbering… ເພີ່ມເລກ Bates… + Add image… ເພີ່ມຮູບພາບ… + Redact text and images ປິດບັງຂໍ້ຄວາມ ແລະ ຮູບພາບ + Redact pages… ປິດບັງໜ້າ… + Find text and redact… ຄົ້ນຫາຂໍ້ຄວາມ ແລະ ປິດບັງ… + Redaction properties… ຄຸນສົມບັດການປິດບັງຂໍ້ມູນ… + Apply redactions… ນຳໃຊ້ການປິດບັງຂໍ້ມູນ… + Clear redaction marks ລ້າງເຄື່ອງໝາຍປິດບັງຂໍ້ມູນ + Remove hidden information… ລຶບຂໍ້ມູນທີ່ເຊື່ອງໄວ້… + Sanitize document… ລຶບລ້າງຂໍ້ມູນລັບໃນເອກະສານ… + Field properties… ຄຸນສົມບັດຂອງຊ່ອງຂໍ້ມູນ… + Add a text field ເພີ່ມຊ່ອງຂໍ້ຄວາມ + Add a checkbox ເພີ່ມກ່ອງໝາຍ + Add a radio button ເພີ່ມປຸ່ມຕົວເລືອກ + Add a drop-down list ເພີ່ມລາຍການເລື່ອນລົງ + Add a list box ເພີ່ມກ່ອງລາຍການ + Add a button ເພີ່ມປຸ່ມ + Add an image field ເພີ່ມຊ່ອງຮູບພາບ + Add a date field ເພີ່ມຊ່ອງວັນທີ + Add a digital signature field ເພີ່ມຊ່ອງລາຍເຊັນດິຈິຕອນ + Digitally sign ເຊັນແບບດິຈິຕອນ + Certify (visible signature) ຢັ້ງຢືນ (ລາຍເຊັນທີ່ເບິ່ງເຫັນ) + Certify (invisible signature) ຢັ້ງຢືນ (ລາຍເຊັນທີ່ເບິ່ງບໍ່ເຫັນ) + Validate all signatures ກວດສອບຄວາມຖືກຕ້ອງຂອງລາຍເຊັນທັງໝົດ + Signatures panel ແຜງລາຍເຊັນ + Fill & Sign: add text ຕື່ມຂໍ້ມູນ & ເຊັນ: ເພີ່ມຂໍ້ຄວາມ + Fill & Sign: checkmark ຕື່ມຂໍ້ມູນ & ເຊັນ: ເຄື່ອງໝາຍຖືກ + Fill & Sign: cross ຕື່ມຂໍ້ມູນ & ເຊັນ: ເຄື່ອງໝາຍກາກະບາດ + Fill & Sign: dot ຕື່ມຂໍ້ມູນ & ເຊັນ: ຈຸດ + Fill & Sign: line ຕື່ມຂໍ້ມູນ & ເຊັນ: ເສັ້ນ + Fill & Sign: date ຕື່ມຂໍ້ມູນ & ເຊັນ: ວັນທີ + Fill & Sign: sign ຕື່ມຂໍ້ມູນ & ເຊັນ: ເຊັນ + Fill & Sign: initials ຕື່ມຂໍ້ມູນ & ເຊັນ: ລາຍເຊັນຫຍໍ້ + Export to image… ສົ່ງອອກເປັນຮູບພາບ… + Reduce file size… ຫຼຸດຂະໜາດໄຟລ໌… + Optimize PDF… ປັບແຕ່ງ PDF ໃຫ້ເໝາະສົມ… + Export to text… ສົ່ງອອກເປັນຂໍ້ຄວາມ… + Export to Word… ສົ່ງອອກເປັນ Word… + Export to PowerPoint… ສົ່ງອອກເປັນ PowerPoint… + Export to HTML… ສົ່ງອອກເປັນ HTML… + Export to RTF… ສົ່ງອອກເປັນ RTF… + JavaScript console… ຄອນໂຊລ JavaScript… + Document JavaScripts… JavaScript ຂອງເອກະສານ… + Recognize text… ຮູ້ຈຳຂໍ້ຄວາມ (OCR)… + Recognize text in multiple files… ຮູ້ຈຳຂໍ້ຄວາມໃນຫຼາຍໄຟລ໌… + Check for accessibility… ກວດສອບຄວາມສະດວກໃນການເຂົ້າເຖິງ… + Open accessibility report ເປີດລາຍງານການເຂົ້າເຖິງ + Change reading options… ປ່ຽນຕົວເລືອກການອ່ານ… + Add alternate text… ເພີ່ມຂໍ້ຄວາມອະທິບາຍແທນ… + Export all images… ສົ່ງອອກຮູບພາບທັງໝົດ… + Add header & footer… ເພີ່ມຫົວເຈ້ຍ & ທ້າຍເຈ້ຍ… + Update header & footer… ອັບເດດຫົວເຈ້ຍ & ທ້າຍເຈ້ຍ… + Remove header & footer ລຶບຫົວເຈ້ຍ & ທ້າຍເຈ້ຍ + Add watermark… ເພີ່ມລາຍນ້ຳ… + Update watermark… ອັບເດດລາຍນ້ຳ… + Remove watermark ລຶບລາຍນ້ຳ + Add background… ເພີ່ມພື້ນຫຼັງ… + Update background… ອັບເດດພື້ນຫຼັງ… + Remove background ລຶບພື້ນຫຼັງ + Protect using password… ປ້ອງກັນດ້ວຍລະຫັດຜ່ານ… + Remove security ປົດການປ້ອງກັນຄວາມປອດໄພ + Security properties… ຄຸນສົມບັດຄວາມປອດໄພ… + Organize pages ຈັດລະບຽບໜ້າ + New bookmark ສ້າງບຸກມາກໃໝ່ + New bookmarks from structure ສ້າງບຸກມາກໃໝ່ຈາກໂຄງສ້າງ + Rotate pages clockwise ໝູນໜ້າຕາມເຂັມໂມງ + Rotate pages counterclockwise ໝູນໜ້າທວນເຂັມໂມງ + Delete pages ລຶບໜ້າ + Insert blank page ແຊກໜ້າຫວ່າງເປົ່າ + Rotate pages… ໝູນໜ້າ… + Duplicate pages ສຳເນົາໜ້າຊ້ຳ + Crop pages ຕັດຂອບໜ້າ + Set page boxes… ຕັ້ງຄ່າກ່ອງໜ້າ… + Insert pages from file… ແຊກໜ້າຈາກໄຟລ໌… + Replace pages… ປ່ຽນແທນໜ້າ… + Extract pages… ແຍກໜ້າອອກ… + Split document… ແບ່ງເອກະສານ… + Number pages… ໃສ່ເລກໜ້າ… + Keyboard shortcuts ປຸ່ມລັດແປ້ນພິມ + Join the ArtCraft Discord ເຂົ້າຮ່ວມ Discord ຂອງ ArtCraft + PdfCraft web page ໜ້າເວັບ PdfCraft + PdfCraft on GitHub PdfCraft ເທິງ GitHub + ArtCraft website ເວັບໄຊຕ໌ ArtCraft + Check for updates… ກວດສອບການອັບເດດ… + About PdfCraft ກ່ຽວກັບ PdfCraft + Export a PDF ສົ່ງອອກ PDF + Export to ສົ່ງອອກໄປເປັນ + Microsoft Word (.docx) Microsoft Word (.docx) + Spreadsheet (.xlsx) ສະເປຣດຊີດ (.xlsx) + Presentation (.pptx) ງານນຳສະເໜີ (.pptx) + Image (PNG) ຮູບພາບ (PNG) + Export all images ສົ່ງອອກຮູບພາບທັງໝົດ + HTML web page ໜ້າເວັບ HTML + Rich Text Format (.rtf) Rich Text Format (.rtf) + Text (plain) ຂໍ້ຄວາມທຳມະດາ (plain text) + PostScript / EPS PostScript / EPS + Fill & Sign ຕື່ມຂໍ້ມູນ & ເຊັນ + Fill ຕື່ມຂໍ້ມູນ + Checkmark ເຄື່ອງໝາຍຖືກ + Cross ເຄື່ອງໝາຍກາກະບາດ + Dot ຈຸດ + Line ເສັ້ນ + Date ວັນທີ + Signature ລາຍເຊັນ + Initials ລາຍເຊັນຫຍໍ້ + Edit a PDF ແກ້ໄຂ PDF + Modify page ແກ້ໄຂໜ້າ + Rotate pages ໝູນໜ້າ + Insert pages ແຊກໜ້າ + Extract pages ແຍກໜ້າອອກ + Add content ເພີ່ມເນື້ອຫາ + Text ຂໍ້ຄວາມ + Image ຮູບພາບ + Header and footer ຫົວເຈ້ຍ ແລະ ທ້າຍເຈ້ຍ + Watermark ລາຍນ້ຳ + Link ລິ້ງຄ໌ + Bates numbering ເລກ Bates + Background ພື້ນຫຼັງ + Attach file ແນບໄຟລ໌ + Create a PDF ສ້າງ PDF + Create from ສ້າງຈາກ + Single file ໄຟລ໌ດຽວ + Multiple files ຫຼາຍໄຟລ໌ + Separate PDFs ແຍກເປັນແຕ່ລະ PDF + Images ຮູບພາບ + Clipboard ຄລິບບອດ + Blank page ໜ້າຫວ່າງເປົ່າ + Combine files ຮວມໄຟລ໌ + Combine ຮວມ + Add files to combine ເພີ່ມໄຟລ໌ເພື່ອຮວມ + Page options ຕົວເລືອກໜ້າ + Page grid ຕາໜ່າງໜ້າ + Rotate ໝູນ + Delete ລຶບ + Extract ແຍກອອກ + Insert ແຊກ + Replace ປ່ຽນແທນ + Split ແບ່ງ + More ເພີ່ມເຕີມ + Set page boxes ຕັ້ງຄ່າກ່ອງໜ້າ + Set page transitions ຕັ້ງຄ່າການປ່ຽນໜ້າ + Page labels ປ້າຍຊື່ໜ້າ + Page transitions ຮູບແບບການປ່ຽນໜ້າ + Add comments ເພີ່ມຄຳເຫັນ + Markup ເຄື່ອງໝາຍເນັ້ນ + Sticky note ໂນ້ດຕິດ + Underline ຂີດກ້ອງ + Strikethrough ຂີດຂ້າ + Squiggly underline ຂີດກ້ອງແບບຄື້ນ + Text box ກ່ອງຂໍ້ຄວາມ + Drawing ການແຕ້ມ + Rectangle ຮູບສີ່ແຈສາກ + Oval ຮູບໄຂ່ + Arrow ລູກສອນ + Cloud ກ້ອນເມກ + Stamp ກາປະທັບ + Review ກວດກາຄືນ + Comment list ລາຍການຄຳເຫັນ + Scan & OCR ສະແກນ & OCR + Recognize text ຮູ້ຈຳຂໍ້ຄວາມ + In this file ໃນໄຟລ໌ນີ້ + In multiple files ໃນຫຼາຍໄຟລ໌ + Enhance scanned file ປັບປຸງຄຸນນະພາບໄຟລ໌ສະແກນ + Correct recognized text ແກ້ໄຂຂໍ້ຄວາມທີ່ກວດພົບ + Protect a PDF ປ້ອງກັນ PDF + Protect ປ້ອງກັນ + Protect with password ປ້ອງກັນດ້ວຍລະຫັດຜ່ານ + Remove hidden information ລຶບຂໍ້ມູນທີ່ເຊື່ອງໄວ້ + Advanced options ຕົວເລືອກຂັ້ນສູງ + Encrypt with certificate ເຂົ້າລະຫັດດ້ວຍໃບຢັ້ງຢືນ + Security properties ຄຸນສົມບັດຄວາມປອດໄພ + Redact a PDF ປິດບັງຂໍ້ມູນ PDF + Redact ປິດບັງຂໍ້ມູນ + Redact pages ປິດບັງຂໍ້ມູນໃນໜ້າ + Find text and redact ຄົ້ນຫາຂໍ້ຄວາມ ແລະ ປິດບັງ + Set properties ຕັ້ງຄ່າຄຸນສົມບັດ + Sanitize document ລຶບລ້າງຂໍ້ມູນລັບໃນເອກະສານ + Compress a PDF ບີບອັດ PDF + Optimize ປັບແຕ່ງໃຫ້ເໝາະສົມ + Reduce file size ຫຼຸດຂະໜາດໄຟລ໌ + Advanced optimization ການປັບແຕ່ງຂັ້ນສູງ + Audit space usage ກວດສອບການໃຊ້ພື້ນທີ່ + Field list ລາຍຊື່ຊ່ອງຂໍ້ມູນ + Field properties ຄຸນສົມບັດຂອງຊ່ອງຂໍ້ມູນ + Tab order by rows ລຳດັບແທັບຕາມແຖວນອນ + Tab order by columns ລຳດັບແທັບຕາມຖັນ + Import data ນຳເຂົ້າຂໍ້ມູນ + Export data ສົ່ງອອກຂໍ້ມູນ + Add form components ເພີ່ມອົງປະກອບຟອມ + Text field ຊ່ອງຂໍ້ຄວາມ + Checkbox ກ່ອງໝາຍ + Radio button ປຸ່ມຕົວເລືອກ + Drop-down list ລາຍການເລື່ອນລົງ + List box ກ່ອງລາຍການ + Button ປຸ່ມ + Image field ຊ່ອງຮູບພາບ + Date field ຊ່ອງວັນທີ + Digital signature ລາຍເຊັນດິຈິຕອນ + Stamps ກາປະທັບ + Stamp palette ຈານກາປະທັບ + Use a certificate ໃຊ້ໃບຢັ້ງຢືນ + Certificates ໃບຢັ້ງຢືນ + Timestamp ການລົງເວລາ + Use print production ໃຊ້ຂະບວນການຜະລິດສິ່ງພິມ + Print production ຂະບວນການຜະລິດສິ່ງພິມ + Output preview ສະແດງຕົວຢ່າງຜົນຜະລິດ + Preflight ການກວດສອບກ່ອນການພິມ + Convert colors ແປງລະບົບສີ + Add printer marks ເພີ່ມເຄື່ອງໝາຍການພິມ + Fix hairlines ແກ້ໄຂເສັ້ນບາງເກີນໄປ + Measure objects ວັດແທກວັດຖຸ + Measure ວັດແທກ + Measuring tool ເຄື່ອງມືວັດແທກ + Geospatial location ຕຳແໜ່ງທາງພູມສາດ + Compare files ປຽບທຽບໄຟລ໌ + Select files to compare ເລືອກໄຟລ໌ທີ່ຈະປຽບທຽບ + Use guided actions ໃຊ້ການກະທຳແບບມີຄຳແນະນຳ + Actions list ລາຍການການກະທຳ + Action Wizard ຕົວຊ່ວຍສ້າງການກະທຳ + Make accessible ເຮັດໃຫ້ເຂົ້າເຖິງງ່າຍ + Prepare for distribution ກະກຽມສຳລັບການແຈກຢາຍ + Optimize scanned documents ປັບແຕ່ງເອກະສານທີ່ສະແກນໃຫ້ເໝາະສົມ + Archive documents ເກັບເອກະສານເຂົ້າຄັງ + Prepare for accessibility ກະກຽມສຳລັບການເຂົ້າເຖິງ + Accessibility ການເຂົ້າເຖິງ + Automatically tag PDF ຕິດແທັກ PDF ໂດຍອັດຕະໂນມັດ + Change reading options ປ່ຽນຕົວເລືອກການອ່ານ + Check for accessibility ກວດສອບຄວາມສະດວກໃນການເຂົ້າເຖິງ + Add alternate text ເພີ່ມຂໍ້ຄວາມອະທິບາຍແທນ + Fix reading order ແກ້ໄຂລຳດັບການອ່ານ + Apply PDF standards ນຳໃຊ້ມາດຕະຖານ PDF + Standards ມາດຕະຖານ + Save as PDF/A ບັນທຶກເປັນ PDF/A + Save as PDF/X ບັນທຶກເປັນ PDF/X + Save as PDF/UA ບັນທຶກເປັນ PDF/UA + Add search index ເພີ່ມດັດຊະນີການຄົ້ນຫາ + Index ດັດຊະນີ + Manage embedded index ຈັດການດັດຊະນີທີ່ຝັງໄວ້ + Use JavaScript ໃຊ້ JavaScript + JavaScript JavaScript + Console ຄອນໂຊລ + Document JavaScripts JavaScript ຂອງເອກະສານ + Document actions ການກະທຳຂອງເອກະສານ + AI assistant ຜູ້ຊ່ວຍ AI + Bring your own model (off by default) ໃຊ້ໂມເດວຂອງທ່ານເອງ (ປິດໄວ້ເປັນຄ່າເລີ່ມຕົ້ນ) + Summarize ສະຫຼຸບ + Ask about this document ຖາມກ່ຽວກັບເອກະສານນີ້ + Translate ແປພາສາ + pages ໜ້າ + Planned ວາງແຜນໄວ້ + Planned for milestone ວາງແຜນໄວ້ສຳລັບໄມລ໌ສະໂຕນ + open to see what it will include ເປີດເພື່ອເບິ່ງສິ່ງທີ່ຈະຮວມຢູ່ໃນນັ້ນ + Optional: needs an AI provider you configure ທາງເລືອກເພີ່ມເຕີມ: ຕ້ອງການຜູ້ໃຫ້ບໍລິການ AI ທີ່ທ່ານກຳນົດຄ່າ + Coming in milestone ຈະມາໃນໄມລ໌ສະໂຕນ + Items marked Ready work today. ລາຍການທີ່ໝາຍວ່າ ພ້ອມແລ້ວ ສາມາດໃຊ້ງານໄດ້ໃນຕອນນີ້. + Preview ສະແດງຕົວຢ່າງ + Edit fields ແກ້ໄຂຊ່ອງຂໍ້ມູນ + Try the form as people filling it in will see it ທົດລອງໃຊ້ຟອມໃນມຸມມອງທີ່ຜູ້ປ້ອນຂໍ້ມູນຈະເຫັນ + Redact all ປິດບັງຂໍ້ມູນທັງໝົດ + Clear all ລຶບລ້າງທັງໝົດ + Rotate page ໝູນໜ້າ + Delete page ລຶບໜ້າ + Move page ຍ້າຍໜ້າ + Move pages ຍ້າຍໜ້າ + Duplicate page ສຳເນົາໜ້າຊ້ຳ + Replace page ປ່ຽນແທນໜ້າ + Replace pages ປ່ຽນແທນໜ້າ + Crop page ຕັດຂອບໜ້າ + Cancel ຍົກເລີກ + Don't save ບໍ່ບັນທຶກ + Apply ນຳໃຊ້ + Run ເອີ້ນໃຊ້ + Clear ລຶບລ້າງ + Sanitize ລຶບລ້າງຂໍ້ມູນລັບ + Mark all ໝາຍທັງໝົດ + Save changes to “{name}” before closing? ບັນທຶກການປ່ຽນແປງໃນ “{name}” ກ່ອນທີ່ຈະປິດບໍ່? + Your changes will be lost if you don't save them. ການປ່ຽນແປງຂອງທ່ານຈະສູນຫາຍ ຖ້າທ່ານບໍ່ບັນທຶກ. + Password required ຕ້ອງການລະຫັດຜ່ານ + “{name}” is protected. Enter a password to open it. “{name}” ຖືກປ້ອງກັນໄວ້. ປ້ອນລະຫັດຜ່ານເພື່ອເປີດ. + Password ລະຫັດຜ່ານ + Incorrect password. Try again. ລະຫັດຜ່ານບໍ່ຖືກຕ້ອງ. ກະລຸນາລອງໃໝ່ອີກຄັ້ງ. + Recognize Text ຮູ້ຈຳຂໍ້ຄວາມ + Password protection will be applied when you save ການປ້ອງກັນດ້ວຍລະຫັດຜ່ານຈະຖືກນຳໃຊ້ເມື່ອທ່ານບັນທຶກ + Saved the print-ready PDF to {path} ບັນທຶກໄຟລ໌ PDF ສຳລັບພິມໄປທີ່ {path} ແລ້ວ + Could not save: {e} ບໍ່ສາມາດບັນທຶກໄດ້: {e} + Earlier in tab order ລຳດັບແທັບກ່ອນໜ້າ + Later in tab order ລຳດັບແທັບຖັດໄປ + From: ຈາກ: + To: ຫາ: + High Resolution ຄວາມລະອຽດສູງ + Print ພິມ + Verify to see what the document needs. ກວດສອບເບິ່ງວ່າເອກະສານຕ້ອງການສິ່ງໃດ. + Set Page Boxes ຕັ້ງຄ່າກ່ອງໜ້າ + Signature panel ແຜງລາຍເຊັນ + {month} {day}, {y} {day} {month} {y} + The document's security settings don't allow filling in form fields ການຕັ້ງຄ່າຄວາມປອດໄພຂອງເອກະສານບໍ່ອະນຸຍາດໃຫ້ຕື່ມຂໍ້ມູນໃສ່ຊ່ອງຟອມ + {name} is read-only {name} ແມ່ນອ່ານໄດ້ຢ່າງດຽວ + {name} has no action {name} ບໍ່ມີການກະທຳໃດໆ + Previous month ເດືອນກ່ອນໜ້າ + Next month ເດືອນຖັດໄປ + January ມັງກອນ + February ກຸມພາ + March ມີນາ + April ເມສາ + May ພຶດສະພາ + June ມິຖຸນາ + July ກໍລະກົດ + August ສິງຫາ + September ກັນຍາ + October ຕຸລາ + November ພະຈິກ + December ທັນວາ + Done ສຳເລັດ + This certificate is in your list of trusted certificates. ໃບຢັ້ງຢືນນີ້ຢູ່ໃນລາຍຊື່ໃບຢັ້ງຢືນທີ່ເຊື່ອຖືຂອງທ່ານ. + This certificate is trusted through a certificate above it in the chain. ໃບຢັ້ງຢືນນີ້ໄດ້ຮັບຄວາມເຊື່ອຖືຜ່ານໃບຢັ້ງຢືນທີ່ຢູ່ສູງກວ່າໃນຕ່ອງໂສ້ໃບຢັ້ງຢືນ. + This certificate is not trusted. Signatures made with it show an unknown identity. ໃບຢັ້ງຢືນນີ້ບໍ່ໄດ້ຮັບຄວາມເຊື່ອຖື. ລາຍເຊັນທີ່ສ້າງຂຶ້ນດ້ວຍໃບຢັ້ງຢືນນີ້ຈະສະແດງຕົວຕົນທີ່ບໍ່ຮູ້ຈັກ. + Add to Trusted Certificates ເພີ່ມເຂົ້າໃນໃບຢັ້ງຢືນທີ່ເຊື່ອຖື + Export… ສົ່ງອອກ… + PDF Optimizer ຕົວປັບແຕ່ງ PDF ໃຫ້ເໝາະສົມ + Discard Objects ຕັດວັດຖຸອອກ + Discard User Data ຕັດຂໍ້ມູນຜູ້ໃຊ້ອອກ + Clean Up ອະນາໄມ + Color Images ຮູບພາບສີ + Grayscale Images ຮູບພາບລະດັບສີເທົາ + Bicubic downsampling to ຫຼຸດຄວາມລະອຽດແບບ Bicubic ລົງເປັນ: + for images above ສຳລັບຮູບພາບທີ່ເກີນ: + Compression ການບີບອັດ + ZIP ZIP + Retain existing ຮັກສາຄ່າທີ່ມີຢູ່ + Minimum ຕ່ຳສຸດ + Low ຕ່ຳ + High ສູງ + Maximum ສູງສຸດ + Each image is measured where pages draw it; an image is replaced only if the result is smaller. ແຕ່ລະຮູບພາບຈະຖືກວັດແທກບ່ອນທີ່ໜ້າສະແດງຜົນ; ຮູບພາບຈະຖືກປ່ຽນແທນກໍຕໍ່ເມື່ອຜົນໄດ້ຮັບມີຂະໜາດນ້ອຍລົງ. + Discard all links, actions and JavaScript ຕັດລິ້ງຄ໌, ການກະທຳ ແລະ JavaScript ທັງໝົດອອກ + Discard alternate images ຕັດຮູບພາບສຳຮອງອອກ + Discard embedded page thumbnails ຕັດຮູບຫຍໍ້ຂອງໜ້າທີ່ຝັງໄວ້ອອກ + Discard document tags ຕັດແທັກເອກະສານອອກ + Discard embedded print settings ຕັດການຕັ້ງຄ່າການພິມທີ່ຝັງໄວ້ອອກ + Discard bookmarks ຕັດບຸກມາກອອກ + Discard hidden layer content ຕັດເນື້ອຫາເລເຍີທີ່ເຊື່ອງໄວ້ອອກ + Discard all comments, forms and multimedia ຕັດຄຳເຫັນ, ຟອມ ແລະ ມັລຕິມີເດຍທັງໝົດອອກ + Discard document information and metadata ຕັດຂໍ້ມູນເອກະສານ ແລະ ເມຕາເດຕາອອກ + Discard all object data (file attachments) ຕັດຂໍ້ມູນວັດຖຸທັງໝົດ (ໄຟລ໌ແນບ) ອອກ + Discard private data of other applications ຕັດຂໍ້ມູນສ່ວນຕົວຂອງແອັບພລິເຄຊັນອື່ນອອກ + Discard hidden text ຕັດຂໍ້ຄວາມທີ່ເຊື່ອງໄວ້ອອກ + Use Flate to encode streams that are not encoded ໃຊ້ Flate ເພື່ອເຂົ້າລະຫັດສະຕຣີມທີ່ຍັງບໍ່ໄດ້ເຂົ້າລະຫັດ + Remove invalid links and bookmarks ລຶບລິ້ງຄ໌ ແລະ ບຸກມາກທີ່ໃຊ້ການບໍ່ໄດ້ + Remove unreferenced named destinations ລຶບຈຸດໝາຍປາຍທາງທີ່ມີຊື່ເຊິ່ງບໍ່ມີການອ້າງອີງ + Compress document structure (object streams) ບີບອັດໂຄງສ້າງເອກະສານ (ສະຕຣີມວັດຖຸ) + Remove unused objects and merge identical ones ລຶບວັດຖຸທີ່ບໍ່ໄດ້ໃຊ້ ແລະ ຮວມວັດຖຸທີ່ຄືກັນເຂົ້າກັນ + Audit space usage… ກວດສອບການໃຊ້ພື້ນທີ່… + Space Audit ການກວດສອບພື້ນທີ່ + What takes up the space in this file, by kind of content. ສິ່ງທີ່ກິນພື້ນທີ່ໃນໄຟລ໌ນີ້, ໂດຍແບ່ງຕາມປະເພດເນື້ອຫາ. + Bytes ໄບຕ໌ + Content Streams ສະຕຣີມເນື້ອຫາ + X Object Forms ຟອມ XObject + Structure Info ຂໍ້ມູນໂຄງສ້າງ + Thumbnails ຮູບຫຍໍ້ + Named Destinations ຈຸດໝາຍປາຍທາງທີ່ມີຊື່ + Color Spaces ພື້ນທີ່ສີ + Shadings ການໄລ່ລະດັບສີ + Patterns (graphics objects) ລວດລາຍ (ວັດຖຸກຣາຟິກ) + Extended Graphics States ສະຖານະກຣາຟິກຂັ້ນສູງ + Embedded Files ໄຟລ໌ທີ່ຝັງໄວ້ + Document Overhead ສ່ວນຈັດການເອກະສານ + Total ລວມທັງໝົດ + Text Field Properties ຄຸນສົມບັດຂອງຊ່ອງຂໍ້ຄວາມ + Check Box Properties ຄຸນສົມບັດຂອງກ່ອງໝາຍ + Radio Button Properties ຄຸນສົມບັດຂອງປຸ່ມຕົວເລືອກ + Dropdown Properties ຄຸນສົມບັດຂອງລາຍການເລື່ອນລົງ + List Box Properties ຄຸນສົມບັດຂອງກ່ອງລາຍການ + Button Properties ຄຸນສົມບັດຂອງປຸ່ມ + Digital Signature Properties ຄຸນສົມບັດຂອງລາຍເຊັນດິຈິຕອນ + Position ຕຳແໜ່ງ + Options ຕົວເລືອກ + Validate ກວດສອບຄວາມຖືກຕ້ອງ + Calculate ຄຳນວນ + Actions ການກະທຳ + This field is locked. Unlock it to change its properties. ຊ່ອງຂໍ້ມູນນີ້ຖືກລັອກຢູ່. ປົດລັອກເພື່ອປ່ຽນຄຸນສົມບັດຂອງມັນ. + Tooltip: ຄຳແນະນຳເຄື່ອງມື: + Common Properties ຄຸນສົມບັດທົ່ວໄປ + Read Only ອ່ານໄດ້ຢ່າງດຽວ + Required ຈຳເປັນຕ້ອງໃສ່ + Font Size: ຂະໜາດຕົວອັກສອນ: + Auto ອັດຕະໂນມັດ + Text Color: ສີຕົວອັກສອນ: + Borders and Colors ເສັ້ນຂອບ ແລະ ສີ + Border Color: ສີເສັ້ນຂອບ: + Fill Color: ສີພື້ນເຕີມ: + No color ບໍ່ມີສີ + Beveled ຂອບນູນ + Left: ຊ້າຍ: + Bottom: ລຸ່ມ: + Width: ລວງກວ້າງ: + Height: ລວງສູງ: + Rotation: ການໝູນ: + Points from the page's bottom-left corner. ພ້ອຍຕ໌ຈາກມຸມຊ້າຍລຸ່ມຂອງໜ້າ. + Alignment: ການຈັດວາງ: + Default Value: ຄ່າເລີ່ມຕົ້ນ: + Multi-line ຫຼາຍແຖວ + Scroll long text ເລື່ອນຂໍ້ຄວາມຍາວ + Allow Rich Text Formatting ອະນຸຍາດການຈັດຮູບແບບຂໍ້ຄວາມແບບ Rich Text + Limit of ຈຳກັດບໍ່ເກີນ + characters ຕົວອັກສອນ + Field is used for file selection ຊ່ອງຂໍ້ມູນນີ້ໃຊ້ສຳລັບການເລືອກໄຟລ໌ + Check spelling ກວດສອບຕົວສະກົດ + Comb of ແບ່ງເປັນຊ່ອງຈຳນວນ + Export Value: {on} ຄ່າສົ່ງອອກ: {on} + Check box is checked by default ໝາຍເລືອກໃນກ່ອງໝາຍເປັນຄ່າເລີ່ມຕົ້ນ + Button is checked by default ເລືອກປຸ່ມເປັນຄ່າເລີ່ມຕົ້ນ + Buttons with the same name and value are selected in unison ປຸ່ມທີ່ມີຊື່ ແລະ ຄ່າຄືກັນຈະຖືກເລືອກພ້ອມກັນ + Item: ລາຍການ: + Item List ລາຍຊື່ລາຍການ + Up ຂຶ້ນ + Delete {o} ລຶບ {o} + Add the choices people pick from. ເພີ່ມຕົວເລືອກໃຫ້ຜູ້ໃຊ້ເລືອກ. + Default: ຄ່າເລີ່ມຕົ້ນ: + (none) (ບໍ່ມີ) + Sort items ຈັດຮຽງລາຍການ + Allow user to enter custom text ອະນຸຍາດໃຫ້ຜູ້ໃຊ້ປ້ອນຂໍ້ຄວາມເອງ + Multiple selection ເລືອກໄດ້ຫຼາຍລາຍການ + Commit selected value immediately ຢືນຢັນຄ່າທີ່ເລືອກໃນທັນທີ + Number ຕົວເລກ + Percentage ເປີເຊັນ + Time ເວລາ + Special ພິເສດ + Select format category: ເລືອກໝວດໝູ່ຮູບແບບ: + The value is shown as typed. ສະແດງຄ່າຕາມທີ່ພິມ. + Decimal places: ຕຳແໜ່ງທົດສະນິຍົມ: + Separator style: ຮູບແບບຕົວຂັ້ນ: + Currency symbol: ສັນຍະລັກສະກຸນເງິນ: + Before the number ຢູ່ທາງໜ້າຕົວເລກ + Negative number style: ຮູບແບບຕົວເລກລົບ: + Format: ຮູບແບບ: + Custom: ກຳນົດເອງ: + Zip Code ລະຫັດໄປສະນີ + Zip Code + 4 ລະຫັດໄປສະນີ + 4 + Phone Number ເບີໂທລະສັບ + Social Security Number ເລກປະກັນສັງຄົມ + Arbitrary Mask ມາກສ໌ແບບກຳນົດເອງ + Mask: ມາກສ໌: + 9 digit, A letter, O letter or digit, X any character 9: ຕົວເລກ, A: ຕົວອັກສອນ, O: ຕົວອັກສອນ ຫຼື ຕົວເລກ, X: ຕົວອັກສອນໃດກໍໄດ້ + Example: {sample} ຕົວຢ່າງ: {sample} + Field value is not validated ບໍ່ມີການກວດສອບຄ່າຂອງຊ່ອງຂໍ້ມູນ + Field value is in range: ຄ່າຂອງຊ່ອງຂໍ້ມູນຢູ່ໃນຊ່ວງ: + Add an Action ເພີ່ມການກະທຳ + Select Trigger: ເລືອກຕົວກະຕຸ້ນ: + Mouse Up ປ່ອຍປຸ່ມເມົາສ໌ + Mouse Down ກົດປຸ່ມເມົາສ໌ + Mouse Enter ເມົາສ໌ເລື່ອນເຂົ້າ + Mouse Exit ເມົາສ໌ເລື່ອນອອກ + On Focus ເມື່ອໄດ້ຮັບໂຟກັສ + On Blur ເມື່ອສູນເສຍໂຟກັສ + Select Action: ເລືອກການກະທຳ: + Open a web link ເປີດລິ້ງຄ໌ເວັບ + Reset a form ຕັ້ງຄ່າຟອມໃໝ່ + Execute a menu item ປະຕິບັດຕາມລາຍການເມນູ + Show a field ສະແດງຊ່ອງຂໍ້ມູນ + Hide a field ເຊື່ອງຊ່ອງຂໍ້ມູນ + Submit a form ສົ່ງຟອມ + Fields to reset (comma-separated; empty: all) ຊ່ອງຂໍ້ມູນທີ່ຈະຕັ້ງຄ່າໃໝ່ (ຂັ້ນດ້ວຍຈຸດ; ຖ້າຫວ່າງເປົ່າ: ທັງໝົດ) + Print, NextPage, PrevPage, FirstPage or LastPage Print, NextPage, PrevPage, FirstPage ຫຼື LastPage + Field names (comma-separated) ຊື່ຊ່ອງຂໍ້ມູນ (ຂັ້ນດ້ວຍຈຸດ) + URL to submit to URL ປາຍທາງທີ່ຈະສົ່ງຟອມ + Script: ສະຄຣິບ: + Value: ຄ່າ: + No actions ບໍ່ມີການກະທຳ + Value is not calculated ຄ່າບໍ່ໄດ້ຖືກຄຳນວນ + Value is the ຄ່າແມ່ນ + sum (+) ຜົນບວກ (+) + product (x) ຜົນຄູນ (×) + average ຄ່າສະເລ່ຍ + minimum ຄ່າຕ່ຳສຸດ + maximum ຄ່າສູງສຸດ + of the following fields: ຂອງຊ່ອງຂໍ້ມູນຕໍ່ໄປນີ້: + Simplified field notation: ສັນຍະລັກຊ່ອງຂໍ້ມູນແບບຫຍໍ້: + Field names with + - * / and parentheses; put \\ before spaces in names. ຊື່ຊ່ອງຂໍ້ມູນພ້ອມກັບເຄື່ອງໝາຍ + - * / ແລະ ວົງເລັບ; ໃສ່ \\ ໄວ້ທາງໜ້າຊ່ອງຫວ່າງໃນຊື່. + +# Document font selection + Finding document fonts… ກຳລັງຊອກຫາຟອນຕ໌ເອກະສານ… + Installed fonts… ຟອນຕ໌ທີ່ຕິດຕັ້ງແລ້ວ… + Keep source fonts ຮັກສາຟອນຕ໌ຕົ້ນສະບັບ + Load font… ໂຫຼດຟອນຕ໌… + No openly licensed document fonts found. Load a font file. ບໍ່ພົບຟອນຕ໌ເອກະສານທີ່ມີໃບອະນຸຍາດເປີດ. ກະລຸນາໂຫຼດໄຟລ໌ຟອນຕ໌. + + Format text ຈັດຮູບແບບຂໍ້ຄວາມ + Bold ຕົວໜາ + Italic ຕົວອຽງ + Align left ຈັດຊິດຊ້າຍ + Centre ຈັດເຄິ່ງກາງ + Align right ຈັດຊິດຂວາ + Justify ຈັດພຽງຊ້າຍຂວາ + Thai and Arabic use regular fallback fonts when available. ພາສາໄທ ແລະ ອາຣັບ ຈະໃຊ້ຟອນຕ໌ສຳຮອງແບບປົກກະຕິເມື່ອມີໃຫ້ໃຊ້ງານ. + Edit image ແກ້ໄຂຮູບພາບ + Rotate counterclockwise ໝູນທວນເຂັມໂມງ + Rotate clockwise ໝູນຕາມເຂັມໂມງ + Flip horizontal ປີ້ນຕາມລວງນອນ + Flip vertical ປີ້ນຕາມລວງຕັ້ງ + Replace image ປ່ຽນແທນຮູບພາບ + Crop (% trimmed from each side) ຕັດຂອບ (% ທີ່ຕັດອອກຈາກແຕ່ລະດ້ານ) + Click on the page to add text; each click starts a new box, and ✓ finishes. Drag items to move them, drag a corner to resize, double-click text to edit it. ຄລິກໃສ່ໜ້າເພື່ອເພີ່ມຂໍ້ຄວາມ; ແຕ່ລະຄັ້ງທີ່ຄລິກຈະສ້າງກ່ອງໃໝ່ ແລະ ✓ ເພື່ອສຳເລັດ. ລາກລາຍການເພື່ອຍ້າຍ, ລາກມຸມເພື່ອປັບຂະໜາດ, ດັບເບິລຄລິກໃສ່ຂໍ້ຄວາມເພື່ອແກ້ໄຂ. + Choose an image ເລືອກຮູບພາບ + Export to Image ສົ່ງອອກເປັນຮູບພາບ + Export to Text ສົ່ງອອກເປັນຂໍ້ຄວາມ + Export All Images ສົ່ງອອກຮູບພາບທັງໝົດ + Resolution ຄວາມລະອຽດ + Format ຮູບແບບ + Quality ຄຸນນະພາບ + One {f} file per page, named after the document. ໜຶ່ງໄຟລ໌ {f} ຕໍ່ໜ້າ, ຕັ້ງຊື່ຕາມເອກະສານ. + Exclude images smaller than ຍົກເວັ້ນຮູບພາບທີ່ມີຂະໜາດນ້ອຍກວ່າ + No limit ບໍ່ຈຳກັດ + Each image once, named after the document and page. JPEG images are saved unchanged; others as PNG. ແຕ່ລະຮູບພາບໜຶ່ງຄັ້ງ, ຕັ້ງຊື່ຕາມເອກະສານ ແລະ ໜ້າ. ຮູບພາບ JPEG ຈະຖືກບັນທຶກໂດຍບໍ່ປ່ຽນແປງ; ຮູບພາບອື່ນໆ ບັນທຶກເປັນ PNG. + Plain text in reading order; pages are separated by form feeds. ຂໍ້ຄວາມທຳມະດາຕາມລຳດັບການອ່ານ; ໜ້າຕ່າງໆ ຈະຖືກແຍກດ້ວຍຕົວອັກສອນຂຶ້ນໜ້າໃໝ່ (form feed). + Create {what} ສ້າງ {what} + initials ລາຍເຊັນຫຍໍ້ + signature ລາຍເຊັນ + Create Custom Stamp ສ້າງກາປະທັບແບບກຳນົດເອງ + From {file} ຈາກ {file} + Category: ໝວດໝູ່: + e.g. My stamps ເຊັ່ນ: ກາປະທັບຂອງຂ້ອຍ + Name: ຊື່: + Custom ກຳນົດເອງ + Delete stamp ລຶບກາປະທັບ + Create custom stamp… ສ້າງກາປະທັບແບບກຳນົດເອງ… + From a PDF page or an image ຈາກໜ້າ PDF ຫຼື ຮູບພາບ + Line spacing ໄລຍະຫ່າງແຖວ + Character spacing ໄລຍະຫ່າງຕົວອັກສອນ + Horizontal scale ມາດຕາສ່ວນລວງນອນ + Rotate Clockwise ໝູນຕາມເຂັມໂມງ + Rotate Counterclockwise ໝູນທວນເຂັມໂມງ + Flip Horizontal ປີ້ນຕາມລວງນອນ + Flip Vertical ປີ້ນຕາມລວງຕັ້ງ + Replace Image… ປ່ຽນແທນຮູບພາບ… + Save Image As… ບັນທຶກຮູບພາບເປັນ… + Copy Image ສຳເນົາຮູບພາບ + The image has been copied ({w} × {h} pixels) ສຳເນົາຮູບພາບແລ້ວ ({w} × {h} ພິກເຊວ) + Couldn't copy the image: {e} ບໍ່ສາມາດສຳເນົາຮູບພາບໄດ້: {e} + Copy Image in Original Format ສຳເນົາຮູບພາບໃນຮູບແບບຕົ້ນສະບັບ + The image has been copied as a {ext} file ສຳເນົາຮູບພາບເປັນໄຟລ໌ {ext} ແລ້ວ + The page has changed; select the image again ໜ້າປ່ຽນໄປແລ້ວ; ກະລຸນາເລືອກຮູບພາບອີກຄັ້ງ + Check for updates ກວດສອບການອັບເດດ + No check has run yet. ຍັງບໍ່ທັນມີການກວດສອບເທື່ອ. + Checking for a newer version… ກຳລັງກວດສອບເວີຊັນໃໝ່… + PdfCraft {v} is available. ມີ PdfCraft {v} ພ້ອມໃຫ້ໃຊ້ງານແລ້ວ. + You have version {c}. Download the new version from its release page. ທ່ານກຳລັງໃຊ້ເວີຊັນ {c}. ດາວໂຫຼດເວີຊັນໃໝ່ໄດ້ຈາກໜ້າ release. + PdfCraft {c} is up to date. PdfCraft {c} ເປັນເວີຊັນລ່າສຸດແລ້ວ. + Couldn't check for updates: {e} ບໍ່ສາມາດກວດສອບການອັບເດດໄດ້: {e} + You have version {c}. All releases are listed at {page}. ທ່ານກຳລັງໃຊ້ເວີຊັນ {c}. ລາຍການ release ທັງໝົດແມ່ນສະແດງຢູ່ທີ່ {page}. + Asks GitHub for the latest release. Nothing is downloaded or installed automatically. ກວດສອບລຸ້ນລ່າສຸດຈາກ GitHub. ຈະບໍ່ມີການດາວໂຫຼດ ຫຼື ຕິດຕັ້ງໂດຍອັດຕະໂນມັດ. + Download ດາວໂຫຼດ + Later ພາຍຫຼັງ + none ບໍ່ມີ + Declared conformance: {shown} ຄວາມສອດຄ່ອງຕາມທີ່ປະກາດ: {shown} + Output intent: {list} ເປົ້າໝາຍຜົນຜະລິດ: {list} + Conformance level: ລະດັບຄວາມສອດຄ່ອງ: + No problems found: the document conforms to {level}. ບໍ່ພົບບັນຫາ: ເອກະສານສອດຄ່ອງຕາມ {level}. + (page {p}) (ໜ້າ {p}) + · not fixable here · ບໍ່ສາມາດແກ້ໄຂຢູ່ນີ້ໄດ້ + Verify ກວດສອບຄວາມຖືກຕ້ອງ + Box ກ່ອງ + Units ຫົວໜ່ວຍ + Set to zero ຕັ້ງເປັນສູນ + Current page ({n}) ໜ້າປັດຈຸບັນ ({n}) + Subset ກຸ່ມຍ່ອຍ + Update ອັບເດດ + Add ເພີ່ມ + {verb} Header and Footer {verb} ຫົວເຈ້ຍ ແລະ ທ້າຍເຈ້ຍ + {verb} Watermark {verb} ລາຍນ້ຳ + {verb} Background {verb} ພື້ນຫຼັງ + Margins ໄລຍະຂອບ + Left Header Text ຂໍ້ຄວາມຫົວເຈ້ຍດ້ານຊ້າຍ + Center Header Text ຂໍ້ຄວາມຫົວເຈ້ຍກາງ + Right Header Text ຂໍ້ຄວາມຫົວເຈ້ຍດ້ານຂວາ + Left Footer Text ຂໍ້ຄວາມທ້າຍເຈ້ຍດ້ານຊ້າຍ + Center Footer Text ຂໍ້ຄວາມທ້າຍເຈ້ຍກາງ + Right Footer Text ຂໍ້ຄວາມທ້າຍເຈ້ຍດ້ານຂວາ + Insert Page Number ແຊກໝາຍເລກໜ້າ + Insert Date ແຊກວັນທີ + Start page number ໝາຍເລກໜ້າເລີ່ມຕົ້ນ + Source ຕົ້ນສະບັບ + Fit to page ພໍດີກັບໜ້າ + Rotation ການໝູນ + Appear behind page ສະແດງຢູ່ທາງຫຼັງໜ້າ + Appear on top of page ສະແດງຢູ່ເທິງສຸດຂອງໜ້າ + Offset from centre ໄລຍະຫ່າງຈາກຈຸດເຄິ່ງກາງ + From colour ຈາກສີ + Page Range Options ຕົວເລືອກໄລຍະໜ້າ + Preview: page {p} of {n} ຕົວຢ່າງ: ໜ້າ {p} ຈາກ {n} + Applies to 1 page ນຳໃຊ້ກັບ 1 ໜ້າ + Applies to {n} pages ນຳໃຊ້ກັບ {n} ໜ້າ + Replaces the existing one on those pages. ປ່ຽນແທນສິ່ງທີ່ມີຢູ່ແລ້ວໃນໜ້າເຫຼົ່ານັ້ນ. + PDF or image PDF ຫຼື ຮູບພາບ + No file chosen ຍັງບໍ່ໄດ້ເລືອກໄຟລ໌ + Page number ໝາຍເລກໜ້າ + Scale relative to target page ມາດຕາສ່ວນທຽບໃສ່ໜ້າເປົ້າໝາຍ + Link Properties ຄຸນສົມບັດຂອງລິ້ງຄ໌ + Create Link ສ້າງລິ້ງຄ໌ + Link Appearance ຮູບລັກສະນະຂອງລິ້ງຄ໌ + Link Type: ປະເພດລິ້ງຄ໌: + Visible Rectangle ຮູບສີ່ແຈສາກທີ່ເບິ່ງເຫັນໄດ້ + Invisible Rectangle ຮູບສີ່ແຈສາກທີ່ເບິ່ງບໍ່ເຫັນ + Highlight Style: ຮູບແບບການເນັ້ນ: + Invert ກັບສີ + Outline ເສັ້ນໂຄງຮ່າງ + Inset ແບບຍຸບລົງ + Line Thickness: ຄວາມໜາຂອງເສັ້ນ: + Thin ບາງ + Thick ໜາ + Line Style: ຮູບແບບເສັ້ນ: + Solid ເສັ້ນທຶບ + Dashed ເສັ້ນຂາດ + Color: ສີ: + Link Action ການກະທຳຂອງລິ້ງຄ໌ + Open a web page ເປີດໜ້າເວັບ + Go to a page view ໄປຍັງມຸມມອງໜ້າ + Type the web address. ພິມທີ່ຢູ່ເວັບ. + This document has no signatures. ເອກະສານນີ້ບໍ່ມີລາຍເຊັນ. + The Keychain's digital IDs couldn't be listed: {e} ບໍ່ສາມາດສະແດງລາຍຊື່ Digital ID ຂອງ Keychain ໄດ້: {e} + Signed and saved to {path} ເຊັນ ແລະ ບັນທຶກໄປທີ່ {path} ແລ້ວ + Couldn't open revision {n}: {e} ບໍ່ສາມາດເປີດສະບັບປັບປຸງ {n} ໄດ້: {e} + Couldn't open the signed version: {e} ບໍ່ສາມາດເປີດເວີຊັນທີ່ເຊັນແລ້ວໄດ້: {e} + Sign with a Digital ID ເຊັນດ້ວຍ Digital ID + Choose the digital ID that you want to use for signing: ເລືອກ Digital ID ທີ່ທ່ານຕ້ອງການໃຊ້ເຊັນ: + Keychain · Keychain · + Windows store · Windows 証明書ストア · + Issued by: ອອກໃຫ້ໂດຍ: + , Expires: , ໝົດອາຍຸ: + Digitally signed by ເຊັນແບບດິຈິຕອນໂດຍ + DN: DN: + Reason: ເຫດຜົນ: + Location: ສະຖານທີ່: + Date: ວັນທີ: + The labels are in English: the signature's font can't draw them in this language. ປ້າຍກຳກັບເປັນພາສາອັງກິດ: ຟອນຕ໌ຂອງລາຍເຊັນບໍ່ສາມາດສະແດງຜົນໃນພາສານີ້ໄດ້. + No digital IDs yet. ຍັງບໍ່ມີ Digital ID ເທື່ອ. + Configure New Digital ID ກຳນົດຄ່າ Digital ID ໃໝ່ + Remove "{name}" from this list? The file itself is not deleted. ລຶບ "{name}" ອອກຈາກລາຍການນີ້ບໍ່? ຕົວໄຟລ໌ຕົວຈິງຈະບໍ່ຖືກລຶບ. + Continue ສືບຕໍ່ + Configure a Digital ID for Signing ກຳນົດຄ່າ Digital ID ສຳລັບການເຊັນ + Use a Digital ID from a file ໃຊ້ Digital ID ຈາກໄຟລ໌ + Create a new Digital ID (self-signed, saved to a password-protected file) ສ້າງ Digital ID ໃໝ່ (ເຊັນດ້ວຍຕົນເອງ, ບັນທຶກລົງໄຟລ໌ທີ່ປ້ອງກັນດ້ວຍລະຫັດຜ່ານ) + Name ຊື່ + Organizational Unit ໜ່ວຍງານໃນອົງກອນ + Organization Name ຊື່ອົງກອນ + Email Address ທີ່ຢູ່ອີເມວ + Country/Region ປະເທດ/ພາກພື້ນ + Key Algorithm ອັລກໍຣິທຶມກະແຈ + Confirm Password ຢືນຢັນລະຫັດຜ່ານ + Valid for 5 years, for digital signatures. Self-signed IDs are usually not trusted by others. ໃຊ້ໄດ້ເປັນເວລາ 5 ປີ, ສຳລັບລາຍເຊັນດິຈິຕອນ. ID ທີ່ເຊັນດ້ວຍຕົນເອງມັກຈະບໍ່ໄດ້ຮັບຄວາມເຊື່ອຖືຈາກຜູ້ອື່ນ. + File (.p12, .pfx) ໄຟລ໌ (.p12, .pfx) + Digital ID Digital ID + Browse… ເລືອກເບິ່ງ… + {verb} as "{name}" {verb} ເປັນ "{name}" + Certify ຢັ້ງຢືນ + The signature will be invisible. ລາຍເຊັນຈະບໍ່ສະແດງໃຫ້ເຫັນ. + The existing action will be preserved. ການກະທຳທີ່ມີຢູ່ແລ້ວຈະຖືກຮັກສາໄວ້. + Distinguished name ຊື່ສະເພາະ (Distinguished Name) + Labels ປ້າຍຊື່ + Graphic ກຣາຟິກ + Signer's name ຊື່ຜູ້ເຊັນ + Fill & Sign signature ລາຍເຊັນຕື່ມຂໍ້ມູນ & ເຊັນ + Choose image… ເລືອກຮູບພາບ… + Permitted actions after certifying ການກະທຳທີ່ອະນຸຍາດຫຼັງຈາກການຢັ້ງຢືນ + No changes allowed ບໍ່ອະນຸຍາດໃຫ້ປ່ຽນແປງ + Annotations, form fill-in, and digital signatures ຄຳເຫັນ, ການຕື່ມຟອມ ແລະ ລາຍເຊັນດິຈິຕອນ + Form fill-in and digital signatures ການຕື່ມຟອມ ແລະ ລາຍເຊັນດິຈິຕອນ + The key is in the macOS Keychain, which may ask to allow PdfCraft to use it. ກະແຈຢູ່ໃນ macOS Keychain, ເຊິ່ງອາດຈະຖາມເພື່ອອະນຸຍາດໃຫ້ PdfCraft ໃຊ້ງານ. + The key is in the Windows certificate store, which may ask to allow PdfCraft to use it. ກະແຈຢູ່ໃນ Windows Certificate Store, ເຊິ່ງອາດຈະຖາມເພື່ອອະນຸຍາດໃຫ້ PdfCraft ໃຊ້ງານ. + Digital ID password ລະຫັດຜ່ານ Digital ID + Back ກັບຄືນ + Validate all ກວດສອບຄວາມຖືກຕ້ອງທັງໝົດ + Sign this field… ເຊັນຊ່ອງຂໍ້ມູນນີ້… + Signature is valid: ລາຍເຊັນຖືກຕ້ອງ: + Signature validity is UNKNOWN: ຄວາມຖືກຕ້ອງຂອງລາຍເຊັນ: ບໍ່ຮູ້ຈັກ: + Signature is INVALID: ລາຍເຊັນບໍ່ຖືກຕ້ອງ: + Signature Details ລາຍລະອຽດລາຍເຊັນ + Reason ເຫດຜົນ + Signing time ເວລາທີ່ເຊັນ + Algorithm ອັລກໍຣິທຶມ + Signer ຜູ້ເຊັນ + Issued by ອອກໃຫ້ໂດຍ + Valid ຖືກຕ້ອງ + Field ຊ່ອງຂໍ້ມູນ + Field: {field} on page {p} ຊ່ອງຂໍ້ມູນ: {field} ໃນໜ້າ {p} + Add to trusted certificates ເພີ່ມເຂົ້າໃນໃບຢັ້ງຢືນທີ່ເຊື່ອຖື + View signed version ເບິ່ງເວີຊັນທີ່ເຊັນແລ້ວ + Show certificate… ສະແດງໃບຢັ້ງຢືນ… + Export certificate… ສົ່ງອອກໃບຢັ້ງຢືນ… + Certificate Viewer ຕົວເບິ່ງໃບຢັ້ງຢືນ + This dialog shows the details of a certificate and its chain. ກ່ອງໂຕ້ຕອບນີ້ສະແດງລາຍລະອຽດຂອງໃບຢັ້ງຢືນ ແລະ ຕ່ອງໂສ້ໃບຢັ້ງຢືນ. + Trust ຄວາມເຊື່ອຖື + Issued to ອອກໃຫ້ແກ່ + Valid from ໃຊ້ໄດ້ຕັ້ງແຕ່ + Valid to ໃຊ້ໄດ້ເຖິງ + Intended usage ຈຸດປະສົງການນຳໃຊ້ + Any ໃດກໍໄດ້ + Version ເວີຊັນ + Serial number ໝາຍເລກຊີຣຽວ + Issuer ຜູ້ອອກໃຫ້ + Validity starts ເລີ່ມຕົ້ນໃຊ້ໄດ້ + Validity ends ໝົດອາຍຸການໃຊ້ງານ + Public key ກະແຈສາທາລະນະ + Key usage ການໃຊ້ງານກະແຈ + Not present ບໍ່ມີ + Self-signed ເຊັນດ້ວຍຕົນເອງ + Edit Action ແກ້ໄຂການກະທຳ + New Action ການກະທຳໃໝ່ + Action name: ຊື່ການກະທຳ: + Description: ຄຳອະທິບາຍ: + Steps ຂັ້ນຕອນ + Add the steps this action runs, in order. ເພີ່ມຂັ້ນຕອນທີ່ການກະທຳນີ້ຈະປະຕິບັດຕາມລຳດັບ. + Add Step ເພີ່ມຂັ້ນຕອນ + An action with this name already exists. ມີການກະທຳທີ່ໃຊ້ຊື່ນີ້ຢູ່ແລ້ວ. + New Action… ການກະທຳໃໝ່… + Edit… ແກ້ໄຂ… + Add watermark ເພີ່ມລາຍນ້ຳ + Add header ເພີ່ມຫົວເຈ້ຍ + Add footer ເພີ່ມທ້າຍເຈ້ຍ + Set document title ຕັ້ງຫົວຂໍ້ເອກະສານ + Run a JavaScript ເອີ້ນໃຊ້ JavaScript + Prepare for Distribution ກະກຽມສຳລັບການແຈກຢາຍ + Remove hidden information and flatten comments and form fields, so recipients see only the pages. ລຶບຂໍ້ມູນທີ່ເຊື່ອງໄວ້ ແລະ ຮວມຄຳເຫັນພ້ອມທັງຊ່ອງຟອມເຂົ້າກັບໜ້າ, ເພື່ອໃຫ້ຜູ້ຮັບເຫັນສະເພາະເນື້ອຫາໜ້າເຈ້ຍເທົ່ານັ້ນ. + Optimize Scanned Documents ປັບແຕ່ງເອກະສານທີ່ສະແກນໃຫ້ເໝາະສົມ + Make scans searchable, then make them smaller. ເຮັດໃຫ້ເອກະສານສະແກນສາມາດຄົ້ນຫາໄດ້, ຈາກນັ້ນຫຼຸດຂະໜາດໄຟລ໌ລົງ. + Add Page Numbers ເພີ່ມໝາຍເລກໜ້າ + Number every page in the footer. ໃສ່ໝາຍເລກໜ້າທຸກໜ້າໃນທ້າຍເຈ້ຍ. + Mark as Confidential ໝາຍວ່າເປັນຄວາມລັບ + A diagonal CONFIDENTIAL watermark on every page. ເພີ່ມລາຍນ້ຳ CONFIDENTIAL ແວງສະຫຼຽງໃນທຸກໆ ໜ້າ. + Sanitize Documents ລຶບລ້າງຂໍ້ມູນລັບໃນເອກະສານ + Remove hidden information, metadata, scripts and embedded content, and rewrite the files. ລຶບຂໍ້ມູນທີ່ເຊື່ອງໄວ້, ເມຕາເດຕາ, ສະຄຣິບ ແລະ ເນື້ອຫາທີ່ຝັງໄວ້, ແລ້ວຂຽນໄຟລ໌ໃໝ່. + Type text ພິມຂໍ້ຄວາມ + Text to insert ຂໍ້ຄວາມທີ່ຈະແຊກ + Replacement text ຂໍ້ຄວາມປ່ຽນແທນ + Edit text… ແກ້ໄຂຂໍ້ຄວາມ… + Add a sticky note here ເພີ່ມໂນ້ດຕິດຢູ່ນີ້ + {kind} Properties ຄຸນສົມບັດຂອງ {kind} + Appearance ຮູບລັກສະນະ + General ທົ່ວໄປ + Review History ປະຫວັດການກວດກາ + This comment's appearance can't be changed yet. ຍັງບໍ່ສາມາດປ່ຽນຮູບລັກສະນະຂອງຄຳເຫັນນີ້ໄດ້. + Icon ໄອຄອນ + Thickness ຄວາມໜາ + Modified ແກ້ໄຂເມື່ອ + No status has been set. ຍັງບໍ່ໄດ້ກຳນົດສະຖານະ. + Compare Files ປຽບທຽບໄຟລ໌ + Old file: ໄຟລ໌ເກົ່າ: + Open the older version first ເປີດເວີຊັນເກົ່າກ່ອນ + New file: ໄຟລ໌ໃໝ່: + Text is compared word by word; the differences are shown on the new file. ຂໍ້ຄວາມຈະຖືກປຽບທຽບແບບຄຳຕໍ່ຄຳ; ສ່ວນທີ່ແຕກຕ່າງຈະສະແດງໃນໄຟລ໌ໃໝ່. + Compare this file with an older version: Compare files… in All tools. ປຽບທຽບໄຟລ໌ນີ້ກັບເວີຊັນເກົ່າ: ເລືອກ ປຽບທຽບໄຟລ໌… ໃນ ເຄື່ອງມືທັງໝົດ. + No differences in the text. ບໍ່ມີຄວາມແຕກຕ່າງໃນຂໍ້ຄວາມ. + {n} {kind} {kind}: {n} + Inserted ແຊກເຂົ້າ + Deleted ລຶບອອກ + Replaced ປ່ຽນແທນ + Visual ຮູບລັກສະນະທີ່ເຫັນ + Mark as comments ໝາຍເປັນຄຳເຫັນ + Report… ລາຍງານ… + {kind} · page {p} {kind} · ໜ້າ {p} + Set Alternate Text ຕັ້ງຂໍ້ຄວາມອະທິບາຍແທນ + This document has no tagged figures. ເອກະສານນີ້ບໍ່ມີຮູບພາບທີ່ຕິດແທັກ. + on page {p} ໃນໜ້າ {p} + Figure {i} of {n}{page} ຮູບ {i} ຈາກ {n}{page} + No preview ບໍ່ມີຕົວຢ່າງສະແດງ + Alternate text ຂໍ້ຄວາມອະທິບາຍແທນ + Describe the figure ອະທິບາຍຮູບພາບ + Decorative figure ຮູບພາບຕົກແຕ່ງ + Previous figure ຮູບກ່ອນໜ້າ + Next figure ຮູບຖັດໄປ + Save & Close ບັນທຶກ ແລະ ປິດ + Accessibility Checker Options ຕົວເລືອກການກວດສອບການເຂົ້າເຖິງ + Report Options ຕົວເລືອກລາຍງານ + Create accessibility report ສ້າງລາຍງານການເຂົ້າເຖິງ + Page Range ຂອບເຂດໜ້າ + All pages in document ທຸກໜ້າໃນເອກະສານ + Checking Options ({on} of 32 in all categories) ຕົວເລືອກການກວດສອບ ({on} ຈາກທັງໝົດ 32 ລາຍການໃນທຸກໝວດ) + Show this dialog when the Checker starts ສະແດງກ່ອງຂໍ້ຄວາມນີ້ເມື່ອເລີ່ມການກວດສອບ + Select All ເລືອກທັງໝົດ + Clear All ລຶບລ້າງທັງໝົດ + Start Checking ເລີ່ມການກວດສອບ + This document hasn't been checked yet. ເອກະສານນີ້ຍັງບໍ່ທັນໄດ້ຮັບການກວດສອບເທື່ອ. + No issues found ບໍ່ພົບບັນຫາ + 1 issue 1 ບັນຫາ + {n} issues {n} ບັນຫາ + {label} (1 issue) {label} (1 ບັນຫາ) + {label} ({n} issues) {label} ({n} ບັນຫາ) + Check again ກວດສອບຄືນໃໝ່ + Report ລາຍງານ + Show the accessibility report ສະແດງລາຍງານການເຂົ້າເຖິງ + Collapse ຫຍໍ້ເຂົ້າ + Expand ຂະຫຍາຍອອກ + {rule} - {status} {rule} - {status} + Passed ຜ່ານ + Failed ບໍ່ຜ່ານ + Needs manual check ຕ້ອງມີການກວດສອບດ້ວຍຕົນເອງ + Skipped ຂ້າມແລ້ວ + Fix ແກ້ໄຂ + Skip Rule ຂ້າມກົດເກນ + Explain ອະທິບາຍ + Check Again ກວດສອບຄືນໃໝ່ + Show Report ສະແດງລາຍງານ + Options… ຕົວເລືອກ… + Go to the page ໄປຫາໜ້າ + Page Content ເນື້ອໃນໜ້າ + Forms ຟອມ + Alternate Text ຂໍ້ຄວາມທົດແທນ + Tables ຕາຕະລາງ + Lists ລາຍການ + Headings ຫົວຂໍ້ + Accessibility permission flag ເຄື່ອງໝາຍສິດທິການເຂົ້າເຖິງ + Accessibility permission flag is set ຕັ້ງຄ່າເຄື່ອງໝາຍສິດທິການເຂົ້າເຖິງແລ້ວ + Security settings must allow assistive technology to read the content ("Enable text access for screen reader devices"). Change the document's security to allow it. ການຕັ້ງຄ່າຄວາມປອດໄພຕ້ອງອະນຸຍາດໃຫ້ເຕັກໂນໂລຊີຊ່ວຍເຫຼືອອ່ານເນື້ອໃນໄດ້ ("ເປີດໃຊ້ການເຂົ້າເຖິງຂໍ້ຄວາມສຳລັບອຸປະກອນອ່ານໜ້າຈໍ"). ກະລຸນາປ່ຽນການຕັ້ງຄ່າຄວາມປອດໄພຂອງເອກະສານເພື່ອອະນຸຍາດ. + Image-only PDF PDF ທີ່ມີແຕ່ຮູບພາບ + Document is not image-only PDF ເອກະສານບໍ່ແມ່ນ PDF ທີ່ມີແຕ່ຮູບພາບ + Pages that are only pictures of text can't be read aloud or searched. Recognize text (OCR) to add a text layer. ໜ້າທີ່ມີພຽງຮູບພາບຂອງຂໍ້ຄວາມຈະບໍ່ສາມາດອ່ານອອກສຽງ ຫຼື ຄົ້ນຫາໄດ້. ກະລຸນາຮັບຮູ້ຂໍ້ຄວາມ (OCR) ເພື່ອເພີ່ມຊັ້ນຂໍ້ຄວາມ. + Document is tagged PDF ເອກະສານເປັນ PDF ທີ່ມີແທັກ + Tags give the document a logical structure that assistive technology follows. Tag the document (Automatically tag PDF). ແທັກຊ່ວຍກຳນົດໂຄງສ້າງຕາມເຫດຜົນທີ່ເຕັກໂນໂລຊີຊ່ວຍເຫຼືອໃຊ້ງານ. ໃສ່ແທັກໃຫ້ເອກະສານ (ໃສ່ແທັກ PDF ໂດຍອັດຕະໂນມັດ). + Logical Reading Order ລຳດັບການອ່ານຕາມເຫດຜົນ + Document structure provides a logical reading order ໂຄງສ້າງເອກະສານມີລຳດັບການອ່ານຕາມເຫດຜົນ + Check that the tags read in the order a sighted reader would. Use the Reading Order tool or the Tags panel to correct it. ກວດສອບວ່າແທັກຖືກອ່ານຕາມລຳດັບສາຍຕາຂອງຜູ້ອ່ານຫຼືບໍ່. ໃຊ້ເຄື່ອງມືລຳດັບການອ່ານ ຫຼື ແຜງແທັກເພື່ອແກ້ໄຂ. + Primary language ພາສາຫຼັກ + Text language is specified ລະບຸພາສາຂອງຂໍ້ຄວາມແລ້ວ + Screen readers choose their voice from the document's language. Set it in Document Properties > Advanced > Language. ໂປຣແກຣມອ່ານໜ້າຈໍຈະເລືອກສຽງຕາມພາສາຂອງເອກະສານ. ຕັ້ງຄ່າໄດ້ທີ່ ຄຸນສົມບັດເອກະສານ > ຂັ້ນສູງ > ພາສາ. + Document title is showing in title bar ຊື່ເອກະສານກຳລັງສະແດງຢູ່ແຖບຫົວຂໍ້ + The window should show a meaningful title rather than the file name. Set a title and Initial View > Show: Document Title. ປ່ອງຢ້ຽມຄວນສະແດງຊື່ຫົວຂໍ້ທີ່ມີຄວາມໝາຍແທນທີ່ຈະເປັນຊື່ໄຟລ໌. ຕັ້ງຊື່ຫົວຂໍ້ ແລະ ມຸມມອງເລີ່ມຕົ້ນ > ສະແດງ: ຊື່ເອກະສານ. + Bookmarks are present in large documents ມີບຸກມາກໃນເອກະສານຂະໜາດໃຫຍ່ + Documents of more than 20 pages need bookmarks for navigation. Add bookmarks for the main sections. ເອກະສານທີ່ມີຫຼາຍກວ່າ 20 ໜ້າຕ້ອງມີບຸກມາກເພື່ອນຳທາງ. ເພີ່ມບຸກມາກສຳລັບພາກສ່ວນຫຼັກ. + Color contrast ຄວາມຄົມຊັດຂອງສີ + Document has appropriate color contrast ເອກະສານມີຄວາມຄົມຊັດຂອງສີທີ່ເໝາະສົມ + Text must contrast enough with its background for people with low vision. Check the colours by eye or with a contrast tool. ຂໍ້ຄວາມຕ້ອງມີຄວາມຄົມຊັດພຽງພໍກັບພື້ນຫຼັງສຳລັບຜູ້ທີ່ມີບັນຫາທາງສາຍຕາ. ກວດສອບສີດ້ວຍສາຍຕາ ຫຼື ດ້ວຍເຄື່ອງມືວັດແທກຄວາມຄົມຊັດ. + Tagged content ເນື້ອໃນທີ່ມີແທັກ + All page content is tagged ເນື້ອໃນທັງໝົດຂອງໜ້າມີແທັກແລ້ວ + Everything on a page must be tagged or marked as an artifact (decoration, headers, footers). Tag the untagged content. ທຸກຢ່າງໃນໜ້າຕ້ອງຖືກໃສ່ແທັກ ຫຼື ໝາຍວ່າເປັນວັດຖຸປະກອບ (ການຕົກແຕ່ງ, ຫົວໜ້າ, ທ້າຍໜ້າ). ໃສ່ແທັກໃຫ້ເນື້ອໃນທີ່ຍັງບໍ່ທັນມີແທັກ. + Tagged annotations ຄຳອະທິບາຍປະກອບທີ່ມີແທັກ + All annotations are tagged ຄຳອະທິບາຍປະກອບທັງໝົດມີແທັກແລ້ວ + Comments, links and fields must be in the tag tree to be announced. Tag the annotations. ຄວາມເຫັນ, ລິ້ງ ແລະ ຊ່ອງຂໍ້ມູນຕ້ອງຢູ່ໃນໂຄງສ້າງຕົ້ນໄມ້ຂອງແທັກຈຶ່ງຈະຖືກອ່ານອອກສຽງໄດ້. ໃສ່ແທັກໃຫ້ຄຳອະທິບາຍປະກອບ. + Tab order ລຳດັບການແທັບ + Tab order is consistent with structure order ລຳດັບການແທັບສອດຄ່ອງກັບລຳດັບໂຄງສ້າງ + Pages with links, comments or fields should tab in structure order. The fix sets each page's tab order to Use Document Structure. ໜ້າທີ່ມີລິ້ງ, ຄວາມເຫັນ ຫຼື ຊ່ອງຂໍ້ມູນຄວນກົດແທັບຕາມລຳດັບໂຄງສ້າງ. ການແກ້ໄຂຈະຕັ້ງຄ່າລຳດັບການແທັບຂອງແຕ່ລະໜ້າເປັນ ໃຊ້ໂຄງສ້າງເອກະສານ. + Character encoding ການເຂົ້າລະຫັດຕົວອັກສອນ + Reliable character encoding is provided ມີການເຂົ້າລະຫັດຕົວອັກສອນທີ່ເຊື່ອຖືໄດ້ + Fonts must map their characters to Unicode so text can be read and copied. Fix the fonts or recreate the PDF. ຟອນຕ້ອງເຊື່ອມໂຍງຕົວອັກສອນກັບ Unicode ເພື່ອໃຫ້ສາມາດອ່ານ ແລະ ສຳເນົາຂໍ້ຄວາມໄດ້. ແກ້ໄຂຟອນ ຫຼື ສ້າງ PDF ຄືນໃໝ່. + Tagged multimedia ສື່ປະສົມທີ່ມີແທັກ + All multimedia objects are tagged ວັດຖຸສື່ປະສົມທັງໝົດມີແທັກແລ້ວ + Video, sound and rich media must be tagged to be announced. Tag the multimedia annotations. ວິດີໂອ, ສຽງ ແລະ ສື່ແບບພິເສດຕ້ອງຖືກໃສ່ແທັກຈຶ່ງຈະຖືກອ່ານອອກສຽງໄດ້. ໃສ່ແທັກໃຫ້ຄຳອະທິບາຍປະກອບສື່ປະສົມ. + Screen flicker ການກະພິບຂອງໜ້າຈໍ + Page will not cause screen flicker ໜ້າຈະບໍ່ເຮັດໃຫ້ເກີດການກະພິບຂອງໜ້າຈໍ + Animation that flashes can cause seizures. Check scripts and media for flicker. ພາບເຄື່ອນໄຫວທີ່ກະພິບອາດເຮັດໃຫ້ເກີດອາການຊັກໄດ້. ກວດສອບສະຄຣິບ ແລະ ສື່ເພື່ອບໍ່ໃຫ້ມີການກະພິບ. + Scripts ສະຄຣິບ + No inaccessible scripts ບໍ່ມີສະຄຣິບທີ່ເຂົ້າເຖິງບໍ່ໄດ້ + Timed responses ການຕອບສະໜອງຕາມກຳນົດເວລາ + Page does not require timed responses ໜ້າບໍ່ຕ້ອງການການຕອບສະໜອງຕາມກຳນົດເວລາ + People may need more time to respond. Check that nothing has a time limit. ຜູ້ໃຊ້ອາດຕ້ອງການເວລາເພີ່ມເຕີມໃນການຕອບສະໜອງ. ກວດສອບໃຫ້ແນ່ໃຈວ່າບໍ່ມີສິ່ງໃດກຳນົດເວລາ. + Navigation links ລິ້ງນຳທາງ + Navigation links are not repetitive ລິ້ງນຳທາງບໍ່ຊ້ຳຊ້ອນກັນ + Repeated navigation links should be skippable. Check links that appear on every page. ລິ້ງນຳທາງທີ່ຊ້ຳກັນຄວນສາມາດຂ້າມໄດ້. ກວດສອບລິ້ງທີ່ປະກົດຢູ່ທຸກໜ້າ. + Tagged form fields ຊ່ອງຟອມທີ່ມີແທັກ + All form fields are tagged ຊ່ອງຟອມທັງໝົດມີແທັກແລ້ວ + Form fields must be in the tag tree (Form tags) to be announced. Tag the form fields. ຊ່ອງຟອມຕ້ອງຢູ່ໃນໂຄງສ້າງຕົ້ນໄມ້ຂອງແທັກ (ແທັກຟອມ) ຈຶ່ງຈະຖືກອ່ານອອກສຽງໄດ້. ໃສ່ແທັກໃຫ້ຊ່ອງຟອມ. + Field descriptions ຄຳອະທິບາຍຊ່ອງຂໍ້ມູນ + All form fields have description ຊ່ອງຟອມທັງໝົດມີຄຳອະທິບາຍ + Each field needs a tooltip that says what to enter. Add one in Field Properties > General > Tooltip. ແຕ່ລະຊ່ອງຕ້ອງມີຄຳແນະນຳທີ່ບອກສິ່ງທີ່ຕ້ອງປ້ອນ. ເພີ່ມໄດ້ທີ່ ຄຸນສົມບັດຊ່ອງຂໍ້ມູນ > ທົ່ວໄປ > ຄຳແນະນຳ. + Figures alternate text ຂໍ້ຄວາມທົດແທນຂອງຮູບ + Figures require alternate text ຮູບຕ້ອງມີຂໍ້ຄວາມທົດແທນ + Pictures need alternate text that describes them, or must be marked decorative. Add alternate text to each figure. ຮູບພາບຕ້ອງມີຂໍ້ຄວາມທົດແທນທີ່ອະທິບາຍຮູບ ຫຼື ຕ້ອງໝາຍວ່າເປັນການຕົກແຕ່ງ. ເພີ່ມຂໍ້ຄວາມທົດແທນໃຫ້ແຕ່ລະຮູບ. + Nested alternate text ຂໍ້ຄວາມທົດແທນຊ້ອນກັນ + Alternate text that will never be read ຂໍ້ຄວາມທົດແທນທີ່ຈະບໍ່ຖືກອ່ານ + Alternate text inside an element that already has alternate text is never read. Remove the inner alternate text. ຂໍ້ຄວາມທົດແທນທີ່ຢູ່ພາຍໃນອົງປະກອບທີ່ມີຂໍ້ຄວາມທົດແທນຢູ່ແລ້ວຈະບໍ່ຖືກອ່ານ. ລຶບຂໍ້ຄວາມທົດແທນດ້ານໃນອອກ. + Associated with content ເຊື່ອມໂຍງກັບເນື້ອໃນ + Alternate text must be associated with some content ຂໍ້ຄວາມທົດແທນຕ້ອງເຊື່ອມໂຍງກັບເນື້ອໃນບາງຢ່າງ + Alternate text on an element without page content is never reached. Remove it or attach the element to content. ຂໍ້ຄວາມທົດແທນໃນອົງປະກອບທີ່ບໍ່ມີເນື້ອໃນໜ້າຈະບໍ່ສາມາດເຂົ້າເຖິງໄດ້. ລຶບອອກ ຫຼື ເຊື່ອມໂຍງອົງປະກອບນັ້ນເຂົ້າກັບເນື້ອໃນ. + Hides annotation ບັງຄຳອະທິບາຍປະກອບ + Alternate text should not hide annotation ຂໍ້ຄວາມທົດແທນບໍ່ຄວນບັງຄຳອະທິບາຍປະກອບ + Alternate text on an element that contains a link or field hides that annotation from assistive technology. Move the alternate text. ຂໍ້ຄວາມທົດແທນໃນອົງປະກອບທີ່ມີລິ້ງ ຫຼື ຊ່ອງຂໍ້ມູນຈະບັງຄຳອະທິບາຍປະກອບນັ້ນຈາກເຕັກໂນໂລຊີຊ່ວຍເຫຼືອ. ຍ້າຍຂໍ້ຄວາມທົດແທນອອກ. + Other elements alternate text ຂໍ້ຄວາມທົດແທນຂອງອົງປະກອບອື່ນ + Other elements that require alternate text ອົງປະກອບອື່ນທີ່ຕ້ອງການຂໍ້ຄວາມທົດແທນ + Formulas and similar non-text elements need alternate text. Add alternate text to them. ສູດຄິດໄລ່ ແລະ ອົງປະກອບທີ່ບໍ່ແມ່ນຂໍ້ຄວາມທີ່ຄ້າຍຄືກັນຕ້ອງມີຂໍ້ຄວາມທົດແທນ. ເພີ່ມຂໍ້ຄວາມທົດແທນໃຫ້ອົງປະກອບເຫຼົ່ານັ້ນ. + Rows ແຖວ + TR must be a child of Table, THead, TBody, or TFoot TR ຕ້ອງເປັນອົງປະກອບລູກຂອງ Table, THead, TBody ຫຼື TFoot + Table cells belong in a row. Fix the table's tags. ຕາລາງຂອງຕາຕະລາງຕ້ອງຢູ່ໃນແຖວ. ແກ້ໄຂແທັກຂອງຕາຕະລາງ. + Headers ຫົວຕາຕະລາງ + Tables should have headers ຕາຕະລາງຄວນມີຫົວຕາຕະລາງ + Header cells (TH) tell listeners what each column or row holds. Mark the header cells. ຫົວຕາລາງ (TH) ບອກຜູ້ຟັງວ່າແຕ່ລະຖັນ ຫຼື ແຖວບັນຈຸຫຍັງແດ່. ໝາຍຫົວຕາລາງໄວ້. + Regularity ຄວາມສະໝ່ຳສະເໝີ + Tables must contain the same number of columns in each row and rows in each column ຕາຕະລາງຕ້ອງມີຈຳນວນຖັນເທົ່າກັນໃນແຕ່ລະແຖວ ແລະ ຈຳນວນແຖວເທົ່າກັນໃນແຕ່ລະຖັນ + Irregular tables confuse cell navigation. Give every row the same number of cells (counting spans). ຕາຕະລາງທີ່ບໍ່ສະໝ່ຳສະເໝີຈະເຮັດໃຫ້ການນຳທາງລະຫວ່າງຕາລາງສັບສົນ. ກຳນົດໃຫ້ທຸກແຖວມີຈຳນວນຕາລາງເທົ່າກັນ (ລວມທັງການລວມຕາລາງ). + Summary ບົດສະຫຼຸບຫຍໍ້ + Tables must have a summary ຕາຕະລາງຕ້ອງມີບົດສະຫຼຸບຫຍໍ້ + A summary describes the table's purpose and layout. Add a Summary attribute to each table. ບົດສະຫຼຸບຫຍໍ້ອະທິບາຍເຖິງຈຸດປະສົງ ແລະ ໂຄງຮ່າງຂອງຕາຕະລາງ. ເພີ່ມຄຸນລັກສະນະ Summary ໃສ່ແຕ່ລະຕາຕະລາງ. + List items ລາຍການຍ່ອຍ + LI must be a child of L LI ຕ້ອງເປັນອົງປະກອບລູກຂອງ L + List items belong in a list. Fix the list's tags. ລາຍການຍ່ອຍຕ້ອງຢູ່ໃນລາຍການຫຼັກ. ແກ້ໄຂແທັກຂອງລາຍການ. + Lbl and LBody Lbl ແລະ LBody + Lbl and LBody must be children of LI Lbl ແລະ LBody ຕ້ອງເປັນອົງປະກອບລູກຂອງ LI + List labels and bodies belong in a list item. Fix the list's tags. ປ້າຍຊື່ ແລະ ເນື້ອໃນລາຍການຕ້ອງຢູ່ໃນລາຍການຍ່ອຍ. ແກ້ໄຂແທັກຂອງລາຍການ. + Appropriate nesting ການຊ້ອນກັນຢ່າງເໝາະສົມ + Heading levels shouldn't skip (an H1 followed by an H3). Retag the headings. ລະດັບຫົວຂໍ້ບໍ່ຄວນຂ້າມຂັ້ນ (ເຊັ່ນ H1 ແລ້ວໄປ H3). ໃສ່ແທັກຫົວຂໍ້ຄືນໃໝ່. + TH and TD TH ແລະ TD + TH and TD must be children of TR TH ແລະ TD ຕ້ອງເປັນອົງປະກອບລູກຂອງ TR + Mark Page Range ໝາຍຂອບເຂດໜ້າ + Pages from ໜ້າເລີ່ມຈາກ + Single word or phrase ຄຳດ່ຽວ ຫຼື ວະລີ + Text to find ຂໍ້ຄວາມທີ່ຕ້ອງການຊອກຫາ + Patterns ຮູບແບບ + Phone Numbers ເບີໂທລະສັບ + Email Addresses ທີ່ຢູ່ອີເມວ + Credit Cards ບັດເຄຣດິດ + Social Security Numbers ເລກປະກັນສັງຄົມ + Dates ວັນທີ + Text in images isn't found; recognise text (OCR) first. ບໍ່ພົບຂໍ້ຄວາມໃນຮູບພາບ; ກະລຸນາຮັບຮູ້ຂໍ້ຄວາມ (OCR) ກ່ອນ. + No matches. ບໍ່ພົບສິ່ງທີ່ກົງກັນ. + Some bookmarks are not shown here: the panel lists a limited number, nested a limited depth. ບາງບຸກມາກບໍ່ໄດ້ສະແດງຢູ່ນີ້: ແຜງສະແດງຈຳນວນຈຳກັດ ແລະ ຄວາມເລິກຊັ້ນຈຳກັດ. + {n} match(es) marked for redaction. ໝາຍ {n} ລາຍການທີ່ກົງກັນໄວ້ສຳລັບການປິດບັງຂໍ້ຄວາມ. + Multiple words or phrases ຫຼາຍຄຳ ຫຼື ຫຼາຍວະລີ + One word or phrase per line ໜຶ່ງຄຳ ຫຼື ໜຶ່ງວະລີຕໍ່ແຖວ + Import list… ນຳເຂົ້າລາຍການ… + {n} word(s) or phrase(s) {n} ຄຳ ຫຼື ວະລີ + {name} is too large for a word list (at most 1 MB). {name} ມີຂະໜາດໃຫຍ່ເກີນໄປສຳລັບລາຍການຄຳສັບ (ສູງສຸດບໍ່ເກີນ 1 MB). + Redaction Tool Properties ຄຸນສົມບັດເຄື່ອງມືປິດບັງຂໍ້ຄວາມ + Redacted area fill colour: ສີຕື່ມໃສ່ພື້ນທີ່ປິດບັງ: + Use overlay text ໃຊ້ຂໍ້ຄວາມຊ້ອນທັບ + Custom text: ຂໍ້ຄວາມກຳນົດເອງ: + Redaction code: ລະຫັດການປິດບັງ: + Font: ຟອນ: + Font size: ຂະໜາດຟອນ: + Font size ຂະໜາດຟອນ + Auto-size text to fit redaction region ປັບຂະໜາດຂໍ້ຄວາມອັດຕະໂນມັດໃຫ້ພໍດີກັບພື້ນທີ່ປິດບັງ + Font colour: ສີຟອນ: + Repeat overlay text ເຮັດຊ້ຳຂໍ້ຄວາມຊ້ອນທັບ + Text alignment: ການຈັດລຽງຂໍ້ຄວາມ: + Center ເຄິ່ງກາງ + Apply redactions ນຳໃຊ້ການປິດບັງ + You are about to apply 1 redaction mark. Text, images and drawings under the marks, and comments and form fields that overlap them, are removed permanently. ທ່ານກຳລັງຈະນຳໃຊ້ເຄື່ອງໝາຍປິດບັງ 1 ລາຍການ. ຂໍ້ຄວາມ, ຮູບພາບ ແລະ ຮູບແຕ້ມພາຍໃຕ້ເຄື່ອງໝາຍ, ລວມທັງຄວາມເຫັນ ແລະ ຊ່ອງຟອມທີ່ທັບຊ້ອນກັນ ຈະຖືກລຶບອອກຖາວອນ. + You are about to apply {n} redaction marks. Text, images and drawings under the marks, and comments and form fields that overlap them, are removed permanently. ທ່ານກຳລັງຈະນຳໃຊ້ເຄື່ອງໝາຍປິດບັງ {n} ລາຍການ. ຂໍ້ຄວາມ, ຮູບພາບ ແລະ ຮູບແຕ້ມພາຍໃຕ້ເຄື່ອງໝາຍ, ລວມທັງຄວາມເຫັນ ແລະ ຊ່ອງຟອມທີ່ທັບຊ້ອນກັນ ຈະຖືກລຶບອອກຖາວອນ. + Save the document afterwards: saving rewrites the whole file so no trace of the removed content stays in it. ບັນທຶກເອກະສານຫຼັງຈາກນັ້ນ: ການບັນທຶກຈະຂຽນໄຟລ໌ໃໝ່ທັງໝົດເພື່ອບໍ່ໃຫ້ເຫຼືອຮ່ອງຮອຍຂອງເນື້ອໃນທີ່ລຶບອອກ. + Select the items to remove from this document. ເລືອກລາຍການທີ່ຈະລຶບອອກຈາກເອກະສານນີ້. + Metadata ເມຕາເດຕາ + File attachments ໄຟລ໌ແນບ + Comments and markups ຄວາມເຫັນ ແລະ ເຄື່ອງໝາຍປະກອບ + Hidden text ຂໍ້ຄວາມທີ່ເຊື່ອງໄວ້ + Hidden layers ຊັ້ນທີ່ເຊື່ອງໄວ້ + Links, actions and JavaScripts ລິ້ງ, ການກະທຳ ແລະ JavaScript + Private data of other applications ຂໍ້ມູນສ່ວນຕົວຂອງແອັບພລິເຄຊັນອື່ນ + None found ບໍ່ພົບ + Form fields are flattened: their values stay visible. Saving rewrites the whole file. ຊ່ອງຟອມຖືກຮວບເຂົ້າກັນແລ້ວ: ຄ່າຕ່າງໆຍັງຄົງສະແດງໃຫ້ເຫັນ. ການບັນທຶກຈະຂຽນໄຟລ໌ໃໝ່ທັງໝົດ. + Remove ລຶບອອກ + Sanitizing removes hidden information from the document: metadata, file attachments, comments, form fields (flattened), hidden text and layers, bookmarks, links, actions and scripts, and private application data. ການລຶບລ້າງຂໍ້ມູນລັບຈະລຶບຂໍ້ມູນທີ່ເຊື່ອງໄວ້ອອກຈາກເອກະສານ: ເມຕາເດຕາ, ໄຟລ໌ແນບ, ຄວາມເຫັນ, ຊ່ອງຟອມ (ທີ່ຮວບແລ້ວ), ຂໍ້ຄວາມ ແລະ ຊັ້ນທີ່ເຊື່ອງໄວ້, ບຸກມາກ, ລິ້ງ, ການກະທຳ, ສະຄຣິບ ແລະ ຂໍ້ມູນສ່ວນຕົວຂອງແອັບພລິເຄຊັນ. + Save the document afterwards; saving rewrites the whole file so nothing removed stays in it. ບັນທຶກເອກະສານຫຼັງຈາກນັ້ນ; ການບັນທຶກຈະຂຽນໄຟລ໌ໃໝ່ທັງໝົດເພື່ອບໍ່ໃຫ້ສິ່ງທີ່ລຶບອອກຍັງເຫຼືອຢູ່. + Printer: ເຄື່ອງພິມ: + Save as PDF ບັນທຶກເປັນ PDF + {name} (default) {name} (ຄ່າເລີ່ມຕົ້ນ) + Copies: ຈຳນວນຊຸດ: + Collate ຈັດຮຽງຊຸດ + Print in grayscale ພິມເປັນລະດັບສີເທົາ + Two-sided: ພິມສອງໜ້າ: + Off ປິດ + Flip on long edge ພິກຕາມຂອບຍາວ + Flip on short edge ພິກຕາມຂອບສັ້ນ + Paper: ເຈ້ຍ: + Pages to Print ໜ້າທີ່ຈະພິມ + More options: ຕົວເລືອກເພີ່ມເຕີມ: + All pages in range ທຸກໜ້າໃນຂອບເຂດ + Odd pages only ສະເພາະໜ້າຄີ່ + Even pages only ສະເພາະໜ້າຄູ່ + Reverse pages ພິມໜ້າແບບຍ້ອນກັບ + Page Sizing & Handling ຂະໜາດໜ້າ ແລະ ການຈັດການ + Size ຂະໜາດ + Poster ໂປສເຕີ + Multiple ຫຼາຍໜ້າຕໍ່ແຜ່ນ + Booklet ປຶ້ມນ້ອຍ + Fit ພໍດີໜ້າ + Shrink oversized pages ຫຍໍ້ໜ້າທີ່ໃຫຍ່ເກີນໄປ + Custom scale: ມາດຕາສ່ວນກຳນົດເອງ: + Tile scale: ມາດຕາສ່ວນການຮຽງຕໍ່: + Overlap: ສ່ວນທັບຊ້ອນ: + Cut marks ເຄື່ອງໝາຍຕັດ + Pages per sheet: ຈຳນວນໜ້າຕໍ່ແຜ່ນ: + Page order: ລຳດັບໜ້າ: + Horizontal ແນວນອນ + Horizontal reversed ແນວນອນຍ້ອນກັບ + Vertical ແນວຕັ້ງ + Vertical reversed ແນວຕັ້ງຍ້ອນກັບ + Print page border ພິມເສັ້ນຂອບໜ້າ + Auto-rotate pages ໝູນໜ້າອັດຕະໂນມັດ + Booklet subset: ຊຸດຍ່ອຍປຶ້ມນ້ອຍ: + Both sides ທັງສອງໜ້າ + Front side only ສະເພາະດ້ານໜ້າ + Back side only ສະເພາະດ້ານຫຼັງ + Binding: ການຫຍິບຮູບເຫຼັ້ມ: + Left ຊ້າຍ + Right ຂວາ + Orientation: ທິດທາງ: + Auto portrait/landscape ແນວຕັ້ງ/ແນວນອນອັດຕະໂນມັດ + Portrait ແນວຕັ້ງ + Landscape ແນວນອນ + Comments & Forms ຄວາມເຫັນ ແລະ ຟອມ + Document ເອກະສານ + Document and markups ເອກະສານ ແລະ ເຄື່ອງໝາຍປະກອບ + Document and stamps ເອກະສານ ແລະ ຕາປະທັບ + Form fields only ສະເພາະຊ່ອງຟອມ + Previous sheet ແຜ່ນກ່ອນໜ້າ + Next sheet ແຜ່ນຖັດໄປ + No sheets ບໍ່ມີແຜ່ນເຈ້ຍ + Sheet {s} of {n} ແຜ່ນ {s} ຈາກ {n} + Removed 1 hidden item. Save to remove them from the file. ລຶບລາຍການທີ່ເຊື່ອງໄວ້ 1 ລາຍການແລ້ວ. ບັນທຶກເພື່ອລຶບອອກຈາກໄຟລ໌. + Removed {n} hidden items. Save to remove them from the file. ລຶບລາຍການທີ່ເຊື່ອງໄວ້ {n} ລາຍການແລ້ວ. ບັນທຶກເພື່ອລຶບອອກຈາກໄຟລ໌. + Document sanitized. Save to finish: saving rewrites the whole file. ລຶບລ້າງຂໍ້ມູນລັບໃນເອກະສານແລ້ວ. ບັນທຶກເພື່ອສຳເລັດ: ການບັນທຶກຈະຂຽນໄຟລ໌ໃໝ່ທັງໝົດ. + Applied 1 redaction mark. Save to remove the content from the file. ນຳໃຊ້ເຄື່ອງໝາຍປິດບັງ 1 ລາຍການແລ້ວ. ບັນທຶກເພື່ອລຶບເນື້ອໃນອອກຈາກໄຟລ໌. + Applied {n} redaction marks. Save to remove the content from the file. ນຳໃຊ້ເຄື່ອງໝາຍປິດບັງ {n} ລາຍການແລ້ວ. ບັນທຶກເພື່ອລຶບເນື້ອໃນອອກຈາກໄຟລ໌. + JavaScript Console ຄອນໂຊລ JavaScript + JavaScript is turned off (Preferences ▸ JavaScript). JavaScript ຖືກປິດຢູ່ (ການຕັ້ງຄ່າ ▸ JavaScript). + Output appears here. ຜົນອອກຈະສະແດງຢູ່ນີ້. + Script Name: ຊື່ສະຄຣິບ: + This document has no document-level scripts. ເອກະສານນີ້ບໍ່ມີສະຄຣິບລະດັບເອກະສານ. + No form fields were detected ບໍ່ພົບຊ່ອງຟອມ + Detected 1 form field ກວດພົບຊ່ອງຟອມ 1 ຊ່ອງ + Detected {n} form fields ກວດພົບຊ່ອງຟອມ {n} ຊ່ອງ + {field}: {e} {field}: {e} + Current page ໜ້າປະຈຸບັນ + Selected pages ໜ້າທີ່ເລືອກ + Document language ພາສາຂອງເອກະສານ + Output ຜົນອອກ + Searchable Image (Exact) ຮູບພາບທີ່ຄົ້ນຫາໄດ້ (ຮັກສາຮູບເດີມ) + Adds invisible text over each word; the page image is not changed ເພີ່ມຂໍ້ຄວາມທີ່ມອງບໍ່ເຫັນທັບແຕ່ລະຄຳ; ຮູບພາບໜ້າຈະບໍ່ປ່ຽນແປງ + Downsample to ຫຼຸດຄວາມລະອຽດລົງເປັນ + Also recognize pages that already have text ຮັບຮູ້ຂໍ້ຄວາມໃນໜ້າທີ່ມີຂໍ້ຄວາມຢູ່ແລ້ວນຳດ້ວຍ + Pictures on those pages are recognized too; words already in the page's text are not added again ຮູບພາບໃນໜ້າເຫຼົ່ານັ້ນຈະຖືກຮັບຮູ້ນຳດ້ວຍ; ຄຳທີ່ມີຢູ່ແລ້ວໃນຂໍ້ຄວາມຂອງໜ້າຈະບໍ່ຖືກເພີ່ມຄືນອີກ + Text recognition isn't installed: its model files are missing. Reinstall PdfCraft, or set PDFCRAFT_MODELS to the folder that holds them. ການຮັບຮູ້ຂໍ້ຄວາມຍັງບໍ່ໄດ້ຮັບການຕິດຕັ້ງ: ໄຟລ໌ໂມເດວສູນຫາຍ. ກະລຸນາຕິດຕັ້ງ PdfCraft ຄືນໃໝ່ ຫຼື ຕັ້ງຄ່າ PDFCRAFT_MODELS ໄປຫາໂຟນເດີທີ່ບັນຈຸໄຟລ໌ດັ່ງກ່າວ. + Settings ການຕັ້ງຄ່າ + Optional ເລືອກໄດ້ + Planned · {m} ວາງແຜນໄວ້ · {m} + Planned for milestone {m} — open to see what it will include ວາງແຜນໄວ້ສຳລັບເປົ້າໝາຍ {m} — ເປີດເບິ່ງສິ່ງທີ່ຈະມີໃຫ້ + Coming in milestone {m}. Items marked Ready work today. ຈະມາໃນເປົ້າໝາຍ {m}. ລາຍການທີ່ໝາຍວ່າ ພ້ອມແລ້ວ ແມ່ນສາມາດໃຊ້ໄດ້ໃນປະຈຸບັນ. + 1 mark 1 ເຄື່ອງໝາຍ + {n} marks {n} ເຄື່ອງໝາຍ + Dynamic ໄດນາມິກ + Sign Here ເຊັນຢູ່ນີ້ + Standard Business ທຸລະກິດມາດຕະຖານ + Choose a stamp, then click on the page to place it. ເລືອກຕາປະທັບ, ແລ້ວກົດໃສ່ໜ້າເພື່ອວາງ. + Note ບັນທຶກ + Polyline ເສັ້ນຫຼາຍທ່ອນ + Attachment ໄຟລ໌ແນບ + Callout ຄຳບັນຍາຍຊີ້ບອກ + Typewriter ເຄື່ອງພິມດີດ + Checked ໝາຍຖືກແລ້ວ + Unchecked ຍັງບໍ່ໝາຍ + Marked ໝາຍແລ້ວ + Locked ລັອກຢູ່ + Search comments ຄົ້ນຫາຄວາມເຫັນ + Add a comment ເພີ່ມຄວາມເຫັນ + No comments yet. ຍັງບໍ່ມີຄວາມເຫັນເທື່ອ. + Pick a tool in the quick bar, or type above. ເລືອກເຄື່ອງມືໃນແຖບດ່ວນ ຫຼື ພິມໃສ່ດ້ານເທິງ. + No comments match. ບໍ່ມີຄວາມເຫັນທີ່ກົງກັນ. + Unknown author ບໍ່ຮູ້ຊື່ຜູ້ຂຽນ + No colour ບໍ່ມີສີ + Remove checkmark ລຶບເຄື່ອງໝາຍຖືກອອກ + Mark with checkmark ໝາຍດ້ວຍເຄື່ອງໝາຍຖືກ + Reply ຕອບກັບ + Add a reply ເພີ່ມການຕອບກັບ + Post ໂພສ + Page {label} ໜ້າ {label} + {kind} — click to show it on the page {kind} — ກົດເພື່ອສະແດງໃນໜ້າ + Set status ກຳນົດສະຖານະ + Copy text ສຳເນົາຂໍ້ຄວາມ + Properties… ຄຸນສົມບັດ… + Make Current Properties Default ກຳນົດຄຸນສົມບັດປະຈຸບັນເປັນຄ່າເລີ່ມຕົ້ນ + Make Properties Default ກຳນົດຄຸນສົມບັດເປັນຄ່າເລີ່ມຕົ້ນ + More options ຕົວເລືອກເພີ່ມເຕີມ + Sort by ຈັດຮຽງຕາມ + Author ຜູ້ຂຽນ + Type ປະເພດ + Colour ສີ + Show all comments ສະແດງຄວາມເຫັນທັງໝົດ + Create PDF comment summary… ສ້າງບົດສະຫຼຸບຄວາມເຫັນ PDF… + Export all to data file… ສົ່ງອອກທັງໝົດໄປຍັງໄຟລ໌ຂໍ້ມູນ… + Filter comments ກັ່ນຕອງຄວາມເຫັນ + Status ສະຖານະ + Accepted ຍອມຮັບແລ້ວ + Rejected ປະຕິເສດແລ້ວ + Cancelled ຍົກເລີກແລ້ວ + Completed ສຳເລັດແລ້ວ + Show all ສະແດງທັງໝົດ + Yellow ເຫຼືອງ + Orange ສົ້ມ + Red ແດງ + Pink ບົວ + Purple ມ່ວງ + Blue ຟ້າ + Light blue ຟ້າອ່ອນ + Green ຂຽວ + Gray ເທົາ + Black ດຳ + Bookmark options ຕົວເລືອກບຸກມາກ + Expand all bookmarks ຂະຫຍາຍບຸກມາກທັງໝົດ + Expand top-level bookmarks ຂະຫຍາຍບຸກມາກລະດັບເທິງສຸດ + Collapse all bookmarks ຫຍໍ້ບຸກມາກທັງໝົດ + New bookmark ({key}) ບຸກມາກໃໝ່ ({key}) + This document has no bookmarks. ເອກະສານນີ້ບໍ່ມີບຸກມາກ. + This document has no layers. ເອກະສານນີ້ບໍ່ມີຊັ້ນຂໍ້ມູນ. + This document has no attachments. ເອກະສານນີ້ບໍ່ມີໄຟລ໌ແນບ. + Hide layer ເຊື່ອງຊັ້ນຂໍ້ມູນ + Show layer ສະແດງຊັ້ນຂໍ້ມູນ + Set layer visibility ກຳນົດການສະແດງຜົນຂອງຊັ້ນຂໍ້ມູນ + on page {label} ໃນໜ້າ {label} + Save attachment… ບັນທຶກໄຟລ໌ແນບ… + Open in a new tab ເປີດໃນແທັບໃໝ່ + This document has no pages. ເອກະສານນີ້ບໍ່ມີໜ້າ. + Find text ຊອກຫາຂໍ້ຄວາມ + No matches ບໍ່ພົບສິ່ງທີ່ກົງກັນ + Searching… {s}/{p} ກຳລັງຄົ້ນຫາ… {s}/{p} + {c} of {n}{more} {c} ຈາກ {n}{more} + Previous ({key}) ກ່ອນໜ້າ ({key}) + Next ({key}) ຖັດໄປ ({key}) + Find options ຕົວເລືອກການຄົ້ນຫາ + Whole words only ສະເພາະຄຳທີ່ກົງກັນທັງໝົດ + Case-sensitive ແຍກຕົວພິມໃຫຍ່-ນ້ອຍ + Close (Esc) ປິດ (Esc) + Align ຈັດລຽງ + Top ເທິງ + Bottom ລຸ່ມ + Center horizontally ເຄິ່ງກາງແນວນອນ + Center vertically ເຄິ່ງກາງແນວຕັ້ງ + Distribute ກະຈາຍໄລຍະຫ່າງ + Horizontally ຕາມແນວນອນ + Vertically ຕາມແນວຕັ້ງ + Set Fields to Same Size ກຳນົດຊ່ອງຂໍ້ມູນໃຫ້ມີຂະໜາດເທົ່າກັນ + Height ລວງສູງ + Width ລວງກວ້າງ + Both ທັງສອງ + Duplicate… ສຳເນົາຊ້ຳ… + All pages ທຸກໜ້າ + Odd pages ໜ້າຄີ່ + Even pages ໜ້າຄູ່ + Landscape pages ໜ້າແນວນອນ + Portrait pages ໜ້າແນວຕັ້ງ + Move earlier ຍ້າຍໄປກ່ອນ + Move later ຍ້າຍໄປຫຼັງ + Back to the document ກັບໄປທີ່ເອກະສານ + Protect Using Password ປົກປ້ອງດ້ວຍລະຫັດຜ່ານ + Requires user to enter a password for: ຮຽກຮ້ອງໃຫ້ຜູ້ໃຊ້ປ້ອນລະຫັດຜ່ານສຳລັບ: + Viewing ການເບິ່ງ + Editing ການແກ້ໄຂ + Type Password ປ້ອນລະຫັດຜ່ານ + Re-type Password ປ້ອນລະຫັດຜ່ານຄືນໃໝ່ + Strength: {s} ຄວາມປອດໄພ: {s} + Strong ແຂງແຮງ + Medium ປານກາງ + Weak ອ່ອນແອ + Advanced Options {chevron} ຕົວເລືອກຂັ້ນສູງ {chevron} + Compatibility ຄວາມເຂົ້າກັນໄດ້ + Acrobat X and later (256-bit AES) Acrobat X ແລະ ໃໝ່ກວ່າ (256-bit AES) + Acrobat 7.0 and later (128-bit AES) Acrobat 7.0 ແລະ ໃໝ່ກວ່າ (128-bit AES) + Acrobat 5.0 and later (128-bit RC4) Acrobat 5.0 ແລະ ໃໝ່ກວ່າ (128-bit RC4) + Acrobat 3.0 and later (40-bit RC4) Acrobat 3.0 ແລະ ໃໝ່ກວ່າ (40-bit RC4) + Encrypt ເຂົ້າລະຫັດ + All document contents ເນື້ອໃນເອກະສານທັງໝົດ + All document contents except metadata ເນື້ອໃນເອກະສານທັງໝົດຍົກເວັ້ນເມຕາເດຕາ + Printing allowed ອະນຸຍາດໃຫ້ພິມ + Low Resolution (150 dpi) ຄວາມລະອຽດຕ່ຳ (150 dpi) + Changes allowed ອະນຸຍາດໃຫ້ປ່ຽນແປງ + Inserting, deleting, and rotating pages ການແຊກ, ການລຶບ ແລະ ການໝູນໜ້າ + Filling in form fields and signing existing signature fields ການຕື່ມຂໍ້ມູນໃນຊ່ອງຟອມ ແລະ ເຊັນຊ່ອງລາຍເຊັນທີ່ມີຢູ່ + Commenting, filling in form fields, and signing existing signature fields ການອອກຄວາມເຫັນ, ຕື່ມຂໍ້ມູນໃນຊ່ອງຟອມ ແລະ ເຊັນຊ່ອງລາຍເຊັນທີ່ມີຢູ່ + Any except extracting pages ທຸກຢ່າງຍົກເວັ້ນການແຍກໜ້າອອກ + Enable copying of text, images, and other content ອະນຸຍາດໃຫ້ສຳເນົາຂໍ້ຄວາມ, ຮູບພາບ ແລະ ເນື້ອໃນອື່ນໆ + Enable text access for screen reader devices for the visually impaired ອະນຸຍາດໃຫ້ອຸປະກອນອ່ານໜ້າຈໍເຂົ້າເຖິງຂໍ້ຄວາມສຳລັບຜູ້ພິການທາງສາຍຕາ + Type a password. ກະລຸນາປ້ອນລະຫັດຜ່ານ. + The passwords don't match. ລະຫັດຜ່ານບໍ່ກົງກັນ. + This compatibility level supports only plain ASCII passwords. ລະດັບຄວາມເຂົ້າກັນໄດ້ນີ້ຮອງຮັບສະເພາະລະຫັດຜ່ານຕົວອັກສອນ ASCII ເທົ່ານັ້ນ. + Anyone opening the document will need this password. It's applied when you save. ທຸກຄົນທີ່ເປີດເອກະສານຈະຕ້ອງໃຊ້ລະຫັດຜ່ານນີ້. ມັນຈະຖືກນຳໃຊ້ເມື່ອທ່ານບັນທຶກ. + The document opens without a password; this password is needed to change the restrictions. It's applied when you save. ເອກະສານເປີດໄດ້ໂດຍບໍ່ຕ້ອງໃຊ້ລະຫັດຜ່ານ; ລະຫັດຜ່ານນີ້ຈຳເປັນສຳລັບການປ່ຽນແປງຂໍ້ຈຳກັດ. ມັນຈະຖືກນຳໃຊ້ເມື່ອທ່ານບັນທຶກ. + Recover unsaved documents? ກູ້ຄືນເອກະສານທີ່ຍັງບໍ່ໄດ້ບັນທຶກຫຼືບໍ່? + PdfCraft didn't shut down normally. These documents had changes that were autosaved: PdfCraft ບໍ່ໄດ້ປິດລົງຢ່າງປົກກະຕິ. ເອກະສານເຫຼົ່ານີ້ມີການປ່ຽນແປງທີ່ຖືກບັນທຶກອັດຕະໂນມັດໄວ້: + just now ຫວ່າງກີ້ນີ້ + {n} min ago {n} ນາທີກ່ອນ + {n} h ago {n} ຊົ່ວໂມງກ່ອນ + · password-protected · ປົກປ້ອງດ້ວຍລະຫັດຜ່ານ + Recover ກູ້ຄືນ + Discard ປະຖິ້ມ + Version {v} ເວີຊັນ {v} + A clean-room, open-source PDF application written in Rust. MIT OR Apache-2.0. ແອັບພລິເຄຊັນ PDF ໂອເພນຊອດແບບ clean-room ທີ່ຂຽນດ້ວຍ Rust. ພາຍໃຕ້ສັນຍາອະນຸຍາດ MIT ຫຼື Apache-2.0. + Part of ສ່ວນໜຶ່ງຂອງ + Summarize Options ຕົວເລືອກການສະຫຼຸບ + Choose a layout: ເລືອກໂຄງຮ່າງ: + Comments only ສະເພາະຄວາມເຫັນ + Sort comments by: ຈັດຮຽງຄວາມເຫັນຕາມ: + Create PDF Comment Summary ສ້າງບົດສະຫຼຸບຄວາມເຫັນ PDF + Revert to the previously saved version of “{name}”? Changes since then can't be undone afterwards. ກັບຄືນສູ່ເວີຊັນທີ່ບັນທຶກໄວ້ກ່ອນໜ້ານີ້ຂອງ “{name}” ຫຼື ບໍ່? ການປ່ຽນແປງຫຼັງຈາກນັ້ນຈະບໍ່ສາມາດຍົກເລີກໄດ້. + Save over the changed file? ບັນທຶກທັບໄຟລ໌ທີ່ມີການປ່ຽນແປງຫຼືບໍ່? + “{name}” changed on disk after it was opened or last saved. Saving now replaces that newer version with this one. “{name}” ມີການປ່ຽນແປງໃນດິສກ໌ຫຼັງຈາກເປີດ ຫຼື ບັນທຶກຫຼ້າສຸດ. ການບັນທຶກດຽວນີ້ຈະຂຽນທັບເວີຊັນໃໝ່ນັ້ນດ້ວຍເວີຊັນນີ້. + Save anyway ບັນທຶກຕໍ່ໄປ + Number pages ໃສ່ເລກໜ້າ + Style ຮູບແບບ + None (prefix only) ບໍ່ມີ (ສະເພາະຄຳນຳໜ້າ) + Prefix ຄຳນຳໜ້າ + Start ເລີ່ມຕົ້ນ + Labels: {preview}. Later pages keep their labels. ປ້າຍກຳກັບ: {preview}. ໜ້າຫຼັງຈາກນັ້ນຈະຮັກສາປ້າຍກຳກັບເດີມໄວ້. + Even and Odd Pages ໜ້າຄູ່ ແລະ ໜ້າຄີ່ + Even Pages Only ສະເພາະໜ້າຄູ່ + Odd Pages Only ສະເພາະໜ້າຄີ່ + Landscape and Portrait Pages ໜ້າແນວນອນ ແລະ ແນວຕັ້ງ + Landscape Pages ໜ້າແນວນອນ + Portrait Pages ໜ້າແນວຕັ້ງ + Duplicate Field ສຳເນົາຊ້ຳຊ່ອງຂໍ້ມູນ + Duplicate "{name}" onto: ສຳເນົາຊ້ຳ "{name}" ໃສ່: + 1 page selected. ເລືອກແລ້ວ 1 ໜ້າ. + {n} pages selected. ເລືອກແລ້ວ {n} ໜ້າ. + Delete pages after extracting ລຶບໜ້າອອກຫຼັງຈາກແຍກອອກແລ້ວ + Extract pages as separate files ແຍກໜ້າອອກເປັນແຕ່ລະໄຟລ໌ຕ່າງຫາກ + Rotate Pages ໝູນໜ້າ + Direction: ທິດທາງ: + Clockwise 90 degrees ຕາມເຂັມໂມງ 90 ອົງສາ + Counterclockwise 90 degrees ທວນເຂັມໂມງ 90 ອົງສາ + 180 degrees 180 ອົງສາ + Pages: ໜ້າ: + All ທັງໝົດ + Selection ສ່ວນທີ່ເລືອກ + From ຈາກ + Rotate: ໝູນ: + Repairs ການສ້ອມແປງ + Repair log ບັນທຶກການສ້ອມແປງ + Split document ແບ່ງເອກະສານ + Number of pages ຈຳນວນໜ້າ + Pages per file ຈຳນວນໜ້າຕໍ່ໄຟລ໌ + File size ຂະໜາດໄຟລ໌ + At most ສູງສຸດ + Top-level bookmarks ({n}) ບຸກມາກລະດັບເທິງສຸດ ({n}) + Before each selected page (select pages in Organize) ກ່ອນແຕ່ລະໜ້າທີ່ເລືອກ (ເລືອກໜ້າໃນສ່ວນຈັດລະບຽບ) + Creates 1 file from {n} pages. ສ້າງ 1 ໄຟລ໌ຈາກ {n} ໜ້າ. + Creates {f} files from {n} pages. ສ້າງ {f} ໄຟລ໌ຈາກ {n} ໜ້າ. + Each file holds as many of the {n} pages as fit. ແຕ່ລະໄຟລ໌ບັນຈຸໜ້າຈາກທັງໝົດ {n} ໜ້າໃຫ້ຫຼາຍເທົ່າທີ່ພໍດີ. + Replace Pages ປ່ຽນແທນໜ້າ + Original: replace pages ເອກະສານເດີມ: ໜ້າທີ່ຈະປ່ຽນແທນ + to ຫາ + to {n} ຫາ {n} + Replacement: pages of {name} ໄຟລ໌ປ່ຽນແທນ: ໜ້າຂອງ {name} + of {name} ຂອງ {name} + Only the page content changes: links, comments, form fields and bookmarks on the original pages stay. ປ່ຽນແປງສະເພາະເນື້ອໃນໜ້າ: ລິ້ງ, ຄວາມເຫັນ, ຊ່ອງຟອມ ແລະ ບຸກມາກໃນໜ້າຕົ້ນສະບັບຍັງຄົງຢູ່. + The replacement file doesn't have that many pages. ໄຟລ໌ທີ່ນຳມາປ່ຽນແທນບໍ່ມີຈຳນວນໜ້າຫຼາຍເທົ່ານັ້ນ. + Tagged PDF PDF ທີ່ມີແທັກ + Document Properties ຄຸນສົມບັດເອກະສານ + Description ຄຳອະທິບາຍ + Initial View ມຸມມອງເລີ່ມຕົ້ນ + Security ຄວາມປອດໄພ + Fonts ຟອນ + Advanced ຂັ້ນສູງ + Title ຊື່ຫົວຂໍ້ + Subject ເລື່ອງ + Keywords ຄຳຄົ້ນຫາ + Application ແອັບພລິເຄຊັນ + PDF producer ໂປຣແກຣມສ້າງ PDF + Layout and Magnification ໂຄງຮ່າງ ແລະ ມາດຕາສ່ວນຂະຫຍາຍ + Navigation tab ແທັບນຳທາງ + Page Only ສະເພາະໜ້າ + Bookmarks Panel and Page ແຜງບຸກມາກ ແລະ ໜ້າ + Pages Panel and Page ແຜງໜ້າ ແລະ ໜ້າ + Attachments Panel and Page ແຜງໄຟລ໌ແນບ ແລະ ໜ້າ + Layers Panel and Page ແຜງຊັ້ນຂໍ້ມູນ ແລະ ໜ້າ + Page layout ໂຄງຮ່າງໜ້າ + Default ຄ່າເລີ່ມຕົ້ນ + Single Page ໜ້າດຽວ + Single Page Continuous ໜ້າດຽວຕໍ່ເນື່ອງ + Two-Up (Facing) ສອງໜ້າຄູ່ກັນ + Two-Up Continuous (Facing) ສອງໜ້າຄູ່ກັນຕໍ່ເນື່ອງ + Two-Up (Cover Page) ສອງໜ້າຄູ່ກັນ (ມີໜ້າປົກ) + Two-Up Continuous (Cover Page) ສອງໜ້າຄູ່ກັນຕໍ່ເນື່ອງ (ມີໜ້າປົກ) + Magnification ມາດຕາສ່ວນຂະຫຍາຍ + Actual Size ຂະໜາດຈິງ + Fit Page ພໍດີໜ້າ + Fit Width ພໍດີລວງກວ້າງ + Fit Height ພໍດີລວງສູງ + Fit Visible ພໍດີພື້ນທີ່ເບິ່ງເຫັນ + Open to page ເປີດໄປທີ່ໜ້າ + of {pages} ຈາກ {pages} ໜ້າ + Window Options ຕົວເລືອກປ່ອງຢ້ຽມ + Resize window to initial page ປັບຂະໜາດປ່ອງຢ້ຽມໃຫ້ພໍດີກັບໜ້າເລີ່ມຕົ້ນ + Center window on screen ຈັດປ່ອງຢ້ຽມໄວ້ເຄິ່ງກາງໜ້າຈໍ + Open in Full Screen mode ເປີດໃນໂໝດເຕັມຈໍ + Show: ສະແດງ: + File Name ຊື່ໄຟລ໌ + Document Title ຊື່ເອກະສານ + User Interface Options ຕົວເລືອກສ່ວນຕິດຕໍ່ຜູ້ໃຊ້ + Hide menu bar ເຊື່ອງແຖບເມນູ + Hide toolbars ເຊື່ອງແຖບເຄື່ອງມື + Hide window controls ເຊື່ອງປຸ່ມຄວບຄຸມປ່ອງຢ້ຽມ + Security method ວິທີການຮັກສາຄວາມປອດໄພ + No security ບໍ່ມີການປ້ອງກັນ + Restrictions ຂໍ້ຈຳກັດ + None — everything is allowed ບໍ່ມີ — ອະນຸຍາດທຸກຢ່າງ + Password security ຄວາມປອດໄພດ້ວຍລະຫັດຜ່ານ + Encryption ການເຂົ້າລະຫັດ + Opened with ເປີດດ້ວຍ + — (protection is applied when you save) — (ການປົກປ້ອງຈະຖືກນຳໃຊ້ເມື່ອທ່ານບັນທຶກ) + Owner password (no restrictions apply) ລະຫັດຜ່ານເຈົ້າຂອງ (ບໍ່ມີຂໍ້ຈຳກັດ) + User password ລະຫັດຜ່ານຜູ້ໃຊ້ + Change settings… ປ່ຽນແປງການຕັ້ງຄ່າ… + Printing ການພິມ + Not allowed ບໍ່ອະນຸຍາດ + Allowed ອະນຸຍາດ + High resolution ຄວາມລະອຽດສູງ + Low resolution ຄວາມລະອຽດຕ່ຳ + Changing the document ການດັດແກ້ເອກະສານ + Document assembly ການປະກອບເອກະສານ + Content copying ການສຳເນົາເນື້ອໃນ + Content copying for accessibility ການສຳເນົາເນື້ອໃນເພື່ອການເຂົ້າເຖິງ + Commenting ການອອກຄວາມເຫັນ + Filling of form fields ການຕື່ມຂໍ້ມູນໃນຊ່ອງຟອມ + No fonts are referenced by the pages. ບໍ່ມີການອ້າງອີງຟອນໃນໜ້າຕ່າງໆ. + PDF version ເວີຊັນ PDF + Location ບ່ອນເກັບ + Page size ຂະໜາດໜ້າ + Yes ແມ່ນ + No ບໍ່ + Revisions ສະບັບປັບປຸງ + View revision {n} ເບິ່ງສະບັບປັບປຸງ {n} + Open the file as it was saved then ເປີດໄຟລ໌ຕາມສະພາບທີ່ບັນທຶກໄວ້ໃນຕອນນັ້ນ + Binding ການຫຍິບຮູບເຫຼັ້ມ + Left Edge ຂອບຊ້າຍ + Right Edge ຂອບຂວາ + Language ພາສາ + Saved {place}: {before} → {after} ({pct}% smaller){detail} ບັນທຶກໄວ້ທີ່ {place}: {before} → {after} (ຫຼຸດລົງ {pct}%){detail} + This file is already as small as it can be made ({size}). No copy was saved. ໄຟລ໌ນີ້ມີຂະໜາດນ້ອຍທີ່ສຸດເທົ່າທີ່ຈະເຮັດໄດ້ແລ້ວ ({size}). ບໍ່ມີການບັນທຶກສຳເນົາ. + Saved {place}: {before} → {after} (not smaller){detail} ບັນທຶກໄວ້ທີ່ {place}: {before} → {after} (ບໍ່ໄດ້ຫຼຸດລົງ){detail} + Couldn't save the image: {e} ບໍ່ສາມາດບັນທຶກຮູບພາບໄດ້: {e} + Adding images arrives on the web with file pickers for images ການເພີ່ມຮູບພາບຈະໃຊ້ງານໄດ້ໃນເວັບເມື່ອມີຕົວເລືອກໄຟລ໌ຮູບພາບ + Replacing images on page {p} arrives on the web with image pickers ({i}) ການປ່ຽນແທນຮູບພາບໃນໜ້າ {p} ຈະໃຊ້ງານໄດ້ໃນເວັບເມື່ອມີຕົວເລືອກຮູບພາບ ({i}) + {name}: choosing images arrives on the web with file pickers for images {name}: ການເລືອກຮູບພາບຈະໃຊ້ງານໄດ້ໃນເວັບເມື່ອມີຕົວເລືອກໄຟລ໌ຮູບພາບ + Replacing images arrives on the web with image file pickers ການປ່ຽນແທນຮູບພາບຈະໃຊ້ງານໄດ້ໃນເວັບເມື່ອມີຕົວເລືອກໄຟລ໌ຮູບພາບ + Couldn't create a PDF: {e} ບໍ່ສາມາດສ້າງ PDF ໄດ້: {e} + The clipboard has no image or text ຄລິບບອດບໍ່ມີຮູບພາບ ຫຼື ຂໍ້ຄວາມ + On the web, open or drop an image to convert it ໃນເວັບ, ໃຫ້ເປີດ ຫຼື ລາກຮູບພາບມາວາງເພື່ອແປງໄຟລ໌ + Couldn't optimize the file: {e} ບໍ່ສາມາດປັບແຕ່ງໄຟລ໌ໃຫ້ເໝາະສົມໄດ້: {e} + Couldn't write {path}: {e} ບໍ່ສາມາດຂຽນລົງ {path} ໄດ້: {e} + The form asks to be submitted to {u}; PdfCraft doesn't send form data. Save the document to keep your entries. ຟອມຮ້ອງຂໍໃຫ້ສົ່ງໄປທີ່ {u}; PdfCraft ບໍ່ໄດ້ສົ່ງຂໍ້ມູນຟອມ. ກະລຸນາບັນທຶກເອກະສານເພື່ອຮັກສາສິ່ງທີ່ທ່ານປ້ອນໄວ້. + This PDF uses the unsupported {s} action. PDF ນີ້ໃຊ້ການກະທຳ {s} ທີ່ຍັງບໍ່ຮອງຮັບ. + {name}: the {other} action isn't supported yet {name}: ຍັງບໍ່ຮອງຮັບການກະທຳ {other} ເທື່ອ + {name} submits the form to {url}; PdfCraft doesn't send form data. Save the document to keep your entries. {name} ສົ່ງຟອມໄປທີ່ {url}; PdfCraft ບໍ່ໄດ້ສົ່ງຂໍ້ມູນຟອມ. ກະລຸນາບັນທຶກເອກະສານເພື່ອຮັກສາສິ່ງທີ່ທ່ານປ້ອນໄວ້. + Export stopped: {e} ການສົ່ງອອກຢຸດລົງ: {e} + Exported 1 image ສົ່ງອອກແລ້ວ 1 ຮູບພາບ + Exported {n} images ສົ່ງອອກແລ້ວ {n} ຮູບພາບ + ({s} not exported: {first}) ({s} ບໍ່ໄດ້ສົ່ງອອກ: {first}) + Exported the text of 1 page ສົ່ງອອກຂໍ້ຄວາມຂອງ 1 ໜ້າແລ້ວ + Exported the text of {n} pages ສົ່ງອອກຂໍ້ຄວາມຂອງ {n} ໜ້າແລ້ວ + {msg} to {dir} {msg} ໄປຍັງ {dir} + Exporting… {d} of {t} ກຳລັງສົ່ງອອກ… {d} ຈາກ {t} + Choose a folder for the exported files ເລືອກໂຟນເດີສຳລັບໄຟລ໌ທີ່ສົ່ງອອກ + New {tool} comments will look like this one ຄວາມເຫັນ {tool} ໃໝ່ຈະມີລັກສະນະຄືກັບອັນນີ້ + This document can't be checked: it couldn't be read for editing ເອກະສານນີ້ບໍ່ສາມາດກວດສອບໄດ້: ບໍ່ສາມາດອ່ານເພື່ອແກ້ໄຂໄດ້ + The checker found no problems in this document. ຕົວລະບົບກວດສອບບໍ່ພົບບັນຫາໃນເອກະສານນີ້. + The checker found 1 problem which may prevent the document from being fully accessible. ຕົວລະບົບກວດສອບພົບ 1 ບັນຫາທີ່ອາດຂັດຂວາງການເຂົ້າເຖິງເອກະສານຢ່າງເຕັມສ່ວນ. + The checker found {n} problems which may prevent the document from being fully accessible. ຕົວລະບົບກວດສອບພົບ {n} ບັນຫາທີ່ອາດຂັດຂວາງການເຂົ້າເຖິງເອກະສານຢ່າງເຕັມສ່ວນ. + The text is the same ຂໍ້ຄວາມຄືກັນທຸກຢ່າງ + 1 difference found ພົບຂໍ້ແຕກຕ່າງ 1 ຈຸດ + {n} differences found ພົບຂໍ້ແຕກຕ່າງ {n} ຈຸດ + Added 1 comment ເພີ່ມຄວາມເຫັນແລ້ວ 1 ລາຍການ + Added {n} comments ເພີ່ມຄວາມເຫັນແລ້ວ {n} ລາຍການ + Choose a folder for the results ເລືອກໂຟນເດີສຳລັບຜົນຮັບ + Files for {name} ໄຟລ໌ສຳລັບ {name} + An action is already running ການກະທຳກຳລັງດຳເນີນການຢູ່ແລ້ວ + Running action… file {d} of {t} ກຳລັງດຳເນີນການກະທຳ… ໄຟລ໌ {d} ຈາກ {t} + No unlinked web addresses were found in the text ບໍ່ພົບທີ່ຢູ່ເວັບທີ່ບໍ່ມີລິ້ງໃນຂໍ້ຄວາມ + Created 1 link ສ້າງແລ້ວ 1 ລິ້ງ + Created {n} links ສ້າງແລ້ວ {n} ລິ້ງ + Text recognition is already running ການຮັບຮູ້ຂໍ້ຄວາມກຳລັງດຳເນີນການຢູ່ແລ້ວ + Optimizing… removing user data ກຳລັງປັບແຕ່ງ… ກຳລັງລຶບຂໍ້ມູນຜູ້ໃຊ້ອອກ + Optimizing… image {d} of {t} ກຳລັງປັບແຕ່ງ… ຮູບ {d} ຈາກ {t} + Optimizing… cleaning up ກຳລັງປັບແຕ່ງ… ກຳລັງເກັບກວາດຂໍ້ມູນ + Optimizing… merging identical objects ກຳລັງປັບແຕ່ງ… ກຳລັງຮວມວັດຖຸທີ່ຄືກັນ + Optimizing… writing the copy ກຳລັງປັບແຕ່ງ… ກຳລັງຂຽນໄຟລ໌ສຳເນົາ + Cancelling… ກຳລັງຍົກເລີກ… + Optimization is already running ການປັບແຕ່ງກຳລັງດຳເນີນການຢູ່ແລ້ວ + Optimization cancelled ຍົກເລີກການປັບແຕ່ງແລ້ວ + Couldn't optimize the file ບໍ່ສາມາດປັບແຕ່ງໄຟລ໌ໄດ້ + Recognizing text… file {d} of {t} ກຳລັງຮັບຮູ້ຂໍ້ຄວາມ… ໄຟລ໌ {d} ຈາກ {t} + Recognizing text… page {d} of {t} ກຳລັງຮັບຮູ້ຂໍ້ຄວາມ… ໜ້າ {d} ຈາກ {t} + Recognized 1 word ຮັບຮູ້ຂໍ້ຄວາມແລ້ວ 1 ຄຳ + Recognized {n} words ຮັບຮູ້ຂໍ້ຄວາມແລ້ວ {n} ຄຳ + {words} on {pages} {words} ໃນ {pages} + ; 1 page already had text ; 1 ໜ້າມີຂໍ້ຄວາມຢູ່ແລ້ວ + ; {n} pages already had text ; {n} ໜ້າມີຂໍ້ຄວາມຢູ່ແລ້ວ + Recognized {w} words in 1 file ຮັບຮູ້ {w} ຄຳໃນ 1 ໄຟລ໌ + Recognized {w} words in {n} files ຮັບຮູ້ {w} ຄຳໃນ {n} ໄຟລ໌ + ; failed: {list} ; ບໍ່ສຳເລັດ: {list} + 1 file done 1 ໄຟລ໌ສຳເລັດແລ້ວ + {n} files done {n} ໄຟລ໌ສຳເລັດແລ້ວ + The selected area has been copied ({w} × {h} pixels) ສຳເນົາພື້ນທີ່ທີ່ເລືອກແລ້ວ ({w} × {h} ພິກເຊວ) + Couldn't take the snapshot: {e} ບໍ່ສາມາດຖ່າຍພາບໜ້າຈໍໄດ້: {e} + Couldn't recover {name}: {e} ບໍ່ສາມາດກູ້ຄືນ {name} ໄດ້: {e} + The document now conforms to {level}; save it to keep the changes ປະຈຸບັນເອກະສານສອດຄ່ອງກັບ {level}; ບັນທຶກເພື່ອຮັກສາການປ່ຽນແປງ + Fixed what could be fixed; 1 problem remains ແກ້ໄຂສິ່ງທີ່ແກ້ໄຂໄດ້ແລ້ວ; ຍັງເຫຼືອອີກ 1 ບັນຫາ + Fixed what could be fixed; {n} problems remain ແກ້ໄຂສິ່ງທີ່ແກ້ໄຂໄດ້ແລ້ວ; ຍັງເຫຼືອອີກ {n} ບັນຫາ + Custom stamps arrive on the web with file pickers for images ຕາປະທັບກຳນົດເອງຈະໃຊ້ງານໄດ້ໃນເວັບເມື່ອມີຕົວເລືອກໄຟລ໌ຮູບພາບ + {file} is too large for a stamp (at most {n} MB) {file} ມີຂະໜາດໃຫຍ່ເກີນໄປສຳລັບຕາປະທັບ (ສູງສຸດບໍ່ເກີນ {n} MB) + Sent to {printer} ສົ່ງໄປຍັງ {printer} ແລ້ວ + Sent to {printer}: {msg} ສົ່ງໄປຍັງ {printer} ແລ້ວ: {msg} + Looking for printers… ກຳລັງຊອກຫາເຄື່ອງພິມ… + Sending sheet {s} of {n} to {printer}… ກຳລັງສົ່ງແຜ່ນ {s} ຈາກ {n} ໄປຍັງ {printer}… + No printers were found. Check that the printer is installed and the print spooler is running, then open Print again. ບໍ່ພົບເຄື່ອງພິມ. ກວດສອບໃຫ້ແນ່ໃຈວ່າໄດ້ຕິດຕັ້ງເຄື່ອງພິມແລ້ວ ແລະ ລະບົບພິມກຳລັງເຮັດວຽກ, ຈາກນັ້ນເປີດໜ້າພິມຄືນໃໝ່. + Sending to {printer}… ກຳລັງສົ່ງໄປຍັງ {printer}… + Choose a folder for the searchable files ເລືອກໂຟນເດີສຳລັບໄຟລ໌ທີ່ສາມາດຄົ້ນຫາໄດ້ + Files are combined from top to bottom. Leave Pages empty to take every page. ໄຟລ໌ຈະຖືກຮວມແຕ່ເທິງລົງລຸ່ມ. ປະຊ່ອງໜ້າຫວ່າງໄວ້ເພື່ອເອົາທຸກໜ້າ. + Unlock… ປົດລັອກ… + Select a password-protected file first ເລືອກໄຟລ໌ທີ່ປົກປ້ອງດ້ວຍລະຫັດຜ່ານກ່ອນ + Enter the permissions password to allow combining ປ້ອນລະຫັດຜ່ານການອະນຸຍາດເພື່ອຮວມໄຟລ໌ + Enter the password that opens it ປ້ອນລະຫັດຜ່ານເພື່ອເປີດໄຟລ໌ + Unlock {name} ປົດລັອກ {name} + Unlock {n} files ປົດລັອກ {n} ໄຟລ໌ + The same password is tried on each file. ລະຫັດຜ່ານດຽວກັນຈະຖືກນຳໄປທົດລອງກັບແຕ່ລະໄຟລ໌. + Hide password ເຊື່ອງລະຫັດຜ່ານ + Show password ສະແດງລະຫັດຜ່ານ + Wrong password ລະຫັດຜ່ານບໍ່ຖືກຕ້ອງ + The password is only used to read the file; it isn't saved. ລະຫັດຜ່ານໃຊ້ສະເພາະສຳລັບການອ່ານໄຟລ໌ເທົ່ານັ້ນ; ຈະບໍ່ຖືກບັນທຶກໄວ້. + Unlock ປົດລັອກ + Opened, but its security settings don't allow combining. Enter the permissions password. ເປີດແລ້ວ, ແຕ່ການຕັ້ງຄ່າຄວາມປອດໄພບໍ່ອະນຸຍາດໃຫ້ຮວມໄຟລ໌. ກະລຸນາປ້ອນລະຫັດຜ່ານການອະນຸຍາດ. + Unlocked: the combined file won't be password-protected ປົດລັອກແລ້ວ: ໄຟລ໌ທີ່ຮວມແລ້ວຈະບໍ່ຖືກປົກປ້ອງດ້ວຍລະຫັດຜ່ານ + Unlocked {n} of {m} files ປົດລັອກແລ້ວ {n} ຈາກ {m} ໄຟລ໌ + Drop PDFs, images, text files or folders here, or choose them. ວາງໄຟລ໌ PDF, ຮູບພາບ, ໄຟລ໌ຂໍ້ຄວາມ ຫຼື ໂຟນເດີຢູ່ນີ້, ຫຼື ເລືອກພວກມັນ. + Add folder… ເພີ່ມໂຟນເດີ… + Add folder and subfolders… ເພີ່ມໂຟນເດີ ແລະ ໂຟນເດີຍ່ອຍ… + More ways to add files ວິທີອື່ນໆໃນການເພີ່ມໄຟລ໌ + Every PDF, image and text file in the folder ທຸກໄຟລ໌ PDF, ຮູບພາບ ແລະ ຂໍ້ຄວາມໃນໂຟນເດີ + Every PDF, image and text file in the folder and the folders inside it ທຸກໄຟລ໌ PDF, ຮູບພາບ ແລະ ຂໍ້ຄວາມໃນໂຟນເດີ ແລະ ໂຟນເດີຍ່ອຍພາຍໃນ + Add folder ເພີ່ມໂຟນເດີ + Add folder and subfolders ເພີ່ມໂຟນເດີ ແລະ ໂຟນເດີຍ່ອຍ + No PDFs, images or text files found in {folder} ບໍ່ພົບໄຟລ໌ PDF, ຮູບພາບ ຫຼື ຂໍ້ຄວາມໃນ {folder} + Added the first {n} files in {folder} ເພີ່ມ {n} ໄຟລ໌ທຳອິດໃນ {folder} ແລ້ວ + Click to sort, drag to move the column. Drag its edge to resize it. ກົດເພື່ອຈັດຮຽງ, ລາກເພື່ອຍ້າຍຖັນ. ລາກຂອບເພື່ອປັບຂະໜາດ. + Reset columns ຕັ້ງຄ່າຖັນຄືນໃໝ່ + Remove {n} files ລຶບອອກ {n} ໄຟລ໌ + {n} selected ເລືອກແລ້ວ {n} ລາຍການ + sorted ascending ຈັດຮຽງຈາກນ້ອຍຫາໃຫຍ່ + sorted descending ຈັດຮຽງຈາກໃຫຍ່ຫານ້ອຍ + Protected: the combined file won't keep its security settings ຖືກປົກປ້ອງຢູ່: ໄຟລ໌ທີ່ຮວມແລ້ວຈະບໍ່ຮັກສາການຕັ້ງຄ່າຄວາມປອດໄພໄວ້ + Add open documents ເພີ່ມເອກະສານທີ່ເປີດຢູ່ + All open documents ທຸກເອກະສານທີ່ເປີດຢູ່ + No documents are open ບໍ່ມີເອກະສານໃດເປີດຢູ່ + Select a file first ເລືອກໄຟລ໌ກ່ອນ + 1 file 1 ໄຟລ໌ + {n} files {n} ໄຟລ໌ + 1 file needs attention 1 ໄຟລ໌ມີບັນຫາທີ່ຕ້ອງກວດເບິ່ງ + {n} files need attention {n} ໄຟລ໌ມີບັນຫາທີ່ຕ້ອງກວດເບິ່ງ + {name} can't be combined: {why} {name} ບໍ່ສາມາດຮວມໄດ້: {why} + Check the pages of {name}: {why} ກວດສອບໜ້າຕ່າງໆຂອງ {name}: {why} + Add the files to combine ເພີ່ມໄຟລ໌ທີ່ຈະຮວມກັນ + File name ຊື່ໄຟລ໌ + Warnings ຄຳເຕືອນ + Drag to reorder ລາກເພື່ອຈັດລຳດັບໃໝ່ + {k} of {n} {k} ຈາກ {n} + ? of {n} ? ຈາກ {n} + Added more than once ເພີ່ມຫຼາຍກວ່າໜຶ່ງຄັ້ງແລ້ວ + yesterday ມື້ວານນີ້ + {n} days ago {n} ມື້ກ່ອນ + No pages selected ບໍ່ມີໜ້າໃດຖືກເລືອກ + Password-protected ປົກປ້ອງດ້ວຍລະຫັດຜ່ານ + Its security settings don't allow copying pages ການຕັ້ງຄ່າຄວາມປອດໄພບໍ່ອະນຸຍາດໃຫ້ສຳເນົາໜ້າ + Can't be read: {e} ບໍ່ສາມາດອ່ານໄດ້: {e} + Leave out files that can't be read? ຍົກເວັ້ນໄຟລ໌ທີ່ອ່ານບໍ່ໄດ້ຫຼືບໍ່? + These files can't be read, so they won't be in the combined PDF: ໄຟລ໌ເຫຼົ່ານີ້ບໍ່ສາມາດອ່ານໄດ້, ດັ່ງນັ້ນຈຶ່ງຈະບໍ່ຢູ່ໃນ PDF ທີ່ຮວມກັນ: + Combine the rest ຮວມສ່ວນທີ່ເຫຼືອ + and {n} more ແລະ ອີກ {n} ລາຍການ + Includes unsaved changes ລວມມີການປ່ຽນແປງທີ່ຍັງບໍ່ໄດ້ບັນທຶກ + Pages of {name} to combine, e.g. 1-3, 6 ໜ້າຂອງ {name} ທີ່ຈະຮວມກັນ ເຊັ່ນ 1-3, 6 + Remove {name} ລຶບ {name} ອອກ + Add files… ເພີ່ມໄຟລ໌… + Add at least two files ກະລຸນາເພີ່ມຢ່າງໜ້ອຍສອງໄຟລ໌ + Couldn't add {name}: {e} ບໍ່ສາມາດເພີ່ມ {name} ໄດ້: {e} + Couldn't combine files: {e} ບໍ່ສາມາດຮວມໄຟລ໌ໄດ້: {e} + Export comments ສົ່ງອອກຄວາມເຫັນ + Export form data ສົ່ງອອກຂໍ້ມູນຟອມ + Comment and form data ຄວາມເຫັນ ແລະ ຂໍ້ມູນຟອມ + Export ສົ່ງອອກ + Select data files to merge ເລືອກໄຟລ໌ຂໍ້ມູນທີ່ຈະຮວມ + Form data and PDF forms ຂໍ້ມູນຟອມ ແລະ ຟອມ PDF + Save the spreadsheet ບັນທຶກສະເປຣດຊີດ + Save the accessibility report ບັນທຶກລາຍງານການເຂົ້າເຖິງ + Save image ບັນທຶກຮູບພາບ + Export certificate ສົ່ງອອກໃບຢັ້ງຢືນ + Choose a folder for the extracted pages ເລືອກໂຟນເດີສຳລັບໜ້າທີ່ແຍກອອກມາ + Choose a folder for the split files ເລືອກໂຟນເດີສຳລັບໄຟລ໌ທີ່ແບ່ງແລ້ວ + Couldn't use {name}: {e} ບໍ່ສາມາດໃຊ້ {name} ໄດ້: {e} + Couldn't extract pages: {e} ບໍ່ສາມາດແຍກໜ້າອອກໄດ້: {e} + Couldn't write {name}: {e} ບໍ່ສາມາດຂຽນ {name} ໄດ້: {e} + Wrote 1 file to {dir} ຂຽນ 1 ໄຟລ໌ລົງໃນ {dir} ແລ້ວ + Wrote {n} files to {dir} ຂຽນ {n} ໄຟລ໌ລົງໃນ {dir} ແລ້ວ + No pages match those choices ບໍ່ມີໜ້າທີ່ກົງກັບຕົວເລືອກເຫຼົ່ານັ້ນ + Couldn't split: {e} ບໍ່ສາມາດແບ່ງໄຟລ໌ໄດ້: {e} + Couldn't summarize comments: {e} ບໍ່ສາມາດສະຫຼຸບຄວາມເຫັນໄດ້: {e} + Couldn't open the result: {e} ບໍ່ສາມາດເປີດຜົນຮັບໄດ້: {e} + Importing data arrives on the web with file pickers for data files ການນຳເຂົ້າຂໍ້ມູນຈະໃຊ້ງານໄດ້ໃນເວັບເມື່ອມີຕົວເລືອກໄຟລ໌ຂໍ້ມູນ + Exported to {path} ສົ່ງອອກໄປຍັງ {path} ແລ້ວ + Merging data files needs the desktop app ການຮວມໄຟລ໌ຂໍ້ມູນຕ້ອງການແອັບເດັສທັອບ + Merged 1 file into {path} ຮວມ 1 ໄຟລ໌ເຂົ້າໃນ {path} ແລ້ວ + Merged {n} files into {path} ຮວມ {n} ໄຟລ໌ເຂົ້າໃນ {path} ແລ້ວ + Combined {n} files ຮວມແລ້ວ {n} ໄຟລ໌ + Extracted 1 page ແຍກອອກມາແລ້ວ 1 ໜ້າ + Extracted {n} pages ແຍກອອກມາແລ້ວ {n} ໜ້າ + Created a comment summary ສ້າງບົດສະຫຼຸບຄວາມເຫັນແລ້ວ + Couldn't open {name}: {e} ບໍ່ສາມາດເປີດ {name} ໄດ້: {e} + Couldn't read {name}: {e} ບໍ່ສາມາດອ່ານ {name} ໄດ້: {e} + Portable mode is off: {folder} can't be written ({error}). Settings are kept in your user folder instead. ໂໝດພົກພາປິດຢູ່: ບໍ່ສາມາດຂຽນໃສ່ {folder} ໄດ້ ({error}). ການຕັ້ງຄ່າຈະຖືກເກັບໄວ້ໃນໂຟນເດີຜູ້ໃຊ້ຂອງທ່ານແທນ. + PdfCraft is drawing without a graphics processor, so it may be slow. Updating the graphics driver may help. PdfCraft ກຳລັງແຕ້ມສະແດງຜົນໂດຍບໍ່ໃຊ້ໜ່ວຍປະມວນຜົນກຣາບຟິກ, ເຊິ່ງອາດເຮັດໃຫ້ຊ້າ. ການອັບເດດໄດຣເວີກຣາບຟິກອາດຊ່ວຍໄດ້. + Couldn't save: {e} ບໍ່ສາມາດບັນທຶກໄດ້: {e} + Downloading attachments on the web arrives with M3.10 ({n} bytes ready) ການດາວໂຫຼດໄຟລ໌ແນບໃນເວັບຈະມາພ້ອມກັບ M3.10 (ພ້ອມແລ້ວ {n} ໄບຕ໌) + `{command}` {when} `{command}` {when} + ships in milestone {m} ຈະປ່ອຍໃຫ້ໃຊ້ງານໃນເປົ້າໝາຍ {m} + needs an AI provider (off by default) ຕ້ອງການຜູ້ໃຫ້ບໍລິການ AI (ປິດຕາມຄ່າເລີ່ມຕົ້ນ) + is available ໃຊ້ງານໄດ້ + is not available yet ຍັງບໍ່ທັນສາມາດໃຊ້ງານໄດ້ເທື່ອ + {label} failed: {e} {label} ບໍ່ສຳເລັດ: {e} + Undid {label} ຍົກເລີກ {label} ແລ້ວ + Redid {label} ເຮັດຄືນ {label} ແລ້ວ + A document needs at least one page: copy instead ເອກະສານຕ້ອງມີຢ່າງໜ້ອຍໜຶ່ງໜ້າ: ໃຫ້ສຳເນົາແທນ + Cut {what} ຕັດ {what} ແລ້ວ + Copied {what} ສຳເນົາ {what} ແລ້ວ + 1 page 1 ໜ້າ + {n} pages {n} ໜ້າ + Copy or cut pages first ສຳເນົາ ຫຼື ຕັດໜ້າກ່ອນ + Couldn't save {name}: {e} ບໍ່ສາມາດບັນທຶກ {name} ໄດ້: {e} + Saved {name} ບັນທຶກ {name} ແລ້ວ + Saved, but reopening failed: {e} ບັນທຶກແລ້ວ, ແຕ່ການເປີດຄືນໃໝ່ບໍ່ສຳເລັດ: {e} + Downloaded {name} ດາວໂຫຼດ {name} ແລ້ວ + Couldn't download {name}: {e} ບໍ່ສາມາດດາວໂຫຼດ {name} ໄດ້: {e} + Reverted to the last saved version ກັບຄືນສູ່ເວີຊັນທີ່ບັນທຶກຫຼ້າສຸດແລ້ວ + That didn't work: an internal error stopped it ({m}). Your documents are unchanged. ບໍ່ສຳເລັດ: ເກີດຂໍ້ຜິດພາດພາຍໃນຢຸດການເຮັດວຽກ ({m}). ເອກະສານຂອງທ່ານບໍ່ມີການປ່ຽນແປງ. + Nothing to undo ບໍ່ມີສິ່ງໃດໃຫ້ຍົກເລີກ + Nothing to redo ບໍ່ມີສິ່ງໃດໃຫ້ເຮັດຄືນ + This document has no form fields you can fill in ເອກະສານນີ້ບໍ່ມີຊ່ອງຟອມທີ່ທ່ານສາມາດຕື່ມໄດ້ + This document has no comments to flatten ເອກະສານນີ້ບໍ່ມີຄວາມເຫັນທີ່ຈະຮວມ + This document has no form fields to flatten ເອກະສານນີ້ບໍ່ມີຊ່ອງຟອມທີ່ຈະຮວມ + There are no redaction marks (mark text, areas or pages first) ບໍ່ມີເຄື່ອງໝາຍປິດບັງ (ໝາຍຂໍ້ຄວາມ, ພື້ນທີ່ ຫຼື ໜ້າກ່ອນ) + This document has no {kind} to change ເອກະສານນີ້ບໍ່ມີ {kind} ທີ່ຈະປ່ຽນແປງ + header or footer ຫົວໜ້າ ຫຼື ທ້າຍໜ້າ + watermark ລາຍນ້ຳ + background ພື້ນຫຼັງ + This document isn't password-protected ເອກະສານນີ້ບໍ່ໄດ້ຖືກປົກປ້ອງດ້ວຍລະຫັດຜ່ານ + Enter permissions password… ປ້ອນລະຫັດຜ່ານການອະນຸຍາດ… + Permissions password ລະຫັດຜ່ານການອະນຸຍາດ + “{name}” has security restrictions. Enter its permissions password to lift them. “{name}” ມີຂໍ້ຈຳກັດຄວາມປອດໄພ. ປ້ອນລະຫັດຜ່ານການອະນຸຍາດເພື່ອປົດລັອກຂໍ້ຈຳກັດເຫຼົ່ານັ້ນ. + Restrictions lifted ປົດລັອກຂໍ້ຈຳກັດແລ້ວ + Couldn't unlock {name}: {e} ບໍ່ສາມາດປົດລັອກ {name} ໄດ້: {e} + This document has no restrictions to lift ເອກະສານນີ້ບໍ່ມີຂໍ້ຈຳກັດທີ່ຈະປົດລັອກ + The document's security settings don't allow this change ການຕັ້ງຄ່າຄວາມປອດໄພຂອງເອກະສານບໍ່ອະນຸຍາດໃຫ້ມີການປ່ຽນແປງນີ້ + The document's security settings don't allow copying text and images ການຕັ້ງຄ່າຄວາມປອດໄພຂອງເອກະສານບໍ່ອະນຸຍາດໃຫ້ສຳເນົາຂໍ້ຄວາມ ແລະ ຮູບພາບ + Open a document first ເປີດເອກະສານກ່ອນ + Security will be removed when you save ຄວາມປອດໄພຈະຖືກລຶບອອກເມື່ອທ່ານບັນທຶກ + Click text or an image to edit it ກົດໃສ່ຂໍ້ຄວາມ ຫຼື ຮູບພາບເພື່ອແກ້ໄຂ + Drag a rectangle to create a link; double-click a link to edit it ລາກຮູບສີ່ແຈສາກເພື່ອສ້າງລິ້ງ; ກົດສອງເທື່ອໃສ່ລິ້ງເພື່ອແກ້ໄຂ + There are no redaction marks to apply ບໍ່ມີເຄື່ອງໝາຍປິດບັງທີ່ຈະນຳໃຊ້ + Drag to draw the area where the signature should appear. ລາກເພື່ອແຕ້ມພື້ນທີ່ທີ່ຕ້ອງການໃຫ້ລາຍເຊັນປະກົດ. + Couldn't fit the visible content: {e} ບໍ່ສາມາດປັບໃຫ້ພໍດີກັບເນື້ອໃນທີ່ເບິ່ງເຫັນໄດ້: {e} + Drag a rectangle around the area to copy ລາກຮູບສີ່ແຈສາກອ້ອມຮອບພື້ນທີ່ທີ່ຈະສຳເນົາ + Click on the page to add a {tool}, or drag to set its size ກົດໃສ່ໜ້າເພື່ອເພີ່ມ {tool}, ຫຼື ລາກເພື່ອກຳນົດຂະໜາດ + Drag a rectangle on a page to crop it; double-click a page for Set Page Boxes ລາກຮູບສີ່ແຈສາກໃສ່ໜ້າເພື່ອຕັດຂອບ; ກົດສອງເທື່ອໃສ່ໜ້າເພື່ອຕັ້ງຄ່າຂອບເຂດໜ້າ + Keep tool selected: on ຮັກສາການເລືອກເຄື່ອງມືໄວ້: ເປີດ + Keep tool selected ຮັກສາການເລືອກເຄື່ອງມືໄວ້ + Opacity ຄວາມໂປ່ງແສງ + Line thickness ຄວາມໜາຂອງເສັ້ນ + What word or phrase would you like to search for? ທ່ານຕ້ອງການຄົ້ນຫາຄຳສັບ ຫຼື ວະລີໃດ? + Searching… {s} of {p} pages ກຳລັງຄົ້ນຫາ… {s} ຈາກ {p} ໜ້າ + (searching… {s} of {p} pages) (ກຳລັງຄົ້ນຫາ… {s} ຈາກ {p} ໜ້າ) + 1 instance 1 ແຫ່ງ + {n} instances {n} ແຫ່ງ + Go to this result ໄປຫາຜົນຮັບນີ້ + Highlight ໄຮໄລ້ + Draw ແຕ້ມ + Polygon ຮູບຫຼາຍແຈ + Connected lines ເສັ້ນເຊື່ອມຕໍ່ + Eraser ຢາງລຶບ + Sign ເຊັນ + Certified by {by} ຢັ້ງຢືນໂດຍ {by} + At least one signature is invalid. ມີຢ່າງໜ້ອຍໜຶ່ງລາຍເຊັນບໍ່ຖືກຕ້ອງ. + Signed and all signatures are valid. ເຊັນແລ້ວ ແລະ ທຸກລາຍເຊັນຖືກຕ້ອງສົມບູນ. + At least one signature has problems. ມີຢ່າງໜ້ອຍໜຶ່ງລາຍເຊັນທີ່ມີບັນຫາ. + This document is secured. Some changes are restricted by its security settings. ເອກະສານນີ້ຖືກປ້ອງກັນໄວ້. ການປ່ຽນແປງບາງຢ່າງຖືກຈຳກັດໂດຍການຕັ້ງຄ່າຄວາມປອດໄພ. + This is a dynamic XFA form, which PdfCraft can't display yet. What you see is the file's placeholder page. ນີ້ແມ່ນຟອມ XFA ແບບໄດນາມິກ ເຊິ່ງ PdfCraft ຍັງບໍ່ສາມາດສະແດງຜົນໄດ້. ສິ່ງທີ່ທ່ານເຫັນແມ່ນໜ້າຕົວແທນຊົ່ວຄາວຂອງໄຟລ໌. + This form's scripts are turned off because one ran too long. Reopen the document to run them again. ສະຄຣິບຂອງຟອມນີ້ຖືກປິດເນື່ອງຈາກບາງສະຄຣິບເຮັດວຽກດົນເກີນໄປ. ເປີດເອກະສານຄືນໃໝ່ເພື່ອໃຫ້ສະຄຣິບເຮັດວຽກອີກຄັ້ງ. + This form also contains XFA data, which PdfCraft doesn't read yet. You can fill its fields, but Acrobat may show the XFA values instead. ຟອມນີ້ຍັງມີຂໍ້ມູນ XFA ທີ່ PdfCraft ຍັງບໍ່ສາມາດອ່ານໄດ້. ທ່ານສາມາດຕື່ມຂໍ້ມູນລົງໃນຊ່ອງໄດ້, ແຕ່ Acrobat ອາດຈະສະແດງຄ່າ XFA ແທນ. + This document contains {n} interactive form fields. ເອກະສານນີ້ບັນຈຸ {n} ຊ່ອງຟອມແບບໂຕ້ຕອບ. + This file was damaged and has been repaired. Saving keeps the repaired version. ໄຟລ໌ນີ້ເຄີຍເສຍຫາຍ ແລະ ໄດ້ຮັບການສ້ອມແປງແລ້ວ. ການບັນທຶກຈະຮັກສາເວີຊັນທີ່ສ້ອມແປງແລ້ວໄວ້. + Dismiss ປິດໄປ + Hide field highlights ເຊື່ອງໄຮໄລ້ຊ່ອງຂໍ້ມູນ + Highlight fields ໄຮໄລ້ຊ່ອງຂໍ້ມູນ + Security settings ການຕັ້ງຄ່າຄວາມປອດໄພ + Details ລາຍລະອຽດ + Select (V) ເລືອກ (V) + Hand (H) ມືຈັບ (H) + Delete pages (Delete) ລຶບໜ້າ (Delete) + Insert a blank page after the selection ແຊກໜ້າຫວ່າງຫຼັງຈາກສ່ວນທີ່ເລືອກ + Insert pages from a file… ແຊກໜ້າຈາກໄຟລ໌… + Extract pages to a new document ແຍກໜ້າໄປຍັງເອກະສານໃໝ່ + Split into files… ແບ່ງອອກເປັນຫຼາຍໄຟລ໌… + Select pages ເລືອກໜ້າ + Cut ຕັດ + Copy ສຳເນົາ + Paste after ວາງຕໍ່ທ້າຍ + Rename ປ່ຽນຊື່ + Set to current page ({n}) ກຳນົດເປັນໜ້າປະຈຸບັນ ({n}) + Move up ຍ້າຍຂຶ້ນ + Move down ຍ້າຍລົງ + Indent ຫຍໍ້ໜ້າເຂົ້າ + Outdent ຍື່ນໜ້າອອກ + This document has no form fields. ເອກະສານນີ້ບໍ່ມີຊ່ອງຟອມ. + Tab order: move a field with its arrows. ລຳດັບການແທັບ: ຍ້າຍຊ່ອງຂໍ້ມູນດ້ວຍລູກສອນ. + Unplaced ຍັງບໍ່ໄດ້ຈັດວາງ + Has JavaScript actions (run in M6) ມີການກະທຳ JavaScript (ເຮັດວຽກໃນ M6) + Page ໜ້າ + None ບໍ່ມີ + Delete selected fields ລຶບຊ່ອງຂໍ້ມູນທີ່ເລືອກ + Diagnostic details ລາຍລະອຽດການກວດວິນິດໄສ + The operation failed. ການເຮັດວຽກບໍ່ສຳເລັດ. + no such document ບໍ່ມີເອກະສານດັ່ງກ່າວ + nothing to undo ບໍ່ມີສິ່ງໃດໃຫ້ຍົກເລີກ + nothing to redo ບໍ່ມີສິ່ງໃດໃຫ້ເຮັດຄືນ + this document is signed: rewriting it would invalidate its signatures (save it incrementally instead) ເອກະສານນີ້ມີລາຍເຊັນແລ້ວ: ການຂຽນໃໝ່ທັງໝົດຈະເຮັດໃຫ້ລາຍເຊັນໃຊ້ການບໍ່ໄດ້ (ກະລຸນາບັນທຶກແບບເພີ່ມເຕີມແທນ) + the document is protected by a password ເອກະສານຖືກປົກປ້ອງດ້ວຍລະຫັດຜ່ານ + the password is incorrect ລະຫັດຜ່ານບໍ່ຖືກຕ້ອງ + the document has no page tree ເອກະສານບໍ່ມີໂຄງສ້າງໜ້າ + a document must keep at least one page ເອກະສານຕ້ອງເຫຼືອໄວ້ຢ່າງໜ້ອຍໜຶ່ງໜ້າ + a bookmark cannot be moved inside itself ບໍ່ສາມາດຍ້າຍບຸກມາກເຂົ້າໄປໄວ້ໃນຕົວມັນເອງໄດ້ + the title must not be empty ຫົວຂໍ້ຕ້ອງບໍ່ຫວ່າງເປົ່າ + the document has no form fields ເອກະສານບໍ່ມີຊ່ອງຟອມ + there are no redaction marks to apply ບໍ່ມີເຄື່ອງໝາຍປິດບັງທີ່ຈະນຳໃຊ້ + there are no pages to print ບໍ່ມີໜ້າທີ່ຈະພິມ + the document has no tags ເອກະສານບໍ່ມີແທັກ + {0}: {1} {0}: {1} + the text recognition models are not installed (reinstall PdfCraft, or set PDFCRAFT_MODELS to the folder that holds them) ໂມເດວການຮັບຮູ້ຂໍ້ຄວາມຍັງບໍ່ໄດ້ຕິດຕັ້ງ (ຕິດຕັ້ງ PdfCraft ຄືນໃໝ່, ຫຼື ຕັ້ງຄ່າ PDFCRAFT_MODELS ໄປຫາໂຟນເດີທີ່ບັນຈຸໂມເດວ) + the image is empty ຮູບພາບຫວ່າງເປົ່າ + this file isn't XFDF, FDF, XML or text form data ໄຟລ໌ນີ້ບໍ່ແມ່ນຂໍ້ມູນຟອມປະເພດ XFDF, FDF, XML ຫຼື ຂໍ້ຄວາມ + nothing in the file matches this document ບໍ່ມີສິ່ງໃດໃນໄຟລ໌ກົງກັບເອກະສານນີ້ + This page couldn't be displayed.\n{e} ບໍ່ສາມາດສະແດງໜ້ານີ້ໄດ້.\n{e} + Go to page {p} ໄປຫາໜ້າ {p} + {s} action ການກະທຳ {s} + Page {p} of {n} ໜ້າ {p} ຈາກ {n} + 1 page selected ເລືອກແລ້ວ 1 ໜ້າ + {n} pages selected ເລືອກແລ້ວ {n} ໜ້າ + {name} — unsaved changes {name} — ມີການປ່ຽນແປງທີ່ຍັງບໍ່ໄດ້ບັນທຶກ + {kind} field ຊ່ອງຂໍ້ມູນ {kind} + Select a file for the stamp ເລືອກໄຟລ໌ສຳລັບຕາປະທັບ + JavaScript, e.g. getField("total").value JavaScript ເຊັ່ນ getField("total").value + Font: Helvetica ຟອນ: Helvetica + e.g. en-US ຕົວຢ່າງ: lo-LA + Rendering: hayro (bootstrap) · UI: egui · Icons: Lucide (ISC) · Fonts: Inter, JetBrains Mono, Dancing Script (OFL) ການສະແດງຜົນ: hayro (bootstrap) · UI: egui · ໄອຄອນ: Lucide (ISC) · ຟອນ: Inter, JetBrains Mono, Dancing Script (OFL) + CheckBox ກ່ອງໝາຍເລືອກ + Radio ປຸ່ມເລືອກທາງດຽວ + PushButton ປຸ່ມກົດ + Combo ກ່ອງຄອມໂບ + List ລາຍການ + Unknown ບໍ່ຮູ້ຈັກ + The document has no XMP metadata ເອກະສານບໍ່ມີເມຕາເດຕາ XMP + The title in the metadata and the document information differ ຊື່ຫົວຂໍ້ໃນເມຕາເດຕາ ແລະ ຂໍ້ມູນເອກະສານແຕກຕ່າງກັນ + The document is encrypted ເອກະສານຖືກເຂົ້າລະຫັດໄວ້ + Device colour is used, but there is no PDF/A output intent ມີການໃຊ້ສີອຸປະກອນ ແຕ່ບໍ່ມີ PDF/A output intent + DeviceCMYK is used: it needs a CMYK output intent (not added automatically) ມີການໃຊ້ DeviceCMYK: ຈຳເປັນຕ້ອງມີ CMYK output intent (ບໍ່ໄດ້ເພີ່ມໂດຍອັດຕະໂນມັດ) + The document has additional actions (/AA) ເອກະສານມີການກະທຳເພີ່ມເຕີມ (/AA) + The document has document-level JavaScript ເອກະສານມີ JavaScript ລະດັບເອກະສານ + The form asks viewers to make appearances (NeedAppearances) ຟອມຮ້ອງຂໍໃຫ້ຕົວເບິ່ງເອກະສານສ້າງການສະແດງຜົນ (NeedAppearances) + A form field has additional actions ຊ່ອງຟອມມີການກະທຳເພີ່ມເຕີມ + A stream uses LZW compression ສະຕຣີມໃຊ້ການບີບອັດແບບ LZW + A stream refers to an external file ສະຕຣີມອ້າງອີງເຖິງໄຟລ໌ພາຍນອກ + An image asks to be interpolated ຮູບພາບຮ້ອງຂໍໃຫ້ມີການແຊກແຊງຄ່າສີ (interpolate) + An image has alternates or OPI information ຮູບພາບມີຮູບສຳຮອງ ຫຼື ຂໍ້ມູນ OPI + PostScript XObjects aren't allowed ບໍ່ອະນຸຍາດໃຫ້ນຳໃຊ້ PostScript XObjects + Embedded files must be PDF/A files themselves (use PDF/A-3 for others) ໄຟລ໌ຝັງຕ້ອງເປັນໄຟລ໌ PDF/A ດ້ວຍຕົວມັນເອງ (ໃຊ້ PDF/A-3 ສຳລັບໄຟລ໌ອື່ນໆ) + An embedded file has no AFRelationship ໄຟລ໌ຝັງບໍ່ມີ AFRelationship + Select Icon ເລືອກໄອຄອນ + Choose images ເລືອກຮູບພາບ + {dpi} pixels/inch {dpi} ພິກເຊວ/ນິ້ວ + Type your {what}. ກະລຸນາພິມ {what} ຂອງທ່ານ. + Draw your {what} below. ແຕ້ມ {what} ຂອງທ່ານໃສ່ດ້ານລຸ່ມ. + Your name ຊື່ຂອງທ່ານ + Images and text (converted to PDF) ຮູບພາບ ແລະ ຂໍ້ຄວາມ (ແປງເປັນ PDF) + Images and text ຮູບພາບ ແລະ ຂໍ້ຄວາມ + Check Box Style: ຮູບແບບກ່ອງໝາຍເລືອກ: + Button Style: ຮູບແບບປຸ່ມ: + Check ໝາຍຖືກ + Circle ວົງມົນ + Diamond ຮູບດອກຈັນ + Square ສີ່ແຈສາກ + Star ດາວ + {month} {y} {month} {y} + Change {key} ປ່ຽນ {key} + Insert pages from {name} ແຊກໜ້າຈາກ {name} + Insert pages from {name} — 1 field renamed ແຊກໜ້າຈາກ {name} — ປ່ຽນຊື່ແລ້ວ 1 ຊ່ອງ + Insert pages from {name} — fields renamed ແຊກໜ້າຈາກ {name} — ປ່ຽນຊື່ຊ່ອງຂໍ້ມູນແລ້ວ + Fill in {name} ຕື່ມໃສ່ {name} + Set the image of {name} ກຳນົດຮູບພາບຂອງ {name} + Edit script of {name} ແກ້ໄຂສະຄຣິບຂອງ {name} + Import {name} ນຳເຂົ້າ {name} + Add bookmark ເພີ່ມບຸກມາກ + Rename bookmark ປ່ຽນຊື່ບຸກມາກ + Delete bookmark ລຶບບຸກມາກ + Move bookmark ຍ້າຍບຸກມາກ + Set bookmark destination ກຳນົດປາຍທາງຂອງບຸກມາກ + Add stamp ເພີ່ມຕາປະທັບ + Delete comment ລຶບຄວາມເຫັນ + Edit comment ແກ້ໄຂຄວາມເຫັນ + Erase ລຶບ + Lock comment ລັອກຄວາມເຫັນ + Unlock comment ປົດລັອກຄວາມເຫັນ + Move comment ຍ້າຍຄວາມເຫັນ + Resize comment ປັບຂະໜາດຄວາມເຫັນ + Change comment properties ປ່ຽນຄຸນສົມບັດຄວາມເຫັນ + Add field ເພີ່ມຊ່ອງຂໍ້ມູນ + Change field properties ປ່ຽນຄຸນສົມບັດຊ່ອງຂໍ້ມູນ + Delete field ລຶບຊ່ອງຂໍ້ມູນ + Duplicate field ສຳເນົາຊ້ຳຊ່ອງຂໍ້ມູນ + Set tab order ກຳນົດລຳດັບການແທັບ + Change initial view ປ່ຽນມຸມມອງເລີ່ມຕົ້ນ + Set alternate text ກຳນົດຂໍ້ຄວາມທົດແທນ + Mark figure as decorative ໝາຍຮູບວ່າເປັນການຕົກແຕ່ງ + Run JavaScript ດຳເນີນການ JavaScript + Delete document JavaScript ລຶບ JavaScript ຂອງເອກະສານ + Edit document JavaScript ແກ້ໄຂ JavaScript ຂອງເອກະສານ + Edit text ແກ້ໄຂຂໍ້ຄວາມ + Load document font ໂຫຼດຟອນເອກະສານ + Move image ຍ້າຍຮູບພາບ + Rotate image ໝູນຮູບພາບ + Flip image ພິກຮູບພາບ + Delete image ລຶບຮູບພາບ + Add header & footer ເພີ່ມຫົວໜ້າ ແລະ ທ້າຍໜ້າ + Update header & footer ອັບເດດຫົວໜ້າ ແລະ ທ້າຍໜ້າ + Update watermark ອັບເດດລາຍນ້ຳ + Add background ເພີ່ມພື້ນຫຼັງ + Update background ອັບເດດພື້ນຫຼັງ + Add image ເພີ່ມຮູບພາບ + Edit content ແກ້ໄຂເນື້ອໃນ + Delete content ລຶບເນື້ອໃນ + Remove redaction marks ລຶບເຄື່ອງໝາຍປິດບັງອອກ + Add link ເພີ່ມລິ້ງ + Change link properties ປ່ຽນຄຸນສົມບັດລິ້ງ + Delete link ລຶບລິ້ງ + Create link ສ້າງລິ້ງ + Flatten ຮວມເຂົ້າກັນ + Add sticky note ເພີ່ມໂນ້ດຕິດ + Add highlight ເພີ່ມໄຮໄລ້ + Add underline ເພີ່ມເສັ້ນກ້ອງ + Add strikethrough ເພີ່ມເສັ້ນຂີດຂ້າ + Add squiggly underline ເພີ່ມເສັ້ນກ້ອງຄື້ນ + Add rectangle ເພີ່ມຮູບສີ່ແຈສາກ + Add oval ເພີ່ມຮູບວົງມົນຣີ + Add arrow ເພີ່ມລູກສອນ + Add line ເພີ່ມເສັ້ນ + Add drawing ເພີ່ມຮູບແຕ້ມ + Add text box ເພີ່ມກ່ອງຂໍ້ຄວາມ + Add checkmark ເພີ່ມເຄື່ອງໝາຍຖືກ + Add cross ເພີ່ມເຄື່ອງໝາຍກາກບາດ + Add dot ເພີ່ມຈຸດ + Add signature ເພີ່ມລາຍເຊັນ + Add redaction mark ເພີ່ມເຄື່ອງໝາຍປິດບັງ + Add cloud ເພີ່ມຮູບເມກ + Add polygon ເພີ່ມຮູບຫຼາຍແຈ + Add connected lines ເພີ່ມເສັ້ນເຊື່ອມຕໍ່ + Add callout ເພີ່ມຄຳບັນຍາຍຊີ້ບອກ + Add inserted text ເພີ່ມເຄື່ອງໝາຍແຊກຂໍ້ຄວາມ + Add file attachment ເພີ່ມໄຟລ໌ແນບ + Set status Accepted ຕັ້ງສະຖານະເປັນ ຍອມຮັບ + Set status Rejected ຕັ້ງສະຖານະເປັນ ປະຕິເສດ + Set status Cancelled ຕັ້ງສະຖານະເປັນ ຍົກເລີກແລ້ວ + Set status Completed ຕັ້ງສະຖານະເປັນ ສຳເລັດແລ້ວ + Set status None ຍົກເລີກສະຖານະ + Set status Unmarked ຕັ້ງສະຖານະເປັນ ຍັງບໍ່ໝາຍ + Save as PDF/A-1b ບັນທຶກເປັນ PDF/A-1b + Save as PDF/A-2b ບັນທຶກເປັນ PDF/A-2b + Save as PDF/A-3b ບັນທຶກເປັນ PDF/A-3b + Fill & Sign: change signature ຕື່ມ ແລະ ເຊັນ: ປ່ຽນລາຍເຊັນ + Fill & Sign: change initials ຕື່ມ ແລະ ເຊັນ: ປ່ຽນລາຍເຊັນຫຍໍ້ + Fill & Sign: remove saved signature ຕື່ມ ແລະ ເຊັນ: ລຶບລາຍເຊັນທີ່ບັນທຶກໄວ້ + Fill & Sign: remove saved initials ຕື່ມ ແລະ ເຊັນ: ລຶບລາຍເຊັນຫຍໍ້ທີ່ບັນທຶກໄວ້ + Change signature ປ່ຽນລາຍເຊັນ + Change initials ປ່ຽນລາຍເຊັນຫຍໍ້ + + Measure distance ວັດແທກໄລຍະຫ່າງ + Measure perimeter ວັດແທກລວງຮອບ + Measure area ວັດແທກເນື້ອທີ່ + Set measurement scale ກຳນົດມາດຕາສ່ວນວັດແທກ + Measurement information ຂໍ້ມູນການວັດແທກ + Measurement snapping ການດູດຈັບການວັດແທກ + Export measurements as CSV ສົ່ງອອກການວັດແທກເປັນ CSV + Distance ໄລຍະຫ່າງ + Perimeter ລວງຮອບ + Area ເນື້ອທີ່ + Drawing scale ມາດຕາສ່ວນຮູບແຕ້ມ + Snapping ການດູດຈັບ + Export measurements ສົ່ງອອກການວັດແທກ + Open a PDF to measure it. ເປີດ PDF ເພື່ອວັດແທກ. + Click vertices. Enter or double-click finishes a perimeter or area. Click the first point to close an area. ກົດໃສ່ຈຸດຍອດ. ກົດ Enter ຫຼື ກົດສອງເທື່ອເພື່ອຈົບການວັດແທກລວງຮອບ ຫຼື ເນື້ອທີ່. ກົດຈຸດທຳອິດເພື່ອປິດຂອບເຂດເນື້ອທີ່. + Shift constrains to 45 degrees. Backspace removes a vertex. Escape cancels. ກົດ Shift ເພື່ອບັງຄັບມຸມ 45 ອົງສາ. Backspace ເພື່ອລຶບຈຸດຍອດ. Escape ເພື່ອຍົກເລີກ. + Angle ມຸມ + Click the first point to begin. ກົດຈຸດທຳອິດເພື່ອເລີ່ມຕົ້ນ. + Snap to drawing ດູດຈັບກັບຮູບແຕ້ມ + Endpoints ຈຸດປາຍ + Midpoints ຈຸດເຄິ່ງກາງ + Intersections ຈຸດຕັດກັນ + Paths ເສັ້ນທາງເດີນ + Sensitivity ຄວາມໄວຕໍ່ການຕອບສະໜອງ + Unit ຫົວໜ່ວຍ + Decimals ຕຳແໜ່ງທົດສະນິຍົມ + Calibrate from two points ປັບທຽບມາດຕາສ່ວນຈາກສອງຈຸດ + Entire page ທັງໝົດໜ້າ + Viewport rectangle in page points (x, y, width, height) ຂອບເຂດສີ່ແຈສາກມຸມມອງໃນຈຸດໜ້າເຈ້ຍ (x, y, ລວງກວ້າງ, ລວງສູງ) + Viewport ພື້ນທີ່ມຸມມອງ + Apply scale ນຳໃຊ້ມາດຕາສ່ວນ + Saved measurements ການວັດແທກທີ່ບັນທຶກໄວ້ + Saved measurements. ບັນທຶກການວັດແທກແລ້ວ. + Endpoint ຈຸດປາຍ + Midpoint ຈຸດເຄິ່ງກາງ + Intersection ຈຸດຕັດກັນ + Path ເສັ້ນທາງເດີນ + This drawing exceeds the snapping limit; only the first paths are used. ຮູບແຕ້ມນີ້ເກີນຂີດຈຳກັດການດູດຈັບ; ຈະໃຊ້ສະເພາະເສັ້ນທາງເດີນຊຸດທຳອິດເທົ່ານັ້ນ. + Some page content couldn't be read; snapping uses the rest. ບໍ່ສາມາດອ່ານເນື້ອໃນບາງສ່ວນຂອງໜ້າໄດ້; ການດູດຈັບຈະໃຊ້ສ່ວນທີ່ເຫຼືອ. + Unsupported measurements ການວັດແທກທີ່ບໍ່ຮອງຮັບ + Label ປ້າຍຊື່ + {n} measurements use an unsupported format and are left out. ການວັດແທກ {n} ລາຍການໃຊ້ຮູບແບບທີ່ບໍ່ຮອງຮັບ ແລະ ຖືກຍົກເວັ້ນອອກ. + This area has too many overlapping paths; intersection snapping is limited. ພື້ນທີ່ນີ້ມີເສັ້ນທາງເດີນທັບຊ້ອນກັນຫຼາຍເກີນໄປ; ການດູດຈັບຈຸດຕັດກັນຈຶ່ງຖືກຈຳກັດ. + This measurement needs at least {n} points. ການວັດແທກນີ້ຕ້ອງການຢ່າງໜ້ອຍ {n} ຈຸດ. + Switch to two-page view first to show the cover page ກະລຸນາປ່ຽນໄປເປັນມຸມມອງສອງໜ້າກ່ອນເພື່ອສະແດງໜ້າປົກ + Page display: {layout} ການສະແດງໜ້າ: {layout} + Fit to width scrolling ເລື່ອນໜ້າແບບພໍດີລວງກວ້າງ + Fit one full page ພໍດີເຕັມໜ້າເທື່ອລະໜ້າ + Created a PDF from {n} files ສ້າງ PDF ຈາກ {n} ໄຟລ໌ແລ້ວ + PDF, images and text PDF, ຮູບພາບ ແລະ ຂໍ້ຄວາມ + Insert a file before page {label} ແຊກໄຟລ໌ກ່ອນໜ້າ {label} + Insert a file at the end ແຊກໄຟລ໌ໄວ້ທ້າຍສຸດ + Save pages ບັນທຶກໜ້າ + Save these pages as one PDF ບັນທຶກໜ້າເຫຼົ່ານີ້ເປັນ PDF ດຽວ + No changes to save ບໍ່ມີການປ່ຽນແປງໃດໆທີ່ຈະບັນທຶກ + Created a PDF from {n} files; left out: {names} ສ້າງ PDF ຈາກ {n} ໄຟລ໌ແລ້ວ; ຍົກເວັ້ນ: {names} + Created a PDF from the first {n} files ສ້າງ PDF ຈາກ {n} ໄຟລ໌ທຳອິດແລ້ວ + None of those files can be made into a PDF; use PDFs, images or .txt files ບໍ່ມີໄຟລ໌ໃດໃນນັ້ນສາມາດສ້າງເປັນ PDF ໄດ້; ກະລຸນາໃຊ້ໄຟລ໌ PDF, ຮູບພາບ ຫຼື .txt + Choose a PNG or JPEG image (up to 4 MiB). Transparency is preserved. ເລືອກຮູບພາບ PNG ຫຼື JPEG (ສູງສຸດບໍ່ເກີນ 4 MiB). ຄວາມໂປ່ງໃສຈະຖືກຮັກສາໄວ້. + Couldn't import the signature image: {e} ບໍ່ສາມາດນຳເຂົ້າຮູບພາບລາຍເຊັນໄດ້: {e} + Go to page… ໄປຫາໜ້າ… + For page sizes and margins. ສຳລັບຂະໜາດໜ້າ ແລະ ຂອບເຈ້ຍ. + Reopen the files that were open when PdfCraft last closed ເປີດໄຟລ໌ທີ່ເຄີຍເປີດຢູ່ຕອນປິດ PdfCraft ຄັ້ງຫຼ້າສຸດຄືນໃໝ່ + The PDF text fonts can't draw “{c}” ({code}). Choose supported text. ຟອນຂໍ້ຄວາມ PDF ບໍ່ສາມາດສະແດງ “{c}” ({code}) ໄດ້. ກະລຸນາເລືອກຂໍ້ຄວາມທີ່ຮອງຮັບ. + The standard fonts can't draw “{c}” ({code}). Only Western European characters can be added as text for now. ຟອນມາດຕະຖານບໍ່ສາມາດສະແດງ “{c}” ({code}) ໄດ້. ໃນປະຈຸບັນ ສາມາດເພີ່ມໄດ້ສະເພາະຕົວອັກສອນຢູໂຣບຕາເວັນຕົກເທົ່ານັ້ນ. + This field's font can't draw “{c}” ({code}), so PdfCraft shows ? in its place. The value is saved, and other PDF viewers redraw the field from it. ຟອນຂອງຊ່ອງນີ້ບໍ່ສາມາດສະແດງ “{c}” ({code}) ໄດ້, ດັ່ງນັ້ນ PdfCraft ຈຶ່ງສະແດງ ? ແທນ. ຄ່ານີ້ຖືກບັນທຶກໄວ້ ແລະ ໂປຣແກຣມອ່ານ PDF ອື່ນໆຈະແຕ້ມສະແດງຜົນຊ່ອງຂໍ້ມູນຄືນໃໝ່ຈາກຄ່ານັ້ນ. + The fonts PdfCraft writes with can't draw “{c}” ({code}), so it shows as ? in every PDF viewer. The text is saved. ຟອນທີ່ PdfCraft ໃຊ້ຂຽນບໍ່ສາມາດສະແດງ “{c}” ({code}) ໄດ້, ດັ່ງນັ້ນມັນຈຶ່ງສະແດງເປັນ ? ໃນທຸກໂປຣແກຣມອ່ານ PDF. ຂໍ້ຄວາມຖືກບັນທຶກໄວ້ແລ້ວ. + Open arrow ລູກສອນປາຍເປີດ + Closed arrow ລູກສອນປາຍປິດ + Butt ຮາບພຽງ + Reverse open arrow ລູກສອນປາຍເປີດປີ້ນກັບ + Reverse closed arrow ລູກສອນປາຍປິດປີ້ນກັບ + Slash ເສັ້ນຂີດສະຫຼຽງ + Larger pages ໜ້າໃຫຍ່ຂຶ້ນ + Smaller pages ໜ້າລົງນ້ອຍ + Reset page size ຕັ້ງຄ່າຂະໜາດໜ້າຄືນໃໝ່ + Date format ຮູບແບບວັນທີ + Fill & Sign dates ວັນທີຕື່ມ ແລະ ເຊັນ + Pattern ຮູບແບບ + Today: {date} ມື້ນີ້: {date} + yyyy or yy year · m or mm month · mmm or mmmm month name · d or dd day · ddd or dddd weekday. H, h, M, s and t are time letters and can't be used on their own: put {escape} before a letter to show it as is. yyyy ຫຼື yy ປີ · m ຫຼື mm ເດືອນ · mmm ຫຼື mmmm ຊື່ເດືອນ · d ຫຼື dd ວັນ · ddd ຫຼື dddd ວັນໃນອາທິດ. H, h, M, s ແລະ t ແມ່ນຕົວອັກສອນເວລາ ແລະ ບໍ່ສາມາດໃຊ້ດ່ຽວໄດ້: ໃສ່ {escape} ໄວ້ທາງໜ້າຕົວອັກສອນເພື່ອສະແດງຕາມເດີມ. + Same as interface ({language}) ຄືກັບພາສາລະບົບ ({language}) + {chars} can't be written into the PDF yet: Fill & Sign text is Western European only. Pick a numeric format such as dd.mm.yyyy. ຍັງບໍ່ສາມາດຂຽນ {chars} ລົງໃນ PDF ໄດ້ເທື່ອ: ຂໍ້ຄວາມຕື່ມ ແລະ ເຊັນ ຮອງຮັບສະເພາະຕົວອັກສອນຢູໂຣບຕາເວັນຕົກເທົ່ານັ້ນ. ກະລຸນາເລືອກຮູບແບບຕົວເລກ ເຊັ່ນ dd.mm.yyyy. + Opens the printer driver's preferences. They are saved for every print from this computer; the copies, two-sided, grayscale and paper chosen here still apply. ເປີດການຕັ້ງຄ່າໄດຣເວີເຄື່ອງພິມ. ການຕັ້ງຄ່າຈະຖືກບັນທຶກໄວ້ສຳລັບທຸກການພິມຈາກຄອມພິວເຕີນີ້; ຈຳນວນຊຸດ, ການພິມສອງໜ້າ, ລະດັບສີເທົາ ແລະ ເຈ້ຍທີ່ເລືອກຢູ່ນີ້ຈະຍັງຄົງມີຜົນບັງຄັບໃຊ້. + The printer driver's own settings for this print: paper tray, paper type, finishing and more. ການຕັ້ງຄ່າສະເພາະຂອງໄດຣເວີເຄື່ອງພິມສຳລັບການພິມນີ້: ຖາດເຈ້ຍ, ປະເພດເຈ້ຍ, ການຕົກແຕ່ງຂັ້ນສຸດທ້າຍ ແລະ ອື່ນໆ. + Couldn't open the printer's preferences: {e} ບໍ່ສາມາດເປີດການຕັ້ງຄ່າຂອງເຄື່ອງພິມໄດ້: {e} + Printer properties ຄຸນສົມບັດເຄື່ອງພິມ + Reset to printer defaults ຕັ້ງຄ່າຄືນເປັນຄ່າເລີ່ມຕົ້ນຂອງເຄື່ອງພິມ + This printer offers no settings of its own. ເຄື່ອງພິມນີ້ບໍ່ມີການຕັ້ງຄ່າສະເພາະຂອງຕົນເອງ. + % of all commits % ຂອງຄອມມິດທັງໝົດ + +Bin +Bin + +LOC +LOC + @{login}: {prs} PRs, {commits} commits, +{added} / −{deleted} lines (Δ {delta}), +{bin_added} / −{bin_deleted} binary assets, {first} – {last} @{login}: {prs} PRs, {commits} commits, +{added} / −{deleted} ແຖວ (Δ {delta}), +{bin_added} / −{bin_deleted} ໄຟລ໌ບາຍນາຣີ, {first} – {last} + A button ປຸ່ມ + A link ລິ້ງ + A script ສະຄຣິບ + About ກ່ຽວກັບ + Add {what} ເພີ່ມ {what} + Align fields ຈັດລຽງຊ່ອງຂໍ້ມູນ + Another file dialog is still open. Finish with it first. ກ່ອງເລືອກໄຟລ໌ອື່ນຍັງເປີດຢູ່. ກະລຸນາດຳເນີນການໃຫ້ສຳເລັດກ່ອນ. + Basic constraints ຂໍ້ກຳນົດພື້ນຖານ + Binary assets added ເພີ່ມໄຟລ໌ບາຍນາຣີແລ້ວ + Binary assets removed ລຶບໄຟລ໌ບາຍນາຣີອອກແລ້ວ + Change document properties ປ່ຽນແປງຄຸນສົມບັດເອກະສານ + Change {what} ປ່ຽນແປງ {what} + Commits ຄອມມິດ + Company ບໍລິສັດ + Contributors ຜູ້ປະກອບສ່ວນ + Couldn't show the file picker. Please try again. ບໍ່ສາມາດສະແດງກ່ອງເລືອກໄຟລ໌ໄດ້. ກະລຸນາລອງໃໝ່ອີກຄັ້ງ. + Create ສ້າງ + Create PDF from images ສ້າງ PDF ຈາກຮູບພາບ + Cut and stack ຕັດ ແລະ ວາງຊ້ອນກັນ + DPI sets the printed page size without resampling the image. DPI ກຳນົດຂະໜາດໜ້າພິມໂດຍບໍ່ມີການປັບຄວາມລະອຽດຮູບໃໝ່. + Default page display ການສະແດງໜ້າເລີ່ມຕົ້ນ + Default workspace mode ໂໝດພື້ນທີ່ເຮັດວຽກເລີ່ມຕົ້ນ + Default zoom ຂະໜາດຊູມເລີ່ມຕົ້ນ + Display name ຊື່ສະແດງຜົນ + Distribute fields ກະຈາຍໄລຍະຫ່າງຊ່ອງຂໍ້ມູນ + Documents and view ເອກະສານ ແລະ ການເບິ່ງ + Dynamic XFA form laid out from its template: {pages}, {fields}. ຟອມ XFA ແບບໄດນາມິກຈັດວາງຈາກແມ່ແບບ: {pages}, {fields}. + Files are combined in this order. Leave Pages empty to take every page. ໄຟລ໌ຈະຖືກຮວມຕາມລຳດັບນີ້. ປະຊ່ອງໜ້າຫວ່າງໄວ້ເພື່ອເອົາທຸກໜ້າ. + First ທຳອິດ + First commit ຄອມມິດທຳອິດ + Grab bag ອື່ນໆທົ່ວໄປ + H / Space (hold) H / Space (ກົດຄ້າງ) + Home / End Home / End + Last ສຸດທ້າຍ + Last commit ຄອມມິດສຸດທ້າຍ + Line delta ການປ່ຽນແປງຈຳນວນແຖວ + Line ending ຈຸດຈົບຂອງເສັ້ນ + Lines +/− ແຖວ +/− + Lines added ແຖວທີ່ເພີ່ມ + Lines deleted ແຖວທີ່ລຶບ + Mark differences ໝາຍຈຸດແຕກຕ່າງ + Mark for redaction ໝາຍສຳລັບການປິດບັງ + Mark pages for redaction ໝາຍໜ້າສຳລັບການປິດບັງ + Match field sizes ປັບຂະໜາດຊ່ອງຂໍ້ມູນໃຫ້ເທົ່າກັນ + Merged PRs PR ທີ່ຮວມແລ້ວ + Model ໂມເດວ + Models ໂມເດວ + Name (A–Z) ຊື່ (A–Z) + No contributor data was built into this copy. ບໍ່ມີຂໍ້ມູນຜູ້ປະກອບສ່ວນຖືກສ້າງຂຶ້ນໃນສະບັບນີ້. + No model credits were built into this copy. ບໍ່ມີຂໍ້ມູນເຄຣດິດໂມເດວຖືກສ້າງຂຶ້ນໃນສະບັບນີ້. + Only continue if you trust this document. An address can carry information from the document, such as what you typed into its form. ສືບຕໍ່ສະເພາະເມື່ອທ່ານເຊື່ອຖືເອກະສານນີ້ເທົ່ານັ້ນ. ທີ່ຢູ່ສາມາດນຳສົ່ງຂໍ້ມູນຈາກເອກະສານໄດ້ ເຊັ່ນ ສິ່ງທີ່ທ່ານພິມລົງໃນຟອມ. + Open email app ເປີດແອັບອີເມວ + Open link ເປີດລິ້ງ + Open this web page? ເປີດໜ້າເວັບນີ້ຫຼືບໍ່? + PRs PRs + Place saved {what} ວາງ {what} ທີ່ບັນທຶກໄວ້ + Print single-sided. Keep the sheets in order, cut at the marks, then stack the piles left to right, top to bottom. ພິມໜ້າດຽວ. ຮັກສາລຳດັບແຜ່ນເຈ້ຍໄວ້, ຕັດຕາມຮອຍໝາຍ, ແລ້ວວາງຊ້ອນກອງເຈ້ຍຈາກຊ້າຍຫາຂວາ, ແຕ່ເທິງລົງລຸ່ມ. + Real name ຊື່ແທ້ + Remove saved {what} ລຶບ {what} ທີ່ບັນທຶກໄວ້ອອກ + Reverse the order ປີ້ນລຳດັບ + Run form script ດຳເນີນການສະຄຣິບຟອມ + SHA-1 digest SHA-1 ໄດເຈສ + SHA-256 digest SHA-256 ໄດເຈສ + Scripted content must be usable with a keyboard and assistive technology. Check the document's scripts. ເນື້ອໃນທີ່ມີສະຄຣິບຕ້ອງສາມາດໃຊ້ງານໄດ້ດ້ວຍຄີບອດ ແລະ ເຕັກໂນໂລຊີຊ່ວຍເຫຼືອ. ກວດສອບສະຄຣິບຂອງເອກະສານ. + Scripts run in a sandbox without file or network access. A script that asks to open a web page needs your permission first. With JavaScript off, Acrobat's standard format, validate and calculate functions still work. ສະຄຣິບເຮັດວຽກໃນ sandbox ໂດຍບໍ່ມີການເຂົ້າເຖິງໄຟລ໌ ຫຼື ເຄືອຂ່າຍ. ສະຄຣິບທີ່ຮ້ອງຂໍເປີດໜ້າເວັບຕ້ອງໄດ້ຮັບການອະນຸຍາດຈາກທ່ານກ່ອນ. ເຖິງແມ່ນວ່າຈະປິດ JavaScript, ຟັງຊັນມາດຕະຖານຂອງ Acrobat ໃນການຈັດຮູບແບບ, ກວດສອບຄວາມຖືກຕ້ອງ ແລະ ຄິດໄລ່ ຍັງຄົງໃຊ້ງານໄດ້. + Selected image files: {count} ໄຟລ໌ຮູບພາບທີ່ເລືອກ: {count} + Show ສະແດງ + Sign yourself ເຊັນດ້ວຍຕົນເອງ + Sort ຈັດຮຽງ + Squiggly ເສັ້ນຄື້ນ + Table ຕາຕະລາງ + Table rows belong directly in a table or its head, body or foot. Fix the table's tags. ແຖວຕາຕະລາງຕ້ອງຢູ່ໃນຕາຕະລາງໂດຍກົງ ຫຼື ຢູ່ໃນຫົວ, ຕົວເນື້ອໃນ ຫຼື ທ້າຍຂອງຕາຕະລາງ. ແກ້ໄຂແທັກຂອງຕາຕະລາງ. + Text recognition isn't installed: its models are missing (run `cargo xtask models`, or set PDFCRAFT_MODELS). ການຮັບຮູ້ຂໍ້ຄວາມຍັງບໍ່ໄດ້ຕິດຕັ້ງ: ໂມເດວສູນຫາຍ (ດຳເນີນການ `cargo xtask models`, ຫຼື ຕັ້ງຄ່າ PDFCRAFT_MODELS). + That didn't work: an internal error stopped it ({m}). ບໍ່ສຳເລັດ: ເກີດຂໍ້ຜິດພາດພາຍໃນຢຸດການເຮັດວຽກ ({m}). + The Windows store's digital IDs couldn't be listed: {e} ບໍ່ສາມາດສະແດງລາຍການ ID ດິຈິທອນຂອງ Windows store ໄດ້: {e} + The document changed while you were choosing a file, so nothing was changed. ເອກະສານມີການປ່ຽນແປງໃນຂະນະທີ່ທ່ານກຳລັງເລືອກໄຟລ໌, ດັ່ງນັ້ນຈຶ່ງບໍ່ມີສິ່ງໃດຖືກປ່ຽນແປງ. + The document was closed before it could be saved. ເອກະສານຖືກປິດກ່ອນທີ່ຈະສາມາດບັນທຶກໄດ້. + The pages were extracted but not deleted, because the document changed while you were choosing a folder. ແຍກໜ້າອອກມາແລ້ວແຕ່ບໍ່ໄດ້ຖືກລຶບ, ເນື່ອງຈາກເອກະສານມີການປ່ຽນແປງໃນຂະນະທີ່ທ່ານກຳລັງເລືອກໂຟນເດີ. + This web address mixes letters from different alphabets, a common way to imitate another site's name. ທີ່ຢູ່ເວັບນີ້ມີການປະສົມຕົວອັກສອນຈາກລະບົບຕົວຂຽນທີ່ຕ່າງກັນ, ເຊິ່ງເປັນວິທີທົ່ວໄປໃນການປອມແປງຊື່ເວັບໄຊອື່ນ. + This web address uses letters from another alphabet, which can look like familiar ones. ທີ່ຢູ່ເວັບນີ້ໃຊ້ຕົວອັກສອນຈາກລະບົບຕົວຂຽນອື່ນ, ເຊິ່ງອາດເບິ່ງຄືກັບຕົວອັກສອນທີ່ຄຸ້ນເຄີຍ. + Use 72 DPI (one point per pixel) ໃຊ້ 72 DPI (ໜຶ່ງຈຸດຕໍ່ພິກເຊວ) + Use custom DPI ໃຊ້ DPI ກຳນົດເອງ + Use each image's embedded DPI; use 72 DPI when it is absent. ໃຊ້ DPI ທີ່ຝັງຢູ່ໃນແຕ່ລະຮູບພາບ; ໃຊ້ 72 DPI ເມື່ອບໍ່ມີຂໍ້ມູນ. + Use image resolution ໃຊ້ຄວາມລະອຽດຂອງຮູບພາບ + Use {what} ໃຊ້ {what} + Used when a PDF doesn't ask for a layout or zoom. Continuous scrolling never snaps between pages. ໃຊ້ເມື່ອ PDF ບໍ່ໄດ້ກຳນົດໂຄງຮ່າງ ຫຼື ມາດຕາສ່ວນຊູມ. ການເລື່ອນແບບຕໍ່ເນື່ອງຈະບໍ່ມີການດູດຕິດລະຫວ່າງໜ້າ. + Used when opening PDFs. An explicit launch or control mode takes precedence for the session. ໃຊ້ເມື່ອເປີດ PDF. ຮູບແບບການເປີດ ຫຼື ການຄວບຄຸມທີ່ກຳນົດຊັດເຈນຈະມີຜົນກ່ອນສຳລັບເຊສຊັນນັ້ນ. + Username ຊື່ຜູ້ໃຊ້ + Write this email? ຂຽນອີເມວນີ້ຫຼືບໍ່? + XFA form: its fields and its XFA data are kept in step, so other viewers show what you fill in. ຟອມ XFA: ຊ່ອງຂໍ້ມູນ ແລະ ຂໍ້ມູນ XFA ຈະຖືກຮັກສາໃຫ້ຕົງກັນສະເໝີ, ເພື່ອໃຫ້ຕົວເບິ່ງເອກະສານອື່ນສະແດງສິ່ງທີ່ທ່ານຕື່ມ. + {n} contributors · {c} commits {n} ຜູ້ປະກອບສ່ວນ · {c} ຄອມມິດ + {who} in this document tried to open an address PdfCraft won't open: {e}. {who} ໃນເອກະສານນີ້ພະຍາຍາມເປີດທີ່ຢູ່ທີ່ PdfCraft ບໍ່ສາມາດເປີດໄດ້: {e}. + {who} in this document tried to open an address PdfCraft won't open: {e}. Only web (http, https) and email (mailto) links open from documents. {who} ໃນເອກະສານນີ້ພະຍາຍາມເປີດທີ່ຢູ່ທີ່ PdfCraft ບໍ່ສາມາດເປີດໄດ້: {e}. ສະເພາະລິ້ງເວັບ (http, https) ແລະ ອີເມວ (mailto) ເທົ່ານັ້ນທີ່ສາມາດເປີດຈາກເອກະສານໄດ້. + {who} in this document wants to open this address in your browser: {who} ໃນເອກະສານນີ້ຕ້ອງການເປີດທີ່ຢູ່ນີ້ໃນບຣາວເຊີຂອງທ່ານ: + {who} in this document wants to open your email app with this address: {who} ໃນເອກະສານນີ້ຕ້ອງການເປີດແອັບອີເມວຂອງທ່ານດ້ວຍທີ່ຢູ່ນີ້: + ΔLOC ΔLOC + −Bin −Bin + −LOC −LOC +@plural {n} field|{n} fields {n} ຊ່ອງຂໍ້ມູນ +@plural {n} field name collides with earlier files and will be renamed: {list}|{n} field names collide with earlier files and will be renamed: {list} {n} ຊື່ຊ່ອງຂໍ້ມູນຊ້ຳກັບໄຟລ໌ກ່ອນໜ້າ ແລະ ຈະຖືກປ່ຽນຊື່: {list} +@plural {n} page|{n} pages {n} ໜ້າ +signature pad Type ພິມ + Flatten Fill & Sign when saving ຮວມສ່ວນຕື່ມ ແລະ ເຊັນ ເມື່ອບັນທຶກ + Text, marks and signatures become part of the page. Other comments stay editable. ຂໍ້ຄວາມ, ເຄື່ອງໝາຍ ແລະ ລາຍເຊັນຈະກາຍເປັນສ່ວນໜຶ່ງຂອງໜ້າ. ຄວາມເຫັນອື່ນໆຍັງຄົງສາມາດແກ້ໄຂໄດ້. + Scroll tabs left ເລື່ອນແທັບໄປທາງຊ້າຍ + Scroll tabs right ເລື່ອນແທັບໄປທາງຂວາ + +# Shared field properties (Prepare a form). + Shared Field Properties ຄຸນສົມບັດຊ່ອງຂໍ້ມູນຮ່ວມ + {n} fields selected ເລືອກແລ້ວ {n} ຊ່ອງ + Mixed ປະສົມ + Custom font ຟອນກຳນົດເອງ + Only checked properties will change. Mixed means the selected fields have different values. ສະເພາະຄຸນສົມບັດທີ່ເລືອກເທົ່ານັ້ນທີ່ຈະປ່ຽນແປງ. "ປະສົມ" ໝາຍຄວາມວ່າຊ່ອງທີ່ເລືອກມີຄ່າແຕກຕ່າງກັນ. + Shift- or Ctrl/Command-click to select several fields. ກົດ Shift- ຫຼື Ctrl/Command-click ເພື່ອເລືອກຫຼາຍຊ່ອງຂໍ້ມູນ. + Font size 0 uses automatic sizing. ຂະໜາດຟອນ 0 ແມ່ນໃຊ້ການປັບຂະໜາດອັດຕະໂນມັດ. + Character limit: ຈຳກັດຈຳນວນຕົວອັກສອນ: + Character limit 0 means no limit. A comb of characters needs a limit. ຈຳກັດຕົວອັກສອນ 0 ໝາຍເຖິງບໍ່ຈຳກັດ. ການແບ່ງຊ່ອງຕົວອັກສອນຕ້ອງມີການກຳນົດຂອບເຂດ. + To change locked fields, also set Locked to No. ເພື່ອປ່ຽນແປງຊ່ອງທີ່ຖືກລັອກ, ໃຫ້ຕັ້ງຄ່າ ລັອກ ເປັນ ບໍ່. + Comb of characters ຊ່ອງຕາລາງຕົວອັກສອນ + The document changed while you were editing field properties. ເອກະສານມີການປ່ຽນແປງໃນຂະນະທີ່ທ່ານກຳລັງແກ້ໄຂຄຸນສົມບັດຊ່ອງຂໍ້ມູນ. + The document is no longer open. ເອກະສານບໍ່ໄດ້ເປີດຢູ່ອີກຕໍ່ໄປ. + The field properties dialog is no longer open. ກ່ອງຂໍ້ຄວາມຄຸນສົມບັດຊ່ອງຂໍ້ມູນບໍ່ໄດ້ເປີດຢູ່ອີກຕໍ່ໄປ. + The field properties could not be changed. ບໍ່ສາມາດປ່ຽນແປງຄຸນສົມບັດຊ່ອງຂໍ້ມູນໄດ້. + The selected fields could not be found. Select them again. ບໍ່ພົບຊ່ອງຂໍ້ມູນທີ່ເລືອກ. ກະລຸນາເລືອກໃໝ່ອີກຄັ້ງ. + The field {name} no longer exists. ຊ່ອງຂໍ້ມູນ {name} ບໍ່ມີຢູ່ນີ້ອີກຕໍ່ໄປ. + A selected field has no widget on any page, so the fields can't be edited together. ຊ່ອງຂໍ້ມູນທີ່ເລືອກບໍ່ມີ widget ໃນໜ້າໃດເລີຍ, ຈຶ່ງບໍ່ສາມາດແກ້ໄຂພ້ອມກັນໄດ້. + ({n} at {dpi} dpi, the largest size they can be drawn at) ({n} ທີ່ {dpi} dpi, ຂະໜາດໃຫຍ່ທີ່ສຸດທີ່ສາມາດສະແດງຜົນໄດ້) + +# Multi-object selection and movement (#844) +@plural {n} object selected|{n} objects selected ເລືອກແລ້ວ {n} ວັດຖຸ + Drag the selection to move it. Esc clears the selection. ລາກສ່ວນທີ່ເລືອກເພື່ອຍ້າຍ. Esc ເພື່ອຍົກເລີກການເລືອກ. + Shift-click to select several objects. Drag empty space to select an area. Shift-click ເພື່ອເລືອກຫຼາຍວັດຖຸ. ລາກໃສ່ພື້ນທີ່ຫວ່າງເພື່ອເລືອກຂອບເຂດ. + Select at most 1000 objects at a time. ເລືອກໄດ້ສູງສຸດບໍ່ເກີນ 1000 ວັດຖຸຕໍ່ຄັ້ງ. + Finish or discard the text being edited before selecting several objects. ເຮັດໃຫ້ສຳເລັດ ຫຼື ປະຖິ້ມຂໍ້ຄວາມທີ່ກຳລັງແກ້ໄຂກ່ອນທີ່ຈະເລືອກຫຼາຍວັດຖຸ. + Move object ຍ້າຍວັດຖຸ + Move objects ຍ້າຍຫຼາຍວັດຖຸ + Vertical text cannot be moved with this selection. ບໍ່ສາມາດຍ້າຍຂໍ້ຄວາມແນວຕັ້ງດ້ວຍການເລືອກນີ້ໄດ້. + Text used as a clipping path cannot be moved with this selection. ບໍ່ສາມາດຍ້າຍຂໍ້ຄວາມທີ່ໃຊ້ເປັນເສັ້ນທາງຕັດ (clipping path) ດ້ວຍການເລືອກນີ້ໄດ້. + These objects could not be moved. Select them again and try a smaller move. ບໍ່ສາມາດຍ້າຍວັດຖຸເຫຼົ່ານີ້ໄດ້. ກະລຸນາເລືອກໃໝ່ ແລະ ທົດລອງຍ້າຍດ້ວຍໄລຍະທີ່ສັ້ນລົງ. + This page contains objects that cannot be selected together. ໜ້ານີ້ມີວັດຖຸທີ່ບໍ່ສາມາດເລືອກພ້ອມກັນໄດ້. + Fill colour ສີຕື່ມ + No fill ບໍ່ຕື່ມສີ + Fill colour: none ສີຕື່ມ: ບໍ່ມີ + +# Keyboard key names, distinct from command labels. +key Ctrl Ctrl +key Shift Shift +key Delete Delete +key Esc Esc +key Home Home +key End End +key Space Space + Grid view ມຸມມອງຕາຕະລາງ + List view ມຸມມອງລາຍການ + Files are combined in the order shown. Drag them to change it. ໄຟລ໌ຈະຖືກຮວມຕາມລຳດັບທີ່ສະແດງ. ລາກເພື່ອປ່ຽນລຳດັບ. + Preview unavailable: {e} ບໍ່ສາມາດສະແດງຕົວຢ່າງໄດ້: {e} + Pages: {k} of {n} ໜ້າ: {k} ຈາກ {n} + Check the pages ກວດສອບໜ້າ + Switch to List view to change the pages it takes. ປ່ຽນເປັນມຸມມອງລາຍການເພື່ອປ່ຽນໜ້າທີ່ເລືອກ. + Expand all ຂະຫຍາຍທັງໝົດ + Collapse all ຫຍໍ້ເຂົ້າທັງໝົດ + Collapse all pages ຫຍໍ້ທຸກໜ້າ + Expand all pages ຂະຫຍາຍທຸກໜ້າ + Remove page ລຶບໜ້າອອກ + Remove {n} pages ລຶບອອກ {n} ໜ້າ + +# Shared panel docking + Reset panel layout ຕັ້ງຄ່າໂຄງຮ່າງແຜງຄືນໃໝ່ + Float panel ແຍກແຜງໃຫ້ລອຍ + Move to group ຍ້າຍໄປກຸ່ມ + Panels ແຜງ + Resize panels ປັບຂະໜາດແຜງ + Resize panel window ປັບຂະໜາດປ່ອງຢ້ຽມແຜງ + Tools ເຄື່ອງມື + Inspector ຕົວສະແດງກວດກາ + +# Architectural print controls (follow-up to #599). + PDF page: {size} ໜ້າ PDF: {size} + Match page at 100% ປັບໃຫ້ກົງກັບໜ້າທີ່ 100% + PDF scale: {scale}% ມາດຕາສ່ວນ PDF: {scale}% + Printer paper and scaling may differ. Check driver settings. ເຈ້ຍເຄື່ອງພິມ ແລະ ມາດຕາສ່ວນອາດແຕກຕ່າງກັນ. ກວດສອບການຕັ້ງຄ່າໄດຣເວີ. + Drawing scale changes. Use Actual size for full-scale plans. ມາດຕາສ່ວນຮູບແຕ້ມປ່ຽນແປງ. ໃຊ້ "ຂະໜາດຈິງ" ສຳລັບແບບແຜນເຕັມສ່ວນ. + Reload documents when their files change on disk ໂຫຼດເອກະສານຄືນໃໝ່ເມື່ອໄຟລ໌ໃນດິສກ໌ມີການປ່ຽນແປງ + This file changed on disk. Reload shows the new version and drops your unsaved changes; Save replaces it with this version. ໄຟລ໌ນີ້ມີການປ່ຽນແປງໃນດິສກ໌. "ໂຫຼດຄືນໃໝ່" ຈະສະແດງເວີຊັນໃໝ່ ແລະ ປະຖິ້ມການປ່ຽນແປງທີ່ຍັງບໍ່ໄດ້ບັນທຶກ; "ບັນທຶກ" ຈະຂຽນທັບດ້ວຍເວີຊັນນີ້. + Reload ໂຫຼດຄືນໃໝ່ + Couldn't reload {name}: {e} ບໍ່ສາມາດໂຫຼດ {name} ຄືນໃໝ່ໄດ້: {e} + Select page {label} ເລືອກໜ້າ {label} + Rotate page {label} counterclockwise ໝູນໜ້າ {label} ທວນເຂັມໂມງ + Rotate page {label} clockwise ໝູນໜ້າ {label} ຕາມເຂັມໂມງ + Delete page {label} ລຶບໜ້າ {label} + Scroll speed (mouse wheel and arrow keys) ຄວາມໄວໃນການເລື່ອນ (ລໍ້ເມົາສ໌ ແລະ ປຸ່ມລູກສອນ) +scroll speed Slow ຊ້າ +scroll speed Normal ປົກກະຕິ +scroll speed Fast ໄວ + Animation effects ຜົນກະທົບພາບເຄື່ອນໄຫວ +animation effects On ເປີດ +animation effects Off ປິດ + Enhance camera image ປັບປຸງຮູບພາບຈາກກ້ອງ + Drag the corners onto the document's edges, then choose Enhance page. ລາກມຸມຕ່າງໆໄປໃສ່ຂອບຂອງເອກະສານ, ຈາກນັ້ນເລືອກ ປັບປຸງໜ້າ. + Enhance page ປັບປຸງໜ້າ + Done adding text ເພີ່ມຂໍ້ຄວາມສຳເລັດແລ້ວ + Discard this text (Esc) ປະຖິ້ມຂໍ້ຄວາມນີ້ (Esc) + Clean-up ອະນາໄມປັບແຕ່ງ + Original ຕົ້ນສະບັບ + Greyscale ລະດັບສີເທົາ + Black and white ຂາວດຳ + Reading colours ສີສຳລັບການອ່ານ + Replace document colours ປ່ຽນແທນສີເອກະສານ + Black on white ຕົວໜັງສືດຳພື້ນຂາວ + White on black ຕົວໜັງສືຂາວພື້ນດຳ + Yellow on black ຕົວໜັງສືເຫຼືອງພື້ນດຳ + Green on black ຕົວໜັງສືຂຽວພື້ນດຳ + Page background ພື້ນຫຼັງໜ້າ + Only change the colour of black text or line art ປ່ຽນສະເພາະສີຂອງຂໍ້ຄວາມສີດຳ ຫຼື ລາຍເສັ້ນ + Change the colour of line art as well as text ປ່ຽນສີຂອງລາຍເສັ້ນພ້ອມທັງຂໍ້ຄວາມ + Colours are remapped while rendering; the document itself never changes. ສີຈະຖືກຈັບຄູ່ໃໝ່ໃນຂະນະສະແດງຜົນ; ຕົວເອກະສານເອງຈະບໍ່ມີການປ່ຽນແປງ. + This printer's driver doesn't take two-sided settings from other programs, so its own setting applies. Change it in Properties… ໄດຣເວີຂອງເຄື່ອງພິມນີ້ບໍ່ຮັບການຕັ້ງຄ່າການພິມສອງໜ້າຈາກໂປຣແກຣມອື່ນ, ດັ່ງນັ້ນຈຶ່ງໃຊ້ການຕັ້ງຄ່າຂອງມັນເອງ. ປ່ຽນແປງໄດ້ທີ່ ຄຸນສົມບັດ… + Browser's print dialog ກ່ອງຂໍ້ຄວາມການພິມຂອງບຣາວເຊີ + Copies, two-sided printing and colour are chosen in the browser's print dialog. ຈຳນວນຊຸດ, ການພິມສອງໜ້າ ແລະ ສີ ແມ່ນຖືກເລືອກໃນກ່ອງຂໍ້ຄວາມການພິມຂອງບຣາວເຊີ. + Preparing {n} sheets for printing… ກຳລັງກຽມ {n} ແຜ່ນສຳລັບການພິມ… + Preparing sheet {done} of {total} for printing… ກຳລັງກຽມແຜ່ນ {done} ຈາກ {total} ສຳລັບການພິມ… + Opening the browser's print dialog… ກຳລັງເປີດກ່ອງຂໍ້ຄວາມການພິມຂອງບຣາວເຊີ… + Couldn't print from the browser ({e}); downloaded {name} to print instead ບໍ່ສາມາດພິມຈາກບຣາວເຊີໄດ້ ({e}); ດາວໂຫຼດ {name} ເພື່ອນຳໄປພິມແທນ + Tools panel side ດ້ານຂອງແຜງເຄື່ອງມື + Add comment ເພີ່ມຄວາມເຫັນ + Change tag properties ປ່ຽນຄຸນສົມບັດແທັກ +# Accessibility structure tags. + Tags panel ແຜງແທັກ + Tags ແທັກ + Tag type ປະເພດແທັກ + Actual text ຂໍ້ຄວາມຈິງ + Find a tag ຊອກຫາແທັກ + Collapse tag ຫຍໍ້ແທັກ + Expand tag ຂະຫຍາຍແທັກ + Revert changes ຍົກເລີກການປ່ຽນແປງ + Save tag properties ບັນທຶກຄຸນສົມບັດແທັກ + This document has no editable structure tags. ເອກະສານນີ້ບໍ່ມີແທັກໂຄງສ້າງທີ່ສາມາດແກ້ໄຂໄດ້. + {n} tags {n} ແທັກ + Save or revert changes before selecting another tag. ບັນທຶກ ຫຼື ຍົກເລີກການປ່ຽນແປງກ່ອນທີ່ຈະເລືອກແທັກອື່ນ. + Left out: {names} ຍົກເວັ້ນ: {names} + already a PDF ເປັນ PDF ຢູ່ແລ້ວ + no unused output name ບໍ່ມີຊື່ຜົນອອກທີ່ຍັງບໍ່ໄດ້ໃຊ້ + no output folder was chosen ບໍ່ໄດ້ເລືອກໂຟນເດີຜົນອອກ +@plural Downloaded {n} PDF|Downloaded {n} PDFs ດາວໂຫຼດແລ້ວ {n} PDF + Scan ສະແກນ + Sign a sheet of white paper and take a photo of it in bright, even light (use the flash). Choose the photo or drop it here: PdfCraft finds the signature and removes the paper. ເຊັນລົງໃນເຈ້ຍສີຂາວ ແລະ ຖ່າຍຮູບໃນບ່ອນທີ່ມີແສງສະຫວ່າງພຽງພໍ ແລະ ສະໝ່ຳສະເໝີ (ໃຊ້ແຟລຊ). ເລືອກຮູບ ຫຼື ລາກມາວາງຢູ່ນີ້: PdfCraft ຈະກວດຫາລາຍເຊັນ ແລະ ລຶບພື້ນເຈ້ຍອອກ. + Choose photo… ເລືອກຮູບຖ່າຍ… + No photo chosen ບໍ່ໄດ້ເລືອກຮູບຖ່າຍ + Photo ຮູບຖ່າຍ + Ink sensitivity ຄວາມໄວຕໍ່ນ້ຳມຶກ + No signature was found in the frame. Move the frame over the signature or raise the ink sensitivity. ບໍ່ພົບລາຍເຊັນໃນກອບ. ຍ້າຍກອບໄປທັບລາຍເຊັນ ຫຼື ເພີ່ມຄວາມໄວຕໍ່ນ້ຳມຶກ. + Couldn't use the photo: {e} ບໍ່ສາມາດໃຊ້ຮູບຖ່າຍໄດ້: {e} + +# PDF tab context menu (#1233) + Close Tab ປິດແທັບ + Reopen Closed Tab ເປີດແທັບທີ່ປິດຕືນໃໝ່ + Reveal in Finder ສະແດງໃນ Finder + Reveal in File Explorer ສະແດງໃນ File Explorer + Other colour… ສີອື່ນໆ… + Recent colours ສີທີ່ໃຊ້ຫຼ້າສຸດ + Couldn't follow linked PDF: {reason} ບໍ່ສາມາດເປີດໄປຫາ PDF ທີ່ເຊື່ອມໂຍງໄດ້: {reason} + The linked PDF opened, but its named destination was not applied. ເປີດ PDF ທີ່ເຊື່ອມໂຍງແລ້ວ, ແຕ່ບໍ່ໄດ້ນຳໃຊ້ປາຍທາງທີ່ມີຊື່. + The linked PDF opened, but its page destination was out of range. ເປີດ PDF ທີ່ເຊື່ອມໂຍງແລ້ວ, ແຕ່ໜ້າປາຍທາງຢູ່ນອກຂອບເຂດ. + Local cross-PDF links require the desktop app ລິ້ງຂ້າມ PDF ພາຍໃນເຄື່ອງຕ້ອງການແອັບເດັສທັອບ + Cut Image ຕັດຮູບພາບ + Redact Image ປິດບັງຮູບພາບ + Create Link… ສ້າງລິ້ງ… + Recognize Text… ຮັບຮູ້ຂໍ້ຄວາມ… + Minimize ຫຍໍ້ໜ້າຕ່າງ + Maximize ຂະຫຍາຍເຕັມຈໍ + Restore ຄືນຄ່າຂະໜາດເດີມ + Use system title bar ໃຊ້ແຖບຫົວຂໍ້ຂອງລະບົບ + Show a basic title bar for the window buttons instead of the tab strip. GNOME doesn't draw title bars for apps, so this one doesn't follow its theme. ສະແດງແຖບຫົວຂໍ້ແບບພື້ນຖານສຳລັບປຸ່ມປ່ອງຢ້ຽມແທນແຖບແທັບ. GNOME ບໍ່ແຕ້ມແຖບຫົວຂໍ້ສຳລັບແອັບ, ດັ່ງນັ້ນອັນນີ້ຈຶ່ງບໍ່ເປັນໄປຕາມຮູບແບບຂອງມັນ. + +# Absolute local GoToR confirmation (#1364). + Allow ອະນຸຍາດ + Only allow this if you trust the source document. ອະນຸຍາດສະເພາະເມື່ອທ່ານເຊື່ອຖືເອກະສານຕົ້ນທາງເທົ່ານັ້ນ. + Open in Full Screen mode? ເປີດໃນໂໝດເຕັມຈໍຫຼືບໍ່? + This document asks to open in Full Screen mode: the page fills the screen and nothing else shows. Press Esc at any time to leave it. ເອກະສານນີ້ຮ້ອງຂໍໃຫ້ເປີດໃນໂໝດເຕັມຈໍ: ໜ້າເອກະສານຈະເຕັມຈໍ ແລະ ບໍ່ມີສິ່ງອື່ນສະແດງ. ກົດ Esc ໄດ້ທຸກເວລາເພື່ອອອກ. + Full Screen ເຕັມຈໍ + Not now ບໍ່ແມ່ນຕອນນີ້ + Open this local PDF? ເປີດ PDF ພາຍໃນເຄື່ອງນີ້ຫຼືບໍ່? + This document is trying to open a local file: ເອກະສານນີ້ກຳລັງພະຍາຍາມເປີດໄຟລ໌ພາຍໃນເຄື່ອງ: + Move tag earlier ຍ້າຍແທັກໄປກ່ອນ + Move tag later ຍ້າຍແທັກໄປຫຼັງ + Turn upside down (180°) ປີ້ນຫົວລົງ (180°) + 4 x 6 in label (101.6 x 152.4 mm) ປ້າຍ 4 x 6 ນິ້ວ (101.6 x 152.4 ມມ) + Cuts each page to its printed area, turns it upright and fits it to the sheet without stretching. One label per sheet. ຕັດແຕ່ລະໜ້າໃຫ້ພໍດີກັບພື້ນທີ່ພິມ, ໝູນໃຫ້ຕັ້ງຂຶ້ນ ແລະ ປັບໃຫ້ພໍດີກັບແຜ່ນເຈ້ຍໂດຍບໍ່ດຶງຍືດ. ໜຶ່ງປ້າຍຕໍ່ແຜ່ນ. + Find untagged content ຊອກຫາເນື້ອໃນທີ່ບໍ່ມີແທັກ + No untagged content was found. ບໍ່ພົບເນື້ອໃນທີ່ບໍ່ມີແທັກ. + Found {n} untagged content problems. ພົບບັນຫາເນື້ອໃນທີ່ບໍ່ມີແທັກ {n} ລາຍການ. + Tag form fields ໃສ່ແທັກຊ່ອງຟອມ + Mark as artifact ໝາຍເປັນວັດຖຸປະກອບ + Remove this leaf tag from reading order and mark its direct content as an artifact ລຶບແທັກໃບນີ້ອອກຈາກລຳດັບການອ່ານ ແລະ ໝາຍເນື້ອໃນໂດຍກົງຂອງມັນວ່າເປັນວັດຖຸປະກອບ + Mark content as artifact ໝາຍເນື້ອໃນເປັນວັດຖຸປະກອບ + Word count ຈຳນວນຄຳ + Current page only ສະເພາະໜ້າປະຈຸບັນ + Exclude tagged tables ຍົກເວັ້ນຕາຕະລາງທີ່ມີແທັກ + Exclude tagged code blocks ຍົກເວັ້ນບລັອກໂຄ້ດທີ່ມີແທັກ + Exclude image/OCR text ຍົກເວັ້ນຂໍ້ຄວາມຈາກຮູບພາບ/OCR + Exclusions use PDF tags. Untagged tables and code remain included. Image exclusion also removes invisible text. ການຍົກເວັ້ນແມ່ນໃຊ້ແທັກ PDF. ຕາຕະລາງ ແລະ ໂຄ້ດທີ່ບໍ່ມີແທັກຈະຍັງຄົງຖືກນັບຮວມ. ການຍົກເວັ້ນຮູບພາບຈະລຶບຂໍ້ຄວາມທີ່ເຊື່ອງໄວ້ອອກນຳດ້ວຍ. + Words ຄຳ + Characters ຕົວອັກສອນ + Characters without spaces ຕົວອັກສອນບໍ່ລວມຍະຫວ່າງ + Pages counted ໜ້າທີ່ນັບແລ້ວ + Some pages contain no countable text. Scanned images need OCR first. ບາງໜ້າບໍ່ມີຂໍ້ຄວາມທີ່ສາມາດນັບໄດ້. ຮູບສະແກນຕ້ອງເຮັດ OCR ກ່ອນ. + Some content could not be classified safely and was kept in the count. ເນື້ອໃນບາງສ່ວນບໍ່ສາມາດຈັດໝວດໝູ່ໄດ້ຢ່າງແນ່ນອນ ແລະ ຍັງຄົງຖືກນັບຮວມໄວ້. + Counting words… {n} pages read ກຳລັງນັບຄຳ… ອ່ານແລ້ວ {n} ໜ້າ + Word counting stopped unexpectedly. ການນັບຄຳຢຸດລົງໂດຍບໍ່ຄາດຄິດ. + Word count… ຈຳນວນຄຳ… +@id file.word_count file.word_count + Standard ມາດຕະຖານ + Mobile ມືຖື + Merge image fragments ຮວມຊິ້ນສ່ວນຮູບພາບ + Optimizing… merging image fragments ກຳລັງປັບແຕ່ງ… ກຳລັງຮວມຊິ້ນສ່ວນຮູບພາບ + Side by side ຄຽງຂ້າງກັນ + New file only ສະເພາະໄຟລ໌ໃໝ່ + Old file: {name} ໄຟລ໌ເກົ່າ: {name} + New file: {name} ໄຟລ໌ໃໝ່: {name} + Print as image ພິມເປັນຮູບພາບ + Resolution: ຄວາມລະອຽດ: + Use it when a printer skips text, shading or transparency. The print is no longer searchable text; with Print in grayscale, the pictures are grey. ໃຊ້ເມື່ອເຄື່ອງພິມຂ້າມຂໍ້ຄວາມ, ການໄລ່ໂທນສີ ຫຼື ຄວາມໂປ່ງໃສ. ສິ່ງພິມຈະບໍ່ແມ່ນຂໍ້ຄວາມທີ່ຄົ້ນຫາໄດ້ອີກຕໍ່ໄປ; ຫາກພິມເປັນລະດັບສີເທົາ ຮູບພາບຈະກາຍເປັນສີເທົາ. + Crop Image ຕັດຂອບຮູບພາບ + Remove Crop ຍົກເລີກການຕັດຂອບ + Trim the picture with its handles; Enter or Done applies ຕັດແຕ່ງຮູບດ້ວຍປຸ່ມຈັບ; ກົດ Enter ຫຼື ສຳເລັດ ເພື່ອນຳໃຊ້ + Redaction mark appearance ລັກສະນະເຄື່ອງໝາຍປິດບັງ + Outline colour: ສີເສັ້ນຂອບ: + Fill colour: ສີຕື່ມ: + Shown while the pointer is over a mark. ສະແດງເມື່ອຕົວຊີ້ເມົາສ໌ຢູ່ເທິງເຄື່ອງໝາຍ. + Opacity: ຄວາມໂປ່ງແສງ: + Make properties default ກຳນົດຄຸນສົມບັດເປັນຄ່າເລີ່ມຕົ້ນ + Pages selected ໜ້າທີ່ເລືອກ + Page properties ຄຸນສົມບັດໜ້າ diff --git a/crates/ui-egui/src/i18n/mod.rs b/crates/ui-egui/src/i18n/mod.rs index 5bb2889c9..d440b3832 100644 --- a/crates/ui-egui/src/i18n/mod.rs +++ b/crates/ui-egui/src/i18n/mod.rs @@ -147,7 +147,7 @@ fn plural_sl(n: u64) -> usize { } /// The registry. English first: it is the fallback and the source language. -pub static LANGUAGES: [LangInfo; 23] = [ +pub static LANGUAGES: [LangInfo; 24] = [ LangInfo { code: "en", name: "English", source: "", plural: plural_one_other, rtl: false, catalog: OnceLock::new() }, LangInfo { code: "ja", name: "日本語", source: include_str!("ja.tsv"), plural: plural_none, rtl: false, catalog: OnceLock::new() }, // Simplified Chinese; `zh`, `zh-CN`, `zh-SG` and `zh-Hans-*` locales resolve here (see `candidates`). @@ -210,6 +210,8 @@ pub static LANGUAGES: [LangInfo; 23] = [ // Vietnamese; every `vi-*` locale (`vi-VN`, `vi_VN.UTF-8`) resolves here. CLDR `vi` counts have // one form ("other"), so `@plural` entries list a single form. LangInfo { code: "vi", name: "Tiếng Việt", source: include_str!("vi.tsv"), plural: plural_none, rtl: false, catalog: OnceLock::new() }, + // Lao; every `lo-*` locale (`lo-LA`, `lo_LA.UTF-8` ...) resolves here. + LangInfo { code: "lo", name: "ພາສາລາວ", source: include_str!("lo.tsv"), plural: plural_none, rtl: false, catalog: OnceLock::new() }, ]; impl LangInfo { @@ -598,6 +600,9 @@ mod tests { assert_eq!(lang_from_tag("zh"), Lang::from_code("zh-hans")); assert_eq!(lang_from_tag("zh_HK.UTF-8"), Lang::from_code("zh-hant")); assert_eq!(lang_from_tag("zh-Hant-MO"), Lang::from_code("zh-hant")); + assert_eq!(lang_from_tag("lo_LA.UTF-8"), Lang::from_code("lo")); + assert_eq!(lang_from_tag("lo-LA"), Lang::from_code("lo")); + assert_eq!(lang_from_tag("lo"), Lang::from_code("lo")); assert_eq!(lang_from_tag(""), None); assert_eq!(lang_from_tag("_"), None); } @@ -610,6 +615,7 @@ mod tests { assert_eq!(candidates("zh_TW"), ["zh-tw", "zh-hant", "zh"]); assert_eq!(candidates("zh-CN"), ["zh-cn", "zh-hans", "zh"]); assert_eq!(candidates("zh-Hant-HK"), ["zh-hant-hk", "zh-hant", "zh"]); + assert_eq!(candidates("lo_LA.UTF-8"), ["lo-la", "lo"]); } #[test] @@ -629,6 +635,7 @@ mod tests { } assert_eq!(first_supported("en-US\r\n"), Some(Lang::EN)); assert_eq!(first_supported("fr-FR\r\n"), Lang::from_code("fr")); + assert_eq!(first_supported("lo-LA\r\n"), Lang::from_code("lo")); assert_eq!(first_supported("\r\n"), None); } From b97e59190f2fb8bf036760ec43fce67050b52e15 Mon Sep 17 00:00:00 2001 From: mtlcl410 <2368091+mtlcl410@users.noreply.github.com> Date: Fri, 16 Oct 2026 19:20:48 +0800 Subject: [PATCH 07/33] M5: year-first slash dates (yyyy/mm/dd, yyyy/m/d) for Fill & Sign and headers Taiwan, Japan and China write dates year first with slashes (Windows' zh-TW short date is yyyy/M/d), and neither the Fill & Sign presets nor the header and footer date tokens offered it. Both now have yyyy/mm/dd and yyyy/m/d. The header and footer list gains them at its end, since its selection is an index. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01RUNQSPVXx3dDBabRZHAnjz --- crates/edit/src/lib.rs | 4 +++- crates/edit/src/tests.rs | 1 + crates/engine/src/dates.rs | 7 ++++++- crates/ui-egui/src/marks_ui.rs | 4 +++- 4 files changed, 13 insertions(+), 3 deletions(-) diff --git a/crates/edit/src/lib.rs b/crates/edit/src/lib.rs index 515f17d8d..145c4dcba 100644 --- a/crates/edit/src/lib.rs +++ b/crates/edit/src/lib.rs @@ -54,7 +54,7 @@ pub struct HeaderFooter { /// Left, centre and right header text, then left, centre and right footer text. Tokens: /// `<<1>>` page number, `<>` page count, `<<1 of n>>`, `<<1/n>>`, `<>`, /// `<>`, dates `<>`, `<>`, `<>`, `<>`, - /// `<>`, `<>`, and Bates numbers `<>` + /// `<>`, `<>`, `<>`, `<>`, and Bates numbers `<>` /// (digits, start, prefix, suffix). pub text: [String; 6], pub font_size: f64, @@ -244,6 +244,8 @@ pub fn expand(template: &str, page_number: u32, count: usize, bates: u64, cx: &C "d/m/yyyy" => format!("{d}/{m}/{y}"), "dd/mm/yyyy" => format!("{d:02}/{m:02}/{y}"), "yyyy-mm-dd" => format!("{y}-{m:02}-{d:02}"), + "yyyy/mm/dd" => format!("{y}/{m:02}/{d:02}"), + "yyyy/m/d" => format!("{y}/{m}/{d}"), "mmmm d, yyyy" => format!("{} {d}, {y}", MONTHS[(m.clamp(1, 12) - 1) as usize]), t if t.starts_with("Bates Number") => { // Bates Number#digits#start#prefix#suffix (start is applied by the caller). diff --git a/crates/edit/src/tests.rs b/crates/edit/src/tests.rs index b542142df..3488161ec 100644 --- a/crates/edit/src/tests.rs +++ b/crates/edit/src/tests.rs @@ -60,6 +60,7 @@ fn tokens_expand() { assert_eq!(expand("Page <<1>> of <>", 3, 10, 0, &c), "Page 3 of 10"); assert_eq!(expand("<<1 of n>> · <> · <<1/n>>", 2, 5, 0, &c), "2 of 5 · Page 2 · 2/5"); assert_eq!(expand("<> <> <>", 1, 1, 0, &c), "10/1/2026 2026-10-01 October 1, 2026"); + assert_eq!(expand("<> <>", 1, 1, 0, &c), "2026/10/01 2026/10/1"); assert_eq!(expand("<>", 1, 1, 104, &c), "ABC000104-X"); assert_eq!(expand("keep <> and <> and <>"), Some(100)); diff --git a/crates/engine/src/dates.rs b/crates/engine/src/dates.rs index 8c14a5b1b..76ed36d8a 100644 --- a/crates/engine/src/dates.rs +++ b/crates/engine/src/dates.rs @@ -13,7 +13,7 @@ use crate::Session; pub const DEFAULT_DATE_FORMAT: &str = "m/d/yyyy"; /// Ready-made formats for Preferences ▸ Date format. Any other valid pattern works too. -pub const DATE_FORMATS: [&str; 12] = [ +pub const DATE_FORMATS: [&str; 14] = [ "m/d/yyyy", "mm/dd/yyyy", "d/m/yyyy", @@ -21,6 +21,9 @@ pub const DATE_FORMATS: [&str; 12] = [ "dd.mm.yyyy", "yyyy-mm-dd", "yyyy.mm.dd.", + // Year first with slashes, as Taiwan, Japan and China write it (Windows' zh-TW short date). + "yyyy/mm/dd", + "yyyy/m/d", "d mmm yyyy", "d mmmm yyyy", "mmm d, yyyy", @@ -604,6 +607,8 @@ mod tests { "07.03.2026", "2026-03-07", "2026.03.07.", + "2026/03/07", + "2026/3/7", "7 Mar 2026", "7 March 2026", "Mar 7, 2026", diff --git a/crates/ui-egui/src/marks_ui.rs b/crates/ui-egui/src/marks_ui.rs index 4a60c40a6..fd847cfe2 100644 --- a/crates/ui-egui/src/marks_ui.rs +++ b/crates/ui-egui/src/marks_ui.rs @@ -112,7 +112,9 @@ impl Default for MarksDraft { } const PAGE_FORMATS: [&str; 5] = ["<<1>>", "<<1 of n>>", "<<1/n>>", "<>", "<>"]; -const DATE_FORMATS: [&str; 6] = ["<>", "<>", "<>", "<>", "<>", "<>"]; +// New formats go last: `date_format` is an index into this list. +const DATE_FORMATS: [&str; 8] = + ["<>", "<>", "<>", "<>", "<>", "<>", "<>", "<>"]; const BOX_NAMES: [&str; 6] = ["Left Header Text", "Center Header Text", "Right Header Text", "Left Footer Text", "Center Footer Text", "Right Footer Text"]; From 942be18504ed2e58e6d1ae00524667dbd4253077 Mon Sep 17 00:00:00 2001 From: mtlcl410 <2368091+mtlcl410@users.noreply.github.com> Date: Fri, 16 Oct 2026 19:20:48 +0800 Subject: [PATCH 08/33] parity: form.fill-sign-date has 14 presets now Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01RUNQSPVXx3dDBabRZHAnjz --- parity/acrobat-features.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/parity/acrobat-features.toml b/parity/acrobat-features.toml index c3d319f94..43e0378d0 100644 --- a/parity/acrobat-features.toml +++ b/parity/acrobat-features.toml @@ -5293,7 +5293,7 @@ status = "shipped" commands = ["sign.fill.date"] tools = ["fill_sign_add", "fill_sign_date_format"] evidence = ["crates/ui-egui/tests/fill_sign.rs::text_marks_and_date", "crates/automation/tests/automation.rs::fill_and_sign_through_tools", "crates/ui-egui/tests/date_format.rs::fill_and_sign_dates_follow_the_date_format_preference_and_it_is_remembered", "crates/engine/src/dates.rs::presets_write_the_day_in_their_own_order", "crates/engine/src/dates.rs::names_follow_the_date_language", "crates/ui-egui/tests/date_format.rs::month_names_follow_the_date_language_or_else_the_interface_language", "crates/ui-egui/tests/date_format.rs::a_date_the_pdf_cannot_hold_is_refused_with_a_warning_first"] -notes = "local date in Preferences ▸ Date format (default m/d/yyyy; 12 presets or any pattern in Acrobat date letters with \\ escapes, checked and previewed as typed, remembered; only whole date codes accepted; month and weekday names in the interface languages, Czech months in the genitive after a day, following the interface language unless one is picked; fill_sign_add takes a one-off format and language). Beyond Acrobat: its Fill & Sign has no format setting (only Acrobat Sign accounts do). Missing: Fill & Sign text is Helvetica/WinAnsi, so a date with letters outside Western European (Czech ř, Japanese, Chinese names) is refused with a warning instead of being saved as ?; the OS locale's format isn't offered as a preset; names in languages without an interface translation" +notes = "local date in Preferences ▸ Date format (default m/d/yyyy; 14 presets, year-first slash forms included, or any pattern in Acrobat date letters with \\ escapes, checked and previewed as typed, remembered; only whole date codes accepted; month and weekday names in the interface languages, Czech months in the genitive after a day, following the interface language unless one is picked; fill_sign_add takes a one-off format and language). Beyond Acrobat: its Fill & Sign has no format setting (only Acrobat Sign accounts do). Missing: Fill & Sign text is Helvetica/WinAnsi, so a date with letters outside Western European (Czech ř, Japanese, Chinese names) is refused with a warning instead of being saved as ?; the OS locale's format isn't offered as a preset; names in languages without an interface translation" [[feature]] id = "form.fill-sign-signature" From d5bbf60efe71479c4a6f93fad06a9d66d8030a61 Mon Sep 17 00:00:00 2001 From: mixlnwuu <176603945+mixlnwuu@users.noreply.github.com> Date: Wed, 14 Oct 2026 20:14:26 +0700 Subject: [PATCH 09/33] i18n: add Thai (th) interface language A clean-room Thai catalog covering every key the bundled catalogs translate, its LANGUAGES row (one plural form) and Thai month and weekday names in DATE_LANGUAGES. --- crates/engine/src/dates.rs | 11 +- crates/ui-egui/src/i18n/mod.rs | 4 +- crates/ui-egui/src/i18n/th.tsv | 2601 ++++++++++++++++++++++++++++++++ 3 files changed, 2614 insertions(+), 2 deletions(-) create mode 100644 crates/ui-egui/src/i18n/th.tsv diff --git a/crates/engine/src/dates.rs b/crates/engine/src/dates.rs index 8c14a5b1b..09d7fe031 100644 --- a/crates/engine/src/dates.rs +++ b/crates/engine/src/dates.rs @@ -56,7 +56,7 @@ const AR_DAYS: [&str; 7] = ["الأحد", "الاثنين", "الثلاثاء", /// The languages month and weekday names can be written in (Preferences ▸ Date format ▸ Language): /// the interface languages, in the same order and with the same names. -pub static DATE_LANGUAGES: [DateLanguage; 23] = [ +pub static DATE_LANGUAGES: [DateLanguage; 24] = [ DateLanguage { code: "en", name: "English", @@ -398,6 +398,15 @@ pub static DATE_LANGUAGES: [DateLanguage; 23] = [ days: ["Chủ Nhật", "Thứ Hai", "Thứ Ba", "Thứ Tư", "Thứ Năm", "Thứ Sáu", "Thứ Bảy"], days_short: ["CN", "T2", "T3", "T4", "T5", "T6", "T7"], }, + DateLanguage { + code: "th", + name: "ไทย", + months: ["มกราคม", "กุมภาพันธ์", "มีนาคม", "เมษายน", "พฤษภาคม", "มิถุนายน", "กรกฎาคม", "สิงหาคม", "กันยายน", "ตุลาคม", "พฤศจิกายน", "ธันวาคม"], + months_with_day: None, + months_short: ["ม.ค.", "ก.พ.", "มี.ค.", "เม.ย.", "พ.ค.", "มิ.ย.", "ก.ค.", "ส.ค.", "ก.ย.", "ต.ค.", "พ.ย.", "ธ.ค."], + days: ["วันอาทิตย์", "วันจันทร์", "วันอังคาร", "วันพุธ", "วันพฤหัสบดี", "วันศุกร์", "วันเสาร์"], + days_short: ["อา.", "จ.", "อ.", "พ.", "พฤ.", "ศ.", "ส."], + }, ]; /// The date language for `code` (any case), or `None` when there's none. diff --git a/crates/ui-egui/src/i18n/mod.rs b/crates/ui-egui/src/i18n/mod.rs index 5bb2889c9..82e7e00f1 100644 --- a/crates/ui-egui/src/i18n/mod.rs +++ b/crates/ui-egui/src/i18n/mod.rs @@ -147,7 +147,7 @@ fn plural_sl(n: u64) -> usize { } /// The registry. English first: it is the fallback and the source language. -pub static LANGUAGES: [LangInfo; 23] = [ +pub static LANGUAGES: [LangInfo; 24] = [ LangInfo { code: "en", name: "English", source: "", plural: plural_one_other, rtl: false, catalog: OnceLock::new() }, LangInfo { code: "ja", name: "日本語", source: include_str!("ja.tsv"), plural: plural_none, rtl: false, catalog: OnceLock::new() }, // Simplified Chinese; `zh`, `zh-CN`, `zh-SG` and `zh-Hans-*` locales resolve here (see `candidates`). @@ -210,6 +210,8 @@ pub static LANGUAGES: [LangInfo; 23] = [ // Vietnamese; every `vi-*` locale (`vi-VN`, `vi_VN.UTF-8`) resolves here. CLDR `vi` counts have // one form ("other"), so `@plural` entries list a single form. LangInfo { code: "vi", name: "Tiếng Việt", source: include_str!("vi.tsv"), plural: plural_none, rtl: false, catalog: OnceLock::new() }, + // Thai; every `th-*` locale (`th-TH`, `th_TH.UTF-8`) resolves here. No grammatical plural. + LangInfo { code: "th", name: "ไทย", source: include_str!("th.tsv"), plural: plural_none, rtl: false, catalog: OnceLock::new() }, ]; impl LangInfo { diff --git a/crates/ui-egui/src/i18n/th.tsv b/crates/ui-egui/src/i18n/th.tsv new file mode 100644 index 000000000..12e417bf8 --- /dev/null +++ b/crates/ui-egui/src/i18n/th.tsv @@ -0,0 +1,2601 @@ +# Thai (th) catalog. Columns, separated by a TAB: context source translation +# See the header of ja.tsv for the format and escapes. +# +# Clean-room: every entry was written from the plain meaning of the English label using ordinary +# Thai computing vocabulary. No proprietary localisation resource, string table or product UI +# (Acrobat's included) was consulted or copied; add entries the same way. Product and technology +# names stay in Latin letters; the trailing ellipsis of dialog commands is kept. Thai has one +# plural form. + + Menu เมนู + File ไฟล์ + Edit แก้ไข + Pages หน้า + View มุมมอง + Help วิธีใช้ + Preferences การตั้งค่า + Preferences… การตั้งค่า… + Interface language ภาษาของโปรแกรม + Interface size ขนาดหน้าจอโปรแกรม + Auto ({percent}%) อัตโนมัติ ({percent}%) + Auto follows the system's text size. Pages always render at the display's full resolution. อัตโนมัติจะใช้ขนาดตัวอักษรตามระบบ หน้าเอกสารจะแสดงที่ความละเอียดเต็มของจอเสมอ + Identity ข้อมูลผู้ใช้ + Name on new comments ชื่อในความคิดเห็นใหม่ + Open… เปิด… + Open Recent เปิดไฟล์ล่าสุด + Clear Recent Files ล้างรายการไฟล์ล่าสุด + Remove from Recent เอาออกจากรายการล่าสุด + Remove {name} from Recent เอา {name} ออกจากรายการล่าสุด + Pin folder to Home… ปักหมุดโฟลเดอร์ไว้ที่หน้าแรก… + Folders โฟลเดอร์ + Pin a folder… ปักหมุดโฟลเดอร์… + Pin a folder to Home ปักหมุดโฟลเดอร์ไว้ที่หน้าแรก + Pin a folder to list its newest PDFs here, such as where your scanner or a synced cloud drive saves them. ปักหมุดโฟลเดอร์เพื่อแสดง PDF ล่าสุดในโฟลเดอร์นั้นที่นี่ เช่น โฟลเดอร์ที่สแกนเนอร์หรือไดรฟ์คลาวด์ที่ซิงก์ไว้บันทึกไฟล์ + Unpin เลิกปักหมุด + Unpin {folder} เลิกปักหมุด {folder} + Looking for PDFs… กำลังค้นหา PDF… + This folder isn't available right now. It may have moved, or its drive or cloud sync is offline. โฟลเดอร์นี้ใช้งานไม่ได้ในขณะนี้ อาจถูกย้าย หรือไดรฟ์หรือการซิงก์คลาวด์ออฟไลน์อยู่ + No PDFs in this folder yet ยังไม่มี PDF ในโฟลเดอร์นี้ + Show less แสดงน้อยลง + Show {n} more แสดงอีก {n} รายการ + The newest {n} of {total} PDFs PDF ล่าสุด {n} จาก {total} ไฟล์ + Pinned folders need the desktop app โฟลเดอร์ที่ปักหมุดต้องใช้แอปเดสก์ท็อป + Choose a folder on this computer to pin เลือกโฟลเดอร์บนคอมพิวเตอร์เครื่องนี้เพื่อปักหมุด + {folder} is already pinned to Home {folder} ถูกปักหมุดไว้ที่หน้าแรกอยู่แล้ว + You can pin up to {n} folders. Unpin one first. ปักหมุดได้ไม่เกิน {n} โฟลเดอร์ โปรดเลิกปักหมุดหนึ่งรายการก่อน + Pinned {folder} to Home ปักหมุด {folder} ไว้ที่หน้าแรกแล้ว + No recent files ไม่มีไฟล์ล่าสุด + New blank PDF PDF เปล่าใหม่ + Create PDF from file… สร้าง PDF จากไฟล์… + Create PDF from images… สร้าง PDF จากรูปภาพ… + Create PDF from multiple files… สร้าง PDF จากหลายไฟล์… + Create separate PDFs… สร้าง PDF แยกไฟล์… + Create PDF from clipboard สร้าง PDF จากคลิปบอร์ด + Combine files… รวมไฟล์… + Save บันทึก + Save as… บันทึกเป็น… + Close file ปิดไฟล์ + Close all ปิดทั้งหมด + Revert ย้อนกลับเป็นฉบับที่บันทึกไว้ + Print… พิมพ์… + Document properties… คุณสมบัติเอกสาร… + Undo เลิกทำ + Redo ทำซ้ำ + Find… ค้นหา… + Advanced search… ค้นหาขั้นสูง… + Copy pages คัดลอกหน้า + Cut pages ตัดหน้า + Paste pages วางหน้า + Fit visible พอดีส่วนที่มองเห็น + Marquee zoom ขยายตามกรอบที่ลาก + Take a snapshot จับภาพบางส่วน + Column select เลือกเป็นคอลัมน์ + Full screen mode โหมดเต็มหน้าจอ + Read mode โหมดอ่าน + Switch light / dark theme สลับธีมสว่าง / มืด + Comments panel แผงความคิดเห็น + Form fields panel แผงช่องแบบฟอร์ม + Clear form ล้างแบบฟอร์ม + Find tools and commands… ค้นหาเครื่องมือและคำสั่ง… + Zoom ย่อ/ขยาย + Actual size ขนาดจริง + Zoom to page level ย่อ/ขยายพอดีหน้า + Fit to width พอดีความกว้าง + Display theme ธีมการแสดงผล + Side panels แผงด้านข้าง + Enable Acrobat JavaScript เปิดใช้ Acrobat JavaScript + OK ตกลง + Join our Discord เข้าร่วม Discord ของเรา + Close ปิด + Next / previous match ผลลัพธ์ถัดไป / ก่อนหน้า + Copy selected text คัดลอกข้อความที่เลือก + Double-click ดับเบิลคลิก + Select a word เลือกคำ + Clear selection / close find ล้างการเลือก / ปิดการค้นหา + Zoom in / out (also pinch or {key}-scroll) ขยาย / ย่อ (หรือใช้การจีบนิ้ว หรือ {key} พร้อมเลื่อน) + Rotate view หมุนมุมมอง + First / last page หน้าแรก / หน้าสุดท้าย + Previous / next page หน้าก่อนหน้า / ถัดไป + Delete selected pages (Organize) ลบหน้าที่เลือก (จัดระเบียบ) + Select all pages (Organize) เลือกทุกหน้า (จัดระเบียบ) + Home หน้าแรก + Open เปิด + Open a PDF ({key}) เปิด PDF ({key}) + Dark gray theme ธีมเทาเข้ม + Light theme ธีมสว่าง + Appearance mode โหมดลักษณะที่ปรากฏ + Light สว่าง + Dark มืด + Active ใช้งานอยู่ + Dark theme ธีมมืด + Appearance settings… การตั้งค่าลักษณะที่ปรากฏ… + All tools เครื่องมือทั้งหมด + Read อ่าน + Convert แปลง + E-Sign เซ็นอิเล็กทรอนิกส์ + Print ({key}) พิมพ์ ({key}) + Save ({key}) บันทึก ({key}) + Document properties ({key}) คุณสมบัติเอกสาร ({key}) + Find tools and commands ค้นหาเครื่องมือและคำสั่ง + Fit to height พอดีความสูง + Zoom in ขยาย + Zoom out ย่อ + Rotate view clockwise หมุนมุมมองตามเข็มนาฬิกา + Rotate view counterclockwise หมุนมุมมองทวนเข็มนาฬิกา + Page navigation การนำทางหน้า + Previous view มุมมองก่อนหน้า + Next view มุมมองถัดไป + Page display การแสดงหน้า + Continuous scrolling เลื่อนต่อเนื่อง + Two-page view มุมมองสองหน้า + Single page หน้าเดียว + Show cover page in two-page view แสดงหน้าปกในมุมมองสองหน้า + Use system setting ใช้การตั้งค่าของระบบ + Light gray เทาอ่อน + Dark gray เทาเข้ม + Comments ความคิดเห็น + Bookmarks บุ๊กมาร์ก + Fields ช่อง + Layers เลเยอร์ + Attachments ไฟล์แนบ + Signatures ลายเซ็น + Accessibility Checker ตัวตรวจสอบการช่วยการเข้าถึง + Search ค้นหา + Compare เปรียบเทียบ + Page thumbnails ภาพขนาดย่อของหน้า + Form fields ช่องแบบฟอร์ม + Zoom out ({key}) ย่อ ({key}) + Zoom in ({key}) ขยาย ({key}) + Rotate view clockwise ({key}) หมุนมุมมองตามเข็มนาฬิกา ({key}) + Toggle fit page / fit width สลับพอดีหน้า / พอดีความกว้าง + Next page หน้าถัดไป + Previous page หน้าก่อนหน้า + Current page — type a page number or label (such as iv) and press Enter หน้าปัจจุบัน — พิมพ์เลขหน้าหรือป้ายหน้า (เช่น iv) แล้วกด Enter + Welcome to PdfCraft ยินดีต้อนรับสู่ PdfCraft + An open-source PDF workbench — local, private, and scriptable. โต๊ะทำงาน PDF แบบโอเพนซอร์ส — ทำงานในเครื่อง เป็นส่วนตัว และเขียนสคริปต์ได้ + Join the ArtCraft community เข้าร่วมชุมชน ArtCraft + Get help, share feedback and follow development on Discord. ขอความช่วยเหลือ ส่งความคิดเห็น และติดตามการพัฒนาได้ที่ Discord + Recommended tools เครื่องมือแนะนำ + Use now ใช้ตอนนี้ + Open file เปิดไฟล์ + Recent ล่าสุด + Files you open in PdfCraft appear here. Drop a PDF anywhere to open it. ไฟล์ที่คุณเปิดใน PdfCraft จะแสดงที่นี่ วาง PDF ที่ใดก็ได้เพื่อเปิด + Privacy ความเป็นส่วนตัว + PdfCraft works offline. No telemetry, no account, and no cloud processing unless you add a provider. PdfCraft ทำงานแบบออฟไลน์ ไม่มีการเก็บข้อมูลการใช้งาน ไม่ต้องมีบัญชี และไม่ประมวลผลบนคลาวด์ เว้นแต่คุณจะเพิ่มผู้ให้บริการเอง + Scripts run in a sandbox without file or network access. With JavaScript off, Acrobat's standard format, validate and calculate functions still work. สคริปต์ทำงานในแซนด์บ็อกซ์ที่เข้าถึงไฟล์และเครือข่ายไม่ได้ เมื่อปิด JavaScript ฟังก์ชันมาตรฐานของ Acrobat สำหรับจัดรูปแบบ ตรวจสอบ และคำนวณยังคงทำงานได้ + Back to all tools กลับไปที่เครื่องมือทั้งหมด + Close panel ปิดแผง + View less ดูน้อยลง + View more ดูเพิ่มเติม + Available พร้อมใช้งาน + Ready พร้อมใช้ + Search tools and commands… ค้นหาเครื่องมือและคำสั่ง… + No matching tools ไม่มีเครื่องมือที่ตรงกัน + Tool เครื่องมือ + Command คำสั่ง + Add a sticky note เพิ่มโน้ต + Add a text box เพิ่มกล่องข้อความ + Highlight text เน้นข้อความ + Underline text ขีดเส้นใต้ข้อความ + Strikethrough text ขีดฆ่าข้อความ + Squiggly underline text ขีดเส้นใต้หยักข้อความ + Draw freehand วาดอิสระ + Draw a line วาดเส้น + Draw an arrow วาดลูกศร + Draw a rectangle วาดสี่เหลี่ยม + Draw an oval วาดวงรี + Draw a polygon วาดรูปหลายเหลี่ยม + Draw connected lines วาดเส้นต่อเนื่อง + Draw a cloud วาดก้อนเมฆ + Add a callout เพิ่มคำบรรยายภาพ + Insert text แทรกข้อความ + Replace text แทนที่ข้อความ + Attach a file แนบไฟล์ + Erase drawings ลบภาพวาด + Flatten comments รวมความคิดเห็นเข้ากับหน้า + Import comments… นำเข้าความคิดเห็น… + Add a stamp เพิ่มตราประทับ + Export all comments to data file… ส่งออกความคิดเห็นทั้งหมดเป็นไฟล์ข้อมูล… + Hide all comments ซ่อนความคิดเห็นทั้งหมด + Summarize comments สรุปความคิดเห็น + Import form data… นำเข้าข้อมูลแบบฟอร์ม… + Export form data… ส่งออกข้อมูลแบบฟอร์ม… + PDF/A… PDF/A… + Action Wizard… ตัวช่วยสร้างการทำงาน… + Prepare for distribution… เตรียมเพื่อเผยแพร่… + Optimize scanned documents… ปรับเอกสารสแกนให้เหมาะสม… + Compare files… เปรียบเทียบไฟล์… + Detect form fields ตรวจหาช่องแบบฟอร์ม + Merge data files into spreadsheet… ผสานไฟล์ข้อมูลเป็นสเปรดชีต… + Flatten form fields รวมช่องแบบฟอร์มเข้ากับหน้า + Prepare a form เตรียมแบบฟอร์ม + Tab order: by rows ลำดับแท็บ: ตามแถว + Tab order: by columns ลำดับแท็บ: ตามคอลัมน์ + Tab order: by document structure ลำดับแท็บ: ตามโครงสร้างเอกสาร + Add text เพิ่มข้อความ + Edit text & images แก้ไขข้อความและรูปภาพ + Add or edit links เพิ่มหรือแก้ไขลิงก์ + Create links from URLs สร้างลิงก์จาก URL + Remove all links เอาลิงก์ทั้งหมดออก + No links to remove ไม่มีลิงก์ให้เอาออก + Removed 1 link เอาออกแล้ว 1 ลิงก์ + Removed {n} links เอาออกแล้ว {n} ลิงก์ + Add Bates numbering… เพิ่มเลข Bates… + Add image… เพิ่มรูปภาพ… + Redact text and images ปิดทับข้อความและรูปภาพ + Redact pages… ปิดทับทั้งหน้า… + Find text and redact… ค้นหาข้อความแล้วปิดทับ… + Redaction properties… คุณสมบัติการปิดทับ… + Apply redactions… ปิดทับข้อมูลที่ทำเครื่องหมายไว้… + Clear redaction marks ล้างเครื่องหมายปิดทับ + Remove hidden information… เอาข้อมูลที่ซ่อนอยู่ออก… + Sanitize document… ล้างข้อมูลแฝงในเอกสาร… + Field properties… คุณสมบัติช่อง… + Add a text field เพิ่มช่องข้อความ + Add a checkbox เพิ่มกล่องกาเครื่องหมาย + Add a radio button เพิ่มปุ่มตัวเลือก + Add a drop-down list เพิ่มรายการแบบดึงลง + Add a list box เพิ่มกล่องรายการ + Add a button เพิ่มปุ่ม + Add an image field เพิ่มช่องรูปภาพ + Add a date field เพิ่มช่องวันที่ + Add a digital signature field เพิ่มช่องลายเซ็นดิจิทัล + Digitally sign เซ็นแบบดิจิทัล + Certify (visible signature) รับรอง (ลายเซ็นที่มองเห็น) + Certify (invisible signature) รับรอง (ลายเซ็นที่มองไม่เห็น) + Validate all signatures ตรวจสอบลายเซ็นทั้งหมด + Signatures panel แผงลายเซ็น + Fill & Sign: add text กรอกและเซ็น: เพิ่มข้อความ + Fill & Sign: checkmark กรอกและเซ็น: เครื่องหมายถูก + Fill & Sign: cross กรอกและเซ็น: กากบาท + Fill & Sign: dot กรอกและเซ็น: จุด + Fill & Sign: line กรอกและเซ็น: เส้น + Fill & Sign: date กรอกและเซ็น: วันที่ + Fill & Sign: sign กรอกและเซ็น: เซ็น + Fill & Sign: initials กรอกและเซ็น: ชื่อย่อ + Export to image… ส่งออกเป็นรูปภาพ… + Reduce file size… ลดขนาดไฟล์… + Optimize PDF… ปรับ PDF ให้เหมาะสม… + Export to text… ส่งออกเป็นข้อความ… + Export to Word… ส่งออกเป็น Word… + Export to PowerPoint… ส่งออกเป็น PowerPoint… + Export to HTML… ส่งออกเป็น HTML… + Export to RTF… ส่งออกเป็น RTF… + JavaScript console… คอนโซล JavaScript… + Document JavaScripts… JavaScript ของเอกสาร… + Recognize text… รู้จำข้อความ… + Recognize text in multiple files… รู้จำข้อความในหลายไฟล์… + Check for accessibility… ตรวจสอบการช่วยการเข้าถึง… + Open accessibility report เปิดรายงานการช่วยการเข้าถึง + Change reading options… เปลี่ยนตัวเลือกการอ่าน… + Add alternate text… เพิ่มข้อความแสดงแทน… + Export all images… ส่งออกรูปภาพทั้งหมด… + Add header & footer… เพิ่มหัวกระดาษและท้ายกระดาษ… + Update header & footer… อัปเดตหัวกระดาษและท้ายกระดาษ… + Remove header & footer เอาหัวกระดาษและท้ายกระดาษออก + Add watermark… เพิ่มลายน้ำ… + Update watermark… อัปเดตลายน้ำ… + Remove watermark เอาลายน้ำออก + Add background… เพิ่มพื้นหลัง… + Update background… อัปเดตพื้นหลัง… + Remove background เอาพื้นหลังออก + Protect using password… ป้องกันด้วยรหัสผ่าน… + Remove security เอาการรักษาความปลอดภัยออก + Security properties… คุณสมบัติความปลอดภัย… + Organize pages จัดระเบียบหน้า + New bookmark บุ๊กมาร์กใหม่ + New bookmarks from structure บุ๊กมาร์กใหม่จากโครงสร้าง + Rotate pages clockwise หมุนหน้าตามเข็มนาฬิกา + Rotate pages counterclockwise หมุนหน้าทวนเข็มนาฬิกา + Delete pages ลบหน้า + Insert blank page แทรกหน้าเปล่า + Rotate pages… หมุนหน้า… + Duplicate pages ทำสำเนาหน้า + Crop pages ครอบตัดหน้า + Set page boxes… ตั้งกรอบหน้า… + Insert pages from file… แทรกหน้าจากไฟล์… + Replace pages… แทนที่หน้า… + Extract pages… แยกหน้าออกมา… + Split document… แบ่งเอกสาร… + Number pages… ใส่เลขหน้า… + Keyboard shortcuts แป้นพิมพ์ลัด + Join the ArtCraft Discord เข้าร่วม Discord ของ ArtCraft + PdfCraft web page หน้าเว็บ PdfCraft + PdfCraft on GitHub PdfCraft บน GitHub + ArtCraft website เว็บไซต์ ArtCraft + Check for updates… ตรวจหาการอัปเดต… + About PdfCraft เกี่ยวกับ PdfCraft + Export a PDF ส่งออก PDF + Export to ส่งออกเป็น + Microsoft Word (.docx) Microsoft Word (.docx) + Spreadsheet (.xlsx) สเปรดชีต (.xlsx) + Presentation (.pptx) งานนำเสนอ (.pptx) + Image (PNG) รูปภาพ (PNG) + Export all images ส่งออกรูปภาพทั้งหมด + HTML web page หน้าเว็บ HTML + Rich Text Format (.rtf) Rich Text Format (.rtf) + Text (plain) ข้อความ (ธรรมดา) + PostScript / EPS PostScript / EPS + Fill & Sign กรอกและเซ็น + Fill กรอก + Checkmark เครื่องหมายถูก + Cross กากบาท + Dot จุด + Line เส้น + Date วันที่ + Signature ลายเซ็น + Initials ชื่อย่อ + Edit a PDF แก้ไข PDF + Modify page ปรับแก้หน้า + Rotate pages หมุนหน้า + Insert pages แทรกหน้า + Extract pages แยกหน้าออกมา + Add content เพิ่มเนื้อหา + Text ข้อความ + Image รูปภาพ + Header and footer หัวกระดาษและท้ายกระดาษ + Watermark ลายน้ำ + Link ลิงก์ + Bates numbering เลข Bates + Background พื้นหลัง + Attach file แนบไฟล์ + Create a PDF สร้าง PDF + Create from สร้างจาก + Single file ไฟล์เดียว + Multiple files หลายไฟล์ + Separate PDFs PDF แยกไฟล์ + Images รูปภาพ + Clipboard คลิปบอร์ด + Blank page หน้าเปล่า + Combine files รวมไฟล์ + Combine รวม + Add files to combine เพิ่มไฟล์ที่จะรวม + Page options ตัวเลือกหน้า + Page grid ตารางหน้า + Rotate หมุน + Delete ลบ + Extract แยกออกมา + Insert แทรก + Replace แทนที่ + Split แบ่ง + More เพิ่มเติม + Set page boxes ตั้งกรอบหน้า + Page labels ป้ายหน้า + Page transitions การเปลี่ยนหน้า + Add comments เพิ่มความคิดเห็น + Markup ทำเครื่องหมาย + Sticky note โน้ต + Underline ขีดเส้นใต้ + Strikethrough ขีดฆ่า + Squiggly underline ขีดเส้นใต้หยัก + Text box กล่องข้อความ + Drawing ภาพวาด + Rectangle สี่เหลี่ยม + Oval วงรี + Arrow ลูกศร + Cloud ก้อนเมฆ + Stamp ตราประทับ + Review ตรวจทาน + Comment list รายการความคิดเห็น + Scan & OCR สแกนและ OCR + Recognize text รู้จำข้อความ + In this file ในไฟล์นี้ + In multiple files ในหลายไฟล์ + Enhance scanned file ปรับปรุงไฟล์สแกน + Correct recognized text แก้ไขข้อความที่รู้จำได้ + Protect a PDF ป้องกัน PDF + Protect ป้องกัน + Protect with password ป้องกันด้วยรหัสผ่าน + Remove hidden information เอาข้อมูลที่ซ่อนอยู่ออก + Advanced options ตัวเลือกขั้นสูง + Encrypt with certificate เข้ารหัสด้วยใบรับรอง + Security properties คุณสมบัติความปลอดภัย + Redact a PDF ปิดทับข้อมูลใน PDF + Redact ปิดทับข้อมูล + Redact pages ปิดทับทั้งหน้า + Find text and redact ค้นหาข้อความแล้วปิดทับ + Set properties ตั้งคุณสมบัติ + Sanitize document ล้างข้อมูลแฝงในเอกสาร + Compress a PDF บีบอัด PDF + Optimize ปรับให้เหมาะสม + Reduce file size ลดขนาดไฟล์ + Advanced optimization การปรับให้เหมาะสมขั้นสูง + Audit space usage ตรวจสอบการใช้พื้นที่ + Field list รายการช่อง + Field properties คุณสมบัติช่อง + Tab order by rows ลำดับแท็บตามแถว + Tab order by columns ลำดับแท็บตามคอลัมน์ + Import data นำเข้าข้อมูล + Export data ส่งออกข้อมูล + Add form components เพิ่มส่วนประกอบแบบฟอร์ม + Text field ช่องข้อความ + Checkbox กล่องกาเครื่องหมาย + Radio button ปุ่มตัวเลือก + Drop-down list รายการแบบดึงลง + List box กล่องรายการ + Button ปุ่ม + Image field ช่องรูปภาพ + Date field ช่องวันที่ + Digital signature ลายเซ็นดิจิทัล + Stamps ตราประทับ + Stamp palette ชุดตราประทับ + Use a certificate ใช้ใบรับรอง + Certificates ใบรับรอง + Timestamp ประทับเวลา + Use print production ใช้งานเตรียมพิมพ์ + Print production งานเตรียมพิมพ์ + Output preview ตัวอย่างผลลัพธ์การพิมพ์ + Preflight Preflight + Convert colors แปลงสี + Add printer marks เพิ่มเครื่องหมายสำหรับโรงพิมพ์ + Fix hairlines แก้เส้นบางเกินไป + Measure objects วัดออบเจ็กต์ + Measure วัดระยะ + Measuring tool เครื่องมือวัด + Geospatial location ตำแหน่งทางภูมิศาสตร์ + Compare files เปรียบเทียบไฟล์ + Select files to compare เลือกไฟล์ที่จะเปรียบเทียบ + Use guided actions ใช้การทำงานแบบมีตัวช่วย + Actions list รายการการทำงาน + Action Wizard ตัวช่วยสร้างการทำงาน + Make accessible ทำให้เข้าถึงได้ + Prepare for distribution เตรียมเพื่อเผยแพร่ + Optimize scanned documents ปรับเอกสารสแกนให้เหมาะสม + Archive documents จัดเก็บเอกสารถาวร + Prepare for accessibility เตรียมเพื่อการช่วยการเข้าถึง + Accessibility การช่วยการเข้าถึง + Automatically tag PDF ติดแท็ก PDF อัตโนมัติ + Change reading options เปลี่ยนตัวเลือกการอ่าน + Check for accessibility ตรวจสอบการช่วยการเข้าถึง + Add alternate text เพิ่มข้อความแสดงแทน + Fix reading order แก้ลำดับการอ่าน + Apply PDF standards ใช้มาตรฐาน PDF + Standards มาตรฐาน + Save as PDF/A บันทึกเป็น PDF/A + Save as PDF/X บันทึกเป็น PDF/X + Save as PDF/UA บันทึกเป็น PDF/UA + Add search index เพิ่มดัชนีการค้นหา + Index ดัชนี + Manage embedded index จัดการดัชนีที่ฝังไว้ + Use JavaScript ใช้ JavaScript + JavaScript JavaScript + Console คอนโซล + Document JavaScripts JavaScript ของเอกสาร + Document actions การทำงานของเอกสาร + AI assistant ผู้ช่วย AI + Bring your own model (off by default) ใช้โมเดลของคุณเอง (ปิดเป็นค่าเริ่มต้น) + Summarize สรุป + Ask about this document ถามเกี่ยวกับเอกสารนี้ + Translate แปลภาษา + pages หน้า + Planned วางแผนไว้ + Planned for milestone วางแผนไว้สำหรับไมล์สโตน + open to see what it will include เปิดเพื่อดูว่าจะมีอะไรบ้าง + Optional: needs an AI provider you configure ไม่บังคับ: ต้องใช้ผู้ให้บริการ AI ที่คุณกำหนดค่าเอง + Coming in milestone จะมาในไมล์สโตน + Items marked Ready work today. รายการที่มีป้าย Ready ใช้งานได้แล้ววันนี้ + Preview ตัวอย่าง + Edit fields แก้ไขช่อง + Try the form as people filling it in will see it ลองใช้แบบฟอร์มตามที่ผู้กรอกจะเห็น + Redact all ปิดทับทั้งหมด + Clear all ล้างทั้งหมด + Rotate page หมุนหน้า + Delete page ลบหน้า + Move page ย้ายหน้า + Move pages ย้ายหน้า + Duplicate page ทำสำเนาหน้า + Replace page แทนที่หน้า + Replace pages แทนที่หน้า + Crop page ครอบตัดหน้า + Cancel ยกเลิก + Don't save ไม่บันทึก + Apply นำไปใช้ + Run รัน + Clear ล้าง + Sanitize ล้างข้อมูลแฝง + Mark all ทำเครื่องหมายทั้งหมด + Save changes to “{name}” before closing? บันทึกการเปลี่ยนแปลงใน “{name}” ก่อนปิดหรือไม่ + Your changes will be lost if you don't save them. การเปลี่ยนแปลงของคุณจะหายไปหากไม่บันทึก + Password required ต้องใช้รหัสผ่าน + “{name}” is protected. Enter a password to open it. “{name}” ถูกป้องกันไว้ ป้อนรหัสผ่านเพื่อเปิด + Password รหัสผ่าน + Incorrect password. Try again. รหัสผ่านไม่ถูกต้อง โปรดลองอีกครั้ง + Recognize Text รู้จำข้อความ + Password protection will be applied when you save การป้องกันด้วยรหัสผ่านจะมีผลเมื่อคุณบันทึก + Saved the print-ready PDF to {path} บันทึก PDF ที่พร้อมพิมพ์ไปที่ {path} แล้ว + Could not save: {e} บันทึกไม่ได้: {e} + Earlier in tab order เลื่อนขึ้นในลำดับแท็บ + Later in tab order เลื่อนลงในลำดับแท็บ + From: จาก: + To: ถึง: + High Resolution ความละเอียดสูง + Print พิมพ์ + Verify to see what the document needs. ตรวจสอบเพื่อดูว่าเอกสารต้องการอะไร + Set Page Boxes ตั้งกรอบหน้า + Signature panel แผงลายเซ็น + {month} {day}, {y} {day} {month} {y} + The document's security settings don't allow filling in form fields การตั้งค่าความปลอดภัยของเอกสารไม่อนุญาตให้กรอกช่องแบบฟอร์ม + {name} is read-only {name} เป็นแบบอ่านอย่างเดียว + {name} has no action {name} ไม่มีการทำงาน + Previous month เดือนก่อนหน้า + Next month เดือนถัดไป + January มกราคม + February กุมภาพันธ์ + March มีนาคม + April เมษายน + May พฤษภาคม + June มิถุนายน + July กรกฎาคม + August สิงหาคม + September กันยายน + October ตุลาคม + November พฤศจิกายน + December ธันวาคม + Done เสร็จสิ้น + This certificate is in your list of trusted certificates. ใบรับรองนี้อยู่ในรายการใบรับรองที่คุณเชื่อถือ + This certificate is trusted through a certificate above it in the chain. ใบรับรองนี้ได้รับความเชื่อถือผ่านใบรับรองที่อยู่เหนือขึ้นไปในสายใบรับรอง + This certificate is not trusted. Signatures made with it show an unknown identity. ใบรับรองนี้ไม่ได้รับความเชื่อถือ ลายเซ็นที่ใช้ใบรับรองนี้จะแสดงเป็นตัวตนที่ไม่ทราบ + Add to Trusted Certificates เพิ่มในใบรับรองที่เชื่อถือ + Export… ส่งออก… + PDF Optimizer ตัวปรับ PDF ให้เหมาะสม + Discard Objects ละทิ้งออบเจ็กต์ + Discard User Data ละทิ้งข้อมูลผู้ใช้ + Clean Up ล้างข้อมูล + Color Images รูปภาพสี + Grayscale Images รูปภาพระดับสีเทา + Bicubic downsampling to ลดความละเอียดแบบ Bicubic เป็น + for images above สำหรับรูปภาพที่สูงกว่า + Compression การบีบอัด + ZIP ZIP + Retain existing คงของเดิม + Minimum ต่ำสุด + Low ต่ำ + High สูง + Maximum สูงสุด + Each image is measured where pages draw it; an image is replaced only if the result is smaller. รูปภาพแต่ละรูปจะถูกวัดตามขนาดที่วาดบนหน้า และจะถูกแทนที่ก็ต่อเมื่อผลลัพธ์เล็กลง + Discard all links, actions and JavaScript ละทิ้งลิงก์ การทำงาน และ JavaScript ทั้งหมด + Discard alternate images ละทิ้งรูปภาพสำรอง + Discard embedded page thumbnails ละทิ้งภาพขนาดย่อของหน้าที่ฝังไว้ + Discard document tags ละทิ้งแท็กของเอกสาร + Discard embedded print settings ละทิ้งการตั้งค่าการพิมพ์ที่ฝังไว้ + Discard bookmarks ละทิ้งบุ๊กมาร์ก + Discard hidden layer content ละทิ้งเนื้อหาในเลเยอร์ที่ซ่อนอยู่ + Discard all comments, forms and multimedia ละทิ้งความคิดเห็น แบบฟอร์ม และมัลติมีเดียทั้งหมด + Discard document information and metadata ละทิ้งข้อมูลเอกสารและเมทาดาทา + Discard all object data (file attachments) ละทิ้งข้อมูลออบเจ็กต์ทั้งหมด (ไฟล์แนบ) + Discard private data of other applications ละทิ้งข้อมูลเฉพาะของแอปพลิเคชันอื่น + Discard hidden text ละทิ้งข้อความที่ซ่อนอยู่ + Use Flate to encode streams that are not encoded ใช้ Flate เข้ารหัสสตรีมที่ยังไม่ได้เข้ารหัส + Remove invalid links and bookmarks เอาลิงก์และบุ๊กมาร์กที่ใช้ไม่ได้ออก + Remove unreferenced named destinations เอาปลายทางที่มีชื่อซึ่งไม่ถูกอ้างถึงออก + Compress document structure (object streams) บีบอัดโครงสร้างเอกสาร (object streams) + Remove unused objects and merge identical ones เอาออบเจ็กต์ที่ไม่ได้ใช้ออกและรวมออบเจ็กต์ที่เหมือนกัน + Audit space usage… ตรวจสอบการใช้พื้นที่… + Space Audit ตรวจสอบการใช้พื้นที่ + Bytes ไบต์ + Content Streams สตรีมเนื้อหา + X Object Forms X Object Forms + Structure Info ข้อมูลโครงสร้าง + Thumbnails ภาพขนาดย่อ + Named Destinations ปลายทางที่มีชื่อ + Color Spaces ปริภูมิสี + Shadings การไล่ระดับสี + Patterns (graphics objects) ลวดลาย (ออบเจ็กต์กราฟิก) + Extended Graphics States สถานะกราฟิกแบบขยาย + Embedded Files ไฟล์ที่ฝังไว้ + Document Overhead ส่วนโครงสร้างของเอกสาร + Total รวม + Text Field Properties คุณสมบัติช่องข้อความ + Check Box Properties คุณสมบัติกล่องกาเครื่องหมาย + Radio Button Properties คุณสมบัติปุ่มตัวเลือก + Dropdown Properties คุณสมบัติรายการแบบดึงลง + List Box Properties คุณสมบัติกล่องรายการ + Button Properties คุณสมบัติปุ่ม + Digital Signature Properties คุณสมบัติลายเซ็นดิจิทัล + Position ตำแหน่ง + Options ตัวเลือก + Validate ตรวจสอบความถูกต้อง + Calculate คำนวณ + Actions การทำงาน + This field is locked. Unlock it to change its properties. ช่องนี้ถูกล็อก ปลดล็อกเพื่อเปลี่ยนคุณสมบัติ + Tooltip: คำแนะนำเครื่องมือ: + Common Properties คุณสมบัติทั่วไป + Read Only อ่านอย่างเดียว + Required จำเป็น + Font Size: ขนาดแบบอักษร: + Auto อัตโนมัติ + Text Color: สีข้อความ: + Borders and Colors เส้นขอบและสี + Border Color: สีเส้นขอบ: + Fill Color: สีเติม: + No color ไม่มีสี + Beveled ขอบเอียง + Left: ซ้าย: + Bottom: ล่าง: + Width: ความกว้าง: + Height: ความสูง: + Rotation: การหมุน: + Points from the page's bottom-left corner. หน่วยพอยต์จากมุมล่างซ้ายของหน้า + Alignment: การจัดแนว: + Default Value: ค่าเริ่มต้น: + Multi-line หลายบรรทัด + Scroll long text เลื่อนข้อความยาว + Allow Rich Text Formatting อนุญาตการจัดรูปแบบ Rich Text + Limit of จำกัดที่ + characters อักขระ + Field is used for file selection ช่องนี้ใช้สำหรับเลือกไฟล์ + Check spelling ตรวจการสะกด + Comb of แบ่งช่อง + Export Value: {on} ค่าส่งออก: {on} + Check box is checked by default กล่องกาเครื่องหมายถูกเลือกไว้เป็นค่าเริ่มต้น + Button is checked by default ปุ่มถูกเลือกไว้เป็นค่าเริ่มต้น + Buttons with the same name and value are selected in unison ปุ่มที่มีชื่อและค่าเดียวกันจะถูกเลือกพร้อมกัน + Item: รายการ: + Item List รายการตัวเลือก + Up ขึ้น + Delete {o} ลบ{o} + Add the choices people pick from. เพิ่มตัวเลือกให้ผู้ใช้เลือก + Default: ค่าเริ่มต้น: + (none) (ไม่มี) + Sort items เรียงรายการ + Allow user to enter custom text อนุญาตให้ผู้ใช้พิมพ์ข้อความเอง + Multiple selection เลือกได้หลายรายการ + Commit selected value immediately ยืนยันค่าที่เลือกทันที + Number ตัวเลข + Percentage เปอร์เซ็นต์ + Time เวลา + Special พิเศษ + Select format category: เลือกหมวดหมู่รูปแบบ: + The value is shown as typed. ค่าจะแสดงตามที่พิมพ์ + Decimal places: ตำแหน่งทศนิยม: + Separator style: รูปแบบตัวคั่น: + Currency symbol: สัญลักษณ์สกุลเงิน: + Before the number ก่อนตัวเลข + Negative number style: รูปแบบจำนวนลบ: + Format: รูปแบบ: + Custom: กำหนดเอง: + Zip Code รหัสไปรษณีย์ + Zip Code + 4 รหัสไปรษณีย์ + 4 + Phone Number หมายเลขโทรศัพท์ + Social Security Number หมายเลขประกันสังคม + Arbitrary Mask มาสก์กำหนดเอง + Mask: รูปแบบกรอก: + 9 digit, A letter, O letter or digit, X any character 9 คือตัวเลข, A คือตัวอักษร, O คือตัวอักษรหรือตัวเลข, X คืออักขระใดก็ได้ + Example: {sample} ตัวอย่าง: {sample} + Field value is not validated ไม่ตรวจสอบค่าของช่อง + Field value is in range: ค่าของช่องอยู่ในช่วง: + Add an Action เพิ่มการทำงาน + Select Trigger: เลือกตัวกระตุ้น: + Mouse Up ปล่อยเมาส์ + Mouse Down กดเมาส์ + Mouse Enter เมาส์เข้า + Mouse Exit เมาส์ออก + On Focus เมื่อได้โฟกัส + On Blur เมื่อเสียโฟกัส + Select Action: เลือกการทำงาน: + Open a web link เปิดลิงก์เว็บ + Reset a form รีเซ็ตแบบฟอร์ม + Execute a menu item เรียกใช้รายการเมนู + Show a field แสดงช่อง + Hide a field ซ่อนช่อง + Submit a form ส่งแบบฟอร์ม + Fields to reset (comma-separated; empty: all) ช่องที่จะรีเซ็ต (คั่นด้วยจุลภาค เว้นว่าง: ทั้งหมด) + Print, NextPage, PrevPage, FirstPage or LastPage Print, NextPage, PrevPage, FirstPage หรือ LastPage + Field names (comma-separated) ชื่อช่อง (คั่นด้วยจุลภาค) + URL to submit to URL ที่จะส่งไป + Script: สคริปต์: + Value: ค่า: + No actions ไม่มีการทำงาน + Value is not calculated ไม่คำนวณค่า + Value is the ค่าคือ + sum (+) ผลรวม (+) + product (x) ผลคูณ (x) + average ค่าเฉลี่ย + minimum ค่าต่ำสุด + maximum ค่าสูงสุด + of the following fields: ของช่องต่อไปนี้: + Simplified field notation: สัญกรณ์ช่องแบบย่อ: + Field names with + - * / and parentheses; put \\ before spaces in names. ชื่อช่องร่วมกับ + - * / และวงเล็บ ใส่ \\ หน้าช่องว่างในชื่อ + Finding document fonts… กำลังค้นหาแบบอักษรของเอกสาร… + Installed fonts… แบบอักษรที่ติดตั้ง… + Keep source fonts คงแบบอักษรต้นฉบับ + Load font… โหลดแบบอักษร… + No openly licensed document fonts found. Load a font file. ไม่พบแบบอักษรเอกสารที่มีสัญญาอนุญาตแบบเปิด โปรดโหลดไฟล์แบบอักษร + Format text จัดรูปแบบข้อความ + Bold ตัวหนา + Italic ตัวเอียง + Align left จัดชิดซ้าย + Centre กึ่งกลาง + Align right จัดชิดขวา + Justify จัดเต็มแนว + Thai and Arabic use regular fallback fonts when available. ภาษาไทยและอาหรับใช้แบบอักษรสำรองตัวปกติเมื่อมีให้ใช้ + Edit image แก้ไขรูปภาพ + Rotate counterclockwise หมุนทวนเข็มนาฬิกา + Rotate clockwise หมุนตามเข็มนาฬิกา + Flip horizontal พลิกแนวนอน + Flip vertical พลิกแนวตั้ง + Replace image แทนที่รูปภาพ + Crop (% trimmed from each side) ครอบตัด (% ที่ตัดออกจากแต่ละด้าน) + Click on the page to add text; each click starts a new box, and ✓ finishes. Drag items to move them, drag a corner to resize, double-click text to edit it. คลิกบนหน้าเพื่อเพิ่มข้อความ แต่ละคลิกจะเริ่มกล่องใหม่ และ ✓ คือเสร็จสิ้น ลากรายการเพื่อย้าย ลากมุมเพื่อปรับขนาด ดับเบิลคลิกข้อความเพื่อแก้ไข + Choose an image เลือกรูปภาพ + Export to Image ส่งออกเป็นรูปภาพ + Export to Text ส่งออกเป็นข้อความ + Export All Images ส่งออกรูปภาพทั้งหมด + Resolution ความละเอียด + Format รูปแบบ + Quality คุณภาพ + One {f} file per page, named after the document. ไฟล์ {f} หนึ่งไฟล์ต่อหน้า ตั้งชื่อตามเอกสาร + Exclude images smaller than ไม่รวมรูปภาพที่เล็กกว่า + No limit ไม่จำกัด + Each image once, named after the document and page. JPEG images are saved unchanged; others as PNG. รูปภาพแต่ละรูปหนึ่งครั้ง ตั้งชื่อตามเอกสารและหน้า รูป JPEG จะบันทึกตามเดิม รูปอื่นบันทึกเป็น PNG + Plain text in reading order; pages are separated by form feeds. ข้อความธรรมดาตามลำดับการอ่าน แต่ละหน้าคั่นด้วยอักขระขึ้นหน้าใหม่ + Create {what} สร้าง{what} + initials ชื่อย่อ + signature ลายเซ็น + Create Custom Stamp สร้างตราประทับกำหนดเอง + From {file} จาก {file} + Category: หมวดหมู่: + e.g. My stamps เช่น ตราประทับของฉัน + Name: ชื่อ: + Custom กำหนดเอง + Delete stamp ลบตราประทับ + Create custom stamp… สร้างตราประทับกำหนดเอง… + From a PDF page or an image จากหน้า PDF หรือรูปภาพ + Line spacing ระยะห่างบรรทัด + Character spacing ระยะห่างอักขระ + Horizontal scale มาตราส่วนแนวนอน + Rotate Clockwise หมุนตามเข็มนาฬิกา + Rotate Counterclockwise หมุนทวนเข็มนาฬิกา + Flip Horizontal พลิกแนวนอน + Flip Vertical พลิกแนวตั้ง + Replace Image… แทนที่รูปภาพ… + Save Image As… บันทึกรูปภาพเป็น… + Copy Image คัดลอกรูปภาพ + The image has been copied ({w} × {h} pixels) คัดลอกรูปภาพแล้ว ({w} × {h} พิกเซล) + Couldn't copy the image: {e} คัดลอกรูปภาพไม่ได้: {e} + Copy Image in Original Format คัดลอกรูปภาพในรูปแบบเดิม + The image has been copied as a {ext} file คัดลอกรูปภาพเป็นไฟล์ {ext} แล้ว + The page has changed; select the image again หน้ามีการเปลี่ยนแปลง โปรดเลือกรูปภาพอีกครั้ง + Check for updates ตรวจหาการอัปเดต + No check has run yet. ยังไม่ได้ตรวจสอบ + Checking for a newer version… กำลังตรวจหารุ่นที่ใหม่กว่า… + PdfCraft {v} is available. มี PdfCraft {v} ให้ใช้งานแล้ว + You have version {c}. Download the new version from its release page. คุณใช้รุ่น {c} ดาวน์โหลดรุ่นใหม่ได้จากหน้ารุ่นที่เผยแพร่ + PdfCraft {c} is up to date. PdfCraft {c} เป็นรุ่นล่าสุดแล้ว + Couldn't check for updates: {e} ตรวจหาการอัปเดตไม่ได้: {e} + You have version {c}. All releases are listed at {page}. คุณใช้รุ่น {c} รายการรุ่นทั้งหมดอยู่ที่ {page} + Asks GitHub for the latest release. Nothing is downloaded or installed automatically. ถาม GitHub ว่ามีรุ่นล่าสุดหรือไม่ จะไม่มีการดาวน์โหลดหรือติดตั้งโดยอัตโนมัติ + Download ดาวน์โหลด + Later ภายหลัง + none ไม่มี + Declared conformance: {shown} ความสอดคล้องที่ประกาศไว้: {shown} + Output intent: {list} Output intent: {list} + Conformance level: ระดับความสอดคล้อง: + No problems found: the document conforms to {level}. ไม่พบปัญหา: เอกสารสอดคล้องกับ {level} + (page {p}) (หน้า {p}) + · not fixable here · แก้ไขที่นี่ไม่ได้ + Verify ตรวจสอบ + Box กรอบ + Units หน่วย + Set to zero ตั้งเป็นศูนย์ + Current page ({n}) หน้าปัจจุบัน ({n}) + Subset เซตย่อย + Update อัปเดต + Add เพิ่ม + {verb} Header and Footer {verb}หัวกระดาษและท้ายกระดาษ + {verb} Watermark {verb}ลายน้ำ + {verb} Background {verb}พื้นหลัง + Margins ระยะขอบ + Left Header Text ข้อความหัวกระดาษด้านซ้าย + Center Header Text ข้อความหัวกระดาษตรงกลาง + Right Header Text ข้อความหัวกระดาษด้านขวา + Left Footer Text ข้อความท้ายกระดาษด้านซ้าย + Center Footer Text ข้อความท้ายกระดาษตรงกลาง + Right Footer Text ข้อความท้ายกระดาษด้านขวา + Insert Page Number แทรกเลขหน้า + Insert Date แทรกวันที่ + Start page number เลขหน้าเริ่มต้น + Source แหล่งที่มา + Fit to page พอดีหน้า + Rotation การหมุน + Appear behind page แสดงอยู่หลังหน้า + Appear on top of page แสดงอยู่บนหน้า + Offset from centre ระยะเยื้องจากกึ่งกลาง + From colour จากสี + Page Range Options ตัวเลือกช่วงหน้า + Preview: page {p} of {n} ตัวอย่าง: หน้า {p} จาก {n} + Applies to 1 page มีผลกับ 1 หน้า + Applies to {n} pages มีผลกับ {n} หน้า + Replaces the existing one on those pages. แทนที่ของเดิมในหน้าเหล่านั้น + PDF or image PDF หรือรูปภาพ + No file chosen ยังไม่ได้เลือกไฟล์ + Page number เลขหน้า + Scale relative to target page มาตราส่วนเทียบกับหน้าเป้าหมาย + Link Properties คุณสมบัติลิงก์ + Create Link สร้างลิงก์ + Link Appearance ลักษณะของลิงก์ + Link Type: ชนิดลิงก์: + Visible Rectangle สี่เหลี่ยมที่มองเห็น + Invisible Rectangle สี่เหลี่ยมที่มองไม่เห็น + Highlight Style: ลักษณะการเน้น: + Invert กลับสี + Outline เส้นขอบ + Inset ขอบจม + Line Thickness: ความหนาเส้น: + Thin บาง + Thick หนา + Line Style: ลักษณะเส้น: + Solid เส้นทึบ + Dashed เส้นประ + Color: สี: + Link Action การทำงานของลิงก์ + Open a web page เปิดหน้าเว็บ + Go to a page view ไปยังมุมมองหน้า + Type the web address. พิมพ์ที่อยู่เว็บ + This document has no signatures. เอกสารนี้ไม่มีลายเซ็น + The Keychain's digital IDs couldn't be listed: {e} แสดงรายการ Digital ID ใน Keychain ไม่ได้: {e} + Signed and saved to {path} เซ็นและบันทึกไปที่ {path} แล้ว + Couldn't open revision {n}: {e} เปิดการแก้ไขครั้งที่ {n} ไม่ได้: {e} + Couldn't open the signed version: {e} เปิดฉบับที่เซ็นไม่ได้: {e} + Sign with a Digital ID เซ็นด้วย Digital ID + Choose the digital ID that you want to use for signing: เลือก Digital ID ที่คุณต้องการใช้เซ็น: + Keychain · Keychain · + Windows store · ที่เก็บของ Windows · + Issued by: ออกโดย: + , Expires: , หมดอายุ: + No digital IDs yet. ยังไม่มี Digital ID + Configure New Digital ID กำหนดค่า Digital ID ใหม่ + Continue ดำเนินการต่อ + Configure a Digital ID for Signing กำหนดค่า Digital ID สำหรับการเซ็น + Use a Digital ID from a file ใช้ Digital ID จากไฟล์ + Create a new Digital ID (self-signed, saved to a password-protected file) สร้าง Digital ID ใหม่ (รับรองตนเอง บันทึกในไฟล์ที่ป้องกันด้วยรหัสผ่าน) + Name ชื่อ + Organizational Unit หน่วยงานในองค์กร + Organization Name ชื่อองค์กร + Email Address ที่อยู่อีเมล + Country/Region ประเทศ/ภูมิภาค + Key Algorithm อัลกอริทึมของกุญแจ + Confirm Password ยืนยันรหัสผ่าน + Valid for 5 years, for digital signatures. Self-signed IDs are usually not trusted by others. ใช้ได้ 5 ปี สำหรับลายเซ็นดิจิทัล ID แบบรับรองตนเองมักไม่ได้รับความเชื่อถือจากผู้อื่น + File (.p12, .pfx) ไฟล์ (.p12, .pfx) + Digital ID Digital ID + Browse… เรียกดู… + {verb} as "{name}" {verb}เป็น "{name}" + Certify รับรอง + The signature will be invisible. ลายเซ็นจะมองไม่เห็น + The existing action will be preserved. การทำงานที่มีอยู่จะถูกคงไว้ + Distinguished name ชื่อจำเพาะ (Distinguished name) + Labels ป้ายชื่อ + Graphic กราฟิก + Signer's name ชื่อผู้เซ็น + Fill & Sign signature ลายเซ็นในกรอกและเซ็น + Choose image… เลือกรูปภาพ… + Permitted actions after certifying การกระทำที่อนุญาตหลังจากรับรอง + No changes allowed ไม่อนุญาตให้เปลี่ยนแปลง + Annotations, form fill-in, and digital signatures คำอธิบายประกอบ การกรอกแบบฟอร์ม และลายเซ็นดิจิทัล + Form fill-in and digital signatures การกรอกแบบฟอร์มและลายเซ็นดิจิทัล + The key is in the macOS Keychain, which may ask to allow PdfCraft to use it. กุญแจอยู่ใน Keychain ของ macOS ซึ่งอาจถามเพื่ออนุญาตให้ PdfCraft ใช้งาน + The key is in the Windows certificate store, which may ask to allow PdfCraft to use it. กุญแจอยู่ในที่เก็บใบรับรองของ Windows ซึ่งอาจถามเพื่ออนุญาตให้ PdfCraft ใช้งาน + Digital ID password รหัสผ่าน Digital ID + Back ย้อนกลับ + Validate all ตรวจสอบทั้งหมด + Sign this field… เซ็นในช่องนี้… + Signature is valid: ลายเซ็นถูกต้อง: + Signature validity is UNKNOWN: ไม่ทราบความถูกต้องของลายเซ็น: + Signature is INVALID: ลายเซ็นไม่ถูกต้อง: + Signature Details รายละเอียดลายเซ็น + Reason เหตุผล + Signing time เวลาที่เซ็น + Algorithm อัลกอริทึม + Signer ผู้เซ็น + Issued by ออกโดย + Valid ถูกต้อง + Field ช่อง + Field: {field} on page {p} ช่อง: {field} ในหน้า {p} + Add to trusted certificates เพิ่มในใบรับรองที่เชื่อถือ + View signed version ดูฉบับที่เซ็น + Show certificate… แสดงใบรับรอง… + Export certificate… ส่งออกใบรับรอง… + Certificate Viewer ตัวแสดงใบรับรอง + This dialog shows the details of a certificate and its chain. กล่องโต้ตอบนี้แสดงรายละเอียดของใบรับรองและสายใบรับรอง + Trust ความเชื่อถือ + Issued to ออกให้แก่ + Valid from ใช้ได้ตั้งแต่ + Valid to ใช้ได้ถึง + Intended usage การใช้งานที่กำหนด + Any ใดก็ได้ + Version เวอร์ชัน + Serial number หมายเลขประจำใบรับรอง + Issuer ผู้ออก + Validity starts เริ่มมีผล + Validity ends สิ้นสุดอายุ + Public key กุญแจสาธารณะ + Key usage การใช้งานกุญแจ + Not present ไม่มี + Self-signed รับรองตนเอง + Edit Action แก้ไขการทำงาน + New Action การทำงานใหม่ + Action name: ชื่อการทำงาน: + Description: คำอธิบาย: + Steps ขั้นตอน + Add the steps this action runs, in order. เพิ่มขั้นตอนที่การทำงานนี้จะรันตามลำดับ + Add Step เพิ่มขั้นตอน + An action with this name already exists. มีการทำงานชื่อนี้อยู่แล้ว + New Action… การทำงานใหม่… + Edit… แก้ไข… + Add watermark เพิ่มลายน้ำ + Add header เพิ่มหัวกระดาษ + Add footer เพิ่มท้ายกระดาษ + Set document title ตั้งชื่อเรื่องเอกสาร + Run a JavaScript รัน JavaScript + Prepare for Distribution เตรียมเพื่อเผยแพร่ + Remove hidden information and flatten comments and form fields, so recipients see only the pages. เอาข้อมูลที่ซ่อนอยู่ออก และรวมความคิดเห็นและช่องแบบฟอร์มเข้ากับหน้า เพื่อให้ผู้รับเห็นเฉพาะหน้าเอกสาร + Optimize Scanned Documents ปรับเอกสารสแกนให้เหมาะสม + Make scans searchable, then make them smaller. ทำให้ไฟล์สแกนค้นหาข้อความได้ แล้วลดขนาดไฟล์ + Add Page Numbers เพิ่มเลขหน้า + Number every page in the footer. ใส่เลขหน้าทุกหน้าที่ท้ายกระดาษ + Mark as Confidential ทำเครื่องหมายว่าเป็นความลับ + A diagonal CONFIDENTIAL watermark on every page. ลายน้ำ CONFIDENTIAL แนวทแยงบนทุกหน้า + Sanitize Documents ล้างข้อมูลแฝงในเอกสาร + Remove hidden information, metadata, scripts and embedded content, and rewrite the files. เอาข้อมูลที่ซ่อนอยู่ เมทาดาทา สคริปต์ และเนื้อหาที่ฝังไว้ออก แล้วเขียนไฟล์ใหม่ + Type text พิมพ์ข้อความ + Text to insert ข้อความที่จะแทรก + Replacement text ข้อความแทนที่ + Edit text… แก้ไขข้อความ… + Add a sticky note here เพิ่มโน้ตที่นี่ + {kind} Properties คุณสมบัติ{kind} + Appearance ลักษณะที่ปรากฏ + General ทั่วไป + Review History ประวัติการตรวจทาน + This comment's appearance can't be changed yet. ยังเปลี่ยนลักษณะของความคิดเห็นนี้ไม่ได้ + Icon ไอคอน + Thickness ความหนา + Modified แก้ไขเมื่อ + No status has been set. ยังไม่ได้ตั้งสถานะ + Compare Files เปรียบเทียบไฟล์ + Old file: ไฟล์เก่า: + Open the older version first เปิดรุ่นเก่ากว่าก่อน + New file: ไฟล์ใหม่: + Text is compared word by word; the differences are shown on the new file. ข้อความถูกเปรียบเทียบทีละคำ ความแตกต่างจะแสดงบนไฟล์ใหม่ + Compare this file with an older version: Compare files… in All tools. เปรียบเทียบไฟล์นี้กับรุ่นเก่ากว่า: เปรียบเทียบไฟล์… ในเครื่องมือทั้งหมด + No differences in the text. ไม่มีความแตกต่างในข้อความ + {n} {kind} {n} {kind} + Inserted แทรกแล้ว + Deleted ลบแล้ว + Replaced แทนที่แล้ว + Visual ภาพ + Mark as comments ทำเครื่องหมายเป็นความคิดเห็น + Report… รายงาน… + {kind} · page {p} {kind} · หน้า {p} + Set Alternate Text ตั้งข้อความแสดงแทน + This document has no tagged figures. เอกสารนี้ไม่มีรูปประกอบที่ติดแท็ก + on page {p} ในหน้า {p} + Figure {i} of {n}{page} รูปประกอบ {i} จาก {n}{page} + No preview ไม่มีตัวอย่าง + Alternate text ข้อความแสดงแทน + Describe the figure อธิบายรูปประกอบ + Decorative figure รูปประกอบตกแต่ง + Previous figure รูปประกอบก่อนหน้า + Next figure รูปประกอบถัดไป + Save & Close บันทึกและปิด + Accessibility Checker Options ตัวเลือกตัวตรวจสอบการช่วยการเข้าถึง + Report Options ตัวเลือกรายงาน + Create accessibility report สร้างรายงานการช่วยการเข้าถึง + Page Range ช่วงหน้า + All pages in document ทุกหน้าในเอกสาร + Checking Options ({on} of 32 in all categories) ตัวเลือกการตรวจสอบ ({on} จาก 32 ในทุกหมวดหมู่) + Show this dialog when the Checker starts แสดงกล่องโต้ตอบนี้เมื่อตัวตรวจสอบเริ่มทำงาน + Select All เลือกทั้งหมด + Clear All ล้างทั้งหมด + Start Checking เริ่มตรวจสอบ + This document hasn't been checked yet. เอกสารนี้ยังไม่ได้รับการตรวจสอบ + No issues found ไม่พบปัญหา + 1 issue 1 ปัญหา + {n} issues {n} ปัญหา + {label} (1 issue) {label} (1 ปัญหา) + {label} ({n} issues) {label} ({n} ปัญหา) + Check again ตรวจสอบอีกครั้ง + Report รายงาน + Show the accessibility report แสดงรายงานการช่วยการเข้าถึง + Collapse ยุบ + Expand ขยาย + {rule} - {status} {rule} - {status} + Passed ผ่าน + Failed ล้มเหลว + Needs manual check ต้องตรวจสอบด้วยตนเอง + Skipped ข้ามแล้ว + Fix แก้ไข + Skip Rule ข้ามกฎ + Explain อธิบาย + Check Again ตรวจสอบอีกครั้ง + Show Report แสดงรายงาน + Options… ตัวเลือก… + Go to the page ไปที่หน้านั้น + Page Content เนื้อหาของหน้า + Forms แบบฟอร์ม + Alternate Text ข้อความแสดงแทน + Tables ตาราง + Lists รายการ + Headings หัวเรื่อง + Accessibility permission flag แฟล็กสิทธิ์การช่วยการเข้าถึง + Accessibility permission flag is set ตั้งแฟล็กสิทธิ์การช่วยการเข้าถึงไว้แล้ว + Security settings must allow assistive technology to read the content ("Enable text access for screen reader devices"). Change the document's security to allow it. การตั้งค่าความปลอดภัยต้องอนุญาตให้เทคโนโลยีสิ่งอำนวยความสะดวกอ่านเนื้อหาได้ ("อนุญาตให้อุปกรณ์อ่านหน้าจอเข้าถึงข้อความ") ให้เปลี่ยนความปลอดภัยของเอกสารเพื่ออนุญาต + Image-only PDF PDF ที่มีแต่รูปภาพ + Document is not image-only PDF เอกสารไม่ใช่ PDF ที่มีแต่รูปภาพ + Pages that are only pictures of text can't be read aloud or searched. Recognize text (OCR) to add a text layer. หน้าที่เป็นเพียงรูปภาพของข้อความไม่สามารถอ่านออกเสียงหรือค้นหาได้ ให้รู้จำข้อความ (OCR) เพื่อเพิ่มชั้นข้อความ + Document is tagged PDF เอกสารเป็น PDF ที่ติดแท็ก + Tags give the document a logical structure that assistive technology follows. Tag the document (Automatically tag PDF). แท็กให้โครงสร้างเชิงตรรกะแก่เอกสารซึ่งเทคโนโลยีสิ่งอำนวยความสะดวกใช้อ้างอิง ให้ติดแท็กเอกสาร (ติดแท็ก PDF อัตโนมัติ) + Logical Reading Order ลำดับการอ่านเชิงตรรกะ + Document structure provides a logical reading order โครงสร้างเอกสารให้ลำดับการอ่านที่สมเหตุสมผล + Check that the tags read in the order a sighted reader would. Use the Reading Order tool or the Tags panel to correct it. ตรวจสอบว่าแท็กอ่านตามลำดับที่ผู้อ่านที่มองเห็นจะอ่าน ใช้เครื่องมือลำดับการอ่านหรือแผงแท็กเพื่อแก้ไข + Primary language ภาษาหลัก + Text language is specified ระบุภาษาของข้อความแล้ว + Screen readers choose their voice from the document's language. Set it in Document Properties > Advanced > Language. โปรแกรมอ่านหน้าจอเลือกเสียงจากภาษาของเอกสาร ตั้งได้ในคุณสมบัติเอกสาร > ขั้นสูง > ภาษา + Document title is showing in title bar ชื่อเรื่องเอกสารแสดงในแถบชื่อเรื่อง + The window should show a meaningful title rather than the file name. Set a title and Initial View > Show: Document Title. หน้าต่างควรแสดงชื่อเรื่องที่มีความหมายแทนชื่อไฟล์ ตั้งชื่อเรื่องและมุมมองเริ่มต้น > แสดง: ชื่อเรื่องเอกสาร + Bookmarks are present in large documents มีบุ๊กมาร์กในเอกสารขนาดใหญ่ + Documents of more than 20 pages need bookmarks for navigation. Add bookmarks for the main sections. เอกสารที่เกิน 20 หน้าควรมีบุ๊กมาร์กสำหรับนำทาง ให้เพิ่มบุ๊กมาร์กสำหรับส่วนหลัก ๆ + Color contrast ความเปรียบต่างของสี + Document has appropriate color contrast เอกสารมีความเปรียบต่างของสีที่เหมาะสม + Text must contrast enough with its background for people with low vision. Check the colours by eye or with a contrast tool. ข้อความต้องมีความเปรียบต่างกับพื้นหลังเพียงพอสำหรับผู้มีสายตาเลือนราง ตรวจสอบสีด้วยตาหรือด้วยเครื่องมือวัดความเปรียบต่าง + Tagged content เนื้อหาที่ติดแท็ก + All page content is tagged เนื้อหาของหน้าทั้งหมดติดแท็กแล้ว + Everything on a page must be tagged or marked as an artifact (decoration, headers, footers). Tag the untagged content. ทุกอย่างบนหน้าต้องติดแท็กหรือระบุเป็นส่วนตกแต่ง (ลวดลาย หัวกระดาษ ท้ายกระดาษ) ให้ติดแท็กเนื้อหาที่ยังไม่มีแท็ก + Tagged annotations คำอธิบายประกอบที่ติดแท็ก + All annotations are tagged คำอธิบายประกอบทั้งหมดติดแท็กแล้ว + Comments, links and fields must be in the tag tree to be announced. Tag the annotations. ความคิดเห็น ลิงก์ และช่องต้องอยู่ในโครงสร้างแท็กจึงจะถูกอ่านออกเสียง ให้ติดแท็กคำอธิบายประกอบ + Tab order ลำดับแท็บ + Tab order is consistent with structure order ลำดับแท็บสอดคล้องกับลำดับโครงสร้าง + Pages with links, comments or fields should tab in structure order. The fix sets each page's tab order to Use Document Structure. หน้าที่มีลิงก์ ความคิดเห็น หรือช่อง ควรเรียงลำดับแท็บตามโครงสร้าง การแก้ไขจะตั้งลำดับแท็บของแต่ละหน้าเป็นใช้โครงสร้างเอกสาร + Character encoding การเข้ารหัสอักขระ + Reliable character encoding is provided มีการเข้ารหัสอักขระที่เชื่อถือได้ + Fonts must map their characters to Unicode so text can be read and copied. Fix the fonts or recreate the PDF. แบบอักษรต้องจับคู่อักขระกับ Unicode เพื่อให้อ่านและคัดลอกข้อความได้ ให้แก้ไขแบบอักษรหรือสร้าง PDF ใหม่ + Tagged multimedia มัลติมีเดียที่ติดแท็ก + All multimedia objects are tagged ออบเจ็กต์มัลติมีเดียทั้งหมดติดแท็กแล้ว + Video, sound and rich media must be tagged to be announced. Tag the multimedia annotations. วิดีโอ เสียง และสื่อสมบูรณ์ต้องติดแท็กจึงจะถูกอ่านออกเสียง ให้ติดแท็กคำอธิบายประกอบมัลติมีเดีย + Screen flicker หน้าจอกะพริบ + Page will not cause screen flicker หน้าจะไม่ทำให้หน้าจอกะพริบ + Animation that flashes can cause seizures. Check scripts and media for flicker. ภาพเคลื่อนไหวที่กะพริบอาจทำให้เกิดอาการชัก ตรวจสอบสคริปต์และสื่อว่ามีการกะพริบหรือไม่ + Scripts สคริปต์ + No inaccessible scripts ไม่มีสคริปต์ที่เข้าถึงไม่ได้ + Timed responses การตอบสนองแบบจำกัดเวลา + Page does not require timed responses หน้าไม่ต้องการการตอบสนองแบบจำกัดเวลา + People may need more time to respond. Check that nothing has a time limit. ผู้ใช้อาจต้องการเวลาตอบสนองมากขึ้น ตรวจสอบว่าไม่มีสิ่งใดจำกัดเวลา + Navigation links ลิงก์นำทาง + Navigation links are not repetitive ลิงก์นำทางไม่ซ้ำซ้อน + Repeated navigation links should be skippable. Check links that appear on every page. ลิงก์นำทางที่ซ้ำกันควรข้ามได้ ตรวจสอบลิงก์ที่ปรากฏในทุกหน้า + Tagged form fields ช่องแบบฟอร์มที่ติดแท็ก + All form fields are tagged ช่องแบบฟอร์มทั้งหมดติดแท็กแล้ว + Form fields must be in the tag tree (Form tags) to be announced. Tag the form fields. ช่องแบบฟอร์มต้องอยู่ในโครงสร้างแท็ก (แท็ก Form) จึงจะถูกอ่านออกเสียง ให้ติดแท็กช่องแบบฟอร์ม + Field descriptions คำอธิบายช่อง + All form fields have description ช่องแบบฟอร์มทั้งหมดมีคำอธิบาย + Each field needs a tooltip that says what to enter. Add one in Field Properties > General > Tooltip. แต่ละช่องต้องมีคำแนะนำเครื่องมือที่บอกว่าต้องกรอกอะไร เพิ่มได้ในคุณสมบัติช่อง > ทั่วไป > คำแนะนำเครื่องมือ + Figures alternate text ข้อความแสดงแทนของรูปประกอบ + Figures require alternate text รูปประกอบต้องมีข้อความแสดงแทน + Pictures need alternate text that describes them, or must be marked decorative. Add alternate text to each figure. รูปภาพต้องมีข้อความแสดงแทนที่อธิบายรูป หรือต้องระบุว่าเป็นส่วนตกแต่ง ให้เพิ่มข้อความแสดงแทนในแต่ละรูปประกอบ + Nested alternate text ข้อความแสดงแทนซ้อนกัน + Alternate text that will never be read ข้อความแสดงแทนที่จะไม่ถูกอ่าน + Alternate text inside an element that already has alternate text is never read. Remove the inner alternate text. ข้อความแสดงแทนที่อยู่ในองค์ประกอบซึ่งมีข้อความแสดงแทนอยู่แล้วจะไม่ถูกอ่าน ให้เอาข้อความแสดงแทนด้านในออก + Associated with content ผูกกับเนื้อหา + Alternate text must be associated with some content ข้อความแสดงแทนต้องผูกกับเนื้อหา + Alternate text on an element without page content is never reached. Remove it or attach the element to content. ข้อความแสดงแทนบนองค์ประกอบที่ไม่มีเนื้อหาของหน้าจะไม่ถูกอ่านถึง ให้เอาออกหรือผูกองค์ประกอบกับเนื้อหา + Hides annotation ซ่อนคำอธิบายประกอบ + Alternate text should not hide annotation ข้อความแสดงแทนไม่ควรซ่อนคำอธิบายประกอบ + Alternate text on an element that contains a link or field hides that annotation from assistive technology. Move the alternate text. ข้อความแสดงแทนบนองค์ประกอบที่มีลิงก์หรือช่องจะซ่อนคำอธิบายประกอบนั้นจากเทคโนโลยีสิ่งอำนวยความสะดวก ให้ย้ายข้อความแสดงแทน + Other elements alternate text ข้อความแสดงแทนขององค์ประกอบอื่น + Other elements that require alternate text องค์ประกอบอื่นที่ต้องมีข้อความแสดงแทน + Formulas and similar non-text elements need alternate text. Add alternate text to them. สูตรและองค์ประกอบที่ไม่ใช่ข้อความในลักษณะเดียวกันต้องมีข้อความแสดงแทน ให้เพิ่มข้อความแสดงแทน + Rows แถว + TR must be a child of Table, THead, TBody, or TFoot TR ต้องเป็นลูกของ Table, THead, TBody หรือ TFoot + Table cells belong in a row. Fix the table's tags. เซลล์ตารางต้องอยู่ในแถว ให้แก้ไขแท็กของตาราง + Headers หัวตาราง + Tables should have headers ตารางควรมีหัวตาราง + Header cells (TH) tell listeners what each column or row holds. Mark the header cells. เซลล์หัวตาราง (TH) บอกผู้ฟังว่าแต่ละคอลัมน์หรือแถวมีอะไร ให้ระบุเซลล์หัวตาราง + Regularity ความสม่ำเสมอ + Tables must contain the same number of columns in each row and rows in each column ตารางต้องมีจำนวนคอลัมน์เท่ากันในแต่ละแถว และจำนวนแถวเท่ากันในแต่ละคอลัมน์ + Irregular tables confuse cell navigation. Give every row the same number of cells (counting spans). ตารางที่ไม่สม่ำเสมอทำให้การนำทางระหว่างเซลล์สับสน ให้ทุกแถวมีจำนวนเซลล์เท่ากัน (นับรวมเซลล์ที่ผสาน) + Summary สรุป + Tables must have a summary ตารางต้องมีสรุป + A summary describes the table's purpose and layout. Add a Summary attribute to each table. สรุปใช้อธิบายวัตถุประสงค์และเค้าโครงของตาราง ให้เพิ่มแอตทริบิวต์ Summary ในแต่ละตาราง + List items ข้อในรายการ + LI must be a child of L LI ต้องเป็นลูกของ L + List items belong in a list. Fix the list's tags. ข้อในรายการต้องอยู่ในรายการ ให้แก้ไขแท็กของรายการ + Lbl and LBody Lbl และ LBody + Lbl and LBody must be children of LI Lbl และ LBody ต้องเป็นลูกของ LI + List labels and bodies belong in a list item. Fix the list's tags. ป้ายและเนื้อหาของรายการต้องอยู่ในข้อของรายการ ให้แก้ไขแท็กของรายการ + Appropriate nesting การซ้อนที่เหมาะสม + Heading levels shouldn't skip (an H1 followed by an H3). Retag the headings. ระดับหัวเรื่องไม่ควรข้าม (H1 ตามด้วย H3) ให้ติดแท็กหัวเรื่องใหม่ + TH and TD TH และ TD + TH and TD must be children of TR TH และ TD ต้องเป็นลูกของ TR + Mark Page Range ทำเครื่องหมายช่วงหน้า + Pages from หน้าจาก + Single word or phrase คำหรือวลีเดียว + Text to find ข้อความที่จะค้นหา + Patterns ลวดลาย + Phone Numbers หมายเลขโทรศัพท์ + Email Addresses ที่อยู่อีเมล + Credit Cards บัตรเครดิต + Social Security Numbers หมายเลขประกันสังคม + Dates วันที่ + Text in images isn't found; recognise text (OCR) first. ไม่พบข้อความในรูปภาพ โปรดรู้จำข้อความ (OCR) ก่อน + No matches. ไม่พบรายการที่ตรงกัน + Some bookmarks are not shown here: the panel lists a limited number, nested a limited depth. บุ๊กมาร์กบางรายการไม่ได้แสดงที่นี่ แผงนี้แสดงได้จำนวนจำกัดและซ้อนได้ลึกจำกัด + {n} match(es) marked for redaction. ทำเครื่องหมายเพื่อปิดทับแล้ว {n} รายการที่ตรงกัน + Multiple words or phrases หลายคำหรือวลี + One word or phrase per line หนึ่งคำหรือวลีต่อบรรทัด + Import list… นำเข้ารายการ… + {n} word(s) or phrase(s) {n} คำหรือวลี + {name} is too large for a word list (at most 1 MB). {name} ใหญ่เกินไปสำหรับรายการคำ (ไม่เกิน 1 MB) + Redaction Tool Properties คุณสมบัติเครื่องมือปิดทับข้อมูล + Redacted area fill colour: สีเติมของพื้นที่ที่ปิดทับ: + Use overlay text ใช้ข้อความซ้อนทับ + Custom text: ข้อความกำหนดเอง: + Redaction code: รหัสการปิดทับ: + Font: แบบอักษร: + Font size: ขนาดแบบอักษร: + Auto-size text to fit redaction region ปรับขนาดข้อความอัตโนมัติให้พอดีกับพื้นที่ปิดทับ + Font colour: สีแบบอักษร: + Repeat overlay text ทำซ้ำข้อความซ้อนทับ + Text alignment: การจัดแนวข้อความ: + Center กึ่งกลาง + Apply redactions ปิดทับข้อมูลที่ทำเครื่องหมายไว้ + You are about to apply 1 redaction mark. Text, images and drawings under the marks, and comments and form fields that overlap them, are removed permanently. คุณกำลังจะปิดทับตามเครื่องหมาย 1 จุด ข้อความ รูปภาพ และภาพวาดใต้เครื่องหมาย รวมถึงความคิดเห็นและช่องแบบฟอร์มที่ซ้อนทับ จะถูกเอาออกอย่างถาวร + You are about to apply {n} redaction marks. Text, images and drawings under the marks, and comments and form fields that overlap them, are removed permanently. คุณกำลังจะปิดทับตามเครื่องหมาย {n} จุด ข้อความ รูปภาพ และภาพวาดใต้เครื่องหมาย รวมถึงความคิดเห็นและช่องแบบฟอร์มที่ซ้อนทับ จะถูกเอาออกอย่างถาวร + Save the document afterwards: saving rewrites the whole file so no trace of the removed content stays in it. บันทึกเอกสารหลังจากนี้ การบันทึกจะเขียนไฟล์ใหม่ทั้งหมด จึงไม่มีร่องรอยของเนื้อหาที่เอาออกหลงเหลืออยู่ + Select the items to remove from this document. เลือกรายการที่จะเอาออกจากเอกสารนี้ + Metadata เมทาดาทา + File attachments ไฟล์แนบ + Comments and markups ความคิดเห็นและเครื่องหมาย + Hidden text ข้อความที่ซ่อนอยู่ + Hidden layers เลเยอร์ที่ซ่อนอยู่ + Links, actions and JavaScripts ลิงก์ การทำงาน และ JavaScript + Private data of other applications ข้อมูลเฉพาะของแอปพลิเคชันอื่น + None found ไม่พบ + Form fields are flattened: their values stay visible. Saving rewrites the whole file. ช่องแบบฟอร์มถูกรวมเข้ากับหน้าแล้ว ค่าต่าง ๆ ยังมองเห็นได้ การบันทึกจะเขียนไฟล์ใหม่ทั้งหมด + Remove เอาออก + Sanitizing removes hidden information from the document: metadata, file attachments, comments, form fields (flattened), hidden text and layers, bookmarks, links, actions and scripts, and private application data. การล้างข้อมูลแฝงจะเอาข้อมูลที่ซ่อนอยู่ออกจากเอกสาร ได้แก่ เมทาดาทา ไฟล์แนบ ความคิดเห็น ช่องแบบฟอร์ม (รวมเข้ากับหน้า) ข้อความและเลเยอร์ที่ซ่อนอยู่ บุ๊กมาร์ก ลิงก์ การทำงานและสคริปต์ และข้อมูลเฉพาะของแอปพลิเคชัน + Save the document afterwards; saving rewrites the whole file so nothing removed stays in it. บันทึกเอกสารหลังจากนี้ การบันทึกจะเขียนไฟล์ใหม่ทั้งหมด จึงไม่มีสิ่งที่เอาออกหลงเหลืออยู่ + Printer: เครื่องพิมพ์: + Save as PDF บันทึกเป็น PDF + {name} (default) {name} (ค่าเริ่มต้น) + Copies: จำนวนสำเนา: + Collate เรียงชุด + Print in grayscale พิมพ์เป็นระดับสีเทา + Two-sided: สองด้าน: + Off ปิด + Flip on long edge พลิกตามขอบยาว + Flip on short edge พลิกตามขอบสั้น + Paper: กระดาษ: + Pages to Print หน้าที่จะพิมพ์ + More options: ตัวเลือกเพิ่มเติม: + All pages in range ทุกหน้าในช่วง + Odd pages only เฉพาะหน้าคี่ + Even pages only เฉพาะหน้าคู่ + Reverse pages กลับลำดับหน้า + Page Sizing & Handling การปรับขนาดและจัดการหน้า + Size ขนาด + Poster โปสเตอร์ + Multiple หลายรายการ + Booklet หนังสือเล่มเล็ก + Fit พอดี + Shrink oversized pages ย่อหน้าที่ใหญ่เกิน + Custom scale: มาตราส่วนกำหนดเอง: + Tile scale: มาตราส่วนการปูกระดาษ: + Overlap: ส่วนซ้อนทับ: + Cut marks เครื่องหมายตัด + Pages per sheet: จำนวนหน้าต่อแผ่น: + Page order: ลำดับหน้า: + Horizontal แนวนอน + Horizontal reversed แนวนอนกลับด้าน + Vertical แนวตั้ง + Vertical reversed แนวตั้งกลับด้าน + Print page border พิมพ์เส้นขอบหน้า + Auto-rotate pages หมุนหน้าอัตโนมัติ + Booklet subset: ส่วนของหนังสือเล่มเล็ก: + Both sides ทั้งสองด้าน + Front side only ด้านหน้าเท่านั้น + Back side only ด้านหลังเท่านั้น + Binding: การเข้าเล่ม: + Left ซ้าย + Right ขวา + Orientation: การวางแนว: + Auto portrait/landscape แนวตั้ง/แนวนอนอัตโนมัติ + Portrait แนวตั้ง + Landscape แนวนอน + Comments & Forms ความคิดเห็นและแบบฟอร์ม + Document เอกสาร + Document and markups เอกสารและเครื่องหมาย + Document and stamps เอกสารและตราประทับ + Form fields only ช่องแบบฟอร์มเท่านั้น + Previous sheet แผ่นก่อนหน้า + Next sheet แผ่นถัดไป + No sheets ไม่มีแผ่น + Sheet {s} of {n} แผ่น {s} จาก {n} + Removed 1 hidden item. Save to remove them from the file. เอารายการที่ซ่อนอยู่ออกแล้ว 1 รายการ บันทึกเพื่อเอาออกจากไฟล์ + Removed {n} hidden items. Save to remove them from the file. เอารายการที่ซ่อนอยู่ออกแล้ว {n} รายการ บันทึกเพื่อเอาออกจากไฟล์ + Document sanitized. Save to finish: saving rewrites the whole file. ล้างข้อมูลแฝงในเอกสารแล้ว บันทึกเพื่อให้เสร็จสิ้น การบันทึกจะเขียนไฟล์ใหม่ทั้งหมด + Applied 1 redaction mark. Save to remove the content from the file. ปิดทับตามเครื่องหมายแล้ว 1 จุด บันทึกเพื่อเอาเนื้อหาออกจากไฟล์ + Applied {n} redaction marks. Save to remove the content from the file. ปิดทับตามเครื่องหมายแล้ว {n} จุด บันทึกเพื่อเอาเนื้อหาออกจากไฟล์ + JavaScript Console คอนโซล JavaScript + JavaScript is turned off (Preferences ▸ JavaScript). JavaScript ปิดอยู่ (การตั้งค่า ▸ JavaScript) + Output appears here. ผลลัพธ์จะแสดงที่นี่ + Script Name: ชื่อสคริปต์: + This document has no document-level scripts. เอกสารนี้ไม่มีสคริปต์ระดับเอกสาร + No form fields were detected ตรวจไม่พบช่องแบบฟอร์ม + Detected 1 form field ตรวจพบช่องแบบฟอร์ม 1 ช่อง + Detected {n} form fields ตรวจพบช่องแบบฟอร์ม {n} ช่อง + {field}: {e} {field}: {e} + Current page หน้าปัจจุบัน + Selected pages หน้าที่เลือก + Document language ภาษาของเอกสาร + Output ผลลัพธ์ + Searchable Image (Exact) รูปภาพที่ค้นหาข้อความได้ (ตรงตามต้นฉบับ) + Adds invisible text over each word; the page image is not changed เพิ่มข้อความที่มองไม่เห็นทับแต่ละคำ โดยไม่เปลี่ยนภาพของหน้า + Downsample to ลดความละเอียดเป็น + Also recognize pages that already have text รู้จำหน้าที่มีข้อความอยู่แล้วด้วย + Pictures on those pages are recognized too; words already in the page's text are not added again รูปภาพในหน้าเหล่านั้นจะถูกรู้จำด้วย คำที่มีอยู่แล้วในข้อความของหน้าจะไม่ถูกเพิ่มซ้ำ + Text recognition isn't installed: its model files are missing. Reinstall PdfCraft, or set PDFCRAFT_MODELS to the folder that holds them. ยังไม่ได้ติดตั้งการรู้จำข้อความ: ไม่พบไฟล์โมเดล โปรดติดตั้ง PdfCraft ใหม่ หรือตั้ง PDFCRAFT_MODELS ไปยังโฟลเดอร์ที่มีไฟล์เหล่านั้น + Settings การตั้งค่า + Optional ไม่บังคับ + Planned · {m} วางแผนไว้ · {m} + Planned for milestone {m} — open to see what it will include วางแผนไว้สำหรับไมล์สโตน {m} — เปิดเพื่อดูว่าจะมีอะไรบ้าง + Coming in milestone {m}. Items marked Ready work today. จะมาในไมล์สโตน {m} รายการที่มีป้าย Ready ใช้งานได้แล้ววันนี้ + 1 mark 1 เครื่องหมาย + {n} marks {n} เครื่องหมาย + Dynamic ไดนามิก + Sign Here เซ็นที่นี่ + Standard Business ธุรกิจมาตรฐาน + Choose a stamp, then click on the page to place it. เลือกตราประทับ แล้วคลิกบนหน้าเพื่อวาง + Note โน้ต + Polyline เส้นหลายช่วง + Attachment ไฟล์แนบ + Callout คำบรรยายภาพ + Typewriter พิมพ์ดีด + Checked เลือกอยู่ + Unchecked ไม่ได้เลือก + Marked ทำเครื่องหมายแล้ว + Locked ล็อกอยู่ + Search comments ค้นหาความคิดเห็น + Add a comment เพิ่มความคิดเห็น + No comments yet. ยังไม่มีความคิดเห็น + Pick a tool in the quick bar, or type above. เลือกเครื่องมือในแถบด่วน หรือพิมพ์ด้านบน + No comments match. ไม่มีความคิดเห็นที่ตรงกัน + Unknown author ไม่ทราบผู้เขียน + No colour ไม่มีสี + Remove checkmark เอาเครื่องหมายถูกออก + Mark with checkmark ทำเครื่องหมายถูก + Reply ตอบกลับ + Add a reply เพิ่มการตอบกลับ + Post โพสต์ + Page {label} หน้า {label} + {kind} — click to show it on the page {kind} — คลิกเพื่อแสดงบนหน้า + Set status ตั้งสถานะ + Copy text คัดลอกข้อความ + Properties… คุณสมบัติ… + Make Current Properties Default ตั้งคุณสมบัติปัจจุบันเป็นค่าเริ่มต้น + More options ตัวเลือกเพิ่มเติม + Sort by เรียงตาม + Author ผู้เขียน + Type ชนิด + Colour สี + Show all comments แสดงความคิดเห็นทั้งหมด + Create PDF comment summary… สร้างสรุปความคิดเห็นเป็น PDF… + Export all to data file… ส่งออกทั้งหมดเป็นไฟล์ข้อมูล… + Filter comments กรองความคิดเห็น + Status สถานะ + Accepted ยอมรับแล้ว + Rejected ปฏิเสธแล้ว + Cancelled ยกเลิกแล้ว + Completed เสร็จสมบูรณ์ + Show all แสดงทั้งหมด + Yellow เหลือง + Orange ส้ม + Red แดง + Pink ชมพู + Purple ม่วง + Blue น้ำเงิน + Light blue ฟ้าอ่อน + Green เขียว + Gray เทา + Black ดำ + Bookmark options ตัวเลือกบุ๊กมาร์ก + Expand all bookmarks ขยายบุ๊กมาร์กทั้งหมด + Expand top-level bookmarks ขยายบุ๊กมาร์กระดับบนสุด + Collapse all bookmarks ยุบบุ๊กมาร์กทั้งหมด + New bookmark ({key}) บุ๊กมาร์กใหม่ ({key}) + This document has no bookmarks. เอกสารนี้ไม่มีบุ๊กมาร์ก + This document has no layers. เอกสารนี้ไม่มีเลเยอร์ + This document has no attachments. เอกสารนี้ไม่มีไฟล์แนบ + Hide layer ซ่อนเลเยอร์ + Show layer แสดงเลเยอร์ + Set layer visibility ตั้งการมองเห็นของเลเยอร์ + on page {label} ในหน้า {label} + Save attachment… บันทึกไฟล์แนบ… + Open in a new tab เปิดในแท็บใหม่ + This document has no pages. เอกสารนี้ไม่มีหน้า + Find text ค้นหาข้อความ + No matches ไม่พบรายการที่ตรงกัน + Searching… {s}/{p} กำลังค้นหา… {s}/{p} + {c} of {n}{more} {c} จาก {n}{more} + Previous ({key}) ก่อนหน้า ({key}) + Next ({key}) ถัดไป ({key}) + Find options ตัวเลือกการค้นหา + Whole words only ทั้งคำเท่านั้น + Case-sensitive ตรงตามตัวพิมพ์ใหญ่-เล็ก + Close (Esc) ปิด (Esc) + Align จัดแนว + Top บน + Bottom ล่าง + Center horizontally จัดกึ่งกลางแนวนอน + Center vertically จัดกึ่งกลางแนวตั้ง + Distribute กระจาย + Horizontally แนวนอน + Vertically แนวตั้ง + Set Fields to Same Size ตั้งช่องให้มีขนาดเท่ากัน + Height ความสูง + Width ความกว้าง + Both ทั้งคู่ + Duplicate… ทำสำเนา… + All pages ทุกหน้า + Odd pages หน้าคี่ + Even pages หน้าคู่ + Landscape pages หน้าแนวนอน + Portrait pages หน้าแนวตั้ง + Move earlier ย้ายไปก่อนหน้า + Move later ย้ายไปข้างหลัง + Back to the document กลับไปที่เอกสาร + Protect Using Password ป้องกันด้วยรหัสผ่าน + Requires user to enter a password for: ต้องให้ผู้ใช้ป้อนรหัสผ่านสำหรับ: + Viewing การดู + Editing การแก้ไข + Type Password พิมพ์รหัสผ่าน + Re-type Password พิมพ์รหัสผ่านอีกครั้ง + Strength: {s} ความแข็งแรง: {s} + Strong แข็งแรง + Medium ปานกลาง + Weak อ่อน + Advanced Options {chevron} ตัวเลือกขั้นสูง {chevron} + Compatibility ความเข้ากันได้ + Acrobat X and later (256-bit AES) Acrobat X ขึ้นไป (AES 256 บิต) + Acrobat 7.0 and later (128-bit AES) Acrobat 7.0 ขึ้นไป (AES 128 บิต) + Acrobat 5.0 and later (128-bit RC4) Acrobat 5.0 ขึ้นไป (RC4 128 บิต) + Acrobat 3.0 and later (40-bit RC4) Acrobat 3.0 ขึ้นไป (RC4 40 บิต) + Encrypt เข้ารหัส + All document contents เนื้อหาทั้งหมดของเอกสาร + All document contents except metadata เนื้อหาทั้งหมดของเอกสาร ยกเว้นเมทาดาทา + Printing allowed การพิมพ์ที่อนุญาต + Low Resolution (150 dpi) ความละเอียดต่ำ (150 dpi) + Changes allowed การเปลี่ยนแปลงที่อนุญาต + Inserting, deleting, and rotating pages การแทรก ลบ และหมุนหน้า + Filling in form fields and signing existing signature fields การกรอกช่องแบบฟอร์มและการเซ็นในช่องลายเซ็นที่มีอยู่ + Commenting, filling in form fields, and signing existing signature fields การแสดงความคิดเห็น การกรอกช่องแบบฟอร์ม และการเซ็นในช่องลายเซ็นที่มีอยู่ + Any except extracting pages ทุกอย่าง ยกเว้นการแยกหน้าออกมา + Enable copying of text, images, and other content อนุญาตการคัดลอกข้อความ รูปภาพ และเนื้อหาอื่น + Enable text access for screen reader devices for the visually impaired อนุญาตให้อุปกรณ์อ่านหน้าจอสำหรับผู้พิการทางสายตาเข้าถึงข้อความ + Type a password. พิมพ์รหัสผ่าน + The passwords don't match. รหัสผ่านไม่ตรงกัน + This compatibility level supports only plain ASCII passwords. ระดับความเข้ากันได้นี้รองรับเฉพาะรหัสผ่านที่เป็น ASCII ธรรมดา + Anyone opening the document will need this password. It's applied when you save. ทุกคนที่เปิดเอกสารจะต้องใช้รหัสผ่านนี้ รหัสผ่านจะมีผลเมื่อคุณบันทึก + The document opens without a password; this password is needed to change the restrictions. It's applied when you save. เอกสารเปิดได้โดยไม่ต้องใช้รหัสผ่าน รหัสผ่านนี้ใช้สำหรับเปลี่ยนข้อจำกัด และจะมีผลเมื่อคุณบันทึก + Recover unsaved documents? กู้คืนเอกสารที่ยังไม่ได้บันทึกหรือไม่ + PdfCraft didn't shut down normally. These documents had changes that were autosaved: PdfCraft ปิดตัวลงอย่างไม่ปกติ เอกสารเหล่านี้มีการเปลี่ยนแปลงที่ถูกบันทึกอัตโนมัติไว้: + just now เมื่อสักครู่ + {n} min ago {n} นาทีที่แล้ว + {n} h ago {n} ชม. ที่แล้ว + · password-protected · ป้องกันด้วยรหัสผ่าน + Recover กู้คืน + Discard ละทิ้ง + Version {v} รุ่น {v} + A clean-room, open-source PDF application written in Rust. MIT OR Apache-2.0. โปรแกรม PDF โอเพนซอร์สที่เขียนขึ้นใหม่ทั้งหมดด้วยภาษา Rust สัญญาอนุญาต MIT หรือ Apache-2.0 + Part of ส่วนหนึ่งของ + Summarize Options ตัวเลือกการสรุป + Choose a layout: เลือกเค้าโครง: + Comments only ความคิดเห็นเท่านั้น + Sort comments by: เรียงความคิดเห็นตาม: + Create PDF Comment Summary สร้างสรุปความคิดเห็นเป็น PDF + Revert to the previously saved version of “{name}”? Changes since then can't be undone afterwards. ย้อนกลับเป็น “{name}” ฉบับที่บันทึกไว้ก่อนหน้าหรือไม่ การเปลี่ยนแปลงหลังจากนั้นจะเลิกทำไม่ได้อีก + Number pages ใส่เลขหน้า + Style ลักษณะ + None (prefix only) ไม่มี (เฉพาะคำนำหน้า) + Prefix คำนำหน้า + Start เริ่ม + Labels: {preview}. Later pages keep their labels. ป้ายหน้า: {preview} หน้าถัดไปคงป้ายเดิมไว้ + Even and Odd Pages หน้าคู่และหน้าคี่ + Even Pages Only เฉพาะหน้าคู่ + Odd Pages Only เฉพาะหน้าคี่ + Landscape and Portrait Pages หน้าแนวนอนและแนวตั้ง + Landscape Pages หน้าแนวนอน + Portrait Pages หน้าแนวตั้ง + Duplicate Field ทำสำเนาช่อง + Duplicate "{name}" onto: ทำสำเนา "{name}" ไปยัง: + 1 page selected. เลือกไว้ 1 หน้า + {n} pages selected. เลือกไว้ {n} หน้า + Delete pages after extracting ลบหน้าหลังจากแยกออกมา + Extract pages as separate files แยกหน้าออกเป็นไฟล์แยกกัน + Rotate Pages หมุนหน้า + Direction: ทิศทาง: + Clockwise 90 degrees ตามเข็มนาฬิกา 90 องศา + Counterclockwise 90 degrees ทวนเข็มนาฬิกา 90 องศา + 180 degrees 180 องศา + Pages: หน้า: + All ทั้งหมด + Selection ส่วนที่เลือก + From จาก + Rotate: หมุน: + Repairs การซ่อมแซม + Repair log บันทึกการซ่อมแซม + Split document แบ่งเอกสาร + Number of pages จำนวนหน้า + Pages per file จำนวนหน้าต่อไฟล์ + File size ขนาดไฟล์ + At most ไม่เกิน + Top-level bookmarks ({n}) บุ๊กมาร์กระดับบนสุด ({n}) + Before each selected page (select pages in Organize) ก่อนแต่ละหน้าที่เลือก (เลือกหน้าในจัดระเบียบ) + Creates 1 file from {n} pages. สร้าง 1 ไฟล์จาก {n} หน้า + Creates {f} files from {n} pages. สร้าง {f} ไฟล์จาก {n} หน้า + Each file holds as many of the {n} pages as fit. แต่ละไฟล์จะมีจำนวนหน้ามากที่สุดเท่าที่ใส่ได้จากทั้งหมด {n} หน้า + Replace Pages แทนที่หน้า + Original: replace pages ต้นฉบับ: แทนที่หน้า + to ถึง + to {n} ถึง {n} + Replacement: pages of {name} ตัวแทน: หน้าของ {name} + of {name} ของ {name} + Only the page content changes: links, comments, form fields and bookmarks on the original pages stay. เปลี่ยนเฉพาะเนื้อหาของหน้า ลิงก์ ความคิดเห็น ช่องแบบฟอร์ม และบุ๊กมาร์กในหน้าเดิมยังคงอยู่ + The replacement file doesn't have that many pages. ไฟล์ที่ใช้แทนมีจำนวนหน้าไม่ถึง + Tagged PDF PDF ที่ติดแท็ก + Document Properties คุณสมบัติเอกสาร + Description คำอธิบาย + Initial View มุมมองเริ่มต้น + Security ความปลอดภัย + Fonts แบบอักษร + Advanced ขั้นสูง + Title ชื่อเรื่อง + Subject หัวเรื่อง + Keywords คำสำคัญ + Application แอปพลิเคชัน + PDF producer โปรแกรมที่ผลิต PDF + Layout and Magnification เค้าโครงและการขยาย + Navigation tab แท็บนำทาง + Page Only เฉพาะหน้า + Bookmarks Panel and Page แผงบุ๊กมาร์กและหน้า + Pages Panel and Page แผงหน้าและหน้า + Attachments Panel and Page แผงไฟล์แนบและหน้า + Layers Panel and Page แผงเลเยอร์และหน้า + Page layout เค้าโครงหน้า + Default ค่าเริ่มต้น + Single Page หน้าเดียว + Single Page Continuous หน้าเดียวต่อเนื่อง + Two-Up (Facing) สองหน้า (หน้าคู่กัน) + Two-Up Continuous (Facing) สองหน้าต่อเนื่อง (หน้าคู่กัน) + Two-Up (Cover Page) สองหน้า (มีหน้าปก) + Two-Up Continuous (Cover Page) สองหน้าต่อเนื่อง (มีหน้าปก) + Magnification การขยาย + Actual Size ขนาดจริง + Fit Page พอดีหน้า + Fit Width พอดีความกว้าง + Fit Height พอดีความสูง + Fit Visible พอดีส่วนที่มองเห็น + Open to page เปิดไปที่หน้า + of {pages} จาก {pages} + Window Options ตัวเลือกหน้าต่าง + Resize window to initial page ปรับขนาดหน้าต่างตามหน้าแรก + Center window on screen จัดหน้าต่างไว้กลางจอ + Open in Full Screen mode เปิดในโหมดเต็มหน้าจอ + Show: แสดง: + File Name ชื่อไฟล์ + Document Title ชื่อเรื่องเอกสาร + User Interface Options ตัวเลือกส่วนติดต่อผู้ใช้ + Hide menu bar ซ่อนแถบเมนู + Hide toolbars ซ่อนแถบเครื่องมือ + Hide window controls ซ่อนปุ่มควบคุมหน้าต่าง + Security method วิธีรักษาความปลอดภัย + No security ไม่มีการรักษาความปลอดภัย + Restrictions ข้อจำกัด + None — everything is allowed ไม่มี — อนุญาตทุกอย่าง + Password security การรักษาความปลอดภัยด้วยรหัสผ่าน + Encryption การเข้ารหัส + Opened with เปิดด้วย + — (protection is applied when you save) — (การป้องกันจะมีผลเมื่อคุณบันทึก) + Owner password (no restrictions apply) รหัสผ่านเจ้าของ (ไม่มีข้อจำกัด) + User password รหัสผ่านผู้ใช้ + Change settings… เปลี่ยนการตั้งค่า… + Printing การพิมพ์ + Not allowed ไม่อนุญาต + Allowed อนุญาต + High resolution ความละเอียดสูง + Low resolution ความละเอียดต่ำ + Changing the document การเปลี่ยนแปลงเอกสาร + Document assembly การประกอบเอกสาร + Content copying การคัดลอกเนื้อหา + Content copying for accessibility การคัดลอกเนื้อหาเพื่อการช่วยการเข้าถึง + Commenting การแสดงความคิดเห็น + Filling of form fields การกรอกช่องแบบฟอร์ม + No fonts are referenced by the pages. ไม่มีแบบอักษรที่หน้าต่าง ๆ อ้างถึง + PDF version เวอร์ชัน PDF + Location ตำแหน่ง + Page size ขนาดหน้า + Yes ใช่ + No ไม่ + Revisions การแก้ไข + View revision {n} ดูการแก้ไขครั้งที่ {n} + Open the file as it was saved then เปิดไฟล์ตามที่บันทึกไว้ในตอนนั้น + Binding การเข้าเล่ม + Left Edge ขอบซ้าย + Right Edge ขอบขวา + Language ภาษา + Saved {place}: {before} → {after} ({pct}% smaller){detail} บันทึก{place}แล้ว: {before} → {after} (เล็กลง {pct}%){detail} + This file is already as small as it can be made ({size}). No copy was saved. ไฟล์นี้เล็กที่สุดเท่าที่ทำได้แล้ว ({size}) ไม่ได้บันทึกสำเนา + Saved {place}: {before} → {after} (not smaller){detail} บันทึก{place}แล้ว: {before} → {after} (ไม่เล็กลง){detail} + Couldn't save the image: {e} บันทึกรูปภาพไม่ได้: {e} + Adding images arrives on the web with file pickers for images การเพิ่มรูปภาพบนเว็บจะมาพร้อมกับตัวเลือกไฟล์สำหรับรูปภาพ + Replacing images on page {p} arrives on the web with image pickers ({i}) การแทนที่รูปภาพในหน้า {p} บนเว็บจะมาพร้อมกับตัวเลือกรูปภาพ ({i}) + {name}: choosing images arrives on the web with file pickers for images {name}: การเลือกรูปภาพบนเว็บจะมาพร้อมกับตัวเลือกไฟล์สำหรับรูปภาพ + Replacing images arrives on the web with image file pickers การแทนที่รูปภาพบนเว็บจะมาพร้อมกับตัวเลือกไฟล์รูปภาพ + Couldn't create a PDF: {e} สร้าง PDF ไม่ได้: {e} + The clipboard has no image or text คลิปบอร์ดไม่มีรูปภาพหรือข้อความ + On the web, open or drop an image to convert it บนเว็บ ให้เปิดหรือวางรูปภาพเพื่อแปลง + Couldn't optimize the file: {e} ปรับไฟล์ให้เหมาะสมไม่ได้: {e} + Couldn't write {path}: {e} เขียน {path} ไม่ได้: {e} + The form asks to be submitted to {u}; PdfCraft doesn't send form data. Save the document to keep your entries. แบบฟอร์มขอให้ส่งไปที่ {u} แต่ PdfCraft ไม่ส่งข้อมูลแบบฟอร์ม บันทึกเอกสารเพื่อเก็บสิ่งที่คุณกรอก + This PDF uses the unsupported {s} action. PDF นี้ใช้การทำงาน {s} ที่ไม่รองรับ + {name}: the {other} action isn't supported yet {name}: ยังไม่รองรับการทำงาน {other} + {name} submits the form to {url}; PdfCraft doesn't send form data. Save the document to keep your entries. {name} จะส่งแบบฟอร์มไปที่ {url} แต่ PdfCraft ไม่ส่งข้อมูลแบบฟอร์ม บันทึกเอกสารเพื่อเก็บสิ่งที่คุณกรอก + Export stopped: {e} การส่งออกหยุดลง: {e} + Exported 1 image ส่งออกแล้ว 1 รูป + Exported {n} images ส่งออกแล้ว {n} รูป + ({s} not exported: {first}) (ไม่ได้ส่งออก {s} รายการ: {first}) + Exported the text of 1 page ส่งออกข้อความของ 1 หน้าแล้ว + Exported the text of {n} pages ส่งออกข้อความของ {n} หน้าแล้ว + {msg} to {dir} {msg}ไปที่ {dir} + Exporting… {d} of {t} กำลังส่งออก… {d} จาก {t} + Choose a folder for the exported files เลือกโฟลเดอร์สำหรับไฟล์ที่ส่งออก + New {tool} comments will look like this one ความคิดเห็นแบบ{tool}ใหม่จะมีลักษณะเหมือนรายการนี้ + This document can't be checked: it couldn't be read for editing ตรวจสอบเอกสารนี้ไม่ได้: อ่านเพื่อแก้ไขไม่ได้ + The checker found no problems in this document. ตัวตรวจสอบไม่พบปัญหาในเอกสารนี้ + The checker found 1 problem which may prevent the document from being fully accessible. ตัวตรวจสอบพบ 1 ปัญหาที่อาจทำให้เอกสารเข้าถึงได้ไม่สมบูรณ์ + The checker found {n} problems which may prevent the document from being fully accessible. ตัวตรวจสอบพบ {n} ปัญหาที่อาจทำให้เอกสารเข้าถึงได้ไม่สมบูรณ์ + The text is the same ข้อความเหมือนกัน + 1 difference found พบความแตกต่าง 1 จุด + {n} differences found พบความแตกต่าง {n} จุด + Added 1 comment เพิ่มความคิดเห็นแล้ว 1 รายการ + Added {n} comments เพิ่มความคิดเห็นแล้ว {n} รายการ + Choose a folder for the results เลือกโฟลเดอร์สำหรับผลลัพธ์ + Files for {name} ไฟล์สำหรับ {name} + An action is already running มีการทำงานกำลังรันอยู่แล้ว + Running action… file {d} of {t} กำลังรันการทำงาน… ไฟล์ {d} จาก {t} + No unlinked web addresses were found in the text ไม่พบที่อยู่เว็บที่ยังไม่ได้ทำลิงก์ในข้อความ + Created 1 link สร้างแล้ว 1 ลิงก์ + Created {n} links สร้างแล้ว {n} ลิงก์ + Text recognition is already running การรู้จำข้อความกำลังทำงานอยู่แล้ว + Optimizing… removing user data กำลังปรับให้เหมาะสม… เอาข้อมูลผู้ใช้ออก + Optimizing… image {d} of {t} กำลังปรับให้เหมาะสม… รูปภาพ {d} จาก {t} + Optimizing… cleaning up กำลังปรับให้เหมาะสม… ล้างข้อมูล + Optimizing… merging identical objects กำลังปรับให้เหมาะสม… รวมออบเจ็กต์ที่เหมือนกัน + Optimizing… writing the copy กำลังปรับให้เหมาะสม… เขียนสำเนา + Cancelling… กำลังยกเลิก… + Optimization is already running การปรับให้เหมาะสมกำลังทำงานอยู่แล้ว + Optimization cancelled ยกเลิกการปรับให้เหมาะสมแล้ว + Couldn't optimize the file ปรับไฟล์ให้เหมาะสมไม่ได้ + Recognizing text… file {d} of {t} กำลังรู้จำข้อความ… ไฟล์ {d} จาก {t} + Recognizing text… page {d} of {t} กำลังรู้จำข้อความ… หน้า {d} จาก {t} + Recognized 1 word รู้จำได้ 1 คำ + Recognized {n} words รู้จำได้ {n} คำ + {words} on {pages} {words} ใน {pages} + ; 1 page already had text ; มี 1 หน้าที่มีข้อความอยู่แล้ว + ; {n} pages already had text ; มี {n} หน้าที่มีข้อความอยู่แล้ว + Recognized {w} words in 1 file รู้จำได้ {w} คำใน 1 ไฟล์ + Recognized {w} words in {n} files รู้จำได้ {w} คำใน {n} ไฟล์ + ; failed: {list} ; ล้มเหลว: {list} + 1 file done เสร็จแล้ว 1 ไฟล์ + {n} files done เสร็จแล้ว {n} ไฟล์ + The selected area has been copied ({w} × {h} pixels) คัดลอกพื้นที่ที่เลือกแล้ว ({w} × {h} พิกเซล) + Couldn't take the snapshot: {e} จับภาพไม่ได้: {e} + Couldn't recover {name}: {e} กู้คืน {name} ไม่ได้: {e} + The document now conforms to {level}; save it to keep the changes ตอนนี้เอกสารสอดคล้องกับ {level} แล้ว บันทึกเพื่อเก็บการเปลี่ยนแปลง + Fixed what could be fixed; 1 problem remains แก้ไขสิ่งที่แก้ได้แล้ว เหลือ 1 ปัญหา + Fixed what could be fixed; {n} problems remain แก้ไขสิ่งที่แก้ได้แล้ว เหลือ {n} ปัญหา + Custom stamps arrive on the web with file pickers for images ตราประทับกำหนดเองบนเว็บจะมาพร้อมกับตัวเลือกไฟล์สำหรับรูปภาพ + {file} is too large for a stamp (at most {n} MB) {file} ใหญ่เกินไปสำหรับตราประทับ (ไม่เกิน {n} MB) + Sent to {printer} ส่งไปที่ {printer} แล้ว + Sent to {printer}: {msg} ส่งไปที่ {printer} แล้ว: {msg} + Looking for printers… กำลังค้นหาเครื่องพิมพ์… + Sending to {printer}… กำลังส่งไปที่ {printer}… + Choose a folder for the searchable files เลือกโฟลเดอร์สำหรับไฟล์ที่ค้นหาข้อความได้ + Files are combined from top to bottom. Leave Pages empty to take every page. ไฟล์จะถูกรวมจากบนลงล่าง เว้นช่องหน้าว่างไว้เพื่อใช้ทุกหน้า + Unlock… ปลดล็อก… + Select a password-protected file first เลือกไฟล์ที่ป้องกันด้วยรหัสผ่านก่อน + Enter the permissions password to allow combining ป้อนรหัสผ่านสิทธิ์เพื่ออนุญาตการรวมไฟล์ + Enter the password that opens it ป้อนรหัสผ่านที่ใช้เปิดไฟล์ + Unlock {name} ปลดล็อก {name} + Unlock {n} files ปลดล็อก {n} ไฟล์ + The same password is tried on each file. จะลองใช้รหัสผ่านเดียวกันกับทุกไฟล์ + Hide password ซ่อนรหัสผ่าน + Show password แสดงรหัสผ่าน + Wrong password รหัสผ่านไม่ถูกต้อง + The password is only used to read the file; it isn't saved. รหัสผ่านใช้เพื่ออ่านไฟล์เท่านั้น จะไม่ถูกบันทึกไว้ + Unlock ปลดล็อก + Opened, but its security settings don't allow combining. Enter the permissions password. เปิดได้แล้ว แต่การตั้งค่าความปลอดภัยไม่อนุญาตให้รวมไฟล์ โปรดป้อนรหัสผ่านสิทธิ์ + Unlocked: the combined file won't be password-protected ปลดล็อกแล้ว: ไฟล์ที่รวมจะไม่ถูกป้องกันด้วยรหัสผ่าน + Unlocked {n} of {m} files ปลดล็อกแล้ว {n} จาก {m} ไฟล์ + Drop PDFs, images, text files or folders here, or choose them. วาง PDF รูปภาพ ไฟล์ข้อความ หรือโฟลเดอร์ที่นี่ หรือกดเลือก + Add folder… เพิ่มโฟลเดอร์… + Add folder and subfolders… เพิ่มโฟลเดอร์และโฟลเดอร์ย่อย… + More ways to add files วิธีเพิ่มไฟล์แบบอื่น + Every PDF, image and text file in the folder PDF รูปภาพ และไฟล์ข้อความทุกไฟล์ในโฟลเดอร์ + Every PDF, image and text file in the folder and the folders inside it PDF รูปภาพ และไฟล์ข้อความทุกไฟล์ในโฟลเดอร์และโฟลเดอร์ย่อย + Add folder เพิ่มโฟลเดอร์ + Add folder and subfolders เพิ่มโฟลเดอร์และโฟลเดอร์ย่อย + No PDFs, images or text files found in {folder} ไม่พบ PDF รูปภาพ หรือไฟล์ข้อความใน {folder} + Added the first {n} files in {folder} เพิ่ม {n} ไฟล์แรกใน {folder} แล้ว + Click to sort, drag to move the column. Drag its edge to resize it. คลิกเพื่อเรียงลำดับ ลากเพื่อย้ายคอลัมน์ ลากขอบเพื่อปรับขนาด + Reset columns รีเซ็ตคอลัมน์ + Remove {n} files เอาออก {n} ไฟล์ + {n} selected เลือกไว้ {n} รายการ + sorted ascending เรียงจากน้อยไปมาก + sorted descending เรียงจากมากไปน้อย + Protected: the combined file won't keep its security settings มีการป้องกัน: ไฟล์ที่รวมแล้วจะไม่คงการตั้งค่าความปลอดภัยไว้ + Add open documents เพิ่มเอกสารที่เปิดอยู่ + All open documents เอกสารที่เปิดอยู่ทั้งหมด + No documents are open ไม่มีเอกสารเปิดอยู่ + Select a file first เลือกไฟล์ก่อน + 1 file 1 ไฟล์ + {n} files {n} ไฟล์ + 1 file needs attention มี 1 ไฟล์ที่ต้องตรวจสอบ + {n} files need attention มี {n} ไฟล์ที่ต้องตรวจสอบ + {name} can't be combined: {why} รวม {name} ไม่ได้: {why} + Check the pages of {name}: {why} ตรวจสอบหน้าของ {name}: {why} + Add the files to combine เพิ่มไฟล์ที่จะรวม + File name ชื่อไฟล์ + Warnings คำเตือน + Drag to reorder ลากเพื่อเรียงลำดับใหม่ + {k} of {n} {k} จาก {n} + ? of {n} ? จาก {n} + Added more than once ถูกเพิ่มมากกว่าหนึ่งครั้ง + yesterday เมื่อวาน + {n} days ago {n} วันที่แล้ว + No pages selected ยังไม่ได้เลือกหน้า + Password-protected ป้องกันด้วยรหัสผ่าน + Its security settings don't allow copying pages การตั้งค่าความปลอดภัยของไฟล์ไม่อนุญาตให้คัดลอกหน้า + Can't be read: {e} อ่านไม่ได้: {e} + Leave out files that can't be read? ข้ามไฟล์ที่อ่านไม่ได้หรือไม่ + These files can't be read, so they won't be in the combined PDF: ไฟล์เหล่านี้อ่านไม่ได้ จึงจะไม่อยู่ใน PDF ที่รวม: + Combine the rest รวมส่วนที่เหลือ + and {n} more และอีก {n} รายการ + Includes unsaved changes รวมการเปลี่ยนแปลงที่ยังไม่ได้บันทึก + Pages of {name} to combine, e.g. 1-3, 6 หน้าของ {name} ที่จะรวม เช่น 1-3, 6 + Remove {name} เอา {name} ออก + Add files… เพิ่มไฟล์… + Add at least two files เพิ่มอย่างน้อยสองไฟล์ + Couldn't add {name}: {e} เพิ่ม {name} ไม่ได้: {e} + Couldn't combine files: {e} รวมไฟล์ไม่ได้: {e} + Export comments ส่งออกความคิดเห็น + Export form data ส่งออกข้อมูลแบบฟอร์ม + Comment and form data ข้อมูลความคิดเห็นและแบบฟอร์ม + Export ส่งออก + Select data files to merge เลือกไฟล์ข้อมูลที่จะผสาน + Form data and PDF forms ข้อมูลแบบฟอร์มและแบบฟอร์ม PDF + Save the spreadsheet บันทึกสเปรดชีต + Save the accessibility report บันทึกรายงานการช่วยการเข้าถึง + Save image บันทึกรูปภาพ + Export certificate ส่งออกใบรับรอง + Choose a folder for the extracted pages เลือกโฟลเดอร์สำหรับหน้าที่แยกออกมา + Choose a folder for the split files เลือกโฟลเดอร์สำหรับไฟล์ที่แบ่ง + Couldn't use {name}: {e} ใช้ {name} ไม่ได้: {e} + Couldn't extract pages: {e} แยกหน้าออกมาไม่ได้: {e} + Couldn't write {name}: {e} เขียน {name} ไม่ได้: {e} + Wrote 1 file to {dir} เขียน 1 ไฟล์ไปที่ {dir} แล้ว + Wrote {n} files to {dir} เขียน {n} ไฟล์ไปที่ {dir} แล้ว + No pages match those choices ไม่มีหน้าที่ตรงกับตัวเลือกเหล่านั้น + Couldn't split: {e} แบ่งไม่ได้: {e} + Couldn't summarize comments: {e} สรุปความคิดเห็นไม่ได้: {e} + Couldn't open the result: {e} เปิดผลลัพธ์ไม่ได้: {e} + Importing data arrives on the web with file pickers for data files การนำเข้าข้อมูลบนเว็บจะมาพร้อมกับตัวเลือกไฟล์สำหรับไฟล์ข้อมูล + Exported to {path} ส่งออกไปที่ {path} แล้ว + Merging data files needs the desktop app การผสานไฟล์ข้อมูลต้องใช้แอปเดสก์ท็อป + Merged 1 file into {path} ผสาน 1 ไฟล์ลงใน {path} แล้ว + Merged {n} files into {path} ผสาน {n} ไฟล์ลงใน {path} แล้ว + Combined {n} files รวมแล้ว {n} ไฟล์ + Extracted 1 page แยกออกมาแล้ว 1 หน้า + Extracted {n} pages แยกออกมาแล้ว {n} หน้า + Created a comment summary สร้างสรุปความคิดเห็นแล้ว + Couldn't open {name}: {e} เปิด {name} ไม่ได้: {e} + Couldn't read {name}: {e} อ่าน {name} ไม่ได้: {e} + Portable mode is off: {folder} can't be written ({error}). Settings are kept in your user folder instead. โหมดพกพาปิดอยู่: เขียนลงใน {folder} ไม่ได้ ({error}) การตั้งค่าจะถูกเก็บในโฟลเดอร์ผู้ใช้ของคุณแทน + PdfCraft is drawing without a graphics processor, so it may be slow. Updating the graphics driver may help. PdfCraft กำลังวาดโดยไม่ใช้หน่วยประมวลผลกราฟิก จึงอาจทำงานช้า การอัปเดตไดรเวอร์กราฟิกอาจช่วยได้ + Couldn't save: {e} บันทึกไม่ได้: {e} + Downloading attachments on the web arrives with M3.10 ({n} bytes ready) การดาวน์โหลดไฟล์แนบบนเว็บจะมาใน M3.10 (พร้อมแล้ว {n} ไบต์) + `{command}` {when} `{command}` {when} + ships in milestone {m} จะมาในไมล์สโตน {m} + needs an AI provider (off by default) ต้องใช้ผู้ให้บริการ AI (ปิดเป็นค่าเริ่มต้น) + is available พร้อมใช้งาน + is not available yet ยังไม่พร้อมใช้งาน + {label} failed: {e} {label} ล้มเหลว: {e} + Undid {label} เลิกทำ {label} แล้ว + Redid {label} ทำซ้ำ {label} แล้ว + A document needs at least one page: copy instead เอกสารต้องมีอย่างน้อยหนึ่งหน้า ให้ใช้คัดลอกแทน + Cut {what} ตัด{what}แล้ว + Copied {what} คัดลอก{what}แล้ว + 1 page 1 หน้า + {n} pages {n} หน้า + Copy or cut pages first คัดลอกหรือตัดหน้าก่อน + Couldn't save {name}: {e} บันทึก {name} ไม่ได้: {e} + Saved {name} บันทึก {name} แล้ว + Saved, but reopening failed: {e} บันทึกแล้ว แต่เปิดใหม่ไม่สำเร็จ: {e} + Downloaded {name} ดาวน์โหลด {name} แล้ว + Couldn't download {name}: {e} ดาวน์โหลด {name} ไม่ได้: {e} + Reverted to the last saved version ย้อนกลับเป็นฉบับที่บันทึกล่าสุดแล้ว + That didn't work: an internal error stopped it ({m}). Your documents are unchanged. ทำไม่สำเร็จ: ข้อผิดพลาดภายในทำให้หยุดทำงาน ({m}) เอกสารของคุณไม่ถูกเปลี่ยนแปลง + Nothing to undo ไม่มีอะไรให้เลิกทำ + Nothing to redo ไม่มีอะไรให้ทำซ้ำ + This document has no form fields you can fill in เอกสารนี้ไม่มีช่องแบบฟอร์มที่คุณกรอกได้ + This document has no comments to flatten เอกสารนี้ไม่มีความคิดเห็นให้รวมเข้ากับหน้า + This document has no form fields to flatten เอกสารนี้ไม่มีช่องแบบฟอร์มให้รวมเข้ากับหน้า + There are no redaction marks (mark text, areas or pages first) ไม่มีเครื่องหมายปิดทับ (ทำเครื่องหมายข้อความ พื้นที่ หรือหน้าก่อน) + This document has no {kind} to change เอกสารนี้ไม่มี{kind}ให้เปลี่ยน + header or footer หัวกระดาษหรือท้ายกระดาษ + watermark ลายน้ำ + background พื้นหลัง + This document isn't password-protected เอกสารนี้ไม่ได้ป้องกันด้วยรหัสผ่าน + Enter permissions password… ป้อนรหัสผ่านสิทธิ์… + Permissions password รหัสผ่านสิทธิ์ + “{name}” has security restrictions. Enter its permissions password to lift them. “{name}” มีข้อจำกัดด้านความปลอดภัย ป้อนรหัสผ่านสิทธิ์เพื่อยกเลิกข้อจำกัด + Restrictions lifted ยกเลิกข้อจำกัดแล้ว + Couldn't unlock {name}: {e} ปลดล็อก {name} ไม่ได้: {e} + This document has no restrictions to lift เอกสารนี้ไม่มีข้อจำกัดให้ยกเลิก + The document's security settings don't allow this change การตั้งค่าความปลอดภัยของเอกสารไม่อนุญาตการเปลี่ยนแปลงนี้ + The document's security settings don't allow copying text and images การตั้งค่าความปลอดภัยของเอกสารไม่อนุญาตให้คัดลอกข้อความและรูปภาพ + Open a document first เปิดเอกสารก่อน + Security will be removed when you save การรักษาความปลอดภัยจะถูกเอาออกเมื่อคุณบันทึก + Click text or an image to edit it คลิกข้อความหรือรูปภาพเพื่อแก้ไข + Drag a rectangle to create a link; double-click a link to edit it ลากสี่เหลี่ยมเพื่อสร้างลิงก์ ดับเบิลคลิกลิงก์เพื่อแก้ไข + There are no redaction marks to apply ไม่มีเครื่องหมายปิดทับให้ใช้ + Drag to draw the area where the signature should appear. ลากเพื่อวาดพื้นที่ที่จะให้ลายเซ็นปรากฏ + Couldn't fit the visible content: {e} ปรับให้พอดีเนื้อหาที่มองเห็นไม่ได้: {e} + Drag a rectangle around the area to copy ลากสี่เหลี่ยมรอบพื้นที่ที่จะคัดลอก + Click on the page to add a {tool}, or drag to set its size คลิกบนหน้าเพื่อเพิ่ม{tool} หรือลากเพื่อกำหนดขนาด + Drag a rectangle on a page to crop it; double-click a page for Set Page Boxes ลากสี่เหลี่ยมบนหน้าเพื่อครอบตัด ดับเบิลคลิกที่หน้าเพื่อเปิดตั้งกรอบหน้า + Keep tool selected: on คงเครื่องมือที่เลือกไว้: เปิด + Keep tool selected คงเครื่องมือที่เลือกไว้ + Opacity ความทึบ + Line thickness ความหนาเส้น + What word or phrase would you like to search for? คุณต้องการค้นหาคำหรือวลีใด + Searching… {s} of {p} pages กำลังค้นหา… {s} จาก {p} หน้า + (searching… {s} of {p} pages) (กำลังค้นหา… {s} จาก {p} หน้า) + 1 instance 1 รายการ + {n} instances {n} รายการ + Go to this result ไปที่ผลลัพธ์นี้ + Highlight เน้นข้อความ + Draw วาด + Polygon รูปหลายเหลี่ยม + Connected lines เส้นต่อเนื่อง + Eraser ยางลบ + Sign เซ็น + Certified by {by} รับรองโดย {by} + At least one signature is invalid. มีลายเซ็นอย่างน้อยหนึ่งรายการที่ไม่ถูกต้อง + Signed and all signatures are valid. เซ็นแล้วและลายเซ็นทั้งหมดถูกต้อง + At least one signature has problems. มีลายเซ็นอย่างน้อยหนึ่งรายการที่มีปัญหา + This document is secured. Some changes are restricted by its security settings. เอกสารนี้มีการรักษาความปลอดภัย การเปลี่ยนแปลงบางอย่างถูกจำกัดโดยการตั้งค่าความปลอดภัย + This is a dynamic XFA form, which PdfCraft can't display yet. What you see is the file's placeholder page. นี่เป็นแบบฟอร์ม XFA แบบไดนามิก ซึ่ง PdfCraft ยังแสดงไม่ได้ สิ่งที่คุณเห็นคือหน้าตัวแทนของไฟล์ + This form's scripts are turned off because one ran too long. Reopen the document to run them again. สคริปต์ของแบบฟอร์มนี้ถูกปิดเพราะมีสคริปต์ทำงานนานเกินไป เปิดเอกสารใหม่เพื่อรันอีกครั้ง + This form also contains XFA data, which PdfCraft doesn't read yet. You can fill its fields, but Acrobat may show the XFA values instead. แบบฟอร์มนี้มีข้อมูล XFA ด้วย ซึ่ง PdfCraft ยังอ่านไม่ได้ คุณกรอกช่องได้ แต่ Acrobat อาจแสดงค่าของ XFA แทน + This document contains {n} interactive form fields. เอกสารนี้มีช่องแบบฟอร์มแบบโต้ตอบ {n} ช่อง + This file was damaged and has been repaired. Saving keeps the repaired version. ไฟล์นี้เสียหายและได้รับการซ่อมแซมแล้ว การบันทึกจะเก็บรุ่นที่ซ่อมแซมไว้ + Dismiss ปิดข้อความ + Hide field highlights ซ่อนการเน้นช่อง + Highlight fields เน้นช่อง + Security settings การตั้งค่าความปลอดภัย + Details รายละเอียด + Select (V) เลือก (V) + Hand (H) มือ (H) + Delete pages (Delete) ลบหน้า (Delete) + Insert a blank page after the selection แทรกหน้าเปล่าหลังส่วนที่เลือก + Insert pages from a file… แทรกหน้าจากไฟล์… + Extract pages to a new document แยกหน้าออกเป็นเอกสารใหม่ + Split into files… แบ่งเป็นหลายไฟล์… + Select pages เลือกหน้า + Cut ตัด + Copy คัดลอก + Paste after วางต่อท้าย + Rename เปลี่ยนชื่อ + Set to current page ({n}) ตั้งเป็นหน้าปัจจุบัน ({n}) + Move up ย้ายขึ้น + Move down ย้ายลง + Indent เยื้อง + Outdent ลดการเยื้อง + This document has no form fields. เอกสารนี้ไม่มีช่องแบบฟอร์ม + Tab order: move a field with its arrows. ลำดับแท็บ: ย้ายช่องด้วยลูกศรของช่อง + Unplaced ยังไม่ได้วาง + Has JavaScript actions (run in M6) มีการทำงาน JavaScript (รันได้ใน M6) + Page หน้า + None ไม่มี + Delete selected fields ลบช่องที่เลือก + Diagnostic details รายละเอียดการวินิจฉัย + The operation failed. การดำเนินการล้มเหลว + no such document ไม่มีเอกสารดังกล่าว + nothing to undo ไม่มีอะไรให้เลิกทำ + nothing to redo ไม่มีอะไรให้ทำซ้ำ + this document is signed: rewriting it would invalidate its signatures (save it incrementally instead) เอกสารนี้มีลายเซ็น: การเขียนไฟล์ใหม่จะทำให้ลายเซ็นใช้ไม่ได้ (ให้บันทึกแบบเพิ่มต่อท้ายแทน) + the document is protected by a password เอกสารถูกป้องกันด้วยรหัสผ่าน + the password is incorrect รหัสผ่านไม่ถูกต้อง + the document has no page tree เอกสารไม่มีโครงสร้างหน้า (page tree) + a document must keep at least one page เอกสารต้องมีอย่างน้อยหนึ่งหน้า + a bookmark cannot be moved inside itself ย้ายบุ๊กมาร์กเข้าไปในตัวเองไม่ได้ + the title must not be empty ชื่อเรื่องต้องไม่ว่าง + the document has no form fields เอกสารไม่มีช่องแบบฟอร์ม + there are no redaction marks to apply ไม่มีเครื่องหมายปิดทับให้ใช้ + there are no pages to print ไม่มีหน้าให้พิมพ์ + the document has no tags เอกสารไม่มีแท็ก + {0}: {1} {0}: {1} + the text recognition models are not installed (reinstall PdfCraft, or set PDFCRAFT_MODELS to the folder that holds them) ยังไม่ได้ติดตั้งโมเดลการรู้จำข้อความ (ติดตั้ง PdfCraft ใหม่ หรือตั้ง PDFCRAFT_MODELS ไปยังโฟลเดอร์ที่มีไฟล์เหล่านั้น) + the image is empty รูปภาพว่างเปล่า + this file isn't XFDF, FDF, XML or text form data ไฟล์นี้ไม่ใช่ข้อมูลแบบฟอร์มชนิด XFDF, FDF, XML หรือข้อความ + nothing in the file matches this document ไม่มีอะไรในไฟล์ที่ตรงกับเอกสารนี้ + This page couldn't be displayed.\n{e} แสดงหน้านี้ไม่ได้\n{e} + Go to page {p} ไปที่หน้า {p} + {s} action การทำงาน {s} + Page {p} of {n} หน้า {p} จาก {n} + 1 page selected เลือกไว้ 1 หน้า + {n} pages selected เลือกไว้ {n} หน้า + {name} — unsaved changes {name} — มีการเปลี่ยนแปลงที่ยังไม่ได้บันทึก + {kind} field ช่อง{kind} + Select a file for the stamp เลือกไฟล์สำหรับตราประทับ + JavaScript, e.g. getField("total").value JavaScript เช่น getField("total").value + Font: Helvetica แบบอักษร: Helvetica + e.g. en-US เช่น en-US + Rendering: hayro (bootstrap) · UI: egui · Icons: Lucide (ISC) · Fonts: Inter, JetBrains Mono, Dancing Script (OFL) การแสดงผล: hayro (bootstrap) · UI: egui · ไอคอน: Lucide (ISC) · แบบอักษร: Inter, JetBrains Mono, Dancing Script (OFL) + CheckBox กล่องกาเครื่องหมาย + Radio ปุ่มตัวเลือก + PushButton ปุ่มกด + Combo รายการแบบดึงลง + List รายการ + Unknown ไม่ทราบ + The document has no XMP metadata เอกสารไม่มีเมทาดาทา XMP + The title in the metadata and the document information differ ชื่อเรื่องในเมทาดาทาและในข้อมูลเอกสารไม่ตรงกัน + The document is encrypted เอกสารถูกเข้ารหัส + Device colour is used, but there is no PDF/A output intent มีการใช้สีแบบ Device แต่ไม่มี output intent ของ PDF/A + DeviceCMYK is used: it needs a CMYK output intent (not added automatically) มีการใช้ DeviceCMYK: ต้องมี output intent แบบ CMYK (ไม่ได้เพิ่มให้อัตโนมัติ) + The document has additional actions (/AA) เอกสารมีการทำงานเพิ่มเติม (/AA) + The document has document-level JavaScript เอกสารมี JavaScript ระดับเอกสาร + The form asks viewers to make appearances (NeedAppearances) แบบฟอร์มขอให้โปรแกรมอ่านสร้างลักษณะที่ปรากฏเอง (NeedAppearances) + A form field has additional actions มีช่องแบบฟอร์มที่มีการทำงานเพิ่มเติม + A stream uses LZW compression มีสตรีมที่ใช้การบีบอัด LZW + A stream refers to an external file มีสตรีมที่อ้างถึงไฟล์ภายนอก + An image asks to be interpolated มีรูปภาพที่ขอให้ประมาณค่าระหว่างพิกเซล + An image has alternates or OPI information มีรูปภาพที่มีรูปสำรองหรือข้อมูล OPI + PostScript XObjects aren't allowed ไม่อนุญาต PostScript XObject + Embedded files must be PDF/A files themselves (use PDF/A-3 for others) ไฟล์ที่ฝังไว้ต้องเป็นไฟล์ PDF/A เอง (ใช้ PDF/A-3 สำหรับไฟล์ชนิดอื่น) + An embedded file has no AFRelationship มีไฟล์ฝังที่ไม่มี AFRelationship + Select Icon เลือกไอคอน + Choose images เลือกรูปภาพ + {dpi} pixels/inch {dpi} พิกเซล/นิ้ว + Type your {what}. พิมพ์{what}ของคุณ + Draw your {what} below. วาด{what}ของคุณด้านล่าง + Your name ชื่อของคุณ + Images and text (converted to PDF) รูปภาพและข้อความ (แปลงเป็น PDF) + Images and text รูปภาพและข้อความ + Check Box Style: ลักษณะกล่องกาเครื่องหมาย: + Button Style: ลักษณะปุ่ม: + Check ตรวจสอบ + Circle วงกลม + Diamond สี่เหลี่ยมข้าวหลามตัด + Square สี่เหลี่ยมจัตุรัส + Star ดาว + {month} {y} {month} {y} + Change {key} เปลี่ยน {key} + Insert pages from {name} แทรกหน้าจาก {name} + Insert pages from {name} — 1 field renamed แทรกหน้าจาก {name} — เปลี่ยนชื่อ 1 ช่อง + Insert pages from {name} — fields renamed แทรกหน้าจาก {name} — มีการเปลี่ยนชื่อช่อง + Fill in {name} กรอก {name} + Set the image of {name} ตั้งรูปภาพของ {name} + Edit script of {name} แก้ไขสคริปต์ของ {name} + Import {name} นำเข้า {name} + Add bookmark เพิ่มบุ๊กมาร์ก + Rename bookmark เปลี่ยนชื่อบุ๊กมาร์ก + Delete bookmark ลบบุ๊กมาร์ก + Move bookmark ย้ายบุ๊กมาร์ก + Set bookmark destination ตั้งปลายทางของบุ๊กมาร์ก + Add stamp เพิ่มตราประทับ + Delete comment ลบความคิดเห็น + Edit comment แก้ไขความคิดเห็น + Erase ลบ + Lock comment ล็อกความคิดเห็น + Unlock comment ปลดล็อกความคิดเห็น + Move comment ย้ายความคิดเห็น + Resize comment ปรับขนาดความคิดเห็น + Change comment properties เปลี่ยนคุณสมบัติความคิดเห็น + Add field เพิ่มช่อง + Change field properties เปลี่ยนคุณสมบัติช่อง + Delete field ลบช่อง + Duplicate field ทำสำเนาช่อง + Set tab order ตั้งลำดับแท็บ + Change initial view เปลี่ยนมุมมองเริ่มต้น + Set alternate text ตั้งข้อความแสดงแทน + Mark figure as decorative ระบุว่ารูปประกอบเป็นส่วนตกแต่ง + Run JavaScript รัน JavaScript + Delete document JavaScript ลบ JavaScript ของเอกสาร + Edit document JavaScript แก้ไข JavaScript ของเอกสาร + Edit text แก้ไขข้อความ + Load document font โหลดแบบอักษรของเอกสาร + Move image ย้ายรูปภาพ + Rotate image หมุนรูปภาพ + Flip image พลิกรูปภาพ + Delete image ลบรูปภาพ + Add header & footer เพิ่มหัวกระดาษและท้ายกระดาษ + Update header & footer อัปเดตหัวกระดาษและท้ายกระดาษ + Update watermark อัปเดตลายน้ำ + Add background เพิ่มพื้นหลัง + Update background อัปเดตพื้นหลัง + Add image เพิ่มรูปภาพ + Edit content แก้ไขเนื้อหา + Delete content ลบเนื้อหา + Remove redaction marks เอาเครื่องหมายปิดทับออก + Add link เพิ่มลิงก์ + Change link properties เปลี่ยนคุณสมบัติลิงก์ + Delete link ลบลิงก์ + Create link สร้างลิงก์ + Flatten รวมเข้ากับหน้า + Add sticky note เพิ่มโน้ต + Add highlight เพิ่มการเน้นข้อความ + Add underline เพิ่มการขีดเส้นใต้ + Add strikethrough เพิ่มการขีดฆ่า + Add squiggly underline เพิ่มเส้นใต้หยัก + Add rectangle เพิ่มสี่เหลี่ยม + Add oval เพิ่มวงรี + Add arrow เพิ่มลูกศร + Add line เพิ่มเส้น + Add drawing เพิ่มภาพวาด + Add text box เพิ่มกล่องข้อความ + Add checkmark เพิ่มเครื่องหมายถูก + Add cross เพิ่มกากบาท + Add dot เพิ่มจุด + Add signature เพิ่มลายเซ็น + Add redaction mark เพิ่มเครื่องหมายปิดทับ + Add cloud เพิ่มก้อนเมฆ + Add polygon เพิ่มรูปหลายเหลี่ยม + Add connected lines เพิ่มเส้นต่อเนื่อง + Add callout เพิ่มคำบรรยายภาพ + Add inserted text เพิ่มข้อความที่แทรก + Add file attachment เพิ่มไฟล์แนบ + Set status Accepted ตั้งสถานะ ยอมรับแล้ว + Set status Rejected ตั้งสถานะ ปฏิเสธแล้ว + Set status Cancelled ตั้งสถานะ ยกเลิกแล้ว + Set status Completed ตั้งสถานะ เสร็จสมบูรณ์ + Set status None ตั้งสถานะ ไม่มี + Set status Unmarked ตั้งสถานะ ไม่ได้ทำเครื่องหมาย + Save as PDF/A-1b บันทึกเป็น PDF/A-1b + Save as PDF/A-2b บันทึกเป็น PDF/A-2b + Save as PDF/A-3b บันทึกเป็น PDF/A-3b + Fill & Sign: change signature กรอกและเซ็น: เปลี่ยนลายเซ็น + Fill & Sign: change initials กรอกและเซ็น: เปลี่ยนชื่อย่อ + Fill & Sign: remove saved signature กรอกและเซ็น: เอาลายเซ็นที่บันทึกไว้ออก + Fill & Sign: remove saved initials กรอกและเซ็น: เอาชื่อย่อที่บันทึกไว้ออก + Change signature เปลี่ยนลายเซ็น + Change initials เปลี่ยนชื่อย่อ + Measure distance วัดระยะทาง + Measure perimeter วัดเส้นรอบรูป + Measure area วัดพื้นที่ + Set measurement scale ตั้งมาตราส่วนการวัด + Measurement information ข้อมูลการวัด + Measurement snapping การยึดขณะวัด + Export measurements as CSV ส่งออกการวัดเป็น CSV + Distance ระยะทาง + Perimeter เส้นรอบรูป + Area พื้นที่ + Drawing scale มาตราส่วนของแบบ + Snapping การยึด + Export measurements ส่งออกการวัด + Open a PDF to measure it. เปิด PDF เพื่อวัดระยะ + Click vertices. Enter or double-click finishes a perimeter or area. Click the first point to close an area. คลิกที่จุดยอด กด Enter หรือดับเบิลคลิกเพื่อจบเส้นรอบรูปหรือพื้นที่ คลิกจุดแรกเพื่อปิดพื้นที่ + Shift constrains to 45 degrees. Backspace removes a vertex. Escape cancels. กด Shift เพื่อจำกัดมุมทีละ 45 องศา Backspace เอาจุดยอดออก Escape ยกเลิก + Angle มุม + Click the first point to begin. คลิกจุดแรกเพื่อเริ่ม + Snap to drawing ยึดกับภาพวาด + Endpoints ปลายเส้น + Midpoints จุดกึ่งกลาง + Intersections จุดตัด + Paths เส้นทาง + Sensitivity ความไว + Unit หน่วย + Decimals ทศนิยม + Calibrate from two points ปรับเทียบจากสองจุด + Entire page ทั้งหน้า + Viewport rectangle in page points (x, y, width, height) สี่เหลี่ยมวิวพอร์ตในหน่วยพอยต์ของหน้า (x, y, ความกว้าง, ความสูง) + Viewport วิวพอร์ต + Apply scale ใช้มาตราส่วน + Saved measurements การวัดที่บันทึกไว้ + Saved measurements. บันทึกการวัดแล้ว + Endpoint จุดปลาย + Midpoint จุดกึ่งกลาง + Intersection จุดตัด + Path เส้นทาง + This drawing exceeds the snapping limit; only the first paths are used. ภาพวาดนี้เกินขีดจำกัดของการยึด จะใช้เฉพาะเส้นทางชุดแรก + Some page content couldn't be read; snapping uses the rest. อ่านเนื้อหาบางส่วนของหน้าไม่ได้ การยึดจะใช้ส่วนที่เหลือ + Unsupported measurements การวัดที่ไม่รองรับ + Label ป้ายชื่อ + {n} measurements use an unsupported format and are left out. การวัด {n} รายการใช้รูปแบบที่ไม่รองรับและถูกข้ามไป + This area has too many overlapping paths; intersection snapping is limited. พื้นที่นี้มีเส้นทางซ้อนทับกันมากเกินไป การยึดกับจุดตัดจึงถูกจำกัด + This measurement needs at least {n} points. การวัดนี้ต้องมีอย่างน้อย {n} จุด + Switch to two-page view first to show the cover page สลับเป็นมุมมองสองหน้าก่อนเพื่อแสดงหน้าปก + Page display: {layout} การแสดงหน้า: {layout} + Fit to width scrolling เลื่อนแบบพอดีความกว้าง + Fit one full page พอดีหนึ่งหน้าเต็ม + Created a PDF from {n} files สร้าง PDF จาก {n} ไฟล์แล้ว + PDF, images and text PDF รูปภาพ และข้อความ + Insert a file before page {label} แทรกไฟล์ก่อนหน้า {label} + Insert a file at the end แทรกไฟล์ที่ท้ายเอกสาร + Save pages บันทึกหน้า + Save these pages as one PDF บันทึกหน้าเหล่านี้เป็น PDF เดียว + No changes to save ไม่มีการเปลี่ยนแปลงให้บันทึก + Created a PDF from {n} files; left out: {names} สร้าง PDF จาก {n} ไฟล์แล้ว ไม่รวม: {names} + Created a PDF from the first {n} files สร้าง PDF จาก {n} ไฟล์แรกแล้ว + None of those files can be made into a PDF; use PDFs, images or .txt files ไฟล์เหล่านั้นทำเป็น PDF ไม่ได้ ให้ใช้ PDF รูปภาพ หรือไฟล์ .txt + Choose a PNG or JPEG image (up to 4 MiB). Transparency is preserved. เลือกรูปภาพ PNG หรือ JPEG (ไม่เกิน 4 MiB) ความโปร่งใสจะคงไว้ + Couldn't import the signature image: {e} นำเข้ารูปลายเซ็นไม่ได้: {e} + Go to page… ไปที่หน้า… + For page sizes and margins. สำหรับขนาดหน้าและระยะขอบ + Reopen the files that were open when PdfCraft last closed เปิดไฟล์ที่เปิดค้างไว้ตอนปิด PdfCraft ครั้งล่าสุดอีกครั้ง + The PDF text fonts can't draw “{c}” ({code}). Choose supported text. แบบอักษรข้อความของ PDF วาด “{c}” ({code}) ไม่ได้ โปรดเลือกข้อความที่รองรับ + The standard fonts can't draw “{c}” ({code}). Only Western European characters can be added as text for now. แบบอักษรมาตรฐานวาด “{c}” ({code}) ไม่ได้ ตอนนี้เพิ่มเป็นข้อความได้เฉพาะอักขระยุโรปตะวันตก + This field's font can't draw “{c}” ({code}), so PdfCraft shows ? in its place. The value is saved, and other PDF viewers redraw the field from it. แบบอักษรของช่องนี้วาด “{c}” ({code}) ไม่ได้ PdfCraft จึงแสดง ? แทน ค่าถูกบันทึกไว้ และโปรแกรมอ่าน PDF อื่นจะวาดช่องใหม่จากค่านั้น + The fonts PdfCraft writes with can't draw “{c}” ({code}), so it shows as ? in every PDF viewer. The text is saved. แบบอักษรที่ PdfCraft ใช้เขียนวาด “{c}” ({code}) ไม่ได้ จึงแสดงเป็น ? ในโปรแกรมอ่าน PDF ทุกตัว ข้อความถูกบันทึกไว้แล้ว + Open arrow ลูกศรเปิด + Closed arrow ลูกศรปิด + Butt ปลายตัด + Reverse open arrow ลูกศรเปิดกลับด้าน + Reverse closed arrow ลูกศรปิดกลับด้าน + Slash ทับ + Larger pages หน้าที่ใหญ่กว่า + Smaller pages หน้าที่เล็กกว่า + Reset page size รีเซ็ตขนาดหน้า + Date format รูปแบบวันที่ + Fill & Sign dates วันที่ในกรอกและเซ็น + Pattern รูปแบบ + Today: {date} วันนี้: {date} + yyyy or yy year · m or mm month · mmm or mmmm month name · d or dd day · ddd or dddd weekday. H, h, M, s and t are time letters and can't be used on their own: put {escape} before a letter to show it as is. yyyy หรือ yy คือปี · m หรือ mm คือเดือน · mmm หรือ mmmm คือชื่อเดือน · d หรือ dd คือวัน · ddd หรือ dddd คือวันในสัปดาห์ H, h, M, s และ t เป็นตัวอักษรเวลาและใช้เดี่ยว ๆ ไม่ได้: ใส่ {escape} หน้าตัวอักษรเพื่อแสดงตามนั้น + Same as interface ({language}) เหมือนภาษาของโปรแกรม ({language}) + {chars} can't be written into the PDF yet: Fill & Sign text is Western European only. Pick a numeric format such as dd.mm.yyyy. ยังเขียน {chars} ลงใน PDF ไม่ได้: ข้อความของกรอกและเซ็นรองรับเฉพาะอักขระยุโรปตะวันตก ให้เลือกรูปแบบตัวเลข เช่น dd.mm.yyyy + Opens the printer driver's preferences. They are saved for every print from this computer; the copies, two-sided, grayscale and paper chosen here still apply. เปิดการกำหนดลักษณะของไดรเวอร์เครื่องพิมพ์ ซึ่งจะถูกบันทึกสำหรับทุกการพิมพ์จากคอมพิวเตอร์เครื่องนี้ ส่วนจำนวนสำเนา การพิมพ์สองด้าน ระดับสีเทา และกระดาษที่เลือกที่นี่ยังคงมีผล + The printer driver's own settings for this print: paper tray, paper type, finishing and more. การตั้งค่าของไดรเวอร์เครื่องพิมพ์สำหรับการพิมพ์ครั้งนี้: ถาดกระดาษ ชนิดกระดาษ การตกแต่งงานพิมพ์ และอื่น ๆ + Couldn't open the printer's preferences: {e} เปิดการกำหนดลักษณะของเครื่องพิมพ์ไม่ได้: {e} + Printer properties คุณสมบัติเครื่องพิมพ์ + Reset to printer defaults รีเซ็ตเป็นค่าเริ่มต้นของเครื่องพิมพ์ + This printer offers no settings of its own. เครื่องพิมพ์นี้ไม่มีการตั้งค่าเฉพาะของตัวเอง + % of all commits % ของคอมมิตทั้งหมด + +Bin +Bin + +LOC +LOC + @{login}: {prs} PRs, {commits} commits, +{added} / −{deleted} lines (Δ {delta}), +{bin_added} / −{bin_deleted} binary assets, {first} – {last} @{login}: {prs} PR, {commits} คอมมิต, +{added} / −{deleted} บรรทัด (Δ {delta}), ไฟล์ไบนารี +{bin_added} / −{bin_deleted}, {first} – {last} + A button ปุ่ม + A link ลิงก์ + A script สคริปต์ + About เกี่ยวกับ + Add {what} เพิ่ม{what} + Align fields จัดแนวช่อง + Another file dialog is still open. Finish with it first. กล่องโต้ตอบไฟล์อีกอันยังเปิดอยู่ โปรดทำให้เสร็จก่อน + Basic constraints ข้อจำกัดพื้นฐาน + Binary assets added ไฟล์ไบนารีที่เพิ่ม + Binary assets removed ไฟล์ไบนารีที่เอาออก + Change document properties เปลี่ยนคุณสมบัติเอกสาร + Change {what} เปลี่ยน{what} + Commits คอมมิต + Company บริษัท + Contributors ผู้ร่วมพัฒนา + Couldn't show the file picker. Please try again. แสดงตัวเลือกไฟล์ไม่ได้ โปรดลองอีกครั้ง + Create สร้าง + Create PDF from images สร้าง PDF จากรูปภาพ + Cut and stack ตัดแล้วซ้อน + DPI sets the printed page size without resampling the image. DPI กำหนดขนาดหน้าที่พิมพ์โดยไม่สุ่มตัวอย่างรูปภาพใหม่ + Default page display การแสดงหน้าเริ่มต้น + Default workspace mode โหมดพื้นที่ทำงานเริ่มต้น + Default zoom ระดับการย่อ/ขยายเริ่มต้น + Display name ชื่อที่แสดง + Distribute fields กระจายช่อง + Documents and view เอกสารและมุมมอง + Dynamic XFA form laid out from its template: {pages}, {fields}. แบบฟอร์ม XFA แบบไดนามิกที่จัดวางจากเทมเพลต: {pages}, {fields} + Files are combined in this order. Leave Pages empty to take every page. ไฟล์จะถูกรวมตามลำดับนี้ เว้นช่องหน้าว่างไว้เพื่อใช้ทุกหน้า + First แรก + First commit คอมมิตแรก + Grab bag เบ็ดเตล็ด + H / Space (hold) H / Space (กดค้าง) + Home / End Home / End + Last ล่าสุด + Last commit คอมมิตล่าสุด + Line delta ผลต่างบรรทัด + Line ending ปลายเส้น + Lines +/− บรรทัด +/− + Lines added บรรทัดที่เพิ่ม + Lines deleted บรรทัดที่ลบ + Mark differences ทำเครื่องหมายความแตกต่าง + Mark for redaction ทำเครื่องหมายเพื่อปิดทับ + Mark pages for redaction ทำเครื่องหมายหน้าเพื่อปิดทับ + Match field sizes ปรับขนาดช่องให้เท่ากัน + Merged PRs PR ที่ผสานแล้ว + Model โมเดล + Models โมเดล + Name (A–Z) ชื่อ (A–Z) + No contributor data was built into this copy. สำเนานี้ไม่ได้รวมข้อมูลผู้ร่วมพัฒนาไว้ + No model credits were built into this copy. สำเนานี้ไม่ได้รวมเครดิตของโมเดลไว้ + Only continue if you trust this document. An address can carry information from the document, such as what you typed into its form. ดำเนินการต่อเฉพาะเมื่อคุณเชื่อถือเอกสารนี้ ที่อยู่อาจพาข้อมูลจากเอกสารไปด้วย เช่น สิ่งที่คุณพิมพ์ในแบบฟอร์ม + Open email app เปิดแอปอีเมล + Open link เปิดลิงก์ + Open this web page? เปิดหน้าเว็บนี้หรือไม่ + PRs PR + Place saved {what} วาง{what}ที่บันทึกไว้ + Print single-sided. Keep the sheets in order, cut at the marks, then stack the piles left to right, top to bottom. พิมพ์ด้านเดียว เรียงแผ่นตามลำดับ ตัดตามเครื่องหมาย แล้วซ้อนกองจากซ้ายไปขวา บนลงล่าง + Real name ชื่อจริง + Remove saved {what} เอา{what}ที่บันทึกไว้ออก + Reverse the order กลับลำดับ + Run form script รันสคริปต์ของแบบฟอร์ม + SHA-1 digest ไดเจสต์ SHA-1 + SHA-256 digest ไดเจสต์ SHA-256 + Scripted content must be usable with a keyboard and assistive technology. Check the document's scripts. เนื้อหาที่ใช้สคริปต์ต้องใช้งานได้ด้วยแป้นพิมพ์และเทคโนโลยีสิ่งอำนวยความสะดวก ตรวจสอบสคริปต์ของเอกสาร + Scripts run in a sandbox without file or network access. A script that asks to open a web page needs your permission first. With JavaScript off, Acrobat's standard format, validate and calculate functions still work. สคริปต์ทำงานในแซนด์บ็อกซ์ที่เข้าถึงไฟล์และเครือข่ายไม่ได้ สคริปต์ที่ขอเปิดหน้าเว็บต้องได้รับอนุญาตจากคุณก่อน เมื่อปิด JavaScript ฟังก์ชันมาตรฐานของ Acrobat สำหรับจัดรูปแบบ ตรวจสอบ และคำนวณยังคงทำงานได้ + Selected image files: {count} ไฟล์รูปภาพที่เลือก: {count} + Show แสดง + Sign yourself เซ็นด้วยตนเอง + Sort เรียงลำดับ + Squiggly เส้นหยัก + Table ตาราง + Table rows belong directly in a table or its head, body or foot. Fix the table's tags. แถวตารางต้องอยู่ในตารางโดยตรง หรือในส่วนหัว ส่วนเนื้อหา หรือส่วนท้ายของตาราง ให้แก้ไขแท็กของตาราง + Text recognition isn't installed: its models are missing (run `cargo xtask models`, or set PDFCRAFT_MODELS). ยังไม่ได้ติดตั้งการรู้จำข้อความ: ไม่พบโมเดล (รัน `cargo xtask models` หรือตั้ง PDFCRAFT_MODELS) + That didn't work: an internal error stopped it ({m}). ทำไม่สำเร็จ: ข้อผิดพลาดภายในทำให้หยุดทำงาน ({m}) + The Windows store's digital IDs couldn't be listed: {e} แสดงรายการ Digital ID ในที่เก็บของ Windows ไม่ได้: {e} + The document changed while you were choosing a file, so nothing was changed. เอกสารเปลี่ยนแปลงระหว่างที่คุณเลือกไฟล์ จึงไม่มีการเปลี่ยนแปลงใด ๆ + The document was closed before it could be saved. เอกสารถูกปิดก่อนที่จะบันทึกได้ + The pages were extracted but not deleted, because the document changed while you were choosing a folder. แยกหน้าออกมาแล้วแต่ไม่ได้ลบ เพราะเอกสารเปลี่ยนแปลงระหว่างที่คุณเลือกโฟลเดอร์ + This web address mixes letters from different alphabets, a common way to imitate another site's name. ที่อยู่เว็บนี้ผสมตัวอักษรจากหลายชุดอักษร ซึ่งเป็นวิธีที่มักใช้เลียนแบบชื่อเว็บไซต์อื่น + This web address uses letters from another alphabet, which can look like familiar ones. ที่อยู่เว็บนี้ใช้ตัวอักษรจากชุดอักษรอื่น ซึ่งอาจดูคล้ายตัวอักษรที่คุ้นเคย + Use 72 DPI (one point per pixel) ใช้ 72 DPI (หนึ่งพอยต์ต่อพิกเซล) + Use custom DPI ใช้ DPI กำหนดเอง + Use each image's embedded DPI; use 72 DPI when it is absent. ใช้ DPI ที่ฝังในแต่ละรูปภาพ หากไม่มีให้ใช้ 72 DPI + Use image resolution ใช้ความละเอียดของรูปภาพ + Use {what} ใช้{what} + Used when a PDF doesn't ask for a layout or zoom. Continuous scrolling never snaps between pages. ใช้เมื่อ PDF ไม่ได้กำหนดเค้าโครงหรือระดับการย่อ/ขยาย การเลื่อนต่อเนื่องจะไม่กระโดดทีละหน้า + Used when opening PDFs. An explicit launch or control mode takes precedence for the session. ใช้เมื่อเปิด PDF โหมดที่ระบุตอนเปิดโปรแกรมหรือโหมดควบคุมจะมีผลเหนือกว่าตลอดเซสชัน + Username ชื่อผู้ใช้ + Write this email? เขียนอีเมลนี้หรือไม่ + XFA form: its fields and its XFA data are kept in step, so other viewers show what you fill in. แบบฟอร์ม XFA: ช่องและข้อมูล XFA ถูกปรับให้ตรงกันเสมอ โปรแกรมอ่านอื่นจึงแสดงสิ่งที่คุณกรอก + {n} contributors · {c} commits ผู้ร่วมพัฒนา {n} คน · {c} คอมมิต + {who} in this document tried to open an address PdfCraft won't open: {e}. {who}ในเอกสารนี้พยายามเปิดที่อยู่ที่ PdfCraft จะไม่เปิด: {e} + {who} in this document tried to open an address PdfCraft won't open: {e}. Only web (http, https) and email (mailto) links open from documents. {who}ในเอกสารนี้พยายามเปิดที่อยู่ที่ PdfCraft จะไม่เปิด: {e} เอกสารเปิดได้เฉพาะลิงก์เว็บ (http, https) และอีเมล (mailto) + {who} in this document wants to open this address in your browser: {who}ในเอกสารนี้ต้องการเปิดที่อยู่นี้ในเบราว์เซอร์ของคุณ: + {who} in this document wants to open your email app with this address: {who}ในเอกสารนี้ต้องการเปิดแอปอีเมลของคุณด้วยที่อยู่นี้: + ΔLOC ΔLOC + −Bin −Bin + −LOC −LOC +signature pad Type พิมพ์ + Flatten Fill & Sign when saving รวมกรอกและเซ็นเข้ากับหน้าเมื่อบันทึก + Text, marks and signatures become part of the page. Other comments stay editable. ข้อความ เครื่องหมาย และลายเซ็นจะกลายเป็นส่วนหนึ่งของหน้า ความคิดเห็นอื่นยังแก้ไขได้ + Scroll tabs left เลื่อนแท็บไปทางซ้าย + Scroll tabs right เลื่อนแท็บไปทางขวา + Shared Field Properties คุณสมบัติร่วมของช่อง + {n} fields selected เลือกไว้ {n} ช่อง + Mixed ผสม + Custom font แบบอักษรกำหนดเอง + Only checked properties will change. Mixed means the selected fields have different values. เฉพาะคุณสมบัติที่เลือกไว้เท่านั้นที่จะเปลี่ยน "ผสม" หมายถึงช่องที่เลือกมีค่าต่างกัน + Shift- or Ctrl/Command-click to select several fields. กด Shift หรือ Ctrl/Command แล้วคลิกเพื่อเลือกหลายช่อง + Font size 0 uses automatic sizing. ขนาดแบบอักษร 0 คือปรับขนาดอัตโนมัติ + Character limit: จำนวนอักขระสูงสุด: + Character limit 0 means no limit. A comb of characters needs a limit. จำนวนอักขระสูงสุด 0 หมายถึงไม่จำกัด ช่องแบบแบ่งช่องอักขระต้องกำหนดจำนวน + To change locked fields, also set Locked to No. หากต้องการเปลี่ยนช่องที่ล็อก ให้ตั้งค่าล็อกเป็น ไม่ ด้วย + Comb of characters แบ่งช่องอักขระ + The document changed while you were editing field properties. เอกสารเปลี่ยนแปลงระหว่างที่คุณแก้ไขคุณสมบัติช่อง + The document is no longer open. เอกสารไม่ได้เปิดอยู่แล้ว + The field properties dialog is no longer open. กล่องโต้ตอบคุณสมบัติช่องไม่ได้เปิดอยู่แล้ว + The field properties could not be changed. เปลี่ยนคุณสมบัติช่องไม่ได้ + The selected fields could not be found. Select them again. ไม่พบช่องที่เลือก โปรดเลือกอีกครั้ง + The field {name} no longer exists. ไม่มีช่อง {name} แล้ว + A selected field has no widget on any page, so the fields can't be edited together. มีช่องที่เลือกซึ่งไม่มีวิดเจ็ตบนหน้าใดเลย จึงแก้ไขช่องพร้อมกันไม่ได้ + ({n} at {dpi} dpi, the largest size they can be drawn at) ({n} ที่ {dpi} dpi ซึ่งเป็นขนาดใหญ่ที่สุดที่วาดได้) + Drag the selection to move it. Esc clears the selection. ลากส่วนที่เลือกเพื่อย้าย กด Esc เพื่อล้างการเลือก + Shift-click to select several objects. Drag empty space to select an area. กด Shift แล้วคลิกเพื่อเลือกหลายออบเจ็กต์ ลากในที่ว่างเพื่อเลือกเป็นพื้นที่ + Select at most 1000 objects at a time. เลือกได้ครั้งละไม่เกิน 1000 ออบเจ็กต์ + Finish or discard the text being edited before selecting several objects. แก้ไขข้อความให้เสร็จหรือละทิ้งก่อน จึงจะเลือกหลายออบเจ็กต์ได้ + Move object ย้ายออบเจ็กต์ + Move objects ย้ายออบเจ็กต์ + Vertical text cannot be moved with this selection. ข้อความแนวตั้งไม่สามารถย้ายพร้อมกับส่วนที่เลือกนี้ได้ + Text used as a clipping path cannot be moved with this selection. ข้อความที่ใช้เป็นเส้นตัดภาพไม่สามารถย้ายพร้อมกับส่วนที่เลือกนี้ได้ + These objects could not be moved. Select them again and try a smaller move. ย้ายออบเจ็กต์เหล่านี้ไม่ได้ โปรดเลือกอีกครั้งแล้วลองย้ายในระยะที่สั้นลง + This page contains objects that cannot be selected together. หน้านี้มีออบเจ็กต์ที่เลือกพร้อมกันไม่ได้ + Fill colour สีเติม + No fill ไม่เติมสี + Fill colour: none สีเติม: ไม่มี + Grid view มุมมองตาราง + List view มุมมองรายการ + Files are combined in the order shown. Drag them to change it. ไฟล์จะถูกรวมตามลำดับที่แสดง ลากเพื่อเปลี่ยนลำดับ + Preview unavailable: {e} แสดงตัวอย่างไม่ได้: {e} + Pages: {k} of {n} หน้า: {k} จาก {n} + Check the pages ตรวจสอบหน้า + Switch to List view to change the pages it takes. สลับไปมุมมองรายการเพื่อเปลี่ยนหน้าที่จะใช้ + Expand all ขยายทั้งหมด + Collapse all ยุบทั้งหมด + Remove page เอาหน้าออก + Remove {n} pages เอาออก {n} หน้า + Reset panel layout รีเซ็ตเค้าโครงแผง + Float panel แยกแผงให้ลอย + Move to group ย้ายไปยังกลุ่ม + Panels แผง + Resize panels ปรับขนาดแผง + Resize panel window ปรับขนาดหน้าต่างแผง + Tools เครื่องมือ + Inspector ตัวตรวจสอบ + PDF page: {size} หน้า PDF: {size} + Match page at 100% ให้ตรงกับหน้าที่ 100% + PDF scale: {scale}% มาตราส่วน PDF: {scale}% + Printer paper and scaling may differ. Check driver settings. กระดาษและการปรับขนาดของเครื่องพิมพ์อาจต่างออกไป โปรดตรวจสอบการตั้งค่าไดรเวอร์ + Drawing scale changes. Use Actual size for full-scale plans. มาตราส่วนของแบบจะเปลี่ยน ใช้ขนาดจริงสำหรับแบบแปลนเต็มมาตราส่วน + Reload documents when their files change on disk โหลดเอกสารใหม่เมื่อไฟล์บนดิสก์เปลี่ยนแปลง + This file changed on disk. Reload it to see the new version; your unsaved changes will be lost. ไฟล์นี้เปลี่ยนแปลงบนดิสก์ โหลดใหม่เพื่อดูรุ่นใหม่ การเปลี่ยนแปลงที่ยังไม่ได้บันทึกจะหายไป + Reload โหลดใหม่ + Couldn't reload {name}: {e} โหลด {name} ใหม่ไม่ได้: {e} + Select page {label} เลือกหน้า {label} + Rotate page {label} counterclockwise หมุนหน้า {label} ทวนเข็มนาฬิกา + Rotate page {label} clockwise หมุนหน้า {label} ตามเข็มนาฬิกา + Delete page {label} ลบหน้า {label} + Mouse wheel scroll speed ความเร็วการเลื่อนของล้อเมาส์ +scroll speed Slow ช้า +scroll speed Normal ปกติ +scroll speed Fast เร็ว + Animation effects เอฟเฟกต์ภาพเคลื่อนไหว +animation effects On เปิด +animation effects Off ปิด + Enhance camera image ปรับปรุงภาพจากกล้อง + Drag the corners onto the document's edges, then choose Enhance page. ลากมุมไปที่ขอบของเอกสาร แล้วเลือกปรับปรุงหน้า + Enhance page ปรับปรุงหน้า + Done adding text เพิ่มข้อความเสร็จแล้ว + Discard this text (Esc) ละทิ้งข้อความนี้ (Esc) + Clean-up การล้างข้อมูล + Original ต้นฉบับ + Greyscale ระดับสีเทา + Black and white ขาวดำ + Reading colours สีสำหรับการอ่าน + Replace document colours แทนที่สีของเอกสาร + Black on white ดำบนขาว + White on black ขาวบนดำ + Yellow on black เหลืองบนดำ + Green on black เขียวบนดำ + Page background พื้นหลังหน้า + Only change the colour of black text or line art เปลี่ยนสีเฉพาะข้อความหรือลายเส้นสีดำ + Change the colour of line art as well as text เปลี่ยนสีของลายเส้นด้วย ไม่เฉพาะข้อความ + Colours are remapped while rendering; the document itself never changes. สีจะถูกปรับระหว่างการแสดงผลเท่านั้น ตัวเอกสารไม่ถูกเปลี่ยน + This printer's driver doesn't take two-sided settings from other programs, so its own setting applies. Change it in Properties… ไดรเวอร์ของเครื่องพิมพ์นี้ไม่รับการตั้งค่าพิมพ์สองด้านจากโปรแกรมอื่น จึงใช้การตั้งค่าของไดรเวอร์เอง เปลี่ยนได้ในคุณสมบัติ… + Browser's print dialog กล่องโต้ตอบการพิมพ์ของเบราว์เซอร์ + Copies, two-sided printing and colour are chosen in the browser's print dialog. จำนวนสำเนา การพิมพ์สองด้าน และสี เลือกได้ในกล่องโต้ตอบการพิมพ์ของเบราว์เซอร์ + Preparing {n} sheets for printing… กำลังเตรียม {n} แผ่นสำหรับการพิมพ์… + Preparing sheet {done} of {total} for printing… กำลังเตรียมแผ่นที่ {done} จาก {total} สำหรับการพิมพ์… + Opening the browser's print dialog… กำลังเปิดกล่องโต้ตอบการพิมพ์ของเบราว์เซอร์… + Couldn't print from the browser ({e}); downloaded {name} to print instead พิมพ์จากเบราว์เซอร์ไม่ได้ ({e}) จึงดาวน์โหลด {name} ให้พิมพ์แทน + Tools panel side ด้านของแผงเครื่องมือ + Add comment เพิ่มความคิดเห็น + Change tag properties เปลี่ยนคุณสมบัติแท็ก + Tags panel แผงแท็ก + Tags แท็ก + Tag type ชนิดแท็ก + Actual text ข้อความจริง + Find a tag ค้นหาแท็ก + Collapse tag ยุบแท็ก + Expand tag ขยายแท็ก + Revert changes ยกเลิกการเปลี่ยนแปลง + Save tag properties บันทึกคุณสมบัติแท็ก + This document has no editable structure tags. เอกสารนี้ไม่มีแท็กโครงสร้างที่แก้ไขได้ + {n} tags {n} แท็ก + Save or revert changes before selecting another tag. บันทึกหรือยกเลิกการเปลี่ยนแปลงก่อนเลือกแท็กอื่น + Left out: {names} ไม่รวม: {names} + already a PDF เป็น PDF อยู่แล้ว + no unused output name ไม่มีชื่อผลลัพธ์ที่ยังไม่ถูกใช้ + no output folder was chosen ยังไม่ได้เลือกโฟลเดอร์ผลลัพธ์ + Scan สแกน + Sign a sheet of white paper and take a photo of it in bright, even light (use the flash). Choose the photo or drop it here: PdfCraft finds the signature and removes the paper. เซ็นชื่อบนกระดาษขาวแล้วถ่ายรูปในที่สว่างสม่ำเสมอ (ใช้แฟลช) เลือกรูปถ่ายหรือวางที่นี่ PdfCraft จะหาลายเซ็นและเอาพื้นกระดาษออก + Choose photo… เลือกรูปถ่าย… + No photo chosen ยังไม่ได้เลือกรูปถ่าย + Photo รูปถ่าย + Ink sensitivity ความไวของหมึก + No signature was found in the frame. Move the frame over the signature or raise the ink sensitivity. ไม่พบลายเซ็นในกรอบ เลื่อนกรอบไปทับลายเซ็นหรือเพิ่มความไวของหมึก + Couldn't use the photo: {e} ใช้รูปถ่ายไม่ได้: {e} + Close Tab ปิดแท็บ + Reopen Closed Tab เปิดแท็บที่ปิดไปอีกครั้ง + Reveal in Finder แสดงใน Finder + Reveal in File Explorer แสดงใน File Explorer + Other colour… สีอื่น… + Recent colours สีที่ใช้ล่าสุด + Couldn't follow linked PDF: {reason} เปิด PDF ที่ลิงก์ไว้ไม่ได้: {reason} + The linked PDF opened, but its named destination was not applied. เปิด PDF ที่ลิงก์ไว้แล้ว แต่ไม่ได้ไปยังปลายทางที่มีชื่อ + The linked PDF opened, but its page destination was out of range. เปิด PDF ที่ลิงก์ไว้แล้ว แต่ปลายทางหน้าอยู่นอกช่วง + Local cross-PDF links require the desktop app ลิงก์ข้ามไปยัง PDF ในเครื่องต้องใช้แอปเดสก์ท็อป + Inserted text ข้อความที่แทรก +comment menu Edit แก้ไข + Undo {action} เลิกทำ {action} + Redo {action} ทำซ้ำ {action} +certificate Subject เจ้าของใบรับรอง +action wizard Start เริ่ม + DeviceCMYK is used, but the PDF/A output intent isn't a CMYK profile มีการใช้ DeviceCMYK แต่ output intent ของ PDF/A ไม่ใช่โปรไฟล์ CMYK + DeviceRGB is used, but the PDF/A output intent isn't an RGB profile มีการใช้ DeviceRGB แต่ output intent ของ PDF/A ไม่ใช่โปรไฟล์ RGB + Flatten Fill & Sign รวมกรอกและเซ็นเข้ากับหน้า + The security settings don't allow screen readers to read the text การตั้งค่าความปลอดภัยไม่อนุญาตให้โปรแกรมอ่านหน้าจออ่านข้อความ + No page has text: the document appears to be images of pages ไม่มีหน้าใดมีข้อความ เอกสารน่าจะเป็นภาพของหน้า + The document has no tags (structure tree) เอกสารไม่มีแท็ก (structure tree) + The document isn't marked as tagged (MarkInfo Marked) เอกสารไม่ได้ถูกระบุว่าติดแท็กแล้ว (MarkInfo Marked) + No document language is set ไม่ได้ตั้งภาษาของเอกสาร + The document has no title เอกสารไม่มีชื่อเรื่อง + The window shows the file name, not the title (Initial View > Show) หน้าต่างแสดงชื่อไฟล์ ไม่ใช่ชื่อเรื่อง (มุมมองเริ่มต้น > แสดง) + {n} pages and no bookmarks มี {n} หน้าและไม่มีบุ๊กมาร์ก + The document isn't tagged, so none of its content is เอกสารไม่ได้ติดแท็ก เนื้อหาทั้งหมดจึงไม่มีแท็ก + Page {p}: {n} untagged content item หน้า {p}: มีเนื้อหาที่ไม่ได้ติดแท็ก {n} รายการ + Page {p}: {n} untagged content items หน้า {p}: มีเนื้อหาที่ไม่ได้ติดแท็ก {n} รายการ + Form field on page {p} isn't tagged ช่องแบบฟอร์มในหน้า {p} ไม่ได้ติดแท็ก + {} annotation on page {p} isn't tagged คำอธิบายประกอบ {} ในหน้า {p} ไม่ได้ติดแท็ก + Page {p} doesn't tab in structure order หน้า {p} ไม่ได้เรียงลำดับแท็บตามโครงสร้าง + Font {} on page {p} doesn't map its characters to Unicode แบบอักษร {} ในหน้า {p} ไม่ได้จับคู่อักขระกับ Unicode + Font (unnamed) on page {p} doesn't map its characters to Unicode แบบอักษร (ไม่มีชื่อ) ในหน้า {p} ไม่ได้จับคู่อักขระกับ Unicode + Field "{}" on page {p} has no description (tooltip) ช่อง "{}" ในหน้า {p} ไม่มีคำอธิบาย (คำแนะนำเครื่องมือ) + {ty} element: {what} องค์ประกอบ {ty}: {what} + {ty} element on page {p}: {what} องค์ประกอบ {ty} ในหน้า {p}: {what} + no alternate text ไม่มีข้อความแสดงแทน + its alternate text is inside another element's and will never be read ข้อความแสดงแทนอยู่ภายในของอีกองค์ประกอบหนึ่งและจะไม่ถูกอ่าน + alternate text on an element with no page content ข้อความแสดงแทนอยู่บนองค์ประกอบที่ไม่มีเนื้อหาของหน้า + alternate text hides an annotation inside it ข้อความแสดงแทนซ่อนคำอธิบายประกอบที่อยู่ข้างใน + not in a Table, THead, TBody or TFoot ไม่อยู่ใน Table, THead, TBody หรือ TFoot + not in a TR ไม่อยู่ใน TR + no header cells (TH) ไม่มีเซลล์หัวตาราง (TH) + rows have between {min} and {max} columns แถวมีจำนวนคอลัมน์ระหว่าง {min} ถึง {max} + no summary ไม่มีสรุป + not in an L (list) ไม่อยู่ใน L (รายการ) + not in an LI (list item) ไม่อยู่ใน LI (ข้อในรายการ) + the first heading is an H{n}; headings should not skip levels หัวเรื่องแรกเป็น H{n} หัวเรื่องไม่ควรข้ามระดับ + H{n} follows an H{d}; headings should not skip levels H{n} อยู่ต่อจาก H{d} หัวเรื่องไม่ควรข้ามระดับ + … and {n} more … และอีก {n} รายการ + Accessibility Report รายงานการช่วยการเข้าถึง + Filename ชื่อไฟล์ + Report created สร้างรายงานแล้ว + The checker found problems which may prevent the document from being fully accessible. ตัวตรวจสอบพบปัญหาที่อาจทำให้เอกสารเข้าถึงได้ไม่สมบูรณ์ + Detailed Report รายงานโดยละเอียด + Rule Name ชื่อกฎ + The metadata doesn't identify the file as {} เมทาดาทาไม่ได้ระบุว่าไฟล์เป็น {} + Page {} has additional actions หน้า {} มีการทำงานเพิ่มเติม + A {} action isn't allowed ไม่อนุญาตการทำงาน {} + {} annotations aren't allowed ไม่อนุญาตคำอธิบายประกอบ {} + A {} annotation isn't set to print, or is hidden คำอธิบายประกอบ {} ไม่ได้ตั้งให้พิมพ์ หรือถูกซ่อนอยู่ + A {} annotation has no appearance stream คำอธิบายประกอบ {} ไม่มี appearance stream + A {} annotation has additional actions คำอธิบายประกอบ {} มีการทำงานเพิ่มเติม + The font {} isn't embedded แบบอักษร {} ไม่ได้ฝัง + A font isn't embedded มีแบบอักษรที่ไม่ได้ฝัง + The signature has no valid byte range. ลายเซ็นไม่มีช่วงไบต์ที่ถูกต้อง + The signature's byte range does not match the file. ช่วงไบต์ของลายเซ็นไม่ตรงกับไฟล์ + The signature's byte range does not exclude exactly its contents. ช่วงไบต์ของลายเซ็นไม่ได้เว้นเฉพาะเนื้อหาของลายเซ็นพอดี + The signature contents are not hexadecimal. เนื้อหาลายเซ็นไม่ใช่เลขฐานสิบหก + The signature could not be read ({}). อ่านลายเซ็นไม่ได้ ({}) + PdfCraft can't check this signature yet: {}. PdfCraft ยังตรวจสอบลายเซ็นนี้ไม่ได้: {} + The signature uses the legacy adbe.x509.rsa_sha1 format. ลายเซ็นใช้รูปแบบเก่า adbe.x509.rsa_sha1 + The signature is BER-encoded (indefinite lengths) rather than DER; it was read leniently. ลายเซ็นเข้ารหัสแบบ BER (ความยาวไม่กำหนด) แทน DER จึงอ่านแบบผ่อนปรน + The signed content is a constructed (segmented) OCTET STRING, as BER allows; it was read anyway. เนื้อหาที่เซ็นเป็น OCTET STRING แบบแบ่งส่วนตามที่ BER อนุญาต แต่ยังอ่านได้ + The RSA signature value does not have the length of the key's modulus (leading zero bytes dropped or added); it was read anyway. ค่าลายเซ็น RSA มีความยาวไม่เท่ากับโมดูลัสของกุญแจ (ไบต์ศูนย์นำหน้าถูกตัดหรือเพิ่ม) แต่ยังอ่านได้ + The RSA signature's DigestInfo has no NULL parameter (older signers write it so); it was read anyway. DigestInfo ของลายเซ็น RSA ไม่มีพารามิเตอร์ NULL (โปรแกรมเซ็นรุ่นเก่าเขียนแบบนี้) แต่ยังอ่านได้ + The ECDSA signature is not in canonical DER (trailing bytes, padding or a missing sign byte); it was read anyway. ลายเซ็น ECDSA ไม่อยู่ในรูปแบบ DER มาตรฐาน (มีไบต์ต่อท้าย การเติม หรือขาดไบต์เครื่องหมาย) แต่ยังอ่านได้ + The ECDSA signature is the raw r and s values instead of a DER sequence; it was read anyway. ลายเซ็น ECDSA เป็นค่า r และ s ดิบแทนลำดับ DER แต่ยังอ่านได้ + The signature algorithm and the SignerInfo's digest algorithm name different hashes; the signature was made with the SignerInfo's. อัลกอริทึมลายเซ็นและอัลกอริทึมไดเจสต์ของ SignerInfo ระบุแฮชต่างกัน ลายเซ็นถูกสร้างด้วยของ SignerInfo + This signature uses SHA-1, a weak hash algorithm: collisions in it have been demonstrated. It still validates because many documents signed years ago use it, but it should not be relied on. ลายเซ็นนี้ใช้ SHA-1 ซึ่งเป็นอัลกอริทึมแฮชที่อ่อนแอและมีการแสดงให้เห็นการชนกันแล้ว ยังตรวจสอบผ่านได้เพราะเอกสารจำนวนมากที่เซ็นไว้หลายปีก่อนใช้อัลกอริทึมนี้ แต่ไม่ควรเชื่อถือ + This signature uses RIPEMD-160, a legacy 160-bit hash algorithm that is no longer recommended for signatures. It still validates, but it should not be relied on. ลายเซ็นนี้ใช้ RIPEMD-160 ซึ่งเป็นอัลกอริทึมแฮช 160 บิตรุ่นเก่าที่ไม่แนะนำให้ใช้กับลายเซ็นแล้ว ยังตรวจสอบผ่านได้ แต่ไม่ควรเชื่อถือ + The document has been altered or corrupted since the signature was applied. เอกสารถูกแก้ไขหรือเสียหายหลังจากใส่ลายเซ็น + The signer's certificate is not in the signature. ใบรับรองของผู้เซ็นไม่อยู่ในลายเซ็น + The signature value does not match the signer's certificate: the signature is corrupt. ค่าลายเซ็นไม่ตรงกับใบรับรองของผู้เซ็น: ลายเซ็นเสียหาย + The signature could not be checked ({}). ตรวจสอบลายเซ็นไม่ได้ ({}) + The signature could not be verified ({}). ยืนยันลายเซ็นไม่ได้ ({}) + This document has not been modified since this signature was applied. เอกสารนี้ไม่ถูกแก้ไขหลังจากใส่ลายเซ็นนี้ + The document has been modified since this signature was applied, but the changes are permitted ({}). เอกสารถูกแก้ไขหลังจากใส่ลายเซ็นนี้ แต่เป็นการเปลี่ยนแปลงที่อนุญาต ({}) + The document has been altered since this signature was applied in ways it does not permit ({}). เอกสารถูกแก้ไขหลังจากใส่ลายเซ็นนี้ในลักษณะที่ลายเซ็นไม่อนุญาต ({}) + The signer's certificate was not valid at the time of signing. ใบรับรองของผู้เซ็นไม่ถูกต้อง ณ เวลาที่เซ็น + The signer's certificate does not allow digital signatures (its key usage has neither digital signature nor non-repudiation). ใบรับรองของผู้เซ็นไม่อนุญาตให้ใช้กับลายเซ็นดิจิทัล (key usage ไม่มีทั้ง digital signature และ non-repudiation) + The signer's certificate is not issued for signing documents (its extended key usage has no document-signing purpose). ใบรับรองของผู้เซ็นไม่ได้ออกให้สำหรับเซ็นเอกสาร (extended key usage ไม่มีวัตถุประสงค์การเซ็นเอกสาร) + The signer's certificate has critical extensions PdfCraft does not recognize ({}). ใบรับรองของผู้เซ็นมีส่วนขยายสำคัญที่ PdfCraft ไม่รู้จัก ({}) + The certificate of {} is not a CA certificate that may issue certificates, so it is not used to vouch for {}. ใบรับรองของ {} ไม่ใช่ใบรับรอง CA ที่ออกใบรับรองได้ จึงไม่ถูกใช้รับรอง {} + The certificate of {} does not allow this many CA certificates below it (path length), so it is not used to vouch for {}. ใบรับรองของ {} ไม่อนุญาตให้มีใบรับรอง CA อยู่ใต้ลงไปมากเท่านี้ (ความยาวเส้นทาง) จึงไม่ถูกใช้รับรอง {} + The certificate of {} was not valid at the time of signing, so it is not used to vouch for {}. ใบรับรองของ {} ไม่ถูกต้อง ณ เวลาที่เซ็น จึงไม่ถูกใช้รับรอง {} + The signer's identity is unknown because it has not been included in your list of trusted certificates and none of its parent certificates are trusted certificates. ไม่ทราบตัวตนของผู้เซ็น เพราะไม่อยู่ในรายการใบรับรองที่คุณเชื่อถือ และไม่มีใบรับรองระดับเหนือขึ้นไปที่เชื่อถือ + The signer's identity is valid. ตัวตนของผู้เซ็นถูกต้อง + The signature includes an embedded timestamp. ลายเซ็นมีการประทับเวลาฝังอยู่ + Signing time is from the clock on the signer's computer. เวลาที่เซ็นมาจากนาฬิกาบนคอมพิวเตอร์ของผู้เซ็น + The signature's timestamp token does not cover the signature value. โทเค็นประทับเวลาของลายเซ็นไม่ครอบคลุมค่าลายเซ็น + The signature's timestamp token could not be verified ({}). ยืนยันโทเค็นประทับเวลาของลายเซ็นไม่ได้ ({}) + The embedded timestamp token is valid and its authority is trusted; trusted time is {}. โทเค็นประทับเวลาที่ฝังไว้ถูกต้องและผู้ออกได้รับความเชื่อถือ เวลาที่เชื่อถือได้คือ {} + The signature carries an unverified timestamp ({}): the timestamp authority is not in your list of trusted certificates, so the signing time claimed by the signer is used instead. ลายเซ็นมีการประทับเวลาที่ยังไม่ได้ยืนยัน ({}): ผู้ออกการประทับเวลาไม่อยู่ในรายการใบรับรองที่คุณเชื่อถือ จึงใช้เวลาที่ผู้เซ็นอ้างแทน + The signer's certificate has been revoked ({}). ใบรับรองของผู้เซ็นถูกเพิกถอนแล้ว ({}) + The document's embedded revocation information shows that the signer's certificate has not been revoked. ข้อมูลการเพิกถอนที่ฝังในเอกสารแสดงว่าใบรับรองของผู้เซ็นไม่ได้ถูกเพิกถอน + The timestamp has no valid byte range. การประทับเวลาไม่มีช่วงไบต์ที่ถูกต้อง + The timestamp's byte range does not match the file. ช่วงไบต์ของการประทับเวลาไม่ตรงกับไฟล์ + The timestamp's byte range does not exclude exactly its contents. ช่วงไบต์ของการประทับเวลาไม่ได้เว้นเฉพาะเนื้อหาของมันพอดี + The timestamp contents are not hexadecimal. เนื้อหาการประทับเวลาไม่ใช่เลขฐานสิบหก + The timestamp token could not be read ({}). อ่านโทเค็นประทับเวลาไม่ได้ ({}) + The document has been altered or corrupted since the timestamp was applied. เอกสารถูกแก้ไขหรือเสียหายหลังจากประทับเวลา + The timestamp authority's certificate was not valid at the time of timestamping. ใบรับรองของผู้ออกการประทับเวลาไม่ถูกต้อง ณ เวลาที่ประทับเวลา + This document has not been modified since this timestamp was applied. เอกสารนี้ไม่ถูกแก้ไขหลังจากประทับเวลานี้ + The document has been modified since this timestamp was applied, but the changes are permitted ({}). เอกสารถูกแก้ไขหลังจากประทับเวลานี้ แต่เป็นการเปลี่ยนแปลงที่อนุญาต ({}) + The document has been altered since this timestamp was applied in ways it does not permit ({}). เอกสารถูกแก้ไขหลังจากประทับเวลานี้ในลักษณะที่ไม่อนุญาต ({}) + The timestamp token is valid and its authority is trusted. โทเค็นประทับเวลาถูกต้องและผู้ออกได้รับความเชื่อถือ + The timestamp token is valid, but the timestamp authority is not in your list of trusted certificates. โทเค็นประทับเวลาถูกต้อง แต่ผู้ออกการประทับเวลาไม่อยู่ในรายการใบรับรองที่คุณเชื่อถือ + Unsigned signature field ช่องลายเซ็นที่ยังไม่ได้เซ็น + Signature is valid ลายเซ็นถูกต้อง + Signature validity is unknown ไม่ทราบความถูกต้องของลายเซ็น + Signature is invalid ลายเซ็นไม่ถูกต้อง + page content เนื้อหาของหน้า + form fill การกรอกแบบฟอร์ม + comments ความคิดเห็น + document security store ที่เก็บข้อมูลความปลอดภัยของเอกสาร + metadata เมทาดาทา + links ลิงก์ + document structure โครงสร้างเอกสาร + pages added or removed มีการเพิ่มหรือเอาหน้าออก + other changes การเปลี่ยนแปลงอื่น + the signed version could not be read อ่านฉบับที่เซ็นไม่ได้ + page {n} is out of range (1–{count}) หน้า {n} อยู่นอกช่วง (1–{count}) + {page} is not a page number or label {page} ไม่ใช่เลขหน้าหรือป้ายหน้า + Change Title เปลี่ยนชื่อเรื่อง + Change Author เปลี่ยนผู้เขียน + Change Subject เปลี่ยนหัวเรื่อง + Change Keywords เปลี่ยนคำสำคัญ + Save as {level} บันทึกเป็น {level} + Create links สร้างลิงก์ + Certificate authority ผู้ออกใบรับรอง (CA) + End entity ผู้ใช้ปลายทาง + Margins (in) ระยะขอบ (นิ้ว) + Drop PDFs or folders here, or choose them. วาง PDF หรือโฟลเดอร์ที่นี่ หรือกดเลือก +calendar date January มกราคม +calendar date February กุมภาพันธ์ +calendar date March มีนาคม +calendar date April เมษายน +calendar date May พฤษภาคม +calendar date June มิถุนายน +calendar date July กรกฎาคม +calendar date August สิงหาคม +calendar date September กันยายน +calendar date October ตุลาคม +calendar date November พฤศจิกายน +calendar date December ธันวาคม + Zoom in / out (also pinch or ⌘-scroll) ขยาย / ย่อ (หรือใช้การจีบนิ้ว หรือ ⌘ พร้อมเลื่อน) + Open a PDF (⌘O) เปิด PDF (⌘O) + Print (⌘P) พิมพ์ (⌘P) + Document properties (⌘D) คุณสมบัติเอกสาร (⌘D) + Zoom out (⌘−) ย่อ (⌘−) + Zoom in (⌘+) ขยาย (⌘+) + Rotate view clockwise (⇧⌘+) หมุนมุมมองตามเข็มนาฬิกา (⇧⌘+) + New bookmark (⌘B) บุ๊กมาร์กใหม่ (⌘B) + Previous (⇧⌘G) ก่อนหน้า (⇧⌘G) + Next (⌘G) ถัดไป (⌘G) + Creator โปรแกรมที่สร้าง + Producer โปรแกรมที่ผลิต PDF + Save (M4) บันทึก (M4) + Only the document's owner can change its security (open it with the permissions password) เฉพาะเจ้าของเอกสารเท่านั้นที่เปลี่ยนความปลอดภัยได้ (เปิดด้วยรหัสผ่านสิทธิ์) + Enter a name. ป้อนชื่อ + The password must have at least 6 characters. รหัสผ่านต้องมีอย่างน้อย 6 อักขระ + The passwords do not match. รหัสผ่านไม่ตรงกัน + There is no folder to save the digital ID in. ไม่มีโฟลเดอร์สำหรับบันทึก Digital ID + The password is incorrect. รหัสผ่านไม่ถูกต้อง + Choose a digital ID. เลือก Digital ID + Unsigned signature field: {name} ช่องลายเซ็นที่ยังไม่ได้เซ็น: {name} + Rev. {rev}: Signed by {name} ฉบับแก้ไข {rev}: เซ็นโดย {name} + Rev. {rev}: Signed by an unknown signer ฉบับแก้ไข {rev}: เซ็นโดยผู้เซ็นที่ไม่ทราบ + Rev. {rev}: Certified by {name} ฉบับแก้ไข {rev}: รับรองโดย {name} + Rev. {rev}: Certified by an unknown signer ฉบับแก้ไข {rev}: รับรองโดยผู้เซ็นที่ไม่ทราบ + {who}, certificate issued by {issuer}. {who} ใบรับรองออกโดย {issuer} + {who}, certificate issued by an unknown issuer. {who} ใบรับรองออกโดยผู้ออกที่ไม่ทราบ + Digital Signature ลายเซ็นดิจิทัล + Non-Repudiation การห้ามปฏิเสธความรับผิด + Key Encipherment การเข้ารหัสกุญแจ + Data Encipherment การเข้ารหัสข้อมูล + Key Agreement การตกลงกุญแจ + Certificate Signing การลงนามใบรับรอง + CRL Signing การลงนาม CRL + Encipher Only เข้ารหัสเท่านั้น + Decipher Only ถอดรหัสเท่านั้น + Enter a page number ป้อนเลขหน้า + Enter a URL ป้อน URL + Enter the field names ป้อนชื่อช่อง + Cut and stack needs Two-sided: Off. Print single-sided sheets. ตัดแล้วซ้อนต้องตั้งสองด้านเป็น ปิด ให้พิมพ์แผ่นแบบด้านเดียว + Panel layout could not be restored: {error} กู้คืนเค้าโครงแผงไม่ได้: {error} + Panel move was not applied: {error} ย้ายแผงไม่สำเร็จ: {error} + Rendering… กำลังแสดงผล… + Still rendering — this page is unusually complex… ยังแสดงผลอยู่ — หน้านี้ซับซ้อนผิดปกติ… + English อังกฤษ + on page {label} ในหน้า {label} + Every PDF in the folder PDF ทุกไฟล์ในโฟลเดอร์ + Every PDF in the folder and the folders inside it PDF ทุกไฟล์ในโฟลเดอร์และโฟลเดอร์ย่อย + No PDFs found in {folder} ไม่พบ PDF ใน {folder} + Added the first {n} PDFs in {folder} เพิ่ม PDF {n} ไฟล์แรกใน {folder} แล้ว + Add the PDFs to combine เพิ่ม PDF ที่จะรวม + Paste วาง + Select all เลือกทั้งหมด + Next ถัดไป + Previous ก่อนหน้า + Choose… เลือก… + Refresh รีเฟรช + Loading… กำลังโหลด… + Save changes? บันทึกการเปลี่ยนแปลงหรือไม่ + Page {n} หน้า {n} + of จาก + Comment ความคิดเห็น + Font แบบอักษร + Color สี + Theme ธีม + System ตามระบบ + Save file บันทึกไฟล์ + Import นำเข้า + Help… วิธีใช้… + Automatically อัตโนมัติ + Never ไม่เลย + Always เสมอ + On เปิด + Enabled เปิดใช้งาน + Disabled ปิดใช้งาน + Error ข้อผิดพลาด + Warning คำเตือน + Information ข้อมูล + Success สำเร็จ + Folder โฟลเดอร์ + Choose a file… เลือกไฟล์… + Choose a folder… เลือกโฟลเดอร์… + Open folder เปิดโฟลเดอร์ + Create folder สร้างโฟลเดอร์ + Duplicate ทำสำเนา + Move ย้าย + Copy to clipboard คัดลอกไปยังคลิปบอร์ด + Copied to clipboard คัดลอกไปยังคลิปบอร์ดแล้ว + Organize จัดระเบียบ + Comment and review แสดงความคิดเห็นและตรวจทาน + Search results ผลการค้นหา + No results ไม่พบผลลัพธ์ + Page {n} of {total} หน้า {n} จาก {total} +calendar weekday Su อา +calendar weekday Mo จ +calendar weekday Tu อ +calendar weekday We พ +calendar weekday Th พฤ +calendar weekday Fr ศ +calendar weekday Sa ส +certificate Issued to ออกให้แก่ +certificate Issued by ออกโดย +certificate Valid from ใช้ได้ตั้งแต่ +certificate Valid to ใช้ได้ถึง +certificate Intended usage การใช้งานที่กำหนด +certificate Version เวอร์ชัน +certificate Serial number หมายเลขประจำใบรับรอง +certificate Issuer ผู้ออก +certificate Validity starts เริ่มมีผล +certificate Validity ends สิ้นสุดอายุ +certificate Public key กุญแจสาธารณะ +certificate Basic constraints ข้อจำกัดพื้นฐาน +certificate Key usage การใช้งานกุญแจ +certificate Self-signed รับรองตนเอง +certificate SHA-1 digest ไดเจสต์ SHA-1 +certificate SHA-256 digest ไดเจสต์ SHA-256 + Next tab แท็บถัดไป + Previous tab แท็บก่อนหน้า + Remove "{name}" from this list? The file itself is not deleted. เอา "{name}" ออกจากรายการนี้หรือไม่? ไฟล์จะไม่ถูกลบ +@plural {n} field|{n} fields {n} ช่อง +@plural {n} field name collides with earlier files and will be renamed: {list}|{n} field names collide with earlier files and will be renamed: {list} ชื่อช่อง {n} รายการซ้ำกับไฟล์ก่อนหน้าและจะถูกเปลี่ยนชื่อ: {list} +@plural {n} page|{n} pages {n} หน้า +@plural {n} object selected|{n} objects selected เลือกอยู่ {n} วัตถุ +key Ctrl Ctrl +key Shift Shift +key Delete Delete +key Esc Esc +key Home Home +key End End +key Space Space +@plural Downloaded {n} PDF|Downloaded {n} PDFs ดาวน์โหลด PDF แล้ว {n} ไฟล์ + Minimize ย่อหน้าต่าง + Maximize ขยายเต็มจอ + Restore คืนขนาด + Use system title bar ใช้แถบชื่อเรื่องของระบบ + Show a basic title bar for the window buttons instead of the tab strip. GNOME doesn't draw title bars for apps, so this one doesn't follow its theme. แสดงแถบชื่อเรื่องแบบพื้นฐานสำหรับปุ่มหน้าต่างแทนแถบแท็บ GNOME ไม่วาดแถบชื่อเรื่องให้แอป แถบนี้จึงไม่ใช้ธีมของ GNOME + Allow อนุญาต + Only allow this if you trust the source document. อนุญาตเฉพาะเมื่อคุณเชื่อถือเอกสารต้นทางเท่านั้น + Open this local PDF? เปิด PDF ในเครื่องนี้หรือไม่? + This document is trying to open a local file: เอกสารนี้พยายามเปิดไฟล์ในเครื่อง: + Move tag earlier ย้ายแท็กขึ้นก่อน + Move tag later ย้ายแท็กลงทีหลัง +@plural {n} image optimized|{n} images optimized ปรับรูปภาพให้เหมาะสมแล้ว {n} รูป +@plural {n} item discarded|{n} items discarded ทิ้งไปแล้ว {n} รายการ +@plural {n} byte|{n} bytes {n} ไบต์ +@plural {n} pixel|{n} pixels {n} พิกเซล +@plural Delete {n} field|Delete {n} fields ลบ {n} ช่อง +@plural {n} file|{n} files {n} ไฟล์ +@plural {n} comment|{n} comments {n} ความคิดเห็น +@plural {n} result|{n} results {n} ผลลัพธ์ From 299af11786a2ced8abaea97eb0dd4e1bcd0741b2 Mon Sep 17 00:00:00 2001 From: mixlnwuu <176603945+mixlnwuu@users.noreply.github.com> Date: Fri, 16 Oct 2026 20:10:21 +0700 Subject: [PATCH 10/33] i18n(th): translate the 80 strings added upstream since 0.8.0 Word count, untagged content, image crop, print as image, signature labels, full screen prompt and the other new interface strings. th.tsv now covers every key any bundled catalog translates (2,672). --- crates/ui-egui/src/i18n/th.tsv | 80 ++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) diff --git a/crates/ui-egui/src/i18n/th.tsv b/crates/ui-egui/src/i18n/th.tsv index 12e417bf8..a23cbe034 100644 --- a/crates/ui-egui/src/i18n/th.tsv +++ b/crates/ui-egui/src/i18n/th.tsv @@ -2599,3 +2599,83 @@ key Space Space @plural {n} file|{n} files {n} ไฟล์ @plural {n} comment|{n} comments {n} ความคิดเห็น @plural {n} result|{n} results {n} ผลลัพธ์ + Hide hover previews for highlights without comment text ซ่อนตัวอย่างเมื่อชี้เมาส์ที่การเน้นข้อความซึ่งไม่มีข้อความความคิดเห็น + Set page transitions ตั้งค่าการเปลี่ยนหน้า + What takes up the space in this file, by kind of content. พื้นที่ในไฟล์นี้ถูกใช้ไปกับอะไรบ้าง แยกตามชนิดเนื้อหา + Digitally signed by ลงนามแบบดิจิทัลโดย + DN: DN: + Reason: เหตุผล: + Location: สถานที่: + Date: วันที่: + The labels are in English: the signature's font can't draw them in this language. ป้ายกำกับเป็นภาษาอังกฤษ เพราะฟอนต์ของลายเซ็นแสดงภาษานี้ไม่ได้ + Font size ขนาดแบบอักษร + Make Properties Default ตั้งคุณสมบัติเป็นค่าเริ่มต้น + Save over the changed file? บันทึกทับไฟล์ที่ถูกเปลี่ยนแปลงหรือไม่ + “{name}” changed on disk after it was opened or last saved. Saving now replaces that newer version with this one. “{name}” ถูกเปลี่ยนแปลงบนดิสก์หลังจากเปิดหรือบันทึกครั้งล่าสุด ถ้าบันทึกตอนนี้ รุ่นที่ใหม่กว่านั้นจะถูกแทนที่ด้วยรุ่นนี้ + Save anyway บันทึกทับเลย + Sending sheet {s} of {n} to {printer}… กำลังส่งแผ่นที่ {s} จาก {n} ไปยัง {printer}… + No printers were found. Check that the printer is installed and the print spooler is running, then open Print again. ไม่พบเครื่องพิมพ์ ตรวจสอบว่าติดตั้งเครื่องพิมพ์แล้วและบริการ Print Spooler กำลังทำงาน แล้วเปิดหน้าต่างพิมพ์อีกครั้ง + Collapse all pages ยุบทุกหน้า + Expand all pages ขยายทุกหน้า + This file changed on disk. Reload shows the new version and drops your unsaved changes; Save replaces it with this version. ไฟล์นี้ถูกเปลี่ยนแปลงบนดิสก์ "โหลดใหม่" จะแสดงรุ่นใหม่และทิ้งการเปลี่ยนแปลงที่ยังไม่ได้บันทึก ส่วน "บันทึก" จะแทนที่ไฟล์ด้วยรุ่นนี้ + Scroll speed (mouse wheel and arrow keys) ความเร็วการเลื่อน (ล้อเมาส์และปุ่มลูกศร) + Cut Image ตัดรูปภาพ + Redact Image ปิดทับรูปภาพ + Create Link… สร้างลิงก์… + Recognize Text… รู้จำข้อความ… + Open in Full Screen mode? เปิดในโหมดเต็มหน้าจอหรือไม่ + This document asks to open in Full Screen mode: the page fills the screen and nothing else shows. Press Esc at any time to leave it. เอกสารนี้ขอเปิดในโหมดเต็มหน้าจอ หน้าเอกสารจะเต็มหน้าจอและไม่แสดงสิ่งอื่น กด Esc เพื่อออกได้ทุกเมื่อ + Full Screen เต็มหน้าจอ + Not now ไม่ใช่ตอนนี้ + You are viewing the signed version of “{from}” (revision {rev}). It is a snapshot: changes here won't affect the original. คุณกำลังดูฉบับที่เซ็นแล้วของ “{from}” (ฉบับแก้ไข {rev}) ซึ่งเป็นสำเนา ณ ขณะนั้น การเปลี่ยนแปลงที่นี่จะไม่มีผลกับต้นฉบับ + You are viewing revision {rev} of “{from}”. It is a snapshot: changes here won't affect the original. คุณกำลังดูฉบับแก้ไข {rev} ของ “{from}” ซึ่งเป็นสำเนา ณ ขณะนั้น การเปลี่ยนแปลงที่นี่จะไม่มีผลกับต้นฉบับ + Turn upside down (180°) กลับหัว (180°) + 4 x 6 in label (101.6 x 152.4 mm) ฉลากขนาด 4 x 6 นิ้ว (101.6 x 152.4 มม.) + Cuts each page to its printed area, turns it upright and fits it to the sheet without stretching. One label per sheet. ตัดแต่ละหน้าให้เหลือเฉพาะส่วนที่พิมพ์ หมุนให้ตั้งตรง และปรับให้พอดีกับแผ่นโดยไม่ยืด หนึ่งฉลากต่อหนึ่งแผ่น + Find untagged content ค้นหาเนื้อหาที่ไม่มีแท็ก + No untagged content was found. ไม่พบเนื้อหาที่ไม่มีแท็ก + Found {n} untagged content problems. พบปัญหาเนื้อหาที่ไม่มีแท็ก {n} รายการ + Tag form fields ติดแท็กฟิลด์ฟอร์ม + Mark as artifact ระบุเป็นส่วนตกแต่ง + Remove this leaf tag from reading order and mark its direct content as an artifact นำแท็กปลายสุดนี้ออกจากลำดับการอ่าน และระบุเนื้อหาโดยตรงของแท็กเป็นส่วนตกแต่ง + Mark content as artifact ระบุเนื้อหาเป็นส่วนตกแต่ง + Word count จำนวนคำ + Current page only เฉพาะหน้าปัจจุบัน + Exclude tagged tables ไม่นับตารางที่ติดแท็ก + Exclude tagged code blocks ไม่นับบล็อกโค้ดที่ติดแท็ก + Exclude image/OCR text ไม่นับข้อความในรูปภาพ/OCR + Exclusions use PDF tags. Untagged tables and code remain included. Image exclusion also removes invisible text. การยกเว้นใช้แท็กของ PDF ตารางและโค้ดที่ไม่มีแท็กยังคงถูกนับ การไม่นับรูปภาพจะไม่นับข้อความที่มองไม่เห็นด้วย + Words คำ + Characters ตัวอักษร + Characters without spaces ตัวอักษรไม่รวมช่องว่าง + Pages counted จำนวนหน้าที่นับ + Some pages contain no countable text. Scanned images need OCR first. บางหน้าไม่มีข้อความที่นับได้ ภาพสแกนต้องทำ OCR ก่อน + Some content could not be classified safely and was kept in the count. เนื้อหาบางส่วนจำแนกได้ไม่แน่ชัด จึงยังนับรวมไว้ + Counting words… {n} pages read กำลังนับคำ… อ่านแล้ว {n} หน้า + Word counting stopped unexpectedly. การนับคำหยุดทำงานโดยไม่คาดคิด + Word count… นับจำนวนคำ… +@id file.word_count นับจำนวนคำ… + Standard มาตรฐาน + Mobile อุปกรณ์พกพา + Merge image fragments รวมชิ้นส่วนรูปภาพ + Optimizing… merging image fragments กำลังปรับให้เหมาะสม… รวมชิ้นส่วนรูปภาพ + Side by side เคียงข้างกัน + New file only เฉพาะไฟล์ใหม่ + Old file: {name} ไฟล์เก่า: {name} + New file: {name} ไฟล์ใหม่: {name} + Print as image พิมพ์เป็นรูปภาพ + Resolution: ความละเอียด: + Use it when a printer skips text, shading or transparency. The print is no longer searchable text; with Print in grayscale, the pictures are grey. ใช้เมื่อเครื่องพิมพ์พิมพ์ข้อความ การไล่เฉดสี หรือความโปร่งใสไม่ออก งานพิมพ์จะไม่เป็นข้อความที่ค้นหาได้ และถ้าเลือก "พิมพ์เป็นระดับสีเทา" รูปภาพจะเป็นสีเทา + Crop Image ครอบตัดรูปภาพ + Remove Crop เอาการครอบตัดออก + Trim the picture with its handles; Enter or Done applies ตัดขอบรูปด้วยจุดจับ กด Enter หรือ "เสร็จสิ้น" เพื่อใช้ + Redaction mark appearance ลักษณะของเครื่องหมายปิดทับ + Outline colour: สีเส้นขอบ: + Fill colour: สีเติม: + Shown while the pointer is over a mark. แสดงขณะชี้เมาส์อยู่บนเครื่องหมาย + Opacity: ความทึบ: + Make properties default ตั้งคุณสมบัติเป็นค่าเริ่มต้น + Pages selected หน้าที่เลือก + Page properties คุณสมบัติหน้า + The password must have at least 8 characters. รหัสผ่านต้องมีอย่างน้อย 8 ตัวอักษร +theme Appearance ลักษณะที่ปรากฏ From a30a0ab71393287a50ccd7133275cc11162ec2db Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 15 Oct 2026 13:10:17 +0300 Subject: [PATCH 11/33] G14: Romanian (ro) interface catalog Add a clean-room Romanian translation of the UI catalog (2,670 entries, every bundled key), the CLDR plural rule for Romanian (one / few / other, "20 de pagini"), the ATTRIBUTION.toml entry, coverage and plural tests, and the localization docs and roadmap entries. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01JadgGo4G2GHaAMNb3qyygk --- ATTRIBUTION.md | 3 +- ATTRIBUTION.toml | 11 + ROADMAP.md | 5 +- crates/engine/src/dates.rs | 42 +- crates/ui-egui/src/i18n/mod.rs | 56 +- crates/ui-egui/src/i18n/ro.tsv | 2684 ++++++++++++++++++++++++++++++++ crates/ui-egui/tests/fonts.rs | 1 + docs/localization-parity.md | 7 +- docs/localization.md | 12 +- 9 files changed, 2806 insertions(+), 15 deletions(-) create mode 100644 crates/ui-egui/src/i18n/ro.tsv diff --git a/ATTRIBUTION.md b/ATTRIBUTION.md index 5cfee8d55..51e9df6da 100644 --- a/ATTRIBUTION.md +++ b/ATTRIBUTION.md @@ -4,7 +4,7 @@ Every asset PdfCraft includes, bundles or uses to build its published material, with its author, source and licence. The policy is in [AGENTS.md](AGENTS.md) §1. The machine-readable list, with SHA-256 hashes, is [ATTRIBUTION.toml](ATTRIBUTION.toml). Licence texts are kept beside the assets and summarised in [NOTICE](NOTICE). -## In this repository (272) +## In this repository (273) | Asset | Title | Author | Licence | Source | Used for | |---|---|---|---|---|---| @@ -28,6 +28,7 @@ Every asset PdfCraft includes, bundles or uses to build its published material, | `crates/ui-egui/src/i18n/ar.tsv` | Arabic interface translation catalog | PdfCraft contributors | MIT OR Apache-2.0 | Contributor-original: clean-room translations of PdfCraft's English UI labels, no proprietary localisation resources | Arabic UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs | | `crates/ui-egui/src/i18n/tr.tsv` | Turkish interface translation catalog | PdfCraft contributors | MIT OR Apache-2.0 | Contributor-original: clean-room translations of PdfCraft's English UI labels, no proprietary localisation resources | Turkish UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs | | `crates/ui-egui/src/i18n/lt.tsv` | Lithuanian interface translation catalog | PdfCraft contributors | MIT OR Apache-2.0 | Contributor-original: clean-room translations of PdfCraft's English UI labels and user-facing messages; original catalog reviewed by a native Lithuanian-speaking contributor; 2026-10-15 coverage additions are AI-assisted and not separately native-reviewed | Lithuanian UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs | +| `crates/ui-egui/src/i18n/ro.tsv` | Romanian interface translation catalog | PdfCraft contributors | MIT OR Apache-2.0 | Contributor-original: clean-room translations of PdfCraft's English UI labels and user-facing messages; AI-assisted and not yet reviewed line by line by a native Romanian speaker | Romanian UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs | | `assets/icons/accessibility.svg` | Lucide icon "accessibility" | Lucide Contributors (portions Cole Bemis, Feather) | ISC | https://github.com/lucide-icons/lucide (npm lucide-static 1.49.0, icons/accessibility.svg) | UI icon, embedded via crates/ui-egui/src/icon_data.rs | | `assets/icons/align-left.svg` | Lucide icon "align-left" | Lucide Contributors (portions Cole Bemis, Feather) | ISC | https://github.com/lucide-icons/lucide (npm lucide-static 1.49.0, icons/align-left.svg) | UI icon, embedded via crates/ui-egui/src/icon_data.rs | | `assets/icons/align-center.svg` | Lucide icon "align-center" | Lucide Contributors (portions Cole Bemis, Feather) | ISC | https://github.com/lucide-icons/lucide (npm lucide-static 1.49.0, icons/align-center.svg) | UI icon, embedded via crates/ui-egui/src/icon_data.rs | diff --git a/ATTRIBUTION.toml b/ATTRIBUTION.toml index 87b11279e..26f8f88a6 100644 --- a/ATTRIBUTION.toml +++ b/ATTRIBUTION.toml @@ -230,6 +230,17 @@ kind = "translation" usage = "Lithuanian UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs" sha256 = "c805a2c6da08e77a9a7455856d82c168cf6f353d96e1dc140fcc8898f12ba538" +[[asset]] +path = "crates/ui-egui/src/i18n/ro.tsv" +title = "Romanian interface translation catalog" +author = "PdfCraft contributors" +source = "Contributor-original: clean-room translations of PdfCraft's English UI labels and user-facing messages; AI-assisted and not yet reviewed line by line by a native Romanian speaker" +licence = "MIT OR Apache-2.0" +licence_file = "LICENSE-MIT" +kind = "translation" +usage = "Romanian UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs" +sha256 = "eb0176eed7f7095a0c27aabea56edf03e6b02035118c512e3c87311520b2d240" + [[asset]] path = "assets/icons/accessibility.svg" diff --git a/ROADMAP.md b/ROADMAP.md index ee84a1111..d40f3d2a0 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -141,8 +141,8 @@ union). Detail and script notes: [localization-parity.md](docs/localization-pari | Vietnamese | `vi` | 100% of current union | partial (dialogs / tooltips; no help) | Also shipped: Traditional Chinese, Russian, Bulgarian, Telugu, Hungarian, Ukrainian, Italian, -Kazakh, Polish, Slovenian, Greek, Turkish, Lithuanian and Czech (menus only): **14 more catalogs** -(23 interface languages including English). +Kazakh, Polish, Slovenian, Greek, Turkish, Lithuanian, Romanian and Czech (menus only): **15 more catalogs** +(24 interface languages including English). ## Upcoming @@ -174,6 +174,7 @@ Ranked; detail and the full milestone table in [docs/roadmap.md](docs/roadmap.md - **2026-10-12 (M3, drawing markups):** While a comment is being drawn, the pointer in a band along any edge of the view (or just past it) scrolls the view up, down, left or right, so points beyond what is shown can be reached. A polygon, cloud or run of connected lines takes back its last point with Backspace, Delete or Undo (the first point's removal cancels it). Edge scrolling has unit tests of its maths only; it has not been exercised end to end in the app by an automated test. - **2026-10-12 (gap 6, #1319, #1305, #1324):** Editing an XFA form keeps a radio item's stored text when it contains a space, so a later layout still selects it. Replace Pages on a split selection replaces those pages and leaves the gap; editing the dialog range still replaces the span. Marking a figure decorative rewrites only that figure's content stream, so a header, added text and unknown stream entries stay. Estimates unchanged. - **2026-10-15 (M14, gap 24):** `misc.localization` and `misc.installers` move from planned to partial. Localization: 22 catalogs ship, but Chinese shows tofu in releases, Telugu has no release font and Arabic is not mirrored. Installers: macOS and Windows releases are signed, Linux packages are not. The Acrobat menu diff itself remains open. Estimates unchanged. +- **2026-10-15 (G14, Romanian localization):** Added Romanian (`ro`, Română) as an interface and date language with a 2,673-entry catalog covering every bundled key, and a CLDR plural rule (`plural_ro`: one / few / other, "20 de pagini"). Locale tags `ro` / `ro-RO` / `ro_RO.UTF-8` / `ro-MD` resolve, so Auto picks it on Romanian Windows. Coverage and plural tests added. Status `partial` like the other catalogs (no translated help). - **2026-10-13 (G14, Vietnamese localization):** Added Vietnamese (`vi`, Tiếng Việt) as an interface and date language with a 2,591-entry catalog (`plural_none`) covering 100% of the current localizable key union (plus `theme`/`Appearance`). Locale tags `vi` / `vi-VN` / `vi_VN.UTF-8` resolve; calendar months use numeric `Tháng 1`…`12` / `tháng 1`…`12`. Native-speaker community review recorded. The twelve-language localization mean moves from ≈59% to ≈68%; weighted readiness ≈49% → ≈50%. Status stays `partial`: engine/OS details, document contents, filenames, CLI/MCP and external help stay outside the catalog by design. - **2026-10-13 (M6, data exchange fidelity):** XML and XFDF exports preserve tabs and line breaks in field names and comment metadata using character references. Saved-PDF regressions cover distinct names that XML would normalize to the same attribute value, restored field values and replacement of the original comment identities. Estimates unchanged. diff --git a/crates/engine/src/dates.rs b/crates/engine/src/dates.rs index 8c14a5b1b..ad2ad0841 100644 --- a/crates/engine/src/dates.rs +++ b/crates/engine/src/dates.rs @@ -56,7 +56,7 @@ const AR_DAYS: [&str; 7] = ["الأحد", "الاثنين", "الثلاثاء", /// The languages month and weekday names can be written in (Preferences ▸ Date format ▸ Language): /// the interface languages, in the same order and with the same names. -pub static DATE_LANGUAGES: [DateLanguage; 23] = [ +pub static DATE_LANGUAGES: [DateLanguage; 24] = [ DateLanguage { code: "en", name: "English", @@ -398,6 +398,29 @@ pub static DATE_LANGUAGES: [DateLanguage; 23] = [ days: ["Chủ Nhật", "Thứ Hai", "Thứ Ba", "Thứ Tư", "Thứ Năm", "Thứ Sáu", "Thứ Bảy"], days_short: ["CN", "T2", "T3", "T4", "T5", "T6", "T7"], }, + // Romanian: month and weekday names are lowercase, also standing alone (`noiembrie 2023`). + DateLanguage { + code: "ro", + name: "Română", + months: [ + "ianuarie", + "februarie", + "martie", + "aprilie", + "mai", + "iunie", + "iulie", + "august", + "septembrie", + "octombrie", + "noiembrie", + "decembrie", + ], + months_with_day: None, + months_short: ["ian.", "feb.", "mar.", "apr.", "mai", "iun.", "iul.", "aug.", "sept.", "oct.", "nov.", "dec."], + days: ["duminică", "luni", "marți", "miercuri", "joi", "vineri", "sâmbătă"], + days_short: ["dum.", "lun.", "mar.", "mie.", "joi", "vin.", "sâm."], + }, ]; /// The date language for `code` (any case), or `None` when there's none. @@ -741,6 +764,23 @@ mod tests { assert_eq!(s.date_language(), None); } + #[test] + fn romanian_month_and_weekday_names() { + let mut s = Session::new().with_clock(|| 1_700_000_000); + s.set_date_language(Some("ro")).unwrap(); + assert_eq!(s.date_language(), Some("ro")); + s.set_date_format("d mmmm yyyy").unwrap(); + assert_eq!(s.today_text(None, None).as_deref(), Ok("14 noiembrie 2023")); + s.set_date_format("mmmm yyyy").unwrap(); + assert_eq!(s.today_text(None, None).as_deref(), Ok("noiembrie 2023")); + s.set_date_format("ddd, d mmm").unwrap(); + assert_eq!(s.today_text(None, None).as_deref(), Ok("mar., 14 nov.")); + // `14 noiembrie 2023` is WinAnsi; the weekday `marți` (ț, comma below) is not, so Fill & Sign refuses that format. + assert_eq!(s.today_text_for_pdf(Some("d mmmm yyyy"), Some("ro")).as_deref(), Ok("14 noiembrie 2023")); + let e = s.today_text_for_pdf(Some("dddd d mmmm yyyy"), Some("ro")).unwrap_err(); + assert!(e.contains("can't be written into the PDF yet"), "{e}"); + } + #[test] fn vietnamese_month_and_weekday_names() { let mut s = Session::new().with_clock(|| 1_700_000_000); diff --git a/crates/ui-egui/src/i18n/mod.rs b/crates/ui-egui/src/i18n/mod.rs index 5bb2889c9..4e3e439f6 100644 --- a/crates/ui-egui/src/i18n/mod.rs +++ b/crates/ui-egui/src/i18n/mod.rs @@ -58,6 +58,18 @@ fn plural_none(_: u64) -> usize { 0 } +/// Romanian (CLDR `ro`): 1 is `one`; 0 and numbers whose last two digits are 1–19 (2, 19, 101, +/// 119) are `few`; everything else (20, 100, 120) is `other`, the form with "de" ("20 de pagini"). +fn plural_ro(n: u64) -> usize { + if n == 1 { + 0 + } else if n == 0 || (1..=19).contains(&(n % 100)) { + 1 + } else { + 2 + } +} + /// Lithuanian: one (ending in 1 except 11), few (ending in 2–9 except 12–19), other otherwise. fn plural_lithuanian(n: u64) -> usize { match (n % 10, n % 100) { @@ -147,7 +159,7 @@ fn plural_sl(n: u64) -> usize { } /// The registry. English first: it is the fallback and the source language. -pub static LANGUAGES: [LangInfo; 23] = [ +pub static LANGUAGES: [LangInfo; 24] = [ LangInfo { code: "en", name: "English", source: "", plural: plural_one_other, rtl: false, catalog: OnceLock::new() }, LangInfo { code: "ja", name: "日本語", source: include_str!("ja.tsv"), plural: plural_none, rtl: false, catalog: OnceLock::new() }, // Simplified Chinese; `zh`, `zh-CN`, `zh-SG` and `zh-Hans-*` locales resolve here (see `candidates`). @@ -210,6 +222,8 @@ pub static LANGUAGES: [LangInfo; 23] = [ // Vietnamese; every `vi-*` locale (`vi-VN`, `vi_VN.UTF-8`) resolves here. CLDR `vi` counts have // one form ("other"), so `@plural` entries list a single form. LangInfo { code: "vi", name: "Tiếng Việt", source: include_str!("vi.tsv"), plural: plural_none, rtl: false, catalog: OnceLock::new() }, + // Romanian; every `ro-*` locale (`ro-RO`, `ro_RO.UTF-8`, `ro-MD`) resolves here. Three plural forms (one, few, other). + LangInfo { code: "ro", name: "Română", source: include_str!("ro.tsv"), plural: plural_ro, rtl: false, catalog: OnceLock::new() }, ]; impl LangInfo { @@ -2450,6 +2464,46 @@ mod tests { } } + #[test] + fn romanian_is_registered_with_three_plural_forms() { + let ro = Lang::from_code("ro").expect("ro registered"); + for tag in ["ro", "ro-RO", "ro_RO.UTF-8", "RO-ro", "ro-MD"] { + assert_eq!(lang_from_tag(tag), Some(ro), "{tag}"); + } + assert_eq!(normalize_pref("Ro"), Some("ro")); + let info = LANGUAGES.iter().find(|language| language.code == "ro").expect("ro row"); + assert_eq!(info.plural_forms(), 3); + // one: 1; few: 0 and n % 100 in 1..=19 ("2 pagini", "101 pagini"); other: the "de" form ("20 de pagini"). + for (n, form) in [(1, 0), (0, 1), (2, 1), (19, 1), (101, 1), (119, 1), (20, 2), (100, 2), (120, 2), (1000, 2)] { + assert_eq!(plural_ro(n), form, "{n}"); + } + assert_eq!(trn(ro, 1, "{n} page", "{n} pages"), "1 pagină"); + assert_eq!(trn(ro, 5, "{n} page", "{n} pages"), "5 pagini"); + assert_eq!(trn(ro, 25, "{n} page", "{n} pages"), "25 de pagini"); + } + + #[test] + fn romanian_covers_bundled_catalog_keys() { + let ro = Lang::from_code("ro").expect("ro registered"); + let mut missing = std::collections::BTreeSet::new(); + for reference in LANGUAGES.iter().filter(|language| language.code != "ro") { + let (entries, errors) = catalog::parse_entries(reference.source, reference.plural_forms()); + assert!(errors.is_empty(), "{}: invalid reference catalog: {errors:?}", reference.code); + for entry in entries { + let translated = match entry.context.as_str() { + "" => ro.catalog().plain(&entry.source), + "@id" => ro.catalog().id(&entry.source), + "@plural" => entry.source.split_once('|').and_then(|(one, other)| ro.catalog().plural(one, other, 0)), + context => ro.catalog().contextual(context, &entry.source), + }; + if translated.is_none() { + missing.insert((entry.context, entry.source)); + } + } + } + assert!(missing.is_empty(), "Romanian misses bundled catalog keys: {missing:#?}"); + } + #[test] fn vietnamese_covers_bundled_catalog_keys() { let vi = Lang::from_code("vi").expect("vi registered"); diff --git a/crates/ui-egui/src/i18n/ro.tsv b/crates/ui-egui/src/i18n/ro.tsv new file mode 100644 index 000000000..7e65b3864 --- /dev/null +++ b/crates/ui-egui/src/i18n/ro.tsv @@ -0,0 +1,2684 @@ +# Romanian (ro) catalog. Format: see the header of ja.tsv +# (context source translation; @id, @plural and other contexts; escapes \n \t \\). +# Plural forms (see `plural_ro` in i18n/mod.rs): one (1) | few (0, and n % 100 in 1-19: 2, 19, 101) | other ("de" form: 20, 100, 120). +# +# Clean-room: every entry was written from the plain meaning of the English label using ordinary +# Romanian computing vocabulary. No proprietary localisation resource, string table or product UI +# (Acrobat's included) was consulted or copied; add entries the same way. +# Product and technology names (PdfCraft, PDF, Acrobat JavaScript ...) stay as they are; +# the trailing "…" of dialog commands is kept. Commands use the noun form ("Salvare", "Deschidere…"), +# messages address the user formally ("Alegeți", "dvs."). + + Menu Meniu + Edit Editare + Pages Pagini + View Vizualizare + Help Ajutor + Zoom Zoom + Actual size Dimensiune reală + Zoom to page level Zoom la nivel de pagină + Fit to width Potrivire la lățime + Display theme Temă de afișare + Side panels Panouri laterale + Preferences Preferințe + Preferences… Preferințe… + Interface language Limba interfeței + Interface size Dimensiunea interfeței + Auto ({percent}%) Automat ({percent}%) + Identity Identitate + Name on new comments Numele pe comentariile noi + Open… Deschidere… + Open Recent Deschidere fișiere recente + Clear Recent Files Golire listă fișiere recente + Remove from Recent Eliminare din recente + No recent files Niciun fișier recent + New blank PDF PDF gol nou + Create PDF from file… Creare PDF din fișier… + Create PDF from images… Creare PDF din imagini… + Create PDF from multiple files… Creare PDF din mai multe fișiere… + Create separate PDFs… Creare PDF-uri separate… + Create PDF from clipboard Creare PDF din clipboard + Combine files… Combinare fișiere… + Save Salvare + Save as… Salvare ca… + Close file Închidere fișier + Close all Închidere toate + Revert Revenire la versiunea salvată + Print… Imprimare… + Document properties… Proprietăți document… + Find… Găsire… + Advanced search… Căutare avansată… + Copy Copiere + Cut Decupare + Paste Lipire + Delete Ștergere + Select all Selectare totală + Cancel Anulare + OK OK + Apply Aplicare + Close Închidere + Back Înapoi + Next Următorul + Previous Anteriorul + Name Nume + File name Nume fișier + Location Locație + Browse… Răsfoire… + Choose… Alegere… + Search Căutare + Clear Golire + Refresh Reîmprospătare + Loading… Se încarcă… + Save changes? Salvați modificările? + Don't save Nu salva + Page Pagină + Page {n} Pagina {n} + of din + Fit one full page Potrivire pagină întreagă + Single page O singură pagină + Two-page view Vizualizare două pagini + Continuous scrolling Derulare continuă + Page display Afișare pagini + Default page display Afișare implicită a paginilor + Default zoom Zoom implicit + Full screen mode Mod ecran complet + Read mode Mod citire + Next tab Fila următoare + Previous tab Fila anterioară + Comments Comentarii + Comment Comentariu + Add comment Adăugare comentariu + Delete comment Ștergere comentariu + Reply Răspuns + Highlight Evidențiere + Underline Subliniere + Strikethrough Tăiere cu o linie + Text Text + Font Font + Size Dimensiune + Color Culoare + Opacity Opacitate + Width Lățime + Height Înălțime + Rotation Rotire + More Mai multe + Settings Setări + General General + Language Limbă + Appearance Aspect + Theme Temă + Light Luminoasă + Dark Întunecată + System Sistem + Open file Deschidere fișier + Save file Salvare fișier + Export Exportare + Import Importare + Export to image… Exportare ca imagine… + Export to text… Exportare ca text… + Export to Word… Exportare în Word… + Export to HTML… Exportare în HTML… + Export to RTF… Exportare în RTF… + Reduce file size… Reducere dimensiune fișier… + Optimize PDF… Optimizare PDF… + Protect using password… Protejare cu parolă… + Remove security Eliminare securitate + Security properties… Proprietăți de securitate… + Organize pages Organizare pagini + Rotate pages… Rotire pagini… + Delete pages Ștergere pagini + Insert blank page Inserare pagină goală + Insert pages from file… Inserare pagini din fișier… + Replace pages… Înlocuire pagini… + Extract pages… Extragere pagini… + Split document… Împărțire document… + Number pages… Numerotare pagini… + Bookmarks Semne de carte + New bookmark Semn de carte nou + Forms Formulare + Form fields Câmpuri de formular + Signatures Semnături + Sign Semnare + Fill & Sign Completare și semnare + Accessibility Accesibilitate + Help… Ajutor… + Check for updates… Căutare actualizări… + About PdfCraft Despre PdfCraft + Automatically Automat + Never Niciodată + Always Întotdeauna + Yes Da + No Nu + On Activat + Off Dezactivat + Enabled Activat + Disabled Dezactivat + Required Obligatoriu + Optional Opțional + None Niciunul + Unknown Necunoscut + Error Eroare + Warning Avertisment + Information Informații + Success Reușit + Failed Eșuat + File Fișier + Folder Folder + Choose a file… Alegeți un fișier… + Choose a folder… Alegeți un folder… + Open folder Deschidere folder + Create folder Creare folder + Remove Eliminare + Rename Redenumire + Duplicate Duplicare + Move Mutare + Copy to clipboard Copiere în clipboard + Copied to clipboard Copiat în clipboard + Undo Anulare acțiune + Redo Refacere + Keyboard shortcuts Comenzi rapide de la tastatură + Find tools and commands… Găsire instrumente și comenzi… + Take a snapshot Captură instantanee + Organize Organizare + Comment and review Comentare și revizuire + Prepare a form Pregătire formular + Protect Protejare + Print Imprimare + Create Creare + Convert Conversie + Optimize Optimizare + Measure Măsurare + Redact Anonimizare + Search results Rezultatele căutării + No results Niciun rezultat + Page {n} of {total} Pagina {n} din {total} + {n} pages selected {n} pagini selectate + · not fixable here · nu se poate corecta aici + (page {p}) (pagina {p}) + (searching… {s} of {p} pages) (se caută… {s} din {p} pagini) + ({n} at {dpi} dpi, the largest size they can be drawn at) ({n} la {dpi} dpi, dimensiunea maximă la care pot fi desenate) + ({s} not exported: {first}) ({s} neexportate: {first}) + on page {p} pe pagina {p} + · password-protected · protejat cu parolă + (none) (niciunul) + , Expires: , Expiră: + 1 difference found 1 diferență găsită + 1 file 1 fișier + 1 file done 1 fișier finalizat + 1 file needs attention 1 fișier necesită atenție + 1 instance 1 apariție + 1 issue 1 problemă + 1 mark 1 marcaj + 1 page 1 pagină + 1 page selected 1 pagină selectată + 1 page selected. 1 pagină selectată. + 180 degrees 180 de grade + 9 digit, A letter, O letter or digit, X any character 9 cifră, A literă, O literă sau cifră, X orice caracter + ; 1 page already had text ; 1 pagină avea deja text + ; failed: {list} ; eșuate: {list} + ; {n} pages already had text ; {n} pagini aveau deja text + ? of {n} ? din {n} + A clean-room, open-source PDF application written in Rust. MIT OR Apache-2.0. O aplicație PDF open-source, clean-room, scrisă în Rust. MIT OR Apache-2.0. + Accessibility Checker Verificator de accesibilitate + Accessibility Checker Options Opțiuni verificator de accesibilitate + Acrobat 3.0 and later (40-bit RC4) Acrobat 3.0 și ulterior (RC4 pe 40 de biți) + Acrobat 5.0 and later (128-bit RC4) Acrobat 5.0 și ulterior (RC4 pe 128 de biți) + Acrobat 7.0 and later (128-bit AES) Acrobat 7.0 și ulterior (AES pe 128 de biți) + Acrobat X and later (256-bit AES) Acrobat X și ulterior (AES pe 256 de biți) + Action name: Nume acțiune: + Actions Acțiuni + Active Activ + Actual Size Dimensiune reală + Actual text Text real + Add Adăugare + Add Step Adăugare pas + Add a comment Adăugați un comentariu + Add a reply Adăugați un răspuns + Add a sticky note here Adăugare notă aici + Add an Action Adăugare acțiune + Add at least two files Adăugați cel puțin două fișiere + Add files… Adăugare fișiere… + Add folder Adăugare folder + Add folder and subfolders Adăugare folder și subfoldere + Add folder and subfolders… Adăugare folder și subfoldere… + Add folder… Adăugare folder… + Add open documents Adăugare documente deschise + Add the choices people pick from. Adăugați opțiunile din care se poate alege. + Add the files to combine Adăugați fișierele de combinat + Add the steps this action runs, in order. Adăugați pașii pe care îi rulează această acțiune, în ordine. + Add to Trusted Certificates Adăugare la certificatele de încredere + Add to trusted certificates Adăugare la certificatele de încredere + Added 1 comment A fost adăugat 1 comentariu + Added more than once Adăugat de mai multe ori + Added {n} comments Au fost adăugate {n} comentarii + Adds invisible text over each word; the page image is not changed Adaugă text invizibil peste fiecare cuvânt; imaginea paginii nu se modifică + Advanced Avansat + Advanced Options {chevron} Opțiuni avansate {chevron} + Align Aliniere + Align left Aliniere la stânga + Align right Aliniere la dreapta + Alignment: Aliniere: + All Toate + All document contents Tot conținutul documentului + All document contents except metadata Tot conținutul documentului, cu excepția metadatelor + All open documents Toate documentele deschise + All pages Toate paginile + All pages in document Toate paginile din document + All pages in range Toate paginile din interval + Allow Rich Text Formatting Permite formatare de text îmbogățit + Allow user to enter custom text Permite utilizatorului să introducă text personalizat + Also recognize pages that already have text Recunoaște și paginile care au deja text + Alternate text Text alternativ + An action with this name already exists. Există deja o acțiune cu acest nume. + An open-source PDF workbench — local, private, and scriptable. Un spațiu de lucru PDF open-source: local, privat și scriptabil. + Angle Unghi + Animation effects Efecte de animație + Annotations, form fill-in, and digital signatures Adnotări, completarea formularelor și semnături digitale + Any Oricare + Any except extracting pages Orice, cu excepția extragerii paginilor + Anyone opening the document will need this password. It's applied when you save. Oricine deschide documentul va avea nevoie de această parolă. Se aplică la salvare. + Appear behind page Apare în spatele paginii + Appear on top of page Apare deasupra paginii + Appearance mode Mod de aspect + Appearance settings… Setări de aspect… + Applies to 1 page Se aplică la 1 pagină + Applies to {n} pages Se aplică la {n} pagini + Apply redactions Aplicare anonimizări + Apply scale Aplicare scară + Asks GitHub for the latest release. Nothing is downloaded or installed automatically. Întreabă GitHub care este cea mai nouă versiune. Nimic nu se descarcă sau se instalează automat. + At most Cel mult + Attachments Atașamente + Attachments Panel and Page Panoul Atașamente și pagina + Audit space usage… Analiză utilizare spațiu… + Author Autor + Auto Automat + Auto follows the system's text size. Pages always render at the display's full resolution. Automat urmează dimensiunea textului din sistem. Paginile se afișează mereu la rezoluția completă a ecranului. + Auto portrait/landscape Portret/peisaj automat + Auto-rotate pages Rotire automată pagini + Auto-size text to fit redaction region Dimensionare automată a textului pentru a umple zona anonimizată + Available Disponibil + Back side only Doar verso + Back to all tools Înapoi la toate instrumentele + Back to the document Înapoi la document + Before each selected page (select pages in Organize) Înaintea fiecărei pagini selectate (selectați paginile în Organizare) + Before the number Înaintea numărului + Bicubic downsampling to Reeșantionare bicubică la + Binding Legare + Binding: Legare: + Black and white Alb-negru + Bold Aldin + Booklet Broșură + Booklet subset: Subset broșură: + Bookmark options Opțiuni semne de carte + Bookmarks Panel and Page Panoul Semne de carte și pagina + Border Color: Culoare chenar: + Borders and Colors Chenare și culori + Both sides Față-verso + Bottom Jos + Bottom: Jos: + Box Casetă + Browser's print dialog Dialogul de imprimare al browserului + Butt Plat + Button is checked by default Butonul este bifat implicit + Buttons with the same name and value are selected in unison Butoanele cu același nume și valoare se selectează împreună + Bytes Octeți + Calibrate from two points Calibrare din două puncte + Can't be read: {e} Nu poate fi citit: {e} + Cancelling… Se anulează… + Case-sensitive Sensibil la majuscule + Category: Categorie: + Center Centru + Center window on screen Centrare fereastră pe ecran + Centre Centru + Certify Certificare + Change settings… Modificare setări… + Change the colour of line art as well as text Schimbă culoarea liniilor grafice, nu doar a textului + Change {what} Modificare {what} + Changes allowed Modificări permise + Character limit 0 means no limit. A comb of characters needs a limit. Limita de caractere 0 înseamnă fără limită. Un pieptene de caractere are nevoie de o limită. + Character spacing Spațiere caractere + Check Again Verificare din nou + Check again Verificare din nou + Check box is checked by default Caseta de selectare este bifată implicit + Check for updates Căutare actualizări + Check spelling Verificare ortografică + Check the pages Verificați paginile + Check the pages of {name}: {why} Verificați paginile din {name}: {why} + Checking Options ({on} of 32 in all categories) Opțiuni de verificare ({on} din 32 în toate categoriile) + Checking for a newer version… Se caută o versiune mai nouă… + Choose a PNG or JPEG image (up to 4 MiB). Transparency is preserved. Alegeți o imagine PNG sau JPEG (până la 4 MiB). Transparența se păstrează. + Choose a folder for the exported files Alegeți un folder pentru fișierele exportate + Choose a folder for the extracted pages Alegeți un folder pentru paginile extrase + Choose a folder for the results Alegeți un folder pentru rezultate + Choose a folder for the searchable files Alegeți un folder pentru fișierele în care se poate căuta + Choose a layout: Alegeți un aspect: + Choose a stamp, then click on the page to place it. Alegeți o ștampilă, apoi faceți clic pe pagină pentru a o plasa. + Choose an image Alegeți o imagine + Choose images Alegeți imagini + Choose image… Alegere imagine… + Choose photo… Alegere fotografie… + Choose the digital ID that you want to use for signing: Alegeți ID-ul digital pe care doriți să îl folosiți pentru semnare: + Circle Cerc + Clean Up Curățare + Clean-up Curățare + Clear All Golire totală + Clear all Golire totală + Clear selection / close find Golire selecție / închidere căutare + Click on the page to add text; each click starts a new box, and ✓ finishes. Drag items to move them, drag a corner to resize, double-click text to edit it. Faceți clic pe pagină pentru a adăuga text; fiecare clic începe o casetă nouă, iar ✓ încheie. Trageți elementele pentru a le muta, trageți de un colț pentru a le redimensiona, faceți dublu clic pe text pentru a-l edita. + Click the first point to begin. Faceți clic pe primul punct pentru a începe. + Click to sort, drag to move the column. Drag its edge to resize it. Clic pentru sortare, trageți pentru a muta coloana. Trageți de margine pentru a o redimensiona. + Click vertices. Enter or double-click finishes a perimeter or area. Click the first point to close an area. Faceți clic pe vârfuri. Enter sau dublu clic încheie un perimetru sau o arie. Faceți clic pe primul punct pentru a închide o arie. + Clockwise 90 degrees 90 de grade în sensul acelor de ceasornic + Close (Esc) Închidere (Esc) + Close Tab Închidere filă + Close panel Închidere panou + Closed arrow Săgeată închisă + Collapse Restrângere + Collapse all Restrângere toate + Collapse all bookmarks Restrângere toate semnele de carte + Collapse tag Restrângere etichetă + Collate Colaționare + Color: Culoare: + Colour Culoare + Colours are remapped while rendering; the document itself never changes. Culorile se înlocuiesc doar la afișare; documentul nu se modifică niciodată. + Comb of Pieptene de + Combine the rest Combinare restul + Combined {n} files Au fost combinate {n} fișiere + Coming in milestone Urmează în etapa + Comment and form data Date de comentarii și formulare + Commenting, filling in form fields, and signing existing signature fields Comentarii, completarea câmpurilor de formular și semnarea câmpurilor de semnătură existente + Comments & Forms Comentarii și formulare + Comments only Doar comentarii + Commit selected value immediately Valoarea selectată se aplică imediat + Common Properties Proprietăți comune + Compare Files Comparare fișiere + Compare this file with an older version: Compare files… in All tools. Comparați acest fișier cu o versiune mai veche: Comparare fișiere… în Toate instrumentele. + Compatibility Compatibilitate + Compress document structure (object streams) Comprimare structură document (fluxuri de obiecte) + Compression Comprimare + Configure New Digital ID Configurare ID digital nou + Remove "{name}" from this list? The file itself is not deleted. Eliminați „{name}” din această listă? Fișierul în sine nu se șterge. + Confirm Password Confirmare parolă + Conformance level: Nivel de conformitate: + Continue Continuare + Copies, two-sided printing and colour are chosen in the browser's print dialog. Copiile, imprimarea față-verso și culoarea se aleg în dialogul de imprimare al browserului. + Copies: Copii: + Copy selected text Copiere text selectat + Copy text Copiere text + Couldn't check for updates: {e} Nu s-au putut căuta actualizări: {e} + Couldn't open the printer's preferences: {e} Nu s-au putut deschide preferințele imprimantei: {e} + Counterclockwise 90 degrees 90 de grade în sens invers acelor de ceasornic + Country/Region Țară/regiune + Create Custom Stamp Creare ștampilă personalizată + Create Link Creare link + Create PDF Comment Summary Creare rezumat comentarii PDF + Create PDF comment summary… Creare rezumat comentarii PDF… + Create PDF from images Creare PDF din imagini + Create a new Digital ID (self-signed, saved to a password-protected file) Creare ID digital nou (autosemnat, salvat într-un fișier protejat cu parolă) + Create accessibility report Creare raport de accesibilitate + Create custom stamp… Creare ștampilă personalizată… + Create {what} Creare {what} + Created a PDF from {n} files A fost creat un PDF din {n} fișiere + Created a PDF from {n} files; left out: {names} A fost creat un PDF din {n} fișiere; omise: {names} + Creates 1 file from {n} pages. Creează 1 fișier din {n} pagini. + Creates {f} files from {n} pages. Creează {f} fișiere din {n} pagini. + Crop (% trimmed from each side) Decupare (% tăiat din fiecare parte) + Currency symbol: Simbol monedă: + Current page Pagina curentă + Current page ({n}) Pagina curentă ({n}) + Current page — type a page number or label (such as iv) and press Enter Pagina curentă: introduceți un număr sau o etichetă de pagină (de ex. iv) și apăsați Enter + Custom Personalizat + Custom scale: Scară personalizată: + Custom text: Text personalizat: + Custom: Personalizat: + Cut and stack Taie și stivuiește + Cut marks Semne de tăiere + DPI sets the printed page size without resampling the image. DPI stabilește dimensiunea paginii imprimate fără a reeșantiona imaginea. + Dark theme Temă întunecată + Date format Format dată + Decimal places: Zecimale: + Decimals Zecimale + Declared conformance: {shown} Conformitate declarată: {shown} + Decorative figure Figură decorativă + Default Implicit + Default Value: Valoare implicită: + Default workspace mode Mod implicit al spațiului de lucru + Default: Implicit: + Delete page {label} Ștergere pagina {label} + Delete pages (Delete) Ștergere pagini (Delete) + Delete pages after extracting Ștergere pagini după extragere + Delete selected pages (Organize) Ștergere pagini selectate (Organizare) + Delete stamp Ștergere ștampilă + Delete {o} Ștergere {o} + Describe the figure Descrieți figura + Description Descriere + Description: Descriere: + Details Detalii + Diamond Romb + Digital ID ID digital + Digital ID password Parola ID-ului digital + Direction: Direcție: + Discard Renunțare + Discard Objects Eliminare obiecte + Discard User Data Eliminare date utilizator + Discard alternate images Eliminare imagini alternative + Discard document tags Eliminare etichete document + Discard embedded page thumbnails Eliminare miniaturi de pagină încorporate + Discard embedded print settings Eliminare setări de imprimare încorporate + Discard this text (Esc) Renunțare la acest text (Esc) + Dismiss Închidere + Distinguished name Nume distinctiv + Distribute Distribuire + Document Document + Document Properties Proprietăți document + Document Title Titlul documentului + Document and markups Document și marcaje + Document and stamps Document și ștampile + Document language Limba documentului + Document properties ({key}) Proprietăți document ({key}) + Documents and view Documente și vizualizare + Done Gata + Done adding text Terminare adăugare text + Download Descărcare + Downsample to Reeșantionare la + Drag the selection to move it. Esc clears the selection. Trageți selecția pentru a o muta. Esc golește selecția. + Drag to reorder Trageți pentru a reordona + Draw Desenare + Draw your {what} below. Desenați {what} mai jos. + Drawing scale changes. Use Actual size for full-scale plans. Scara desenului se schimbă. Folosiți Dimensiune reală pentru planuri la scară completă. + Drop PDFs, images, text files or folders here, or choose them. Plasați aici PDF-uri, imagini, fișiere text sau foldere, sau alegeți-le. + Duplicate "{name}" onto: Duplicare „{name}” pe: + Duplicate Field Duplicare câmp + Duplicate… Duplicare… + Dynamic Dinamic + Dynamic XFA form laid out from its template: {pages}, {fields}. Formular XFA dinamic, așezat după șablonul său: {pages}, {fields}. + Each file holds as many of the {n} pages as fit. Fiecare fișier conține câte dintre cele {n} pagini încap. + Each image is measured where pages draw it; an image is replaced only if the result is smaller. Fiecare imagine e măsurată acolo unde o desenează paginile; o imagine se înlocuiește doar dacă rezultatul e mai mic. + Each image once, named after the document and page. JPEG images are saved unchanged; others as PNG. Fiecare imagine o singură dată, denumită după document și pagină. Imaginile JPEG se salvează neschimbate; celelalte ca PNG. + Earlier in tab order Mai devreme în ordinea de tabulare + Edit Action Editare acțiune + Edit image Editare imagine + Edit text… Editare text… + Edit… Editare… + Email Address Adresă de e-mail + Enable Acrobat JavaScript Activare Acrobat JavaScript + Enable copying of text, images, and other content Permite copierea textului, imaginilor și a altui conținut + Enable text access for screen reader devices for the visually impaired Permite accesul la text pentru cititoarele de ecran folosite de persoanele cu deficiențe de vedere + Encrypt Criptare + Endpoints Capete + Enhance page Îmbunătățire pagină + Enter the password that opens it Introduceți parola care îl deschide + Enter the permissions password to allow combining Introduceți parola de permisiuni pentru a permite combinarea + Entire page Pagina întreagă + Even Pages Only Doar paginile pare + Even and Odd Pages Pagini pare și impare + Even pages only Doar paginile pare + Every PDF, image and text file in the folder Toate fișierele PDF, imagine și text din folder + Every PDF, image and text file in the folder and the folders inside it Toate fișierele PDF, imagine și text din folder și din folderele din interiorul lui + Example: {sample} Exemplu: {sample} + Exclude images smaller than Exclude imaginile mai mici de + Expand Extindere + Expand all Extindere toate + Expand all bookmarks Extindere toate semnele de carte + Expand tag Extindere etichetă + Expand top-level bookmarks Extindere semne de carte de nivel superior + Explain Explicație + Export All Images Exportare toate imaginile + Export Value: {on} Valoare de export: {on} + Export all to data file… Exportare totală în fișier de date… + Export certificate… Exportare certificat… + Export comments Exportare comentarii + Export form data Exportare date formular + Export stopped: {e} Exportarea s-a oprit: {e} + Export to Image Exportare ca imagine + Export to Text Exportare ca text + Exported 1 image A fost exportată 1 imagine + Exported the text of 1 page A fost exportat textul unei pagini + Exported the text of {n} pages A fost exportat textul a {n} pagini + Exported {n} images Au fost exportate {n} imagini + Exporting… {d} of {t} Se exportă… {d} din {t} + Export… Exportare… + Extract pages as separate files Extragere pagini ca fișiere separate + Extract pages to a new document Extragere pagini într-un document nou + Extracted 1 page A fost extrasă 1 pagină + Extracted {n} pages Au fost extrase {n} pagini + Field is used for file selection Câmpul este folosit pentru selectarea fișierelor + Field names (comma-separated) Nume câmpuri (separate prin virgulă) + Field names with + - * / and parentheses; put \\ before spaces in names. Nume de câmpuri cu + - * / și paranteze; puneți \\ înaintea spațiilor din nume. + Field value is in range: Valoarea câmpului este în intervalul: + Field value is not validated Valoarea câmpului nu este validată + Field: {field} on page {p} Câmp: {field} pe pagina {p} + Fields to reset (comma-separated; empty: all) Câmpuri de resetat (separate prin virgulă; gol: toate) + Figure {i} of {n}{page} Figura {i} din {n}{page} + File (.p12, .pfx) Fișier (.p12, .pfx) + File Name Nume fișier + File size Dimensiune fișier + Files are combined from top to bottom. Leave Pages empty to take every page. Fișierele se combină de sus în jos. Lăsați Pagini gol pentru a lua toate paginile. + Files are combined in the order shown. Drag them to change it. Fișierele se combină în ordinea afișată. Trageți-le pentru a o schimba. + Files for {name} Fișiere pentru {name} + Files you open in PdfCraft appear here. Drop a PDF anywhere to open it. Fișierele pe care le deschideți în PdfCraft apar aici. Plasați un PDF oriunde pentru a-l deschide. + Fill & Sign dates Date Completare și semnare + Fill & Sign signature Semnătură Completare și semnare + Fill Color: Culoare umplere: + Fill colour Culoare umplere + Fill colour: none Culoare umplere: niciuna + Filling in form fields and signing existing signature fields Completarea câmpurilor de formular și semnarea câmpurilor de semnătură existente + Filter comments Filtrare comentarii + Find a tag Găsire etichetă + Find options Opțiuni de căutare + Find text Găsire text + Find tools and commands Găsire instrumente și comenzi + Finding document fonts… Se caută fonturile documentului… + Finish or discard the text being edited before selecting several objects. Terminați sau renunțați la textul în curs de editare înainte de a selecta mai multe obiecte. + First / last page Prima / ultima pagină + Fit Potrivire + Fit Height Potrivire înălțime + Fit Page Potrivire pagină + Fit Visible Potrivire zonă vizibilă + Fit Width Potrivire lățime + Fit to height Potrivire la înălțime + Fit to page Potrivire la pagină + Fix Corectare + Fixed what could be fixed; 1 problem remains S-a corectat ce se putea; rămâne 1 problemă + Fixed what could be fixed; {n} problems remain S-a corectat ce se putea; rămân {n} probleme + Flatten Fill & Sign when saving Aplatizare Completare și semnare la salvare + Flip Horizontal Răsturnare orizontală + Flip Vertical Răsturnare verticală + Flip horizontal Răsturnare orizontală + Flip on long edge Întoarcere pe latura lungă + Flip on short edge Întoarcere pe latura scurtă + Flip vertical Răsturnare verticală + Folders Foldere + Font Size: Dimensiune font: + Font colour: Culoare font: + Font size 0 uses automatic sizing. Dimensiunea de font 0 folosește dimensionarea automată. + Font size: Dimensiune font: + Font: Font: + Font: Helvetica Font: Helvetica + Fonts Fonturi + For page sizes and margins. Pentru dimensiunile paginilor și margini. + Form data and PDF forms Date de formular și formulare PDF + Form fields are flattened: their values stay visible. Saving rewrites the whole file. Câmpurile de formular sunt aplatizate: valorile lor rămân vizibile. Salvarea rescrie tot fișierul. + Form fields only Doar câmpurile de formular + Form fill-in and digital signatures Completarea formularelor și semnături digitale + Format Format + Format text Formatare text + Format: Format: + From De la + From a PDF page or an image Dintr-o pagină PDF sau o imagine + From colour Din culoarea + From {file} Din {file} + From: De la: + Front side only Doar față + Get help, share feedback and follow development on Discord. Primiți ajutor, trimiteți păreri și urmăriți dezvoltarea pe Discord. + Go to a page view Salt la o vizualizare de pagină + Go to page {p} Salt la pagina {p} + Go to the page Salt la pagină + Go to this result Salt la acest rezultat + Graphic Grafic + Greyscale Tonuri de gri + Grid view Vizualizare grilă + Hand (H) Mână (H) + Has JavaScript actions (run in M6) Are acțiuni JavaScript (rulate în M6) + Height: Înălțime: + Hide field highlights Ascundere evidențiere câmpuri + Hide layer Ascundere strat + Hide menu bar Ascundere bară de meniu + Hide password Ascundere parolă + Hide toolbars Ascundere bare de instrumente + Hide window controls Ascundere controale fereastră + High Resolution Rezoluție înaltă + High resolution Rezoluție înaltă + Highlight Style: Stil evidențiere: + Highlight fields Evidențiere câmpuri + Home Acasă + Horizontal Orizontal + Horizontal reversed Orizontal inversat + Horizontal scale Scară orizontală + Icon Pictogramă + Images and text Imagini și text + Images and text (converted to PDF) Imagini și text (convertite în PDF) + Import list… Importare listă… + Includes unsaved changes Include modificările nesalvate + Indent Indentare + Initial View Vizualizare inițială + Ink sensitivity Sensibilitate cerneală + Insert Date Inserare dată + Insert Page Number Inserare număr de pagină + Insert a blank page after the selection Inserare pagină goală după selecție + Insert a file at the end Inserare fișier la sfârșit + Insert a file before page {label} Inserare fișier înaintea paginii {label} + Insert pages from a file… Inserare pagini dintr-un fișier… + Inserting, deleting, and rotating pages Inserarea, ștergerea și rotirea paginilor + Installed fonts… Fonturi instalate… + Intersections Intersecții + Invisible Rectangle Dreptunghi invizibil + Issued by: Emis de: + Italic Cursiv + Item List Listă elemente + Item: Element: + Items marked Ready work today. Elementele marcate Gata funcționează deja. + Its security settings don't allow copying pages Setările sale de securitate nu permit copierea paginilor + JavaScript Console Consolă JavaScript + JavaScript is turned off (Preferences ▸ JavaScript). JavaScript este dezactivat (Preferințe > JavaScript). + JavaScript, e.g. getField("total").value JavaScript, de ex. getField("total").value + Join our Discord Intrați pe Discord-ul nostru + Join the ArtCraft community Alăturați-vă comunității ArtCraft + Justify Aliniere stânga-dreapta + Keep source fonts Păstrare fonturi sursă + Keep tool selected Instrumentul rămâne selectat + Keep tool selected: on Instrumentul rămâne selectat: activat + Key Algorithm Algoritm cheie + Keychain · Keychain · + Label Etichetă + Labels Etichete + Labels: {preview}. Later pages keep their labels. Etichete: {preview}. Paginile următoare își păstrează etichetele. + Landscape Peisaj + Landscape Pages Pagini peisaj + Landscape and Portrait Pages Pagini peisaj și portret + Larger pages Pagini mai mari + Later Mai târziu + Later in tab order Mai târziu în ordinea de tabulare + Layers Straturi + Layers Panel and Page Panoul Straturi și pagina + Layout and Magnification Aspect și mărire + Leave out files that can't be read? Omiteți fișierele care nu pot fi citite? + Left Stânga + Left Edge Marginea stângă + Left out: {names} Omise: {names} + Left: Stânga: + Light theme Temă luminoasă + Limit of Limită de + Line Style: Stil linie: + Line Thickness: Grosime linie: + Line ending Capăt de linie + Line spacing Spațiere între rânduri + Line thickness Grosime linie + Link Action Acțiune link + Link Appearance Aspect link + Link Properties Proprietăți link + Link Type: Tip link: + List view Vizualizare listă + Load font… Încărcare font… + Locked Blocat + Looking for PDFs… Se caută PDF-uri… + Looking for printers… Se caută imprimante… + Low Resolution (150 dpi) Rezoluție mică (150 dpi) + Low resolution Rezoluție mică + Magnification Mărire + Make Current Properties Default Proprietățile curente devin implicite + Margins Margini + Mark Page Range Marcare interval de pagini + Mark as comments Marcare ca și comentarii + Mark with checkmark Marcare cu bifă + Marked Marcat + Mask: Mască: + Match page at 100% Potrivire pagină la 100% + Medium Mediu + Midpoints Mijloace + Mixed Mixt + Modified Modificat + More options Mai multe opțiuni + More options: Mai multe opțiuni: + More ways to add files Alte moduri de a adăuga fișiere + Mouse wheel scroll speed Viteza de derulare cu rotița mouse-ului + Move down Mutare în jos + Move earlier Mutare mai devreme + Move later Mutare mai târziu + Move up Mutare în sus + Multi-line Mai multe rânduri + Multiple Multiplu + Multiple selection Selecție multiplă + Multiple words or phrases Mai multe cuvinte sau expresii + Name: Nume: + Navigation tab Filă de navigare + Needs manual check Necesită verificare manuală + Negative number style: Stil numere negative: + New Action Acțiune nouă + New Action… Acțiune nouă… + New bookmark ({key}) Semn de carte nou ({key}) + New file: Fișier nou: + Next ({key}) Următorul ({key}) + Next / previous match Potrivirea următoare / anterioară + Next figure Figura următoare + Next month Luna următoare + Next page Pagina următoare + Next sheet Foaia următoare + Next view Vizualizarea următoare + No PDFs in this folder yet Încă nu există PDF-uri în acest folder + No actions Nicio acțiune + No changes allowed Nicio modificare permisă + No changes to save Nicio modificare de salvat + No check has run yet. Încă nu s-a rulat nicio verificare. + No color Fără culoare + No colour Fără culoare + No comments match. Niciun comentariu nu se potrivește. + No comments yet. Încă nu există comentarii. + No differences in the text. Nicio diferență în text. + No digital IDs yet. Încă nu există ID-uri digitale. + No documents are open Niciun document deschis + No file chosen Niciun fișier ales + No fill Fără umplere + No fonts are referenced by the pages. Paginile nu folosesc niciun font. + No issues found Nu s-a găsit nicio problemă + No limit Fără limită + No matches Nicio potrivire + No matches. Nicio potrivire. + No matching tools Niciun instrument potrivit + No openly licensed document fonts found. Load a font file. Nu s-a găsit niciun font de document cu licență deschisă. Încărcați un fișier de font. + No pages selected Nicio pagină selectată + No photo chosen Nicio fotografie aleasă + No preview Fără previzualizare + No problems found: the document conforms to {level}. Nu s-a găsit nicio problemă: documentul este conform cu {level}. + No security Fără securitate + No sheets Nicio foaie + No signature was found in the frame. Move the frame over the signature or raise the ink sensitivity. Nu s-a găsit nicio semnătură în cadru. Mutați cadrul peste semnătură sau măriți sensibilitatea cernelii. + No status has been set. Nu s-a setat nicio stare. + None (prefix only) Niciunul (doar prefix) + None found Nu s-a găsit nimic + None — everything is allowed Niciuna: totul este permis + Not allowed Nepermis + Not present Absent + Nothing to redo Nimic de refăcut + Nothing to undo Nimic de anulat + Number Număr + Number of pages Număr de pagini + Number pages Numerotare pagini + Odd Pages Only Doar paginile impare + Odd pages only Doar paginile impare + Offset from centre Decalaj față de centru + Old file: Fișier vechi: + One word or phrase per line Un cuvânt sau o expresie pe rând + One {f} file per page, named after the document. Un fișier {f} pe pagină, denumit după document. + Only change the colour of black text or line art Schimbă doar culoarea textului sau a liniilor negre + Only checked properties will change. Mixed means the selected fields have different values. Se modifică doar proprietățile bifate. Mixt înseamnă că câmpurile selectate au valori diferite. + Only the page content changes: links, comments, form fields and bookmarks on the original pages stay. Se modifică doar conținutul paginii: linkurile, comentariile, câmpurile de formular și semnele de carte de pe paginile originale rămân. + Open Deschidere + Open a PDF ({key}) Deschideți un PDF ({key}) + Open a PDF to measure it. Deschideți un PDF pentru a-l măsura. + Open a document first Deschideți întâi un document + Open a web page Deschidere pagină web + Open arrow Săgeată deschisă + Open email app Deschidere aplicație de e-mail + Open in Full Screen mode Deschidere în modul Ecran complet + Open in a new tab Deschidere într-o filă nouă + Open link Deschidere link + Open the file as it was saved then Deschide fișierul așa cum era salvat atunci + Open the older version first Deschideți întâi versiunea mai veche + Open this web page? Deschideți această pagină web? + Open to page Deschidere la pagina + Opened, but its security settings don't allow combining. Enter the permissions password. S-a deschis, dar setările sale de securitate nu permit combinarea. Introduceți parola de permisiuni. + Opens the printer driver's preferences. They are saved for every print from this computer; the copies, two-sided, grayscale and paper chosen here still apply. Deschide preferințele driverului de imprimantă. Se salvează pentru toate imprimările de pe acest calculator; numărul de copii, față-verso, tonurile de gri și hârtia alese aici se aplică în continuare. + Optimizing… cleaning up Se optimizează… curățare + Optimizing… image {d} of {t} Se optimizează… imaginea {d} din {t} + Optimizing… merging identical objects Se optimizează… unificare obiecte identice + Optimizing… removing user data Se optimizează… eliminare date utilizator + Optimizing… writing the copy Se optimizează… scriere copie + Optional: needs an AI provider you configure Opțional: necesită un furnizor AI configurat de dvs. + Options… Opțiuni… + Organization Name Nume organizație + Organizational Unit Departament + Orientation: Orientare: + Original Original + Original: replace pages Original: înlocuire pagini + Other colour… Altă culoare… + Outdent Reducere indentare + Output Ieșire + Output appears here. Rezultatul apare aici. + Output intent: {list} Intenție de ieșire: {list} + Overlap: Suprapunere: + Owner password (no restrictions apply) Parola proprietarului (nu se aplică restricții) + PDF Optimizer Optimizator PDF + PDF or image PDF sau imagine + PDF page: {size} Pagină PDF: {size} + PDF scale: {scale}% Scară PDF: {scale}% + PDF, images and text PDF, imagini și text + Page Only Doar pagina + Page Range Options Opțiuni interval de pagini + Page Sizing & Handling Dimensionare și gestionare pagini + Page background Fundalul paginii + Page display: {layout} Afișare pagini: {layout} + Page layout Aspect pagină + Page navigation Navigare pagini + Page number Număr pagină + Page order: Ordinea paginilor: + Page size Dimensiune pagină + Page {label} Pagina {label} + Page {p} of {n} Pagina {p} din {n} + Pages Panel and Page Panoul Pagini și pagina + Pages from Pagini din + Pages of {name} to combine, e.g. 1-3, 6 Paginile din {name} de combinat, de ex. 1-3, 6 + Pages per file Pagini pe fișier + Pages per sheet: Pagini pe foaie: + Pages to Print Pagini de imprimat + Pages: Pagini: + Pages: {k} of {n} Pagini: {k} din {n} + Paper: Hârtie: + Part of Parte din + Password Parolă + Password required Este necesară parola + Password security Securitate prin parolă + Password-protected Protejat cu parolă + Paste after Lipire după + Paths Trasee + Pattern Model + Patterns Modele + Patterns (graphics objects) Modele (obiecte grafice) + PdfCraft didn't shut down normally. These documents had changes that were autosaved: PdfCraft nu s-a închis normal. Aceste documente aveau modificări salvate automat: + PdfCraft works offline. No telemetry, no account, and no cloud processing unless you add a provider. PdfCraft funcționează offline. Fără telemetrie, fără cont și fără procesare în cloud, cu excepția cazului în care adăugați un furnizor. + PdfCraft {c} is up to date. PdfCraft {c} este la zi. + PdfCraft {v} is available. Este disponibil PdfCraft {v}. + Percentage Procent + Permissions password Parolă de permisiuni + Permitted actions after certifying Acțiuni permise după certificare + Photo Fotografie + Pick a tool in the quick bar, or type above. Alegeți un instrument din bara rapidă sau scrieți mai sus. + Pictures on those pages are recognized too; words already in the page's text are not added again Sunt recunoscute și imaginile de pe acele pagini; cuvintele aflate deja în textul paginii nu se adaugă din nou + Pin a folder to Home Fixare folder în Acasă + Pin a folder to list its newest PDFs here, such as where your scanner or a synced cloud drive saves them. Fixați un folder pentru a-i vedea aici cele mai noi PDF-uri, de exemplu unde salvează scanerul sau un drive cloud sincronizat. + Pin a folder… Fixare folder… + Plain text in reading order; pages are separated by form feeds. Text simplu în ordinea de citire; paginile sunt separate prin salturi de pagină. + Planned Planificat + Planned for milestone Planificat pentru etapa + Points from the page's bottom-left corner. Puncte de la colțul din stânga jos al paginii. + Portrait Portret + Portrait Pages Pagini portret + Post Publicare + Poster Poster + Prefix Prefix + Preview Previzualizare + Preview unavailable: {e} Previzualizare indisponibilă: {e} + Preview: page {p} of {n} Previzualizare: pagina {p} din {n} + Previous ({key}) Anteriorul ({key}) + Previous / next page Pagina anterioară / următoare + Previous figure Figura anterioară + Previous month Luna anterioară + Previous page Pagina anterioară + Previous sheet Foaia anterioară + Previous view Vizualizarea anterioară + Print ({key}) Imprimare ({key}) + Print in grayscale Imprimare în tonuri de gri + Print page border Imprimare chenar pagină + Print, NextPage, PrevPage, FirstPage or LastPage Print, NextPage, PrevPage, FirstPage sau LastPage + Printer paper and scaling may differ. Check driver settings. Hârtia și scalarea imprimantei pot fi diferite. Verificați setările driverului. + Printer properties Proprietăți imprimantă + Printer: Imprimantă: + Printing allowed Imprimare permisă + Privacy Confidențialitate + Properties… Proprietăți… + Protect Using Password Protejare cu parolă + Protected: the combined file won't keep its security settings Protejat: fișierul combinat nu își va păstra setările de securitate + Quality Calitate + Read Only Doar citire + Reading colours Culori de citire + Ready Gata + Reason Motiv + Recent Recente + Recent colours Culori recente + Recognize Text Recunoaștere text + Recognized 1 word A fost recunoscut 1 cuvânt + Recognized {n} words Au fost recunoscute {n} cuvinte + Recognized {w} words in 1 file Au fost recunoscute {w} cuvinte într-un fișier + Recognized {w} words in {n} files Au fost recunoscute {w} cuvinte în {n} fișiere + Recognizing text… file {d} of {t} Se recunoaște textul… fișierul {d} din {t} + Recognizing text… page {d} of {t} Se recunoaște textul… pagina {d} din {t} + Recommended tools Instrumente recomandate + Recover Recuperare + Recover unsaved documents? Recuperați documentele nesalvate? + Redact all Anonimizare toate + Redacted area fill colour: Culoare de umplere a zonei anonimizate: + Redaction Tool Properties Proprietăți instrument de anonimizare + Redaction code: Cod de anonimizare: + Reload Reîncărcare + Reload documents when their files change on disk Reîncarcă documentele când fișierele lor se modifică pe disc + Remove checkmark Eliminare bifă + Remove invalid links and bookmarks Eliminare linkuri și semne de carte nevalide + Remove page Eliminare pagină + Remove unreferenced named destinations Eliminare destinații denumite nefolosite + Remove unused objects and merge identical ones Eliminare obiecte nefolosite și unificare obiecte identice + Remove {name} Eliminare {name} + Remove {name} from Recent Eliminare {name} din recente + Remove {n} files Eliminare {n} fișiere + Remove {n} pages Eliminare {n} pagini + Reopen Closed Tab Redeschidere filă închisă + Reopen the files that were open when PdfCraft last closed Redeschide fișierele care erau deschise la ultima închidere a PdfCraft + Repair log Jurnal de reparare + Repeat overlay text Repetare text suprapus + Replace Image… Înlocuire imagine… + Replace Pages Înlocuire pagini + Replace document colours Înlocuire culori document + Replace image Înlocuire imagine + Replacement text Text de înlocuire + Replacement: pages of {name} Înlocuire: pagini din {name} + Replaces the existing one on those pages. Înlocuiește-l pe cel existent pe acele pagini. + Report Raport + Report… Raport… + Requires user to enter a password for: Utilizatorul trebuie să introducă o parolă pentru: + Reset columns Resetare coloane + Reset page size Resetare dimensiune pagină + Reset to printer defaults Resetare la setările implicite ale imprimantei + Resize window to initial page Redimensionare fereastră la pagina inițială + Resolution Rezoluție + Retain existing Păstrare existente + Reveal in File Explorer Afișare în File Explorer + Reveal in Finder Afișare în Finder + Reverse closed arrow Săgeată închisă inversată + Reverse open arrow Săgeată deschisă inversată + Reverse pages Inversare ordine pagini + Revert changes Anulare modificări + Revert to the previously saved version of “{name}”? Changes since then can't be undone afterwards. Reveniți la versiunea salvată anterior a „{name}”? Modificările făcute de atunci nu mai pot fi recuperate. + Review History Istoric revizuire + Revisions Revizii + Right Dreapta + Right Edge Marginea dreaptă + Rotate Clockwise Rotire în sensul acelor de ceasornic + Rotate Counterclockwise Rotire în sens invers acelor de ceasornic + Rotate Pages Rotire pagini + Rotate clockwise Rotire în sensul acelor de ceasornic + Rotate counterclockwise Rotire în sens invers acelor de ceasornic + Rotate view Rotire vizualizare + Rotate view clockwise Rotire vizualizare în sensul acelor de ceasornic + Rotate view clockwise ({key}) Rotire vizualizare în sensul acelor de ceasornic ({key}) + Rotate view counterclockwise Rotire vizualizare în sens invers acelor de ceasornic + Rotate: Rotire: + Rotation: Rotire: + Running action… file {d} of {t} Se rulează acțiunea… fișierul {d} din {t} + Same as interface ({language}) La fel ca interfața ({language}) + Sanitizing removes hidden information from the document: metadata, file attachments, comments, form fields (flattened), hidden text and layers, bookmarks, links, actions and scripts, and private application data. Igienizarea elimină informațiile ascunse din document: metadate, fișiere atașate, comentarii, câmpuri de formular (aplatizate), text și straturi ascunse, semne de carte, linkuri, acțiuni și scripturi, precum și date private ale aplicațiilor. + Save & Close Salvare și închidere + Save ({key}) Salvare ({key}) + Save Image As… Salvare imagine ca… + Copy Image Copiere imagine + The image has been copied ({w} × {h} pixels) Imaginea a fost copiată ({w} × {h} pixeli) + Couldn't copy the image: {e} Nu s-a putut copia imaginea: {e} + Copy Image in Original Format Copiere imagine în formatul original + The image has been copied as a {ext} file Imaginea a fost copiată ca fișier {ext} + The page has changed; select the image again Pagina s-a schimbat; selectați din nou imaginea + Save as PDF Salvare ca PDF + Save attachment… Salvare atașament… + Save changes to “{name}” before closing? Salvați modificările din „{name}” înainte de închidere? + Save pages Salvare pagini + Save tag properties Salvare proprietăți etichetă + Save the accessibility report Salvare raport de accesibilitate + Save the document afterwards: saving rewrites the whole file so no trace of the removed content stays in it. Salvați documentul după aceea: salvarea rescrie tot fișierul, astfel încât să nu rămână nicio urmă a conținutului eliminat. + Save the document afterwards; saving rewrites the whole file so nothing removed stays in it. Salvați documentul după aceea; salvarea rescrie tot fișierul, astfel încât nimic eliminat să nu rămână în el. + Save the spreadsheet Salvare foaie de calcul + Save these pages as one PDF Salvare aceste pagini ca un singur PDF + Saved measurements Măsurători salvate + Saved measurements. Măsurători salvate. + Scale relative to target page Scară relativă la pagina țintă + Scan Scanare + Script Name: Nume script: + Script: Script: + Scripts run in a sandbox without file or network access. A script that asks to open a web page needs your permission first. With JavaScript off, Acrobat's standard format, validate and calculate functions still work. Scripturile rulează într-un mediu izolat, fără acces la fișiere sau la rețea. Un script care cere deschiderea unei pagini web are nevoie întâi de permisiunea dvs. Cu JavaScript dezactivat, funcțiile standard Acrobat de formatare, validare și calcul funcționează în continuare. + Scroll long text Derulare text lung + Scroll tabs left Derulare file la stânga + Scroll tabs right Derulare file la dreapta + Search comments Căutare în comentarii + Search tools and commands… Căutare instrumente și comenzi… + Searchable Image (Exact) Imagine în care se poate căuta (exactă) + Searching… {s} of {p} pages Se caută… {s} din {p} pagini + Searching… {s}/{p} Se caută… {s}/{p} + Security Securitate + Security settings Setări de securitate + Select (V) Selectare (V) + Select Action: Selectare acțiune: + Select All Selectare totală + Select Icon Selectare pictogramă + Select Trigger: Selectare declanșator: + Select a file first Selectați întâi un fișier + Select a file for the stamp Selectați un fișier pentru ștampilă + Select a password-protected file first Selectați întâi un fișier protejat cu parolă + Select a word Selectare cuvânt + Select all pages (Organize) Selectare toate paginile (Organizare) + Select at most 1000 objects at a time. Selectați cel mult 1000 de obiecte o dată. + Select data files to merge Selectați fișierele de date de unificat + Select format category: Selectare categorie format: + Select page {label} Selectare pagina {label} + Select pages Selectare pagini + Select the items to remove from this document. Selectați elementele de eliminat din acest document. + Selected image files: {count} Fișiere imagine selectate: {count} + Selected pages Pagini selectate + Selection Selecție + Sending to {printer}… Se trimite la {printer}… + Sensitivity Sensibilitate + Sent to {printer} Trimis la {printer} + Sent to {printer}: {msg} Trimis la {printer}: {msg} + Separator style: Stil separator: + Set Alternate Text Setare text alternativ + Set Fields to Same Size Aceeași dimensiune pentru câmpuri + Set Page Boxes Setare casete pagină + Set layer visibility Setare vizibilitate straturi + Set status Setare stare + Set to current page ({n}) Setare la pagina curentă ({n}) + Set to zero Setare la zero + Shared Field Properties Proprietăți comune ale câmpurilor + Sheet {s} of {n} Foaia {s} din {n} + Shift constrains to 45 degrees. Backspace removes a vertex. Escape cancels. Shift limitează la 45 de grade. Backspace elimină un vârf. Escape anulează. + Shift- or Ctrl/Command-click to select several fields. Shift- sau Ctrl/Command-clic pentru a selecta mai multe câmpuri. + Shift-click to select several objects. Drag empty space to select an area. Shift-clic pentru a selecta mai multe obiecte. Trageți pe un spațiu gol pentru a selecta o zonă. + Show Report Afișare raport + Show all Afișare toate + Show all comments Afișare toate comentariile + Show certificate… Afișare certificat… + Show layer Afișare strat + Show less Afișare mai puțin + Show password Afișare parolă + Show the accessibility report Afișare raport de accesibilitate + Show this dialog when the Checker starts Afișează acest dialog la pornirea verificatorului + Show {n} more Afișare încă {n} + Show: Afișare: + Shrink oversized pages Micșorare pagini supradimensionate + Sign Here Semnați aici + Sign this field… Semnare acest câmp… + Sign yourself Semnați personal + Signature Details Detalii semnătură + Signature is INVALID: Semnătura este NEVALIDĂ: + Signature is valid: Semnătura este validă: + Signature panel Panou semnături + Signature validity is UNKNOWN: Valabilitatea semnăturii este NECUNOSCUTĂ: + Signer's name Numele semnatarului + Simplified field notation: Notație simplificată pentru câmpuri: + Single Page O singură pagină + Single Page Continuous O singură pagină, continuu + Single word or phrase Un singur cuvânt sau o expresie + Skip Rule Omitere regulă + Skipped Omis + Slash Bară oblică + Smaller pages Pagini mai mici + Snap to drawing Aliniere la desen + Some bookmarks are not shown here: the panel lists a limited number, nested a limited depth. Unele semne de carte nu apar aici: panoul afișează un număr limitat, cu o adâncime de imbricare limitată. + Some page content couldn't be read; snapping uses the rest. O parte din conținutul paginii nu a putut fi citit; alinierea folosește restul. + Sort by Sortare după + Sort comments by: Sortare comentarii după: + Sort items Sortare elemente + Source Sursă + Space Audit Analiză spațiu + Special Special + Split document Împărțire document + Split into files… Împărțire în fișiere… + Square Pătrat + Standard Business Afaceri standard + Start Start + Start Checking Pornire verificare + Start page number Număr pagină de început + Status Stare + Steps Pași + Strength: {s} Putere: {s} + Style Stil + Subject Subiect + Subset Subset + Summarize Options Opțiuni rezumat + Summary Rezumat + Switch to List view to change the pages it takes. Treceți la vizualizarea Listă pentru a schimba paginile pe care le ia. + Switch to two-page view first to show the cover page Treceți întâi la vizualizarea pe două pagini pentru a afișa pagina de copertă + Tab order: move a field with its arrows. Ordinea de tabulare: mutați un câmp cu săgețile lui. + Tag type Tip etichetă + Tags Etichete + Text Color: Culoare text: + Text alignment: Aliniere text: + Text in images isn't found; recognise text (OCR) first. Textul din imagini nu este găsit; rulați întâi recunoașterea textului (OCR). + Text is compared word by word; the differences are shown on the new file. Textul se compară cuvânt cu cuvânt; diferențele sunt afișate pe fișierul nou. + Text recognition isn't installed: its model files are missing. Reinstall PdfCraft, or set PDFCRAFT_MODELS to the folder that holds them. Recunoașterea textului nu este instalată: lipsesc fișierele modelului. Reinstalați PdfCraft sau setați PDFCRAFT_MODELS la folderul care le conține. + Text to find Text de găsit + Text to insert Text de inserat + Text used as a clipping path cannot be moved with this selection. Textul folosit ca traseu de decupare nu poate fi mutat cu această selecție. + Text, marks and signatures become part of the page. Other comments stay editable. Textul, marcajele și semnăturile devin parte din pagină. Celelalte comentarii rămân editabile. + Thai and Arabic use regular fallback fonts when available. Pentru thai și arabă se folosesc fonturi de rezervă obișnuite, dacă există. + The PDF text fonts can't draw “{c}” ({code}). Choose supported text. Fonturile de text PDF nu pot desena „{c}” ({code}). Alegeți un text acceptat. + The checker found 1 problem which may prevent the document from being fully accessible. Verificatorul a găsit 1 problemă care poate împiedica accesibilitatea completă a documentului. + The checker found no problems in this document. Verificatorul nu a găsit nicio problemă în acest document. + The checker found {n} problems which may prevent the document from being fully accessible. Verificatorul a găsit {n} probleme care pot împiedica accesibilitatea completă a documentului. + The document now conforms to {level}; save it to keep the changes Documentul este acum conform cu {level}; salvați-l pentru a păstra modificările + The document opens without a password; this password is needed to change the restrictions. It's applied when you save. Documentul se deschide fără parolă; această parolă este necesară pentru a modifica restricțiile. Se aplică la salvare. + The document's security settings don't allow copying text and images Setările de securitate ale documentului nu permit copierea textului și a imaginilor + The document's security settings don't allow this change Setările de securitate ale documentului nu permit această modificare + The existing action will be preserved. Acțiunea existentă va fi păstrată. + The fonts PdfCraft writes with can't draw “{c}” ({code}), so it shows as ? in every PDF viewer. The text is saved. Fonturile cu care scrie PdfCraft nu pot desena „{c}” ({code}), așa că apare ca ? în orice vizualizator PDF. Textul se salvează. + The key is in the Windows certificate store, which may ask to allow PdfCraft to use it. Cheia se află în depozitul de certificate Windows, care poate cere permisiunea ca PdfCraft să o folosească. + The key is in the macOS Keychain, which may ask to allow PdfCraft to use it. Cheia se află în Keychain-ul macOS, care poate cere permisiunea ca PdfCraft să o folosească. + The newest {n} of {total} PDFs Cele mai noi {n} din {total} PDF-uri + The password is only used to read the file; it isn't saved. Parola este folosită doar pentru citirea fișierului; nu se salvează. + The printer driver's own settings for this print: paper tray, paper type, finishing and more. Setările proprii ale driverului de imprimantă pentru această imprimare: tava de hârtie, tipul de hârtie, finisarea și altele. + The replacement file doesn't have that many pages. Fișierul de înlocuire nu are atâtea pagini. + The same password is tried on each file. Aceeași parolă se încearcă la fiecare fișier. + The signature will be invisible. Semnătura va fi invizibilă. + The text is the same Textul este identic + The value is shown as typed. Valoarea se afișează așa cum a fost scrisă. + There are no redaction marks (mark text, areas or pages first) Nu există marcaje de anonimizare (marcați întâi text, zone sau pagini) + These files can't be read, so they won't be in the combined PDF: Aceste fișiere nu pot fi citite, așa că nu vor fi incluse în PDF-ul combinat: + These objects could not be moved. Select them again and try a smaller move. Aceste obiecte nu au putut fi mutate. Selectați-le din nou și încercați o mutare mai mică. + Thick Groasă + Thickness Grosime + Thin Subțire + This area has too many overlapping paths; intersection snapping is limited. Această zonă are prea multe trasee suprapuse; alinierea la intersecții este limitată. + This certificate is in your list of trusted certificates. Acest certificat se află în lista certificatelor de încredere. + This certificate is not trusted. Signatures made with it show an unknown identity. Acest certificat nu este de încredere. Semnăturile făcute cu el arată o identitate necunoscută. + This certificate is trusted through a certificate above it in the chain. Acest certificat este de încredere printr-un certificat aflat deasupra lui în lanț. + This comment's appearance can't be changed yet. Aspectul acestui comentariu nu poate fi schimbat încă. + This dialog shows the details of a certificate and its chain. Acest dialog arată detaliile unui certificat și ale lanțului său. + This document contains {n} interactive form fields. Acest document conține {n} câmpuri de formular interactive. + This document has no comments to flatten Acest document nu are comentarii de aplatizat + This document has no document-level scripts. Acest document nu are scripturi la nivel de document. + This document has no editable structure tags. Acest document nu are etichete de structură editabile. + This document has no form fields to flatten Acest document nu are câmpuri de formular de aplatizat + This document has no form fields you can fill in Acest document nu are câmpuri de formular pe care să le puteți completa + This document has no pages. Acest document nu are pagini. + This document has no restrictions to lift Acest document nu are restricții de eliminat + This document has no signatures. Acest document nu are semnături. + This document has no tagged figures. Acest document nu are figuri etichetate. + This document has no {kind} to change Acest document nu are {kind} de modificat + This document hasn't been checked yet. Acest document nu a fost încă verificat. + This document is secured. Some changes are restricted by its security settings. Acest document este securizat. Unele modificări sunt restricționate de setările sale de securitate. + This document isn't password-protected Acest document nu este protejat cu parolă + This drawing exceeds the snapping limit; only the first paths are used. Acest desen depășește limita de aliniere; se folosesc doar primele trasee. + This field is locked. Unlock it to change its properties. Acest câmp este blocat. Deblocați-l pentru a-i modifica proprietățile. + This file changed on disk. Reload it to see the new version; your unsaved changes will be lost. Acest fișier s-a modificat pe disc. Reîncărcați-l pentru a vedea noua versiune; modificările nesalvate se vor pierde. + This file was damaged and has been repaired. Saving keeps the repaired version. Acest fișier era deteriorat și a fost reparat. Salvarea păstrează versiunea reparată. + This folder isn't available right now. It may have moved, or its drive or cloud sync is offline. Acest folder nu este disponibil acum. Poate a fost mutat sau unitatea ori sincronizarea cloud este offline. + This form's scripts are turned off because one ran too long. Reopen the document to run them again. Scripturile acestui formular sunt dezactivate pentru că unul a rulat prea mult. Redeschideți documentul pentru a le rula din nou. + This is a dynamic XFA form, which PdfCraft can't display yet. What you see is the file's placeholder page. Acesta este un formular XFA dinamic, pe care PdfCraft nu îl poate afișa încă. Ce vedeți este pagina de rezervă a fișierului. + This measurement needs at least {n} points. Această măsurătoare are nevoie de cel puțin {n} puncte. + This page contains objects that cannot be selected together. Această pagină conține obiecte care nu pot fi selectate împreună. + This page couldn't be displayed.\n{e} Această pagină nu a putut fi afișată.\n{e} + This printer offers no settings of its own. Această imprimantă nu are setări proprii. + This printer's driver doesn't take two-sided settings from other programs, so its own setting applies. Change it in Properties… Driverul acestei imprimante nu preia setările față-verso de la alte programe, așa că se aplică setarea proprie. Schimbați-o în Proprietăți… + This web address mixes letters from different alphabets, a common way to imitate another site's name. Această adresă web amestecă litere din alfabete diferite, o metodă obișnuită de a imita numele altui site. + This web address uses letters from another alphabet, which can look like familiar ones. Această adresă web folosește litere din alt alfabet, care pot semăna cu cele cunoscute. + Tile scale: Scară placare: + Time Oră + Title Titlu + To change locked fields, also set Locked to No. Pentru a modifica câmpurile blocate, setați și Blocat la Nu. + To: Către: + Today: {date} Astăzi: {date} + Toggle fit page / fit width Comutare potrivire pagină / potrivire lățime + Tool Instrument + Tools panel side Partea panoului de instrumente + Tooltip: Sfat ecran: + Top Sus + Top-level bookmarks ({n}) Semne de carte de nivel superior ({n}) + Total Total + Trust Încredere + Try the form as people filling it in will see it Încercați formularul așa cum îl vor vedea cei care îl completează + Two-Up (Cover Page) Două pagini (cu copertă) + Two-Up (Facing) Două pagini (față în față) + Two-Up Continuous (Cover Page) Două pagini continuu (cu copertă) + Two-Up Continuous (Facing) Două pagini continuu (față în față) + Two-sided: Față-verso: + Type Tip + Type text Scriere text + Type the web address. Introduceți adresa web. + Type your {what}. Scrieți {what}. + URL to submit to URL de trimitere + Unit Unitate + Units Unități + Unknown author Autor necunoscut + Unlock Deblocare + Unlock {name} Deblocare {name} + Unlock {n} files Deblocare {n} fișiere + Unlocked: the combined file won't be password-protected Deblocat: fișierul combinat nu va fi protejat cu parolă + Unlock… Deblocare… + Unpin Anulare fixare + Unpin {folder} Anulare fixare {folder} + Unplaced Neplasat + Unsupported measurements Măsurători neacceptate + Up Sus + Update Actualizare + Use 72 DPI (one point per pixel) Folosire 72 DPI (un punct pe pixel) + Use Flate to encode streams that are not encoded Folosire Flate pentru codarea fluxurilor necodate + Use a Digital ID from a file Folosire ID digital dintr-un fișier + Use custom DPI Folosire DPI personalizat + Use each image's embedded DPI; use 72 DPI when it is absent. Folosește DPI-ul încorporat al fiecărei imagini; 72 DPI când lipsește. + Use image resolution Folosire rezoluție imagine + Use now Folosiți acum + Use overlay text Folosire text suprapus + Used when a PDF doesn't ask for a layout or zoom. Continuous scrolling never snaps between pages. Se folosește când un PDF nu cere un anumit aspect sau zoom. Derularea continuă nu se oprește niciodată între pagini. + Used when opening PDFs. An explicit launch or control mode takes precedence for the session. Se folosește la deschiderea PDF-urilor. Un mod de lansare sau de control explicit are prioritate pentru sesiune. + User Interface Options Opțiuni interfață utilizator + User password Parolă utilizator + Valid for 5 years, for digital signatures. Self-signed IDs are usually not trusted by others. Valabil 5 ani, pentru semnături digitale. ID-urile autosemnate de obicei nu sunt considerate de încredere de alții. + Validate all Validare toate + Value is not calculated Valoarea nu se calculează + Value is the Valoarea este + Value: Valoare: + Verify Verificare + Verify to see what the document needs. Verificați pentru a vedea de ce are nevoie documentul. + Version {v} Versiunea {v} + Vertical Vertical + Vertical reversed Vertical inversat + Vertical text cannot be moved with this selection. Textul vertical nu poate fi mutat cu această selecție. + View revision {n} Vizualizare revizia {n} + View signed version Vizualizare versiune semnată + Viewport Zonă de vizualizare + Viewport rectangle in page points (x, y, width, height) Dreptunghiul zonei de vizualizare în puncte de pagină (x, y, lățime, înălțime) + Visible Rectangle Dreptunghi vizibil + Visual Vizual + Warnings Avertismente + Welcome to PdfCraft Bun venit în PdfCraft + What word or phrase would you like to search for? Ce cuvânt sau expresie doriți să căutați? + Whole words only Doar cuvinte întregi + Width: Lățime: + Window Options Opțiuni fereastră + Windows store · Depozit Windows · + Write this email? Scrieți acest e-mail? + Wrong password Parolă greșită + XFA form: its fields and its XFA data are kept in step, so other viewers show what you fill in. Formular XFA: câmpurile și datele XFA sunt sincronizate, ca alte vizualizatoare să arate ce completați. + You are about to apply 1 redaction mark. Text, images and drawings under the marks, and comments and form fields that overlap them, are removed permanently. Urmează să aplicați 1 marcaj de anonimizare. Textul, imaginile și desenele de sub marcaje, precum și comentariile și câmpurile de formular care se suprapun cu ele, se elimină definitiv. + You are about to apply {n} redaction marks. Text, images and drawings under the marks, and comments and form fields that overlap them, are removed permanently. Urmează să aplicați {n} marcaje de anonimizare. Textul, imaginile și desenele de sub marcaje, precum și comentariile și câmpurile de formular care se suprapun cu ele, se elimină definitiv. + You have version {c}. All releases are listed at {page}. Aveți versiunea {c}. Toate versiunile sunt listate la {page}. + You have version {c}. Download the new version from its release page. Aveți versiunea {c}. Descărcați versiunea nouă de pe pagina ei de lansare. + Your changes will be lost if you don't save them. Modificările se vor pierde dacă nu le salvați. + ZIP ZIP + Zoom in Mărire + Zoom in ({key}) Mărire ({key}) + Zoom in / out (also pinch or {key}-scroll) Mărire / micșorare (și prin ciupire sau {key}-derulare) + Zoom out Micșorare + Zoom out ({key}) Micșorare ({key}) + already a PDF deja PDF + and {n} more și încă {n} + background fundal + characters caractere + e.g. My stamps de ex. Ștampilele mele + e.g. en-US de ex. ro-RO + for images above pentru imaginile peste + header or footer antet sau subsol + initials inițiale + is available este disponibil + is not available yet nu este disponibil încă + just now chiar acum + yesterday ieri + needs an AI provider (off by default) necesită un furnizor AI (dezactivat implicit) + no output folder was chosen nu s-a ales niciun folder de ieșire + no unused output name niciun nume de ieșire liber + none niciunul + of the following fields: din următoarele câmpuri: + AI assistant Asistent AI + Action Wizard Asistent acțiuni + Action Wizard… Asistent acțiuni… + Actions list Listă acțiuni + Add Bates numbering… Adăugare numerotare Bates… + Add a button Adăugare buton + Add a callout Adăugare casetă explicativă + Add a checkbox Adăugare casetă de selectare + Add a date field Adăugare câmp dată + Add a digital signature field Adăugare câmp de semnătură digitală + Add a drop-down list Adăugare listă derulantă + Add a list box Adăugare casetă listă + Add a radio button Adăugare buton radio + Add a stamp Adăugare ștampilă + Add a sticky note Adăugare notă + Add a text box Adăugare casetă text + Add a text field Adăugare câmp text + Add alternate text Adăugare text alternativ + Add alternate text… Adăugare text alternativ… + Add an image field Adăugare câmp imagine + Add background… Adăugare fundal… + Add comments Adăugare comentarii + Add content Adăugare conținut + Add files to combine Adăugare fișiere de combinat + Add form components Adăugare componente formular + Add header & footer… Adăugare antet și subsol… + Add image… Adăugare imagine… + Add or edit links Adăugare sau editare linkuri + Add printer marks Adăugare semne de imprimare + Add search index Adăugare index de căutare + Add text Adăugare text + Add watermark… Adăugare filigran… + Advanced optimization Optimizare avansată + Advanced options Opțiuni avansate + Apply PDF standards Aplicare standarde PDF + Apply redactions… Aplicare anonimizări… + Archive documents Arhivare documente + Area Arie + Arrow Săgeată + ArtCraft website Site-ul ArtCraft + Ask about this document Întrebări despre acest document + Attach a file Atașare fișier + Attach file Atașare fișier + Audit space usage Analiză utilizare spațiu + Automatically tag PDF Etichetare automată PDF + Background Fundal + Bates numbering Numerotare Bates + Blank page Pagină goală + Bring your own model (off by default) Folosiți propriul model (dezactivat implicit) + Button Buton + Certificates Certificate + Certify (invisible signature) Certificare (semnătură invizibilă) + Certify (visible signature) Certificare (semnătură vizibilă) + Change initials Schimbare inițiale + Change reading options Schimbare opțiuni de citire + Change reading options… Schimbare opțiuni de citire… + Change signature Schimbare semnătură + Check for accessibility Verificare accesibilitate + Check for accessibility… Verificare accesibilitate… + Checkbox Casetă de selectare + Checkmark Bifă + Clear form Golire formular + Clear redaction marks Golire marcaje de anonimizare + Clipboard Clipboard + Cloud Nor + Column select Selectare coloană + Combine Combinare + Combine files Combinare fișiere + Comment list Listă comentarii + Comments panel Panou comentarii + Compare Comparare + Compare files Comparare fișiere + Compare files… Comparare fișiere… + Compress a PDF Comprimare PDF + Console Consolă + Convert colors Conversie culori + Copy pages Copiere pagini + Correct recognized text Corectare text recunoscut + Create a PDF Creare PDF + Create from Creare din + Create links from URLs Creare linkuri din URL-uri + Crop pages Decupare pagini + Cross Cruce + Cut pages Decupare pagini + Dark gray Gri închis + Date Dată + Date field Câmp dată + Detect form fields Detectare câmpuri de formular + Digital signature Semnătură digitală + Digitally sign Semnare digitală + Distance Distanță + Document JavaScripts Scripturi JavaScript ale documentului + Document JavaScripts… Scripturi JavaScript ale documentului… + Document actions Acțiuni document + Dot Punct + Draw a cloud Desenare nor + Draw a line Desenare linie + Draw a polygon Desenare poligon + Draw a rectangle Desenare dreptunghi + Draw an arrow Desenare săgeată + Draw an oval Desenare oval + Draw connected lines Desenare linii conectate + Draw freehand Desenare liberă + Drawing Desen + Drawing scale Scara desenului + Drop-down list Listă derulantă + Duplicate pages Duplicare pagini + Edit a PDF Editare PDF + Edit text & images Editare text și imagini + Encrypt with certificate Criptare cu certificat + Enhance camera image Îmbunătățire imagine de la cameră + Enhance scanned file Îmbunătățire fișier scanat + Enter permissions password… Introducere parolă de permisiuni… + Erase drawings Ștergere desene + Export a PDF Exportare PDF + Export all comments to data file… Exportare toate comentariile în fișier de date… + Export all images Exportare toate imaginile + Export all images… Exportare toate imaginile… + Export data Exportare date + Export form data… Exportare date formular… + Export measurements Exportare măsurători + Export measurements as CSV Exportare măsurători ca CSV + Export to Exportare în + Export to PowerPoint… Exportare în PowerPoint… + Extract Extragere + Extract pages Extragere pagini + Field list Listă câmpuri + Field properties Proprietăți câmp + Field properties… Proprietăți câmp… + Fields Câmpuri + Fill Completare + Fill & Sign: add text Completare și semnare: adăugare text + Fill & Sign: change initials Completare și semnare: schimbare inițiale + Fill & Sign: change signature Completare și semnare: schimbare semnătură + Fill & Sign: checkmark Completare și semnare: bifă + Fill & Sign: cross Completare și semnare: cruce + Fill & Sign: date Completare și semnare: dată + Fill & Sign: dot Completare și semnare: punct + Fill & Sign: initials Completare și semnare: inițiale + Fill & Sign: line Completare și semnare: linie + Fill & Sign: remove saved initials Completare și semnare: eliminare inițiale salvate + Fill & Sign: remove saved signature Completare și semnare: eliminare semnătură salvată + Fill & Sign: sign Completare și semnare: semnare + Find text and redact Găsire text și anonimizare + Find text and redact… Găsire text și anonimizare… + Fit to width scrolling Derulare cu potrivire la lățime + Fit visible Potrivire zonă vizibilă + Fix hairlines Corectare linii foarte subțiri + Fix reading order Corectare ordine de citire + Flatten comments Aplatizare comentarii + Flatten form fields Aplatizare câmpuri de formular + Form fields panel Panou câmpuri de formular + Geospatial location Locație geospațială + Go to page… Salt la pagina… + HTML web page Pagină web HTML + Header and footer Antet și subsol + Hide all comments Ascundere toate comentariile + Highlight text Evidențiere text + Image Imagine + Image (PNG) Imagine (PNG) + Image field Câmp imagine + Images Imagini + Import comments… Importare comentarii… + Import data Importare date + Import form data… Importare date formular… + In multiple files În mai multe fișiere + In this file În acest fișier + Index Index + Initials Inițiale + Insert Inserare + Insert pages Inserare pagini + Insert text Inserare text + JavaScript JavaScript + JavaScript console… Consolă JavaScript… + Join the ArtCraft Discord Intrați pe Discord-ul ArtCraft + Light gray Gri deschis + Line Linie + Link Link + List box Casetă listă + Make accessible Asigurare accesibilitate + Manage embedded index Gestionare index încorporat + Markup Marcare + Marquee zoom Zoom pe zonă selectată + Measure area Măsurare arie + Measure distance Măsurare distanță + Measure objects Măsurare obiecte + Measure perimeter Măsurare perimetru + Measurement information Informații măsurare + Measurement snapping Aliniere la măsurare + Merge data files into spreadsheet… Unificare fișiere de date în foaie de calcul… + Microsoft Word (.docx) Microsoft Word (.docx) + Modify page Modificare pagină + Multiple files Mai multe fișiere + New bookmarks from structure Semne de carte noi din structură + Open accessibility report Deschidere raport de accesibilitate + Optimize scanned documents Optimizare documente scanate + Optimize scanned documents… Optimizare documente scanate… + Output preview Previzualizare ieșire + Oval Oval + PDF/A… PDF/A… + Page grid Grilă pagină + Page labels Etichete pagini + Page options Opțiuni pagină + Page transitions Tranziții pagini + Paste pages Lipire pagini + PdfCraft on GitHub PdfCraft pe GitHub + PdfCraft web page Pagina web PdfCraft + Perimeter Perimetru + Pin folder to Home… Fixare folder în Acasă… + PostScript / EPS PostScript / EPS + Preflight Preflight + Prepare for accessibility Pregătire pentru accesibilitate + Prepare for distribution Pregătire pentru distribuire + Prepare for distribution… Pregătire pentru distribuire… + Presentation (.pptx) Prezentare (.pptx) + Print production Producție tipografică + Protect a PDF Protejare PDF + Protect with password Protejare cu parolă + Radio button Buton radio + Recognize text Recunoaștere text + Recognize text in multiple files… Recunoaștere text în mai multe fișiere… + Recognize text… Recunoaștere text… + Rectangle Dreptunghi + Redact a PDF Anonimizare PDF + Redact pages Anonimizare pagini + Redact pages… Anonimizare pagini… + Redact text and images Anonimizare text și imagini + Redaction properties… Proprietăți anonimizare… + Reduce file size Reducere dimensiune fișier + Remove all links Eliminare toate linkurile + Remove background Eliminare fundal + Remove header & footer Eliminare antet și subsol + Remove hidden information Eliminare informații ascunse + Remove hidden information… Eliminare informații ascunse… + Remove watermark Eliminare filigran + Replace Înlocuire + Replace text Înlocuire text + Reset panel layout Resetare aranjare panouri + Review Revizuire + Rich Text Format (.rtf) Rich Text Format (.rtf) + Rotate Rotire + Rotate pages Rotire pagini + Rotate pages clockwise Rotire pagini în sensul acelor de ceasornic + Rotate pages counterclockwise Rotire pagini în sens invers acelor de ceasornic + Sanitize document Igienizare document + Sanitize document… Igienizare document… + Save as PDF/A Salvare ca PDF/A + Save as PDF/UA Salvare ca PDF/UA + Save as PDF/X Salvare ca PDF/X + Scan & OCR Scanare și OCR + Security properties Proprietăți de securitate + Select files to compare Selectați fișierele de comparat + Separate PDFs PDF-uri separate + Set measurement scale Setare scară de măsurare + Set page boxes Setare casete pagină + Set page boxes… Setare casete pagină… + Set properties Setare proprietăți + Show cover page in two-page view Afișare pagină de copertă în vizualizarea pe două pagini + Signature Semnătură + Signatures panel Panou semnături + Single file Un singur fișier + Snapping Aliniere + Split Împărțire + Spreadsheet (.xlsx) Foaie de calcul (.xlsx) + Squiggly underline Subliniere ondulată + Squiggly underline text Subliniere ondulată text + Stamp Ștampilă + Stamp palette Paletă ștampile + Stamps Ștampile + Standards Standarde + Sticky note Notă + Strikethrough text Tăiere text cu o linie + Summarize Rezumat + Summarize comments Rezumat comentarii + Switch light / dark theme Comutare temă luminoasă / întunecată + Tab order by columns Ordine de tabulare pe coloane + Tab order by rows Ordine de tabulare pe rânduri + Tab order: by columns Ordine de tabulare: pe coloane + Tab order: by document structure Ordine de tabulare: după structura documentului + Tab order: by rows Ordine de tabulare: pe rânduri + Tags panel Panou etichete + Text (plain) Text (simplu) + Text box Casetă text + Text field Câmp text + Timestamp Marcaj temporal + Translate Traducere + Underline text Subliniere text + Update background… Actualizare fundal… + Update header & footer… Actualizare antet și subsol… + Update watermark… Actualizare filigran… + Use JavaScript Folosire JavaScript + Use a certificate Folosire certificat + Use guided actions Folosire acțiuni ghidate + Use print production Folosire producție tipografică + Use system setting Folosire setarea sistemului + Validate all signatures Validare toate semnăturile + Watermark Filigran + Move object Mutare obiect + Move objects Mutare obiecte + All tools Toate instrumentele + Read Citire + E-Sign Semnătură electronică + Tools Instrumente + Inspector Inspector + on page {label} pe pagina {label} + A font isn't embedded Un font nu este încorporat + A {} action isn't allowed O acțiune {} nu este permisă + A {} annotation has additional actions O adnotare {} are acțiuni suplimentare + A {} annotation has no appearance stream O adnotare {} nu are flux de aspect + A {} annotation isn't set to print, or is hidden O adnotare {} nu este setată pentru imprimare sau este ascunsă + Accessibility Report Raport de accesibilitate + Add the PDFs to combine Adăugați PDF-urile de combinat + Added the first {n} PDFs in {folder} Au fost adăugate primele {n} PDF-uri din {folder} + CRL Signing Semnare CRL + Certificate Signing Semnare certificate + Change Author Schimbare autor + Change Keywords Schimbare cuvinte cheie + Change Subject Schimbare subiect + Change Title Schimbare titlu + Choose a digital ID. Alegeți un ID digital. + Create links Creare linkuri + Creator Creator + Cut and stack needs Two-sided: Off. Print single-sided sheets. Taie și stivuiește necesită Față-verso: Dezactivat. Imprimați foi pe o singură față. + Data Encipherment Cifrare date + Decipher Only Doar descifrare + Detailed Report Raport detaliat + DeviceCMYK is used, but the PDF/A output intent isn't a CMYK profile Se folosește DeviceCMYK, dar intenția de ieșire PDF/A nu este un profil CMYK + DeviceRGB is used, but the PDF/A output intent isn't an RGB profile Se folosește DeviceRGB, dar intenția de ieșire PDF/A nu este un profil RGB + Digital Signature Semnătură digitală + Document properties (⌘D) Proprietăți document (⌘D) + Drop PDFs or folders here, or choose them. Plasați aici PDF-uri sau foldere, sau alegeți-le. + Encipher Only Doar cifrare + English Engleză + Enter a URL Introduceți un URL + Enter a name. Introduceți un nume. + Enter a page number Introduceți un număr de pagină + Enter the field names Introduceți numele câmpurilor + Every PDF in the folder Toate PDF-urile din folder + Every PDF in the folder and the folders inside it Toate PDF-urile din folder și din folderele din interiorul lui + Field "{}" on page {p} has no description (tooltip) Câmpul „{}” de pe pagina {p} nu are descriere (sfat ecran) + Filename Nume fișier + Flatten Fill & Sign Aplatizare Completare și semnare + Font (unnamed) on page {p} doesn't map its characters to Unicode Un font (fără nume) de pe pagina {p} nu își asociază caracterele cu Unicode + Font {} on page {p} doesn't map its characters to Unicode Fontul {} de pe pagina {p} nu își asociază caracterele cu Unicode + Form field on page {p} isn't tagged Câmpul de formular de pe pagina {p} nu este etichetat + H{n} follows an H{d}; headings should not skip levels H{n} urmează după un H{d}; titlurile nu ar trebui să sară niveluri + Inserted text Text inserat + Key Agreement Acord de chei + Key Encipherment Cifrare chei + Margins (in) Margini (inch) + New bookmark (⌘B) Semn de carte nou (⌘B) + Next (⌘G) Următorul (⌘G) + No PDFs found in {folder} Nu s-au găsit PDF-uri în {folder} + No document language is set Nu este setată limba documentului + No page has text: the document appears to be images of pages Nicio pagină nu are text: documentul pare să fie format din imagini ale paginilor + Non-Repudiation Nerepudiere + Only the document's owner can change its security (open it with the permissions password) Doar proprietarul documentului îi poate modifica securitatea (deschideți-l cu parola de permisiuni) + Open a PDF (⌘O) Deschideți un PDF (⌘O) + Page {p} doesn't tab in structure order Pagina {p} nu are ordinea de tabulare după structură + Page {p}: {n} untagged content item Pagina {p}: {n} element de conținut neetichetat + Page {p}: {n} untagged content items Pagina {p}: {n} elemente de conținut neetichetate + Page {} has additional actions Pagina {} are acțiuni suplimentare + Panel layout could not be restored: {error} Aranjarea panourilor nu a putut fi restabilită: {error} + Panel move was not applied: {error} Mutarea panoului nu a fost aplicată: {error} + PdfCraft can't check this signature yet: {}. PdfCraft nu poate verifica încă această semnătură: {}. + Previous (⇧⌘G) Anteriorul (⇧⌘G) + Print (⌘P) Imprimare (⌘P) + Producer Producător + Redo {action} Refacere {action} + Rendering… Se randează… + Report created Raport creat + Rev. {rev}: Certified by an unknown signer Rev. {rev}: certificat de un semnatar necunoscut + Rev. {rev}: Certified by {name} Rev. {rev}: certificat de {name} + Rev. {rev}: Signed by an unknown signer Rev. {rev}: semnat de un semnatar necunoscut + Rev. {rev}: Signed by {name} Rev. {rev}: semnat de {name} + Rotate view clockwise (⇧⌘+) Rotire vizualizare în sensul acelor de ceasornic (⇧⌘+) + Rule Name Nume regulă + Save (M4) Salvare (M4) + Save as {level} Salvare ca {level} + Signature is invalid Semnătura este nevalidă + Signature is valid Semnătura este validă + Signature validity is unknown Valabilitatea semnăturii este necunoscută + Signing time is from the clock on the signer's computer. Ora semnării provine de la ceasul calculatorului semnatarului. + Still rendering — this page is unusually complex… Se randează încă: această pagină este neobișnuit de complexă… + The ECDSA signature is not in canonical DER (trailing bytes, padding or a missing sign byte); it was read anyway. Semnătura ECDSA nu este în DER canonic (octeți în plus, completare sau un octet de semn lipsă); a fost citită oricum. + The ECDSA signature is the raw r and s values instead of a DER sequence; it was read anyway. Semnătura ECDSA conține valorile brute r și s în loc de o secvență DER; a fost citită oricum. + The RSA signature value does not have the length of the key's modulus (leading zero bytes dropped or added); it was read anyway. Valoarea semnăturii RSA nu are lungimea modulului cheii (octeți zero de început eliminați sau adăugați); a fost citită oricum. + The RSA signature's DigestInfo has no NULL parameter (older signers write it so); it was read anyway. DigestInfo din semnătura RSA nu are parametrul NULL (semnatarii mai vechi îl scriu așa); a fost citită oricum. + The certificate of {} does not allow this many CA certificates below it (path length), so it is not used to vouch for {}. Certificatul lui {} nu permite atâtea certificate CA sub el (lungimea căii), așa că nu este folosit pentru a garanta pentru {}. + The certificate of {} is not a CA certificate that may issue certificates, so it is not used to vouch for {}. Certificatul lui {} nu este un certificat CA care poate emite certificate, așa că nu este folosit pentru a garanta pentru {}. + The certificate of {} was not valid at the time of signing, so it is not used to vouch for {}. Certificatul lui {} nu era valabil în momentul semnării, așa că nu este folosit pentru a garanta pentru {}. + The checker found problems which may prevent the document from being fully accessible. Verificatorul a găsit probleme care pot împiedica accesibilitatea completă a documentului. + The document has been altered or corrupted since the signature was applied. Documentul a fost modificat sau deteriorat după aplicarea semnăturii. + The document has been altered or corrupted since the timestamp was applied. Documentul a fost modificat sau deteriorat după aplicarea marcajului temporal. + The document has been altered since this signature was applied in ways it does not permit ({}). Documentul a fost modificat după aplicarea acestei semnături în moduri pe care nu le permite ({}). + The document has been altered since this timestamp was applied in ways it does not permit ({}). Documentul a fost modificat după aplicarea acestui marcaj temporal în moduri pe care nu le permite ({}). + The document has been modified since this signature was applied, but the changes are permitted ({}). Documentul a fost modificat după aplicarea acestei semnături, dar modificările sunt permise ({}). + The document has been modified since this timestamp was applied, but the changes are permitted ({}). Documentul a fost modificat după aplicarea acestui marcaj temporal, dar modificările sunt permise ({}). + The document has no tags (structure tree) Documentul nu are etichete (arbore de structură) + The document has no title Documentul nu are titlu + The document isn't marked as tagged (MarkInfo Marked) Documentul nu este marcat ca etichetat (MarkInfo Marked) + The document isn't tagged, so none of its content is Documentul nu este etichetat, deci niciun conținut al său nu este + The document's embedded revocation information shows that the signer's certificate has not been revoked. Informațiile de revocare încorporate în document arată că certificatul semnatarului nu a fost revocat. + The embedded timestamp token is valid and its authority is trusted; trusted time is {}. Tokenul de marcaj temporal încorporat este valid și autoritatea lui este de încredere; ora de încredere este {}. + The font {} isn't embedded Fontul {} nu este încorporat + The metadata doesn't identify the file as {} Metadatele nu identifică fișierul ca {} + The password is incorrect. Parola este incorectă. + The password must have at least 6 characters. Parola trebuie să aibă cel puțin 6 caractere. + The passwords do not match. Parolele nu se potrivesc. + The security settings don't allow screen readers to read the text Setările de securitate nu permit cititoarelor de ecran să citească textul + The signature algorithm and the SignerInfo's digest algorithm name different hashes; the signature was made with the SignerInfo's. Algoritmul semnăturii și algoritmul de rezumat din SignerInfo indică funcții hash diferite; semnătura a fost făcută cu cel din SignerInfo. + The signature carries an unverified timestamp ({}): the timestamp authority is not in your list of trusted certificates, so the signing time claimed by the signer is used instead. Semnătura conține un marcaj temporal neverificat ({}): autoritatea de marcare temporală nu se află în lista certificatelor de încredere, așa că se folosește ora de semnare declarată de semnatar. + The signature contents are not hexadecimal. Conținutul semnăturii nu este hexazecimal. + The signature could not be checked ({}). Semnătura nu a putut fi verificată ({}). + The signature could not be read ({}). Semnătura nu a putut fi citită ({}). + The signature could not be verified ({}). Semnătura nu a putut fi validată ({}). + The signature has no valid byte range. Semnătura nu are un interval de octeți valid. + The signature includes an embedded timestamp. Semnătura include un marcaj temporal încorporat. + The signature is BER-encoded (indefinite lengths) rather than DER; it was read leniently. Semnătura este codată BER (lungimi nedefinite) în loc de DER; a fost citită tolerant. + The signature uses the legacy adbe.x509.rsa_sha1 format. Semnătura folosește formatul vechi adbe.x509.rsa_sha1. + The signature value does not match the signer's certificate: the signature is corrupt. Valoarea semnăturii nu se potrivește cu certificatul semnatarului: semnătura este coruptă. + The signature's byte range does not exclude exactly its contents. Intervalul de octeți al semnăturii nu exclude exact conținutul ei. + The signature's byte range does not match the file. Intervalul de octeți al semnăturii nu se potrivește cu fișierul. + The signature's timestamp token could not be verified ({}). Tokenul de marcaj temporal al semnăturii nu a putut fi verificat ({}). + The signature's timestamp token does not cover the signature value. Tokenul de marcaj temporal al semnăturii nu acoperă valoarea semnăturii. + The signed content is a constructed (segmented) OCTET STRING, as BER allows; it was read anyway. Conținutul semnat este un OCTET STRING construit (segmentat), cum permite BER; a fost citit oricum. + The signer's certificate does not allow digital signatures (its key usage has neither digital signature nor non-repudiation). Certificatul semnatarului nu permite semnături digitale (utilizarea cheii nu include nici semnătură digitală, nici nerepudiere). + The signer's certificate has been revoked ({}). Certificatul semnatarului a fost revocat ({}). + The signer's certificate has critical extensions PdfCraft does not recognize ({}). Certificatul semnatarului are extensii critice pe care PdfCraft nu le recunoaște ({}). + The signer's certificate is not in the signature. Certificatul semnatarului nu se află în semnătură. + The signer's certificate is not issued for signing documents (its extended key usage has no document-signing purpose). Certificatul semnatarului nu este emis pentru semnarea documentelor (utilizarea extinsă a cheii nu are scopul de semnare a documentelor). + The signer's certificate was not valid at the time of signing. Certificatul semnatarului nu era valabil în momentul semnării. + The signer's identity is unknown because it has not been included in your list of trusted certificates and none of its parent certificates are trusted certificates. Identitatea semnatarului este necunoscută, deoarece nu a fost inclusă în lista certificatelor de încredere și niciunul dintre certificatele părinte nu este de încredere. + The signer's identity is valid. Identitatea semnatarului este validă. + The timestamp authority's certificate was not valid at the time of timestamping. Certificatul autorității de marcare temporală nu era valabil în momentul marcării. + The timestamp contents are not hexadecimal. Conținutul marcajului temporal nu este hexazecimal. + The timestamp has no valid byte range. Marcajul temporal nu are un interval de octeți valid. + The timestamp token could not be read ({}). Tokenul de marcaj temporal nu a putut fi citit ({}). + The timestamp token is valid and its authority is trusted. Tokenul de marcaj temporal este valid și autoritatea lui este de încredere. + The timestamp token is valid, but the timestamp authority is not in your list of trusted certificates. Tokenul de marcaj temporal este valid, dar autoritatea de marcare temporală nu se află în lista certificatelor de încredere. + The timestamp's byte range does not exclude exactly its contents. Intervalul de octeți al marcajului temporal nu exclude exact conținutul lui. + The timestamp's byte range does not match the file. Intervalul de octeți al marcajului temporal nu se potrivește cu fișierul. + The window shows the file name, not the title (Initial View > Show) Fereastra afișează numele fișierului, nu titlul (Vizualizare inițială > Afișare) + There is no folder to save the digital ID in. Nu există niciun folder în care să se salveze ID-ul digital. + This document has not been modified since this signature was applied. Acest document nu a fost modificat de la aplicarea acestei semnături. + This document has not been modified since this timestamp was applied. Acest document nu a fost modificat de la aplicarea acestui marcaj temporal. + This signature uses RIPEMD-160, a legacy 160-bit hash algorithm that is no longer recommended for signatures. It still validates, but it should not be relied on. Această semnătură folosește RIPEMD-160, un algoritm hash vechi de 160 de biți, care nu mai este recomandat pentru semnături. Se validează în continuare, dar nu ar trebui să vă bazați pe ea. + This signature uses SHA-1, a weak hash algorithm: collisions in it have been demonstrated. It still validates because many documents signed years ago use it, but it should not be relied on. Această semnătură folosește SHA-1, un algoritm hash slab, pentru care s-au demonstrat coliziuni. Se validează în continuare pentru că multe documente semnate acum ani îl folosesc, dar nu ar trebui să vă bazați pe ea. + Undo {action} Anulare {action} + Unsigned signature field Câmp de semnătură nesemnat + Unsigned signature field: {name} Câmp de semnătură nesemnat: {name} + Zoom in (⌘+) Mărire (⌘+) + Zoom in / out (also pinch or ⌘-scroll) Mărire / micșorare (și prin ciupire sau ⌘-derulare) + Zoom out (⌘−) Micșorare (⌘−) + alternate text hides an annotation inside it textul alternativ ascunde o adnotare din interiorul său + alternate text on an element with no page content text alternativ pe un element fără conținut de pagină + comments comentarii + document security store depozitul de securitate al documentului + document structure structura documentului + form fill completare formular + its alternate text is inside another element's and will never be read textul său alternativ se află în interiorul altui element și nu va fi citit niciodată + links linkuri + metadata metadate + no alternate text fără text alternativ + no header cells (TH) fără celule de antet (TH) + no summary fără rezumat + not in a TR nu se află într-un TR + not in a Table, THead, TBody or TFoot nu se află într-un Table, THead, TBody sau TFoot + not in an L (list) nu se află într-un L (listă) + not in an LI (list item) nu se află într-un LI (element de listă) + other changes alte modificări + page content conținutul paginii + page {n} is out of range (1–{count}) pagina {n} este în afara intervalului (1–{count}) + pages added or removed pagini adăugate sau eliminate + rows have between {min} and {max} columns rândurile au între {min} și {max} coloane + the first heading is an H{n}; headings should not skip levels primul titlu este un H{n}; titlurile nu ar trebui să sară niveluri + the signed version could not be read versiunea semnată nu a putut fi citită + {n} pages and no bookmarks {n} pagini și niciun semn de carte + {page} is not a page number or label {page} nu este un număr sau o etichetă de pagină + {ty} element on page {p}: {what} Element {ty} pe pagina {p}: {what} + {ty} element: {what} Element {ty}: {what} + {who}, certificate issued by an unknown issuer. {who}, certificat emis de un emitent necunoscut. + {who}, certificate issued by {issuer}. {who}, certificat emis de {issuer}. + {} annotation on page {p} isn't tagged Adnotarea {} de pe pagina {p} nu este etichetată + {} annotations aren't allowed Adnotările {} nu sunt permise + … and {n} more … și încă {n} +@plural Delete {n} field|Delete {n} fields Ștergere {n} câmp|Ștergere {n} câmpuri|Ștergere {n} de câmpuri +@plural {n} byte|{n} bytes {n} octet|{n} octeți|{n} de octeți +@plural {n} image optimized|{n} images optimized {n} imagine optimizată|{n} imagini optimizate|{n} de imagini optimizate +@plural {n} item discarded|{n} items discarded {n} element eliminat|{n} elemente eliminate|{n} de elemente eliminate +@plural {n} pixel|{n} pixels {n} pixel|{n} pixeli|{n} de pixeli +action wizard Start Pornire +comment menu Edit Editare + A button Un buton + A diagonal CONFIDENTIAL watermark on every page. Un filigran diagonal CONFIDENȚIAL pe fiecare pagină. + A document needs at least one page: copy instead Un document are nevoie de cel puțin o pagină: copiați în schimb + A form field has additional actions Un câmp de formular are acțiuni suplimentare + A link Un link + A script Un script + A selected field has no widget on any page, so the fields can't be edited together. Un câmp selectat nu are widget pe nicio pagină, așa că acele câmpuri nu pot fi editate împreună. + A stream refers to an external file Un flux face referire la un fișier extern + A stream uses LZW compression Un flux folosește comprimare LZW + A summary describes the table's purpose and layout. Add a Summary attribute to each table. Un rezumat descrie scopul și structura tabelului. Adăugați un atribut Summary fiecărui tabel. + About Despre + Accepted Acceptat + Accessibility permission flag Indicator de permisiune pentru accesibilitate + Accessibility permission flag is set Indicatorul de permisiune pentru accesibilitate este setat + Add Page Numbers Adăugare numere de pagină + Add arrow Adăugare săgeată + Add background Adăugare fundal + Add bookmark Adăugare semn de carte + Add callout Adăugare casetă explicativă + Add checkmark Adăugare bifă + Add cloud Adăugare nor + Add connected lines Adăugare linii conectate + Add cross Adăugare cruce + Add dot Adăugare punct + Add drawing Adăugare desen + Add field Adăugare câmp + Add file attachment Adăugare fișier atașat + Add footer Adăugare subsol + Add header Adăugare antet + Add header & footer Adăugare antet și subsol + Add highlight Adăugare evidențiere + Add image Adăugare imagine + Add inserted text Adăugare text inserat + Add line Adăugare linie + Add link Adăugare link + Add oval Adăugare oval + Add polygon Adăugare poligon + Add rectangle Adăugare dreptunghi + Add redaction mark Adăugare marcaj de anonimizare + Add signature Adăugare semnătură + Add squiggly underline Adăugare subliniere ondulată + Add stamp Adăugare ștampilă + Add sticky note Adăugare notă + Add strikethrough Adăugare tăiere cu o linie + Add text box Adăugare casetă text + Add underline Adăugare subliniere + Add watermark Adăugare filigran + Add {what} Adăugare {what} + Added the first {n} files in {folder} Au fost adăugate primele {n} fișiere din {folder} + Adding images arrives on the web with file pickers for images Adăugarea de imagini vine pe web odată cu selectoarele de fișiere pentru imagini + Algorithm Algoritm + Align fields Aliniere câmpuri + All annotations are tagged Toate adnotările sunt etichetate + All form fields are tagged Toate câmpurile de formular sunt etichetate + All form fields have description Toate câmpurile de formular au descriere + All multimedia objects are tagged Toate obiectele multimedia sunt etichetate + All page content is tagged Tot conținutul paginilor este etichetat + Allowed Permis + Alternate Text Text alternativ + Alternate text inside an element that already has alternate text is never read. Remove the inner alternate text. Textul alternativ din interiorul unui element care are deja text alternativ nu este citit niciodată. Eliminați textul alternativ interior. + Alternate text must be associated with some content Textul alternativ trebuie asociat cu un conținut + Alternate text on an element that contains a link or field hides that annotation from assistive technology. Move the alternate text. Textul alternativ pe un element care conține un link sau un câmp ascunde acea adnotare de tehnologiile de asistare. Mutați textul alternativ. + Alternate text on an element without page content is never reached. Remove it or attach the element to content. Textul alternativ pe un element fără conținut de pagină nu este atins niciodată. Eliminați-l sau atașați elementul unui conținut. + Alternate text should not hide annotation Textul alternativ nu ar trebui să ascundă adnotări + Alternate text that will never be read Text alternativ care nu va fi citit niciodată + An action is already running O acțiune rulează deja + An embedded file has no AFRelationship Un fișier încorporat nu are AFRelationship + An image asks to be interpolated O imagine cere interpolare + An image has alternates or OPI information O imagine are alternative sau informații OPI + Animation that flashes can cause seizures. Check scripts and media for flicker. Animațiile care clipesc pot provoca crize. Verificați scripturile și conținutul media pentru pâlpâiri. + Another file dialog is still open. Finish with it first. Un alt dialog de fișiere este încă deschis. Terminați întâi cu el. + Application Aplicație + Applied 1 redaction mark. Save to remove the content from the file. A fost aplicat 1 marcaj de anonimizare. Salvați pentru a elimina conținutul din fișier. + Applied {n} redaction marks. Save to remove the content from the file. Au fost aplicate {n} marcaje de anonimizare. Salvați pentru a elimina conținutul din fișier. + Appropriate nesting Imbricare corectă + Arbitrary Mask Mască arbitrară + Associated with content Asociat cu conținut + At least one signature has problems. Cel puțin o semnătură are probleme. + At least one signature is invalid. Cel puțin o semnătură este nevalidă. + Attachment Atașament + Basic constraints Constrângeri de bază + Beveled Teșit + Black Negru + Black on white Negru pe alb + Blue Albastru + Bookmarks are present in large documents Documentele mari au semne de carte + Both Ambele + Button Properties Proprietăți buton + Button Style: Stil buton: + Calculate Calcul + Callout Casetă explicativă + Cancelled Anulat + Center Footer Text Text subsol centru + Center Header Text Text antet centru + Center horizontally Centrare pe orizontală + Center vertically Centrare pe verticală + Certificate Viewer Vizualizator certificate + Certified by {by} Certificat de {by} + Change comment properties Modificare proprietăți comentariu + Change document properties Modificare proprietăți document + Change field properties Modificare proprietăți câmp + Change initial view Modificare vizualizare inițială + Change link properties Modificare proprietăți link + Change tag properties Modificare proprietăți etichetă + Change {key} Modificare {key} + Changing the document Modificarea documentului + Character encoding Codificare caractere + Character limit: Limită caractere: + Check Bifă + Check Box Properties Proprietăți casetă de selectare + Check Box Style: Stil casetă de selectare: + Check that the tags read in the order a sighted reader would. Use the Reading Order tool or the Tags panel to correct it. Verificați ca etichetele să se citească în ordinea în care ar citi un cititor văzător. Folosiți instrumentul Ordine de citire sau panoul Etichete pentru a corecta. + CheckBox Casetă de selectare + Checked Bifat + Choose a folder for the split files Alegeți un folder pentru fișierele împărțite + Choose a folder on this computer to pin Alegeți un folder de pe acest calculator pentru fixare + Click on the page to add a {tool}, or drag to set its size Faceți clic pe pagină pentru a adăuga {tool} sau trageți pentru a-i stabili dimensiunea + Click text or an image to edit it Faceți clic pe un text sau o imagine pentru a le edita + Color Images Imagini color + Color Spaces Spații de culoare + Color contrast Contrast de culoare + Comb of characters Pieptene de caractere + Combo Combo + Coming in milestone {m}. Items marked Ready work today. Urmează în etapa {m}. Elementele marcate Gata funcționează deja. + Command Comandă + Commenting Comentare + Comments and markups Comentarii și marcaje + Comments, links and fields must be in the tag tree to be announced. Tag the annotations. Comentariile, linkurile și câmpurile trebuie să fie în arborele de etichete pentru a fi anunțate. Etichetați adnotările. + Completed Finalizat + Configure a Digital ID for Signing Configurare ID digital pentru semnare + Connected lines Linii conectate + Content Streams Fluxuri de conținut + Content copying Copierea conținutului + Content copying for accessibility Copierea conținutului pentru accesibilitate + Contributors Contribuitori + Copied {what} Copiat: {what} + Copy or cut pages first Copiați sau decupați întâi pagini + Could not save: {e} Nu s-a putut salva: {e} + Couldn't add {name}: {e} Nu s-a putut adăuga {name}: {e} + Couldn't combine files: {e} Nu s-au putut combina fișierele: {e} + Couldn't create a PDF: {e} Nu s-a putut crea PDF-ul: {e} + Couldn't download {name}: {e} Nu s-a putut descărca {name}: {e} + Couldn't extract pages: {e} Nu s-au putut extrage paginile: {e} + Couldn't fit the visible content: {e} Nu s-a putut potrivi conținutul vizibil: {e} + Couldn't follow linked PDF: {reason} Nu s-a putut urma PDF-ul legat: {reason} + Couldn't import the signature image: {e} Nu s-a putut importa imaginea semnăturii: {e} + Couldn't open revision {n}: {e} Nu s-a putut deschide revizia {n}: {e} + Couldn't open the result: {e} Nu s-a putut deschide rezultatul: {e} + Couldn't open the signed version: {e} Nu s-a putut deschide versiunea semnată: {e} + Couldn't open {name}: {e} Nu s-a putut deschide {name}: {e} + Couldn't optimize the file Nu s-a putut optimiza fișierul + Couldn't optimize the file: {e} Nu s-a putut optimiza fișierul: {e} + Couldn't print from the browser ({e}); downloaded {name} to print instead Nu s-a putut imprima din browser ({e}); s-a descărcat {name} pentru imprimare + Couldn't read {name}: {e} Nu s-a putut citi {name}: {e} + Couldn't recover {name}: {e} Nu s-a putut recupera {name}: {e} + Couldn't reload {name}: {e} Nu s-a putut reîncărca {name}: {e} + Couldn't save the image: {e} Nu s-a putut salva imaginea: {e} + Couldn't save {name}: {e} Nu s-a putut salva {name}: {e} + Couldn't save: {e} Nu s-a putut salva: {e} + Couldn't show the file picker. Please try again. Nu s-a putut afișa selectorul de fișiere. Încercați din nou. + Couldn't split: {e} Nu s-a putut împărți: {e} + Couldn't summarize comments: {e} Nu s-a putut crea rezumatul comentariilor: {e} + Couldn't take the snapshot: {e} Nu s-a putut face captura: {e} + Couldn't unlock {name}: {e} Nu s-a putut debloca {name}: {e} + Couldn't use the photo: {e} Nu s-a putut folosi fotografia: {e} + Couldn't use {name}: {e} Nu s-a putut folosi {name}: {e} + Couldn't write {name}: {e} Nu s-a putut scrie {name}: {e} + Couldn't write {path}: {e} Nu s-a putut scrie {path}: {e} + Create link Creare link + Created 1 link A fost creat 1 link + Created a PDF from the first {n} files A fost creat un PDF din primele {n} fișiere + Created a comment summary A fost creat un rezumat al comentariilor + Created {n} links Au fost create {n} linkuri + Credit Cards Carduri bancare + Crop page Decupare pagină + Custom font Font personalizat + Custom stamps arrive on the web with file pickers for images Ștampilele personalizate vin pe web odată cu selectoarele de fișiere pentru imagini + Cut {what} Decupat: {what} + Dark gray theme Temă gri închis + Dashed Întreruptă + Dates Date + Delete bookmark Ștergere semn de carte + Delete content Ștergere conținut + Delete document JavaScript Ștergere JavaScript document + Delete field Ștergere câmp + Delete image Ștergere imagine + Delete link Ștergere link + Delete page Ștergere pagină + Delete selected fields Ștergere câmpuri selectate + Deleted Șters + Detected 1 form field A fost detectat 1 câmp de formular + Detected {n} form fields Au fost detectate {n} câmpuri de formular + Device colour is used, but there is no PDF/A output intent Se folosește culoare de dispozitiv, dar nu există intenție de ieșire PDF/A + DeviceCMYK is used: it needs a CMYK output intent (not added automatically) Se folosește DeviceCMYK: necesită o intenție de ieșire CMYK (nu se adaugă automat) + Diagnostic details Detalii de diagnosticare + Digital Signature Properties Proprietăți semnătură digitală + Discard all comments, forms and multimedia Eliminare toate comentariile, formularele și conținutul multimedia + Discard all links, actions and JavaScript Eliminare toate linkurile, acțiunile și JavaScript + Discard all object data (file attachments) Eliminare toate datele obiectelor (fișiere atașate) + Discard bookmarks Eliminare semne de carte + Discard document information and metadata Eliminare informații document și metadate + Discard hidden layer content Eliminare conținut din straturile ascunse + Discard hidden text Eliminare text ascuns + Discard private data of other applications Eliminare date private ale altor aplicații + Distribute fields Distribuire câmpuri + Document Overhead Spațiu de bază al documentului + Document assembly Asamblare document + Document has appropriate color contrast Documentul are un contrast de culoare adecvat + Document is not image-only PDF Documentul nu este un PDF format doar din imagini + Document is tagged PDF Documentul este PDF etichetat + Document sanitized. Save to finish: saving rewrites the whole file. Document igienizat. Salvați pentru a finaliza: salvarea rescrie tot fișierul. + Document structure provides a logical reading order Structura documentului oferă o ordine logică de citire + Document title is showing in title bar Titlul documentului apare în bara de titlu + Documents of more than 20 pages need bookmarks for navigation. Add bookmarks for the main sections. Documentele de peste 20 de pagini au nevoie de semne de carte pentru navigare. Adăugați semne de carte pentru secțiunile principale. + Double-click Dublu clic + Downloaded {name} S-a descărcat {name} + Downloading attachments on the web arrives with M3.10 ({n} bytes ready) Descărcarea atașamentelor pe web vine cu M3.10 ({n} octeți pregătiți) + Drag a rectangle around the area to copy Trageți un dreptunghi în jurul zonei de copiat + Drag a rectangle on a page to crop it; double-click a page for Set Page Boxes Trageți un dreptunghi pe o pagină pentru a o decupa; dublu clic pe o pagină pentru Setare casete pagină + Drag a rectangle to create a link; double-click a link to edit it Trageți un dreptunghi pentru a crea un link; dublu clic pe un link pentru a-l edita + Drag the corners onto the document's edges, then choose Enhance page. Trageți colțurile pe marginile documentului, apoi alegeți Îmbunătățire pagină. + Drag to draw the area where the signature should appear. Trageți pentru a desena zona în care trebuie să apară semnătura. + Dropdown Properties Proprietăți listă derulantă + Duplicate field Duplicare câmp + Duplicate page Duplicare pagină + Each field needs a tooltip that says what to enter. Add one in Field Properties > General > Tooltip. Fiecare câmp are nevoie de un sfat ecran care spune ce trebuie introdus. Adăugați-l în Proprietăți câmp > General > Sfat ecran. + Edit comment Editare comentariu + Edit content Editare conținut + Edit document JavaScript Editare JavaScript document + Edit fields Editare câmpuri + Edit script of {name} Editare script pentru {name} + Edit text Editare text + Editing Editare + Email Addresses Adrese de e-mail + Embedded Files Fișiere încorporate + Embedded files must be PDF/A files themselves (use PDF/A-3 for others) Fișierele încorporate trebuie să fie ele însele fișiere PDF/A (folosiți PDF/A-3 pentru altele) + Encryption Criptare + Endpoint Capăt + Erase Ștergere + Eraser Radieră + Even pages Pagini pare + Everything on a page must be tagged or marked as an artifact (decoration, headers, footers). Tag the untagged content. Tot ce se află pe o pagină trebuie etichetat sau marcat ca artefact (decor, antete, subsoluri). Etichetați conținutul neetichetat. + Execute a menu item Executare element de meniu + Export certificate Exportare certificat + Exported to {path} Exportat în {path} + Extended Graphics States Stări grafice extinse + Field Câmp + Field descriptions Descrieri câmpuri + Figures alternate text Text alternativ pentru figuri + Figures require alternate text Figurile necesită text alternativ + File attachments Fișiere atașate + Files are combined in this order. Leave Pages empty to take every page. Fișierele se combină în această ordine. Lăsați Pagini gol pentru a lua toate paginile. + Fill in {name} Completare {name} + Filling of form fields Completarea câmpurilor de formular + Flatten Aplatizare + Flip image Răsturnare imagine + Fonts must map their characters to Unicode so text can be read and copied. Fix the fonts or recreate the PDF. Fonturile trebuie să își asocieze caracterele cu Unicode pentru ca textul să poată fi citit și copiat. Corectați fonturile sau recreați PDF-ul. + Form fields must be in the tag tree (Form tags) to be announced. Tag the form fields. Câmpurile de formular trebuie să fie în arborele de etichete (etichete Form) pentru a fi anunțate. Etichetați câmpurile de formular. + Formulas and similar non-text elements need alternate text. Add alternate text to them. Formulele și alte elemente non-text similare au nevoie de text alternativ. Adăugați-le text alternativ. + Gray Gri + Grayscale Images Imagini în tonuri de gri + Green Verde + Green on black Verde pe negru + H / Space (hold) H / Spațiu (ținut apăsat) + Header cells (TH) tell listeners what each column or row holds. Mark the header cells. Celulele de antet (TH) le spun ascultătorilor ce conține fiecare coloană sau rând. Marcați celulele de antet. + Headers Anteturi + Heading levels shouldn't skip (an H1 followed by an H3). Retag the headings. Nivelurile de titlu nu ar trebui să sară (un H1 urmat de un H3). Reetichetați titlurile. + Headings Titluri + Hidden layers Straturi ascunse + Hidden text Text ascuns + Hide a field Ascundere câmp + Hides annotation Ascunde adnotarea + High Ridicată + Home / End Home / End + Horizontally Pe orizontală + Image-only PDF PDF doar din imagini + Import {name} Importare {name} + Importing data arrives on the web with file pickers for data files Importarea datelor vine pe web odată cu selectoarele de fișiere pentru fișiere de date + Incorrect password. Try again. Parolă incorectă. Încercați din nou. + Insert pages from {name} Inserare pagini din {name} + Insert pages from {name} — 1 field renamed Inserare pagini din {name}: 1 câmp redenumit + Insert pages from {name} — fields renamed Inserare pagini din {name}: câmpuri redenumite + Inserted Inserat + Inset Încastrat + Intended usage Utilizare prevăzută + Intersection Intersecție + Invert Inversare + Irregular tables confuse cell navigation. Give every row the same number of cells (counting spans). Tabelele neregulate încurcă navigarea între celule. Dați fiecărui rând același număr de celule (inclusiv celulele îmbinate). + Issued by Emis de + Issued to Emis pentru + Issuer Emitent + Key usage Utilizare cheie + Keywords Cuvinte cheie + LI must be a child of L LI trebuie să fie copil al L + Landscape pages Pagini peisaj + Lbl and LBody Lbl și LBody + Lbl and LBody must be children of LI Lbl și LBody trebuie să fie copii ai LI + Left Footer Text Text subsol stânga + Left Header Text Text antet stânga + Light blue Albastru deschis + Links, actions and JavaScripts Linkuri, acțiuni și scripturi JavaScript + List Listă + List Box Properties Proprietăți casetă listă + List items Elemente de listă + List items belong in a list. Fix the list's tags. Elementele de listă trebuie să fie într-o listă. Corectați etichetele listei. + List labels and bodies belong in a list item. Fix the list's tags. Etichetele și corpurile listei trebuie să fie într-un element de listă. Corectați etichetele listei. + Lists Liste + Load document font Încărcare font document + Local cross-PDF links require the desktop app Linkurile locale între PDF-uri necesită aplicația desktop + Lock comment Blocare comentariu + Logical Reading Order Ordine logică de citire + Low Scăzută + Make scans searchable, then make them smaller. Faceți scanările căutabile, apoi micșorați-le. + Mark all Marcare toate + Mark as Confidential Marcare ca Confidențial + Mark differences Marcare diferențe + Mark figure as decorative Marcare figură ca decorativă + Mark for redaction Marcare pentru anonimizare + Mark pages for redaction Marcare pagini pentru anonimizare + Match field sizes Potrivire dimensiuni câmpuri + Maximum Maxim + Measuring tool Instrument de măsurare + Merged 1 file into {path} 1 fișier unificat în {path} + Merged {n} files into {path} {n} fișiere unificate în {path} + Merging data files needs the desktop app Unificarea fișierelor de date necesită aplicația desktop + Metadata Metadate + Midpoint Mijloc + Minimum Minim + Models Modele + Mouse Down Apăsare buton mouse + Mouse Enter Intrare mouse + Mouse Exit Ieșire mouse + Mouse Up Eliberare buton mouse + Move bookmark Mutare semn de carte + Move comment Mutare comentariu + Move image Mutare imagine + Move page Mutare pagină + Move pages Mutare pagini + Named Destinations Destinații denumite + Navigation links Linkuri de navigare + Navigation links are not repetitive Linkurile de navigare nu se repetă + Nested alternate text Text alternativ imbricat + New {tool} comments will look like this one Noile comentarii de tip {tool} vor arăta ca acesta + No PDFs, images or text files found in {folder} Nu s-au găsit PDF-uri, imagini sau fișiere text în {folder} + No form fields were detected Nu s-a detectat niciun câmp de formular + No inaccessible scripts Nu există scripturi inaccesibile + No links to remove Nu există linkuri de eliminat + No pages match those choices Nicio pagină nu se potrivește cu aceste opțiuni + No unlinked web addresses were found in the text Nu s-au găsit adrese web fără link în text + None of those files can be made into a PDF; use PDFs, images or .txt files Niciunul dintre aceste fișiere nu poate fi transformat în PDF; folosiți PDF-uri, imagini sau fișiere .txt + Note Notă + Number every page in the footer. Numerotează fiecare pagină în subsol. + Odd pages Pagini impare + On Blur La pierderea focalizării + On Focus La focalizare + On the web, open or drop an image to convert it Pe web, deschideți sau plasați o imagine pentru a o converti + Open a web link Deschidere link web + Opened with Deschis cu + Opening the browser's print dialog… Se deschide dialogul de imprimare al browserului… + Optimization cancelled Optimizare anulată + Optimization is already running Optimizarea rulează deja + Optimize Scanned Documents Optimizare documente scanate + Options Opțiuni + Orange Portocaliu + Other elements alternate text Text alternativ pentru alte elemente + Other elements that require alternate text Alte elemente care necesită text alternativ + Outline Contur + PDF producer Producător PDF + PDF version Versiune PDF + Page Content Conținut pagină + Page Range Interval de pagini + Page does not require timed responses Pagina nu necesită răspunsuri temporizate + Page thumbnails Miniaturi pagini + Page will not cause screen flicker Pagina nu va provoca pâlpâirea ecranului + Pages that are only pictures of text can't be read aloud or searched. Recognize text (OCR) to add a text layer. Paginile care sunt doar imagini ale textului nu pot fi citite cu voce tare sau căutate. Rulați recunoașterea textului (OCR) pentru a adăuga un strat de text. + Pages with links, comments or fields should tab in structure order. The fix sets each page's tab order to Use Document Structure. Paginile cu linkuri, comentarii sau câmpuri ar trebui să aibă ordinea de tabulare după structură. Corectarea setează ordinea de tabulare a fiecărei pagini la Folosire structură document. + Passed Reușit + Password protection will be applied when you save Protecția prin parolă se va aplica la salvare + Path Traseu + PdfCraft is drawing without a graphics processor, so it may be slow. Updating the graphics driver may help. PdfCraft desenează fără procesor grafic, așa că poate fi lent. Actualizarea driverului plăcii video poate ajuta. + People may need more time to respond. Check that nothing has a time limit. Unele persoane pot avea nevoie de mai mult timp pentru a răspunde. Verificați ca nimic să nu aibă o limită de timp. + Phone Number Număr de telefon + Phone Numbers Numere de telefon + Pictures need alternate text that describes them, or must be marked decorative. Add alternate text to each figure. Imaginile au nevoie de un text alternativ care să le descrie sau trebuie marcate ca decorative. Adăugați text alternativ fiecărei figuri. + Pink Roz + Pinned folders need the desktop app Folderele fixate necesită aplicația desktop + Pinned {folder} to Home {folder} a fost fixat în Acasă + Place saved {what} Plasare {what} salvat + Planned for milestone {m} — open to see what it will include Planificat pentru etapa {m}: deschideți pentru a vedea ce va include + Planned · {m} Planificat · {m} + Polygon Poligon + Polyline Linie frântă + Portable mode is off: {folder} can't be written ({error}). Settings are kept in your user folder instead. Modul portabil este dezactivat: {folder} nu poate fi scris ({error}). Setările se păstrează în schimb în folderul utilizatorului. + Portrait pages Pagini portret + Position Poziție + PostScript XObjects aren't allowed Obiectele XObject PostScript nu sunt permise + Prepare for Distribution Pregătire pentru distribuire + Preparing sheet {done} of {total} for printing… Se pregătește foaia {done} din {total} pentru imprimare… + Preparing {n} sheets for printing… Se pregătesc {n} foi pentru imprimare… + Primary language Limba principală + Printing Imprimare + Private data of other applications Date private ale altor aplicații + Public key Cheie publică + Purple Mov + PushButton Buton de comandă + Radio Radio + Radio Button Properties Proprietăți buton radio + Re-type Password Reintroduceți parola + Red Roșu + Redid {label} Refăcut: {label} + Regularity Regularitate + Rejected Respins + Reliable character encoding is provided Este furnizată o codificare a caracterelor fiabilă + Remove hidden information and flatten comments and form fields, so recipients see only the pages. Elimină informațiile ascunse și aplatizează comentariile și câmpurile de formular, astfel încât destinatarii să vadă doar paginile. + Remove hidden information, metadata, scripts and embedded content, and rewrite the files. Elimină informațiile ascunse, metadatele, scripturile și conținutul încorporat și rescrie fișierele. + Remove redaction marks Eliminare marcaje de anonimizare + Remove saved {what} Eliminare {what} salvat + Removed 1 hidden item. Save to remove them from the file. A fost eliminat 1 element ascuns. Salvați pentru a-l elimina din fișier. + Removed 1 link A fost eliminat 1 link + Removed {n} hidden items. Save to remove them from the file. Au fost eliminate {n} elemente ascunse. Salvați pentru a le elimina din fișier. + Removed {n} links Au fost eliminate {n} linkuri + Rename bookmark Redenumire semn de carte + Rendering: hayro (bootstrap) · UI: egui · Icons: Lucide (ISC) · Fonts: Inter, JetBrains Mono, Dancing Script (OFL) Randare: hayro (bootstrap) · Interfață: egui · Pictograme: Lucide (ISC) · Fonturi: Inter, JetBrains Mono, Dancing Script (OFL) + Repairs Reparații + Repeated navigation links should be skippable. Check links that appear on every page. Linkurile de navigare repetate ar trebui să poată fi sărite. Verificați linkurile care apar pe fiecare pagină. + Replace page Înlocuire pagină + Replace pages Înlocuire pagini + Replaced Înlocuit + Replacing images arrives on the web with image file pickers Înlocuirea imaginilor vine pe web odată cu selectoarele de fișiere imagine + Replacing images on page {p} arrives on the web with image pickers ({i}) Înlocuirea imaginilor de pe pagina {p} vine pe web odată cu selectoarele de imagini ({i}) + Report Options Opțiuni raport + Reset a form Resetare formular + Resize comment Redimensionare comentariu + Restrictions Restricții + Restrictions lifted Restricții eliminate + Reverted to the last saved version S-a revenit la ultima versiune salvată + Right Footer Text Text subsol dreapta + Right Header Text Text antet dreapta + Rotate image Rotire imagine + Rotate page Rotire pagină + Rotate page {label} clockwise Rotire pagina {label} în sensul acelor de ceasornic + Rotate page {label} counterclockwise Rotire pagina {label} în sens invers acelor de ceasornic + Rows Rânduri + Run Rulare + Run JavaScript Rulare JavaScript + Run a JavaScript Rulare JavaScript + Run form script Rulare script formular + SHA-1 digest Rezumat SHA-1 + SHA-256 digest Rezumat SHA-256 + Sanitize Igienizare + Sanitize Documents Igienizare documente + Save as PDF/A-1b Salvare ca PDF/A-1b + Save as PDF/A-2b Salvare ca PDF/A-2b + Save as PDF/A-3b Salvare ca PDF/A-3b + Save image Salvare imagine + Save or revert changes before selecting another tag. Salvați sau anulați modificările înainte de a selecta altă etichetă. + Saved the print-ready PDF to {path} PDF-ul pregătit pentru imprimare a fost salvat în {path} + Saved {name} S-a salvat {name} + Saved {place}: {before} → {after} (not smaller){detail} S-a salvat {place}: {before} → {after} (nu e mai mic){detail} + Saved {place}: {before} → {after} ({pct}% smaller){detail} S-a salvat {place}: {before} → {after} (cu {pct}% mai mic){detail} + Saved, but reopening failed: {e} Salvat, dar redeschiderea a eșuat: {e} + Screen flicker Pâlpâirea ecranului + Screen readers choose their voice from the document's language. Set it in Document Properties > Advanced > Language. Cititoarele de ecran își aleg vocea după limba documentului. Setați-o în Proprietăți document > Avansat > Limbă. + Scripted content must be usable with a keyboard and assistive technology. Check the document's scripts. Conținutul cu scripturi trebuie să poată fi folosit cu tastatura și cu tehnologiile de asistare. Verificați scripturile documentului. + Scripts Scripturi + Scripts run in a sandbox without file or network access. With JavaScript off, Acrobat's standard format, validate and calculate functions still work. Scripturile rulează într-un mediu izolat, fără acces la fișiere sau la rețea. Cu JavaScript dezactivat, funcțiile standard Acrobat de formatare, validare și calcul funcționează în continuare. + Security method Metodă de securitate + Security settings must allow assistive technology to read the content ("Enable text access for screen reader devices"). Change the document's security to allow it. Setările de securitate trebuie să permită tehnologiilor de asistare să citească conținutul („Permite accesul la text pentru cititoarele de ecran”). Modificați securitatea documentului pentru a permite acest lucru. + Security will be removed when you save Securitatea va fi eliminată la salvare + Self-signed Autosemnat + Serial number Număr de serie + Set alternate text Setare text alternativ + Set bookmark destination Setare destinație semn de carte + Set document title Setare titlu document + Set status Accepted Setare stare Acceptat + Set status Cancelled Setare stare Anulat + Set status Completed Setare stare Finalizat + Set status None Setare stare Niciuna + Set status Rejected Setare stare Respins + Set status Unmarked Setare stare Nemarcat + Set tab order Setare ordine de tabulare + Set the image of {name} Setare imagine pentru {name} + Shadings Umbriri + Show a field Afișare câmp + Sign with a Digital ID Semnare cu ID digital + Signed and all signatures are valid. Semnat și toate semnăturile sunt valide. + Signed and saved to {path} Semnat și salvat în {path} + Signer Semnatar + Signing time Ora semnării + Social Security Number Număr de securitate socială (SUA) + Social Security Numbers Numere de securitate socială (SUA) + Solid Continuă + Squiggly Ondulată + Star Stea + Strong Puternic + Structure Info Informații structură + Submit a form Trimitere formular + TH and TD TH și TD + TH and TD must be children of TR TH și TD trebuie să fie copii ai TR + TR must be a child of Table, THead, TBody, or TFoot TR trebuie să fie copil al Table, THead, TBody sau TFoot + Tab order Ordine de tabulare + Tab order is consistent with structure order Ordinea de tabulare corespunde ordinii structurii + Table cells belong in a row. Fix the table's tags. Celulele de tabel trebuie să fie într-un rând. Corectați etichetele tabelului. + Table rows belong directly in a table or its head, body or foot. Fix the table's tags. Rândurile de tabel trebuie să fie direct într-un tabel sau în antetul, corpul ori subsolul lui. Corectați etichetele tabelului. + Tables Tabele + Tables must contain the same number of columns in each row and rows in each column Tabelele trebuie să aibă același număr de coloane pe fiecare rând și de rânduri pe fiecare coloană + Tables must have a summary Tabelele trebuie să aibă un rezumat + Tables should have headers Tabelele ar trebui să aibă anteturi + Tagged PDF PDF etichetat + Tagged annotations Adnotări etichetate + Tagged content Conținut etichetat + Tagged form fields Câmpuri de formular etichetate + Tagged multimedia Multimedia etichetat + Tags give the document a logical structure that assistive technology follows. Tag the document (Automatically tag PDF). Etichetele dau documentului o structură logică pe care o urmează tehnologiile de asistare. Etichetați documentul (Etichetare automată PDF). + Text Field Properties Proprietăți câmp text + Text language is specified Limba textului este specificată + Text must contrast enough with its background for people with low vision. Check the colours by eye or with a contrast tool. Textul trebuie să contrasteze suficient cu fundalul pentru persoanele cu vedere slabă. Verificați culorile cu ochiul liber sau cu un instrument de contrast. + Text recognition is already running Recunoașterea textului rulează deja + Text recognition isn't installed: its models are missing (run `cargo xtask models`, or set PDFCRAFT_MODELS). Recunoașterea textului nu este instalată: lipsesc modelele (rulați `cargo xtask models` sau setați PDFCRAFT_MODELS). + That didn't work: an internal error stopped it ({m}). Nu a funcționat: o eroare internă a oprit operația ({m}). + That didn't work: an internal error stopped it ({m}). Your documents are unchanged. Nu a funcționat: o eroare internă a oprit operația ({m}). Documentele dvs. nu s-au modificat. + The Keychain's digital IDs couldn't be listed: {e} ID-urile digitale din Keychain nu au putut fi listate: {e} + The Windows store's digital IDs couldn't be listed: {e} ID-urile digitale din depozitul Windows nu au putut fi listate: {e} + The clipboard has no image or text Clipboardul nu conține imagine sau text + The document changed while you were choosing a file, so nothing was changed. Documentul s-a modificat în timp ce alegeați un fișier, așa că nu s-a schimbat nimic. + The document changed while you were editing field properties. Documentul s-a modificat în timp ce editați proprietățile câmpului. + The document has additional actions (/AA) Documentul are acțiuni suplimentare (/AA) + The document has document-level JavaScript Documentul are JavaScript la nivel de document + The document has no XMP metadata Documentul nu are metadate XMP + The document is encrypted Documentul este criptat + The document is no longer open. Documentul nu mai este deschis. + The document was closed before it could be saved. Documentul a fost închis înainte de a putea fi salvat. + The document's security settings don't allow filling in form fields Setările de securitate ale documentului nu permit completarea câmpurilor de formular + The field properties could not be changed. Proprietățile câmpului nu au putut fi modificate. + The field properties dialog is no longer open. Dialogul de proprietăți ale câmpului nu mai este deschis. + The form asks to be submitted to {u}; PdfCraft doesn't send form data. Save the document to keep your entries. Formularul cere să fie trimis la {u}; PdfCraft nu trimite date de formular. Salvați documentul pentru a păstra ce ați completat. + The form asks viewers to make appearances (NeedAppearances) Formularul cere vizualizatoarelor să creeze aspectele (NeedAppearances) + The linked PDF opened, but its named destination was not applied. PDF-ul legat s-a deschis, dar destinația sa denumită nu a fost aplicată. + The linked PDF opened, but its page destination was out of range. PDF-ul legat s-a deschis, dar destinația de pagină era în afara intervalului. + The operation failed. Operația a eșuat. + The pages were extracted but not deleted, because the document changed while you were choosing a folder. Paginile au fost extrase, dar nu șterse, deoarece documentul s-a modificat în timp ce alegeați un folder. + The passwords don't match. Parolele nu se potrivesc. + The selected area has been copied ({w} × {h} pixels) Zona selectată a fost copiată ({w} × {h} pixeli) + The selected fields could not be found. Select them again. Câmpurile selectate nu au putut fi găsite. Selectați-le din nou. + The standard fonts can't draw “{c}” ({code}). Only Western European characters can be added as text for now. Fonturile standard nu pot desena „{c}” ({code}). Deocamdată se pot adăuga ca text doar caractere vest-europene. + The title in the metadata and the document information differ Titlul din metadate diferă de cel din informațiile documentului + The window should show a meaningful title rather than the file name. Set a title and Initial View > Show: Document Title. Fereastra ar trebui să afișeze un titlu cu sens, nu numele fișierului. Setați un titlu și Vizualizare inițială > Afișare: Titlul documentului. + There are no redaction marks to apply Nu există marcaje de anonimizare de aplicat + This PDF uses the unsupported {s} action. Acest PDF folosește acțiunea neacceptată {s}. + This compatibility level supports only plain ASCII passwords. Acest nivel de compatibilitate acceptă doar parole ASCII simple. + This document can't be checked: it couldn't be read for editing Acest document nu poate fi verificat: nu a putut fi citit pentru editare + This document has no attachments. Acest document nu are atașamente. + This document has no bookmarks. Acest document nu are semne de carte. + This document has no form fields. Acest document nu are câmpuri de formular. + This document has no layers. Acest document nu are straturi. + This file is already as small as it can be made ({size}). No copy was saved. Acest fișier este deja cât de mic poate fi ({size}). Nu s-a salvat nicio copie. + This form also contains XFA data, which PdfCraft doesn't read yet. You can fill its fields, but Acrobat may show the XFA values instead. Acest formular conține și date XFA, pe care PdfCraft nu le citește încă. Puteți completa câmpurile, dar Acrobat poate afișa în schimb valorile XFA. + Thumbnails Miniaturi + Timed responses Răspunsuri temporizate + Type Password Introduceți parola + Type a password. Introduceți o parolă. + Typewriter Mașină de scris + Unchecked Nebifat + Undid {label} Anulat: {label} + Unlock comment Deblocare comentariu + Unlocked {n} of {m} files Au fost deblocate {n} din {m} fișiere + Update background Actualizare fundal + Update header & footer Actualizare antet și subsol + Update watermark Actualizare filigran + Use {what} Folosire {what} + Valid Valid + Valid from Valabil de la + Valid to Valabil până la + Validate Validare + Validity ends Sfârșitul valabilității + Validity starts Începutul valabilității + Vertically Pe verticală + Video, sound and rich media must be tagged to be announced. Tag the multimedia annotations. Videoclipurile, sunetele și conținutul media îmbogățit trebuie etichetate pentru a fi anunțate. Etichetați adnotările multimedia. + Viewing Vizualizare + Weak Slab + White on black Alb pe negru + Wrote 1 file to {dir} A fost scris 1 fișier în {dir} + Wrote {n} files to {dir} Au fost scrise {n} fișiere în {dir} + X Object Forms Formulare XObject + Yellow Galben + Yellow on black Galben pe negru + You can pin up to {n} folders. Unpin one first. Puteți fixa cel mult {n} foldere. Anulați întâi fixarea unuia. + Your name Numele dvs. + Zip Code Cod poștal (SUA) + Zip Code + 4 Cod poștal + 4 (SUA) + `{command}` {when} `{command}` {when} + a bookmark cannot be moved inside itself un semn de carte nu poate fi mutat în interiorul său + a document must keep at least one page un document trebuie să păstreze cel puțin o pagină + average medie + maximum maxim + minimum minim + no such document documentul nu există + nothing in the file matches this document nimic din fișier nu se potrivește cu acest document + nothing to redo nimic de refăcut + nothing to undo nimic de anulat + pages pagini + product (x) produs (x) + sum (+) sumă (+) + the document has no form fields documentul nu are câmpuri de formular + the document has no page tree documentul nu are arbore de pagini + the document has no tags documentul nu are etichete + the document is protected by a password documentul este protejat cu parolă + the image is empty imaginea este goală + the password is incorrect parola este incorectă + the text recognition models are not installed (reinstall PdfCraft, or set PDFCRAFT_MODELS to the folder that holds them) modelele de recunoaștere a textului nu sunt instalate (reinstalați PdfCraft sau setați PDFCRAFT_MODELS la folderul care le conține) + the title must not be empty titlul nu poate fi gol + there are no pages to print nu există pagini de imprimat + there are no redaction marks to apply nu există marcaje de anonimizare de aplicat + this document is signed: rewriting it would invalidate its signatures (save it incrementally instead) acest document este semnat: rescrierea lui i-ar invalida semnăturile (salvați-l incremental) + this file isn't XFDF, FDF, XML or text form data acest fișier nu conține date de formular XFDF, FDF, XML sau text + {0}: {1} {0}: {1} + {field}: {e} {field}: {e} + {file} is too large for a stamp (at most {n} MB) {file} este prea mare pentru o ștampilă (cel mult {n} MB) + {folder} is already pinned to Home {folder} este deja fixat în Acasă + {label} failed: {e} {label} a eșuat: {e} + {name} has no action {name} nu are nicio acțiune + {name} is too large for a word list (at most 1 MB). {name} este prea mare pentru o listă de cuvinte (cel mult 1 MB). + {name} submits the form to {url}; PdfCraft doesn't send form data. Save the document to keep your entries. {name} trimite formularul la {url}; PdfCraft nu trimite date de formular. Salvați documentul pentru a păstra ce ați completat. + {name}: choosing images arrives on the web with file pickers for images {name}: alegerea imaginilor vine pe web odată cu selectoarele de fișiere pentru imagini + {name}: the {other} action isn't supported yet {name}: acțiunea {other} nu este acceptată încă + {who} in this document tried to open an address PdfCraft won't open: {e}. {who} din acest document a încercat să deschidă o adresă pe care PdfCraft nu o deschide: {e}. + {who} in this document tried to open an address PdfCraft won't open: {e}. Only web (http, https) and email (mailto) links open from documents. {who} din acest document a încercat să deschidă o adresă pe care PdfCraft nu o deschide: {e}. Din documente se deschid doar linkuri web (http, https) și de e-mail (mailto). +animation effects Off Dezactivate +animation effects On Activate + View more Afișare mai mult + View less Afișare mai puțin + Only continue if you trust this document. An address can carry information from the document, such as what you typed into its form. Continuați doar dacă aveți încredere în acest document. O adresă poate transmite informații din document, de exemplu ce ați scris în formularul lui. + Print single-sided. Keep the sheets in order, cut at the marks, then stack the piles left to right, top to bottom. Imprimați pe o singură față. Păstrați foile în ordine, tăiați la semne, apoi stivuiți teancurile de la stânga la dreapta, de sus în jos. + Sign a sheet of white paper and take a photo of it in bright, even light (use the flash). Choose the photo or drop it here: PdfCraft finds the signature and removes the paper. Semnați o foaie de hârtie albă și fotografiați-o în lumină puternică și uniformă (folosiți blițul). Alegeți fotografia sau plasați-o aici: PdfCraft găsește semnătura și elimină hârtia. + This field's font can't draw “{c}” ({code}), so PdfCraft shows ? in its place. The value is saved, and other PDF viewers redraw the field from it. Fontul acestui câmp nu poate desena „{c}” ({code}), așa că PdfCraft afișează ? în locul lui. Valoarea se salvează, iar alte vizualizatoare PDF redesenează câmpul pe baza ei. + {chars} can't be written into the PDF yet: Fill & Sign text is Western European only. Pick a numeric format such as dd.mm.yyyy. {chars} nu pot fi scrise încă în PDF: textul Completare și semnare acceptă doar caractere vest-europene. Alegeți un format numeric, de exemplu zz.ll.aaaa. + January Ianuarie + February Februarie + March Martie + April Aprilie + May Mai + June Iunie + July Iulie + August August + September Septembrie + October Octombrie + November Noiembrie + December Decembrie +calendar date January ianuarie +calendar date February februarie +calendar date March martie +calendar date April aprilie +calendar date May mai +calendar date June iunie +calendar date July iulie +calendar date August august +calendar date September septembrie +calendar date October octombrie +calendar date November noiembrie +calendar date December decembrie +calendar weekday Su Du +calendar weekday Mo Lu +calendar weekday Tu Ma +calendar weekday We Mi +calendar weekday Th Jo +calendar weekday Fr Vi +calendar weekday Sa Sâ +signature pad Type Scriere +scroll speed Slow Lentă +scroll speed Normal Normală +scroll speed Fast Rapidă +certificate Subject Subiect +certificate Issued to Emis pentru +certificate Issued by Emis de +certificate Valid from Valabil de la +certificate Valid to Valabil până la +certificate Intended usage Utilizare prevăzută +certificate Version Versiune +certificate Serial number Număr de serie +certificate Issuer Emitent +certificate Validity starts Începutul valabilității +certificate Validity ends Sfârșitul valabilității +certificate Public key Cheie publică +certificate Basic constraints Constrângeri de bază +certificate Key usage Utilizare cheie +certificate Self-signed Autosemnat +certificate SHA-1 digest Rezumat SHA-1 +certificate SHA-256 digest Rezumat SHA-256 + Certificate authority Autoritate de certificare + End entity Entitate finală + Float panel Panou flotant + Move to group Mutare în grup + Panels Panouri + Resize panel window Redimensionare fereastră panou + Resize panels Redimensionare panouri + Grab bag Diverse + No contributor data was built into this copy. Această copie nu include date despre contribuitori. + No model credits were built into this copy. Această copie nu include mențiuni despre modele. + Reverse the order Inversare ordine + Show Afișare + Sort Sortare + Table Tabel + The field {name} no longer exists. Câmpul {name} nu mai există. + {n} contributors · {c} commits {n} contribuitori · {c} commit-uri + Username Nume utilizator + Display name Nume afișat + Real name Nume real + Name (A–Z) Nume (A–Z) + Merged PRs PR-uri integrate + PRs PR-uri + Commits Commit-uri + Lines added Linii adăugate + +LOC +LOC + Lines deleted Linii șterse + −LOC −LOC + Line delta Diferență linii + ΔLOC ΔLOC + Binary assets added Resurse binare adăugate + +Bin +Bin + Binary assets removed Resurse binare eliminate + −Bin −Bin + First commit Primul commit + First Primul + Last commit Ultimul commit + Last Ultimul + Company Companie + Model Model + Version Versiune + % of all commits % din toate commit-urile + Lines +/− Linii +/− + @{login}: {prs} PRs, {commits} commits, +{added} / −{deleted} lines (Δ {delta}), +{bin_added} / −{bin_deleted} binary assets, {first} – {last} @{login}: {prs} PR-uri, {commits} commit-uri, +{added} / −{deleted} linii (Δ {delta}), +{bin_added} / −{bin_deleted} resurse binare, {first} – {last} + of {name} din {name} + of {pages} din {pages} + on page {label} pe pagina {label} + open to see what it will include deschideți pentru a vedea ce va include + ships in milestone {m} vine în etapa {m} + signature semnătura + sorted ascending sortat crescător + sorted descending sortat descrescător + to până la + to {n} până la {n} + watermark filigran + yyyy or yy year · m or mm month · mmm or mmmm month name · d or dd day · ddd or dddd weekday. H, h, M, s and t are time letters and can't be used on their own: put {escape} before a letter to show it as is. yyyy sau yy an · m sau mm lună · mmm sau mmmm numele lunii · d sau dd zi · ddd sau dddd ziua săptămânii. H, h, M, s și t sunt litere de timp și nu pot fi folosite singure: puneți {escape} înaintea unei litere pentru a o afișa ca atare. + {c} of {n}{more} {c} din {n}{more} + {dpi} pixels/inch {dpi} pixeli/inch + {kind} Properties Proprietăți {kind} + {kind} field Câmp {kind} + {kind} · page {p} {kind} · pagina {p} + {kind} — click to show it on the page {kind}: faceți clic pentru a-l afișa pe pagină + {k} of {n} {k} din {n} + {label} (1 issue) {label} (1 problemă) + {label} ({n} issues) {label} ({n} probleme) + {month} {day}, {y} {day} {month} {y} + {month} {y} {month} {y} + {msg} to {dir} {msg} în {dir} + {name} (default) {name} (implicit) + {name} can't be combined: {why} {name} nu poate fi combinat: {why} + {name} is read-only {name} este doar pentru citire + {name} — unsaved changes {name}: modificări nesalvate + {n} days ago acum {n} zile + {n} differences found {n} diferențe găsite + {n} fields selected {n} câmpuri selectate + {n} files {n} fișiere + {n} files done {n} fișiere finalizate + {n} files need attention {n} fișiere necesită atenție + {n} h ago acum {n} h + {n} instances {n} apariții + {n} issues {n} probleme + {n} marks {n} marcaje + {n} match(es) marked for redaction. {n} potriviri marcate pentru anonimizare. + {n} measurements use an unsupported format and are left out. {n} măsurători folosesc un format neacceptat și sunt omise. + {n} min ago acum {n} min + {n} pages {n} pagini + {n} pages selected. {n} pagini selectate. + {n} selected {n} selectate + {n} tags {n} etichete + {n} word(s) or phrase(s) {n} cuvinte sau expresii + {n} {kind} {n} {kind} + {rule} - {status} {rule} - {status} + {s} action acțiunea {s} + {verb} Background {verb} fundal + {verb} Header and Footer {verb} antet și subsol + {verb} Watermark {verb} filigran + {verb} as "{name}" {verb} ca „{name}” + {who} in this document wants to open this address in your browser: {who} din acest document vrea să deschidă această adresă în browser: + {who} in this document wants to open your email app with this address: {who} din acest document vrea să deschidă aplicația de e-mail cu această adresă: + {words} on {pages} {words} pe {pages} + — (protection is applied when you save) — (protecția se aplică la salvare) + “{name}” has security restrictions. Enter its permissions password to lift them. „{name}” are restricții de securitate. Introduceți parola de permisiuni pentru a le elimina. + “{name}” is protected. Enter a password to open it. „{name}” este protejat. Introduceți o parolă pentru a-l deschide. +@plural {n} page|{n} pages {n} pagină|{n} pagini|{n} de pagini +@plural {n} file|{n} files {n} fișier|{n} fișiere|{n} de fișiere +@plural {n} field|{n} fields {n} câmp|{n} câmpuri|{n} de câmpuri +@plural {n} comment|{n} comments {n} comentariu|{n} comentarii|{n} de comentarii +@plural {n} result|{n} results {n} rezultat|{n} rezultate|{n} de rezultate +@plural {n} field name collides with earlier files and will be renamed: {list}|{n} field names collide with earlier files and will be renamed: {list} {n} nume de câmp intră în conflict cu fișierele anterioare și va fi redenumit: {list}|{n} nume de câmpuri intră în conflict cu fișierele anterioare și vor fi redenumite: {list}|{n} de nume de câmpuri intră în conflict cu fișierele anterioare și vor fi redenumite: {list} +@plural {n} object selected|{n} objects selected {n} obiect selectat|{n} obiecte selectate|{n} de obiecte selectate +@plural Downloaded {n} PDF|Downloaded {n} PDFs S-a descărcat {n} PDF|S-au descărcat {n} PDF-uri|S-au descărcat {n} de PDF-uri +key Ctrl Ctrl +key Shift Shift +key Delete Delete +key Esc Esc +key Home Home +key End End +key Space Spațiu + Minimize Minimizare + Maximize Maximizare + Restore Restabilire + Use system title bar Folosire bară de titlu a sistemului + Show a basic title bar for the window buttons instead of the tab strip. GNOME doesn't draw title bars for apps, so this one doesn't follow its theme. Afișează o bară de titlu simplă pentru butoanele ferestrei în locul barei de file. GNOME nu desenează bare de titlu pentru aplicații, așa că aceasta nu urmează tema sa. + Allow Permitere + Only allow this if you trust the source document. Permiteți acest lucru doar dacă aveți încredere în documentul sursă. + Open this local PDF? Deschideți acest PDF local? + This document is trying to open a local file: Acest document încearcă să deschidă un fișier local: + Move tag earlier Mutare etichetă mai devreme + Move tag later Mutare etichetă mai târziu + 4 x 6 in label (101.6 x 152.4 mm) Etichetă 4 x 6 inch (101,6 x 152,4 mm) + Characters Caractere + Characters without spaces Caractere fără spații + Collapse all pages Restrângere toate paginile + Counting words… {n} pages read Se numără cuvintele… {n} pagini citite + Create Link… Creare link… + Crop Image Decupare imagine + Current page only Doar pagina curentă + Cut Image Decupare imagine (tăiere) + Cuts each page to its printed area, turns it upright and fits it to the sheet without stretching. One label per sheet. Taie fiecare pagină la zona imprimată, o îndreaptă și o potrivește pe foaie fără a o întinde. O etichetă pe foaie. + DN: DN: + Date: Data: + Digitally signed by Semnat digital de + Exclude image/OCR text Exclude textul din imagini/OCR + Exclude tagged code blocks Exclude blocurile de cod etichetate + Exclude tagged tables Exclude tabelele etichetate + Exclusions use PDF tags. Untagged tables and code remain included. Image exclusion also removes invisible text. Excluderile folosesc etichetele PDF. Tabelele și codul neetichetate rămân incluse. Excluderea imaginilor elimină și textul invizibil. + Expand all pages Extindere toate paginile + Fill colour: Culoare umplere: + Find untagged content Găsire conținut neetichetat + Font size Dimensiune font + Found {n} untagged content problems. Au fost găsite {n} probleme de conținut neetichetat. + Full Screen Ecran complet + Hide hover previews for highlights without comment text Ascunde previzualizările la trecerea mouse-ului pentru evidențierile fără text de comentariu + Location: Locație: + Make Properties Default Proprietățile devin implicite + Make properties default Proprietățile devin implicite + Mark as artifact Marcare ca artefact + Mark content as artifact Marcare conținut ca artefact + Merge image fragments Unificare fragmente de imagine + Mobile Mobil + New file only Doar fișierul nou + New file: {name} Fișier nou: {name} + No printers were found. Check that the printer is installed and the print spooler is running, then open Print again. Nu s-a găsit nicio imprimantă. Verificați că imprimanta este instalată și că serviciul de imprimare (print spooler) rulează, apoi deschideți din nou Imprimare. + No untagged content was found. Nu s-a găsit conținut neetichetat. + Not now Nu acum + Old file: {name} Fișier vechi: {name} + Opacity: Opacitate: + Open in Full Screen mode? Deschideți în modul Ecran complet? + Optimizing… merging image fragments Se optimizează… unificare fragmente de imagine + Outline colour: Culoare contur: + Page properties Proprietăți pagină + Pages counted Pagini numărate + Pages selected Pagini selectate + Print as image Imprimare ca imagine + Reason: Motiv: + Recognize Text… Recunoaștere text… + Redact Image Anonimizare imagine + Redaction mark appearance Aspectul marcajului de anonimizare + Remove Crop Eliminare decupare + Remove this leaf tag from reading order and mark its direct content as an artifact Elimină această etichetă terminală din ordinea de citire și marchează conținutul ei direct ca artefact + Resolution: Rezoluție: + Save anyway Salvare oricum + Save over the changed file? Salvați peste fișierul modificat? + Scroll speed (mouse wheel and arrow keys) Viteza de derulare (rotița mouse-ului și tastele săgeți) + Sending sheet {s} of {n} to {printer}… Se trimite foaia {s} din {n} la {printer}… + Set page transitions Setare tranziții pagini + Shown while the pointer is over a mark. Se afișează cât timp cursorul este deasupra unui marcaj. + Side by side Una lângă alta + Some content could not be classified safely and was kept in the count. O parte din conținut nu a putut fi clasificat sigur și a fost păstrat în numărătoare. + Some pages contain no countable text. Scanned images need OCR first. Unele pagini nu conțin text care poate fi numărat. Imaginile scanate au nevoie întâi de OCR. + Standard Standard + Tag form fields Etichetare câmpuri de formular + The labels are in English: the signature's font can't draw them in this language. Etichetele sunt în engleză: fontul semnăturii nu le poate desena în această limbă. + The password must have at least 8 characters. Parola trebuie să aibă cel puțin 8 caractere. + This document asks to open in Full Screen mode: the page fills the screen and nothing else shows. Press Esc at any time to leave it. Acest document cere să se deschidă în modul Ecran complet: pagina umple ecranul și nu se mai afișează nimic altceva. Apăsați Esc oricând pentru a ieși. + This file changed on disk. Reload shows the new version and drops your unsaved changes; Save replaces it with this version. Acest fișier s-a modificat pe disc. Reîncărcare afișează noua versiune și renunță la modificările nesalvate; Salvare o înlocuiește cu această versiune. + Trim the picture with its handles; Enter or Done applies Tăiați imaginea cu mânerele ei; Enter sau Gata aplică + Turn upside down (180°) Întoarcere cu susul în jos (180°) + Use it when a printer skips text, shading or transparency. The print is no longer searchable text; with Print in grayscale, the pictures are grey. Folosiți-o când o imprimantă omite text, umbriri sau transparență. Imprimarea nu mai conține text în care se poate căuta; cu Imprimare în tonuri de gri, imaginile sunt gri. + What takes up the space in this file, by kind of content. Ce ocupă spațiul în acest fișier, pe tipuri de conținut. + Word count Număr de cuvinte + Word counting stopped unexpectedly. Numărarea cuvintelor s-a oprit neașteptat. + Word count… Număr de cuvinte… + Words Cuvinte + “{name}” changed on disk after it was opened or last saved. Saving now replaces that newer version with this one. „{name}” s-a modificat pe disc după ce a fost deschis sau salvat ultima dată. Salvarea acum înlocuiește acea versiune mai nouă cu aceasta. +@id file.word_count Număr de cuvinte… +theme Appearance Aspect + You are viewing revision {rev} of “{from}”. It is a snapshot: changes here won't affect the original. Vizualizați revizia {rev} a „{from}”. Este o copie instantanee: modificările făcute aici nu afectează originalul. + You are viewing the signed version of “{from}” (revision {rev}). It is a snapshot: changes here won't affect the original. Vizualizați versiunea semnată a „{from}” (revizia {rev}). Este o copie instantanee: modificările făcute aici nu afectează originalul. + the name is not a plain file name numele nu este un nume simplu de fișier diff --git a/crates/ui-egui/tests/fonts.rs b/crates/ui-egui/tests/fonts.rs index 9cfa36c8a..85cb12e24 100644 --- a/crates/ui-egui/tests/fonts.rs +++ b/crates/ui-egui/tests/fonts.rs @@ -318,6 +318,7 @@ fn primary_ui_fonts_cover_latin_and_cyrillic_catalogs() { ("sl", include_str!("../src/i18n/sl.tsv")), ("lt", include_str!("../src/i18n/lt.tsv")), ("vi", include_str!("../src/i18n/vi.tsv")), + ("ro", include_str!("../src/i18n/ro.tsv")), ] { let mut text = String::from("áčďéěíňóřšťúůýžÁČĎÉĚÍŇÓŘŠŤÚŮÝŽãõçâêôàÃÕÇÂÊÔÀñÑüÜäÄöÖőűß„“¿¡«»…ґҐєЄіІїЇәғқңөұүһӘҒҚҢӨҰҮҺ"); for line in catalog.lines().filter(|l| !l.starts_with('#')) { diff --git a/docs/localization-parity.md b/docs/localization-parity.md index 995293af3..5aa3545e8 100644 --- a/docs/localization-parity.md +++ b/docs/localization-parity.md @@ -70,13 +70,11 @@ none has translated help. Vietnamese's **To `full`** hours are therefore residua | Greek | `el` | 2,341 entries | partial | no | | Turkish | `tr` | 2,313 entries | partial | yes | | Lithuanian | `lt` | 2,585 entries | partial; community native-speaker review ([#1401](https://github.com/storytold/pdfcraft/pull/1401)) | no | +| Romanian | `ro` | 2,673 entries (every bundled key) | partial; AI-assisted, not yet reviewed line by line by a native speaker | no | -**14 other languages** ship (22 catalogs plus English = **23** interface languages in Preferences). +**15 other languages** ship (23 catalogs plus English = **24** interface languages in Preferences). The entry counts without percentages were measured on 2026-10-12–13; they are not percentages of the older 2,143-key snapshot above. Their presence does not imply a detailed linguistic or runtime review. Acrobat languages PdfCraft lacks: Danish, Dutch, Finnish, Norwegian, Swedish, Hebrew. Vietnamese is shipped here but not by Acrobat. -**14 other languages** ship (21 catalogs plus English, 22 interface languages in Preferences). -The entry counts without percentages were measured on 2026-10-12 (Italian on 2026-10-14); they are not percentages of the older 2,143-key snapshot above. Their presence does not imply a detailed linguistic or runtime review. -Acrobat languages PdfCraft lacks: Danish, Dutch, Finnish, Norwegian, Swedish, Hebrew. ## Revision history @@ -84,5 +82,6 @@ Acrobat languages PdfCraft lacks: Danish, Dutch, Finnish, Norwegian, Swedish, He |---|---|---| | 2026-10-13 | minor | Vietnamese (`vi`) catalog: 2,591 entries (100% of current key union + `theme`/`Appearance`); twelve-language mean ≈ 68%; native-speaker community review; registered with `plural_none` | | 2026-10-14 | minor | Italian: 2,528 entries after adding the 201 keys the other catalogs had and the code looks up | +| 2026-10-15 | minor | Romanian (`ro`) catalog: 2,673 entries (every bundled key); three plural forms (`plural_ro`); not one of the twelve key languages, so the mean is unchanged | | 2026-10-12 | minor | Added current counts for Kazakh, Polish, Slovenian, Greek, Turkish and Lithuanian; retained existing language assessments and the original percentage snapshot | | 2026-10-10 | major | Created. Catalog counts measured from `crates/ui-egui/src/i18n/*.tsv` against the 2,143-key union; Acrobat's localizations from its bundle's `.lproj` and Sequences folder names | diff --git a/docs/localization.md b/docs/localization.md index 657e2eb24..5fc0ebfe0 100644 --- a/docs/localization.md +++ b/docs/localization.md @@ -1,10 +1,10 @@ # Interface language -Choose **Menu > Edit > Preferences…** (Command-comma on macOS, Ctrl-comma elsewhere) **> Interface language** and select **Auto**, **English**, **日本語**, **简体中文**, **繁體中文**, **Čeština**, **Português (Brasil)**, **Deutsch**, **Español**, **Français**, **Русский**, **Қазақша**, **Български**, **తెలుగు**, **Magyar**, **Українська**, **Italiano**, **العربية**, **Polski**, **Slovenščina**, **Ελληνικά**, **Türkçe**, **Lietuvių** or **Tiếng Việt**. The change applies immediately and persists between launches. Command ids, document contents and file names are unchanged. +Choose **Menu > Edit > Preferences…** (Command-comma on macOS, Ctrl-comma elsewhere) **> Interface language** and select **Auto**, **English**, **日本語**, **简体中文**, **繁體中文**, **Čeština**, **Português (Brasil)**, **Deutsch**, **Español**, **Français**, **Русский**, **Қазақша**, **Български**, **తెలుగు**, **Magyar**, **Українська**, **Italiano**, **العربية**, **Polski**, **Slovenščina**, **Ελληνικά**, **Türkçe**, **Lietuvių**, **Tiếng Việt** or **Română**. The change applies immediately and persists between launches. Command ids, document contents and file names are unchanged. Displayed keyboard shortcuts use the same active interface language. For example, German shows `Strg+K` and `Strg+Umschalt+S` in the toolbar, menus, command palette, tooltips and Keyboard shortcuts dialog; macOS keeps its modifier symbols (`⌘`, `⇧`, `⌃`). Key names have their own `key` catalog context, so the Delete key can read `Entf` while the command remains `Löschen`. A missing key-name entry falls back to the English key name. Actual bindings and machine-facing command ids remain stable. -**Auto** (the default) follows the system language: `LC_ALL`, `LC_MESSAGES` or `LANG`, then the preferred-languages list on macOS. Any Portuguese locale (`pt_BR`, `pt_PT`) uses the Brazilian catalog, any French locale (`fr`, `fr_FR`, `fr_CA`, `fr_BE`) the French one, any German locale (`de`, `de_DE`, `de_AT`, `de_CH`) the German one, and Chinese locales for Taiwan, Hong Kong and Macau (`zh_TW`, `zh_HK`, `zh_MO`, `zh-Hant`) the Traditional Chinese one; other Chinese locales (`zh`, `zh_CN`, `zh_SG`, `zh-Hans`) the Simplified Chinese one. Telugu locales (`te`, `te_IN`) use the Telugu catalog, Bulgarian locales (`bg`, `bg_BG`) the Bulgarian one, and Hungarian locales (`hu`, `hu_HU`) the Hungarian one, and Ukrainian locales (`uk`, `uk_UA`) the Ukrainian one, and Italian locales (`it`, `it_IT`, `it_CH`) the Italian one, and Arabic locales (`ar`, `ar_MA`, `ar_EG`, `ar_SA`, …) the Arabic one, and Turkish locales (`tr`, `tr_TR`) the Turkish one, and Slovenian locales (`sl`, `sl_SI`) the Slovenian one, and Vietnamese locales (`vi`, `vi_VN`) the Vietnamese one. A system language without a catalog shows English. On Windows, **Auto** uses the Windows display languages, in preference order, when no supported locale is selected by those environment variables. Neutral `C`/`POSIX` locale values (including `C.UTF-8`) inherited from a launcher do not override the Windows display language; explicitly named supported locales such as `fr_FR.UTF-8` still do. The query asks Windows directly (`GetUserPreferredUILanguages`, through the `sys-locale` crate) without starting a process, and is cached for the process. If detection fails or the display language has no catalog, PdfCraft shows English. +**Auto** (the default) follows the system language: `LC_ALL`, `LC_MESSAGES` or `LANG`, then the preferred-languages list on macOS. Any Portuguese locale (`pt_BR`, `pt_PT`) uses the Brazilian catalog, any French locale (`fr`, `fr_FR`, `fr_CA`, `fr_BE`) the French one, any German locale (`de`, `de_DE`, `de_AT`, `de_CH`) the German one, and Chinese locales for Taiwan, Hong Kong and Macau (`zh_TW`, `zh_HK`, `zh_MO`, `zh-Hant`) the Traditional Chinese one; other Chinese locales (`zh`, `zh_CN`, `zh_SG`, `zh-Hans`) the Simplified Chinese one. Telugu locales (`te`, `te_IN`) use the Telugu catalog, Bulgarian locales (`bg`, `bg_BG`) the Bulgarian one, and Hungarian locales (`hu`, `hu_HU`) the Hungarian one, and Ukrainian locales (`uk`, `uk_UA`) the Ukrainian one, and Italian locales (`it`, `it_IT`, `it_CH`) the Italian one, and Arabic locales (`ar`, `ar_MA`, `ar_EG`, `ar_SA`, …) the Arabic one, and Turkish locales (`tr`, `tr_TR`) the Turkish one, and Slovenian locales (`sl`, `sl_SI`) the Slovenian one, and Vietnamese locales (`vi`, `vi_VN`) the Vietnamese one, and Romanian locales (`ro`, `ro_RO`, `ro-RO`, `ro_MD`) the Romanian one. A system language without a catalog shows English. On Windows, **Auto** uses the Windows display languages, in preference order, when no supported locale is selected by those environment variables. Neutral `C`/`POSIX` locale values (including `C.UTF-8`) inherited from a launcher do not override the Windows display language; explicitly named supported locales such as `fr_FR.UTF-8` still do. The query asks Windows directly (`GetUserPreferredUILanguages`, through the `sys-locale` crate) without starting a process, and is cached for the process. If detection fails or the display language has no catalog, PdfCraft shows English. The control channel exposes the setting through `ui.set`: @@ -12,11 +12,9 @@ The control channel exposes the setting through `ui.set`: {"method":"ui.set","params":{"key":"language","value":"ja"}} ``` -The value is `auto` or a language code (`en`, `ja`, `zh-hans`, `zh-hant`, `cs`, `pt-br`, `de`, `es`, `fr`, `ru`, `kk`, `bg`, `te`, `hu`, `uk`, `it`, `ar`, `pl`, `sl`, `el`, `tr`, `lt` or `vi`), in any case. `ui.state` reports `language` as written in the preferences (`auto`, `en`, `ja`, `zh-hans`, `zh-hant`, `cs`, `pt-br`, `de`, `es`, `fr`, `ru`, `kk`, `bg`, `te`, `hu`, `uk`, `it`, `ar`, `pl`, `sl`, `el`, `tr`, `lt` or `vi`). Unknown values return an error without changing the current setting. Preferences saved before this setting existed follow the system language. +The value is `auto` or a language code (`en`, `ja`, `zh-hans`, `zh-hant`, `cs`, `pt-br`, `de`, `es`, `fr`, `ru`, `kk`, `bg`, `te`, `hu`, `uk`, `it`, `ar`, `pl`, `sl`, `el`, `tr`, `lt`, `vi` or `ro`), in any case. `ui.state` reports `language` as written in the preferences (`auto`, `en`, `ja`, `zh-hans`, `zh-hant`, `cs`, `pt-br`, `de`, `es`, `fr`, `ru`, `kk`, `bg`, `te`, `hu`, `uk`, `it`, `ar`, `pl`, `sl`, `el`, `tr`, `lt`, `vi` or `ro`). Unknown values return an error without changing the current setting. Preferences saved before this setting existed follow the system language. -Dialogs, panels, menus, notices and history labels go through the catalog (`tl!`). Most shipped catalogs (Japanese, Chinese, Russian, Bulgarian, German, Spanish, French, Telugu, Hungarian, Ukrainian, Italian, Brazilian Portuguese, Arabic, Slovenian, Kazakh, Polish, Greek, Turkish, Lithuanian, Vietnamese and others) cover the current localizable surface (about 2,000–2,600 entries each); Czech still covers mainly the menus. Untranslated labels use English. Error details that come from the engine or the operating system are shown as they are, inside a translated frame ("操作「…」に失敗しました: …"). The command palette matches the translated label, the English label and the command id. Vertical Japanese PDF rendering is an existing viewer feature; this change does not add vertical text editing. Document contents, filenames, CLI/MCP/control protocol strings and external help stay outside the catalog. Per-language coverage, script support and what each language still needs are in [localization-parity.md](localization-parity.md). -Dialogs, panels, menus, notices and history labels go through the catalog (`tl!`). Japanese, Traditional Chinese, Simplified Chinese, Russian, Bulgarian, German, Spanish, French, Telugu, Hungarian, Ukrainian, Brazilian Portuguese and Arabic translate them (about 2,000–2,140 entries each), and Italian has 2,528 entries; Czech and Turkish cover the menus so far. Untranslated labels use English. Error details that come from the engine or the operating system are shown as they are, inside a translated frame ("操作「…」に失敗しました: …"). The command palette matches the translated label, the English label and the command id. Vertical Japanese PDF rendering is an existing viewer feature; this change does not add vertical text editing. Per-language coverage, script support and what each language still needs are in [localization-parity.md](localization-parity.md). -Dialogs, panels, menus, notices and history labels go through the catalog (`tl!`). Japanese, Traditional Chinese, Simplified Chinese, Russian, Bulgarian, German, Spanish, French, Telugu, Hungarian, Ukrainian, Brazilian Portuguese, Arabic and Slovenian translate them (about 2,000–2,190 entries each), and Italian has 2,528 entries; Czech covers the menus so far. Untranslated labels use English. Error details that come from the engine or the operating system are shown as they are, inside a translated frame ("操作「…」に失敗しました: …"). The command palette matches the translated label, the English label and the command id. Vertical Japanese PDF rendering is an existing viewer feature; this change does not add vertical text editing. Per-language coverage, script support and what each language still needs are in [localization-parity.md](localization-parity.md). +Dialogs, panels, menus, notices and history labels go through the catalog (`tl!`). Most shipped catalogs (Japanese, Chinese, Russian, Bulgarian, German, Spanish, French, Telugu, Hungarian, Ukrainian, Italian, Brazilian Portuguese, Arabic, Slovenian, Kazakh, Polish, Greek, Turkish, Lithuanian, Vietnamese, Romanian and others) cover the current localizable surface (about 2,000–2,700 entries each); Czech still covers mainly the menus. Untranslated labels use English. Error details that come from the engine or the operating system are shown as they are, inside a translated frame ("操作「…」に失敗しました: …"). The command palette matches the translated label, the English label and the command id. Vertical Japanese PDF rendering is an existing viewer feature; this change does not add vertical text editing. Document contents, filenames, CLI/MCP/control protocol strings and external help stay outside the catalog. Per-language coverage, script support and what each language still needs are in [localization-parity.md](localization-parity.md). Whole sentences that the layers below word — what the accessibility checker found, what the PDF/A verifier reports, what a signature's details say, what is wrong with the pages to print, what an edit is called in the history — are translated too, because those layers hand the sentence over apart from the document's own words. See [Sentences the engine words](#sentences-the-engine-words). @@ -26,6 +24,8 @@ The Lithuanian catalog has 2,585 entries and three integer plural forms. Calenda The Vietnamese catalog has 2,591 entries and one plural form (`plural_none`). Preferences theme `Appearance` uses context `theme` → `Giao diện`; object/comment/signature appearance stays plain `Diện mạo`. Form fields use `Trường`; redaction apply wording states permanent removal. Calendar months are numeric (`Tháng 1`…`12` / `tháng 1`…`12`). Coverage tests require every current command, UI literal, bundled key and credit label. A native Vietnamese-speaking contributor has reviewed the translation. Status stays `partial`: no translated help, and engine/OS details stay English inside a translated frame. +The Romanian catalog (`ro`, Română) has 2,673 entries and three plural forms (`plural_ro`, CLDR `ro`): `one` for 1, `few` for 0 and counts whose last two digits are 1–19 ("2 pagini", "101 pagini"), `other` for the rest, written with "de" ("20 de pagini"). Commands use the noun form common in Romanian software ("Salvare", "Deschidere…"); messages address the user formally. Redaction is "Anonimizare" ("redactare" means editing in Romanian), a watermark "Filigran". Calendar month names are lowercase inside dates (`{day} {month} {y}`). The bundled Inter faces cover ă, â, î, ș, ț (comma below). Coverage tests require every bundled key. Not yet reviewed by a second native speaker; status `partial`: no translated help, and engine/OS details stay English inside a translated frame. + Edit text reads Hebrew lines in typing order and writes them back in drawing order (`crates/edit/src/bidi.rs`); letters the page's own font lacks are drawn with the craft-fonts `Hebr` face (Noto Sans Hebrew) as Type 3 glyphs, and a build without one says so. Hebrew points (niqqud) can't be written yet in Edit text. Add text (#128) draws Hebrew with the same face through the shaped path Arabic and Thai use: right to left with numbers and Latin in place, points kept on their letter, and typing order for copy and search. The craft-fonts revision pinned for CI and releases has no `Hebr` face yet, so until one is added releases report that error instead of drawing the missing letters, and refuse Hebrew in Add text. Japanese interface text uses BIZ UDPGothic from [craft-fonts](https://github.com/storytold/craft-fonts), an optional build input that every release includes (`CRAFT_FONTS_DIR`; see the README). A build made without it has no Japanese face, so Japanese labels show replacement boxes. Chinese is drawn with the same craft-fonts CJK faces (in Simplified Chinese the `Hans` faces come first, so a line never mixes faces with different baselines), so a character none of them has shows a replacement box (and every Chinese character does in a build without craft-fonts). Russian, Bulgarian, Czech, Brazilian Portuguese, German, Spanish, French, Hungarian, Italian, Turkish and Lithuanian need only the bundled Latin faces (tested in `tests/fonts.rs`). Hungarian uses the same one/other plural rule as English: 1 is singular, and every other count — including 0 — is the other form. After a numeral the noun stays singular (`1 oldal`, `2 oldal`). Telugu is drawn with a craft-fonts `Telu` face (Noto Sans Telugu, kept in the web build too), whose conjuncts egui shapes; a build without one shows Telugu labels as replacement boxes, and the release-pinned craft-fonts input has no Telugu face yet. From b4bfe2b2b5a6fa08207f81e0bba2536f05117ecd Mon Sep 17 00:00:00 2001 From: qwerin Date: Fri, 16 Oct 2026 06:27:52 +0200 Subject: [PATCH 12/33] M14: complete and review the Czech catalog MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Czech had every `tl!` literal but lacked ~220 keys the other catalogs carry: the sentences the engine words (signature details, accessibility findings and report, PDF/A problems, pages to print, history labels), the date picker's weekday heads, the certificate viewer's fields and shared buttons. All are now translated (2,674 entries). "Tag" is "tag" throughout, as the catalog's own glossary says: the Tags panel said "značky", which also names redaction marks, and "{n} tags" read "1 značek". Two new tests pin the engine wordings (with their holes), weekdays and certificate fields; both fail on the previous catalog. Co-Authored-By: Claude Opus 5.5 --- ATTRIBUTION.toml | 2 +- ROADMAP.md | 5 +- crates/ui-egui/src/i18n/cs.tsv | 269 ++++++++++++++++++++++++++++++--- crates/ui-egui/src/i18n/mod.rs | 64 ++++++++ docs/localization-parity.md | 5 +- docs/localization.md | 6 +- docs/roadmap.md | 6 +- 7 files changed, 326 insertions(+), 31 deletions(-) diff --git a/ATTRIBUTION.toml b/ATTRIBUTION.toml index db3dd6124..08f7341f2 100644 --- a/ATTRIBUTION.toml +++ b/ATTRIBUTION.toml @@ -52,7 +52,7 @@ licence = "MIT OR Apache-2.0" licence_file = "LICENSE-MIT" kind = "translation" usage = "Czech UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs" -sha256 = "5de19834f293efaea68cb6b7f51a71d320391f53345f56cfebcd73dab828b665" +sha256 = "315dcb83e419afbde61617d5d16c8338aee6eebefd4d853dc16d8b49f86e3320" [[asset]] path = "crates/ui-egui/src/i18n/pt-br.tsv" diff --git a/ROADMAP.md b/ROADMAP.md index 907beb98a..aba21f369 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -15,6 +15,7 @@ > **Last reviewed:** 2026-10-13 · **Last updated:** 2026-10-13 · **Change:** minor (M6: preserve XML/XFDF attribute whitespace; estimates unchanged) · **Target:** Adobe Acrobat Pro (Acrobat DC, continuous track 26.002.21931, macOS) > **Last reviewed:** 2026-10-14 · **Last updated:** 2026-10-14 · **Change:** minor (M1: raw-deflate fallback preserves decoding-limit errors; estimates unchanged) · **Target:** Adobe Acrobat Pro (Acrobat DC, continuous track 26.002.21931, macOS) > **Last reviewed:** 2026-10-16 | **Last updated:** 2026-10-16 | **Change:** minor (M10 #1201 partial: lossless image Decode; estimates unchanged) | **Target:** Adobe Acrobat Pro (Acrobat DC, continuous track 26.002.21931, macOS) +> **Last reviewed:** 2026-10-15 · **Last updated:** 2026-10-16 · **Change:** minor (M14: Czech catalog completed and reviewed; estimates unchanged) · **Target:** Adobe Acrobat Pro (Acrobat DC, continuous track 26.002.21931, macOS) > **Last reviewed:** 2026-10-13 · **Last updated:** 2026-10-14 · **Change:** minor (M14: the Italian catalog has every entry the other catalogs had and the code looks up; estimates unchanged) · **Target:** Adobe Acrobat Pro (Acrobat DC, continuous track 26.002.21931, macOS) > **Last reviewed:** 2026-10-14 · **Last updated:** 2026-10-14 · **Change:** minor (M3 #2080 candidate: explicit search jumps join per-tab history; rail and control-channel Back/Forward; estimates unchanged) > **Last reviewed:** 2026-10-13 · **Last updated:** 2026-10-13 · **Change:** minor (M4 #1910: Organize Pages opens on the current page; estimates unchanged) · **Target:** Adobe Acrobat Pro (Acrobat DC, continuous track 26.002.21931, macOS) @@ -149,7 +150,7 @@ union). Detail and script notes: [localization-parity.md](docs/localization-pari | Vietnamese | `vi` | 100% of current union | partial (dialogs / tooltips; no help) | Also shipped: Traditional Chinese, Russian, Bulgarian, Telugu, Hungarian, Ukrainian, Italian, -Kazakh, Polish, Slovenian, Greek, Turkish, Lithuanian and Czech (menus only): **14 more catalogs** +Kazakh, Polish, Slovenian, Greek, Turkish, Lithuanian and Czech: **14 more catalogs** (23 interface languages including English). ## Upcoming @@ -183,6 +184,7 @@ Ranked; detail and the full milestone table in [docs/roadmap.md](docs/roadmap.md - **2026-10-15 (M1, #2267 refresh):** Integrated upstream `99941daa` while retaining the raw-deflate fallback correction and all upstream progress. Only independent documentation conflicts required resolution; focused production and test files are unchanged from the previously green CI head. Estimates unchanged. - **2026-10-16 (M10, #1201 partial):** Lossless image export applies each component's Decode pair. Indexed values round and clip before palette lookup. Color-key masks keep raw samples. The existing 16-bit precision limit remains. JPEG and mask Decode, ICC transforms, and calibrated colors remain outside this fix. Estimates unchanged. - **2026-10-16 (M3, #2739):** Wrapped revision buttons stay above Binding in Document Properties. A synthetic regression checks control bounds and opens a saved revision at two viewport widths. Estimates unchanged. +- **2026-10-16 (M14, localization):** Czech goes from menus-and-dialogs to the whole surface: 2,674 entries after adding the ~220 keys the other catalogs had -- the sentences the engine words (signature details, accessibility findings and report, PDF/A problems, pages to print, history labels), the date picker's weekday heads, the certificate viewer's fields and shared buttons. "Tag" is *tag* throughout (the Tags panel said *značky*, which is also a redaction mark), and "{n} tags" no longer reads "1 značek". Two new catalog tests. Estimates unchanged. - **2026-10-15 (M2, gap 12):** `cargo xtask text-oracle` scores reading order as well as word F1: the longest common subsequence of the two word sequences over the longer one. F1 is a bag of words and cannot see order at all -- measuring #2431, a change that moves text and nothing else, it called 26 of the 29 files whose output changed identical, where the order score separated 18 improvements from 6 regressions. Reports, does not gate; a disagreement with Poppler, not a verdict. Estimates unchanged. - **2026-10-15 (M2, #2305 follow-up):** WinAnsiEncoding 0xA0 and 0xAD and MacRomanEncoding 0xCA extract as the ordinary space and hyphen Annex D.2 names them, in the vendored hayro tables (patch 30) as well as `crates/fonts`, so search, copy and redaction see characters that were hidden behind U+00A0 and U+00AD. Across the pdf.js corpus the soft hyphens we extract fall 117 to 13 and the non-breaking spaces 30 to 26; the rest come from `/ToUnicode`. An explicit `/Differences` name keeps its glyph list value, as pdftotext does. Estimates unchanged. - **2026-10-15 (M12, XFA, #2574):** A `pageArea` with no `` repeats without limit instead of taking a subform's default of one use, so a later page area with `occur max="1"` is no longer drawn (with a copy of its fields) over every body page. A page area's `occur min` is honoured too: one the body never reached gets the pages it still needs after the body (the once-only closing page of the public ISCIII form, with its button, is page 7 of 7). Acrobat Pro shows the form as 7 pages with that page last, as here; when printing, Acrobat keeps that page but leaves it blank (`relevant="-print"` on the page area), which PdfCraft does not do yet. Synthetic regression tests. Estimates unchanged. @@ -539,6 +541,7 @@ Newest first: the date, what moved, and the new overall estimate. | 2026-10-15 | minor | M6: Plain AcroForm XML imports retain all direct text around comments and processing instructions, including CDATA and character references. Estimates unchanged. | | 2026-10-13 | minor | M6: XML/XFDF attribute whitespace survives form and comment export/import; estimates unchanged | | 2026-10-14 | minor | M1: raw-deflate fallback preserves decoding-limit errors in strict and tolerant decoding; synthetic filter and COS stream regressions. Estimates unchanged. | +| 2026-10-16 | minor | M14: Czech catalog completed (2,674 entries) and "tag" terminology unified. Estimates unchanged. | | 2026-10-13 | minor | M9: separate page validation overlays preserve signature artwork, and snapshot tabs reuse instead of multiplying; baked captions remain unchanged (#79 open); estimates unchanged | | 2026-10-16 | minor | M10 #1201 partial: lossless image export applies component Decode pairs and Indexed mapping. Estimates unchanged. | | 2026-10-15 | minor | M6: CSV export and spreadsheet merging quote tabs, and import distinguishes quoted tabs from TSV delimiters without changing field identities. Estimates unchanged. | diff --git a/crates/ui-egui/src/i18n/cs.tsv b/crates/ui-egui/src/i18n/cs.tsv index 993632552..7a614e11d 100644 --- a/crates/ui-egui/src/i18n/cs.tsv +++ b/crates/ui-egui/src/i18n/cs.tsv @@ -2396,20 +2396,20 @@ animation effects Off Vypnuto Couldn't print from the browser ({e}); downloaded {name} to print instead Z prohlížeče nelze tisknout ({e}); místo toho byl k tisku stažen soubor {name} Tools panel side Strana panelu nástrojů Add comment Přidat komentář - Change tag properties Změnit vlastnosti značky + Change tag properties Změnit vlastnosti tagu # Accessibility structure tags. - Tags panel Panel značek - Tags Značky - Tag type Typ značky + Tags panel Panel tagů + Tags Tagy + Tag type Typ tagu Actual text Skutečný text - Find a tag Najít značku - Collapse tag Sbalit značku - Expand tag Rozbalit značku + Find a tag Najít tag + Collapse tag Sbalit tag + Expand tag Rozbalit tag Revert changes Vrátit změny - Save tag properties Uložit vlastnosti značky - This document has no editable structure tags. Tento dokument nemá upravitelné značky struktury. - {n} tags {n} značek - Save or revert changes before selecting another tag. Před výběrem jiné značky změny uložte nebo vraťte. + Save tag properties Uložit vlastnosti tagu + This document has no editable structure tags. Tento dokument nemá žádné upravitelné tagy struktury. + {n} tags Tagy: {n} + Save or revert changes before selecting another tag. Před výběrem jiného tagu změny uložte nebo vraťte. Left out: {names} Vynecháno: {names} already a PDF již je PDF no unused output name žádný volný název výstupního souboru @@ -2454,8 +2454,8 @@ animation effects Off Vypnuto Not now Teď ne Open this local PDF? Otevřít tento místní soubor PDF? This document is trying to open a local file: Tento dokument se pokouší otevřít místní soubor: - Move tag earlier Přesunout značku dříve - Move tag later Přesunout značku později + Move tag earlier Přesunout tag dříve + Move tag later Přesunout tag později # Historical snapshot notice bar (View signed version / View revision). You are viewing the signed version of “{from}” (revision {rev}). It is a snapshot: changes here won't affect the original. Prohlížíte si podepsanou verzi dokumentu „{from}“ (revize {rev}). Je to snímek: změny zde neovlivní originál. @@ -2463,19 +2463,19 @@ animation effects Off Vypnuto Turn upside down (180°) Otočit vzhůru nohama (180°) 4 x 6 in label (101.6 x 152.4 mm) Štítek 4 × 6 in (101,6 × 152,4 mm) Cuts each page to its printed area, turns it upright and fits it to the sheet without stretching. One label per sheet. Ořízne každou stránku na potištěnou oblast, otočí ji svisle a přizpůsobí listu bez deformace. Jeden štítek na list. - Find untagged content Najít neoznačený obsah - No untagged content was found. Nebyl nalezen žádný neoznačený obsah. - Found {n} untagged content problems. Nalezeno problémů s neoznačeným obsahem: {n}. - Tag form fields Označit pole formuláře + Find untagged content Najít neoznačkovaný obsah + No untagged content was found. Nebyl nalezen žádný neoznačkovaný obsah. + Found {n} untagged content problems. Nalezeno problémů s neoznačkovaným obsahem: {n}. + Tag form fields Označkovat formulářová pole Mark as artifact Označit jako artefakt - Remove this leaf tag from reading order and mark its direct content as an artifact Odeberte tuto značku listu z pořadí čtení a označte její přímý obsah jako artefakt + Remove this leaf tag from reading order and mark its direct content as an artifact Odebrat tento koncový tag z pořadí čtení a jeho přímý obsah označit jako artefakt Mark content as artifact Označit obsah jako artefakt Word count Počet slov Current page only Pouze aktuální stránka - Exclude tagged tables Vynechat označené tabulky - Exclude tagged code blocks Vynechat označené bloky kódu + Exclude tagged tables Vynechat označkované tabulky + Exclude tagged code blocks Vynechat označkované bloky kódu Exclude image/OCR text Vynechat text obrázků a OCR - Exclusions use PDF tags. Untagged tables and code remain included. Image exclusion also removes invisible text. Vynechávání využívá tagy PDF. Neoznačené tabulky a kód zůstávají zahrnuty. Vynechání obrázků odstraní i neviditelný text. + Exclusions use PDF tags. Untagged tables and code remain included. Image exclusion also removes invisible text. Vynechávání využívá tagy PDF. Neoznačkované tabulky a kód zůstávají zahrnuty. Vynechání obrázků odstraní i neviditelný text. Words Slova Characters Znaky Characters without spaces Znaky bez mezer @@ -2508,3 +2508,230 @@ animation effects Off Vypnuto Make properties default Nastavit vlastnosti jako výchozí Pages selected Vybrané stránky Page properties Vlastnosti stránky + +# What the layers below word for themselves (engine `WORDINGS` lists): accessibility findings and +# the saved report, PDF/A problems, signature details and the changes they name, pages to print, +# history labels. Terms: timestamp = "časové razítko", timestamp authority = "autorita časových +# razítek", signer = "podepisující osoba", byte range = "rozsah bajtů". + A font isn't embedded Písmo není vložené + A {} action isn't allowed Akce {} není povolena + A {} annotation has additional actions Anotace {} má další akce + A {} annotation has no appearance stream Anotace {} nemá datový proud vzhledu + A {} annotation isn't set to print, or is hidden Anotace {} není nastavena k tisku nebo je skrytá + Accessibility Report Zpráva o přístupnosti + Change Author Změnit: Autor + Change Keywords Změnit: Klíčová slova + Change Subject Změnit: Předmět + Change Title Změnit: Název + Create links Vytvořit odkazy + Detailed Report Podrobná zpráva + DeviceCMYK is used, but the PDF/A output intent isn't a CMYK profile Je použit DeviceCMYK, ale výstupní záměr PDF/A není profil CMYK + DeviceRGB is used, but the PDF/A output intent isn't an RGB profile Je použit DeviceRGB, ale výstupní záměr PDF/A není profil RGB + Field "{}" on page {p} has no description (tooltip) Pole „{}“ na stránce {p} nemá popis (popisek nástroje) + Filename Název souboru + Flatten Fill & Sign Sloučit Vyplnit a podepsat se stránkou + Font (unnamed) on page {p} doesn't map its characters to Unicode Písmo (bez názvu) na stránce {p} nemapuje své znaky na Unicode + Font {} on page {p} doesn't map its characters to Unicode Písmo {} na stránce {p} nemapuje své znaky na Unicode + Form field on page {p} isn't tagged Formulářové pole na stránce {p} není označkované + H{n} follows an H{d}; headings should not skip levels H{n} následuje po H{d}; nadpisy by neměly přeskakovat úrovně + No document language is set Není nastaven jazyk dokumentu + No page has text: the document appears to be images of pages Žádná stránka nemá text: dokument se zdá být tvořen obrázky stránek + Page {p} doesn't tab in structure order Stránka {p} nepřechází tabulátorem v pořadí struktury + Page {p}: {n} untagged content item Stránka {p}: neoznačkované položky obsahu: {n} + Page {p}: {n} untagged content items Stránka {p}: neoznačkované položky obsahu: {n} + Page {} has additional actions Stránka {} má další akce + PdfCraft can't check this signature yet: {}. PdfCraft zatím nedokáže tento podpis ověřit: {}. + Report created Zpráva vytvořena + Rule Name Název pravidla + Save as {level} Uložit jako {level} + Signature is invalid Podpis je neplatný + Signature is valid Podpis je platný + Signature validity is unknown Platnost podpisu je neznámá + Signing time is from the clock on the signer's computer. Čas podpisu pochází z hodin v počítači podepisující osoby. + The ECDSA signature is not in canonical DER (trailing bytes, padding or a missing sign byte); it was read anyway. Podpis ECDSA není v kanonickém DER (přebytečné bajty, výplň nebo chybějící bajt znaménka); přesto byl načten. + The ECDSA signature is the raw r and s values instead of a DER sequence; it was read anyway. Podpis ECDSA tvoří holé hodnoty r a s místo sekvence DER; přesto byl načten. + The RSA signature value does not have the length of the key's modulus (leading zero bytes dropped or added); it was read anyway. Hodnota podpisu RSA nemá délku modulu klíče (úvodní nulové bajty chybí nebo přebývají); přesto byla načtena. + The RSA signature's DigestInfo has no NULL parameter (older signers write it so); it was read anyway. DigestInfo podpisu RSA nemá parametr NULL (starší podepisovací programy jej tak zapisují); přesto byl načten. + The certificate of {} does not allow this many CA certificates below it (path length), so it is not used to vouch for {}. Certifikát {} nepovoluje pod sebou tolik certifikátů CA (délka cesty), proto se nepoužije k ručení za {}. + The certificate of {} is not a CA certificate that may issue certificates, so it is not used to vouch for {}. Certifikát {} není certifikát CA, který smí vydávat certifikáty, proto se nepoužije k ručení za {}. + The certificate of {} was not valid at the time of signing, so it is not used to vouch for {}. Certifikát {} nebyl v době podpisu platný, proto se nepoužije k ručení za {}. + The checker found problems which may prevent the document from being fully accessible. Kontrola našla problémy, které mohou bránit plné přístupnosti dokumentu. + The document has been altered or corrupted since the signature was applied. Dokument byl od připojení podpisu změněn nebo poškozen. + The document has been altered or corrupted since the timestamp was applied. Dokument byl od připojení časového razítka změněn nebo poškozen. + The document has been altered since this signature was applied in ways it does not permit ({}). Dokument byl od připojení tohoto podpisu změněn způsobem, který podpis nepovoluje ({}). + The document has been altered since this timestamp was applied in ways it does not permit ({}). Dokument byl od připojení tohoto časového razítka změněn způsobem, který razítko nepovoluje ({}). + The document has been modified since this signature was applied, but the changes are permitted ({}). Dokument byl od připojení tohoto podpisu upraven, ale změny jsou povolené ({}). + The document has been modified since this timestamp was applied, but the changes are permitted ({}). Dokument byl od připojení tohoto časového razítka upraven, ale změny jsou povolené ({}). + The document has no tags (structure tree) Dokument nemá tagy (strom struktury) + The document has no title Dokument nemá název + The document isn't marked as tagged (MarkInfo Marked) Dokument není označen jako označkovaný (MarkInfo Marked) + The document isn't tagged, so none of its content is Dokument není označkovaný, a tak není označkovaný ani žádný jeho obsah + The document's embedded revocation information shows that the signer's certificate has not been revoked. Informace o odvolání vložené v dokumentu ukazují, že certifikát podepisující osoby nebyl odvolán. + The embedded timestamp token is valid and its authority is trusted; trusted time is {}. Vložené časové razítko je platné a jeho autorita je důvěryhodná; důvěryhodný čas je {}. + The font {} isn't embedded Písmo {} není vložené + The metadata doesn't identify the file as {} Metadata neoznačují soubor jako {} + The security settings don't allow screen readers to read the text Nastavení zabezpečení nedovoluje čtečkám obrazovky číst text + The signature algorithm and the SignerInfo's digest algorithm name different hashes; the signature was made with the SignerInfo's. Algoritmus podpisu a algoritmus otisku v SignerInfo uvádějí různé hashe; podpis byl vytvořen tím ze SignerInfo. + The signature carries an unverified timestamp ({}): the timestamp authority is not in your list of trusted certificates, so the signing time claimed by the signer is used instead. Podpis nese neověřené časové razítko ({}): autorita časových razítek není ve vašem seznamu důvěryhodných certifikátů, proto se místo něj použije čas podpisu uvedený podepisující osobou. + The signature contents are not hexadecimal. Obsah podpisu není šestnáctkový. + The signature could not be checked ({}). Podpis nebylo možné zkontrolovat ({}). + The signature could not be read ({}). Podpis nebylo možné načíst ({}). + The signature could not be verified ({}). Podpis nebylo možné ověřit ({}). + The signature has no valid byte range. Podpis nemá platný rozsah bajtů. + The signature includes an embedded timestamp. Podpis obsahuje vložené časové razítko. + The signature is BER-encoded (indefinite lengths) rather than DER; it was read leniently. Podpis je kódován v BER (neurčité délky) místo DER; byl načten benevolentně. + The signature uses the legacy adbe.x509.rsa_sha1 format. Podpis používá zastaralý formát adbe.x509.rsa_sha1. + The signature value does not match the signer's certificate: the signature is corrupt. Hodnota podpisu neodpovídá certifikátu podepisující osoby: podpis je poškozený. + The signature's byte range does not exclude exactly its contents. Rozsah bajtů podpisu nevynechává přesně jeho obsah. + The signature's byte range does not match the file. Rozsah bajtů podpisu neodpovídá souboru. + The signature's timestamp token could not be verified ({}). Časové razítko podpisu nebylo možné ověřit ({}). + The signature's timestamp token does not cover the signature value. Časové razítko podpisu nepokrývá hodnotu podpisu. + The signed content is a constructed (segmented) OCTET STRING, as BER allows; it was read anyway. Podepsaný obsah je složený (segmentovaný) OCTET STRING, jak BER dovoluje; přesto byl načten. + The signer's certificate does not allow digital signatures (its key usage has neither digital signature nor non-repudiation). Certifikát podepisující osoby nepovoluje digitální podpisy (jeho použití klíče nezahrnuje digitální podpis ani nepopiratelnost). + The signer's certificate has been revoked ({}). Certifikát podepisující osoby byl odvolán ({}). + The signer's certificate has critical extensions PdfCraft does not recognize ({}). Certifikát podepisující osoby má kritická rozšíření, která PdfCraft nezná ({}). + The signer's certificate is not in the signature. Certifikát podepisující osoby není v podpisu. + The signer's certificate is not issued for signing documents (its extended key usage has no document-signing purpose). Certifikát podepisující osoby není vydán k podepisování dokumentů (jeho rozšířené použití klíče nezahrnuje podepisování dokumentů). + The signer's certificate was not valid at the time of signing. Certifikát podepisující osoby nebyl v době podpisu platný. + The signer's identity is unknown because it has not been included in your list of trusted certificates and none of its parent certificates are trusted certificates. Identita podepisující osoby je neznámá, protože není ve vašem seznamu důvěryhodných certifikátů a žádný z jejích nadřazených certifikátů není důvěryhodný. + The signer's identity is valid. Identita podepisující osoby je platná. + The timestamp authority's certificate was not valid at the time of timestamping. Certifikát autority časových razítek nebyl v době vystavení razítka platný. + The timestamp contents are not hexadecimal. Obsah časového razítka není šestnáctkový. + The timestamp has no valid byte range. Časové razítko nemá platný rozsah bajtů. + The timestamp token could not be read ({}). Časové razítko nebylo možné načíst ({}). + The timestamp token is valid and its authority is trusted. Časové razítko je platné a jeho autorita je důvěryhodná. + The timestamp token is valid, but the timestamp authority is not in your list of trusted certificates. Časové razítko je platné, ale autorita časových razítek není ve vašem seznamu důvěryhodných certifikátů. + The timestamp's byte range does not exclude exactly its contents. Rozsah bajtů časového razítka nevynechává přesně jeho obsah. + The timestamp's byte range does not match the file. Rozsah bajtů časového razítka neodpovídá souboru. + The window shows the file name, not the title (Initial View > Show) Okno zobrazuje název souboru, ne název dokumentu (Počáteční zobrazení > Zobrazit) + This document has not been modified since this signature was applied. Tento dokument nebyl od připojení tohoto podpisu upraven. + This document has not been modified since this timestamp was applied. Tento dokument nebyl od připojení tohoto časového razítka upraven. + This signature uses RIPEMD-160, a legacy 160-bit hash algorithm that is no longer recommended for signatures. It still validates, but it should not be relied on. Tento podpis používá RIPEMD-160, zastaralý 160bitový hashovací algoritmus, který se už pro podpisy nedoporučuje. Podpis se stále ověří, ale nelze na něj spoléhat. + This signature uses SHA-1, a weak hash algorithm: collisions in it have been demonstrated. It still validates because many documents signed years ago use it, but it should not be relied on. Tento podpis používá SHA-1, slabý hashovací algoritmus, u kterého byly prokázány kolize. Stále se ověří, protože jej používá mnoho dokumentů podepsaných před lety, ale nelze na něj spoléhat. + Unsigned signature field Nepodepsané podpisové pole + alternate text hides an annotation inside it alternativní text skrývá anotaci uvnitř + alternate text on an element with no page content alternativní text u prvku bez obsahu stránky + comments komentáře + document security store úložiště zabezpečení dokumentu + document structure struktura dokumentu + form fill vyplnění formuláře + its alternate text is inside another element's and will never be read jeho alternativní text je uvnitř alternativního textu jiného prvku a nikdy nebude přečten + links odkazy + metadata metadata + no alternate text chybí alternativní text + no header cells (TH) chybí buňky záhlaví (TH) + no summary chybí souhrn + not in a TR není v TR + not in a Table, THead, TBody or TFoot není v Table, THead, TBody ani TFoot + not in an L (list) není v L (seznam) + not in an LI (list item) není v LI (položka seznamu) + other changes jiné změny + page content obsah stránek + page {n} is out of range (1–{count}) stránka {n} je mimo rozsah (1–{count}) + pages added or removed přidané nebo odebrané stránky + rows have between {min} and {max} columns řádky mají {min} až {max} sloupců + the first heading is an H{n}; headings should not skip levels první nadpis je H{n}; nadpisy by neměly přeskakovat úrovně + the signed version could not be read podepsanou verzi nebylo možné načíst + {n} pages and no bookmarks Počet stránek: {n}, žádné záložky + {page} is not a page number or label {page} není číslo ani označení stránky + {ty} element on page {p}: {what} Prvek {ty} na stránce {p}: {what} + {ty} element: {what} Prvek {ty}: {what} + {} annotation on page {p} isn't tagged Anotace {} na stránce {p} není označkovaná + {} annotations aren't allowed Anotace {} nejsou povoleny + … and {n} more … a další ({n}) + +# Labels other catalogs carry (shared buttons, tooltips with key caps, the folder picker). + on page {label} na stránce {label} + of z + Add the PDFs to combine Přidejte soubory PDF ke sloučení + Added the first {n} PDFs in {folder} Přidány první soubory PDF ze složky {folder} (počet: {n}) + Always Vždy + Automatically Automaticky + Choose a file… Vybrat soubor… + Choose a folder… Vybrat složku… + Choose… Vybrat… + Color Barva + Comment Komentář + Comment and review Komentovat a revidovat + Copied to clipboard Zkopírováno do schránky + Copy to clipboard Kopírovat do schránky + Create folder Vytvořit složku + Disabled Vypnuto + Document properties (⌘D) Vlastnosti dokumentu (⌘D) + Drop PDFs or folders here, or choose them. Přetáhněte sem soubory PDF nebo složky, nebo je vyberte. + Duplicate Duplikovat + Enabled Zapnuto + Error Chyba + Every PDF in the folder Všechny soubory PDF ve složce + Every PDF in the folder and the folders inside it Všechny soubory PDF ve složce a jejích podsložkách + Folder Složka + Font Písmo + Help… Nápověda… + Import Importovat + Information Informace + Loading… Načítání… + Mouse wheel scroll speed Rychlost posouvání kolečkem myši + Move Přesunout + Never Nikdy + New bookmark (⌘B) Nová záložka (⌘B) + Next Další + Next (⌘G) Další (⌘G) + No PDFs found in {folder} Ve složce {folder} nebyly nalezeny žádné soubory PDF + No results Žádné výsledky + On Zapnuto + Open a PDF (⌘O) Otevřít PDF (⌘O) + Open folder Otevřít složku + Organize Uspořádat + Page {n} Stránka {n} + Page {n} of {total} Stránka {n} z {total} + Paste Vložit + Previous Předchozí + Previous (⇧⌘G) Předchozí (⇧⌘G) + Print (⌘P) Tisk (⌘P) + Refresh Obnovit + Rotate view clockwise (⇧⌘+) Otočit zobrazení po směru hodinových ručiček (⇧⌘+) + Save changes? Uložit změny? + Save file Uložit soubor + Search results Výsledky hledání + Select all Vybrat vše + Success Hotovo + System Podle systému + The password must have at least 6 characters. Heslo musí mít alespoň 6 znaků. + The standard fonts can't draw “{c}” ({code}). Only Western European characters can be added as text for now. Standardní písma nedokážou vykreslit „{c}“ ({code}). Jako text lze zatím přidat jen západoevropské znaky. + This file changed on disk. Reload it to see the new version; your unsaved changes will be lost. Tento soubor se na disku změnil. Načtěte ho znovu, abyste viděli novou verzi; neuložené změny budou ztraceny. + Theme Motiv + Warning Upozornění + Zoom in (⌘+) Přiblížit (⌘+) + Zoom in / out (also pinch or ⌘-scroll) Přiblížit / oddálit (také sevřením prstů nebo posouváním s ⌘) + Zoom out (⌘−) Oddálit (⌘−) +@plural {n} comment|{n} comments {n} komentář|{n} komentáře|{n} komentářů +@plural {n} file|{n} files {n} soubor|{n} soubory|{n} souborů +@plural {n} result|{n} results {n} výsledek|{n} výsledky|{n} výsledků +theme Appearance Vzhled + +# The date picker's weekday heads. +calendar weekday Su Ne +calendar weekday Mo Po +calendar weekday Tu Út +calendar weekday We St +calendar weekday Th Čt +calendar weekday Fr Pá +calendar weekday Sa So + +# A certificate's fields in the certificate viewer. +certificate Issued to Vydáno pro +certificate Issued by Vydal +certificate Valid from Platný od +certificate Valid to Platný do +certificate Intended usage Zamýšlené použití +certificate Serial number Sériové číslo +certificate Issuer Vydavatel +certificate Validity starts Začátek platnosti +certificate Validity ends Konec platnosti +certificate Public key Veřejný klíč +certificate Basic constraints Základní omezení +certificate Key usage Použití klíče +certificate Self-signed Samopodepsaný +certificate SHA-1 digest Otisk SHA-1 +certificate SHA-256 digest Otisk SHA-256 +certificate Version Verze diff --git a/crates/ui-egui/src/i18n/mod.rs b/crates/ui-egui/src/i18n/mod.rs index 20c0fd046..160e2c2d9 100644 --- a/crates/ui-egui/src/i18n/mod.rs +++ b/crates/ui-egui/src/i18n/mod.rs @@ -1457,6 +1457,7 @@ mod tests { "Text", "Index", "Metadata", + "metadata", "Model", "{field}: {e}", "{0}: {1}", @@ -1544,6 +1545,69 @@ mod tests { set_current(Lang::EN); } + /// Czech says everything the layers below word for themselves (see + /// `spanish_covers_what_the_engine_says`), and keeps each sentence's holes. + #[test] + fn czech_covers_what_the_engine_says() { + let cs = Lang::from_code("cs").expect("cs registered"); + let lists: [(&str, &[&str]); 8] = [ + ("accessibility finding", pdfcraft_engine::a11y::WORDINGS), + ("accessibility report", pdfcraft_engine::a11y::REPORT_WORDS), + ("PDF/A problem", pdfcraft_engine::pdfa::WORDINGS), + ("signature detail", pdfcraft_engine::sign::pdf::WORDINGS), + ("change after signing", pdfcraft_engine::sign::pdf::kind::ALL), + ("pages to print", pdfcraft_engine::print::WORDINGS), + ("edit label", pdfcraft_engine::EDIT_LABELS), + ("batch label", pdfcraft_engine::BATCH_LABELS), + ]; + for (what, list) in lists { + assert!(!list.is_empty(), "no {what} wordings to cover"); + for wording in list { + assert!(has(cs, wording), "missing {what}: {wording}"); + let said = tr(cs, wording); + assert_eq!(wording.matches("{}").count(), said.matches("{}").count(), "the Czech of {wording:?} loses a hole: {said:?}"); + for hole in wording.split('{').skip(1).filter_map(|rest| rest.split_once('}')).map(|(name, _)| name).filter(|n| !n.is_empty()) { + assert!(said.contains(&format!("{{{hole}}}")), "the Czech of {wording:?} loses {{{hole}}}: {said:?}"); + } + } + } + assert_eq!(tr(cs, "Signature is valid"), "Podpis je platný"); + } + + /// The date picker's weekday heads and the certificate viewer's fields are looked up in their + /// own contexts, which the `tl!` scan doesn't see: none of them may fall back to English. + #[test] + fn czech_covers_weekdays_and_certificate_fields() { + let cs = Lang::from_code("cs").expect("cs registered"); + assert_eq!( + ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"].map(|day| tr_ctx(cs, "calendar weekday", day)), + ["Ne", "Po", "Út", "St", "Čt", "Pá", "So"] + ); + assert_eq!(tr_ctx(cs, "certificate", "Subject"), "Subjekt"); + for field in [ + "Issued to", + "Issued by", + "Valid from", + "Valid to", + "Intended usage", + "Serial number", + "Issuer", + "Validity starts", + "Validity ends", + "Public key", + "Basic constraints", + "Key usage", + "Self-signed", + "SHA-1 digest", + "SHA-256 digest", + "Version", + ] { + assert_ne!(tr_ctx(cs, "certificate", field), field, "certificate field remains untranslated: {field}"); + } + assert_eq!(trn(cs, 3, "{n} file", "{n} files"), "3 soubory"); + assert_eq!(fmt(tr(cs, "{n} tags"), &[("n", "1")]), "Tagy: 1"); + } + /// Turkish covers every registered menu title and menu command label, keeps ellipses, and /// persists in preferences. #[test] diff --git a/docs/localization-parity.md b/docs/localization-parity.md index 995293af3..7b1a300db 100644 --- a/docs/localization-parity.md +++ b/docs/localization-parity.md @@ -1,7 +1,7 @@ # Localization parity > **Last reviewed:** 2026-10-10 · **Last updated:** 2026-10-13 · **Change:** minor (Vietnamese 100% of current key union; native-speaker community review; twelve-language mean ≈68%) · **Target:** Adobe Acrobat Pro (Acrobat DC, continuous track 26.002.21931, macOS) -> **Last reviewed:** 2026-10-10 · **Last updated:** 2026-10-14 · **Change:** minor (Italian count after completing its catalog) · **Target:** Adobe Acrobat Pro (Acrobat DC, continuous track 26.002.21931, macOS) +> **Last reviewed:** 2026-10-10 · **Last updated:** 2026-10-16 · **Change:** minor (Czech catalog completed and reviewed) · **Target:** Adobe Acrobat Pro (Acrobat DC, continuous track 26.002.21931, macOS) Per-language status of PdfCraft's interface against Acrobat Pro's. How translations work and how to add a language: [localization.md](localization.md). Summary in [ROADMAP.md](../ROADMAP.md). @@ -59,7 +59,7 @@ none has translated help. Vietnamese's **To `full`** hours are therefore residua | Traditional Chinese | `zh-hant` | 2,016 (94.1%) | partial (same Hans/Hant face caveat) | yes | | Russian | `ru` | 2,043 (95.3%) | partial | yes | | Bulgarian | `bg` | 2,094 (97.7%) | partial | no | -| Czech | `cs` | 135 (6.3%) | menus only | yes | +| Czech | `cs` | 2,674 entries (every key of the other catalogs, the engine's sentences, weekdays and certificate fields) | partial | yes | | Telugu | `te` | 2,058 (96.0%) | partial (the release-pinned craft-fonts has no Telugu face yet) | no | | Hungarian | `hu` | 2,126 (99.2%) | partial | yes | | Ukrainian | `uk` | 2,142 (100%) | partial | yes | @@ -82,6 +82,7 @@ Acrobat languages PdfCraft lacks: Danish, Dutch, Finnish, Norwegian, Swedish, He | Date | Change | Summary | |---|---|---| +| 2026-10-16 | minor | Czech: 2,674 entries after adding the keys the other catalogs had (the engine's sentences, weekday heads, certificate fields, shared buttons) and unifying "tag" as *tag* (not *značka*, which is a redaction mark) | | 2026-10-13 | minor | Vietnamese (`vi`) catalog: 2,591 entries (100% of current key union + `theme`/`Appearance`); twelve-language mean ≈ 68%; native-speaker community review; registered with `plural_none` | | 2026-10-14 | minor | Italian: 2,528 entries after adding the 201 keys the other catalogs had and the code looks up | | 2026-10-12 | minor | Added current counts for Kazakh, Polish, Slovenian, Greek, Turkish and Lithuanian; retained existing language assessments and the original percentage snapshot | diff --git a/docs/localization.md b/docs/localization.md index 657e2eb24..b2f89fb1f 100644 --- a/docs/localization.md +++ b/docs/localization.md @@ -14,9 +14,9 @@ The control channel exposes the setting through `ui.set`: The value is `auto` or a language code (`en`, `ja`, `zh-hans`, `zh-hant`, `cs`, `pt-br`, `de`, `es`, `fr`, `ru`, `kk`, `bg`, `te`, `hu`, `uk`, `it`, `ar`, `pl`, `sl`, `el`, `tr`, `lt` or `vi`), in any case. `ui.state` reports `language` as written in the preferences (`auto`, `en`, `ja`, `zh-hans`, `zh-hant`, `cs`, `pt-br`, `de`, `es`, `fr`, `ru`, `kk`, `bg`, `te`, `hu`, `uk`, `it`, `ar`, `pl`, `sl`, `el`, `tr`, `lt` or `vi`). Unknown values return an error without changing the current setting. Preferences saved before this setting existed follow the system language. -Dialogs, panels, menus, notices and history labels go through the catalog (`tl!`). Most shipped catalogs (Japanese, Chinese, Russian, Bulgarian, German, Spanish, French, Telugu, Hungarian, Ukrainian, Italian, Brazilian Portuguese, Arabic, Slovenian, Kazakh, Polish, Greek, Turkish, Lithuanian, Vietnamese and others) cover the current localizable surface (about 2,000–2,600 entries each); Czech still covers mainly the menus. Untranslated labels use English. Error details that come from the engine or the operating system are shown as they are, inside a translated frame ("操作「…」に失敗しました: …"). The command palette matches the translated label, the English label and the command id. Vertical Japanese PDF rendering is an existing viewer feature; this change does not add vertical text editing. Document contents, filenames, CLI/MCP/control protocol strings and external help stay outside the catalog. Per-language coverage, script support and what each language still needs are in [localization-parity.md](localization-parity.md). -Dialogs, panels, menus, notices and history labels go through the catalog (`tl!`). Japanese, Traditional Chinese, Simplified Chinese, Russian, Bulgarian, German, Spanish, French, Telugu, Hungarian, Ukrainian, Brazilian Portuguese and Arabic translate them (about 2,000–2,140 entries each), and Italian has 2,528 entries; Czech and Turkish cover the menus so far. Untranslated labels use English. Error details that come from the engine or the operating system are shown as they are, inside a translated frame ("操作「…」に失敗しました: …"). The command palette matches the translated label, the English label and the command id. Vertical Japanese PDF rendering is an existing viewer feature; this change does not add vertical text editing. Per-language coverage, script support and what each language still needs are in [localization-parity.md](localization-parity.md). -Dialogs, panels, menus, notices and history labels go through the catalog (`tl!`). Japanese, Traditional Chinese, Simplified Chinese, Russian, Bulgarian, German, Spanish, French, Telugu, Hungarian, Ukrainian, Brazilian Portuguese, Arabic and Slovenian translate them (about 2,000–2,190 entries each), and Italian has 2,528 entries; Czech covers the menus so far. Untranslated labels use English. Error details that come from the engine or the operating system are shown as they are, inside a translated frame ("操作「…」に失敗しました: …"). The command palette matches the translated label, the English label and the command id. Vertical Japanese PDF rendering is an existing viewer feature; this change does not add vertical text editing. Per-language coverage, script support and what each language still needs are in [localization-parity.md](localization-parity.md). +Dialogs, panels, menus, notices and history labels go through the catalog (`tl!`). Most shipped catalogs (Japanese, Chinese, Russian, Bulgarian, German, Spanish, French, Telugu, Hungarian, Ukrainian, Italian, Brazilian Portuguese, Arabic, Slovenian, Kazakh, Polish, Greek, Turkish, Lithuanian, Vietnamese and others) cover the current localizable surface (about 2,000–2,600 entries each), and Czech (2,674 entries) covers the same surface. Untranslated labels use English. Error details that come from the engine or the operating system are shown as they are, inside a translated frame ("操作「…」に失敗しました: …"). The command palette matches the translated label, the English label and the command id. Vertical Japanese PDF rendering is an existing viewer feature; this change does not add vertical text editing. Document contents, filenames, CLI/MCP/control protocol strings and external help stay outside the catalog. Per-language coverage, script support and what each language still needs are in [localization-parity.md](localization-parity.md). +Dialogs, panels, menus, notices and history labels go through the catalog (`tl!`). Japanese, Traditional Chinese, Simplified Chinese, Russian, Bulgarian, German, Spanish, French, Telugu, Hungarian, Ukrainian, Brazilian Portuguese and Arabic translate them (about 2,000–2,140 entries each), and Italian has 2,528 entries, and Czech has 2,674 entries; Turkish covers the menus so far. Untranslated labels use English. Error details that come from the engine or the operating system are shown as they are, inside a translated frame ("操作「…」に失敗しました: …"). The command palette matches the translated label, the English label and the command id. Vertical Japanese PDF rendering is an existing viewer feature; this change does not add vertical text editing. Per-language coverage, script support and what each language still needs are in [localization-parity.md](localization-parity.md). +Dialogs, panels, menus, notices and history labels go through the catalog (`tl!`). Japanese, Traditional Chinese, Simplified Chinese, Russian, Bulgarian, German, Spanish, French, Telugu, Hungarian, Ukrainian, Brazilian Portuguese, Arabic and Slovenian translate them (about 2,000–2,190 entries each), and Italian has 2,528 entries, and Czech has 2,674 entries. Untranslated labels use English. Error details that come from the engine or the operating system are shown as they are, inside a translated frame ("操作「…」に失敗しました: …"). The command palette matches the translated label, the English label and the command id. Vertical Japanese PDF rendering is an existing viewer feature; this change does not add vertical text editing. Per-language coverage, script support and what each language still needs are in [localization-parity.md](localization-parity.md). Whole sentences that the layers below word — what the accessibility checker found, what the PDF/A verifier reports, what a signature's details say, what is wrong with the pages to print, what an edit is called in the history — are translated too, because those layers hand the sentence over apart from the document's own words. See [Sentences the engine words](#sentences-the-engine-words). diff --git a/docs/roadmap.md b/docs/roadmap.md index 9b5100f37..6972815a9 100644 --- a/docs/roadmap.md +++ b/docs/roadmap.md @@ -149,10 +149,10 @@ total matches the parity estimate. | M13 | Automation (MCP, Action Wizard, CLI) + AI providers | 60–120 | 45% | 25–45 | Done: MCP resources (document info, text, page images); headless tool table (123 tools incl. signing, optimizing, initial view, links, stamps, data exchange, comment review, forms authoring and scripts, redaction, sanitize, print, add content), opt-in MCP server over stdio, CLI `run`/`tools` (closed stdout pipes exit cleanly), UI control channel with drag. Missing: Action Wizard, AI providers
Done since: CLI run and MCP reject missing, empty, repeated and option-valued --root arguments before any tool/script execution or MCP initialization. A single-hyphen directory name remains valid; synthetic CLI regressions preserve a would-be overwritten file. `text_find` also caps the per-page match ranges it materializes at the remaining result limit plus one continuation match. CLI robustness scans visit each directory once through overlapping roots and symlink aliases. | | M12 | Accessibility, compare, measure, search, XFA | 200–380 | 30% | 90–160 | Done: new `a11y` crate with the Accessibility Checker (all 32 rules, report, Fix/Skip/Explain, options dialog and results panel, agent tools). Locatable figure, annotation and form findings highlight their page bounds.
Done since: 2D distance, perimeter and area measurements with persistent viewport calibration, snapping, live information and CSV export; a bounded text-only auto-tag proposal tool; text-only Apply writes marked content, paragraph tags and a parent tree, then opens the Tags panel for review. Missing: mixed-content and field autotag, heading/list/table/figure classification, Order/Content panels, Reading Order tool, compare, geospatial/3D measurement, search index, XFA
Done since: CLI info, text and render use dynamic XFA layout pages, with synthetic count/text/pixel and copy-permission regressions (#1645). | | M13 | Automation (MCP, Action Wizard, CLI) + AI providers | 60–120 | 45% | 25–45 | Done: MCP resources (document info, text, page images); headless tool table (123 tools incl. signing, optimizing, initial view, links, stamps, data exchange, comment review, forms authoring and scripts, redaction, sanitize, print, add content), opt-in MCP server over stdio, CLI `run`/`tools` (closed stdout pipes exit cleanly), UI control channel with drag. Missing: Action Wizard, AI providers
Done since: CLI run and MCP reject missing, empty, repeated and option-valued --root arguments before any tool/script execution or MCP initialization. A single-hyphen directory name remains valid; synthetic CLI regressions preserve a would-be overwritten file. `text_find` also caps the per-page match ranges it materializes at the remaining result limit plus one continuation match. | -| M14 | 1.0 polish: performance, localization, installers | 120–250 | 15% | 80–150 | Done: PhotoCraft's translation system (`i18n/`: TSV catalogs, `tl!`, command-id and plural entries, system-language detection, strict catalog tests); every dialog, panel and notice goes through `tl!`. Catalogs of ≈ 2,000–2,140 entries for Japanese, Simplified and Traditional Chinese, Russian, Bulgarian, German, Spanish, French, Telugu, Hungarian, Ukrainian, Brazilian Portuguese and Arabic (logical-order catalog put into display order; layout not yet mirrored); Czech covers the menus. Italian has 2,528 entries: every key of the other catalogs that the code looks up. Signed and notarized macOS builds, signed Windows installers (x64, x86, ARM64), AppImage, deb, rpm, Flatpak and FreeBSD packages. #307 (bounded large-PDF memory): shared resource indexes and parser metadata, lazy inspection, bounded caches; a 9,156-page file inspects in ≈ 1.8 s at ≈ 500 MiB instead of exceeding 10 GiB. Edits let go of the previous working file before writing the next (a 1 GiB file peaks at two copies while editing, not three; gap 13). Shortcut display uses localized modifier/key names across menus, toolbar, palette, Help and tooltips (#496). Lithuanian adds a 2,578-entry catalog and date names, reviewed by a native-speaking contributor. Validated candidate (macOS raster probe; Windows runtime unverified): the Windows policy changes only embedded JetBrains Mono; horizontal alpha-edge energy per ink improves 2.78%, 3.87% and 1.59% at 100%, 125% and 150%, and is down 0.79% at 200%. Inter is pixel-identical; layout hashes, glyph coverage and the 8 MiB atlas are unchanged. Timing and RSS ranges overlap, with no improvement claimed. Estimates unchanged. Candidate #2383 clamps GPU requests to supported limits while retaining the adapter texture extent; synthetic V3D/downlevel and Windows GPU-required tests pass, but Raspberry Pi startup is unverified. Estimates unchanged. Missing: a right-to-left layout, a Chinese UI face in releases, Hindi/Indonesian/Korean/Vietnamese, file-backed input and global memory budgets, performance budgets, keyboard-only operation Linux/Unix UI fallback fonts also use Fontconfig directories, including Nix store paths, with bounded discovery and the existing candidate allowlist; relative includes and digit-prefixed config filtering have isolated regressions. | -| M14 | 1.0 polish: performance, localization, installers | 120–250 | 15% | 80–150 | Done: PhotoCraft's translation system (`i18n/`: TSV catalogs, `tl!`, command-id and plural entries, system-language detection, strict catalog tests); every dialog, panel and notice goes through `tl!`. Catalogs of ≈ 2,000–2,140 entries for Japanese, Simplified and Traditional Chinese, Russian, Bulgarian, German, Spanish, French, Telugu, Hungarian, Ukrainian, Brazilian Portuguese and Arabic (logical-order catalog put into display order; layout not yet mirrored); Czech covers the menus. Italian has 2,528 entries: every key of the other catalogs that the code looks up. Signed and notarized macOS builds, signed Windows installers (x64, x86, ARM64), AppImage, deb, rpm, Flatpak and FreeBSD packages. #307 (bounded large-PDF memory): shared resource indexes and parser metadata, lazy inspection, bounded caches; a 9,156-page file inspects in ≈ 1.8 s at ≈ 500 MiB instead of exceeding 10 GiB. Edits let go of the previous working file before writing the next (a 1 GiB file peaks at two copies while editing, not three; gap 13). Shortcut display uses localized modifier/key names across menus, toolbar, palette, Help and tooltips (#496). Lithuanian adds a 2,578-entry catalog and date names, reviewed by a native-speaking contributor. Validated candidate (macOS raster probe; Windows runtime unverified): the Windows policy changes only embedded JetBrains Mono; horizontal alpha-edge energy per ink improves 2.78%, 3.87% and 1.59% at 100%, 125% and 150%, and is down 0.79% at 200%. Inter is pixel-identical; layout hashes, glyph coverage and the 8 MiB atlas are unchanged. Timing and RSS ranges overlap, with no improvement claimed. Estimates unchanged. Missing: a right-to-left layout, a Chinese UI face in releases, Hindi/Indonesian/Korean/Vietnamese, file-backed input and global memory budgets, performance budgets, keyboard-only operation XDG desktops use the configuration base for preferences with non-overwriting migration and original-data preservation (#1395). | +| M14 | 1.0 polish: performance, localization, installers | 120–250 | 15% | 80–150 | Done: PhotoCraft's translation system (`i18n/`: TSV catalogs, `tl!`, command-id and plural entries, system-language detection, strict catalog tests); every dialog, panel and notice goes through `tl!`. Catalogs of ≈ 2,000–2,140 entries for Japanese, Simplified and Traditional Chinese, Russian, Bulgarian, German, Spanish, French, Telugu, Hungarian, Ukrainian, Brazilian Portuguese and Arabic (logical-order catalog put into display order; layout not yet mirrored); Czech has 2,674 entries (2026-10-16). Italian has 2,528 entries: every key of the other catalogs that the code looks up. Signed and notarized macOS builds, signed Windows installers (x64, x86, ARM64), AppImage, deb, rpm, Flatpak and FreeBSD packages. #307 (bounded large-PDF memory): shared resource indexes and parser metadata, lazy inspection, bounded caches; a 9,156-page file inspects in ≈ 1.8 s at ≈ 500 MiB instead of exceeding 10 GiB. Edits let go of the previous working file before writing the next (a 1 GiB file peaks at two copies while editing, not three; gap 13). Shortcut display uses localized modifier/key names across menus, toolbar, palette, Help and tooltips (#496). Lithuanian adds a 2,578-entry catalog and date names, reviewed by a native-speaking contributor. Validated candidate (macOS raster probe; Windows runtime unverified): the Windows policy changes only embedded JetBrains Mono; horizontal alpha-edge energy per ink improves 2.78%, 3.87% and 1.59% at 100%, 125% and 150%, and is down 0.79% at 200%. Inter is pixel-identical; layout hashes, glyph coverage and the 8 MiB atlas are unchanged. Timing and RSS ranges overlap, with no improvement claimed. Estimates unchanged. Candidate #2383 clamps GPU requests to supported limits while retaining the adapter texture extent; synthetic V3D/downlevel and Windows GPU-required tests pass, but Raspberry Pi startup is unverified. Estimates unchanged. Missing: a right-to-left layout, a Chinese UI face in releases, Hindi/Indonesian/Korean/Vietnamese, file-backed input and global memory budgets, performance budgets, keyboard-only operation Linux/Unix UI fallback fonts also use Fontconfig directories, including Nix store paths, with bounded discovery and the existing candidate allowlist; relative includes and digit-prefixed config filtering have isolated regressions. | +| M14 | 1.0 polish: performance, localization, installers | 120–250 | 15% | 80–150 | Done: PhotoCraft's translation system (`i18n/`: TSV catalogs, `tl!`, command-id and plural entries, system-language detection, strict catalog tests); every dialog, panel and notice goes through `tl!`. Catalogs of ≈ 2,000–2,140 entries for Japanese, Simplified and Traditional Chinese, Russian, Bulgarian, German, Spanish, French, Telugu, Hungarian, Ukrainian, Brazilian Portuguese and Arabic (logical-order catalog put into display order; layout not yet mirrored); Czech has 2,674 entries (2026-10-16). Italian has 2,528 entries: every key of the other catalogs that the code looks up. Signed and notarized macOS builds, signed Windows installers (x64, x86, ARM64), AppImage, deb, rpm, Flatpak and FreeBSD packages. #307 (bounded large-PDF memory): shared resource indexes and parser metadata, lazy inspection, bounded caches; a 9,156-page file inspects in ≈ 1.8 s at ≈ 500 MiB instead of exceeding 10 GiB. Edits let go of the previous working file before writing the next (a 1 GiB file peaks at two copies while editing, not three; gap 13). Shortcut display uses localized modifier/key names across menus, toolbar, palette, Help and tooltips (#496). Lithuanian adds a 2,578-entry catalog and date names, reviewed by a native-speaking contributor. Validated candidate (macOS raster probe; Windows runtime unverified): the Windows policy changes only embedded JetBrains Mono; horizontal alpha-edge energy per ink improves 2.78%, 3.87% and 1.59% at 100%, 125% and 150%, and is down 0.79% at 200%. Inter is pixel-identical; layout hashes, glyph coverage and the 8 MiB atlas are unchanged. Timing and RSS ranges overlap, with no improvement claimed. Estimates unchanged. Missing: a right-to-left layout, a Chinese UI face in releases, Hindi/Indonesian/Korean/Vietnamese, file-backed input and global memory budgets, performance budgets, keyboard-only operation XDG desktops use the configuration base for preferences with non-overwriting migration and original-data preservation (#1395). | | M13 | Automation (MCP, Action Wizard, CLI) + AI providers | 60–120 | 45% | 25–45 | Done: MCP resources (document info, text, page images); headless tool table (123 tools incl. signing, optimizing, initial view, links, stamps, data exchange, comment review, forms authoring and scripts, redaction, sanitize, print, add content), opt-in MCP server over stdio, CLI `run`/`tools` (closed stdout pipes exit cleanly), UI control channel with drag. Missing: Action Wizard, AI providers | -| M14 | 1.0 polish: performance, localization, installers | 120–250 | 15% | 80–150 | Done: PhotoCraft's translation system (`i18n/`: TSV catalogs, `tl!`, command-id and plural entries, system-language detection, strict catalog tests); every dialog, panel and notice goes through `tl!`. Catalogs of ≈ 2,000–2,140 entries for Japanese, Simplified and Traditional Chinese, Russian, Bulgarian, German, Spanish, French, Telugu, Hungarian, Ukrainian, Brazilian Portuguese and Arabic (logical-order catalog put into display order; layout not yet mirrored); Czech covers the menus. Italian has 2,528 entries: every key of the other catalogs that the code looks up. Signed and notarized macOS builds, signed Windows installers (x64, x86, ARM64), AppImage, deb, rpm, Flatpak and FreeBSD packages. #307 (bounded large-PDF memory): shared resource indexes and parser metadata, lazy inspection, bounded caches; a 9,156-page file inspects in ≈ 1.8 s at ≈ 500 MiB instead of exceeding 10 GiB. Edits let go of the previous working file before writing the next (a 1 GiB file peaks at two copies while editing, not three; gap 13). Shortcut display uses localized modifier/key names across menus, toolbar, palette, Help and tooltips (#496). Traditional Chinese accessibility statuses, rule semantics and Taiwan form/table terms have catalog regressions. Missing: a right-to-left layout, a Chinese UI face in releases, Hindi/Indonesian/Korean/Vietnamese, file-backed input and global memory budgets, performance budgets, keyboard-only operation | +| M14 | 1.0 polish: performance, localization, installers | 120–250 | 15% | 80–150 | Done: PhotoCraft's translation system (`i18n/`: TSV catalogs, `tl!`, command-id and plural entries, system-language detection, strict catalog tests); every dialog, panel and notice goes through `tl!`. Catalogs of ≈ 2,000–2,140 entries for Japanese, Simplified and Traditional Chinese, Russian, Bulgarian, German, Spanish, French, Telugu, Hungarian, Ukrainian, Brazilian Portuguese and Arabic (logical-order catalog put into display order; layout not yet mirrored); Czech has 2,674 entries (2026-10-16). Italian has 2,528 entries: every key of the other catalogs that the code looks up. Signed and notarized macOS builds, signed Windows installers (x64, x86, ARM64), AppImage, deb, rpm, Flatpak and FreeBSD packages. #307 (bounded large-PDF memory): shared resource indexes and parser metadata, lazy inspection, bounded caches; a 9,156-page file inspects in ≈ 1.8 s at ≈ 500 MiB instead of exceeding 10 GiB. Edits let go of the previous working file before writing the next (a 1 GiB file peaks at two copies while editing, not three; gap 13). Shortcut display uses localized modifier/key names across menus, toolbar, palette, Help and tooltips (#496). Traditional Chinese accessibility statuses, rule semantics and Taiwan form/table terms have catalog regressions. Missing: a right-to-left layout, a Chinese UI face in releases, Hindi/Indonesian/Korean/Vietnamese, file-backed input and global memory budgets, performance budgets, keyboard-only operation | | | **Total** | **2,085–3,840** | **≈ 49% ready** | **≈ 770–1,400** | Area view of the same work: [target-app-parity.md](target-app-parity.md#by-feature-area) | ## Upcoming milestones, ranked From 14fcc82a2474e6914a6e5d6682d1d92de1618cf2 Mon Sep 17 00:00:00 2001 From: Nyanpasuwu <187771092+Nyanpasuwu@users.noreply.github.com> Date: Mon, 19 Oct 2026 19:31:44 +0300 Subject: [PATCH 13/33] i18n: add Central Kurdish (Sorani) as an interface language 2,670 entries in ckb.tsv, written in logical order, with the same (context, source) key set as ar.tsv. Registered with rtl: true and plural_one_other (CLDR ckb: one, other); Sorani keeps the noun singular after a numeral, so the 13 @plural rows usually read the same in both forms. RTL reuses the Arabic path: the catalog is put into display order by bidi::display_rtl when it loads, so Kurdish has the same four limits docs/localization.md lists for Arabic. No new layout or bidi code. DATE_LANGUAGES gains Kurdish month and weekday names, because date_languages_are_the_interface_languages keeps both registries in step. ku-* locales are not mapped to ckb on purpose: ku is the macrolanguage and means Kurmanji in Latin script. Only ckb* tags resolve. --- ATTRIBUTION.md | 3 +- ATTRIBUTION.toml | 11 + crates/engine/src/dates.rs | 16 +- crates/ui-egui/src/i18n/ckb.tsv | 2713 +++++++++++++++++++++++++++++++ crates/ui-egui/src/i18n/mod.rs | 10 +- docs/localization.md | 8 +- 6 files changed, 2754 insertions(+), 7 deletions(-) create mode 100644 crates/ui-egui/src/i18n/ckb.tsv diff --git a/ATTRIBUTION.md b/ATTRIBUTION.md index 5cfee8d55..e6fe645c6 100644 --- a/ATTRIBUTION.md +++ b/ATTRIBUTION.md @@ -4,7 +4,7 @@ Every asset PdfCraft includes, bundles or uses to build its published material, with its author, source and licence. The policy is in [AGENTS.md](AGENTS.md) §1. The machine-readable list, with SHA-256 hashes, is [ATTRIBUTION.toml](ATTRIBUTION.toml). Licence texts are kept beside the assets and summarised in [NOTICE](NOTICE). -## In this repository (272) +## In this repository (273) | Asset | Title | Author | Licence | Source | Used for | |---|---|---|---|---|---| @@ -26,6 +26,7 @@ Every asset PdfCraft includes, bundles or uses to build its published material, | `crates/ui-egui/src/i18n/ja.tsv` | Japanese interface translation catalog | PdfCraft contributors | MIT OR Apache-2.0 | Contributor-original: clean-room translations of PdfCraft's English UI labels, no proprietary localisation resources | Japanese UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs | | `crates/ui-egui/src/i18n/uk.tsv` | Ukrainian interface translation catalog | PdfCraft contributors | MIT OR Apache-2.0 | Contributor-original: clean-room translations of PdfCraft's English UI labels, no proprietary localisation resources | Ukrainian UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs | | `crates/ui-egui/src/i18n/ar.tsv` | Arabic interface translation catalog | PdfCraft contributors | MIT OR Apache-2.0 | Contributor-original: clean-room translations of PdfCraft's English UI labels, no proprietary localisation resources | Arabic UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs | +| `crates/ui-egui/src/i18n/ckb.tsv` | Central Kurdish (Sorani) interface translation catalog | PdfCraft contributors | MIT OR Apache-2.0 | Contributor-original: clean-room translations of PdfCraft's English UI labels, no proprietary localisation resources | Central Kurdish UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs | | `crates/ui-egui/src/i18n/tr.tsv` | Turkish interface translation catalog | PdfCraft contributors | MIT OR Apache-2.0 | Contributor-original: clean-room translations of PdfCraft's English UI labels, no proprietary localisation resources | Turkish UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs | | `crates/ui-egui/src/i18n/lt.tsv` | Lithuanian interface translation catalog | PdfCraft contributors | MIT OR Apache-2.0 | Contributor-original: clean-room translations of PdfCraft's English UI labels and user-facing messages; original catalog reviewed by a native Lithuanian-speaking contributor; 2026-10-15 coverage additions are AI-assisted and not separately native-reviewed | Lithuanian UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs | | `assets/icons/accessibility.svg` | Lucide icon "accessibility" | Lucide Contributors (portions Cole Bemis, Feather) | ISC | https://github.com/lucide-icons/lucide (npm lucide-static 1.49.0, icons/accessibility.svg) | UI icon, embedded via crates/ui-egui/src/icon_data.rs | diff --git a/ATTRIBUTION.toml b/ATTRIBUTION.toml index db3dd6124..8ab9613a8 100644 --- a/ATTRIBUTION.toml +++ b/ATTRIBUTION.toml @@ -208,6 +208,17 @@ kind = "translation" usage = "Arabic UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs" sha256 = "889a0d0a9ea53ca0a818c2ba672c053c232d2cca140f8d63127353e6f36505fe" +[[asset]] +path = "crates/ui-egui/src/i18n/ckb.tsv" +title = "Central Kurdish (Sorani) interface translation catalog" +author = "PdfCraft contributors" +source = "Contributor-original: clean-room translations of PdfCraft's English UI labels, no proprietary localisation resources" +licence = "MIT OR Apache-2.0" +licence_file = "LICENSE-MIT" +kind = "translation" +usage = "Central Kurdish UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs" +sha256 = "2479d8f164612c4e8d3944df9a6b2ae345be0b26ee87511b17a4a56bc41988d3" + [[asset]] path = "crates/ui-egui/src/i18n/tr.tsv" title = "Turkish interface translation catalog" diff --git a/crates/engine/src/dates.rs b/crates/engine/src/dates.rs index 8c14a5b1b..65abac971 100644 --- a/crates/engine/src/dates.rs +++ b/crates/engine/src/dates.rs @@ -54,9 +54,13 @@ const ZH_DAYS: [&str; 7] = ["星期日", "星期一", "星期二", "星期三", const AR_MONTHS: [&str; 12] = ["يناير", "فبراير", "مارس", "أبريل", "مايو", "يونيو", "يوليو", "أغسطس", "سبتمبر", "أكتوبر", "نوفمبر", "ديسمبر"]; const AR_DAYS: [&str; 7] = ["الأحد", "الاثنين", "الثلاثاء", "الأربعاء", "الخميس", "الجمعة", "السبت"]; +const CKB_MONTHS: [&str; 12] = + ["کانوونی دووەم", "شوبات", "ئازار", "نیسان", "ئایار", "حوزەیران", "تەممووز", "ئاب", "ئەیلوول", "تشرینی یەکەم", "تشرینی دووەم", "کانوونی یەکەم"]; +const CKB_DAYS: [&str; 7] = ["یەکشەممە", "دووشەممە", "سێشەممە", "چوارشەممە", "پێنجشەممە", "هەینی", "شەممە"]; + /// The languages month and weekday names can be written in (Preferences ▸ Date format ▸ Language): /// the interface languages, in the same order and with the same names. -pub static DATE_LANGUAGES: [DateLanguage; 23] = [ +pub static DATE_LANGUAGES: [DateLanguage; 24] = [ DateLanguage { code: "en", name: "English", @@ -250,6 +254,16 @@ pub static DATE_LANGUAGES: [DateLanguage; 23] = [ days: AR_DAYS, days_short: AR_DAYS, }, + // Central Kurdish (Sorani) has no shorter written forms of its month and weekday names either. + DateLanguage { + code: "ckb", + name: "کوردیی ناوەندی", + months: CKB_MONTHS, + months_with_day: None, + months_short: CKB_MONTHS, + days: CKB_DAYS, + days_short: CKB_DAYS, + }, DateLanguage { code: "pl", name: "Polski", diff --git a/crates/ui-egui/src/i18n/ckb.tsv b/crates/ui-egui/src/i18n/ckb.tsv new file mode 100644 index 000000000..89afc94f7 --- /dev/null +++ b/crates/ui-egui/src/i18n/ckb.tsv @@ -0,0 +1,2713 @@ +# Central Kurdish (ckb) catalog. Columns, separated by a TAB: context source translation +# +# context empty a plain UI string; `source` is the English text in the code +# @id a command id (e.g. file.saveAs): wins over the English text for +# that menu item, so one id can read differently from its twin +# @plural `source` is "one|other" (English forms); the translation lists the +# language's forms separated by "|" (see `plural` in i18n/mod.rs): +# Kurdish (ckb) has two forms: one, other +# anything else a disambiguating context passed to `tr_ctx` +# escapes \n \t \\ inside a column. `{name}` placeholders must appear in both columns. +# lines starting with # and blank lines are ignored. +# +# Clean-room: every entry was written from the plain meaning of the English label using ordinary +# Central Kurdish (Sorani) computing vocabulary. No proprietary localisation resource, string table +# or product UI (Acrobat's included) was consulted or copied; add entries the same way. +# Product and technology names (PdfCraft, PDF, Acrobat JavaScript ...) stay in Latin letters; +# the trailing "…" of dialog commands is kept. Digits are Western (0-9). +# +# Write every entry in logical (typing) order. The interface draws text left to right, so +# i18n/mod.rs puts each entry into display order when it loads the catalog (bidi::display_rtl); +# spaces and a colon at either end of an entry stay at that end, next to what the code appends. + + Menu پێڕست + File فایل + Edit دەستکاریکردن + Pages پەڕەکان + View بینین + Help یارمەتی + Preferences هەڵبژاردەکان + Preferences… هەڵبژاردەکان… + Interface language زمانی ڕووکار + Interface size قەبارەی ڕووکار + Auto ({percent}%) خۆکار ({percent}%) + Auto follows the system's text size. Pages always render at the display's full resolution. دۆخی خۆکار بەدوای قەبارەی دەقی سیستەم دەکەوێت. پەڕەکان هەمیشە بە ڕوونیی تەواوی شاشەکە پیشان دەدرێن. + Identity ناسنامە + Name on new comments ناو لەسەر لێدوانە نوێیەکان + Hide hover previews for highlights without comment text شاردنەوەی پێشبینینەکانی هۆڤەر بۆ ئەو هایلایتانەی دەقی لێدوانیان نییە + Open… کردنەوە… + Open Recent کردنەوەی دواییەکان + Pin folder to Home… جێگیرکردنی فۆڵدەر لە لاپەڕەی سەرەکی… + Folders فۆڵدەرەکان + Pin a folder… جێگیرکردنی فۆڵدەرێک… + Pin a folder to Home جێگیرکردنی فۆڵدەرێک لە لاپەڕەی سەرەکی + Pin a folder to list its newest PDFs here, such as where your scanner or a synced cloud drive saves them. فۆڵدەرێک جێگیر بکە بۆ ئەوەی نوێترین PDFەکانی لێرە پیشان بدات، وەک ئەو شوێنەی کە سکانەرەکەت یان درایڤێکی هەوری هاوکاتکراو فایلەکانی تێدا پاشەکەوت دەکات. + Unpin لابردنی جێگیرکردن + Unpin {folder} لابردنی جێگیرکردنی {folder} + Looking for PDFs… بەدوای PDFەکاندا دەگەڕێین… + This folder isn't available right now. It may have moved, or its drive or cloud sync is offline. ئەم فۆڵدەرە ئێستا بەردەست نییە. لەوانەیە گوێزرابێتەوە، یان درایڤەکەی یان هاوکاتکردنی هەورەکەی دابڕابێت. + No PDFs in this folder yet هێشتا هیچ PDFێک لەم فۆڵدەرەدا نییە + Show less کەمتر پیشان بدە + Show {n} more {n}ی تر پیشان بدە + The newest {n} of {total} PDFs نوێترین {n} لە {total} PDF + Pinned folders need the desktop app فۆڵدەرە جێگیرکراوەکان پێویستیان بە ئەپی سەر مێز هەیە + Choose a folder on this computer to pin فۆڵدەرێک لەسەر ئەم کۆمپیوتەرە هەڵبژێرە بۆ جێگیرکردن + {folder} is already pinned to Home {folder} پێشتر لە لاپەڕەی سەرەکی جێگیرکراوە + You can pin up to {n} folders. Unpin one first. دەتوانیت تا {n} فۆڵدەر جێگیر بکەیت. سەرەتا یەکێکیان لابە. + Pinned {folder} to Home {folder} لە لاپەڕەی سەرەکی جێگیرکرا + No recent files هیچ فایلێکی دوایی نییە + New blank PDF PDFی بەتاڵی نوێ + Create PDF from file… دروستکردنی PDF لە فایل… + Create PDF from images… دروستکردنی PDF لە وێنەکان… + Create PDF from clipboard دروستکردنی PDF لە کلیپبۆرد + Combine files… تێکەڵکردنی فایلەکان… + Save پاشەکەوتکردن + Save as… پاشەکەوتکردن وەک… + Close file داخستنی فایل + Close all داخستنی هەموو + Revert گەڕاندنەوە + Print… چاپکردن… + Document properties… تایبەتمەندییەکانی بەڵگەنامە… + Undo پاشگەزبوونەوە + Redo دووبارەکردنەوە + Find… دۆزینەوە… + Advanced search… گەڕانی پێشکەوتوو… + Copy pages کۆپیکردنی پەڕەکان + Cut pages بڕینی پەڕەکان + Paste pages لکاندنی پەڕەکان + Fit visible گونجاندنی ناوەڕۆکی دیار + Marquee zoom گەورەکردنەوە بە هەڵبژاردن + Take a snapshot گرتنی وێنەی چەقاو + Column select هەڵبژاردنی ستوونی + Full screen mode دۆخی شاشەی پڕ + Read mode دۆخی خوێندنەوە + Next tab بازدەری داهاتوو + Previous tab بازدەری پێشوو + Switch light / dark theme گۆڕینی تیمی ڕووناک / تاریک + Comments panel پانێڵی لێدوانەکان + Form fields panel پانێڵی خانەکانی فۆڕم + Clear form پاککردنەوەی فۆڕم + Find tools and commands… گەڕان بۆ ئامرازەکان و فەرمانەکان… + Zoom زووم + Actual size قەبارەی ڕاستەقینە + Zoom to page level زووم بۆ ئاستی پەڕە + Fit to width گونجاندن بە پانی + Display theme تیمی پیشاندان + Side panels پانێڵە لاوەکییەکان + Enable Acrobat JavaScript چالاککردنی Acrobat JavaScript + OK باشە + Join our Discord بەشداریکردن لە Discordی ئێمە + Close داخستن + Next / previous match گونجاوی داهاتوو / پێشوو + Copy selected text کۆپیکردنی دەقی هەڵبژێردراو + Double-click دوو کرتە + Select a word هەڵبژاردنی وشەیەک + Clear selection / close find پاککردنەوەی هەڵبژاردن / داخستنی دۆزینەوە + Zoom in / out (also pinch or {key}-scroll) گەورەکردنەوە / بچووککردنەوە (هەروەها بە پینچ یان سکرۆڵکردن بە {key}) + Rotate view سووڕاندنەوەی بینین + First / last page یەکەم / کۆتا پەڕە + Previous / next page پەڕەی پێشوو / داهاتوو + Delete selected pages (Organize) سڕینەوەی پەڕە هەڵبژێردراوەکان (ڕێکخستن) + Select all pages (Organize) هەڵبژاردنی هەموو پەڕەکان (ڕێکخستن) + Home لاپەڕەی سەرەکی + Open کردنەوە + Open a PDF ({key}) کردنەوەی PDF ({key}) + Dark gray theme تیمی خۆڵەمێشیی تاریک + Light theme تیمی ڕووناک + Appearance mode دۆخی دیمەن + Light ڕووناک + Dark تاریک + Active چالاک + Dark theme تیمی تاریک + Appearance settings… ڕێکخستنەکانی دیمەن… + All tools هەموو ئامرازەکان + Read خوێندنەوە + Convert گۆڕین + E-Sign واژووی ئەلیکترۆنی + Print ({key}) چاپکردن ({key}) + Save ({key}) پاشەکەوتکردن ({key}) + Document properties ({key}) تایبەتمەندییەکانی بەڵگەنامە ({key}) + Find tools and commands گەڕان بۆ ئامرازەکان و فەرمانەکان + Fit to height گونجاندن بە بەرزی + Zoom in گەورەکردنەوە + Zoom out بچووککردنەوە + Rotate view clockwise سووڕاندنەوەی بینین بە ئاراستەی کاتژمێر + Rotate view counterclockwise سووڕاندنەوەی بینین بە پێچەوانەی ئاراستەی کاتژمێر + Page navigation گەشتکردن لە پەڕەکاندا + Previous view بینینی پێشوو + Next view بینینی داهاتوو + Page display پیشاندانی پەڕە + Continuous scrolling سکرۆڵی بەردەوام + Two-page view بینینی دوو پەڕە + Single page تاکە پەڕە + Show cover page in two-page view پیشاندانی پەڕەی بەرگ لە بینینی دوو پەڕەدا + Use system setting بەکارهێنانی ڕێکخستنی سیستەم + Light gray خۆڵەمێشیی ڕووناک + Dark gray خۆڵەمێشیی تاریک + Comments لێدوانەکان + Bookmarks دڵخوازەکان + Fields خانەکان + Layers چینەکان + Attachments پێوەکراوەکان + Signatures واژووەکان + Accessibility Checker پشکنەری دەستڕاگەیشتن + Search گەڕان + Compare بەراوردکردن + Page thumbnails وێنۆچکەکانی پەڕە + Form fields خانەکانی فۆڕم + Zoom out ({key}) بچووککردنەوە ({key}) + Zoom in ({key}) گەورەکردنەوە ({key}) + Rotate view clockwise ({key}) سووڕاندنەوەی بینین بە ئاراستەی کاتژمێر ({key}) + Toggle fit page / fit width گۆڕینی نێوان گونجاندنی پەڕە / گونجاندنی پانی + Next page پەڕەی داهاتوو + Previous page پەڕەی پێشوو + Current page — type a page number or label (such as iv) and press Enter پەڕەی ئێستا — ژمارەی پەڕەیەک یان نیشانەکەی بنووسە (وەک iv) و Enter دابگرە + Zoom — type a percentage and press Enter زووم — ڕێژەیەکی سەدی بنووسە و Enter دابگرە + Welcome to PdfCraft بەخێربێیت بۆ PdfCraft + An open-source PDF workbench — local, private, and scriptable. مێزێکی کاری سەرچاوەکراوە بۆ PDF — ناوخۆیی، تایبەت و بەرنامەڕێژکراو. + Join the ArtCraft community بەشداریکردن لە کۆمەڵگەی ArtCraft + Get help, share feedback and follow development on Discord. یارمەتی وەربگرە، بۆچوونەکانت بڵاو بکەرەوە و بەدوای پەرەپێداندا بکەوە لە Discord. + Recommended tools ئامرازی پێشنیارکراو + Use now ئێستا بەکاری بهێنە + Open file کردنەوەی فایل + Recent دواییەکان + Files you open in PdfCraft appear here. Drop a PDF anywhere to open it. ئەو فایلانەی لە PdfCraft دەیانکەیتەوە لێرە دەردەکەون. PDFێک لە هەرکوێ دابنێ بۆ کردنەوەی. + Privacy تایبەتێتی + PdfCraft works offline. No telemetry, no account, and no cloud processing unless you add a provider. PdfCraft بەبێ ئینتەرنێت کار دەکات. نە پێوانەی دوورەوە، نە هەژمار و نە پێواژۆی هەور هەیە مەگەر دابینکەرێک زیاد بکەیت. + Scripts run in a sandbox without file or network access. With JavaScript off, Acrobat's standard format, validate and calculate functions still work. سکریپتەکان لە ژینگەیەکی جیاکراوەدا جێبەجێ دەبن بەبێ دەستگەیشتن بە فایل یان تۆڕ. کاتێک JavaScript دابخرێت، فەرمانە ستانداردەکانی Acrobat بۆ فۆرمات، پشتڕاستکردنەوە و ژمێرکاریکردن هێشتا کار دەکەن. + Back to all tools گەڕانەوە بۆ هەموو ئامرازەکان + Close panel داخستنی پانێڵ + View less کەمتر پیشان بدە + View more زیاتر پیشان بدە + Available بەردەست + Ready ئامادە + Search tools and commands… گەڕان لە ئامرازەکان و فەرمانەکان… + No matching tools هیچ ئامرازێکی گونجاو نییە + Tool ئامراز + Command فەرمان + Add a sticky note زیادکردنی تێبینییەکی لکاو + Add a text box زیادکردنی سندووقی دەقێک + Highlight text هایلایتکردنی دەق + Underline text ژێرهێڵکردنی دەق + Strikethrough text هێڵخستنەسەری دەق + Squiggly underline text ژێرهێڵی شەپۆلی بۆ دەق + Draw freehand وێنەکێشانی دەستی + Draw a line کێشانی هێڵێک + Draw an arrow کێشانی تیرێک + Draw a rectangle کێشانی لاکێشەیەک + Draw an oval کێشانی هێلکەیییەک + Draw a polygon کێشانی فرەگۆشەیەک + Draw connected lines کێشانی هێڵە بەیەکەوەگرێدراوەکان + Draw a cloud کێشانی هەورێک + Add a callout زیادکردنی بالۆنێک + Insert text خستنەناوی دەق + Replace text جێگرتنەوەی دەق + Attach a file پێوەکردنی فایلێک + Erase drawings سڕینەوەی وێنەکێشراوەکان + Flatten comments تەختکردنی لێدوانەکان + Import comments… هاوردەکردنی لێدوانەکان… + Add a stamp زیادکردنی مۆرێک + Export all comments to data file… هەناردەکردنی هەموو لێدوانەکان بۆ فایلی داتا… + Hide all comments شارینەوەی هەموو لێدوانەکان + Summarize comments کورتکردنەوەی لێدوانەکان + Import form data… هاوردەکردنی داتای فۆڕم… + Export form data… هەناردەکردنی داتای فۆڕم… + PDF/A… PDF/A… + Action Wizard… ڕێبەری کردارەکان… + Prepare for distribution… ئامادەکردن بۆ بڵاوکردنەوە… + Optimize scanned documents… باشترکردنی بەڵگەنامە سکانکراوەکان… + Compare files… بەراوردکردنی فایلەکان… + Detect form fields دۆزینەوەی خانەکانی فۆڕم + Merge data files into spreadsheet… یەکخستنی فایلەکانی داتا لە خشتەی داتا… + Flatten form fields تەختکردنی خانەکانی فۆڕم + Prepare a form ئامادەکردنی فۆڕمێک + Tab order: by rows ڕیزبەندی بازدەر: بەپێی ڕیزەکان + Tab order: by columns ڕیزبەندی بازدەر: بەپێی ستوونەکان + Tab order: by document structure ڕیزبەندی بازدەر: بەپێی پێکهاتەی بەڵگەنامە + Add text زیادکردنی دەق + Edit text & images دەستکاریکردنی دەق و وێنەکان + Add or edit links زیادکردن یان دەستکاریکردنی بەستەرەکان + Create links from URLs دروستکردنی بەستەر لە URLەکانەوە + Remove all links لابردنی هەموو بەستەرەکان + No links to remove هیچ بەستەرێک نییە بۆ لابردن + Removed 1 link 1 بەستەر لابرا + Removed {n} links {n} بەستەر لابرا + Add Bates numbering… زیادکردنی ژمارەدانی Bates… + Add image… زیادکردنی وێنە… + Redact text and images شاردنەوەی دەق و وێنەکان + Redact pages… شاردنەوەی پەڕەکان… + Find text and redact… دۆزینەوەی دەق و شاردنەوە… + Redaction properties… تایبەتمەندییەکانی شاردنەوە… + Apply redactions… جێبەجێکردنی شاردنەوەکان… + Clear redaction marks پاککردنەوەی نیشانەکانی شاردنەوە + Remove hidden information… لابردنی زانیارییە شاردراوەکان… + Sanitize document… پاکژکردنی بەڵگەنامە… + Field properties… تایبەتمەندییەکانی خانە… + Add a text field زیادکردنی خانەیەکی دەق + Add a checkbox زیادکردنی خانەیەکی هەڵبژاردن + Add a radio button زیادکردنی دوگمەیەکی هەڵبژاردن + Add a drop-down list زیادکردنی پێڕستێکی بەرەوخوار + Add a list box زیادکردنی سندووقێکی پێڕست + Add a button زیادکردنی دوگمەیەک + Add an image field زیادکردنی خانەیەکی وێنە + Add a date field زیادکردنی خانەیەکی بەروار + Add a digital signature field زیادکردنی خانەیەکی واژووی دیجیتاڵی + Digitally sign واژووکردنی دیجیتاڵی + Certify (visible signature) بڕوانامەدان (واژووی بینراو) + Certify (invisible signature) بڕوانامەدان (واژووی نەبینراو) + Validate all signatures پشتڕاستکردنەوەی هەموو واژووەکان + Signatures panel پانێڵی واژووەکان + Fill & Sign: add text پڕکردنەوە و واژووکردن: زیادکردنی دەق + Fill & Sign: checkmark پڕکردنەوە و واژووکردن: نیشانەی ڕاست + Fill & Sign: cross پڕکردنەوە و واژووکردن: نیشانەی هەڵە + Fill & Sign: dot پڕکردنەوە و واژووکردن: خاڵ + Fill & Sign: line پڕکردنەوە و واژووکردن: هێڵ + Fill & Sign: date پڕکردنەوە و واژووکردن: بەروار + Fill & Sign: sign پڕکردنەوە و واژووکردن: واژوو + Fill & Sign: initials پڕکردنەوە و واژووکردن: سەرەتاییەکانی ناو + Export to image… هەناردەکردن بۆ وێنە… + Reduce file size… کەمکردنەوەی قەبارەی فایل… + Optimize PDF… باشترکردنی PDF… + Export to text… هەناردەکردن بۆ دەق… + Export to Word… هەناردەکردن بۆ Word… + Export to PowerPoint… هەناردەکردن بۆ PowerPoint… + Export to HTML… هەناردەکردن بۆ HTML… + Export to RTF… هەناردەکردن بۆ RTF… + JavaScript console… کۆنسۆڵی JavaScript… + Document JavaScripts… JavaScriptەکانی بەڵگەنامە… + Recognize text… ناسینەوەی دەق… + Recognize text in multiple files… ناسینەوەی دەق لە چەند فایلێکدا… + Check for accessibility… پشکنین بۆ دەستڕاگەیشتن… + Open accessibility report کردنەوەی ڕاپۆرتی دەستڕاگەیشتن + Change reading options… گۆڕینی هەڵبژاردەکانی خوێندنەوە… + Add alternate text… زیادکردنی دەقی جێگرەوە… + Export all images… هەناردەکردنی هەموو وێنەکان… + Add header & footer… زیادکردنی سەرەوە و خوارەوەی پەڕە… + Update header & footer… نوێکردنەوەی سەرەوە و خوارەوەی پەڕە… + Remove header & footer لابردنی سەرەوە و خوارەوەی پەڕە + Add watermark… زیادکردنی نیشانەی ئاوی… + Update watermark… نوێکردنەوەی نیشانەی ئاوی… + Remove watermark لابردنی نیشانەی ئاوی + Add background… زیادکردنی پاشبنەما… + Update background… نوێکردنەوەی پاشبنەما… + Remove background لابردنی پاشبنەما + Protect using password… پاراستن بە وشەی نهێنی… + Remove security لابردنی ئاسایش + Security properties… تایبەتمەندییەکانی ئاسایش… + Organize pages ڕێکخستنی پەڕەکان + New bookmark دڵخوازی نوێ + New bookmarks from structure دڵخوازی نوێ لە پێکهاتەوە + Rotate pages clockwise سووڕاندنەوەی پەڕەکان بە ئاراستەی کاتژمێر + Rotate pages counterclockwise سووڕاندنەوەی پەڕەکان بە پێچەوانەی ئاراستەی کاتژمێر + Delete pages سڕینەوەی پەڕەکان + Insert blank page خستنەناوی پەڕەیەکی بەتاڵ + Rotate pages… سووڕاندنەوەی پەڕەکان… + Duplicate pages دووبارەکردنەوەی پەڕەکان + Crop pages بڕینەوەی پەڕەکان + Set page boxes… دانانی سندووقەکانی پەڕە… + Insert pages from file… خستنەناوی پەڕە لە فایل… + Replace pages… جێگرتنەوەی پەڕەکان… + Extract pages… دەرهێنانی پەڕەکان… + Split document… دابەشکردنی بەڵگەنامە… + Number pages… ژمارەدان بە پەڕەکان… + Keyboard shortcuts کورتەڕێگاکانی تەختەکلیل + Join the ArtCraft Discord بەشداریکردن لە Discordی ArtCraft + PdfCraft web page لاپەڕەی وێبی PdfCraft + PdfCraft on GitHub PdfCraft لە GitHub + ArtCraft website ماڵپەڕی ArtCraft + Check for updates… پشکنین بۆ نوێکردنەوەکان… + About PdfCraft دەربارەی PdfCraft + Export a PDF هەناردەکردنی PDFێک + Export to هەناردەکردن بۆ + Microsoft Word (.docx) Microsoft Word (.docx) + Spreadsheet (.xlsx) خشتەی داتا (.xlsx) + Presentation (.pptx) پێشکەشکردن (.pptx) + Image (PNG) وێنە (PNG) + Export all images هەناردەکردنی هەموو وێنەکان + HTML web page لاپەڕەی وێبی HTML + Rich Text Format (.rtf) فۆرماتی دەقی دەوڵەمەند (.rtf) + Text (plain) دەق (سادە) + PostScript / EPS PostScript / EPS + Fill & Sign پڕکردنەوە و واژووکردن + Fill پڕکردنەوە + Checkmark نیشانەی ڕاست + Cross نیشانەی هەڵە + Dot خاڵ + Line هێڵ + Date بەروار + Signature واژوو + Initials سەرەتاییەکانی ناو + Edit a PDF دەستکاریکردنی PDFێک + Modify page دەستکاریکردنی پەڕە + Rotate pages سووڕاندنەوەی پەڕەکان + Insert pages خستنەناوی پەڕەکان + Extract pages دەرهێنانی پەڕەکان + Add content زیادکردنی ناوەڕۆک + Text دەق + Image وێنە + Header and footer سەرەوە و خوارەوەی پەڕە + Watermark نیشانەی ئاوی + Link بەستەر + Bates numbering ژمارەدانی Bates + Background پاشبنەما + Attach file پێوەکردنی فایل + Create a PDF دروستکردنی PDFێک + Create from دروستکردن لە + Single file یەک فایل + Multiple files چەند فایل + Separate PDFs PDFی جیاجیا + Images وێنەکان + Clipboard کلیپبۆرد + Blank page پەڕەی بەتاڵ + Combine files تێکەڵکردنی فایلەکان + Combine تێکەڵکردن + Add files to combine زیادکردنی فایل بۆ تێکەڵکردن + Page options هەڵبژاردەکانی پەڕە + Page grid تۆڕی پەڕەکان + Rotate سووڕاندنەوە + Delete سڕینەوە + Extract دەرهێنان + Insert خستنەناو + Replace جێگرتنەوە + Split دابەشکردن + More زیاتر + Set page boxes دانانی سندووقەکانی پەڕە + Set page transitions دانانی گواستنەوەکانی پەڕە + Page labels نیشانەکانی پەڕە + Page transitions گواستنەوەکانی پەڕە + Add comments زیادکردنی لێدوان + Markup نیشانەکردن + Sticky note تێبینی لکاو + Underline ژێرهێڵ + Strikethrough هێڵخستنەسەر + Squiggly underline ژێرهێڵی شەپۆلی + Text box سندووقی دەق + Drawing وێنەکێشان + Rectangle لاکێشە + Oval هێلکەیی + Arrow تیر + Cloud هەور + Stamp مۆر + Review پێداچوونەوە + Comment list پێڕستی لێدوانەکان + Scan & OCR سکانکردن و OCR + Recognize text ناسینەوەی دەق + In this file لەم فایلەدا + In multiple files لە چەند فایلێکدا + Enhance scanned file باشترکردنی فایلی سکانکراو + Correct recognized text ڕاستکردنەوەی دەقی ناسراو + Protect a PDF پاراستنی PDFێک + Protect پاراستن + Protect with password پاراستن بە وشەی نهێنی + Remove hidden information لابردنی زانیارییە شاردراوەکان + Advanced options هەڵبژاردە پێشکەوتووەکان + Encrypt with certificate کۆدکردن بە بڕوانامە + Security properties تایبەتمەندییەکانی ئاسایش + Redact a PDF شاردنەوەی PDFێک + Redact شاردنەوە + Redact pages شاردنەوەی پەڕەکان + Find text and redact دۆزینەوەی دەق و شاردنەوە + Set properties دانانی تایبەتمەندییەکان + Sanitize document پاکژکردنی بەڵگەنامە + Compress a PDF پەستاندنی PDFێک + Optimize باشترکردن + Reduce file size کەمکردنەوەی قەبارەی فایل + Advanced optimization باشترکردنی پێشکەوتوو + Audit space usage وردبینیکردنی بەکارهێنانی بۆشایی + Field list پێڕستی خانەکان + Field properties تایبەتمەندییەکانی خانە + Tab order by rows ڕیزبەندی بازدەر بەپێی ڕیزەکان + Tab order by columns ڕیزبەندی بازدەر بەپێی ستوونەکان + Import data هاوردەکردنی داتا + Export data هەناردەکردنی داتا + Add form components زیادکردنی پێکهاتەکانی فۆڕم + Text field خانەی دەق + Checkbox خانەی هەڵبژاردن + Radio button دوگمەی هەڵبژاردن + Drop-down list پێڕستی بەرەوخوار + List box سندووقی پێڕست + Button دوگمە + Image field خانەی وێنە + Date field خانەی بەروار + Digital signature واژووی دیجیتاڵی + Stamps مۆرەکان + Stamp palette پالێتی مۆرەکان + Use a certificate بەکارهێنانی بڕوانامەیەک + Certificates بڕوانامەکان + Timestamp مۆری کات + Use print production بەکارهێنانی بەرهەمهێنانی چاپ + Print production بەرهەمهێنانی چاپ + Output preview پێشبینینی دەرهاویشتە + Preflight پشکنینی پێش چاپ + Convert colors گۆڕینی ڕەنگەکان + Add printer marks زیادکردنی نیشانەکانی چاپکەر + Fix hairlines چاککردنی هێڵە باریکەکان + Measure objects پێوانەکردنی تەنەکان + Measure پێوانەکردن + Measuring tool ئامرازی پێوانەکردن + Geospatial location شوێنی جوگرافیایی + Compare files بەراوردکردنی فایلەکان + Select files to compare هەڵبژاردنی فایلەکان بۆ بەراوردکردن + Use guided actions بەکارهێنانی کردارە ڕێنیشاندراوەکان + Actions list پێڕستی کردارەکان + Action Wizard ڕێبەری کردارەکان + Make accessible دەستڕاگەیشتنپێدان + Prepare for distribution ئامادەکردن بۆ بڵاوکردنەوە + Optimize scanned documents باشترکردنی بەڵگەنامە سکانکراوەکان + Archive documents ئەرشیڤکردنی بەڵگەنامەکان + Prepare for accessibility ئامادەکردن بۆ دەستڕاگەیشتن + Accessibility دەستڕاگەیشتن + Automatically tag PDF تاگکردنی خۆکاری PDF + Change reading options گۆڕینی هەڵبژاردەکانی خوێندنەوە + Check for accessibility پشکنینی دەستڕاگەیشتن + Add alternate text زیادکردنی دەقی جێگرەوە + Fix reading order چاککردنی ڕیزبەندی خوێندنەوە + Apply PDF standards جێبەجێکردنی ستانداردەکانی PDF + Standards ستانداردەکان + Save as PDF/A پاشەکەوتکردن وەک PDF/A + Save as PDF/X پاشەکەوتکردن وەک PDF/X + Save as PDF/UA پاشەکەوتکردن وەک PDF/UA + Add search index زیادکردنی پێڕستی گەڕان + Index پێڕست + Manage embedded index بەڕێوەبردنی پێڕستی تێخستراو + Use JavaScript بەکارهێنانی JavaScript + JavaScript JavaScript + Console کۆنسۆڵ + Document JavaScripts JavaScriptەکانی بەڵگەنامە + Document actions کردارەکانی بەڵگەنامە + AI assistant یاریدەدەری AI + Bring your own model (off by default) مۆدێلی خۆت بهێنە (بە بنەڕەت کوژاوەتەوە) + Summarize کورتکردنەوە + Ask about this document پرسیار لەبارەی ئەم بەڵگەنامەیە + Translate وەرگێڕان + pages پەڕەکان + Planned پلانگیراو + Planned for milestone پلانگیراوە بۆ قۆناغ + open to see what it will include بیکەرەوە بۆ بینینی ئەوەی لەخۆی دەگرێت + Optional: needs an AI provider you configure بەدڵی خۆت: پێویستی بە دابینکەرێکی AI هەیە کە خۆت ڕێکی دەخەیت + Coming in milestone لە قۆناغێکی داهاتوودا دێت + Items marked Ready work today. بابەتە نیشانەکراوەکانی «ئامادە» ئەمڕۆ کاردەکەن + Preview پێشبینین + Edit fields دەستکاریکردنی خانەکان + Try the form as people filling it in will see it فۆڕمەکە تاقی بکەرەوە وەک ئەوەی پڕکەرەوەکانی دەیبینن + Redact all شاردنەوەی هەموو + Clear all پاککردنەوەی هەموو + Rotate page سووڕاندنەوەی پەڕە + Delete page سڕینەوەی پەڕە + Move page گواستنەوەی پەڕە + Move pages گواستنەوەی پەڕەکان + Duplicate page دووبارەکردنەوەی پەڕە + Replace page جێگرتنەوەی پەڕە + Replace pages جێگرتنەوەی پەڕەکان + Crop page بڕینەوەی پەڕە + Cancel هەڵوەشاندنەوە + Don't save پاشەکەوت مەکە + Apply جێبەجێکردن + Run بەڕێکردن + Clear پاککردنەوە + Sanitize پاکژکردن + Mark all نیشانەکردنی هەموو + Save changes to “{name}” before closing? گۆڕانکارییەکان لە «{name}» پاشەکەوت بکرێن پێش داخستن؟ + Your changes will be lost if you don't save them. گۆڕانکارییەکانت لەدەست دەچن ئەگەر پاشەکەوتیان نەکەیت. + Password required پێویستی بە وشەی نهێنی هەیە + “{name}” is protected. Enter a password to open it. «{name}» پارێزراوە. وشەی نهێنی بنووسە بۆ کردنەوەی. + Password وشەی نهێنی + Incorrect password. Try again. وشەی نهێنی هەڵەیە. دووبارە هەوڵ بدەرەوە. + Recognize Text ناسینەوەی دەق + Password protection will be applied when you save پاراستنی وشەی نهێنی کاتێک پاشەکەوتی دەکەیت جێبەجێ دەکرێت + Saved the print-ready PDF to {path} PDFی ئامادەی چاپ پاشەکەوتکرا لە {path} + Could not save: {e} پاشەکەوتکردن نەکرا: {e} + Earlier in tab order پێشتر لە ڕیزبەندی بازدەردا + Later in tab order دواتر لە ڕیزبەندی بازدەردا + From: لە: + To: بۆ: + High Resolution ڕوونی بەرز + Print چاپکردن + Verify to see what the document needs. پشتڕاستی بکەرەوە بۆ بینینی ئەوەی بەڵگەنامەکە پێویستی پێیەتی. + Set Page Boxes ڕێکخستنی سندووقەکانی پەڕە + Signature panel پانێڵی واژووەکان + {month} {day}, {y} {day} {month} {y} + The document's security settings don't allow filling in form fields ڕێکخستنەکانی ئاسایشی بەڵگەنامەکە ڕێگە نادەن خانەکانی فۆڕم پڕ بکرێنەوە + {name} is read-only {name} تەنها بۆ خوێندنەوەیە + {name} has no action {name} هیچ کردارێکی نییە + Previous month مانگی پێشوو + Next month مانگی داهاتوو + January کانوونی دووەم + February شوبات + March ئازار + April نیسان + May ئایار + June حوزەیران + July تەممووز + August ئاب + September ئەیلوول + October تشرینی یەکەم + November تشرینی دووەم + December کانوونی یەکەم + Done تەواو + This certificate is in your list of trusted certificates. ئەم بڕوانامەیە لە پێڕستی بڕوانامە متمانەپێکراوەکانتدایە. + This certificate is trusted through a certificate above it in the chain. ئەم بڕوانامەیە لە ڕێگەی بڕوانامەیەکی سەروویەوە لە زنجیرەکەدا متمانەپێکراوە. + This certificate is not trusted. Signatures made with it show an unknown identity. ئەم بڕوانامەیە متمانەپێکراو نییە. واژووەکانی دروستکراو پێی ناسنامەیەکی نەناسراو پیشان دەدەن. + Add to Trusted Certificates زیادکردن بۆ بڕوانامە متمانەپێکراوەکان + Export… هەناردەکردن… + PDF Optimizer باشترکەری PDF + Discard Objects فڕێدانی تەنەکان + Discard User Data فڕێدانی داتاکانی بەکارهێنەر + Clean Up پاککردنەوە + Color Images وێنە ڕەنگاوڕەنگەکان + Grayscale Images وێنە خۆڵەمێشییەکان + Bicubic downsampling to کەمکردنەوەی نموونە بە شێوازی Bicubic بۆ + for images above بۆ ئەو وێنانەی سەرووی + Compression پەستاندن + ZIP ZIP + Retain existing هێشتنەوەی ئێستاکە + Minimum کەمترین + Low نزم + High بەرز + Maximum زۆرترین + Each image is measured where pages draw it; an image is replaced only if the result is smaller. هەر وێنەیەک لەو شوێنە پێوانە دەکرێت کە پەڕەکان ڕایدەکێشن؛ وێنەیەک تەنها ئەگەر ئەنجامەکە بچووکتر بێت دەگۆڕدرێت. + Discard all links, actions and JavaScript فڕێدانی هەموو بەستەرەکان و کردارەکان و JavaScript + Discard alternate images فڕێدانی وێنە جێگرەوەکان + Discard embedded page thumbnails فڕێدانی وێنۆچکە تێخستراوەکانی پەڕە + Discard document tags فڕێدانی تاگەکانی بەڵگەنامە + Discard embedded print settings فڕێدانی ڕێکخستنە تێخستراوەکانی چاپ + Discard bookmarks فڕێدانی دڵخوازەکان + Discard hidden layer content فڕێدانی ناوەڕۆکی چینە شاراوەکان + Discard all comments, forms and multimedia فڕێدانی هەموو لێدوانەکان و فۆڕمەکان و فرەمیدیاکان + Discard document information and metadata فڕێدانی زانیاری و میتاداتاکانی بەڵگەنامە + Discard all object data (file attachments) فڕێدانی هەموو داتاکانی تەنەکان (پێوەکراوەکانی فایل) + Discard private data of other applications فڕێدانی داتا تایبەتەکانی بەرنامەکانی تر + Discard hidden text فڕێدانی دەقی شاراوە + Use Flate to encode streams that are not encoded بەکارهێنانی Flate بۆ کۆدکردنی ئەو لێشاوانەی کۆد نەکراون + Remove invalid links and bookmarks لابردنی بەستەر و دڵخوازە نادروستەکان + Remove unreferenced named destinations لابردنی مەبەستە ناونراوەکانی ئاماژەپێنەکراو + Compress document structure (object streams) پەستاندنی پێکهاتەی بەڵگەنامە (لێشاوەکانی تەن) + Remove unused objects and merge identical ones لابردنی تەنە بەکارنەهێنراوەکان و یەکخستنی هاوشێوەکان + Audit space usage… پشکنینی بەکارهێنانی بۆشایی… + Space Audit پشکنینی بۆشایی + What takes up the space in this file, by kind of content. چی بۆشایی ئەم فایلە داگیر دەکات، بەپێی جۆری ناوەڕۆک. + Bytes بایت + Content Streams لێشاوەکانی ناوەڕۆک + X Object Forms فۆڕمەکانی X Object + Structure Info زانیاری پێکهاتە + Thumbnails وێنۆچکەکان + Named Destinations مەبەستە ناونراوەکان + Color Spaces بۆشایی ڕەنگەکان + Shadings سێبەرەکان + Patterns (graphics objects) شێوەکان (تەنە گرافیکییەکان) + Extended Graphics States دۆخە گرافیکییە درێژکراوەکان + Embedded Files فایلە تێخستراوەکان + Document Overhead باری زیادەی بەڵگەنامە + Total کۆی گشتی + Text Field Properties تایبەتمەندییەکانی خانەی دەق + Check Box Properties تایبەتمەندییەکانی خانەی هەڵبژاردن + Radio Button Properties تایبەتمەندییەکانی دوگمەی هەڵبژاردن + Dropdown Properties تایبەتمەندییەکانی پێڕستی بەرەوخوار + List Box Properties تایبەتمەندییەکانی سندووقی پێڕست + Button Properties تایبەتمەندییەکانی دوگمە + Digital Signature Properties تایبەتمەندییەکانی واژووی دیجیتاڵی + Position شوێن + Options هەڵبژاردەکان + Validate پشتڕاستکردنەوە + Calculate ژمێرکاریکردن + Actions کردارەکان + This field is locked. Unlock it to change its properties. ئەم خانەیە قفڵ کراوە. بیکەرەوە بۆ گۆڕینی تایبەتمەندییەکانی. + Tooltip: ڕێنمایی: + Common Properties تایبەتمەندییە هاوبەشەکان + Read Only تەنها خوێندنەوە + Required پێویستە + Font Size: قەبارەی فۆنت: + Auto خۆکار + Text Color: ڕەنگی دەق: + Borders and Colors سنوورەکان و ڕەنگەکان + Border Color: ڕەنگی سنوور: + Fill Color: ڕەنگی پڕکردنەوە: + No color بێ ڕەنگ + Beveled لێواربڕاو + Left: چەپ: + Bottom: خوارەوە: + Width: پانی: + Height: بەرزی: + Points from the page's bottom-left corner. خاڵ لە گۆشەی خوارەوە-چەپی پەڕەکەوە. + Alignment: هاوتەریبکردن: + Default Value: بەهای بنەڕەتی: + Multi-line فرەدێڕ + Scroll long text سکرۆڵکردنی دەقی درێژ + Allow Rich Text Formatting ڕێگەدان بە فۆرماتکردنی دەقی دەوڵەمەند + Limit of سنووری + characters پیت + Field is used for file selection خانەکە بۆ هەڵبژاردنی فایل بەکاردێت + Check spelling پشکنینی ڕێنووس + Comb of خانە بە ژمارەی + Export Value: {on} بەهای هەناردەکردن: {on} + Check box is checked by default خانەی هەڵبژاردن بە بنەڕەت هەڵبژێردراوە + Button is checked by default دوگمەکە بە بنەڕەت هەڵبژێردراوە + Buttons with the same name and value are selected in unison ئەو دوگمانەی هەمان ناو و بەهایان هەیە پێکەوە هەڵدەبژێردرێن + Item: بابەت: + Item List پێڕستی بابەتەکان + Up بۆ سەرەوە + Delete {o} سڕینەوەی {o} + Add the choices people pick from. ئەو هەڵبژاردانە زیاد بکە کە خەڵک لێیان هەڵدەبژێرێت. + Default: بنەڕەتی: + (none) (هیچ) + Sort items ڕیزکردنی بابەتەکان + Allow user to enter custom text ڕێگەدان بە بەکارهێنەر بۆ نووسینی دەقی تایبەت + Multiple selection هەڵبژاردنی فرە + Commit selected value immediately جێبەجێکردنی دەستبەجێی بەهای هەڵبژێردراو + Number ژمارە + Percentage ڕێژەی سەدی + Time کات + Special تایبەت + Select format category: هەڵبژاردنی پۆلی فۆرمات: + The value is shown as typed. بەهاکە وەک ئەوەی نووسراوە پیشان دەدرێت. + Decimal places: شوێنە دەیییەکان: + Separator style: شێوازی جیاکەرەوە: + Currency symbol: هێمای دراو: + Before the number پێش ژمارەکە + Negative number style: شێوازی ژمارە نەرێنییەکان: + Format: فۆرمات: + Custom: تایبەت: + Zip Code کۆدی پۆستە + Zip Code + 4 کۆدی پۆستە + 4 + Phone Number ژمارەی تەلەفۆن + Social Security Number ژمارەی دڵنیایی کۆمەڵایەتی + Arbitrary Mask ماسکی ئازاد + Mask: ماسک: + 9 digit, A letter, O letter or digit, X any character 9 ژمارە، A پیت، O پیت یان ژمارە، X هەر پیتێک + Example: {sample} نموونە: {sample} + Field value is not validated بەهای خانەکە پشتڕاست نەکراوەتەوە + Field value is in range: بەهای خانەکە لەناو مەودادایە: + Add an Action زیادکردنی کردارێک + Select Trigger: هەڵبژاردنی پاڵنەر: + Mouse Up بەرزکردنەوەی دوگمەی مشک + Mouse Down پەستانی دوگمەی مشک + Mouse Enter چوونە ژوورەوەی مشک + Mouse Exit چوونە دەرەوەی مشک + On Focus لە کاتی فۆکەسدا + On Blur لە کاتی لەدەستدانی فۆکەسدا + Select Action: هەڵبژاردنی کردار: + Open a web link کردنەوەی بەستەری وێب + Reset a form ڕێکخستنەوەی فۆڕم + Execute a menu item جێبەجێکردنی بابەتێکی پێڕست + Show a field پیشاندانی خانە + Hide a field شاردنەوەی خانە + Submit a form ناردنی فۆڕم + Fields to reset (comma-separated; empty: all) ئەو خانانەی ڕێکدەخرێنەوە (بە کۆمادا جیاکراونەتەوە؛ بەتاڵ: هەموو) + Print, NextPage, PrevPage, FirstPage or LastPage Print یان NextPage یان PrevPage یان FirstPage یان LastPage + Field names (comma-separated) ناوەکانی خانەکان (بە کۆمادا جیاکراونەتەوە) + URL to submit to ئەو URLـەی بۆی دەنێردرێت + Script: سکریپت: + Value: بەها: + No actions هیچ کردارێک نییە + Value is not calculated بەهاکە ژمێرکاری نەکراوە + Value is the بەهاکە بریتییە لە + sum (+) کۆ (+) + product (x) ئەنجامی لێکدان (x) + average تێکڕا + minimum کەمترین + maximum زۆرترین + of the following fields: ئەم خانانەی خوارەوە: + Simplified field notation: نیشانەکردنی سادەکراوی خانەکان: + Field names with + - * / and parentheses; put \\ before spaces in names. ناوی خانەکان لەگەڵ + - * / و کەوانەکان؛ \\ لەپێش بۆشایییەکان لە ناوەکاندا دابنێ. + +# Document font selection + Finding document fonts… گەڕان بەدوای فۆنتەکانی بەڵگەنامەدا… + Installed fonts… فۆنتە دامەزراوەکان… + Keep source fonts هێشتنەوەی فۆنتەکانی سەرچاوە + Load font… بارکردنی فۆنت… + No openly licensed document fonts found. Load a font file. هیچ فۆنتێکی بەڵگەنامە بە مۆڵەتی کراوە نەدۆزرایەوە. فایلێکی فۆنت بار بکە. + + Format text فۆرماتکردنی دەق + Bold ئەستوور + Italic لار + Align left هاوتەریبکردن بە چەپ + Centre ناوەڕاست + Align right هاوتەریبکردن بە ڕاست + Justify هاوتەریبکردنی دوولایەن + Thai and Arabic use regular fallback fonts when available. تایلەندی و عەرەبی کاتێک بەردەست بن فۆنتی جێگرەوەی ئاسایی بەکاردەهێنن. + Edit image دەستکاریکردنی وێنە + Rotate counterclockwise سووڕاندنەوە بە پێچەوانەی ئاراستەی کاتژمێر + Rotate clockwise سووڕاندنەوە بە ئاراستەی کاتژمێر + Flip horizontal هەڵگەڕانەوەی ئاسۆیی + Flip vertical هەڵگەڕانەوەی ستوونی + Replace image جێگرتنەوەی وێنە + Crop (% trimmed from each side) بڕینەوە (% لە هەر لایەکەوە دەبڕدرێت) + Click on the page to add text; each click starts a new box, and ✓ finishes. Drag items to move them, drag a corner to resize, double-click text to edit it. کرتە لە پەڕەکە بکە بۆ زیادکردنی دەق؛ هەر کرتەیەک سندووقێکی نوێ دەست پێدەکات، و ✓ کۆتایی دێنێت. بابەتەکان ڕابکێشە بۆ گواستنەوەیان، گۆشەیەک ڕابکێشە بۆ گۆڕینی قەبارە، دوو کرتە لە دەقەکە بکە بۆ دەستکاریکردنی. + Choose an image هەڵبژاردنی وێنەیەک + Export to Image هەناردەکردن بۆ وێنە + Export to Text هەناردەکردن بۆ دەق + Export All Images هەناردەکردنی هەموو وێنەکان + Resolution ڕوونی + Format فۆرمات + Quality کوالیتی + One {f} file per page, named after the document. یەک فایلی {f} بۆ هەر پەڕەیەک، بە ناوی بەڵگەنامەکەوە ناونراوە. + Exclude images smaller than دەرهێنانی ئەو وێنانەی بچووکترن لە + No limit بێ سنوور + Each image once, named after the document and page. JPEG images are saved unchanged; others as PNG. هەر وێنەیەک جارێک، بە ناوی بەڵگەنامە و پەڕەکەوە ناونراوە. وێنەکانی JPEG بێ گۆڕان پاشەکەوت دەکرێن؛ ئەوانی تر وەک PNG. + Plain text in reading order; pages are separated by form feeds. دەقی سادە بە ڕیزبەندی خوێندنەوە؛ پەڕەکان بە هێمای گۆڕینی پەڕە جیا دەکرێنەوە. + Create {what} دروستکردنی {what} + initials پیتە سەرەتاییەکان + signature واژوو + Create Custom Stamp دروستکردنی مۆری تایبەت + From {file} لە {file} + Category: پۆل: + e.g. My stamps بۆ نموونە: مۆرەکانم + Name: ناو: + Custom تایبەت + Delete stamp سڕینەوەی مۆر + Create custom stamp… دروستکردنی مۆری تایبەت… + From a PDF page or an image لە پەڕەیەکی PDF یان وێنەیەکەوە + Line spacing بۆشایی نێوان دێڕەکان + Character spacing بۆشایی نێوان پیتەکان + Horizontal scale پێوەری ئاسۆیی + Rotate Clockwise سووڕاندنەوە بە ئاراستەی کاتژمێر + Rotate Counterclockwise سووڕاندنەوە بە پێچەوانەی ئاراستەی کاتژمێر + Flip Horizontal هەڵگەڕانەوەی ئاسۆیی + Flip Vertical هەڵگەڕانەوەی ستوونی + Replace Image… جێگرتنەوەی وێنە… + Save Image As… پاشەکەوتکردنی وێنە وەک… + Copy Image کۆپیکردنی وێنە + The image has been copied ({w} × {h} pixels) وێنەکە کۆپی کرا ({w} × {h} پیکسڵ) + Couldn't copy the image: {e} کۆپیکردنی وێنەکە نەکرا: {e} + Copy Image in Original Format کۆپیکردنی وێنە بە فۆرماتی ڕەسەن + The image has been copied as a {ext} file وێنەکە وەک فایلی {ext} کۆپی کرا + The page has changed; select the image again پەڕەکە گۆڕاوە؛ دووبارە وێنەکە هەڵبژێرە + Check for updates پشکنین بۆ نوێکردنەوەکان + No check has run yet. هێشتا هیچ پشکنینێک نەکراوە. + Checking for a newer version… پشکنین بۆ وەشانێکی نوێتر… + PdfCraft {v} is available. PdfCraft {v} بەردەستە. + You have version {c}. Download the new version from its release page. وەشانی {c} هەیە. وەشانە نوێیەکە لە پەڕەی وەشانەکەیەوە دابگرە. + PdfCraft {c} is up to date. PdfCraft {c} نوێکراوەتەوە. + Couldn't check for updates: {e} پشکنین بۆ نوێکردنەوە نەکرا: {e} + You have version {c}. All releases are listed at {page}. وەشانی {c} هەیە. هەموو وەشانەکان لە {page} پێڕست کراون. + Asks GitHub for the latest release. Nothing is downloaded or installed automatically. لە GitHub دەپرسێت بۆ نوێترین وەشان. هیچ شتێک بە شێوەی خۆکار داگیر ناکرێت یان دادەمەزرێنرێت. + Download داگرتن + Later دواتر + none هیچ + Declared conformance: {shown} گونجانی ڕاگەیەندراو: {shown} + Output intent: {list} مەبەستی دەرهاویشتە: {list} + Conformance level: ئاستی گونجان: + No problems found: the document conforms to {level}. هیچ کێشەیەک نەدۆزرایەوە: بەڵگەنامەکە لەگەڵ {level} دەگونجێت. + (page {p}) (پەڕەی {p}) + · not fixable here · لێرە چاک ناکرێت + Verify سەلماندن + Box سندووق + Units یەکەکان + Set to zero دانان بە سفر + Current page ({n}) پەڕەی ئێستا ({n}) + Subset ژێرکۆمەڵە + Update نوێکردنەوە + Add زیادکردن + {verb} Header and Footer {verb} سەرەوە و خوارەوەی پەڕە + {verb} Watermark {verb} نیشانەی ئاوی + {verb} Background {verb} پاشبنەما + Margins (in) پەراوێزەکان (ئینچ) + Left Header Text دەقی سەرەوەی چەپ + Center Header Text دەقی سەرەوەی ناوەڕاست + Right Header Text دەقی سەرەوەی ڕاست + Left Footer Text دەقی خوارەوەی چەپ + Center Footer Text دەقی خوارەوەی ناوەڕاست + Right Footer Text دەقی خوارەوەی ڕاست + Insert Page Number خستنەناوی ژمارەی پەڕە + Insert Date خستنەناوی بەروار + Start page number ژمارەی پەڕەی دەستپێک + Source سەرچاوە + Fit to page گونجاندن بە پەڕە + Rotation سووڕاندنەوە + Appear behind page دەردەکەوێت لە پشت پەڕەکە + Appear on top of page دەردەکەوێت لە سەرەوەی پەڕەکە + Offset from centre لادان لە ناوەڕاستەوە + From colour لە ڕەنگەوە + Page Range Options هەڵبژاردەکانی مەودای پەڕەکان + Preview: page {p} of {n} پێشبینین: پەڕەی {p} لە {n} + Applies to 1 page بۆ 1 پەڕە جێبەجێ دەکرێت + Applies to {n} pages بۆ {n} پەڕە جێبەجێ دەکرێت + Replaces the existing one on those pages. ئەوەی ئێستا هەیە لەسەر ئەو پەڕانە دەگۆڕێت. + PDF or image PDF یان وێنە + No file chosen هیچ فایلێک هەڵنەبژێردراوە + Page number ژمارەی پەڕە + Scale relative to target page پێوەر بە بەراورد لەگەڵ پەڕەی ئامانج + Link Properties تایبەتمەندییەکانی بەستەر + Create Link دروستکردنی بەستەر + Link Appearance دیمەنی بەستەر + Link Type: جۆری بەستەر: + Visible Rectangle لاکێشەی دیار + Invisible Rectangle لاکێشەی نادیار + Highlight Style: شێوازی هایلایت: + Invert پێچەوانەکردنەوە + Outline چوارچێوە + Inset ناوەوەچوو + Line Thickness: ئەستووریی هێڵ: + Thin تەنک + Thick ئەستوور + Line Style: شێوازی هێڵ: + Solid پتەو + Dashed خاڵخاڵی + Color: ڕەنگ: + Link Action کرداری بەستەر + Open a web page کردنەوەی لاپەڕەی وێب + Go to a page view چوون بۆ بینینی پەڕەیەک + Type the web address. ناونیشانی وێبەکە بنووسە. + This document has no signatures. ئەم بەڵگەنامەیە هیچ واژوویەکی نییە. + The Keychain's digital IDs couldn't be listed: {e} ناسنامە دیجیتاڵییەکانی Keychain نەتوانرا پێڕست بکرێن: {e} + Signed and saved to {path} واژوو کرا و پاشەکەوتکرا لە {path} + Couldn't open revision {n}: {e} کردنەوەی پێداچوونەوەی {n} نەکرا: {e} + Couldn't open the signed version: {e} کردنەوەی وەشانی واژووکراو نەکرا: {e} + Sign with a Digital ID واژووکردن بە ناسنامەی دیجیتاڵی + Choose the digital ID that you want to use for signing: ئەو ناسنامە دیجیتاڵییە هەڵبژێرە کە دەتەوێت بۆ واژووکردن بەکاری بهێنیت: + Keychain · Keychain · + Windows store · کۆگای Windows · + Issued by: دەرکراوە لەلایەن: + , Expires: ، بەسەردەچوون: + Digitally signed by بە شێوەی دیجیتاڵی واژووکراوە لەلایەن + DN: DN: + Reason: هۆکار: + Location: شوێن: + Date: بەروار: + The labels are in English: the signature's font can't draw them in this language. نیشانەکان بە ئینگلیزین: فۆنتی واژووەکە ناتوانێت بەم زمانە بیانکێشێت. + No digital IDs yet. هێشتا هیچ ناسنامەیەکی دیجیتاڵی نییە. + Configure New Digital ID ڕێکخستنی ناسنامەی دیجیتاڵی نوێ + Remove "{name}" from this list? The file itself is not deleted. "{name}" لەم پێڕستە لاببرێت؟ خودی فایلەکە ناسڕدرێتەوە. + Continue بەردەوامبوون + Configure a Digital ID for Signing ڕێکخستنی ناسنامەی دیجیتاڵی بۆ واژووکردن + Use a Digital ID from a file بەکارهێنانی ناسنامەی دیجیتاڵی لە فایلێکەوە + Create a new Digital ID (self-signed, saved to a password-protected file) دروستکردنی ناسنامەی دیجیتاڵی نوێ (خۆواژووکراو، لە فایلێکی پارێزراو بە وشەی نهێنی پاشەکەوت دەکرێت) + Name ناو + Organizational Unit یەکەی ڕێکخراوەیی + Organization Name ناوی ڕێکخراو + Email Address ناونیشانی ئیمەیڵ + Country/Region وڵات/ناوچە + Key Algorithm ئەلگۆریتمی کلیل + Confirm Password پشتڕاستکردنەوەی وشەی نهێنی + Valid for 5 years, for digital signatures. Self-signed IDs are usually not trusted by others. بۆ ماوەی 5 ساڵ کارایە، بۆ واژووە دیجیتاڵییەکان. ناسنامە خۆواژووکراوەکان زۆربەی کات لەلایەن ئەوانی ترەوە متمانەیان پێ ناکرێت. + File (.p12, .pfx) فایل (.p12, .pfx) + Digital ID ناسنامەی دیجیتاڵی + Browse… گەڕان… + {verb} as "{name}" {verb} وەک "{name}" + Certify بڕوانامەدان + The signature will be invisible. واژووەکە نادیار دەبێت. + The existing action will be preserved. کردارە هەبووەکە دەپارێزرێت. + Distinguished name ناوی جیاکراوە + Labels نیشانەکان + Graphic گرافیک + Signer's name ناوی واژووکەر + Fill & Sign signature واژووی «پڕکردنەوە و واژووکردن» + Choose image… هەڵبژاردنی وێنە… + Permitted actions after certifying کردارە ڕێگەپێدراوەکان دوای بڕوانامەدان + No changes allowed هیچ گۆڕانکارییەک ڕێگەپێدراو نییە + Annotations, form fill-in, and digital signatures تێبینییەکان، پڕکردنەوەی فۆڕم و واژووە دیجیتاڵییەکان + Form fill-in and digital signatures پڕکردنەوەی فۆڕم و واژووە دیجیتاڵییەکان + The key is in the macOS Keychain, which may ask to allow PdfCraft to use it. کلیلەکە لە Keychain ی macOS ـدایە، کە ڕەنگە داوای ڕێگەدان بکات بۆ ئەوەی PdfCraft بەکاری بهێنێت. + The key is in the Windows certificate store, which may ask to allow PdfCraft to use it. کلیلەکە لە کۆگای بڕوانامەکانی Windows ـدایە، کە ڕەنگە داوای ڕێگەدان بکات بۆ ئەوەی PdfCraft بەکاری بهێنێت. + Digital ID password وشەی نهێنیی ناسنامەی دیجیتاڵی + Back گەڕانەوە + Validate all پشتڕاستکردنەوەی هەموو + Sign this field… واژووکردنی ئەم خانەیە… + Signature is valid: واژووەکە دروستە: + Signature validity is UNKNOWN: دروستیی واژووەکە نەناسراوە: + Signature is INVALID: واژووەکە نادروستە: + Signature Details وردەکارییەکانی واژوو + Reason هۆکار + Signing time کاتی واژووکردن + Algorithm ئەلگۆریتم + Signer واژووکەر + Issued by دەرکراوە لەلایەن + Valid دروست + Field خانە + Field: {field} on page {p} خانە: {field} لە پەڕەی {p} + Add to trusted certificates زیادکردن بۆ بڕوانامە متمانەپێکراوەکان + View signed version بینینی وەشانی واژووکراو + Show certificate… پیشاندانی بڕوانامە… + Export certificate… هەناردەکردنی بڕوانامە… + Certificate Viewer بینەری بڕوانامە + This dialog shows the details of a certificate and its chain. ئەم دیالۆگە وردەکارییەکانی بڕوانامە و زنجیرەکەی پیشان دەدات. + Trust متمانە + Issued to دراوە بۆ + Valid from دروستە لە + Valid to دروستە تا + Intended usage بەکارهێنانی مەبەستدار + Any هەر + Version وەشان + Serial number ژمارەی زنجیرەیی + Issuer دەرکەر + Validity starts دەستپێکی دروستی + Validity ends کۆتایی دروستی + Public key کلیلی گشتی + Key usage بەکارهێنانی کلیل + Not present بوونی نییە + Self-signed واژووکراو بە خۆی + Edit Action دەستکاریکردنی کردار + New Action کرداری نوێ + Action name: ناوی کردار: + Description: وەسف: + Steps هەنگاوەکان + Add the steps this action runs, in order. ئەو هەنگاوانە زیاد بکە کە ئەم کردارە جێبەجێیان دەکات، بە ڕیزبەندی. + Add Step زیادکردنی هەنگاو + An action with this name already exists. کردارێک بەم ناوە پێشتر هەیە. + New Action… کرداری نوێ… + Edit… دەستکاریکردن… + Add watermark زیادکردنی نیشانەی ئاوی + Add header زیادکردنی سەرەوەی پەڕە + Add footer زیادکردنی خوارەوەی پەڕە + Set document title دانانی ناونیشانی بەڵگەنامە + Run a JavaScript جێبەجێکردنی JavaScript + Prepare for Distribution ئامادەکردن بۆ دابەشکردن + Remove hidden information and flatten comments and form fields, so recipients see only the pages. لابردنی زانیارییە شاراوەکان و تەختکردنی لێدوانەکان و خانەکانی فۆڕم، تا وەرگرەکان تەنیا پەڕەکان ببینن. + Optimize Scanned Documents باشترکردنی بەڵگەنامە سکانکراوەکان + Make scans searchable, then make them smaller. سکانەکان بکە بە گەڕانپێکراو، پاشان قەبارەیان بچووک بکەرەوە. + Add Page Numbers زیادکردنی ژمارەی پەڕەکان + Number every page in the footer. هەموو پەڕەیەک لە خوارەوەی پەڕەدا ژمارە بکە. + Mark as Confidential نیشانکردن وەک نهێنی + A diagonal CONFIDENTIAL watermark on every page. نیشانەی ئاوی CONFIDENTIAL لار لەسەر هەموو پەڕەیەک. + Sanitize Documents پاکژکردنی بەڵگەنامەکان + Remove hidden information, metadata, scripts and embedded content, and rewrite the files. لابردنی زانیاریی شاراوە، میتاداتا، سکریپتەکان و ناوەڕۆکی تێخراو، و دووبارە نووسینەوەی فایلەکان. + Type text تایپکردنی دەق + Text to insert ئەو دەقەی دەخرێتە ناو + Replacement text دەقی جێگرتنەوە + Edit text… دەستکاریکردنی دەق… + Add a sticky note here لێرە تێبینییەکی لکاو زیاد بکە + {kind} Properties تایبەتمەندییەکانی {kind} + Appearance دیمەن + General گشتی + Review History مێژووی پێداچوونەوە + This comment's appearance can't be changed yet. هێشتا دیمەنی ئەم لێدوانە ناگۆڕدرێت. + Icon ئایکۆن + Thickness ئەستووری + Modified دەستکاریکراو + No status has been set. هیچ دۆخێک دانەنراوە. + Compare Files بەراوردکردنی فایلەکان + Old file: فایلی کۆن: + Open the older version first یەکەم جار وەشانە کۆنەکە بیکەرەوە + New file: فایلی نوێ: + Text is compared word by word; the differences are shown on the new file. دەقەکە وشە بە وشە بەراورد دەکرێت؛ جیاوازییەکان لەسەر فایلە نوێیەکە پیشان دەدرێن. + Compare this file with an older version: Compare files… in All tools. ئەم فایلە لەگەڵ وەشانێکی کۆنتر بەراورد بکە: «بەراوردکردنی فایلەکان…» لە هەموو ئامرازەکاندا. + No differences in the text. هیچ جیاوازییەک لە دەقەکەدا نییە. + {n} {kind} {n} {kind} + Inserted خراوەتە ناو + Deleted سڕاوەتەوە + Replaced گۆڕدراوە + Visual بینراو + Mark as comments نیشانکردن وەک لێدوان + Report… ڕاپۆرت… + {kind} · page {p} {kind} · پەڕەی {p} + Set Alternate Text دانانی دەقی جێگرەوە + This document has no tagged figures. ئەم بەڵگەنامەیە هیچ شێوەیەکی تاگکراوی تێدا نییە. + on page {p} لە پەڕەی {p} + Figure {i} of {n}{page} شێوەی {i} لە {n}{page} + No preview هیچ پێشبینینێک نییە + Alternate text دەقی جێگرەوە + Describe the figure شێوەکە وەسف بکە + Decorative figure شێوەی ڕازاندنەوە + Previous figure شێوەی پێشوو + Next figure شێوەی داهاتوو + Save & Close پاشەکەوتکردن و داخستن + Accessibility Checker Options هەڵبژاردەکانی پشکنەری دەستڕاگەیشتن + Report Options هەڵبژاردەکانی ڕاپۆرت + Create accessibility report دروستکردنی ڕاپۆرتی دەستڕاگەیشتن + Page Range مەودای پەڕەکان + All pages in document هەموو پەڕەکانی بەڵگەنامەکە + Checking Options ({on} of 32 in all categories) هەڵبژاردەکانی پشکنین ({on} لە 32 لە هەموو پۆلەکاندا) + Show this dialog when the Checker starts ئەم دیالۆگە پیشان بدە کاتێک پشکنەرەکە دەست پێدەکات + Select All هەڵبژاردنی هەموو + Clear All پاککردنەوەی هەموو + Start Checking دەستپێکردنی پشکنین + This document hasn't been checked yet. ئەم بەڵگەنامەیە هێشتا پشکنینی بۆ نەکراوە. + No issues found هیچ کێشەیەک نەدۆزرایەوە + 1 issue 1 کێشە + {n} issues {n} کێشە + {label} (1 issue) {label} (1 کێشە) + {label} ({n} issues) {label} ({n} کێشە) + Check again دووبارە پشکنینەوە + Report ڕاپۆرت + Show the accessibility report پیشاندانی ڕاپۆرتی دەستڕاگەیشتن + Collapse کۆکردنەوە + Expand فراوانکردن + {rule} - {status} {rule} - {status} + Passed سەرکەوتوو + Failed شکستخواردوو + Needs manual check پێویستی بە پشکنینی دەستی هەیە + Skipped تێپەڕێنراو + Fix چاککردنەوە + Skip Rule تێپەڕاندنی ڕێسا + Explain ڕوونکردنەوە + Check Again دووبارە پشکنینەوە + Show Report پیشاندانی ڕاپۆرت + Options… هەڵبژاردەکان… + Go to the page چوون بۆ پەڕەکە + Page Content ناوەڕۆکی پەڕە + Forms فۆڕمەکان + Alternate Text دەقی جێگرەوە + Tables خشتەکان + Lists پێڕستەکان + Headings سەردێڕەکان + Accessibility permission flag ئاڵای مۆڵەتی دەستڕاگەیشتن + Accessibility permission flag is set ئاڵای مۆڵەتی دەستڕاگەیشتن دانراوە + Security settings must allow assistive technology to read the content ("Enable text access for screen reader devices"). Change the document's security to allow it. ڕێکخستنەکانی ئاسایش دەبێت ڕێگە بە تەکنەلۆژیای یاریدەدەر بدەن ناوەڕۆکەکە بخوێننەوە ("Enable text access for screen reader devices"). ئاسایشی بەڵگەنامەکە بگۆڕە بۆ ئەوەی ڕێگەی پێبدات. + Image-only PDF PDFی تەنیا وێنە + Document is not image-only PDF بەڵگەنامەکە PDFی تەنیا وێنە نییە + Pages that are only pictures of text can't be read aloud or searched. Recognize text (OCR) to add a text layer. ئەو پەڕانەی تەنیا وێنەی دەقن ناخوێنرێنەوە بە دەنگ و ناگەڕێن تێیاندا. دەق بناسەوە (OCR) بۆ زیادکردنی چینێکی دەق. + Document is tagged PDF بەڵگەنامەکە PDFی تاگکراوە + Tags give the document a logical structure that assistive technology follows. Tag the document (Automatically tag PDF). تاگەکان پێکهاتەیەکی لۆژیکی بە بەڵگەنامەکە دەدەن کە تەکنەلۆژیای یاریدەدەر پەیڕەوی دەکات. بەڵگەنامەکە تاگ بکە (تاگکردنی PDF بە شێوەی ئۆتۆماتیکی). + Logical Reading Order ڕیزبەندی لۆژیکیی خوێندنەوە + Document structure provides a logical reading order پێکهاتەی بەڵگەنامەکە ڕیزبەندییەکی لۆژیکیی خوێندنەوە دابین دەکات + Check that the tags read in the order a sighted reader would. Use the Reading Order tool or the Tags panel to correct it. دڵنیابە تاگەکان بەو ڕیزبەندییە دەخوێنرێنەوە کە خوێنەرێکی بینەر دەیخوێنێتەوە. ئامرازی ڕیزبەندی خوێندنەوە یان پانێڵی تاگەکان بەکاربهێنە بۆ ڕاستکردنەوەی. + Primary language زمانی سەرەکی + Text language is specified زمانی دەقەکە دیاریکراوە + Screen readers choose their voice from the document's language. Set it in Document Properties > Advanced > Language. خوێنەرەوەکانی شاشە دەنگەکەیان لە زمانی بەڵگەنامەکە هەڵدەبژێرن. لە تایبەتمەندییەکانی بەڵگەنامە > پێشکەوتوو > زمان دایبنێ. + Document title is showing in title bar ناونیشانی بەڵگەنامەکە لە شریتی ناونیشاندا پیشان دەدرێت + The window should show a meaningful title rather than the file name. Set a title and Initial View > Show: Document Title. پەنجەرەکە دەبێت ناونیشانێکی بەمانا پیشان بدات لە جیاتی ناوی فایلەکە. ناونیشانێک دابنێ و لە بینینی سەرەتایی > پیشاندان: ناونیشانی بەڵگەنامە. + Bookmarks are present in large documents دڵخوازەکان لە بەڵگەنامە گەورەکاندا هەن + Documents of more than 20 pages need bookmarks for navigation. Add bookmarks for the main sections. ئەو بەڵگەنامانەی زیاتر لە 20 پەڕەیان هەیە پێویستیان بە دڵخوازە بۆ ڕێنیشاندان. بۆ بەشە سەرەکییەکان دڵخواز زیاد بکە. + Color contrast جیاوازیی ڕەنگ + Document has appropriate color contrast بەڵگەنامەکە جیاوازیی ڕەنگی گونجاوی هەیە + Text must contrast enough with its background for people with low vision. Check the colours by eye or with a contrast tool. دەق دەبێت بە پێی پێویست لەگەڵ پاشبنەماکەی جیاوازیی ڕەنگی هەبێت بۆ ئەوانەی بیناییان لاوازە. ڕەنگەکان بە چاو یان بە ئامرازی جیاوازیی ڕەنگ بپشکنە. + Tagged content ناوەڕۆکی تاگکراو + All page content is tagged هەموو ناوەڕۆکی پەڕەکە تاگکراوە + Everything on a page must be tagged or marked as an artifact (decoration, headers, footers). Tag the untagged content. هەموو شتێک لەسەر پەڕەیەک دەبێت تاگکراو بێت یان وەک توخمی ڕازاندنەوە نیشانکرابێت (ڕازاندنەوە، سەرەوەی پەڕەکان، خوارەوەی پەڕەکان). ئەو ناوەڕۆکەی تاگ نەکراوە تاگی بکە. + Tagged annotations تێبینییە تاگکراوەکان + All annotations are tagged هەموو تێبینییەکان تاگکراون + Comments, links and fields must be in the tag tree to be announced. Tag the annotations. لێدوانەکان، بەستەرەکان و خانەکان دەبێت لە درەختی تاگەکاندا بن تا ڕابگەیەنرێن. تێبینییەکان تاگ بکە. + Tab order ڕیزبەندی بازدەر + Tab order is consistent with structure order ڕیزبەندی بازدەر لەگەڵ ڕیزبەندی پێکهاتەدا یەکدەگرێتەوە + Pages with links, comments or fields should tab in structure order. The fix sets each page's tab order to Use Document Structure. ئەو پەڕانەی بەستەر، لێدوان یان خانیان تێدایە دەبێت بە ڕیزبەندی پێکهاتە بڕۆن. چاککردنەوەکە ڕیزبەندی بازدەری هەر پەڕەیەک دادەنێت بە «بەکارهێنانی پێکهاتەی بەڵگەنامە». + Character encoding کۆدکردنی پیتەکان + Reliable character encoding is provided کۆدکردنی پیتی جێی متمانە دابین کراوە + Fonts must map their characters to Unicode so text can be read and copied. Fix the fonts or recreate the PDF. فۆنتەکان دەبێت پیتەکانیان بە Unicode ببەستنەوە تا دەق بخوێنرێتەوە و کۆپی بکرێت. فۆنتەکان چاک بکەرەوە یان PDFەکە دووبارە دروست بکەرەوە. + Tagged multimedia مولتیمیدیای تاگکراو + All multimedia objects are tagged هەموو تەنەکانی مولتیمیدیا تاگکراون + Video, sound and rich media must be tagged to be announced. Tag the multimedia annotations. ڤیدیۆ، دەنگ و میدیای دەوڵەمەند دەبێت تاگ بکرێن تا ڕابگەیەنرێن. تێبینییەکانی مولتیمیدیا تاگ بکە. + Screen flicker بلیسکەی شاشە + Page will not cause screen flicker پەڕەکە بلیسکەی شاشە دروست ناکات + Animation that flashes can cause seizures. Check scripts and media for flicker. جوڵەی بلیسکەدەر دەتوانێت ببێتە هۆی نۆرە. سکریپتەکان و میدیاکان بۆ بلیسکە بپشکنە. + Scripts سکریپتەکان + No inaccessible scripts هیچ سکریپتێکی دەستپێنەگەیشتوو نییە + Timed responses وەڵامە کاتدارەکان + Page does not require timed responses پەڕەکە پێویستی بە وەڵامی کاتدار نییە + People may need more time to respond. Check that nothing has a time limit. لەوانەیە خەڵک پێویستیان بە کاتی زیاتر بێت بۆ وەڵامدانەوە. دڵنیابە هیچ شتێک سنووری کاتی نییە. + Navigation links بەستەرەکانی ڕێنیشاندان + Navigation links are not repetitive بەستەرەکانی ڕێنیشاندان دووبارە نین + Repeated navigation links should be skippable. Check links that appear on every page. دەبێت بتوانرێت بەستەرە دووبارەبووەکانی ڕێنیشاندان تێپەڕێنرێن. ئەو بەستانە بپشکنە کە لە هەموو پەڕەیەکدا دەردەکەون. + Tagged form fields خانە تاگکراوەکانی فۆڕم + All form fields are tagged هەموو خانەکانی فۆڕم تاگکراون + Form fields must be in the tag tree (Form tags) to be announced. Tag the form fields. خانەکانی فۆڕم دەبێت لە درەختی تاگەکاندا بن (تاگەکانی Form) تا ڕابگەیەنرێن. خانەکانی فۆڕم تاگ بکە. + Field descriptions وەسفەکانی خانە + All form fields have description هەموو خانەکانی فۆڕم وەسفیان هەیە + Each field needs a tooltip that says what to enter. Add one in Field Properties > General > Tooltip. هەر خانەیەک پێویستی بە ڕێنمایییەک هەیە کە بڵێت چی بنووسرێت. یەکێک زیاد بکە لە تایبەتمەندییەکانی خانە > گشتی > ڕێنمایی. + Figures alternate text دەقی جێگرەوەی شێوەکان + Figures require alternate text شێوەکان پێویستیان بە دەقی جێگرەوە هەیە + Pictures need alternate text that describes them, or must be marked decorative. Add alternate text to each figure. وێنەکان پێویستیان بە دەقی جێگرەوەیە کە وەسفیان بکات، یان دەبێت وەک ڕازاندنەوە نیشان بکرێن. بۆ هەر شێوەیەک دەقی جێگرەوە زیاد بکە. + Nested alternate text دەقی جێگرەوەی نێوخراو + Alternate text that will never be read دەقی جێگرەوە کە هەرگیز ناخوێنرێتەوە + Alternate text inside an element that already has alternate text is never read. Remove the inner alternate text. دەقی جێگرەوە لەناو توخمێکدا کە خۆی دەقی جێگرەوەی هەیە هەرگیز ناخوێنرێتەوە. دەقە جێگرەوە ناوخۆییەکە لاببە. + Associated with content بەستراوە بە ناوەڕۆکەوە + Alternate text must be associated with some content دەقی جێگرەوە دەبێت بە ناوەڕۆکێکەوە ببەسترێت + Alternate text on an element without page content is never reached. Remove it or attach the element to content. دەقی جێگرەوە لەسەر توخمێک بەبێ ناوەڕۆکی پەڕە هەرگیز پێی ناگەن. لایببە یان توخمەکە بە ناوەڕۆکەوە بلکێنە. + Hides annotation تێبینییەک دەشارێتەوە + Alternate text should not hide annotation دەقی جێگرەوە نابێت تێبینییەک بشارێتەوە + Alternate text on an element that contains a link or field hides that annotation from assistive technology. Move the alternate text. دەقی جێگرەوە لەسەر توخمێک کە بەستەر یان خانەیەکی تێدایە ئەو تێبینییە لە تەکنەلۆژیای یاریدەدەر دەشارێتەوە. دەقە جێگرەوەکە بگوازەوە. + Other elements alternate text دەقی جێگرەوەی توخمەکانی تر + Other elements that require alternate text توخمەکانی تر کە پێویستیان بە دەقی جێگرەوە هەیە + Formulas and similar non-text elements need alternate text. Add alternate text to them. فۆرمولەکان و توخمە نادەقییە هاوشێوەکان پێویستیان بە دەقی جێگرەوە هەیە. دەقی جێگرەوەیان بۆ زیاد بکە. + Rows ڕیزەکان + TR must be a child of Table, THead, TBody, or TFoot TR دەبێت منداڵی Table یان THead یان TBody یان TFoot بێت + Table cells belong in a row. Fix the table's tags. خانەکانی خشتە شوێنیان لەناو ڕیزێکدایە. تاگەکانی خشتەکە چاک بکەرەوە. + Headers سەردێڕەکان + Tables should have headers خشتەکان دەبێت سەردێڕیان هەبێت + Header cells (TH) tell listeners what each column or row holds. Mark the header cells. خانە سەردێڕەکان (TH) بە گوێگرەکان دەڵێن هەر ستوون یان ڕیزێک چی لەخۆ دەگرێت. خانە سەردێڕەکان نیشان بکە. + Regularity ڕێکی + Tables must contain the same number of columns in each row and rows in each column خشتەکان دەبێت لە هەر ڕیزێکدا هەمان ژمارەی ستوون و لە هەر ستوونێکدا هەمان ژمارەی ڕیزیان تێدا بێت + Irregular tables confuse cell navigation. Give every row the same number of cells (counting spans). خشتە ناڕێکەکان ڕێنیشاندانی خانەکان شێواو دەکەن. بە هەر ڕیزێک هەمان ژمارەی خانە بدە (بە ژماردنی درێژبوونەوەکان). + Summary کورتە + Tables must have a summary خشتەکان دەبێت کورتەیەکیان هەبێت + A summary describes the table's purpose and layout. Add a Summary attribute to each table. کورتەکە ئامانج و شێوازی خشتەکە وەسف دەکات. بۆ هەر خشتەیەک تایبەتمەندییەکی Summary زیاد بکە. + List items توخمەکانی پێڕست + LI must be a child of L LI دەبێت منداڵی L بێت + List items belong in a list. Fix the list's tags. توخمەکانی پێڕست شوێنیان لەناو پێڕستێکدایە. تاگەکانی پێڕستەکە چاک بکەرەوە. + Lbl and LBody Lbl و LBody + Lbl and LBody must be children of LI Lbl و LBody دەبێت منداڵی LI بن + List labels and bodies belong in a list item. Fix the list's tags. نیشانەکان و دەقەکانی پێڕست شوێنیان لەناو توخمێکی پێڕستدایە. تاگەکانی پێڕستەکە چاک بکەرەوە. + Appropriate nesting نێوخستنی گونجاو + Heading levels shouldn't skip (an H1 followed by an H3). Retag the headings. ئاستەکانی سەردێڕ نابێت ئاستێک تێپەڕێنن (H1 و پاشان H3). سەردێڕەکان دووبارە تاگ بکەرەوە. + TH and TD TH و TD + TH and TD must be children of TR TH و TD دەبێت منداڵی TR بن + Mark Page Range نیشانکردنی مەودای پەڕەکان + Pages from پەڕەکان لە + Single word or phrase یەک وشە یان دەستەواژە + Text to find ئەو دەقەی بۆی دەگەڕێیت + Patterns شێوازەکان + Phone Numbers ژمارەکانی تەلەفۆن + Email Addresses ناونیشانەکانی ئیمەیڵ + Credit Cards کارتەکانی بانک + Social Security Numbers ژمارەکانی دڵنیایی کۆمەڵایەتی + Dates بەروارەکان + Text in images isn't found; recognise text (OCR) first. دەقی ناو وێنەکان نادۆزرێتەوە؛ یەکەم جار دەق بناسەوە (OCR). + No matches. هیچ گونجانێک نییە. + Some bookmarks are not shown here: the panel lists a limited number, nested a limited depth. هەندێک لە دڵخوازەکان لێرە پیشان نادرێن: پانێڵەکە ژمارەیەکی سنووردار پێڕست دەکات، بە قووڵییەکی سنوورداری نێوخستن. + {n} match(es) marked for redaction. {n} گونجان بۆ شاردنەوە نیشانکراوە. + Multiple words or phrases چەندین وشە یان دەستەواژە + One word or phrase per line یەک وشە یان دەستەواژە لە هەر دێڕێکدا + Import list… هاوردەکردنی پێڕست… + {n} word(s) or phrase(s) {n} وشە یان دەستەواژە + {name} is too large for a word list (at most 1 MB). {name} زۆر گەورەیە بۆ پێڕستی وشەکان (زۆرترین 1 MB). + Redaction Tool Properties تایبەتمەندییەکانی ئامرازی شاردنەوە + Redacted area fill colour: ڕەنگی پڕکردنەوەی ناوچە شاردراوەکە: + Use overlay text بەکارهێنانی دەقی سەرپۆش + Custom text: دەقی تایبەت: + Redaction code: کۆدی شاردنەوە: + Font: فۆنت: + Font size: قەبارەی فۆنت: + Font size قەبارەی فۆنت + Auto-size text to fit redaction region قەبارەدانی ئۆتۆماتیکی دەق بۆ گونجاندن لەگەڵ ناوچەی شاردنەوە + Font colour: ڕەنگی فۆنت: + Repeat overlay text دووبارەکردنەوەی دەقی سەرپۆش + Text alignment: هاوتەریبکردنی دەق: + Center ناوەڕاست + Apply redactions جێبەجێکردنی شاردنەوەکان + You are about to apply 1 redaction mark. Text, images and drawings under the marks, and comments and form fields that overlap them, are removed permanently. خەریکە 1 نیشانەی شاردنەوە جێبەجێ دەکەیت. دەق، وێنە و وێنەکێشانەکانی ژێر نیشانەکان، و لێدوانەکان و خانەکانی فۆڕم کە لەگەڵیاندا تێکەڵ دەبن، بۆ هەمیشە لادەبرێن. + You are about to apply {n} redaction marks. Text, images and drawings under the marks, and comments and form fields that overlap them, are removed permanently. خەریکە {n} نیشانەی شاردنەوە جێبەجێ دەکەیت. دەق، وێنە و وێنەکێشانەکانی ژێر نیشانەکان، و لێدوانەکان و خانەکانی فۆڕم کە لەگەڵیاندا تێکەڵ دەبن، بۆ هەمیشە لادەبرێن. + Save the document afterwards: saving rewrites the whole file so no trace of the removed content stays in it. پاشان بەڵگەنامەکە پاشەکەوت بکە: پاشەکەوتکردن هەموو فایلەکە دووبارە دەنووسێتەوە تا هیچ شوێنەواری ناوەڕۆکە لابراوەکە تێیدا نەمێنێت. + Select the items to remove from this document. ئەو توخمانە هەڵبژێرە کە لەم بەڵگەنامەیە لادەبرێن. + Metadata میتاداتا + File attachments پێوەکراوەکانی فایل + Comments and markups لێدوانەکان و نیشانکردنەکان + Hidden text دەقی شاراوە + Hidden layers چینە شاراوەکان + Links, actions and JavaScripts بەستەرەکان، کردارەکان و سکریپتەکانی JavaScript + Private data of other applications داتای تایبەتی بەرنامەکانی تر + None found هیچ نەدۆزرایەوە + Form fields are flattened: their values stay visible. Saving rewrites the whole file. خانەکانی فۆڕم تەخت دەکرێن: بەهاکانیان بەردەوام دەردەکەون. پاشەکەوتکردن هەموو فایلەکە دووبارە دەنووسێتەوە. + Remove لابردن + Sanitizing removes hidden information from the document: metadata, file attachments, comments, form fields (flattened), hidden text and layers, bookmarks, links, actions and scripts, and private application data. پاکژکردن زانیاریی شاراوە لە بەڵگەنامەکە لادەبات: میتاداتا، پێوەکراوەکانی فایل، لێدوانەکان، خانەکانی فۆڕم (تەختکراو)، دەقی شاراوە و چینەکان، دڵخوازەکان، بەستەرەکان، کردارەکان و سکریپتەکان، و داتای تایبەتی بەرنامەکان. + Save the document afterwards; saving rewrites the whole file so nothing removed stays in it. پاشان بەڵگەنامەکە پاشەکەوت بکە؛ پاشەکەوتکردن هەموو فایلەکە دووبارە دەنووسێتەوە تا هیچ شتێکی لابراو تێیدا نەمێنێت. + Printer: چاپکەر: + Save as PDF پاشەکەوتکردن وەک PDF + {name} (default) {name} (بنەڕەتی) + Copies: کۆپییەکان: + Collate ڕیزکردنی کۆپییەکان + Print in grayscale چاپکردن بە خۆڵەمێشی + Two-sided: دوولایە: + Off کوژاوە + Flip on long edge هەڵگێڕانەوە لەسەر لێواری درێژ + Flip on short edge هەڵگێڕانەوە لەسەر لێواری کورت + Paper: کاغەز: + Pages to Print ئەو پەڕانەی چاپ دەکرێن + More options: هەڵبژاردەی زیاتر: + All pages in range هەموو پەڕەکانی ناو مەوداکە + Odd pages only تەنیا پەڕە تاکەکان + Even pages only تەنیا پەڕە جووتەکان + Reverse pages پێچەوانەکردنەوەی ڕیزبەندی پەڕەکان + Page Sizing & Handling قەبارەدان و مامەڵەکردن لەگەڵ پەڕەکان + Size قەبارە + Poster پۆستەر + Multiple فرە + Booklet کتێبچە + Fit گونجاندن + Shrink oversized pages بچووککردنەوەی پەڕە زۆر گەورەکان + Custom scale: پێوەری تایبەت: + Tile scale: پێوەری کاشی: + Overlap: تێکەڵبوون: + Cut marks نیشانەکانی بڕین + Pages per sheet: پەڕە بۆ هەر کاغەزێک: + Page order: ڕیزبەندی پەڕەکان: + Horizontal ئاسۆیی + Horizontal reversed ئاسۆیی پێچەوانە + Vertical ستوونی + Vertical reversed ستوونی پێچەوانە + Print page border چاپکردنی سنووری پەڕە + Auto-rotate pages سووڕاندنەوەی ئۆتۆماتیکی پەڕەکان + Booklet subset: بەشی کتێبچە: + Both sides هەردوو لا + Front side only تەنیا لای پێشەوە + Back side only تەنیا لای دواوە + Binding: بەستنەوە: + Left چەپ + Right ڕاست + Orientation: ئاراستە: + Auto portrait/landscape ستوونی/ئاسۆیی بە شێوەی ئۆتۆماتیکی + Portrait ستوونی + Landscape ئاسۆیی + Comments & Forms لێدوانەکان و فۆڕمەکان + Document بەڵگەنامە + Document and markups بەڵگەنامە و نیشانکردنەکان + Document and stamps بەڵگەنامە و مۆرەکان + Form fields only تەنیا خانەکانی فۆڕم + Previous sheet کاغەزی پێشوو + Next sheet کاغەزی داهاتوو + No sheets هیچ کاغەزێک نییە + Sheet {s} of {n} کاغەزی {s} لە {n} + Removed 1 hidden item. Save to remove them from the file. 1 توخمی شاراوە لابرا. بۆ لابردنی لە فایلەکە پاشەکەوتی بکە. + Removed {n} hidden items. Save to remove them from the file. {n} توخمی شاراوە لابرا. بۆ لابردنیان لە فایلەکە پاشەکەوتی بکە. + Document sanitized. Save to finish: saving rewrites the whole file. بەڵگەنامەکە پاکژکرا. بۆ تەواوکردن پاشەکەوتی بکە: پاشەکەوتکردن هەموو فایلەکە دووبارە دەنووسێتەوە. + Applied 1 redaction mark. Save to remove the content from the file. 1 نیشانەی شاردنەوە جێبەجێکرا. بۆ لابردنی ناوەڕۆکەکە لە فایلەکە پاشەکەوتی بکە. + Applied {n} redaction marks. Save to remove the content from the file. {n} نیشانەی شاردنەوە جێبەجێکرا. بۆ لابردنی ناوەڕۆکەکە لە فایلەکە پاشەکەوتی بکە. + JavaScript Console کۆنسۆڵی JavaScript + JavaScript is turned off (Preferences ▸ JavaScript). JavaScript کوژاوەتەوە (هەڵبژاردەکان ▸ JavaScript). + Output appears here. دەرهاویشتەکە لێرە دەردەکەوێت. + Script Name: ناوی سکریپت: + This document has no document-level scripts. ئەم بەڵگەنامەیە هیچ سکریپتێکی لە ئاستی بەڵگەنامەدا نییە. + No form fields were detected هیچ خانەیەکی فۆڕم نەدۆزرایەوە + Detected 1 form field 1 خانەی فۆڕم دۆزرایەوە + Detected {n} form fields {n} خانەی فۆڕم دۆزرایەوە + {field}: {e} {field}: {e} + Current page پەڕەی ئێستا + Selected pages پەڕە هەڵبژێردراوەکان + Document language زمانی بەڵگەنامە + Output دەرهاویشتە + Searchable Image (Exact) وێنەی گەڕانپێکراو (ورد) + Adds invisible text over each word; the page image is not changed دەقی نادیار بەسەر هەر وشەیەکدا زیاد دەکات؛ وێنەی پەڕەکە ناگۆڕێت + Downsample to کەمکردنەوەی ڕوونی بۆ + Also recognize pages that already have text هەروەها ئەو پەڕانە بناسەوە کە خۆیان دەقیان هەیە + Pictures on those pages are recognized too; words already in the page's text are not added again وێنەکانی ئەو پەڕانەش دەناسرێنەوە؛ ئەو وشانەی پێشتر لە دەقی پەڕەکەدان دووبارە زیاد ناکرێن + Text recognition isn't installed: its model files are missing. Reinstall PdfCraft, or set PDFCRAFT_MODELS to the folder that holds them. ناسینەوەی دەق دانەمەزراوە: فایلەکانی مۆدێلەکەی نین. PdfCraft دووبارە دامەزرێنە، یان PDFCRAFT_MODELS بکە بە ئەو فۆڵدەرەی کە لەخۆی دەگرێت. + Settings ڕێکخستنەکان + Optional بەدڵی خۆت + Planned · {m} پلانگیراو · {m} + Planned for milestone {m} — open to see what it will include پلانگیراو بۆ قۆناغی {m} — بیکەرەوە بۆ ئەوەی ببینیت چی لەخۆ دەگرێت + Coming in milestone {m}. Items marked Ready work today. لە قۆناغی {m}دا دێت. ئەو توخمانەی بە «ئامادە» نیشانکراون ئەمڕۆ کار دەکەن. + 1 mark 1 نیشانە + {n} marks {n} نیشانە + Dynamic داینامیکی + Sign Here لێرە واژوو بکە + Standard Business بازرگانیی ستاندارد + Choose a stamp, then click on the page to place it. مۆرێک هەڵبژێرە، پاشان کرتە لەسەر پەڕەکە بکە بۆ دانانی. + Note تێبینی + Polyline فرەهێڵ + Attachment پێوەکراو + Callout بالۆن + Typewriter ئامێری نووسین + Checked هەڵبژێردراو + Unchecked هەڵنەبژێردراو + Marked نیشانکراو + Locked قفڵکراو + Search comments گەڕان لە لێدوانەکاندا + Add a comment زیادکردنی لێدوان + No comments yet. هێشتا هیچ لێدوانێک نییە. + Pick a tool in the quick bar, or type above. ئامرازێک لە شریتە خێراکە هەڵبژێرە، یان لە سەرەوە بنووسە. + No comments match. هیچ لێدوانێک ناگونجێت. + Unknown author نووسەری نەناسراو + No colour بێ ڕەنگ + Remove checkmark لابردنی نیشانەی پشکنین + Mark with checkmark نیشانکردن بە نیشانەی پشکنین + Reply وەڵامدانەوە + Add a reply زیادکردنی وەڵام + Post بڵاوکردنەوە + Page {label} پەڕەی {label} + {kind} — click to show it on the page {kind} — کرتە بکە بۆ پیشاندانی لەسەر پەڕەکە + Set status دانانی دۆخ + Copy text کۆپیکردنی دەق + Properties… تایبەتمەندییەکان… + Make Current Properties Default کردنی تایبەتمەندییەکانی ئێستا بە بنەڕەتی + Make Properties Default کردنی تایبەتمەندییەکان بە بنەڕەتی + More options هەڵبژاردەی زیاتر + Sort by ڕیزکردن بەپێی + Author نووسەر + Type جۆر + Colour ڕەنگ + Show all comments پیشاندانی هەموو لێدوانەکان + Create PDF comment summary… دروستکردنی کورتەی لێدوانەکانی PDF… + Export all to data file… هەناردەکردنی هەموو بۆ فایلی داتا… + Filter comments پاڵاوتنی لێدوانەکان + Status دۆخ + Accepted پەسندکراو + Rejected ڕەتکراوە + Cancelled هەڵوەشاوە + Completed تەواوبوو + Show all پیشاندانی هەموو + Yellow زەرد + Orange پرتەقاڵی + Red سوور + Pink پەمەیی + Purple مۆر + Blue شین + Light blue شینی کاڵ + Green سەوز + Gray خۆڵەمێشی + Black ڕەش + Bookmark options هەڵبژاردەکانی دڵخواز + Expand all bookmarks فراوانکردنی هەموو دڵخوازەکان + Expand top-level bookmarks فراوانکردنی دڵخوازەکانی ئاستی سەرەوە + Collapse all bookmarks کۆکردنەوەی هەموو دڵخوازەکان + New bookmark ({key}) دڵخوازی نوێ ({key}) + This document has no bookmarks. ئەم بەڵگەنامەیە هیچ دڵخوازێکی نییە. + This document has no layers. ئەم بەڵگەنامەیە هیچ چینێکی نییە. + This document has no attachments. ئەم بەڵگەنامەیە هیچ پێوەکراوێکی نییە. + Hide layer شاردنەوەی چین + Show layer پیشاندانی چین + Set layer visibility دانانی دەرکەوتنی چین + on page {label} لە پەڕەی {label} + Save attachment… پاشەکەوتکردنی پێوەکراو… + Open in a new tab کردنەوە لە بازدەرێکی نوێدا + This document has no pages. ئەم بەڵگەنامەیە هیچ پەڕەیەکی نییە. + Find text دۆزینەوەی دەق + No matches هیچ گونجانێک نییە + Searching… {s}/{p} لە گەڕاندایە… {s}/{p} + {c} of {n}{more} {c} لە {n}{more} + Previous ({key}) پێشوو ({key}) + Next ({key}) داهاتوو ({key}) + Find options هەڵبژاردەکانی دۆزینەوە + Whole words only تەنیا وشە تەواوەکان + Case-sensitive هەستیار بە گەورە و بچووکی پیت + Close (Esc) داخستن (Esc) + Align هاوتەریبکردن + Top سەرەوە + Bottom خوارەوە + Center horizontally ناوەڕاستکردن بە ئاسۆیی + Center vertically ناوەڕاستکردن بە ستوونی + Distribute دابەشکردن + Horizontally بە ئاسۆیی + Vertically بە ستوونی + Set Fields to Same Size کردنی خانەکان بە هەمان قەبارە + Height بەرزی + Width پانی + Both هەردووکیان + Duplicate… دووبارەکردنەوە… + All pages هەموو پەڕەکان + Odd pages پەڕە تاکەکان + Even pages پەڕە جووتەکان + Landscape pages پەڕە ئاسۆیییەکان + Portrait pages پەڕە ستوونییەکان + Move earlier گواستنەوە بۆ پێشتر + Move later گواستنەوە بۆ دواتر + Back to the document گەڕانەوە بۆ بەڵگەنامەکە + Protect Using Password پاراستن بە وشەی نهێنی + Requires user to enter a password for: پێویستی بەوەیە بەکارهێنەر وشەی نهێنی بنووسێت بۆ: + Viewing بینین + Editing دەستکاریکردن + Type Password نووسینی وشەی نهێنی + Re-type Password دووبارە نووسینەوەی وشەی نهێنی + Strength: {s} هێز: {s} + Strong بەهێز + Medium مامناوەند + Weak لاواز + Advanced Options {chevron} هەڵبژاردە پێشکەوتووەکان {chevron} + Compatibility گونجانی + Acrobat X and later (256-bit AES) Acrobat X و دواتر (AES ی 256-بیت) + Acrobat 7.0 and later (128-bit AES) Acrobat 7.0 و دواتر (AES ی 128-بیت) + Acrobat 5.0 and later (128-bit RC4) Acrobat 5.0 و دواتر (RC4 ی 128-بیت) + Acrobat 3.0 and later (40-bit RC4) Acrobat 3.0 و دواتر (RC4 ی 40-بیت) + Encrypt کۆدکردن + All document contents هەموو ناوەڕۆکەکانی بەڵگەنامەکە + All document contents except metadata هەموو ناوەڕۆکەکانی بەڵگەنامەکە جگە لە میتاداتا + Printing allowed چاپی ڕێگەپێدراو + Low Resolution (150 dpi) ڕوونیی نزم (150 dpi) + Changes allowed گۆڕانکارییە ڕێگەپێدراوەکان + Inserting, deleting, and rotating pages خستنەناو، سڕینەوە و سووڕاندنەوەی پەڕەکان + Filling in form fields and signing existing signature fields پڕکردنەوەی خانەکانی فۆڕم و واژووکردنی خانەکانی واژووی هەبوو + Commenting, filling in form fields, and signing existing signature fields لێدوان، پڕکردنەوەی خانەکانی فۆڕم و واژووکردنی خانەکانی واژووی هەبوو + Any except extracting pages هەموو شتێک جگە لە دەرهێنانی پەڕەکان + Enable copying of text, images, and other content چالاککردنی کۆپیکردنی دەق، وێنە و ناوەڕۆکی تر + Enable text access for screen reader devices for the visually impaired چالاککردنی دەستڕاگەیشتن بە دەق بۆ ئامێرەکانی خوێنەرەوەی شاشە بۆ کەمبینایان + Type a password. وشەی نهێنی بنووسە. + The passwords don't match. وشە نهێنییەکان یەک ناگرنەوە. + This compatibility level supports only plain ASCII passwords. ئەم ئاستەی گونجانی تەنیا پشتیوانی وشە نهێنییە سادەکانی ASCII دەکات. + Anyone opening the document will need this password. It's applied when you save. هەر کەسێک بەڵگەنامەکە بکاتەوە پێویستی بەم وشە نهێنییە دەبێت. لە کاتی پاشەکەوتکردن جێبەجێ دەکرێت. + The document opens without a password; this password is needed to change the restrictions. It's applied when you save. بەڵگەنامەکە بەبێ وشەی نهێنی دەکرێتەوە؛ ئەم وشە نهێنییە بۆ گۆڕینی سنووردارکردنەکان پێویستە. لە کاتی پاشەکەوتکردن جێبەجێ دەکرێت. + Recover unsaved documents? گەڕاندنەوەی بەڵگەنامە پاشەکەوتنەکراوەکان؟ + PdfCraft didn't shut down normally. These documents had changes that were autosaved: PdfCraft بە شێوەی ئاسایی دانەخرا. ئەم بەڵگەنامانە گۆڕانکارییان هەبوو کە بە شێوەی خۆکار پاشەکەوت کرابوون: + just now ئێستا + {n} min ago {n} خولەک لەمەوبەر + {n} h ago {n} کاتژمێر لەمەوبەر + · password-protected · بە وشەی نهێنی پارێزراو + Recover گەڕاندنەوە + Discard فڕێدان + Version {v} وەشان {v} + A clean-room, open-source PDF application written in Rust. MIT OR Apache-2.0. بەرنامەیەکی PDF ی سەرچاوە-کراوە کە بە Rust نووسراوە و بە شێوازی ژووری پاک دروستکراوە. MIT OR Apache-2.0. + Part of بەشێک لە + Summarize Options هەڵبژاردەکانی کورتکردنەوە + Choose a layout: شێوازێک هەڵبژێرە: + Comments only تەنیا لێدوانەکان + Sort comments by: ڕیزکردنی لێدوانەکان بەپێی: + Create PDF Comment Summary دروستکردنی کورتەی لێدوانەکانی PDF + Revert to the previously saved version of “{name}”? Changes since then can't be undone afterwards. گەڕانەوە بۆ وەشانی پێشووی پاشەکەوتکراوی “{name}”؟ گۆڕانکارییەکانی دوای ئەو کاتە ناتوانرێت پاشگەز بکرێنەوە. + Save over the changed file? پاشەکەوتکردن بەسەر فایلە گۆڕاوەکەدا؟ + “{name}” changed on disk after it was opened or last saved. Saving now replaces that newer version with this one. “{name}” لەسەر دیسک گۆڕا دوای ئەوەی کرایەوە یان دوایین جار پاشەکەوت کرا. پاشەکەوتکردن ئێستا ئەو وەشانە نوێیە بەم دانەیە دەگۆڕێتەوە. + Save anyway هەر پاشەکەوتی بکە + Number pages ژمارەدان بە پەڕەکان + Style شێواز + None (prefix only) هیچ (تەنیا پێشگر) + Prefix پێشگر + Start دەستپێک + Labels: {preview}. Later pages keep their labels. نیشانەکان: {preview}. پەڕە دواترەکان نیشانەکانی خۆیان دەپارێزن. + Even and Odd Pages پەڕە جووت و تاکەکان + Even Pages Only تەنیا پەڕە جووتەکان + Odd Pages Only تەنیا پەڕە تاکەکان + Landscape and Portrait Pages پەڕە ئاسۆیی و ستوونییەکان + Landscape Pages پەڕە ئاسۆییەکان + Portrait Pages پەڕە ستوونییەکان + Duplicate Field دووبارەکردنەوەی خانە + Duplicate "{name}" onto: دووبارەکردنەوەی "{name}" بۆ: + 1 page selected. 1 پەڕە هەڵبژێردرا. + {n} pages selected. {n} پەڕە هەڵبژێردرا. + Delete pages after extracting سڕینەوەی پەڕەکان دوای دەرهێنان + Extract pages as separate files دەرهێنانی پەڕەکان وەک فایلی جیا + Rotate Pages سووڕاندنەوەی پەڕەکان + Direction: ئاراستە: + Clockwise 90 degrees 90 پلە بە ئاراستەی کاتژمێر + Counterclockwise 90 degrees 90 پلە بە پێچەوانەی کاتژمێر + 180 degrees 180 پلە + Pages: پەڕەکان: + All هەموو + Selection هەڵبژاردن + From لە + Rotate: سووڕاندنەوە: + Repairs چاکسازییەکان + Repair log تۆماری چاکسازی + Split document دابەشکردنی بەڵگەنامە + Number of pages ژمارەی پەڕەکان + Pages per file پەڕە بۆ هەر فایلێک + File size قەبارەی فایل + At most بە زۆرترین + Top-level bookmarks ({n}) دڵخوازەکانی ئاستی سەرەوە ({n}) + Before each selected page (select pages in Organize) پێش هەر پەڕەیەکی هەڵبژێردراو (لە «ڕێکخستن» پەڕەکان هەڵبژێرە) + Creates 1 file from {n} pages. 1 فایل لە {n} پەڕە دروست دەکات. + Creates {f} files from {n} pages. {f} فایل لە {n} پەڕە دروست دەکات. + Each file holds as many of the {n} pages as fit. هەر فایلێک ئەوەندە لەو {n} پەڕەیە هەڵدەگرێت کە جێی دەبێتەوە. + Replace Pages جێگرتنەوەی پەڕەکان + Original: replace pages ئەسڵ: جێگرتنەوەی پەڕەکان + to بۆ + to {n} بۆ {n} + Replacement: pages of {name} جێگرەوە: پەڕەکانی {name} + of {name} ی {name} + Only the page content changes: links, comments, form fields and bookmarks on the original pages stay. تەنیا ناوەڕۆکی پەڕەکە دەگۆڕێت: بەستەرەکان، لێدوانەکان، خانەکانی فۆڕم و دڵخوازەکانی سەر پەڕە ئەسڵییەکان دەمێننەوە. + The replacement file doesn't have that many pages. فایلە جێگرەوەکە ئەو هەموو پەڕەی نییە. + Tagged PDF PDF ی تاگدار + Document Properties تایبەتمەندییەکانی بەڵگەنامە + Description وەسف + Initial View بینینی سەرەتایی + Security ئاسایش + Fonts فۆنتەکان + Advanced پێشکەوتوو + Title ناونیشان + Subject بابەت + Keywords وشە سەرەکییەکان + Application بەرنامە + PDF producer بەرهەمهێنەری PDF + Layout and Magnification شێواز و گەورەکردنەوە + Navigation tab بازدەری گەشتکردن + Page Only تەنیا پەڕە + Bookmarks Panel and Page پانێڵی دڵخوازەکان و پەڕە + Pages Panel and Page پانێڵی پەڕەکان و پەڕە + Attachments Panel and Page پانێڵی پێوەکراوەکان و پەڕە + Layers Panel and Page پانێڵی چینەکان و پەڕە + Page layout شێوازی پەڕە + Default بنەڕەتی + Single Page تاکە پەڕە + Single Page Continuous تاکە پەڕەی بەردەوام + Two-Up (Facing) دوو-بەر (بەرامبەر) + Two-Up Continuous (Facing) دوو-بەری بەردەوام (بەرامبەر) + Two-Up (Cover Page) دوو-بەر (پەڕەی بەرگ) + Two-Up Continuous (Cover Page) دوو-بەری بەردەوام (پەڕەی بەرگ) + Magnification گەورەکردنەوە + Actual Size قەبارەی ڕاستەقینە + Fit Page گونجاندنی پەڕە + Fit Width گونجاندنی پانی + Fit Height گونجاندنی بەرزی + Fit Visible گونجاندنی دیار + Open to page کردنەوە لە پەڕەی + of {pages} لە {pages} + Window Options هەڵبژاردەکانی پەنجەرە + Resize window to initial page گۆڕینی قەبارەی پەنجەرە بۆ پەڕەی سەرەتایی + Center window on screen ناوەڕاستکردنی پەنجەرە لەسەر شاشە + Open in Full Screen mode کردنەوە بە دۆخی شاشەی پڕ + Show: پیشاندان: + File Name ناوی فایل + Document Title ناونیشانی بەڵگەنامە + User Interface Options هەڵبژاردەکانی ڕووکاری بەکارهێنەر + Hide menu bar شاردنەوەی شریتی پێڕست + Hide toolbars شاردنەوەی شریتەکانی ئامراز + Hide window controls شاردنەوەی کۆنترۆڵەکانی پەنجەرە + Security method شێوازی ئاسایش + No security بێ ئاسایش + Restrictions سنووردارکردنەکان + None — everything is allowed هیچ — هەموو شتێک ڕێگەپێدراوە + Password security ئاسایشی وشەی نهێنی + Encryption کۆدکردن + Opened with کرایەوە بە + — (protection is applied when you save) — (پاراستن لە کاتی پاشەکەوتکردن جێبەجێ دەکرێت) + Owner password (no restrictions apply) وشەی نهێنیی خاوەن (هیچ سنووردارکردنێک جێبەجێ نابێت) + User password وشەی نهێنیی بەکارهێنەر + Change settings… گۆڕینی ڕێکخستنەکان… + Printing چاپ + Not allowed ڕێگەپێنەدراو + Allowed ڕێگەپێدراو + High resolution ڕوونیی بەرز + Low resolution ڕوونیی نزم + Changing the document گۆڕینی بەڵگەنامە + Document assembly کۆکردنەوەی بەڵگەنامە + Content copying کۆپیکردنی ناوەڕۆک + Content copying for accessibility کۆپیکردنی ناوەڕۆک بۆ دەستڕاگەیشتن + Commenting لێدوان + Filling of form fields پڕکردنەوەی خانەکانی فۆڕم + No fonts are referenced by the pages. هیچ فۆنتێک لەلایەن پەڕەکانەوە ئاماژەی پێ نەدراوە. + PDF version وەشانی PDF + Location شوێن + Page size قەبارەی پەڕە + Yes بەڵێ + No نەخێر + Revisions پێداچوونەوەکان + View revision {n} بینینی پێداچوونەوەی {n} + Open the file as it was saved then فایلەکە بکەرەوە وەک ئەوەی ئەو کاتە پاشەکەوت کرابوو + Binding بەستنەوە + Left Edge لێواری چەپ + Right Edge لێواری ڕاست + Language زمان + Saved {place}: {before} → {after} ({pct}% smaller){detail} پاشەکەوتکرا {place}: {before} → {after} ({pct}% بچووکترە){detail} + This file is already as small as it can be made ({size}). No copy was saved. ئەم فایلە پێشتر هێندەی پێویست بچووکە ({size}). هیچ کۆپییەک پاشەکەوت نەکرا. + Saved {place}: {before} → {after} (not smaller){detail} پاشەکەوتکرا {place}: {before} → {after} (بچووکتر نییە){detail} + Couldn't save the image: {e} نەتوانرا وێنەکە پاشەکەوت بکرێت: {e} + Adding images arrives on the web with file pickers for images زیادکردنی وێنە لە وێبدا بە هەڵبژێرەری فایلی وێنەوە بەردەست دەبێت + Replacing images on page {p} arrives on the web with image pickers ({i}) جێگرتنەوەی وێنەکان لە پەڕەی {p} لە وێبدا بە هەڵبژێرەری وێنەوە بەردەست دەبێت ({i}) + {name}: choosing images arrives on the web with file pickers for images {name}: هەڵبژاردنی وێنە لە وێبدا بە هەڵبژێرەری فایلی وێنەوە بەردەست دەبێت + Replacing images arrives on the web with image file pickers جێگرتنەوەی وێنەکان لە وێبدا بە هەڵبژێرەری فایلی وێنەوە بەردەست دەبێت + Couldn't create a PDF: {e} نەتوانرا PDF دروست بکرێت: {e} + The clipboard has no image or text کلیپبۆرد هیچ وێنە یان دەقێکی تێدا نییە + On the web, open or drop an image to convert it لە وێبدا، وێنەیەک بکەرەوە یان فڕێی بدە بۆ گۆڕینی + Couldn't optimize the file: {e} نەتوانرا فایلەکە باشتر بکرێت: {e} + Couldn't write {path}: {e} نەتوانرا لە {path} بنووسرێت: {e} + The form asks to be submitted to {u}; PdfCraft doesn't send form data. Save the document to keep your entries. فۆڕمەکە داوای ناردن دەکات بۆ {u}؛ PdfCraft داتای فۆڕم نانێرێت. بەڵگەنامەکە پاشەکەوت بکە بۆ پاراستنی تۆمارەکانت. + This PDF uses the unsupported {s} action. ئەم PDFە کرداری {s}ی پشتگیرینەکراو بەکار دەهێنێت. + {name}: the {other} action isn't supported yet {name}: کرداری {other} هێشتا پشتگیری نەکراوە + {name} submits the form to {url}; PdfCraft doesn't send form data. Save the document to keep your entries. {name} فۆڕمەکە دەنێرێت بۆ {url}؛ PdfCraft داتای فۆڕم نانێرێت. بەڵگەنامەکە پاشەکەوت بکە بۆ پاراستنی تۆمارەکانت. + Export stopped: {e} هەناردەکردن وەستا: {e} + Exported 1 image 1 وێنە هەناردەکرا + Exported {n} images {n} وێنە هەناردەکرا + ({s} not exported: {first}) ({s} هەناردە نەکرا: {first}) + Exported the text of 1 page دەقی 1 پەڕە هەناردەکرا + Exported the text of {n} pages دەقی {n} پەڕە هەناردەکرا + {msg} to {dir} {msg} بۆ {dir} + Exporting… {d} of {t} لە هەناردەکردندایە… {d} لە {t} + Choose a folder for the exported files فۆڵدەرێک هەڵبژێرە بۆ فایلە هەناردەکراوەکان + New {tool} comments will look like this one لێدوانە نوێیەکانی {tool} وەک ئەمە دەردەکەون + This document can't be checked: it couldn't be read for editing ناتوانرێت ئەم بەڵگەنامەیە بپشکنرێت: نەتوانرا بۆ دەستکاریکردن بخوێنرێتەوە + The checker found no problems in this document. پشکنەرەکە هیچ کێشەیەکی لەم بەڵگەنامەیەدا نەدۆزییەوە. + The checker found 1 problem which may prevent the document from being fully accessible. پشکنەرەکە 1 کێشەی دۆزییەوە کە ڕەنگە ڕێگری بکات لەوەی بەڵگەنامەکە بە تەواوی دەستڕاگەیشتن بێت. + The checker found {n} problems which may prevent the document from being fully accessible. پشکنەرەکە {n} کێشەی دۆزییەوە کە ڕەنگە ڕێگری بکات لەوەی بەڵگەنامەکە بە تەواوی دەستڕاگەیشتن بێت. + The text is the same دەقەکە هەمانە + 1 difference found 1 جیاوازی دۆزرایەوە + {n} differences found {n} جیاوازی دۆزرایەوە + Added 1 comment 1 لێدوان زیادکرا + Added {n} comments {n} لێدوان زیادکرا + Choose a folder for the results فۆڵدەرێک هەڵبژێرە بۆ ئەنجامەکان + Files for {name} فایلەکانی {name} + An action is already running کردارێک پێشتر لە جێبەجێکردندایە + Running action… file {d} of {t} لە جێبەجێکردنی کرداردایە… فایلی {d} لە {t} + No unlinked web addresses were found in the text هیچ ناونیشانی وێبی بەستەرنەکراو لە دەقەکەدا نەدۆزرایەوە + Created 1 link 1 بەستەر دروستکرا + Created {n} links {n} بەستەر دروستکرا + Text recognition is already running ناسینەوەی دەق پێشتر لە جێبەجێکردندایە + Recognizing text… file {d} of {t} لە ناسینەوەی دەقدایە… فایلی {d} لە {t} + Recognizing text… page {d} of {t} لە ناسینەوەی دەقدایە… پەڕەی {d} لە {t} + Recognized 1 word 1 وشە ناسرایەوە + Recognized {n} words {n} وشە ناسرایەوە + {words} on {pages} {words} لە {pages} + ; 1 page already had text ؛ 1 پەڕە پێشتر دەقی هەبوو + ; {n} pages already had text ؛ {n} پەڕە پێشتر دەقی هەبوو + Recognized {w} words in 1 file {w} وشە لە 1 فایل ناسرایەوە + Recognized {w} words in {n} files {w} وشە لە {n} فایل ناسرایەوە + ; failed: {list} ؛ شکستی هێنا: {list} + 1 file done 1 فایل تەواو بوو + {n} files done {n} فایل تەواو بوون + The selected area has been copied ({w} × {h} pixels) ناوچە هەڵبژێردراوەکە کۆپیکرا ({w} × {h} پیکسڵ) + Couldn't take the snapshot: {e} نەتوانرا وێنەی دەستبەجێ بگیرێت: {e} + Couldn't recover {name}: {e} نەتوانرا {name} بگەڕێندرێتەوە: {e} + The document now conforms to {level}; save it to keep the changes بەڵگەنامەکە ئێستا لەگەڵ {level} دەگونجێت؛ پاشەکەوتی بکە بۆ پاراستنی گۆڕانکارییەکان + Fixed what could be fixed; 1 problem remains ئەوەی دەکرا چاک بکرێت چاککرا؛ 1 کێشە ماوە + Fixed what could be fixed; {n} problems remain ئەوەی دەکرا چاک بکرێت چاککرا؛ {n} کێشە ماوە + Custom stamps arrive on the web with file pickers for images مۆری تایبەت لە وێبدا بە هەڵبژێرەری فایلی وێنەوە بەردەست دەبێت + {file} is too large for a stamp (at most {n} MB) {file} زۆر گەورەیە بۆ مۆر (بە زۆرترین {n} MB) + Sent to {printer} نێردرا بۆ {printer} + Sent to {printer}: {msg} نێردرا بۆ {printer}: {msg} + Looking for printers… بەدوای چاپکەردا دەگەڕێین… + Sending sheet {s} of {n} to {printer}… لە ناردنی پەڕەی {s} لە {n} بۆ {printer}دایە… + No printers were found. Check that the printer is installed and the print spooler is running, then open Print again. هیچ چاپکەرێک نەدۆزرایەوە. دڵنیابە لەوەی چاپکەرەکە دامەزراوە و خزمەتگوزاری چاپکردن لە کاردایە، ئینجا دووبارە «Print» بکەرەوە. + Sending to {printer}… لە ناردن بۆ {printer}دایە… + Choose a folder for the searchable files فۆڵدەرێک هەڵبژێرە بۆ فایلە گەڕانلێکراوەکان + Files are combined from top to bottom. Leave Pages empty to take every page. فایلەکان لە سەرەوە بۆ خوارەوە تێکەڵ دەکرێن. «پەڕەکان» بە بەتاڵی بەجێبهێڵە بۆ وەرگرتنی هەموو پەڕەیەک. + Unlock… کردنەوەی قفڵ… + Select a password-protected file first سەرەتا فایلێکی بە وشەی نهێنی پارێزراو هەڵبژێرە + Enter the permissions password to allow combining وشەی نهێنیی مۆڵەتەکان بنووسە بۆ ڕێگەدان بە تێکەڵکردن + Enter the password that opens it ئەو وشە نهێنییە بنووسە کە دەیکاتەوە + Unlock {name} کردنەوەی قفڵی {name} + Unlock {n} files کردنەوەی قفڵی {n} فایل + The same password is tried on each file. هەمان وشەی نهێنی لەسەر هەر فایلێک تاقی دەکرێتەوە. + Hide password شاردنەوەی وشەی نهێنی + Show password پیشاندانی وشەی نهێنی + Wrong password وشەی نهێنیی هەڵە + The password is only used to read the file; it isn't saved. وشە نهێنییەکە تەنیا بۆ خوێندنەوەی فایلەکە بەکار دەهێنرێت؛ پاشەکەوت ناکرێت. + Unlock کردنەوەی قفڵ + Opened, but its security settings don't allow combining. Enter the permissions password. کرایەوە، بەڵام ڕێکخستنەکانی ئاسایشەکەی ڕێگە بە تێکەڵکردن نادەن. وشەی نهێنیی مۆڵەتەکان بنووسە. + Unlocked: the combined file won't be password-protected قفڵ کرایەوە: فایلە تێکەڵکراوەکە بە وشەی نهێنی پارێزراو نابێت + Unlocked {n} of {m} files قفڵی {n} لە {m} فایل کرایەوە + Drop PDFs, images, text files or folders here, or choose them. PDF، وێنە، فایلی دەق یان فۆڵدەر لێرە فڕێ بدە، یان هەڵیانبژێرە. + Add folder… زیادکردنی فۆڵدەر… + Add folder and subfolders… زیادکردنی فۆڵدەر و ژێرفۆڵدەرەکان… + More ways to add files ڕێگای زیاتر بۆ زیادکردنی فایل + Every PDF, image and text file in the folder هەموو فایلی PDF، وێنە و دەق لە فۆڵدەرەکەدا + Every PDF, image and text file in the folder and the folders inside it هەموو فایلی PDF، وێنە و دەق لە فۆڵدەرەکە و ئەو فۆڵدەرانەدا کە لە ناویدان + Add folder زیادکردنی فۆڵدەر + Add folder and subfolders زیادکردنی فۆڵدەر و ژێرفۆڵدەرەکان + No PDFs, images or text files found in {folder} هیچ PDF، وێنە یان فایلی دەقێک لە {folder} نەدۆزرایەوە + Added the first {n} files in {folder} یەکەم {n} فایل لە {folder} زیادکرا + Click to sort, drag to move the column. Drag its edge to resize it. بۆ ڕیزکردن کرتە بکە، بۆ گواستنەوەی ستوونەکە ڕایبکێشە. بۆ گۆڕینی قەبارەکەی لێوارەکەی ڕابکێشە. + Reset columns ڕێکخستنەوەی ستوونەکان + Remove {n} files لابردنی {n} فایل + {n} selected {n} هەڵبژێردرا + sorted ascending ڕیزکراوە بەرەو سەرەوە + sorted descending ڕیزکراوە بەرەو خوارەوە + Protected: the combined file won't keep its security settings پارێزراو: فایلە تێکەڵکراوەکە ڕێکخستنەکانی ئاسایشەکەی ناپارێزێت + Add open documents زیادکردنی بەڵگەنامە کراوەکان + All open documents هەموو بەڵگەنامە کراوەکان + No documents are open هیچ بەڵگەنامەیەک کراوە نییە + Select a file first سەرەتا فایلێک هەڵبژێرە + 1 file 1 فایل + {n} files {n} فایل + 1 file needs attention 1 فایل پێویستی بە سەرنج هەیە + {n} files need attention {n} فایل پێویستیان بە سەرنج هەیە + {name} can't be combined: {why} ناتوانرێت {name} تێکەڵ بکرێت: {why} + Check the pages of {name}: {why} پەڕەکانی {name} بپشکنە: {why} + Add the files to combine ئەو فایلانە زیاد بکە کە دەبێت تێکەڵ بکرێن + File name ناوی فایل + Warnings ئاگادارکردنەوەکان + Drag to reorder بۆ ڕیزکردنەوە ڕایبکێشە + {k} of {n} {k} لە {n} + ? of {n} ? لە {n} + Added more than once زیاتر لە جارێک زیادکراوە + yesterday دوێنێ + {n} days ago {n} ڕۆژ لەمەوبەر + No pages selected هیچ پەڕەیەک هەڵبژێردراو نییە + Password-protected بە وشەی نهێنی پارێزراو + Its security settings don't allow copying pages ڕێکخستنەکانی ئاسایشەکەی ڕێگە بە کۆپیکردنی پەڕەکان نادەن + Can't be read: {e} ناخوێنرێتەوە: {e} + Leave out files that can't be read? ئەو فایلانەی ناخوێنرێنەوە بەجێبهێڵرێن؟ + These files can't be read, so they won't be in the combined PDF: ئەم فایلانە ناخوێنرێنەوە، بۆیە لە PDFە تێکەڵکراوەکەدا نابن: + Combine the rest تێکەڵکردنی ئەوانی تر + and {n} more و {n}ی تر + Includes unsaved changes گۆڕانکاریی پاشەکەوتنەکراوی تێدایە + Pages of {name} to combine, e.g. 1-3, 6 پەڕەکانی {name} بۆ تێکەڵکردن، بۆ نموونە 1-3, 6 + Remove {name} لابردنی {name} + Add files… زیادکردنی فایلەکان… + Add at least two files لانیکەم دوو فایل زیاد بکە + Couldn't add {name}: {e} نەتوانرا {name} زیاد بکرێت: {e} + Couldn't combine files: {e} نەتوانرا فایلەکان تێکەڵ بکرێن: {e} + Export comments هەناردەکردنی لێدوانەکان + Export form data هەناردەکردنی داتای فۆڕم + Comment and form data داتای لێدوان و فۆڕم + Export هەناردەکردن + Select data files to merge فایلی داتا هەڵبژێرە بۆ یەکخستن + Form data and PDF forms داتای فۆڕم و فۆڕمەکانی PDF + Save the spreadsheet پاشەکەوتکردنی خشتەکە + Save the accessibility report پاشەکەوتکردنی ڕاپۆرتی دەستڕاگەیشتن + Save image پاشەکەوتکردنی وێنە + Export certificate هەناردەکردنی بڕوانامە + Choose a folder for the extracted pages فۆڵدەرێک هەڵبژێرە بۆ پەڕە دەرهێنراوەکان + Choose a folder for the split files فۆڵدەرێک هەڵبژێرە بۆ فایلە دابەشکراوەکان + Couldn't use {name}: {e} نەتوانرا {name} بەکار بهێنرێت: {e} + Couldn't extract pages: {e} نەتوانرا پەڕەکان دەربهێنرێن: {e} + Couldn't write {name}: {e} نەتوانرا {name} بنووسرێت: {e} + the name is not a plain file name ناوەکە ناوی فایلی ئاسایی نییە + Wrote 1 file to {dir} 1 فایل نووسرا لە {dir} + Wrote {n} files to {dir} {n} فایل نووسرا لە {dir} + No pages match those choices هیچ پەڕەیەک لەگەڵ ئەو هەڵبژاردانە ناگونجێت + Couldn't split: {e} نەتوانرا دابەش بکرێت: {e} + Couldn't summarize comments: {e} نەتوانرا لێدوانەکان کورت بکرێنەوە: {e} + Couldn't open the result: {e} نەتوانرا ئەنجامەکە بکرێتەوە: {e} + Importing data arrives on the web with file pickers for data files هاوردەکردنی داتا لە وێبدا بە هەڵبژێرەری فایلی داتاوە بەردەست دەبێت + Exported to {path} هەناردەکرا بۆ {path} + Merging data files needs the desktop app یەکخستنی فایلی داتا پێویستی بە بەرنامەی سەر مێز هەیە + Merged 1 file into {path} 1 فایل یەکخرا لە {path} + Merged {n} files into {path} {n} فایل یەکخرا لە {path} + Combined {n} files {n} فایل تێکەڵکرا + Extracted 1 page 1 پەڕە دەرهێنرا + Extracted {n} pages {n} پەڕە دەرهێنرا + Created a comment summary کورتەی لێدوانەکان دروستکرا + Couldn't open {name}: {e} نەتوانرا {name} بکرێتەوە: {e} + Couldn't read {name}: {e} نەتوانرا {name} بخوێنرێتەوە: {e} + Couldn't save: {e} نەتوانرا پاشەکەوت بکرێت: {e} + Downloading attachments on the web arrives with M3.10 ({n} bytes ready) داگرتنی پێوەکراوەکان لە وێبدا لەگەڵ M3.10 بەردەست دەبێت ({n} بایت ئامادەیە) + `{command}` {when} `{command}` {when} + ships in milestone {m} لە قۆناغی {m} دەردەچێت + needs an AI provider (off by default) پێویستی بە دابینکەری AI هەیە (بە بنەڕەتی کوژاوەتەوە) + is available بەردەستە + is not available yet هێشتا بەردەست نییە + {label} failed: {e} {label} شکستی هێنا: {e} + Undid {label} {label} پاشگەزکرایەوە + Redid {label} {label} دووبارەکرایەوە + A document needs at least one page: copy instead بەڵگەنامە لانیکەم پێویستی بە یەک پەڕەیە: لە جیاتی ئەوە کۆپی بکە + Cut {what} {what} بڕدرا + Copied {what} {what} کۆپیکرا + 1 page 1 پەڕە + {n} pages {n} پەڕە + Copy or cut pages first سەرەتا پەڕەکان کۆپی یان ببڕە + Couldn't save {name}: {e} نەتوانرا {name} پاشەکەوت بکرێت: {e} + Saved {name} {name} پاشەکەوتکرا + Saved, but reopening failed: {e} پاشەکەوتکرا، بەڵام کردنەوەوە شکستی هێنا: {e} + Downloaded {name} {name} داگیرا + Couldn't download {name}: {e} نەتوانرا {name} دابگیرێت: {e} + Reverted to the last saved version گەڕایەوە بۆ دوایین وەشانی پاشەکەوتکراو + That didn't work: an internal error stopped it ({m}). Your documents are unchanged. ئەوە سەرینەگرت: هەڵەیەکی ناوخۆیی وەستاندی ({m}). بەڵگەنامەکانت نەگۆڕان. + Nothing to undo هیچ شتێک نییە پاشگەزی بکرێتەوە + Nothing to redo هیچ شتێک نییە دووبارە بکرێتەوە + This document has no form fields you can fill in ئەم بەڵگەنامەیە هیچ خانەیەکی فۆڕمی نییە کە بتوانیت پڕی بکەیتەوە + This document has no comments to flatten ئەم بەڵگەنامەیە هیچ لێدوانێکی نییە بۆ تەختکردن + This document has no form fields to flatten ئەم بەڵگەنامەیە هیچ خانەیەکی فۆڕمی نییە بۆ تەختکردن + There are no redaction marks (mark text, areas or pages first) هیچ نیشانەی شاردنەوە نییە (سەرەتا دەق، ناوچە یان پەڕە نیشان بکە) + This document has no {kind} to change ئەم بەڵگەنامەیە هیچ {kind}ی نییە بۆ گۆڕین + header or footer سەرەوەی پەڕە یان خوارەوەی پەڕە + watermark نیشانەی ئاوی + background پاشبنەما + This document isn't password-protected ئەم بەڵگەنامەیە بە وشەی نهێنی پارێزراو نییە + Enter permissions password… وشەی نهێنیی مۆڵەتەکان بنووسە… + Permissions password وشەی نهێنیی مۆڵەتەکان + “{name}” has security restrictions. Enter its permissions password to lift them. “{name}” سنووردارکردنی ئاسایشی هەیە. بۆ لابردنیان وشەی نهێنیی مۆڵەتەکانی بنووسە. + Restrictions lifted سنووردارکردنەکان لابران + Couldn't unlock {name}: {e} نەتوانرا قفڵی {name} بکرێتەوە: {e} + This document has no restrictions to lift ئەم بەڵگەنامەیە هیچ سنووردارکردنێکی نییە بلابرێت + The document's security settings don't allow this change ڕێکخستنەکانی ئاسایشی بەڵگەنامەکە ڕێگە بەم گۆڕانکارییە نادەن + The document's security settings don't allow copying text and images ڕێکخستنەکانی ئاسایشی بەڵگەنامەکە ڕێگە بە کۆپیکردنی دەق و وێنە نادەن + Open a document first سەرەتا بەڵگەنامەیەک بکەرەوە + Security will be removed when you save ئاسایش لە کاتی پاشەکەوتکردن لادەبرێت + Click text or an image to edit it کرتە لەسەر دەق یان وێنەیەک بکە بۆ دەستکاریکردنی + Drag a rectangle to create a link; double-click a link to edit it لاکێشەیەک ڕابکێشە بۆ دروستکردنی بەستەر؛ دوو کرتە لەسەر بەستەرێک بکە بۆ دەستکاریکردنی + There are no redaction marks to apply هیچ نیشانەی شاردنەوە نییە بۆ جێبەجێکردن + Drag to draw the area where the signature should appear. ڕابکێشە بۆ وێنەکێشانی ئەو ناوچەیەی کە واژووەکە تێیدا دەردەکەوێت. + Couldn't fit the visible content: {e} نەتوانرا ناوەڕۆکی دیار بگونجێنرێت: {e} + Drag a rectangle around the area to copy لاکێشەیەک بە دەوری ئەو ناوچەیە ڕابکێشە کە دەبێت کۆپی بکرێت + Click on the page to add a {tool}, or drag to set its size کرتە لەسەر پەڕەکە بکە بۆ زیادکردنی {tool}، یان ڕابکێشە بۆ دیاریکردنی قەبارەکەی + Drag a rectangle on a page to crop it; double-click a page for Set Page Boxes لاکێشەیەک لەسەر پەڕەیەک ڕابکێشە بۆ بڕینەوەی؛ دوو کرتە لەسەر پەڕەیەک بکە بۆ «دانانی سندووقەکانی پەڕە» + Keep tool selected: on هێشتنەوەی ئامرازەکە بە هەڵبژێردراوی: چالاک + Keep tool selected هێشتنەوەی ئامرازەکە بە هەڵبژێردراوی + Opacity ناڕوونی + Line thickness ئەستووریی هێڵ + What word or phrase would you like to search for? دەتەوێت بەدوای چ وشە یان دەستەواژەیەکدا بگەڕێیت؟ + Searching… {s} of {p} pages لە گەڕاندایە… {s} لە {p} پەڕە + (searching… {s} of {p} pages) (لە گەڕاندایە… {s} لە {p} پەڕە) + 1 instance 1 شوێن + {n} instances {n} شوێن + Go to this result چوون بۆ ئەم ئەنجامە + Highlight هایلایت + Draw وێنەکێشان + Polygon فرەگۆشە + Connected lines هێڵی بەیەکەوەبەستراو + Eraser سڕەرەوە + Sign واژووکردن + Certified by {by} پشتڕاستکراوە لەلایەن {by} + At least one signature is invalid. لانیکەم واژوویەک نادروستە. + Signed and all signatures are valid. واژوو کراوە و هەموو واژووەکان دروستن. + At least one signature has problems. لانیکەم واژوویەک کێشەی هەیە. + This document is secured. Some changes are restricted by its security settings. ئەم بەڵگەنامەیە پارێزراوە. هەندێک گۆڕانکاری بە ڕێکخستنەکانی ئاسایشەکەی سنووردار کراوە. + This is a dynamic XFA form, which PdfCraft can't display yet. What you see is the file's placeholder page. ئەمە فۆڕمی داینامیکی XFA یە، کە PdfCraft هێشتا ناتوانێت پیشانی بدات. ئەوەی دەیبینیت پەڕەی جێگرەوەی فایلەکەیە. + This form also contains XFA data, which PdfCraft doesn't read yet. You can fill its fields, but Acrobat may show the XFA values instead. ئەم فۆڕمە هەروەها داتای XFA ی تێدایە، کە PdfCraft هێشتا نایخوێنێتەوە. دەتوانیت خانەکانی پڕ بکەیتەوە، بەڵام Acrobat ڕەنگە بەهاکانی XFA پیشان بدات لە جیاتیان. + This document contains {n} interactive form fields. ئەم بەڵگەنامەیە {n} خانەی فۆڕمی کارلێکی تێدایە. + This file was damaged and has been repaired. Saving keeps the repaired version. ئەم فایلە تێکچووبوو و چاککرایەوە. پاشەکەوتکردن وەشانە چاککراوەکە دەپارێزێت. + Dismiss پشتگوێخستن + Hide field highlights شاردنەوەی هایلایتی خانەکان + Highlight fields هایلایتکردنی خانەکان + Security settings ڕێکخستنەکانی ئاسایش + Details وردەکارییەکان + Select (V) هەڵبژاردن (V) + Hand (H) دەست (H) + Delete pages (Delete) سڕینەوەی پەڕەکان (Delete) + Insert a blank page after the selection خستنەناوی پەڕەیەکی بەتاڵ دوای هەڵبژاردنەکە + Insert pages from a file… خستنەناوی پەڕە لە فایلێکەوە… + Extract pages to a new document دەرهێنانی پەڕەکان بۆ بەڵگەنامەیەکی نوێ + Split into files… دابەشکردن بۆ فایلەکان… + Select pages هەڵبژاردنی پەڕەکان + Cut بڕین + Copy کۆپیکردن + Paste after لکاندن دوای + Rename ناونانەوە + Set to current page ({n}) دانان بە پەڕەی ئێستا ({n}) + Move up گواستنەوە بۆ سەرەوە + Move down گواستنەوە بۆ خوارەوە + Indent چوونە ژوورەوە + Outdent هاتنە دەرەوە + This document has no form fields. ئەم بەڵگەنامەیە هیچ خانەیەکی فۆڕمی نییە. + Tab order: move a field with its arrows. ڕیزبەندی بازدەر: خانەیەک بە تیرەکانی بجوڵێنە. + Unplaced دانەنراو + Has JavaScript actions (run in M6) کرداری JavaScript ی هەیە (لە M6 جێبەجێ دەکرێت) + Page پەڕە + None هیچ + Delete selected fields سڕینەوەی خانە هەڵبژێردراوەکان + Diagnostic details وردەکارییەکانی دەستنیشانکردن + The operation failed. کردارەکە شکستی هێنا. + no such document هیچ بەڵگەنامەیەکی لەو جۆرە نییە + nothing to undo هیچ شتێک نییە پاشگەزی بکرێتەوە + nothing to redo هیچ شتێک نییە دووبارە بکرێتەوە + this document is signed: rewriting it would invalidate its signatures (save it incrementally instead) ئەم بەڵگەنامەیە واژوو کراوە: نووسینەوەی دووبارە واژووەکانی بێبایەخ دەکات (لە جیاتی ئەوە بە شێوەی زیادکردن پاشەکەوتی بکە) + the document is protected by a password بەڵگەنامەکە بە وشەی نهێنی پارێزراوە + the password is incorrect وشە نهێنییەکە هەڵەیە + the document has no page tree بەڵگەنامەکە درەختی پەڕەی نییە + a document must keep at least one page بەڵگەنامە دەبێت لانیکەم یەک پەڕەی هەبێت + a bookmark cannot be moved inside itself ناکرێت دڵخوازێک بگوازرێتەوە بۆ ناو خۆی + the title must not be empty ناونیشانەکە نابێت بەتاڵ بێت + the document has no form fields بەڵگەنامەکە هیچ خانەیەکی فۆڕمی نییە + there are no redaction marks to apply هیچ نیشانەیەکی شاردنەوە نییە بۆ جێبەجێکردن + there are no pages to print هیچ پەڕەیەک نییە بۆ چاپکردن + the document has no tags بەڵگەنامەکە هیچ تاگێکی نییە + {0}: {1} {0}: {1} + the text recognition models are not installed (reinstall PdfCraft, or set PDFCRAFT_MODELS to the folder that holds them) مۆدێلەکانی ناسینەوەی دەق دانەمەزراون (PdfCraft دابمەزرێنەرەوە، یان PDFCRAFT_MODELS بکە بە فۆڵدەرەکەی کە لەخۆی دەگرێت) + the image is empty وێنەکە بەتاڵە + this file isn't XFDF, FDF, XML or text form data ئەم فایلە داتای فۆڕمی XFDF یان FDF یان XML یان دەق نییە + nothing in the file matches this document هیچ شتێک لە فایلەکەدا لەگەڵ ئەم بەڵگەنامەیە ناگونجێت + This page couldn't be displayed.\n{e} نەتوانرا ئەم پەڕەیە پیشان بدرێت.\n{e} + Go to page {p} بڕۆ بۆ پەڕەی {p} + {s} action کرداری {s} + Page {p} of {n} پەڕەی {p} لە {n} + 1 page selected 1 پەڕە هەڵبژێردرا + {n} pages selected {n} پەڕە هەڵبژێردرا + {name} — unsaved changes {name} — گۆڕانکارییە پاشەکەوتنەکراوەکان + {kind} field خانەی {kind} + Select a file for the stamp فایلێک هەڵبژێرە بۆ مۆرەکە + JavaScript, e.g. getField("total").value JavaScript، بۆ نموونە getField("total").value + Font: Helvetica فۆنت: Helvetica + e.g. en-US بۆ نموونە en-US + Rendering: hayro (bootstrap) · UI: egui · Icons: Lucide (ISC) · Fonts: Inter, JetBrains Mono, Dancing Script (OFL) وێناکردن: hayro (bootstrap) · ڕووکار: egui · ئایکۆنەکان: Lucide (ISC) · فۆنتەکان: Inter, JetBrains Mono, Dancing Script (OFL) + CheckBox خانەی هەڵبژاردن + Radio دوگمەی هەڵبژاردن + PushButton دوگمەی پاڵنان + Combo پێڕستی بەرەوخوار + List پێڕست + Unknown نەناسراو + The document has no XMP metadata بەڵگەنامەکە هیچ میتاداتای XMPی نییە + The title in the metadata and the document information differ ناونیشانی میتاداتاکە و زانیارییەکانی بەڵگەنامەکە جیاوازن + The document is encrypted بەڵگەنامەکە کۆدکراوە + Device colour is used, but there is no PDF/A output intent ڕەنگی ئامێر بەکاردەهێنرێت، بەڵام هیچ مەبەستی دەرهاویشتەی PDF/A نییە + DeviceCMYK is used: it needs a CMYK output intent (not added automatically) DeviceCMYK بەکاردەهێنرێت: پێویستی بە مەبەستی دەرهاویشتەی CMYK هەیە (بە شێوەی خۆکار زیاد ناکرێت) + The document has additional actions (/AA) بەڵگەنامەکە کرداری زیادەی هەیە (/AA) + The document has document-level JavaScript بەڵگەنامەکە JavaScriptی ئاستی بەڵگەنامەی هەیە + The form asks viewers to make appearances (NeedAppearances) فۆڕمەکە داوای دروستکردنی ڕووخسار لە بینەران دەکات (NeedAppearances) + A form field has additional actions خانەیەکی فۆڕم کرداری زیادەی هەیە + A stream uses LZW compression لێشاوێک پەستاندنی LZW بەکاردەهێنێت + A stream refers to an external file لێشاوێک ئاماژە بە فایلێکی دەرەکی دەکات + An image asks to be interpolated وێنەیەک داوای نێوانپڕکردن دەکات + An image has alternates or OPI information وێنەیەک بدیل یان زانیاری OPI هەیە + PostScript XObjects aren't allowed PostScript XObjects ڕێپێنەدراون + Embedded files must be PDF/A files themselves (use PDF/A-3 for others) فایلە تێخراوەکان خۆیان دەبێت فایلی PDF/A بن (بۆ ئەوانی تر PDF/A-3 بەکاربهێنە) + An embedded file has no AFRelationship فایلێکی تێخراو هیچ AFRelationshipی نییە + Select Icon هەڵبژاردنی ئایکۆن + Choose images وێنەکان هەڵبژێرە + {dpi} pixels/inch {dpi} پیکسڵ/ئینج + Type your {what}. {what}ەکەت بنووسە. + Draw your {what} below. {what}ەکەت لە خوارەوە بکێشە. + Your name ناوت + Images and text (converted to PDF) وێنە و دەق (دەگۆڕدرێن بۆ PDF) + Images and text وێنە و دەق + Check Box Style: شێوازی خانەی هەڵبژاردن: + Button Style: شێوازی دوگمە: + Check چێک + Circle بازنە + Diamond ئەڵماس + Square چوارگۆشە + Star ئەستێرە + {month} {y} {month} {y} + Change {key} گۆڕینی {key} + Insert pages from {name} خستنەناوی پەڕەکان لە {name} + Insert pages from {name} — 1 field renamed خستنەناوی پەڕەکان لە {name} — 1 خانە ناونرایەوە + Insert pages from {name} — fields renamed خستنەناوی پەڕەکان لە {name} — خانەکان ناونرانەوە + Fill in {name} پڕکردنەوەی {name} + Set the image of {name} دانانی وێنەی {name} + Edit script of {name} دەستکاریکردنی سکریپتی {name} + Import {name} هاوردەکردنی {name} + Add bookmark زیادکردنی دڵخواز + Rename bookmark ناونانەوەی دڵخوازەکە + Delete bookmark سڕینەوەی دڵخوازەکە + Move bookmark گواستنەوەی دڵخوازەکە + Set bookmark destination دانانی مەبەستی دڵخوازەکە + Add stamp زیادکردنی مۆر + Delete comment سڕینەوەی لێدوان + Edit comment دەستکاریکردنی لێدوان + Erase سڕینەوە + Lock comment قفڵکردنی لێدوان + Unlock comment کردنەوەی قفڵی لێدوان + Move comment گواستنەوەی لێدوان + Resize comment گۆڕینی قەبارەی لێدوان + Change comment properties گۆڕینی تایبەتمەندییەکانی لێدوان + Add field زیادکردنی خانە + Change field properties گۆڕینی تایبەتمەندییەکانی خانە + Delete field سڕینەوەی خانە + Duplicate field دووبارەکردنەوەی خانە + Set tab order دانانی ڕیزبەندی بازدەر + Change initial view گۆڕینی بینینی سەرەتایی + Set alternate text دانانی دەقی جێگرەوە + Mark figure as decorative نیشانەکردنی شێوەکە وەک ڕازاندنەوە + Run JavaScript جێبەجێکردنی JavaScript + Delete document JavaScript سڕینەوەی JavaScriptی بەڵگەنامە + Edit document JavaScript دەستکاریکردنی JavaScriptی بەڵگەنامە + Edit text دەستکاریکردنی دەق + Load document font بارکردنی فۆنتی بەڵگەنامە + Move image گواستنەوەی وێنە + Rotate image سووڕاندنەوەی وێنە + Flip image هەڵگەڕاندنەوەی وێنە + Delete image سڕینەوەی وێنە + Add header & footer زیادکردنی سەرەوەی پەڕە و خوارەوەی پەڕە + Update header & footer نوێکردنەوەی سەرەوەی پەڕە و خوارەوەی پەڕە + Update watermark نوێکردنەوەی نیشانەی ئاوی + Add background زیادکردنی پاشبنەما + Update background نوێکردنەوەی پاشبنەما + Add image زیادکردنی وێنە + Edit content دەستکاریکردنی ناوەڕۆک + Delete content سڕینەوەی ناوەڕۆک + Remove redaction marks لابردنی نیشانەکانی شاردنەوە + Add link زیادکردنی بەستەر + Change link properties گۆڕینی تایبەتمەندییەکانی بەستەر + Delete link سڕینەوەی بەستەر + Create link دروستکردنی بەستەر + Flatten تەختکردن + Add sticky note زیادکردنی تێبینی لکاو + Add highlight زیادکردنی هایلایت + Add underline زیادکردنی ژێرهێڵ + Add strikethrough زیادکردنی هێڵخستنەسەر + Add squiggly underline زیادکردنی ژێرهێڵی شەپۆلی + Add rectangle زیادکردنی لاکێشە + Add oval زیادکردنی هێلکەیی + Add arrow زیادکردنی تیر + Add line زیادکردنی هێڵ + Add drawing زیادکردنی وێنەکێشان + Add text box زیادکردنی سندووقی دەق + Add checkmark زیادکردنی نیشانەی چێک + Add cross زیادکردنی نیشانەی خاچ + Add dot زیادکردنی خاڵ + Add signature زیادکردنی واژوو + Add redaction mark زیادکردنی نیشانەی شاردنەوە + Add cloud زیادکردنی هەور + Add polygon زیادکردنی فرەگۆشە + Add connected lines زیادکردنی هێڵی بەستراو + Add callout زیادکردنی بالۆن + Add inserted text زیادکردنی دەقی خستراوەناو + Add file attachment زیادکردنی پێوەکراوی فایل + Set status Accepted دانانی دۆخ: قبووڵکراو + Set status Rejected دانانی دۆخ: ڕەتکراوە + Set status Cancelled دانانی دۆخ: هەڵوەشێنراوە + Set status Completed دانانی دۆخ: تەواوکراو + Set status None دانانی دۆخ: هیچ + Set status Unmarked دانانی دۆخ: بێ نیشانە + Save as PDF/A-1b پاشەکەوتکردن وەک PDF/A-1b + Save as PDF/A-2b پاشەکەوتکردن وەک PDF/A-2b + Save as PDF/A-3b پاشەکەوتکردن وەک PDF/A-3b + Fill & Sign: change signature پڕکردنەوە و واژووکردن: گۆڕینی واژوو + Fill & Sign: change initials پڕکردنەوە و واژووکردن: گۆڕینی پیتە سەرەتاییەکان + Fill & Sign: remove saved signature پڕکردنەوە و واژووکردن: لابردنی واژووی پاشەکەوتکراو + Fill & Sign: remove saved initials پڕکردنەوە و واژووکردن: لابردنی پیتە سەرەتاییە پاشەکەوتکراوەکان + Change signature گۆڕینی واژوو + Change initials گۆڕینی پیتە سەرەتاییەکان + Measure distance پێوانەکردنی دووری + Measure perimeter پێوانەکردنی چێوە + Measure area پێوانەکردنی ڕووبەر + Set measurement scale دانانی پێوەری پێوانە + Measurement information زانیاریی پێوانە + Measurement snapping لکاندنی پێوانە + Export measurements as CSV هەناردەکردنی پێوانەکان وەک CSV + Distance دووری + Perimeter چێوە + Area ڕووبەر + Drawing scale پێوەری وێنەکێشان + Snapping لکاندن + Export measurements هەناردەکردنی پێوانەکان + Open a PDF to measure it. PDFێک بکەرەوە بۆ پێوانەکردنی. + Click vertices. Enter or double-click finishes a perimeter or area. Click the first point to close an area. کرتە لە لووتکەکان بکە. Enter یان دوو کرتە چێوە یان ڕووبەرێک تەواو دەکات. کرتە لە خاڵی یەکەم بکە بۆ داخستنی ڕووبەرێک. + Shift constrains to 45 degrees. Backspace removes a vertex. Escape cancels. Shift بە 45 پلە سنووردار دەکات. Backspace لووتکەیەک لادەبات. Escape هەڵدەوەشێنێتەوە. + Angle گۆشە + Click the first point to begin. کرتە لە خاڵی یەکەم بکە بۆ دەستپێکردن. + Snap to drawing لکاندن بە وێنەکێشانەوە + Endpoints خاڵەکانی کۆتایی + Midpoints خاڵەکانی ناوەڕاست + Intersections یەکتربڕەکان + Paths ڕێڕەوەکان + Sensitivity هەستیاری + Unit یەکە + Decimals شوێنە دەیییەکان + Calibrate from two points کالیبرەکردن لە دوو خاڵەوە + Entire page هەموو پەڕەکە + Viewport rectangle in page points (x, y, width, height) لاکێشەی ناوچەی بینین بە خاڵەکانی پەڕە (x, y, پانی, بەرزی) + Viewport ناوچەی بینین + Apply scale جێبەجێکردنی پێوەر + Saved measurements پێوانە پاشەکەوتکراوەکان + Saved measurements. پێوانەکان پاشەکەوتکران. + Endpoint خاڵی کۆتایی + Midpoint خاڵی ناوەڕاست + Intersection یەکتربڕ + Path ڕێڕەو + This drawing exceeds the snapping limit; only the first paths are used. ئەم وێنەکێشانە لە سنووری لکاندن تێدەپەڕێت؛ تەنها ڕێڕەوە سەرەتاییەکان بەکاردەهێنرێن. + Some page content couldn't be read; snapping uses the rest. بەشێک لە ناوەڕۆکی پەڕەکە نەخوێنرایەوە؛ لکاندن پاشماوەکە بەکاردەهێنێت. + Unsupported measurements پێوانە پشتگیرینەکراوەکان + Label نیشانە + {n} measurements use an unsupported format and are left out. {n} پێوانە فۆرماتێکی پشتگیرینەکراو بەکاردەهێنن و چوونەتە دەرەوە. + This area has too many overlapping paths; intersection snapping is limited. ئەم ناوچەیە ڕێڕەوی یەکتربڕی زۆری هەیە؛ لکاندنی یەکتربڕەکان سنووردارە. + This measurement needs at least {n} points. ئەم پێوانەیە پێویستی بە لانیکەم {n} خاڵ هەیە. + Change {what} گۆڕینی {what} + Cut and stack بڕین و کەڵەکەکردن + Default workspace mode دۆخی بنەڕەتی شوێنی کار + Documents and view بەڵگەنامەکان و بینین + Open email app کردنەوەی ئەپی ئیمەیڵ + Open link کردنەوەی بەستەر + Open this web page? ئەم لاپەڕەی وێبە بکرێتەوە؟ + Scripts run in a sandbox without file or network access. A script that asks to open a web page needs your permission first. With JavaScript off, Acrobat's standard format, validate and calculate functions still work. سکریپتەکان لە ژینگەیەکی جیاکراودا کاردەکەن بەبێ دەستڕاگەیشتن بە فایل یان تۆڕ. سکریپتێک کە داوای کردنەوەی لاپەڕەی وێب بکات سەرەتا پێویستی بە مۆڵەتی تۆ هەیە. کاتێک JavaScript کوژاوەتەوە، فەرمانە ستانداردەکانی Acrobat بۆ فۆرمات و پشتڕاستکردنەوە و ژمێرکاریکردن هێشتا کاردەکەن. + Sign yourself خۆت واژوو بکە + Used when opening PDFs. An explicit launch or control mode takes precedence for the session. کاتی کردنەوەی PDFەکان بەکاردێت. دۆخی ڕوونی خستنەکار یان کۆنترۆڵ بۆ دانیشتنەکە پێشینەی هەیە. + Write this email? ئەم ئیمەیڵە بنووسرێت؟ + {who} in this document wants to open this address in your browser: {who} لەم بەڵگەنامەیەدا دەیەوێت ئەم ناونیشانە لە وێبگەڕەکەتدا بکاتەوە: + {who} in this document wants to open your email app with this address: {who} لەم بەڵگەنامەیەدا دەیەوێت ئەپی ئیمەیڵەکەت بەم ناونیشانە بکاتەوە: + This web address mixes letters from different alphabets, a common way to imitate another site's name. ئەم ناونیشانە وێبییە پیت لە ئەلفوبێی جیاواز تێکەڵ دەکات، کە ڕێگایەکی باوە بۆ لاساییکردنەوەی ناوی ماڵپەڕێکی تر. + This web address uses letters from another alphabet, which can look like familiar ones. ئەم ناونیشانە وێبییە پیت لە ئەلفوبێیەکی ترەوە بەکاردەهێنێت، کە لەوانەیە لە پیتە ناسراوەکان بچن. + Create PDF from images دروستکردنی PDF لە وێنەکان + Selected image files: {count} فایلە وێنە هەڵبژێردراوەکان: {count} + Use image resolution بەکارهێنانی ڕوونیی وێنە + Use each image's embedded DPI; use 72 DPI when it is absent. DPIی تێخراوی هەر وێنەیەک بەکاربهێنە؛ کاتێک نییە 72 DPI بەکاربهێنە. + Use 72 DPI (one point per pixel) بەکارهێنانی 72 DPI (یەک خاڵ بۆ هەر پیکسڵێک) + Use custom DPI بەکارهێنانی DPIی تایبەت + DPI sets the printed page size without resampling the image. DPI قەبارەی پەڕەی چاپکراو دیاری دەکات بەبێ دووبارە نموونەگرتنەوەی وێنەکە. + Create دروستکردن + Dynamic XFA form laid out from its template: {pages}, {fields}. فۆڕمی XFAی داینامیکی کە لە قاڵبەکەیەوە ڕێکخراوە: {pages}، {fields}. + This form's scripts are turned off because one ran too long. Reopen the document to run them again. سکریپتەکانی ئەم فۆڕمە کوژاونەتەوە چونکە یەکێکیان زۆری پێچوو. بەڵگەنامەکە دووبارە بکەرەوە بۆ ئەوەی دووبارە جێبەجێ بکرێن. + XFA form: its fields and its XFA data are kept in step, so other viewers show what you fill in. فۆڕمی XFA: خانەکانی و داتای XFAی هاوتەریب دەهێڵدرێنەوە، بۆیە بینەرەکانی تر ئەوە پیشان دەدەن کە تۆ پڕت کردووەتەوە. + Switch to two-page view first to show the cover page سەرەتا بگۆڕە بۆ بینینی دوو پەڕە بۆ پیشاندانی پەڕەی بەرگ + Page display: {layout} پیشاندانی پەڕە: {layout} + Fit to width scrolling سکرۆڵی گونجاندن بە پانی + Fit one full page گونجاندنی یەک پەڕەی تەواو + Default page display پیشاندانی بنەڕەتی پەڕە + Default zoom زوومی بنەڕەتی + Used when a PDF doesn't ask for a layout or zoom. Continuous scrolling never snaps between pages. کاتێک بەکاردێت کە PDFێک داوای چیدان یان زووم ناکات. سکرۆڵی بەردەوام هەرگیز لە نێوان پەڕەکاندا نالکێت. + Choose a PNG or JPEG image (up to 4 MiB). Transparency is preserved. وێنەیەکی PNG یان JPEG هەڵبژێرە (تا 4 MiB). ڕوونییەکە پارێزراو دەمێنێت. + Couldn't import the signature image: {e} نەتوانرا وێنەی واژووەکە هاوردە بکرێت: {e} +@plural {n} page|{n} pages {n} پەڕە|{n} پەڕە +@plural {n} field|{n} fields {n} خانە|{n} خانە +@plural {n} field name collides with earlier files and will be renamed: {list}|{n} field names collide with earlier files and will be renamed: {list} {n} ناوی خانە پێکدادەچێت لەگەڵ فایلە پێشووەکاندا و ناودەنرێتەوە: {list}|{n} ناوی خانە پێکدادەچێت لەگەڵ فایلە پێشووەکاندا و ناودەنرێتەوە: {list} + Create PDF from multiple files… دروستکردنی PDF لە چەند فایلێک… + Create separate PDFs… دروستکردنی PDFی جیاجیا… + Optimizing… removing user data باشترکردن… لابردنی داتای بەکارهێنەر + Optimizing… image {d} of {t} باشترکردن… وێنەی {d} لە {t} + Optimizing… cleaning up باشترکردن… پاککردنەوە + Optimizing… merging identical objects باشترکردن… یەکخستنی تەنە هاوشێوەکان + Optimizing… writing the copy باشترکردن… نووسینی کۆپییەکە + Cancelling… هەڵوەشاندنەوە… + Created a PDF from {n} files PDFێک لە {n} فایل دروستکرا + PDF, images and text PDF و وێنە و دەق + Insert a file before page {label} خستنەناوی فایلێک پێش پەڕەی {label} + Insert a file at the end خستنەناوی فایلێک لە کۆتاییدا + Save pages پاشەکەوتکردنی پەڕەکان + Save these pages as one PDF ئەم پەڕانە وەک یەک PDF پاشەکەوت بکە + No changes to save هیچ گۆڕانکارییەک نییە بۆ پاشەکەوتکردن + Created a PDF from {n} files; left out: {names} PDFێک لە {n} فایل دروستکرا؛ چوونەتە دەرەوە: {names} + Created a PDF from the first {n} files PDFێک لە یەکەم {n} فایل دروستکرا + Go to page… بڕۆ بۆ پەڕە… + Optimization is already running باشترکردن ئێستا لە کاردایە + Optimization cancelled باشترکردن هەڵوەشێنرایەوە + Couldn't optimize the file نەتوانرا فایلەکە باشتر بکرێت + Files are combined in this order. Leave Pages empty to take every page. فایلەکان بەم ڕیزبەندییە تێکەڵ دەکرێن. پەڕەکان بەتاڵ بهێڵەوە بۆ وەرگرتنی هەموو پەڕەیەک. + Portable mode is off: {folder} can't be written ({error}). Settings are kept in your user folder instead. دۆخی گەڕۆک کوژاوەتەوە: ناتوانرێت لە {folder} بنووسرێت ({error}). لە جیاتی ئەوە ڕێکخستنەکان لە فۆڵدەری بەکارهێنەرەکەتدا دەهێڵدرێنەوە. + PdfCraft is drawing without a graphics processor, so it may be slow. Updating the graphics driver may help. PdfCraft بەبێ پڕۆسێسەری گرافیک وێنە دەکێشێت، بۆیە لەوانەیە هێواش بێت. نوێکردنەوەی درایڤەری گرافیک لەوانەیە یارمەتیدەر بێت. + Show پیشاندان + Sort ڕیزکردن + Reverse the order پێچەوانەکردنەوەی ڕیزبەندەکە + Grab bag جۆراوجۆر + Table خشتە + Username ناوی بەکارهێنەر + Display name ناوی پیشاندراو + Real name ناوی ڕاستەقینە + Name (A–Z) ناو (A–Z) + Merged PRs داواکاری کێشانەوە یەکخراوەکان + PRs داواکاری کێشانەوەکان + Commits کۆمیتەکان + Lines added هێڵە زیادکراوەکان + +LOC +LOC + Lines deleted هێڵە سڕدراوەکان + −LOC −LOC + Line delta جیاوازی هێڵەکان + ΔLOC ΔLOC + Binary assets added ئاسێتە دووانییە زیادکراوەکان + +Bin +Bin + Binary assets removed ئاسێتە دووانییە لابراوەکان + −Bin −Bin + First commit یەکەم کۆمیت + First یەکەم + Last commit کۆتا کۆمیت + Last کۆتایی + No contributor data was built into this copy. هیچ داتای بەشداربوو لەم کۆپییەدا تێنەخراوە. + No model credits were built into this copy. هیچ ناساندنی مۆدێل لەم کۆپییەدا تێنەخراوە. + {n} contributors · {c} commits {n} بەشداربوو · {c} کۆمیت + Company کۆمپانیا + Model مۆدێل + % of all commits % لە هەموو کۆمیتەکان + Lines +/− هێڵەکان +/− + @{login}: {prs} PRs, {commits} commits, +{added} / −{deleted} lines (Δ {delta}), +{bin_added} / −{bin_deleted} binary assets, {first} – {last} @{login}: {prs} داواکاری کێشانەوە، {commits} کۆمیت، +{added} / −{deleted} هێڵ (Δ {delta})، +{bin_added} / −{bin_deleted} ئاسێتی دووانی، {first} – {last} + None of those files can be made into a PDF; use PDFs, images or .txt files هیچ کام لەو فایلانە ناکرێت بکرێتە PDF؛ فایلی PDF یان وێنە یان فایلی .txt بەکاربهێنە + About دەربارە + Contributors بەشداربووان + Models مۆدێلەکان + Only continue if you trust this document. An address can carry information from the document, such as what you typed into its form. تەنها ئەگەر متمانەت بەم بەڵگەنامەیە هەیە بەردەوام بە. ناونیشانێک دەتوانێت زانیاری لە بەڵگەنامەکەوە هەڵبگرێت، وەک ئەوەی لە فۆڕمەکەیدا نوسیوتە. + Print single-sided. Keep the sheets in order, cut at the marks, then stack the piles left to right, top to bottom. بە شێوەی یەکلایە چاپ بکە. پەڕەکان بە ڕیزبەندی بهێڵەوە، لە نیشانەکانەوە ببڕە، پاشان کۆمەڵەکان لە چەپەوە بۆ ڕاست و لە سەرەوە بۆ خوارەوە کەڵەکە بکە. +comment menu Edit دەستکاریکردن + Undo {action} پاشگەزبوونەوەی {action} + Redo {action} دووبارەکردنەوەی {action} +signature pad Type تایپکردن +action wizard Start دەستپێکردن +calendar date January کانوونی دووەم +calendar date February شوبات +calendar date March ئازار +calendar date April نیسان +calendar date May ئایار +calendar date June حوزەیران +calendar date July تەممووز +calendar date August ئاب +calendar date September ئەیلوول +calendar date October تشرینی یەکەم +calendar date November تشرینی دووەم +calendar date December کانوونی یەکەم + Reopen the files that were open when PdfCraft last closed دووبارە کردنەوەی ئەو فایلانەی کاتی کۆتا داخستنی PdfCraft کراوە بوون + Clear Recent Files پاککردنەوەی فایلە نوێیەکان + Remove from Recent لابردن لە نوێیەکان + Remove {name} from Recent لابردنی {name} لە نوێیەکان + Inserted text دەقی خستراوەناو + Add {what} زیادکردنی {what} + Use {what} بەکارهێنانی {what} + Place saved {what} دانانی {what}ی پاشەکەوتکراو + Remove saved {what} لابردنی {what}ی پاشەکەوتکراو + A link بەستەر + A button دوگمە + A script سکریپت + {who} in this document tried to open an address PdfCraft won't open: {e}. {who} لەم بەڵگەنامەیەدا هەوڵیدا ناونیشانێک بکاتەوە کە PdfCraft نایکاتەوە: {e}. + {who} in this document tried to open an address PdfCraft won't open: {e}. Only web (http, https) and email (mailto) links open from documents. {who} لەم بەڵگەنامەیەدا هەوڵیدا ناونیشانێک بکاتەوە کە PdfCraft نایکاتەوە: {e}. تەنها بەستەری وێب (http, https) و ئیمەیڵ (mailto) لە بەڵگەنامەکانەوە دەکرێنەوە. + Another file dialog is still open. Finish with it first. دیالۆگێکی تری فایل هێشتا کراوەیە. سەرەتا کارەکەی تەواو بکە. + Couldn't show the file picker. Please try again. نەتوانرا هەڵبژێرەری فایل پیشان بدرێت. تکایە دووبارە هەوڵ بدەرەوە. + The document changed while you were choosing a file, so nothing was changed. بەڵگەنامەکە گۆڕا لە کاتێکدا تۆ فایلێکت هەڵدەبژارد، بۆیە هیچ شتێک نەگۆڕدرا. + The document was closed before it could be saved. بەڵگەنامەکە داخرا پێش ئەوەی بتوانرێت پاشەکەوت بکرێت. + The pages were extracted but not deleted, because the document changed while you were choosing a folder. پەڕەکان دەرهێنران بەڵام نەسڕدرانەوە، چونکە بەڵگەنامەکە گۆڕا لە کاتێکدا تۆ فۆڵدەرێکت هەڵدەبژارد. + That didn't work: an internal error stopped it ({m}). ئەوە سەرنەکەوت: هەڵەیەکی ناوخۆیی ڕایگرت ({m}). + The Windows store's digital IDs couldn't be listed: {e} ناسنامە دیجیتاڵییەکانی کۆگای Windows نەتوانران ڕیز بکرێن: {e} + Align fields هاوتەریبکردنی خانەکان + Distribute fields دابەشکردنی خانەکان + Match field sizes گونجاندنی قەبارەی خانەکان + Mark for redaction نیشانەکردن بۆ شاردنەوە + Mark pages for redaction نیشانەکردنی پەڕەکان بۆ شاردنەوە + Change document properties گۆڕینی تایبەتمەندییەکانی بەڵگەنامە + Mark differences نیشانەکردنی جیاوازییەکان + Run form script جێبەجێکردنی سکریپتی فۆڕم + Scripted content must be usable with a keyboard and assistive technology. Check the document's scripts. ناوەڕۆکی سکریپتکراو دەبێت بە تەختەکلیل و تەکنەلۆژیای یاریدەدەر بەکاربهێنرێت. سکریپتەکانی بەڵگەنامەکە بپشکنە. + Table rows belong directly in a table or its head, body or foot. Fix the table's tags. ڕیزەکانی خشتە دەبێت ڕاستەوخۆ لە خشتەیەکدا یان سەرەوە یان لاشە یان خوارەوەکەیدا بن. تاگەکانی خشتەکە چاک بکەرەوە. + Basic constraints سنوورە بنەڕەتییەکان + Certificate authority دەسەڵاتی بڕوانامە + End entity قیتەعی کۆتایی + SHA-1 digest هاشی SHA-1 + SHA-256 digest هاشی SHA-256 + Squiggly شەپۆلی + Home / End Home / End + H / Space (hold) H / بۆشایی (بە گرتنی) + Rotation: سووڕاندنەوە: + Line ending کۆتایی هێڵ + Open arrow تیری کراوە + Closed arrow تیری داخراو + Butt تەخت + Reverse open arrow تیری کراوەی پێچەوانە + Reverse closed arrow تیری داخراوی پێچەوانە + Slash خەتی لار + The PDF text fonts can't draw “{c}” ({code}). Choose supported text. فۆنتەکانی دەقی PDF ناتوانن «{c}» بکێشن ({code}). دەقی پشتگیریکراو هەڵبژێرە. + The standard fonts can't draw “{c}” ({code}). Only Western European characters can be added as text for now. فۆنتە ستانداردەکان ناتوانن «{c}» بکێشن ({code}). بۆ ئێستا تەنها پیتی ئەوروپای ڕۆژئاوا دەتوانرێت وەک دەق زیاد بکرێت. + This field's font can't draw “{c}” ({code}), so PdfCraft shows ? in its place. The value is saved, and other PDF viewers redraw the field from it. فۆنتی ئەم خانەیە ناتوانێت «{c}» بکێشێت ({code})، بۆیە PdfCraft لە جێگاکەیدا ? پیشان دەدات. بەهاکە پاشەکەوتکراوە، و بینەرەکانی تری PDF خانەکە لەسەر ئەو دووبارە دەکێشنەوە. + The fonts PdfCraft writes with can't draw “{c}” ({code}), so it shows as ? in every PDF viewer. The text is saved. ئەو فۆنتانەی PdfCraft پێیان دەنووسێت ناتوانن «{c}» بکێشن ({code})، بۆیە لە هەموو بینەرێکی PDFدا وەک ? دەردەکەوێت. دەقەکە پاشەکەوتکراوە. + Larger pages پەڕە گەورەترەکان + Smaller pages پەڕە بچووکترەکان + Reset page size ڕێکخستنەوەی قەبارەی پەڕە + Flatten Fill & Sign when saving تەختکردنی پڕکردنەوە و واژووکردن لە کاتی پاشەکەوتکردندا + Text, marks and signatures become part of the page. Other comments stay editable. دەق و نیشانەکان و واژووەکان دەبنە بەشێک لە پەڕەکە. لێدوانەکانی تر دەستکاریکراو دەمێننەوە. + Date format فۆرماتی بەروار + Fill & Sign dates بەروارەکانی پڕکردنەوە و واژووکردن + Pattern شێواز + Today: {date} ئەمڕۆ: {date} + yyyy or yy year · m or mm month · mmm or mmmm month name · d or dd day · ddd or dddd weekday. H, h, M, s and t are time letters and can't be used on their own: put {escape} before a letter to show it as is. yyyy یان yy ساڵ · m یان mm مانگ · mmm یان mmmm ناوی مانگ · d یان dd ڕۆژ · ddd یان dddd ڕۆژی هەفتە. H و h و M و s و t پیتی کاتن و ناکرێت بە تەنها بەکاربهێنرێن: {escape} لە پێش پیتێک دابنێ بۆ ئەوەی وەک خۆی پیشان بدرێت. + Same as interface ({language}) وەک ڕووکارەکە ({language}) + {chars} can't be written into the PDF yet: Fill & Sign text is Western European only. Pick a numeric format such as dd.mm.yyyy. {chars} هێشتا ناکرێت لە PDFەکەدا بنووسرێت: دەقی پڕکردنەوە و واژووکردن تەنها ئەوروپای ڕۆژئاواییە. فۆرماتێکی ژمارەیی وەک dd.mm.yyyy هەڵبژێرە. + Opens the printer driver's preferences. They are saved for every print from this computer; the copies, two-sided, grayscale and paper chosen here still apply. هەڵبژاردەکانی درایڤەری چاپکەر دەکاتەوە. بۆ هەموو چاپێک لەم کۆمپیوتەرەوە پاشەکەوت دەکرێن؛ ژمارەی کۆپی و دوولایە و خۆڵەمێشی و کاغەزی لێرە هەڵبژێردراو هێشتا جێبەجێ دەبن. + The printer driver's own settings for this print: paper tray, paper type, finishing and more. ڕێکخستنە تایبەتەکانی درایڤەری چاپکەر بۆ ئەم چاپە: سینی کاغەز و جۆری کاغەز و تەواوکردن و زیاتر. + Couldn't open the printer's preferences: {e} نەتوانرا هەڵبژاردەکانی چاپکەر بکرێنەوە: {e} + Printer properties تایبەتمەندییەکانی چاپکەر + Reset to printer defaults ڕێکخستنەوە بۆ بنەڕەتییەکانی چاپکەر + This printer offers no settings of its own. ئەم چاپکەرە هیچ ڕێکخستنێکی تایبەتی خۆی نییە. +certificate Subject بابەت + Scroll tabs left سکرۆڵی بازدەرەکان بۆ چەپ + Scroll tabs right سکرۆڵی بازدەرەکان بۆ ڕاست + Shared Field Properties تایبەتمەندییە هاوبەشەکانی خانە + {n} fields selected {n} خانە هەڵبژێردرا + Mixed تێکەڵاو + Custom font فۆنتی تایبەت + Only checked properties will change. Mixed means the selected fields have different values. تەنها ئەو تایبەتمەندییانەی نیشانەکراون دەگۆڕدرێن. «تێکەڵاو» واتە خانە هەڵبژێردراوەکان بەهای جیاوازیان هەیە. + Shift- or Ctrl/Command-click to select several fields. بۆ هەڵبژاردنی چەند خانەیەک کرتە بە Shift یان Ctrl/Command بکە. + Font size 0 uses automatic sizing. قەبارەی فۆنتی 0 قەبارەدانی خۆکاری بەکاردەهێنێت. + Character limit: سنووری پیت: + Character limit 0 means no limit. A comb of characters needs a limit. سنووری پیتی 0 واتە بێ سنوور. شانەی پیتەکان پێویستی بە سنوور هەیە. + To change locked fields, also set Locked to No. بۆ گۆڕینی خانە قفڵکراوەکان، «قفڵکراو»یش بکە بە «نەخێر». + Comb of characters شانەی پیتەکان + The document changed while you were editing field properties. بەڵگەنامەکە گۆڕا لە کاتێکدا تۆ تایبەتمەندییەکانی خانەت دەستکاری دەکرد. + The document is no longer open. بەڵگەنامەکە چیتر کراوە نییە. + The field properties dialog is no longer open. دیالۆگی تایبەتمەندییەکانی خانە چیتر کراوە نییە. + The field properties could not be changed. نەتوانرا تایبەتمەندییەکانی خانە بگۆڕدرێن. + The selected fields could not be found. Select them again. خانە هەڵبژێردراوەکان نەدۆزرانەوە. دووبارە هەڵیانبژێرە. + The field {name} no longer exists. خانەی {name} چیتر بوونی نییە. + A selected field has no widget on any page, so the fields can't be edited together. یەکێک لە خانە هەڵبژێردراوەکان لە هیچ پەڕەیەکدا ویجێتی نییە، بۆیە ناکرێت خانەکان پێکەوە دەستکاری بکرێن. + Text recognition isn't installed: its models are missing (run `cargo xtask models`, or set PDFCRAFT_MODELS). ناسینەوەی دەق دانەمەزراوە: مۆدێلەکانی ونن (`cargo xtask models` جێبەجێ بکە، یان PDFCRAFT_MODELS دابنێ). + ({n} at {dpi} dpi, the largest size they can be drawn at) ({n} بە {dpi} dpi، گەورەترین قەبارەی کە دەتوانرێت پێی بکێشرێن) + Margins پەراوێزەکان + For page sizes and margins. بۆ قەبارەکانی پەڕە و پەراوێزەکان. + +# Multi-object selection and movement (#844) +@plural {n} object selected|{n} objects selected {n} تەن هەڵبژێردرا|{n} تەن هەڵبژێردرا + Drag the selection to move it. Esc clears the selection. هەڵبژاردنەکە ڕابکێشە بۆ گواستنەوەی. Esc هەڵبژاردنەکە پاک دەکاتەوە. + Shift-click to select several objects. Drag empty space to select an area. کرتە بە Shift بکە بۆ هەڵبژاردنی چەند تەنێک. لە بۆشاییەکی بەتاڵدا ڕابکێشە بۆ هەڵبژاردنی ناوچەیەک. + Select at most 1000 objects at a time. لە هەر جارێکدا لە زۆرترین 1000 تەن هەڵبژێرە. + Finish or discard the text being edited before selecting several objects. پێش هەڵبژاردنی چەند تەنێک، دەستکاریکردنی دەقەکە تەواو بکە یان فڕێی بدە. + Move object گواستنەوەی تەن + Move objects گواستنەوەی تەنەکان + Vertical text cannot be moved with this selection. دەقی ستوونی ناکرێت بەم هەڵبژاردنەوە بگوازرێتەوە. + Text used as a clipping path cannot be moved with this selection. ئەو دەقەی وەک ڕێڕەوی بڕین بەکاردێت ناکرێت بەم هەڵبژاردنەوە بگوازرێتەوە. + These objects could not be moved. Select them again and try a smaller move. نەتوانرا ئەم تەنانە بگوازرێنەوە. دووبارە هەڵیانبژێرە و بە گواستنەوەیەکی بچووکتر هەوڵ بدەرەوە. + This page contains objects that cannot be selected together. ئەم پەڕەیە تەنی تێدایە کە ناکرێت پێکەوە هەڵبژێردرێن. + Fill colour ڕەنگی پڕکردنەوە + No fill بێ پڕکردنەوە + Fill colour: none ڕەنگی پڕکردنەوە: هیچ + +# Keyboard key names, distinct from command labels. +key Ctrl Ctrl +key Shift Shift +key Delete Delete +key Esc Esc +key Home Home +key End End +key Space بۆشایی + Grid view بینینی تۆڕ + List view بینینی پێڕست + Files are combined in the order shown. Drag them to change it. فایلەکان بەو ڕیزبەندییەی پیشان دراوە تێکەڵ دەکرێن. ڕایانبکێشە بۆ گۆڕینی. + Preview unavailable: {e} پێشبینین بەردەست نییە: {e} + Pages: {k} of {n} پەڕەکان: {k} لە {n} + Check the pages پەڕەکان بپشکنە + Switch to List view to change the pages it takes. بگۆڕە بۆ بینینی پێڕست بۆ گۆڕینی ئەو پەڕانەی وەریاندەگرێت. + Expand all فراوانکردنی هەموو + Collapse all کۆکردنەوەی هەموو + Collapse all pages کۆکردنەوەی هەموو پەڕەکان + Expand all pages فراوانکردنی هەموو پەڕەکان + Remove page لابردنی پەڕە + Remove {n} pages لابردنی {n} پەڕە + +# Shared panel docking + Reset panel layout ڕێکخستنەوەی چیدانی پانێڵەکان + Float panel سەربەخۆکردنی پانێڵ + Move to group گواستنەوە بۆ گرووپ + Panels پانێڵەکان + Resize panels گۆڕینی قەبارەی پانێڵەکان + Resize panel window گۆڕینی قەبارەی پەنجەرەی پانێڵ + +# Architectural print controls (follow-up to #599). + PDF page: {size} پەڕەی PDF: {size} + Match page at 100% گونجاندنی پەڕە بە 100% + PDF scale: {scale}% پێوەری PDF: {scale}% + Printer paper and scaling may differ. Check driver settings. ڕەنگە کاغەز و پێوەری چاپکەر جیاواز بن. ڕێکخستنەکانی درایڤەر بپشکنە. + Drawing scale changes. Use Actual size for full-scale plans. پێوەری وێنەکێشان دەگۆڕێت. «قەبارەی ڕاستەقینە» بەکاربهێنە بۆ پلانەکان بە پێوەری تەواو. + Reload documents when their files change on disk دووبارە بارکردنی بەڵگەنامەکان کاتێک فایلەکانیان لەسەر دیسک دەگۆڕێن + This file changed on disk. Reload shows the new version and drops your unsaved changes; Save replaces it with this version. ئەم فایلە لەسەر دیسک گۆڕاوە. «دووبارە بارکردن» وەشانی نوێ پیشان دەدات و گۆڕانکارییە پاشەکەوتنەکراوەکانت فڕێدەدات؛ «پاشەکەوتکردن» بەم وەشانە جێگەی دەگرێتەوە. + Reload دووبارە بارکردن + Couldn't reload {name}: {e} دووبارە بارکردنی {name} نەکرا: {e} + Select page {label} هەڵبژاردنی پەڕەی {label} + Rotate page {label} counterclockwise سووڕاندنەوەی پەڕەی {label} بە پێچەوانەی ئاراستەی کاتژمێر + Rotate page {label} clockwise سووڕاندنەوەی پەڕەی {label} بە ئاراستەی کاتژمێر + Delete page {label} سڕینەوەی پەڕەی {label} + Scroll speed (mouse wheel and arrow keys) خێرایی سکرۆڵ (ترۆپکی مشک و دوگمەکانی تیر) +scroll speed Slow هێواش +scroll speed Normal ئاسایی +scroll speed Fast خێرا + Animation effects کاریگەرییەکانی جووڵە +animation effects On چالاک +animation effects Off ناچالاک + Enhance camera image باشترکردنی وێنەی کامێرا + Drag the corners onto the document's edges, then choose Enhance page. گۆشەکان ڕابکێشە بۆ لێوارەکانی بەڵگەنامەکە، پاشان «باشترکردنی پەڕە» هەڵبژێرە. + Enhance page باشترکردنی پەڕە + Done adding text تەواوبوونی زیادکردنی دەق + Discard this text (Esc) فڕێدانی ئەم دەقە (Esc) + Clean-up پاککردنەوە + Original ڕەسەن + Greyscale خۆڵەمێشی + Black and white ڕەش و سپی + Reading colours ڕەنگەکانی خوێندنەوە + Replace document colours جێگرتنەوەی ڕەنگەکانی بەڵگەنامە + Black on white ڕەش لەسەر سپی + White on black سپی لەسەر ڕەش + Yellow on black زەرد لەسەر ڕەش + Green on black سەوز لەسەر ڕەش + Page background پاشبنەمای پەڕە + Only change the colour of black text or line art تەنها ڕەنگی دەقی ڕەش یان هێڵەکان بگۆڕە + Change the colour of line art as well as text ڕەنگی هێڵەکانیش بگۆڕە، نەک تەنها دەق + Colours are remapped while rendering; the document itself never changes. ڕەنگەکان لە کاتی وێنەکێشاندا دووبارە دەنەخشێنرێن؛ خودی بەڵگەنامەکە هەرگیز ناگۆڕێت. + This printer's driver doesn't take two-sided settings from other programs, so its own setting applies. Change it in Properties… درایڤەری ئەم چاپکەرە ڕێکخستنە دوولایەکان لە بەرنامەکانی ترەوە وەرناگرێت، بۆیە ڕێکخستنی خۆی جێبەجێ دەکرێت. لە «تایبەتمەندییەکان» بیگۆڕە… + Browser's print dialog دیالۆگی چاپکردنی وێبگەڕ + Copies, two-sided printing and colour are chosen in the browser's print dialog. ژمارەی کۆپی، چاپی دوولایە و ڕەنگ لە دیالۆگی چاپکردنی وێبگەڕدا هەڵدەبژێردرێن. + Preparing {n} sheets for printing… ئامادەکردنی {n} کاغەز بۆ چاپ… + Preparing sheet {done} of {total} for printing… ئامادەکردنی کاغەزی {done} لە {total} بۆ چاپ… + Opening the browser's print dialog… کردنەوەی دیالۆگی چاپکردنی وێبگەڕ… + Couldn't print from the browser ({e}); downloaded {name} to print instead چاپکردن لە وێبگەڕەوە نەکرا ({e})؛ {name} دابەزێنرا بۆ ئەوەی لە جیاتیدا چاپ بکرێت + Tools panel side لای پانێڵی ئامرازەکان + Add comment زیادکردنی لێدوان + Change tag properties گۆڕینی تایبەتمەندییەکانی تاگ +# Accessibility structure tags. + Tags panel پانێڵی تاگەکان + Tags تاگەکان + Tag type جۆری تاگ + Actual text دەقی ڕاستەقینە + Find a tag دۆزینەوەی تاگێک + Collapse tag کۆکردنەوەی تاگ + Expand tag فراوانکردنی تاگ + Revert changes گەڕاندنەوەی گۆڕانکارییەکان + Save tag properties پاشەکەوتکردنی تایبەتمەندییەکانی تاگ + This document has no editable structure tags. ئەم بەڵگەنامەیە تاگی پێکهاتەی دەستکاریکراوەی نییە. + {n} tags {n} تاگ + Save or revert changes before selecting another tag. پێش هەڵبژاردنی تاگێکی تر، گۆڕانکارییەکان پاشەکەوت بکە یان بیانگەڕێنەوە. + Left out: {names} دەرکرا: {names} + already a PDF خۆی PDF ـە + no unused output name هیچ ناوی دەرهاویشتەی بەکارنەهاتوو نییە + no output folder was chosen هیچ فۆڵدەرێک بۆ دەرهاویشتە هەڵنەبژێردرا +@plural Downloaded {n} PDF|Downloaded {n} PDFs {n} PDF دابەزێنرا|{n} PDF دابەزێنرا + Scan سکانکردن + Sign a sheet of white paper and take a photo of it in bright, even light (use the flash). Choose the photo or drop it here: PdfCraft finds the signature and removes the paper. لەسەر کاغەزێکی سپی واژوو بکە و لە ڕووناکییەکی بەهێز و یەکساندا وێنەی بگرە (فلاش بەکاربهێنە). وێنەکە هەڵبژێرە یان لێرە دایبنێ: PdfCraft واژووەکە دەدۆزێتەوە و کاغەزەکە لادەبات. + Choose photo… هەڵبژاردنی وێنە… + No photo chosen هیچ وێنەیەک هەڵنەبژێردرا + Photo وێنە + Ink sensitivity هەستیاریی مەرەکەب + No signature was found in the frame. Move the frame over the signature or raise the ink sensitivity. هیچ واژوویەک لە چوارچێوەکەدا نەدۆزرایەوە. چوارچێوەکە بگوازەوە بۆ سەر واژووەکە یان هەستیاریی مەرەکەب زیاد بکە. + Couldn't use the photo: {e} بەکارهێنانی وێنەکە نەکرا: {e} + +# PDF tab context menu (#1233) + Close Tab داخستنی بازدەر + Reopen Closed Tab کردنەوەی ئەو بازدەرەی داخرا + Reveal in Finder نیشاندان لە Finder + Reveal in File Explorer نیشاندان لە File Explorer + Other colour… ڕەنگێکی تر… + Recent colours ڕەنگە دواییەکان + Couldn't follow linked PDF: {reason} کردنەوەی PDF ـی بەستەردراو نەکرا: {reason} + The linked PDF opened, but its named destination was not applied. PDF ـی بەستەردراو کرایەوە، بەڵام مەبەستی ناونراوەکەی جێبەجێ نەکرا. + The linked PDF opened, but its page destination was out of range. PDF ـی بەستەردراو کرایەوە، بەڵام مەبەستی پەڕەکەی لە دەرەوەی سنوور بوو. + Local cross-PDF links require the desktop app بەستەرە نێوان-PDF ـە ناوخۆییەکان پێویستیان بە ئەپی سەر مێزە + Cut Image بڕینی وێنە + Redact Image شاردنەوەی وێنە + Create Link… دروستکردنی بەستەر… + Recognize Text… ناسینەوەی دەق… + Minimize بچووککردنەوە + Maximize گەورەکردنەوە + Restore گەڕاندنەوە + Use system title bar بەکارهێنانی شریتی ناونیشانی سیستەم + Show a basic title bar for the window buttons instead of the tab strip. GNOME doesn't draw title bars for apps, so this one doesn't follow its theme. شریتێکی ناونیشانی سادە بۆ دوگمەکانی پەنجەرە پیشان بدە لە جیاتی شریتی بازدەرەکان. GNOME شریتی ناونیشان بۆ ئەپەکان ناکێشێت، بۆیە ئەمە شوێنی تیمی خۆی ناکەوێت. + +# Absolute local GoToR confirmation (#1364). + Allow ڕێگەدان + Only allow this if you trust the source document. تەنها ئەگەر متمانەت بە بەڵگەنامە سەرچاوەییەکە هەیە ڕێگەی پێ بدە. + Open in Full Screen mode? کردنەوە لە دۆخی شاشەی پڕدا؟ + This document asks to open in Full Screen mode: the page fills the screen and nothing else shows. Press Esc at any time to leave it. ئەم بەڵگەنامەیە داوای کردنەوە دەکات لە دۆخی شاشەی پڕدا: پەڕەکە هەموو شاشەکە پڕ دەکات و هیچی تر پیشان نادرێت. لە هەر کاتێکدا Esc دابگرە بۆ چوونە دەرەوە. + Full Screen شاشەی پڕ + Not now ئێستا نا + Open this local PDF? کردنەوەی ئەم PDF ـە ناوخۆییە؟ + This document is trying to open a local file: ئەم بەڵگەنامەیە هەوڵی کردنەوەی فایلێکی ناوخۆیی دەدات: + Move tag earlier گواستنەوەی تاگ بۆ پێشتر + Move tag later گواستنەوەی تاگ بۆ دواتر + +# Historical snapshot notice bar (View signed version / View revision). + You are viewing the signed version of “{from}” (revision {rev}). It is a snapshot: changes here won't affect the original. تۆ وەشانی واژووکراوی “{from}” دەبینیت (پێداچوونەوەی {rev}). ئەمە وێنەیەکی چەسپاوە: گۆڕانکارییەکانی لێرە کار لە ڕەسەنەکە ناکەن. + You are viewing revision {rev} of “{from}”. It is a snapshot: changes here won't affect the original. تۆ پێداچوونەوەی {rev} ی “{from}” دەبینیت. ئەمە وێنەیەکی چەسپاوە: گۆڕانکارییەکانی لێرە کار لە ڕەسەنەکە ناکەن. +# Completion: the rows the newer catalogs (lt, cs, es …) grew — certificates, +# digital-signature verification detail, accessibility checks, calendar weekdays +# and the newer plural counts — same clean-room Kurdish as the rest of the file. + on page {label} لە پەڕەی {label} + A font isn't embedded فۆنتێک تێکەڵ نەکراوە + A {} action isn't allowed کرداری {} ڕێگەپێنەدراوە + A {} annotation has additional actions تێبینیی {} کرداری زیاتری هەیە + A {} annotation has no appearance stream تێبینیی {} لێشاوی دەرکەوتنی نییە + A {} annotation isn't set to print, or is hidden تێبینیی {} بۆ چاپ دانەنراوە، یان شاراوەیە + Accessibility Report ڕاپۆرتی دەستڕاگەیشتن + Add the PDFs to combine PDF ـەکان زیاد بکە بۆ تێکەڵکردن + Added the first {n} PDFs in {folder} یەکەم {n} PDF لە {folder} زیادکرا + Always هەمیشە + Automatically بە شێوەی خۆکار + CRL Signing واژووکردنی CRL + Certificate Signing واژووکردنی بڕوانامە + Change Author گۆڕینی نووسەر + Change Keywords گۆڕینی وشە سەرەکییەکان + Change Subject گۆڕینی بابەت + Change Title گۆڕینی ناونیشان + Choose a digital ID. ناسنامەیەکی دیجیتاڵی هەڵبژێرە. + Choose a file… هەڵبژاردنی فایلێک… + Choose a folder… هەڵبژاردنی فۆڵدەرێک… + Choose… هەڵبژاردن… + Color ڕەنگ + Comment لێدوان + Comment and review لێدوان و پێداچوونەوە + Copied to clipboard کۆپیکرا بۆ کلیپبۆرد + Copy to clipboard کۆپیکردن بۆ کلیپبۆرد + Create folder دروستکردنی فۆڵدەر + Create links دروستکردنی بەستەرەکان + Creator دروستکەر + Cut and stack needs Two-sided: Off. Print single-sided sheets. بڕین و کەڵەکەکردن پێویستی بە «دوولایە: ناچالاک» هەیە. کاغەزی یەکلایە چاپ بکە. + Data Encipherment کۆدکردنی داتا + Decipher Only تەنها شیفربوونەوە + Detailed Report ڕاپۆرتی ورد + DeviceCMYK is used, but the PDF/A output intent isn't a CMYK profile DeviceCMYK بەکاردێت، بەڵام مەبەستی دەرهاویشتەی PDF/A پڕۆفایلی CMYK نییە + DeviceRGB is used, but the PDF/A output intent isn't an RGB profile DeviceRGB بەکاردێت، بەڵام مەبەستی دەرهاویشتەی PDF/A پڕۆفایلی RGB نییە + Digital Signature واژووی دیجیتاڵی + Disabled ناچالاککراو + Document properties (⌘D) تایبەتمەندییەکانی بەڵگەنامە (⌘D) + Drop PDFs or folders here, or choose them. PDF ـەکان یان فۆڵدەرەکان لێرە دابنێ، یان هەڵیانبژێرە. + Duplicate دووبارەکردنەوە + Enabled چالاککراو + Encipher Only تەنها کۆدکردن + English ئینگلیزی + Enter a URL URL ـێک بنووسە + Enter a name. ناوێک بنووسە. + Enter a page number ژمارەی پەڕەیەک بنووسە + Enter the field names ناوەکانی خانەکان بنووسە + Error هەڵە + Every PDF in the folder هەموو PDF ـێک لە فۆڵدەرەکەدا + Every PDF in the folder and the folders inside it هەموو PDF ـێک لە فۆڵدەرەکە و فۆڵدەرەکانی ناویدا + Field "{}" on page {p} has no description (tooltip) خانەی «{}» لە پەڕەی {p} وەسفی نییە (ڕێنمایی) + Filename ناوی فایل + Flatten Fill & Sign تەختکردنی پڕکردنەوە و واژووکردن + Folder فۆڵدەر + Font فۆنت + Font (unnamed) on page {p} doesn't map its characters to Unicode فۆنتی (بێناو) لە پەڕەی {p} پیتەکانی بۆ Unicode نەخشە ناکات + Font {} on page {p} doesn't map its characters to Unicode فۆنتی {} لە پەڕەی {p} پیتەکانی بۆ Unicode نەخشە ناکات + Form field on page {p} isn't tagged خانەی فۆڕم لە پەڕەی {p} تاگ نەکراوە + Help… یارمەتی… + H{n} follows an H{d}; headings should not skip levels H{n} دوای H{d} دێت؛ سەردێڕەکان نابێت ئاستەکان ببەزنەوە + Import هاوردەکردن + Information زانیاری + Inspector پشکنەر + Key Agreement ڕێککەوتنی کلیل + Key Encipherment کۆدکردنی کلیل + Loading… بارکردن… + Move گواستنەوە + Never هەرگیز + New bookmark (⌘B) دڵخوازی نوێ (⌘B) + Next داهاتوو + Next (⌘G) داهاتوو (⌘G) + No PDFs found in {folder} هیچ PDF ـێک لە {folder} نەدۆزرایەوە + No document language is set هیچ زمانێک بۆ بەڵگەنامە دیاری نەکراوە + No page has text: the document appears to be images of pages هیچ پەڕەیەک دەقی نییە: پێدەچێت بەڵگەنامەکە وێنەی پەڕەکان بێت + No results هیچ ئەنجامێک نییە + Non-Repudiation ڕەتنەکردنەوە + On چالاک + Only the document's owner can change its security (open it with the permissions password) تەنها خاوەنی بەڵگەنامەکە دەتوانێت ئاسایشەکەی بگۆڕێت (بە وشەی نهێنیی مۆڵەتەکان بیکەرەوە) + Open a PDF (⌘O) کردنەوەی PDF (⌘O) + Open folder کردنەوەی فۆڵدەر + Organize ڕێکخستن + Page {n} پەڕەی {n} + Page {n} of {total} پەڕەی {n} لە {total} + Page {p} doesn't tab in structure order پەڕەی {p} بەپێی ڕیزبەندی پێکهاتە ڕیز ناکرێت + Page {p}: {n} untagged content item پەڕەی {p}: {n} توخمی ناوەڕۆکی بێ تاگ + Page {p}: {n} untagged content items پەڕەی {p}: {n} توخمی ناوەڕۆکی بێ تاگ + Page {} has additional actions پەڕەی {} کرداری زیاتری هەیە + Panel layout could not be restored: {error} شێوازی پانێڵەکان نەگەڕێنرایەوە: {error} + Panel move was not applied: {error} گواستنەوەی پانێڵ جێبەجێ نەکرا: {error} + Paste لکاندن + PdfCraft can't check this signature yet: {}. PdfCraft هێشتا ناتوانێت ئەم واژووە پشکنی بکات: {}. + Previous پێشوو + Previous (⇧⌘G) پێشوو (⇧⌘G) + Print (⌘P) چاپکردن (⌘P) + Producer بەرهەمهێنەر + Refresh نوێکردنەوە + Rendering… وێنەکێشان… + Report created ڕاپۆرت دروستکرا + Rev. {rev}: Certified by an unknown signer پێداچوونەوە {rev}: پشتڕاستکراوە لەلایەن واژووکەرێکی نەناسراوەوە + Rev. {rev}: Certified by {name} پێداچوونەوە {rev}: پشتڕاستکراوە لەلایەن {name} ـەوە + Rev. {rev}: Signed by an unknown signer پێداچوونەوە {rev}: واژووکراوە لەلایەن واژووکەرێکی نەناسراوەوە + Rev. {rev}: Signed by {name} پێداچوونەوە {rev}: واژووکراوە لەلایەن {name} ـەوە + Rotate view clockwise (⇧⌘+) سووڕاندنەوەی بینین بە ئاراستەی کاتژمێر (⇧⌘+) + Rule Name ناوی یاسا + Save (M4) پاشەکەوتکردن (M4) + Save as {level} پاشەکەوتکردن وەک {level} + Save changes? گۆڕانکارییەکان پاشەکەوت بکرێن؟ + Save file پاشەکەوتکردنی فایل + Search results ئەنجامەکانی گەڕان + Select all هەڵبژاردنی هەموو + Signature is invalid واژووەکە نادروستە + Signature is valid واژووەکە دروستە + Signature validity is unknown دروستیی واژووەکە نەناسراوە + Signing time is from the clock on the signer's computer. کاتی واژووکردن لە کاتژمێری کۆمپیوتەری واژووکەرەوەیە. + Still rendering — this page is unusually complex… هێشتا لە وێنەکێشاندایە — ئەم پەڕەیە بە شێوەیەکی نائاسایی ئاڵۆزە… + Success سەرکەوتن + System سیستەم + The ECDSA signature is not in canonical DER (trailing bytes, padding or a missing sign byte); it was read anyway. واژووی ECDSA بە شێوەی DER ـی ستاندارد نییە (بایتی زیادە، پڕکردنەوە یان بایتی نیشانەی ونبوو)؛ بە هەر حاڵ خوێندرایەوە. + The ECDSA signature is the raw r and s values instead of a DER sequence; it was read anyway. واژووی ECDSA بەها خاوەکانی r و s ـە لە جیاتی زنجیرەی DER؛ بە هەر حاڵ خوێندرایەوە. + The RSA signature value does not have the length of the key's modulus (leading zero bytes dropped or added); it was read anyway. بەهای واژووی RSA درێژی مۆدیۆلی کلیلەکەی نییە (بایتە سفری سەرەتاییەکان لابراون یان زیادکراون)؛ بە هەر حاڵ خوێندرایەوە. + The RSA signature's DigestInfo has no NULL parameter (older signers write it so); it was read anyway. DigestInfo ـی واژووی RSA پارامێتەری NULL ـی نییە (واژووکەرە کۆنەکان بەم شێوەیە دەینووسن)؛ بە هەر حاڵ خوێندرایەوە. + The certificate of {} does not allow this many CA certificates below it (path length), so it is not used to vouch for {}. بڕوانامەی {} ڕێگە بەم ژمارەیە بڕوانامەی CA ـی لەژێر خۆیدا نادات (درێژی ڕێڕەو)، بۆیە بۆ پشتڕاستکردنەوەی {} بەکارناهێنرێت. + The certificate of {} is not a CA certificate that may issue certificates, so it is not used to vouch for {}. بڕوانامەی {} بڕوانامەی CA نییە کە بتوانێت بڕوانامە دەربکات، بۆیە بۆ پشتڕاستکردنەوەی {} بەکارناهێنرێت. + The certificate of {} was not valid at the time of signing, so it is not used to vouch for {}. بڕوانامەی {} لە کاتی واژووکردندا دروست نەبوو، بۆیە بۆ پشتڕاستکردنەوەی {} بەکارناهێنرێت. + The checker found problems which may prevent the document from being fully accessible. پشکنەرەکە کێشەی دۆزییەوە کە ڕەنگە ڕێگری لە دەستڕاگەیشتنی تەواو بە بەڵگەنامەکە بکات. + The document has been altered or corrupted since the signature was applied. بەڵگەنامەکە لە دوای جێبەجێکردنی واژووەکەوە گۆڕاوە یان تێکچووە. + The document has been altered or corrupted since the timestamp was applied. بەڵگەنامەکە لە دوای جێبەجێکردنی مۆری کاتەوە گۆڕاوە یان تێکچووە. + The document has been altered since this signature was applied in ways it does not permit ({}). بەڵگەنامەکە لە دوای جێبەجێکردنی ئەم واژووەوە بە شێوازێک گۆڕاوە کە ڕێگەی پێنادات ({}). + The document has been altered since this timestamp was applied in ways it does not permit ({}). بەڵگەنامەکە لە دوای جێبەجێکردنی ئەم مۆرە کاتییەوە بە شێوازێک گۆڕاوە کە ڕێگەی پێنادات ({}). + The document has been modified since this signature was applied, but the changes are permitted ({}). بەڵگەنامەکە لە دوای جێبەجێکردنی ئەم واژووەوە گۆڕاوە، بەڵام گۆڕانکارییەکان ڕێگەپێدراون ({}). + The document has been modified since this timestamp was applied, but the changes are permitted ({}). بەڵگەنامەکە لە دوای جێبەجێکردنی ئەم مۆرە کاتییەوە گۆڕاوە، بەڵام گۆڕانکارییەکان ڕێگەپێدراون ({}). + The document has no tags (structure tree) بەڵگەنامەکە تاگی نییە (داری پێکهاتە) + The document has no title بەڵگەنامەکە ناونیشانی نییە + The document isn't marked as tagged (MarkInfo Marked) بەڵگەنامەکە وەک تاگکراو نیشانە نەکراوە (MarkInfo Marked) + The document isn't tagged, so none of its content is بەڵگەنامەکە تاگ نەکراوە، بۆیە هیچ بەشێک لە ناوەڕۆکەکەشی تاگ نەکراوە + The document's embedded revocation information shows that the signer's certificate has not been revoked. زانیارییە هەڵوەشاندنەوە تێکەڵکراوەکانی بەڵگەنامەکە نیشانی دەدەن کە بڕوانامەی واژووکەرەکە هەڵنەوەشاوەتەوە. + The embedded timestamp token is valid and its authority is trusted; trusted time is {}. نیشانەی مۆری کاتی تێکەڵکراو دروستە و دەسەڵاتەکەی متمانەپێکراوە؛ کاتی متمانەپێکراو {} ـە. + The font {} isn't embedded فۆنتی {} تێکەڵ نەکراوە + The metadata doesn't identify the file as {} میتاداتا فایلەکە وەک {} ناناسێنێت + The password is incorrect. وشەی نهێنییەکە هەڵەیە. + The password must have at least 6 characters. وشەی نهێنی دەبێت لانیکەم 6 پیتی هەبێت. + The passwords do not match. وشە نهێنییەکان یەک ناگرنەوە. + The security settings don't allow screen readers to read the text ڕێکخستنەکانی ئاسایش ڕێگە بە خوێنەرەوەی شاشە نادەن دەقەکە بخوێننەوە + The signature algorithm and the SignerInfo's digest algorithm name different hashes; the signature was made with the SignerInfo's. ئەلگۆریتمی واژوو و ئەلگۆریتمی هاشی SignerInfo دوو هاشی جیاواز ناودەبەن؛ واژووەکە بە ئەلگۆریتمی SignerInfo دروستکراوە. + The signature carries an unverified timestamp ({}): the timestamp authority is not in your list of trusted certificates, so the signing time claimed by the signer is used instead. واژووەکە مۆری کاتێکی پشتڕاستنەکراوەی هەڵگرتووە ({}): دەسەڵاتی مۆری کات لە پێڕستی بڕوانامە متمانەپێکراوەکانتدا نییە، بۆیە لە جیاتیدا ئەو کاتی واژووکردنە بەکاردێت کە واژووکەرەکە باسی کردووە. + The signature contents are not hexadecimal. ناوەڕۆکی واژووەکە شازدەیی نییە. + The signature could not be checked ({}). پشکنینی واژووەکە نەکرا ({}). + The signature could not be read ({}). خوێندنەوەی واژووەکە نەکرا ({}). + The signature could not be verified ({}). سەلماندنی واژووەکە نەکرا ({}). + The signature has no valid byte range. واژووەکە مەودای بایتی دروستی نییە. + The signature includes an embedded timestamp. واژووەکە مۆری کاتێکی تێکەڵکراوی تێدایە. + The signature is BER-encoded (indefinite lengths) rather than DER; it was read leniently. واژووەکە بە BER کۆدکراوە (درێژییە نادیارەکان) نەک DER؛ بە چاوپۆشییەوە خوێندرایەوە. + The signature uses the legacy adbe.x509.rsa_sha1 format. واژووەکە فۆرماتی کۆنی adbe.x509.rsa_sha1 بەکاردەهێنێت. + The signature value does not match the signer's certificate: the signature is corrupt. بەهای واژووەکە لەگەڵ بڕوانامەی واژووکەرەکە ناگونجێت: واژووەکە تێکچووە. + The signature's byte range does not exclude exactly its contents. مەودای بایتی واژووەکە بە تەواوی ناوەڕۆکەکەی دەرناکات. + The signature's byte range does not match the file. مەودای بایتی واژووەکە لەگەڵ فایلەکە ناگونجێت. + The signature's timestamp token could not be verified ({}). سەلماندنی نیشانەی مۆری کاتی واژووەکە نەکرا ({}). + The signature's timestamp token does not cover the signature value. نیشانەی مۆری کاتی واژووەکە بەهای واژووەکە ناگرێتەوە. + The signed content is a constructed (segmented) OCTET STRING, as BER allows; it was read anyway. ناوەڕۆکی واژووکراو OCTET STRING ـێکی پێکهاتووە (پارچە پارچە)، وەک BER ڕێگەی پێدەدات؛ بە هەر حاڵ خوێندرایەوە. + The signer's certificate does not allow digital signatures (its key usage has neither digital signature nor non-repudiation). بڕوانامەی واژووکەرەکە ڕێگە بە واژووی دیجیتاڵی نادات (بەکارهێنانی کلیلەکەی نە واژووی دیجیتاڵی و نە ڕەتنەکردنەوەی تێدایە). + The signer's certificate has been revoked ({}). بڕوانامەی واژووکەرەکە هەڵوەشێنراوەتەوە ({}). + The signer's certificate has critical extensions PdfCraft does not recognize ({}). بڕوانامەی واژووکەرەکە درێژکراوەی گرنگی هەیە کە PdfCraft نایانناسێتەوە ({}). + The signer's certificate is not in the signature. بڕوانامەی واژووکەرەکە لە واژووەکەدا نییە. + The signer's certificate is not issued for signing documents (its extended key usage has no document-signing purpose). بڕوانامەی واژووکەرەکە بۆ واژووکردنی بەڵگەنامە دەرنەکراوە (بەکارهێنانە درێژکراوەکەی کلیلەکە مەبەستی واژووکردنی بەڵگەنامەی تێدا نییە). + The signer's certificate was not valid at the time of signing. بڕوانامەی واژووکەرەکە لە کاتی واژووکردندا دروست نەبوو. + The signer's identity is unknown because it has not been included in your list of trusted certificates and none of its parent certificates are trusted certificates. ناسنامەی واژووکەرەکە نەناسراوە چونکە لە پێڕستی بڕوانامە متمانەپێکراوەکانتدا نییە و هیچ کام لە بڕوانامە باوانەکانی متمانەپێکراو نین. + The signer's identity is valid. ناسنامەی واژووکەرەکە دروستە. + The timestamp authority's certificate was not valid at the time of timestamping. بڕوانامەی دەسەڵاتی مۆری کات لە کاتی مۆرکردنی کاتدا دروست نەبوو. + The timestamp contents are not hexadecimal. ناوەڕۆکی مۆری کات شازدەیی نییە. + The timestamp has no valid byte range. مۆری کات مەودای بایتی دروستی نییە. + The timestamp token could not be read ({}). خوێندنەوەی نیشانەی مۆری کات نەکرا ({}). + The timestamp token is valid and its authority is trusted. نیشانەی مۆری کات دروستە و دەسەڵاتەکەی متمانەپێکراوە. + The timestamp token is valid, but the timestamp authority is not in your list of trusted certificates. نیشانەی مۆری کات دروستە، بەڵام دەسەڵاتی مۆری کات لە پێڕستی بڕوانامە متمانەپێکراوەکانتدا نییە. + The timestamp's byte range does not exclude exactly its contents. مەودای بایتی مۆری کات بە تەواوی ناوەڕۆکەکەی دەرناکات. + The timestamp's byte range does not match the file. مەودای بایتی مۆری کات لەگەڵ فایلەکە ناگونجێت. + The window shows the file name, not the title (Initial View > Show) پەنجەرەکە ناوی فایل پیشان دەدات، نەک ناونیشانەکە (بینینی سەرەتایی > پیشاندان) + Theme تیم + There is no folder to save the digital ID in. هیچ فۆڵدەرێک نییە بۆ پاشەکەوتکردنی ناسنامەی دیجیتاڵی تێیدا. + This document has not been modified since this signature was applied. ئەم بەڵگەنامەیە لە دوای جێبەجێکردنی ئەم واژووەوە نەگۆڕاوە. + This document has not been modified since this timestamp was applied. ئەم بەڵگەنامەیە لە دوای جێبەجێکردنی ئەم مۆرە کاتییەوە نەگۆڕاوە. + This signature uses RIPEMD-160, a legacy 160-bit hash algorithm that is no longer recommended for signatures. It still validates, but it should not be relied on. ئەم واژووە RIPEMD-160 بەکاردەهێنێت، ئەلگۆریتمێکی هاشی کۆنی 160-بیتی کە چیتر بۆ واژووەکان پێشنیار ناکرێت. هێشتا پشتڕاست دەکرێتەوە، بەڵام نابێت پشتی پێ ببەستریت. + This signature uses SHA-1, a weak hash algorithm: collisions in it have been demonstrated. It still validates because many documents signed years ago use it, but it should not be relied on. ئەم واژووە SHA-1 بەکاردەهێنێت، ئەلگۆریتمێکی هاشی لاواز: بەریەککەوتن تێیدا سەلمێنراوە. هێشتا پشتڕاست دەکرێتەوە چونکە بەڵگەنامەی زۆر کە ساڵانێک پێش ئێستا واژوو کراون بەکاری دەهێنن، بەڵام نابێت پشتی پێ ببەستریت. + Tools ئامرازەکان + Unsigned signature field خانەی واژووی بێ واژوو + Unsigned signature field: {name} خانەی واژووی بێ واژوو: {name} + Warning ئاگادارکردنەوە + Zoom in (⌘+) گەورەکردنەوە (⌘+) + Zoom in / out (also pinch or ⌘-scroll) گەورەکردنەوە / بچووککردنەوە (هەروەها قرتاندن یان ⌘-سکرۆڵ) + Zoom out (⌘−) بچووککردنەوە (⌘−) + alternate text hides an annotation inside it دەقی جێگرەوە تێبینییەکی لەناویدا دەشارێتەوە + alternate text on an element with no page content دەقی جێگرەوە لەسەر توخمێک بەبێ ناوەڕۆکی پەڕە + comments لێدوانەکان + document security store کۆگای ئاسایشی بەڵگەنامە + document structure پێکهاتەی بەڵگەنامە + form fill پڕکردنەوەی فۆڕم + its alternate text is inside another element's and will never be read دەقی جێگرەوەکەی لەناو دەقی توخمێکی ترە و هەرگیز ناخوێنرێتەوە + links بەستەرەکان + metadata میتاداتا + no alternate text بێ دەقی جێگرەوە + no header cells (TH) بێ خانەی سەردێڕ (TH) + no summary بێ کورتە + not in a TR لە TR دا نییە + not in a Table, THead, TBody or TFoot لە Table یان THead یان TBody یان TFoot دا نییە + not in an L (list) لە L (پێڕست) دا نییە + not in an LI (list item) لە LI (توخمی پێڕست) دا نییە + of لە + other changes گۆڕانکارییەکانی تر + page content ناوەڕۆکی پەڕە + page {n} is out of range (1–{count}) پەڕەی {n} لە دەرەوەی سنوورە (1–{count}) + pages added or removed پەڕە زیادکراون یان لابراون + rows have between {min} and {max} columns ڕیزەکان لە نێوان {min} و {max} ستوونیان هەیە + the first heading is an H{n}; headings should not skip levels یەکەم سەردێڕ H{n} ـە؛ سەردێڕەکان نابێت ئاستەکان ببەزنەوە + the signed version could not be read وەشانی واژووکراو نەخوێنرایەوە + {n} pages and no bookmarks {n} پەڕە و بێ دڵخواز + {page} is not a page number or label {page} ژمارەی پەڕە یان نیشانە نییە + {ty} element on page {p}: {what} توخمی {ty} لە پەڕەی {p}: {what} + {ty} element: {what} توخمی {ty}: {what} + {who}, certificate issued by an unknown issuer. {who}، بڕوانامەیەک لەلایەن دەرکەرێکی نەناسراوەوە دەرکراوە. + {who}, certificate issued by {issuer}. {who}، بڕوانامەیەک لەلایەن {issuer} ـەوە دەرکراوە. + {} annotation on page {p} isn't tagged تێبینیی {} لە پەڕەی {p} تاگ نەکراوە + {} annotations aren't allowed تێبینییەکانی {} ڕێگەپێنەدراون + … and {n} more … و {n} ی تر +@plural Delete {n} field|Delete {n} fields سڕینەوەی {n} خانە|سڕینەوەی {n} خانە +@plural {n} byte|{n} bytes {n} بایت|{n} بایت +@plural {n} comment|{n} comments {n} لێدوان|{n} لێدوان +@plural {n} file|{n} files {n} فایل|{n} فایل +@plural {n} image optimized|{n} images optimized {n} وێنە باشترکرا|{n} وێنە باشترکرا +@plural {n} item discarded|{n} items discarded {n} توخم فڕێدرا|{n} توخم فڕێدرا +@plural {n} pixel|{n} pixels {n} پیکسڵ|{n} پیکسڵ +@plural {n} result|{n} results {n} ئەنجام|{n} ئەنجام +calendar weekday Fr هەینی +calendar weekday Mo دووشەممە +calendar weekday Sa شەممە +calendar weekday Su یەکشەممە +calendar weekday Th پێنجشەممە +calendar weekday Tu سێشەممە +calendar weekday We چوارشەممە +certificate Basic constraints سنووردارکردنە بنەڕەتییەکان +certificate Intended usage بەکارهێنانی مەبەستدار +certificate Issued by دەرکراوە لەلایەن +certificate Issued to دەرکراوە بۆ +certificate Issuer دەرکەر +certificate Key usage بەکارهێنانی کلیل +certificate Public key کلیلی گشتی +certificate SHA-1 digest هاشی SHA-1 +certificate SHA-256 digest هاشی SHA-256 +certificate Self-signed خۆواژووکراو +certificate Serial number ژمارەی زنجیرەیی +certificate Valid from دروستە لە +certificate Valid to دروستە تا +certificate Validity ends کۆتایی دروستی +certificate Validity starts دەستپێکی دروستی +certificate Version وەشان + Turn upside down (180°) هەڵگەڕاندنەوە بۆ سەروخوار (180°) + 4 x 6 in label (101.6 x 152.4 mm) نیشانەی 4 x 6 ئینج (101.6 x 152.4 ملم) + Cuts each page to its printed area, turns it upright and fits it to the sheet without stretching. One label per sheet. هەر پەڕەیەک دەبڕێتەوە بۆ ناوچە چاپکراوەکەی، ڕاست دەکرێتەوە و بەبێ کێشانەوە بۆ کاغەزەکە دەگونجێنرێت. یەک نیشانە بۆ هەر کاغەزێک. + Find untagged content دۆزینەوەی ناوەڕۆکی بێ تاگ + No untagged content was found. هیچ ناوەڕۆکێکی بێ تاگ نەدۆزرایەوە. + Found {n} untagged content problems. {n} کێشەی ناوەڕۆکی بێ تاگ دۆزرایەوە. + Tag form fields تاگکردنی خانەکانی فۆڕم + Mark as artifact نیشانەکردن وەک توخمی ڕازاندنەوە + Remove this leaf tag from reading order and mark its direct content as an artifact ئەم تاگە گەڵاییە لە ڕیزبەندی خوێندنەوە لابە و ناوەڕۆکە ڕاستەوخۆکەی وەک توخمی ڕازاندنەوە نیشانە بکە + Mark content as artifact نیشانەکردنی ناوەڕۆک وەک توخمی ڕازاندنەوە + Word count ژمارەی وشەکان + Current page only تەنها پەڕەی ئێستا + Exclude tagged tables دەرکردنی خشتە تاگکراوەکان + Exclude tagged code blocks دەرکردنی بلۆکە کۆدە تاگکراوەکان + Exclude image/OCR text دەرکردنی دەقی وێنە/OCR + Exclusions use PDF tags. Untagged tables and code remain included. Image exclusion also removes invisible text. دەرکردنەکان تاگەکانی PDF بەکاردەهێنن. خشتە و کۆدە بێ تاگەکان بە شمێندراوی دەمێننەوە. دەرکردنی وێنە دەقی نادیاریش لادەبات. + Words وشەکان + Characters پیتەکان + Characters without spaces پیتەکان بەبێ بۆشایی + Pages counted پەڕە ژمێردراوەکان + Some pages contain no countable text. Scanned images need OCR first. هەندێک پەڕە دەقی ژمێردراویان تێدا نییە. وێنە سکانکراوەکان سەرەتا پێویستیان بە OCR هەیە. + Some content could not be classified safely and was kept in the count. هەندێک ناوەڕۆک بە شێوەیەکی سەلامەت پۆلێن نەکرا و لە ژماردنەکەدا هێڵرایەوە. + Counting words… {n} pages read ژماردنی وشەکان… {n} پەڕە خوێندرایەوە + Word counting stopped unexpectedly. ژماردنی وشەکان بە شێوەیەکی چاوەڕواننەکراو وەستا. + Word count… ژمارەی وشەکان… +@id file.word_count ژمارەی وشەکان… + Standard ستاندارد + Mobile مۆبایل + Merge image fragments یەکخستنی پارچەکانی وێنە + Optimizing… merging image fragments باشترکردن… یەکخستنی پارچەکانی وێنە + Side by side تەنیشت یەکتر + New file only تەنها فایلی نوێ + Old file: {name} فایلی کۆن: {name} + New file: {name} فایلی نوێ: {name} + Print as image چاپکردن وەک وێنە + Resolution: ڕوونی: + Use it when a printer skips text, shading or transparency. The print is no longer searchable text; with Print in grayscale, the pictures are grey. کاتێک چاپکەرێک دەق، سێبەر یان ڕوونییەتی فڕێدەدات بەکاری بهێنە. چاپەکە چیتر دەقی گەڕانکراو نییە؛ بە چاپکردن بە خۆڵەمێشی، وێنەکان خۆڵەمێشی دەبن. + Crop Image بڕینەوەی وێنە + Remove Crop لابردنی بڕینەوە + Trim the picture with its handles; Enter or Done applies وێنەکە بە دەسکەکانی ببڕەوە؛ Enter یان تەواو جێبەجێی دەکات + Redaction mark appearance دیمەنی نیشانەی شاردنەوە + Outline colour: ڕەنگی سنوور: + Fill colour: ڕەنگی پڕکردنەوە: + Shown while the pointer is over a mark. لە کاتی بوونی نیشاندەر لەسەر نیشانەیەکدا پیشان دەدرێت. + Opacity: ناڕوونی: + Make properties default کردنی تایبەتمەندییەکان بە بنەڕەتی + Pages selected پەڕە هەڵبژێردراوەکان + Page properties تایبەتمەندییەکانی پەڕە diff --git a/crates/ui-egui/src/i18n/mod.rs b/crates/ui-egui/src/i18n/mod.rs index 20c0fd046..3873a61fb 100644 --- a/crates/ui-egui/src/i18n/mod.rs +++ b/crates/ui-egui/src/i18n/mod.rs @@ -147,7 +147,7 @@ fn plural_sl(n: u64) -> usize { } /// The registry. English first: it is the fallback and the source language. -pub static LANGUAGES: [LangInfo; 23] = [ +pub static LANGUAGES: [LangInfo; 24] = [ LangInfo { code: "en", name: "English", source: "", plural: plural_one_other, rtl: false, catalog: OnceLock::new() }, LangInfo { code: "ja", name: "日本語", source: include_str!("ja.tsv"), plural: plural_none, rtl: false, catalog: OnceLock::new() }, // Simplified Chinese; `zh`, `zh-CN`, `zh-SG` and `zh-Hans-*` locales resolve here (see `candidates`). @@ -198,6 +198,11 @@ pub static LANGUAGES: [LangInfo; 23] = [ // Arabic (Modern Standard, Western digits); every `ar-*` locale (`ar-MA`, `ar-EG`, `ar-SA` ...) // resolves here. Right to left: see `LangInfo::rtl`. LangInfo { code: "ar", name: "العربية", source: include_str!("ar.tsv"), plural: plural_arabic, rtl: true, catalog: OnceLock::new() }, + // Central Kurdish (Sorani); every `ckb-*` locale (`ckb-IQ`, `ckb-IR`) resolves here. Right to + // left like Arabic: see `LangInfo::rtl`. CLDR `ckb` counts have two forms (one, other). + LangInfo { + code: "ckb", name: "کوردیی ناوەندی", source: include_str!("ckb.tsv"), plural: plural_one_other, rtl: true, catalog: OnceLock::new() + }, // Polish; every `pl-*` locale (`pl-pl`, `pl_pl.UTF-8`) resolves here. LangInfo { code: "pl", name: "Polski", source: include_str!("pl.tsv"), plural: plural_polish, rtl: false, catalog: OnceLock::new() }, // Slovene; every `sl-*` locale (`sl-SI`) resolves here. Four plural forms (one, two, few, other). @@ -3283,7 +3288,8 @@ mod tests { let ar = arabic(); assert_eq!(ar.name(), "العربية"); assert!(ar.rtl()); - assert!(Lang::all().filter(|l| l.rtl()).eq([ar]), "Arabic is the only right-to-left language"); + let rtl: Vec<&str> = Lang::all().filter(|l| l.rtl()).map(|l| l.code()).collect(); + assert_eq!(rtl, ["ar", "ckb"], "Arabic and Kurdish are the right-to-left languages"); assert_eq!(normalize_pref("AR"), Some("ar")); for tag in ["ar", "ar-MA", "ar_EG.UTF-8", "AR-sa", "ar_DZ@variant"] { assert_eq!(lang_from_tag(tag), Some(ar), "{tag}"); diff --git a/docs/localization.md b/docs/localization.md index 657e2eb24..61a88dc33 100644 --- a/docs/localization.md +++ b/docs/localization.md @@ -1,6 +1,6 @@ # Interface language -Choose **Menu > Edit > Preferences…** (Command-comma on macOS, Ctrl-comma elsewhere) **> Interface language** and select **Auto**, **English**, **日本語**, **简体中文**, **繁體中文**, **Čeština**, **Português (Brasil)**, **Deutsch**, **Español**, **Français**, **Русский**, **Қазақша**, **Български**, **తెలుగు**, **Magyar**, **Українська**, **Italiano**, **العربية**, **Polski**, **Slovenščina**, **Ελληνικά**, **Türkçe**, **Lietuvių** or **Tiếng Việt**. The change applies immediately and persists between launches. Command ids, document contents and file names are unchanged. +Choose **Menu > Edit > Preferences…** (Command-comma on macOS, Ctrl-comma elsewhere) **> Interface language** and select **Auto**, **English**, **日本語**, **简体中文**, **繁體中文**, **Čeština**, **Português (Brasil)**, **Deutsch**, **Español**, **Français**, **Русский**, **Қазақша**, **Български**, **తెలుగు**, **Magyar**, **Українська**, **Italiano**, **العربية**, **کوردیی ناوەندی**, **Polski**, **Slovenščina**, **Ελληνικά**, **Türkçe**, **Lietuvių** or **Tiếng Việt**. The change applies immediately and persists between launches. Command ids, document contents and file names are unchanged. Displayed keyboard shortcuts use the same active interface language. For example, German shows `Strg+K` and `Strg+Umschalt+S` in the toolbar, menus, command palette, tooltips and Keyboard shortcuts dialog; macOS keeps its modifier symbols (`⌘`, `⇧`, `⌃`). Key names have their own `key` catalog context, so the Delete key can read `Entf` while the command remains `Löschen`. A missing key-name entry falls back to the English key name. Actual bindings and machine-facing command ids remain stable. @@ -12,9 +12,9 @@ The control channel exposes the setting through `ui.set`: {"method":"ui.set","params":{"key":"language","value":"ja"}} ``` -The value is `auto` or a language code (`en`, `ja`, `zh-hans`, `zh-hant`, `cs`, `pt-br`, `de`, `es`, `fr`, `ru`, `kk`, `bg`, `te`, `hu`, `uk`, `it`, `ar`, `pl`, `sl`, `el`, `tr`, `lt` or `vi`), in any case. `ui.state` reports `language` as written in the preferences (`auto`, `en`, `ja`, `zh-hans`, `zh-hant`, `cs`, `pt-br`, `de`, `es`, `fr`, `ru`, `kk`, `bg`, `te`, `hu`, `uk`, `it`, `ar`, `pl`, `sl`, `el`, `tr`, `lt` or `vi`). Unknown values return an error without changing the current setting. Preferences saved before this setting existed follow the system language. +The value is `auto` or a language code (`en`, `ja`, `zh-hans`, `zh-hant`, `cs`, `pt-br`, `de`, `es`, `fr`, `ru`, `kk`, `bg`, `te`, `hu`, `uk`, `it`, `ar`, `ckb`, `pl`, `sl`, `el`, `tr`, `lt` or `vi`), in any case. `ui.state` reports `language` as written in the preferences (`auto`, `en`, `ja`, `zh-hans`, `zh-hant`, `cs`, `pt-br`, `de`, `es`, `fr`, `ru`, `kk`, `bg`, `te`, `hu`, `uk`, `it`, `ar`, `ckb`, `pl`, `sl`, `el`, `tr`, `lt` or `vi`). Unknown values return an error without changing the current setting. Preferences saved before this setting existed follow the system language. -Dialogs, panels, menus, notices and history labels go through the catalog (`tl!`). Most shipped catalogs (Japanese, Chinese, Russian, Bulgarian, German, Spanish, French, Telugu, Hungarian, Ukrainian, Italian, Brazilian Portuguese, Arabic, Slovenian, Kazakh, Polish, Greek, Turkish, Lithuanian, Vietnamese and others) cover the current localizable surface (about 2,000–2,600 entries each); Czech still covers mainly the menus. Untranslated labels use English. Error details that come from the engine or the operating system are shown as they are, inside a translated frame ("操作「…」に失敗しました: …"). The command palette matches the translated label, the English label and the command id. Vertical Japanese PDF rendering is an existing viewer feature; this change does not add vertical text editing. Document contents, filenames, CLI/MCP/control protocol strings and external help stay outside the catalog. Per-language coverage, script support and what each language still needs are in [localization-parity.md](localization-parity.md). +Dialogs, panels, menus, notices and history labels go through the catalog (`tl!`). Most shipped catalogs (Japanese, Chinese, Russian, Bulgarian, German, Spanish, French, Telugu, Hungarian, Ukrainian, Italian, Brazilian Portuguese, Arabic, Kurdish, Slovenian, Kazakh, Polish, Greek, Turkish, Lithuanian, Vietnamese and others) cover the current localizable surface (about 2,000–2,600 entries each); Czech still covers mainly the menus. Untranslated labels use English. Error details that come from the engine or the operating system are shown as they are, inside a translated frame ("操作「…」に失敗しました: …"). The command palette matches the translated label, the English label and the command id. Vertical Japanese PDF rendering is an existing viewer feature; this change does not add vertical text editing. Document contents, filenames, CLI/MCP/control protocol strings and external help stay outside the catalog. Per-language coverage, script support and what each language still needs are in [localization-parity.md](localization-parity.md). Dialogs, panels, menus, notices and history labels go through the catalog (`tl!`). Japanese, Traditional Chinese, Simplified Chinese, Russian, Bulgarian, German, Spanish, French, Telugu, Hungarian, Ukrainian, Brazilian Portuguese and Arabic translate them (about 2,000–2,140 entries each), and Italian has 2,528 entries; Czech and Turkish cover the menus so far. Untranslated labels use English. Error details that come from the engine or the operating system are shown as they are, inside a translated frame ("操作「…」に失敗しました: …"). The command palette matches the translated label, the English label and the command id. Vertical Japanese PDF rendering is an existing viewer feature; this change does not add vertical text editing. Per-language coverage, script support and what each language still needs are in [localization-parity.md](localization-parity.md). Dialogs, panels, menus, notices and history labels go through the catalog (`tl!`). Japanese, Traditional Chinese, Simplified Chinese, Russian, Bulgarian, German, Spanish, French, Telugu, Hungarian, Ukrainian, Brazilian Portuguese, Arabic and Slovenian translate them (about 2,000–2,190 entries each), and Italian has 2,528 entries; Czech covers the menus so far. Untranslated labels use English. Error details that come from the engine or the operating system are shown as they are, inside a translated frame ("操作「…」に失敗しました: …"). The command palette matches the translated label, the English label and the command id. Vertical Japanese PDF rendering is an existing viewer feature; this change does not add vertical text editing. Per-language coverage, script support and what each language still needs are in [localization-parity.md](localization-parity.md). @@ -49,6 +49,8 @@ What Arabic does not have yet: These need bidirectional support in the text layout itself, not in the catalog. +Central Kurdish (Sorani, `ckb`) takes the same path: its catalog is written in logical order and `rtl: true` puts every entry into display order at load (`bidi::display_rtl`), so it behaves as Arabic does above and has the same four limits. Counts use the two [CLDR ckb forms](https://www.unicode.org/cldr/charts/48/supplemental/language_plural_rules.html#ckb) (`one`, `other`); Sorani keeps the noun singular after a numeral, so the two `@plural` forms usually read the same. Dates use the Kurdish names of the Gregorian months. The `Arab` face (Noto Sans Arabic) covers the Kurdish-only letters (`ێ ڵ ڕ ۆ ە ڤ ژ چ گ پ`). + Arabic glyphs come from the craft-fonts `Arab` face (Noto Sans Arabic, kept in the web build too). A build without craft-fonts shows Arabic as replacement boxes on the web; on desktop it falls back to one installed font (below). The craft-fonts revision pinned for CI and releases (`.github/workflows/`) has the Arabic face. That revision also holds Noto Sans CJK SC, which `crates/fonts/build.rs` never embeds: `AGENTS.md` §1.1 bars it, so Chinese still has no embedded face of its own (desktop builds fall back to an installed Chinese face, above). File names and document titles in Arabic or Hebrew are drawn with a craft-fonts `Arab` face when the build input has one; on desktop, a character no embedded face has is drawn with one font already installed on the machine (`PDFCRAFT_SYSTEM_FONTS=0` turns this off). The tab strip, the recent-files list and Properties show such names in display order; other places (bookmarks, comments, search results) have the glyphs but may order mixed-direction text wrongly. From 4ac70042924ec301590ee450109a2025292532e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fernando=20Are=C3=A1n?= Date: Fri, 16 Oct 2026 12:16:35 +0200 Subject: [PATCH 14/33] M14: Spanish catalog covers the bundled key union es.tsv was missing 143 of the 2,674 (context, English) keys the other bundled catalogs carry, so those strings fell back to English inside an otherwise Spanish interface: every calendar month and weekday, the whole certificate context of the signature inspector, the X.509 key usages, the signature-revision and digital-ID lines, password validation, eight plural messages, the combine-from-folder strings, the rendering and stale-file notices and the tooltips that spell their shortcut out. Spanish now covers the whole union, as lt and vi do: 2,531 -> 2,674 of 2,674, measured as docs/localization-parity.md describes. Counts there and in ROADMAP.md re-measured against the current union; vi is restated at 2,674 for the same reason, still 100%. Translations reuse the vocabulary already in the file (ID digital, Acercar / alejar, Portapapeles, A doble cara, Cortar y apilar) and were written from the English labels, not from another implementation. Co-Authored-By: Claude Opus 5 --- ROADMAP.md | 7 +- crates/ui-egui/src/i18n/es.tsv | 173 +++++++++++++++++++++++++++++++++ docs/localization-parity.md | 17 ++-- 3 files changed, 186 insertions(+), 11 deletions(-) diff --git a/ROADMAP.md b/ROADMAP.md index b1283e775..b0636bb7a 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -132,14 +132,14 @@ What's strong and missing in each: [target-app-parity.md](docs/target-app-parity ## Languages -Twelve key languages (historical % snapshot vs 2,143 keys, except Vietnamese vs the current -union). Detail and script notes: [localization-parity.md](docs/localization-parity.md). +Twelve key languages (historical % snapshot vs 2,143 keys, except Vietnamese and Spanish vs the +current union). Detail and script notes: [localization-parity.md](docs/localization-parity.md). | Language | Code | Strings | Status | |---|---|---|---| | English | `en` | 100% | full | | Simplified Chinese | `zh-hans` | 97.4% | partial (no Hans UI face in releases, #826) | -| Spanish | `es` | 95.5% | partial | +| Spanish | `es` | 100% of current union | partial (dialogs / tooltips; no help) | | Hindi | `hi` | 0% | none | | Arabic | `ar` | 100% | partial (layout not mirrored) | | French | `fr` | 99.3% | partial | @@ -201,6 +201,7 @@ Ranked; detail and the full milestone table in [docs/roadmap.md](docs/roadmap.md - **2026-10-16 (M10, #1201 partial):** Lossless image export applies each component's Decode pair. Indexed values round and clip before palette lookup. Color-key masks keep raw samples. The existing 16-bit precision limit remains. JPEG and mask Decode, ICC transforms, and calibrated colors remain outside this fix. Estimates unchanged. - **2026-10-16 (M3, #2739):** Wrapped revision buttons stay above Binding in Document Properties. A synthetic regression checks control bounds and opens a saved revision at two viewport widths. Estimates unchanged. - **2026-10-19 (M7, tracked text):** Editable paragraphs and object labels distinguish repeated glyph tracking from word gaps in TJ arrays and separately positioned glyphs. Synthetic regressions cover character spacing, horizontal scaling, rotated baselines, larger word gaps, and rows of one-glyph words or cells (inferred tracking is capped at half an em, so `a b c` and digit or Y/N columns keep their spaces). Estimates unchanged. +- **2026-10-20 (M14, Spanish catalog gaps):** `es.tsv` gains the 143 `(context, English)` keys the other catalogs carried and it was missing, so Spanish covers the whole bundled key union like Lithuanian and Vietnamese: calendar months and weekdays, the `certificate` context, X.509 key usages, signature-revision and digital-ID lines, password validation, eight plural messages, the combine-from-folder strings, the rendering and stale-file notices and the shortcut-spelled tooltips. Counts in `localization-parity.md` re-measured against the current union (`vi` restated against it for the same reason). Status stays `partial`: no translated help, and OS details stay outside the catalog. Estimates unchanged. - **2026-10-15 (M2, gap 12):** `cargo xtask text-oracle` scores reading order as well as word F1: the longest common subsequence of the two word sequences over the longer one. F1 is a bag of words and cannot see order at all -- measuring #2431, a change that moves text and nothing else, it called 26 of the 29 files whose output changed identical, where the order score separated 18 improvements from 6 regressions. Reports, does not gate; a disagreement with Poppler, not a verdict. Estimates unchanged. - **2026-10-15 (M2, #2305 follow-up):** WinAnsiEncoding 0xA0 and 0xAD and MacRomanEncoding 0xCA extract as the ordinary space and hyphen Annex D.2 names them, in the vendored hayro tables (patch 30) as well as `crates/fonts`, so search, copy and redaction see characters that were hidden behind U+00A0 and U+00AD. Across the pdf.js corpus the soft hyphens we extract fall 117 to 13 and the non-breaking spaces 30 to 26; the rest come from `/ToUnicode`. An explicit `/Differences` name keeps its glyph list value, as pdftotext does. Estimates unchanged. - **2026-10-15 (M12, XFA, #2574):** A `pageArea` with no `` repeats without limit instead of taking a subform's default of one use, so a later page area with `occur max="1"` is no longer drawn (with a copy of its fields) over every body page. A page area's `occur min` is honoured too: one the body never reached gets the pages it still needs after the body (the once-only closing page of a form, with its button, comes last). Acrobat Pro also puts that page last, and when printing keeps it but leaves it blank (`relevant="-print"` on the page area), which PdfCraft does not do yet; both re-observed on a synthetic fixture, see the 2026-10-19 line. Synthetic regression tests. Estimates unchanged. diff --git a/crates/ui-egui/src/i18n/es.tsv b/crates/ui-egui/src/i18n/es.tsv index 79c668992..be5b06eb2 100644 --- a/crates/ui-egui/src/i18n/es.tsv +++ b/crates/ui-egui/src/i18n/es.tsv @@ -2574,3 +2574,176 @@ animation effects Off Desactivados # Historical snapshot notice bar (View signed version / View revision). You are viewing the signed version of “{from}” (revision {rev}). It is a snapshot: changes here won't affect the original. Estás viendo la versión firmada de «{from}» (revisión {rev}). Es una instantánea: los cambios aquí no afectarán al original. You are viewing revision {rev} of “{from}”. It is a snapshot: changes here won't affect the original. Estás viendo la revisión {rev} de «{from}». Es una instantánea: los cambios aquí no afectarán al original. + +# +# Keys the other catalogs carry that this one was missing, so Spanish covers the bundled key union +# the way Lithuanian and Vietnamese do (`lithuanian_covers_bundled_catalog_keys_including_dynamic_dialog_labels`). +# Same clean-room rule as the header: written from the plain meaning of the English label, reusing +# the vocabulary already in this file (ID digital, marcador, Acercar / alejar, Portapapeles). +# +# The date picker. +calendar date January enero +calendar date February febrero +calendar date March marzo +calendar date April abril +calendar date May mayo +calendar date June junio +calendar date July julio +calendar date August agosto +calendar date September septiembre +calendar date October octubre +calendar date November noviembre +calendar date December diciembre +calendar weekday Mo Lu +calendar weekday Tu Ma +calendar weekday We Mi +calendar weekday Th Ju +calendar weekday Fr Vi +calendar weekday Sa Sá +calendar weekday Su Do +# +# Certificate details, in their own context beside the plain labels. +certificate Issued to Emitido a +certificate Issued by Emitido por +certificate Issuer Emisor +certificate Serial number Número de serie +certificate Version Versión +certificate Public key Clave pública +certificate Key usage Uso de la clave +certificate Intended usage Uso previsto +certificate Basic constraints Restricciones básicas +certificate Self-signed Autofirmado +certificate Valid from Válido desde +certificate Valid to Válido hasta +certificate Validity starts La validez empieza +certificate Validity ends La validez termina +certificate SHA-1 digest Huella SHA-1 +certificate SHA-256 digest Huella SHA-256 +# +# What a certificate's key may be used for (X.509 key usage), as the details list them. + Digital Signature Firma digital + Non-Repudiation No repudio + Key Encipherment Cifrado de claves + Data Encipherment Cifrado de datos + Key Agreement Acuerdo de claves + Certificate Signing Firma de certificados + CRL Signing Firma de CRL + Encipher Only Solo cifrado + Decipher Only Solo descifrado +# +# Signatures, revisions and digital IDs. + {who}, certificate issued by {issuer}. {who}, certificado emitido por {issuer}. + {who}, certificate issued by an unknown issuer. {who}, certificado emitido por un emisor desconocido. + Rev. {rev}: Signed by {name} Rev. {rev}: Firmado por {name} + Rev. {rev}: Signed by an unknown signer Rev. {rev}: Firmado por un firmante desconocido + Rev. {rev}: Certified by {name} Rev. {rev}: Certificado por {name} + Rev. {rev}: Certified by an unknown signer Rev. {rev}: Certificado por un firmante desconocido + Unsigned signature field: {name} Campo de firma sin firmar: {name} + Choose a digital ID. Elige un ID digital. + There is no folder to save the digital ID in. No hay ninguna carpeta donde guardar el ID digital. +# +# Passwords. + The password is incorrect. La contraseña es incorrecta. + The password must have at least 6 characters. La contraseña debe tener al menos 6 caracteres. + The password must have at least 8 characters. La contraseña debe tener al menos 8 caracteres. + The passwords do not match. Las contraseñas no coinciden. + Only the document's owner can change its security (open it with the permissions password) Solo el propietario del documento puede cambiar su seguridad (ábrelo con la contraseña de permisos) +# +# Counts. +@plural {n} byte|{n} bytes {n} byte|{n} bytes +@plural {n} pixel|{n} pixels {n} píxel|{n} píxeles +@plural {n} file|{n} files {n} archivo|{n} archivos +@plural {n} comment|{n} comments {n} comentario|{n} comentarios +@plural {n} result|{n} results {n} resultado|{n} resultados +@plural {n} image optimized|{n} images optimized {n} imagen optimizada|{n} imágenes optimizadas +@plural {n} item discarded|{n} items discarded {n} elemento descartado|{n} elementos descartados +@plural Delete {n} field|Delete {n} fields Eliminar {n} campo|Eliminar {n} campos +# +# Combining PDFs from a folder. + Add the PDFs to combine Añade los PDF que vas a combinar + Drop PDFs or folders here, or choose them. Suelta aquí PDF o carpetas, o elígelos. + Every PDF in the folder Todos los PDF de la carpeta + Every PDF in the folder and the folders inside it Todos los PDF de la carpeta y de las carpetas que contiene + Added the first {n} PDFs in {folder} Se han añadido los primeros {n} PDF de {folder} + No PDFs found in {folder} No se ha encontrado ningún PDF en {folder} +# +# Panels, rendering and notices. + Panel layout could not be restored: {error} No se ha podido restaurar la disposición de los paneles: {error} + Panel move was not applied: {error} No se ha aplicado el movimiento del panel: {error} + Rendering… Renderizando… + Still rendering — this page is unusually complex… Sigue renderizando: esta página es excepcionalmente compleja… + Loading… Cargando… + This file changed on disk. Reload it to see the new version; your unsaved changes will be lost. Este archivo cambió en el disco. Recárgalo para ver la versión nueva; se perderán los cambios sin guardar. + Text recognition isn't installed: its models are missing (run `cargo xtask models`, or set PDFCRAFT_MODELS). El reconocimiento de texto no está instalado: faltan sus modelos (ejecuta `cargo xtask models` o define PDFCRAFT_MODELS). + Cut and stack needs Two-sided: Off. Print single-sided sheets. Cortar y apilar necesita «A doble cara: Desactivado». Imprime hojas a una cara. + Error Error + Warning Advertencia + Information Información + Success Correcto +# +# Asking for something, and choosing it. + Enter a name. Introduce un nombre. + Enter a page number Introduce un número de página + Enter a URL Introduce una URL + Enter the field names Introduce los nombres de los campos + Choose… Elegir… + Choose a file… Elegir un archivo… + Choose a folder… Elegir una carpeta… + Create folder Crear carpeta + Open folder Abrir carpeta + Save file Guardar archivo + Save changes? ¿Guardar los cambios? +# +# Settings and their values. + Theme Tema +theme Appearance Aspecto + System Sistema + English Inglés + Always Siempre + Never Nunca + Automatically Automáticamente + On Activado + Enabled Activado + Disabled Desactivado + Mouse wheel scroll speed Velocidad de desplazamiento de la rueda del ratón + Margins (in) Márgenes (pulg.) +# +# Labels and commands the catalogs name on their own. + Color Color + Font Fuente + Folder Carpeta + Comment Comentario + Comment and review Comentar y revisar + Creator Creador + Producer Productor + Organize Organizar + Import Importar + Move Mover + Duplicate Duplicar + Paste Pegar + Select all Seleccionar todo + Refresh Actualizar + Next Siguiente + Previous Anterior + of de + No results Sin resultados + Search results Resultados de la búsqueda + Copy to clipboard Copiar al portapapeles + Copied to clipboard Copiado al portapapeles + Help… Ayuda… + on page {label} en la página {label} + Page {n} Página {n} + Page {n} of {total} Página {n} de {total} +# +# Tooltips that spell their shortcut out. + Open a PDF (⌘O) Abrir un PDF (⌘O) + Print (⌘P) Imprimir (⌘P) + Document properties (⌘D) Propiedades del documento (⌘D) + New bookmark (⌘B) Nuevo marcador (⌘B) + Next (⌘G) Siguiente (⌘G) + Previous (⇧⌘G) Anterior (⇧⌘G) + Zoom in (⌘+) Acercar (⌘+) + Zoom out (⌘−) Alejar (⌘−) + Zoom in / out (also pinch or ⌘-scroll) Acercar / alejar (también con pellizco o ⌘ + desplazamiento) + Rotate view clockwise (⇧⌘+) Girar la vista a la derecha (⇧⌘+) + Save (M4) Guardar (M4) diff --git a/docs/localization-parity.md b/docs/localization-parity.md index 995293af3..639ce249f 100644 --- a/docs/localization-parity.md +++ b/docs/localization-parity.md @@ -1,7 +1,7 @@ # Localization parity > **Last reviewed:** 2026-10-10 · **Last updated:** 2026-10-13 · **Change:** minor (Vietnamese 100% of current key union; native-speaker community review; twelve-language mean ≈68%) · **Target:** Adobe Acrobat Pro (Acrobat DC, continuous track 26.002.21931, macOS) -> **Last reviewed:** 2026-10-10 · **Last updated:** 2026-10-14 · **Change:** minor (Italian count after completing its catalog) · **Target:** Adobe Acrobat Pro (Acrobat DC, continuous track 26.002.21931, macOS) +> **Last reviewed:** 2026-10-10 · **Last updated:** 2026-10-20 · **Change:** minor (Spanish 100% of the current key union) · **Target:** Adobe Acrobat Pro (Acrobat DC, continuous track 26.002.21931, macOS) Per-language status of PdfCraft's interface against Acrobat Pro's. How translations work and how to add a language: [localization.md](localization.md). Summary in [ROADMAP.md](../ROADMAP.md). @@ -10,10 +10,10 @@ add a language: [localization.md](localization.md). Summary in [ROADMAP.md](../R - **Strings translated** is measured: the catalogs in `crates/ui-egui/src/i18n/.tsv`, counted as distinct `(context, English)` keys with a non-empty translation. The **current** denominator is - the union of keys across all catalogs (**2,590** plain keys as of 2026-10-13, plus language-specific - context rows such as Vietnamese `theme`/`Appearance`). The twelve-language percentage table below + the union of keys across all catalogs (**2,674** keys as of 2026-10-20, counting language-specific + context rows such as `theme`/`Appearance`). The twelve-language percentage table below still quotes the **historical 2,143-key snapshot** from 2026-10-10 for every language except - Vietnamese (re-measured against the current union). English is built in. + Vietnamese and Spanish (re-measured against the current union). English is built in. - **Not counted:** error details from the engine and the operating system, which are shown in English inside a translated frame; there is no translated user documentation or help yet (Acrobat ships localized help). @@ -31,7 +31,7 @@ add a language: [localization.md](localization.md). Summary in [ROADMAP.md](../R |---|---|---|---|---|---|---|---|---| | English | `en` | built in (100%) | all; README and docs | Latin | yes | **full** | yes | 0 | | Simplified Chinese | `zh-hans` | 2,088 (97.4%) | dialogs and tooltips through `tl!`; no help | CJK text and IME work, but **release builds have no Hans face**: many characters show as boxes (#826, #688, #728, #758; Flatpak #689) | no | partial | yes | 6–12 | -| Spanish | `es` | 2,046 (95.5%) | dialogs and tooltips; no help | Latin | no | partial | yes | 2–4 | +| Spanish | `es` | 2,674 (100% of current key union) | dialogs and tooltips; no help | Latin | no | partial | yes | 2–4 | | Hindi | `hi` | 0 | none | Devanagari not tested (egui shapes Telugu conjuncts, so shaping is likely workable); no Devanagari face in craft-fonts | no | none | no | 10–18 | | Arabic | `ar` | 2,143 (100%) | dialogs and tooltips; no help | Letters joined and lines reordered at load, but **layout not mirrored**, wrapped lines break at the wrong end, typed text runs left to right (`localization.md` §Arabic) | no | partial | yes (Middle East edition) | 25–45 | | French | `fr` | 2,128 (99.3%) | dialogs and tooltips; no help | Latin | no | partial | yes | 1–2 | @@ -40,7 +40,7 @@ add a language: [localization.md](localization.md). Summary in [ROADMAP.md](../R | Japanese | `ja` | 2,123 (99.1%) | dialogs and tooltips; no help | BIZ UDPGothic from craft-fonts; IME patched on macOS, Windows, X11, Wayland; vertical text renders but can't be edited | no | partial | yes | 4–8 | | German | `de` | 2,128 (99.3%) | dialogs and tooltips; no help | Latin | community, in progress (#828: terminology, clipping) | partial | yes | 2–4 | | Korean | `ko` | 0 | none | Hangul IME patched (Microsoft and Apple Korean, `vendor/README.md` winit 3, 6, 9, 10); no Hangul UI face in craft-fonts | no | none | yes | 6–10 | -| Vietnamese | `vi` | 2,591 (100% of current union + theme Appearance) | dialogs and tooltips; no help | Latin with stacked diacritics; bundled Inter covers them (fonts test) | community | partial | no | 2–4 | +| Vietnamese | `vi` | 2,674 (100% of current key union) | dialogs and tooltips; no help | Latin with stacked diacritics; bundled Inter covers them (fonts test) | community | partial | no | 2–4 | **Localization dimension ≈ 68%**: the mean over the twelve, counting a catalog's percentage but only 60% for Chinese and Arabic until their script problems are fixed, and 0 for Hindi, Indonesian and @@ -49,8 +49,8 @@ to bring all twelve to `full`, of which ≈ 35–60 h is engineering (Hans face, and the rest catalogs and fixes; native-speaker review needs humans. No language is `full` except English: every catalog leaves engine error details in English, and -none has translated help. Vietnamese's **To `full`** hours are therefore residual help/docs polish -(catalog and script work are already done), not missing UI strings. +none has translated help. The **To `full`** hours of Vietnamese and Spanish are therefore residual +help/docs polish (catalog and script work are already done), not missing UI strings. ## Other shipped languages @@ -82,6 +82,7 @@ Acrobat languages PdfCraft lacks: Danish, Dutch, Finnish, Norwegian, Swedish, He | Date | Change | Summary | |---|---|---| +| 2026-10-20 | minor | Spanish: the 143 keys the other catalogs had and `es.tsv` was missing; `es` now covers the whole 2,674-key union, like `lt` and `vi` | | 2026-10-13 | minor | Vietnamese (`vi`) catalog: 2,591 entries (100% of current key union + `theme`/`Appearance`); twelve-language mean ≈ 68%; native-speaker community review; registered with `plural_none` | | 2026-10-14 | minor | Italian: 2,528 entries after adding the 201 keys the other catalogs had and the code looks up | | 2026-10-12 | minor | Added current counts for Kazakh, Polish, Slovenian, Greek, Turkish and Lithuanian; retained existing language assessments and the original percentage snapshot | From 5fc66c45955652d2e807bc8ef7aa454d47b64ec3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fernando=20Are=C3=A1n=20Mag=C3=A1n?= Date: Tue, 20 Oct 2026 09:15:23 +0200 Subject: [PATCH 15/33] M14: refresh the Spanish catalog's ATTRIBUTION entry and date the parity figures `cargo xtask assets` pins a SHA-256 for every catalog, so editing `es.tsv` left its ATTRIBUTION.toml entry stale and `assets::tests::the_real_manifest_passes` failed on both runners. Re-verified the file's provenance, updated the hash, recorded that the coverage additions are AI-assisted and not separately native-reviewed -- as #2510 did for `lt` and `vi` -- and regenerated ATTRIBUTION.md. Review notes on docs/localization-parity.md: - Lithuanian's `2,585 entries` was measured on 2026-10-13 and read as if `lt` were behind. Re-measured today it covers the whole 2,674-key union, so it is restated like `es` and `vi`. - *How this was measured* now says outright that the union is a moving target: every change that adds a string widens it, a count only compares with others of the same date, and a catalog at 100% falls behind without losing a translation. Earlier revisions quote the union of their own date, not this one. Co-Authored-By: Claude Opus 5 --- ATTRIBUTION.md | 2 +- ATTRIBUTION.toml | 4 ++-- docs/localization-parity.md | 19 ++++++++++++------- 3 files changed, 15 insertions(+), 10 deletions(-) diff --git a/ATTRIBUTION.md b/ATTRIBUTION.md index 5cfee8d55..53481e04c 100644 --- a/ATTRIBUTION.md +++ b/ATTRIBUTION.md @@ -13,7 +13,7 @@ Every asset PdfCraft includes, bundles or uses to build its published material, | `crates/ui-egui/src/i18n/zh-hant.tsv` | Traditional Chinese (Taiwan) interface translation catalog | PdfCraft contributors | MIT OR Apache-2.0 | Contributor-original: clean-room translations of PdfCraft's English UI labels, no proprietary localisation resources | Traditional Chinese UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs | | `crates/ui-egui/src/i18n/cs.tsv` | Czech interface translation catalog | PdfCraft contributors | MIT OR Apache-2.0 | Contributor-original: clean-room translations of PdfCraft's English UI labels, no proprietary localisation resources | Czech UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs | | `crates/ui-egui/src/i18n/pt-br.tsv` | Brazilian Portuguese interface translation catalog | André Cardoso (andrecards), PdfCraft contributors | MIT OR Apache-2.0 | Clean-room translations of PdfCraft's English UI labels, no proprietary localisation resources: the ~1,826-entry gist posted in issue #288 (https://gist.github.com/andrecards/ac388c25fba17312ce83207f8b7b467e), completed and reviewed by PdfCraft contributors | Brazilian Portuguese UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs | -| `crates/ui-egui/src/i18n/es.tsv` | Spanish interface translation catalog | PdfCraft contributors | MIT OR Apache-2.0 | Contributor-original: clean-room translations of PdfCraft's English UI labels, no proprietary localisation resources | Spanish UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs | +| `crates/ui-egui/src/i18n/es.tsv` | Spanish interface translation catalog | PdfCraft contributors | MIT OR Apache-2.0 | Contributor-original: clean-room translations of PdfCraft's English UI labels, no proprietary localisation resources; the 2026-10-20 coverage additions are AI-assisted and not separately native-reviewed | Spanish UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs | | `crates/ui-egui/src/i18n/fr.tsv` | French interface translation catalog | PdfCraft contributors | MIT OR Apache-2.0 | Contributor-original: clean-room translations of PdfCraft's English UI labels, no proprietary localisation resources | French UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs | | `crates/ui-egui/src/i18n/de.tsv` | German interface translation catalog | PdfCraft contributors | MIT OR Apache-2.0 | Contributor-original: clean-room translations of PdfCraft's English UI labels, no proprietary localisation resources | German UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs | | `crates/ui-egui/src/i18n/te.tsv` | Telugu interface translation catalog | PdfCraft contributors | MIT OR Apache-2.0 | Contributor-original: clean-room translations of PdfCraft's English UI labels, no proprietary localisation resources | Telugu UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs | diff --git a/ATTRIBUTION.toml b/ATTRIBUTION.toml index db3dd6124..3f5b86035 100644 --- a/ATTRIBUTION.toml +++ b/ATTRIBUTION.toml @@ -69,12 +69,12 @@ sha256 = "cef0d22341d0722f029c6543fc846fce164331b7ad8f693a6754b7567b9d9e95" path = "crates/ui-egui/src/i18n/es.tsv" title = "Spanish interface translation catalog" author = "PdfCraft contributors" -source = "Contributor-original: clean-room translations of PdfCraft's English UI labels, no proprietary localisation resources" +source = "Contributor-original: clean-room translations of PdfCraft's English UI labels, no proprietary localisation resources; the 2026-10-20 coverage additions are AI-assisted and not separately native-reviewed" licence = "MIT OR Apache-2.0" licence_file = "LICENSE-MIT" kind = "translation" usage = "Spanish UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs" -sha256 = "c0ca7761cbabd8096bc9af54cdf6b88b3ae0cd8210003db8b3356e2706e44fc8" +sha256 = "1942ed569de545ce2a4a2a599279d9e3d5abbf365be4359b654cb8aa92561eae" [[asset]] path = "crates/ui-egui/src/i18n/fr.tsv" diff --git a/docs/localization-parity.md b/docs/localization-parity.md index 639ce249f..448128956 100644 --- a/docs/localization-parity.md +++ b/docs/localization-parity.md @@ -9,11 +9,16 @@ add a language: [localization.md](localization.md). Summary in [ROADMAP.md](../R ## How this was measured - **Strings translated** is measured: the catalogs in `crates/ui-egui/src/i18n/.tsv`, counted - as distinct `(context, English)` keys with a non-empty translation. The **current** denominator is - the union of keys across all catalogs (**2,674** keys as of 2026-10-20, counting language-specific - context rows such as `theme`/`Appearance`). The twelve-language percentage table below - still quotes the **historical 2,143-key snapshot** from 2026-10-10 for every language except - Vietnamese and Spanish (re-measured against the current union). English is built in. + as distinct `(context, English)` keys with a non-empty translation. The denominator is the union of + keys across all catalogs, counting language-specific context rows such as `theme`/`Appearance`. + **That union is a moving target**: every change that adds a string widens it, so a count is only + comparable with others measured on the same date, and a catalog that reached 100% falls behind + without losing a single translation. Every figure here therefore carries its date. The current + union is **2,674** keys as of 2026-10-20, against the **2,143-key snapshot** of 2026-10-10; earlier + revisions quote the union of their own date (see the revision history), not this one. The + twelve-language percentage table below still quotes the 2026-10-10 snapshot for every language + except Spanish, Vietnamese and Lithuanian, which are measured against the current union. English is + built in. - **Not counted:** error details from the engine and the operating system, which are shown in English inside a translated frame; there is no translated user documentation or help yet (Acrobat ships localized help). @@ -69,7 +74,7 @@ help/docs polish (catalog and script work are already done), not missing UI stri | Slovenian | `sl` | 2,324 entries | partial | no | | Greek | `el` | 2,341 entries | partial | no | | Turkish | `tr` | 2,313 entries | partial | yes | -| Lithuanian | `lt` | 2,585 entries | partial; community native-speaker review ([#1401](https://github.com/storytold/pdfcraft/pull/1401)) | no | +| Lithuanian | `lt` | 2,674 (100% of current key union) | partial; community native-speaker review ([#1401](https://github.com/storytold/pdfcraft/pull/1401)) | no | **14 other languages** ship (22 catalogs plus English = **23** interface languages in Preferences). The entry counts without percentages were measured on 2026-10-12–13; they are not percentages of the older 2,143-key snapshot above. Their presence does not imply a detailed linguistic or runtime review. @@ -82,7 +87,7 @@ Acrobat languages PdfCraft lacks: Danish, Dutch, Finnish, Norwegian, Swedish, He | Date | Change | Summary | |---|---|---| -| 2026-10-20 | minor | Spanish: the 143 keys the other catalogs had and `es.tsv` was missing; `es` now covers the whole 2,674-key union, like `lt` and `vi` | +| 2026-10-20 | minor | Spanish: the 143 keys the other catalogs had and `es.tsv` was missing; `es` now covers the whole 2,674-key union, like `lt` and `vi`. Restated Lithuanian against the current union (its 2,585 was measured on 2026-10-13) and said plainly in *How this was measured* that the union moves, so counts only compare within a date | | 2026-10-13 | minor | Vietnamese (`vi`) catalog: 2,591 entries (100% of current key union + `theme`/`Appearance`); twelve-language mean ≈ 68%; native-speaker community review; registered with `plural_none` | | 2026-10-14 | minor | Italian: 2,528 entries after adding the 201 keys the other catalogs had and the code looks up | | 2026-10-12 | minor | Added current counts for Kazakh, Polish, Slovenian, Greek, Turkish and Lithuanian; retained existing language assessments and the original percentage snapshot | From 0a78f31fec3ac0d47d16f8cbc81274877e93d81a Mon Sep 17 00:00:00 2001 From: Janiz-zzz <267742026+Janiz-zzz@users.noreply.github.com> Date: Wed, 14 Oct 2026 19:56:04 +0300 Subject: [PATCH 16/33] Add Finnish interface and date language Adds a Finnish (Suomi, `fi`) catalog with 2,592 entries: every key of the other bundled catalogs, written in sentence case from the English labels. Finnish uses the one/other plural rule with the partitive singular after any number but 1 (1 sivu, 2 sivua, 0 sivua). Finnish is also a date language: calendar headings use the nominative month (Lokakuu 2026) and dates the partitive (14. lokakuuta 2026). Any fi-* locale selects it. Tests cover registration, locale tags, persistence, plurals, calendar wording, commands/tools, scanned UI literals, every bundled catalog key and the Latin UI fonts. The catalog has its ATTRIBUTION.toml entry (ATTRIBUTION.md regenerated with `cargo xtask assets --write`). Clean-room, AI-assisted (Claude Code) translation; not yet proofread line by line by a native speaker. Co-Authored-By: Claude Opus 5.5 --- ATTRIBUTION.md | 3 +- ATTRIBUTION.toml | 11 + ROADMAP.md | 1 + crates/engine/src/dates.rs | 38 +- crates/ui-egui/src/i18n/fi.tsv | 2694 ++++++++++++++++++++++++++++++++ crates/ui-egui/src/i18n/mod.rs | 101 +- crates/ui-egui/tests/fonts.rs | 1 + docs/localization-parity.md | 9 +- docs/localization.md | 6 +- 9 files changed, 2854 insertions(+), 10 deletions(-) create mode 100644 crates/ui-egui/src/i18n/fi.tsv diff --git a/ATTRIBUTION.md b/ATTRIBUTION.md index 5cfee8d55..a9a349645 100644 --- a/ATTRIBUTION.md +++ b/ATTRIBUTION.md @@ -4,7 +4,7 @@ Every asset PdfCraft includes, bundles or uses to build its published material, with its author, source and licence. The policy is in [AGENTS.md](AGENTS.md) §1. The machine-readable list, with SHA-256 hashes, is [ATTRIBUTION.toml](ATTRIBUTION.toml). Licence texts are kept beside the assets and summarised in [NOTICE](NOTICE). -## In this repository (272) +## In this repository (273) | Asset | Title | Author | Licence | Source | Used for | |---|---|---|---|---|---| @@ -28,6 +28,7 @@ Every asset PdfCraft includes, bundles or uses to build its published material, | `crates/ui-egui/src/i18n/ar.tsv` | Arabic interface translation catalog | PdfCraft contributors | MIT OR Apache-2.0 | Contributor-original: clean-room translations of PdfCraft's English UI labels, no proprietary localisation resources | Arabic UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs | | `crates/ui-egui/src/i18n/tr.tsv` | Turkish interface translation catalog | PdfCraft contributors | MIT OR Apache-2.0 | Contributor-original: clean-room translations of PdfCraft's English UI labels, no proprietary localisation resources | Turkish UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs | | `crates/ui-egui/src/i18n/lt.tsv` | Lithuanian interface translation catalog | PdfCraft contributors | MIT OR Apache-2.0 | Contributor-original: clean-room translations of PdfCraft's English UI labels and user-facing messages; original catalog reviewed by a native Lithuanian-speaking contributor; 2026-10-15 coverage additions are AI-assisted and not separately native-reviewed | Lithuanian UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs | +| `crates/ui-egui/src/i18n/fi.tsv` | Finnish interface translation catalog | PdfCraft contributors | MIT OR Apache-2.0 | Contributor-original: AI-assisted (Claude Code) clean-room translations of PdfCraft's English UI labels and user-facing messages; not yet proofread by a native Finnish speaker | Finnish UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs | | `assets/icons/accessibility.svg` | Lucide icon "accessibility" | Lucide Contributors (portions Cole Bemis, Feather) | ISC | https://github.com/lucide-icons/lucide (npm lucide-static 1.49.0, icons/accessibility.svg) | UI icon, embedded via crates/ui-egui/src/icon_data.rs | | `assets/icons/align-left.svg` | Lucide icon "align-left" | Lucide Contributors (portions Cole Bemis, Feather) | ISC | https://github.com/lucide-icons/lucide (npm lucide-static 1.49.0, icons/align-left.svg) | UI icon, embedded via crates/ui-egui/src/icon_data.rs | | `assets/icons/align-center.svg` | Lucide icon "align-center" | Lucide Contributors (portions Cole Bemis, Feather) | ISC | https://github.com/lucide-icons/lucide (npm lucide-static 1.49.0, icons/align-center.svg) | UI icon, embedded via crates/ui-egui/src/icon_data.rs | diff --git a/ATTRIBUTION.toml b/ATTRIBUTION.toml index db3dd6124..5d584adcb 100644 --- a/ATTRIBUTION.toml +++ b/ATTRIBUTION.toml @@ -231,6 +231,17 @@ usage = "Lithuanian UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs" sha256 = "7fa70f68a9fa24d0b1cac05fe3aaabaeaca9750c57416124bd317a4eda806d5a" +[[asset]] +path = "crates/ui-egui/src/i18n/fi.tsv" +title = "Finnish interface translation catalog" +author = "PdfCraft contributors" +source = "Contributor-original: AI-assisted (Claude Code) clean-room translations of PdfCraft's English UI labels and user-facing messages; not yet proofread by a native Finnish speaker" +licence = "MIT OR Apache-2.0" +licence_file = "LICENSE-MIT" +kind = "translation" +usage = "Finnish UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs" +sha256 = "01e5422ceb5fb7dd8bd23d6da93ce5210357589ceec6e4cf1725c56da13d1a98" + [[asset]] path = "assets/icons/accessibility.svg" title = "Lucide icon \"accessibility\"" diff --git a/ROADMAP.md b/ROADMAP.md index b1283e775..3ab8f72c5 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -260,6 +260,7 @@ Ranked; detail and the full milestone table in [docs/roadmap.md](docs/roadmap.md - **2026-10-14 (M3, control-click candidate):** Coordinate clicks retain hover warmup and pair press/release in one input pass so slow frames do not turn a click into a hold. Text multi-click selection accepts the actual press event when egui has already cleared its origin. Regression cases cover slow-frame button activation, disabled controls and coalesced text selection; estimates unchanged. - **2026-10-14 (community, M7, #128 Hebrew in Add text):** Add text and `page_add_text` draw Hebrew with the craft-fonts Hebr face (Noto Sans Hebrew), through the same shaped path as Arabic and Thai: right-to-left display order with numbers and Latin in place, points and cantillation kept on their letter as one Type 3 glyph, ToUnicode and per-line ActualText so extraction, search and the editor get typing order. Builds without the face refuse Hebrew rather than write `?`. Regular style only. Estimates unchanged. - **2026-10-14 (M9, #1787):** Changes after signing are judged by the role an object held when signed for a page's resources too: a rewritten font, XObject, graphics state or resources dictionary is page content however its new version is labelled, so a `/FT` or `/Subtype /Widget` added by the attacker no longer reads as a permitted form fill. A category dictionary that only gained a name is judged as before. +- **2026-10-14 (M14, Finnish localization):** Added Finnish as another interface and date language, with a 2,674-entry catalog covering every key of the other bundled catalogs and two-form plurals (partitive after numbers other than 1). Calendar dates use partitive month names (`14. lokakuuta 2026`). Coverage tests check commands/tools, scanned UI literals and bundled catalog keys. AI-assisted; native proofreading pending. - **2026-10-13 (M3, native-opening candidate):** Chosen tools survive preparation, conversion and password retries; startup intake waits for pending preparation. Regression tests cover completion, cancellation and document identity. Estimates unchanged. - **2026-10-13 (community, M3, #531 touchpad momentum):** On Wayland a two-finger swipe keeps gliding after the fingers lift and slows to a stop, measured from the gesture's last 0.1 s and decaying with a 0.35 s time constant through the #759 1:1 path. Any wheel input, click, key, zoom or edge ends it (fingers resting on the touchpad don't yet: the vendored winit binds no Wayland hold gestures); single-page paging, macOS (which sends its own momentum), the web, and Animation effects Off never glide. Unit tests for the physics and two headless view tests. Estimates unchanged. - **2026-10-13 (M3, native-open admission):** Later prepared replies stay queued while a modal or native picker owns the foreground. Picker completion, cancellation and abandonment wake retained opens. Regressions cover recipient ownership, exactly-once admission, source/history preservation and one-shot repaint requests. Estimates unchanged. diff --git a/crates/engine/src/dates.rs b/crates/engine/src/dates.rs index 8c14a5b1b..12613746b 100644 --- a/crates/engine/src/dates.rs +++ b/crates/engine/src/dates.rs @@ -56,7 +56,7 @@ const AR_DAYS: [&str; 7] = ["الأحد", "الاثنين", "الثلاثاء", /// The languages month and weekday names can be written in (Preferences ▸ Date format ▸ Language): /// the interface languages, in the same order and with the same names. -pub static DATE_LANGUAGES: [DateLanguage; 23] = [ +pub static DATE_LANGUAGES: [DateLanguage; 24] = [ DateLanguage { code: "en", name: "English", @@ -398,6 +398,42 @@ pub static DATE_LANGUAGES: [DateLanguage; 23] = [ days: ["Chủ Nhật", "Thứ Hai", "Thứ Ba", "Thứ Tư", "Thứ Năm", "Thứ Sáu", "Thứ Bảy"], days_short: ["CN", "T2", "T3", "T4", "T5", "T6", "T7"], }, + DateLanguage { + code: "fi", + name: "Suomi", + months: [ + "tammikuu", + "helmikuu", + "maaliskuu", + "huhtikuu", + "toukokuu", + "kesäkuu", + "heinäkuu", + "elokuu", + "syyskuu", + "lokakuu", + "marraskuu", + "joulukuu", + ], + // After a day number the month takes the partitive: `14. lokakuuta 2026`. + months_with_day: Some([ + "tammikuuta", + "helmikuuta", + "maaliskuuta", + "huhtikuuta", + "toukokuuta", + "kesäkuuta", + "heinäkuuta", + "elokuuta", + "syyskuuta", + "lokakuuta", + "marraskuuta", + "joulukuuta", + ]), + months_short: ["tammi", "helmi", "maalis", "huhti", "touko", "kesä", "heinä", "elo", "syys", "loka", "marras", "joulu"], + days: ["sunnuntai", "maanantai", "tiistai", "keskiviikko", "torstai", "perjantai", "lauantai"], + days_short: ["su", "ma", "ti", "ke", "to", "pe", "la"], + }, ]; /// The date language for `code` (any case), or `None` when there's none. diff --git a/crates/ui-egui/src/i18n/fi.tsv b/crates/ui-egui/src/i18n/fi.tsv new file mode 100644 index 000000000..539125cf2 --- /dev/null +++ b/crates/ui-egui/src/i18n/fi.tsv @@ -0,0 +1,2694 @@ +# Finnish (fi) catalog. Columns, separated by a TAB: context source translation +# +# context empty a plain UI string; `source` is the English text in the code +# @id a command id: wins over the English text for that menu item +# @plural `source` is "one|other" (English forms); Finnish has the same two +# forms, with the partitive singular after any number but 1 +# (`1 sivu`, `2 sivua`) +# anything else a disambiguating context passed to `tr_ctx` +# escapes \n \t \ inside a column. `{name}` placeholders must appear in both columns. +# lines starting with # and blank lines are ignored. +# +# Clean-room: every entry was written from the plain meaning of the English label using ordinary +# Finnish computing vocabulary. No proprietary localisation resource, string table or product UI +# (Acrobat's included) was consulted or copied, and no other catalog was used as a source; add +# entries the same way. AI-assisted (Claude Code); not yet proofread line by line. +# Labels use sentence case. Product and technology names (PdfCraft, PDF, OCR, JavaScript ...) +# stay in Latin letters; the trailing "…" of dialog commands is kept. Calendar headings use the +# nominative month (`Lokakuu 2026`); dates use the partitive (`14. lokakuuta 2026`). + Menu Valikko + File Tiedosto + Edit Muokkaa + Pages Sivut + View Näytä + Help Ohje + Preferences Asetukset + Preferences… Asetukset… + Interface language Käyttöliittymän kieli + Interface size Käyttöliittymän koko + Auto ({percent}%) Automaattinen ({percent} %) + Auto follows the system's text size. Pages always render at the display's full resolution. Automaattinen noudattaa järjestelmän tekstikokoa. Sivut piirretään aina näytön täydellä tarkkuudella. + Identity Henkilöllisyys + Name on new comments Nimi uusissa kommenteissa + Open… Avaa… + Open Recent Avaa viimeisimpiä + Pin folder to Home… Kiinnitä kansio aloitussivulle… + Folders Kansiot + Pin a folder… Kiinnitä kansio… + Pin a folder to Home Kiinnitä kansio aloitussivulle + Pin a folder to list its newest PDFs here, such as where your scanner or a synced cloud drive saves them. Kiinnitä kansio, niin sen uusimmat PDF-tiedostot näkyvät tässä, esimerkiksi skannerin tai synkronoidun pilviaseman tallennuskansio. + Unpin Irrota + Unpin {folder} Irrota {folder} + Looking for PDFs… Etsitään PDF-tiedostoja… + This folder isn't available right now. It may have moved, or its drive or cloud sync is offline. Kansio ei ole juuri nyt käytettävissä. Se on ehkä siirretty, tai sen asema tai pilvisynkronointi on offline-tilassa. + No PDFs in this folder yet Kansiossa ei ole vielä PDF-tiedostoja + Show less Näytä vähemmän + Show {n} more Näytä {n} lisää + The newest {n} of {total} PDFs Uusimmat {n}/{total} PDF-tiedostoa + Pinned folders need the desktop app Kiinnitetyt kansiot vaativat työpöytäsovelluksen + Choose a folder on this computer to pin Valitse kiinnitettävä kansio tältä tietokoneelta + {folder} is already pinned to Home {folder} on jo kiinnitetty aloitussivulle + You can pin up to {n} folders. Unpin one first. Voit kiinnittää enintään {n} kansiota. Irrota ensin yksi. + Pinned {folder} to Home {folder} kiinnitetty aloitussivulle + No recent files Ei viimeisimpiä tiedostoja + New blank PDF Uusi tyhjä PDF + Create PDF from file… Luo PDF tiedostosta… + Create PDF from images… Luo PDF kuvista… + Create PDF from clipboard Luo PDF leikepöydältä + Combine files… Yhdistä tiedostot… + Save Tallenna + Save as… Tallenna nimellä… + Close file Sulje tiedosto + Close all Sulje kaikki + Revert Palauta tallennettu + Print… Tulosta… + Document properties… Asiakirjan ominaisuudet… + Undo Kumoa + Redo Tee uudelleen + Find… Etsi… + Advanced search… Tarkennettu haku… + Copy pages Kopioi sivut + Cut pages Leikkaa sivut + Paste pages Liitä sivut + Fit visible Sovita näkyvä alue + Marquee zoom Aluezoomaus + Take a snapshot Ota tilannekuva + Column select Sarakevalinta + Full screen mode Koko näytön tila + Read mode Lukutila + Next tab Seuraava välilehti + Previous tab Edellinen välilehti + Switch light / dark theme Vaihda vaalea / tumma teema + Comments panel Kommenttipaneeli + Form fields panel Lomakekenttäpaneeli + Clear form Tyhjennä lomake + Find tools and commands… Etsi työkaluja ja komentoja… + Zoom Zoomaus + Actual size Todellinen koko + Zoom to page level Sovita sivu + Fit to width Sovita leveyteen + Display theme Näytön teema + Side panels Sivupaneelit + Enable Acrobat JavaScript Ota Acrobat JavaScript käyttöön + OK OK + Join our Discord Liity Discordiimme + Close Sulje + Next / previous match Seuraava / edellinen osuma + Copy selected text Kopioi valittu teksti + Double-click Kaksoisnapsautus + Select a word Valitse sana + Clear selection / close find Tyhjennä valinta / sulje haku + Zoom in / out (also pinch or {key}-scroll) Lähennä / loitonna (myös nipistys tai {key}+vieritys) + Rotate view Kierrä näkymää + First / last page Ensimmäinen / viimeinen sivu + Previous / next page Edellinen / seuraava sivu + Delete selected pages (Organize) Poista valitut sivut (Järjestä) + Select all pages (Organize) Valitse kaikki sivut (Järjestä) + Home Aloitus + Open Avaa + Open a PDF ({key}) Avaa PDF ({key}) + Dark gray theme Tummanharmaa teema + Light theme Vaalea teema + Appearance mode Ulkoasutila + Light Vaalea + Dark Tumma + Active Käytössä + Dark theme Tumma teema + Appearance settings… Ulkoasuasetukset… + All tools Kaikki työkalut + Read Lue + Convert Muunna + E-Sign Sähköinen allekirjoitus + Print ({key}) Tulosta ({key}) + Save ({key}) Tallenna ({key}) + Document properties ({key}) Asiakirjan ominaisuudet ({key}) + Find tools and commands Etsi työkaluja ja komentoja + Fit to height Sovita korkeuteen + Zoom in Lähennä + Zoom out Loitonna + Rotate view clockwise Kierrä näkymää myötäpäivään + Rotate view counterclockwise Kierrä näkymää vastapäivään + Page navigation Sivuilla siirtyminen + Previous view Edellinen näkymä + Next view Seuraava näkymä + Page display Sivun näyttö + Continuous scrolling Jatkuva vieritys + Two-page view Kahden sivun näkymä + Single page Yksi sivu + Show cover page in two-page view Näytä kansilehti kahden sivun näkymässä + Use system setting Käytä järjestelmän asetusta + Light gray Vaaleanharmaa + Dark gray Tummanharmaa + Comments Kommentit + Bookmarks Kirjanmerkit + Fields Kentät + Layers Tasot + Attachments Liitteet + Signatures Allekirjoitukset + Accessibility Checker Saavutettavuuden tarkistus + Search Haku + Compare Vertaa + Page thumbnails Sivujen pikkukuvat + Form fields Lomakekentät + Zoom out ({key}) Loitonna ({key}) + Zoom in ({key}) Lähennä ({key}) + Rotate view clockwise ({key}) Kierrä näkymää myötäpäivään ({key}) + Toggle fit page / fit width Vaihda: sovita sivu / sovita leveyteen + Next page Seuraava sivu + Previous page Edellinen sivu + Current page — type a page number or label (such as iv) and press Enter Nykyinen sivu – kirjoita sivunumero tai -tunniste (kuten iv) ja paina Enter + Welcome to PdfCraft Tervetuloa PdfCraftiin + An open-source PDF workbench — local, private, and scriptable. Avoimen lähdekoodin PDF-työpöytä – paikallinen, yksityinen ja skriptattava. + Join the ArtCraft community Liity ArtCraft-yhteisöön + Get help, share feedback and follow development on Discord. Hae apua, anna palautetta ja seuraa kehitystä Discordissa. + Recommended tools Suositellut työkalut + Use now Käytä nyt + Open file Avaa tiedosto + Recent Viimeisimmät + Files you open in PdfCraft appear here. Drop a PDF anywhere to open it. PdfCraftissa avatut tiedostot näkyvät tässä. Avaa PDF pudottamalla se mihin tahansa. + Privacy Tietosuoja + PdfCraft works offline. No telemetry, no account, and no cloud processing unless you add a provider. PdfCraft toimii ilman verkkoyhteyttä. Ei telemetriaa, ei tiliä eikä pilvikäsittelyä, ellei palveluntarjoajaa lisätä. + Scripts run in a sandbox without file or network access. With JavaScript off, Acrobat's standard format, validate and calculate functions still work. Skriptit suoritetaan eristetyssä ympäristössä ilman tiedosto- tai verkkoyhteyttä. Kun JavaScript on pois käytöstä, Acrobatin vakiomuotoilu-, tarkistus- ja laskentafunktiot toimivat silti. + Back to all tools Takaisin kaikkiin työkaluihin + Close panel Sulje paneeli + View less Näytä vähemmän + View more Näytä enemmän + Available Käytettävissä + Ready Valmis + Search tools and commands… Hae työkaluja ja komentoja… + No matching tools Ei vastaavia työkaluja + Tool Työkalu + Command Komento + Add a sticky note Lisää muistilappu + Add a text box Lisää tekstiruutu + Highlight text Korosta tekstiä + Underline text Alleviivaa tekstiä + Strikethrough text Yliviivaa tekstiä + Squiggly underline text Alleviivaa tekstiä aaltoviivalla + Draw freehand Piirrä vapaalla kädellä + Draw a line Piirrä viiva + Draw an arrow Piirrä nuoli + Draw a rectangle Piirrä suorakulmio + Draw an oval Piirrä soikio + Draw a polygon Piirrä monikulmio + Draw connected lines Piirrä yhdistettyjä viivoja + Draw a cloud Piirrä pilvi + Add a callout Lisää selitelaatikko + Insert text Lisää tekstiä + Replace text Korvaa tekstiä + Attach a file Liitä tiedosto + Erase drawings Pyyhi piirrokset + Flatten comments Litistä kommentit + Import comments… Tuo kommentteja… + Add a stamp Lisää leima + Export all comments to data file… Vie kaikki kommentit datatiedostoon… + Hide all comments Piilota kaikki kommentit + Summarize comments Tee kommenttiyhteenveto + Import form data… Tuo lomaketietoja… + Export form data… Vie lomaketietoja… + PDF/A… PDF/A… + Action Wizard… Toimintoavustaja… + Prepare for distribution… Valmistele jakelua varten… + Optimize scanned documents… Optimoi skannatut asiakirjat… + Compare files… Vertaa tiedostoja… + Detect form fields Tunnista lomakekentät + Merge data files into spreadsheet… Yhdistä datatiedostot laskentataulukkoon… + Flatten form fields Litistä lomakekentät + Prepare a form Valmistele lomake + Tab order: by rows Sarkainjärjestys: riveittäin + Tab order: by columns Sarkainjärjestys: sarakkeittain + Tab order: by document structure Sarkainjärjestys: asiakirjan rakenteen mukaan + Add text Lisää tekstiä + Edit text & images Muokkaa tekstiä ja kuvia + Add or edit links Lisää tai muokkaa linkkejä + Create links from URLs Luo linkit URL-osoitteista + Remove all links Poista kaikki linkit + No links to remove Ei poistettavia linkkejä + Removed 1 link Poistettiin 1 linkki + Removed {n} links Poistettiin {n} linkkiä + Add Bates numbering… Lisää Bates-numerointi… + Add image… Lisää kuva… + Redact text and images Peitä tekstiä ja kuvia + Redact pages… Peitä sivuja… + Find text and redact… Etsi ja peitä tekstiä… + Redaction properties… Peiton ominaisuudet… + Apply redactions… Toteuta peitot… + Clear redaction marks Poista peittomerkinnät + Remove hidden information… Poista piilotetut tiedot… + Sanitize document… Puhdista asiakirja… + Field properties… Kentän ominaisuudet… + Add a text field Lisää tekstikenttä + Add a checkbox Lisää valintaruutu + Add a radio button Lisää valintanappi + Add a drop-down list Lisää avattava luettelo + Add a list box Lisää luetteloruutu + Add a button Lisää painike + Add an image field Lisää kuvakenttä + Add a date field Lisää päivämääräkenttä + Add a digital signature field Lisää digitaalisen allekirjoituksen kenttä + Digitally sign Allekirjoita digitaalisesti + Certify (visible signature) Varmenna (näkyvä allekirjoitus) + Certify (invisible signature) Varmenna (näkymätön allekirjoitus) + Validate all signatures Tarkista kaikki allekirjoitukset + Signatures panel Allekirjoituspaneeli + Fill & Sign: add text Täytä ja allekirjoita: lisää tekstiä + Fill & Sign: checkmark Täytä ja allekirjoita: valintamerkki + Fill & Sign: cross Täytä ja allekirjoita: risti + Fill & Sign: dot Täytä ja allekirjoita: piste + Fill & Sign: line Täytä ja allekirjoita: viiva + Fill & Sign: date Täytä ja allekirjoita: päivämäärä + Fill & Sign: sign Täytä ja allekirjoita: allekirjoita + Fill & Sign: initials Täytä ja allekirjoita: nimikirjaimet + Export to image… Vie kuvaksi… + Reduce file size… Pienennä tiedostokokoa… + Optimize PDF… Optimoi PDF… + Export to text… Vie tekstiksi… + Export to Word… Vie Wordiin… + Export to PowerPoint… Vie PowerPointiin… + Export to HTML… Vie HTML-muotoon… + Export to RTF… Vie RTF-muotoon… + JavaScript console… JavaScript-konsoli… + Document JavaScripts… Asiakirjan JavaScriptit… + Recognize text… Tunnista teksti… + Recognize text in multiple files… Tunnista teksti useista tiedostoista… + Check for accessibility… Tarkista saavutettavuus… + Open accessibility report Avaa saavutettavuusraportti + Change reading options… Muuta lukuasetuksia… + Add alternate text… Lisää vaihtoehtoinen teksti… + Export all images… Vie kaikki kuvat… + Add header & footer… Lisää ylä- ja alatunniste… + Update header & footer… Päivitä ylä- ja alatunniste… + Remove header & footer Poista ylä- ja alatunniste + Add watermark… Lisää vesileima… + Update watermark… Päivitä vesileima… + Remove watermark Poista vesileima + Add background… Lisää tausta… + Update background… Päivitä tausta… + Remove background Poista tausta + Protect using password… Suojaa salasanalla… + Remove security Poista suojaus + Security properties… Suojausominaisuudet… + Organize pages Järjestä sivut + New bookmark Uusi kirjanmerkki + New bookmarks from structure Uudet kirjanmerkit rakenteesta + Rotate pages clockwise Kierrä sivuja myötäpäivään + Rotate pages counterclockwise Kierrä sivuja vastapäivään + Delete pages Poista sivut + Insert blank page Lisää tyhjä sivu + Rotate pages… Kierrä sivuja… + Duplicate pages Monista sivut + Crop pages Rajaa sivut + Set page boxes… Määritä sivualueet… + Insert pages from file… Lisää sivuja tiedostosta… + Replace pages… Korvaa sivuja… + Extract pages… Poimi sivut… + Split document… Jaa asiakirja… + Number pages… Numeroi sivut… + Keyboard shortcuts Pikanäppäimet + Join the ArtCraft Discord Liity ArtCraftin Discordiin + PdfCraft web page PdfCraftin verkkosivu + PdfCraft on GitHub PdfCraft GitHubissa + ArtCraft website ArtCraftin verkkosivusto + Check for updates… Tarkista päivitykset… + About PdfCraft Tietoja PdfCraftista + Export a PDF Vie PDF + Export to Vie muotoon + Microsoft Word (.docx) Microsoft Word (.docx) + Spreadsheet (.xlsx) Laskentataulukko (.xlsx) + Presentation (.pptx) Esitys (.pptx) + Image (PNG) Kuva (PNG) + Export all images Vie kaikki kuvat + HTML web page HTML-verkkosivu + Rich Text Format (.rtf) Rich Text Format (.rtf) + Text (plain) Teksti (pelkkä) + PostScript / EPS PostScript / EPS + Fill & Sign Täytä ja allekirjoita + Fill Täytä + Checkmark Valintamerkki + Cross Risti + Dot Piste + Line Viiva + Date Päivämäärä + Signature Allekirjoitus + Initials Nimikirjaimet + Edit a PDF Muokkaa PDF:ää + Modify page Muokkaa sivua + Rotate pages Kierrä sivuja + Insert pages Lisää sivuja + Extract pages Poimi sivut + Add content Lisää sisältöä + Text Teksti + Image Kuva + Header and footer Ylä- ja alatunniste + Watermark Vesileima + Link Linkki + Bates numbering Bates-numerointi + Background Tausta + Attach file Liitä tiedosto + Create a PDF Luo PDF + Create from Luo lähteestä + Single file Yksi tiedosto + Multiple files Useita tiedostoja + Separate PDFs Erilliset PDF-tiedostot + Images Kuvat + Clipboard Leikepöytä + Blank page Tyhjä sivu + Combine files Yhdistä tiedostot + Combine Yhdistä + Add files to combine Lisää yhdistettävät tiedostot + Page options Sivuasetukset + Page grid Sivuruudukko + Rotate Kierrä + Delete Poista + Extract Poimi + Insert Lisää + Replace Korvaa + Split Jaa + More Lisää + Set page boxes Määritä sivualueet + Page labels Sivutunnisteet + Page transitions Sivusiirtymät + Add comments Lisää kommentteja + Markup Merkinnät + Sticky note Muistilappu + Underline Alleviivaus + Strikethrough Yliviivaus + Squiggly underline Aaltoviiva-alleviivaus + Text box Tekstiruutu + Drawing Piirros + Rectangle Suorakulmio + Oval Soikio + Arrow Nuoli + Cloud Pilvi + Stamp Leima + Review Tarkastus + Comment list Kommenttiluettelo + Scan & OCR Skannaus ja OCR + Recognize text Tunnista teksti + In this file Tässä tiedostossa + In multiple files Useissa tiedostoissa + Enhance scanned file Paranna skannattua tiedostoa + Correct recognized text Korjaa tunnistettu teksti + Protect a PDF Suojaa PDF + Protect Suojaa + Protect with password Suojaa salasanalla + Remove hidden information Poista piilotetut tiedot + Advanced options Lisäasetukset + Encrypt with certificate Salaa varmenteella + Security properties Suojausominaisuudet + Redact a PDF Peitä PDF:n sisältöä + Redact Peitä + Redact pages Peitä sivuja + Find text and redact Etsi ja peitä tekstiä + Set properties Määritä ominaisuudet + Sanitize document Puhdista asiakirja + Compress a PDF Pakkaa PDF + Optimize Optimoi + Reduce file size Pienennä tiedostokokoa + Advanced optimization Tarkennettu optimointi + Audit space usage Tarkastele tilankäyttöä + Field list Kenttäluettelo + Field properties Kentän ominaisuudet + Tab order by rows Sarkainjärjestys riveittäin + Tab order by columns Sarkainjärjestys sarakkeittain + Import data Tuo tietoja + Export data Vie tietoja + Add form components Lisää lomakkeen osia + Text field Tekstikenttä + Checkbox Valintaruutu + Radio button Valintanappi + Drop-down list Avattava luettelo + List box Luetteloruutu + Button Painike + Image field Kuvakenttä + Date field Päivämääräkenttä + Digital signature Digitaalinen allekirjoitus + Stamps Leimat + Stamp palette Leimapaletti + Use a certificate Käytä varmennetta + Certificates Varmenteet + Timestamp Aikaleima + Use print production Käytä painotuotantoa + Print production Painotuotanto + Output preview Tulosteen esikatselu + Preflight Esitarkastus + Convert colors Muunna värit + Add printer marks Lisää painomerkit + Fix hairlines Korjaa hiusviivat + Measure objects Mittaa objekteja + Measure Mittaa + Measuring tool Mittaustyökalu + Geospatial location Paikkatieto + Compare files Vertaa tiedostoja + Select files to compare Valitse verrattavat tiedostot + Use guided actions Käytä ohjattuja toimintoja + Actions list Toimintoluettelo + Action Wizard Toimintoavustaja + Make accessible Tee saavutettavaksi + Prepare for distribution Valmistele jakelua varten + Optimize scanned documents Optimoi skannatut asiakirjat + Archive documents Arkistoi asiakirjat + Prepare for accessibility Valmistele saavutettavuutta varten + Accessibility Saavutettavuus + Automatically tag PDF Tagaa PDF automaattisesti + Change reading options Muuta lukuasetuksia + Check for accessibility Tarkista saavutettavuus + Add alternate text Lisää vaihtoehtoinen teksti + Fix reading order Korjaa lukujärjestys + Apply PDF standards Käytä PDF-standardeja + Standards Standardit + Save as PDF/A Tallenna PDF/A-muodossa + Save as PDF/X Tallenna PDF/X-muodossa + Save as PDF/UA Tallenna PDF/UA-muodossa + Add search index Lisää hakuhakemisto + Index Hakemisto + Manage embedded index Hallitse upotettua hakemistoa + Use JavaScript Käytä JavaScriptiä + JavaScript JavaScript + Console Konsoli + Document JavaScripts Asiakirjan JavaScriptit + Document actions Asiakirjan toiminnot + AI assistant Tekoälyavustaja + Bring your own model (off by default) Käytä omaa mallia (oletuksena pois) + Summarize Tee yhteenveto + Ask about this document Kysy tästä asiakirjasta + Translate Käännä + pages sivua + Planned Suunniteltu + Planned for milestone Suunniteltu välitavoitteeseen + open to see what it will include avaa nähdäksesi, mitä se sisältää + Optional: needs an AI provider you configure Valinnainen: vaatii määrittämäsi tekoälypalvelun + Coming in milestone Tulossa välitavoitteessa + Items marked Ready work today. Valmis-merkityt kohteet toimivat jo nyt. + Preview Esikatselu + Edit fields Muokkaa kenttiä + Try the form as people filling it in will see it Kokeile lomaketta niin kuin täyttäjät sen näkevät + Redact all Peitä kaikki + Clear all Tyhjennä kaikki + Rotate page Kierrä sivua + Delete page Poista sivu + Move page Siirrä sivu + Move pages Siirrä sivut + Duplicate page Monista sivu + Replace page Korvaa sivu + Replace pages Korvaa sivut + Crop page Rajaa sivu + Cancel Peruuta + Don't save Älä tallenna + Apply Käytä + Run Suorita + Clear Tyhjennä + Sanitize Puhdista + Mark all Merkitse kaikki + Save changes to “{name}” before closing? Tallennetaanko muutokset tiedostoon ”{name}” ennen sulkemista? + Your changes will be lost if you don't save them. Muutokset menetetään, jos niitä ei tallenneta. + Password required Salasana vaaditaan + “{name}” is protected. Enter a password to open it. ”{name}” on suojattu. Avaa se antamalla salasana. + Password Salasana + Incorrect password. Try again. Väärä salasana. Yritä uudelleen. + Recognize Text Tunnista teksti + Password protection will be applied when you save Salasanasuojaus otetaan käyttöön tallennettaessa + Saved the print-ready PDF to {path} Painovalmis PDF tallennettiin kohteeseen {path} + Could not save: {e} Tallennus epäonnistui: {e} + Earlier in tab order Aiemmaksi sarkainjärjestyksessä + Later in tab order Myöhemmäksi sarkainjärjestyksessä + From: Mistä: + To: Mihin: + High Resolution Korkea tarkkuus + Print Tulosta + Verify to see what the document needs. Tarkista, mitä asiakirja tarvitsee. + Set Page Boxes Määritä sivualueet + Signature panel Allekirjoituspaneeli + {month} {day}, {y} {day}. {month} {y} + The document's security settings don't allow filling in form fields Asiakirjan suojausasetukset eivät salli lomakekenttien täyttämistä + {name} is read-only {name} on vain luku -tilassa + {name} has no action Kohteella {name} ei ole toimintoa + Previous month Edellinen kuukausi + Next month Seuraava kuukausi + January Tammikuu + February Helmikuu + March Maaliskuu + April Huhtikuu + May Toukokuu + June Kesäkuu + July Heinäkuu + August Elokuu + September Syyskuu + October Lokakuu + November Marraskuu + December Joulukuu + Done Valmis + This certificate is in your list of trusted certificates. Tämä varmenne on luotettujen varmenteiden luettelossa. + This certificate is trusted through a certificate above it in the chain. Tähän varmenteeseen luotetaan ketjussa ylempänä olevan varmenteen kautta. + This certificate is not trusted. Signatures made with it show an unknown identity. Tähän varmenteeseen ei luoteta. Sillä tehdyt allekirjoitukset näyttävät tuntemattoman henkilöllisyyden. + Add to Trusted Certificates Lisää luotettuihin varmenteisiin + Export… Vie… + PDF Optimizer PDF-optimointi + Discard Objects Hylkää objektit + Discard User Data Hylkää käyttäjätiedot + Clean Up Siivoa + Color Images Värikuvat + Grayscale Images Harmaasävykuvat + Bicubic downsampling to Bikuubinen alinäytteistys tarkkuuteen + for images above kuville, joiden tarkkuus yli + Compression Pakkaus + ZIP ZIP + Retain existing Säilytä nykyinen + Minimum Pienin + Low Matala + High Korkea + Maximum Suurin + Each image is measured where pages draw it; an image is replaced only if the result is smaller. Kukin kuva mitataan siinä koossa, jossa sivut sen piirtävät; kuva korvataan vain, jos tulos on pienempi. + Discard all links, actions and JavaScript Hylkää kaikki linkit, toiminnot ja JavaScript + Discard alternate images Hylkää vaihtoehtoiset kuvat + Discard embedded page thumbnails Hylkää upotetut sivujen pikkukuvat + Discard document tags Hylkää asiakirjan tagit + Discard embedded print settings Hylkää upotetut tulostusasetukset + Discard bookmarks Hylkää kirjanmerkit + Discard hidden layer content Hylkää piilotettujen tasojen sisältö + Discard all comments, forms and multimedia Hylkää kaikki kommentit, lomakkeet ja multimedia + Discard document information and metadata Hylkää asiakirjan tiedot ja metatiedot + Discard all object data (file attachments) Hylkää kaikki objektitiedot (liitetiedostot) + Discard private data of other applications Hylkää muiden sovellusten yksityiset tiedot + Discard hidden text Hylkää piilotettu teksti + Use Flate to encode streams that are not encoded Koodaa koodaamattomat virrat Flate-menetelmällä + Remove invalid links and bookmarks Poista virheelliset linkit ja kirjanmerkit + Remove unreferenced named destinations Poista viittaamattomat nimetyt kohteet + Compress document structure (object streams) Pakkaa asiakirjan rakenne (objektivirrat) + Remove unused objects and merge identical ones Poista käyttämättömät objektit ja yhdistä identtiset + Audit space usage… Tarkastele tilankäyttöä… + Space Audit Tilankäytön tarkastus + Bytes Tavua + Content Streams Sisältövirrat + X Object Forms XObject-lomakkeet + Structure Info Rakennetiedot + Thumbnails Pikkukuvat + Named Destinations Nimetyt kohteet + Color Spaces Väriavaruudet + Shadings Varjostukset + Patterns (graphics objects) Kuviot (grafiikkaobjektit) + Extended Graphics States Laajennetut grafiikkatilat + Embedded Files Upotetut tiedostot + Document Overhead Asiakirjan yleiskulut + Total Yhteensä + Text Field Properties Tekstikentän ominaisuudet + Check Box Properties Valintaruudun ominaisuudet + Radio Button Properties Valintanapin ominaisuudet + Dropdown Properties Avattavan luettelon ominaisuudet + List Box Properties Luetteloruudun ominaisuudet + Button Properties Painikkeen ominaisuudet + Digital Signature Properties Digitaalisen allekirjoituksen ominaisuudet + Position Sijainti + Options Asetukset + Validate Tarkistus + Calculate Laskenta + Actions Toiminnot + This field is locked. Unlock it to change its properties. Kenttä on lukittu. Avaa lukitus muuttaaksesi sen ominaisuuksia. + Tooltip: Työkaluvihje: + Common Properties Yleiset ominaisuudet + Read Only Vain luku + Required Pakollinen + Font Size: Fonttikoko: + Auto Automaattinen + Text Color: Tekstin väri: + Borders and Colors Reunat ja värit + Border Color: Reunan väri: + Fill Color: Täyttöväri: + No color Ei väriä + Beveled Viistetty + Left: Vasen: + Bottom: Ala: + Width: Leveys: + Height: Korkeus: + Points from the page's bottom-left corner. Pisteinä sivun vasemmasta alakulmasta. + Alignment: Tasaus: + Default Value: Oletusarvo: + Multi-line Monirivinen + Scroll long text Vieritä pitkää tekstiä + Allow Rich Text Formatting Salli RTF-muotoilu + Limit of Enintään + characters merkkiä + Field is used for file selection Kenttää käytetään tiedoston valintaan + Check spelling Tarkista oikeinkirjoitus + Comb of Merkkiruutuja + Export Value: {on} Vientiarvo: {on} + Check box is checked by default Valintaruutu on oletuksena valittuna + Button is checked by default Painike on oletuksena valittuna + Buttons with the same name and value are selected in unison Samannimiset ja -arvoiset painikkeet valitaan yhtä aikaa + Item: Kohde: + Item List Kohdeluettelo + Up Ylös + Delete {o} Poista {o} + Add the choices people pick from. Lisää vaihtoehdot, joista valitaan. + Default: Oletus: + (none) (ei mitään) + Sort items Lajittele kohteet + Allow user to enter custom text Salli käyttäjän kirjoittaa oma teksti + Multiple selection Monivalinta + Commit selected value immediately Vahvista valittu arvo heti + Number Numero + Percentage Prosentti + Time Aika + Special Erikoismuoto + Select format category: Valitse muotoluokka: + The value is shown as typed. Arvo näytetään kirjoitetussa muodossa. + Decimal places: Desimaalit: + Separator style: Erottimen tyyli: + Currency symbol: Valuuttasymboli: + Before the number Ennen lukua + Negative number style: Negatiivisen luvun tyyli: + Format: Muoto: + Custom: Mukautettu: + Zip Code Postinumero + Zip Code + 4 Postinumero + 4 + Phone Number Puhelinnumero + Social Security Number Sosiaaliturvatunnus + Arbitrary Mask Vapaa maski + Mask: Maski: + 9 digit, A letter, O letter or digit, X any character 9 numero, A kirjain, O kirjain tai numero, X mikä tahansa merkki + Example: {sample} Esimerkki: {sample} + Field value is not validated Kentän arvoa ei tarkisteta + Field value is in range: Kentän arvo on välillä: + Add an Action Lisää toiminto + Select Trigger: Valitse laukaisin: + Mouse Up Hiiren painike vapautetaan + Mouse Down Hiiren painike painetaan + Mouse Enter Hiiri siirtyy alueelle + Mouse Exit Hiiri poistuu alueelta + On Focus Kohdistettaessa + On Blur Kohdistuksen poistuessa + Select Action: Valitse toiminto: + Open a web link Avaa verkkolinkki + Reset a form Nollaa lomake + Execute a menu item Suorita valikon kohde + Show a field Näytä kenttä + Hide a field Piilota kenttä + Submit a form Lähetä lomake + Fields to reset (comma-separated; empty: all) Nollattavat kentät (pilkuin eroteltuina; tyhjä: kaikki) + Print, NextPage, PrevPage, FirstPage or LastPage Print, NextPage, PrevPage, FirstPage tai LastPage + Field names (comma-separated) Kenttien nimet (pilkuin eroteltuina) + URL to submit to Lähetyksen URL-osoite + Script: Skripti: + Value: Arvo: + No actions Ei toimintoja + Value is not calculated Arvoa ei lasketa + Value is the Arvo on + sum (+) summa (+) + product (x) tulo (x) + average keskiarvo + minimum minimi + maximum maksimi + of the following fields: seuraavista kentistä: + Simplified field notation: Yksinkertaistettu kenttämerkintä: + Field names with + - * / and parentheses; put \\ before spaces in names. Kenttien nimet sekä + - * / ja sulkeet; lisää \\ nimissä olevien välilyöntien eteen. + Finding document fonts… Etsitään asiakirjan fontteja… + Installed fonts… Asennetut fontit… + Keep source fonts Säilytä lähteen fontit + Load font… Lataa fontti… + No openly licensed document fonts found. Load a font file. Avoimesti lisensoituja asiakirjan fontteja ei löytynyt. Lataa fonttitiedosto. + Format text Muotoile teksti + Bold Lihavointi + Italic Kursivointi + Align left Tasaa vasemmalle + Centre Keskitä + Align right Tasaa oikealle + Justify Tasaa molemmat reunat + Thai and Arabic use regular fallback fonts when available. Thai ja arabia käyttävät tavallisia varafontteja, kun niitä on saatavilla. + Edit image Muokkaa kuvaa + Rotate counterclockwise Kierrä vastapäivään + Rotate clockwise Kierrä myötäpäivään + Flip horizontal Käännä vaakasuunnassa + Flip vertical Käännä pystysuunnassa + Replace image Korvaa kuva + Crop (% trimmed from each side) Rajaa (% leikataan kultakin reunalta) + Click on the page to add text; each click starts a new box, and ✓ finishes. Drag items to move them, drag a corner to resize, double-click text to edit it. Lisää tekstiä napsauttamalla sivua; jokainen napsautus aloittaa uuden ruudun, ja ✓ lopettaa. Siirrä kohteita vetämällä, muuta kokoa vetämällä kulmasta ja muokkaa tekstiä kaksoisnapsauttamalla. + Choose an image Valitse kuva + Export to Image Vie kuvaksi + Export to Text Vie tekstiksi + Export All Images Vie kaikki kuvat + Resolution Tarkkuus + Format Muoto + Quality Laatu + One {f} file per page, named after the document. Yksi {f}-tiedosto sivua kohden, nimettynä asiakirjan mukaan. + Exclude images smaller than Ohita kuvat, jotka ovat pienempiä kuin + No limit Ei rajaa + Each image once, named after the document and page. JPEG images are saved unchanged; others as PNG. Kukin kuva kerran, nimettynä asiakirjan ja sivun mukaan. JPEG-kuvat tallennetaan muuttamattomina, muut PNG-muodossa. + Plain text in reading order; pages are separated by form feeds. Pelkkä teksti lukujärjestyksessä; sivut erotetaan sivunvaihtomerkeillä. + Create {what} Luo {what} + initials nimikirjaimet + signature allekirjoitus + Create Custom Stamp Luo mukautettu leima + From {file} Lähteestä {file} + Category: Luokka: + e.g. My stamps esim. Omat leimat + Name: Nimi: + Custom Mukautettu + Delete stamp Poista leima + Create custom stamp… Luo mukautettu leima… + From a PDF page or an image PDF-sivusta tai kuvasta + Line spacing Riviväli + Character spacing Merkkiväli + Horizontal scale Vaakaskaalaus + Rotate Clockwise Kierrä myötäpäivään + Rotate Counterclockwise Kierrä vastapäivään + Flip Horizontal Käännä vaakasuunnassa + Flip Vertical Käännä pystysuunnassa + Replace Image… Korvaa kuva… + Save Image As… Tallenna kuva nimellä… + Copy Image Kopioi kuva + The image has been copied ({w} × {h} pixels) Kuva on kopioitu ({w} × {h} pikseliä) + Couldn't copy the image: {e} Kuvan kopiointi epäonnistui: {e} + Copy Image in Original Format Kopioi kuva alkuperäisessä muodossa + The image has been copied as a {ext} file Kuva on kopioitu {ext}-tiedostona + The page has changed; select the image again Sivu on muuttunut; valitse kuva uudelleen + Check for updates Tarkista päivitykset + No check has run yet. Tarkistusta ei ole vielä tehty. + Checking for a newer version… Tarkistetaan uudempaa versiota… + PdfCraft {v} is available. PdfCraft {v} on saatavilla. + You have version {c}. Download the new version from its release page. Käytössä on versio {c}. Lataa uusi versio sen julkaisusivulta. + PdfCraft {c} is up to date. PdfCraft {c} on ajan tasalla. + Couldn't check for updates: {e} Päivitysten tarkistus epäonnistui: {e} + You have version {c}. All releases are listed at {page}. Käytössä on versio {c}. Kaikki julkaisut on lueteltu sivulla {page}. + Asks GitHub for the latest release. Nothing is downloaded or installed automatically. Kysyy uusinta julkaisua GitHubista. Mitään ei ladata tai asenneta automaattisesti. + Download Lataa + Later Myöhemmin + none ei mitään + Declared conformance: {shown} Ilmoitettu yhdenmukaisuus: {shown} + Output intent: {list} Tulostustarkoitus: {list} + Conformance level: Yhdenmukaisuustaso: + No problems found: the document conforms to {level}. Ongelmia ei löytynyt: asiakirja on {level}-yhteensopiva. + (page {p}) (sivu {p}) + · not fixable here · ei korjattavissa tässä + Verify Tarkista + Box Ruutu + Units Yksiköt + Set to zero Nollaa + Current page ({n}) Nykyinen sivu ({n}) + Subset Osajoukko + Update Päivitä + Add Lisää + {verb} Header and Footer {verb} ylä- ja alatunniste + {verb} Watermark {verb} vesileima + {verb} Background {verb} tausta + Margins (in) Reunukset (in) + Left Header Text Vasen ylätunnisteteksti + Center Header Text Keskimmäinen ylätunnisteteksti + Right Header Text Oikea ylätunnisteteksti + Left Footer Text Vasen alatunnisteteksti + Center Footer Text Keskimmäinen alatunnisteteksti + Right Footer Text Oikea alatunnisteteksti + Insert Page Number Lisää sivunumero + Insert Date Lisää päivämäärä + Start page number Aloitussivunumero + Source Lähde + Fit to page Sovita sivulle + Rotation Kierto + Appear behind page Sivun takana + Appear on top of page Sivun päällä + Offset from centre Siirtymä keskeltä + From colour Väristä + Page Range Options Sivualueen asetukset + Preview: page {p} of {n} Esikatselu: sivu {p}/{n} + Applies to 1 page Koskee yhtä sivua + Applies to {n} pages Koskee {n} sivua + Replaces the existing one on those pages. Korvaa näiden sivujen nykyisen. + PDF or image PDF tai kuva + No file chosen Tiedostoa ei ole valittu + Page number Sivunumero + Scale relative to target page Skaalaa suhteessa kohdesivuun + Link Properties Linkin ominaisuudet + Create Link Luo linkki + Link Appearance Linkin ulkoasu + Link Type: Linkin tyyppi: + Visible Rectangle Näkyvä suorakulmio + Invisible Rectangle Näkymätön suorakulmio + Highlight Style: Korostustyyli: + Invert Käänteinen + Outline Ääriviiva + Inset Upotettu + Line Thickness: Viivan paksuus: + Thin Ohut + Thick Paksu + Line Style: Viivatyyli: + Solid Yhtenäinen + Dashed Katkoviiva + Color: Väri: + Link Action Linkin toiminto + Open a web page Avaa verkkosivu + Go to a page view Siirry sivunäkymään + Type the web address. Kirjoita verkko-osoite. + This document has no signatures. Tässä asiakirjassa ei ole allekirjoituksia. + The Keychain's digital IDs couldn't be listed: {e} Avainnipun digitaalisia tunnuksia ei voitu luetella: {e} + Signed and saved to {path} Allekirjoitettu ja tallennettu: {path} + Couldn't open revision {n}: {e} Versiota {n} ei voitu avata: {e} + Couldn't open the signed version: {e} Allekirjoitettua versiota ei voitu avata: {e} + Sign with a Digital ID Allekirjoita digitaalisella tunnuksella + Choose the digital ID that you want to use for signing: Valitse allekirjoitukseen käytettävä digitaalinen tunnus: + Keychain · Avainnippu · + Windows store · Windows-säilö · + Issued by: Myöntäjä: + , Expires: , vanhenee: + No digital IDs yet. Digitaalisia tunnuksia ei vielä ole. + Configure New Digital ID Määritä uusi digitaalinen tunnus + Remove "{name}" from this list? The file itself is not deleted. Poistetaanko "{name}" tästä luettelosta? Itse tiedostoa ei poisteta. + Continue Jatka + Configure a Digital ID for Signing Määritä digitaalinen tunnus allekirjoittamista varten + Use a Digital ID from a file Käytä tiedostossa olevaa digitaalista tunnusta + Create a new Digital ID (self-signed, saved to a password-protected file) Luo uusi digitaalinen tunnus (itse allekirjoitettu, tallennetaan salasanasuojattuun tiedostoon) + Name Nimi + Organizational Unit Organisaatioyksikkö + Organization Name Organisaation nimi + Email Address Sähköpostiosoite + Country/Region Maa/alue + Key Algorithm Avainalgoritmi + Confirm Password Vahvista salasana + Valid for 5 years, for digital signatures. Self-signed IDs are usually not trusted by others. Voimassa 5 vuotta, digitaalisia allekirjoituksia varten. Muut eivät yleensä luota itse allekirjoitettuihin tunnuksiin. + File (.p12, .pfx) Tiedosto (.p12, .pfx) + Digital ID Digitaalinen tunnus + Browse… Selaa… + {verb} as "{name}" {verb} nimellä "{name}" + Certify Varmenna + The signature will be invisible. Allekirjoitus on näkymätön. + The existing action will be preserved. Nykyinen toiminto säilytetään. + Distinguished name Erottava nimi + Labels Nimiöt + Graphic Grafiikka + Signer's name Allekirjoittajan nimi + Fill & Sign signature Täytä ja allekirjoita -allekirjoitus + Choose image… Valitse kuva… + Permitted actions after certifying Sallitut toiminnot varmentamisen jälkeen + No changes allowed Muutoksia ei sallita + Annotations, form fill-in, and digital signatures Merkinnät, lomakkeiden täyttö ja digitaaliset allekirjoitukset + Form fill-in and digital signatures Lomakkeiden täyttö ja digitaaliset allekirjoitukset + The key is in the macOS Keychain, which may ask to allow PdfCraft to use it. Avain on macOS-avainnipussa, joka voi pyytää lupaa PdfCraftin käytölle. + The key is in the Windows certificate store, which may ask to allow PdfCraft to use it. Avain on Windowsin varmennesäilössä, joka voi pyytää lupaa PdfCraftin käytölle. + Digital ID password Digitaalisen tunnuksen salasana + Back Takaisin + Validate all Tarkista kaikki + Sign this field… Allekirjoita tämä kenttä… + Signature is valid: Allekirjoitus on kelvollinen: + Signature validity is UNKNOWN: Allekirjoituksen kelpoisuus on TUNTEMATON: + Signature is INVALID: Allekirjoitus on VIRHEELLINEN: + Signature Details Allekirjoituksen tiedot + Reason Syy + Signing time Allekirjoitusaika + Algorithm Algoritmi + Signer Allekirjoittaja + Issued by Myöntäjä + Valid Kelvollinen + Field Kenttä + Field: {field} on page {p} Kenttä: {field} sivulla {p} + Add to trusted certificates Lisää luotettuihin varmenteisiin + View signed version Näytä allekirjoitettu versio + Show certificate… Näytä varmenne… + Export certificate… Vie varmenne… + Certificate Viewer Varmenteen katseluohjelma + This dialog shows the details of a certificate and its chain. Tässä ikkunassa näkyvät varmenteen ja sen ketjun tiedot. + Trust Luottamus + Issued to Myönnetty + Valid from Voimassa alkaen + Valid to Voimassa asti + Intended usage Käyttötarkoitus + Any Mikä tahansa + Version Versio + Serial number Sarjanumero + Issuer Myöntäjä + Validity starts Voimassaolo alkaa + Validity ends Voimassaolo päättyy + Public key Julkinen avain + Key usage Avaimen käyttö + Not present Ei mukana + Self-signed Itse allekirjoitettu + Edit Action Muokkaa toimintoa + New Action Uusi toiminto + Action name: Toiminnon nimi: + Description: Kuvaus: + Steps Vaiheet + Add the steps this action runs, in order. Lisää toiminnon suorittamat vaiheet järjestyksessä. + Add Step Lisää vaihe + An action with this name already exists. Tämänniminen toiminto on jo olemassa. + New Action… Uusi toiminto… + Edit… Muokkaa… + Add watermark Lisää vesileima + Add header Lisää ylätunniste + Add footer Lisää alatunniste + Set document title Aseta asiakirjan otsikko + Run a JavaScript Suorita JavaScript + Prepare for Distribution Valmistele jakelua varten + Remove hidden information and flatten comments and form fields, so recipients see only the pages. Poista piilotetut tiedot ja litistä kommentit ja lomakekentät, jotta vastaanottajat näkevät vain sivut. + Optimize Scanned Documents Optimoi skannatut asiakirjat + Make scans searchable, then make them smaller. Tee skannauksista haettavia ja pienennä ne. + Add Page Numbers Lisää sivunumerot + Number every page in the footer. Numeroi jokainen sivu alatunnisteeseen. + Mark as Confidential Merkitse luottamukselliseksi + A diagonal CONFIDENTIAL watermark on every page. Vinottainen LUOTTAMUKSELLINEN-vesileima jokaiselle sivulle. + Sanitize Documents Puhdista asiakirjat + Remove hidden information, metadata, scripts and embedded content, and rewrite the files. Poista piilotetut tiedot, metatiedot, komentosarjat ja upotettu sisältö ja kirjoita tiedostot uudelleen. + Type text Kirjoita tekstiä + Text to insert Lisättävä teksti + Replacement text Korvaava teksti + Edit text… Muokkaa tekstiä… + Add a sticky note here Lisää muistilappu tähän + {kind} Properties {kind}: ominaisuudet + Appearance Ulkoasu + General Yleiset + Review History Tarkistushistoria + This comment's appearance can't be changed yet. Tämän kommentin ulkoasua ei voi vielä muuttaa. + Icon Kuvake + Thickness Paksuus + Modified Muokattu + No status has been set. Tilaa ei ole asetettu. + Compare Files Vertaa tiedostoja + Old file: Vanha tiedosto: + Open the older version first Avaa ensin vanhempi versio + New file: Uusi tiedosto: + Text is compared word by word; the differences are shown on the new file. Tekstiä verrataan sana sanalta; erot näytetään uudessa tiedostossa. + Compare this file with an older version: Compare files… in All tools. Vertaa tätä tiedostoa vanhempaan versioon: Vertaa tiedostoja… kohdassa Kaikki työkalut. + No differences in the text. Tekstissä ei ole eroja. + {n} {kind} {n} {kind} + Inserted Lisätty + Deleted Poistettu + Replaced Korvattu + Visual Visuaalinen + Mark as comments Merkitse kommenteiksi + Report… Raportti… + {kind} · page {p} {kind} · sivu {p} + Set Alternate Text Aseta vaihtoehtoinen teksti + This document has no tagged figures. Tässä asiakirjassa ei ole tagitettuja kuvia. + on page {p} sivulla {p} + Figure {i} of {n}{page} Kuva {i}/{n}{page} + No preview Ei esikatselua + Alternate text Vaihtoehtoinen teksti + Describe the figure Kuvaile kuva + Decorative figure Koristekuva + Previous figure Edellinen kuva + Next figure Seuraava kuva + Save & Close Tallenna ja sulje + Accessibility Checker Options Saavutettavuuden tarkistuksen asetukset + Report Options Raportin asetukset + Create accessibility report Luo saavutettavuusraportti + Page Range Sivualue + All pages in document Kaikki asiakirjan sivut + Checking Options ({on} of 32 in all categories) Tarkistusasetukset ({on}/32 kaikissa luokissa) + Show this dialog when the Checker starts Näytä tämä ikkuna, kun tarkistus käynnistyy + Select All Valitse kaikki + Clear All Tyhjennä kaikki + Start Checking Aloita tarkistus + This document hasn't been checked yet. Tätä asiakirjaa ei ole vielä tarkistettu. + No issues found Ongelmia ei löytynyt + 1 issue 1 ongelma + {n} issues {n} ongelmaa + {label} (1 issue) {label} (1 ongelma) + {label} ({n} issues) {label} ({n} ongelmaa) + Check again Tarkista uudelleen + Report Raportti + Show the accessibility report Näytä saavutettavuusraportti + Collapse Kutista + Expand Laajenna + {rule} - {status} {rule} - {status} + Passed Hyväksytty + Failed Hylätty + Needs manual check Vaatii manuaalisen tarkistuksen + Skipped Ohitettu + Fix Korjaa + Skip Rule Ohita sääntö + Explain Selitä + Check Again Tarkista uudelleen + Show Report Näytä raportti + Options… Asetukset… + Go to the page Siirry sivulle + Page Content Sivun sisältö + Forms Lomakkeet + Alternate Text Vaihtoehtoinen teksti + Tables Taulukot + Lists Luettelot + Headings Otsikot + Accessibility permission flag Saavutettavuuden käyttöoikeuslippu + Accessibility permission flag is set Saavutettavuuden käyttöoikeuslippu on asetettu + Security settings must allow assistive technology to read the content ("Enable text access for screen reader devices"). Change the document's security to allow it. Suojausasetusten on sallittava avustavan teknologian lukea sisältöä ("Salli tekstin käyttö näytönlukijalaitteille"). Muuta asiakirjan suojausta niin, että se sallitaan. + Image-only PDF Pelkistä kuvista koostuva PDF + Document is not image-only PDF Asiakirja ei ole pelkistä kuvista koostuva PDF + Pages that are only pictures of text can't be read aloud or searched. Recognize text (OCR) to add a text layer. Sivuja, jotka ovat pelkkiä kuvia tekstistä, ei voi lukea ääneen eikä hakea. Lisää tekstitaso tunnistamalla teksti (OCR). + Document is tagged PDF Asiakirja on tagitettu PDF + Tags give the document a logical structure that assistive technology follows. Tag the document (Automatically tag PDF). Tagit antavat asiakirjalle loogisen rakenteen, jota avustava teknologia seuraa. Tagita asiakirja (Tagita PDF automaattisesti). + Logical Reading Order Looginen lukujärjestys + Document structure provides a logical reading order Asiakirjan rakenne tarjoaa loogisen lukujärjestyksen + Check that the tags read in the order a sighted reader would. Use the Reading Order tool or the Tags panel to correct it. Tarkista, että tagit luetaan samassa järjestyksessä kuin näkevä lukija lukisi. Korjaa järjestys Lukujärjestys-työkalulla tai Tagit-paneelissa. + Primary language Ensisijainen kieli + Text language is specified Tekstin kieli on määritetty + Screen readers choose their voice from the document's language. Set it in Document Properties > Advanced > Language. Näytönlukijat valitsevat äänen asiakirjan kielen mukaan. Aseta kieli kohdassa Asiakirjan ominaisuudet > Lisäasetukset > Kieli. + Document title is showing in title bar Asiakirjan otsikko näkyy otsikkorivillä + The window should show a meaningful title rather than the file name. Set a title and Initial View > Show: Document Title. Ikkunassa tulisi näkyä kuvaava otsikko eikä tiedostonimi. Aseta otsikko ja Alkunäkymä > Näytä: Asiakirjan otsikko. + Bookmarks are present in large documents Suurissa asiakirjoissa on kirjanmerkit + Documents of more than 20 pages need bookmarks for navigation. Add bookmarks for the main sections. Yli 20-sivuisissa asiakirjoissa tarvitaan kirjanmerkit siirtymistä varten. Lisää kirjanmerkit pääosioille. + Color contrast Värikontrasti + Document has appropriate color contrast Asiakirjan värikontrasti on riittävä + Text must contrast enough with its background for people with low vision. Check the colours by eye or with a contrast tool. Tekstin on erotuttava taustastaan riittävästi heikkonäköisille. Tarkista värit silmämääräisesti tai kontrastityökalulla. + Tagged content Tagitettu sisältö + All page content is tagged Kaikki sivun sisältö on tagitettu + Everything on a page must be tagged or marked as an artifact (decoration, headers, footers). Tag the untagged content. Kaikki sivun sisältö on tagitettava tai merkittävä artefaktiksi (koristeet, ylä- ja alatunnisteet). Tagita tagittamaton sisältö. + Tagged annotations Tagitetut merkinnät + All annotations are tagged Kaikki merkinnät on tagitettu + Comments, links and fields must be in the tag tree to be announced. Tag the annotations. Kommenttien, linkkien ja kenttien on oltava tagipuussa, jotta ne luetaan ääneen. Tagita merkinnät. + Tab order Sarkainjärjestys + Tab order is consistent with structure order Sarkainjärjestys vastaa rakennejärjestystä + Pages with links, comments or fields should tab in structure order. The fix sets each page's tab order to Use Document Structure. Sivuilla, joilla on linkkejä, kommentteja tai kenttiä, sarkaimen tulisi edetä rakennejärjestyksessä. Korjaus asettaa kunkin sivun sarkainjärjestykseksi Käytä asiakirjan rakennetta. + Character encoding Merkistökoodaus + Reliable character encoding is provided Luotettava merkistökoodaus on määritetty + Fonts must map their characters to Unicode so text can be read and copied. Fix the fonts or recreate the PDF. Fonttien on yhdistettävä merkkinsä Unicodeen, jotta tekstiä voi lukea ja kopioida. Korjaa fontit tai luo PDF uudelleen. + Tagged multimedia Tagitettu multimedia + All multimedia objects are tagged Kaikki multimediaobjektit on tagitettu + Video, sound and rich media must be tagged to be announced. Tag the multimedia annotations. Video, ääni ja rikas media on tagitettava, jotta ne luetaan ääneen. Tagita multimediamerkinnät. + Screen flicker Näytön välkyntä + Page will not cause screen flicker Sivu ei aiheuta näytön välkyntää + Animation that flashes can cause seizures. Check scripts and media for flicker. Vilkkuva animaatio voi aiheuttaa kohtauksia. Tarkista komentosarjat ja media välkynnän varalta. + Scripts Komentosarjat + No inaccessible scripts Ei saavuttamattomia komentosarjoja + Timed responses Ajastetut vastaukset + Page does not require timed responses Sivu ei vaadi ajastettuja vastauksia + People may need more time to respond. Check that nothing has a time limit. Käyttäjät voivat tarvita enemmän aikaa vastaamiseen. Tarkista, ettei missään ole aikarajaa. + Navigation links Siirtymislinkit + Navigation links are not repetitive Siirtymislinkit eivät toistu + Repeated navigation links should be skippable. Check links that appear on every page. Toistuvat siirtymislinkit pitäisi voida ohittaa. Tarkista linkit, jotka näkyvät jokaisella sivulla. + Tagged form fields Tagitetut lomakekentät + All form fields are tagged Kaikki lomakekentät on tagitettu + Form fields must be in the tag tree (Form tags) to be announced. Tag the form fields. Lomakekenttien on oltava tagipuussa (Form-tagit), jotta ne luetaan ääneen. Tagita lomakekentät. + Field descriptions Kenttien kuvaukset + All form fields have description Kaikilla lomakekentillä on kuvaus + Each field needs a tooltip that says what to enter. Add one in Field Properties > General > Tooltip. Jokainen kenttä tarvitsee työkaluvihjeen, joka kertoo, mitä kenttään syötetään. Lisää se kohdassa Kentän ominaisuudet > Yleiset > Työkaluvihje. + Figures alternate text Kuvien vaihtoehtoinen teksti + Figures require alternate text Kuvat edellyttävät vaihtoehtoista tekstiä + Pictures need alternate text that describes them, or must be marked decorative. Add alternate text to each figure. Kuvat tarvitsevat niitä kuvailevan vaihtoehtoisen tekstin, tai ne on merkittävä koristeiksi. Lisää vaihtoehtoinen teksti jokaiseen kuvaan. + Nested alternate text Sisäkkäinen vaihtoehtoinen teksti + Alternate text that will never be read Vaihtoehtoinen teksti, jota ei koskaan lueta + Alternate text inside an element that already has alternate text is never read. Remove the inner alternate text. Vaihtoehtoista tekstiä elementissä, jolla jo on vaihtoehtoinen teksti, ei koskaan lueta. Poista sisempi vaihtoehtoinen teksti. + Associated with content Liitetty sisältöön + Alternate text must be associated with some content Vaihtoehtoinen teksti on liitettävä johonkin sisältöön + Alternate text on an element without page content is never reached. Remove it or attach the element to content. Vaihtoehtoiseen tekstiin elementissä, jolla ei ole sivusisältöä, ei koskaan päästä. Poista se tai liitä elementti sisältöön. + Hides annotation Piilottaa merkinnän + Alternate text should not hide annotation Vaihtoehtoinen teksti ei saa piilottaa merkintää + Alternate text on an element that contains a link or field hides that annotation from assistive technology. Move the alternate text. Vaihtoehtoinen teksti elementissä, joka sisältää linkin tai kentän, piilottaa merkinnän avustavalta teknologialta. Siirrä vaihtoehtoinen teksti. + Other elements alternate text Muiden elementtien vaihtoehtoinen teksti + Other elements that require alternate text Muut elementit, jotka edellyttävät vaihtoehtoista tekstiä + Formulas and similar non-text elements need alternate text. Add alternate text to them. Kaavat ja vastaavat muut kuin tekstielementit tarvitsevat vaihtoehtoisen tekstin. Lisää niihin vaihtoehtoinen teksti. + Rows Rivit + TR must be a child of Table, THead, TBody, or TFoot TR:n on oltava Table-, THead-, TBody- tai TFoot-elementin alielementti + Table cells belong in a row. Fix the table's tags. Taulukon solujen kuuluu olla rivillä. Korjaa taulukon tagit. + Headers Otsikkosolut + Tables should have headers Taulukoissa tulisi olla otsikkosolut + Header cells (TH) tell listeners what each column or row holds. Mark the header cells. Otsikkosolut (TH) kertovat kuuntelijalle, mitä kukin sarake tai rivi sisältää. Merkitse otsikkosolut. + Regularity Säännöllisyys + Tables must contain the same number of columns in each row and rows in each column Taulukoissa on oltava sama määrä sarakkeita joka rivillä ja rivejä joka sarakkeessa + Irregular tables confuse cell navigation. Give every row the same number of cells (counting spans). Epäsäännölliset taulukot sekoittavat solujen välillä siirtymisen. Anna jokaiselle riville sama määrä soluja (yhdistetyt solut mukaan lukien). + Summary Yhteenveto + Tables must have a summary Taulukoilla on oltava yhteenveto + A summary describes the table's purpose and layout. Add a Summary attribute to each table. Yhteenveto kuvaa taulukon tarkoituksen ja rakenteen. Lisää jokaiseen taulukkoon Summary-määrite. + List items Luettelon kohteet + LI must be a child of L LI:n on oltava L-elementin alielementti + List items belong in a list. Fix the list's tags. Luettelon kohteiden kuuluu olla luettelossa. Korjaa luettelon tagit. + Lbl and LBody Lbl ja LBody + Lbl and LBody must be children of LI Lbl- ja LBody-elementtien on oltava LI-elementin alielementtejä + List labels and bodies belong in a list item. Fix the list's tags. Luettelon nimiöiden ja runko-osien kuuluu olla luettelon kohteessa. Korjaa luettelon tagit. + Appropriate nesting Asianmukainen sisäkkäisyys + Heading levels shouldn't skip (an H1 followed by an H3). Retag the headings. Otsikkotasoja ei pitäisi ohittaa (H1, jota seuraa H3). Tagita otsikot uudelleen. + TH and TD TH ja TD + TH and TD must be children of TR TH- ja TD-elementtien on oltava TR-elementin alielementtejä + Mark Page Range Merkitse sivualue + Pages from Sivut alkaen + Single word or phrase Yksittäinen sana tai lause + Text to find Etsittävä teksti + Patterns Kuviot + Phone Numbers Puhelinnumerot + Email Addresses Sähköpostiosoitteet + Credit Cards Luottokortit + Social Security Numbers Henkilötunnukset + Dates Päivämäärät + Text in images isn't found; recognise text (OCR) first. Kuvissa olevaa tekstiä ei löydy; tunnista teksti (OCR) ensin. + No matches. Ei osumia. + Some bookmarks are not shown here: the panel lists a limited number, nested a limited depth. Kaikkia kirjanmerkkejä ei näytetä tässä: paneeli näyttää rajallisen määrän rajalliseen sisäkkäisyystasoon asti. + {n} match(es) marked for redaction. Peitettäväksi merkittyjä osumia: {n}. + Multiple words or phrases Useita sanoja tai lauseita + One word or phrase per line Yksi sana tai lause riviä kohden + Import list… Tuo luettelo… + {n} word(s) or phrase(s) Sanoja tai lauseita: {n} + {name} is too large for a word list (at most 1 MB). {name} on liian suuri sanaluetteloksi (enintään 1 Mt). + Redaction Tool Properties Peittotyökalun ominaisuudet + Redacted area fill colour: Peitetyn alueen täyttöväri: + Use overlay text Käytä päällystekstiä + Custom text: Mukautettu teksti: + Redaction code: Peittokoodi: + Font: Fontti: + Font size: Fonttikoko: + Auto-size text to fit redaction region Sovita tekstin koko automaattisesti peittoalueeseen + Font colour: Fontin väri: + Repeat overlay text Toista päällysteksti + Text alignment: Tekstin tasaus: + Center Keskitä + Apply redactions Käytä peittoja + You are about to apply 1 redaction mark. Text, images and drawings under the marks, and comments and form fields that overlap them, are removed permanently. Olet käyttämässä 1 peittomerkintää. Merkintöjen alla oleva teksti, kuvat ja piirrokset sekä niiden kanssa päällekkäiset kommentit ja lomakekentät poistetaan pysyvästi. + You are about to apply {n} redaction marks. Text, images and drawings under the marks, and comments and form fields that overlap them, are removed permanently. Olet käyttämässä {n} peittomerkintää. Merkintöjen alla oleva teksti, kuvat ja piirrokset sekä niiden kanssa päällekkäiset kommentit ja lomakekentät poistetaan pysyvästi. + Save the document afterwards: saving rewrites the whole file so no trace of the removed content stays in it. Tallenna asiakirja tämän jälkeen: tallennus kirjoittaa koko tiedoston uudelleen, jottei poistetusta sisällöstä jää jälkiä. + Select the items to remove from this document. Valitse tästä asiakirjasta poistettavat kohteet. + Metadata Metatiedot + File attachments Tiedostoliitteet + Comments and markups Kommentit ja merkinnät + Hidden text Piilotettu teksti + Hidden layers Piilotetut tasot + Links, actions and JavaScripts Linkit, toiminnot ja JavaScriptit + Private data of other applications Muiden sovellusten yksityiset tiedot + None found Ei löytynyt + Form fields are flattened: their values stay visible. Saving rewrites the whole file. Lomakekentät litistetään: niiden arvot jäävät näkyviin. Tallennus kirjoittaa koko tiedoston uudelleen. + Remove Poista + Sanitizing removes hidden information from the document: metadata, file attachments, comments, form fields (flattened), hidden text and layers, bookmarks, links, actions and scripts, and private application data. Puhdistus poistaa asiakirjasta piilotetut tiedot: metatiedot, tiedostoliitteet, kommentit, lomakekentät (litistetään), piilotetun tekstin ja tasot, kirjanmerkit, linkit, toiminnot ja komentosarjat sekä sovellusten yksityiset tiedot. + Save the document afterwards; saving rewrites the whole file so nothing removed stays in it. Tallenna asiakirja tämän jälkeen; tallennus kirjoittaa koko tiedoston uudelleen, jottei mitään poistettua jää siihen. + Printer: Tulostin: + Save as PDF Tallenna PDF-muodossa + {name} (default) {name} (oletus) + Copies: Kopiot: + Collate Lajittele + Print in grayscale Tulosta harmaasävyinä + Two-sided: Kaksipuolinen: + Off Pois + Flip on long edge Käännä pitkän reunan mukaan + Flip on short edge Käännä lyhyen reunan mukaan + Paper: Paperi: + Pages to Print Tulostettavat sivut + More options: Lisäasetukset: + All pages in range Kaikki alueen sivut + Odd pages only Vain parittomat sivut + Even pages only Vain parilliset sivut + Reverse pages Käänteinen sivujärjestys + Page Sizing & Handling Sivun koko ja käsittely + Size Koko + Poster Juliste + Multiple Useita + Booklet Vihko + Fit Sovita + Shrink oversized pages Pienennä ylisuuret sivut + Custom scale: Mukautettu skaala: + Tile scale: Paloittelun skaala: + Overlap: Limitys: + Cut marks Leikkausmerkit + Pages per sheet: Sivuja arkille: + Page order: Sivujärjestys: + Horizontal Vaakasuora + Horizontal reversed Vaakasuora käänteinen + Vertical Pystysuora + Vertical reversed Pystysuora käänteinen + Print page border Tulosta sivun reunus + Auto-rotate pages Kierrä sivut automaattisesti + Booklet subset: Vihkon osa: + Both sides Molemmat puolet + Front side only Vain etupuoli + Back side only Vain takapuoli + Binding: Sidonta: + Left Vasen + Right Oikea + Orientation: Suunta: + Auto portrait/landscape Automaattinen pysty/vaaka + Portrait Pysty + Landscape Vaaka + Comments & Forms Kommentit ja lomakkeet + Document Asiakirja + Document and markups Asiakirja ja merkinnät + Document and stamps Asiakirja ja leimat + Form fields only Vain lomakekentät + Previous sheet Edellinen arkki + Next sheet Seuraava arkki + No sheets Ei arkkeja + Sheet {s} of {n} Arkki {s}/{n} + Removed 1 hidden item. Save to remove them from the file. Poistettiin 1 piilotettu kohde. Poista se tiedostosta tallentamalla. + Removed {n} hidden items. Save to remove them from the file. Poistettiin {n} piilotettua kohdetta. Poista ne tiedostosta tallentamalla. + Document sanitized. Save to finish: saving rewrites the whole file. Asiakirja puhdistettu. Viimeistele tallentamalla: tallennus kirjoittaa koko tiedoston uudelleen. + Applied 1 redaction mark. Save to remove the content from the file. Käytettiin 1 peittomerkintä. Poista sisältö tiedostosta tallentamalla. + Applied {n} redaction marks. Save to remove the content from the file. Käytettiin {n} peittomerkintää. Poista sisältö tiedostosta tallentamalla. + JavaScript Console JavaScript-konsoli + JavaScript is turned off (Preferences ▸ JavaScript). JavaScript on poistettu käytöstä (Asetukset > JavaScript). + Output appears here. Tuloste näkyy tässä. + Script Name: Komentosarjan nimi: + This document has no document-level scripts. Tässä asiakirjassa ei ole asiakirjatason komentosarjoja. + No form fields were detected Lomakekenttiä ei havaittu + Detected 1 form field Havaittiin 1 lomakekenttä + Detected {n} form fields Havaittiin {n} lomakekenttää + {field}: {e} {field}: {e} + Current page Nykyinen sivu + Selected pages Valitut sivut + Document language Asiakirjan kieli + Output Tuloste + Searchable Image (Exact) Haettava kuva (tarkka) + Adds invisible text over each word; the page image is not changed Lisää näkymätöntä tekstiä jokaisen sanan päälle; sivun kuvaa ei muuteta + Downsample to Alinäytteistä tarkkuuteen + Also recognize pages that already have text Tunnista myös sivut, joilla on jo tekstiä + Pictures on those pages are recognized too; words already in the page's text are not added again Myös näiden sivujen kuvat tunnistetaan; sivun tekstissä jo olevia sanoja ei lisätä uudelleen + Text recognition isn't installed: its model files are missing. Reinstall PdfCraft, or set PDFCRAFT_MODELS to the folder that holds them. Tekstintunnistusta ei ole asennettu: sen mallitiedostot puuttuvat. Asenna PdfCraft uudelleen tai aseta PDFCRAFT_MODELS osoittamaan kansioon, jossa ne ovat. + Settings Asetukset + Optional Valinnainen + Planned · {m} Suunniteltu · {m} + Planned for milestone {m} — open to see what it will include Suunniteltu välitavoitteeseen {m} – avaa nähdäksesi, mitä se sisältää + Coming in milestone {m}. Items marked Ready work today. Tulossa välitavoitteessa {m}. Valmis-merkityt kohteet toimivat jo nyt. + 1 mark 1 merkintä + {n} marks {n} merkintää + Dynamic Dynaaminen + Sign Here Allekirjoita tähän + Standard Business Tavalliset liiketoimintaleimat + Choose a stamp, then click on the page to place it. Valitse leima ja sijoita se napsauttamalla sivua. + Note Huomautus + Polyline Murtoviiva + Attachment Liite + Callout Selite + Typewriter Kirjoituskone + Checked Valittu + Unchecked Ei valittu + Marked Merkitty + Locked Lukittu + Search comments Hae kommenteista + Add a comment Lisää kommentti + No comments yet. Ei vielä kommentteja. + Pick a tool in the quick bar, or type above. Valitse työkalu pikapalkista tai kirjoita yllä olevaan kenttään. + No comments match. Mikään kommentti ei vastaa hakua. + Unknown author Tuntematon tekijä + No colour Ei väriä + Remove checkmark Poista valintamerkki + Mark with checkmark Merkitse valintamerkillä + Reply Vastaa + Add a reply Lisää vastaus + Post Lähetä + Page {label} Sivu {label} + {kind} — click to show it on the page {kind} – näytä sivulla napsauttamalla + Set status Aseta tila + Copy text Kopioi teksti + Properties… Ominaisuudet… + Make Current Properties Default Aseta nykyiset ominaisuudet oletukseksi + More options Lisää asetuksia + Sort by Lajitteluperuste + Author Tekijä + Type Tyyppi + Colour Väri + Show all comments Näytä kaikki kommentit + Create PDF comment summary… Luo PDF-kommenttiyhteenveto… + Export all to data file… Vie kaikki datatiedostoon… + Filter comments Suodata kommentit + Status Tila + Accepted Hyväksytty + Rejected Hylätty + Cancelled Peruttu + Completed Valmis + Show all Näytä kaikki + Yellow Keltainen + Orange Oranssi + Red Punainen + Pink Vaaleanpunainen + Purple Violetti + Blue Sininen + Light blue Vaaleansininen + Green Vihreä + Gray Harmaa + Black Musta + Bookmark options Kirjanmerkkiasetukset + Expand all bookmarks Laajenna kaikki kirjanmerkit + Expand top-level bookmarks Laajenna ylimmän tason kirjanmerkit + Collapse all bookmarks Kutista kaikki kirjanmerkit + New bookmark ({key}) Uusi kirjanmerkki ({key}) + This document has no bookmarks. Tässä asiakirjassa ei ole kirjanmerkkejä. + This document has no layers. Tässä asiakirjassa ei ole tasoja. + This document has no attachments. Tässä asiakirjassa ei ole liitteitä. + Hide layer Piilota taso + Show layer Näytä taso + Set layer visibility Aseta tason näkyvyys + on page {label} sivulla {label} + Save attachment… Tallenna liite… + Open in a new tab Avaa uudessa välilehdessä + This document has no pages. Tässä asiakirjassa ei ole sivuja. + Find text Etsi tekstiä + No matches Ei osumia + Searching… {s}/{p} Haetaan… {s}/{p} + {c} of {n}{more} {c}/{n}{more} + Previous ({key}) Edellinen ({key}) + Next ({key}) Seuraava ({key}) + Find options Hakuasetukset + Whole words only Vain kokonaiset sanat + Case-sensitive Sama kirjainkoko + Close (Esc) Sulje (Esc) + Align Tasaa + Top Ylös + Bottom Alas + Center horizontally Keskitä vaakasuunnassa + Center vertically Keskitä pystysuunnassa + Distribute Jaa tasaisesti + Horizontally Vaakasuunnassa + Vertically Pystysuunnassa + Set Fields to Same Size Aseta kentät samankokoisiksi + Height Korkeus + Width Leveys + Both Molemmat + Duplicate… Monista… + All pages Kaikki sivut + Odd pages Parittomat sivut + Even pages Parilliset sivut + Landscape pages Vaakasivut + Portrait pages Pystysivut + Move earlier Siirrä aiemmaksi + Move later Siirrä myöhemmäksi + Back to the document Takaisin asiakirjaan + Protect Using Password Suojaa salasanalla + Requires user to enter a password for: Käyttäjän on annettava salasana seuraaviin: + Viewing Katselu + Editing Muokkaus + Type Password Kirjoita salasana + Re-type Password Kirjoita salasana uudelleen + Strength: {s} Vahvuus: {s} + Strong Vahva + Medium Kohtalainen + Weak Heikko + Advanced Options {chevron} Lisäasetukset {chevron} + Compatibility Yhteensopivuus + Acrobat X and later (256-bit AES) Acrobat X ja uudemmat (256-bittinen AES) + Acrobat 7.0 and later (128-bit AES) Acrobat 7.0 ja uudemmat (128-bittinen AES) + Acrobat 5.0 and later (128-bit RC4) Acrobat 5.0 ja uudemmat (128-bittinen RC4) + Acrobat 3.0 and later (40-bit RC4) Acrobat 3.0 ja uudemmat (40-bittinen RC4) + Encrypt Salaa + All document contents Koko asiakirjan sisältö + All document contents except metadata Koko asiakirjan sisältö metatietoja lukuun ottamatta + Printing allowed Tulostus sallittu + Low Resolution (150 dpi) Matala tarkkuus (150 dpi) + Changes allowed Sallitut muutokset + Inserting, deleting, and rotating pages Sivujen lisääminen, poistaminen ja kiertäminen + Filling in form fields and signing existing signature fields Lomakekenttien täyttäminen ja olemassa olevien allekirjoituskenttien allekirjoittaminen + Commenting, filling in form fields, and signing existing signature fields Kommentointi, lomakekenttien täyttäminen ja olemassa olevien allekirjoituskenttien allekirjoittaminen + Any except extracting pages Kaikki paitsi sivujen poimiminen + Enable copying of text, images, and other content Salli tekstin, kuvien ja muun sisällön kopiointi + Enable text access for screen reader devices for the visually impaired Salli tekstin käyttö näkövammaisten näytönlukijalaitteille + Type a password. Kirjoita salasana. + The passwords don't match. Salasanat eivät täsmää. + This compatibility level supports only plain ASCII passwords. Tämä yhteensopivuustaso tukee vain pelkkiä ASCII-salasanoja. + Anyone opening the document will need this password. It's applied when you save. Asiakirjan avaaminen edellyttää tätä salasanaa. Se otetaan käyttöön tallennettaessa. + The document opens without a password; this password is needed to change the restrictions. It's applied when you save. Asiakirja avautuu ilman salasanaa; tätä salasanaa tarvitaan rajoitusten muuttamiseen. Se otetaan käyttöön tallennettaessa. + Recover unsaved documents? Palautetaanko tallentamattomat asiakirjat? + PdfCraft didn't shut down normally. These documents had changes that were autosaved: PdfCraft ei sulkeutunut normaalisti. Näiden asiakirjojen muutokset tallennettiin automaattisesti: + just now juuri nyt + {n} min ago {n} min sitten + {n} h ago {n} h sitten + · password-protected · salasanasuojattu + Recover Palauta + Discard Hylkää + Version {v} Versio {v} + A clean-room, open-source PDF application written in Rust. MIT OR Apache-2.0. Puhtaan huoneen menetelmällä kehitetty avoimen lähdekoodin PDF-sovellus, kirjoitettu Rustilla. MIT OR Apache-2.0. + Part of Osa kokonaisuutta + Summarize Options Yhteenvedon asetukset + Choose a layout: Valitse asettelu: + Comments only Vain kommentit + Sort comments by: Kommenttien lajitteluperuste: + Create PDF Comment Summary Luo PDF-kommenttiyhteenveto + Revert to the previously saved version of “{name}”? Changes since then can't be undone afterwards. Palautetaanko tiedoston “{name}” edellinen tallennettu versio? Sen jälkeen tehtyjä muutoksia ei voi myöhemmin palauttaa. + Number pages Numeroi sivut + Style Tyyli + None (prefix only) Ei mitään (vain etuliite) + Prefix Etuliite + Start Alku + Labels: {preview}. Later pages keep their labels. Tunnisteet: {preview}. Myöhemmät sivut säilyttävät tunnisteensa. + Even and Odd Pages Parilliset ja parittomat sivut + Even Pages Only Vain parilliset sivut + Odd Pages Only Vain parittomat sivut + Landscape and Portrait Pages Vaaka- ja pystysivut + Landscape Pages Vaakasivut + Portrait Pages Pystysivut + Duplicate Field Monista kenttä + Duplicate "{name}" onto: Monista "{name}" kohteeseen: + 1 page selected. 1 sivu valittu. + {n} pages selected. {n} sivua valittu. + Delete pages after extracting Poista sivut poimimisen jälkeen + Extract pages as separate files Poimi sivut erillisiksi tiedostoiksi + Rotate Pages Kierrä sivuja + Direction: Suunta: + Clockwise 90 degrees Myötäpäivään 90 astetta + Counterclockwise 90 degrees Vastapäivään 90 astetta + 180 degrees 180 astetta + Pages: Sivut: + All Kaikki + Selection Valinta + From Alkaen + Rotate: Kierrä: + Repairs Korjaukset + Repair log Korjausloki + Split document Jaa asiakirja + Number of pages Sivumäärä + Pages per file Sivuja tiedostoa kohden + File size Tiedostokoko + At most Enintään + Top-level bookmarks ({n}) Ylimmän tason kirjanmerkit ({n}) + Before each selected page (select pages in Organize) Ennen jokaista valittua sivua (valitse sivut Järjestä-näkymässä) + Creates 1 file from {n} pages. Luo {n} sivusta 1 tiedoston. + Creates {f} files from {n} pages. Luo {n} sivusta {f} tiedostoa. + Each file holds as many of the {n} pages as fit. Jokaiseen tiedostoon tulee niin monta {n} sivusta kuin mahtuu. + Replace Pages Korvaa sivut + Original: replace pages Alkuperäinen: korvaa sivut + to – + to {n} – {n} + Replacement: pages of {name} Korvaava: tiedoston {name} sivut + of {name} tiedostosta {name} + Only the page content changes: links, comments, form fields and bookmarks on the original pages stay. Vain sivujen sisältö muuttuu: alkuperäisten sivujen linkit, kommentit, lomakekentät ja kirjanmerkit säilyvät. + The replacement file doesn't have that many pages. Korvaavassa tiedostossa ei ole niin montaa sivua. + Tagged PDF Tagitettu PDF + Document Properties Asiakirjan ominaisuudet + Description Kuvaus + Initial View Alkunäkymä + Security Suojaus + Fonts Fontit + Advanced Lisäasetukset + Title Otsikko + Subject Aihe + Keywords Avainsanat + Application Sovellus + PDF producer PDF-tuottaja + Layout and Magnification Asettelu ja suurennus + Navigation tab Siirtymisvälilehti + Page Only Vain sivu + Bookmarks Panel and Page Kirjanmerkkipaneeli ja sivu + Pages Panel and Page Sivupaneeli ja sivu + Attachments Panel and Page Liitepaneeli ja sivu + Layers Panel and Page Tasopaneeli ja sivu + Page layout Sivun asettelu + Default Oletus + Single Page Yksi sivu + Single Page Continuous Yksi sivu, jatkuva + Two-Up (Facing) Kaksi sivua (vierekkäin) + Two-Up Continuous (Facing) Kaksi sivua, jatkuva (vierekkäin) + Two-Up (Cover Page) Kaksi sivua (kansisivu) + Two-Up Continuous (Cover Page) Kaksi sivua, jatkuva (kansisivu) + Magnification Suurennus + Actual Size Todellinen koko + Fit Page Sovita sivu + Fit Width Sovita leveyteen + Fit Height Sovita korkeuteen + Fit Visible Sovita näkyvä alue + Open to page Avaa sivulle + of {pages} /{pages} + Window Options Ikkunan asetukset + Resize window to initial page Sovita ikkunan koko alkusivuun + Center window on screen Keskitä ikkuna näytölle + Open in Full Screen mode Avaa koko näytön tilassa + Show: Näytä: + File Name Tiedostonimi + Document Title Asiakirjan otsikko + User Interface Options Käyttöliittymän asetukset + Hide menu bar Piilota valikkorivi + Hide toolbars Piilota työkalurivit + Hide window controls Piilota ikkunan ohjaimet + Security method Suojausmenetelmä + No security Ei suojausta + Restrictions Rajoitukset + None — everything is allowed Ei mitään – kaikki on sallittu + Password security Salasanasuojaus + Encryption Salaus + Opened with Avattu käyttäen + — (protection is applied when you save) — (suojaus otetaan käyttöön tallennettaessa) + Owner password (no restrictions apply) Omistajan salasana (rajoitukset eivät koske) + User password Käyttäjän salasana + Change settings… Muuta asetuksia… + Printing Tulostus + Not allowed Ei sallittu + Allowed Sallittu + High resolution Korkea tarkkuus + Low resolution Matala tarkkuus + Changing the document Asiakirjan muuttaminen + Document assembly Asiakirjan kokoaminen + Content copying Sisällön kopiointi + Content copying for accessibility Sisällön kopiointi saavutettavuutta varten + Commenting Kommentointi + Filling of form fields Lomakekenttien täyttäminen + No fonts are referenced by the pages. Sivuilla ei viitata fontteihin. + PDF version PDF-versio + Location Sijainti + Page size Sivukoko + Yes Kyllä + No Ei + Revisions Versiot + View revision {n} Näytä versio {n} + Open the file as it was saved then Avaa tiedosto sellaisena kuin se silloin tallennettiin + Binding Sidonta + Left Edge Vasen reuna + Right Edge Oikea reuna + Language Kieli + Saved {place}: {before} → {after} ({pct}% smaller){detail} Tallennettu {place}: {before} → {after} ({pct} % pienempi){detail} + This file is already as small as it can be made ({size}). No copy was saved. Tiedosto on jo niin pieni kuin mahdollista ({size}). Kopiota ei tallennettu. + Saved {place}: {before} → {after} (not smaller){detail} Tallennettu {place}: {before} → {after} (ei pienempi){detail} + Couldn't save the image: {e} Kuvaa ei voitu tallentaa: {e} + Adding images arrives on the web with file pickers for images Kuvien lisääminen tulee verkkoversioon kuvatiedostojen valitsimien myötä + Replacing images on page {p} arrives on the web with image pickers ({i}) Sivun {p} kuvien korvaaminen tulee verkkoversioon kuvavalitsimien myötä ({i}) + {name}: choosing images arrives on the web with file pickers for images {name}: kuvien valitseminen tulee verkkoversioon kuvatiedostojen valitsimien myötä + Replacing images arrives on the web with image file pickers Kuvien korvaaminen tulee verkkoversioon kuvatiedostojen valitsimien myötä + Couldn't create a PDF: {e} PDF:n luominen epäonnistui: {e} + The clipboard has no image or text Leikepöydällä ei ole kuvaa tai tekstiä + On the web, open or drop an image to convert it Verkkoversiossa avaa tai pudota muunnettava kuva + Couldn't optimize the file: {e} Tiedoston optimointi epäonnistui: {e} + Couldn't write {path}: {e} Kohteen {path} kirjoittaminen epäonnistui: {e} + The form asks to be submitted to {u}; PdfCraft doesn't send form data. Save the document to keep your entries. Lomake pyytää lähettämään tiedot osoitteeseen {u}; PdfCraft ei lähetä lomaketietoja. Tallenna asiakirja, jotta syötetyt tiedot säilyvät. + This PDF uses the unsupported {s} action. Tämä PDF käyttää toimintoa {s}, jota ei tueta. + {name}: the {other} action isn't supported yet {name}: toimintoa {other} ei vielä tueta + {name} submits the form to {url}; PdfCraft doesn't send form data. Save the document to keep your entries. {name} lähettää lomakkeen osoitteeseen {url}; PdfCraft ei lähetä lomaketietoja. Tallenna asiakirja, jotta syötetyt tiedot säilyvät. + Export stopped: {e} Vienti keskeytyi: {e} + Exported 1 image Vietiin 1 kuva + Exported {n} images Vietiin {n} kuvaa + ({s} not exported: {first}) ({s} jäi viemättä: {first}) + Exported the text of 1 page Vietiin 1 sivun teksti + Exported the text of {n} pages Vietiin {n} sivun teksti + {msg} to {dir} {msg} kansioon {dir} + Exporting… {d} of {t} Viedään… {d}/{t} + Choose a folder for the exported files Valitse kansio vietäville tiedostoille + New {tool} comments will look like this one Uudet työkalun {tool} kommentit näyttävät tältä + This document can't be checked: it couldn't be read for editing Tätä asiakirjaa ei voi tarkistaa: sitä ei voitu lukea muokattavaksi + The checker found no problems in this document. Tarkistus ei löytänyt ongelmia tästä asiakirjasta. + The checker found 1 problem which may prevent the document from being fully accessible. Tarkistus löysi 1 ongelman, joka voi estää asiakirjan täyden saavutettavuuden. + The checker found {n} problems which may prevent the document from being fully accessible. Tarkistus löysi {n} ongelmaa, jotka voivat estää asiakirjan täyden saavutettavuuden. + The text is the same Teksti on sama + 1 difference found Löytyi 1 ero + {n} differences found Löytyi {n} eroa + Added 1 comment Lisättiin 1 kommentti + Added {n} comments Lisättiin {n} kommenttia + Choose a folder for the results Valitse kansio tuloksille + Files for {name} Tiedostot: {name} + An action is already running Toiminto on jo käynnissä + Running action… file {d} of {t} Suoritetaan toimintoa… tiedosto {d}/{t} + No unlinked web addresses were found in the text Tekstistä ei löytynyt linkittämättömiä verkko-osoitteita + Created 1 link Luotiin 1 linkki + Created {n} links Luotiin {n} linkkiä + Text recognition is already running Tekstintunnistus on jo käynnissä + Recognizing text… file {d} of {t} Tunnistetaan tekstiä… tiedosto {d}/{t} + Recognizing text… page {d} of {t} Tunnistetaan tekstiä… sivu {d}/{t} + Recognized 1 word Tunnistettiin 1 sana + Recognized {n} words Tunnistettiin {n} sanaa + {words} on {pages} {words}, {pages} + ; 1 page already had text ; 1 sivulla oli jo tekstiä + ; {n} pages already had text ; {n} sivulla oli jo tekstiä + Recognized {w} words in 1 file Tunnistettiin {w} sanaa 1 tiedostosta + Recognized {w} words in {n} files Tunnistettiin {w} sanaa {n} tiedostosta + ; failed: {list} ; epäonnistui: {list} + 1 file done 1 tiedosto valmis + {n} files done {n} tiedostoa valmiina + The selected area has been copied ({w} × {h} pixels) Valittu alue on kopioitu ({w} × {h} pikseliä) + Couldn't take the snapshot: {e} Tilannekuvan ottaminen epäonnistui: {e} + Couldn't recover {name}: {e} Tiedoston {name} palauttaminen epäonnistui: {e} + The document now conforms to {level}; save it to keep the changes Asiakirja on nyt {level}-yhteensopiva; tallenna se, jotta muutokset säilyvät + Fixed what could be fixed; 1 problem remains Korjattiin, mikä voitiin; 1 ongelma jäljellä + Fixed what could be fixed; {n} problems remain Korjattiin, mikä voitiin; {n} ongelmaa jäljellä + Custom stamps arrive on the web with file pickers for images Mukautetut leimat tulevat verkkoversioon kuvatiedostojen valitsimien myötä + {file} is too large for a stamp (at most {n} MB) {file} on liian suuri leimaksi (enintään {n} MB) + Sent to {printer} Lähetetty tulostimeen {printer} + Sent to {printer}: {msg} Lähetetty tulostimeen {printer}: {msg} + Looking for printers… Etsitään tulostimia… + Sending to {printer}… Lähetetään tulostimeen {printer}… + Choose a folder for the searchable files Valitse kansio haettaville tiedostoille + Files are combined from top to bottom. Leave Pages empty to take every page. Tiedostot yhdistetään ylhäältä alas. Jätä Sivut tyhjäksi, niin kaikki sivut otetaan mukaan. + Unlock… Avaa lukitus… + Select a password-protected file first Valitse ensin salasanalla suojattu tiedosto + Enter the permissions password to allow combining Salli yhdistäminen antamalla käyttöoikeuksien salasana + Enter the password that opens it Anna salasana, jolla tiedosto avataan + Unlock {name} Avaa tiedoston {name} lukitus + Unlock {n} files Avaa {n} tiedoston lukitus + The same password is tried on each file. Samaa salasanaa kokeillaan jokaiseen tiedostoon. + Hide password Piilota salasana + Show password Näytä salasana + Wrong password Väärä salasana + The password is only used to read the file; it isn't saved. Salasanaa käytetään vain tiedoston lukemiseen; sitä ei tallenneta. + Unlock Avaa lukitus + Opened, but its security settings don't allow combining. Enter the permissions password. Avattu, mutta suojausasetukset eivät salli yhdistämistä. Anna käyttöoikeuksien salasana. + Unlocked: the combined file won't be password-protected Lukitus avattu: yhdistettyä tiedostoa ei suojata salasanalla + Unlocked {n} of {m} files Lukitus avattu {n}/{m} tiedostosta + Drop PDFs, images, text files or folders here, or choose them. Pudota PDF:t, kuvat, tekstitiedostot tai kansiot tähän tai valitse ne. + Add folder… Lisää kansio… + Add folder and subfolders… Lisää kansio ja alikansiot… + More ways to add files Lisää tapoja lisätä tiedostoja + Every PDF, image and text file in the folder Kaikki kansion PDF-, kuva- ja tekstitiedostot + Every PDF, image and text file in the folder and the folders inside it Kaikki PDF-, kuva- ja tekstitiedostot kansiosta ja sen alikansioista + Add folder Lisää kansio + Add folder and subfolders Lisää kansio ja alikansiot + No PDFs, images or text files found in {folder} Kansiosta {folder} ei löytynyt PDF-, kuva- tai tekstitiedostoja + Added the first {n} files in {folder} Lisättiin kansion {folder} ensimmäiset {n} tiedostoa + Click to sort, drag to move the column. Drag its edge to resize it. Lajittele napsauttamalla, siirrä saraketta vetämällä. Muuta kokoa vetämällä reunasta. + Reset columns Palauta sarakkeet + Remove {n} files Poista {n} tiedostoa + {n} selected {n} valittu + sorted ascending lajiteltu nousevasti + sorted descending lajiteltu laskevasti + Protected: the combined file won't keep its security settings Suojattu: yhdistetty tiedosto ei säilytä suojausasetuksia + Add open documents Lisää avoimet asiakirjat + All open documents Kaikki avoimet asiakirjat + No documents are open Yhtään asiakirjaa ei ole auki + Select a file first Valitse ensin tiedosto + 1 file 1 tiedosto + {n} files {n} tiedostoa + 1 file needs attention 1 tiedosto vaatii huomiota + {n} files need attention {n} tiedostoa vaatii huomiota + {name} can't be combined: {why} Tiedostoa {name} ei voi yhdistää: {why} + Check the pages of {name}: {why} Tarkista tiedoston {name} sivut: {why} + Add the files to combine Lisää yhdistettävät tiedostot + File name Tiedostonimi + Warnings Varoitukset + Drag to reorder Järjestä vetämällä + {k} of {n} {k}/{n} + ? of {n} ?/{n} + Added more than once Lisätty useammin kuin kerran + yesterday eilen + {n} days ago {n} päivää sitten + No pages selected Sivuja ei ole valittu + Password-protected Salasanalla suojattu + Its security settings don't allow copying pages Suojausasetukset eivät salli sivujen kopiointia + Can't be read: {e} Ei voi lukea: {e} + Leave out files that can't be read? Jätetäänkö lukukelvottomat tiedostot pois? + These files can't be read, so they won't be in the combined PDF: Näitä tiedostoja ei voi lukea, joten ne eivät tule yhdistettyyn PDF:ään: + Combine the rest Yhdistä loput + and {n} more ja {n} muuta + Includes unsaved changes Sisältää tallentamattomia muutoksia + Pages of {name} to combine, e.g. 1-3, 6 Yhdistettävät tiedoston {name} sivut, esim. 1-3, 6 + Remove {name} Poista {name} + Add files… Lisää tiedostoja… + Add at least two files Lisää vähintään kaksi tiedostoa + Couldn't add {name}: {e} Tiedoston {name} lisääminen epäonnistui: {e} + Couldn't combine files: {e} Tiedostojen yhdistäminen epäonnistui: {e} + Export comments Vie kommentit + Export form data Vie lomaketiedot + Comment and form data Kommentti- ja lomaketiedot + Export Vie + Select data files to merge Valitse yhdistettävät tietotiedostot + Form data and PDF forms Lomaketiedot ja PDF-lomakkeet + Save the spreadsheet Tallenna laskentataulukko + Save the accessibility report Tallenna saavutettavuusraportti + Save image Tallenna kuva + Export certificate Vie varmenne + Choose a folder for the extracted pages Valitse kansio poimituille sivuille + Choose a folder for the split files Valitse kansio jaetuille tiedostoille + Couldn't use {name}: {e} Tiedoston {name} käyttäminen epäonnistui: {e} + Couldn't extract pages: {e} Sivujen poimiminen epäonnistui: {e} + Couldn't write {name}: {e} Tiedoston {name} kirjoittaminen epäonnistui: {e} + Wrote 1 file to {dir} Kirjoitettiin 1 tiedosto kansioon {dir} + Wrote {n} files to {dir} Kirjoitettiin {n} tiedostoa kansioon {dir} + No pages match those choices Mikään sivu ei vastaa valintoja + Couldn't split: {e} Jakaminen epäonnistui: {e} + Couldn't summarize comments: {e} Kommenttien yhteenvedon luominen epäonnistui: {e} + Couldn't open the result: {e} Tuloksen avaaminen epäonnistui: {e} + Importing data arrives on the web with file pickers for data files Tietojen tuonti tulee verkkoversioon tietotiedostojen valitsimien myötä + Exported to {path} Viety kohteeseen {path} + Merging data files needs the desktop app Tietotiedostojen yhdistäminen vaatii työpöytäsovelluksen + Merged 1 file into {path} Yhdistettiin 1 tiedosto kohteeseen {path} + Merged {n} files into {path} Yhdistettiin {n} tiedostoa kohteeseen {path} + Combined {n} files Yhdistettiin {n} tiedostoa + Extracted 1 page Poimittiin 1 sivu + Extracted {n} pages Poimittiin {n} sivua + Created a comment summary Luotiin kommenttien yhteenveto + Couldn't open {name}: {e} Tiedoston {name} avaaminen epäonnistui: {e} + Couldn't read {name}: {e} Tiedoston {name} lukeminen epäonnistui: {e} + Couldn't save: {e} Tallennus epäonnistui: {e} + Downloading attachments on the web arrives with M3.10 ({n} bytes ready) Liitteiden lataus verkkoversiossa tulee versiossa M3.10 ({n} tavua valmiina) + `{command}` {when} `{command}` {when} + ships in milestone {m} tulee versiossa {m} + needs an AI provider (off by default) vaatii tekoälypalvelun (oletuksena pois päältä) + is available on käytettävissä + is not available yet ei ole vielä käytettävissä + {label} failed: {e} {label} epäonnistui: {e} + Undid {label} Kumottiin: {label} + Redid {label} Tehtiin uudelleen: {label} + A document needs at least one page: copy instead Asiakirjassa on oltava vähintään yksi sivu: kopioi sen sijaan + Cut {what} Leikattiin {what} + Copied {what} Kopioitiin {what} + 1 page 1 sivu + {n} pages {n} sivua + Copy or cut pages first Kopioi tai leikkaa ensin sivuja + Couldn't save {name}: {e} Tiedoston {name} tallennus epäonnistui: {e} + Saved {name} Tallennettiin {name} + Saved, but reopening failed: {e} Tallennettiin, mutta uudelleen avaaminen epäonnistui: {e} + Downloaded {name} Ladattiin {name} + Couldn't download {name}: {e} Tiedoston {name} lataus epäonnistui: {e} + Reverted to the last saved version Palautettiin viimeksi tallennettu versio + That didn't work: an internal error stopped it ({m}). Your documents are unchanged. Toiminto epäonnistui sisäisen virheen vuoksi ({m}). Asiakirjasi ovat ennallaan. + Nothing to undo Ei kumottavaa + Nothing to redo Ei uudelleen tehtävää + This document has no form fields you can fill in Tässä asiakirjassa ei ole täytettäviä lomakekenttiä + This document has no comments to flatten Tässä asiakirjassa ei ole litistettäviä kommentteja + This document has no form fields to flatten Tässä asiakirjassa ei ole litistettäviä lomakekenttiä + There are no redaction marks (mark text, areas or pages first) Peittomerkintöjä ei ole (merkitse ensin tekstiä, alueita tai sivuja) + This document has no {kind} to change Tässä asiakirjassa ei ole muutettavaa: {kind} + header or footer ylä- tai alatunniste + watermark vesileima + background tausta + This document isn't password-protected Tätä asiakirjaa ei ole suojattu salasanalla + Enter permissions password… Anna käyttöoikeuksien salasana… + Permissions password Käyttöoikeuksien salasana + “{name}” has security restrictions. Enter its permissions password to lift them. Asiakirjassa ”{name}” on suojausrajoituksia. Poista ne antamalla käyttöoikeuksien salasana. + Restrictions lifted Rajoitukset poistettu + Couldn't unlock {name}: {e} Tiedoston {name} lukituksen avaaminen epäonnistui: {e} + This document has no restrictions to lift Tässä asiakirjassa ei ole poistettavia rajoituksia + The document's security settings don't allow this change Asiakirjan suojausasetukset eivät salli tätä muutosta + The document's security settings don't allow copying text and images Asiakirjan suojausasetukset eivät salli tekstin ja kuvien kopiointia + Open a document first Avaa ensin asiakirja + Security will be removed when you save Suojaus poistetaan tallennettaessa + Click text or an image to edit it Muokkaa tekstiä tai kuvaa napsauttamalla sitä + Drag a rectangle to create a link; double-click a link to edit it Luo linkki vetämällä suorakulmio; muokkaa linkkiä kaksoisnapsauttamalla sitä + There are no redaction marks to apply Käytettäviä peittomerkintöjä ei ole + Drag to draw the area where the signature should appear. Piirrä vetämällä alue, jolle allekirjoitus sijoitetaan. + Couldn't fit the visible content: {e} Näkyvän sisällön sovittaminen epäonnistui: {e} + Drag a rectangle around the area to copy Vedä suorakulmio kopioitavan alueen ympärille + Click on the page to add a {tool}, or drag to set its size Lisää {tool} napsauttamalla sivua tai aseta koko vetämällä + Drag a rectangle on a page to crop it; double-click a page for Set Page Boxes Rajaa sivu vetämällä suorakulmio; kaksoisnapsauta sivua avataksesi Aseta sivulaatikot + Keep tool selected: on Pidä työkalu valittuna: käytössä + Keep tool selected Pidä työkalu valittuna + Opacity Peittävyys + Line thickness Viivan paksuus + What word or phrase would you like to search for? Mitä sanaa tai ilmausta haluat hakea? + Searching… {s} of {p} pages Haetaan… {s}/{p} sivua + (searching… {s} of {p} pages) (haetaan… {s}/{p} sivua) + 1 instance 1 osuma + {n} instances {n} osumaa + Go to this result Siirry tähän tulokseen + Highlight Korosta + Draw Piirrä + Polygon Monikulmio + Connected lines Yhdistetyt viivat + Eraser Pyyhekumi + Sign Allekirjoita + Certified by {by} Varmentaja: {by} + At least one signature is invalid. Vähintään yksi allekirjoitus on virheellinen. + Signed and all signatures are valid. Allekirjoitettu, ja kaikki allekirjoitukset ovat kelvollisia. + At least one signature has problems. Vähintään yhdessä allekirjoituksessa on ongelmia. + This document is secured. Some changes are restricted by its security settings. Tämä asiakirja on suojattu. Sen suojausasetukset rajoittavat joitakin muutoksia. + This is a dynamic XFA form, which PdfCraft can't display yet. What you see is the file's placeholder page. Tämä on dynaaminen XFA-lomake, jota PdfCraft ei vielä osaa näyttää. Näet tiedoston paikkamerkkisivun. + This form also contains XFA data, which PdfCraft doesn't read yet. You can fill its fields, but Acrobat may show the XFA values instead. Tämä lomake sisältää myös XFA-tietoja, joita PdfCraft ei vielä lue. Voit täyttää kentät, mutta Acrobat saattaa näyttää XFA-arvot niiden sijaan. + This document contains {n} interactive form fields. Tässä asiakirjassa on {n} vuorovaikutteista lomakekenttää. + This file was damaged and has been repaired. Saving keeps the repaired version. Tämä tiedosto oli vioittunut, ja se on korjattu. Tallennus säilyttää korjatun version. + Dismiss Sulje + Hide field highlights Piilota kenttien korostus + Highlight fields Korosta kentät + Security settings Suojausasetukset + Details Tiedot + Select (V) Valitse (V) + Hand (H) Käsi (H) + Delete pages (Delete) Poista sivut (Delete) + Insert a blank page after the selection Lisää tyhjä sivu valinnan jälkeen + Insert pages from a file… Lisää sivuja tiedostosta… + Extract pages to a new document Poimi sivut uuteen asiakirjaan + Split into files… Jaa tiedostoiksi… + Select pages Valitse sivut + Cut Leikkaa + Copy Kopioi + Paste after Liitä jälkeen + Rename Nimeä uudelleen + Set to current page ({n}) Aseta nykyiseksi sivuksi ({n}) + Move up Siirrä ylös + Move down Siirrä alas + Indent Sisennä + Outdent Poista sisennys + This document has no form fields. Tässä asiakirjassa ei ole lomakekenttiä. + Tab order: move a field with its arrows. Sarkainjärjestys: siirrä kenttää sen nuolilla. + Unplaced Sijoittamaton + Has JavaScript actions (run in M6) Sisältää JavaScript-toimintoja (suoritetaan M6:ssa) + Page Sivu + None Ei mitään + Delete selected fields Poista valitut kentät + Diagnostic details Diagnostiikkatiedot + The operation failed. Toiminto epäonnistui. + no such document asiakirjaa ei ole + nothing to undo ei kumottavaa + nothing to redo ei uudelleen tehtävää + this document is signed: rewriting it would invalidate its signatures (save it incrementally instead) tämä asiakirja on allekirjoitettu: sen uudelleenkirjoittaminen mitätöisi allekirjoitukset (tallenna se sen sijaan lisäävästi) + the document is protected by a password asiakirja on suojattu salasanalla + the password is incorrect salasana on väärä + the document has no page tree asiakirjassa ei ole sivupuuta + a document must keep at least one page asiakirjassa on oltava vähintään yksi sivu + a bookmark cannot be moved inside itself kirjanmerkkiä ei voi siirtää itsensä sisään + the title must not be empty otsikko ei saa olla tyhjä + the document has no form fields asiakirjassa ei ole lomakekenttiä + there are no redaction marks to apply käytettäviä peittomerkintöjä ei ole + there are no pages to print tulostettavia sivuja ei ole + the document has no tags asiakirjassa ei ole tageja + {0}: {1} {0}: {1} + the text recognition models are not installed (reinstall PdfCraft, or set PDFCRAFT_MODELS to the folder that holds them) tekstintunnistusmalleja ei ole asennettu (asenna PdfCraft uudelleen tai aseta PDFCRAFT_MODELS osoittamaan mallien kansioon) + the image is empty kuva on tyhjä + this file isn't XFDF, FDF, XML or text form data tämä tiedosto ei ole XFDF-, FDF-, XML- tai tekstimuotoista lomaketietoa + nothing in the file matches this document mikään tiedostossa ei vastaa tätä asiakirjaa + This page couldn't be displayed.\n{e} Tätä sivua ei voitu näyttää.\n{e} + Go to page {p} Siirry sivulle {p} + {s} action Toiminto {s} + Page {p} of {n} Sivu {p}/{n} + 1 page selected 1 sivu valittu + {n} pages selected {n} sivua valittu + {name} — unsaved changes {name} — tallentamattomia muutoksia + {kind} field {kind}-kenttä + Select a file for the stamp Valitse tiedosto leimaa varten + JavaScript, e.g. getField("total").value JavaScript, esim. getField("total").value + Font: Helvetica Fontti: Helvetica + e.g. en-US esim. en-US + Rendering: hayro (bootstrap) · UI: egui · Icons: Lucide (ISC) · Fonts: Inter, JetBrains Mono, Dancing Script (OFL) Renderöinti: hayro (bootstrap) · Käyttöliittymä: egui · Kuvakkeet: Lucide (ISC) · Fontit: Inter, JetBrains Mono, Dancing Script (OFL) + CheckBox Valintaruutu + Radio Valintanappi + PushButton Painike + Combo Yhdistelmäruutu + List Luettelo + Unknown Tuntematon + The document has no XMP metadata Asiakirjassa ei ole XMP-metatietoja + The title in the metadata and the document information differ Metatietojen ja asiakirjan tietojen otsikot eroavat + The document is encrypted Asiakirja on salattu + Device colour is used, but there is no PDF/A output intent Laiteväriä käytetään, mutta PDF/A-tulosteprofiilia ei ole + DeviceCMYK is used: it needs a CMYK output intent (not added automatically) DeviceCMYK on käytössä: se vaatii CMYK-tulosteprofiilin (ei lisätä automaattisesti) + The document has additional actions (/AA) Asiakirjassa on lisätoimintoja (/AA) + The document has document-level JavaScript Asiakirjassa on asiakirjatason JavaScriptiä + The form asks viewers to make appearances (NeedAppearances) Lomake pyytää katseluohjelmia luomaan ulkoasut (NeedAppearances) + A form field has additional actions Lomakekentällä on lisätoimintoja + A stream uses LZW compression Virta käyttää LZW-pakkausta + A stream refers to an external file Virta viittaa ulkoiseen tiedostoon + An image asks to be interpolated Kuva pyytää interpolointia + An image has alternates or OPI information Kuvalla on vaihtoehtoisia kuvia tai OPI-tietoja + PostScript XObjects aren't allowed PostScript-XObjecteja ei sallita + Embedded files must be PDF/A files themselves (use PDF/A-3 for others) Upotettujen tiedostojen on oltava itsekin PDF/A-tiedostoja (käytä muille PDF/A-3:a) + An embedded file has no AFRelationship Upotetulla tiedostolla ei ole AFRelationship-arvoa + Select Icon Valitse kuvake + Choose images Valitse kuvat + {dpi} pixels/inch {dpi} pikseliä/tuuma + Type your {what}. Kirjoita {what}. + Draw your {what} below. Piirrä {what} alle. + Your name Nimesi + Images and text (converted to PDF) Kuvat ja teksti (muunnetaan PDF:ksi) + Images and text Kuvat ja teksti + Check Box Style: Valintaruudun tyyli: + Button Style: Painikkeen tyyli: + Check Valintamerkki + Circle Ympyrä + Diamond Vinoneliö + Square Neliö + Star Tähti + {month} {y} {month} {y} + Change {key} Muuta: {key} + Insert pages from {name} Lisää sivuja tiedostosta {name} + Insert pages from {name} — 1 field renamed Lisää sivuja tiedostosta {name} — 1 kenttä nimetty uudelleen + Insert pages from {name} — fields renamed Lisää sivuja tiedostosta {name} — kenttiä nimetty uudelleen + Fill in {name} Täytä {name} + Set the image of {name} Aseta kentän {name} kuva + Edit script of {name} Muokkaa kentän {name} komentosarjaa + Import {name} Tuo {name} + Add bookmark Lisää kirjanmerkki + Rename bookmark Nimeä kirjanmerkki uudelleen + Delete bookmark Poista kirjanmerkki + Move bookmark Siirrä kirjanmerkki + Set bookmark destination Aseta kirjanmerkin kohde + Add stamp Lisää leima + Delete comment Poista kommentti + Edit comment Muokkaa kommenttia + Erase Pyyhi + Lock comment Lukitse kommentti + Unlock comment Avaa kommentin lukitus + Move comment Siirrä kommenttia + Resize comment Muuta kommentin kokoa + Change comment properties Muuta kommentin ominaisuuksia + Add field Lisää kenttä + Change field properties Muuta kentän ominaisuuksia + Delete field Poista kenttä + Duplicate field Monista kenttä + Set tab order Aseta sarkainjärjestys + Change initial view Muuta aloitusnäkymää + Set alternate text Aseta vaihtoehtoinen teksti + Mark figure as decorative Merkitse kuvio koristeelliseksi + Run JavaScript Suorita JavaScript + Delete document JavaScript Poista asiakirjan JavaScript + Edit document JavaScript Muokkaa asiakirjan JavaScriptiä + Edit text Muokkaa tekstiä + Load document font Lataa asiakirjan fontti + Move image Siirrä kuvaa + Rotate image Kierrä kuvaa + Flip image Käännä kuva + Delete image Poista kuva + Add header & footer Lisää ylä- ja alatunniste + Update header & footer Päivitä ylä- ja alatunniste + Update watermark Päivitä vesileima + Add background Lisää tausta + Update background Päivitä tausta + Add image Lisää kuva + Edit content Muokkaa sisältöä + Delete content Poista sisältö + Remove redaction marks Poista peittomerkinnät + Add link Lisää linkki + Change link properties Muuta linkin ominaisuuksia + Delete link Poista linkki + Create link Luo linkki + Flatten Litistä + Add sticky note Lisää muistilappu + Add highlight Lisää korostus + Add underline Lisää alleviivaus + Add strikethrough Lisää yliviivaus + Add squiggly underline Lisää aaltoviiva-alleviivaus + Add rectangle Lisää suorakulmio + Add oval Lisää soikio + Add arrow Lisää nuoli + Add line Lisää viiva + Add drawing Lisää piirros + Add text box Lisää tekstiruutu + Add checkmark Lisää valintamerkki + Add cross Lisää risti + Add dot Lisää piste + Add signature Lisää allekirjoitus + Add redaction mark Lisää peittomerkintä + Add cloud Lisää pilvi + Add polygon Lisää monikulmio + Add connected lines Lisää yhdistetyt viivat + Add callout Lisää selitelaatikko + Add inserted text Lisää lisäysteksti + Add file attachment Lisää tiedostoliite + Set status Accepted Aseta tila Hyväksytty + Set status Rejected Aseta tila Hylätty + Set status Cancelled Aseta tila Peruttu + Set status Completed Aseta tila Valmis + Set status None Aseta tila Ei mitään + Set status Unmarked Aseta tila Merkitsemätön + Save as PDF/A-1b Tallenna PDF/A-1b-muodossa + Save as PDF/A-2b Tallenna PDF/A-2b-muodossa + Save as PDF/A-3b Tallenna PDF/A-3b-muodossa + Fill & Sign: change signature Täytä ja allekirjoita: vaihda allekirjoitus + Fill & Sign: change initials Täytä ja allekirjoita: vaihda nimikirjaimet + Fill & Sign: remove saved signature Täytä ja allekirjoita: poista tallennettu allekirjoitus + Fill & Sign: remove saved initials Täytä ja allekirjoita: poista tallennetut nimikirjaimet + Change signature Vaihda allekirjoitus + Change initials Vaihda nimikirjaimet + Measure distance Mittaa etäisyys + Measure perimeter Mittaa ympärysmitta + Measure area Mittaa pinta-ala + Set measurement scale Aseta mittakaava + Measurement information Mittaustiedot + Measurement snapping Mittauksen tartunta + Export measurements as CSV Vie mittaukset CSV-muodossa + Distance Etäisyys + Perimeter Ympärysmitta + Area Pinta-ala + Drawing scale Piirustuksen mittakaava + Snapping Tartunta + Export measurements Vie mittaukset + Open a PDF to measure it. Avaa PDF mitataksesi sitä. + Click vertices. Enter or double-click finishes a perimeter or area. Click the first point to close an area. Napsauta kärkipisteitä. Enter tai kaksoisnapsautus päättää ympärysmitan tai alueen. Sulje alue napsauttamalla ensimmäistä pistettä. + Shift constrains to 45 degrees. Backspace removes a vertex. Escape cancels. Vaihto rajoittaa 45 asteeseen. Askelpalautin poistaa kärkipisteen. Esc peruuttaa. + Angle Kulma + Click the first point to begin. Aloita napsauttamalla ensimmäistä pistettä. + Snap to drawing Tartu piirustukseen + Endpoints Päätepisteet + Midpoints Keskipisteet + Intersections Leikkauspisteet + Paths Polut + Sensitivity Herkkyys + Unit Yksikkö + Decimals Desimaalit + Calibrate from two points Kalibroi kahdesta pisteestä + Entire page Koko sivu + Viewport rectangle in page points (x, y, width, height) Näkymäikkunan suorakulmio sivun pisteinä (x, y, leveys, korkeus) + Viewport Näkymäikkuna + Apply scale Käytä mittakaavaa + Saved measurements Tallennetut mittaukset + Saved measurements. Mittaukset tallennettu. + Endpoint Päätepiste + Midpoint Keskipiste + Intersection Leikkauspiste + Path Polku + This drawing exceeds the snapping limit; only the first paths are used. Tämä piirustus ylittää tartunnan rajan; vain ensimmäiset polut käytetään. + Some page content couldn't be read; snapping uses the rest. Osaa sivun sisällöstä ei voitu lukea; tartunta käyttää loput. + Unsupported measurements Ei-tuetut mittaukset + Label Nimiö + {n} measurements use an unsupported format and are left out. {n} mittausta käyttää ei-tuettua muotoa, ja ne jätetään pois. + This area has too many overlapping paths; intersection snapping is limited. Tällä alueella on liian monta päällekkäistä polkua; leikkauspisteiden tartunta on rajoitettu. + This measurement needs at least {n} points. Tämä mittaus vaatii vähintään {n} pistettä. + Change {what} Muuta: {what} + Cut and stack Leikkaa ja pinoa + Default workspace mode Työtilan oletustila + Documents and view Asiakirjat ja näkymä + Open email app Avaa sähköpostisovellus + Open link Avaa linkki + Open this web page? Avataanko tämä verkkosivu? + Scripts run in a sandbox without file or network access. A script that asks to open a web page needs your permission first. With JavaScript off, Acrobat's standard format, validate and calculate functions still work. Komentosarjat suoritetaan eristetyssä ympäristössä ilman tiedosto- tai verkkoyhteyttä. Verkkosivun avaamista pyytävä komentosarja tarvitsee ensin luvan. Kun JavaScript on pois päältä, Acrobatin vakiomuotoilu-, tarkistus- ja laskentafunktiot toimivat silti. + Sign yourself Allekirjoita itse + Used when opening PDFs. An explicit launch or control mode takes precedence for the session. Käytetään PDF-tiedostoja avattaessa. Erikseen määritetty käynnistys- tai ohjaustila on etusijalla istunnon ajan. + Write this email? Kirjoitetaanko tämä sähköposti? + {who} in this document wants to open this address in your browser: {who} tässä asiakirjassa haluaa avata tämän osoitteen selaimessa: + {who} in this document wants to open your email app with this address: {who} tässä asiakirjassa haluaa avata sähköpostisovelluksen tällä osoitteella: + This web address mixes letters from different alphabets, a common way to imitate another site's name. Tämä verkko-osoite sekoittaa eri aakkostojen kirjaimia, mikä on yleinen tapa jäljitellä toisen sivuston nimeä. + This web address uses letters from another alphabet, which can look like familiar ones. Tämä verkko-osoite käyttää toisen aakkoston kirjaimia, jotka voivat näyttää tutuilta. + Create PDF from images Luo PDF kuvista + Selected image files: {count} Valitut kuvatiedostot: {count} + Use image resolution Käytä kuvan tarkkuutta + Use each image's embedded DPI; use 72 DPI when it is absent. Käytä kunkin kuvan upotettua DPI-arvoa; käytä 72 DPI:tä, jos sitä ei ole. + Use 72 DPI (one point per pixel) Käytä 72 DPI:tä (yksi piste pikseliä kohden) + Use custom DPI Käytä mukautettua DPI-arvoa + DPI sets the printed page size without resampling the image. DPI määrittää tulostetun sivun koon kuvaa uudelleennäytteistämättä. + Create Luo + Dynamic XFA form laid out from its template: {pages}, {fields}. Dynaaminen XFA-lomake asemoitu mallistaan: {pages}, {fields}. + This form's scripts are turned off because one ran too long. Reopen the document to run them again. Tämän lomakkeen komentosarjat on poistettu käytöstä, koska yksi kesti liian kauan. Suorita ne uudelleen avaamalla asiakirja uudelleen. + XFA form: its fields and its XFA data are kept in step, so other viewers show what you fill in. XFA-lomake: kentät ja XFA-tiedot pidetään synkronoituina, joten muut katseluohjelmat näyttävät täyttämäsi tiedot. + Switch to two-page view first to show the cover page Vaihda ensin kahden sivun näkymään, jotta kansisivu näkyy + Page display: {layout} Sivun näyttö: {layout} + Fit to width scrolling Leveyteen sovitettu vieritys + Fit one full page Sovita yksi koko sivu + Default page display Sivun oletusnäyttö + Default zoom Oletuszoomaus + Used when a PDF doesn't ask for a layout or zoom. Continuous scrolling never snaps between pages. Käytetään, kun PDF ei määritä asettelua tai zoomausta. Jatkuva vieritys ei koskaan pysähdy sivujen kohdalle. + Choose a PNG or JPEG image (up to 4 MiB). Transparency is preserved. Valitse PNG- tai JPEG-kuva (enintään 4 MiB). Läpinäkyvyys säilyy. + Couldn't import the signature image: {e} Allekirjoituskuvan tuonti epäonnistui: {e} +@plural {n} page|{n} pages {n} sivu|{n} sivua +@plural {n} field|{n} fields {n} kenttä|{n} kenttää +@plural {n} field name collides with earlier files and will be renamed: {list}|{n} field names collide with earlier files and will be renamed: {list} {n} kentän nimi on päällekkäinen aiempien tiedostojen kanssa ja nimetään uudelleen: {list}|{n} kentän nimeä on päällekkäisiä aiempien tiedostojen kanssa ja nimetään uudelleen: {list} + Create PDF from multiple files… Luo PDF useista tiedostoista… + Create separate PDFs… Luo erilliset PDF:t… + Optimizing… removing user data Optimoidaan… poistetaan käyttäjätietoja + Optimizing… image {d} of {t} Optimoidaan… kuva {d}/{t} + Optimizing… cleaning up Optimoidaan… siivotaan + Optimizing… merging identical objects Optimoidaan… yhdistetään identtisiä objekteja + Optimizing… writing the copy Optimoidaan… kirjoitetaan kopiota + Cancelling… Peruutetaan… + Created a PDF from {n} files Luotiin PDF {n} tiedostosta + PDF, images and text PDF, kuvat ja teksti + Insert a file before page {label} Lisää tiedosto ennen sivua {label} + Insert a file at the end Lisää tiedosto loppuun + Save pages Tallenna sivut + Save these pages as one PDF Tallenna nämä sivut yhtenä PDF:nä + No changes to save Ei tallennettavia muutoksia + Created a PDF from {n} files; left out: {names} Luotiin PDF {n} tiedostosta; pois jätettiin: {names} + Created a PDF from the first {n} files Luotiin PDF ensimmäisistä {n} tiedostosta + Go to page… Siirry sivulle… + Optimization is already running Optimointi on jo käynnissä + Optimization cancelled Optimointi peruutettu + Couldn't optimize the file Tiedoston optimointi epäonnistui + Files are combined in this order. Leave Pages empty to take every page. Tiedostot yhdistetään tässä järjestyksessä. Jätä Sivut tyhjäksi, niin kaikki sivut otetaan mukaan. + Portable mode is off: {folder} can't be written ({error}). Settings are kept in your user folder instead. Kannettava tila on pois päältä: kansioon {folder} ei voi kirjoittaa ({error}). Asetukset tallennetaan sen sijaan käyttäjäkansioon. + PdfCraft is drawing without a graphics processor, so it may be slow. Updating the graphics driver may help. PdfCraft piirtää ilman grafiikkasuoritinta, joten se voi olla hidas. Näytönohjaimen ajurin päivittäminen voi auttaa. + Show Näytä + Sort Lajittele + Reverse the order Käännä järjestys + Grab bag Sekalaiset + Table Taulukko + Username Käyttäjänimi + Display name Näyttönimi + Real name Oikea nimi + Name (A–Z) Nimi (A–Ö) + Merged PRs Yhdistetyt PR:t + PRs PR:t + Commits Commitit + Lines added Lisätyt rivit + +LOC +LOC + Lines deleted Poistetut rivit + −LOC −LOC + Line delta Rivimuutos + ΔLOC ΔLOC + Binary assets added Lisätyt binääritiedostot + +Bin +Bin + Binary assets removed Poistetut binääritiedostot + −Bin −Bin + First commit Ensimmäinen commit + First Ensimmäinen + Last commit Viimeisin commit + Last Viimeisin + No contributor data was built into this copy. Tähän kopioon ei ole sisällytetty tekijätietoja. + No model credits were built into this copy. Tähän kopioon ei ole sisällytetty mallien tekijätietoja. + {n} contributors · {c} commits {n} tekijää · {c} committia + Company Yritys + Model Malli + % of all commits % kaikista commiteista + Lines +/− Rivit +/− + @{login}: {prs} PRs, {commits} commits, +{added} / −{deleted} lines (Δ {delta}), +{bin_added} / −{bin_deleted} binary assets, {first} – {last} @{login}: {prs} PR:ää, {commits} committia, +{added} / −{deleted} riviä (Δ {delta}), +{bin_added} / −{bin_deleted} binääritiedostoa, {first} – {last} + None of those files can be made into a PDF; use PDFs, images or .txt files Mistään näistä tiedostoista ei voi tehdä PDF:ää; käytä PDF-, kuva- tai .txt-tiedostoja + About Tietoja + Contributors Osallistujat + Models Mallit + Only continue if you trust this document. An address can carry information from the document, such as what you typed into its form. Jatka vain, jos luotat tähän asiakirjaan. Osoite voi välittää tietoja asiakirjasta, kuten lomakkeeseen kirjoittamasi tekstin. + Print single-sided. Keep the sheets in order, cut at the marks, then stack the piles left to right, top to bottom. Tulosta yksipuolisena. Pidä arkit järjestyksessä, leikkaa merkkien kohdalta ja pinoa sitten pinot vasemmalta oikealle, ylhäältä alas. +comment menu Edit Muokkaa + Undo {action} Kumoa {action} + Redo {action} Tee uudelleen {action} +signature pad Type Kirjoita +action wizard Start Aloita +calendar date January tammikuuta +calendar date February helmikuuta +calendar date March maaliskuuta +calendar date April huhtikuuta +calendar date May toukokuuta +calendar date June kesäkuuta +calendar date July heinäkuuta +calendar date August elokuuta +calendar date September syyskuuta +calendar date October lokakuuta +calendar date November marraskuuta +calendar date December joulukuuta + Reopen the files that were open when PdfCraft last closed Avaa uudelleen tiedostot, jotka olivat auki, kun PdfCraft viimeksi suljettiin + Clear Recent Files Tyhjennä viimeisimmät tiedostot + Remove from Recent Poista viimeisimmistä + Remove {name} from Recent Poista {name} viimeisimmistä + Inserted text Lisätty teksti + Add {what} Lisää {what} + Use {what} Käytä {what} + Place saved {what} Sijoita tallennettu {what} + Remove saved {what} Poista tallennettu {what} + A link Linkki + A button Painike + A script Komentosarja + {who} in this document tried to open an address PdfCraft won't open: {e}. Tämän asiakirjan {who} yritti avata osoitteen, jota PdfCraft ei avaa: {e}. + {who} in this document tried to open an address PdfCraft won't open: {e}. Only web (http, https) and email (mailto) links open from documents. Tämän asiakirjan {who} yritti avata osoitteen, jota PdfCraft ei avaa: {e}. Asiakirjoista avautuvat vain verkkolinkit (http, https) ja sähköpostilinkit (mailto). + Another file dialog is still open. Finish with it first. Toinen tiedostoikkuna on vielä auki. Sulje se ensin. + Couldn't show the file picker. Please try again. Tiedostovalitsinta ei voitu näyttää. Yritä uudelleen. + The document changed while you were choosing a file, so nothing was changed. Asiakirja muuttui tiedoston valinnan aikana, joten mitään ei muutettu. + The document was closed before it could be saved. Asiakirja suljettiin ennen kuin se ehdittiin tallentaa. + The pages were extracted but not deleted, because the document changed while you were choosing a folder. Sivut poimittiin mutta niitä ei poistettu, koska asiakirja muuttui kansion valinnan aikana. + That didn't work: an internal error stopped it ({m}). Toiminto epäonnistui sisäisen virheen vuoksi ({m}). + The Windows store's digital IDs couldn't be listed: {e} Windowsin varmennesäilön digitaalisia tunnuksia ei voitu luetella: {e} + Align fields Tasaa kentät + Distribute fields Jaa kentät tasaisesti + Match field sizes Yhtenäistä kenttien koot + Mark for redaction Merkitse peitettäväksi + Mark pages for redaction Merkitse sivut peitettäviksi + Change document properties Muuta asiakirjan ominaisuuksia + Mark differences Merkitse erot + Run form script Suorita lomakkeen komentosarja + Scripted content must be usable with a keyboard and assistive technology. Check the document's scripts. Komentosarjasisällön on oltava käytettävissä näppäimistöllä ja apuvälineillä. Tarkista asiakirjan komentosarjat. + Table rows belong directly in a table or its head, body or foot. Fix the table's tags. Taulukon rivien on oltava suoraan taulukossa tai sen otsake-, runko- tai alaosassa. Korjaa taulukon tagit. + Basic constraints Perusrajoitukset + Certificate authority Varmentaja + End entity Loppuyksikkö + SHA-1 digest SHA-1-tiiviste + SHA-256 digest SHA-256-tiiviste + Squiggly Aaltoviiva + Home / End Home / End + H / Space (hold) H / Välilyönti (pidä pohjassa) + Rotation: Kierto: + Line ending Viivan pää + Open arrow Avoin nuoli + Closed arrow Suljettu nuoli + Butt Tasapää + Reverse open arrow Käänteinen avoin nuoli + Reverse closed arrow Käänteinen suljettu nuoli + Slash Vinoviiva + The PDF text fonts can't draw “{c}” ({code}). Choose supported text. PDF-tekstifontit eivät pysty piirtämään merkkiä ”{c}” ({code}). Valitse tuettua tekstiä. + The standard fonts can't draw “{c}” ({code}). Only Western European characters can be added as text for now. Vakiofontit eivät pysty piirtämään merkkiä ”{c}” ({code}). Toistaiseksi tekstinä voi lisätä vain länsieurooppalaisia merkkejä. + This field's font can't draw “{c}” ({code}), so PdfCraft shows ? in its place. The value is saved, and other PDF viewers redraw the field from it. Tämän kentän fontti ei pysty piirtämään merkkiä ”{c}” ({code}), joten PdfCraft näyttää sen tilalla merkin ?. Arvo tallennetaan, ja muut PDF-katseluohjelmat piirtävät kentän sen perusteella uudelleen. + The fonts PdfCraft writes with can't draw “{c}” ({code}), so it shows as ? in every PDF viewer. The text is saved. PdfCraftin käyttämät fontit eivät pysty piirtämään merkkiä ”{c}” ({code}), joten se näkyy merkkinä ? kaikissa PDF-katseluohjelmissa. Teksti tallennetaan. + Larger pages Suuremmat sivut + Smaller pages Pienemmät sivut + Reset page size Palauta sivukoko + Flatten Fill & Sign when saving Litistä Täytä ja allekirjoita -sisältö tallennettaessa + Text, marks and signatures become part of the page. Other comments stay editable. Tekstit, merkit ja allekirjoitukset tulevat osaksi sivua. Muut kommentit pysyvät muokattavina. + Date format Päivämäärän muoto + Fill & Sign dates Täytä ja allekirjoita -päivämäärät + Pattern Malli + Today: {date} Tänään: {date} + yyyy or yy year · m or mm month · mmm or mmmm month name · d or dd day · ddd or dddd weekday. H, h, M, s and t are time letters and can't be used on their own: put {escape} before a letter to show it as is. yyyy tai yy vuosi · m tai mm kuukausi · mmm tai mmmm kuukauden nimi · d tai dd päivä · ddd tai dddd viikonpäivä. H, h, M, s ja t ovat aikakirjaimia, eikä niitä voi käyttää yksinään: lisää {escape} kirjaimen eteen, jotta se näkyy sellaisenaan. + Same as interface ({language}) Sama kuin käyttöliittymä ({language}) + {chars} can't be written into the PDF yet: Fill & Sign text is Western European only. Pick a numeric format such as dd.mm.yyyy. Merkkejä {chars} ei voi vielä kirjoittaa PDF:ään: Täytä ja allekirjoita -teksti tukee vain länsieurooppalaisia merkkejä. Valitse numeerinen muoto, kuten dd.mm.yyyy. + Opens the printer driver's preferences. They are saved for every print from this computer; the copies, two-sided, grayscale and paper chosen here still apply. Avaa tulostinohjaimen asetukset. Ne tallennetaan kaikkiin tämän tietokoneen tulostuksiin; tässä valitut kopiot, kaksipuolisuus, harmaasävy ja paperi ovat silti voimassa. + The printer driver's own settings for this print: paper tray, paper type, finishing and more. Tulostinohjaimen omat asetukset tälle tulostukselle: paperilokero, paperityyppi, viimeistely ym. + Couldn't open the printer's preferences: {e} Tulostimen asetuksia ei voitu avata: {e} + Printer properties Tulostimen ominaisuudet + Reset to printer defaults Palauta tulostimen oletukset + This printer offers no settings of its own. Tällä tulostimella ei ole omia asetuksia. +certificate Subject Kohde + Scroll tabs left Vieritä välilehtiä vasemmalle + Scroll tabs right Vieritä välilehtiä oikealle + Shared Field Properties Yhteiset kenttäominaisuudet + {n} fields selected {n} kenttää valittu + Mixed Vaihteleva + Custom font Mukautettu fontti + Only checked properties will change. Mixed means the selected fields have different values. Vain rastitetut ominaisuudet muuttuvat. Vaihteleva tarkoittaa, että valituilla kentillä on eri arvot. + Shift- or Ctrl/Command-click to select several fields. Valitse useita kenttiä napsauttamalla Vaihto- tai Ctrl/Command-näppäin painettuna. + Font size 0 uses automatic sizing. Fonttikoko 0 käyttää automaattista kokoa. + Character limit: Merkkirajoitus: + Character limit 0 means no limit. A comb of characters needs a limit. Merkkirajoitus 0 tarkoittaa, ettei rajoitusta ole. Merkkiruudukko vaatii rajoituksen. + To change locked fields, also set Locked to No. Jos haluat muuttaa lukittuja kenttiä, aseta myös Lukittu-arvoksi Ei. + Comb of characters Merkkiruudukko + The document changed while you were editing field properties. Asiakirja muuttui kenttäominaisuuksien muokkauksen aikana. + The document is no longer open. Asiakirja ei ole enää auki. + The field properties dialog is no longer open. Kenttäominaisuuksien valintaikkuna ei ole enää auki. + The field properties could not be changed. Kenttäominaisuuksia ei voitu muuttaa. + The selected fields could not be found. Select them again. Valittuja kenttiä ei löytynyt. Valitse ne uudelleen. + The field {name} no longer exists. Kenttää {name} ei ole enää olemassa. + A selected field has no widget on any page, so the fields can't be edited together. Yhdellä valituista kentistä ei ole kenttäelementtiä millään sivulla, joten kenttiä ei voi muokata yhdessä. + Text recognition isn't installed: its models are missing (run `cargo xtask models`, or set PDFCRAFT_MODELS). Tekstintunnistusta ei ole asennettu: sen mallit puuttuvat (suorita `cargo xtask models` tai aseta PDFCRAFT_MODELS). + ({n} at {dpi} dpi, the largest size they can be drawn at) ({n} tarkkuudella {dpi} dpi, suurin koko, jolla ne voidaan piirtää) + Margins Reunukset + For page sizes and margins. Sivukokoja ja reunuksia varten. +@plural {n} object selected|{n} objects selected {n} objekti valittu|{n} objektia valittu + Drag the selection to move it. Esc clears the selection. Siirrä valintaa vetämällä. Esc tyhjentää valinnan. + Shift-click to select several objects. Drag empty space to select an area. Valitse useita objekteja Vaihto-napsautuksella. Valitse alue vetämällä tyhjästä kohdasta. + Select at most 1000 objects at a time. Valitse enintään 1000 objektia kerrallaan. + Finish or discard the text being edited before selecting several objects. Viimeistele tai hylkää muokattava teksti ennen useiden objektien valitsemista. + Move object Siirrä objekti + Move objects Siirrä objektit + Vertical text cannot be moved with this selection. Pystysuoraa tekstiä ei voi siirtää tällä valinnalla. + Text used as a clipping path cannot be moved with this selection. Leikkauspolkuna käytettyä tekstiä ei voi siirtää tällä valinnalla. + These objects could not be moved. Select them again and try a smaller move. Objekteja ei voitu siirtää. Valitse ne uudelleen ja kokeile pienempää siirtoa. + This page contains objects that cannot be selected together. Tällä sivulla on objekteja, joita ei voi valita yhdessä. + Fill colour Täyttöväri + No fill Ei täyttöä + Fill colour: none Täyttöväri: ei mitään +key Ctrl Ctrl +key Shift Vaihto +key Delete Delete +key Esc Esc +key Home Home +key End End +key Space Välilyönti + Grid view Ruudukkonäkymä + List view Luettelonäkymä + Files are combined in the order shown. Drag them to change it. Tiedostot yhdistetään näytetyssä järjestyksessä. Muuta järjestystä vetämällä. + Preview unavailable: {e} Esikatselu ei ole käytettävissä: {e} + Pages: {k} of {n} Sivut: {k}/{n} + Check the pages Tarkista sivut + Switch to List view to change the pages it takes. Vaihda luettelonäkymään, jos haluat muuttaa siitä otettavia sivuja. + Expand all Laajenna kaikki + Collapse all Kutista kaikki + Remove page Poista sivu + Remove {n} pages Poista {n} sivua + Reset panel layout Palauta paneelien asettelu + Float panel Irrota paneeli + Move to group Siirrä ryhmään + Panels Paneelit + Resize panels Muuta paneelien kokoa + Resize panel window Muuta paneeli-ikkunan kokoa + PDF page: {size} PDF-sivu: {size} + Match page at 100% Sivu koossa 100 % + PDF scale: {scale}% PDF-mittakaava: {scale} % + Printer paper and scaling may differ. Check driver settings. Tulostimen paperi ja skaalaus voivat poiketa. Tarkista ohjaimen asetukset. + Drawing scale changes. Use Actual size for full-scale plans. Piirustuksen mittakaava muuttuu. Käytä mittakaavaisille piirustuksille Todellinen koko -valintaa. + Reload documents when their files change on disk Lataa asiakirjat uudelleen, kun niiden tiedostot muuttuvat levyllä + This file changed on disk. Reload it to see the new version; your unsaved changes will be lost. Tämä tiedosto muuttui levyllä. Lataa se uudelleen nähdäksesi uuden version; tallentamattomat muutokset menetetään. + Reload Lataa uudelleen + Couldn't reload {name}: {e} Kohdetta {name} ei voitu ladata uudelleen: {e} + Select page {label} Valitse sivu {label} + Rotate page {label} counterclockwise Kierrä sivua {label} vastapäivään + Rotate page {label} clockwise Kierrä sivua {label} myötäpäivään + Delete page {label} Poista sivu {label} + Mouse wheel scroll speed Hiiren rullan vieritysnopeus +scroll speed Slow Hidas +scroll speed Normal Normaali +scroll speed Fast Nopea + Animation effects Animaatiotehosteet +animation effects On Käytössä +animation effects Off Ei käytössä + Enhance camera image Paranna kamerakuvaa + Drag the corners onto the document's edges, then choose Enhance page. Vedä kulmat asiakirjan reunoille ja valitse sitten Paranna sivua. + Enhance page Paranna sivua + Done adding text Tekstin lisäys valmis + Discard this text (Esc) Hylkää tämä teksti (Esc) + Clean-up Siistiminen + Original Alkuperäinen + Greyscale Harmaasävy + Black and white Mustavalkoinen + Reading colours Lukuvärit + Replace document colours Korvaa asiakirjan värit + Black on white Musta valkoisella + White on black Valkoinen mustalla + Yellow on black Keltainen mustalla + Green on black Vihreä mustalla + Page background Sivun tausta + Only change the colour of black text or line art Muuta vain mustan tekstin tai viivagrafiikan väriä + Change the colour of line art as well as text Muuta tekstin lisäksi viivagrafiikan väriä + Colours are remapped while rendering; the document itself never changes. Värit muunnetaan hahmonnuksen aikana; itse asiakirja ei muutu. + This printer's driver doesn't take two-sided settings from other programs, so its own setting applies. Change it in Properties… Tämän tulostimen ohjain ei hyväksy kaksipuolisuusasetuksia muilta ohjelmilta, joten sen oma asetus on voimassa. Muuta sitä kohdassa Ominaisuudet… + Browser's print dialog Selaimen tulostusikkuna + Copies, two-sided printing and colour are chosen in the browser's print dialog. Kopiot, kaksipuolinen tulostus ja väri valitaan selaimen tulostusikkunassa. + Preparing {n} sheets for printing… Valmistellaan {n} arkkia tulostusta varten… + Preparing sheet {done} of {total} for printing… Valmistellaan arkkia {done}/{total} tulostusta varten… + Opening the browser's print dialog… Avataan selaimen tulostusikkunaa… + Couldn't print from the browser ({e}); downloaded {name} to print instead Selaimesta ei voitu tulostaa ({e}); ladattiin {name} tulostettavaksi sen sijaan + Tools panel side Työkalupaneelin puoli + Add comment Lisää kommentti + Change tag properties Muuta tagin ominaisuuksia + Tags panel Tagit-paneeli + Tags Tagit + Tag type Tagin tyyppi + Actual text Todellinen teksti + Find a tag Etsi tagi + Collapse tag Kutista tagi + Expand tag Laajenna tagi + Revert changes Peru muutokset + Save tag properties Tallenna tagin ominaisuudet + This document has no editable structure tags. Tässä asiakirjassa ei ole muokattavia rakennetageja. + {n} tags {n} tagia + Save or revert changes before selecting another tag. Tallenna tai peru muutokset ennen toisen tagin valitsemista. + Left out: {names} Jätettiin pois: {names} + already a PDF on jo PDF + no unused output name vapaata tulosnimeä ei ole + no output folder was chosen tuloskansiota ei valittu +@plural Downloaded {n} PDF|Downloaded {n} PDFs Ladattiin {n} PDF|Ladattiin {n} PDF:ää + Scan Skannaa + Sign a sheet of white paper and take a photo of it in bright, even light (use the flash). Choose the photo or drop it here: PdfCraft finds the signature and removes the paper. Allekirjoita valkoinen paperiarkki ja ota siitä valokuva kirkkaassa, tasaisessa valossa (käytä salamaa). Valitse kuva tai pudota se tähän: PdfCraft löytää allekirjoituksen ja poistaa paperin. + Choose photo… Valitse kuva… + No photo chosen Kuvaa ei valittu + Photo Kuva + Ink sensitivity Musteen herkkyys + No signature was found in the frame. Move the frame over the signature or raise the ink sensitivity. Kehyksestä ei löytynyt allekirjoitusta. Siirrä kehys allekirjoituksen päälle tai nosta musteen herkkyyttä. + Couldn't use the photo: {e} Kuvaa ei voitu käyttää: {e} + Close Tab Sulje välilehti + Reopen Closed Tab Avaa suljettu välilehti uudelleen + Reveal in Finder Näytä Finderissa + Reveal in File Explorer Näytä Resurssienhallinnassa + Other colour… Muu väri… + Recent colours Viimeisimmät värit + Couldn't follow linked PDF: {reason} Linkitettyyn PDF:ään ei voitu siirtyä: {reason} + The linked PDF opened, but its named destination was not applied. Linkitetty PDF avautui, mutta sen nimettyä kohdetta ei käytetty. + The linked PDF opened, but its page destination was out of range. Linkitetty PDF avautui, mutta sen kohdesivu oli alueen ulkopuolella. + Local cross-PDF links require the desktop app Paikalliset PDF-tiedostojen väliset linkit edellyttävät työpöytäsovellusta + Minimize Pienennä + Maximize Suurenna + Restore Palauta + Use system title bar Käytä järjestelmän otsikkoriviä + Show a basic title bar for the window buttons instead of the tab strip. GNOME doesn't draw title bars for apps, so this one doesn't follow its theme. Näytä ikkunan painikkeille yksinkertainen otsikkorivi välilehtirivin sijaan. GNOME ei piirrä sovelluksille otsikkorivejä, joten tämä ei noudata sen teemaa. + Allow Salli + Only allow this if you trust the source document. Salli tämä vain, jos luotat lähdeasiakirjaan. + Open this local PDF? Avataanko tämä paikallinen PDF? + This document is trying to open a local file: Tämä asiakirja yrittää avata paikallisen tiedoston: + Move tag earlier Siirrä tagia aiemmaksi + Move tag later Siirrä tagia myöhemmäksi + Tools Työkalut + Inspector Tarkastin + Save (M4) Tallenna (M4) + Only the document's owner can change its security (open it with the permissions password) Vain asiakirjan omistaja voi muuttaa sen suojausta (avaa se käyttöoikeussalasanalla) + Creator Luontisovellus + Producer PDF-tuottaja + Enter a name. Anna nimi. + The password must have at least 6 characters. Salasanassa on oltava vähintään 6 merkkiä. + The passwords do not match. Salasanat eivät täsmää. + There is no folder to save the digital ID in. Digitaalisen tunnuksen tallennuskansiota ei ole. + The password is incorrect. Salasana on väärä. + Choose a digital ID. Valitse digitaalinen tunnus. + Unsigned signature field: {name} Allekirjoittamaton allekirjoituskenttä: {name} + Rev. {rev}: Signed by {name} Versio {rev}: allekirjoittanut {name} + Rev. {rev}: Signed by an unknown signer Versio {rev}: allekirjoittanut tuntematon allekirjoittaja + Rev. {rev}: Certified by {name} Versio {rev}: varmentanut {name} + Rev. {rev}: Certified by an unknown signer Versio {rev}: varmentanut tuntematon allekirjoittaja + {who}, certificate issued by {issuer}. {who}, varmenteen myöntäjä {issuer}. + {who}, certificate issued by an unknown issuer. {who}, varmenteen myöntäjä tuntematon. + Digital Signature Digitaalinen allekirjoitus + Non-Repudiation Kiistämättömyys + Key Encipherment Avaimen salaus + Data Encipherment Tietojen salaus + Key Agreement Avainten sopiminen + Certificate Signing Varmenteiden allekirjoitus + CRL Signing CRL-allekirjoitus + Encipher Only Vain salaus + Decipher Only Vain salauksen purku + Enter a page number Anna sivunumero + Enter a URL Anna URL + Enter the field names Anna kenttien nimet + Cut and stack needs Two-sided: Off. Print single-sided sheets. Leikkaa ja pinoa edellyttää asetusta Kaksipuolinen: Ei käytössä. Tulosta yksipuolisia arkkeja. + Panel layout could not be restored: {error} Paneelien asettelua ei voitu palauttaa: {error} + Panel move was not applied: {error} Paneelin siirtoa ei toteutettu: {error} + Rendering… Hahmonnetaan… + Still rendering — this page is unusually complex… Hahmonnetaan yhä – tämä sivu on tavallista monimutkaisempi… + English Englanti +@plural {n} image optimized|{n} images optimized {n} kuva optimoitu|{n} kuvaa optimoitu +@plural {n} item discarded|{n} items discarded {n} kohde hylätty|{n} kohdetta hylätty +@plural {n} byte|{n} bytes {n} tavu|{n} tavua +@plural {n} pixel|{n} pixels {n} pikseli|{n} pikseliä +@plural Delete {n} field|Delete {n} fields Poista {n} kenttä|Poista {n} kenttää + on page {label} sivulla {label} + Drop PDFs or folders here, or choose them. Pudota PDF-tiedostoja tai kansioita tähän tai valitse ne. + Every PDF in the folder Kaikki kansion PDF-tiedostot + Every PDF in the folder and the folders inside it Kaikki kansion ja sen alikansioiden PDF-tiedostot + No PDFs found in {folder} Kansiosta {folder} ei löytynyt PDF-tiedostoja + Added the first {n} PDFs in {folder} Lisättiin kansion {folder} {n} ensimmäistä PDF-tiedostoa + Add the PDFs to combine Lisää yhdistettävät PDF-tiedostot + Document properties (⌘D) Asiakirjan ominaisuudet (⌘D) + New bookmark (⌘B) Uusi kirjanmerkki (⌘B) + Next (⌘G) Seuraava (⌘G) + Open a PDF (⌘O) Avaa PDF (⌘O) + Previous (⇧⌘G) Edellinen (⇧⌘G) + Print (⌘P) Tulosta (⌘P) + Rotate view clockwise (⇧⌘+) Kierrä näkymää myötäpäivään (⇧⌘+) + Zoom in (⌘+) Lähennä (⌘+) + Zoom in / out (also pinch or ⌘-scroll) Lähennä / loitonna (myös nipistämällä tai ⌘-vierityksellä) + Zoom out (⌘−) Loitonna (⌘−) + DeviceCMYK is used, but the PDF/A output intent isn't a CMYK profile DeviceCMYK on käytössä, mutta PDF/A-tulostustavoite ei ole CMYK-profiili + DeviceRGB is used, but the PDF/A output intent isn't an RGB profile DeviceRGB on käytössä, mutta PDF/A-tulostustavoite ei ole RGB-profiili + Flatten Fill & Sign Litistä Täytä ja allekirjoita + The security settings don't allow screen readers to read the text Suojausasetukset eivät salli näytönlukuohjelmien lukea tekstiä + No page has text: the document appears to be images of pages Millään sivulla ei ole tekstiä: asiakirja näyttää koostuvan sivujen kuvista + The document has no tags (structure tree) Asiakirjassa ei ole tageja (rakennepuu) + The document isn't marked as tagged (MarkInfo Marked) Asiakirjaa ei ole merkitty tagatuksi (MarkInfo Marked) + No document language is set Asiakirjan kieltä ei ole asetettu + The document has no title Asiakirjalla ei ole otsikkoa + The window shows the file name, not the title (Initial View > Show) Ikkunassa näkyy tiedostonimi eikä otsikko (Alkunäkymä > Näytä) + {n} pages and no bookmarks {n} sivua eikä kirjanmerkkejä + The document isn't tagged, so none of its content is Asiakirjaa ei ole tagattu, joten mitään sen sisällöstä ei ole tagattu + Page {p}: {n} untagged content item Sivu {p}: {n} tagaamaton sisältökohde + Page {p}: {n} untagged content items Sivu {p}: {n} tagaamatonta sisältökohdetta + Form field on page {p} isn't tagged Sivun {p} lomakekenttää ei ole tagattu + {} annotation on page {p} isn't tagged Sivun {p} {}-merkintää ei ole tagattu + Page {p} doesn't tab in structure order Sivun {p} sarkainjärjestys ei noudata rakennejärjestystä + Font {} on page {p} doesn't map its characters to Unicode Sivun {p} fontti {} ei määritä merkeilleen Unicode-vastineita + Font (unnamed) on page {p} doesn't map its characters to Unicode Sivun {p} fontti (nimetön) ei määritä merkeilleen Unicode-vastineita + Field "{}" on page {p} has no description (tooltip) Sivun {p} kentällä "{}" ei ole kuvausta (työkaluvihje) + {ty} element: {what} {ty}-elementti: {what} + {ty} element on page {p}: {what} Sivun {p} {ty}-elementti: {what} + no alternate text ei vaihtoehtoista tekstiä + its alternate text is inside another element's and will never be read sen vaihtoehtoinen teksti on toisen elementin vaihtoehtoisen tekstin sisällä, eikä sitä lueta koskaan + alternate text on an element with no page content vaihtoehtoinen teksti elementissä, jolla ei ole sivusisältöä + alternate text hides an annotation inside it vaihtoehtoinen teksti piilottaa sisällään olevan merkinnän + not in a Table, THead, TBody or TFoot ei ole Table-, THead-, TBody- tai TFoot-elementissä + not in a TR ei ole TR-elementissä + no header cells (TH) ei otsikkosoluja (TH) + rows have between {min} and {max} columns riveillä on {min}–{max} saraketta + no summary ei yhteenvetoa + not in an L (list) ei ole L-elementissä (luettelo) + not in an LI (list item) ei ole LI-elementissä (luettelokohde) + the first heading is an H{n}; headings should not skip levels ensimmäinen otsikko on H{n}; otsikkotasoja ei pidä ohittaa + H{n} follows an H{d}; headings should not skip levels H{n} seuraa otsikkoa H{d}; otsikkotasoja ei pidä ohittaa + … and {n} more … ja {n} muuta + Accessibility Report Saavutettavuusraportti + Filename Tiedostonimi + Report created Raportti luotu + The checker found problems which may prevent the document from being fully accessible. Tarkistus löysi ongelmia, jotka voivat estää asiakirjaa olemasta täysin saavutettava. + Detailed Report Yksityiskohtainen raportti + Rule Name Säännön nimi + The metadata doesn't identify the file as {} Metatiedot eivät tunnista tiedostoa muodoksi {} + Page {} has additional actions Sivulla {} on lisätoimintoja + A {} action isn't allowed {}-toiminto ei ole sallittu + {} annotations aren't allowed {}-merkinnät eivät ole sallittuja + A {} annotation isn't set to print, or is hidden {}-merkintää ei ole asetettu tulostumaan, tai se on piilotettu + A {} annotation has no appearance stream {}-merkinnällä ei ole ulkoasuvirtaa + A {} annotation has additional actions {}-merkinnällä on lisätoimintoja + The font {} isn't embedded Fonttia {} ei ole upotettu + A font isn't embedded Fonttia ei ole upotettu + The signature has no valid byte range. Allekirjoituksella ei ole kelvollista tavualuetta. + The signature's byte range does not match the file. Allekirjoituksen tavualue ei vastaa tiedostoa. + The signature's byte range does not exclude exactly its contents. Allekirjoituksen tavualue ei rajaa pois täsmälleen sen sisältöä. + The signature contents are not hexadecimal. Allekirjoituksen sisältö ei ole heksadesimaalimuotoinen. + The signature could not be read ({}). Allekirjoitusta ei voitu lukea ({}). + PdfCraft can't check this signature yet: {}. PdfCraft ei vielä pysty tarkistamaan tätä allekirjoitusta: {}. + The signature uses the legacy adbe.x509.rsa_sha1 format. Allekirjoitus käyttää vanhaa adbe.x509.rsa_sha1-muotoa. + The signature is BER-encoded (indefinite lengths) rather than DER; it was read leniently. Allekirjoitus on BER-koodattu (määrittelemättömät pituudet) eikä DER-koodattu; se luettiin sallivasti. + The signed content is a constructed (segmented) OCTET STRING, as BER allows; it was read anyway. Allekirjoitettu sisältö on koostettu (segmentoitu) OCTET STRING, kuten BER sallii; se luettiin silti. + The RSA signature value does not have the length of the key's modulus (leading zero bytes dropped or added); it was read anyway. RSA-allekirjoituksen arvon pituus ei vastaa avaimen modulusta (alun nollatavuja poistettu tai lisätty); se luettiin silti. + The RSA signature's DigestInfo has no NULL parameter (older signers write it so); it was read anyway. RSA-allekirjoituksen DigestInfo-rakenteesta puuttuu NULL-parametri (vanhemmat allekirjoittajat kirjoittavat sen näin); se luettiin silti. + The ECDSA signature is not in canonical DER (trailing bytes, padding or a missing sign byte); it was read anyway. ECDSA-allekirjoitus ei ole kanonisessa DER-muodossa (ylimääräisiä tavuja lopussa, täytettä tai puuttuva etumerkkitavu); se luettiin silti. + The ECDSA signature is the raw r and s values instead of a DER sequence; it was read anyway. ECDSA-allekirjoitus on raakoina r- ja s-arvoina DER-sekvenssin sijaan; se luettiin silti. + The signature algorithm and the SignerInfo's digest algorithm name different hashes; the signature was made with the SignerInfo's. Allekirjoitusalgoritmi ja SignerInfo-rakenteen tiivistealgoritmi nimeävät eri tiivisteet; allekirjoitus tehtiin SignerInfo-rakenteen mukaisella. + This signature uses SHA-1, a weak hash algorithm: collisions in it have been demonstrated. It still validates because many documents signed years ago use it, but it should not be relied on. Tämä allekirjoitus käyttää SHA-1:tä, heikkoa tiivistealgoritmia, jossa on osoitettu törmäyksiä. Se hyväksytään yhä, koska monet vuosia sitten allekirjoitetut asiakirjat käyttävät sitä, mutta siihen ei pidä luottaa. + This signature uses RIPEMD-160, a legacy 160-bit hash algorithm that is no longer recommended for signatures. It still validates, but it should not be relied on. Tämä allekirjoitus käyttää RIPEMD-160:tä, vanhaa 160-bittistä tiivistealgoritmia, jota ei enää suositella allekirjoituksiin. Se hyväksytään yhä, mutta siihen ei pidä luottaa. + The document has been altered or corrupted since the signature was applied. Asiakirjaa on muutettu tai se on vioittunut allekirjoituksen lisäämisen jälkeen. + The signer's certificate is not in the signature. Allekirjoittajan varmenne puuttuu allekirjoituksesta. + The signature value does not match the signer's certificate: the signature is corrupt. Allekirjoituksen arvo ei vastaa allekirjoittajan varmennetta: allekirjoitus on vioittunut. + The signature could not be checked ({}). Allekirjoitusta ei voitu tarkistaa ({}). + The signature could not be verified ({}). Allekirjoitusta ei voitu vahvistaa ({}). + This document has not been modified since this signature was applied. Asiakirjaa ei ole muokattu tämän allekirjoituksen lisäämisen jälkeen. + The document has been modified since this signature was applied, but the changes are permitted ({}). Asiakirjaa on muokattu tämän allekirjoituksen lisäämisen jälkeen, mutta muutokset ovat sallittuja ({}). + The document has been altered since this signature was applied in ways it does not permit ({}). Asiakirjaa on muutettu tämän allekirjoituksen lisäämisen jälkeen tavoilla, joita se ei salli ({}). + The signer's certificate was not valid at the time of signing. Allekirjoittajan varmenne ei ollut voimassa allekirjoitushetkellä. + The signer's certificate does not allow digital signatures (its key usage has neither digital signature nor non-repudiation). Allekirjoittajan varmenne ei salli digitaalisia allekirjoituksia (sen avaimen käyttö ei sisällä digitaalista allekirjoitusta eikä kiistämättömyyttä). + The signer's certificate is not issued for signing documents (its extended key usage has no document-signing purpose). Allekirjoittajan varmennetta ei ole myönnetty asiakirjojen allekirjoittamiseen (sen laajennettu avaimen käyttö ei sisällä asiakirjojen allekirjoitusta). + The signer's certificate has critical extensions PdfCraft does not recognize ({}). Allekirjoittajan varmenteessa on kriittisiä laajennuksia, joita PdfCraft ei tunnista ({}). + The certificate of {} is not a CA certificate that may issue certificates, so it is not used to vouch for {}. Kohteen {} varmenne ei ole varmenteita myöntävä CA-varmenne, joten sitä ei käytetä kohteen {} vahvistamiseen. + The certificate of {} does not allow this many CA certificates below it (path length), so it is not used to vouch for {}. Kohteen {} varmenne ei salli näin montaa alempaa CA-varmennetta (polun pituus), joten sitä ei käytetä kohteen {} vahvistamiseen. + The certificate of {} was not valid at the time of signing, so it is not used to vouch for {}. Kohteen {} varmenne ei ollut voimassa allekirjoitushetkellä, joten sitä ei käytetä kohteen {} vahvistamiseen. + The signer's identity is unknown because it has not been included in your list of trusted certificates and none of its parent certificates are trusted certificates. Allekirjoittajan henkilöllisyys on tuntematon, koska sitä ei ole lisätty luotettujen varmenteiden luetteloon eikä mikään sen ylemmistä varmenteista ole luotettu varmenne. + The signer's identity is valid. Allekirjoittajan henkilöllisyys on kelvollinen. + The signature includes an embedded timestamp. Allekirjoitus sisältää upotetun aikaleiman. + Signing time is from the clock on the signer's computer. Allekirjoitusaika on peräisin allekirjoittajan tietokoneen kellosta. + The signature's timestamp token does not cover the signature value. Allekirjoituksen aikaleimatunniste ei kata allekirjoituksen arvoa. + The signature's timestamp token could not be verified ({}). Allekirjoituksen aikaleimatunnistetta ei voitu vahvistaa ({}). + The embedded timestamp token is valid and its authority is trusted; trusted time is {}. Upotettu aikaleimatunniste on kelvollinen ja sen myöntäjä on luotettu; luotettu aika on {}. + The signature carries an unverified timestamp ({}): the timestamp authority is not in your list of trusted certificates, so the signing time claimed by the signer is used instead. Allekirjoituksessa on vahvistamaton aikaleima ({}): aikaleiman myöntäjä ei ole luotettujen varmenteiden luettelossa, joten käytetään allekirjoittajan ilmoittamaa allekirjoitusaikaa. + The signer's certificate has been revoked ({}). Allekirjoittajan varmenne on peruutettu ({}). + The document's embedded revocation information shows that the signer's certificate has not been revoked. Asiakirjaan upotetut sulkutiedot osoittavat, ettei allekirjoittajan varmennetta ole peruutettu. + The timestamp has no valid byte range. Aikaleimalla ei ole kelvollista tavualuetta. + The timestamp's byte range does not match the file. Aikaleiman tavualue ei vastaa tiedostoa. + The timestamp's byte range does not exclude exactly its contents. Aikaleiman tavualue ei rajaa pois täsmälleen sen sisältöä. + The timestamp contents are not hexadecimal. Aikaleiman sisältö ei ole heksadesimaalimuotoinen. + The timestamp token could not be read ({}). Aikaleimatunnistetta ei voitu lukea ({}). + The document has been altered or corrupted since the timestamp was applied. Asiakirjaa on muutettu tai se on vioittunut aikaleiman lisäämisen jälkeen. + The timestamp authority's certificate was not valid at the time of timestamping. Aikaleiman myöntäjän varmenne ei ollut voimassa aikaleimaushetkellä. + This document has not been modified since this timestamp was applied. Asiakirjaa ei ole muokattu tämän aikaleiman lisäämisen jälkeen. + The document has been modified since this timestamp was applied, but the changes are permitted ({}). Asiakirjaa on muokattu tämän aikaleiman lisäämisen jälkeen, mutta muutokset ovat sallittuja ({}). + The document has been altered since this timestamp was applied in ways it does not permit ({}). Asiakirjaa on muutettu tämän aikaleiman lisäämisen jälkeen tavoilla, joita se ei salli ({}). + The timestamp token is valid and its authority is trusted. Aikaleimatunniste on kelvollinen ja sen myöntäjä on luotettu. + The timestamp token is valid, but the timestamp authority is not in your list of trusted certificates. Aikaleimatunniste on kelvollinen, mutta aikaleiman myöntäjä ei ole luotettujen varmenteiden luettelossa. + Unsigned signature field Allekirjoittamaton allekirjoituskenttä + Signature is valid Allekirjoitus on kelvollinen + Signature validity is unknown Allekirjoituksen kelpoisuus on tuntematon + Signature is invalid Allekirjoitus on virheellinen + page content sivun sisältö + form fill lomakkeen täyttö + comments kommentit + document security store asiakirjan suojaussäilö + metadata metatiedot + links linkit + document structure asiakirjan rakenne + pages added or removed sivuja lisätty tai poistettu + other changes muut muutokset + the signed version could not be read allekirjoitettua versiota ei voitu lukea + page {n} is out of range (1–{count}) sivu {n} on alueen ulkopuolella (1–{count}) + {page} is not a page number or label {page} ei ole sivunumero tai -tunniste + Change Title Muuta otsikkoa + Change Author Muuta tekijää + Change Subject Muuta aihetta + Change Keywords Muuta avainsanoja + Save as {level} Tallenna muodossa {level} + Create links Luo linkit + Paste Liitä + Select all Valitse kaikki + Next Seuraava + Previous Edellinen + Choose… Valitse… + Refresh Päivitä + Loading… Ladataan… + Save changes? Tallennetaanko muutokset? + Page {n} Sivu {n} + of / + Comment Kommentti + Font Fontti + Color Väri + Theme Teema + System Järjestelmä + Save file Tallenna tiedosto + Import Tuo + Help… Ohje… + Automatically Automaattisesti + Never Ei koskaan + Always Aina + On Käytössä + Enabled Käytössä + Disabled Ei käytössä + Error Virhe + Warning Varoitus + Information Tiedot + Success Onnistui + Folder Kansio + Choose a file… Valitse tiedosto… + Choose a folder… Valitse kansio… + Open folder Avaa kansio + Create folder Luo kansio + Duplicate Monista + Move Siirrä + Copy to clipboard Kopioi leikepöydälle + Copied to clipboard Kopioitu leikepöydälle + Organize Järjestä + Comment and review Kommentointi ja tarkistus + Search results Hakutulokset + No results Ei tuloksia + Page {n} of {total} Sivu {n}/{total} +calendar weekday Su Su +calendar weekday Mo Ma +calendar weekday Tu Ti +calendar weekday We Ke +calendar weekday Th To +calendar weekday Fr Pe +calendar weekday Sa La +certificate Issued to Myönnetty kohteelle +certificate Issued by Myöntäjä +certificate Valid from Voimassa alkaen +certificate Valid to Voimassa asti +certificate Intended usage Käyttötarkoitus +certificate Version Versio +certificate Serial number Sarjanumero +certificate Issuer Myöntäjä +certificate Validity starts Voimassaolo alkaa +certificate Validity ends Voimassaolo päättyy +certificate Public key Julkinen avain +certificate Basic constraints Perusrajoitukset +certificate Key usage Avaimen käyttö +certificate Self-signed Itse allekirjoitettu +certificate SHA-1 digest SHA-1-tiiviste +certificate SHA-256 digest SHA-256-tiiviste +@plural {n} file|{n} files {n} tiedosto|{n} tiedostoa +@plural {n} comment|{n} comments {n} kommentti|{n} kommenttia +@plural {n} result|{n} results {n} tulos|{n} tulosta +# Labels added upstream after the first Finnish catalog (2026-10-16). + Hide hover previews for highlights without comment text Piilota esikatselu korostuksista, joissa ei ole kommenttitekstiä + Set page transitions Aseta sivusiirtymät + What takes up the space in this file, by kind of content. Mikä tässä tiedostossa vie tilaa, sisältötyypeittäin. + Digitally signed by Digitaalisesti allekirjoittanut + DN: DN: + Reason: Syy: + Location: Sijainti: + Date: Päivämäärä: + The labels are in English: the signature's font can't draw them in this language. Tunnisteet ovat englanniksi: allekirjoituksen fontti ei pysty piirtämään niitä tällä kielellä. + Font size Fonttikoko + Make Properties Default Aseta ominaisuudet oletuksiksi + Save over the changed file? Tallennetaanko muuttuneen tiedoston päälle? + “{name}” changed on disk after it was opened or last saved. Saving now replaces that newer version with this one. ”{name}” muuttui levyllä avaamisen tai edellisen tallennuksen jälkeen. Tallentaminen nyt korvaa tuon uudemman version tällä versiolla. + Save anyway Tallenna silti + Sending sheet {s} of {n} to {printer}… Lähetetään arkkia {s}/{n} tulostimeen {printer}… + No printers were found. Check that the printer is installed and the print spooler is running, then open Print again. Tulostimia ei löytynyt. Tarkista, että tulostin on asennettu ja taustatulostuspalvelu on käynnissä, ja avaa sitten Tulosta uudelleen. + Collapse all pages Kutista kaikki sivut + Expand all pages Laajenna kaikki sivut + This file changed on disk. Reload shows the new version and drops your unsaved changes; Save replaces it with this version. Tämä tiedosto muuttui levyllä. Lataa uudelleen näyttää uuden version ja hylkää tallentamattomat muutoksesi; Tallenna korvaa sen tällä versiolla. + Scroll speed (mouse wheel and arrow keys) Vieritysnopeus (hiiren rulla ja nuolinäppäimet) + Cut Image Leikkaa kuva + Redact Image Peitä kuva + Create Link… Luo linkki… + Recognize Text… Tunnista teksti… + Open in Full Screen mode? Avataanko koko näytön tilassa? + This document asks to open in Full Screen mode: the page fills the screen and nothing else shows. Press Esc at any time to leave it. Tämä asiakirja pyytää avautumaan koko näytön tilassa: sivu täyttää näytön eikä muuta näy. Poistu milloin tahansa painamalla Esc. + Full Screen Koko näyttö + Not now Ei nyt + You are viewing the signed version of “{from}” (revision {rev}). It is a snapshot: changes here won't affect the original. Katselet asiakirjan ”{from}” allekirjoitettua versiota (revisio {rev}). Se on tilannevedos: muutokset tässä eivät vaikuta alkuperäiseen. + You are viewing revision {rev} of “{from}”. It is a snapshot: changes here won't affect the original. Katselet asiakirjan ”{from}” revisiota {rev}. Se on tilannevedos: muutokset tässä eivät vaikuta alkuperäiseen. + Turn upside down (180°) Käännä ylösalaisin (180°) + 4 x 6 in label (101.6 x 152.4 mm) 4 x 6 tuuman tarra (101,6 x 152,4 mm) + Cuts each page to its printed area, turns it upright and fits it to the sheet without stretching. One label per sheet. Rajaa jokaisen sivun tulostettuun alueeseen, kääntää sen pystyyn ja sovittaa arkille venyttämättä. Yksi tarra arkkia kohden. + Find untagged content Etsi tagittamaton sisältö + No untagged content was found. Tagittamatonta sisältöä ei löytynyt. + Found {n} untagged content problems. Löytyi {n} tagittamattoman sisällön ongelmaa. + Tag form fields Tagita lomakekentät + Mark as artifact Merkitse artefaktiksi + Remove this leaf tag from reading order and mark its direct content as an artifact Poista tämä lehtitagi lukujärjestyksestä ja merkitse sen suora sisältö artefaktiksi + Mark content as artifact Merkitse sisältö artefaktiksi + Word count Sanamäärä + Current page only Vain nykyinen sivu + Exclude tagged tables Jätä pois tagitetut taulukot + Exclude tagged code blocks Jätä pois tagitetut koodilohkot + Exclude image/OCR text Jätä pois kuvien/OCR:n teksti + Exclusions use PDF tags. Untagged tables and code remain included. Image exclusion also removes invisible text. Poisjätöt perustuvat PDF-tageihin. Tagittamattomat taulukot ja koodi lasketaan mukaan. Kuvien poisjättö poistaa myös näkymättömän tekstin. + Words Sanat + Characters Merkit + Characters without spaces Merkit ilman välilyöntejä + Pages counted Lasketut sivut + Some pages contain no countable text. Scanned images need OCR first. Joillakin sivuilla ei ole laskettavaa tekstiä. Skannatut kuvat vaativat ensin tekstintunnistuksen (OCR). + Some content could not be classified safely and was kept in the count. Osaa sisällöstä ei voitu luokitella turvallisesti, joten se on mukana laskussa. + Counting words… {n} pages read Lasketaan sanoja… {n} sivua luettu + Word counting stopped unexpectedly. Sanojen laskenta pysähtyi odottamatta. + Word count… Sanamäärä… +@id file.word_count Sanamäärä… + Standard Vakio + Mobile Mobiili + Merge image fragments Yhdistä kuvan palat + Optimizing… merging image fragments Optimoidaan… yhdistetään kuvan paloja + Side by side Rinnakkain + New file only Vain uusi tiedosto + Old file: {name} Vanha tiedosto: {name} + New file: {name} Uusi tiedosto: {name} + Print as image Tulosta kuvana + Resolution: Tarkkuus: + Use it when a printer skips text, shading or transparency. The print is no longer searchable text; with Print in grayscale, the pictures are grey. Käytä tätä, kun tulostin jättää pois tekstiä, varjostuksia tai läpinäkyvyyttä. Tulosteessa teksti ei ole enää haettavissa; Tulosta harmaasävyinä -asetuksella kuvat ovat harmaita. + Crop Image Rajaa kuva + Remove Crop Poista rajaus + Trim the picture with its handles; Enter or Done applies Rajaa kuvaa sen kahvoilla; Enter tai Valmis ottaa rajauksen käyttöön + Redaction mark appearance Peittomerkinnän ulkoasu + Outline colour: Ääriviivan väri: + Fill colour: Täyttöväri: + Shown while the pointer is over a mark. Näytetään, kun osoitin on merkinnän päällä. + Opacity: Peittävyys: + Make properties default Aseta ominaisuudet oletuksiksi + Pages selected Valitut sivut + Page properties Sivun ominaisuudet + The password must have at least 8 characters. Salasanassa on oltava vähintään 8 merkkiä. +theme Appearance Teema +# Labels added upstream 2026-10-16…18. + the name is not a plain file name nimi ei ole pelkkä tiedostonimi + Zoom — type a percentage and press Enter Zoomaus — kirjoita prosentti ja paina Enter diff --git a/crates/ui-egui/src/i18n/mod.rs b/crates/ui-egui/src/i18n/mod.rs index 20c0fd046..230384628 100644 --- a/crates/ui-egui/src/i18n/mod.rs +++ b/crates/ui-egui/src/i18n/mod.rs @@ -147,7 +147,7 @@ fn plural_sl(n: u64) -> usize { } /// The registry. English first: it is the fallback and the source language. -pub static LANGUAGES: [LangInfo; 23] = [ +pub static LANGUAGES: [LangInfo; 24] = [ LangInfo { code: "en", name: "English", source: "", plural: plural_one_other, rtl: false, catalog: OnceLock::new() }, LangInfo { code: "ja", name: "日本語", source: include_str!("ja.tsv"), plural: plural_none, rtl: false, catalog: OnceLock::new() }, // Simplified Chinese; `zh`, `zh-CN`, `zh-SG` and `zh-Hans-*` locales resolve here (see `candidates`). @@ -210,6 +210,9 @@ pub static LANGUAGES: [LangInfo; 23] = [ // Vietnamese; every `vi-*` locale (`vi-VN`, `vi_VN.UTF-8`) resolves here. CLDR `vi` counts have // one form ("other"), so `@plural` entries list a single form. LangInfo { code: "vi", name: "Tiếng Việt", source: include_str!("vi.tsv"), plural: plural_none, rtl: false, catalog: OnceLock::new() }, + // Finnish; every `fi-*` locale (`fi-FI`, `fi_FI.UTF-8`) resolves here. Two plural forms (one, other): + // the partitive singular follows any number but 1 (`1 sivu`, `2 sivua`). + LangInfo { code: "fi", name: "Suomi", source: include_str!("fi.tsv"), plural: plural_one_other, rtl: false, catalog: OnceLock::new() }, ]; impl LangInfo { @@ -2172,6 +2175,102 @@ mod tests { set_current(Lang::EN); } + #[test] + fn finnish_is_registered_and_persists() { + let fi = Lang::from_code("fi").expect("fi registered"); + assert_eq!(fi.name(), "Suomi"); + assert_eq!(normalize_pref("FI"), Some("fi")); + for tag in ["fi", "fi-FI", "fi_FI.UTF-8", "FI-fi"] { + assert_eq!(lang_from_tag(tag), Some(fi), "{tag}"); + } + // Filipino (`fil`) and Swedish in Finland (`sv-FI`) don't pick Finnish. + assert_ne!(lang_from_tag("fil"), Some(fi)); + assert_ne!(lang_from_tag("sv-FI"), Some(fi)); + assert_eq!(tr(fi, "File"), "Tiedosto"); + assert_eq!(tr(fi, "Edit"), "Muokkaa"); + assert_eq!(tr(fi, "Save"), "Tallenna"); + assert_eq!(tr(fi, "Interface language"), "Käyttöliittymän kieli"); + // The partitive singular follows any number but 1. + assert_eq!(trn(fi, 0, "{n} page", "{n} pages"), "0 sivua"); + assert_eq!(trn(fi, 1, "{n} page", "{n} pages"), "1 sivu"); + assert_eq!(trn(fi, 2, "{n} page", "{n} pages"), "2 sivua"); + assert_eq!(trn(fi, 21, "{n} page", "{n} pages"), "21 sivua"); + // Calendar headings use the nominative, dates the partitive. + assert_eq!(fmt(tr(fi, "{month} {y}"), &[("month", tr(fi, "October")), ("y", "2026")]), "Lokakuu 2026"); + assert_eq!( + fmt(tr(fi, "{month} {day}, {y}"), &[("month", tr_ctx(fi, "calendar date", "October")), ("day", "14"), ("y", "2026")]), + "14. lokakuuta 2026" + ); + let mut app = crate::PdfCraftApp::default(); + app.set_option("language", "FI").unwrap(); + assert_eq!(app.language, "fi"); + let mut restored = crate::PdfCraftApp::default(); + restored.restore(&app.persist()); + assert_eq!(restored.language, "fi"); + } + + #[test] + fn finnish_covers_commands_and_tools() { + let fi = Lang::from_code("fi").expect("fi registered"); + let mut missing = std::collections::BTreeSet::new(); + for command in pdfcraft_engine::commands::COMMANDS { + if !has(fi, command.label) { + missing.insert(command.label); + } + if let Some(menu) = command.menu + && !has(fi, menu) + { + missing.insert(menu); + } + } + for group in pdfcraft_engine::catalog::TOOL_GROUPS { + if !has(fi, group.label) { + missing.insert(group.label); + } + for section in group.sections { + if !has(fi, section.title) { + missing.insert(section.title); + } + for item in section.items { + if !has(fi, item.label) { + missing.insert(item.label); + } + } + } + } + assert!(missing.is_empty(), "Finnish misses commands/tools: {missing:#?}"); + } + + #[test] + fn finnish_covers_ui_literals() { + let fi = Lang::from_code("fi").expect("fi registered"); + let missing: Vec<_> = scan_ui_literals(true).into_iter().filter(|label| !has(fi, label)).collect(); + assert!(missing.is_empty(), "Untranslated Finnish UI labels: {missing:#?}"); + } + + #[test] + fn finnish_covers_bundled_catalog_keys() { + // Compare English keys, not other languages' translations. + let fi = Lang::from_code("fi").expect("fi registered"); + let mut missing = std::collections::BTreeSet::new(); + for reference in LANGUAGES.iter().filter(|language| language.code != "fi") { + let (entries, errors) = catalog::parse_entries(reference.source, reference.plural_forms()); + assert!(errors.is_empty(), "{}: invalid reference catalog: {errors:?}", reference.code); + for entry in entries { + let translated = match entry.context.as_str() { + "" => fi.catalog().plain(&entry.source), + "@id" => fi.catalog().id(&entry.source), + "@plural" => entry.source.split_once('|').and_then(|(one, other)| fi.catalog().plural(one, other, 0)), + context => fi.catalog().contextual(context, &entry.source), + }; + if translated.is_none() { + missing.insert((entry.context, entry.source)); + } + } + } + assert!(missing.is_empty(), "Finnish misses bundled catalog keys: {missing:#?}"); + } + #[test] fn lithuanian_is_registered_and_persists() { let lt = Lang::from_code("lt").expect("lt registered"); diff --git a/crates/ui-egui/tests/fonts.rs b/crates/ui-egui/tests/fonts.rs index 9cfa36c8a..b23e59ac4 100644 --- a/crates/ui-egui/tests/fonts.rs +++ b/crates/ui-egui/tests/fonts.rs @@ -318,6 +318,7 @@ fn primary_ui_fonts_cover_latin_and_cyrillic_catalogs() { ("sl", include_str!("../src/i18n/sl.tsv")), ("lt", include_str!("../src/i18n/lt.tsv")), ("vi", include_str!("../src/i18n/vi.tsv")), + ("fi", include_str!("../src/i18n/fi.tsv")), ] { let mut text = String::from("áčďéěíňóřšťúůýžÁČĎÉĚÍŇÓŘŠŤÚŮÝŽãõçâêôàÃÕÇÂÊÔÀñÑüÜäÄöÖőűß„“¿¡«»…ґҐєЄіІїЇәғқңөұүһӘҒҚҢӨҰҮҺ"); for line in catalog.lines().filter(|l| !l.starts_with('#')) { diff --git a/docs/localization-parity.md b/docs/localization-parity.md index 995293af3..4ac1e315c 100644 --- a/docs/localization-parity.md +++ b/docs/localization-parity.md @@ -70,13 +70,11 @@ none has translated help. Vietnamese's **To `full`** hours are therefore residua | Greek | `el` | 2,341 entries | partial | no | | Turkish | `tr` | 2,313 entries | partial | yes | | Lithuanian | `lt` | 2,585 entries | partial; community native-speaker review ([#1401](https://github.com/storytold/pdfcraft/pull/1401)) | no | +| Finnish | `fi` | 2,674 entries | partial; AI-assisted, native proofreading pending | yes | -**14 other languages** ship (22 catalogs plus English = **23** interface languages in Preferences). +**15 other languages** ship (23 catalogs plus English = **24** interface languages in Preferences). The entry counts without percentages were measured on 2026-10-12–13; they are not percentages of the older 2,143-key snapshot above. Their presence does not imply a detailed linguistic or runtime review. -Acrobat languages PdfCraft lacks: Danish, Dutch, Finnish, Norwegian, Swedish, Hebrew. Vietnamese is shipped here but not by Acrobat. -**14 other languages** ship (21 catalogs plus English, 22 interface languages in Preferences). -The entry counts without percentages were measured on 2026-10-12 (Italian on 2026-10-14); they are not percentages of the older 2,143-key snapshot above. Their presence does not imply a detailed linguistic or runtime review. -Acrobat languages PdfCraft lacks: Danish, Dutch, Finnish, Norwegian, Swedish, Hebrew. +Acrobat languages PdfCraft lacks: Danish, Dutch, Norwegian, Swedish, Hebrew. Vietnamese is shipped here but not by Acrobat. ## Revision history @@ -84,5 +82,6 @@ Acrobat languages PdfCraft lacks: Danish, Dutch, Finnish, Norwegian, Swedish, He |---|---|---| | 2026-10-13 | minor | Vietnamese (`vi`) catalog: 2,591 entries (100% of current key union + `theme`/`Appearance`); twelve-language mean ≈ 68%; native-speaker community review; registered with `plural_none` | | 2026-10-14 | minor | Italian: 2,528 entries after adding the 201 keys the other catalogs had and the code looks up | +| 2026-10-14 | minor | Added Finnish (2,674 entries, AI-assisted) | | 2026-10-12 | minor | Added current counts for Kazakh, Polish, Slovenian, Greek, Turkish and Lithuanian; retained existing language assessments and the original percentage snapshot | | 2026-10-10 | major | Created. Catalog counts measured from `crates/ui-egui/src/i18n/*.tsv` against the 2,143-key union; Acrobat's localizations from its bundle's `.lproj` and Sequences folder names | diff --git a/docs/localization.md b/docs/localization.md index 657e2eb24..6683ba8ec 100644 --- a/docs/localization.md +++ b/docs/localization.md @@ -1,6 +1,6 @@ # Interface language -Choose **Menu > Edit > Preferences…** (Command-comma on macOS, Ctrl-comma elsewhere) **> Interface language** and select **Auto**, **English**, **日本語**, **简体中文**, **繁體中文**, **Čeština**, **Português (Brasil)**, **Deutsch**, **Español**, **Français**, **Русский**, **Қазақша**, **Български**, **తెలుగు**, **Magyar**, **Українська**, **Italiano**, **العربية**, **Polski**, **Slovenščina**, **Ελληνικά**, **Türkçe**, **Lietuvių** or **Tiếng Việt**. The change applies immediately and persists between launches. Command ids, document contents and file names are unchanged. +Choose **Menu > Edit > Preferences…** (Command-comma on macOS, Ctrl-comma elsewhere) **> Interface language** and select **Auto**, **English**, **日本語**, **简体中文**, **繁體中文**, **Čeština**, **Português (Brasil)**, **Deutsch**, **Español**, **Français**, **Русский**, **Қазақша**, **Български**, **తెలుగు**, **Magyar**, **Українська**, **Italiano**, **العربية**, **Polski**, **Slovenščina**, **Ελληνικά**, **Türkçe**, **Lietuvių**, **Tiếng Việt** or **Suomi**. The change applies immediately and persists between launches. Command ids, document contents and file names are unchanged. Displayed keyboard shortcuts use the same active interface language. For example, German shows `Strg+K` and `Strg+Umschalt+S` in the toolbar, menus, command palette, tooltips and Keyboard shortcuts dialog; macOS keeps its modifier symbols (`⌘`, `⇧`, `⌃`). Key names have their own `key` catalog context, so the Delete key can read `Entf` while the command remains `Löschen`. A missing key-name entry falls back to the English key name. Actual bindings and machine-facing command ids remain stable. @@ -12,7 +12,7 @@ The control channel exposes the setting through `ui.set`: {"method":"ui.set","params":{"key":"language","value":"ja"}} ``` -The value is `auto` or a language code (`en`, `ja`, `zh-hans`, `zh-hant`, `cs`, `pt-br`, `de`, `es`, `fr`, `ru`, `kk`, `bg`, `te`, `hu`, `uk`, `it`, `ar`, `pl`, `sl`, `el`, `tr`, `lt` or `vi`), in any case. `ui.state` reports `language` as written in the preferences (`auto`, `en`, `ja`, `zh-hans`, `zh-hant`, `cs`, `pt-br`, `de`, `es`, `fr`, `ru`, `kk`, `bg`, `te`, `hu`, `uk`, `it`, `ar`, `pl`, `sl`, `el`, `tr`, `lt` or `vi`). Unknown values return an error without changing the current setting. Preferences saved before this setting existed follow the system language. +The value is `auto` or a language code (`en`, `ja`, `zh-hans`, `zh-hant`, `cs`, `pt-br`, `de`, `es`, `fr`, `ru`, `kk`, `bg`, `te`, `hu`, `uk`, `it`, `ar`, `pl`, `sl`, `el`, `tr`, `lt`, `vi` or `fi`), in any case. `ui.state` reports `language` as written in the preferences (`auto`, `en`, `ja`, `zh-hans`, `zh-hant`, `cs`, `pt-br`, `de`, `es`, `fr`, `ru`, `kk`, `bg`, `te`, `hu`, `uk`, `it`, `ar`, `pl`, `sl`, `el`, `tr`, `lt`, `vi` or `fi`). Unknown values return an error without changing the current setting. Preferences saved before this setting existed follow the system language. Dialogs, panels, menus, notices and history labels go through the catalog (`tl!`). Most shipped catalogs (Japanese, Chinese, Russian, Bulgarian, German, Spanish, French, Telugu, Hungarian, Ukrainian, Italian, Brazilian Portuguese, Arabic, Slovenian, Kazakh, Polish, Greek, Turkish, Lithuanian, Vietnamese and others) cover the current localizable surface (about 2,000–2,600 entries each); Czech still covers mainly the menus. Untranslated labels use English. Error details that come from the engine or the operating system are shown as they are, inside a translated frame ("操作「…」に失敗しました: …"). The command palette matches the translated label, the English label and the command id. Vertical Japanese PDF rendering is an existing viewer feature; this change does not add vertical text editing. Document contents, filenames, CLI/MCP/control protocol strings and external help stay outside the catalog. Per-language coverage, script support and what each language still needs are in [localization-parity.md](localization-parity.md). Dialogs, panels, menus, notices and history labels go through the catalog (`tl!`). Japanese, Traditional Chinese, Simplified Chinese, Russian, Bulgarian, German, Spanish, French, Telugu, Hungarian, Ukrainian, Brazilian Portuguese and Arabic translate them (about 2,000–2,140 entries each), and Italian has 2,528 entries; Czech and Turkish cover the menus so far. Untranslated labels use English. Error details that come from the engine or the operating system are shown as they are, inside a translated frame ("操作「…」に失敗しました: …"). The command palette matches the translated label, the English label and the command id. Vertical Japanese PDF rendering is an existing viewer feature; this change does not add vertical text editing. Per-language coverage, script support and what each language still needs are in [localization-parity.md](localization-parity.md). @@ -26,6 +26,8 @@ The Lithuanian catalog has 2,585 entries and three integer plural forms. Calenda The Vietnamese catalog has 2,591 entries and one plural form (`plural_none`). Preferences theme `Appearance` uses context `theme` → `Giao diện`; object/comment/signature appearance stays plain `Diện mạo`. Form fields use `Trường`; redaction apply wording states permanent removal. Calendar months are numeric (`Tháng 1`…`12` / `tháng 1`…`12`). Coverage tests require every current command, UI literal, bundled key and credit label. A native Vietnamese-speaking contributor has reviewed the translation. Status stays `partial`: no translated help, and engine/OS details stay English inside a translated frame. +The Finnish catalog has 2,674 entries: every key of the other bundled catalogs, written from the English labels in ordinary Finnish computing vocabulary and sentence case. Finnish has the English one/other plural rule, with the partitive singular after any number but 1 (`1 sivu`, `2 sivua`, `0 sivua`). Calendar headings use the nominative month (`Lokakuu 2026`); dates use the partitive (`14. lokakuuta 2026`), and Finnish is also a date language for month and weekday names. Any `fi-*` locale selects it; `sv-FI` keeps English until PdfCraft has a Swedish catalog. The bundled Latin faces cover `ä ö å š ž`. The translation is AI-assisted (Claude Code) and has not yet been proofread line by line by a native speaker. + Edit text reads Hebrew lines in typing order and writes them back in drawing order (`crates/edit/src/bidi.rs`); letters the page's own font lacks are drawn with the craft-fonts `Hebr` face (Noto Sans Hebrew) as Type 3 glyphs, and a build without one says so. Hebrew points (niqqud) can't be written yet in Edit text. Add text (#128) draws Hebrew with the same face through the shaped path Arabic and Thai use: right to left with numbers and Latin in place, points kept on their letter, and typing order for copy and search. The craft-fonts revision pinned for CI and releases has no `Hebr` face yet, so until one is added releases report that error instead of drawing the missing letters, and refuse Hebrew in Add text. Japanese interface text uses BIZ UDPGothic from [craft-fonts](https://github.com/storytold/craft-fonts), an optional build input that every release includes (`CRAFT_FONTS_DIR`; see the README). A build made without it has no Japanese face, so Japanese labels show replacement boxes. Chinese is drawn with the same craft-fonts CJK faces (in Simplified Chinese the `Hans` faces come first, so a line never mixes faces with different baselines), so a character none of them has shows a replacement box (and every Chinese character does in a build without craft-fonts). Russian, Bulgarian, Czech, Brazilian Portuguese, German, Spanish, French, Hungarian, Italian, Turkish and Lithuanian need only the bundled Latin faces (tested in `tests/fonts.rs`). Hungarian uses the same one/other plural rule as English: 1 is singular, and every other count — including 0 — is the other form. After a numeral the noun stays singular (`1 oldal`, `2 oldal`). Telugu is drawn with a craft-fonts `Telu` face (Noto Sans Telugu, kept in the web build too), whose conjuncts egui shapes; a build without one shows Telugu labels as replacement boxes, and the release-pinned craft-fonts input has no Telugu face yet. From ca5627167818e26e97a2c8de82279c37f054b1cc Mon Sep 17 00:00:00 2001 From: Nikolai Nyegaard Date: Wed, 21 Oct 2026 12:01:37 +0200 Subject: [PATCH 17/33] Preferences: list the languages alphabetically by their own name MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - English (and Auto where offered) stays first as the source language and fallback; the rest sort by native name with accents folded, so Čeština is under C and Magyar under M; Cyrillic and CJK names follow the Latin ones - The list used the registry order, which is the order the languages were added --- crates/ui-egui/src/i18n/mod.rs | 47 ++++++++++++++++++++++++++++++++++ crates/ui-egui/src/js_ui.rs | 2 +- 2 files changed, 48 insertions(+), 1 deletion(-) diff --git a/crates/ui-egui/src/i18n/mod.rs b/crates/ui-egui/src/i18n/mod.rs index 20c0fd046..563d33291 100644 --- a/crates/ui-egui/src/i18n/mod.rs +++ b/crates/ui-egui/src/i18n/mod.rs @@ -273,6 +273,16 @@ impl Lang { LANGUAGES.iter().map(Lang) } + /// Every registered language in the order a picker lists them: English first (the source + /// language and the fallback), then the rest by their own name with accents folded, so + /// Čeština sits under C rather than after Z. Names in other scripts follow the Latin ones in + /// code point order: Greek, Cyrillic, Arabic, then the CJK languages. + pub fn for_picker() -> Vec { + let mut rest: Vec = Lang::all().filter(|l| l.code() != Lang::EN.code()).collect(); + rest.sort_by_cached_key(|l| name_sort_key(l.name())); + std::iter::once(Lang::EN).chain(rest).collect() + } + pub fn name(self) -> &'static str { self.0.name } @@ -3426,3 +3436,40 @@ mod tests { assert_eq!(dates, interface); } } + +/// `name` lowercased with the Latin accents that occur in language names folded away, so a +/// byte-wise sort reads alphabetically. Other scripts are left as they are. +fn name_sort_key(name: &str) -> String { + name.chars() + .flat_map(char::to_lowercase) + .map(|c| match c { + 'à'..='å' | 'ā' | 'ă' | 'ą' => 'a', + 'ç' | 'ć' | 'č' => 'c', + 'è'..='ë' | 'ē' | 'ě' | 'ę' | 'ế' | 'ệ' => 'e', + 'ì'..='ï' | 'ī' => 'i', + 'ñ' | 'ń' | 'ň' => 'n', + 'ò'..='ö' | 'ø' | 'ő' => 'o', + 'ś' | 'š' => 's', + 'ù'..='ü' | 'ū' | 'ů' | 'ű' => 'u', + 'ý' | 'ÿ' => 'y', + 'ź' | 'ż' | 'ž' => 'z', + c => c, + }) + .collect() +} + +#[cfg(test)] +mod picker_order_tests { + use super::*; + + #[test] + fn picker_lists_english_first_then_names_alphabetically() { + let order = Lang::for_picker(); + assert_eq!(order.first().map(|l| l.code()), Some(Lang::EN.code())); + assert_eq!(order.len(), Lang::all().count()); + let keys: Vec = order[1..].iter().map(|l| name_sort_key(l.name())).collect(); + assert!(keys.windows(2).all(|w| w[0] <= w[1]), "{keys:?}"); + assert_eq!(name_sort_key("Čeština"), "cestina"); + assert_eq!(name_sort_key("Türkçe"), "turkce"); + } +} diff --git a/crates/ui-egui/src/js_ui.rs b/crates/ui-egui/src/js_ui.rs index df461fc6e..38ab78ddf 100644 --- a/crates/ui-egui/src/js_ui.rs +++ b/crates/ui-egui/src/js_ui.rs @@ -271,7 +271,7 @@ pub(crate) fn preferences_body(ui: &mut egui::Ui, app: &mut PdfCraftApp, t: &Tok if ui.selectable_value(&mut app.language, crate::i18n::AUTO.to_string(), tl!("Auto")).clicked() { ui.close(); } - for language in crate::i18n::Lang::all() { + for language in crate::i18n::Lang::for_picker() { if ui.selectable_value(&mut app.language, language.code().to_string(), language.name()).clicked() { ui.close(); } From 4eaba2bbcd7d4290df1bc8f803cf3a83942bba89 Mon Sep 17 00:00:00 2001 From: johnpetersa19 Date: Wed, 21 Oct 2026 08:14:32 -0300 Subject: [PATCH 18/33] M14: complete Brazilian Portuguese catalog Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- ATTRIBUTION.toml | 2 +- ROADMAP.md | 8 +- crates/ui-egui/src/i18n/mod.rs | 22 +++ crates/ui-egui/src/i18n/pt-br.tsv | 258 ++++++++++++++++++++++++++++++ docs/localization-parity.md | 14 +- docs/localization.md | 6 +- docs/roadmap.md | 6 +- 7 files changed, 300 insertions(+), 16 deletions(-) diff --git a/ATTRIBUTION.toml b/ATTRIBUTION.toml index db3dd6124..5cf57ed53 100644 --- a/ATTRIBUTION.toml +++ b/ATTRIBUTION.toml @@ -63,7 +63,7 @@ licence = "MIT OR Apache-2.0" licence_file = "LICENSE-MIT" kind = "translation" usage = "Brazilian Portuguese UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs" -sha256 = "cef0d22341d0722f029c6543fc846fce164331b7ad8f693a6754b7567b9d9e95" +sha256 = "6aa676a4e1cf1ad97e7e5dae6d9e8f1536e4ff5fea94683f4de585ebb1fbb59c" [[asset]] path = "crates/ui-egui/src/i18n/es.tsv" diff --git a/ROADMAP.md b/ROADMAP.md index b1283e775..05fed731d 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -132,8 +132,8 @@ What's strong and missing in each: [target-app-parity.md](docs/target-app-parity ## Languages -Twelve key languages (historical % snapshot vs 2,143 keys, except Vietnamese vs the current -union). Detail and script notes: [localization-parity.md](docs/localization-parity.md). +Twelve key languages (historical % snapshot vs 2,143 keys, except Vietnamese and Brazilian +Portuguese vs the current union). Detail and script notes: [localization-parity.md](docs/localization-parity.md). | Language | Code | Strings | Status | |---|---|---|---| @@ -143,7 +143,7 @@ union). Detail and script notes: [localization-parity.md](docs/localization-pari | Hindi | `hi` | 0% | none | | Arabic | `ar` | 100% | partial (layout not mirrored) | | French | `fr` | 99.3% | partial | -| Portuguese (Brazil) | `pt-br` | 99.4% | partial | +| Portuguese (Brazil) | `pt-br` | 100% of current union | partial | | Indonesian | `id` | 0% | none | | Japanese | `ja` | 99.1% | partial | | German | `de` | 99.3% | partial | @@ -172,6 +172,8 @@ Ranked; detail and the full milestone table in [docs/roadmap.md](docs/roadmap.md ## Progress log +- **2026-10-21 (M14, Brazilian Portuguese):** Completed the `pt-br` catalog against the current 2,674-key union, including signature validation and accessibility messages; no build or compilation run. Localization remains partial because help and unpredictable engine/OS error details are not translated. + - **2026-10-19 (M14, #3373):** The main menu and its long submenus scroll in short windows, keeping their commands reachable. Estimates unchanged. - **2026-10-19 (M3, #3387):** Save-prompt shortcuts yield to later consent and utility dialogs; a synthetic UI regression checks that an edited document stays open. Estimates unchanged. diff --git a/crates/ui-egui/src/i18n/mod.rs b/crates/ui-egui/src/i18n/mod.rs index 20c0fd046..b9d87a5a6 100644 --- a/crates/ui-egui/src/i18n/mod.rs +++ b/crates/ui-egui/src/i18n/mod.rs @@ -1182,6 +1182,28 @@ mod tests { } } + #[test] + fn brazilian_portuguese_covers_catalog_union() { + let pt = Lang::from_code("pt-br").expect("pt-br registered"); + let pt_catalog = pt.catalog(); + for language in LANGUAGES.iter().filter(|language| !language.source.is_empty()) { + let (entries, errors) = catalog::parse_entries(language.source, language.plural_forms()); + assert!(errors.is_empty(), "{} catalog: {errors:?}", language.code); + for entry in entries { + let covered = match entry.context.as_str() { + "" => pt_catalog.plain(&entry.source).is_some(), + "@id" => pt_catalog.id(&entry.source).is_some(), + "@plural" => { + let (one, other) = entry.source.split_once('|').expect("validated plural source"); + pt_catalog.plural(one, other, 0).is_some() + } + context => pt_catalog.contextual(context, &entry.source).is_some(), + }; + assert!(covered, "Brazilian Portuguese lacks {} / {:?}", entry.context, entry.source); + } + } + } + /// Check direct lookups and multiline literals as well as ordinary tl!("literal") calls, /// following the complete-catalog check for Simplified Chinese. #[test] diff --git a/crates/ui-egui/src/i18n/pt-br.tsv b/crates/ui-egui/src/i18n/pt-br.tsv index 89ff80f9d..32b8ab23b 100644 --- a/crates/ui-egui/src/i18n/pt-br.tsv +++ b/crates/ui-egui/src/i18n/pt-br.tsv @@ -2448,3 +2448,261 @@ animation effects Off Desativados Make properties default Tornar propriedades padrão Pages selected Páginas selecionadas Page properties Propriedades da página + +# Remaining keys from the current catalog union, translated from their English meaning (2026-10-21). + on page {label} na página {label} + A font isn't embedded Uma fonte não está incorporada + A {} action isn't allowed A ação {} não é permitida + A {} annotation has additional actions A anotação {} tem ações adicionais + A {} annotation has no appearance stream A anotação {} não tem fluxo de aparência + A {} annotation isn't set to print, or is hidden A anotação {} não está configurada para impressão ou está oculta + Accessibility Report Relatório de acessibilidade + Add the PDFs to combine Adicione os PDFs que deseja combinar + Added the first {n} PDFs in {folder} Os primeiros {n} PDFs de {folder} foram adicionados + Always Sempre + Automatically Automaticamente + CRL Signing Assinatura de CRL + Certificate Signing Assinatura de certificado + Change Author Alterar autor + Change Keywords Alterar palavras-chave + Change Subject Alterar assunto + Change Title Alterar título + Choose a digital ID. Escolha uma identidade digital. + Choose a file… Escolher um arquivo… + Choose a folder… Escolher uma pasta… + Choose… Escolher… + Color Cor + Comment Comentário + Comment and review Comentar e revisar + Copied to clipboard Copiado para a área de transferência + Copy to clipboard Copiar para a área de transferência + Create folder Criar pasta + Create links Criar links + Creator Criador + Cut and stack needs Two-sided: Off. Print single-sided sheets. Recortar e empilhar requer Frente e verso: desativado. Imprima em folhas de um só lado. + Data Encipherment Criptografia de dados + Decipher Only Somente descriptografia + Detailed Report Relatório detalhado + DeviceCMYK is used, but the PDF/A output intent isn't a CMYK profile O DeviceCMYK está em uso, mas o perfil de saída do PDF/A não é um perfil CMYK + DeviceRGB is used, but the PDF/A output intent isn't an RGB profile O DeviceRGB está em uso, mas o perfil de saída do PDF/A não é um perfil RGB + Digital Signature Assinatura digital + Disabled Desativado + Document properties (⌘D) Propriedades do documento (⌘D) + Drop PDFs or folders here, or choose them. Solte PDFs ou pastas aqui, ou selecione-os. + Duplicate Duplicar + Enabled Ativado + Encipher Only Somente criptografia + English Inglês + Enter a URL Informe uma URL + Enter a name. Informe um nome. + Enter a page number Informe o número da página + Enter the field names Informe os nomes dos campos + Error Erro + Every PDF in the folder Todos os PDFs da pasta + Every PDF in the folder and the folders inside it Todos os PDFs da pasta e de suas subpastas + Field "{}" on page {p} has no description (tooltip) O campo "{}" na página {p} não tem descrição (dica de ferramenta) + Filename Nome do arquivo + Flatten Fill & Sign Achatar Preencher e assinar + Folder Pasta + Font Fonte + Font (unnamed) on page {p} doesn't map its characters to Unicode A fonte (sem nome) na página {p} não mapeia seus caracteres para Unicode + Font {} on page {p} doesn't map its characters to Unicode A fonte {} na página {p} não mapeia seus caracteres para Unicode + Form field on page {p} isn't tagged O campo de formulário na página {p} não está marcado com tag + Help… Ajuda… + H{n} follows an H{d}; headings should not skip levels H{n} vem depois de H{d}; os títulos não devem pular níveis + Import Importar + Information Informações + Key Agreement Acordo de chaves + Key Encipherment Cifragem de chaves + Loading… Carregando… + Mouse wheel scroll speed Velocidade de rolagem da roda do mouse + Move Mover + Never Nunca + New bookmark (⌘B) Novo marcador (⌘B) + Next Próximo + Next (⌘G) Próximo (⌘G) + No PDFs found in {folder} Nenhum PDF encontrado em {folder} + No document language is set Nenhum idioma foi definido para o documento + No page has text: the document appears to be images of pages Nenhuma página contém texto: o documento parece ser composto por imagens de páginas + No results Nenhum resultado + Non-Repudiation Não repúdio + On Ativado + Only the document's owner can change its security (open it with the permissions password) Somente o proprietário do documento pode alterar sua segurança (abra-o com a senha de permissões) + Open a PDF (⌘O) Abrir um PDF (⌘O) + Open folder Abrir pasta + Organize Organizar + Page {n} Página {n} + Page {n} of {total} Página {n} de {total} + Page {p} doesn't tab in structure order A ordem de tabulação da página {p} não segue a ordem da estrutura + Page {p}: {n} untagged content item Página {p}: {n} item de conteúdo sem tag + Page {p}: {n} untagged content items Página {p}: {n} itens de conteúdo sem tag + Page {} has additional actions A página {} tem ações adicionais + Panel layout could not be restored: {error} Não foi possível restaurar o layout dos painéis: {error} + Panel move was not applied: {error} A movimentação do painel não foi aplicada: {error} + Paste Colar + PdfCraft can't check this signature yet: {}. O PdfCraft ainda não pode verificar esta assinatura: {}. + Previous Anterior + Previous (⇧⌘G) Anterior (⇧⌘G) + Print (⌘P) Imprimir (⌘P) + Producer Produtor + Refresh Atualizar + Rendering… Renderizando… + Report created Relatório criado + Rev. {rev}: Certified by an unknown signer Rev. {rev}: certificada por um signatário desconhecido + Rev. {rev}: Certified by {name} Rev. {rev}: certificada por {name} + Rev. {rev}: Signed by an unknown signer Rev. {rev}: assinada por um signatário desconhecido + Rev. {rev}: Signed by {name} Rev. {rev}: assinada por {name} + Rotate view clockwise (⇧⌘+) Girar a visualização no sentido horário (⇧⌘+) + Rule Name Nome da regra + Save (M4) Salvar (M4) + Save as {level} Salvar como {level} + Save changes? Salvar as alterações? + Save file Salvar arquivo + Search results Resultados da pesquisa + Select all Selecionar tudo + Signature is invalid A assinatura é inválida + Signature is valid A assinatura é válida + Signature validity is unknown A validade da assinatura é desconhecida + Signing time is from the clock on the signer's computer. O horário da assinatura vem do relógio do computador do signatário. + Still rendering — this page is unusually complex… Ainda renderizando — esta página é excepcionalmente complexa… + Success Sucesso + System Sistema + Text recognition isn't installed: its models are missing (run `cargo xtask models`, or set PDFCRAFT_MODELS). O reconhecimento de texto não está instalado: faltam os modelos (execute `cargo xtask models` ou defina PDFCRAFT_MODELS). + The ECDSA signature is not in canonical DER (trailing bytes, padding or a missing sign byte); it was read anyway. A assinatura ECDSA não está no formato DER canônico (há bytes excedentes, preenchimento ou falta o byte de sinal); mesmo assim, ela foi lida. + The ECDSA signature is the raw r and s values instead of a DER sequence; it was read anyway. A assinatura ECDSA contém os valores brutos de r e s em vez de uma sequência DER; mesmo assim, ela foi lida. + The RSA signature value does not have the length of the key's modulus (leading zero bytes dropped or added); it was read anyway. O valor da assinatura RSA não tem o mesmo comprimento do módulo da chave (bytes zero iniciais foram removidos ou adicionados); mesmo assim, ele foi lido. + The RSA signature's DigestInfo has no NULL parameter (older signers write it so); it was read anyway. O DigestInfo da assinatura RSA não tem o parâmetro NULL (assinantes mais antigos o incluem); mesmo assim, ele foi lido. + The certificate of {} does not allow this many CA certificates below it (path length), so it is not used to vouch for {}. O certificado de {} não permite essa quantidade de certificados de AC abaixo dele (comprimento do caminho), então não é usado para atestar a validade de {}. + The certificate of {} is not a CA certificate that may issue certificates, so it is not used to vouch for {}. O certificado de {} não é um certificado de AC autorizado a emitir certificados, então não é usado para atestar a validade de {}. + The certificate of {} was not valid at the time of signing, so it is not used to vouch for {}. O certificado de {} não era válido no momento da assinatura, então não é usado para atestar a validade de {}. + The checker found problems which may prevent the document from being fully accessible. A verificação encontrou problemas que podem impedir que o documento seja totalmente acessível. + The document has been altered or corrupted since the signature was applied. O documento foi alterado ou corrompido desde que a assinatura foi aplicada. + The document has been altered or corrupted since the timestamp was applied. O documento foi alterado ou corrompido desde que o carimbo de data e hora foi aplicado. + The document has been altered since this signature was applied in ways it does not permit ({}). O documento foi alterado de maneiras não permitidas ({}), depois que esta assinatura foi aplicada. + The document has been altered since this timestamp was applied in ways it does not permit ({}). O documento foi alterado de maneiras não permitidas ({}), depois que este carimbo de data e hora foi aplicado. + The document has been modified since this signature was applied, but the changes are permitted ({}). O documento foi modificado depois que esta assinatura foi aplicada, mas as alterações são permitidas ({}). + The document has been modified since this timestamp was applied, but the changes are permitted ({}). O documento foi modificado depois que este carimbo de data e hora foi aplicado, mas as alterações são permitidas ({}). + The document has no tags (structure tree) O documento não tem tags (árvore de estrutura) + The document has no title O documento não tem título + The document isn't marked as tagged (MarkInfo Marked) O documento não está marcado como etiquetado (MarkInfo Marked) + The document isn't tagged, so none of its content is O documento não está etiquetado, portanto nenhum conteúdo está + The document's embedded revocation information shows that the signer's certificate has not been revoked. As informações de revogação incorporadas ao documento indicam que o certificado do signatário não foi revogado. + The embedded timestamp token is valid and its authority is trusted; trusted time is {}. O token de carimbo de data e hora incorporado é válido e sua autoridade é confiável; o horário confiável é {}. + The font {} isn't embedded A fonte {} não está incorporada + The metadata doesn't identify the file as {} Os metadados não identificam o arquivo como {} + The password is incorrect. A senha está incorreta. + The password must have at least 6 characters. A senha deve ter pelo menos 6 caracteres. + The password must have at least 8 characters. A senha deve ter pelo menos 8 caracteres. + The passwords do not match. As senhas não correspondem. + The security settings don't allow screen readers to read the text As configurações de segurança não permitem que leitores de tela leiam o texto + The signature algorithm and the SignerInfo's digest algorithm name different hashes; the signature was made with the SignerInfo's. O algoritmo de assinatura e o algoritmo de resumo do SignerInfo indicam hashes diferentes; a assinatura foi feita com o hash indicado pelo SignerInfo. + The signature carries an unverified timestamp ({}): the timestamp authority is not in your list of trusted certificates, so the signing time claimed by the signer is used instead. A assinatura contém um carimbo de data e hora não verificado ({}): a autoridade de carimbo de data e hora não está na sua lista de certificados confiáveis, então será usado o horário de assinatura informado pelo signatário. + The signature contents are not hexadecimal. O conteúdo da assinatura não está em hexadecimal. + The signature could not be checked ({}). Não foi possível verificar a assinatura ({}). + The signature could not be read ({}). Não foi possível ler a assinatura ({}). + The signature could not be verified ({}). Não foi possível validar a assinatura ({}). + The signature has no valid byte range. A assinatura não tem um intervalo de bytes válido. + The signature includes an embedded timestamp. A assinatura inclui um carimbo de data e hora incorporado. + The signature is BER-encoded (indefinite lengths) rather than DER; it was read leniently. A assinatura está codificada em BER (comprimentos indefinidos), e não em DER; ela foi lida de forma permissiva. + The signature uses the legacy adbe.x509.rsa_sha1 format. A assinatura usa o formato legado adbe.x509.rsa_sha1. + The signature value does not match the signer's certificate: the signature is corrupt. O valor da assinatura não corresponde ao certificado do signatário: a assinatura está corrompida. + The signature's byte range does not exclude exactly its contents. O intervalo de bytes da assinatura não exclui exatamente o conteúdo dela. + The signature's byte range does not match the file. O intervalo de bytes da assinatura não corresponde ao arquivo. + The signature's timestamp token could not be verified ({}). Não foi possível validar o token de carimbo de data e hora da assinatura ({}). + The signature's timestamp token does not cover the signature value. O token de carimbo de data e hora da assinatura não abrange o valor da assinatura. + The signed content is a constructed (segmented) OCTET STRING, as BER allows; it was read anyway. O conteúdo assinado é uma OCTET STRING construída (segmentada), como permite o BER; mesmo assim, foi lido. + The signer's certificate does not allow digital signatures (its key usage has neither digital signature nor non-repudiation). O certificado do signatário não permite assinaturas digitais (o uso da chave não inclui assinatura digital nem não repúdio). + The signer's certificate has been revoked ({}). O certificado do signatário foi revogado ({}). + The signer's certificate has critical extensions PdfCraft does not recognize ({}). O certificado do signatário tem extensões críticas que o PdfCraft não reconhece ({}). + The signer's certificate is not in the signature. O certificado do signatário não está incluído na assinatura. + The signer's certificate is not issued for signing documents (its extended key usage has no document-signing purpose). O certificado do signatário não foi emitido para assinar documentos (o uso estendido da chave não inclui essa finalidade). + The signer's certificate was not valid at the time of signing. O certificado do signatário não era válido no momento da assinatura. + The signer's identity is unknown because it has not been included in your list of trusted certificates and none of its parent certificates are trusted certificates. A identidade do signatário é desconhecida porque não foi incluída na sua lista de certificados confiáveis e nenhum dos certificados na cadeia acima dela é confiável. + The signer's identity is valid. A identidade do signatário é válida. + The timestamp authority's certificate was not valid at the time of timestamping. O certificado da autoridade de carimbo de data e hora não era válido no momento da emissão do carimbo. + The timestamp contents are not hexadecimal. O conteúdo do carimbo de data e hora não está em hexadecimal. + The timestamp has no valid byte range. O carimbo de data e hora não tem um intervalo de bytes válido. + The timestamp token could not be read ({}). Não foi possível ler o token de carimbo de data e hora ({}). + The timestamp token is valid and its authority is trusted. O token de carimbo de data e hora é válido e sua autoridade é confiável. + The timestamp token is valid, but the timestamp authority is not in your list of trusted certificates. O token de carimbo de data e hora é válido, mas a autoridade não está na sua lista de certificados confiáveis. + The timestamp's byte range does not exclude exactly its contents. O intervalo de bytes do carimbo de data e hora não exclui exatamente o conteúdo dele. + The timestamp's byte range does not match the file. O intervalo de bytes do carimbo de data e hora não corresponde ao arquivo. + The window shows the file name, not the title (Initial View > Show) A janela exibe o nome do arquivo, e não o título (Exibição inicial > Mostrar) + Theme Tema + There is no folder to save the digital ID in. Não há uma pasta para salvar a identidade digital. + This document has not been modified since this signature was applied. Este documento não foi modificado desde que esta assinatura foi aplicada. + This document has not been modified since this timestamp was applied. Este documento não foi modificado desde que este carimbo de data e hora foi aplicado. + This file changed on disk. Reload it to see the new version; your unsaved changes will be lost. Este arquivo foi alterado no disco. Recarregue-o para ver a nova versão; suas alterações não salvas serão perdidas. + This signature uses RIPEMD-160, a legacy 160-bit hash algorithm that is no longer recommended for signatures. It still validates, but it should not be relied on. Esta assinatura usa RIPEMD-160, um algoritmo de hash legado de 160 bits que não é mais recomendado para assinaturas. Ela ainda é validada, mas não deve ser considerada confiável. + This signature uses SHA-1, a weak hash algorithm: collisions in it have been demonstrated. It still validates because many documents signed years ago use it, but it should not be relied on. Esta assinatura usa SHA-1, um algoritmo de hash fraco para o qual já foram demonstradas colisões. Ela ainda é validada porque muitos documentos assinados há anos o utilizam, mas não deve ser considerada confiável. + Unsigned signature field Campo de assinatura não assinado + Unsigned signature field: {name} Campo de assinatura não assinado: {name} + Warning Aviso + Zoom in (⌘+) Ampliar (⌘+) + Zoom in / out (also pinch or ⌘-scroll) Ampliar / reduzir (também com pinça ou rolagem com ⌘) + Zoom out (⌘−) Reduzir (⌘−) + alternate text hides an annotation inside it o texto alternativo oculta uma anotação em seu interior + alternate text on an element with no page content texto alternativo em um elemento sem conteúdo na página + comments comentários + document security store repositório de segurança do documento + document structure estrutura do documento + form fill preenchimento de formulário + its alternate text is inside another element's and will never be read seu texto alternativo está dentro do texto de outro elemento e nunca será lido + links links + metadata metadados + no alternate text sem texto alternativo + no header cells (TH) sem células de cabeçalho (TH) + no summary sem resumo + not in a TR fora de uma TR + not in a Table, THead, TBody or TFoot fora de uma Table, THead, TBody ou TFoot + not in an L (list) fora de uma L (lista) + not in an LI (list item) fora de um LI (item de lista) + of de + other changes outras alterações + page content conteúdo da página + page {n} is out of range (1–{count}) a página {n} está fora do intervalo (1–{count}) + pages added or removed páginas adicionadas ou removidas + rows have between {min} and {max} columns as linhas têm entre {min} e {max} colunas + the first heading is an H{n}; headings should not skip levels o primeiro título é H{n}; os títulos não devem pular níveis + the signed version could not be read não foi possível ler a versão assinada + {n} pages and no bookmarks {n} páginas e nenhum marcador + {page} is not a page number or label {page} não é um número nem um rótulo de página + {ty} element on page {p}: {what} elemento {ty} na página {p}: {what} + {ty} element: {what} elemento {ty}: {what} + {who}, certificate issued by an unknown issuer. {who}, certificado emitido por uma autoridade desconhecida. + {who}, certificate issued by {issuer}. {who}, certificado emitido por {issuer}. + {} annotation on page {p} isn't tagged A anotação {} na página {p} não está marcada com tag + {} annotations aren't allowed As anotações {} não são permitidas + … and {n} more … e mais {n} +@plural Delete {n} field|Delete {n} fields Excluir {n} campo|Excluir {n} campos +@plural {n} byte|{n} bytes {n} byte|{n} bytes +@plural {n} comment|{n} comments {n} comentário|{n} comentários +@plural {n} file|{n} files {n} arquivo|{n} arquivos +@plural {n} image optimized|{n} images optimized {n} imagem otimizada|{n} imagens otimizadas +@plural {n} item discarded|{n} items discarded {n} item descartado|{n} itens descartados +@plural {n} pixel|{n} pixels {n} pixel|{n} pixels +@plural {n} result|{n} results {n} resultado|{n} resultados +calendar weekday Fr Sex +calendar weekday Mo Seg +calendar weekday Sa Sáb +calendar weekday Su Dom +calendar weekday Th Qui +calendar weekday Tu Ter +calendar weekday We Qua +certificate Basic constraints Restrições básicas +certificate Intended usage Uso pretendido +certificate Issued by Emitido por +certificate Issued to Emitido para +certificate Issuer Emissor +certificate Key usage Uso da chave +certificate Public key Chave pública +certificate SHA-1 digest Resumo SHA-1 +certificate SHA-256 digest Resumo SHA-256 +certificate Self-signed Autoassinado +certificate Serial number Número de série +certificate Valid from Válido desde +certificate Valid to Válido até +certificate Validity ends Fim da validade +certificate Validity starts Início da validade +certificate Version Versão +theme Appearance Aparência diff --git a/docs/localization-parity.md b/docs/localization-parity.md index 995293af3..9cd264181 100644 --- a/docs/localization-parity.md +++ b/docs/localization-parity.md @@ -2,6 +2,7 @@ > **Last reviewed:** 2026-10-10 · **Last updated:** 2026-10-13 · **Change:** minor (Vietnamese 100% of current key union; native-speaker community review; twelve-language mean ≈68%) · **Target:** Adobe Acrobat Pro (Acrobat DC, continuous track 26.002.21931, macOS) > **Last reviewed:** 2026-10-10 · **Last updated:** 2026-10-14 · **Change:** minor (Italian count after completing its catalog) · **Target:** Adobe Acrobat Pro (Acrobat DC, continuous track 26.002.21931, macOS) +> **Last reviewed:** 2026-10-21 · **Last updated:** 2026-10-21 · **Change:** minor (Brazilian Portuguese now covers the 2,674-key catalog union; twelve-language mean still rounds to ≈68%) · **Target:** Adobe Acrobat Pro (Acrobat DC, continuous track 26.002.21931, macOS) Per-language status of PdfCraft's interface against Acrobat Pro's. How translations work and how to add a language: [localization.md](localization.md). Summary in [ROADMAP.md](../ROADMAP.md). @@ -10,10 +11,10 @@ add a language: [localization.md](localization.md). Summary in [ROADMAP.md](../R - **Strings translated** is measured: the catalogs in `crates/ui-egui/src/i18n/.tsv`, counted as distinct `(context, English)` keys with a non-empty translation. The **current** denominator is - the union of keys across all catalogs (**2,590** plain keys as of 2026-10-13, plus language-specific - context rows such as Vietnamese `theme`/`Appearance`). The twelve-language percentage table below - still quotes the **historical 2,143-key snapshot** from 2026-10-10 for every language except - Vietnamese (re-measured against the current union). English is built in. + the union of keys across all catalogs (**2,674 distinct keys as of 2026-10-21**, including + language-specific context rows such as Vietnamese `theme`/`Appearance`). The twelve-language + percentage table below still quotes the **historical 2,143-key snapshot** from 2026-10-10 except + for Vietnamese and Brazilian Portuguese (measured against the current union). English is built in. - **Not counted:** error details from the engine and the operating system, which are shown in English inside a translated frame; there is no translated user documentation or help yet (Acrobat ships localized help). @@ -35,12 +36,12 @@ add a language: [localization.md](localization.md). Summary in [ROADMAP.md](../R | Hindi | `hi` | 0 | none | Devanagari not tested (egui shapes Telugu conjuncts, so shaping is likely workable); no Devanagari face in craft-fonts | no | none | no | 10–18 | | Arabic | `ar` | 2,143 (100%) | dialogs and tooltips; no help | Letters joined and lines reordered at load, but **layout not mirrored**, wrapped lines break at the wrong end, typed text runs left to right (`localization.md` §Arabic) | no | partial | yes (Middle East edition) | 25–45 | | French | `fr` | 2,128 (99.3%) | dialogs and tooltips; no help | Latin | no | partial | yes | 1–2 | -| Portuguese (Brazil) | `pt-br` | 2,130 (99.4%) | dialogs and tooltips; no help | Latin | community (#288) | partial | yes | 1–2 | +| Portuguese (Brazil) | `pt-br` | 2,674 (100% of current union) | dialogs and tooltips; no help | Latin | community (#288) | partial | yes | 1–2 | | Indonesian | `id` | 0 | none | Latin | no | none | no | 3–5 | | Japanese | `ja` | 2,123 (99.1%) | dialogs and tooltips; no help | BIZ UDPGothic from craft-fonts; IME patched on macOS, Windows, X11, Wayland; vertical text renders but can't be edited | no | partial | yes | 4–8 | | German | `de` | 2,128 (99.3%) | dialogs and tooltips; no help | Latin | community, in progress (#828: terminology, clipping) | partial | yes | 2–4 | | Korean | `ko` | 0 | none | Hangul IME patched (Microsoft and Apple Korean, `vendor/README.md` winit 3, 6, 9, 10); no Hangul UI face in craft-fonts | no | none | yes | 6–10 | -| Vietnamese | `vi` | 2,591 (100% of current union + theme Appearance) | dialogs and tooltips; no help | Latin with stacked diacritics; bundled Inter covers them (fonts test) | community | partial | no | 2–4 | +| Vietnamese | `vi` | 2,674 (100% of current union) | dialogs and tooltips; no help | Latin with stacked diacritics; bundled Inter covers them (fonts test) | community | partial | no | 2–4 | **Localization dimension ≈ 68%**: the mean over the twelve, counting a catalog's percentage but only 60% for Chinese and Arabic until their script problems are fixed, and 0 for Hindi, Indonesian and @@ -82,6 +83,7 @@ Acrobat languages PdfCraft lacks: Danish, Dutch, Finnish, Norwegian, Swedish, He | Date | Change | Summary | |---|---|---| +| 2026-10-21 | minor | Brazilian Portuguese (`pt-br`) now covers all 2,674 distinct keys in the current catalog union; no help or engine/OS error-detail localization; twelve-language mean still rounds to ≈ 68% | | 2026-10-13 | minor | Vietnamese (`vi`) catalog: 2,591 entries (100% of current key union + `theme`/`Appearance`); twelve-language mean ≈ 68%; native-speaker community review; registered with `plural_none` | | 2026-10-14 | minor | Italian: 2,528 entries after adding the 201 keys the other catalogs had and the code looks up | | 2026-10-12 | minor | Added current counts for Kazakh, Polish, Slovenian, Greek, Turkish and Lithuanian; retained existing language assessments and the original percentage snapshot | diff --git a/docs/localization.md b/docs/localization.md index 657e2eb24..54c083a73 100644 --- a/docs/localization.md +++ b/docs/localization.md @@ -24,7 +24,7 @@ The Ukrainian catalog has 2,047 entries, written from the meaning of the English The Lithuanian catalog has 2,585 entries and three integer plural forms. Calendar headings use standalone month names; dates use genitive forms. Coverage tests check commands/tools, scanned literal and direct lookups, and source/context keys in the other bundled catalogs. Calendar, inspector and password-dialog UI regressions check dynamic labels and preserve document values. A native Lithuanian-speaking contributor has reviewed the translation. -The Vietnamese catalog has 2,591 entries and one plural form (`plural_none`). Preferences theme `Appearance` uses context `theme` → `Giao diện`; object/comment/signature appearance stays plain `Diện mạo`. Form fields use `Trường`; redaction apply wording states permanent removal. Calendar months are numeric (`Tháng 1`…`12` / `tháng 1`…`12`). Coverage tests require every current command, UI literal, bundled key and credit label. A native Vietnamese-speaking contributor has reviewed the translation. Status stays `partial`: no translated help, and engine/OS details stay English inside a translated frame. +The Vietnamese catalog has 2,674 entries and one plural form (`plural_none`), covering the current catalog-key union. Preferences theme `Appearance` uses context `theme` → `Giao diện`; object/comment/signature appearance stays plain `Diện mạo`. Form fields use `Trường`; redaction apply wording states permanent removal. Calendar months are numeric (`Tháng 1`…`12` / `tháng 1`…`12`). Coverage tests require every current command, UI literal, bundled key and credit label. A native Vietnamese-speaking contributor has reviewed the translation. Status stays `partial`: no translated help, and engine/OS details stay English inside a translated frame. Edit text reads Hebrew lines in typing order and writes them back in drawing order (`crates/edit/src/bidi.rs`); letters the page's own font lacks are drawn with the craft-fonts `Hebr` face (Noto Sans Hebrew) as Type 3 glyphs, and a build without one says so. Hebrew points (niqqud) can't be written yet in Edit text. Add text (#128) draws Hebrew with the same face through the shaped path Arabic and Thai use: right to left with numbers and Latin in place, points kept on their letter, and typing order for copy and search. The craft-fonts revision pinned for CI and releases has no `Hebr` face yet, so until one is added releases report that error instead of drawing the missing letters, and refuse Hebrew in Add text. @@ -32,7 +32,7 @@ Japanese interface text uses BIZ UDPGothic from [craft-fonts](https://github.com Japanese interface text uses BIZ UDPGothic from [craft-fonts](https://github.com/storytold/craft-fonts), an optional build input that every release includes (`CRAFT_FONTS_DIR`; see the README). A build made without it has no Japanese face, so Japanese labels show replacement boxes. Chinese is drawn with the same craft-fonts CJK faces (in Simplified Chinese the `Hans` faces come first, so a line never mixes faces with different baselines), so a character none of them has shows a replacement box (and every Chinese character does in a build without craft-fonts). Russian, Bulgarian, Czech, Brazilian Portuguese, German, Spanish, French, Hungarian, Italian and Slovenian need only the bundled Latin faces (tested in `tests/fonts.rs`). Slovenian has four plural forms: one (1, 101, 201…), two (2, 102…), few (3, 4, 103…) and other (everything else, including 0, 5–20 and 21+), so `@plural` entries list four forms (`1 stran`, `2 strani`, `3 strani`, `5 strani`). Hungarian uses the same one/other plural rule as English: 1 is singular, and every other count — including 0 — is the other form. After a numeral the noun stays singular (`1 oldal`, `2 oldal`). Telugu is drawn with a craft-fonts `Telu` face (Noto Sans Telugu, kept in the web build too), whose conjuncts egui shapes; a build without one shows Telugu labels as replacement boxes, and the release-pinned craft-fonts input has no Telugu face yet. Japanese interface text uses BIZ UDPGothic from [craft-fonts](https://github.com/storytold/craft-fonts), an optional build input that every release includes (`CRAFT_FONTS_DIR`; see the README). A build made without it has no Japanese face, so Japanese labels show replacement boxes. Chinese is drawn with the same craft-fonts CJK faces (in Simplified Chinese the `Hans` faces come first, so a line never mixes faces with different baselines), so a character none of them has shows a replacement box (and every Chinese character does in a build without craft-fonts). Until craft-fonts has an allowed `Hans` face, the desktop app draws a Chinese interface with a Chinese face already installed on the machine (Microsoft YaHei or JhengHei on Windows, PingFang, Hiragino Sans GB or STHeiti on macOS, WenQuanYi or Droid Sans Fallback on Linux; never Noto CJK or Source Han), placed before the Japanese faces so a line keeps one face (#826). The web build has no installed fonts to fall back on. Russian, Bulgarian, Czech, Brazilian Portuguese, German, Spanish, French, Hungarian and Italian need only the bundled Latin faces (tested in `tests/fonts.rs`). Hungarian uses the same one/other plural rule as English: 1 is singular, and every other count — including 0 — is the other form. After a numeral the noun stays singular (`1 oldal`, `2 oldal`). Telugu is drawn with a craft-fonts `Telu` face (Noto Sans Telugu, kept in the web build too), whose conjuncts egui shapes; a build without one shows Telugu labels as replacement boxes, and the release-pinned craft-fonts input has no Telugu face yet. -The Brazilian Portuguese catalog has 2,000 entries: the ~1,826-entry gist André Cardoso posted in [#288](https://github.com/storytold/pdfcraft/issues/288), the labels added since, and a review of the existing wording. Portuguese, like French, treats 0 and 1 as singular (`1 página`, `2 páginas`). +The Brazilian Portuguese catalog has 2,674 entries and covers the current union of catalog keys. It began with the ~1,826-entry gist André Cardoso posted in [#288](https://github.com/storytold/pdfcraft/issues/288), with labels added since and the existing wording reviewed. Portuguese, like French, treats 0 and 1 as singular (`1 página`, `2 páginas`). ## Arabic and right-to-left text @@ -53,7 +53,7 @@ Arabic glyphs come from the craft-fonts `Arab` face (Noto Sans Arabic, kept in t File names and document titles in Arabic or Hebrew are drawn with a craft-fonts `Arab` face when the build input has one; on desktop, a character no embedded face has is drawn with one font already installed on the machine (`PDFCRAFT_SYSTEM_FONTS=0` turns this off). The tab strip, the recent-files list and Properties show such names in display order; other places (bookmarks, comments, search results) have the glyphs but may order mixed-direction text wrongly. -Japanese, Simplified Chinese, French, German and Brazilian Portuguese coverage tests, following PhotoCraft's complete-catalog approach, check every registered command, All tools label and `tl!("literal")` in the UI source. Simplified Chinese also checks direct `i18n::t` calls and multiline literals, plus the About tabs, contributor name modes, sort options, table headers and model columns. Generated history labels, contributor summaries and diagnostics are tested with user-supplied names and error details. Catalog coverage does not guarantee glyph coverage: the release-pinned craft-fonts input currently has no `Hans` face, and the web build embeds only BIZ UDPGothic Regular. Chinese font delivery remains separate work, as discussed in [#112](https://github.com/storytold/pdfcraft/pull/112) and [#140](https://github.com/storytold/pdfcraft/pull/140). +Japanese, Simplified Chinese, French, German and Brazilian Portuguese coverage tests, following PhotoCraft's complete-catalog approach, check every registered command, All tools label and `tl!("literal")` in the UI source. Brazilian Portuguese also checks every key in the union of the bundled catalogs. Simplified Chinese additionally checks direct `i18n::t` calls and multiline literals, plus the About tabs, contributor name modes, sort options, table headers and model columns. Generated history labels, contributor summaries and diagnostics are tested with user-supplied names and error details. Catalog coverage does not guarantee glyph coverage: the release-pinned craft-fonts input currently has no `Hans` face, and the web build embeds only BIZ UDPGothic Regular. Chinese font delivery remains separate work, as discussed in [#112](https://github.com/storytold/pdfcraft/pull/112) and [#140](https://github.com/storytold/pdfcraft/pull/140). German labels keep nouns capitalized, including tool names inserted into notices. The certificate viewer uses the `certificate` context for `Subject` (the certificate holder), while document properties keep the plain translation (the topic). Search hints reserve room for the shortcut, and Home cards limit their title and description to the available rows; hovering shows the full text when it is shortened. diff --git a/docs/roadmap.md b/docs/roadmap.md index 5d73511e9..0d6292579 100644 --- a/docs/roadmap.md +++ b/docs/roadmap.md @@ -151,10 +151,10 @@ total matches the parity estimate. | M13 | Automation (MCP, Action Wizard, CLI) + AI providers | 60–120 | 45% | 25–45 | Done: MCP resources (document info, text, page images); headless tool table (123 tools incl. signing, optimizing, initial view, links, stamps, data exchange, comment review, forms authoring and scripts, redaction, sanitize, print, add content), opt-in MCP server over stdio, CLI `run`/`tools` (closed stdout pipes exit cleanly), UI control channel with drag. Missing: Action Wizard, AI providers
Done since: CLI run and MCP reject missing, empty, repeated and option-valued --root arguments before any tool/script execution or MCP initialization. A single-hyphen directory name remains valid; synthetic CLI regressions preserve a would-be overwritten file. `text_find` also caps the per-page match ranges it materializes at the remaining result limit plus one continuation match. CLI robustness scans visit each directory once through overlapping roots and symlink aliases. | | M12 | Accessibility, compare, measure, search, XFA | 200–380 | 30% | 90–160 | Done: new `a11y` crate with the Accessibility Checker (all 32 rules, report, Fix/Skip/Explain, options dialog and results panel, agent tools). Locatable figure, annotation and form findings highlight their page bounds.
Done since: 2D distance, perimeter and area measurements with persistent viewport calibration, snapping, live information and CSV export; a bounded text-only auto-tag proposal tool; text-only Apply writes marked content, paragraph tags and a parent tree, then opens the Tags panel for review. Missing: mixed-content and field autotag, heading/list/table/figure classification, Order/Content panels, Reading Order tool, compare, geospatial/3D measurement, search index, XFA
Done since: CLI info, text and render use dynamic XFA layout pages, with synthetic count/text/pixel and copy-permission regressions (#1645). | | M13 | Automation (MCP, Action Wizard, CLI) + AI providers | 60–120 | 45% | 25–45 | Done: MCP resources (document info, text, page images); headless tool table (123 tools incl. signing, optimizing, initial view, links, stamps, data exchange, comment review, forms authoring and scripts, redaction, sanitize, print, add content), opt-in MCP server over stdio, CLI `run`/`tools` (closed stdout pipes exit cleanly), UI control channel with drag. Missing: Action Wizard, AI providers
Done since: CLI run and MCP reject missing, empty, repeated and option-valued --root arguments before any tool/script execution or MCP initialization. A single-hyphen directory name remains valid; synthetic CLI regressions preserve a would-be overwritten file. `text_find` also caps the per-page match ranges it materializes at the remaining result limit plus one continuation match. | -| M14 | 1.0 polish: performance, localization, installers | 120–250 | 15% | 80–150 | Done: PhotoCraft's translation system (`i18n/`: TSV catalogs, `tl!`, command-id and plural entries, system-language detection, strict catalog tests); every dialog, panel and notice goes through `tl!`. Catalogs of ≈ 2,000–2,140 entries for Japanese, Simplified and Traditional Chinese, Russian, Bulgarian, German, Spanish, French, Telugu, Hungarian, Ukrainian, Brazilian Portuguese and Arabic (logical-order catalog put into display order; layout not yet mirrored); Czech covers the menus. Italian has 2,528 entries: every key of the other catalogs that the code looks up. Signed and notarized macOS builds, signed Windows installers (x64, x86, ARM64), AppImage, deb, rpm, Flatpak and FreeBSD packages. #307 (bounded large-PDF memory): shared resource indexes and parser metadata, lazy inspection, bounded caches; a 9,156-page file inspects in ≈ 1.8 s at ≈ 500 MiB instead of exceeding 10 GiB. Edits let go of the previous working file before writing the next (a 1 GiB file peaks at two copies while editing, not three; gap 13). Shortcut display uses localized modifier/key names across menus, toolbar, palette, Help and tooltips (#496). Lithuanian adds a 2,578-entry catalog and date names, reviewed by a native-speaking contributor. Validated candidate (macOS raster probe; Windows runtime unverified): the Windows policy changes only embedded JetBrains Mono; horizontal alpha-edge energy per ink improves 2.78%, 3.87% and 1.59% at 100%, 125% and 150%, and is down 0.79% at 200%. Inter is pixel-identical; layout hashes, glyph coverage and the 8 MiB atlas are unchanged. Timing and RSS ranges overlap, with no improvement claimed. Estimates unchanged. Candidate #2383 clamps GPU requests to supported limits while retaining the adapter texture extent; synthetic V3D/downlevel and Windows GPU-required tests pass, but Raspberry Pi startup is unverified. Estimates unchanged. Missing: a right-to-left layout, a Chinese UI face in releases, Hindi/Indonesian/Korean/Vietnamese, file-backed input and global memory budgets, performance budgets, keyboard-only operation Linux/Unix UI fallback fonts also use Fontconfig directories, including Nix store paths, with bounded discovery and the existing candidate allowlist; relative includes and digit-prefixed config filtering have isolated regressions. | -| M14 | 1.0 polish: performance, localization, installers | 120–250 | 15% | 80–150 | Done: PhotoCraft's translation system (`i18n/`: TSV catalogs, `tl!`, command-id and plural entries, system-language detection, strict catalog tests); every dialog, panel and notice goes through `tl!`. Catalogs of ≈ 2,000–2,140 entries for Japanese, Simplified and Traditional Chinese, Russian, Bulgarian, German, Spanish, French, Telugu, Hungarian, Ukrainian, Brazilian Portuguese and Arabic (logical-order catalog put into display order; layout not yet mirrored); Czech covers the menus. Italian has 2,528 entries: every key of the other catalogs that the code looks up. Signed and notarized macOS builds, signed Windows installers (x64, x86, ARM64), AppImage, deb, rpm, Flatpak and FreeBSD packages. #307 (bounded large-PDF memory): shared resource indexes and parser metadata, lazy inspection, bounded caches; a 9,156-page file inspects in ≈ 1.8 s at ≈ 500 MiB instead of exceeding 10 GiB. Edits let go of the previous working file before writing the next (a 1 GiB file peaks at two copies while editing, not three; gap 13). Shortcut display uses localized modifier/key names across menus, toolbar, palette, Help and tooltips (#496). Lithuanian adds a 2,578-entry catalog and date names, reviewed by a native-speaking contributor. Validated candidate (macOS raster probe; Windows runtime unverified): the Windows policy changes only embedded JetBrains Mono; horizontal alpha-edge energy per ink improves 2.78%, 3.87% and 1.59% at 100%, 125% and 150%, and is down 0.79% at 200%. Inter is pixel-identical; layout hashes, glyph coverage and the 8 MiB atlas are unchanged. Timing and RSS ranges overlap, with no improvement claimed. Estimates unchanged. Missing: a right-to-left layout, a Chinese UI face in releases, Hindi/Indonesian/Korean/Vietnamese, file-backed input and global memory budgets, performance budgets, keyboard-only operation XDG desktops use the configuration base for preferences with non-overwriting migration and original-data preservation (#1395). | +| M14 | 1.0 polish: performance, localization, installers | 120–250 | 15% | 80–150 | Done: PhotoCraft's translation system (`i18n/`: TSV catalogs, `tl!`, command-id and plural entries, system-language detection, strict catalog tests); every dialog, panel and notice goes through `tl!`. Catalogs of ≈ 2,000–2,140 entries for Japanese, Simplified and Traditional Chinese, Russian, Bulgarian, German, Spanish, French, Telugu, Hungarian, Ukrainian and Arabic (logical-order catalog put into display order; layout not yet mirrored); the 2,674-entry Brazilian Portuguese catalog covers the current key union; Czech covers the menus. Italian has 2,528 entries: every key of the other catalogs that the code looks up. Signed and notarized macOS builds, signed Windows installers (x64, x86, ARM64), AppImage, deb, rpm, Flatpak and FreeBSD packages. #307 (bounded large-PDF memory): shared resource indexes and parser metadata, lazy inspection, bounded caches; a 9,156-page file inspects in ≈ 1.8 s at ≈ 500 MiB instead of exceeding 10 GiB. Edits let go of the previous working file before writing the next (a 1 GiB file peaks at two copies while editing, not three; gap 13). Shortcut display uses localized modifier/key names across menus, toolbar, palette, Help and tooltips (#496). Lithuanian adds a 2,578-entry catalog and date names, reviewed by a native-speaking contributor. Validated candidate (macOS raster probe; Windows runtime unverified): the Windows policy changes only embedded JetBrains Mono; horizontal alpha-edge energy per ink improves 2.78%, 3.87% and 1.59% at 100%, 125% and 150%, and is down 0.79% at 200%. Inter is pixel-identical; layout hashes, glyph coverage and the 8 MiB atlas are unchanged. Timing and RSS ranges overlap, with no improvement claimed. Estimates unchanged. Candidate #2383 clamps GPU requests to supported limits while retaining the adapter texture extent; synthetic V3D/downlevel and Windows GPU-required tests pass, but Raspberry Pi startup is unverified. Estimates unchanged. Missing: a right-to-left layout, a Chinese UI face in releases, Hindi/Indonesian/Korean/Vietnamese, file-backed input and global memory budgets, performance budgets, keyboard-only operation Linux/Unix UI fallback fonts also use Fontconfig directories, including Nix store paths, with bounded discovery and the existing candidate allowlist; relative includes and digit-prefixed config filtering have isolated regressions. | +| M14 | 1.0 polish: performance, localization, installers | 120–250 | 15% | 80–150 | Done: PhotoCraft's translation system (`i18n/`: TSV catalogs, `tl!`, command-id and plural entries, system-language detection, strict catalog tests); every dialog, panel and notice goes through `tl!`. Catalogs of ≈ 2,000–2,140 entries for Japanese, Simplified and Traditional Chinese, Russian, Bulgarian, German, Spanish, French, Telugu, Hungarian, Ukrainian and Arabic (logical-order catalog put into display order; layout not yet mirrored); the 2,674-entry Brazilian Portuguese catalog covers the current key union; Czech covers the menus. Italian has 2,528 entries: every key of the other catalogs that the code looks up. Signed and notarized macOS builds, signed Windows installers (x64, x86, ARM64), AppImage, deb, rpm, Flatpak and FreeBSD packages. #307 (bounded large-PDF memory): shared resource indexes and parser metadata, lazy inspection, bounded caches; a 9,156-page file inspects in ≈ 1.8 s at ≈ 500 MiB instead of exceeding 10 GiB. Edits let go of the previous working file before writing the next (a 1 GiB file peaks at two copies while editing, not three; gap 13). Shortcut display uses localized modifier/key names across menus, toolbar, palette, Help and tooltips (#496). Lithuanian adds a 2,578-entry catalog and date names, reviewed by a native-speaking contributor. Validated candidate (macOS raster probe; Windows runtime unverified): the Windows policy changes only embedded JetBrains Mono; horizontal alpha-edge energy per ink improves 2.78%, 3.87% and 1.59% at 100%, 125% and 150%, and is down 0.79% at 200%. Inter is pixel-identical; layout hashes, glyph coverage and the 8 MiB atlas are unchanged. Timing and RSS ranges overlap, with no improvement claimed. Estimates unchanged. Missing: a right-to-left layout, a Chinese UI face in releases, Hindi/Indonesian/Korean/Vietnamese, file-backed input and global memory budgets, performance budgets, keyboard-only operation XDG desktops use the configuration base for preferences with non-overwriting migration and original-data preservation (#1395). | | M13 | Automation (MCP, Action Wizard, CLI) + AI providers | 60–120 | 45% | 25–45 | Done: MCP resources (document info, text, page images); headless tool table (123 tools incl. signing, optimizing, initial view, links, stamps, data exchange, comment review, forms authoring and scripts, redaction, sanitize, print, add content), opt-in MCP server over stdio, CLI `run`/`tools` (closed stdout pipes exit cleanly), UI control channel with drag. Missing: Action Wizard, AI providers | -| M14 | 1.0 polish: performance, localization, installers | 120–250 | 15% | 80–150 | Done: PhotoCraft's translation system (`i18n/`: TSV catalogs, `tl!`, command-id and plural entries, system-language detection, strict catalog tests); every dialog, panel and notice goes through `tl!`. Catalogs of ≈ 2,000–2,140 entries for Japanese, Simplified and Traditional Chinese, Russian, Bulgarian, German, Spanish, French, Telugu, Hungarian, Ukrainian, Brazilian Portuguese and Arabic (logical-order catalog put into display order; layout not yet mirrored); Czech covers the menus. Italian has 2,528 entries: every key of the other catalogs that the code looks up. Signed and notarized macOS builds, signed Windows installers (x64, x86, ARM64), AppImage, deb, rpm, Flatpak and FreeBSD packages. #307 (bounded large-PDF memory): shared resource indexes and parser metadata, lazy inspection, bounded caches; a 9,156-page file inspects in ≈ 1.8 s at ≈ 500 MiB instead of exceeding 10 GiB. Edits let go of the previous working file before writing the next (a 1 GiB file peaks at two copies while editing, not three; gap 13). Shortcut display uses localized modifier/key names across menus, toolbar, palette, Help and tooltips (#496). Traditional Chinese accessibility statuses, rule semantics and Taiwan form/table terms have catalog regressions. Long main-menu lists scroll in short windows (#3373). Missing: a right-to-left layout, a Chinese UI face in releases, Hindi/Indonesian/Korean/Vietnamese, file-backed input and global memory budgets, performance budgets, keyboard-only operation | +| M14 | 1.0 polish: performance, localization, installers | 120–250 | 15% | 80–150 | Done: PhotoCraft's translation system (`i18n/`: TSV catalogs, `tl!`, command-id and plural entries, system-language detection, strict catalog tests); every dialog, panel and notice goes through `tl!`. Catalogs of ≈ 2,000–2,140 entries for Japanese, Simplified and Traditional Chinese, Russian, Bulgarian, German, Spanish, French, Telugu, Hungarian, Ukrainian and Arabic (logical-order catalog put into display order; layout not yet mirrored); the 2,674-entry Brazilian Portuguese catalog covers the current key union; Czech covers the menus. Italian has 2,528 entries: every key of the other catalogs that the code looks up. Signed and notarized macOS builds, signed Windows installers (x64, x86, ARM64), AppImage, deb, rpm, Flatpak and FreeBSD packages. #307 (bounded large-PDF memory): shared resource indexes and parser metadata, lazy inspection, bounded caches; a 9,156-page file inspects in ≈ 1.8 s at ≈ 500 MiB instead of exceeding 10 GiB. Edits let go of the previous working file before writing the next (a 1 GiB file peaks at two copies while editing, not three; gap 13). Shortcut display uses localized modifier/key names across menus, toolbar, palette, Help and tooltips (#496). Traditional Chinese accessibility statuses, rule semantics and Taiwan form/table terms have catalog regressions. Long main-menu lists scroll in short windows (#3373). Missing: a right-to-left layout, a Chinese UI face in releases, Hindi/Indonesian/Korean/Vietnamese, file-backed input and global memory budgets, performance budgets, keyboard-only operation | | | **Total** | **2,085–3,840** | **≈ 49% ready** | **≈ 770–1,400** | Area view of the same work: [target-app-parity.md](target-app-parity.md#by-feature-area) | ## Upcoming milestones, ranked From 8ea904980941128aad0eb446372fc39988f5895b Mon Sep 17 00:00:00 2001 From: johnpetersa19 Date: Wed, 21 Oct 2026 08:19:51 -0300 Subject: [PATCH 19/33] M14: update Brazilian Portuguese parity notes Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- parity/acrobat-features.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/parity/acrobat-features.toml b/parity/acrobat-features.toml index 7aca7d5c8..71d195b1e 100644 --- a/parity/acrobat-features.toml +++ b/parity/acrobat-features.toml @@ -9937,7 +9937,7 @@ status = "partial" commands = ["app.preferences"] tools = [] evidence = ["crates/ui-egui/src/commands.rs::localized_shortcut_labels_follow_language_and_platform", "crates/ui-egui/src/i18n/mod.rs::keyboard_key_names_have_a_separate_context_and_english_fallback", "crates/ui-egui/tests/commands.rs::localized_shortcuts_update_immediately_and_keep_command_ids_and_key_bindings", "crates/ui-egui/src/i18n/mod.rs::windows_display_language_resolves_chinese_scripts", "crates/ui-egui/src/i18n/mod.rs::neutral_locale_does_not_override_display_language", "crates/ui-egui/src/i18n/mod.rs::windows_display_language_query_returns_a_locale_tag", "crates/ui-egui/src/i18n/mod.rs::language_persists_and_invalid_input_keeps_current_language", "crates/ui-egui/src/i18n/mod.rs::bundled_catalogs_are_consistent", "crates/ui-egui/src/i18n/mod.rs::arabic_is_registered_and_persists", "crates/ui-egui/src/i18n/mod.rs::arabic_lookups_are_in_display_order", "crates/ui-egui/src/i18n/mod.rs::arabic_plurals_follow_the_six_cldr_forms", "crates/ui-egui/src/i18n/mod.rs::arabic_covers_commands_and_catalogue", "crates/ui-egui/src/i18n/mod.rs::arabic_covers_ui_literals", "crates/ui-egui/src/i18n/mod.rs::arabic_labels_have_glyphs", "crates/ui-egui/src/bidi.rs::rtl_labels_keep_placeholders_whole", "crates/ui-egui/src/i18n/mod.rs::japanese_covers_commands_and_catalogue", "crates/ui-egui/src/i18n/mod.rs::simplified_chinese_covers_commands_and_catalogue", "crates/ui-egui/src/i18n/mod.rs::simplified_chinese_covers_ui_literals", "crates/ui-egui/src/i18n/mod.rs::simplified_chinese_history_and_diagnostics_preserve_user_values", "crates/ui-egui/tests/control.rs::simplified_chinese_signature_prompts_and_errors_keep_document_state", "crates/ui-egui/tests/control.rs::language_switch_preserves_document_and_command_ids", "crates/ui-egui/tests/control.rs::japanese_controls_and_search_keep_command_ids", "crates/ui-egui/tests/control.rs::japanese_dialogs_errors_and_custom_action_names", "crates/ui-egui/src/i18n/mod.rs::french_is_registered", "crates/ui-egui/src/i18n/mod.rs::french_covers_commands_and_catalogue", "crates/ui-egui/src/i18n/mod.rs::french_covers_ui_literals", "crates/ui-egui/src/i18n/mod.rs::french_history_and_diagnostics_preserve_user_values", "crates/ui-egui/src/i18n/mod.rs::german_certificate_subject_has_a_distinct_context", "crates/ui-egui/src/widgets.rs::search_placeholder_never_overlaps_the_shortcut", "crates/ui-egui/src/home.rs::translated_card_description_leaves_room_for_the_action", "crates/ui-egui/tests/control.rs::german_preferences_and_search_keep_command_ids", "crates/ui-egui/src/i18n/mod.rs::telugu_covers_commands_and_catalogue", "crates/ui-egui/src/i18n/mod.rs::telugu_labels_have_glyphs", "crates/ui-egui/src/i18n/mod.rs::hungarian_is_registered", "crates/ui-egui/src/i18n/mod.rs::hungarian_covers_commands_and_catalogue", "crates/ui-egui/src/i18n/mod.rs::hungarian_covers_ui_literals", "crates/ui-egui/src/i18n/mod.rs::hungarian_history_and_diagnostics_preserve_user_values", "crates/ui-egui/src/i18n/mod.rs::ukrainian_is_registered_and_persists", "crates/ui-egui/src/i18n/mod.rs::ukrainian_integer_plurals_cover_teens_and_large_counts", "crates/ui-egui/src/i18n/mod.rs::ukrainian_calendar_uses_month_case_for_dates", "crates/ui-egui/src/i18n/mod.rs::ukrainian_catalog_does_not_leave_english_ui_text", "crates/ui-egui/src/i18n/mod.rs::ukrainian_covers_commands_and_catalogue", "crates/ui-egui/src/i18n/mod.rs::ukrainian_covers_ui_literals", "crates/ui-egui/src/i18n/mod.rs::ukrainian_history_and_diagnostics_preserve_user_values", "crates/ui-egui/src/i18n/mod.rs::spanish_covers_ui_literals", "crates/ui-egui/src/i18n/mod.rs::spanish_covers_what_the_engine_says", "crates/ui-egui/src/i18n/mod.rs::spanish_keeps_the_holes_in_what_the_engine_says", "crates/print/src/tests.rs::wordings_are_said"] -notes = "Shortcut modifiers and key names use a dedicated catalog context across toolbar, menus, palette, Help and tooltips, with English fallback and macOS symbols preserved. Preferences switches Auto (system language)/English/Japanese/Simplified Chinese/Traditional Chinese/Czech/Brazilian Portuguese/German/Spanish/French/Telugu/Hungarian/Ukrainian/Italian/Arabic and persists; ui.set language auto|en|ja|zh-hans|zh-hant|cs|pt-br|de|es|fr|te|hu|uk|it|ar and ui.state expose it. TSV catalogs per language (same system as PhotoCraft); every dialog, panel and notice goes through tl!. Japanese, Traditional Chinese, Simplified Chinese, German, Spanish, French and Hungarian cover commands, dialogs, panels, shortcuts and history labels; Czech and Brazilian Portuguese the menus. French locales (fr, fr_FR, fr_CA, fr_BE) select the French catalog, German locales (de, de_DE, de_AT, de_CH) the German one, Hungarian locales (hu, hu_HU) the Hungarian one. German search hints reserve shortcut space, Home cards bound translated text, certificate Subject has its own context, and inserted tool names keep their capitalization. The sentences the layers below word for themselves (accessibility findings and the saved report, PDF/A problems, signature details, page-range mistakes, edit labels) are handed over apart from the document's own values and go through the catalog too, through said(&i18n::words); Spanish and Italian translate them and the other catalogs fall back to English. OS error details, and faults rather than mistakes, stay as they are. Auto detects the Windows display language after explicitly named supported locale overrides; neutral C/POSIX launcher locales are skipped on Windows, with Chinese script/region mapping and English fallback. Arabic (ar and every ar-* locale) covers commands, dialogs and panels with the six CLDR plural forms; its labels are put into display order when the catalog loads, because egui joins Arabic letters but lays words out left to right. Missing: a right-to-left layout (Arabic labels sit in the left-to-right layout, a wrapped Arabic paragraph breaks at the wrong end, and text typed into a field is not reordered), Czech and Brazilian Portuguese dialogs, Chinese and Telugu font delivery in releases (the pinned craft-fonts revision has an Arabic face; its Noto Sans CJK SC is never embedded, AGENTS.md §1.1), the engine's sentences in the other catalogs, a full localization audit." +notes = "Shortcut modifiers and key names use a dedicated catalog context across toolbar, menus, palette, Help and tooltips, with English fallback and macOS symbols preserved. Preferences switches Auto (system language)/English/Japanese/Simplified Chinese/Traditional Chinese/Czech/Brazilian Portuguese/German/Spanish/French/Telugu/Hungarian/Ukrainian/Italian/Arabic and persists; ui.set language auto|en|ja|zh-hans|zh-hant|cs|pt-br|de|es|fr|te|hu|uk|it|ar and ui.state expose it. TSV catalogs per language (same system as PhotoCraft); every dialog, panel and notice goes through tl!. Japanese, Traditional Chinese, Simplified Chinese, German, Spanish, French and Hungarian cover commands, dialogs, panels, shortcuts and history labels; Brazilian Portuguese covers the current union of catalog keys, including signature and accessibility messages; Czech remains limited to menus. French locales (fr, fr_FR, fr_CA, fr_BE) select the French catalog, German locales (de, de_DE, de_AT, de_CH) the German one, Hungarian locales (hu, hu_HU) the Hungarian one. German search hints reserve shortcut space, Home cards bound translated text, certificate Subject has its own context, and inserted tool names keep their capitalization. The sentences the layers below word for themselves (accessibility findings and the saved report, PDF/A problems, signature details, page-range mistakes, edit labels) are handed over apart from the document's own values and go through the catalog too, through said(&i18n::words); Spanish, Italian and Brazilian Portuguese translate them; strings absent from other catalogs fall back to English. OS error details, and faults rather than mistakes, stay as they are. Auto detects the Windows display language after explicitly named supported locale overrides; neutral C/POSIX launcher locales are skipped on Windows, with Chinese script/region mapping and English fallback. Arabic (ar and every ar-* locale) covers commands, dialogs and panels with the six CLDR plural forms; its labels are put into display order when the catalog loads, because egui joins Arabic letters but lays words out left to right. Missing: a right-to-left layout (Arabic labels sit in the left-to-right layout, a wrapped Arabic paragraph breaks at the wrong end, and text typed into a field is not reordered), Czech dialogs, Chinese and Telugu font delivery in releases (the pinned craft-fonts revision has an Arabic face; its Noto Sans CJK SC is never embedded, AGENTS.md §1.1), the engine's sentences in the other catalogs, a full localization audit." [[feature]] id = "misc.prefs-reading" From 57d41762b5f9e70566c32e1474a1837910293845 Mon Sep 17 00:00:00 2001 From: kcobelli-pixel <257471167+kcobelli-pixel@users.noreply.github.com> Date: Wed, 21 Oct 2026 21:27:30 +0200 Subject: [PATCH 20/33] M14: Italian catalog: the 8-character digital ID password message Create a new digital ID rejects a password shorter than sign::pkcs12::MIN_PASSWORD_CHARS (8) with "The password must have at least 8 characters.", which the dialog shows through tl!. Italian only had the older 6-character wording, so the message appeared in English. Czech, Lithuanian and Vietnamese already carry the current key. The other 67 keys some catalogs have and Italian lacks are not looked up by the code: shortcut tooltips the code now fills from {key} rows, older wordings, plain-string plurals and generic labels only ar/lt/vi carry. The catalog's SHA-256 in ATTRIBUTION.toml is updated. Co-Authored-By: Claude Opus 5.5 --- ATTRIBUTION.toml | 2 +- crates/ui-egui/src/i18n/it.tsv | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/ATTRIBUTION.toml b/ATTRIBUTION.toml index db3dd6124..363d432a1 100644 --- a/ATTRIBUTION.toml +++ b/ATTRIBUTION.toml @@ -118,7 +118,7 @@ licence = "MIT OR Apache-2.0" licence_file = "LICENSE-MIT" kind = "translation" usage = "Italian UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs" -sha256 = "eacc972d65a2d951e94e1a8cf944638e8328f73f6c05759de6059a425f159cd7" +sha256 = "4891b92263586496fc2249e4e7ad1850894afabf5d0494ba00c090bf0fca0355" [[asset]] path = "crates/ui-egui/src/i18n/pl.tsv" diff --git a/crates/ui-egui/src/i18n/it.tsv b/crates/ui-egui/src/i18n/it.tsv index 35cba7a41..01cbc6a51 100644 --- a/crates/ui-egui/src/i18n/it.tsv +++ b/crates/ui-egui/src/i18n/it.tsv @@ -2646,3 +2646,6 @@ certificate Key usage Utilizzo chiave certificate Self-signed Autofirmato certificate SHA-1 digest Impronta SHA-1 certificate SHA-256 digest Impronta SHA-256 + +# Entries the other catalogs had and Italian lacked (2026-10-21) + The password must have at least 8 characters. La password deve contenere almeno 8 caratteri. From b8b09d315f63ab760b2f4bdff29131c092491e34 Mon Sep 17 00:00:00 2001 From: johnpetersa19 Date: Wed, 21 Oct 2026 20:56:30 -0300 Subject: [PATCH 21/33] docs: remove shipped Vietnamese from M14 missing lists Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- docs/roadmap.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/roadmap.md b/docs/roadmap.md index eb94e7d4a..e158d5529 100644 --- a/docs/roadmap.md +++ b/docs/roadmap.md @@ -153,8 +153,8 @@ total matches the parity estimate. | M13 | Automation (MCP, Action Wizard, CLI) + AI providers | 60–120 | 45% | 25–45 | Done: MCP resources (document info, text, page images); headless tool table (123 tools incl. signing, optimizing, initial view, links, stamps, data exchange, comment review, forms authoring and scripts, redaction, sanitize, print, add content), opt-in MCP server over stdio, CLI `run`/`tools` (closed stdout pipes exit cleanly), UI control channel with drag. Missing: Action Wizard, AI providers
Done since: CLI run and MCP reject missing, empty, repeated and option-valued --root arguments before any tool/script execution or MCP initialization. A single-hyphen directory name remains valid; synthetic CLI regressions preserve a would-be overwritten file. `text_find` also caps the per-page match ranges it materializes at the remaining result limit plus one continuation match. CLI robustness scans visit each directory once through overlapping roots and symlink aliases. | | M12 | Accessibility, compare, measure, search, XFA | 200–380 | 30% | 90–160 | Done: new `a11y` crate with the Accessibility Checker (all 32 rules, report, Fix/Skip/Explain, options dialog and results panel, agent tools). Locatable figure, annotation and form findings highlight their page bounds.
Done since: 2D distance, perimeter and area measurements with persistent viewport calibration, snapping, live information and CSV export; a bounded text-only auto-tag proposal tool; text-only Apply writes marked content, paragraph tags and a parent tree, then opens the Tags panel for review. Missing: mixed-content and field autotag, heading/list/table/figure classification, Order/Content panels, Reading Order tool, compare, geospatial/3D measurement, search index, XFA
Done since: CLI info, text and render use dynamic XFA layout pages, with synthetic count/text/pixel and copy-permission regressions (#1645). | | M13 | Automation (MCP, Action Wizard, CLI) + AI providers | 60–120 | 45% | 25–45 | Done: MCP resources (document info, text, page images); headless tool table (123 tools incl. signing, optimizing, initial view, links, stamps, data exchange, comment review, forms authoring and scripts, redaction, sanitize, print, add content), opt-in MCP server over stdio, CLI `run`/`tools` (closed stdout pipes exit cleanly), UI control channel with drag. Missing: Action Wizard, AI providers
Done since: CLI run and MCP reject missing, empty, repeated and option-valued --root arguments before any tool/script execution or MCP initialization. A single-hyphen directory name remains valid; synthetic CLI regressions preserve a would-be overwritten file. `text_find` also caps the per-page match ranges it materializes at the remaining result limit plus one continuation match. | -| M14 | 1.0 polish: performance, localization, installers | 120–250 | 15% | 80–150 | Done: PhotoCraft's translation system (`i18n/`: TSV catalogs, `tl!`, command-id and plural entries, system-language detection, strict catalog tests); every dialog, panel and notice goes through `tl!`. Catalogs of ≈ 2,000–2,140 entries for Japanese, Simplified and Traditional Chinese, Russian, Bulgarian, German, Spanish, French, Telugu, Hungarian, Ukrainian and Arabic (logical-order catalog put into display order; layout not yet mirrored); the 2,674-entry Brazilian Portuguese catalog covers the current key union; Czech covers the menus. Italian has 2,528 entries: every key of the other catalogs that the code looks up. Signed and notarized macOS builds, signed Windows installers (x64, x86, ARM64), AppImage, deb, rpm, Flatpak and FreeBSD packages. #307 (bounded large-PDF memory): shared resource indexes and parser metadata, lazy inspection, bounded caches; a 9,156-page file inspects in ≈ 1.8 s at ≈ 500 MiB instead of exceeding 10 GiB. Edits let go of the previous working file before writing the next (a 1 GiB file peaks at two copies while editing, not three; gap 13). Shortcut display uses localized modifier/key names across menus, toolbar, palette, Help and tooltips (#496). Lithuanian adds a 2,578-entry catalog and date names, reviewed by a native-speaking contributor. Validated candidate (macOS raster probe; Windows runtime unverified): the Windows policy changes only embedded JetBrains Mono; horizontal alpha-edge energy per ink improves 2.78%, 3.87% and 1.59% at 100%, 125% and 150%, and is down 0.79% at 200%. Inter is pixel-identical; layout hashes, glyph coverage and the 8 MiB atlas are unchanged. Timing and RSS ranges overlap, with no improvement claimed. Estimates unchanged. Candidate #2383 clamps GPU requests to supported limits while retaining the adapter texture extent; synthetic V3D/downlevel and Windows GPU-required tests pass, but Raspberry Pi startup is unverified. Estimates unchanged. Missing: a right-to-left layout, a Chinese UI face in releases, Hindi/Indonesian/Korean/Vietnamese, file-backed input and global memory budgets, performance budgets, keyboard-only operation Linux/Unix UI fallback fonts also use Fontconfig directories, including Nix store paths, with bounded discovery and the existing candidate allowlist; relative includes and digit-prefixed config filtering have isolated regressions. | -| M14 | 1.0 polish: performance, localization, installers | 120–250 | 15% | 80–150 | Done: PhotoCraft's translation system (`i18n/`: TSV catalogs, `tl!`, command-id and plural entries, system-language detection, strict catalog tests); every dialog, panel and notice goes through `tl!`. Catalogs of ≈ 2,000–2,140 entries for Japanese, Simplified and Traditional Chinese, Russian, Bulgarian, German, Spanish, French, Telugu, Hungarian, Ukrainian and Arabic (logical-order catalog put into display order; layout not yet mirrored); the 2,674-entry Brazilian Portuguese catalog covers the current key union; Czech covers the menus. Italian has 2,528 entries: every key of the other catalogs that the code looks up. Signed and notarized macOS builds, signed Windows installers (x64, x86, ARM64), AppImage, deb, rpm, Flatpak and FreeBSD packages. #307 (bounded large-PDF memory): shared resource indexes and parser metadata, lazy inspection, bounded caches; a 9,156-page file inspects in ≈ 1.8 s at ≈ 500 MiB instead of exceeding 10 GiB. Edits let go of the previous working file before writing the next (a 1 GiB file peaks at two copies while editing, not three; gap 13). Shortcut display uses localized modifier/key names across menus, toolbar, palette, Help and tooltips (#496). Lithuanian adds a 2,578-entry catalog and date names, reviewed by a native-speaking contributor. Validated candidate (macOS raster probe; Windows runtime unverified): the Windows policy changes only embedded JetBrains Mono; horizontal alpha-edge energy per ink improves 2.78%, 3.87% and 1.59% at 100%, 125% and 150%, and is down 0.79% at 200%. Inter is pixel-identical; layout hashes, glyph coverage and the 8 MiB atlas are unchanged. Timing and RSS ranges overlap, with no improvement claimed. Estimates unchanged. Missing: a right-to-left layout, a Chinese UI face in releases, Hindi/Indonesian/Korean/Vietnamese, file-backed input and global memory budgets, performance budgets, keyboard-only operation XDG desktops use the configuration base for preferences with non-overwriting migration and original-data preservation (#1395). | +| M14 | 1.0 polish: performance, localization, installers | 120–250 | 15% | 80–150 | Done: PhotoCraft's translation system (`i18n/`: TSV catalogs, `tl!`, command-id and plural entries, system-language detection, strict catalog tests); every dialog, panel and notice goes through `tl!`. Catalogs of ≈ 2,000–2,140 entries for Japanese, Simplified and Traditional Chinese, Russian, Bulgarian, German, Spanish, French, Telugu, Hungarian, Ukrainian and Arabic (logical-order catalog put into display order; layout not yet mirrored); the 2,674-entry Brazilian Portuguese catalog covers the current key union; Czech covers the menus. Italian has 2,528 entries: every key of the other catalogs that the code looks up. Signed and notarized macOS builds, signed Windows installers (x64, x86, ARM64), AppImage, deb, rpm, Flatpak and FreeBSD packages. #307 (bounded large-PDF memory): shared resource indexes and parser metadata, lazy inspection, bounded caches; a 9,156-page file inspects in ≈ 1.8 s at ≈ 500 MiB instead of exceeding 10 GiB. Edits let go of the previous working file before writing the next (a 1 GiB file peaks at two copies while editing, not three; gap 13). Shortcut display uses localized modifier/key names across menus, toolbar, palette, Help and tooltips (#496). Lithuanian adds a 2,578-entry catalog and date names, reviewed by a native-speaking contributor. Validated candidate (macOS raster probe; Windows runtime unverified): the Windows policy changes only embedded JetBrains Mono; horizontal alpha-edge energy per ink improves 2.78%, 3.87% and 1.59% at 100%, 125% and 150%, and is down 0.79% at 200%. Inter is pixel-identical; layout hashes, glyph coverage and the 8 MiB atlas are unchanged. Timing and RSS ranges overlap, with no improvement claimed. Estimates unchanged. Candidate #2383 clamps GPU requests to supported limits while retaining the adapter texture extent; synthetic V3D/downlevel and Windows GPU-required tests pass, but Raspberry Pi startup is unverified. Estimates unchanged. Missing: a right-to-left layout, a Chinese UI face in releases, Hindi/Indonesian/Korean, file-backed input and global memory budgets, performance budgets, keyboard-only operation Linux/Unix UI fallback fonts also use Fontconfig directories, including Nix store paths, with bounded discovery and the existing candidate allowlist; relative includes and digit-prefixed config filtering have isolated regressions. | +| M14 | 1.0 polish: performance, localization, installers | 120–250 | 15% | 80–150 | Done: PhotoCraft's translation system (`i18n/`: TSV catalogs, `tl!`, command-id and plural entries, system-language detection, strict catalog tests); every dialog, panel and notice goes through `tl!`. Catalogs of ≈ 2,000–2,140 entries for Japanese, Simplified and Traditional Chinese, Russian, Bulgarian, German, Spanish, French, Telugu, Hungarian, Ukrainian and Arabic (logical-order catalog put into display order; layout not yet mirrored); the 2,674-entry Brazilian Portuguese catalog covers the current key union; Czech covers the menus. Italian has 2,528 entries: every key of the other catalogs that the code looks up. Signed and notarized macOS builds, signed Windows installers (x64, x86, ARM64), AppImage, deb, rpm, Flatpak and FreeBSD packages. #307 (bounded large-PDF memory): shared resource indexes and parser metadata, lazy inspection, bounded caches; a 9,156-page file inspects in ≈ 1.8 s at ≈ 500 MiB instead of exceeding 10 GiB. Edits let go of the previous working file before writing the next (a 1 GiB file peaks at two copies while editing, not three; gap 13). Shortcut display uses localized modifier/key names across menus, toolbar, palette, Help and tooltips (#496). Lithuanian adds a 2,578-entry catalog and date names, reviewed by a native-speaking contributor. Validated candidate (macOS raster probe; Windows runtime unverified): the Windows policy changes only embedded JetBrains Mono; horizontal alpha-edge energy per ink improves 2.78%, 3.87% and 1.59% at 100%, 125% and 150%, and is down 0.79% at 200%. Inter is pixel-identical; layout hashes, glyph coverage and the 8 MiB atlas are unchanged. Timing and RSS ranges overlap, with no improvement claimed. Estimates unchanged. Missing: a right-to-left layout, a Chinese UI face in releases, Hindi/Indonesian/Korean, file-backed input and global memory budgets, performance budgets, keyboard-only operation XDG desktops use the configuration base for preferences with non-overwriting migration and original-data preservation (#1395). | | M13 | Automation (MCP, Action Wizard, CLI) + AI providers | 60–120 | 45% | 25–45 | Done: MCP resources (document info, text, page images); headless tool table (123 tools incl. signing, optimizing, initial view, links, stamps, data exchange, comment review, forms authoring and scripts, redaction, sanitize, print, add content), opt-in MCP server over stdio, CLI `run`/`tools` (closed stdout pipes exit cleanly), UI control channel with drag. Missing: Action Wizard, AI providers | | M14 | 1.0 polish: performance, localization, installers | 120–250 | 15% | 80–150 | Done: PhotoCraft's translation system (`i18n/`: TSV catalogs, `tl!`, command-id and plural entries, system-language detection, strict catalog tests); every dialog, panel and notice goes through `tl!`. Catalogs of ≈ 2,000–2,140 entries for Japanese, Simplified and Traditional Chinese, Russian, Bulgarian, German, Spanish, French, Telugu, Hungarian, Ukrainian and Arabic (logical-order catalog put into display order; layout not yet mirrored); the 2,674-entry Brazilian Portuguese catalog covers the current key union; Czech covers the menus. Italian has 2,528 entries: every key of the other catalogs that the code looks up. Signed and notarized macOS builds, signed Windows installers (x64, x86, ARM64), AppImage, deb, rpm, Flatpak and FreeBSD packages. #307 (bounded large-PDF memory): shared resource indexes and parser metadata, lazy inspection, bounded caches; a 9,156-page file inspects in ≈ 1.8 s at ≈ 500 MiB instead of exceeding 10 GiB. Edits let go of the previous working file before writing the next (a 1 GiB file peaks at two copies while editing, not three; gap 13). Shortcut display uses localized modifier/key names across menus, toolbar, palette, Help and tooltips (#496). Traditional Chinese accessibility statuses, rule semantics and Taiwan form/table terms have catalog regressions. Long main-menu lists scroll in short windows (#3373). Missing: a right-to-left layout, a Chinese UI face in releases, Hindi/Indonesian/Korean, file-backed input and global memory budgets, performance budgets, keyboard-only operation | | | **Total** | **2,085–3,840** | **≈ 49% ready** | **≈ 770–1,400** | Area view of the same work: [target-app-parity.md](target-app-parity.md#by-feature-area) | From 1227ab72a56c8bbf1c8cbd000a5e0c87d9fa3659 Mon Sep 17 00:00:00 2001 From: johnpetersa19 Date: Wed, 21 Oct 2026 21:01:30 -0300 Subject: [PATCH 22/33] docs: consolidate hayro-syntax vendor record Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- vendor/README.md | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/vendor/README.md b/vendor/README.md index f039114ae..3890ed41f 100644 --- a/vendor/README.md +++ b/vendor/README.md @@ -17,12 +17,9 @@ In `hayro-interpret`, Type 3 glyph bounding boxes are transformed to device spac | hayro | 0.7.1 | Apache-2.0 OR MIT | (1) `RenderSettings::{x_offset, y_offset}` to render one tile of a large page; (2) images over `MAX_IMAGE_PIXELS` (2^28) are skipped (a fuzzed `/W 4294967295` hung in resampling); (3) `tiling_cell_scale` keeps a tiling pattern's cell pixmap within 3000 px a side whatever its `/XStep`/`/YStep` (a fuzzed step far beyond `/BBox` allocated 2 GB); (4) stroke widths clamped to 4 × (canvas width + height) device pixels (a fuzzed `/LW 9223372036854775807` allocated 10 GB in stroke expansion); (5) `usable_dash_pattern`: a stroke whose dash pattern could cut it into more than `MAX_DASHES_PER_STROKE` (250,000) pieces, counting kurbo's restart of the pattern at every subpath and `ClosePath`, is drawn solid (a fuzzed `/D [[11] 0]` on a line from x = 92234775807 allocated over 5 GB, `[0.000001] 0 d` on a 20 pt line over 10 GB); (6) a dash pattern with a negative or non-finite entry, or a period that isn't positive, is drawn solid (`[-1 -1] 0 d` looped for ever in kurbo); (7) `render_size` and `render_into`: render into a buffer the caller allocates (PdfCraft renders into pixel-aligned memory that the GUI takes over as texture data); `render` is `render_into` on a new pixmap; (8) checked image source/target/RGBA, alpha-premultiplication scratch and intermediate sizes before resampling, finite transforms and exact source/mask buffers; sources wider than u16 may shrink before backend limits, with a 2^20 source-axis cap and conservative 128 MiB filter-planning estimate; an over-limit or failed resize keeps the original image resolution and geometry when the source fits the backend, otherwise skips it, with a logged warning; staging, resampling output/scratch, RGBA conversion and padding buffers use fallible reserves; (9) `may_paint_canvas`: a fill or stroke whose control-point box, grown by how far its paint reaches past the path (half the stroke width times the larger of the miter limit and √2) plus 0.5 user units and 2 pixels, misses the canvas is not drawn, so a tile no longer strokes and fills every path of its page (item 5 of #623); `set_skip_offscreen_paths` turns this off for the regression test; (10) `/Interpolate` governs the pre-resize too (#624): a minified image that does not request interpolation is pre-resized with nearest-neighbour, planned without the Catmull-Rom filter limits (`image_resampling_size` takes the flag); a Type 3 glyph image is sampled bicubically only when interpolated; a minified image with a matching soft mask is nearest-sampled straight into premultiplied RGBA; (11) `may_paint_rect`: an image whose stream-size box, mapped to the device, misses the canvas is skipped before decoding (decoded data can only shrink against that box), so a tile of an image-heavy page no longer decodes, resamples and rasterizes every image on it; (12) preview renders (`InterpreterSettings::preview`: backdrops, thumbnails, grid cells, signature-drag backgrounds) skip images under `PREVIEW_MIN_IMAGE_AREA` device pixels, while final renders always draw them; (13) reading colours (#897): `RenderSettings::color_replacement` takes a `ColorReplacement` (text colour, background, `only_black`, `line_art`) that remaps solid text and line-art paint while rendering, glyph outlines counting as text and stencil-mask ink as line art; images, image alpha masks, soft masks and pattern cells keep their colours; `render_pdf` gains a `color_replacement: Option` argument (pass `None` for true colours); the upstream-only `[dev-dependencies.log]` entry is removed from `Cargo.toml` (log is a normal dependency since the logging patch), so `cargo test -p hayro` runs this crate's unit tests; (14) a shrunk, interpolated, axis-aligned image is snapped to whole device pixels: shrunk once to its rounded device rectangle and drawn 1:1 at the rounded corner, instead of a ceil-sized raster resampled again at a fractional scale and offset (`snap_minified_image`; scans looked soft next to Acrobat); (15) a soft mask of another size than its image is filtered when shrunk, whatever its `/Interpolate` (#1649): such a mask carries the shape on its own (Word saves text as a tiny black image with a glyph-bitmap mask), and nearest-neighbour dropped every stroke thinner than the shrink factor; (16) under a soft mask or a blend mode, axial and radial shadings are sampled instead of drawn as native gradients (#2128): vello_cpu 0.0.8 copies an opaque gradient over fully covered tiles without the mask or blend mode, so PowerPoint's faded gradient fills came out solid; (17) the renderer keeps annotation paints out of the reading-colours mapping between `begin_annotations` and `end_annotations` (#1548); (18) the page renders as one transparency group with its background painted inside it as the initial backdrop, so a Multiply highlight blends with a dark reading-colours background instead of staying an opaque block (identity on white pages); (20) a tiling pattern whose step is too large for a cell pixmap, where what is painted (a fill, or a stroke with its width) can only show the first cell (PowerPoint's `/XStep 2147480100` for a picture fill drawn once), has its `/BBox` drawn at full scale with a transparent border and padded instead of tiled (`shows_one_cell`; a cell whose scale isn't finite and positive, from a `/BBox` too thin to divide by, keeps the old path: `usable_cell_scale`); shrinking the cell to fit the 3000 px limit of (3) left the picture under a pixel, so network diagrams lost their pictures (#3349) | (1) `raster::tests::tiles_match_full_render`; (2) `raster::tests::absurd_image_dimensions_are_skipped`; (3) `raster::tests::tiling_cells_stay_small_whatever_the_step`; (4) `raster::tests::absurd_predictor_columns_and_line_widths_render`; (5) `raster::tests::dash_patterns_that_cut_a_stroke_into_billions_of_pieces_render`; (6) `raster::tests::invalid_dash_patterns_terminate_and_are_drawn_solid`; (7) `raster::tests::pixels_are_a_plain_renders_bytes_in_a_buffer_a_gui_can_take_over`; (8) `raster::tests::image_resampling_rejects_anisotropic_target_growth`, `raster::tests::image_resampling_bounds_intermediate_before_planning`, `raster::tests::image_resampling_rejects_invalid_sources_and_scales`, `raster::tests::image_resampling_keeps_valid_sizes_and_exact_limits`, `raster::tests::resampling_fallback_preserves_original_geometry_and_pixels`, `raster::tests::image_resampling_wide_sources_shrink_before_backend_side_limits`, `raster::tests::image_resampling_wide_transparent_sources_still_shrink`, `raster::tests::image_resampling_padded_backend_dimensions_stay_checked`, `raster::tests::image_resampling_mismatched_alpha_mask_keeps_pixels_and_placement`; (9) `raster::tests::skipping_paths_off_the_canvas_changes_no_pixel`; (10) `raster::tests::non_interpolated_images_are_not_smoothed_when_minified`, `raster::tests::non_interpolated_gray_images_are_not_smoothed_when_minified`, `raster::tests::non_integer_minification_samples_the_same_columns`, `raster::tests::non_integer_minification_samples_colour_and_mask_from_the_same_columns`, `raster::tests::non_interpolated_alpha_images_keep_their_colours_and_mask_when_minified`, `raster::tests::non_interpolated_type3_glyph_images_are_not_smoothed_when_minified`, `raster::tests::image_resampling_nearest_accepts_wide_sources_the_filter_refuses`, `raster::tests::wide_non_interpolated_sources_draw_after_shrinking`; (11) `raster::tests::skipping_paths_off_the_canvas_changes_no_pixel`; (12) `raster::tests::preview_renders_skip_tiny_images_but_finals_draw_everything`; (13) `color_replacement_tests::{black_maps_to_text_colour, white_maps_to_background, midgrey_interpolates, alpha_copied_verbatim, only_black_threshold, line_art_false_skips_paths_but_not_text}`, `color_replacement_render_tests::{color_replacement_maps_text_and_line_art, color_replacement_maps_stencil_mask_ink}`; (14) `raster::tests::interpolated_minified_image_edges_snap_to_whole_pixels` (`cargo test -p hayro`); (15) `raster::tests::shrunk_soft_mask_larger_than_its_image_keeps_thin_strokes`; (16) `raster::tests::soft_mask_applies_to_a_shading_pattern_fill`; (17), (18) `raster::tests::reading_colors_keep_highlight_annotations_readable`; (20) `raster::tests::a_tiling_pattern_drawn_once_shows_its_cell`, `raster::tests::a_large_step_still_tiles_where_the_next_cell_shows`, `raster::tests::a_tiling_cell_too_thin_to_scale_keeps_the_old_path` | | hayro-jbig2 | 0.3.0 | Apache-2.0 OR MIT | (1) at most 2^28 pixels per bitmap, page bitmap, halftone grid and grayscale image (each side could be 65535: 4.3 billion pixels decoded one by one); (2) at most 2^26 symbol pixels per symbol dictionary (a fuzzed dictionary decoded for minutes); (3) a symbol dictionary's height classes are capped at one per new symbol and its export runs at `2 × symbols + 1`, each plus `EXTRA_EMPTY_STEPS` (1024): an empty height class or a zero-length export run doesn't advance, and past the end of its data the arithmetic decoder can decode them for ever (one changed byte hung the renderer) | (1) `raster::tests::jbig2_regions_of_billions_of_pixels_are_refused`; (2) the nightly `cargo xtask fuzz` finding, which now finishes in about a second; (3) `raster::tests::jbig2_symbol_dictionaries_that_never_advance_terminate` | | lopdf | 0.45.0 | MIT | (1) PNG predictor rows longer than the data are refused before their buffers are allocated (a fuzzed `/Columns 4294967295` allocated two 4 GiB rows), and empty frames return without row buffers; (2) predictor row widths use saturating arithmetic or reject overflow; (3) sub-byte TIFF Predictor 2 scratch is bounded by the samples present in the input instead of the declared `/Colors`, aligned with [lopdf#589](https://github.com/J-F-Liu/lopdf/pull/589) | (1) `inspect::tests::png_predictor_rows_longer_than_the_data_are_refused_before_allocating`, `inspect::tests::empty_png_predictor_frames_do_not_allocate_rows`; (2) `inspect::tests::tiff_subbyte_predictor_row_width_overflow_is_refused`; (3) `inspect::tests::tiff_subbyte_predictor_scratch_is_bounded_by_available_samples`, `inspect::tests::tiff_subbyte_predictors_keep_components_rows_and_padding` | -| hayro-syntax | 0.7.2 | Apache-2.0 OR MIT | (1) Page-tree cycle guard in `resolve_pages` (visited set + depth cap): a `/Kids` loop among compressed objects overflowed the stack and aborted the process; (2) `ccitt_size_ok`: CCITT images wider than 2^20 columns or over 2^28 pixels are not decoded (a fuzzed `/Columns 4294967295` allocated 4 GiB); (3) Flate/LZW predictor row widths are saturating `usize`, a zero width is refused and a row longer than the data is not allocated (a fuzzed `/Columns 9223372036854775807` wrapped to a 2^61-byte allocation and aborted); (4) the inline-image end-of-data check (`EI`) doesn't nest inside its own look-ahead and examines at most 256 candidates and steps (50 images with "EI" in their data ran for over ten minutes); (5) a stream whose `/Length` is wrong is recovered only when `stream` is the next token — scanning ahead to a later object's `stream` made an indirect appearance-state dictionary (Quartz checkboxes: `/AP /N` → `<< /Yes … /Off … >>`) render as a non-form, so the widget was skipped; (6) JPX rescaling uses an exact integer sample range for 1–32-bit components (32 shifted past u32, and floating-point maxima at 25–31 bits wrapped to zero), and refuses zero-sized rows; (7) `decode_limit`: Flate (through flate2 and the fallback inflater), LZW and RunLength never write past `MAX_DECODED_STREAM` (256 MiB), or, for the last filter of an image of known size, past twice its pixel bytes (a predictor tag byte per byte), at most 1 GiB; `Stream::decoded_within` for budgeted callers; a page's `/Contents` array shares one `MAX_DECODED_STREAM` (a 2 MB page whose content stream or 8 × 8 image inflated to 2 GB took the renderer past 3 GB in under a second; naming the stream twenty times in `/Contents`, 5 GB); (8) high-precision numbers (jsPDF MediaBox coordinates with over 19 digits) parse without overflowing the u64 mantissa: fractional digits past it are dropped, integer digits past it scale the value (a real, kept finite); (9) large dictionary indexes are built on first use and shared across repeated reads within each PDF (#307); the validated-byte cache is bounded, reader contexts remain separate, repairs and inline/content dictionaries bypass sharing, and small dictionaries stay eager; (10) decoded object-stream slots publish once under contention, cold loading rejects recursive dependencies, and xref repair serializes without holding recursive read guards; this permits one parser per native render pool with private worker caches; (11) `sync.rs`: a poisoned lock is recovered instead of unwrapped (a worker panic no longer cascades into every reader of the same PDF), and xref repair takes a blocking write lock instead of asserting a non-blocking one; (12) `SegmentList` (`util.rs`) returns `None` for an out-of-range index instead of panicking; (13) a page's `/UserUnit` scales `render_dimensions` and `initial_transform`, so the page and everything on it are sized in points, as Acrobat shows them; it is read as Acrobat reads it (the page's own entry, not inherited; a number from 1 up, at most 75,000; anything else counts as 1), and a page without it keeps exactly the transform it had; (14) revision 2–4 passwords are tried as given and then in PDFDocEncoding (`legacy_passwords` in `crypto/mod.rs`, which resolves the upstream `TODO: Convert to PDFDocEncoding`): passwords arrive as UTF-8 text, so a password with characters outside ASCII (`Çok güzel`, `ılık€`) written in PDFDocEncoding, as ISO 32000-2 §7.6.4.3.2 asks and qpdf and Acrobat write it, was always wrong; (15) page content is read a piece at a time (`page::ContentReader`, `Page::content_reader`): plain streams and Flate streams without a predictor are decoded as they are read, with a budget of 64 times their compressed size and never less than `MAX_DECODED_STREAM` (a stream that expands past it is cut and reported); other streams are decoded whole, as before, and share `MAX_DECODED_STREAM`. The content tokenizer reads a window at a time (`UntypedIter::new_window`, `TypedIter::needs_more`, `TypedIter::committed`): an instruction that runs past the window is not decided until more data follows, which `Reader` records by flagging reads and `at_end` past the end of the data, including through the clones the parser makes. The Flate decoder keeps its own 32 KiB history, so it pauses at any output size. `ContentReader::new` reuses raw/decrypted stream bytes for budget accounting and piece creation, and `decoded_raw_within` applies the existing Whole-stream filters and limits to those bytes without decrypting twice; (16) revision 5–6 (AES-256) passwords are tried in their SASLprep form (RFC 4013, then UTF-8, at most 127 bytes, as ISO 32000-2 §7.6.4.3.3 Algorithm 2.A asks and pdfcraft-crypt writes them) and then, if that differs, as given (`aes256_passwords` in `crypto/mod.rs`, which resolves the upstream `TODO: Do the above.`; `stringprep`, already in the tree through pdfcraft-crypt, is an optional dependency enabled by `std`, and without `std` passwords are used as given): the renderer used the password as typed, so one that SASLprep changes (a decomposed `café`, a no-break space, the fullwidth `ab` a Japanese IME types in full-width mode) was wrong, although pdfcraft-cos accepted it: protecting a document with such an open password was rolled back ("the password is incorrect"), and a file with such a password did not open with it.; (17) CCITT `/Rows 0` means the height is not predetermined (ISO 32000-2 Table 11), not zero rows: scanned Group 4 pages written that way rendered blank; (18) The streaming Flate decoder (`lzw_flate::flate::fallback`) copies a back-reference in runs of up to its distance (`extend_from_within`), not byte by byte. The copy reads only bytes already in the output, and a copy whose source does not exist still writes nothing, so the bytes are those a byte-by-byte copy writes. Inflating the A1 sample's content stream (278.6 MB) takes about 14% less time (0.66 s to 0.56 s); the output is identical; (19) CCITT `/Rows` below the image's `/Height` decodes to the height: a plotter driver wrote `/Rows` equal to `/Columns`, so only the first rows were decoded and the rest drawn black (#3308) (20) `stream` followed by spaces or tabs and then the line break (`stream \r\n`, as Microsoft Reporting Services writes it) starts the data after the line break; the content stream was taken to start at the space and the page rendered blank.; (21) a JP2 colour specification naming an enumerated colour space the decoder refuses (CIEJab in a veraPDF fixture, YCbCr, PhotoYCC, YPbPr, bilevel…) no longer fails the image: it is decoded again from a copy whose `colr` names the space the decoder assumes without one, greyscale, sRGB or CMYK by component count, as MuPDF and Poppler draw it (`without_refused_enumerated_colour`; the page drew blank, #3306); (22) an object stream's index of `objnum offset` pairs is parsed once per stream and kept beside its decoded data (`ObjectStreamIndexes`, `XRef::with_object_stream_indexes`), and an offset past `usize` is malformed instead of wrapping: `XRef::get_with` parsed the whole index again for every object it fetched from the stream, so reading all of a stream of N objects took N² steps (a Firefox page whose 65,542 objects share one stream took 37 s to draw and 40 s to extract its text) | (1) `cos/tests/writer.rs::page_tree_loops_in_object_streams_do_not_crash_readers`; (2) `raster::tests::absurd_mask_and_fax_sizes_are_refused_before_decoding`; (3) `raster::tests::absurd_predictor_columns_and_line_widths_render`; (4) `raster::tests::inline_images_with_ei_in_their_data_parse_in_linear_time`; (5) `raster::tests::indirect_appearance_state_dict_is_not_another_stream`; (6) `raster::tests::jpx_stream_bit_depth_boundaries_do_not_panic`, `raster::tests::jpx_32_bit_image_does_not_prevent_other_page_content_from_rendering`, `raster::tests::jpx_gray_rgb_and_alpha_keep_eight_bit_samples`, `raster::tests::jpx_streams_reject_out_of_range_bit_depths`; (7) `raster::tests::decompression_bombs_stop_at_the_stream_limit`, `raster::tests::page_contents_and_nested_forms_share_one_budget`; (8) `inspect::tests::jspdf_high_precision_mediabox_does_not_overflow_dimensions`, `object::number::tests::high_precision_float_does_not_overflow_mantissa` (hayro-syntax); (9) `object::dict::lazy_index_tests`, `raster::tests::large_resource_indexes_preserve_pixels_and_text`; (10) `data::tests`, `xref::tests::concurrent_cold_object_stream_reads_all_succeed`, `raster::tests::shared_parser_is_lazy_and_initializes_once_under_contention`; (11) `data::tests::panicking_initializer_wakes_waiters_and_prevents_retries`, `xref::tests::concurrent_cold_object_stream_reads_all_succeed`; (12) `util::tests::segment_list_rejects_out_of_range_indices`; (13) `raster::tests::user_unit_scales_the_page_and_everything_on_it`; (14) `crypto::pdfcraft_password_tests`, `pdfcraft-engine` `tests::legacy_passwords_with_turkish_characters_open`; (15) `content::tests::windows_keep_every_instruction_at_every_split`, `content::tests::windows_keep_every_instruction_in_pieces_of_any_size`, `content::tests::windows_match_the_slice_on_random_content`, `content::tests::windows_drop_blanks_and_keep_a_comment_that_may_go_on`, `page::content_reader_tests::content_past_the_cap_is_read_to_the_end`, `page::content_reader_tests::a_stream_that_expands_past_the_budget_is_cut_there`, `page::content_reader_tests::a_small_expansion_under_the_cap_is_not_cut`, `raster::tests::page_content_past_the_old_cap_renders`, `raster::tests::content_reader_returns_the_same_bytes_in_any_pieces`, `raster::tests::content_bombs_stop_at_the_budget_and_say_so`, `page::content_reader_tests::plain_and_whole_pieces_keep_their_bytes`, `page::content_reader_tests::repeated_content_reference_counts_compressed_bytes_once`, `page::content_reader_tests::whole_cap_still_counts_later_unique_streams`; (16) `crypto::pdfcraft_password_tests::aes256_passwords_are_tried_in_their_saslprep_form_then_as_given`, `crypto::pdfcraft_password_tests::aes256_passwords_open_as_typed_and_in_their_saslprep_form`, `pdfcraft-engine` `tests::aes256_open_passwords_that_saslprep_changes_protect_and_reopen_as_typed`, `tests::aes256_files_whose_passwords_saslprep_changes_open_as_typed`; (17) `raster::tests::group4_fax_with_rows_zero_decodes_to_the_image_height`; (18) `filter::lzw_flate::tests::back_reference_longer_than_its_distance_repeats_its_source`, `back_reference_cut_by_the_limit_resumes_in_the_next_call` and `back_reference_reads_bytes_written_by_an_earlier_call`; each fails when the copy returns the wrong remaining count; (19) `raster::tests::group4_fax_with_rows_below_its_height_decodes_to_the_image_height`; (20) `raster::tests::space_before_the_line_break_after_stream_still_renders`; (21) `raster::tests::a_jp2_image_in_a_refused_enumerated_colour_space_is_drawn`, `filter::jpx::tests::refused_enumerated_colour_spaces_become_the_component_counts_default`, `filter::jpx::tests::what_the_decoder_handles_or_cant_be_read_is_left_alone` (`cargo test --manifest-path vendor/hayro-syntax/Cargo.toml`); (22) `raster::tests::objects_in_one_large_object_stream_are_read_in_linear_time` -| hayro-syntax | 0.7.2 | Apache-2.0 OR MIT | (1) Page-tree cycle guard in `resolve_pages` (visited set + depth cap): a `/Kids` loop among compressed objects overflowed the stack and aborted the process; (2) `ccitt_size_ok`: CCITT images wider than 2^20 columns or over 2^28 pixels are not decoded (a fuzzed `/Columns 4294967295` allocated 4 GiB); (3) Flate/LZW predictor row widths are saturating `usize`, a zero width is refused and a row longer than the data is not allocated (a fuzzed `/Columns 9223372036854775807` wrapped to a 2^61-byte allocation and aborted); (4) the inline-image end-of-data check (`EI`) doesn't nest inside its own look-ahead and examines at most 256 candidates and steps (50 images with "EI" in their data ran for over ten minutes); (5) a stream whose `/Length` is wrong is recovered only when `stream` is the next token — scanning ahead to a later object's `stream` made an indirect appearance-state dictionary (Quartz checkboxes: `/AP /N` → `<< /Yes … /Off … >>`) render as a non-form, so the widget was skipped; (6) JPX rescaling uses an exact integer sample range for 1–32-bit components (32 shifted past u32, and floating-point maxima at 25–31 bits wrapped to zero), and refuses zero-sized rows; (7) `decode_limit`: Flate (through flate2 and the fallback inflater), LZW, RunLength and ASCII85 never write past `MAX_DECODED_STREAM` (256 MiB), or, for the last filter of an image of known size, past twice its pixel bytes (a predictor tag byte per byte), at most 1 GiB; `Stream::decoded_within` for budgeted callers; a page's `/Contents` array shares one `MAX_DECODED_STREAM` (a 2 MB page whose content stream or 8 × 8 image inflated to 2 GB took the renderer past 3 GB in under a second; naming the stream twenty times in `/Contents`, 5 GB); (8) high-precision numbers (jsPDF MediaBox coordinates with over 19 digits) parse without overflowing the u64 mantissa: fractional digits past it are dropped, integer digits past it scale the value (a real, kept finite); (9) large dictionary indexes are built on first use and shared across repeated reads within each PDF (#307); the validated-byte cache is bounded, reader contexts remain separate, repairs and inline/content dictionaries bypass sharing, and small dictionaries stay eager; (10) decoded object-stream slots publish once under contention, cold loading rejects recursive dependencies, and xref repair serializes without holding recursive read guards; this permits one parser per native render pool with private worker caches; (11) `sync.rs`: a poisoned lock is recovered instead of unwrapped (a worker panic no longer cascades into every reader of the same PDF), and xref repair takes a blocking write lock instead of asserting a non-blocking one; (12) `SegmentList` (`util.rs`) returns `None` for an out-of-range index instead of panicking; (13) a page's `/UserUnit` scales `render_dimensions` and `initial_transform`, so the page and everything on it are sized in points, as Acrobat shows them; it is read as Acrobat reads it (the page's own entry, not inherited; a number from 1 up, at most 75,000; anything else counts as 1), and a page without it keeps exactly the transform it had; (14) revision 2–4 passwords are tried as given and then in PDFDocEncoding (`legacy_passwords` in `crypto/mod.rs`, which resolves the upstream `TODO: Convert to PDFDocEncoding`): passwords arrive as UTF-8 text, so a password with characters outside ASCII (`Çok güzel`, `ılık€`) written in PDFDocEncoding, as ISO 32000-2 §7.6.4.3.2 asks and qpdf and Acrobat write it, was always wrong; (15) page content is read a piece at a time (`page::ContentReader`, `Page::content_reader`): plain streams and Flate streams without a predictor are decoded as they are read, with a budget of 64 times their compressed size and never less than `MAX_DECODED_STREAM` (a stream that expands past it is cut and reported); other streams are decoded whole, as before, and share `MAX_DECODED_STREAM`. The content tokenizer reads a window at a time (`UntypedIter::new_window`, `TypedIter::needs_more`, `TypedIter::committed`): an instruction that runs past the window is not decided until more data follows, which `Reader` records by flagging reads and `at_end` past the end of the data, including through the clones the parser makes. The Flate decoder keeps its own 32 KiB history, so it pauses at any output size. `ContentReader::new` reuses raw/decrypted stream bytes for budget accounting and piece creation, and `decoded_raw_within` applies the existing Whole-stream filters and limits to those bytes without decrypting twice; (16) revision 5–6 (AES-256) passwords are tried in their SASLprep form (RFC 4013, then UTF-8, at most 127 bytes, as ISO 32000-2 §7.6.4.3.3 Algorithm 2.A asks and pdfcraft-crypt writes them) and then, if that differs, as given (`aes256_passwords` in `crypto/mod.rs`, which resolves the upstream `TODO: Do the above.`; `stringprep`, already in the tree through pdfcraft-crypt, is an optional dependency enabled by `std`, and without `std` passwords are used as given): the renderer used the password as typed, so one that SASLprep changes (a decomposed `café`, a no-break space, the fullwidth `ab` a Japanese IME types in full-width mode) was wrong, although pdfcraft-cos accepted it: protecting a document with such an open password was rolled back ("the password is incorrect"), and a file with such a password did not open with it. | (1) `cos/tests/writer.rs::page_tree_loops_in_object_streams_do_not_crash_readers`; (2) `raster::tests::absurd_mask_and_fax_sizes_are_refused_before_decoding`; (3) `raster::tests::absurd_predictor_columns_and_line_widths_render`; (4) `raster::tests::inline_images_with_ei_in_their_data_parse_in_linear_time`; (5) `raster::tests::indirect_appearance_state_dict_is_not_another_stream`; (6) `raster::tests::jpx_stream_bit_depth_boundaries_do_not_panic`, `raster::tests::jpx_32_bit_image_does_not_prevent_other_page_content_from_rendering`, `raster::tests::jpx_gray_rgb_and_alpha_keep_eight_bit_samples`, `raster::tests::jpx_streams_reject_out_of_range_bit_depths`; (7) `raster::tests::decompression_bombs_stop_at_the_stream_limit`, `raster::tests::page_contents_and_nested_forms_share_one_budget`; (8) `inspect::tests::jspdf_high_precision_mediabox_does_not_overflow_dimensions`, `object::number::tests::high_precision_float_does_not_overflow_mantissa` (hayro-syntax); (9) `object::dict::lazy_index_tests`, `raster::tests::large_resource_indexes_preserve_pixels_and_text`; (10) `data::tests`, `xref::tests::concurrent_cold_object_stream_reads_all_succeed`, `raster::tests::shared_parser_is_lazy_and_initializes_once_under_contention`; (11) `data::tests::panicking_initializer_wakes_waiters_and_prevents_retries`, `xref::tests::concurrent_cold_object_stream_reads_all_succeed`; (12) `util::tests::segment_list_rejects_out_of_range_indices`; (13) `raster::tests::user_unit_scales_the_page_and_everything_on_it`; (14) `crypto::pdfcraft_password_tests`, `pdfcraft-engine` `tests::legacy_passwords_with_turkish_characters_open`; (15) `content::tests::windows_keep_every_instruction_at_every_split`, `content::tests::windows_keep_every_instruction_in_pieces_of_any_size`, `content::tests::windows_match_the_slice_on_random_content`, `content::tests::windows_drop_blanks_and_keep_a_comment_that_may_go_on`, `page::content_reader_tests::content_past_the_cap_is_read_to_the_end`, `page::content_reader_tests::a_stream_that_expands_past_the_budget_is_cut_there`, `page::content_reader_tests::a_small_expansion_under_the_cap_is_not_cut`, `raster::tests::page_content_past_the_old_cap_renders`, `raster::tests::content_reader_returns_the_same_bytes_in_any_pieces`, `raster::tests::content_bombs_stop_at_the_budget_and_say_so`, `page::content_reader_tests::plain_and_whole_pieces_keep_their_bytes`, `page::content_reader_tests::repeated_content_reference_counts_compressed_bytes_once`, `page::content_reader_tests::whole_cap_still_counts_later_unique_streams`; (16) `crypto::pdfcraft_password_tests::aes256_passwords_are_tried_in_their_saslprep_form_then_as_given`, `crypto::pdfcraft_password_tests::aes256_passwords_open_as_typed_and_in_their_saslprep_form`, `pdfcraft-engine` `tests::aes256_open_passwords_that_saslprep_changes_protect_and_reopen_as_typed`, `tests::aes256_files_whose_passwords_saslprep_changes_open_as_typed` +| hayro-syntax | 0.7.2 | Apache-2.0 OR MIT | (1) Page-tree cycle guard in `resolve_pages` (visited set + depth cap): a `/Kids` loop among compressed objects overflowed the stack and aborted the process; (2) `ccitt_size_ok`: CCITT images wider than 2^20 columns or over 2^28 pixels are not decoded (a fuzzed `/Columns 4294967295` allocated 4 GiB); (3) Flate/LZW predictor row widths are saturating `usize`, a zero width is refused and a row longer than the data is not allocated (a fuzzed `/Columns 9223372036854775807` wrapped to a 2^61-byte allocation and aborted); (4) the inline-image end-of-data check (`EI`) doesn't nest inside its own look-ahead and examines at most 256 candidates and steps (50 images with "EI" in their data ran for over ten minutes); (5) a stream whose `/Length` is wrong is recovered only when `stream` is the next token — scanning ahead to a later object's `stream` made an indirect appearance-state dictionary (Quartz checkboxes: `/AP /N` → `<< /Yes … /Off … >>`) render as a non-form, so the widget was skipped; (6) JPX rescaling uses an exact integer sample range for 1–32-bit components (32 shifted past u32, and floating-point maxima at 25–31 bits wrapped to zero), and refuses zero-sized rows; (7) `decode_limit`: Flate (through flate2 and the fallback inflater), LZW, RunLength and ASCII85 never write past `MAX_DECODED_STREAM` (256 MiB), or, for the last filter of an image of known size, past twice its pixel bytes (a predictor tag byte per byte), at most 1 GiB; `Stream::decoded_within` for budgeted callers; a page's `/Contents` array shares one `MAX_DECODED_STREAM` (a 2 MB page whose content stream or 8 × 8 image inflated to 2 GB took the renderer past 3 GB in under a second; naming the stream twenty times in `/Contents`, 5 GB); (8) high-precision numbers (jsPDF MediaBox coordinates with over 19 digits) parse without overflowing the u64 mantissa: fractional digits past it are dropped, integer digits past it scale the value (a real, kept finite); (9) large dictionary indexes are built on first use and shared across repeated reads within each PDF (#307); the validated-byte cache is bounded, reader contexts remain separate, repairs and inline/content dictionaries bypass sharing, and small dictionaries stay eager; (10) decoded object-stream slots publish once under contention, cold loading rejects recursive dependencies, and xref repair serializes without holding recursive read guards; this permits one parser per native render pool with private worker caches; (11) `sync.rs`: a poisoned lock is recovered instead of unwrapped (a worker panic no longer cascades into every reader of the same PDF), and xref repair takes a blocking write lock instead of asserting a non-blocking one; (12) `SegmentList` (`util.rs`) returns `None` for an out-of-range index instead of panicking; (13) a page's `/UserUnit` scales `render_dimensions` and `initial_transform`, so the page and everything on it are sized in points, as Acrobat shows them; it is read as Acrobat reads it (the page's own entry, not inherited; a number from 1 up, at most 75,000; anything else counts as 1), and a page without it keeps exactly the transform it had; (14) revision 2–4 passwords are tried as given and then in PDFDocEncoding (`legacy_passwords` in `crypto/mod.rs`, which resolves the upstream `TODO: Convert to PDFDocEncoding`): passwords arrive as UTF-8 text, so a password with characters outside ASCII (`Çok güzel`, `ılık€`) written in PDFDocEncoding, as ISO 32000-2 §7.6.4.3.2 asks and qpdf and Acrobat write it, was always wrong; (15) page content is read a piece at a time (`page::ContentReader`, `Page::content_reader`): plain streams and Flate streams without a predictor are decoded as they are read, with a budget of 64 times their compressed size and never less than `MAX_DECODED_STREAM` (a stream that expands past it is cut and reported); other streams are decoded whole, as before, and share `MAX_DECODED_STREAM`. The content tokenizer reads a window at a time (`UntypedIter::new_window`, `TypedIter::needs_more`, `TypedIter::committed`): an instruction that runs past the window is not decided until more data follows, which `Reader` records by flagging reads and `at_end` past the end of the data, including through the clones the parser makes. The Flate decoder keeps its own 32 KiB history, so it pauses at any output size. `ContentReader::new` reuses raw/decrypted stream bytes for budget accounting and piece creation, and `decoded_raw_within` applies the existing Whole-stream filters and limits to those bytes without decrypting twice; (16) revision 5–6 (AES-256) passwords are tried in their SASLprep form (RFC 4013, then UTF-8, at most 127 bytes, as ISO 32000-2 §7.6.4.3.3 Algorithm 2.A asks and pdfcraft-crypt writes them) and then, if that differs, as given (`aes256_passwords` in `crypto/mod.rs`, which resolves the upstream `TODO: Do the above.`; `stringprep`, already in the tree through pdfcraft-crypt, is an optional dependency enabled by `std`, and without `std` passwords are used as given): the renderer used the password as typed, so one that SASLprep changes (a decomposed `café`, a no-break space, the fullwidth `ab` a Japanese IME types in full-width mode) was wrong, although pdfcraft-cos accepted it: protecting a document with such an open password was rolled back ("the password is incorrect"), and a file with such a password did not open with it.; (17) CCITT `/Rows 0` means the height is not predetermined (ISO 32000-2 Table 11), not zero rows: scanned Group 4 pages written that way rendered blank; (18) The streaming Flate decoder (`lzw_flate::flate::fallback`) copies a back-reference in runs of up to its distance (`extend_from_within`), not byte by byte. The copy reads only bytes already in the output, and a copy whose source does not exist still writes nothing, so the bytes are those a byte-by-byte copy writes. Inflating the A1 sample's content stream (278.6 MB) takes about 14% less time (0.66 s to 0.56 s); the output is identical; (19) CCITT `/Rows` below the image's `/Height` decodes to the height: a plotter driver wrote `/Rows` equal to `/Columns`, so only the first rows were decoded and the rest drawn black (#3308) (20) `stream` followed by spaces or tabs and then the line break (`stream \r\n`, as Microsoft Reporting Services writes it) starts the data after the line break; the content stream was taken to start at the space and the page rendered blank.; (21) a JP2 colour specification naming an enumerated colour space the decoder refuses (CIEJab in a veraPDF fixture, YCbCr, PhotoYCC, YPbPr, bilevel…) no longer fails the image: it is decoded again from a copy whose `colr` names the space the decoder assumes without one, greyscale, sRGB or CMYK by component count, as MuPDF and Poppler draw it (`without_refused_enumerated_colour`; the page drew blank, #3306); (22) an object stream's index of `objnum offset` pairs is parsed once per stream and kept beside its decoded data (`ObjectStreamIndexes`, `XRef::with_object_stream_indexes`), and an offset past `usize` is malformed instead of wrapping: `XRef::get_with` parsed the whole index again for every object it fetched from the stream, so reading all of a stream of N objects took N² steps (a Firefox page whose 65,542 objects share one stream took 37 s to draw and 40 s to extract its text); (23) direct arrays and dictionaries share a reader-local nesting cap of 128 while skipping and parsing; deeper objects return `None` instead of overflowing the stack, including in content, trailers and marked-content properties | (1) `cos/tests/writer.rs::page_tree_loops_in_object_streams_do_not_crash_readers`; (2) `raster::tests::absurd_mask_and_fax_sizes_are_refused_before_decoding`; (3) `raster::tests::absurd_predictor_columns_and_line_widths_render`; (4) `raster::tests::inline_images_with_ei_in_their_data_parse_in_linear_time`; (5) `raster::tests::indirect_appearance_state_dict_is_not_another_stream`; (6) `raster::tests::jpx_stream_bit_depth_boundaries_do_not_panic`, `raster::tests::jpx_32_bit_image_does_not_prevent_other_page_content_from_rendering`, `raster::tests::jpx_gray_rgb_and_alpha_keep_eight_bit_samples`, `raster::tests::jpx_streams_reject_out_of_range_bit_depths`; (7) `raster::tests::decompression_bombs_stop_at_the_stream_limit`, `raster::tests::page_contents_and_nested_forms_share_one_budget`; (8) `inspect::tests::jspdf_high_precision_mediabox_does_not_overflow_dimensions`, `object::number::tests::high_precision_float_does_not_overflow_mantissa` (hayro-syntax); (9) `object::dict::lazy_index_tests`, `raster::tests::large_resource_indexes_preserve_pixels_and_text`; (10) `data::tests`, `xref::tests::concurrent_cold_object_stream_reads_all_succeed`, `raster::tests::shared_parser_is_lazy_and_initializes_once_under_contention`; (11) `data::tests::panicking_initializer_wakes_waiters_and_prevents_retries`, `xref::tests::concurrent_cold_object_stream_reads_all_succeed`; (12) `util::tests::segment_list_rejects_out_of_range_indices`; (13) `raster::tests::user_unit_scales_the_page_and_everything_on_it`; (14) `crypto::pdfcraft_password_tests`, `pdfcraft-engine` `tests::legacy_passwords_with_turkish_characters_open`; (15) `content::tests::windows_keep_every_instruction_at_every_split`, `content::tests::windows_keep_every_instruction_in_pieces_of_any_size`, `content::tests::windows_match_the_slice_on_random_content`, `content::tests::windows_drop_blanks_and_keep_a_comment_that_may_go_on`, `page::content_reader_tests::content_past_the_cap_is_read_to_the_end`, `page::content_reader_tests::a_stream_that_expands_past_the_budget_is_cut_there`, `page::content_reader_tests::a_small_expansion_under_the_cap_is_not_cut`, `raster::tests::page_content_past_the_old_cap_renders`, `raster::tests::content_reader_returns_the_same_bytes_in_any_pieces`, `raster::tests::content_bombs_stop_at_the_budget_and_say_so`, `page::content_reader_tests::plain_and_whole_pieces_keep_their_bytes`, `page::content_reader_tests::repeated_content_reference_counts_compressed_bytes_once`, `page::content_reader_tests::whole_cap_still_counts_later_unique_streams`; (16) `crypto::pdfcraft_password_tests::aes256_passwords_are_tried_in_their_saslprep_form_then_as_given`, `crypto::pdfcraft_password_tests::aes256_passwords_open_as_typed_and_in_their_saslprep_form`, `pdfcraft-engine` `tests::aes256_open_passwords_that_saslprep_changes_protect_and_reopen_as_typed`, `tests::aes256_files_whose_passwords_saslprep_changes_open_as_typed`; (17) `raster::tests::group4_fax_with_rows_zero_decodes_to_the_image_height`; (18) `filter::lzw_flate::tests::back_reference_longer_than_its_distance_repeats_its_source`, `back_reference_cut_by_the_limit_resumes_in_the_next_call` and `back_reference_reads_bytes_written_by_an_earlier_call`; each fails when the copy returns the wrong remaining count; (19) `raster::tests::group4_fax_with_rows_below_its_height_decodes_to_the_image_height`; (20) `raster::tests::space_before_the_line_break_after_stream_still_renders`; (21) `raster::tests::a_jp2_image_in_a_refused_enumerated_colour_space_is_drawn`, `filter::jpx::tests::refused_enumerated_colour_spaces_become_the_component_counts_default`, `filter::jpx::tests::what_the_decoder_handles_or_cant_be_read_is_left_alone` (`cargo test --manifest-path vendor/hayro-syntax/Cargo.toml`); (22) `raster::tests::objects_in_one_large_object_stream_are_read_in_linear_time`; (23) `raster::tests::deeply_nested_direct_objects_do_not_overflow_the_stack`, `raster::tests::dictionaries_nested_without_keys_in_content_do_not_overflow_the_stack`, `raster::tests::dictionaries_nested_without_keys_in_the_trailer_do_not_overflow_the_stack`, `raster::tests::dictionaries_nested_without_keys_as_marked_content_properties_do_not_overflow_the_stack`, `raster::tests::dictionaries_nested_without_keys_are_read_up_to_the_nesting_cap`, `raster::tests::nesting_at_the_cap_fits_a_512_kib_stack` (native only), `raster::tests::function_limits_depth_guard_refuses_a_chain_of_references` | lopdf | 0.45.0 | MIT | (1) PNG predictor rows longer than the data are refused before their buffers are allocated (a fuzzed `/Columns 4294967295` allocated two 4 GiB rows), and empty frames return without row buffers; (2) predictor row widths use saturating arithmetic or reject overflow; (3) sub-byte TIFF Predictor 2 scratch is bounded by the samples present in the input instead of the declared `/Colors`, aligned with [lopdf#589](https://github.com/J-F-Liu/lopdf/pull/589); (4) the object lookup keeps its cycle history through compressed objects, requires an ordinary in-file container, and caps the chain of indirect lookups at 16 (a chain of new objects, each a `/Length` compressed in a container whose own `/Length` names the next, or a stream whose `/Length` names the next stream, overflowed the stack: a dev build's 2 MiB thread within 800 hops); (5) object-stream members are parsed within their own extent (up to the next distinct offset), an entry whose offset repeats an earlier entry's is skipped (so a repeated object number can resolve to its earlier entry), and offsets are processed in index order | (1) `inspect::tests::png_predictor_rows_longer_than_the_data_are_refused_before_allocating`, `inspect::tests::empty_png_predictor_frames_do_not_allocate_rows`; (2) `inspect::tests::tiff_subbyte_predictor_row_width_overflow_is_refused`; (3) `inspect::tests::tiff_subbyte_predictor_scratch_is_bounded_by_available_samples`, `inspect::tests::tiff_subbyte_predictors_keep_components_rows_and_padding`; (4) `inspect::tests::compressed_object_self_container_does_not_recurse`, `inspect::tests::compressed_object_mutual_containers_do_not_recurse`, `inspect::tests::object_stream_length_cycle_does_not_recurse`, `inspect::tests::compressed_object_container_chain_does_not_recurse`, `inspect::tests::compressed_length_chain_does_not_recurse`, `inspect::tests::plain_stream_length_chain_does_not_recurse`, `inspect::tests::compressed_objects_and_indirect_stream_length_still_load`, `inspect::tests::compressed_length_in_a_container_with_an_indirect_length_still_loads`; (5) `inspect::tests::object_stream_member_extents_bound_owned_strings`, `inspect::tests::object_stream_member_extents_preserve_index_order_and_whitespace` | -| hayro-syntax | 0.7.2 | Apache-2.0 OR MIT | (1) Page-tree cycle guard in `resolve_pages` (visited set + depth cap): a `/Kids` loop among compressed objects overflowed the stack and aborted the process; (2) `ccitt_size_ok`: CCITT images wider than 2^20 columns or over 2^28 pixels are not decoded (a fuzzed `/Columns 4294967295` allocated 4 GiB); (3) Flate/LZW predictor row widths are saturating `usize`, a zero width is refused and a row longer than the data is not allocated (a fuzzed `/Columns 9223372036854775807` wrapped to a 2^61-byte allocation and aborted); (4) the inline-image end-of-data check (`EI`) doesn't nest inside its own look-ahead and examines at most 256 candidates and steps (50 images with "EI" in their data ran for over ten minutes); (5) a stream whose `/Length` is wrong is recovered only when `stream` is the next token — scanning ahead to a later object's `stream` made an indirect appearance-state dictionary (Quartz checkboxes: `/AP /N` → `<< /Yes … /Off … >>`) render as a non-form, so the widget was skipped; (6) JPX rescaling uses an exact integer sample range for 1–32-bit components (32 shifted past u32, and floating-point maxima at 25–31 bits wrapped to zero), and refuses zero-sized rows; (7) `decode_limit`: Flate (through flate2 and the fallback inflater), LZW and RunLength never write past `MAX_DECODED_STREAM` (256 MiB), or, for the last filter of an image of known size, past twice its pixel bytes (a predictor tag byte per byte), at most 1 GiB; `Stream::decoded_within` for budgeted callers; a page's `/Contents` array shares one `MAX_DECODED_STREAM` (a 2 MB page whose content stream or 8 × 8 image inflated to 2 GB took the renderer past 3 GB in under a second; naming the stream twenty times in `/Contents`, 5 GB); (8) high-precision numbers (jsPDF MediaBox coordinates with over 19 digits) parse without overflowing the u64 mantissa: fractional digits past it are dropped, integer digits past it scale the value (a real, kept finite); (9) large dictionary indexes are built on first use and shared across repeated reads within each PDF (#307); the validated-byte cache is bounded, reader contexts remain separate, repairs and inline/content dictionaries bypass sharing, and small dictionaries stay eager; (10) decoded object-stream slots publish once under contention, cold loading rejects recursive dependencies, and xref repair serializes without holding recursive read guards; this permits one parser per native render pool with private worker caches; (11) `sync.rs`: a poisoned lock is recovered instead of unwrapped (a worker panic no longer cascades into every reader of the same PDF), and xref repair takes a blocking write lock instead of asserting a non-blocking one; (12) `SegmentList` (`util.rs`) returns `None` for an out-of-range index instead of panicking; (13) a page's `/UserUnit` scales `render_dimensions` and `initial_transform`, so the page and everything on it are sized in points, as Acrobat shows them; it is read as Acrobat reads it (the page's own entry, not inherited; a number from 1 up, at most 75,000; anything else counts as 1), and a page without it keeps exactly the transform it had | (1) `cos/tests/writer.rs::page_tree_loops_in_object_streams_do_not_crash_readers`; (2) `raster::tests::absurd_mask_and_fax_sizes_are_refused_before_decoding`; (3) `raster::tests::absurd_predictor_columns_and_line_widths_render`; (4) `raster::tests::inline_images_with_ei_in_their_data_parse_in_linear_time`; (5) `raster::tests::indirect_appearance_state_dict_is_not_another_stream`; (6) `raster::tests::jpx_stream_bit_depth_boundaries_do_not_panic`, `raster::tests::jpx_32_bit_image_does_not_prevent_other_page_content_from_rendering`, `raster::tests::jpx_gray_rgb_and_alpha_keep_eight_bit_samples`, `raster::tests::jpx_streams_reject_out_of_range_bit_depths`; (7) `raster::tests::decompression_bombs_stop_at_the_stream_limit`, `raster::tests::page_contents_and_nested_forms_share_one_budget`; (8) `inspect::tests::jspdf_high_precision_mediabox_does_not_overflow_dimensions`, `object::number::tests::high_precision_float_does_not_overflow_mantissa` (hayro-syntax); (9) `object::dict::lazy_index_tests`, `raster::tests::large_resource_indexes_preserve_pixels_and_text`; (10) `data::tests`, `xref::tests::concurrent_cold_object_stream_reads_all_succeed`, `raster::tests::shared_parser_is_lazy_and_initializes_once_under_contention`; (11) `data::tests::panicking_initializer_wakes_waiters_and_prevents_retries`, `xref::tests::concurrent_cold_object_stream_reads_all_succeed`; (12) `util::tests::segment_list_rejects_out_of_range_indices`; (13) `raster::tests::user_unit_scales_the_page_and_everything_on_it` | | lopdf | 0.45.0 | MIT | (1) PNG predictor rows longer than the data are refused before their buffers are allocated (a fuzzed `/Columns 4294967295` allocated two 4 GiB rows), and empty frames return without row buffers; (2) predictor row widths use saturating arithmetic or reject overflow; (3) sub-byte TIFF Predictor 2 scratch is bounded by the samples present in the input instead of the declared `/Colors`, aligned with [lopdf#589](https://github.com/J-F-Liu/lopdf/pull/589) | (1) `inspect::tests::png_predictor_rows_longer_than_the_data_are_refused_before_allocating`, `inspect::tests::empty_png_predictor_frames_do_not_allocate_rows`; (2) `inspect::tests::tiff_subbyte_predictor_row_width_overflow_is_refused`; (3) `inspect::tests::tiff_subbyte_predictor_scratch_is_bounded_by_available_samples`, `inspect::tests::tiff_subbyte_predictors_keep_components_rows_and_padding` | -| hayro-syntax | 0.7.2 | Apache-2.0 OR MIT | (1) Page-tree cycle guard in `resolve_pages` (visited set + depth cap): a `/Kids` loop among compressed objects overflowed the stack and aborted the process; (2) `ccitt_size_ok`: CCITT images wider than 2^20 columns or over 2^28 pixels are not decoded (a fuzzed `/Columns 4294967295` allocated 4 GiB); (3) Flate/LZW predictor row widths are saturating `usize`, a zero width is refused and a row longer than the data is not allocated (a fuzzed `/Columns 9223372036854775807` wrapped to a 2^61-byte allocation and aborted); (4) the inline-image end-of-data check (`EI`) doesn't nest inside its own look-ahead and examines at most 256 candidates and steps (50 images with "EI" in their data ran for over ten minutes); (5) a stream whose `/Length` is wrong is recovered only when `stream` is the next token — scanning ahead to a later object's `stream` made an indirect appearance-state dictionary (Quartz checkboxes: `/AP /N` → `<< /Yes … /Off … >>`) render as a non-form, so the widget was skipped; (6) JPX rescaling uses an exact integer sample range for 1–32-bit components (32 shifted past u32, and floating-point maxima at 25–31 bits wrapped to zero), and refuses zero-sized rows; (7) `decode_limit`: Flate (through flate2 and the fallback inflater), LZW and RunLength never write past `MAX_DECODED_STREAM` (256 MiB), or, for the last filter of an image of known size, past twice its pixel bytes (a predictor tag byte per byte), at most 1 GiB; `Stream::decoded_within` for budgeted callers; a page's `/Contents` array shares one `MAX_DECODED_STREAM` (a 2 MB page whose content stream or 8 × 8 image inflated to 2 GB took the renderer past 3 GB in under a second; naming the stream twenty times in `/Contents`, 5 GB); (8) high-precision numbers (jsPDF MediaBox coordinates with over 19 digits) parse without overflowing the u64 mantissa: fractional digits past it are dropped, integer digits past it scale the value (a real, kept finite); (9) large dictionary indexes are built on first use and shared across repeated reads within each PDF (#307); the validated-byte cache is bounded, reader contexts remain separate, repairs and inline/content dictionaries bypass sharing, and small dictionaries stay eager; (10) decoded object-stream slots publish once under contention, cold loading rejects recursive dependencies, and xref repair serializes without holding recursive read guards; this permits one parser per native render pool with private worker caches; (11) `sync.rs`: a poisoned lock is recovered instead of unwrapped (a worker panic no longer cascades into every reader of the same PDF), and xref repair takes a blocking write lock instead of asserting a non-blocking one; (12) `SegmentList` (`util.rs`) returns `None` for an out-of-range index instead of panicking; (13) a page's `/UserUnit` scales `render_dimensions` and `initial_transform`, so the page and everything on it are sized in points, as Acrobat shows them; it is read as Acrobat reads it (the page's own entry, not inherited; a number from 1 up, at most 75,000; anything else counts as 1), and a page without it keeps exactly the transform it had; (14) direct arrays and dictionaries share a reader-local nesting cap of 128, counted while skipping and while parsing a dictionary (its lenient repair reads, rather than skips, an object found where a key belongs, so `<< << …` recursed through that read); deeper objects return `None` instead of overflowing the stack (including unused trailer values, trailer entries, content operands and marked-content properties); a chain of 65 direct stitching functions now stops at this cap, before the 64-function guard | (1) `cos/tests/writer.rs::page_tree_loops_in_object_streams_do_not_crash_readers`; (2) `raster::tests::absurd_mask_and_fax_sizes_are_refused_before_decoding`; (3) `raster::tests::absurd_predictor_columns_and_line_widths_render`; (4) `raster::tests::inline_images_with_ei_in_their_data_parse_in_linear_time`; (5) `raster::tests::indirect_appearance_state_dict_is_not_another_stream`; (6) `raster::tests::jpx_stream_bit_depth_boundaries_do_not_panic`, `raster::tests::jpx_32_bit_image_does_not_prevent_other_page_content_from_rendering`, `raster::tests::jpx_gray_rgb_and_alpha_keep_eight_bit_samples`, `raster::tests::jpx_streams_reject_out_of_range_bit_depths`; (7) `raster::tests::decompression_bombs_stop_at_the_stream_limit`, `raster::tests::page_contents_and_nested_forms_share_one_budget`; (8) `inspect::tests::jspdf_high_precision_mediabox_does_not_overflow_dimensions`, `object::number::tests::high_precision_float_does_not_overflow_mantissa` (hayro-syntax); (9) `object::dict::lazy_index_tests`, `raster::tests::large_resource_indexes_preserve_pixels_and_text`; (10) `data::tests`, `xref::tests::concurrent_cold_object_stream_reads_all_succeed`, `raster::tests::shared_parser_is_lazy_and_initializes_once_under_contention`; (11) `data::tests::panicking_initializer_wakes_waiters_and_prevents_retries`, `xref::tests::concurrent_cold_object_stream_reads_all_succeed`; (12) `util::tests::segment_list_rejects_out_of_range_indices`; (13) `raster::tests::user_unit_scales_the_page_and_everything_on_it`; (14) `raster::tests::deeply_nested_direct_objects_do_not_overflow_the_stack`, `raster::tests::dictionaries_nested_without_keys_in_content_do_not_overflow_the_stack`, `raster::tests::dictionaries_nested_without_keys_in_the_trailer_do_not_overflow_the_stack`, `raster::tests::dictionaries_nested_without_keys_as_marked_content_properties_do_not_overflow_the_stack`, `raster::tests::dictionaries_nested_without_keys_are_read_up_to_the_nesting_cap`, `raster::tests::nesting_at_the_cap_fits_a_512_kib_stack` (native only), `raster::tests::function_limits_depth_guard_refuses_a_chain_of_references` | | winit | 0.30.13 | Apache-2.0 | (1) on Windows 11 (build 22000 and later), `WM_DPICHANGED` applies the rect Windows suggests. It used to nudge the window onto the monitor `MonitorFromWindow` names, which during a drag is still the monitor being left; the nudge sent another `WM_DPICHANGED`, so a window dragged to a monitor with another scale factor grew and stayed on the wrong monitor at the wrong scale (#324). Backport of winit master 488c036a ([winit#4341](https://github.com/rust-windowing/winit/pull/4341)), which no 0.30 release has; Windows 10 keeps the old adjustment, as on winit master. (2) on Wayland, a seat's text input is destroyed when the seat goes away, not whenever it loses a capability: losing any capability (a touch screen or tablet unplugged, a remote-desktop session ending) destroyed it, and only an added capability recreated it, so IME stopped working until restart. Port of [winit#4747](https://github.com/rust-windowing/winit/pull/4747); (3) on Windows, an IME composition reports its cursor from `GCS_CURSORPOS` only when `WM_IME_COMPOSITION` says it is set, and at the end of the composition otherwise: the Microsoft Korean IME never sets it, so the cursor read as 0 (egui then drew no caret while composing; it now draws it after the syllable). Port of [winit#4746](https://github.com/rust-windowing/winit/pull/4746); (4) on Windows, a hidden window is not maximized until it is shown, and a hidden window shown while maximized gets one `ShowWindow(SW_MAXIMIZE)`: `SW_MAXIMIZE` shows a hidden window, so PdfCraft, which eframe keeps hidden until its first frame is drawn, appeared unpainted (white) when it restored a maximized window, and could lose its focus. Port of [winit#4587](https://github.com/rust-windowing/winit/pull/4587) (the later, focus-safe form of [winit#4575](https://github.com/rust-windowing/winit/pull/4575)); (5) on X11, when allowing or disallowing IME replaces the focused window's input context (egui does it each time a text field gains or loses focus), the new context is focused: no focus event follows, so it stayed unfocused until the window lost and regained focus. Port of [winit#4727](https://github.com/rust-windowing/winit/pull/4727); (6) on macOS, `insertText` commits through IME when a composition was started (`pending_commit`, set by `setMarkedText`) rather than when marked text is left: input methods that end a composition with `unmarkText` before `insertText` lost the text, and Apple Korean dropped the key typed after a syllable (`한` then `5` or `;`); other `insertText` calls stay `KeyboardInput`; a commit outside a key press (a candidate clicked with the mouse, dictation) clears the marked text and leaves no key to swallow, as in [winit#4748](https://github.com/rust-windowing/winit/pull/4748) (without it the next key, such as Backspace, was lost). `validAttributesForMarkedText` lists the underline and marked-clause attributes, without which some input methods don't compose. Port of [winit#4650](https://github.com/rust-windowing/winit/pull/4650), the 0.30 backport of [winit#4651](https://github.com/rust-windowing/winit/pull/4651) (merged on winit master), with the underline attribute spelled as AppKit's `NSUnderlineStyleAttributeName` (`NSUnderline`); (7) on macOS, disallowing IME with a composition in progress (focus leaving a text field) tells the input method to discard its marked text (`discardMarkedText`): it kept composing it once IME was allowed again, so the abandoned syllable came back (`하`, then `가` typed in the next field, became `학`, then `하` + `가`; Japanese `か` then `さ` became `傘`). Port of [winit#4745](https://github.com/rust-windowing/winit/pull/4745); (8) on macOS, text inserted outside a key press without a composition (the emoji picker) is reported as `Ime::Commit`; it was dropped. Port of the emoji-picker part of [winit#4749](https://github.com/rust-windowing/winit/pull/4749) (0.30 backport of [winit#4748](https://github.com/rust-windowing/winit/pull/4748)); its `selectedRange` change for dictation is left out because it switches on press-and-hold for every held key (an accent menu instead of key repeat, and the chosen accent added after the repeated letters); (9) on macOS, a key whose text was committed through IME isn't also sent as `KeyboardInput` unless AppKit forwards it as a command (Enter): Apple Korean answers Space with no syllable in progress with `setMarkedText(" ")`, `insertText(" ")`, `setMarkedText("")`, and the last call reset winit's state, so the space arrived twice. Same goal as [winit#4478](https://github.com/rust-windowing/winit/pull/4478), whose changes don't reach this call order (macOS 14); to be proposed upstream there; (10) on macOS, when the first key in a fresh app reaches Apple Korean's `insertText` as a raw compatibility jamo instead of starting a composition, that key is interpreted once more, synchronously, before it is sent as `KeyboardInput` (g k s typed ㅎㅏㄴ instead of 한); only an unmodified, non-repeated first key whose one callback inserts that same jamo, with IME enabled and nothing composed, focus and input source unchanged, is retried (`ime_startup.rs`). Port of [winit#4744](https://github.com/rust-windowing/winit/pull/4744), with its policy tests.; (11) on X11 without `Xft.dpi`, the scale factor comes from the X screen's configured DPI (its size in pixels and millimetres) before the output's physical density from RandR: Xorg can deliberately run a dense panel at 96 DPI, and only winit applications then looked zoomed; `Xft.dpi` still wins, `WINIT_X11_SCALE_FACTOR` still overrides, and a screen reporting no size keeps the RandR fallback. PdfCraft patch (#1150, replacing the launcher pin proposed in #908). (12) on macOS, `WinitView` answers `mouseDownCanMoveWindow` with the window's `movable_by_window_background` attribute (NO unless asked): NSView answers YES for a view that isn't opaque, so with the transparent title bar and full-size content view PdfCraft uses, AppKit moved the window for any drag that began in the 28 pt title-bar band before the app saw it, and document tabs (which live in that band) could not be dragged to reorder them. The empty strip still moves the window through `ViewportCommand::StartDrag`. PdfCraft patch. The published crate's asset files (`docs/res/*.svg`, `examples/data/*.png`) are left out, so its `window` example doesn't build; (13) on Wayland, pixel-only wheel, wheel-tilt and continuous-source scroll events report `Moved` rather than starting an unterminated finger gesture, so egui follows modifier release instead of keeping Ctrl zoom latched (#991). Finger gestures and unknown sources retain their existing phase policy | (1) `pdfcraft` `tests::winit_carries_the_windows_11_monitor_scale_fix` keeps the patch in the build; the drag itself needs two monitors with different scale factors on Windows 11; (2) `pdfcraft` `tests/winit_wayland_text_input.rs`; the capability change itself needs a Wayland session and an input method; (3) `pdfcraft` `tests/winit_windows_ime_cursor.rs`; composing itself needs the Microsoft Korean IME; (4) `pdfcraft` `tests/winit_windows_hidden_maximized.rs`; the start-up itself needs Windows and a window that was closed maximized; (5) `pdfcraft` `tests/winit_x11_ime_focus.rs`; switching fields itself needs an X11 session and an input method (IBus, fcitx5); (6) `pdfcraft` `tests/winit_macos_ime_commit.rs`; composing itself needs macOS and an input method; (7) `pdfcraft` `tests/winit_macos_ime_discard.rs`; composing itself needs macOS and an input method; (8) `pdfcraft` `tests/winit_macos_emoji_picker.rs`; the picker itself needs macOS; (9) `pdfcraft` `tests/winit_macos_korean_space.rs`; composing itself needs macOS and Apple Korean; (10) `pdfcraft` `tests/winit_macos_korean_first_key.rs` and `ime_startup.rs`'s own tests (run them with `rustc --test`); typing itself needs macOS and Apple Korean; (11) `pdfcraft` `tests/winit_x11_dpi.rs` keeps the patch in the build, and `util::randr` tests the policy (run them in the vendored crate); the scale itself needs an X11 session; (12) `pdfcraft` `tests/winit_macos_title_bar_drag.rs` keeps the patch in the build; the drag itself needs macOS and a pointer; (13) `pdfcraft` `tests/winit_wayland_scroll.rs` compiles the production phase policy and exercises modifier release through egui; live COSMIC confirmation remains open | | egui-wgpu | 0.36.2 | MIT OR Apache-2.0 | (1) `winit::surface_fit`: a window's surface is configured within the device's `max_texture_dimension_2d`, both sides shrunk by one factor that egui then draws at (`pixels_per_point × render_scale`), so the whole window is drawn into the surface (on DX12 it is stretched over the window and lines up with the pointer; wgpu's GL backend copies it unscaled into a corner); the longer side becomes exactly the limit; the depth and MSAA textures follow, and a recreated surface starts again from the window's own size. egui-wgpu configured the window's size as is, and `Surface::configure` panics beyond the limit: a window restored at another monitor's scale (opening an Outlook attachment on a mixed-DPI laptop asked an 8192-pixel device for 8600 × 3423, #577) or stretched across monitors closed PdfCraft, before its window appeared when it happened at start-up ([emilk/egui#8361](https://github.com/emilk/egui/issues/8361)). The published crate leaves out egui's licence files; `LICENSE-APACHE` and `LICENSE-MIT` are from the 0.36.2 tag; (2) `winit::catch_errors`: a new window's surface is configured inside wgpu error scopes (validation, out of memory, internal), and a failure is returned as `WgpuError::ConfigureSurface` (for the root window at start-up eframe returns it as `Error::Wgpu`, which PdfCraft retries with OpenGL); nothing is kept for the window. wgpu's default handler panicked instead, and eframe configures the root surface before the app is created, so a driver that can't configure one closed PdfCraft at launch (a 2015 Intel GPU through wgpu's GL backend timed out waiting for the GPU to go idle, `GpuWaitTimeout`, #519). Unchanged, so still a panic: an error in a later reconfigure (resize, a lost surface), a device lost during the first configure (wgpu reports it only to a callback), and a window shown at zero size (first configured on resize) | (1) `pdfcraft` `tests::a_window_larger_than_the_gpu_limit_gets_a_surface_within_it`, `tests::surface_fit_never_empties_or_overflows_a_surface`, and `tests::egui_wgpu_carries_the_surface_size_fit`, which keeps the patch in the build and in the paths that size a surface; (2) `pdfcraft` `tests::a_gpu_error_while_a_window_is_set_up_is_returned_not_a_panic` (a real device: an error inside `catch_errors` is returned, not a panic) and `tests::egui_wgpu_returns_a_surface_it_cannot_configure_as_an_error`, which keeps it around `add_surface`'s configure | | vello_common | 0.0.8 | Apache-2.0 OR MIT | (1) `clip::intersect` (the clip step every clipped path passes through) starts its row walk at the first row both paths have strips in, not the earlier of the two first rows. The walk visited every row from the top of the clip for each path (on the A1 sample's full-page canvas, about half its strip rows per stroke), and rows where one path has no strips produce no output, so the strips are unchanged (vello_common 0.1 starts at the later row too). Its cost grew with the page, and a full-page render of the A1 sample was about 30% faster; the output is byte-identical | (1) `clip::tests::intersect_walks_only_rows_both_paths_have_strips` counts the rows the walk visits (`cargo test --manifest-path vendor/vello_common/Cargo.toml`) and fails without the patch; the render crate's pixel tests run through the patched crate | From e3afcaaae16a46a6a9af37911014b01219d7b982 Mon Sep 17 00:00:00 2001 From: aiongg Date: Thu, 22 Oct 2026 01:46:18 +0000 Subject: [PATCH 23/33] Integration: #2210 fill the 46 keys Finnish lacks with English text Missing translations never block; the Finnish coverage tests need every key the other catalogues carry. The keys stay English until a translator fills them. --- crates/ui-egui/src/i18n/fi.tsv | 47 ++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/crates/ui-egui/src/i18n/fi.tsv b/crates/ui-egui/src/i18n/fi.tsv index 539125cf2..291955128 100644 --- a/crates/ui-egui/src/i18n/fi.tsv +++ b/crates/ui-egui/src/i18n/fi.tsv @@ -2692,3 +2692,50 @@ theme Appearance Teema # Labels added upstream 2026-10-16…18. the name is not a plain file name nimi ei ole pelkkä tiedostonimi Zoom — type a percentage and press Enter Zoomaus — kirjoita prosentti ja paina Enter +# Untranslated: English text until a translator fills these in. + Calculation order Calculation order + Fix order Fix order + Move only what must move, so every field calculates after the fields it reads. Move only what must move, so every field calculates after the fields it reads. + Earlier in calculation order Earlier in calculation order + Later in calculation order Later in calculation order + Too early Too early + Reads {name}, which calculates later, so it shows an old value. Reads {name}, which calculates later, so it shows an old value. + Loop Loop + Reads {names}, which read it back. No order can fix a loop: change one of the formulas. Reads {names}, which read it back. No order can fix a loop: change one of the formulas. + Not in order Not in order + Missing from the calculation order saved in the PDF: other PDF viewers may not calculate it. Missing from the calculation order saved in the PDF: other PDF viewers may not calculate it. + Back to Prepare a form Back to Prepare a form + No field in this form calculates its value yet. Give a field a calculation on the Calculate tab of its properties, and it shows here. No field in this form calculates its value yet. Give a field a calculation on the Calculate tab of its properties, and it shows here. + {names} and {last} {names} and {last} + {field} reads no other field {field} reads no other field + {field} reads {fields} {field} reads {fields} + No field reads it No field reads it + The order saved in the PDF needs tidying The order saved in the PDF needs tidying + Moves only what must move Moves only what must move + Every field calculates after the fields it reads. Every field calculates after the fields it reads. + Every field outside a loop calculates after the fields it reads. Every field outside a loop calculates after the fields it reads. + {field} reads its own value {field} reads its own value + {fields} read each other {fields} read each other + No order can fix a loop. Change one of the formulas. No order can fix a loop. Change one of the formulas. + Edit {field}'s formula Edit {field}'s formula + Order · top calculates first Order · top calculates first + Script Script + Links on page Links on page + Show on the page which fields each field reads Show on the page which fields each field reads + Drag a field to move it, or select it and press {up} or {down}. Drag a field to move it, or select it and press {up} or {down}. + Set calculation order Set calculation order +@plural {n} calculation now uses the new name.|{n} calculations now use the new name. {n} calculation now uses the new name.|{n} calculations now use the new name. +@plural The calculation order has {n} entry that calculates nothing. Fix order removes it.|The calculation order has {n} entries that calculate nothing. Fix order removes them. The calculation order has {n} entry that calculates nothing. Fix order removes it.|The calculation order has {n} entries that calculate nothing. Fix order removes them. +@plural {fields} reads it|{fields} read it {fields} reads it|{fields} read it +@plural {n} field shows an old value|{n} fields show old values {n} field shows an old value|{n} fields show old values +@plural {field} calculates before {fields}, which it reads.|{field} calculates before {fields}, which it reads. {field} calculates before {fields}, which it reads.|{field} calculates before {fields}, which it reads. +@plural {n} more field calculates too early.|{n} more fields calculate too early. {n} more field calculates too early.|{n} more fields calculate too early. +@plural {fields} is missing from the order saved in the PDF, so other PDF viewers may not calculate it.|{fields} are missing from the order saved in the PDF, so other PDF viewers may not calculate them. {fields} is missing from the order saved in the PDF, so other PDF viewers may not calculate it.|{fields} are missing from the order saved in the PDF, so other PDF viewers may not calculate them. + Bulleted list Bulleted list + Numbered list Numbered list + Alignment Alignment + Superscript Superscript + Subscript Subscript + Paragraph spacing Paragraph spacing + Less Less + Other options Other options From ee092caf56203cca12b5d6814af6febdb1442060 Mon Sep 17 00:00:00 2001 From: aiongg Date: Thu, 22 Oct 2026 01:48:06 +0000 Subject: [PATCH 24/33] Integration: #3827 revert the unrelated vendor/README.md hunk --- vendor/README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/vendor/README.md b/vendor/README.md index 3890ed41f..57bdd516c 100644 --- a/vendor/README.md +++ b/vendor/README.md @@ -17,9 +17,12 @@ In `hayro-interpret`, Type 3 glyph bounding boxes are transformed to device spac | hayro | 0.7.1 | Apache-2.0 OR MIT | (1) `RenderSettings::{x_offset, y_offset}` to render one tile of a large page; (2) images over `MAX_IMAGE_PIXELS` (2^28) are skipped (a fuzzed `/W 4294967295` hung in resampling); (3) `tiling_cell_scale` keeps a tiling pattern's cell pixmap within 3000 px a side whatever its `/XStep`/`/YStep` (a fuzzed step far beyond `/BBox` allocated 2 GB); (4) stroke widths clamped to 4 × (canvas width + height) device pixels (a fuzzed `/LW 9223372036854775807` allocated 10 GB in stroke expansion); (5) `usable_dash_pattern`: a stroke whose dash pattern could cut it into more than `MAX_DASHES_PER_STROKE` (250,000) pieces, counting kurbo's restart of the pattern at every subpath and `ClosePath`, is drawn solid (a fuzzed `/D [[11] 0]` on a line from x = 92234775807 allocated over 5 GB, `[0.000001] 0 d` on a 20 pt line over 10 GB); (6) a dash pattern with a negative or non-finite entry, or a period that isn't positive, is drawn solid (`[-1 -1] 0 d` looped for ever in kurbo); (7) `render_size` and `render_into`: render into a buffer the caller allocates (PdfCraft renders into pixel-aligned memory that the GUI takes over as texture data); `render` is `render_into` on a new pixmap; (8) checked image source/target/RGBA, alpha-premultiplication scratch and intermediate sizes before resampling, finite transforms and exact source/mask buffers; sources wider than u16 may shrink before backend limits, with a 2^20 source-axis cap and conservative 128 MiB filter-planning estimate; an over-limit or failed resize keeps the original image resolution and geometry when the source fits the backend, otherwise skips it, with a logged warning; staging, resampling output/scratch, RGBA conversion and padding buffers use fallible reserves; (9) `may_paint_canvas`: a fill or stroke whose control-point box, grown by how far its paint reaches past the path (half the stroke width times the larger of the miter limit and √2) plus 0.5 user units and 2 pixels, misses the canvas is not drawn, so a tile no longer strokes and fills every path of its page (item 5 of #623); `set_skip_offscreen_paths` turns this off for the regression test; (10) `/Interpolate` governs the pre-resize too (#624): a minified image that does not request interpolation is pre-resized with nearest-neighbour, planned without the Catmull-Rom filter limits (`image_resampling_size` takes the flag); a Type 3 glyph image is sampled bicubically only when interpolated; a minified image with a matching soft mask is nearest-sampled straight into premultiplied RGBA; (11) `may_paint_rect`: an image whose stream-size box, mapped to the device, misses the canvas is skipped before decoding (decoded data can only shrink against that box), so a tile of an image-heavy page no longer decodes, resamples and rasterizes every image on it; (12) preview renders (`InterpreterSettings::preview`: backdrops, thumbnails, grid cells, signature-drag backgrounds) skip images under `PREVIEW_MIN_IMAGE_AREA` device pixels, while final renders always draw them; (13) reading colours (#897): `RenderSettings::color_replacement` takes a `ColorReplacement` (text colour, background, `only_black`, `line_art`) that remaps solid text and line-art paint while rendering, glyph outlines counting as text and stencil-mask ink as line art; images, image alpha masks, soft masks and pattern cells keep their colours; `render_pdf` gains a `color_replacement: Option` argument (pass `None` for true colours); the upstream-only `[dev-dependencies.log]` entry is removed from `Cargo.toml` (log is a normal dependency since the logging patch), so `cargo test -p hayro` runs this crate's unit tests; (14) a shrunk, interpolated, axis-aligned image is snapped to whole device pixels: shrunk once to its rounded device rectangle and drawn 1:1 at the rounded corner, instead of a ceil-sized raster resampled again at a fractional scale and offset (`snap_minified_image`; scans looked soft next to Acrobat); (15) a soft mask of another size than its image is filtered when shrunk, whatever its `/Interpolate` (#1649): such a mask carries the shape on its own (Word saves text as a tiny black image with a glyph-bitmap mask), and nearest-neighbour dropped every stroke thinner than the shrink factor; (16) under a soft mask or a blend mode, axial and radial shadings are sampled instead of drawn as native gradients (#2128): vello_cpu 0.0.8 copies an opaque gradient over fully covered tiles without the mask or blend mode, so PowerPoint's faded gradient fills came out solid; (17) the renderer keeps annotation paints out of the reading-colours mapping between `begin_annotations` and `end_annotations` (#1548); (18) the page renders as one transparency group with its background painted inside it as the initial backdrop, so a Multiply highlight blends with a dark reading-colours background instead of staying an opaque block (identity on white pages); (20) a tiling pattern whose step is too large for a cell pixmap, where what is painted (a fill, or a stroke with its width) can only show the first cell (PowerPoint's `/XStep 2147480100` for a picture fill drawn once), has its `/BBox` drawn at full scale with a transparent border and padded instead of tiled (`shows_one_cell`; a cell whose scale isn't finite and positive, from a `/BBox` too thin to divide by, keeps the old path: `usable_cell_scale`); shrinking the cell to fit the 3000 px limit of (3) left the picture under a pixel, so network diagrams lost their pictures (#3349) | (1) `raster::tests::tiles_match_full_render`; (2) `raster::tests::absurd_image_dimensions_are_skipped`; (3) `raster::tests::tiling_cells_stay_small_whatever_the_step`; (4) `raster::tests::absurd_predictor_columns_and_line_widths_render`; (5) `raster::tests::dash_patterns_that_cut_a_stroke_into_billions_of_pieces_render`; (6) `raster::tests::invalid_dash_patterns_terminate_and_are_drawn_solid`; (7) `raster::tests::pixels_are_a_plain_renders_bytes_in_a_buffer_a_gui_can_take_over`; (8) `raster::tests::image_resampling_rejects_anisotropic_target_growth`, `raster::tests::image_resampling_bounds_intermediate_before_planning`, `raster::tests::image_resampling_rejects_invalid_sources_and_scales`, `raster::tests::image_resampling_keeps_valid_sizes_and_exact_limits`, `raster::tests::resampling_fallback_preserves_original_geometry_and_pixels`, `raster::tests::image_resampling_wide_sources_shrink_before_backend_side_limits`, `raster::tests::image_resampling_wide_transparent_sources_still_shrink`, `raster::tests::image_resampling_padded_backend_dimensions_stay_checked`, `raster::tests::image_resampling_mismatched_alpha_mask_keeps_pixels_and_placement`; (9) `raster::tests::skipping_paths_off_the_canvas_changes_no_pixel`; (10) `raster::tests::non_interpolated_images_are_not_smoothed_when_minified`, `raster::tests::non_interpolated_gray_images_are_not_smoothed_when_minified`, `raster::tests::non_integer_minification_samples_the_same_columns`, `raster::tests::non_integer_minification_samples_colour_and_mask_from_the_same_columns`, `raster::tests::non_interpolated_alpha_images_keep_their_colours_and_mask_when_minified`, `raster::tests::non_interpolated_type3_glyph_images_are_not_smoothed_when_minified`, `raster::tests::image_resampling_nearest_accepts_wide_sources_the_filter_refuses`, `raster::tests::wide_non_interpolated_sources_draw_after_shrinking`; (11) `raster::tests::skipping_paths_off_the_canvas_changes_no_pixel`; (12) `raster::tests::preview_renders_skip_tiny_images_but_finals_draw_everything`; (13) `color_replacement_tests::{black_maps_to_text_colour, white_maps_to_background, midgrey_interpolates, alpha_copied_verbatim, only_black_threshold, line_art_false_skips_paths_but_not_text}`, `color_replacement_render_tests::{color_replacement_maps_text_and_line_art, color_replacement_maps_stencil_mask_ink}`; (14) `raster::tests::interpolated_minified_image_edges_snap_to_whole_pixels` (`cargo test -p hayro`); (15) `raster::tests::shrunk_soft_mask_larger_than_its_image_keeps_thin_strokes`; (16) `raster::tests::soft_mask_applies_to_a_shading_pattern_fill`; (17), (18) `raster::tests::reading_colors_keep_highlight_annotations_readable`; (20) `raster::tests::a_tiling_pattern_drawn_once_shows_its_cell`, `raster::tests::a_large_step_still_tiles_where_the_next_cell_shows`, `raster::tests::a_tiling_cell_too_thin_to_scale_keeps_the_old_path` | | hayro-jbig2 | 0.3.0 | Apache-2.0 OR MIT | (1) at most 2^28 pixels per bitmap, page bitmap, halftone grid and grayscale image (each side could be 65535: 4.3 billion pixels decoded one by one); (2) at most 2^26 symbol pixels per symbol dictionary (a fuzzed dictionary decoded for minutes); (3) a symbol dictionary's height classes are capped at one per new symbol and its export runs at `2 × symbols + 1`, each plus `EXTRA_EMPTY_STEPS` (1024): an empty height class or a zero-length export run doesn't advance, and past the end of its data the arithmetic decoder can decode them for ever (one changed byte hung the renderer) | (1) `raster::tests::jbig2_regions_of_billions_of_pixels_are_refused`; (2) the nightly `cargo xtask fuzz` finding, which now finishes in about a second; (3) `raster::tests::jbig2_symbol_dictionaries_that_never_advance_terminate` | | lopdf | 0.45.0 | MIT | (1) PNG predictor rows longer than the data are refused before their buffers are allocated (a fuzzed `/Columns 4294967295` allocated two 4 GiB rows), and empty frames return without row buffers; (2) predictor row widths use saturating arithmetic or reject overflow; (3) sub-byte TIFF Predictor 2 scratch is bounded by the samples present in the input instead of the declared `/Colors`, aligned with [lopdf#589](https://github.com/J-F-Liu/lopdf/pull/589) | (1) `inspect::tests::png_predictor_rows_longer_than_the_data_are_refused_before_allocating`, `inspect::tests::empty_png_predictor_frames_do_not_allocate_rows`; (2) `inspect::tests::tiff_subbyte_predictor_row_width_overflow_is_refused`; (3) `inspect::tests::tiff_subbyte_predictor_scratch_is_bounded_by_available_samples`, `inspect::tests::tiff_subbyte_predictors_keep_components_rows_and_padding` | -| hayro-syntax | 0.7.2 | Apache-2.0 OR MIT | (1) Page-tree cycle guard in `resolve_pages` (visited set + depth cap): a `/Kids` loop among compressed objects overflowed the stack and aborted the process; (2) `ccitt_size_ok`: CCITT images wider than 2^20 columns or over 2^28 pixels are not decoded (a fuzzed `/Columns 4294967295` allocated 4 GiB); (3) Flate/LZW predictor row widths are saturating `usize`, a zero width is refused and a row longer than the data is not allocated (a fuzzed `/Columns 9223372036854775807` wrapped to a 2^61-byte allocation and aborted); (4) the inline-image end-of-data check (`EI`) doesn't nest inside its own look-ahead and examines at most 256 candidates and steps (50 images with "EI" in their data ran for over ten minutes); (5) a stream whose `/Length` is wrong is recovered only when `stream` is the next token — scanning ahead to a later object's `stream` made an indirect appearance-state dictionary (Quartz checkboxes: `/AP /N` → `<< /Yes … /Off … >>`) render as a non-form, so the widget was skipped; (6) JPX rescaling uses an exact integer sample range for 1–32-bit components (32 shifted past u32, and floating-point maxima at 25–31 bits wrapped to zero), and refuses zero-sized rows; (7) `decode_limit`: Flate (through flate2 and the fallback inflater), LZW, RunLength and ASCII85 never write past `MAX_DECODED_STREAM` (256 MiB), or, for the last filter of an image of known size, past twice its pixel bytes (a predictor tag byte per byte), at most 1 GiB; `Stream::decoded_within` for budgeted callers; a page's `/Contents` array shares one `MAX_DECODED_STREAM` (a 2 MB page whose content stream or 8 × 8 image inflated to 2 GB took the renderer past 3 GB in under a second; naming the stream twenty times in `/Contents`, 5 GB); (8) high-precision numbers (jsPDF MediaBox coordinates with over 19 digits) parse without overflowing the u64 mantissa: fractional digits past it are dropped, integer digits past it scale the value (a real, kept finite); (9) large dictionary indexes are built on first use and shared across repeated reads within each PDF (#307); the validated-byte cache is bounded, reader contexts remain separate, repairs and inline/content dictionaries bypass sharing, and small dictionaries stay eager; (10) decoded object-stream slots publish once under contention, cold loading rejects recursive dependencies, and xref repair serializes without holding recursive read guards; this permits one parser per native render pool with private worker caches; (11) `sync.rs`: a poisoned lock is recovered instead of unwrapped (a worker panic no longer cascades into every reader of the same PDF), and xref repair takes a blocking write lock instead of asserting a non-blocking one; (12) `SegmentList` (`util.rs`) returns `None` for an out-of-range index instead of panicking; (13) a page's `/UserUnit` scales `render_dimensions` and `initial_transform`, so the page and everything on it are sized in points, as Acrobat shows them; it is read as Acrobat reads it (the page's own entry, not inherited; a number from 1 up, at most 75,000; anything else counts as 1), and a page without it keeps exactly the transform it had; (14) revision 2–4 passwords are tried as given and then in PDFDocEncoding (`legacy_passwords` in `crypto/mod.rs`, which resolves the upstream `TODO: Convert to PDFDocEncoding`): passwords arrive as UTF-8 text, so a password with characters outside ASCII (`Çok güzel`, `ılık€`) written in PDFDocEncoding, as ISO 32000-2 §7.6.4.3.2 asks and qpdf and Acrobat write it, was always wrong; (15) page content is read a piece at a time (`page::ContentReader`, `Page::content_reader`): plain streams and Flate streams without a predictor are decoded as they are read, with a budget of 64 times their compressed size and never less than `MAX_DECODED_STREAM` (a stream that expands past it is cut and reported); other streams are decoded whole, as before, and share `MAX_DECODED_STREAM`. The content tokenizer reads a window at a time (`UntypedIter::new_window`, `TypedIter::needs_more`, `TypedIter::committed`): an instruction that runs past the window is not decided until more data follows, which `Reader` records by flagging reads and `at_end` past the end of the data, including through the clones the parser makes. The Flate decoder keeps its own 32 KiB history, so it pauses at any output size. `ContentReader::new` reuses raw/decrypted stream bytes for budget accounting and piece creation, and `decoded_raw_within` applies the existing Whole-stream filters and limits to those bytes without decrypting twice; (16) revision 5–6 (AES-256) passwords are tried in their SASLprep form (RFC 4013, then UTF-8, at most 127 bytes, as ISO 32000-2 §7.6.4.3.3 Algorithm 2.A asks and pdfcraft-crypt writes them) and then, if that differs, as given (`aes256_passwords` in `crypto/mod.rs`, which resolves the upstream `TODO: Do the above.`; `stringprep`, already in the tree through pdfcraft-crypt, is an optional dependency enabled by `std`, and without `std` passwords are used as given): the renderer used the password as typed, so one that SASLprep changes (a decomposed `café`, a no-break space, the fullwidth `ab` a Japanese IME types in full-width mode) was wrong, although pdfcraft-cos accepted it: protecting a document with such an open password was rolled back ("the password is incorrect"), and a file with such a password did not open with it.; (17) CCITT `/Rows 0` means the height is not predetermined (ISO 32000-2 Table 11), not zero rows: scanned Group 4 pages written that way rendered blank; (18) The streaming Flate decoder (`lzw_flate::flate::fallback`) copies a back-reference in runs of up to its distance (`extend_from_within`), not byte by byte. The copy reads only bytes already in the output, and a copy whose source does not exist still writes nothing, so the bytes are those a byte-by-byte copy writes. Inflating the A1 sample's content stream (278.6 MB) takes about 14% less time (0.66 s to 0.56 s); the output is identical; (19) CCITT `/Rows` below the image's `/Height` decodes to the height: a plotter driver wrote `/Rows` equal to `/Columns`, so only the first rows were decoded and the rest drawn black (#3308) (20) `stream` followed by spaces or tabs and then the line break (`stream \r\n`, as Microsoft Reporting Services writes it) starts the data after the line break; the content stream was taken to start at the space and the page rendered blank.; (21) a JP2 colour specification naming an enumerated colour space the decoder refuses (CIEJab in a veraPDF fixture, YCbCr, PhotoYCC, YPbPr, bilevel…) no longer fails the image: it is decoded again from a copy whose `colr` names the space the decoder assumes without one, greyscale, sRGB or CMYK by component count, as MuPDF and Poppler draw it (`without_refused_enumerated_colour`; the page drew blank, #3306); (22) an object stream's index of `objnum offset` pairs is parsed once per stream and kept beside its decoded data (`ObjectStreamIndexes`, `XRef::with_object_stream_indexes`), and an offset past `usize` is malformed instead of wrapping: `XRef::get_with` parsed the whole index again for every object it fetched from the stream, so reading all of a stream of N objects took N² steps (a Firefox page whose 65,542 objects share one stream took 37 s to draw and 40 s to extract its text); (23) direct arrays and dictionaries share a reader-local nesting cap of 128 while skipping and parsing; deeper objects return `None` instead of overflowing the stack, including in content, trailers and marked-content properties | (1) `cos/tests/writer.rs::page_tree_loops_in_object_streams_do_not_crash_readers`; (2) `raster::tests::absurd_mask_and_fax_sizes_are_refused_before_decoding`; (3) `raster::tests::absurd_predictor_columns_and_line_widths_render`; (4) `raster::tests::inline_images_with_ei_in_their_data_parse_in_linear_time`; (5) `raster::tests::indirect_appearance_state_dict_is_not_another_stream`; (6) `raster::tests::jpx_stream_bit_depth_boundaries_do_not_panic`, `raster::tests::jpx_32_bit_image_does_not_prevent_other_page_content_from_rendering`, `raster::tests::jpx_gray_rgb_and_alpha_keep_eight_bit_samples`, `raster::tests::jpx_streams_reject_out_of_range_bit_depths`; (7) `raster::tests::decompression_bombs_stop_at_the_stream_limit`, `raster::tests::page_contents_and_nested_forms_share_one_budget`; (8) `inspect::tests::jspdf_high_precision_mediabox_does_not_overflow_dimensions`, `object::number::tests::high_precision_float_does_not_overflow_mantissa` (hayro-syntax); (9) `object::dict::lazy_index_tests`, `raster::tests::large_resource_indexes_preserve_pixels_and_text`; (10) `data::tests`, `xref::tests::concurrent_cold_object_stream_reads_all_succeed`, `raster::tests::shared_parser_is_lazy_and_initializes_once_under_contention`; (11) `data::tests::panicking_initializer_wakes_waiters_and_prevents_retries`, `xref::tests::concurrent_cold_object_stream_reads_all_succeed`; (12) `util::tests::segment_list_rejects_out_of_range_indices`; (13) `raster::tests::user_unit_scales_the_page_and_everything_on_it`; (14) `crypto::pdfcraft_password_tests`, `pdfcraft-engine` `tests::legacy_passwords_with_turkish_characters_open`; (15) `content::tests::windows_keep_every_instruction_at_every_split`, `content::tests::windows_keep_every_instruction_in_pieces_of_any_size`, `content::tests::windows_match_the_slice_on_random_content`, `content::tests::windows_drop_blanks_and_keep_a_comment_that_may_go_on`, `page::content_reader_tests::content_past_the_cap_is_read_to_the_end`, `page::content_reader_tests::a_stream_that_expands_past_the_budget_is_cut_there`, `page::content_reader_tests::a_small_expansion_under_the_cap_is_not_cut`, `raster::tests::page_content_past_the_old_cap_renders`, `raster::tests::content_reader_returns_the_same_bytes_in_any_pieces`, `raster::tests::content_bombs_stop_at_the_budget_and_say_so`, `page::content_reader_tests::plain_and_whole_pieces_keep_their_bytes`, `page::content_reader_tests::repeated_content_reference_counts_compressed_bytes_once`, `page::content_reader_tests::whole_cap_still_counts_later_unique_streams`; (16) `crypto::pdfcraft_password_tests::aes256_passwords_are_tried_in_their_saslprep_form_then_as_given`, `crypto::pdfcraft_password_tests::aes256_passwords_open_as_typed_and_in_their_saslprep_form`, `pdfcraft-engine` `tests::aes256_open_passwords_that_saslprep_changes_protect_and_reopen_as_typed`, `tests::aes256_files_whose_passwords_saslprep_changes_open_as_typed`; (17) `raster::tests::group4_fax_with_rows_zero_decodes_to_the_image_height`; (18) `filter::lzw_flate::tests::back_reference_longer_than_its_distance_repeats_its_source`, `back_reference_cut_by_the_limit_resumes_in_the_next_call` and `back_reference_reads_bytes_written_by_an_earlier_call`; each fails when the copy returns the wrong remaining count; (19) `raster::tests::group4_fax_with_rows_below_its_height_decodes_to_the_image_height`; (20) `raster::tests::space_before_the_line_break_after_stream_still_renders`; (21) `raster::tests::a_jp2_image_in_a_refused_enumerated_colour_space_is_drawn`, `filter::jpx::tests::refused_enumerated_colour_spaces_become_the_component_counts_default`, `filter::jpx::tests::what_the_decoder_handles_or_cant_be_read_is_left_alone` (`cargo test --manifest-path vendor/hayro-syntax/Cargo.toml`); (22) `raster::tests::objects_in_one_large_object_stream_are_read_in_linear_time`; (23) `raster::tests::deeply_nested_direct_objects_do_not_overflow_the_stack`, `raster::tests::dictionaries_nested_without_keys_in_content_do_not_overflow_the_stack`, `raster::tests::dictionaries_nested_without_keys_in_the_trailer_do_not_overflow_the_stack`, `raster::tests::dictionaries_nested_without_keys_as_marked_content_properties_do_not_overflow_the_stack`, `raster::tests::dictionaries_nested_without_keys_are_read_up_to_the_nesting_cap`, `raster::tests::nesting_at_the_cap_fits_a_512_kib_stack` (native only), `raster::tests::function_limits_depth_guard_refuses_a_chain_of_references` +| hayro-syntax | 0.7.2 | Apache-2.0 OR MIT | (1) Page-tree cycle guard in `resolve_pages` (visited set + depth cap): a `/Kids` loop among compressed objects overflowed the stack and aborted the process; (2) `ccitt_size_ok`: CCITT images wider than 2^20 columns or over 2^28 pixels are not decoded (a fuzzed `/Columns 4294967295` allocated 4 GiB); (3) Flate/LZW predictor row widths are saturating `usize`, a zero width is refused and a row longer than the data is not allocated (a fuzzed `/Columns 9223372036854775807` wrapped to a 2^61-byte allocation and aborted); (4) the inline-image end-of-data check (`EI`) doesn't nest inside its own look-ahead and examines at most 256 candidates and steps (50 images with "EI" in their data ran for over ten minutes); (5) a stream whose `/Length` is wrong is recovered only when `stream` is the next token — scanning ahead to a later object's `stream` made an indirect appearance-state dictionary (Quartz checkboxes: `/AP /N` → `<< /Yes … /Off … >>`) render as a non-form, so the widget was skipped; (6) JPX rescaling uses an exact integer sample range for 1–32-bit components (32 shifted past u32, and floating-point maxima at 25–31 bits wrapped to zero), and refuses zero-sized rows; (7) `decode_limit`: Flate (through flate2 and the fallback inflater), LZW and RunLength never write past `MAX_DECODED_STREAM` (256 MiB), or, for the last filter of an image of known size, past twice its pixel bytes (a predictor tag byte per byte), at most 1 GiB; `Stream::decoded_within` for budgeted callers; a page's `/Contents` array shares one `MAX_DECODED_STREAM` (a 2 MB page whose content stream or 8 × 8 image inflated to 2 GB took the renderer past 3 GB in under a second; naming the stream twenty times in `/Contents`, 5 GB); (8) high-precision numbers (jsPDF MediaBox coordinates with over 19 digits) parse without overflowing the u64 mantissa: fractional digits past it are dropped, integer digits past it scale the value (a real, kept finite); (9) large dictionary indexes are built on first use and shared across repeated reads within each PDF (#307); the validated-byte cache is bounded, reader contexts remain separate, repairs and inline/content dictionaries bypass sharing, and small dictionaries stay eager; (10) decoded object-stream slots publish once under contention, cold loading rejects recursive dependencies, and xref repair serializes without holding recursive read guards; this permits one parser per native render pool with private worker caches; (11) `sync.rs`: a poisoned lock is recovered instead of unwrapped (a worker panic no longer cascades into every reader of the same PDF), and xref repair takes a blocking write lock instead of asserting a non-blocking one; (12) `SegmentList` (`util.rs`) returns `None` for an out-of-range index instead of panicking; (13) a page's `/UserUnit` scales `render_dimensions` and `initial_transform`, so the page and everything on it are sized in points, as Acrobat shows them; it is read as Acrobat reads it (the page's own entry, not inherited; a number from 1 up, at most 75,000; anything else counts as 1), and a page without it keeps exactly the transform it had; (14) revision 2–4 passwords are tried as given and then in PDFDocEncoding (`legacy_passwords` in `crypto/mod.rs`, which resolves the upstream `TODO: Convert to PDFDocEncoding`): passwords arrive as UTF-8 text, so a password with characters outside ASCII (`Çok güzel`, `ılık€`) written in PDFDocEncoding, as ISO 32000-2 §7.6.4.3.2 asks and qpdf and Acrobat write it, was always wrong; (15) page content is read a piece at a time (`page::ContentReader`, `Page::content_reader`): plain streams and Flate streams without a predictor are decoded as they are read, with a budget of 64 times their compressed size and never less than `MAX_DECODED_STREAM` (a stream that expands past it is cut and reported); other streams are decoded whole, as before, and share `MAX_DECODED_STREAM`. The content tokenizer reads a window at a time (`UntypedIter::new_window`, `TypedIter::needs_more`, `TypedIter::committed`): an instruction that runs past the window is not decided until more data follows, which `Reader` records by flagging reads and `at_end` past the end of the data, including through the clones the parser makes. The Flate decoder keeps its own 32 KiB history, so it pauses at any output size. `ContentReader::new` reuses raw/decrypted stream bytes for budget accounting and piece creation, and `decoded_raw_within` applies the existing Whole-stream filters and limits to those bytes without decrypting twice; (16) revision 5–6 (AES-256) passwords are tried in their SASLprep form (RFC 4013, then UTF-8, at most 127 bytes, as ISO 32000-2 §7.6.4.3.3 Algorithm 2.A asks and pdfcraft-crypt writes them) and then, if that differs, as given (`aes256_passwords` in `crypto/mod.rs`, which resolves the upstream `TODO: Do the above.`; `stringprep`, already in the tree through pdfcraft-crypt, is an optional dependency enabled by `std`, and without `std` passwords are used as given): the renderer used the password as typed, so one that SASLprep changes (a decomposed `café`, a no-break space, the fullwidth `ab` a Japanese IME types in full-width mode) was wrong, although pdfcraft-cos accepted it: protecting a document with such an open password was rolled back ("the password is incorrect"), and a file with such a password did not open with it.; (17) CCITT `/Rows 0` means the height is not predetermined (ISO 32000-2 Table 11), not zero rows: scanned Group 4 pages written that way rendered blank; (18) The streaming Flate decoder (`lzw_flate::flate::fallback`) copies a back-reference in runs of up to its distance (`extend_from_within`), not byte by byte. The copy reads only bytes already in the output, and a copy whose source does not exist still writes nothing, so the bytes are those a byte-by-byte copy writes. Inflating the A1 sample's content stream (278.6 MB) takes about 14% less time (0.66 s to 0.56 s); the output is identical; (19) CCITT `/Rows` below the image's `/Height` decodes to the height: a plotter driver wrote `/Rows` equal to `/Columns`, so only the first rows were decoded and the rest drawn black (#3308) (20) `stream` followed by spaces or tabs and then the line break (`stream \r\n`, as Microsoft Reporting Services writes it) starts the data after the line break; the content stream was taken to start at the space and the page rendered blank.; (21) a JP2 colour specification naming an enumerated colour space the decoder refuses (CIEJab in a veraPDF fixture, YCbCr, PhotoYCC, YPbPr, bilevel…) no longer fails the image: it is decoded again from a copy whose `colr` names the space the decoder assumes without one, greyscale, sRGB or CMYK by component count, as MuPDF and Poppler draw it (`without_refused_enumerated_colour`; the page drew blank, #3306); (22) an object stream's index of `objnum offset` pairs is parsed once per stream and kept beside its decoded data (`ObjectStreamIndexes`, `XRef::with_object_stream_indexes`), and an offset past `usize` is malformed instead of wrapping: `XRef::get_with` parsed the whole index again for every object it fetched from the stream, so reading all of a stream of N objects took N² steps (a Firefox page whose 65,542 objects share one stream took 37 s to draw and 40 s to extract its text) | (1) `cos/tests/writer.rs::page_tree_loops_in_object_streams_do_not_crash_readers`; (2) `raster::tests::absurd_mask_and_fax_sizes_are_refused_before_decoding`; (3) `raster::tests::absurd_predictor_columns_and_line_widths_render`; (4) `raster::tests::inline_images_with_ei_in_their_data_parse_in_linear_time`; (5) `raster::tests::indirect_appearance_state_dict_is_not_another_stream`; (6) `raster::tests::jpx_stream_bit_depth_boundaries_do_not_panic`, `raster::tests::jpx_32_bit_image_does_not_prevent_other_page_content_from_rendering`, `raster::tests::jpx_gray_rgb_and_alpha_keep_eight_bit_samples`, `raster::tests::jpx_streams_reject_out_of_range_bit_depths`; (7) `raster::tests::decompression_bombs_stop_at_the_stream_limit`, `raster::tests::page_contents_and_nested_forms_share_one_budget`; (8) `inspect::tests::jspdf_high_precision_mediabox_does_not_overflow_dimensions`, `object::number::tests::high_precision_float_does_not_overflow_mantissa` (hayro-syntax); (9) `object::dict::lazy_index_tests`, `raster::tests::large_resource_indexes_preserve_pixels_and_text`; (10) `data::tests`, `xref::tests::concurrent_cold_object_stream_reads_all_succeed`, `raster::tests::shared_parser_is_lazy_and_initializes_once_under_contention`; (11) `data::tests::panicking_initializer_wakes_waiters_and_prevents_retries`, `xref::tests::concurrent_cold_object_stream_reads_all_succeed`; (12) `util::tests::segment_list_rejects_out_of_range_indices`; (13) `raster::tests::user_unit_scales_the_page_and_everything_on_it`; (14) `crypto::pdfcraft_password_tests`, `pdfcraft-engine` `tests::legacy_passwords_with_turkish_characters_open`; (15) `content::tests::windows_keep_every_instruction_at_every_split`, `content::tests::windows_keep_every_instruction_in_pieces_of_any_size`, `content::tests::windows_match_the_slice_on_random_content`, `content::tests::windows_drop_blanks_and_keep_a_comment_that_may_go_on`, `page::content_reader_tests::content_past_the_cap_is_read_to_the_end`, `page::content_reader_tests::a_stream_that_expands_past_the_budget_is_cut_there`, `page::content_reader_tests::a_small_expansion_under_the_cap_is_not_cut`, `raster::tests::page_content_past_the_old_cap_renders`, `raster::tests::content_reader_returns_the_same_bytes_in_any_pieces`, `raster::tests::content_bombs_stop_at_the_budget_and_say_so`, `page::content_reader_tests::plain_and_whole_pieces_keep_their_bytes`, `page::content_reader_tests::repeated_content_reference_counts_compressed_bytes_once`, `page::content_reader_tests::whole_cap_still_counts_later_unique_streams`; (16) `crypto::pdfcraft_password_tests::aes256_passwords_are_tried_in_their_saslprep_form_then_as_given`, `crypto::pdfcraft_password_tests::aes256_passwords_open_as_typed_and_in_their_saslprep_form`, `pdfcraft-engine` `tests::aes256_open_passwords_that_saslprep_changes_protect_and_reopen_as_typed`, `tests::aes256_files_whose_passwords_saslprep_changes_open_as_typed`; (17) `raster::tests::group4_fax_with_rows_zero_decodes_to_the_image_height`; (18) `filter::lzw_flate::tests::back_reference_longer_than_its_distance_repeats_its_source`, `back_reference_cut_by_the_limit_resumes_in_the_next_call` and `back_reference_reads_bytes_written_by_an_earlier_call`; each fails when the copy returns the wrong remaining count; (19) `raster::tests::group4_fax_with_rows_below_its_height_decodes_to_the_image_height`; (20) `raster::tests::space_before_the_line_break_after_stream_still_renders`; (21) `raster::tests::a_jp2_image_in_a_refused_enumerated_colour_space_is_drawn`, `filter::jpx::tests::refused_enumerated_colour_spaces_become_the_component_counts_default`, `filter::jpx::tests::what_the_decoder_handles_or_cant_be_read_is_left_alone` (`cargo test --manifest-path vendor/hayro-syntax/Cargo.toml`); (22) `raster::tests::objects_in_one_large_object_stream_are_read_in_linear_time` +| hayro-syntax | 0.7.2 | Apache-2.0 OR MIT | (1) Page-tree cycle guard in `resolve_pages` (visited set + depth cap): a `/Kids` loop among compressed objects overflowed the stack and aborted the process; (2) `ccitt_size_ok`: CCITT images wider than 2^20 columns or over 2^28 pixels are not decoded (a fuzzed `/Columns 4294967295` allocated 4 GiB); (3) Flate/LZW predictor row widths are saturating `usize`, a zero width is refused and a row longer than the data is not allocated (a fuzzed `/Columns 9223372036854775807` wrapped to a 2^61-byte allocation and aborted); (4) the inline-image end-of-data check (`EI`) doesn't nest inside its own look-ahead and examines at most 256 candidates and steps (50 images with "EI" in their data ran for over ten minutes); (5) a stream whose `/Length` is wrong is recovered only when `stream` is the next token — scanning ahead to a later object's `stream` made an indirect appearance-state dictionary (Quartz checkboxes: `/AP /N` → `<< /Yes … /Off … >>`) render as a non-form, so the widget was skipped; (6) JPX rescaling uses an exact integer sample range for 1–32-bit components (32 shifted past u32, and floating-point maxima at 25–31 bits wrapped to zero), and refuses zero-sized rows; (7) `decode_limit`: Flate (through flate2 and the fallback inflater), LZW, RunLength and ASCII85 never write past `MAX_DECODED_STREAM` (256 MiB), or, for the last filter of an image of known size, past twice its pixel bytes (a predictor tag byte per byte), at most 1 GiB; `Stream::decoded_within` for budgeted callers; a page's `/Contents` array shares one `MAX_DECODED_STREAM` (a 2 MB page whose content stream or 8 × 8 image inflated to 2 GB took the renderer past 3 GB in under a second; naming the stream twenty times in `/Contents`, 5 GB); (8) high-precision numbers (jsPDF MediaBox coordinates with over 19 digits) parse without overflowing the u64 mantissa: fractional digits past it are dropped, integer digits past it scale the value (a real, kept finite); (9) large dictionary indexes are built on first use and shared across repeated reads within each PDF (#307); the validated-byte cache is bounded, reader contexts remain separate, repairs and inline/content dictionaries bypass sharing, and small dictionaries stay eager; (10) decoded object-stream slots publish once under contention, cold loading rejects recursive dependencies, and xref repair serializes without holding recursive read guards; this permits one parser per native render pool with private worker caches; (11) `sync.rs`: a poisoned lock is recovered instead of unwrapped (a worker panic no longer cascades into every reader of the same PDF), and xref repair takes a blocking write lock instead of asserting a non-blocking one; (12) `SegmentList` (`util.rs`) returns `None` for an out-of-range index instead of panicking; (13) a page's `/UserUnit` scales `render_dimensions` and `initial_transform`, so the page and everything on it are sized in points, as Acrobat shows them; it is read as Acrobat reads it (the page's own entry, not inherited; a number from 1 up, at most 75,000; anything else counts as 1), and a page without it keeps exactly the transform it had; (14) revision 2–4 passwords are tried as given and then in PDFDocEncoding (`legacy_passwords` in `crypto/mod.rs`, which resolves the upstream `TODO: Convert to PDFDocEncoding`): passwords arrive as UTF-8 text, so a password with characters outside ASCII (`Çok güzel`, `ılık€`) written in PDFDocEncoding, as ISO 32000-2 §7.6.4.3.2 asks and qpdf and Acrobat write it, was always wrong; (15) page content is read a piece at a time (`page::ContentReader`, `Page::content_reader`): plain streams and Flate streams without a predictor are decoded as they are read, with a budget of 64 times their compressed size and never less than `MAX_DECODED_STREAM` (a stream that expands past it is cut and reported); other streams are decoded whole, as before, and share `MAX_DECODED_STREAM`. The content tokenizer reads a window at a time (`UntypedIter::new_window`, `TypedIter::needs_more`, `TypedIter::committed`): an instruction that runs past the window is not decided until more data follows, which `Reader` records by flagging reads and `at_end` past the end of the data, including through the clones the parser makes. The Flate decoder keeps its own 32 KiB history, so it pauses at any output size. `ContentReader::new` reuses raw/decrypted stream bytes for budget accounting and piece creation, and `decoded_raw_within` applies the existing Whole-stream filters and limits to those bytes without decrypting twice; (16) revision 5–6 (AES-256) passwords are tried in their SASLprep form (RFC 4013, then UTF-8, at most 127 bytes, as ISO 32000-2 §7.6.4.3.3 Algorithm 2.A asks and pdfcraft-crypt writes them) and then, if that differs, as given (`aes256_passwords` in `crypto/mod.rs`, which resolves the upstream `TODO: Do the above.`; `stringprep`, already in the tree through pdfcraft-crypt, is an optional dependency enabled by `std`, and without `std` passwords are used as given): the renderer used the password as typed, so one that SASLprep changes (a decomposed `café`, a no-break space, the fullwidth `ab` a Japanese IME types in full-width mode) was wrong, although pdfcraft-cos accepted it: protecting a document with such an open password was rolled back ("the password is incorrect"), and a file with such a password did not open with it. | (1) `cos/tests/writer.rs::page_tree_loops_in_object_streams_do_not_crash_readers`; (2) `raster::tests::absurd_mask_and_fax_sizes_are_refused_before_decoding`; (3) `raster::tests::absurd_predictor_columns_and_line_widths_render`; (4) `raster::tests::inline_images_with_ei_in_their_data_parse_in_linear_time`; (5) `raster::tests::indirect_appearance_state_dict_is_not_another_stream`; (6) `raster::tests::jpx_stream_bit_depth_boundaries_do_not_panic`, `raster::tests::jpx_32_bit_image_does_not_prevent_other_page_content_from_rendering`, `raster::tests::jpx_gray_rgb_and_alpha_keep_eight_bit_samples`, `raster::tests::jpx_streams_reject_out_of_range_bit_depths`; (7) `raster::tests::decompression_bombs_stop_at_the_stream_limit`, `raster::tests::page_contents_and_nested_forms_share_one_budget`; (8) `inspect::tests::jspdf_high_precision_mediabox_does_not_overflow_dimensions`, `object::number::tests::high_precision_float_does_not_overflow_mantissa` (hayro-syntax); (9) `object::dict::lazy_index_tests`, `raster::tests::large_resource_indexes_preserve_pixels_and_text`; (10) `data::tests`, `xref::tests::concurrent_cold_object_stream_reads_all_succeed`, `raster::tests::shared_parser_is_lazy_and_initializes_once_under_contention`; (11) `data::tests::panicking_initializer_wakes_waiters_and_prevents_retries`, `xref::tests::concurrent_cold_object_stream_reads_all_succeed`; (12) `util::tests::segment_list_rejects_out_of_range_indices`; (13) `raster::tests::user_unit_scales_the_page_and_everything_on_it`; (14) `crypto::pdfcraft_password_tests`, `pdfcraft-engine` `tests::legacy_passwords_with_turkish_characters_open`; (15) `content::tests::windows_keep_every_instruction_at_every_split`, `content::tests::windows_keep_every_instruction_in_pieces_of_any_size`, `content::tests::windows_match_the_slice_on_random_content`, `content::tests::windows_drop_blanks_and_keep_a_comment_that_may_go_on`, `page::content_reader_tests::content_past_the_cap_is_read_to_the_end`, `page::content_reader_tests::a_stream_that_expands_past_the_budget_is_cut_there`, `page::content_reader_tests::a_small_expansion_under_the_cap_is_not_cut`, `raster::tests::page_content_past_the_old_cap_renders`, `raster::tests::content_reader_returns_the_same_bytes_in_any_pieces`, `raster::tests::content_bombs_stop_at_the_budget_and_say_so`, `page::content_reader_tests::plain_and_whole_pieces_keep_their_bytes`, `page::content_reader_tests::repeated_content_reference_counts_compressed_bytes_once`, `page::content_reader_tests::whole_cap_still_counts_later_unique_streams`; (16) `crypto::pdfcraft_password_tests::aes256_passwords_are_tried_in_their_saslprep_form_then_as_given`, `crypto::pdfcraft_password_tests::aes256_passwords_open_as_typed_and_in_their_saslprep_form`, `pdfcraft-engine` `tests::aes256_open_passwords_that_saslprep_changes_protect_and_reopen_as_typed`, `tests::aes256_files_whose_passwords_saslprep_changes_open_as_typed` | lopdf | 0.45.0 | MIT | (1) PNG predictor rows longer than the data are refused before their buffers are allocated (a fuzzed `/Columns 4294967295` allocated two 4 GiB rows), and empty frames return without row buffers; (2) predictor row widths use saturating arithmetic or reject overflow; (3) sub-byte TIFF Predictor 2 scratch is bounded by the samples present in the input instead of the declared `/Colors`, aligned with [lopdf#589](https://github.com/J-F-Liu/lopdf/pull/589); (4) the object lookup keeps its cycle history through compressed objects, requires an ordinary in-file container, and caps the chain of indirect lookups at 16 (a chain of new objects, each a `/Length` compressed in a container whose own `/Length` names the next, or a stream whose `/Length` names the next stream, overflowed the stack: a dev build's 2 MiB thread within 800 hops); (5) object-stream members are parsed within their own extent (up to the next distinct offset), an entry whose offset repeats an earlier entry's is skipped (so a repeated object number can resolve to its earlier entry), and offsets are processed in index order | (1) `inspect::tests::png_predictor_rows_longer_than_the_data_are_refused_before_allocating`, `inspect::tests::empty_png_predictor_frames_do_not_allocate_rows`; (2) `inspect::tests::tiff_subbyte_predictor_row_width_overflow_is_refused`; (3) `inspect::tests::tiff_subbyte_predictor_scratch_is_bounded_by_available_samples`, `inspect::tests::tiff_subbyte_predictors_keep_components_rows_and_padding`; (4) `inspect::tests::compressed_object_self_container_does_not_recurse`, `inspect::tests::compressed_object_mutual_containers_do_not_recurse`, `inspect::tests::object_stream_length_cycle_does_not_recurse`, `inspect::tests::compressed_object_container_chain_does_not_recurse`, `inspect::tests::compressed_length_chain_does_not_recurse`, `inspect::tests::plain_stream_length_chain_does_not_recurse`, `inspect::tests::compressed_objects_and_indirect_stream_length_still_load`, `inspect::tests::compressed_length_in_a_container_with_an_indirect_length_still_loads`; (5) `inspect::tests::object_stream_member_extents_bound_owned_strings`, `inspect::tests::object_stream_member_extents_preserve_index_order_and_whitespace` | +| hayro-syntax | 0.7.2 | Apache-2.0 OR MIT | (1) Page-tree cycle guard in `resolve_pages` (visited set + depth cap): a `/Kids` loop among compressed objects overflowed the stack and aborted the process; (2) `ccitt_size_ok`: CCITT images wider than 2^20 columns or over 2^28 pixels are not decoded (a fuzzed `/Columns 4294967295` allocated 4 GiB); (3) Flate/LZW predictor row widths are saturating `usize`, a zero width is refused and a row longer than the data is not allocated (a fuzzed `/Columns 9223372036854775807` wrapped to a 2^61-byte allocation and aborted); (4) the inline-image end-of-data check (`EI`) doesn't nest inside its own look-ahead and examines at most 256 candidates and steps (50 images with "EI" in their data ran for over ten minutes); (5) a stream whose `/Length` is wrong is recovered only when `stream` is the next token — scanning ahead to a later object's `stream` made an indirect appearance-state dictionary (Quartz checkboxes: `/AP /N` → `<< /Yes … /Off … >>`) render as a non-form, so the widget was skipped; (6) JPX rescaling uses an exact integer sample range for 1–32-bit components (32 shifted past u32, and floating-point maxima at 25–31 bits wrapped to zero), and refuses zero-sized rows; (7) `decode_limit`: Flate (through flate2 and the fallback inflater), LZW and RunLength never write past `MAX_DECODED_STREAM` (256 MiB), or, for the last filter of an image of known size, past twice its pixel bytes (a predictor tag byte per byte), at most 1 GiB; `Stream::decoded_within` for budgeted callers; a page's `/Contents` array shares one `MAX_DECODED_STREAM` (a 2 MB page whose content stream or 8 × 8 image inflated to 2 GB took the renderer past 3 GB in under a second; naming the stream twenty times in `/Contents`, 5 GB); (8) high-precision numbers (jsPDF MediaBox coordinates with over 19 digits) parse without overflowing the u64 mantissa: fractional digits past it are dropped, integer digits past it scale the value (a real, kept finite); (9) large dictionary indexes are built on first use and shared across repeated reads within each PDF (#307); the validated-byte cache is bounded, reader contexts remain separate, repairs and inline/content dictionaries bypass sharing, and small dictionaries stay eager; (10) decoded object-stream slots publish once under contention, cold loading rejects recursive dependencies, and xref repair serializes without holding recursive read guards; this permits one parser per native render pool with private worker caches; (11) `sync.rs`: a poisoned lock is recovered instead of unwrapped (a worker panic no longer cascades into every reader of the same PDF), and xref repair takes a blocking write lock instead of asserting a non-blocking one; (12) `SegmentList` (`util.rs`) returns `None` for an out-of-range index instead of panicking; (13) a page's `/UserUnit` scales `render_dimensions` and `initial_transform`, so the page and everything on it are sized in points, as Acrobat shows them; it is read as Acrobat reads it (the page's own entry, not inherited; a number from 1 up, at most 75,000; anything else counts as 1), and a page without it keeps exactly the transform it had | (1) `cos/tests/writer.rs::page_tree_loops_in_object_streams_do_not_crash_readers`; (2) `raster::tests::absurd_mask_and_fax_sizes_are_refused_before_decoding`; (3) `raster::tests::absurd_predictor_columns_and_line_widths_render`; (4) `raster::tests::inline_images_with_ei_in_their_data_parse_in_linear_time`; (5) `raster::tests::indirect_appearance_state_dict_is_not_another_stream`; (6) `raster::tests::jpx_stream_bit_depth_boundaries_do_not_panic`, `raster::tests::jpx_32_bit_image_does_not_prevent_other_page_content_from_rendering`, `raster::tests::jpx_gray_rgb_and_alpha_keep_eight_bit_samples`, `raster::tests::jpx_streams_reject_out_of_range_bit_depths`; (7) `raster::tests::decompression_bombs_stop_at_the_stream_limit`, `raster::tests::page_contents_and_nested_forms_share_one_budget`; (8) `inspect::tests::jspdf_high_precision_mediabox_does_not_overflow_dimensions`, `object::number::tests::high_precision_float_does_not_overflow_mantissa` (hayro-syntax); (9) `object::dict::lazy_index_tests`, `raster::tests::large_resource_indexes_preserve_pixels_and_text`; (10) `data::tests`, `xref::tests::concurrent_cold_object_stream_reads_all_succeed`, `raster::tests::shared_parser_is_lazy_and_initializes_once_under_contention`; (11) `data::tests::panicking_initializer_wakes_waiters_and_prevents_retries`, `xref::tests::concurrent_cold_object_stream_reads_all_succeed`; (12) `util::tests::segment_list_rejects_out_of_range_indices`; (13) `raster::tests::user_unit_scales_the_page_and_everything_on_it` | | lopdf | 0.45.0 | MIT | (1) PNG predictor rows longer than the data are refused before their buffers are allocated (a fuzzed `/Columns 4294967295` allocated two 4 GiB rows), and empty frames return without row buffers; (2) predictor row widths use saturating arithmetic or reject overflow; (3) sub-byte TIFF Predictor 2 scratch is bounded by the samples present in the input instead of the declared `/Colors`, aligned with [lopdf#589](https://github.com/J-F-Liu/lopdf/pull/589) | (1) `inspect::tests::png_predictor_rows_longer_than_the_data_are_refused_before_allocating`, `inspect::tests::empty_png_predictor_frames_do_not_allocate_rows`; (2) `inspect::tests::tiff_subbyte_predictor_row_width_overflow_is_refused`; (3) `inspect::tests::tiff_subbyte_predictor_scratch_is_bounded_by_available_samples`, `inspect::tests::tiff_subbyte_predictors_keep_components_rows_and_padding` | +| hayro-syntax | 0.7.2 | Apache-2.0 OR MIT | (1) Page-tree cycle guard in `resolve_pages` (visited set + depth cap): a `/Kids` loop among compressed objects overflowed the stack and aborted the process; (2) `ccitt_size_ok`: CCITT images wider than 2^20 columns or over 2^28 pixels are not decoded (a fuzzed `/Columns 4294967295` allocated 4 GiB); (3) Flate/LZW predictor row widths are saturating `usize`, a zero width is refused and a row longer than the data is not allocated (a fuzzed `/Columns 9223372036854775807` wrapped to a 2^61-byte allocation and aborted); (4) the inline-image end-of-data check (`EI`) doesn't nest inside its own look-ahead and examines at most 256 candidates and steps (50 images with "EI" in their data ran for over ten minutes); (5) a stream whose `/Length` is wrong is recovered only when `stream` is the next token — scanning ahead to a later object's `stream` made an indirect appearance-state dictionary (Quartz checkboxes: `/AP /N` → `<< /Yes … /Off … >>`) render as a non-form, so the widget was skipped; (6) JPX rescaling uses an exact integer sample range for 1–32-bit components (32 shifted past u32, and floating-point maxima at 25–31 bits wrapped to zero), and refuses zero-sized rows; (7) `decode_limit`: Flate (through flate2 and the fallback inflater), LZW and RunLength never write past `MAX_DECODED_STREAM` (256 MiB), or, for the last filter of an image of known size, past twice its pixel bytes (a predictor tag byte per byte), at most 1 GiB; `Stream::decoded_within` for budgeted callers; a page's `/Contents` array shares one `MAX_DECODED_STREAM` (a 2 MB page whose content stream or 8 × 8 image inflated to 2 GB took the renderer past 3 GB in under a second; naming the stream twenty times in `/Contents`, 5 GB); (8) high-precision numbers (jsPDF MediaBox coordinates with over 19 digits) parse without overflowing the u64 mantissa: fractional digits past it are dropped, integer digits past it scale the value (a real, kept finite); (9) large dictionary indexes are built on first use and shared across repeated reads within each PDF (#307); the validated-byte cache is bounded, reader contexts remain separate, repairs and inline/content dictionaries bypass sharing, and small dictionaries stay eager; (10) decoded object-stream slots publish once under contention, cold loading rejects recursive dependencies, and xref repair serializes without holding recursive read guards; this permits one parser per native render pool with private worker caches; (11) `sync.rs`: a poisoned lock is recovered instead of unwrapped (a worker panic no longer cascades into every reader of the same PDF), and xref repair takes a blocking write lock instead of asserting a non-blocking one; (12) `SegmentList` (`util.rs`) returns `None` for an out-of-range index instead of panicking; (13) a page's `/UserUnit` scales `render_dimensions` and `initial_transform`, so the page and everything on it are sized in points, as Acrobat shows them; it is read as Acrobat reads it (the page's own entry, not inherited; a number from 1 up, at most 75,000; anything else counts as 1), and a page without it keeps exactly the transform it had; (14) direct arrays and dictionaries share a reader-local nesting cap of 128, counted while skipping and while parsing a dictionary (its lenient repair reads, rather than skips, an object found where a key belongs, so `<< << …` recursed through that read); deeper objects return `None` instead of overflowing the stack (including unused trailer values, trailer entries, content operands and marked-content properties); a chain of 65 direct stitching functions now stops at this cap, before the 64-function guard | (1) `cos/tests/writer.rs::page_tree_loops_in_object_streams_do_not_crash_readers`; (2) `raster::tests::absurd_mask_and_fax_sizes_are_refused_before_decoding`; (3) `raster::tests::absurd_predictor_columns_and_line_widths_render`; (4) `raster::tests::inline_images_with_ei_in_their_data_parse_in_linear_time`; (5) `raster::tests::indirect_appearance_state_dict_is_not_another_stream`; (6) `raster::tests::jpx_stream_bit_depth_boundaries_do_not_panic`, `raster::tests::jpx_32_bit_image_does_not_prevent_other_page_content_from_rendering`, `raster::tests::jpx_gray_rgb_and_alpha_keep_eight_bit_samples`, `raster::tests::jpx_streams_reject_out_of_range_bit_depths`; (7) `raster::tests::decompression_bombs_stop_at_the_stream_limit`, `raster::tests::page_contents_and_nested_forms_share_one_budget`; (8) `inspect::tests::jspdf_high_precision_mediabox_does_not_overflow_dimensions`, `object::number::tests::high_precision_float_does_not_overflow_mantissa` (hayro-syntax); (9) `object::dict::lazy_index_tests`, `raster::tests::large_resource_indexes_preserve_pixels_and_text`; (10) `data::tests`, `xref::tests::concurrent_cold_object_stream_reads_all_succeed`, `raster::tests::shared_parser_is_lazy_and_initializes_once_under_contention`; (11) `data::tests::panicking_initializer_wakes_waiters_and_prevents_retries`, `xref::tests::concurrent_cold_object_stream_reads_all_succeed`; (12) `util::tests::segment_list_rejects_out_of_range_indices`; (13) `raster::tests::user_unit_scales_the_page_and_everything_on_it`; (14) `raster::tests::deeply_nested_direct_objects_do_not_overflow_the_stack`, `raster::tests::dictionaries_nested_without_keys_in_content_do_not_overflow_the_stack`, `raster::tests::dictionaries_nested_without_keys_in_the_trailer_do_not_overflow_the_stack`, `raster::tests::dictionaries_nested_without_keys_as_marked_content_properties_do_not_overflow_the_stack`, `raster::tests::dictionaries_nested_without_keys_are_read_up_to_the_nesting_cap`, `raster::tests::nesting_at_the_cap_fits_a_512_kib_stack` (native only), `raster::tests::function_limits_depth_guard_refuses_a_chain_of_references` | | winit | 0.30.13 | Apache-2.0 | (1) on Windows 11 (build 22000 and later), `WM_DPICHANGED` applies the rect Windows suggests. It used to nudge the window onto the monitor `MonitorFromWindow` names, which during a drag is still the monitor being left; the nudge sent another `WM_DPICHANGED`, so a window dragged to a monitor with another scale factor grew and stayed on the wrong monitor at the wrong scale (#324). Backport of winit master 488c036a ([winit#4341](https://github.com/rust-windowing/winit/pull/4341)), which no 0.30 release has; Windows 10 keeps the old adjustment, as on winit master. (2) on Wayland, a seat's text input is destroyed when the seat goes away, not whenever it loses a capability: losing any capability (a touch screen or tablet unplugged, a remote-desktop session ending) destroyed it, and only an added capability recreated it, so IME stopped working until restart. Port of [winit#4747](https://github.com/rust-windowing/winit/pull/4747); (3) on Windows, an IME composition reports its cursor from `GCS_CURSORPOS` only when `WM_IME_COMPOSITION` says it is set, and at the end of the composition otherwise: the Microsoft Korean IME never sets it, so the cursor read as 0 (egui then drew no caret while composing; it now draws it after the syllable). Port of [winit#4746](https://github.com/rust-windowing/winit/pull/4746); (4) on Windows, a hidden window is not maximized until it is shown, and a hidden window shown while maximized gets one `ShowWindow(SW_MAXIMIZE)`: `SW_MAXIMIZE` shows a hidden window, so PdfCraft, which eframe keeps hidden until its first frame is drawn, appeared unpainted (white) when it restored a maximized window, and could lose its focus. Port of [winit#4587](https://github.com/rust-windowing/winit/pull/4587) (the later, focus-safe form of [winit#4575](https://github.com/rust-windowing/winit/pull/4575)); (5) on X11, when allowing or disallowing IME replaces the focused window's input context (egui does it each time a text field gains or loses focus), the new context is focused: no focus event follows, so it stayed unfocused until the window lost and regained focus. Port of [winit#4727](https://github.com/rust-windowing/winit/pull/4727); (6) on macOS, `insertText` commits through IME when a composition was started (`pending_commit`, set by `setMarkedText`) rather than when marked text is left: input methods that end a composition with `unmarkText` before `insertText` lost the text, and Apple Korean dropped the key typed after a syllable (`한` then `5` or `;`); other `insertText` calls stay `KeyboardInput`; a commit outside a key press (a candidate clicked with the mouse, dictation) clears the marked text and leaves no key to swallow, as in [winit#4748](https://github.com/rust-windowing/winit/pull/4748) (without it the next key, such as Backspace, was lost). `validAttributesForMarkedText` lists the underline and marked-clause attributes, without which some input methods don't compose. Port of [winit#4650](https://github.com/rust-windowing/winit/pull/4650), the 0.30 backport of [winit#4651](https://github.com/rust-windowing/winit/pull/4651) (merged on winit master), with the underline attribute spelled as AppKit's `NSUnderlineStyleAttributeName` (`NSUnderline`); (7) on macOS, disallowing IME with a composition in progress (focus leaving a text field) tells the input method to discard its marked text (`discardMarkedText`): it kept composing it once IME was allowed again, so the abandoned syllable came back (`하`, then `가` typed in the next field, became `학`, then `하` + `가`; Japanese `か` then `さ` became `傘`). Port of [winit#4745](https://github.com/rust-windowing/winit/pull/4745); (8) on macOS, text inserted outside a key press without a composition (the emoji picker) is reported as `Ime::Commit`; it was dropped. Port of the emoji-picker part of [winit#4749](https://github.com/rust-windowing/winit/pull/4749) (0.30 backport of [winit#4748](https://github.com/rust-windowing/winit/pull/4748)); its `selectedRange` change for dictation is left out because it switches on press-and-hold for every held key (an accent menu instead of key repeat, and the chosen accent added after the repeated letters); (9) on macOS, a key whose text was committed through IME isn't also sent as `KeyboardInput` unless AppKit forwards it as a command (Enter): Apple Korean answers Space with no syllable in progress with `setMarkedText(" ")`, `insertText(" ")`, `setMarkedText("")`, and the last call reset winit's state, so the space arrived twice. Same goal as [winit#4478](https://github.com/rust-windowing/winit/pull/4478), whose changes don't reach this call order (macOS 14); to be proposed upstream there; (10) on macOS, when the first key in a fresh app reaches Apple Korean's `insertText` as a raw compatibility jamo instead of starting a composition, that key is interpreted once more, synchronously, before it is sent as `KeyboardInput` (g k s typed ㅎㅏㄴ instead of 한); only an unmodified, non-repeated first key whose one callback inserts that same jamo, with IME enabled and nothing composed, focus and input source unchanged, is retried (`ime_startup.rs`). Port of [winit#4744](https://github.com/rust-windowing/winit/pull/4744), with its policy tests.; (11) on X11 without `Xft.dpi`, the scale factor comes from the X screen's configured DPI (its size in pixels and millimetres) before the output's physical density from RandR: Xorg can deliberately run a dense panel at 96 DPI, and only winit applications then looked zoomed; `Xft.dpi` still wins, `WINIT_X11_SCALE_FACTOR` still overrides, and a screen reporting no size keeps the RandR fallback. PdfCraft patch (#1150, replacing the launcher pin proposed in #908). (12) on macOS, `WinitView` answers `mouseDownCanMoveWindow` with the window's `movable_by_window_background` attribute (NO unless asked): NSView answers YES for a view that isn't opaque, so with the transparent title bar and full-size content view PdfCraft uses, AppKit moved the window for any drag that began in the 28 pt title-bar band before the app saw it, and document tabs (which live in that band) could not be dragged to reorder them. The empty strip still moves the window through `ViewportCommand::StartDrag`. PdfCraft patch. The published crate's asset files (`docs/res/*.svg`, `examples/data/*.png`) are left out, so its `window` example doesn't build; (13) on Wayland, pixel-only wheel, wheel-tilt and continuous-source scroll events report `Moved` rather than starting an unterminated finger gesture, so egui follows modifier release instead of keeping Ctrl zoom latched (#991). Finger gestures and unknown sources retain their existing phase policy | (1) `pdfcraft` `tests::winit_carries_the_windows_11_monitor_scale_fix` keeps the patch in the build; the drag itself needs two monitors with different scale factors on Windows 11; (2) `pdfcraft` `tests/winit_wayland_text_input.rs`; the capability change itself needs a Wayland session and an input method; (3) `pdfcraft` `tests/winit_windows_ime_cursor.rs`; composing itself needs the Microsoft Korean IME; (4) `pdfcraft` `tests/winit_windows_hidden_maximized.rs`; the start-up itself needs Windows and a window that was closed maximized; (5) `pdfcraft` `tests/winit_x11_ime_focus.rs`; switching fields itself needs an X11 session and an input method (IBus, fcitx5); (6) `pdfcraft` `tests/winit_macos_ime_commit.rs`; composing itself needs macOS and an input method; (7) `pdfcraft` `tests/winit_macos_ime_discard.rs`; composing itself needs macOS and an input method; (8) `pdfcraft` `tests/winit_macos_emoji_picker.rs`; the picker itself needs macOS; (9) `pdfcraft` `tests/winit_macos_korean_space.rs`; composing itself needs macOS and Apple Korean; (10) `pdfcraft` `tests/winit_macos_korean_first_key.rs` and `ime_startup.rs`'s own tests (run them with `rustc --test`); typing itself needs macOS and Apple Korean; (11) `pdfcraft` `tests/winit_x11_dpi.rs` keeps the patch in the build, and `util::randr` tests the policy (run them in the vendored crate); the scale itself needs an X11 session; (12) `pdfcraft` `tests/winit_macos_title_bar_drag.rs` keeps the patch in the build; the drag itself needs macOS and a pointer; (13) `pdfcraft` `tests/winit_wayland_scroll.rs` compiles the production phase policy and exercises modifier release through egui; live COSMIC confirmation remains open | | egui-wgpu | 0.36.2 | MIT OR Apache-2.0 | (1) `winit::surface_fit`: a window's surface is configured within the device's `max_texture_dimension_2d`, both sides shrunk by one factor that egui then draws at (`pixels_per_point × render_scale`), so the whole window is drawn into the surface (on DX12 it is stretched over the window and lines up with the pointer; wgpu's GL backend copies it unscaled into a corner); the longer side becomes exactly the limit; the depth and MSAA textures follow, and a recreated surface starts again from the window's own size. egui-wgpu configured the window's size as is, and `Surface::configure` panics beyond the limit: a window restored at another monitor's scale (opening an Outlook attachment on a mixed-DPI laptop asked an 8192-pixel device for 8600 × 3423, #577) or stretched across monitors closed PdfCraft, before its window appeared when it happened at start-up ([emilk/egui#8361](https://github.com/emilk/egui/issues/8361)). The published crate leaves out egui's licence files; `LICENSE-APACHE` and `LICENSE-MIT` are from the 0.36.2 tag; (2) `winit::catch_errors`: a new window's surface is configured inside wgpu error scopes (validation, out of memory, internal), and a failure is returned as `WgpuError::ConfigureSurface` (for the root window at start-up eframe returns it as `Error::Wgpu`, which PdfCraft retries with OpenGL); nothing is kept for the window. wgpu's default handler panicked instead, and eframe configures the root surface before the app is created, so a driver that can't configure one closed PdfCraft at launch (a 2015 Intel GPU through wgpu's GL backend timed out waiting for the GPU to go idle, `GpuWaitTimeout`, #519). Unchanged, so still a panic: an error in a later reconfigure (resize, a lost surface), a device lost during the first configure (wgpu reports it only to a callback), and a window shown at zero size (first configured on resize) | (1) `pdfcraft` `tests::a_window_larger_than_the_gpu_limit_gets_a_surface_within_it`, `tests::surface_fit_never_empties_or_overflows_a_surface`, and `tests::egui_wgpu_carries_the_surface_size_fit`, which keeps the patch in the build and in the paths that size a surface; (2) `pdfcraft` `tests::a_gpu_error_while_a_window_is_set_up_is_returned_not_a_panic` (a real device: an error inside `catch_errors` is returned, not a panic) and `tests::egui_wgpu_returns_a_surface_it_cannot_configure_as_an_error`, which keeps it around `add_surface`'s configure | | vello_common | 0.0.8 | Apache-2.0 OR MIT | (1) `clip::intersect` (the clip step every clipped path passes through) starts its row walk at the first row both paths have strips in, not the earlier of the two first rows. The walk visited every row from the top of the clip for each path (on the A1 sample's full-page canvas, about half its strip rows per stroke), and rows where one path has no strips produce no output, so the strips are unchanged (vello_common 0.1 starts at the later row too). Its cost grew with the page, and a full-page render of the A1 sample was about 30% faster; the output is byte-identical | (1) `clip::tests::intersect_walks_only_rows_both_paths_have_strips` counts the rows the walk visits (`cargo test --manifest-path vendor/vello_common/Cargo.toml`) and fails without the patch; the render crate's pixel tests run through the patched crate | From 1acb402e0ab9acef92fc3002c6bfd2a72794f51d Mon Sep 17 00:00:00 2001 From: aiongg Date: Thu, 22 Oct 2026 01:48:52 +0000 Subject: [PATCH 25/33] Integration: #2452 Polish for the two snapshot notices; English for five panel labels The five panel labels (Panels, Float panel, Move to group, Resize panels, Resize panel window) stay English until a translator fills them, so that polish_covers_ui_literals passes. --- crates/ui-egui/src/i18n/pl.tsv | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/crates/ui-egui/src/i18n/pl.tsv b/crates/ui-egui/src/i18n/pl.tsv index 85693e0d9..f954c36d3 100644 --- a/crates/ui-egui/src/i18n/pl.tsv +++ b/crates/ui-egui/src/i18n/pl.tsv @@ -2563,3 +2563,11 @@ animation effects Off Wyłączone Switch to List view to change the pages it takes. Przełącz na widok listy, aby zmienić strony, które obejmuje. The document's security settings don't allow copying text and images Ustawienia zabezpieczeń dokumentu nie pozwalają kopiować tekstu i obrazów {n} word(s) or phrase(s) Słowa lub frazy: {n} + You are viewing revision {rev} of “{from}”. It is a snapshot: changes here won't affect the original. Wyświetlasz rewizję {rev} dokumentu „{from}”. To migawka: zmiany wprowadzone tutaj nie wpłyną na oryginał. + You are viewing the signed version of “{from}” (revision {rev}). It is a snapshot: changes here won't affect the original. Wyświetlasz podpisaną wersję dokumentu „{from}” (rewizja {rev}). To migawka: zmiany wprowadzone tutaj nie wpłyną na oryginał. +# Untranslated: English text until a translator fills these in. + Float panel Float panel + Move to group Move to group + Panels Panels + Resize panel window Resize panel window + Resize panels Resize panels From 51a5d4ef51fa2560cfbea6225d2089fbb1a9d2fa Mon Sep 17 00:00:00 2001 From: aiongg Date: Thu, 22 Oct 2026 01:49:30 +0000 Subject: [PATCH 26/33] Integration: #3819 move name_sort_key above the test module --- crates/ui-egui/src/i18n/mod.rs | 42 +++++++++++++++++----------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/crates/ui-egui/src/i18n/mod.rs b/crates/ui-egui/src/i18n/mod.rs index ce4fa52b5..78309706e 100644 --- a/crates/ui-egui/src/i18n/mod.rs +++ b/crates/ui-egui/src/i18n/mod.rs @@ -614,6 +614,27 @@ pub fn trn(lang: Lang, n: u64, one: &str, other: &str) -> String { fmt(text, &[("n", &n.to_string())]) } +/// `name` lowercased with the Latin accents that occur in language names folded away, so a +/// byte-wise sort reads alphabetically. Other scripts are left as they are. +fn name_sort_key(name: &str) -> String { + name.chars() + .flat_map(char::to_lowercase) + .map(|c| match c { + 'à'..='å' | 'ā' | 'ă' | 'ą' => 'a', + 'ç' | 'ć' | 'č' => 'c', + 'è'..='ë' | 'ē' | 'ě' | 'ę' | 'ế' | 'ệ' => 'e', + 'ì'..='ï' | 'ī' => 'i', + 'ñ' | 'ń' | 'ň' => 'n', + 'ò'..='ö' | 'ø' | 'ő' => 'o', + 'ś' | 'š' => 's', + 'ù'..='ü' | 'ū' | 'ů' | 'ű' => 'u', + 'ý' | 'ÿ' => 'y', + 'ź' | 'ż' | 'ž' => 'z', + c => c, + }) + .collect() +} + #[cfg(test)] mod tests { use super::catalog::{Entry, parse_entries, placeholders}; @@ -3642,27 +3663,6 @@ mod tests { } } -/// `name` lowercased with the Latin accents that occur in language names folded away, so a -/// byte-wise sort reads alphabetically. Other scripts are left as they are. -fn name_sort_key(name: &str) -> String { - name.chars() - .flat_map(char::to_lowercase) - .map(|c| match c { - 'à'..='å' | 'ā' | 'ă' | 'ą' => 'a', - 'ç' | 'ć' | 'č' => 'c', - 'è'..='ë' | 'ē' | 'ě' | 'ę' | 'ế' | 'ệ' => 'e', - 'ì'..='ï' | 'ī' => 'i', - 'ñ' | 'ń' | 'ň' => 'n', - 'ò'..='ö' | 'ø' | 'ő' => 'o', - 'ś' | 'š' => 's', - 'ù'..='ü' | 'ū' | 'ů' | 'ű' => 'u', - 'ý' | 'ÿ' => 'y', - 'ź' | 'ż' | 'ž' => 'z', - c => c, - }) - .collect() -} - #[cfg(test)] mod picker_order_tests { use super::*; From b4f762ce4512d144540223556b92a3453fb35089 Mon Sep 17 00:00:00 2001 From: aiongg Date: Thu, 22 Oct 2026 01:50:12 +0000 Subject: [PATCH 27/33] M14: complete the French interface catalog (267 entries) (#1594) Squash of PR #1594 (its branch history holds a reverted rewording commit). crates/ui-egui/src/i18n/fr.tsv: both sides' entries, no duplicate keys. --- crates/ui-egui/src/i18n/fr.tsv | 266 +++++++++++++++++++++++++++++++++ 1 file changed, 266 insertions(+) diff --git a/crates/ui-egui/src/i18n/fr.tsv b/crates/ui-egui/src/i18n/fr.tsv index aa83f8197..db48081cb 100644 --- a/crates/ui-egui/src/i18n/fr.tsv +++ b/crates/ui-egui/src/i18n/fr.tsv @@ -2481,3 +2481,269 @@ animation effects Off Désactivés Paragraph spacing Espacement des paragraphes Less Moins Other options Autres options + on page {label} à la page {label} + A font isn't embedded Une police n'est pas incorporée + A {} action isn't allowed Une action {} n'est pas autorisée + A {} annotation has additional actions Une annotation {} contient des actions supplémentaires + A {} annotation has no appearance stream Une annotation {} n'a pas de flux d'apparence + A {} annotation isn't set to print, or is hidden Une annotation {} n'est pas réglée pour l'impression, ou est masquée + Accessibility Report Rapport d'accessibilité + Add the PDFs to combine Ajoutez les PDF à combiner + Added the first {n} PDFs in {folder} Les {n} premiers PDF de {folder} ont été ajoutés + Always Toujours + Automatically Automatiquement + CRL Signing Signature de LCR + Certificate Signing Signature de certificats + Certificate authority Autorité de certification + Change Author Modifier l'auteur + Change Keywords Modifier les mots-clés + Change Subject Modifier le sujet + Change Title Modifier le titre + Choose a digital ID. Choisissez un ID numérique. + Choose a file… Choisir un fichier… + Choose a folder… Choisir un dossier… + Choose… Choisir… + Color Couleur + Comment Commentaire + Comment and review Commenter et réviser + Copied to clipboard Copié dans le presse-papiers + Copy to clipboard Copier dans le presse-papiers + Create folder Créer un dossier + Create links Créer des liens + Creator Application + Cut and stack needs Two-sided: Off. Print single-sided sheets. Couper et empiler exige Recto verso : Désactivé. Imprimez des feuilles en recto seul. + Data Encipherment Chiffrement des données + Decipher Only Déchiffrement seul + Detailed Report Rapport détaillé + DeviceCMYK is used, but the PDF/A output intent isn't a CMYK profile DeviceCMYK est utilisé, mais l'intention de sortie PDF/A n'est pas un profil CMJN + DeviceRGB is used, but the PDF/A output intent isn't an RGB profile DeviceRGB est utilisé, mais l'intention de sortie PDF/A n'est pas un profil RVB + Digital Signature Signature numérique + Disabled Désactivé + Document properties (⌘D) Propriétés du document (⌘D) + Drop PDFs or folders here, or choose them. Déposez des PDF ou des dossiers ici, ou choisissez-les. + Duplicate Dupliquer + Enabled Activé + Encipher Only Chiffrement seul + End entity Entité finale + English Anglais + Enter a URL Saisissez une URL + Enter a name. Saisissez un nom. + Enter a page number Saisissez un numéro de page + Enter the field names Saisissez les noms des champs + Error Erreur + Every PDF in the folder Tous les PDF du dossier + Every PDF in the folder and the folders inside it Tous les PDF du dossier et de ses sous-dossiers + Field "{}" on page {p} has no description (tooltip) Le champ « {} » de la page {p} n'a pas de description (info-bulle) + Filename Nom du fichier + Flatten Fill & Sign Aplatir Remplir et signer + Folder Dossier + Font (unnamed) on page {p} doesn't map its characters to Unicode La police (sans nom) de la page {p} n'associe pas ses caractères à Unicode + Font {} on page {p} doesn't map its characters to Unicode La police {} de la page {p} n'associe pas ses caractères à Unicode + Form field on page {p} isn't tagged Un champ de formulaire de la page {p} n'est pas balisé + Help… Aide… + H{n} follows an H{d}; headings should not skip levels H{n} suit H{d} ; les niveaux de titre ne doivent pas être sautés + Import Importer + Information Information + Key Agreement Accord de clé + Key Encipherment Chiffrement de clé + Loading… Chargement… + Margins (in) Marges (pouces) + Move Déplacer + Never Jamais + New bookmark (⌘B) Nouveau signet (⌘B) + Next Suivant + Next (⌘G) Suivant (⌘G) + No PDFs found in {folder} Aucun PDF trouvé dans {folder} + No document language is set Aucune langue de document n'est définie + No page has text: the document appears to be images of pages Aucune page ne contient de texte : le document semble être constitué d'images de pages + No results Aucun résultat + Non-Repudiation Non-répudiation + On Activé + Only the document's owner can change its security (open it with the permissions password) Seul le propriétaire du document peut modifier sa protection (ouvrez-le avec le mot de passe d'autorisations) + Open a PDF (⌘O) Ouvrir un PDF (⌘O) + Open folder Ouvrir le dossier + Organize Organiser + Page {n} Page {n} + Page {n} of {total} Page {n} sur {total} + Page {p} doesn't tab in structure order La page {p} ne se parcourt pas dans l'ordre de la structure + Page {p}: {n} untagged content item Page {p} : {n} élément de contenu non balisé + Page {p}: {n} untagged content items Page {p} : {n} éléments de contenu non balisés + Page {} has additional actions La page {} contient des actions supplémentaires + Panel layout could not be restored: {error} Impossible de restaurer la disposition des panneaux : {error} + Panel move was not applied: {error} Le déplacement du panneau n'a pas été appliqué : {error} + Paste Coller + PdfCraft can't check this signature yet: {}. PdfCraft ne peut pas encore contrôler cette signature : {}. + Previous Précédent + Previous (⇧⌘G) Précédent (⇧⌘G) + Print (⌘P) Imprimer (⌘P) + Producer Producteur du PDF + Refresh Actualiser + Rendering… Rendu en cours… + Report created Rapport créé + Rev. {rev}: Certified by an unknown signer Rév. {rev} : certifié par un signataire inconnu + Rev. {rev}: Certified by {name} Rév. {rev} : certifié par {name} + Rev. {rev}: Signed by an unknown signer Rév. {rev} : signé par un signataire inconnu + Rev. {rev}: Signed by {name} Rév. {rev} : signé par {name} + Rotate view clockwise (⇧⌘+) Pivoter l'affichage vers la droite (⇧⌘+) + Rule Name Nom de la règle + Save (M4) Enregistrer (M4) + Save as {level} Enregistrer comme {level} + Save changes? Enregistrer les modifications ? + Save file Enregistrer le fichier + Search results Résultats de la recherche + Select all Tout sélectionner + Signature is invalid La signature n'est pas valide + Signature is valid La signature est valide + Signature validity is unknown La validité de la signature est inconnue + Signing time is from the clock on the signer's computer. L'heure de signature provient de l'horloge de l'ordinateur du signataire. + Still rendering — this page is unusually complex… Rendu toujours en cours : cette page est exceptionnellement complexe… + Success Succès + System Système + Text recognition isn't installed: its models are missing (run `cargo xtask models`, or set PDFCRAFT_MODELS). La reconnaissance de texte n'est pas installée : ses modèles sont absents (exécutez `cargo xtask models`, ou définissez PDFCRAFT_MODELS). + The ECDSA signature is not in canonical DER (trailing bytes, padding or a missing sign byte); it was read anyway. La signature ECDSA n'est pas en DER canonique (octets en trop, bourrage ou octet de signe manquant) ; elle a tout de même été lue. + The ECDSA signature is the raw r and s values instead of a DER sequence; it was read anyway. La signature ECDSA est constituée des valeurs brutes r et s au lieu d'une séquence DER ; elle a tout de même été lue. + The RSA signature value does not have the length of the key's modulus (leading zero bytes dropped or added); it was read anyway. La valeur de la signature RSA n'a pas la longueur du module de la clé (octets nuls de tête supprimés ou ajoutés) ; elle a tout de même été lue. + The RSA signature's DigestInfo has no NULL parameter (older signers write it so); it was read anyway. Le DigestInfo de la signature RSA n'a pas de paramètre NULL (d'anciens outils de signature l'écrivent ainsi) ; il a tout de même été lu. + The certificate of {} does not allow this many CA certificates below it (path length), so it is not used to vouch for {}. Le certificat de {} n'autorise pas autant de certificats d'AC en dessous de lui (longueur du chemin) : il n'est donc pas utilisé pour se porter garant de {}. + The certificate of {} is not a CA certificate that may issue certificates, so it is not used to vouch for {}. Le certificat de {} n'est pas un certificat d'AC autorisé à émettre des certificats : il n'est donc pas utilisé pour se porter garant de {}. + The certificate of {} was not valid at the time of signing, so it is not used to vouch for {}. Le certificat de {} n'était pas valide au moment de la signature : il n'est donc pas utilisé pour se porter garant de {}. + The checker found problems which may prevent the document from being fully accessible. Le vérificateur a trouvé des problèmes qui peuvent empêcher le document d'être entièrement accessible. + The document has been altered or corrupted since the signature was applied. Le document a été modifié ou corrompu depuis l'application de la signature. + The document has been altered or corrupted since the timestamp was applied. Le document a été modifié ou corrompu depuis l'application de l'horodatage. + The document has been altered since this signature was applied in ways it does not permit ({}). Le document a été modifié depuis l'application de cette signature d'une manière qu'elle n'autorise pas ({}). + The document has been altered since this timestamp was applied in ways it does not permit ({}). Le document a été modifié depuis l'application de cet horodatage d'une manière qu'il n'autorise pas ({}). + The document has been modified since this signature was applied, but the changes are permitted ({}). Le document a été modifié depuis l'application de cette signature, mais les modifications sont autorisées ({}). + The document has been modified since this timestamp was applied, but the changes are permitted ({}). Le document a été modifié depuis l'application de cet horodatage, mais les modifications sont autorisées ({}). + The document has no tags (structure tree) Le document n'a aucune balise (arbre de structure) + The document has no title Le document n'a pas de titre + The document isn't marked as tagged (MarkInfo Marked) Le document n'est pas indiqué comme balisé (MarkInfo Marked) + The document isn't tagged, so none of its content is Le document n'est pas balisé, son contenu non plus + The document's embedded revocation information shows that the signer's certificate has not been revoked. Les informations de révocation incorporées au document montrent que le certificat du signataire n'a pas été révoqué. + The embedded timestamp token is valid and its authority is trusted; trusted time is {}. Le jeton d'horodatage incorporé est valide et son autorité est approuvée ; l'heure de confiance est {}. + The font {} isn't embedded La police {} n'est pas incorporée + The metadata doesn't identify the file as {} Les métadonnées n'identifient pas le fichier comme {} + The password is incorrect. Le mot de passe est incorrect. + The password must have at least 6 characters. Le mot de passe doit comporter au moins 6 caractères. + The passwords do not match. Les mots de passe ne correspondent pas. + The security settings don't allow screen readers to read the text Les paramètres de protection ne permettent pas aux lecteurs d'écran de lire le texte + The signature algorithm and the SignerInfo's digest algorithm name different hashes; the signature was made with the SignerInfo's. L'algorithme de signature et l'algorithme d'empreinte du SignerInfo désignent des hachages différents ; la signature a été faite avec celui du SignerInfo. + The signature carries an unverified timestamp ({}): the timestamp authority is not in your list of trusted certificates, so the signing time claimed by the signer is used instead. La signature comporte un horodatage non vérifié ({}) : l'autorité d'horodatage ne figure pas dans votre liste de certificats approuvés ; c'est donc l'heure de signature déclarée par le signataire qui est utilisée. + The signature contents are not hexadecimal. Le contenu de la signature n'est pas hexadécimal. + The signature could not be checked ({}). La signature n'a pas pu être contrôlée ({}). + The signature could not be read ({}). La signature n'a pas pu être lue ({}). + The signature could not be verified ({}). La signature n'a pas pu être vérifiée ({}). + The signature has no valid byte range. La signature n'a pas de plage d'octets valide. + The signature includes an embedded timestamp. La signature comprend un horodatage incorporé. + The signature is BER-encoded (indefinite lengths) rather than DER; it was read leniently. La signature est codée en BER (longueurs indéfinies) plutôt qu'en DER ; elle a été lue avec tolérance. + The signature uses the legacy adbe.x509.rsa_sha1 format. La signature utilise l'ancien format adbe.x509.rsa_sha1. + The signature value does not match the signer's certificate: the signature is corrupt. La valeur de la signature ne correspond pas au certificat du signataire : la signature est corrompue. + The signature's byte range does not exclude exactly its contents. La plage d'octets de la signature n'exclut pas exactement son contenu. + The signature's byte range does not match the file. La plage d'octets de la signature ne correspond pas au fichier. + The signature's timestamp token could not be verified ({}). Le jeton d'horodatage de la signature n'a pas pu être vérifié ({}). + The signature's timestamp token does not cover the signature value. Le jeton d'horodatage de la signature ne couvre pas la valeur de la signature. + The signed content is a constructed (segmented) OCTET STRING, as BER allows; it was read anyway. Le contenu signé est une OCTET STRING construite (segmentée), comme le BER l'autorise ; il a tout de même été lu. + The signer's certificate does not allow digital signatures (its key usage has neither digital signature nor non-repudiation). Le certificat du signataire n'autorise pas les signatures numériques (son usage de la clé ne comprend ni la signature numérique ni la non-répudiation). + The signer's certificate has been revoked ({}). Le certificat du signataire a été révoqué ({}). + The signer's certificate has critical extensions PdfCraft does not recognize ({}). Le certificat du signataire comporte des extensions critiques que PdfCraft ne reconnaît pas ({}). + The signer's certificate is not in the signature. Le certificat du signataire ne figure pas dans la signature. + The signer's certificate is not issued for signing documents (its extended key usage has no document-signing purpose). Le certificat du signataire n'est pas émis pour signer des documents (son usage étendu de la clé n'inclut pas la signature de documents). + The signer's certificate was not valid at the time of signing. Le certificat du signataire n'était pas valide au moment de la signature. + The signer's identity is unknown because it has not been included in your list of trusted certificates and none of its parent certificates are trusted certificates. L'identité du signataire est inconnue car elle n'a pas été incluse dans votre liste de certificats approuvés et aucun de ses certificats parents n'est un certificat approuvé. + The signer's identity is valid. L'identité du signataire est valide. + The timestamp authority's certificate was not valid at the time of timestamping. Le certificat de l'autorité d'horodatage n'était pas valide au moment de l'horodatage. + The timestamp contents are not hexadecimal. Le contenu de l'horodatage n'est pas hexadécimal. + The timestamp has no valid byte range. L'horodatage n'a pas de plage d'octets valide. + The timestamp token could not be read ({}). Le jeton d'horodatage n'a pas pu être lu ({}). + The timestamp token is valid and its authority is trusted. Le jeton d'horodatage est valide et son autorité est approuvée. + The timestamp token is valid, but the timestamp authority is not in your list of trusted certificates. Le jeton d'horodatage est valide, mais l'autorité d'horodatage ne figure pas dans votre liste de certificats approuvés. + The timestamp's byte range does not exclude exactly its contents. La plage d'octets de l'horodatage n'exclut pas exactement son contenu. + The timestamp's byte range does not match the file. La plage d'octets de l'horodatage ne correspond pas au fichier. + The window shows the file name, not the title (Initial View > Show) La fenêtre affiche le nom du fichier et non le titre (Affichage initial > Afficher) + Theme Thème + There is no folder to save the digital ID in. Il n'y a aucun dossier où enregistrer l'ID numérique. + This document has not been modified since this signature was applied. Ce document n'a pas été modifié depuis l'application de cette signature. + This document has not been modified since this timestamp was applied. Ce document n'a pas été modifié depuis l'application de cet horodatage. + This signature uses RIPEMD-160, a legacy 160-bit hash algorithm that is no longer recommended for signatures. It still validates, but it should not be relied on. Cette signature utilise RIPEMD-160, un ancien algorithme de hachage de 160 bits qui n'est plus recommandé pour les signatures. Elle reste valide, mais il ne faut pas s'y fier. + This signature uses SHA-1, a weak hash algorithm: collisions in it have been demonstrated. It still validates because many documents signed years ago use it, but it should not be relied on. Cette signature utilise SHA-1, un algorithme de hachage faible : des collisions ont été démontrées. Elle reste valide car de nombreux documents signés il y a des années l'utilisent, mais il ne faut pas s'y fier. + Unsigned signature field Champ de signature non signé + Unsigned signature field: {name} Champ de signature non signé : {name} + Warning Avertissement + Zoom in (⌘+) Zoom avant (⌘+) + Zoom in / out (also pinch or ⌘-scroll) Zoom avant / arrière (aussi pincer ou ⌘-défilement) + Zoom out (⌘−) Zoom arrière (⌘−) + alternate text hides an annotation inside it le texte de remplacement masque une annotation qu'il contient + alternate text on an element with no page content texte de remplacement sur un élément sans contenu de page + comments commentaires + document security store magasin de sécurité du document + document structure structure du document + form fill remplissage de formulaire + its alternate text is inside another element's and will never be read son texte de remplacement est contenu dans celui d'un autre élément et ne sera jamais lu + links liens + metadata métadonnées + no alternate text pas de texte de remplacement + no header cells (TH) pas de cellules d'en-tête (TH) + no summary pas de résumé + not in a TR pas dans un TR + not in a Table, THead, TBody or TFoot pas dans un Table, THead, TBody ou TFoot + not in an L (list) pas dans un L (liste) + not in an LI (list item) pas dans un LI (élément de liste) + of sur + other changes autres modifications + page content contenu de la page + page {n} is out of range (1–{count}) la page {n} est hors de l'intervalle (1–{count}) + pages added or removed pages ajoutées ou supprimées + rows have between {min} and {max} columns les lignes comptent entre {min} et {max} colonnes + the first heading is an H{n}; headings should not skip levels le premier titre est un H{n} ; les niveaux de titre ne doivent pas être sautés + the signed version could not be read la version signée n'a pas pu être lue + {n} pages and no bookmarks {n} pages et aucun signet + {page} is not a page number or label {page} n'est ni un numéro de page ni une étiquette de page + {ty} element on page {p}: {what} Élément {ty} de la page {p} : {what} + {ty} element: {what} Élément {ty} : {what} + {who}, certificate issued by an unknown issuer. {who}, certificat émis par un émetteur inconnu. + {who}, certificate issued by {issuer}. {who}, certificat émis par {issuer}. + {} annotation on page {p} isn't tagged Une annotation {} de la page {p} n'est pas balisée + {} annotations aren't allowed Les annotations {} ne sont pas autorisées + … and {n} more … et {n} autres +@plural Delete {n} field|Delete {n} fields Supprimer {n} champ|Supprimer {n} champs +@plural {n} byte|{n} bytes {n} octet|{n} octets +@plural {n} comment|{n} comments {n} commentaire|{n} commentaires +@plural {n} file|{n} files {n} fichier|{n} fichiers +@plural {n} image optimized|{n} images optimized {n} image optimisée|{n} images optimisées +@plural {n} item discarded|{n} items discarded {n} élément ignoré|{n} éléments ignorés +@plural {n} pixel|{n} pixels {n} pixel|{n} pixels +@plural {n} result|{n} results {n} résultat|{n} résultats +calendar date April avril +calendar date August août +calendar date December décembre +calendar date February février +calendar date January janvier +calendar date July juillet +calendar date June juin +calendar date March mars +calendar date May mai +calendar date November novembre +calendar date October octobre +calendar date September septembre +calendar weekday Fr Ve +calendar weekday Mo Lu +calendar weekday Sa Sa +calendar weekday Su Di +calendar weekday Th Je +calendar weekday Tu Ma +calendar weekday We Me +certificate Basic constraints Contraintes de base +certificate Intended usage Usage prévu +certificate Issued by Émis par +certificate Issued to Émis pour +certificate Issuer Émetteur +certificate Key usage Usage de la clé +certificate Public key Clé publique +certificate SHA-1 digest Empreinte SHA-1 +certificate SHA-256 digest Empreinte SHA-256 +certificate Self-signed Auto-signé +certificate Serial number Numéro de série +certificate Valid from Valide à partir du +certificate Valid to Valide jusqu'au +certificate Validity ends Fin de validité +certificate Validity starts Début de validité +certificate Version Version From 7848fc40dbaba11ff8c4d5f4d86451406c6130d5 Mon Sep 17 00:00:00 2001 From: aiongg Date: Thu, 22 Oct 2026 01:51:35 +0000 Subject: [PATCH 28/33] Integration: #2141 ATTRIBUTION entry for the Thai catalog --- ATTRIBUTION.toml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/ATTRIBUTION.toml b/ATTRIBUTION.toml index cd5b959e9..7fddb814a 100644 --- a/ATTRIBUTION.toml +++ b/ATTRIBUTION.toml @@ -3442,3 +3442,14 @@ licence_file = "LICENSE-MIT" kind = "translation" usage = "Albanian UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs" sha256 = "ca7e318035c785ef0e06e77aea1d81335eab243be6619371ed9cf751085789aa" + +[[asset]] +path = "crates/ui-egui/src/i18n/th.tsv" +title = "Thai interface translation catalog" +author = "PdfCraft contributors" +source = "Contributor-original: clean-room translations of PdfCraft's English UI labels, no proprietary localisation resources" +licence = "MIT OR Apache-2.0" +licence_file = "LICENSE-MIT" +kind = "translation" +usage = "Thai UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs" +sha256 = "a9e20f819001357ea548b3d05ea0a6484a228c3079effdf7d33f437f6207f11f" From 2250841fea28d1549e53ade6dbde23e69cf972d6 Mon Sep 17 00:00:00 2001 From: aiongg Date: Thu, 22 Oct 2026 01:53:24 +0000 Subject: [PATCH 29/33] Integration: #2714 Lao date names and drop the stray Preferences... key DATE_LANGUAGES gains the lo row in the same position as in LANGUAGES, so date_languages_are_the_interface_languages holds; lo.tsv loses a key that matches no English source. --- crates/engine/src/dates.rs | 11 ++++++++++- crates/ui-egui/src/i18n/lo.tsv | 1 - 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/crates/engine/src/dates.rs b/crates/engine/src/dates.rs index 251e3c47d..d3019cc7b 100644 --- a/crates/engine/src/dates.rs +++ b/crates/engine/src/dates.rs @@ -59,7 +59,7 @@ const AR_DAYS: [&str; 7] = ["الأحد", "الاثنين", "الثلاثاء", /// The languages month and weekday names can be written in (Preferences ▸ Date format ▸ Language): /// the interface languages, in the same order and with the same names. -pub static DATE_LANGUAGES: [DateLanguage; 28] = [ +pub static DATE_LANGUAGES: [DateLanguage; 29] = [ DateLanguage { code: "en", name: "English", @@ -501,6 +501,15 @@ pub static DATE_LANGUAGES: [DateLanguage; 28] = [ days: ["duminică", "luni", "marți", "miercuri", "joi", "vineri", "sâmbătă"], days_short: ["dum.", "lun.", "mar.", "mie.", "joi", "vin.", "sâm."], }, + DateLanguage { + code: "lo", + name: "ພາສາລາວ", + months: ["ມັງກອນ", "ກຸມພາ", "ມີນາ", "ເມສາ", "ພຶດສະພາ", "ມິຖຸນາ", "ກໍລະກົດ", "ສິງຫາ", "ກັນຍາ", "ຕຸລາ", "ພະຈິກ", "ທັນວາ"], + months_with_day: None, + months_short: ["ມ.ກ.", "ກ.ພ.", "ມ.ນ.", "ມ.ສ.", "ພ.ພ.", "ມິ.ຖ.", "ກ.ລ.", "ສ.ຫ.", "ກ.ຍ.", "ຕ.ລ.", "ພ.ຈ.", "ທ.ວ."], + days: ["ວັນອາທິດ", "ວັນຈັນ", "ວັນອັງຄານ", "ວັນພຸດ", "ວັນພະຫັດ", "ວັນສຸກ", "ວັນເສົາ"], + days_short: ["ອາທິດ", "ຈັນ", "ອັງຄານ", "ພຸດ", "ພະຫັດ", "ສຸກ", "ເສົາ"], + }, ]; /// The date language for `code` (any case), or `None` when there's none. diff --git a/crates/ui-egui/src/i18n/lo.tsv b/crates/ui-egui/src/i18n/lo.tsv index cc63a32ba..85e6c9413 100644 --- a/crates/ui-egui/src/i18n/lo.tsv +++ b/crates/ui-egui/src/i18n/lo.tsv @@ -22,7 +22,6 @@ View ມຸມມອງ Help ຊ່ວຍເຫຼືອ Preferences ການຕັ້ງຄ່າ - Preferences... ການຕັ້ງຄ່າ... Interface language ພາສາສະແດງຜົນ Interface size ຂະໜາດອິນເຕີເຟສ Auto ({percent}%) ອັດຕະໂນມັດ ({percent}%) From 17bf5e9c93836d4fa3c3435afc23f2a82f4ee2f1 Mon Sep 17 00:00:00 2001 From: aiongg Date: Thu, 22 Oct 2026 01:55:09 +0000 Subject: [PATCH 30/33] Integration: #3603 drop the second Spanish Font entry Main and the PR each added the same Font key; the catalog reports a duplicate. --- crates/ui-egui/src/i18n/es.tsv | 1 - 1 file changed, 1 deletion(-) diff --git a/crates/ui-egui/src/i18n/es.tsv b/crates/ui-egui/src/i18n/es.tsv index f1960046a..ef0750e63 100644 --- a/crates/ui-egui/src/i18n/es.tsv +++ b/crates/ui-egui/src/i18n/es.tsv @@ -2757,7 +2757,6 @@ theme Appearance Aspecto # # Labels and commands the catalogs name on their own. Color Color - Font Fuente Folder Carpeta Comment Comentario Comment and review Comentar y revisar From afee39e640e93602368d7fcb34a0c4c91f68843f Mon Sep 17 00:00:00 2001 From: aiongg Date: Thu, 22 Oct 2026 01:55:14 +0000 Subject: [PATCH 31/33] Integration: English for the keys the new catalogs lack Romanian (47) and Catalan (50) lack keys main added since they were written; their bundled-key coverage tests need every key the other catalogs carry. Albanian lacks 101 UI literals and 4 command labels its coverage tests check. The entries stay English until a translator fills them. --- crates/ui-egui/src/i18n/ca.tsv | 51 ++++++++++++++++ crates/ui-egui/src/i18n/ro.tsv | 48 +++++++++++++++ crates/ui-egui/src/i18n/sq.tsv | 107 +++++++++++++++++++++++++++++++++ 3 files changed, 206 insertions(+) diff --git a/crates/ui-egui/src/i18n/ca.tsv b/crates/ui-egui/src/i18n/ca.tsv index dcaec4d48..97b29be2c 100644 --- a/crates/ui-egui/src/i18n/ca.tsv +++ b/crates/ui-egui/src/i18n/ca.tsv @@ -2679,3 +2679,54 @@ certificate SHA-256 digest Resum SHA-256 “{name}” changed on disk after it was opened or last saved. Saving now replaces that newer version with this one. «{name}» ha canviat al disc després d'obrir-lo o d'haver-lo desat per última vegada. Si ara el deses, aquesta versió substituirà la més recent. @id file.word_count Recompte de paraules… theme Appearance Aspecte +# Untranslated: English text until a translator fills these in. + Zoom — type a percentage and press Enter Zoom — type a percentage and press Enter + Calculation order Calculation order + Fix order Fix order + Move only what must move, so every field calculates after the fields it reads. Move only what must move, so every field calculates after the fields it reads. + Earlier in calculation order Earlier in calculation order + Later in calculation order Later in calculation order + Too early Too early + Reads {name}, which calculates later, so it shows an old value. Reads {name}, which calculates later, so it shows an old value. + Loop Loop + Reads {names}, which read it back. No order can fix a loop: change one of the formulas. Reads {names}, which read it back. No order can fix a loop: change one of the formulas. + Not in order Not in order + Missing from the calculation order saved in the PDF: other PDF viewers may not calculate it. Missing from the calculation order saved in the PDF: other PDF viewers may not calculate it. + Back to Prepare a form Back to Prepare a form + No field in this form calculates its value yet. Give a field a calculation on the Calculate tab of its properties, and it shows here. No field in this form calculates its value yet. Give a field a calculation on the Calculate tab of its properties, and it shows here. + {names} and {last} {names} and {last} + {field} reads no other field {field} reads no other field + {field} reads {fields} {field} reads {fields} + No field reads it No field reads it + The order saved in the PDF needs tidying The order saved in the PDF needs tidying + Moves only what must move Moves only what must move + Every field calculates after the fields it reads. Every field calculates after the fields it reads. + Every field outside a loop calculates after the fields it reads. Every field outside a loop calculates after the fields it reads. + {field} reads its own value {field} reads its own value + {fields} read each other {fields} read each other + No order can fix a loop. Change one of the formulas. No order can fix a loop. Change one of the formulas. + Edit {field}'s formula Edit {field}'s formula + Order · top calculates first Order · top calculates first + Script Script + Links on page Links on page + Show on the page which fields each field reads Show on the page which fields each field reads + Drag a field to move it, or select it and press {up} or {down}. Drag a field to move it, or select it and press {up} or {down}. + the name is not a plain file name the name is not a plain file name + Set calculation order Set calculation order +@plural {n} calculation now uses the new name.|{n} calculations now use the new name. {n} calculation now uses the new name.|{n} calculations now use the new name. +@plural The calculation order has {n} entry that calculates nothing. Fix order removes it.|The calculation order has {n} entries that calculate nothing. Fix order removes them. The calculation order has {n} entry that calculates nothing. Fix order removes it.|The calculation order has {n} entries that calculate nothing. Fix order removes them. +@plural {fields} reads it|{fields} read it {fields} reads it|{fields} read it +@plural {n} field shows an old value|{n} fields show old values {n} field shows an old value|{n} fields show old values +@plural {field} calculates before {fields}, which it reads.|{field} calculates before {fields}, which it reads. {field} calculates before {fields}, which it reads.|{field} calculates before {fields}, which it reads. +@plural {n} more field calculates too early.|{n} more fields calculate too early. {n} more field calculates too early.|{n} more fields calculate too early. +@plural {fields} is missing from the order saved in the PDF, so other PDF viewers may not calculate it.|{fields} are missing from the order saved in the PDF, so other PDF viewers may not calculate them. {fields} is missing from the order saved in the PDF, so other PDF viewers may not calculate it.|{fields} are missing from the order saved in the PDF, so other PDF viewers may not calculate them. + You are viewing the signed version of “{from}” (revision {rev}). It is a snapshot: changes here won't affect the original. You are viewing the signed version of “{from}” (revision {rev}). It is a snapshot: changes here won't affect the original. + You are viewing revision {rev} of “{from}”. It is a snapshot: changes here won't affect the original. You are viewing revision {rev} of “{from}”. It is a snapshot: changes here won't affect the original. + Bulleted list Bulleted list + Numbered list Numbered list + Alignment Alignment + Superscript Superscript + Subscript Subscript + Paragraph spacing Paragraph spacing + Less Less + Other options Other options diff --git a/crates/ui-egui/src/i18n/ro.tsv b/crates/ui-egui/src/i18n/ro.tsv index 7e65b3864..eaea38c57 100644 --- a/crates/ui-egui/src/i18n/ro.tsv +++ b/crates/ui-egui/src/i18n/ro.tsv @@ -2682,3 +2682,51 @@ theme Appearance Aspect You are viewing revision {rev} of “{from}”. It is a snapshot: changes here won't affect the original. Vizualizați revizia {rev} a „{from}”. Este o copie instantanee: modificările făcute aici nu afectează originalul. You are viewing the signed version of “{from}” (revision {rev}). It is a snapshot: changes here won't affect the original. Vizualizați versiunea semnată a „{from}” (revizia {rev}). Este o copie instantanee: modificările făcute aici nu afectează originalul. the name is not a plain file name numele nu este un nume simplu de fișier +# Untranslated: English text until a translator fills these in. + Zoom — type a percentage and press Enter Zoom — type a percentage and press Enter + Calculation order Calculation order + Fix order Fix order + Move only what must move, so every field calculates after the fields it reads. Move only what must move, so every field calculates after the fields it reads. + Earlier in calculation order Earlier in calculation order + Later in calculation order Later in calculation order + Too early Too early + Reads {name}, which calculates later, so it shows an old value. Reads {name}, which calculates later, so it shows an old value. + Loop Loop + Reads {names}, which read it back. No order can fix a loop: change one of the formulas. Reads {names}, which read it back. No order can fix a loop: change one of the formulas. + Not in order Not in order + Missing from the calculation order saved in the PDF: other PDF viewers may not calculate it. Missing from the calculation order saved in the PDF: other PDF viewers may not calculate it. + Back to Prepare a form Back to Prepare a form + No field in this form calculates its value yet. Give a field a calculation on the Calculate tab of its properties, and it shows here. No field in this form calculates its value yet. Give a field a calculation on the Calculate tab of its properties, and it shows here. + {names} and {last} {names} and {last} + {field} reads no other field {field} reads no other field + {field} reads {fields} {field} reads {fields} + No field reads it No field reads it + The order saved in the PDF needs tidying The order saved in the PDF needs tidying + Moves only what must move Moves only what must move + Every field calculates after the fields it reads. Every field calculates after the fields it reads. + Every field outside a loop calculates after the fields it reads. Every field outside a loop calculates after the fields it reads. + {field} reads its own value {field} reads its own value + {fields} read each other {fields} read each other + No order can fix a loop. Change one of the formulas. No order can fix a loop. Change one of the formulas. + Edit {field}'s formula Edit {field}'s formula + Order · top calculates first Order · top calculates first + Script Script + Links on page Links on page + Show on the page which fields each field reads Show on the page which fields each field reads + Drag a field to move it, or select it and press {up} or {down}. Drag a field to move it, or select it and press {up} or {down}. + Set calculation order Set calculation order +@plural {n} calculation now uses the new name.|{n} calculations now use the new name. {n} calculation now uses the new name.|{n} calculations now use the new name.|{n} calculations now use the new name. +@plural The calculation order has {n} entry that calculates nothing. Fix order removes it.|The calculation order has {n} entries that calculate nothing. Fix order removes them. The calculation order has {n} entry that calculates nothing. Fix order removes it.|The calculation order has {n} entries that calculate nothing. Fix order removes them.|The calculation order has {n} entries that calculate nothing. Fix order removes them. +@plural {fields} reads it|{fields} read it {fields} reads it|{fields} read it|{fields} read it +@plural {n} field shows an old value|{n} fields show old values {n} field shows an old value|{n} fields show old values|{n} fields show old values +@plural {field} calculates before {fields}, which it reads.|{field} calculates before {fields}, which it reads. {field} calculates before {fields}, which it reads.|{field} calculates before {fields}, which it reads.|{field} calculates before {fields}, which it reads. +@plural {n} more field calculates too early.|{n} more fields calculate too early. {n} more field calculates too early.|{n} more fields calculate too early.|{n} more fields calculate too early. +@plural {fields} is missing from the order saved in the PDF, so other PDF viewers may not calculate it.|{fields} are missing from the order saved in the PDF, so other PDF viewers may not calculate them. {fields} is missing from the order saved in the PDF, so other PDF viewers may not calculate it.|{fields} are missing from the order saved in the PDF, so other PDF viewers may not calculate them.|{fields} are missing from the order saved in the PDF, so other PDF viewers may not calculate them. + Bulleted list Bulleted list + Numbered list Numbered list + Alignment Alignment + Superscript Superscript + Subscript Subscript + Paragraph spacing Paragraph spacing + Less Less + Other options Other options diff --git a/crates/ui-egui/src/i18n/sq.tsv b/crates/ui-egui/src/i18n/sq.tsv index cbaf9b8e5..b32fb3229 100644 --- a/crates/ui-egui/src/i18n/sq.tsv +++ b/crates/ui-egui/src/i18n/sq.tsv @@ -2352,3 +2352,110 @@ animation effects Off Joaktiv Move tag later Zhvendose etiketën më vonë Remove "{name}" from this list? The file itself is not deleted. Të hiqet «{name}» nga kjo listë? Vetë skedari nuk fshihet. Previous tab Skeda e mëparshme +# Untranslated: English text until a translator fills these in. + Alignment Alignment + Back to Prepare a form Back to Prepare a form + Bulleted list Bulleted list + Characters Characters + Characters without spaces Characters without spaces + Collapse all pages Collapse all pages + Counting words… {n} pages read Counting words… {n} pages read + Create Link… Create Link… + Crop Image Crop Image + Current page only Current page only + Cut Image Cut Image + Cuts each page to its printed area, turns it upright and fits it to the sheet without stretching. One label per sheet. Cuts each page to its printed area, turns it upright and fits it to the sheet without stretching. One label per sheet. + Drag a field to move it, or select it and press {up} or {down}. Drag a field to move it, or select it and press {up} or {down}. + Earlier in calculation order Earlier in calculation order + Edit {field}'s formula Edit {field}'s formula + Every field calculates after the fields it reads. Every field calculates after the fields it reads. + Every field outside a loop calculates after the fields it reads. Every field outside a loop calculates after the fields it reads. + Exclude image/OCR text Exclude image/OCR text + Exclude tagged code blocks Exclude tagged code blocks + Exclude tagged tables Exclude tagged tables + Exclusions use PDF tags. Untagged tables and code remain included. Image exclusion also removes invisible text. Exclusions use PDF tags. Untagged tables and code remain included. Image exclusion also removes invisible text. + Expand all pages Expand all pages + Fill colour: Fill colour: + Fix order Fix order + Font Font + Font size Font size + Found {n} untagged content problems. Found {n} untagged content problems. + Full Screen Full Screen + Hide hover previews for highlights without comment text Hide hover previews for highlights without comment text + Later in calculation order Later in calculation order + Less Less + Links on page Links on page + Loop Loop + Make Properties Default Make Properties Default + Make properties default Make properties default + Mark as artifact Mark as artifact + Merge image fragments Merge image fragments + Missing from the calculation order saved in the PDF: other PDF viewers may not calculate it. Missing from the calculation order saved in the PDF: other PDF viewers may not calculate it. + Mobile Mobile + Move only what must move, so every field calculates after the fields it reads. Move only what must move, so every field calculates after the fields it reads. + Moves only what must move Moves only what must move + New file only New file only + New file: {name} New file: {name} + No field reads it No field reads it + No order can fix a loop. Change one of the formulas. No order can fix a loop. Change one of the formulas. + No printers were found. Check that the printer is installed and the print spooler is running, then open Print again. No printers were found. Check that the printer is installed and the print spooler is running, then open Print again. + No untagged content was found. No untagged content was found. + Not in order Not in order + Not now Not now + Numbered list Numbered list + Old file: {name} Old file: {name} + Opacity: Opacity: + Open in Full Screen mode? Open in Full Screen mode? + Optimizing… merging image fragments Optimizing… merging image fragments + Order · top calculates first Order · top calculates first + Other options Other options + Outline colour: Outline colour: + Page properties Page properties + Pages counted Pages counted + Pages selected Pages selected + Paragraph spacing Paragraph spacing + Print as image Print as image + Reads {names}, which read it back. No order can fix a loop: change one of the formulas. Reads {names}, which read it back. No order can fix a loop: change one of the formulas. + Reads {name}, which calculates later, so it shows an old value. Reads {name}, which calculates later, so it shows an old value. + Recognize Text… Recognize Text… + Redact Image Redact Image + Redaction mark appearance Redaction mark appearance + Remove Crop Remove Crop + Remove this leaf tag from reading order and mark its direct content as an artifact Remove this leaf tag from reading order and mark its direct content as an artifact + Resolution: Resolution: + Save anyway Save anyway + Save over the changed file? Save over the changed file? + Script Script + Scroll speed (mouse wheel and arrow keys) Scroll speed (mouse wheel and arrow keys) + Sending sheet {s} of {n} to {printer}… Sending sheet {s} of {n} to {printer}… + Show on the page which fields each field reads Show on the page which fields each field reads + Shown while the pointer is over a mark. Shown while the pointer is over a mark. + Side by side Side by side + Some content could not be classified safely and was kept in the count. Some content could not be classified safely and was kept in the count. + Some pages contain no countable text. Scanned images need OCR first. Some pages contain no countable text. Scanned images need OCR first. + Standard Standard + Subscript Subscript + Superscript Superscript + The labels are in English: the signature's font can't draw them in this language. The labels are in English: the signature's font can't draw them in this language. + The order saved in the PDF needs tidying The order saved in the PDF needs tidying + Too early Too early + Turn upside down (180°) Turn upside down (180°) + What takes up the space in this file, by kind of content. What takes up the space in this file, by kind of content. + Word count Word count + Word counting stopped unexpectedly. Word counting stopped unexpectedly. + Words Words + You are viewing revision {rev} of “{from}”. It is a snapshot: changes here won't affect the original. You are viewing revision {rev} of “{from}”. It is a snapshot: changes here won't affect the original. + You are viewing the signed version of “{from}” (revision {rev}). It is a snapshot: changes here won't affect the original. You are viewing the signed version of “{from}” (revision {rev}). It is a snapshot: changes here won't affect the original. + Zoom — type a percentage and press Enter Zoom — type a percentage and press Enter + the name is not a plain file name the name is not a plain file name + {fields} read each other {fields} read each other + {field} reads its own value {field} reads its own value + {field} reads no other field {field} reads no other field + {field} reads {fields} {field} reads {fields} + {names} and {last} {names} and {last} + “{name}” changed on disk after it was opened or last saved. Saving now replaces that newer version with this one. “{name}” changed on disk after it was opened or last saved. Saving now replaces that newer version with this one. +# Untranslated: English text until a translator fills these in. + Calculation order Calculation order + Find untagged content Find untagged content + Tag form fields Tag form fields + Word count… Word count… From 86739c11ae0653505f725ee3cf438ae3b6c91f4e Mon Sep 17 00:00:00 2001 From: aiongg Date: Thu, 22 Oct 2026 01:56:11 +0000 Subject: [PATCH 32/33] Integration: ATTRIBUTION hashes --- ATTRIBUTION.md | 8 ++++---- ATTRIBUTION.toml | 22 +++++++++++----------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/ATTRIBUTION.md b/ATTRIBUTION.md index 63b855037..9af81b00e 100644 --- a/ATTRIBUTION.md +++ b/ATTRIBUTION.md @@ -4,7 +4,7 @@ Every asset PdfCraft includes, bundles or uses to build its published material, with its author, source and licence. The policy is in [AGENTS.md](AGENTS.md) §1. The machine-readable list, with SHA-256 hashes, is [ATTRIBUTION.toml](ATTRIBUTION.toml). Licence texts are kept beside the assets and summarised in [NOTICE](NOTICE). -## In this repository (276) +## In this repository (283) | Asset | Title | Author | Licence | Source | Used for | |---|---|---|---|---|---| @@ -16,6 +16,7 @@ Every asset PdfCraft includes, bundles or uses to build its published material, | `crates/ui-egui/src/i18n/es.tsv` | Spanish interface translation catalog | PdfCraft contributors | MIT OR Apache-2.0 | Contributor-original: clean-room translations of PdfCraft's English UI labels, no proprietary localisation resources; the 2026-10-20 coverage additions are AI-assisted and not separately native-reviewed | Spanish UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs | | `crates/ui-egui/src/i18n/fr.tsv` | French interface translation catalog | PdfCraft contributors | MIT OR Apache-2.0 | Contributor-original: clean-room translations of PdfCraft's English UI labels, no proprietary localisation resources | French UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs | | `crates/ui-egui/src/i18n/de.tsv` | German interface translation catalog | PdfCraft contributors | MIT OR Apache-2.0 | Contributor-original: clean-room translations of PdfCraft's English UI labels, no proprietary localisation resources | German UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs | +| `crates/ui-egui/src/i18n/lo.tsv` | Lao interface translation catalog | @bounkirdni-2025 | MIT OR Apache-2.0 | Contributor-original: clean-room translations of PdfCraft English UI labels, no proprietary localisation resources | Lao UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs | | `crates/ui-egui/src/i18n/te.tsv` | Telugu interface translation catalog | PdfCraft contributors | MIT OR Apache-2.0 | Contributor-original: clean-room translations of PdfCraft's English UI labels, no proprietary localisation resources | Telugu UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs | | `crates/ui-egui/src/i18n/it.tsv` | Italian interface translation catalog | PdfCraft contributors | MIT OR Apache-2.0 | Contributor-original: clean-room translations of PdfCraft's English UI labels, no proprietary localisation resources | Italian UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs | | `crates/ui-egui/src/i18n/pl.tsv` | Polish interface translation catalog | PdfCraft contributors | MIT OR Apache-2.0 | Contributor-original: clean-room translations of PdfCraft's English UI labels, no proprietary localisation resources | Polish UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs | @@ -29,10 +30,8 @@ Every asset PdfCraft includes, bundles or uses to build its published material, | `crates/ui-egui/src/i18n/ckb.tsv` | Central Kurdish (Sorani) interface translation catalog | PdfCraft contributors | MIT OR Apache-2.0 | Contributor-original: clean-room translations of PdfCraft's English UI labels, no proprietary localisation resources | Central Kurdish UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs | | `crates/ui-egui/src/i18n/tr.tsv` | Turkish interface translation catalog | PdfCraft contributors | MIT OR Apache-2.0 | Contributor-original: clean-room translations of PdfCraft's English UI labels, no proprietary localisation resources | Turkish UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs | | `crates/ui-egui/src/i18n/lt.tsv` | Lithuanian interface translation catalog | PdfCraft contributors | MIT OR Apache-2.0 | Contributor-original: clean-room translations of PdfCraft's English UI labels and user-facing messages; original catalog reviewed by a native Lithuanian-speaking contributor; 2026-10-15 coverage additions are AI-assisted and not separately native-reviewed | Lithuanian UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs | -| `crates/ui-egui/src/i18n/fi.tsv` | Finnish interface translation catalog | PdfCraft contributors | MIT OR Apache-2.0 | Contributor-original: AI-assisted (Claude Code) clean-room translations of PdfCraft's English UI labels and user-facing messages; not yet proofread by a native Finnish speaker | Finnish UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs | | `crates/ui-egui/src/i18n/ro.tsv` | Romanian interface translation catalog | PdfCraft contributors | MIT OR Apache-2.0 | Contributor-original: clean-room translations of PdfCraft's English UI labels and user-facing messages; AI-assisted and not yet reviewed line by line by a native Romanian speaker | Romanian UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs | -| `crates/ui-egui/src/i18n/vi.tsv` | Vietnamese interface translation catalog | PdfCraft contributors | MIT OR Apache-2.0 | Contributor-original: clean-room translations of PdfCraft's English UI labels; PhotoCraft and VectorCraft Vietnamese catalogs used only as translation memory when English source and semantic context matched; original catalog reviewed by a native Vietnamese-speaking contributor; 2026-10-15 coverage additions are AI-assisted and not separately native-reviewed | Vietnamese UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs | -| `crates/ui-egui/src/i18n/lo.tsv` | Lao interface translation catalog | @bounkirdni-2025 | MIT OR Apache-2.0 | Contributor-original: clean-room translations of PdfCraft English UI labels, no proprietary localisation resources | Lao UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs | +| `crates/ui-egui/src/i18n/fi.tsv` | Finnish interface translation catalog | PdfCraft contributors | MIT OR Apache-2.0 | Contributor-original: AI-assisted (Claude Code) clean-room translations of PdfCraft's English UI labels and user-facing messages; not yet proofread by a native Finnish speaker | Finnish UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs | | `assets/icons/accessibility.svg` | Lucide icon "accessibility" | Lucide Contributors (portions Cole Bemis, Feather) | ISC | https://github.com/lucide-icons/lucide (npm lucide-static 1.49.0, icons/accessibility.svg) | UI icon, embedded via crates/ui-egui/src/icon_data.rs | | `assets/icons/align-left.svg` | Lucide icon "align-left" | Lucide Contributors (portions Cole Bemis, Feather) | ISC | https://github.com/lucide-icons/lucide (npm lucide-static 1.49.0, icons/align-left.svg) | UI icon, embedded via crates/ui-egui/src/icon_data.rs | | `assets/icons/align-center.svg` | Lucide icon "align-center" | Lucide Contributors (portions Cole Bemis, Feather) | ISC | https://github.com/lucide-icons/lucide (npm lucide-static 1.49.0, icons/align-center.svg) | UI icon, embedded via crates/ui-egui/src/icon_data.rs | @@ -290,6 +289,7 @@ Every asset PdfCraft includes, bundles or uses to build its published material, | `assets/icons/pilcrow.svg` | Lucide icon "pilcrow" | Lucide Contributors (portions Cole Bemis, Feather) | ISC | https://github.com/lucide-icons/lucide (npm lucide-static 1.49.0, icons/pilcrow.svg) | UI icon, embedded via crates/ui-egui/src/icon_data.rs | | `assets/icons/move-horizontal.svg` | Lucide icon "move-horizontal" | Lucide Contributors (portions Cole Bemis, Feather) | ISC | https://github.com/lucide-icons/lucide (npm lucide-static 1.49.0, icons/move-horizontal.svg) | UI icon, embedded via crates/ui-egui/src/icon_data.rs | | `crates/ui-egui/src/i18n/sq.tsv` | Albanian interface translation catalog | PdfCraft contributors | MIT OR Apache-2.0 | Contributor-original: clean-room translations of PdfCraft's English UI labels, no proprietary localisation resources | Albanian UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs | +| `crates/ui-egui/src/i18n/th.tsv` | Thai interface translation catalog | PdfCraft contributors | MIT OR Apache-2.0 | Contributor-original: clean-room translations of PdfCraft's English UI labels, no proprietary localisation resources | Thai UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs | | `crates/ui-egui/src/i18n/ca.tsv` | Catalan interface translation catalog | PdfCraft contributors | MIT OR Apache-2.0 | Contributor-original: clean-room translations of PdfCraft's English UI labels, written from their meaning; no proprietary localisation resources | Catalan UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs | ## Compiled in through dependencies (6) diff --git a/ATTRIBUTION.toml b/ATTRIBUTION.toml index 0441213a6..2dd7d1e08 100644 --- a/ATTRIBUTION.toml +++ b/ATTRIBUTION.toml @@ -52,7 +52,7 @@ licence = "MIT OR Apache-2.0" licence_file = "LICENSE-MIT" kind = "translation" usage = "Czech UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs" -sha256 = "cb4c53d7b938a5ec8eb3a001a6c385c60b84f9f1ac36240c490d164046757c2a" +sha256 = "7cfb4b37fafefea8e56abf6bb0b718efeea5bbe278756692d5f98d637fa96121" [[asset]] path = "crates/ui-egui/src/i18n/pt-br.tsv" @@ -63,7 +63,7 @@ licence = "MIT OR Apache-2.0" licence_file = "LICENSE-MIT" kind = "translation" usage = "Brazilian Portuguese UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs" -sha256 = "af4b798c568cb1bb44ef23700e2d69c1e91c7cbb81e6fb565079a797cf02c878" +sha256 = "5024e9451824ac20eb6e9b565f3c95b70f76c2a228e29abce84dff196383ca81" [[asset]] path = "crates/ui-egui/src/i18n/es.tsv" @@ -74,7 +74,7 @@ licence = "MIT OR Apache-2.0" licence_file = "LICENSE-MIT" kind = "translation" usage = "Spanish UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs" -sha256 = "8fe572236493148b23270ef5766ad1c7d65a58b293757f34772d01a44a2df026" +sha256 = "7f336d69bac2019d29db9f40f846ed9762c8fdf2f4755fc5259b0c6fa5d96d0d" [[asset]] path = "crates/ui-egui/src/i18n/fr.tsv" @@ -85,7 +85,7 @@ licence = "MIT OR Apache-2.0" licence_file = "LICENSE-MIT" kind = "translation" usage = "French UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs" -sha256 = "6af18efaa6fc8d7d9e813b4411380f1f47879c3e342d800540abec5cd6cb8f81" +sha256 = "4a27f4b8a53fe1d2eb854fe5a8bdccbdbdfb11ceb6cec269984e499d357b10b8" [[asset]] path = "crates/ui-egui/src/i18n/de.tsv" @@ -107,7 +107,7 @@ licence = "MIT OR Apache-2.0" licence_file = "LICENSE-MIT" kind = "translation" usage = "Lao UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs" -sha256 = "2dd835aeee0199f3ce9c9c396500f4466fec61bc0c19b9a09e33698a6cd6b8eb" +sha256 = "e01dc586811c5eeedc57b502e457971bc1916506e88a902d05014fcf4f65b180" [[asset]] path = "crates/ui-egui/src/i18n/te.tsv" @@ -129,7 +129,7 @@ licence = "MIT OR Apache-2.0" licence_file = "LICENSE-MIT" kind = "translation" usage = "Italian UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs" -sha256 = "f7765338632fee507a907cbabc52f72d57d903839f8a4d48b34e2cdcbb28a3bc" +sha256 = "4f0e83a4ccc281e8a0af4c120b1a6d97d143d6a3e2a2eb130960fe7d710d411b" [[asset]] path = "crates/ui-egui/src/i18n/pl.tsv" @@ -140,7 +140,7 @@ licence = "MIT OR Apache-2.0" licence_file = "LICENSE-MIT" kind = "translation" usage = "Polish UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs" -sha256 = "62517afff28af384a42aa377b86582ecddfe8dc8453f06c481246e96184add59" +sha256 = "c81dace4db1f3d7c97d4bd53e8a5e1dc61d8bf1924bddb4d0b835d5942cd3965" [[asset]] path = "crates/ui-egui/src/i18n/ru.tsv" @@ -261,7 +261,7 @@ licence = "MIT OR Apache-2.0" licence_file = "LICENSE-MIT" kind = "translation" usage = "Romanian UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs" -sha256 = "eb0176eed7f7095a0c27aabea56edf03e6b02035118c512e3c87311520b2d240" +sha256 = "19d949a60f8ade450b8e1ef594aa5f6a6c0e95f7dc6538b338680d38ac599b42" [[asset]] @@ -273,7 +273,7 @@ licence = "MIT OR Apache-2.0" licence_file = "LICENSE-MIT" kind = "translation" usage = "Finnish UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs" -sha256 = "01e5422ceb5fb7dd8bd23d6da93ce5210357589ceec6e4cf1725c56da13d1a98" +sha256 = "15f86d82e5ac6f65f8cf3ca50ba2b4116cc7f5c8e70f9ad5d9e48ed4a9082eb0" [[asset]] path = "assets/icons/accessibility.svg" @@ -3474,7 +3474,7 @@ licence = "MIT OR Apache-2.0" licence_file = "LICENSE-MIT" kind = "translation" usage = "Albanian UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs" -sha256 = "ca7e318035c785ef0e06e77aea1d81335eab243be6619371ed9cf751085789aa" +sha256 = "c7318e459d44360a1efbc11aa5590b16e4d4e4b4da6111ec543a85b3b748ec17" [[asset]] path = "crates/ui-egui/src/i18n/th.tsv" @@ -3496,4 +3496,4 @@ licence = "MIT OR Apache-2.0" licence_file = "LICENSE-MIT" kind = "translation" usage = "Catalan UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs" -sha256 = "0988fff524d2b76e21a977d078e92da67ea927c9422ac5b67a9ac476c0f441d5" +sha256 = "d370a02b9cdfa693f96fa3a318ff8973c2ceec1b088b6e7879e38a7c03e4ec59" From 40949476c7fd1cd06b40a85b28128a084a1e327d Mon Sep 17 00:00:00 2001 From: aiongg Date: Thu, 22 Oct 2026 01:59:39 +0000 Subject: [PATCH 33/33] Integration: cargo fmt --- crates/ui-egui/src/i18n/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/ui-egui/src/i18n/mod.rs b/crates/ui-egui/src/i18n/mod.rs index e8bb1b21e..d54fd7a9c 100644 --- a/crates/ui-egui/src/i18n/mod.rs +++ b/crates/ui-egui/src/i18n/mod.rs @@ -239,7 +239,7 @@ pub static LANGUAGES: [LangInfo; 30] = [ // Romanian; every `ro-*` locale (`ro-RO`, `ro_RO.UTF-8`, `ro-MD`) resolves here. Three plural forms (one, few, other). LangInfo { code: "ro", name: "Română", source: include_str!("ro.tsv"), plural: plural_ro, rtl: false, catalog: OnceLock::new() }, // Lao; every `lo-*` locale (`lo-LA`, `lo_LA.UTF-8` ...) resolves here. - LangInfo { code: "lo", name: "ພາສາລາວ", source: include_str!("lo.tsv"), plural: plural_none, rtl: false, catalog: OnceLock::new() }, + LangInfo { code: "lo", name: "ພາສາລາວ", source: include_str!("lo.tsv"), plural: plural_none, rtl: false, catalog: OnceLock::new() }, ]; impl LangInfo {