diff --git a/deps.edn b/deps.edn index 3bb1087a23..4b29a1cc31 100644 --- a/deps.edn +++ b/deps.edn @@ -56,7 +56,7 @@ :aliases {:cljs {:extra-paths ["src/dev-cljs/" "src/test/" "src/electron/"] :extra-deps {org.clojure/tools.namespace {:mvn/version "1.5.0"} - cider/cider-nrepl {:mvn/version "0.58.0"} + cider/cider-nrepl {:mvn/version "0.59.0"} org.clojars.knubie/cljs-run-test {:mvn/version "1.0.1"} tortue/spy {:mvn/version "2.15.0"} binaryage/devtools {:mvn/version "1.0.7"}} @@ -66,7 +66,7 @@ pjstadig/humane-test-output {:mvn/version "0.11.0"} org.clojars.knubie/cljs-run-test {:mvn/version "1.0.1"} tortue/spy {:mvn/version "2.15.0"} - cider/cider-nrepl {:mvn/version "0.58.0"}} + cider/cider-nrepl {:mvn/version "0.59.0"}} :main-opts ["-m" "shadow.cljs.devtools.cli"]} :bench {:extra-paths ["src/bench/"] diff --git a/deps/db/src/logseq/db.cljs b/deps/db/src/logseq/db.cljs index 9c21ec289b..a1245d0009 100644 --- a/deps/db/src/logseq/db.cljs +++ b/deps/db/src/logseq/db.cljs @@ -212,6 +212,23 @@ (transact-fn repo-or-conn tx-data tx-meta) (transact-sync repo-or-conn tx-data tx-meta)))))) +(defn- make-conn [opts] + ;; `datascript.conn/->Conn` is not exposed in nbb runtime. + ;; Start from a fresh conn and merge the desired internal state. + (let [conn (d/create-conn)] + (swap! (:atom conn) merge opts) + conn)) + +(defn- conn-from-db + "Forked conn-from-db to not invoke `d/store`, it's unsafe to store during nested batch tx." + [db] + (if-some [_storage (storage/storage db)] + (make-conn + {:db db + :tx-tail [] + :db-last-stored db}) + (make-conn {:db db}))) + (defn batch-transact-with-temp-conn! "Run batched tx work against a temporary conn, then apply all collected tx-data to `conn` with a single final `transact!`. @@ -229,7 +246,7 @@ - `listen-db` (if provided) receives each intermediate tx-report from temp conn. - Do not rely on returned tx-report shape for undo/redo behavior." [conn tx-meta batch-tx-fn & {:keys [listen-db]}] - (let [temp-conn (d/conn-from-db @conn) + (let [temp-conn (conn-from-db @conn) *batch-tx-data (volatile! []) *complete? (volatile! false)] ;; can read from disk, write is disallowed diff --git a/deps/outliner/src/logseq/outliner/op.cljs b/deps/outliner/src/logseq/outliner/op.cljs index 00549d2019..49eac988f5 100644 --- a/deps/outliner/src/logseq/outliner/op.cljs +++ b/deps/outliner/src/logseq/outliner/op.cljs @@ -371,41 +371,6 @@ (reset! *result (apply toggle-reaction! conn args)) nil)) -(defn- apply-single-op! - [conn ops *result opts' clean-tx-meta] - (let [db @conn - op (first ops) - result (case (ffirst ops) - :save-block - (apply outliner-core/save-block db (second op)) - :insert-blocks - (let [[blocks target-block-id insert-opts] (second op)] - (outliner-core/insert-blocks db blocks - (d/entity db [:block/uuid target-block-id]) - insert-opts)) - :delete-blocks - (let [[block-ids opts] (second op) - blocks (keep #(d/entity db [:block/uuid %]) block-ids)] - (outliner-core/delete-blocks db blocks (merge opts opts')))) - additional-tx (:additional-tx opts') - full-tx (concat (:tx-data result) additional-tx)] - (ldb/transact! conn full-tx clean-tx-meta) - (reset! *result result))) - -(defn- apply-save-followed-by-insert! - [conn ops *result opts' clean-tx-meta] - (let [save-block-tx (:tx-data (apply outliner-core/save-block @conn (second (first ops)))) - [blocks target-block-id insert-opts] (second (second ops)) - insert-blocks-result (outliner-core/insert-blocks @conn blocks - (d/entity @conn [:block/uuid target-block-id]) - insert-opts) - additional-tx (:additional-tx opts') - full-tx (concat save-block-tx - (:tx-data insert-blocks-result) - additional-tx)] - (ldb/transact! conn full-tx clean-tx-meta) - (reset! *result insert-blocks-result))) - (defn apply-ops! [conn ops opts] (assert (ops-validator ops) ops) @@ -420,22 +385,11 @@ (and single-op-outliner-op (nil? (:outliner-op opts))) (assoc :outliner-op single-op-outliner-op)) - *result (atom nil) - clean-tx-meta (dissoc opts' :additional-tx :transact-opts :current-block)] - (cond - (and single-op-outliner-op - (contains? #{:save-block :insert-blocks :delete-blocks} (ffirst ops))) - (apply-single-op! conn ops *result opts' clean-tx-meta) + *result (atom nil)] - (and (= 2 (count ops)) - (= :save-block (ffirst ops)) - (= :insert-blocks (first (second ops)))) - (apply-save-followed-by-insert! conn ops *result opts' clean-tx-meta) - - :else - (outliner-tx/transact! - opts' - (doseq [op-entry ops] - (apply-op! conn opts' *result op-entry)))) + (outliner-tx/transact! + opts' + (doseq [op-entry ops] + (apply-op! conn opts' *result op-entry))) @*result)) diff --git a/src/main/frontend/components/block.cljs b/src/main/frontend/components/block.cljs index 703d4eadb2..268ea94998 100644 --- a/src/main/frontend/components/block.cljs +++ b/src/main/frontend/components/block.cljs @@ -259,10 +259,32 @@ [:<> (let [handle-copy! (fn [_e] - (-> (util/copy-image-to-clipboard image-src) - (p/then #(notification/show! (t :notification/copied) :success)) - (p/catch (fn [error] - (js/console.error error))))) + ;; Electron renderer cannot fetch file:// URLs; read the + ;; file via IPC and copy the blob directly. + (if (util/electron?) + (let [ext (some-> (util/get-file-ext image-src) string/lower-case) + ;; Should support all exts in common-config/img-formats + ext->mime {"png" "image/png" + "jpg" "image/jpeg" + "jpeg" "image/jpeg" + "gif" "image/gif" + "webp" "image/webp" + "bmp" "image/bmp" + "svg" "image/svg+xml" + "ico" "image/x-icon"} + mime (get ext->mime ext)] + (if-not mime + (notification/show! (t :asset/copy-image-unsupported-extension (str "." ext)) :warning) + (-> (p/let [binary (fs/read-file-raw nil image-src {}) + blob (js/Blob. (array binary) (clj->js {:type mime}))] + (util/copy-image-blob-to-clipboard blob)) + (p/then #(notification/show! (t :notification/copied) :success)) + (p/catch (fn [error] + (js/console.error error)))))) + (-> (util/copy-image-to-clipboard src') + (p/then #(notification/show! (t :notification/copied) :success)) + (p/catch (fn [error] + (js/console.error error)))))) handle-delete! (fn [_e] (when-let [block-id (get-blockid)] @@ -347,7 +369,7 @@ (ipc/ipc "openFileInFolder" image-src) (js/window.apis.openExternal image-src)))} [:span.flex.items-center.gap-1 - (ui/icon "folder-pin") (t (if local? :asset/show-in-folder :asset/open-in-browser))])) + (ui/icon "folder-pin") (t (if local? :asset/show-file-in-folder :asset/open-in-browser))])) (when-not config/publishing? [:<> diff --git a/src/main/frontend/components/content.cljs b/src/main/frontend/components/content.cljs index 884a544e7a..13ae9f54e5 100644 --- a/src/main/frontend/components/content.cljs +++ b/src/main/frontend/components/content.cljs @@ -2,11 +2,13 @@ (:require [cljs-time.coerce :as tc] [cljs.pprint :as pp] [clojure.string :as string] + [electron.ipc :as ipc] [frontend.commands :as commands] [frontend.components.editor :as editor] [frontend.components.export :as export] [frontend.components.icon :as icon-component] [frontend.components.page-menu :as page-menu] + [frontend.config :as config] [frontend.context.i18n :refer [t]] [frontend.db :as db] [frontend.extensions.fsrs :as fsrs] @@ -24,6 +26,7 @@ [frontend.util.url :as url-util] [goog.dom :as gdom] [goog.object :as gobj] + [logseq.common.path :as path] [logseq.common.util :as common-util] [logseq.db :as ldb] [logseq.shui.ui :as shui] @@ -241,6 +244,16 @@ (editor-handler/copy-block-ref! block-id tap-f)))} (t :block/copy-url))) + (when (and (util/electron?) (ldb/asset? block)) + (shui/dropdown-menu-item + {:key "Show asset in folder" + :on-click (fn [_e] + (let [assets-dir (config/get-current-repo-assets-root) + ext (name (:logseq.property.asset/type block)) + file-path (path/path-join assets-dir (str (:block/uuid block) "." ext))] + (ipc/ipc "openFileInFolder" file-path)))} + (t :asset/show-file-in-folder))) + (shui/dropdown-menu-item {:key "Copy as" :on-click (fn [_] diff --git a/src/main/frontend/handler/db_based/page.cljs b/src/main/frontend/handler/db_based/page.cljs index 876a260614..7cc09ac546 100644 --- a/src/main/frontend/handler/db_based/page.cljs +++ b/src/main/frontend/handler/db_based/page.cljs @@ -55,7 +55,7 @@ :else ;; FIXME: should move to worker (let [txs [(db-class/build-new-class (db/get-db) - {:block/uuid [:block/uuid (:block/uuid page-entity)] + {:block/uuid (:block/uuid page-entity) :block/title (:block/title page-entity) :block/created-at (:block/created-at page-entity)}) [:db/retract (:db/id page-entity) :block/tags :logseq.class/Page]]] diff --git a/src/main/frontend/util.cljc b/src/main/frontend/util.cljc index a49bb0773d..5d61cbb0af 100644 --- a/src/main/frontend/util.cljc +++ b/src/main/frontend/util.cljc @@ -1314,16 +1314,20 @@ (.catch (fn [err] (js/console.error "Web clipboard failed" err))))))))) +#?(:cljs + (defn copy-image-blob-to-clipboard + [blob] + (if (= (.-type blob) "image/png") + (write-blob-to-clipboard blob) + (image-blob->png blob write-blob-to-clipboard)))) + #?(:cljs (defn copy-image-to-clipboard [src] (-> (js/fetch src) (.then (fn [data] (-> (.blob data) - (.then (fn [blob] - (if (= (.-type blob) "image/png") - (write-blob-to-clipboard blob) - (image-blob->png blob write-blob-to-clipboard)))) + (.then copy-image-blob-to-clipboard) (.catch js/console.error))))))) (defn memoize-last diff --git a/src/resources/dicts/af.edn b/src/resources/dicts/af.edn index 46146e0d81..94bc019a01 100644 --- a/src/resources/dicts/af.edn +++ b/src/resources/dicts/af.edn @@ -49,6 +49,7 @@ :asset/cannot-embed-parent-as-own-property "Bovenliggend element kan nie als eigen eienskap worden ingesloten" :asset/confirm-delete-image "Is jy seker jy wil hierdie beeld uitvee?" :asset/copy "Kopieer" + :asset/copy-image-unsupported-extension "Kopiëring van beelde word nie vir {1}-lêers ondersteun nie" :asset/create-local-copy-warning "Skep 'n plaaslike bate van 'n eksterne een. PDF-aantekeninge vereis 'n plaaslike bate om behoorlik te werk." :asset/create-title "Skep bate" :asset/delete "Verwyder" @@ -64,7 +65,7 @@ :asset/select-file "Kies batelêer" :asset/select-from-disk "Kies van skyf" :asset/selected-directories "Gekose gidse:" - :asset/show-in-folder "Wys in gids" + :asset/show-file-in-folder "Wys lêer in gids" :asset/size-too-large "Lêer is te groot" :asset/syncing "Sinkronisasie" :asset/title-label "Batetitel:" diff --git a/src/resources/dicts/ar.edn b/src/resources/dicts/ar.edn index d7fbfa229e..300b36c88b 100644 --- a/src/resources/dicts/ar.edn +++ b/src/resources/dicts/ar.edn @@ -49,6 +49,7 @@ :asset/cannot-embed-parent-as-own-property "لا يمكن تضمين العنصر الأصلي كخاصية" :asset/confirm-delete-image "هل أنت متأكد من أنك تريد حذف هذه الصورة؟" :asset/copy "نسخ" + :asset/copy-image-unsupported-extension "نسخ الصورة غير مدعوم لملفات {1}" :asset/create-local-copy-warning "إنشاء أصل محلي من أصل خارجي. تتطلب تعليقات PDF التوضيحية أصلًا محليًا للعمل بشكل صحيح." :asset/create-title "إنشاء أصل" :asset/delete "حذف" @@ -64,7 +65,7 @@ :asset/select-file "تحديد ملف الأصل" :asset/select-from-disk "التحديد من القرص" :asset/selected-directories "المجلدات المحددة:" - :asset/show-in-folder "عرض في المجلد" + :asset/show-file-in-folder "إظهار الملف في المجلد" :asset/size-too-large "الملف كبير جداً" :asset/syncing "جاري المزامنة" :asset/title-label "عنوان الأصل:" diff --git a/src/resources/dicts/ca.edn b/src/resources/dicts/ca.edn index 0943efab68..2a9e2c434a 100644 --- a/src/resources/dicts/ca.edn +++ b/src/resources/dicts/ca.edn @@ -49,6 +49,7 @@ :asset/cannot-embed-parent-as-own-property "No es pot incrustar el pare com a propietat pròpia" :asset/confirm-delete-image "Esteu segur que voleu eliminar aquesta imatge?" :asset/copy "Copiar imatge" + :asset/copy-image-unsupported-extension "Copiar la imatge no és compatible amb els fitxers {1}" :asset/create-local-copy-warning "S'està creant un recurs local a partir d'un d'extern. Les anotacions PDF requereixen un recurs local per funcionar correctament." :asset/create-title "Crear recurs" :asset/delete "Eliminar imatge" @@ -64,7 +65,7 @@ :asset/select-file "Seleccioneu el fitxer del recurs" :asset/select-from-disk "Seleccionar del disc" :asset/selected-directories "Directoris seleccionats:" - :asset/show-in-folder "Mostrar imatge a la carpeta" + :asset/show-file-in-folder "Mostrar el fitxer a la carpeta" :asset/size-too-large "El recurs és massa gran" :asset/syncing "Sincronització en curs" :asset/title-label "Títol del recurs:" diff --git a/src/resources/dicts/cs.edn b/src/resources/dicts/cs.edn index 721b71eeec..3ad166c12a 100644 --- a/src/resources/dicts/cs.edn +++ b/src/resources/dicts/cs.edn @@ -49,6 +49,7 @@ :asset/cannot-embed-parent-as-own-property "Nelze vložit rodiče jako vlastní vlastnost" :asset/confirm-delete-image "Jste si jisti, že chcete odstranit tento obrázek?" :asset/copy "Kopírovat obrázek" + :asset/copy-image-unsupported-extension "Kopírování obrázku není pro soubory {1} podporováno" :asset/create-local-copy-warning "Vytváření lokální kopie z externího souboru. PDF anotace vyžadují lokální soubor pro správné fungování." :asset/create-title "Vytvořit soubor" :asset/delete "Odstranit obrázek" @@ -64,7 +65,7 @@ :asset/select-file "Vybrat soubor" :asset/select-from-disk "Vybrat z disku" :asset/selected-directories "Vybrané adresáře:" - :asset/show-in-folder "Zobrazit obrázek ve složce" + :asset/show-file-in-folder "Zobrazit soubor ve složce" :asset/size-too-large "Soubor je příliš velký" :asset/syncing "Synchronizace" :asset/title-label "Název souboru:" diff --git a/src/resources/dicts/de.edn b/src/resources/dicts/de.edn index 2feecfda77..8fa2f9b7aa 100644 --- a/src/resources/dicts/de.edn +++ b/src/resources/dicts/de.edn @@ -49,6 +49,7 @@ :asset/cannot-embed-parent-as-own-property "Elternelement kann nicht als eigene Eigenschaft eingebettet werden" :asset/confirm-delete-image "Möchten Sie dieses Bild wirklich löschen?" :asset/copy "Bild kopieren" + :asset/copy-image-unsupported-extension "Das Kopieren von Bildern wird für Dateien vom Typ {1} nicht unterstützt" :asset/create-local-copy-warning "Es wird ein lokales Asset aus einem externen erstellt. PDF-Anmerkungen erfordern ein lokales Asset, um richtig zu funktionieren." :asset/create-title "Asset erstellen" :asset/delete "Bild löschen" @@ -64,7 +65,7 @@ :asset/select-file "Asset-Datei auswählen" :asset/select-from-disk "Von Festplatte auswählen" :asset/selected-directories "Ausgewählte Verzeichnisse:" - :asset/show-in-folder "Bild im Ordner anzeigen" + :asset/show-file-in-folder "Datei im Ordner anzeigen" :asset/size-too-large "Asset-Größe ist zu groß" :asset/syncing "Wird synchronisiert" :asset/title-label "Asset-Titel:" diff --git a/src/resources/dicts/en.edn b/src/resources/dicts/en.edn index 8c83fc1f59..f414a35202 100644 --- a/src/resources/dicts/en.edn +++ b/src/resources/dicts/en.edn @@ -49,6 +49,7 @@ :asset/cannot-embed-parent-as-own-property "Can't embed parent block as its own property" :asset/confirm-delete-image "Are you sure you want to delete this image?" :asset/copy "Copy image" + :asset/copy-image-unsupported-extension "Copy image is not supported for {1} files" :asset/create-local-copy-warning "Creating a local asset from an external one. PDF annotations require a local asset to work properly." :asset/create-title "Create asset" :asset/delete "Delete image" @@ -64,7 +65,7 @@ :asset/select-file "Select Asset File" :asset/select-from-disk "Select from disk" :asset/selected-directories "Selected directories:" - :asset/show-in-folder "Show image in folder" + :asset/show-file-in-folder "Show file in folder" :asset/size-too-large "Asset size shouldn't be larger than 100M" :asset/syncing "Syncing" :asset/title-label "Asset title:" diff --git a/src/resources/dicts/es.edn b/src/resources/dicts/es.edn index 914fd244bd..66dcfa5950 100644 --- a/src/resources/dicts/es.edn +++ b/src/resources/dicts/es.edn @@ -49,6 +49,7 @@ :asset/cannot-embed-parent-as-own-property "No se puede incrustar el padre como su propia propiedad" :asset/confirm-delete-image "¿Está seguro de que desea eliminar esta imagen?" :asset/copy "Copiar imagen" + :asset/copy-image-unsupported-extension "No se admite copiar imágenes para archivos {1}" :asset/create-local-copy-warning "Creando un archivo local a partir de uno externo. Las anotaciones PDF requieren un archivo local para funcionar correctamente." :asset/create-title "Crear archivo adjunto" :asset/delete "Eliminar imagen" @@ -64,7 +65,7 @@ :asset/select-file "Seleccionar archivo adjunto" :asset/select-from-disk "Seleccionar desde disco" :asset/selected-directories "Directorios seleccionados:" - :asset/show-in-folder "Mostrar imagen en la carpeta" + :asset/show-file-in-folder "Mostrar archivo en la carpeta" :asset/size-too-large "El recurso es demasiado grande" :asset/syncing "Sincronizando" :asset/title-label "Título del archivo adjunto:" diff --git a/src/resources/dicts/fa.edn b/src/resources/dicts/fa.edn index f9d8ffc8fb..914d28a399 100644 --- a/src/resources/dicts/fa.edn +++ b/src/resources/dicts/fa.edn @@ -49,6 +49,7 @@ :asset/cannot-embed-parent-as-own-property "نمی‌توان والد را به عنوان ویژگی خودش جاسازی کرد" :asset/confirm-delete-image "آیا مطمئن هستید که می‌خواهید این تصویر را حذف کنید؟" :asset/copy "کپی" + :asset/copy-image-unsupported-extension "کپی تصویر برای فایل‌های {1} پشتیبانی نمی‌شود" :asset/create-local-copy-warning "ایجاد فایل پیوست محلی از یک فایل خارجی. حاشیه‌نویسی PDF نیاز به فایل پیوست محلی دارد تا به درستی کار کند." :asset/create-title "ایجاد فایل پیوست" :asset/delete "حذف" @@ -64,7 +65,7 @@ :asset/select-file "انتخاب فایل پیوست" :asset/select-from-disk "انتخاب از دیسک" :asset/selected-directories "پوشه‌های انتخاب شده:" - :asset/show-in-folder "نمایش در پوشه" + :asset/show-file-in-folder "نمایش فایل در پوشه" :asset/size-too-large "فایل خیلی بزرگ است" :asset/syncing "در حال همگام‌سازی" :asset/title-label "عنوان فایل پیوست:" diff --git a/src/resources/dicts/fr.edn b/src/resources/dicts/fr.edn index 5b066c065c..3476a3edc1 100644 --- a/src/resources/dicts/fr.edn +++ b/src/resources/dicts/fr.edn @@ -49,6 +49,7 @@ :asset/cannot-embed-parent-as-own-property "Impossible d'intégrer le parent comme sa propre propriété" :asset/confirm-delete-image "Voulez-vous vraiment supprimer cette image ?" :asset/copy "Copier l'image" + :asset/copy-image-unsupported-extension "La copie d'image n'est pas prise en charge pour les fichiers {1}" :asset/create-local-copy-warning "Création d'un fichier local à partir d'un fichier externe. Les annotations PDF nécessitent un fichier local pour fonctionner correctement." :asset/create-title "Créer un fichier" :asset/delete "Supprimer l'image" @@ -64,7 +65,7 @@ :asset/select-file "Sélectionner un fichier" :asset/select-from-disk "Sélectionner depuis le disque" :asset/selected-directories "Répertoires sélectionnés :" - :asset/show-in-folder "Montrer l'image dans le dossier" + :asset/show-file-in-folder "Afficher le fichier dans le dossier" :asset/size-too-large "La taille de la ressource est trop grande" :asset/syncing "Synchronisation en cours" :asset/title-label "Titre du fichier :" diff --git a/src/resources/dicts/id.edn b/src/resources/dicts/id.edn index e050f4889e..2ba100ff79 100644 --- a/src/resources/dicts/id.edn +++ b/src/resources/dicts/id.edn @@ -49,6 +49,7 @@ :asset/cannot-embed-parent-as-own-property "Tidak dapat menyematkan induk sebagai propertinya sendiri" :asset/confirm-delete-image "Apakah Anda yakin ingin menghapus gambar ini?" :asset/copy "Salin gambar" + :asset/copy-image-unsupported-extension "Menyalin gambar tidak didukung untuk file {1}" :asset/create-local-copy-warning "Membuat aset lokal dari aset eksternal. Anotasi PDF memerlukan aset lokal agar berfungsi dengan baik." :asset/create-title "Buat aset" :asset/delete "Hapus gambar" @@ -64,7 +65,7 @@ :asset/select-file "Pilih File Aset" :asset/select-from-disk "Pilih dari disk" :asset/selected-directories "Direktori yang dipilih:" - :asset/show-in-folder "Tampilkan gambar di folder" + :asset/show-file-in-folder "Tampilkan file di folder" :asset/size-too-large "Berkas terlalu besar" :asset/syncing "Menyinkronkan" :asset/title-label "Judul aset:" diff --git a/src/resources/dicts/it.edn b/src/resources/dicts/it.edn index b90e52ca69..0c84a3698f 100644 --- a/src/resources/dicts/it.edn +++ b/src/resources/dicts/it.edn @@ -49,6 +49,7 @@ :asset/cannot-embed-parent-as-own-property "Impossibile incorporare il genitore come propria proprietà" :asset/confirm-delete-image "Sei sicuro di voler eliminare questa immagine?" :asset/copy "Copia immagine" + :asset/copy-image-unsupported-extension "La copia dell'immagine non è supportata per i file {1}" :asset/create-local-copy-warning "Creazione di una risorsa locale da una esterna. Le annotazioni PDF richiedono una risorsa locale per funzionare correttamente." :asset/create-title "Crea risorsa" :asset/delete "Elimina immagine" @@ -64,7 +65,7 @@ :asset/select-file "Seleziona file risorsa" :asset/select-from-disk "Seleziona dal disco" :asset/selected-directories "Cartelle selezionate:" - :asset/show-in-folder "Mostra nella cartella" + :asset/show-file-in-folder "Mostra file nella cartella" :asset/size-too-large "La risorsa è troppo grande" :asset/syncing "Sincronizzazione in corso" :asset/title-label "Titolo risorsa:" diff --git a/src/resources/dicts/ja.edn b/src/resources/dicts/ja.edn index 9976cf9dfc..86884e364d 100644 --- a/src/resources/dicts/ja.edn +++ b/src/resources/dicts/ja.edn @@ -49,6 +49,7 @@ :asset/cannot-embed-parent-as-own-property "自身のプロパティとして親を埋め込むことはできません" :asset/confirm-delete-image "この画像を削除してもよろしいですか?" :asset/copy "アセットをコピー" + :asset/copy-image-unsupported-extension "{1} ファイルは画像のコピーに対応していません" :asset/create-local-copy-warning "外部アセットからローカルアセットを作成します。PDFの注釈機能にはローカルアセットが必要です。" :asset/create-title "アセットを作成" :asset/delete "画像を削除" @@ -64,7 +65,7 @@ :asset/select-file "アセットファイルを選択" :asset/select-from-disk "ディスクから選択" :asset/selected-directories "選択されたディレクトリ:" - :asset/show-in-folder "画像のフォルダを開く" + :asset/show-file-in-folder "ファイルをフォルダーに表示" :asset/size-too-large "アセットのサイズが大きすぎます" :asset/syncing "同期中" :asset/title-label "アセットのタイトル:" diff --git a/src/resources/dicts/ko.edn b/src/resources/dicts/ko.edn index 2416325295..fe060e5c26 100644 --- a/src/resources/dicts/ko.edn +++ b/src/resources/dicts/ko.edn @@ -49,6 +49,7 @@ :asset/cannot-embed-parent-as-own-property "자신의 속성으로 부모를 임베드할 수 없습니다" :asset/confirm-delete-image "이 이미지를 삭제하시겠습니까?" :asset/copy "에셋 복사" + :asset/copy-image-unsupported-extension "{1} 파일은 이미지 복사를 지원하지 않습니다" :asset/create-local-copy-warning "외부 자산에서 로컬 자산을 생성합니다. PDF 주석이 제대로 작동하려면 로컬 자산이 필요합니다." :asset/create-title "자산 만들기" :asset/delete "이미지 삭제" @@ -64,7 +65,7 @@ :asset/select-file "자산 파일 선택" :asset/select-from-disk "디스크에서 선택" :asset/selected-directories "선택된 디렉터리:" - :asset/show-in-folder "이미지 폴더에서 열기" + :asset/show-file-in-folder "파일을 폴더에서 보기" :asset/size-too-large "에셋 크기가 너무 큽니다" :asset/syncing "동기화 중" :asset/title-label "자산 제목:" diff --git a/src/resources/dicts/nb-no.edn b/src/resources/dicts/nb-no.edn index 06ecb7d43e..27d10c0a22 100644 --- a/src/resources/dicts/nb-no.edn +++ b/src/resources/dicts/nb-no.edn @@ -49,6 +49,7 @@ :asset/cannot-embed-parent-as-own-property "Overordnet element kan ikke bygges inn som egen egenskap" :asset/confirm-delete-image "Er du sikker på at du vil slette dette bildet?" :asset/copy "Kopier" + :asset/copy-image-unsupported-extension "Kopiering av bilder støttes ikke for {1}-filer" :asset/create-local-copy-warning "Oppretter en lokal kopi fra et eksternt vedlegg. PDF-merknader krever et lokalt vedlegg for å fungere riktig." :asset/create-title "Opprett vedlegg" :asset/delete "Slett" @@ -64,7 +65,7 @@ :asset/select-file "Velg vedleggsfil" :asset/select-from-disk "Velg fra disk" :asset/selected-directories "Valgte mapper:" - :asset/show-in-folder "Vis i mappe" + :asset/show-file-in-folder "Vis fil i mappe" :asset/size-too-large "Filen er for stor" :asset/syncing "Synkroniserer" :asset/title-label "Vedleggstittel:" diff --git a/src/resources/dicts/nl.edn b/src/resources/dicts/nl.edn index 5d09325257..c2528aa267 100644 --- a/src/resources/dicts/nl.edn +++ b/src/resources/dicts/nl.edn @@ -49,6 +49,7 @@ :asset/cannot-embed-parent-as-own-property "Bovenliggend element kan niet als eigen eigenschap worden ingesloten" :asset/confirm-delete-image "Weet u zeker dat u deze afbeelding wilt verwijderen?" :asset/copy "Kopiëren" + :asset/copy-image-unsupported-extension "Afbeelding kopiëren wordt niet ondersteund voor {1}-bestanden" :asset/create-local-copy-warning "Er wordt een lokale bijlage aangemaakt van een externe bron. PDF-annotaties vereisen een lokale bijlage om correct te werken." :asset/create-title "Bijlage aanmaken" :asset/delete "Verwijderen" @@ -64,7 +65,7 @@ :asset/select-file "Bijlagebestand selecteren" :asset/select-from-disk "Selecteren van schijf" :asset/selected-directories "Geselecteerde mappen:" - :asset/show-in-folder "In map tonen" + :asset/show-file-in-folder "Bestand in map tonen" :asset/size-too-large "Bestand is te groot" :asset/syncing "Synchroniseren" :asset/title-label "Bijlagetitel:" diff --git a/src/resources/dicts/pl.edn b/src/resources/dicts/pl.edn index b7c4c531c2..279617d260 100644 --- a/src/resources/dicts/pl.edn +++ b/src/resources/dicts/pl.edn @@ -49,6 +49,7 @@ :asset/cannot-embed-parent-as-own-property "Nie można osadzić rodzica jako własnej właściwości" :asset/confirm-delete-image "Czy na pewno chcesz usunąć ten obraz?" :asset/copy "Kopiuj obrazek" + :asset/copy-image-unsupported-extension "Kopiowanie obrazu nie jest obsługiwane dla plików {1}" :asset/create-local-copy-warning "Tworzenie lokalnego zasobu z zewnętrznego. Adnotacje PDF wymagają lokalnego zasobu, aby działały poprawnie." :asset/create-title "Utwórz zasób" :asset/delete "Usuń obrazek" @@ -64,7 +65,7 @@ :asset/select-file "Wybierz plik zasobu" :asset/select-from-disk "Wybierz z dysku" :asset/selected-directories "Wybrane katalogi:" - :asset/show-in-folder "Pokaż obrazek w folderze" + :asset/show-file-in-folder "Pokaż plik w folderze" :asset/size-too-large "Zasób jest zbyt duży" :asset/syncing "Synchronizacja" :asset/title-label "Tytuł zasobu:" diff --git a/src/resources/dicts/pt-br.edn b/src/resources/dicts/pt-br.edn index 462b0d27d6..994b04d12c 100644 --- a/src/resources/dicts/pt-br.edn +++ b/src/resources/dicts/pt-br.edn @@ -49,6 +49,7 @@ :asset/cannot-embed-parent-as-own-property "Não é possível incorporar o pai como sua própria propriedade" :asset/confirm-delete-image "Tem certeza de que deseja excluir esta imagem?" :asset/copy "Copiar imagem" + :asset/copy-image-unsupported-extension "Copiar imagem não é compatível com arquivos {1}" :asset/create-local-copy-warning "Criando um arquivo local a partir de um externo. Anotações em PDF requerem um arquivo local para funcionar corretamente." :asset/create-title "Criar arquivo" :asset/delete "Excluir imagem" @@ -64,7 +65,7 @@ :asset/select-file "Selecionar arquivo" :asset/select-from-disk "Selecionar do disco" :asset/selected-directories "Diretórios selecionados:" - :asset/show-in-folder "Mostrar imagem na pasta" + :asset/show-file-in-folder "Mostrar arquivo na pasta" :asset/size-too-large "O recurso é muito grande" :asset/syncing "Sincronizando" :asset/title-label "Título do arquivo:" diff --git a/src/resources/dicts/pt-pt.edn b/src/resources/dicts/pt-pt.edn index c840655a5f..ad1be91697 100644 --- a/src/resources/dicts/pt-pt.edn +++ b/src/resources/dicts/pt-pt.edn @@ -49,6 +49,7 @@ :asset/cannot-embed-parent-as-own-property "Não é possível incorporar o pai como sua própria propriedade" :asset/confirm-delete-image "Tem a certeza de que quer apagar esta imagem?" :asset/copy "Copiar imagem" + :asset/copy-image-unsupported-extension "Copiar imagem não é suportado para ficheiros {1}" :asset/create-local-copy-warning "A criar um ficheiro local a partir de um externo. As anotações PDF requerem um ficheiro local para funcionar corretamente." :asset/create-title "Criar ficheiro" :asset/delete "Eliminar imagem" @@ -64,7 +65,7 @@ :asset/select-file "Selecionar ficheiro" :asset/select-from-disk "Selecionar do disco" :asset/selected-directories "Diretórios selecionados:" - :asset/show-in-folder "Mostrar imagem na pasta" + :asset/show-file-in-folder "Mostrar ficheiro na pasta" :asset/size-too-large "O recurso é muito grande" :asset/syncing "Sincronização em curso" :asset/title-label "Título do ficheiro:" diff --git a/src/resources/dicts/ru.edn b/src/resources/dicts/ru.edn index 057c59aa99..8cb0a1011e 100644 --- a/src/resources/dicts/ru.edn +++ b/src/resources/dicts/ru.edn @@ -49,6 +49,7 @@ :asset/cannot-embed-parent-as-own-property "Невозможно встроить родителя как собственное свойство" :asset/confirm-delete-image "Вы уверены, что хотите удалить это изображение?" :asset/copy "Копировать изображение" + :asset/copy-image-unsupported-extension "Копирование изображения не поддерживается для файлов {1}" :asset/create-local-copy-warning "Создание локальной копии из внешнего ресурса. Для корректной работы аннотаций PDF необходим локальный файл." :asset/create-title "Создать ресурс" :asset/delete "Удалить изображение" @@ -64,7 +65,7 @@ :asset/select-file "Выбрать файл" :asset/select-from-disk "Выбрать с диска" :asset/selected-directories "Выбранные каталоги:" - :asset/show-in-folder "Показать изображение в папке" + :asset/show-file-in-folder "Показать файл в папке" :asset/size-too-large "Ресурс слишком большой" :asset/syncing "Синхронизация" :asset/title-label "Название ресурса:" diff --git a/src/resources/dicts/sk.edn b/src/resources/dicts/sk.edn index fe84bfb3f3..3af55c79f0 100644 --- a/src/resources/dicts/sk.edn +++ b/src/resources/dicts/sk.edn @@ -49,6 +49,7 @@ :asset/cannot-embed-parent-as-own-property "Nemožno vložit rodiče jako vlastní vlastnosť" :asset/confirm-delete-image "Naozaj chcete odstrániť tento obrázok?" :asset/copy "Kopírovať obrázok" + :asset/copy-image-unsupported-extension "Kopírovanie obrázka nie je podporované pre súbory {1}" :asset/create-local-copy-warning "Vytvára sa lokálna kópia externého súboru. Anotácie PDF vyžadujú lokálny súbor na správne fungovanie." :asset/create-title "Vytvoriť súbor" :asset/delete "Odstrániť obrázok" @@ -64,7 +65,7 @@ :asset/select-file "Vybrať súbor" :asset/select-from-disk "Vybrať z disku" :asset/selected-directories "Vybrané priečinky:" - :asset/show-in-folder "Zobraziť obrázok v adresári" + :asset/show-file-in-folder "Zobraziť súbor v priečinku" :asset/size-too-large "Soubor je příliš velký" :asset/syncing "Synchronizácia" :asset/title-label "Názov súboru:" diff --git a/src/resources/dicts/tr.edn b/src/resources/dicts/tr.edn index e463526f6f..3dd9d15c89 100644 --- a/src/resources/dicts/tr.edn +++ b/src/resources/dicts/tr.edn @@ -49,6 +49,7 @@ :asset/cannot-embed-parent-as-own-property "Üst öğe kendi özelliği olarak gömülemez" :asset/confirm-delete-image "Bu görseli silmek istediğinizden emin misiniz?" :asset/copy "Resmi kopyala" + :asset/copy-image-unsupported-extension "Resim kopyalama {1} dosyaları için desteklenmiyor" :asset/create-local-copy-warning "Harici bir dosyadan yerel dosya oluşturuluyor. PDF açıklamaları düzgün çalışması için yerel dosya gerektirir." :asset/create-title "Dosya oluştur" :asset/delete "Resmi sil" @@ -64,7 +65,7 @@ :asset/select-file "Dosya Seç" :asset/select-from-disk "Diskten seç" :asset/selected-directories "Seçilen dizinler:" - :asset/show-in-folder "Resmi klasörde göster" + :asset/show-file-in-folder "Dosyayı klasörde göster" :asset/size-too-large "Dosya çok büyük" :asset/syncing "Senkronize ediliyor" :asset/title-label "Dosya başlığı:" diff --git a/src/resources/dicts/uk.edn b/src/resources/dicts/uk.edn index 362772aea7..42d6152823 100644 --- a/src/resources/dicts/uk.edn +++ b/src/resources/dicts/uk.edn @@ -49,6 +49,7 @@ :asset/cannot-embed-parent-as-own-property "Неможливо встроить родителя как собственное властивість" :asset/confirm-delete-image "Ви впевнені, що хочете видалити це зображення?" :asset/copy "Копіювати зображення" + :asset/copy-image-unsupported-extension "Копіювання зображення не підтримується для файлів {1}" :asset/create-local-copy-warning "Створення локального ресурсу із зовнішнього. Анотації PDF потребують локального ресурсу для коректної роботи." :asset/create-title "Створити ресурс" :asset/delete "Видалити зображення" @@ -64,7 +65,7 @@ :asset/select-file "Обрати файл ресурсу" :asset/select-from-disk "Обрати з диска" :asset/selected-directories "Обрані каталоги:" - :asset/show-in-folder "Показати зображення у папці" + :asset/show-file-in-folder "Показати файл у папці" :asset/size-too-large "Ресурс слишком большой" :asset/syncing "Синхронізація" :asset/title-label "Назва ресурсу:" diff --git a/src/resources/dicts/zh-cn.edn b/src/resources/dicts/zh-cn.edn index e599ae8a85..4687640575 100644 --- a/src/resources/dicts/zh-cn.edn +++ b/src/resources/dicts/zh-cn.edn @@ -49,6 +49,7 @@ :asset/cannot-embed-parent-as-own-property "不能把父块嵌入为它自己的属性" :asset/confirm-delete-image "确定要删除这张图片吗?" :asset/copy "复制图片" + :asset/copy-image-unsupported-extension "不支持复制 {1} 文件中的图片" :asset/create-local-copy-warning "正在从外部资源创建本地附件。PDF 批注功能需要本地附件才能正常使用。" :asset/create-title "创建附件" :asset/delete "删除图片" @@ -64,7 +65,7 @@ :asset/select-file "选择附件文件" :asset/select-from-disk "从磁盘选择" :asset/selected-directories "已选目录:" - :asset/show-in-folder "在文件夹中显示图片" + :asset/show-file-in-folder "在文件夹中显示文件" :asset/size-too-large "资源大小不能超过 100M" :asset/syncing "同步中" :asset/title-label "附件标题:" diff --git a/src/resources/dicts/zh-hant.edn b/src/resources/dicts/zh-hant.edn index 555abcfe04..aa8eb7b244 100644 --- a/src/resources/dicts/zh-hant.edn +++ b/src/resources/dicts/zh-hant.edn @@ -49,6 +49,7 @@ :asset/cannot-embed-parent-as-own-property "不能把父區塊嵌入成它自己的屬性" :asset/confirm-delete-image "你確定要刪除這張圖片嗎?" :asset/copy "複製圖片" + :asset/copy-image-unsupported-extension "不支援複製 {1} 檔案中的圖片" :asset/create-local-copy-warning "正在從外部來源建立本機素材。PDF 註解需要本機素材才能正常運作。" :asset/create-title "建立素材" :asset/delete "刪除圖片" @@ -64,7 +65,7 @@ :asset/select-file "選擇素材檔案" :asset/select-from-disk "從磁碟選擇" :asset/selected-directories "已選擇的目錄:" - :asset/show-in-folder "於資料夾顯示圖片" + :asset/show-file-in-folder "於資料夾顯示檔案" :asset/size-too-large "資源大小不能超過 100M" :asset/syncing "正在同步" :asset/title-label "素材標題:"