feat: in-place save (File System Access), image paste, print wiring, web capture

The last high-severity web gap plus a small integration bundle.

In-place save: with the File System Access API (Chromium/Edge), Save
now works like desktop. Plain Save on a tab with a retained handle
writes straight through — no picker, no download, no "(1)" copies.
First save or format change opens showSaveFilePicker AT the confirm
gesture (the worker serialization that follows can outlast the
transient-activation window; retained handles need no activation to
write). Picker cancel cancels the save like desktop; picker or write
failure falls back to the legacy download with a note; Firefox/Safari
keep the download flow untouched (feature-detected). Handles are
keyed by tab id in a thread-local registry (Message must be Send —
JsValue cannot ride in messages or App state); closing a tab drops
its handle; Save As re-picks. Dirty clears only on successful
persistence, same race guard as before.

Image paste: Ctrl+V of a screenshot inserts it as an image reference
— the clipboard reader falls back to image/* items when neither the
entity clipboard nor text has anything (precedence preserved), the
bytes enter the image source registry as pasted-<timestamp>.<ext>,
and attach reuses the IMAGE command's model-creation path verbatim.

Browser print: beforeprint snapshots the WebGL canvas into a print-
only <img> (the capture_canvas technique), so the browser's own print
menu produces the drawing instead of a blank page.

Automation capture on web: the capture op no longer calls the
synchronous GPU-map screenshot (dead on wasm); main's frame-parked
capture waits for a presented frame and reads via capture_canvas — the
same workaround the save-thumbnail path uses — delivering the PNG as a
download.

(cherry picked from commit 6e89b36d)

Ported onto main (#1717 review): the web capture rides main's existing
frame-parked capture (one ControlCaptureFrame path, ignoring the timer
tick on wasm) instead of a second parked-capture state; closing a tab
drops its file handle inside main's on_tab_close.
This commit is contained in:
Afonsop authored and Hakan Seven committed 2026-10-12 12:02:05 +03:00
1 parent 0459f20129
commit 835e8d469f
33 files changed
+1084 -29

No files matched your search

+4
View File
@@ -168,6 +168,8 @@ modal =
.those-objects = تلك الكائنات
clipboard =
.pasted-image = تم لصق الصورة "{ $name }": { $width }×{ $height } px
.image-unsupported = تعذّر فك ترميز الصورة الملصقة "{ $name }".
.no-supported-content = لا تحتوي الحافظة على نص أو كائنات رسم مدعومة.
.unavailable = حافظة النظام غير متاحة.
.occupied = حافظة النظام قيد الاستخدام حاليًا. حاول مرة أخرى.
@@ -2412,6 +2414,8 @@ command =
.tcount-placement-overwrite-prefix-suffix-overw = TCOUNT الموضع [استبدال/بادئة/لاحقة] <استبدال>:
file =
.in-place-save-failed-downloaded = فشل الحفظ في الموقع (__ocs_fmt_0__)؛ تم تنزيل نسخة
.save-picker-failed-downloading = فشل اختيار وجهة الحفظ: __ocs_fmt_0__؛ يتم تنزيل نسخة
.restore-all = استعادة الكل
.restoring-drawing-s = جارٍ استعادة __ocs_fmt_0__ رسم…
.session-had-open-drawing-s = كانت الجلسة تضم __ocs_fmt_0__ رسمًا مفتوحًا.
+4
View File
@@ -168,6 +168,8 @@ modal =
.those-objects = тези обекти
clipboard =
.pasted-image = Вставено изображение "{ $name }": { $width }×{ $height } px
.image-unsupported = Вставеното изображение "{ $name }" не може да бъде декодирано.
.no-supported-content = Клипбордът не съдържа поддържан текст или чертожни обекти.
.unavailable = Системният клипборд не е наличен.
.occupied = Системният клипборд в момента се използва. Опитай отново.
@@ -2399,6 +2401,8 @@ command =
.tcount-placement-overwrite-prefix-suffix-overw = TCOUNT поставяне [Замяна/Префикс/Суфикс] <Замяна>:
file =
.in-place-save-failed-downloaded = Записът на място се провали (__ocs_fmt_0__); изтеглено е копие
.save-picker-failed-downloading = Изборът на място за запис се провали: __ocs_fmt_0__; изтегля се копие
.restore-all = Възстанови всички
.restoring-drawing-s = Възстановяване на __ocs_fmt_0__ чертеж(а)…
.session-had-open-drawing-s = Сесията е имала __ocs_fmt_0__ отворени чертежа.
+4
View File
@@ -168,6 +168,8 @@ modal =
.those-objects = dané objekty
clipboard =
.pasted-image = Vložen obrázek "{ $name }": { $width }×{ $height } px
.image-unsupported = Vložený obrázek "{ $name }" se nepodařilo dekódovat.
.no-supported-content = Schránka neobsahuje podporovaný text ani objekty výkresu.
.unavailable = Systémová schránka není dostupná.
.occupied = Systémová schránka se právě používá. Zkuste to znovu.
@@ -2399,6 +2401,8 @@ command =
.tcount-placement-overwrite-prefix-suffix-overw = Umístění TCOUNT [přepsat/předpona/přípona] <Overwrite>:
file =
.in-place-save-failed-downloaded = Uložení na místo selhalo (__ocs_fmt_0__); kopie byla stažena
.save-picker-failed-downloading = Výběr cíle uložení selhal: __ocs_fmt_0__; stahuje se kopie
.restore-all = Obnovit vše
.restoring-drawing-s = Obnovování __ocs_fmt_0__ výkres(ů)…
.session-had-open-drawing-s = Relace měla otevřeno __ocs_fmt_0__ výkres(ů).
+4
View File
@@ -168,6 +168,8 @@ modal =
.those-objects = diese Objekte
clipboard =
.pasted-image = Bild "{ $name }" eingefügt: { $width }×{ $height } px
.image-unsupported = Das eingefügte Bild "{ $name }" konnte nicht dekodiert werden.
.no-supported-content = Die Zwischenablage enthält keinen unterstützten Text und keine Zeichnungsobjekte.
.unavailable = Die Systemzwischenablage ist nicht verfügbar.
.occupied = Die Systemzwischenablage wird gerade verwendet. Versuchen Sie es erneut.
@@ -2400,6 +2402,8 @@ command =
.tcount-placement-overwrite-prefix-suffix-overw = TCOUNT Platzierung [Überschreiben/Präfix/Suffix] <Überschreiben>:
file =
.in-place-save-failed-downloaded = Direktes Speichern fehlgeschlagen (__ocs_fmt_0__); eine Kopie wurde heruntergeladen
.save-picker-failed-downloading = Speicherziel-Auswahl fehlgeschlagen: __ocs_fmt_0__; eine Kopie wird heruntergeladen
.restore-all = Alle wiederherstellen
.restoring-drawing-s = __ocs_fmt_0__ Zeichnung(en) werden wiederhergestellt…
.session-had-open-drawing-s = Die Sitzung hatte __ocs_fmt_0__ geöffnete Zeichnung(en).
+4
View File
@@ -168,6 +168,8 @@ modal =
.those-objects = αυτά τα αντικείμενα
clipboard =
.pasted-image = Επικολλήθηκε η εικόνα "{ $name }": { $width }×{ $height } px
.image-unsupported = Δεν ήταν δυνατή η αποκωδικοποίηση της επικολλημένης εικόνας "{ $name }".
.no-supported-content = Το πρόχειρο δεν περιέχει υποστηριζόμενο κείμενο ή αντικείμενα σχεδίου.
.unavailable = Το πρόχειρο του συστήματος δεν είναι διαθέσιμο.
.occupied = Το πρόχειρο του συστήματος χρησιμοποιείται αυτή τη στιγμή. Δοκιμάστε ξανά.
@@ -2399,6 +2401,8 @@ command =
.tcount-placement-overwrite-prefix-suffix-overw = TCOUNT τοποθέτηση [Αντικατάσταση/Πρόθεμα/Κατάληξη] <Αντικατάσταση>:
file =
.in-place-save-failed-downloaded = Απέτυχε η αποθήκευση επί τόπου (__ocs_fmt_0__)· λήφθηκε αντίγραφο
.save-picker-failed-downloading = Απέτυχε η επιλογή προορισμού αποθήκευσης: __ocs_fmt_0__· γίνεται λήψη αντιγράφου
.restore-all = Επαναφορά όλων
.restoring-drawing-s = Επαναφορά __ocs_fmt_0__ σχέδιο(α)…
.session-had-open-drawing-s = Η συνεδρία είχε __ocs_fmt_0__ ανοιχτά σχέδια.
+4
View File
@@ -168,6 +168,8 @@ modal =
.those-objects = those objects
clipboard =
.pasted-image = Pasted image "{ $name }": { $width }×{ $height } px
.image-unsupported = The pasted image "{ $name }" could not be decoded.
.no-supported-content = Clipboard does not contain supported text or drawing objects.
.unavailable = System clipboard is unavailable.
.occupied = System clipboard is currently in use. Try again.
@@ -2403,6 +2405,8 @@ command =
.tcount-placement-overwrite-prefix-suffix-overw = TCOUNT placement [Overwrite/Prefix/Suffix] <Overwrite>:
file =
.in-place-save-failed-downloaded = In-place save failed (__ocs_fmt_0__); a copy was downloaded instead
.save-picker-failed-downloading = Save destination picker failed: __ocs_fmt_0__; downloading a copy instead
.restore-all = Restore all
.restoring-drawing-s = Restoring __ocs_fmt_0__ drawing(s)…
.session-had-open-drawing-s = Session had __ocs_fmt_0__ open drawing(s).
+4
View File
@@ -168,6 +168,8 @@ modal =
.those-objects = esos objetos
clipboard =
.pasted-image = Imagen "{ $name }" pegada: { $width }×{ $height } px
.image-unsupported = No se pudo decodificar la imagen pegada "{ $name }".
.no-supported-content = El portapapeles no contiene texto ni objetos de dibujo compatibles.
.unavailable = El portapapeles del sistema no está disponible.
.occupied = El portapapeles del sistema está en uso. Inténtelo de nuevo.
@@ -2400,6 +2402,8 @@ command =
.tcount-placement-overwrite-prefix-suffix-overw = TCOUNT colocación [Sobrescribir/Prefijo/Sufijo] <Sobrescribir>:
file =
.in-place-save-failed-downloaded = Error al guardar en el sitio (__ocs_fmt_0__); se descargó una copia
.save-picker-failed-downloading = Falló la selección del destino de guardado: __ocs_fmt_0__; descargando una copia
.restore-all = Restaurar todo
.restoring-drawing-s = Restaurando __ocs_fmt_0__ dibujos…
.session-had-open-drawing-s = La sesión tenía __ocs_fmt_0__ dibujos abiertos.
+4
View File
@@ -168,6 +168,8 @@ modal =
.those-objects = kyseiset objektit
clipboard =
.pasted-image = Liitetty kuva "{ $name }": { $width }×{ $height } px
.image-unsupported = Liitettyä kuvaa "{ $name }" ei voitu purkaa.
.no-supported-content = Leikepöydällä ei ole tuettua tekstiä tai piirustusobjekteja.
.unavailable = Järjestelmän leikepöytä ei ole käytettävissä.
.occupied = Järjestelmän leikepöytä on parhaillaan käytössä. Yritä uudelleen.
@@ -2399,6 +2401,8 @@ command =
.tcount-placement-overwrite-prefix-suffix-overw = TCOUNT-sijoittelu [Korvaa/etuliite/liite] <Overwrite>:
file =
.in-place-save-failed-downloaded = Tallennus paikallaan epäonnistui (__ocs_fmt_0__); kopio ladattiin
.save-picker-failed-downloading = Tallennuskohteen valinta epäonnistui: __ocs_fmt_0__; ladataan kopio
.restore-all = Palauta kaikki
.restoring-drawing-s = Palautetaan __ocs_fmt_0__ piirustusta…
.session-had-open-drawing-s = Istunnossa oli __ocs_fmt_0__ avointa piirustusta.
+4
View File
@@ -168,6 +168,8 @@ modal =
.those-objects = ces objets
clipboard =
.pasted-image = Image collée "{ $name }" : { $width }×{ $height } px
.image-unsupported = L'image collée "{ $name }" n'a pas pu être décodée.
.no-supported-content = Le presse-papiers ne contient aucun texte ni objet de dessin pris en charge.
.unavailable = Le presse-papiers système n’est pas disponible.
.occupied = Le presse-papiers système est en cours d’utilisation. Réessayez.
@@ -2400,6 +2402,8 @@ command =
.tcount-placement-overwrite-prefix-suffix-overw = TCOUNT Position [Remplacer/Préfixe/Suffixe] <Remplacer> :
file =
.in-place-save-failed-downloaded = Échec de l’enregistrement local (__ocs_fmt_0__) ; une copie a été téléchargée
.save-picker-failed-downloading = Échec du sélecteur de destination : __ocs_fmt_0__ ; téléchargement d’une copie
.restore-all = Tout restaurer
.restoring-drawing-s = Restauration de __ocs_fmt_0__ dessin(s)…
.session-had-open-drawing-s = La session avait __ocs_fmt_0__ dessin(s) ouvert(s).
+4
View File
@@ -168,6 +168,8 @@ modal =
.those-objects = उन ऑब्जेक्ट को
clipboard =
.pasted-image = छवि "{ $name }" पेस्ट की गई: { $width }×{ $height } px
.image-unsupported = पेस्ट की गई छवि "{ $name }" को डिकोड नहीं किया जा सका।
.no-supported-content = क्लिपबोर्ड में समर्थित टेक्स्ट या ड्रॉइंग ऑब्जेक्ट नहीं है।
.unavailable = सिस्टम क्लिपबोर्ड उपलब्ध नहीं है।
.occupied = सिस्टम क्लिपबोर्ड अभी उपयोग में है। फिर प्रयास करें।
@@ -2388,6 +2390,8 @@ command =
.tcount-placement-overwrite-prefix-suffix-overw = TCOUNT स्थान [अधिलेखित/उपसर्ग/प्रत्यय] <अधिलेखित>:
file =
.in-place-save-failed-downloaded = इन-प्लेस सेव विफल (__ocs_fmt_0__); प्रतिलिपि डाउनलोड की गई
.save-picker-failed-downloading = सेव गंतव्य चुनना विफल: __ocs_fmt_0__; प्रतिलिपि डाउनलोड हो रही है
.restore-all = सभी पुनर्स्थापित करें
.restoring-drawing-s = __ocs_fmt_0__ ड्रॉइंग पुनर्स्थापित की जा रही हैं…
.session-had-open-drawing-s = सत्र में __ocs_fmt_0__ ड्रॉइंग खुली थीं।
+4
View File
@@ -168,6 +168,8 @@ modal =
.those-objects = azokat az objektumokat
clipboard =
.pasted-image = "{ $name }" kép beillesztve: { $width }×{ $height } px
.image-unsupported = A beillesztett "{ $name }" kép nem dekódolható.
.no-supported-content = A vágólap nem tartalmaz támogatott szöveget vagy rajzobjektumot.
.unavailable = A rendszer vágólapja nem érhető el.
.occupied = A rendszer vágólapja jelenleg használatban van. Próbálja újra.
@@ -2412,6 +2414,8 @@ command =
.tcount-placement-overwrite-prefix-suffix-overw = TCOUNT elhelyezés [Overwrite (Felülírás) / Prefix (Előtag) / Suffix (Utótag)] <Overwrite>:
file =
.in-place-save-failed-downloaded = A helyben mentés nem sikerült (__ocs_fmt_0__); másolat lett letöltve
.save-picker-failed-downloading = A mentési cél kiválasztása nem sikerült: __ocs_fmt_0__; másolat letöltése
.restore-all = Összes visszaállítása
.restoring-drawing-s = __ocs_fmt_0__ rajz(ok) visszaállítása…
.session-had-open-drawing-s = A munkamenetben __ocs_fmt_0__ rajz volt megnyitva.
+4
View File
@@ -168,6 +168,8 @@ modal =
.those-objects = quegli oggetti
clipboard =
.pasted-image = Immagine "{ $name }" incollata: { $width }×{ $height } px
.image-unsupported = Impossibile decodificare l'immagine incollata "{ $name }".
.no-supported-content = Gli Appunti non contengono testo o oggetti di disegno supportati.
.unavailable = Gli Appunti di sistema non sono disponibili.
.occupied = Gli Appunti di sistema sono attualmente in uso. Riprova.
@@ -2399,6 +2401,8 @@ command =
.tcount-placement-overwrite-prefix-suffix-overw = Posizionamento TCOUNT [Sovrascrivi/Prefisso/Suffisso] <Overwrite>:
file =
.in-place-save-failed-downloaded = Salvataggio sul posto non riuscito (__ocs_fmt_0__); è stata scaricata una copia
.save-picker-failed-downloading = Selezione della destinazione non riuscita: __ocs_fmt_0__; scarico una copia
.restore-all = Ripristina tutto
.restoring-drawing-s = Ripristino di __ocs_fmt_0__ disegno/i…
.session-had-open-drawing-s = La sessione aveva __ocs_fmt_0__ disegni aperti.
+4
View File
@@ -168,6 +168,8 @@ modal =
.those-objects = それらのオブジェクト
clipboard =
.pasted-image = 画像 "{ $name }" を貼り付けました: { $width }×{ $height } px
.image-unsupported = 貼り付けた画像 "{ $name }" をデコードできませんでした。
.no-supported-content = クリップボードに対応するテキストまたは図面オブジェクトがありません。
.unavailable = システムのクリップボードを使用できません。
.occupied = システムのクリップボードは現在使用中です。もう一度お試しください。
@@ -2390,6 +2392,8 @@ command =
.tcount-placement-overwrite-prefix-suffix-overw = TCOUNT 配置 [Overwrite/Prefix/Suffix] <Overwrite>:
file =
.in-place-save-failed-downloaded = その場での保存に失敗しました(__ocs_fmt_0__)。代わりにコピーをダウンロードしました
.save-picker-failed-downloading = 保存先の選択に失敗しました: __ocs_fmt_0__。代わりにコピーをダウンロードしています
.restore-all = すべて復元
.restoring-drawing-s = __ocs_fmt_0__ 件の図面を復元しています…
.session-had-open-drawing-s = セッションでは __ocs_fmt_0__ 件の図面が開いていました。
+4
View File
@@ -168,6 +168,8 @@ modal =
.those-objects = 해당 객체들
clipboard =
.pasted-image = 이미지 "{ $name }" 붙여넣음: { $width }×{ $height } px
.image-unsupported = 붙여넣은 이미지 "{ $name }"을(를) 디코딩할 수 없습니다.
.no-supported-content = 클립보드에 지원되는 텍스트나 도면 객체가 없습니다.
.unavailable = 시스템 클립보드를 사용할 수 없습니다.
.occupied = 시스템 클립보드가 현재 사용 중입니다. 다시 시도하세요.
@@ -2399,6 +2401,8 @@ command =
.tcount-placement-overwrite-prefix-suffix-overw = TCOUNT 배치 [덮어쓰기/접두사/접미사] <Overwrite>:
file =
.in-place-save-failed-downloaded = 제자리 저장 실패(__ocs_fmt_0__); 대신 사본을 내려받았습니다
.save-picker-failed-downloading = 저장 대상 선택 실패: __ocs_fmt_0__; 대신 사본을 내려받는 중
.restore-all = 모두 복원
.restoring-drawing-s = __ocs_fmt_0__ 도면을 복원하는 중…
.session-had-open-drawing-s = 세션에서 __ocs_fmt_0__ 도면이 열려 있었습니다.
+4
View File
@@ -168,6 +168,8 @@ modal =
.those-objects = die objecten
clipboard =
.pasted-image = Afbeelding "{ $name }" geplakt: { $width }×{ $height } px
.image-unsupported = De geplakte afbeelding "{ $name }" kon niet worden gedecodeerd.
.no-supported-content = Het klembord bevat geen ondersteunde tekst of tekenobjecten.
.unavailable = Het systeemklembord is niet beschikbaar.
.occupied = Het systeemklembord is momenteel in gebruik. Probeer het opnieuw.
@@ -2400,6 +2402,8 @@ command =
.tcount-placement-overwrite-prefix-suffix-overw = TCOUNT Plaatsing [Overschrijven/Voorvoegsel/Achtervoegsel] <Overschrijven>:
file =
.in-place-save-failed-downloaded = Ter plekke opslaan mislukt (__ocs_fmt_0__); een kopie is gedownload
.save-picker-failed-downloading = Kiezen van opslagbestemming mislukt: __ocs_fmt_0__; een kopie wordt gedownload
.restore-all = Alles herstellen
.restoring-drawing-s = __ocs_fmt_0__ tekening(en) worden hersteld…
.session-had-open-drawing-s = De sessie had __ocs_fmt_0__ tekening(en) open.
+4
View File
@@ -168,6 +168,8 @@ modal =
.those-objects = te obiekty
clipboard =
.pasted-image = Wklejono obraz "{ $name }": { $width }×{ $height } px
.image-unsupported = Nie udało się zdekodować wklejonego obrazu "{ $name }".
.no-supported-content = Schowek nie zawiera obsługiwanego tekstu ani obiektów rysunku.
.unavailable = Schowek systemowy jest niedostępny.
.occupied = Schowek systemowy jest obecnie używany. Spróbuj ponownie.
@@ -2399,6 +2401,8 @@ command =
.tcount-placement-overwrite-prefix-suffix-overw = Umieszczenie TCOUNT [Nadpisanie/Przedrostek/Sufiks] <Overwrite>:
file =
.in-place-save-failed-downloaded = Zapis w miejscu nie powiódł się (__ocs_fmt_0__); pobrano kopię
.save-picker-failed-downloading = Wybór miejsca zapisu nie powiódł się: __ocs_fmt_0__; pobieranie kopii
.restore-all = Przywróć wszystkie
.restoring-drawing-s = Przywracanie __ocs_fmt_0__ rysunków…
.session-had-open-drawing-s = Sesja miała __ocs_fmt_0__ otwartych rysunków.
+4
View File
@@ -168,6 +168,8 @@ modal =
.those-objects = esses objetos
clipboard =
.pasted-image = Imagem "{ $name }" colada: { $width }×{ $height } px
.image-unsupported = Não foi possível decodificar a imagem colada "{ $name }".
.no-supported-content = A área de transferência não contém texto nem objetos de desenho compatíveis.
.unavailable = A área de transferência do sistema não está disponível.
.occupied = A área de transferência do sistema está em uso. Tente novamente.
@@ -2400,6 +2402,8 @@ command =
.tcount-placement-overwrite-prefix-suffix-overw = TCOUNT posicionamento [Sobrescrever/Prefixo/Sufixo] <Sobrescrever>:
file =
.in-place-save-failed-downloaded = A gravação no local falhou (__ocs_fmt_0__); foi descarregada uma cópia
.save-picker-failed-downloading = A escolha do destino de gravação falhou: __ocs_fmt_0__; a descarregar uma cópia
.restore-all = Restaurar tudo
.restoring-drawing-s = Restaurando __ocs_fmt_0__ desenhos…
.session-had-open-drawing-s = A sessão tinha __ocs_fmt_0__ desenhos abertos.
+4
View File
@@ -168,6 +168,8 @@ modal =
.those-objects = эти объекты
clipboard =
.pasted-image = Вставлено изображение "{ $name }": { $width }×{ $height } px
.image-unsupported = Не удалось декодировать вставленное изображение "{ $name }".
.no-supported-content = Буфер обмена не содержит поддерживаемого текста или объектов чертежа.
.unavailable = Системный буфер обмена недоступен.
.occupied = Системный буфер обмена сейчас используется. Повторите попытку.
@@ -2403,6 +2405,8 @@ command =
.tcount-placement-overwrite-prefix-suffix-overw = TCOUNT Размещение [Заменить/Префикс/Суффикс] <Заменить>:
file =
.in-place-save-failed-downloaded = Не удалось сохранить в файл (__ocs_fmt_0__); копия загружена
.save-picker-failed-downloading = Не удалось выбрать место сохранения: __ocs_fmt_0__; загружается копия
.restore-all = Восстановить все
.restoring-drawing-s = Восстановление __ocs_fmt_0__ чертежа(ей)…
.session-had-open-drawing-s = В сессии было открыто __ocs_fmt_0__ чертежа(ей).
+4
View File
@@ -166,6 +166,8 @@ modal =
.those-objects = bu nesneleri
clipboard =
.pasted-image = "{ $name }" görseli yapıştırıldı: { $width }×{ $height } px
.image-unsupported = Yapıştırılan "{ $name }" görseli çözümlenemedi.
.no-supported-content = Panoda desteklenen metin veya çizim nesnesi yok.
.unavailable = Sistem panosuna erişilemiyor.
.occupied = Sistem panosu şu anda kullanılıyor. Yeniden deneyin.
@@ -2384,6 +2386,8 @@ command =
.tcount-placement-overwrite-prefix-suffix-overw = TCOUNT Yerleştirme [Üzerine yaz/Önek/Sonek] <Üzerine yaz>:
file =
.in-place-save-failed-downloaded = Yerine kayıt başarısız (__ocs_fmt_0__); bir kopya indirildi
.save-picker-failed-downloading = Kayıt hedefi seçimi başarısız: __ocs_fmt_0__; bir kopya indiriliyor
.restore-all = Tümünü geri yükle
.restoring-drawing-s = __ocs_fmt_0__ çizim geri yükleniyor…
.session-had-open-drawing-s = Oturumda __ocs_fmt_0__ açık çizim vardı.
+4
View File
@@ -167,6 +167,8 @@ modal =
.those-objects = 这些对象
clipboard =
.pasted-image = 已粘贴图像 "{ $name }":{ $width }×{ $height } px
.image-unsupported = 无法解码粘贴的图像 "{ $name }"。
.no-supported-content = 剪贴板中没有受支持的文本或图形对象。
.unavailable = 系统剪贴板不可用。
.occupied = 系统剪贴板当前正被使用,请重试。
@@ -2387,6 +2389,8 @@ command =
.tcount-placement-overwrite-prefix-suffix-overw = TCOUNT 放置方式 [覆盖/前缀/后缀] <覆盖>:
file =
.in-place-save-failed-downloaded = 就地保存失败(__ocs_fmt_0__);已下载副本
.save-picker-failed-downloading = 选择保存目标失败:__ocs_fmt_0__;正在下载副本
.restore-all = 全部恢复
.restoring-drawing-s = 正在恢复 __ocs_fmt_0__ 绘图…
.session-had-open-drawing-s = 会话中有 __ocs_fmt_0__ 个打开的绘图。
+4
View File
@@ -167,6 +167,8 @@ modal =
.those-objects = 這些物件
clipboard =
.pasted-image = 已貼上影像 "{ $name }":{ $width }×{ $height } px
.image-unsupported = 無法解碼貼上的影像 "{ $name }"。
.no-supported-content = 剪貼簿中沒有受支援的文字或圖形物件。
.unavailable = 系統剪貼簿不可用。
.occupied = 系統剪貼簿目前正被使用,請重試。
@@ -2399,6 +2401,8 @@ command =
.tcount-placement-overwrite-prefix-suffix-overw = TCOUNT 放置方式 [覆蓋/前綴/後綴] <覆蓋>:
file =
.in-place-save-failed-downloaded = 就地儲存失敗(__ocs_fmt_0__);已下載副本
.save-picker-failed-downloading = 選擇儲存目標失敗:__ocs_fmt_0__;正在下載副本
.restore-all = 全部恢復
.restoring-drawing-s = 正在恢復 __ocs_fmt_0__ 繪圖…
.session-had-open-drawing-s = 工作階段中有 __ocs_fmt_0__ 個開啟的繪圖。