From bfb30fe68d7c15d603b479b028d65213fb7510e0 Mon Sep 17 00:00:00 2001 From: Yaron Shahrabani Date: Wed, 27 Oct 2021 09:39:47 +0000 Subject: [PATCH 001/307] :globe_with_meridians: Add translations for: Hebrew. Currently translated at 95.8% (792 of 826 strings) Translation: Penpot/frontend Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/he/ --- frontend/translations/he.po | 106 ++++++++++++++++++++++++++++++++++-- 1 file changed, 102 insertions(+), 4 deletions(-) diff --git a/frontend/translations/he.po b/frontend/translations/he.po index f4c03a8da9..7933c64b71 100644 --- a/frontend/translations/he.po +++ b/frontend/translations/he.po @@ -1,9 +1,9 @@ msgid "" msgstr "" -"PO-Revision-Date: 2021-10-18 07:35+0000\n" +"PO-Revision-Date: 2021-10-27 09:49+0000\n" "Last-Translator: Yaron Shahrabani \n" -"Language-Team: Hebrew " -"\n" +"Language-Team: Hebrew \n" "Language: he\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" @@ -2956,4 +2956,102 @@ msgid "workspace.updates.update" msgstr "עדכון" msgid "workspace.viewport.click-to-close-path" -msgstr "לחיצה תסגור את הנתיב" \ No newline at end of file +msgstr "לחיצה תסגור את הנתיב" + +msgid "auth.privacy-policy" +msgstr "מדיניות פרטיות" + +msgid "auth.terms-of-service" +msgstr "תנאי השירות" + +msgid "dashboard.import.progress.process-colors" +msgstr "עיבוד צבעים" + +msgid "dashboard.import.progress.process-components" +msgstr "עיבוד רכיבים" + +msgid "dashboard.import.progress.process-media" +msgstr "עיבוד מדיה" + +msgid "dashboard.import.progress.process-page" +msgstr "עיבוד עמוד: %s" + +msgid "dashboard.import.progress.process-typographies" +msgstr "עיבוד טיפוגרפיות" + +msgid "dashboard.import.progress.upload-data" +msgstr "הנתונים נשלחים לשרת (%s/%s)" + +msgid "dashboard.import.progress.upload-media" +msgstr "נשלח קובץ: %s" + +msgid "viewer.breaking-change.description" +msgstr "" +"קישור זה לשיתוף אינו תקף עוד. נא ליצור אחד חדש או לבקש מהבעלים ליצור אחד חדש." + +msgid "viewer.breaking-change.message" +msgstr "מתנצלים!" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.add-interaction" +msgstr "יש ללחוץ על הכפתור + כדי להוסיף אינטראקציות." + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.flows.add-flow-start" +msgstr "הוספת תחילת זרימה" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.flows.flow-start" +msgstr "התחלת זרימה" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.flows.flow-starts" +msgstr "הזרימה מתחילה" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-action" +msgstr "פעולה" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-after-delay" +msgstr "לאחר השהיה" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-background" +msgstr "הוספת שכבת רקע" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-close-outside" +msgstr "תיסגר בלחיצה מחוצה לה" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-close-overlay" +msgstr "סגירת שכבת על" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-close-overlay-dest" +msgstr "סגירת שכבת על: %s" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-delay" +msgstr "השהיה" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-destination" +msgstr "יעד" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-mouse-enter" +msgstr "כניסת עכבר" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-mouse-leave" +msgstr "יציאת עכבר" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-ms" +msgstr "מילישניות" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-navigate-to" +msgstr "ניווט אל" From 75352c9afee6ac32c953547fca12cd047a61d2ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=C4=9Fuz=20Ersen?= Date: Wed, 27 Oct 2021 17:10:11 +0000 Subject: [PATCH 002/307] :globe_with_meridians: Add translations for: Turkish. Currently translated at 99.7% (824 of 826 strings) Translation: Penpot/frontend Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/tr/ --- frontend/translations/tr.po | 272 +++++++++++++++++++++++++++++++++++- 1 file changed, 267 insertions(+), 5 deletions(-) diff --git a/frontend/translations/tr.po b/frontend/translations/tr.po index 33f368fb3e..4550d30778 100644 --- a/frontend/translations/tr.po +++ b/frontend/translations/tr.po @@ -1,15 +1,15 @@ msgid "" msgstr "" -"PO-Revision-Date: 2021-09-10 10:57+0000\n" +"PO-Revision-Date: 2021-11-01 03:34+0000\n" "Last-Translator: Oğuz Ersen \n" -"Language-Team: Turkish " -"\n" +"Language-Team: Turkish \n" "Language: tr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.8.1-dev\n" +"X-Generator: Weblate 4.9-dev\n" #: src/app/main/ui/auth/register.cljs msgid "auth.already-have-account" @@ -2953,4 +2953,266 @@ msgid "workspace.updates.update" msgstr "Güncelle" msgid "workspace.viewport.click-to-close-path" -msgstr "Yolu kapatmak için tıklayın" \ No newline at end of file +msgstr "Yolu kapatmak için tıklayın" + +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs +msgid "workspace.options.stroke-cap.line-arrow" +msgstr "Çizgi oku" + +msgid "auth.privacy-policy" +msgstr "Gizlilik politikası" + +msgid "auth.terms-of-service" +msgstr "Hizmet şartları" + +msgid "dashboard.import.progress.process-colors" +msgstr "Renkler işleniyor" + +msgid "dashboard.import.progress.process-components" +msgstr "Bileşenler işleniyor" + +msgid "dashboard.import.progress.process-media" +msgstr "Ortam işleniyor" + +msgid "dashboard.import.progress.process-page" +msgstr "Sayfa işleniyor: %s" + +msgid "dashboard.import.progress.process-typographies" +msgstr "Tipografiler işleniyor" + +msgid "dashboard.import.progress.upload-data" +msgstr "Veriler sunucuya yükleniyor (%s/%s)" + +msgid "dashboard.import.progress.upload-media" +msgstr "Dosya yükleniyor: %s" + +msgid "onboarding.slide.3.title" +msgstr "Paylaşılan bir doğruluk kaynağı" + +msgid "viewer.breaking-change.description" +msgstr "" +"Bu paylaşılabilir bağlantı artık geçerli değil. Yeni bir tane oluşturun veya " +"sahibinden yeni bir tane isteyin." + +msgid "viewer.breaking-change.message" +msgstr "Üzgünüm!" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.add-interaction" +msgstr "Etkileşimler eklemek için + düğmesine tıklayın." + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.flows.add-flow-start" +msgstr "Akış başlangıcı ekle" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.flows.flow-start" +msgstr "Akış başlangıcı" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.flows.flow-starts" +msgstr "Akış başlar" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-action" +msgstr "Eylem" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-after-delay" +msgstr "Gecikmeden sonra" + +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs +msgid "workspace.options.group-fill" +msgstr "Grubu doldur" + +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs +msgid "workspace.options.group-stroke" +msgstr "Grubu çiz" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-background" +msgstr "Arka plan üst katmanı ekle" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-close-outside" +msgstr "Dışarıya tıklandığında kapat" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-close-overlay" +msgstr "Üst katmanı kapat" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-close-overlay-dest" +msgstr "Üst katmanı kapat: %s" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-delay" +msgstr "Gecikme" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-destination" +msgstr "Hedef" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-mouse-enter" +msgstr "Fare girişi" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-mouse-leave" +msgstr "Fare çıkışı" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-ms" +msgstr "ms" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-navigate-to" +msgstr "Git" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-navigate-to-dest" +msgstr "Şuraya gidin: %s" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-none" +msgstr "(ayarlanmadı)" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-on-click" +msgstr "Tıklandığında" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-open-overlay" +msgstr "Üst katmanı aç" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-open-overlay-dest" +msgstr "Üst katmanı aç: %s" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-open-url" +msgstr "URL'yi aç" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-pos-bottom-center" +msgstr "Alt orta" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-pos-bottom-left" +msgstr "Sol alt" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-pos-bottom-right" +msgstr "Sağ alt" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-pos-center" +msgstr "Merkez" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-pos-manual" +msgstr "El ile" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-pos-top-center" +msgstr "Üst orta" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-pos-top-left" +msgstr "Sol üst" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-pos-top-right" +msgstr "Sağ üst" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-position" +msgstr "Konum" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-prev-screen" +msgstr "Önceki ekran" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-self" +msgstr "kendi" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-toggle-overlay" +msgstr "Üst katmanı değiştir" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-toggle-overlay-dest" +msgstr "Üst katmanı değiştir: %s" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-trigger" +msgstr "Tetikle" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-url" +msgstr "URL" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-while-hovering" +msgstr "Üzerinde Gezinirken" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-while-pressing" +msgstr "Basarken" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interactions" +msgstr "Etkileşimler" + +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs +msgid "workspace.options.layer-options.blend-mode.color-dodge" +msgstr "Renk atlatması" + +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs +msgid "workspace.options.layer-options.blend-mode.exclusion" +msgstr "Dışla" + +msgid "workspace.options.search-font" +msgstr "Yazı tipi ara" + +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs +msgid "workspace.options.selection-fill" +msgstr "Seçimi doldur" + +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs +msgid "workspace.options.selection-stroke" +msgstr "Seçimi çiz" + +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs +msgid "workspace.options.stroke-cap.triangle-arrow" +msgstr "Üçgen ok" + +#: src/app/main/ui/workspace/context_menu.cljs +msgid "workspace.shape.menu.delete-flow-start" +msgstr "Akış başlangıcını sil" + +msgid "workspace.shape.menu.difference" +msgstr "Fark" + +msgid "workspace.shape.menu.exclude" +msgstr "Dışla" + +msgid "workspace.shape.menu.flatten" +msgstr "Düzleştir" + +#: src/app/main/ui/workspace/context_menu.cljs +msgid "workspace.shape.menu.flow-start" +msgstr "Akış başlangıcı" + +msgid "workspace.shape.menu.intersection" +msgstr "Kesişme" + +msgid "workspace.shape.menu.path" +msgstr "Yol" + +msgid "workspace.shape.menu.transform-to-path" +msgstr "Yola dönüştür" + +msgid "workspace.shape.menu.union" +msgstr "Birleşim" From fb33366c9149320e21fa752370fb1bc92181c5a4 Mon Sep 17 00:00:00 2001 From: Marius Date: Fri, 29 Oct 2021 07:26:38 +0000 Subject: [PATCH 003/307] :globe_with_meridians: Add translations for: German. Currently translated at 99.3% (821 of 826 strings) Translation: Penpot/frontend Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/de/ --- frontend/translations/de.po | 261 +++++++++++++++++++++++++++++++++++- 1 file changed, 257 insertions(+), 4 deletions(-) diff --git a/frontend/translations/de.po b/frontend/translations/de.po index 53dc3c6df3..a5512fa9b1 100644 --- a/frontend/translations/de.po +++ b/frontend/translations/de.po @@ -1,9 +1,9 @@ msgid "" msgstr "" -"PO-Revision-Date: 2021-10-08 20:58+0000\n" +"PO-Revision-Date: 2021-11-01 03:34+0000\n" "Last-Translator: Marius \n" -"Language-Team: German " -"\n" +"Language-Team: German \n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" @@ -2975,4 +2975,257 @@ msgid "workspace.updates.update" msgstr "Aktualisieren" msgid "workspace.viewport.click-to-close-path" -msgstr "Klicken Sie, um den Pfad zu schließen" \ No newline at end of file +msgstr "Klicken Sie, um den Pfad zu schließen" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-mouse-leave" +msgstr "Mauszeiger-Austritt" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-mouse-enter" +msgstr "Mauszeiger-Eintritt" + +#: src/app/main/ui/workspace/sidebar/assets.cljs +msgid "workspace.assets.create-group-hint" +msgstr "" +"Ihre Elemente werden automatisch nach diesem Schema benannt: \"Gruppenname / " +"Elementname\"" + +msgid "onboarding.contrib.desc2.1" +msgstr "Sie können das Projekt" + +msgid "auth.privacy-policy" +msgstr "Datenschutzerklärung" + +msgid "auth.terms-of-service" +msgstr "Nutzungsbedingungen" + +msgid "dashboard.import.progress.process-colors" +msgstr "Farben werden verarbeitet" + +msgid "dashboard.import.progress.process-components" +msgstr "Komponenten werden verarbeitet" + +msgid "dashboard.import.progress.process-media" +msgstr "Medien werden verarbeitet" + +msgid "dashboard.import.progress.process-page" +msgstr "Seite %s wird verarbeitet" + +msgid "dashboard.import.progress.process-typographies" +msgstr "Textstile werden verarbeitet" + +msgid "dashboard.import.progress.upload-data" +msgstr "Daten werden hochgeladen (%s/%s)" + +msgid "dashboard.import.progress.upload-media" +msgstr "Datei %s wird hochgeladen" + +msgid "onboarding.contrib.desc1" +msgstr "" +"Penpot ist Open Source Software, die von und für die Gemeinschaft entwickelt " +"wurde. Wenn Sie mitarbeiten möchten, sind Sie mehr als willkommen!" + +msgid "onboarding.contrib.desc2.2" +msgstr "und mehr über die Richtlinien zum beitragen erfahren :)" + +msgid "onboarding.contrib.link" +msgstr "auf GitHub ansehen" + +msgid "onboarding.contrib.title" +msgstr "Open-Source-Mitwirkende?" + +msgid "onboarding.slide.0.alt" +msgstr "Gestalten Sie" + +msgid "viewer.breaking-change.description" +msgstr "" +"Dieser geteilte Link ist nicht mehr gültig. Erstellen Sie einen neuen oder " +"bitten Sie den Eigentümer um einen neuen Link." + +msgid "viewer.breaking-change.message" +msgstr "Entschuldigung!" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.add-interaction" +msgstr "Klicken Sie auf den + Button um Interaktionen hinzuzufügen." + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.flows.add-flow-start" +msgstr "Flow-Startpunkt hinzufügen" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.flows.flow-start" +msgstr "Flow-Startpunkt" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.flows.flow-starts" +msgstr "Flow-Startpunkte" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-action" +msgstr "Aktion" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-after-delay" +msgstr "nach einer Verzögerung" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-background" +msgstr "Hintergrund hinzufügen" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-close-outside" +msgstr "Schließen, wenn außerhalb geklickt wird" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-close-overlay" +msgstr "Overlay schließen" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-close-overlay-dest" +msgstr "Overlay %s schließen" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-delay" +msgstr "Verzögerung" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-destination" +msgstr "Ziel" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-open-overlay" +msgstr "Overlay öffnen" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-open-overlay-dest" +msgstr "Overlay %s öffnen" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-open-url" +msgstr "Url öffnen" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-pos-bottom-left" +msgstr "Unten links" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-pos-bottom-center" +msgstr "Unten mittig" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-pos-bottom-right" +msgstr "Unten rechts" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-ms" +msgstr "ms" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-none" +msgstr "(nicht festgelegt)" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-navigate-to-dest" +msgstr "Navigation zu: %s" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-navigate-to" +msgstr "Navigation zu" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-on-click" +msgstr "Beim Klicken" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-pos-center" +msgstr "Zentriert" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-pos-manual" +msgstr "Manuell" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-pos-top-center" +msgstr "Oben mittig" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-pos-top-left" +msgstr "Oben links" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-pos-top-right" +msgstr "Oben rechts" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-position" +msgstr "Position" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-prev-screen" +msgstr "Zum vorherigen Screen" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-self" +msgstr "sich selbst" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-toggle-overlay" +msgstr "Overlay-Sichtbarkeit umschalten" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-toggle-overlay-dest" +msgstr "Overlay-Sichtbarkeit für %s umschalten" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-trigger" +msgstr "Auslöser" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-url" +msgstr "URL" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-while-hovering" +msgstr "Beim Überfahren mit dem Mauszeiger" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-while-pressing" +msgstr "Bei gedrückter Maustaste" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interactions" +msgstr "Interaktionen" + +msgid "workspace.options.search-font" +msgstr "Schriftart suchen" + +#: src/app/main/ui/workspace/context_menu.cljs +msgid "workspace.shape.menu.delete-flow-start" +msgstr "Startpunkt löschen" + +msgid "workspace.shape.menu.exclude" +msgstr "Ausschließen" + +msgid "workspace.shape.menu.difference" +msgstr "Subtrahieren" + +msgid "workspace.shape.menu.flatten" +msgstr "Pfade reduzieren" + +msgid "workspace.shape.menu.union" +msgstr "Hinzufügen" + +msgid "workspace.shape.menu.path" +msgstr "Pfad" + +msgid "workspace.shape.menu.intersection" +msgstr "Überlappen" + +#: src/app/main/ui/workspace/context_menu.cljs +msgid "workspace.shape.menu.flow-start" +msgstr "Startpunkt" + +msgid "workspace.shape.menu.transform-to-path" +msgstr "In Pfade umwandeln" From 4ab0272fa66be79f70a4e96fa27846070564f81f Mon Sep 17 00:00:00 2001 From: Yaron Shahrabani Date: Wed, 27 Oct 2021 09:55:16 +0000 Subject: [PATCH 004/307] :globe_with_meridians: Add translations for: Hebrew. Currently translated at 99.8% (825 of 826 strings) Translation: Penpot/frontend Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/he/ --- frontend/translations/he.po | 130 +++++++++++++++++++++++++++++++++++- 1 file changed, 129 insertions(+), 1 deletion(-) diff --git a/frontend/translations/he.po b/frontend/translations/he.po index 7933c64b71..3a54188070 100644 --- a/frontend/translations/he.po +++ b/frontend/translations/he.po @@ -1,6 +1,6 @@ msgid "" msgstr "" -"PO-Revision-Date: 2021-10-27 09:49+0000\n" +"PO-Revision-Date: 2021-11-01 03:34+0000\n" "Last-Translator: Yaron Shahrabani \n" "Language-Team: Hebrew \n" @@ -3055,3 +3055,131 @@ msgstr "מילישניות" #: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs msgid "workspace.options.interaction-navigate-to" msgstr "ניווט אל" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-navigate-to-dest" +msgstr "ניווט אל: %s" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-none" +msgstr "(לא הוגדר)" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-on-click" +msgstr "בלחיצה" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-open-overlay" +msgstr "פתיחת שכבת על" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-open-overlay-dest" +msgstr "פתיחת שכבת על: %s" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-open-url" +msgstr "פתיחת כתובת" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-pos-bottom-center" +msgstr "בתחתית במרכז" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-pos-bottom-left" +msgstr "בתחתית משמאל" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-pos-bottom-right" +msgstr "בתחתית מימין" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-pos-center" +msgstr "מרכז" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-pos-manual" +msgstr "ידני" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-pos-top-center" +msgstr "בראש באמצע" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-pos-top-left" +msgstr "בראש משמאל" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-pos-top-right" +msgstr "בראש מימין" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-position" +msgstr "מיקום" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-prev-screen" +msgstr "המסך הקודם" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-self" +msgstr "עצמי" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-toggle-overlay" +msgstr "החלפת מצב שכבת על" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-toggle-overlay-dest" +msgstr "החלפת מצב שכבת על: %s" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-trigger" +msgstr "הקפצה" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-url" +msgstr "כתובת" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-while-hovering" +msgstr "בזמן ריחוף" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interaction-while-pressing" +msgstr "בזמן לחיצה" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +msgid "workspace.options.interactions" +msgstr "אינטראקציות" + +msgid "workspace.options.search-font" +msgstr "חיפוש גופן" + +#: src/app/main/ui/workspace/context_menu.cljs +msgid "workspace.shape.menu.delete-flow-start" +msgstr "מחיקת התחלת זרימה" + +msgid "workspace.shape.menu.difference" +msgstr "הבדל" + +msgid "workspace.shape.menu.exclude" +msgstr "החרגה" + +msgid "workspace.shape.menu.flatten" +msgstr "שיטוח" + +#: src/app/main/ui/workspace/context_menu.cljs +msgid "workspace.shape.menu.flow-start" +msgstr "התחלת זרימה" + +msgid "workspace.shape.menu.intersection" +msgstr "הצלבה" + +msgid "workspace.shape.menu.path" +msgstr "נתיב" + +msgid "workspace.shape.menu.transform-to-path" +msgstr "המרה לנתיב" + +msgid "workspace.shape.menu.union" +msgstr "איחוד" From 40326177fd1e00b1cd926e3d9ffadbbdbfc8a74c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E6=81=A9=E9=80=A2?= Date: Sat, 30 Oct 2021 04:50:33 +0000 Subject: [PATCH 005/307] :globe_with_meridians: Add translations for: Chinese (Traditional). Currently translated at 23.2% (192 of 826 strings) Translation: Penpot/frontend Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/zh_Hant/ --- frontend/translations/zh_Hant.po | 725 ++++++++++++++++++++++++++++++- 1 file changed, 723 insertions(+), 2 deletions(-) diff --git a/frontend/translations/zh_Hant.po b/frontend/translations/zh_Hant.po index b1fc23594e..4608e584a1 100644 --- a/frontend/translations/zh_Hant.po +++ b/frontend/translations/zh_Hant.po @@ -1,6 +1,727 @@ msgid "" msgstr "" -"X-Generator: Weblate\n" +"PO-Revision-Date: 2021-11-01 03:34+0000\n" +"Last-Translator: 曹恩逢 \n" +"Language-Team: Chinese (Traditional) \n" +"Language: zh_Hant\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" \ No newline at end of file +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.9-dev\n" + +#: src/app/main/ui/auth/register.cljs +msgid "auth.demo-warning" +msgstr "此服務僅用於展示,請勿用於實際工作。專案將被定期清除。" + +#: src/app/main/ui/auth/register.cljs +msgid "auth.already-have-account" +msgstr "已經有帳號了嗎?" + +#: src/app/main/ui/auth/recovery.cljs +msgid "auth.confirm-password" +msgstr "確認密碼" + +#: src/app/main/ui/auth/register.cljs, src/app/main/ui/auth/login.cljs +msgid "auth.create-demo-account" +msgstr "建立展示帳號" + +#: src/app/main/ui/auth/register.cljs, src/app/main/ui/auth/login.cljs +msgid "auth.create-demo-profile" +msgstr "只是想試試看嗎?" + +#: src/app/main/ui/auth/register.cljs, src/app/main/ui/auth/recovery_request.cljs, src/app/main/ui/auth/login.cljs +msgid "auth.email" +msgstr "電子郵件" + +#: src/app/main/ui/auth/login.cljs +msgid "auth.forgot-password" +msgstr "忘記密碼?" + +#: src/app/main/ui/auth/register.cljs +msgid "auth.fullname" +msgstr "全名" + +#: src/app/main/ui/auth/register.cljs +msgid "auth.login-here" +msgstr "在此登入" + +#: src/app/main/ui/auth/login.cljs +msgid "auth.login-submit" +msgstr "登入" + +#: src/app/main/ui/auth/login.cljs +msgid "auth.login-title" +msgstr "很高興再次見到你!" + +#: src/app/main/ui/auth/login.cljs +msgid "auth.login-with-github-submit" +msgstr "透過 GitHub 登入" + +#: src/app/main/ui/auth/login.cljs +msgid "auth.login-with-gitlab-submit" +msgstr "透過 GitLab 登入" + +#: src/app/main/ui/auth/login.cljs +msgid "auth.login-with-google-submit" +msgstr "透過 Google 登入" + +#: src/app/main/ui/auth/login.cljs +msgid "auth.login-with-ldap-submit" +msgstr "透過 LDAP 登入" + +#: src/app/main/ui/auth/login.cljs +msgid "auth.login-with-oidc-submit" +msgstr "使用 OpenID (SSO) 登入" + +#: src/app/main/ui/auth/recovery.cljs +msgid "auth.new-password" +msgstr "輸入新密碼" + +#: src/app/main/ui/auth/recovery.cljs +msgid "auth.notifications.password-changed-succesfully" +msgstr "成功修改密碼" + +#: src/app/main/ui/auth/verify_token.cljs +msgid "auth.notifications.team-invitation-accepted" +msgstr "成功加入團隊" + +#: src/app/main/ui/auth/register.cljs, src/app/main/ui/auth/login.cljs +msgid "auth.password" +msgstr "密碼" + +msgid "dashboard.export.options.all.title" +msgstr "匯出共享媒體庫" + +msgid "dashboard.export.title" +msgstr "匯出檔案" + +msgid "dashboard.fonts.deleted-placeholder" +msgstr "已刪除字型" + +#: src/app/main/ui/dashboard/grid.cljs +msgid "dashboard.loading-files" +msgstr "正在載入檔案…" + +msgid "dashboard.loading-fonts" +msgstr "正在載入字型…" + +#: src/app/main/ui/dashboard/file_menu.cljs +msgid "dashboard.move-to-multi" +msgstr "將 %s 個檔案移動至" + +msgid "dashboard.import" +msgstr "匯入檔案" + +msgid "dashboard.import.analyze-error" +msgstr "喔不!我們無法匯入此檔案" + +msgid "dashboard.import.import-error" +msgstr "匯入檔案時發生錯誤。檔案未匯入。" + +msgid "dashboard.import.import-message" +msgstr "已成功匯入 %s 個檔案。" + +msgid "dashboard.options" +msgstr "選項" + +#: src/app/main/ui/auth/verify_token.cljs +msgid "dashboard.notifications.email-changed-successfully" +msgstr "已成功更改您的電子郵件地址" + +#: src/app/main/ui/auth/verify_token.cljs +msgid "dashboard.notifications.email-verified-successfully" +msgstr "已成功驗證您的電子郵件地址" + +#: src/app/main/ui/dashboard/file_menu.cljs +msgid "dashboard.open-in-new-tab" +msgstr "在新分頁開啟檔案" + +#: src/app/main/data/dashboard.cljs +msgid "dashboard.new-project-prefix" +msgstr "新專案" + +#: src/app/main/ui/settings/password.cljs +msgid "dashboard.password-change" +msgstr "修改密碼" + +#: src/app/main/ui/dashboard/project_menu.cljs +msgid "dashboard.pin-unpin" +msgstr "釘選/取消釘選" + +#: src/app/main/ui/dashboard/projects.cljs +msgid "dashboard.projects-title" +msgstr "專案" + +#: src/app/main/ui/settings/profile.cljs +msgid "dashboard.remove-account" +msgstr "想要移除您的帳號嗎?" + +#: src/app/main/ui/dashboard/file_menu.cljs +msgid "dashboard.success-move-files" +msgstr "已成功移動您的檔案" + +#: src/app/main/ui/dashboard/grid.cljs, src/app/main/ui/dashboard/sidebar.cljs, src/app/main/ui/dashboard/file_menu.cljs +msgid "dashboard.success-move-file" +msgstr "已成功移動您的檔案" + +#: src/app/main/ui/dashboard/project_menu.cljs +msgid "dashboard.success-move-project" +msgstr "已成功移動您的專案" + +#: src/app/main/ui/dashboard/sidebar.cljs +msgid "dashboard.search-placeholder" +msgstr "搜尋…" + +#: src/app/main/ui/dashboard/grid.cljs +msgid "dashboard.show-all-files" +msgstr "顯示所有檔案" + +#: src/app/main/ui/dashboard/file_menu.cljs +msgid "dashboard.success-delete-file" +msgstr "已成功刪除您的檔案" + +#: src/app/main/ui/dashboard/project_menu.cljs +msgid "dashboard.success-delete-project" +msgstr "已成功刪除您的專案" + +#: src/app/main/ui/settings/profile.cljs +msgid "dashboard.your-email" +msgstr "電子郵件" + +#: src/app/main/ui/settings/options.cljs +msgid "dashboard.theme-change" +msgstr "介面主題" + +#: src/app/main/ui/dashboard/search.cljs +msgid "dashboard.title-search" +msgstr "搜尋結果" + +#: src/app/main/ui/settings.cljs +msgid "dashboard.your-account-title" +msgstr "您的帳號" + +#: src/app/main/ui/confirm.cljs +msgid "ds.confirm-cancel" +msgstr "取消" + +#: src/app/main/ui/confirm.cljs +msgid "ds.confirm-ok" +msgstr "Ok" + +#: src/app/main/ui/confirm.cljs, src/app/main/ui/confirm.cljs +msgid "ds.confirm-title" +msgstr "您確定嗎?" + +#: src/app/main/ui/components/color_input.cljs +msgid "errors.invalid-color" +msgstr "顏色無效" + +#: src/app/main/ui/auth/login.cljs +msgid "errors.ldap-disabled" +msgstr "LDAP 驗證已停用。" + +msgid "errors.terms-privacy-agreement-invalid" +msgstr "您必須接受我們的服務條款和隱私權政策。" + +#: src/app/main/ui/auth/verify_token.cljs +msgid "errors.token-expired" +msgstr "權杖過期" + +#: src/app/main/ui/settings/feedback.cljs +msgid "feedback.title" +msgstr "電子郵件" + +#: src/app/main/ui/settings/password.cljs +msgid "errors.wrong-old-password" +msgstr "舊密碼不正確" + +#: src/app/main/ui/handoff/attributes/blur.cljs +msgid "handoff.attributes.blur.value" +msgstr "數值" + +#: src/app/main/ui/handoff/attributes/common.cljs +msgid "handoff.attributes.color.hex" +msgstr "HEX" + +#: src/app/main/ui/handoff/attributes/image.cljs +msgid "handoff.attributes.image.download" +msgstr "下載原始圖片" + +#: src/app/main/ui/handoff/attributes/image.cljs +msgid "handoff.attributes.image.height" +msgstr "高度" + +#: src/app/main/ui/handoff/attributes/image.cljs +msgid "handoff.attributes.image.width" +msgstr "寬度" + +#: src/app/main/ui/handoff/attributes/layout.cljs +msgid "handoff.attributes.layout" +msgstr "樣式" + +#: src/app/main/ui/handoff/attributes/layout.cljs +msgid "handoff.attributes.layout.height" +msgstr "高度" + +#: src/app/main/ui/handoff/attributes/layout.cljs +msgid "handoff.attributes.layout.left" +msgstr "左" + +#: src/app/main/ui/handoff/attributes/common.cljs +msgid "handoff.attributes.color.hsla" +msgstr "HSLA" + +#: src/app/main/ui/handoff/attributes/common.cljs +msgid "handoff.attributes.color.rgba" +msgstr "RGBA" + +#: src/app/main/ui/handoff/attributes/shadow.cljs +msgid "handoff.attributes.shadow.shorthand.blur" +msgstr "B" + +#: src/app/main/ui/handoff/attributes/shadow.cljs +msgid "handoff.attributes.shadow.shorthand.offset-x" +msgstr "X" + +#: src/app/main/ui/handoff/attributes/shadow.cljs +msgid "handoff.attributes.shadow.shorthand.offset-y" +msgstr "Y" + +#: src/app/main/ui/handoff/attributes/shadow.cljs +msgid "handoff.attributes.shadow.shorthand.spread" +msgstr "S" + +msgid "labels.accept" +msgstr "接受" + +#: src/app/main/ui/dashboard/team.cljs, src/app/main/ui/dashboard/team.cljs, src/app/main/ui/dashboard/team.cljs +msgid "labels.admin" +msgstr "管理員" + +#: src/app/main/ui/workspace/comments.cljs +msgid "labels.all" +msgstr "全部" + +msgid "handoff.tabs.code.selected.svg-raw" +msgstr "SVG" + +msgid "handoff.tabs.code.selected.text" +msgstr "文字" + +#: src/app/main/ui/handoff/right_sidebar.cljs +msgid "handoff.tabs.info" +msgstr "資訊" + +#: src/app/main/ui/dashboard/sidebar.cljs +msgid "labels.cancel" +msgstr "取消" + +msgid "labels.close" +msgstr "關閉" + +msgid "labels.continue" +msgstr "繼續" + +#: src/app/main/ui/workspace/sidebar/assets.cljs +msgid "labels.create" +msgstr "建立" + +#: src/app/main/ui/settings/sidebar.cljs +msgid "labels.dashboard" +msgstr "控制台" + +#: src/app/main/ui/dashboard/team_form.cljs, src/app/main/ui/dashboard/team_form.cljs +msgid "labels.create-team" +msgstr "建立新團隊" + +#: src/app/main/ui/dashboard/team_form.cljs +msgid "labels.create-team.placeholder" +msgstr "輸入新團隊名稱" + +msgid "labels.default" +msgstr "預設" + +#: src/app/main/ui/dashboard/project_menu.cljs, src/app/main/ui/dashboard/file_menu.cljs +msgid "labels.delete" +msgstr "刪除" + +#: src/app/main/ui/comments.cljs +msgid "labels.edit" +msgstr "編輯" + +msgid "labels.edit-file" +msgstr "編輯檔案" + +#: src/app/main/ui/dashboard/team.cljs, src/app/main/ui/dashboard/team.cljs, src/app/main/ui/dashboard/team.cljs +msgid "labels.editor" +msgstr "編輯者" + +#: src/app/main/ui/dashboard/team.cljs, src/app/main/ui/dashboard/team.cljs +msgid "labels.email" +msgstr "電子郵件" + +msgid "labels.fonts" +msgstr "字型" + +msgid "labels.icons" +msgstr "圖示" + +msgid "labels.images" +msgstr "圖片" + +msgid "labels.export" +msgstr "匯出" + +msgid "labels.go-back" +msgstr "返回" + +#: src/app/main/ui/settings/options.cljs +msgid "labels.language" +msgstr "語言" + +msgid "labels.link" +msgstr "連結" + +#: src/app/main/ui/dashboard/team.cljs, src/app/main/ui/dashboard/team.cljs, src/app/main/ui/dashboard/sidebar.cljs +msgid "labels.members" +msgstr "成員" + +#: src/app/main/ui/dashboard/team.cljs +msgid "labels.name" +msgstr "名稱" + +#: src/app/main/ui/settings.cljs, src/app/main/ui/dashboard/sidebar.cljs +msgid "labels.logout" +msgstr "登出" + +#: src/app/main/ui/static.cljs +msgid "labels.not-found.main-message" +msgstr "喔不!" + +#: src/app/main/ui/dashboard/team.cljs +msgid "labels.num-of-files" +msgid_plural "labels.num-of-files" +msgstr[0] "%s 個檔案" + +msgid "labels.or" +msgstr "或" + +#: src/app/main/ui/dashboard/team.cljs, src/app/main/ui/dashboard/team.cljs +msgid "labels.owner" +msgstr "擁有者" + +#: src/app/main/ui/settings/sidebar.cljs, src/app/main/ui/dashboard/sidebar.cljs +msgid "labels.password" +msgstr "密碼" + +#: src/app/main/ui/dashboard/team.cljs +msgid "labels.permissions" +msgstr "權限" + +#: src/app/main/ui/settings/sidebar.cljs, src/app/main/ui/dashboard/sidebar.cljs +msgid "labels.profile" +msgstr "個人檔案" + +#: src/app/main/ui/dashboard/sidebar.cljs +msgid "labels.projects" +msgstr "專案" + +msgid "labels.recent" +msgstr "最近" + +#: src/app/main/ui/settings/sidebar.cljs +msgid "labels.release-notes" +msgstr "更新日誌" + +#: src/app/main/ui/workspace/libraries.cljs, src/app/main/ui/dashboard/team.cljs +msgid "labels.remove" +msgstr "移除" + +#: src/app/main/ui/dashboard/sidebar.cljs, src/app/main/ui/dashboard/project_menu.cljs, src/app/main/ui/dashboard/file_menu.cljs +msgid "labels.rename" +msgstr "重新命名" + +#: src/app/main/ui/static.cljs, src/app/main/ui/static.cljs, src/app/main/ui/static.cljs +msgid "labels.retry" +msgstr "重試" + +msgid "labels.save" +msgstr "儲存" + +#: src/app/main/ui/settings/feedback.cljs +msgid "labels.send" +msgstr "傳送" + +#: src/app/main/ui/settings/feedback.cljs +msgid "labels.sending" +msgstr "正在傳送…" + +#: src/app/main/ui/dashboard/project_menu.cljs +msgid "modals.delete-project-confirm.message" +msgstr "您確定要刪除這個專案嗎?" + +#: src/app/main/ui/workspace/sidebar/sitemap.cljs +msgid "modals.delete-page.body" +msgstr "您確定要刪除這個頁面嗎?" + +#: src/app/main/ui/dashboard/project_menu.cljs +msgid "modals.delete-project-confirm.accept" +msgstr "刪除專案" + +#: src/app/main/ui/dashboard/project_menu.cljs +msgid "modals.delete-project-confirm.title" +msgstr "刪除專案" + +#: src/app/main/ui/dashboard/sidebar.cljs +msgid "modals.leave-confirm.message" +msgstr "您確定要離開這個團隊嗎?" + +#: src/app/main/ui/settings/change_email.cljs +msgid "notifications.validation-email-sent" +msgstr "已將驗證信傳送至 %s。請查看您的電子郵件信箱!" + +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs, src/app/main/ui/workspace/context_menu.cljs +msgid "modals.update-remote-component.cancel" +msgstr "取消" + +msgid "onboarding.contrib.alt" +msgstr "開放原始碼" + +msgid "onboarding.contrib.desc2.1" +msgstr "您能夠存取" + +msgid "onboarding.team.create.desc1" +msgstr "您正在與他人協作嗎?建立團隊以共同作業和分享設計資源。" + +msgid "onboarding.welcome.desc1" +msgstr "" + +msgid "onboarding.team.create.input-placeholder" +msgstr "輸入新團隊名稱" + +msgid "onboarding.welcome.alt" +msgstr "Penpot" + +msgid "onboarding.welcome.title" +msgstr "歡迎使用 Penpot!" + +#: src/app/main/ui/viewer/header.cljs +msgid "viewer.header.share.copy-link" +msgstr "複製連結" + +#: src/app/main/ui/viewer/header.cljs +msgid "viewer.header.share.create-link" +msgstr "建立連結" + +#: src/app/main/ui/viewer/header.cljs +msgid "viewer.header.share.remove-link" +msgstr "移除連結" + +#: src/app/main/ui/workspace/sidebar/assets.cljs, src/app/main/ui/workspace/sidebar/assets.cljs +msgid "workspace.assets.colors" +msgstr "顏色" + +#: src/app/main/ui/workspace/sidebar/assets.cljs, src/app/main/ui/workspace/sidebar/assets.cljs +msgid "workspace.assets.components" +msgstr "元件" + +#: src/app/main/ui/workspace/sidebar/sitemap.cljs, src/app/main/ui/workspace/sidebar/assets.cljs, src/app/main/ui/workspace/sidebar/assets.cljs, src/app/main/ui/workspace/sidebar/assets.cljs, src/app/main/ui/workspace/sidebar/assets.cljs +msgid "workspace.assets.delete" +msgstr "刪除" + +#: src/app/main/ui/workspace/sidebar/assets.cljs, src/app/main/ui/workspace/sidebar/assets.cljs +msgid "workspace.assets.edit" +msgstr "編輯" + +#: src/app/main/ui/workspace/sidebar/sitemap.cljs, src/app/main/ui/workspace/sidebar/assets.cljs, src/app/main/ui/workspace/sidebar/assets.cljs, src/app/main/ui/workspace/sidebar/assets.cljs, src/app/main/ui/workspace/sidebar/assets.cljs +msgid "workspace.assets.rename" +msgstr "重新命名" + +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs +msgid "workspace.assets.typography.font-id" +msgstr "字型" + +#: src/app/main/ui/workspace/header.cljs +msgid "workspace.header.saved" +msgstr "已儲存" + +#: src/app/main/ui/workspace/header.cljs +msgid "workspace.header.saving" +msgstr "正在儲存" + +#: src/app/main/ui/workspace/libraries.cljs +msgid "workspace.libraries.add" +msgstr "新增" + +#: src/app/main/ui/workspace/colorpicker.cljs +msgid "workspace.libraries.colors.hsv" +msgstr "HSV" + +#: src/app/main/ui/workspace/colorpicker.cljs +msgid "workspace.libraries.colors.rgba" +msgstr "RGBA" + +#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs, src/app/main/ui/handoff/exports.cljs +msgid "workspace.options.export" +msgstr "匯出" + +#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs, src/app/main/ui/handoff/exports.cljs +msgid "workspace.options.exporting-object" +msgstr "正在匯出…" + +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs +msgid "workspace.options.grid.auto" +msgstr "自動" + +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs +msgid "workspace.options.grid.params.type" +msgstr "類型" + +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs +msgid "workspace.options.layer-options.blend-mode.color" +msgstr "顏色" + +msgid "auth.privacy-policy" +msgstr "隱私權政策" + +#: src/app/main/ui/auth/register.cljs +msgid "auth.terms-privacy-agreement" +msgstr "建立新帳號即表示您同意我們的服務條款及隱私權政策。" + +#: src/app/main/ui/auth/recovery.cljs +msgid "auth.recovery-submit" +msgstr "修改密碼" + +#: src/app/main/ui/auth/login.cljs +msgid "auth.register" +msgstr "還沒有帳號嗎?" + +#: src/app/main/ui/auth/register.cljs, src/app/main/ui/auth/login.cljs +msgid "auth.register-submit" +msgstr "建立帳號" + +#: src/app/main/ui/auth/register.cljs +msgid "auth.register-title" +msgstr "建立帳號" + +msgid "auth.terms-of-service" +msgstr "服務條款" + +msgid "common.share-link.get-link" +msgstr "取得連結" + +msgid "common.share-link.link-copied-success" +msgstr "成功複製連結" + +msgid "common.share-link.link-deleted-success" +msgstr "成功刪除連結" + +msgid "common.share-link.permissions-can-access" +msgstr "能夠存取" + +msgid "dashboard.draft-title" +msgstr "草稿" + +#: src/app/main/ui/dashboard/project_menu.cljs, src/app/main/ui/dashboard/file_menu.cljs +msgid "dashboard.duplicate" +msgstr "複製" + +msgid "common.share-link.permissions-can-view" +msgstr "能夠檢視" + +msgid "common.share-link.remove-link" +msgstr "移除連結" + +msgid "common.share-link.view-all-pages" +msgstr "所有頁面" + +msgid "common.share-link.view-current-page" +msgstr "僅此頁面" + +msgid "common.share-link.view-selected-pages" +msgstr "選擇的頁面" + +#: src/app/main/data/dashboard.cljs, src/app/main/data/dashboard.cljs +msgid "dashboard.copy-suffix" +msgstr "(複製)" + +msgid "dashboard.export-multi" +msgstr "匯出 %s 個檔案" + +msgid "dashboard.export-single" +msgstr "匯出檔案" + +msgid "dashboard.import.progress.process-colors" +msgstr "正在處理顏色" + +msgid "dashboard.import.progress.process-components" +msgstr "正在處理元件" + +msgid "dashboard.import.progress.process-media" +msgstr "正在處理媒體" + +msgid "dashboard.import.progress.upload-media" +msgstr "正在上傳檔案:%s" + +msgid "dashboard.import.progress.process-page" +msgstr "正在處理第 %s 頁" + +#: src/app/main/ui/settings/sidebar.cljs, src/app/main/ui/dashboard/team.cljs, src/app/main/ui/dashboard/team.cljs, src/app/main/ui/dashboard/sidebar.cljs +msgid "labels.settings" +msgstr "設定" + +#: src/app/main/ui/static.cljs +msgid "labels.sign-out" +msgstr "登出" + +#: src/app/main/ui/dashboard/team.cljs +msgid "labels.viewer" +msgstr "檢視者" + +#: src/app/main/ui/settings/change_email.cljs +msgid "modals.change-email.info" +msgstr "我們將寄送郵件至您目前的電子郵件信箱 “%s” 以確認身分。" + +msgid "labels.skip" +msgstr "跳過" + +msgid "labels.start" +msgstr "開始" + +#: src/app/main/ui/settings/profile.cljs +msgid "labels.update" +msgstr "更新" + +msgid "labels.upload" +msgstr "上傳" + +msgid "labels.uploading" +msgstr "正在上傳…" + +msgid "labels.workspace" +msgstr "工作區" + +#: src/app/main/data/workspace/persistence.cljs, src/app/main/data/workspace/persistence.cljs, src/app/main/data/media.cljs +msgid "media.loading" +msgstr "正在載入圖片…" + +#: src/app/main/ui/settings/delete_account.cljs +msgid "modals.delete-account.title" +msgstr "您確定要刪除您的帳號嗎?" + +#: src/app/main/ui/dashboard/file_menu.cljs +msgid "modals.delete-file-confirm.message" +msgstr "您確定要刪除這個檔案嗎?" + +#: src/app/main/ui/dashboard/file_menu.cljs +msgid "modals.delete-file-multi-confirm.message" +msgstr "您確定要刪除 %s 個檔案嗎?" + +#: src/app/main/ui/settings/delete_account.cljs +msgid "modals.delete-account.confirm" +msgstr "是的,請刪除我的帳號" + +msgid "viewer.breaking-change.message" +msgstr "抱歉!" From 17da51440c59f6c11f7bbb213d837a277dbd81ef Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Fri, 12 Nov 2021 12:34:50 +0100 Subject: [PATCH 006/307] :paperclip: Change loggling level on oauth ns. --- backend/src/app/http/oauth.clj | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/backend/src/app/http/oauth.clj b/backend/src/app/http/oauth.clj index faa2c247e5..1e0b67498f 100644 --- a/backend/src/app/http/oauth.clj +++ b/backend/src/app/http/oauth.clj @@ -58,8 +58,7 @@ {:token (get data "access_token") :type (get data "token_type")}))) (catch Exception e - (l/error :hint "unexpected error on retrieve-access-token" - :cause e) + (l/warn :hint "unexpected error on retrieve-access-token" :cause e) nil))) (defn- qualify-props @@ -86,8 +85,7 @@ :props (->> (dissoc info :name :email) (qualify-props provider))}))) (catch Exception e - (l/error :hint "unexpected exception on retrieve-user-info" - :cause e) + (l/warn :hint "unexpected exception on retrieve-user-info" :cause e) nil))) (s/def ::backend ::us/not-empty-string) From 66b0039566b53722de728cb6cda4784b85aefc4e Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Fri, 12 Nov 2021 12:36:32 +0100 Subject: [PATCH 007/307] :paperclip: Fix linter issues. --- frontend/src/app/main/ui/onboarding.cljs | 2 +- frontend/src/app/main/ui/releases/v1_10.cljs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/src/app/main/ui/onboarding.cljs b/frontend/src/app/main/ui/onboarding.cljs index 2120a988f5..d70f633411 100644 --- a/frontend/src/app/main/ui/onboarding.cljs +++ b/frontend/src/app/main/ui/onboarding.cljs @@ -17,13 +17,13 @@ [app.main.ui.components.forms :as fm] [app.main.ui.icons :as i] [app.main.ui.releases.common :as rc] + [app.main.ui.releases.v1-10] [app.main.ui.releases.v1-4] [app.main.ui.releases.v1-5] [app.main.ui.releases.v1-6] [app.main.ui.releases.v1-7] [app.main.ui.releases.v1-8] [app.main.ui.releases.v1-9] - [app.main.ui.releases.v1-10] [app.util.dom :as dom] [app.util.http :as http] [app.util.i18n :as i18n :refer [tr]] diff --git a/frontend/src/app/main/ui/releases/v1_10.cljs b/frontend/src/app/main/ui/releases/v1_10.cljs index 7c4a6fe9c2..5153a08b05 100644 --- a/frontend/src/app/main/ui/releases/v1_10.cljs +++ b/frontend/src/app/main/ui/releases/v1_10.cljs @@ -10,7 +10,7 @@ [rumext.alpha :as mf])) (defmethod c/render-release-notes "1.10" - [{:keys [slide klass next finish navigate version]}] + [{:keys [klass finish version]}] (mf/html [:div.modal-overlay [:div.animated {:class @klass} From c57219a3569b36396e555efe71056ca909c23b68 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Fri, 12 Nov 2021 13:31:28 +0100 Subject: [PATCH 008/307] :paperclip: Allow specify the build optimization leven using env vars. --- frontend/shadow-cljs.edn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/shadow-cljs.edn b/frontend/shadow-cljs.edn index 942e2c93d1..679a30a5dd 100644 --- a/frontend/shadow-cljs.edn +++ b/frontend/shadow-cljs.edn @@ -4,7 +4,6 @@ :jvm-opts ["-Xmx700m" "-Xms100m" "-XX:+UseSerialGC" "-XX:-OmitStackTraceInFastThrow"] :dev-http {8888 "classpath:public"} - :builds {:main {:target :browser @@ -33,6 +32,7 @@ goog.debug.LOGGING_ENABLED true} :compiler-options {:fn-invoke-direct true + :optimizations #shadow/env ["PENPOT_BUILD_OPTIMIZATIONS" :as :keyword :default :advanced] :source-map true :elide-asserts true :anon-fn-naming-policy :off From 4962e45bd968e4c0976bad80a70ff87a6546d1f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Moya?= Date: Fri, 5 Nov 2021 13:08:28 +0100 Subject: [PATCH 009/307] :sparkles: Change tool for exporting artboards and fix some issues --- CHANGES.md | 3 ++ docker/devenv/Dockerfile | 1 + docker/gitpod/Dockerfile | 1 + docker/images/Dockerfile.exporter | 1 + exporter/src/app/http/export_frames.cljs | 32 +++++++------- .../src/app/main/ui/workspace/header.cljs | 42 ++++++++++--------- 6 files changed, 46 insertions(+), 34 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 70dc26d639..24bcd84e07 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -5,6 +5,9 @@ ### :boom: Breaking changes ### :sparkles: New features ### :bug: Bugs fixed + +- Fix problems when exporting all artboards [Taiga #2234](https://tree.taiga.io/project/penpot/issue/2234). + ### :arrow_up: Deps updates ### :heart: Community contributions by (Thank you!) diff --git a/docker/devenv/Dockerfile b/docker/devenv/Dockerfile index 3fc07920a4..602c6aa6ba 100644 --- a/docker/devenv/Dockerfile +++ b/docker/devenv/Dockerfile @@ -47,6 +47,7 @@ RUN set -ex; \ imagemagick \ ghostscript \ netpbm \ + poppler-utils \ potrace \ webp \ nginx \ diff --git a/docker/gitpod/Dockerfile b/docker/gitpod/Dockerfile index 00d9069764..1ed6876348 100644 --- a/docker/gitpod/Dockerfile +++ b/docker/gitpod/Dockerfile @@ -12,6 +12,7 @@ RUN set -ex; \ brew install ghostscript; \ brew install mailhog; \ brew install openldap; \ + brew install poppler-utils; \ sudo mkdir -p /var/log/nginx; \ sudo chown gitpod:gitpod /var/log/nginx diff --git a/docker/images/Dockerfile.exporter b/docker/images/Dockerfile.exporter index 9a4f6e215a..84cd010bb8 100644 --- a/docker/images/Dockerfile.exporter +++ b/docker/images/Dockerfile.exporter @@ -23,6 +23,7 @@ RUN set -ex; \ imagemagick \ ghostscript \ netpbm \ + poppler-utils \ potrace \ gconf-service \ libasound2 \ diff --git a/exporter/src/app/http/export_frames.cljs b/exporter/src/app/http/export_frames.cljs index 86339e6e1b..d21462a90b 100644 --- a/exporter/src/app/http/export_frames.cljs +++ b/exporter/src/app/http/export_frames.cljs @@ -35,13 +35,13 @@ :object-id frame-id :scale 1 :save-path spath})] - (cons spath spaths))) + (conj spaths spath))) (defn- join-files [tdpath file-id paths] (let [output-path (path/join tdpath (str file-id ".pdf")) paths-str (str/join " " paths)] - (-> (sh/run-cmd! (str "gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile='" output-path "' " paths-str)) + (-> (sh/run-cmd! (str "pdfunite " paths-str " " output-path)) (p/then (constantly output-path))))) (defn- clean-tmp-data @@ -54,16 +54,20 @@ [{:keys [params cookies] :as request}] (let [{:keys [name file-id page-id frame-ids]} (us/conform ::handler-params params) token (.get ^js cookies "auth-token")] - (p/let [tdpath (sh/create-tmpdir! "pdfexport-") - data (-> (reduce (fn [promis frame-id] - (p/then promis (partial export-frame tdpath file-id page-id token frame-id))) - (p/future []) - frame-ids) - (p/then (partial join-files tdpath file-id)) - (p/then sh/read-file) - (p/then (partial clean-tmp-data tdpath)))] - {:status 200 - :body data - :headers {"content-type" "application/pdf" - "content-length" (.-length data)}}))) + (if (seq frame-ids) + (p/let [tdpath (sh/create-tmpdir! "pdfexport-") + data (-> (reduce (fn [promis frame-id] + (p/then promis (partial export-frame tdpath file-id page-id token frame-id))) + (p/future []) + (reverse frame-ids)) + (p/then (partial join-files tdpath file-id)) + (p/then sh/read-file) + (p/then (partial clean-tmp-data tdpath)))] + {:status 200 + :body data + :headers {"content-type" "application/pdf" + "content-length" (.-length data)}}) + {:status 204 + :body "" + :headers {"content-type" "text/plain"}}))) diff --git a/frontend/src/app/main/ui/workspace/header.cljs b/frontend/src/app/main/ui/workspace/header.cljs index 5b817509f7..17296aad60 100644 --- a/frontend/src/app/main/ui/workspace/header.cljs +++ b/frontend/src/app/main/ui/workspace/header.cljs @@ -95,9 +95,9 @@ (mf/defc menu [{:keys [layout project file team-id page-id] :as props}] (let [show-menu? (mf/use-state false) - editing? (mf/use-state false) + editing? (mf/use-state false) - frames (mf/deref refs/workspace-frames) + frames (mf/deref refs/workspace-frames) edit-input-ref (mf/use-ref nil) @@ -166,23 +166,24 @@ on-export-frames (mf/use-callback - (mf/deps file) + (mf/deps file frames) (fn [_] - (let [filename (str (:name file) ".pdf") - frame-ids (mapv :id frames)] - (st/emit! (dm/info (tr "workspace.options.exporting-object") - {:timeout nil})) - (->> (rp/query! :export-frames - {:name (:name file) - :file-id (:id file) - :page-id page-id - :frame-ids frame-ids}) - (rx/subs - (fn [body] - (dom/trigger-download filename body)) - (fn [_error] - (st/emit! (dm/error (tr "errors.unexpected-error")))) - (st/emitf dm/hide))))))] + (when (seq frames) + (let [filename (str (:name file) ".pdf") + frame-ids (mapv :id frames)] + (st/emit! (dm/info (tr "workspace.options.exporting-object") + {:timeout nil})) + (->> (rp/query! :export-frames + {:name (:name file) + :file-id (:id file) + :page-id page-id + :frame-ids frame-ids}) + (rx/subs + (fn [body] + (dom/trigger-download filename body)) + (fn [_error] + (st/emit! (dm/error (tr "errors.unexpected-error")))) + (st/emitf dm/hide)))))))] (mf/use-effect (mf/deps @editing?) @@ -282,8 +283,9 @@ [:li.export-file {:on-click on-export-file} [:span (tr "dashboard.export-single")]] - [:li.export-file {:on-click on-export-frames} - [:span (tr "dashboard.export-frames")]] + (when (seq frames) + [:li.export-file {:on-click on-export-frames} + [:span (tr "dashboard.export-frames")]]) (when (contains? @cf/flags :user-feedback) [:li.feedback {:on-click (st/emitf (rt/nav :settings-feedback))} From 631c5ecae3572f8c7a06ee46b62d905ad1611f07 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Moya?= Date: Mon, 15 Nov 2021 12:29:36 +0100 Subject: [PATCH 010/307] :lipstick: Change word in german for a shorter one --- frontend/translations/de.po | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/frontend/translations/de.po b/frontend/translations/de.po index c1b88c952f..efaf29efd3 100644 --- a/frontend/translations/de.po +++ b/frontend/translations/de.po @@ -702,7 +702,7 @@ msgstr "Ein Fehler ist aufgetreten" #: src/app/main/ui/handoff/attributes/blur.cljs msgid "handoff.attributes.blur" -msgstr "Weichzeichnen" +msgstr "Unschärfe" #: src/app/main/ui/handoff/attributes/blur.cljs msgid "handoff.attributes.blur.value" @@ -2124,15 +2124,15 @@ msgstr "Ebene" #: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs msgid "workspace.options.blur-options.title" -msgstr "Weichzeichnen" +msgstr "Unschärfe" #: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs msgid "workspace.options.blur-options.title.group" -msgstr "Gruppe weichzeichnen" +msgstr "Gruppe unschärfe" #: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs msgid "workspace.options.blur-options.title.multiple" -msgstr "Auswahl weichzeichnen" +msgstr "Auswahl unschärfe" #: src/app/main/ui/workspace/sidebar/options/page.cljs msgid "workspace.options.canvas-background" @@ -2417,7 +2417,7 @@ msgstr "Auswahl einrahmen" #: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs msgid "workspace.options.shadow-options.blur" -msgstr "Weichzeichnen" +msgstr "Unschärfe" #: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs msgid "workspace.options.shadow-options.drop-shadow" @@ -2964,4 +2964,4 @@ msgid "workspace.updates.update" msgstr "Aktualisieren" msgid "workspace.viewport.click-to-close-path" -msgstr "Klicken Sie, um den Pfad zu schließen" \ No newline at end of file +msgstr "Klicken Sie, um den Pfad zu schließen" From b7ba3098aeb27e612c48234f67c90dac72f61769 Mon Sep 17 00:00:00 2001 From: Maciek Baron Date: Sat, 13 Nov 2021 14:36:20 +0000 Subject: [PATCH 011/307] :bug: Fix typo in workspace.scss Correct the spelling of 'width' to ensure it is set to '100%' properly and does not default to 'auto'. --- frontend/resources/styles/main/partials/workspace.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/resources/styles/main/partials/workspace.scss b/frontend/resources/styles/main/partials/workspace.scss index f6d7816d0f..d34082cbec 100644 --- a/frontend/resources/styles/main/partials/workspace.scss +++ b/frontend/resources/styles/main/partials/workspace.scss @@ -157,7 +157,7 @@ position: relative; svg { - widht: 100%; + width: 100%; height: 100%; } From 589e64602360161d18e3b46fc2646a13adbca779 Mon Sep 17 00:00:00 2001 From: Josh Soref Date: Mon, 15 Nov 2021 09:51:34 -0500 Subject: [PATCH 012/307] :bug: Fix typos in frontend --- frontend/dev/bench/core.cljs | 8 ++++---- .../styles/common/dependencies/mixin.scss | 2 +- frontend/resources/styles/common/framework.scss | 2 +- .../resources/styles/main/partials/loader.scss | 2 +- frontend/src/app/config.cljs | 2 +- frontend/src/app/main/data/users.cljs | 4 ++-- frontend/src/app/main/data/workspace.cljs | 8 ++++---- frontend/src/app/main/data/workspace/common.cljs | 2 +- frontend/src/app/main/data/workspace/groups.cljs | 2 +- .../src/app/main/data/workspace/libraries.cljs | 2 +- .../app/main/data/workspace/notifications.cljs | 4 ++-- .../app/main/data/workspace/path/edition.cljs | 2 +- .../app/main/data/workspace/path/helpers.cljs | 2 +- .../src/app/main/data/workspace/path/state.cljs | 2 +- .../src/app/main/data/workspace/persistence.cljs | 16 ++++++++-------- .../src/app/main/data/workspace/selection.cljs | 2 +- .../src/app/main/data/workspace/svg_upload.cljs | 4 ++-- frontend/src/app/main/data/workspace/texts.cljs | 2 +- frontend/src/app/main/errors.cljs | 2 +- frontend/src/app/main/snap.cljs | 2 +- frontend/src/app/main/streams.cljs | 8 ++++---- frontend/src/app/main/ui.cljs | 2 +- frontend/src/app/main/ui/auth/recovery.cljs | 2 +- .../src/app/main/ui/components/fullscreen.cljs | 4 ++-- frontend/src/app/main/ui/cursors.clj | 2 +- frontend/src/app/main/ui/dashboard.cljs | 4 ++-- frontend/src/app/main/ui/dashboard/export.cljs | 2 +- frontend/src/app/main/ui/dashboard/sidebar.cljs | 2 +- .../src/app/main/ui/dashboard/team_form.cljs | 4 ++-- frontend/src/app/main/ui/hooks.cljs | 2 +- frontend/src/app/main/ui/onboarding.cljs | 2 +- .../src/app/main/ui/shapes/custom_stroke.cljs | 2 +- frontend/src/app/main/ui/shapes/embed.cljs | 2 +- frontend/src/app/main/ui/shapes/mask.cljs | 2 +- frontend/src/app/main/ui/shapes/text.cljs | 2 +- .../main/ui/viewer/handoff/attributes/text.cljs | 4 ++-- .../src/app/main/ui/workspace/shapes/frame.cljs | 2 +- .../src/app/main/ui/workspace/shapes/text.cljs | 2 +- .../main/ui/workspace/shapes/text/editor.cljs | 8 ++++---- .../app/main/ui/workspace/sidebar/assets.cljs | 10 +++++----- .../app/main/ui/workspace/sidebar/history.cljs | 4 ++-- .../sidebar/options/menus/interactions.cljs | 2 +- .../ui/workspace/sidebar/options/menus/text.cljs | 4 ++-- .../sidebar/options/menus/typography.cljs | 10 +++++----- .../workspace/sidebar/options/shapes/frame.cljs | 6 +++--- .../app/main/ui/workspace/viewport/actions.cljs | 2 +- .../main/ui/workspace/viewport/gradients.cljs | 10 +++++----- .../main/ui/workspace/viewport/selection.cljs | 2 +- frontend/src/app/util/dom.cljs | 6 +++--- frontend/src/app/util/globals.js | 10 +++++----- frontend/src/app/util/http.cljs | 6 +++--- frontend/src/app/util/i18n.cljs | 4 ++-- frontend/src/app/util/kdtree.cljs | 2 +- frontend/src/app/util/path/arc_to_curve.js | 2 +- frontend/src/app/util/path/parser.cljs | 4 ++-- frontend/src/app/util/path/tools.cljs | 4 ++-- frontend/src/app/util/perf.cljs | 2 +- frontend/src/app/util/quadtree.js | 2 +- frontend/src/app/util/range_tree.js | 4 ++-- frontend/src/app/util/svg.cljs | 2 +- frontend/src/app/util/webapi.cljs | 4 ++-- frontend/src/app/util/websockets.cljs | 2 +- frontend/src/app/worker.cljs | 4 ++-- frontend/test/app/util/range_tree_test.cljs | 4 ++-- frontend/translations/en.po | 14 +++++++------- 65 files changed, 128 insertions(+), 128 deletions(-) diff --git a/frontend/dev/bench/core.cljs b/frontend/dev/bench/core.cljs index 511f93212c..8b8f1ba94d 100644 --- a/frontend/dev/bench/core.cljs +++ b/frontend/dev/bench/core.cljs @@ -6,7 +6,7 @@ (enable-console-print!) -;; --- Index Initialization Bechmark +;; --- Index Initialization Benchmark (defn- bench-init-10000 [] @@ -60,9 +60,9 @@ (bench-knn-160000) (bench-knn-360000)) -;; --- Accuracity tests +;; --- Accuracy tests -(defn test-accuracity +(defn test-accuracy [] (let [tree (k/create)] (k/setup tree 4000 4000 20 20) @@ -101,7 +101,7 @@ (bench-knn) (= type "kd-test") - (test-accuracity) + (test-accuracy) (= type "interval") (test-interval) diff --git a/frontend/resources/styles/common/dependencies/mixin.scss b/frontend/resources/styles/common/dependencies/mixin.scss index 0b553dcbc2..fa79488454 100644 --- a/frontend/resources/styles/common/dependencies/mixin.scss +++ b/frontend/resources/styles/common/dependencies/mixin.scss @@ -64,7 +64,7 @@ -/// This mixing allow you to add placeholder colors in all availables browsers +/// This mixing allow you to add placeholder colors in all available browsers /// @group Mixins @mixin placeholder { diff --git a/frontend/resources/styles/common/framework.scss b/frontend/resources/styles/common/framework.scss index adaf7f1383..ee2edb90fc 100644 --- a/frontend/resources/styles/common/framework.scss +++ b/frontend/resources/styles/common/framework.scss @@ -431,7 +431,7 @@ ul.slider-dots { } } - &.miliseconds { + &.milliseconds { &::after { content: "ms"; diff --git a/frontend/resources/styles/main/partials/loader.scss b/frontend/resources/styles/main/partials/loader.scss index 210d0c8c37..d29443d7f1 100644 --- a/frontend/resources/styles/main/partials/loader.scss +++ b/frontend/resources/styles/main/partials/loader.scss @@ -31,7 +31,7 @@ svg#loader-icon { animation: pen3 2s infinite ease; } -// btn prncil loader +// btn pencil loader svg#loader-pencil { fill: $color-primary-darker; width: 60px; diff --git a/frontend/src/app/config.cljs b/frontend/src/app/config.cljs index 3dbe3e1277..7e8e4c5c1b 100644 --- a/frontend/src/app/config.cljs +++ b/frontend/src/app/config.cljs @@ -85,7 +85,7 @@ (def browser (atom (parse-browser))) (def platform (atom (parse-platform))) -;; mantain for backward compatibility +;; maintain for backward compatibility (let [login-with-ldap (obj/get global "penpotLoginWithLDAP" false) registration (obj/get global "penpotRegistrationEnabled" true)] (when login-with-ldap diff --git a/frontend/src/app/main/data/users.cljs b/frontend/src/app/main/data/users.cljs index 3356c0ae90..e3965278a8 100644 --- a/frontend/src/app/main/data/users.cljs +++ b/frontend/src/app/main/data/users.cljs @@ -206,7 +206,7 @@ (defn login-from-register "Event used mainly for mark current session as logged-in in after the - user sucessfully registred using third party auth provider (in this + user successfully registered using third party auth provider (in this case we dont need to verify the email)." [] (ptk/reify ::login-from-register @@ -351,7 +351,7 @@ (defn mark-onboarding-as-viewed ([] (mark-onboarding-as-viewed nil)) ([{:keys [version]}] - (ptk/reify ::mark-oboarding-as-viewed + (ptk/reify ::mark-onboarding-as-viewed ptk/WatchEvent (watch [_ state _] (let [version (or version (:main @cf/version)) diff --git a/frontend/src/app/main/data/workspace.cljs b/frontend/src/app/main/data/workspace.cljs index e5e36f6ab4..05d96e30d0 100644 --- a/frontend/src/app/main/data/workspace.cljs +++ b/frontend/src/app/main/data/workspace.cljs @@ -1645,7 +1645,7 @@ (not= root-file-id (:current-file-id state)) (nil? (get-in state [:workspace-libraries root-file-id]))))) - ;; Procceed with the standard shape paste procediment. + ;; Proceed with the standard shape paste process. (do-paste [it state mouse-pos media] (let [page-objects (wsh/lookup-page-objects state) media-idx (d/index-by :prev-id media) @@ -1673,7 +1673,7 @@ page-id (:current-page-id state) unames (-> (wsh/lookup-page-objects state page-id) - (dwc/retrieve-used-names)) ;; TODO: move this calculation inside prepare-duplcate-changes? + (dwc/retrieve-used-names)) ;; TODO: move this calculation inside prepare-duplicate-changes? rchanges (->> (dws/prepare-duplicate-changes all-objects page-id unames selected delta) (mapv (partial process-rchange media-idx)) @@ -1799,7 +1799,7 @@ (watch [it state _] (let [page-id (get state :current-page-id) options (wsh/lookup-page-options state page-id) - previus-color (:background options)] + previous-color (:background options)] (rx/of (dch/commit-changes {:redo-changes [{:type :set-option :page-id page-id @@ -1808,7 +1808,7 @@ :undo-changes [{:type :set-option :page-id page-id :option :background - :value previus-color}] + :value previous-color}] :origin it})))))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; diff --git a/frontend/src/app/main/data/workspace/common.cljs b/frontend/src/app/main/data/workspace/common.cljs index 6cb0af4f75..cba5c0600d 100644 --- a/frontend/src/app/main/data/workspace/common.cljs +++ b/frontend/src/app/main/data/workspace/common.cljs @@ -252,7 +252,7 @@ [objects selected attrs] (if (= :frame (:type attrs)) - ;; Frames are alwasy positioned on the root frame + ;; Frames are always positioned on the root frame [uuid/zero uuid/zero nil] ;; Calculate the frame over which we're drawing diff --git a/frontend/src/app/main/data/workspace/groups.cljs b/frontend/src/app/main/data/workspace/groups.cljs index 11605a13bf..d192340fda 100644 --- a/frontend/src/app/main/data/workspace/groups.cljs +++ b/frontend/src/app/main/data/workspace/groups.cljs @@ -104,7 +104,7 @@ :page-id page-id})) ;; Look at the `get-empty-groups-after-group-creation` - ;; doctring to understand the real purpuse of this code + ;; docstring to understand the real purpose of this code ids-to-delete (get-empty-groups-after-group-creation objects parent-id shapes) delete-group diff --git a/frontend/src/app/main/data/workspace/libraries.cljs b/frontend/src/app/main/data/workspace/libraries.cljs index 9ba3a9a79e..c93e23cc5d 100644 --- a/frontend/src/app/main/data/workspace/libraries.cljs +++ b/frontend/src/app/main/data/workspace/libraries.cljs @@ -690,7 +690,7 @@ ;; update to finish, before marking this file as synced. ;; TODO: look for a more precise way of syncing this. ;; Maybe by using the stream (second argument passed to watch) - ;; to wait for the corresponding changes-commited and then proced + ;; to wait for the corresponding changes-committed and then proceed ;; with the :update-sync mutation. (rx/concat (rx/timer 3000) (rp/mutation :update-sync diff --git a/frontend/src/app/main/data/workspace/notifications.cljs b/frontend/src/app/main/data/workspace/notifications.cljs index ac5fdbe12b..aa90ee6a4c 100644 --- a/frontend/src/app/main/data/workspace/notifications.cljs +++ b/frontend/src/app/main/data/workspace/notifications.cljs @@ -159,7 +159,7 @@ color (get-next-color presence))) - (update-sesion [session presence] + (update-session [session presence] (-> session (assoc :id session-id) (assoc :profile-id profile-id) @@ -168,7 +168,7 @@ (update-presence [presence] (-> presence - (update session-id update-sesion presence) + (update session-id update-session presence) (d/without-nils))) ] diff --git a/frontend/src/app/main/data/workspace/path/edition.cljs b/frontend/src/app/main/data/workspace/path/edition.cljs index 9df8b6e9a5..f25960d442 100644 --- a/frontend/src/app/main/data/workspace/path/edition.cljs +++ b/frontend/src/app/main/data/workspace/path/edition.cljs @@ -161,7 +161,7 @@ points (upg/content->points content)] (rx/concat - ;; This stream checks the consecutive mouse positions to do the draging + ;; This stream checks the consecutive mouse positions to do the dragging (->> points (streams/move-points-stream snap-toggled start-position selected-points) (rx/take-until stopper) diff --git a/frontend/src/app/main/data/workspace/path/helpers.cljs b/frontend/src/app/main/data/workspace/path/helpers.cljs index a7d47d238f..8ce3ca9c73 100644 --- a/frontend/src/app/main/data/workspace/path/helpers.cljs +++ b/frontend/src/app/main/data/workspace/path/helpers.cljs @@ -108,7 +108,7 @@ :params position}))) (defn append-node - "Creates a new node in the path. Usualy used when drawing." + "Creates a new node in the path. Usually used when drawing." [shape position prev-point prev-handler] (let [command (next-node shape position prev-point prev-handler)] (-> shape diff --git a/frontend/src/app/main/data/workspace/path/state.cljs b/frontend/src/app/main/data/workspace/path/state.cljs index 86ac1731ee..4912184193 100644 --- a/frontend/src/app/main/data/workspace/path/state.cljs +++ b/frontend/src/app/main/data/workspace/path/state.cljs @@ -26,7 +26,7 @@ ks))) (defn get-path - "Retrieves the location of the path object and additionaly can pass + "Retrieves the location of the path object and additionally can pass the arguments. This location can be used in get-in, assoc-in... functions" [state & ks] (let [path-loc (get-path-location state) diff --git a/frontend/src/app/main/data/workspace/persistence.cljs b/frontend/src/app/main/data/workspace/persistence.cljs index f24d2a2807..402c227fc8 100644 --- a/frontend/src/app/main/data/workspace/persistence.cljs +++ b/frontend/src/app/main/data/workspace/persistence.cljs @@ -39,7 +39,7 @@ [tubax.core :as tubax])) (declare persist-changes) -(declare persist-sychronous-changes) +(declare persist-synchronous-changes) (declare shapes-changes-persisted) (declare update-persistence-status) @@ -99,7 +99,7 @@ (rx/map deref) (rx/filter library-file?) (rx/filter (complement #(empty? (:changes %)))) - (rx/map persist-sychronous-changes) + (rx/map persist-synchronous-changes) (rx/take-until (rx/delay 100 stoper))) (->> stream (rx/filter (ptk/type? ::changes-persisted)) @@ -167,7 +167,7 @@ (rx/mapcat handle-response) (rx/catch on-error))))))) -(defn persist-sychronous-changes +(defn persist-synchronous-changes [{:keys [file-id changes]}] (us/verify ::us/uuid file-id) (ptk/reify ::persist-synchronous-changes @@ -201,7 +201,7 @@ (s/def ::shapes-changes-persisted (s/keys :req-un [::revn ::cp/changes])) -(defn shapes-persited-event? [event] +(defn shapes-persisted-event? [event] (= (ptk/type event) ::changes-persisted)) (defn shapes-changes-persisted @@ -376,7 +376,7 @@ (= (:code error) :media-type-not-allowed) (rx/of (dm/error (tr "errors.media-type-not-allowed"))) - (= (:code error) :ubable-to-access-to-url) + (= (:code error) :unable-to-access-to-url) (rx/of (dm/error (tr "errors.media-type-not-allowed"))) (= (:code error) :invalid-image) @@ -486,7 +486,7 @@ ;; Media objects are blob of data to be upload (process-blobs params)) - ;; Every stream has its own sideffect. We need to ignore the result + ;; Every stream has its own sideeffect. We need to ignore the result (rx/ignore) (handle-upload-error on-error) (rx/finalize (st/emitf (dm/hide-tag :media-loading)))))))) @@ -566,7 +566,7 @@ (ptk/event ::update-frame-thumbnail {:frame-id frame-id})) (defn- extract-frame-changes - "Process a changes set in a commit to extract the frames that are channging" + "Process a changes set in a commit to extract the frames that are changing" [[event [old-objects new-objects]]] (let [changes (-> event deref :changes) @@ -643,7 +643,7 @@ (->> (rx/from no-thumb-frames) (rx/map #(update-frame-thumbnail %))) - ;; We remove the thumbnails inmediately but defer their generation + ;; We remove the thumbnails immediately but defer their generation (rx/merge (->> frame-changes (rx/take-until stopper) diff --git a/frontend/src/app/main/data/workspace/selection.cljs b/frontend/src/app/main/data/workspace/selection.cljs index ce5ff4160b..2fd5a2f3cf 100644 --- a/frontend/src/app/main/data/workspace/selection.cljs +++ b/frontend/src/app/main/data/workspace/selection.cljs @@ -307,7 +307,7 @@ chgs)))) (defn duplicate-changes-update-indices - "Parses the change set when duplicating to set-up the appropiate indices" + "Parses the change set when duplicating to set-up the appropriate indices" [objects ids changes] (let [process-id diff --git a/frontend/src/app/main/data/workspace/svg_upload.cljs b/frontend/src/app/main/data/workspace/svg_upload.cljs index 2b253738af..9d20efa6d1 100644 --- a/frontend/src/app/main/data/workspace/svg_upload.cljs +++ b/frontend/src/app/main/data/workspace/svg_upload.cljs @@ -414,7 +414,7 @@ reducer-fn (partial add-svg-child-changes page-id objects selected frame-id shape-id svg-data)] (reduce reducer-fn [unames changes] (d/enumerate children))) - ;; Cannot create the data from curren tags + ;; Cannot create the data from current tags [unames [rchs uchs]]))) (declare create-svg-shapes) @@ -425,7 +425,7 @@ ptk/WatchEvent (watch [_ _ _] ;; Once the SVG is uploaded, we need to extract all the bitmap - ;; images and upload them separatelly, then proceed to create + ;; images and upload them separately, then proceed to create ;; all shapes. (->> (rx/from (usvg/collect-images svg-data)) (rx/map (fn [uri] diff --git a/frontend/src/app/main/data/workspace/texts.cljs b/frontend/src/app/main/data/workspace/texts.cljs index 53e123c16e..8bc844b4ae 100644 --- a/frontend/src/app/main/data/workspace/texts.cljs +++ b/frontend/src/app/main/data/workspace/texts.cljs @@ -300,7 +300,7 @@ ;; Stop buffering after time without resizes stop-buffer (->> resize-events (rx/debounce 100)) - ;; Agregates the resizes so only send the resize when the sizes are stable + ;; Aggregates the resizes so only send the resize when the sizes are stable resize-batch (->> resize-events (rx/take-until stop-buffer) diff --git a/frontend/src/app/main/errors.cljs b/frontend/src/app/main/errors.cljs index 39350c180e..dc1459b0cb 100644 --- a/frontend/src/app/main/errors.cljs +++ b/frontend/src/app/main/errors.cljs @@ -62,7 +62,7 @@ (ts/schedule (st/emitf (rt/assign-exception error)))) -;; Error that happens on an active bussines model validation does not +;; Error that happens on an active business model validation does not ;; passes an validation (example: profile can't leave a team). From ;; the user perspective a error flash message should be visualized but ;; user can continue operate on the application. diff --git a/frontend/src/app/main/snap.cljs b/frontend/src/app/main/snap.cljs index 6021730ef5..707f4f7134 100644 --- a/frontend/src/app/main/snap.cljs +++ b/frontend/src/app/main/snap.cljs @@ -143,7 +143,7 @@ best-snap (fn [acc val] - ;; Using a number is faster than accesing the variable. + ;; Using a number is faster than accessing the variable. ;; Keep up to date with `snap-distance-accuracy` (if (and (<= val snap-distance-accuracy) (>= val (- snap-distance-accuracy))) (min acc val) diff --git a/frontend/src/app/main/streams.cljs b/frontend/src/app/main/streams.cljs index d12b62acca..7b5201ffa7 100644 --- a/frontend/src/app/main/streams.cljs +++ b/frontend/src/app/main/streams.cljs @@ -114,8 +114,8 @@ (rx/filter kbd/altKey?) (rx/map #(= :down (:type %)))) ;; Fix a situation caused by using `ctrl+alt` kind of shortcuts, - ;; that makes keyboard-alt stream registring the key pressed but - ;; on bluring the window (unfocus) the key down is never arrived. + ;; that makes keyboard-alt stream registering the key pressed but + ;; on blurring the window (unfocus) the key down is never arrived. (->> window-blur (rx/map (constantly false)))) (rx/dedupe))] @@ -130,8 +130,8 @@ (rx/filter kbd/ctrlKey?) (rx/map #(= :down (:type %)))) ;; Fix a situation caused by using `ctrl+alt` kind of shortcuts, - ;; that makes keyboard-alt stream registring the key pressed but - ;; on bluring the window (unfocus) the key down is never arrived. + ;; that makes keyboard-alt stream registering the key pressed but + ;; on blurring the window (unfocus) the key down is never arrived. (->> window-blur (rx/map (constantly false)))) (rx/dedupe))] diff --git a/frontend/src/app/main/ui.cljs b/frontend/src/app/main/ui.cljs index 515deca043..223e871150 100644 --- a/frontend/src/app/main/ui.cljs +++ b/frontend/src/app/main/ui.cljs @@ -28,7 +28,7 @@ (mf/defc on-main-error [{:keys [error] :as props}] (mf/use-effect (st/emitf (rt/assign-exception error))) - [:span "Internal application errror"]) + [:span "Internal application error"]) (mf/defc main-page {::mf/wrap [#(mf/catch % {:fallback on-main-error})]} diff --git a/frontend/src/app/main/ui/auth/recovery.cljs b/frontend/src/app/main/ui/auth/recovery.cljs index e18471d2b3..5389c99e21 100644 --- a/frontend/src/app/main/ui/auth/recovery.cljs +++ b/frontend/src/app/main/ui/auth/recovery.cljs @@ -42,7 +42,7 @@ (defn- on-success [_] - (st/emit! (dm/info (tr "auth.notifications.password-changed-succesfully")) + (st/emit! (dm/info (tr "auth.notifications.password-changed-successfully")) (rt/nav :auth-login))) (defn- on-submit diff --git a/frontend/src/app/main/ui/components/fullscreen.cljs b/frontend/src/app/main/ui/components/fullscreen.cljs index 21ee1f29b7..95bae7d496 100644 --- a/frontend/src/app/main/ui/components/fullscreen.cljs +++ b/frontend/src/app/main/ui/components/fullscreen.cljs @@ -37,7 +37,7 @@ (wapi/exit-fullscreen)))))))] ;; NOTE: the user interaction with F11 keyboard hot-key does not - ;; emits the `fullscreenchange` event; that event is emmited only + ;; emits the `fullscreenchange` event; that event is emitted only ;; when API is used. There are no way to detect the F11 behavior ;; in a uniform cross browser way. @@ -47,7 +47,7 @@ (fn [] (.removeEventListener js/document "fullscreenchange" change)))) - [:div.fulllscreen-wrapper {:ref container :class (dom/classnames :fullscreen @state)} + [:div.fullscreen-wrapper {:ref container :class (dom/classnames :fullscreen @state)} [:& (mf/provider fullscreen-context) {:value manager} children]])) diff --git a/frontend/src/app/main/ui/cursors.clj b/frontend/src/app/main/ui/cursors.clj index 0b63e5f579..98ee3ea519 100644 --- a/frontend/src/app/main/ui/cursors.clj +++ b/frontend/src/app/main/ui/cursors.clj @@ -25,7 +25,7 @@ ;; Remove comments (str/replace #"<\!\-\-(.*?(?=\-\->))\-\->" "") - ;; Remofe end of line + ;; Remove end of line (str/replace #"\r?\n|\r" " ") ;; Replace double quotes for single diff --git a/frontend/src/app/main/ui/dashboard.cljs b/frontend/src/app/main/ui/dashboard.cljs index 1292c6eafb..f99f8cd6b5 100644 --- a/frontend/src/app/main/ui/dashboard.cljs +++ b/frontend/src/app/main/ui/dashboard.cljs @@ -113,8 +113,8 @@ ;; that the team is a implicit context variable that is ;; available using react context or accessing ;; the :current-team-id on the state. We set the key to the - ;; team-id becase we want to completly refresh all the - ;; components on team change. Many components assumess that the + ;; team-id because we want to completely refresh all the + ;; components on team change. Many components assumes that the ;; team is already set so don't put the team into mf/deps. (when team [:section.dashboard-layout {:key (:id team)} diff --git a/frontend/src/app/main/ui/dashboard/export.cljs b/frontend/src/app/main/ui/dashboard/export.cljs index 68240a79ca..6b353dab96 100644 --- a/frontend/src/app/main/ui/dashboard/export.cljs +++ b/frontend/src/app/main/ui/dashboard/export.cljs @@ -100,7 +100,7 @@ (mf/use-effect (fn [] (when-not has-libraries? - ;; Start download automaticaly + ;; Start download automatically (start-export)))) [:div.modal-overlay diff --git a/frontend/src/app/main/ui/dashboard/sidebar.cljs b/frontend/src/app/main/ui/dashboard/sidebar.cljs index 827f482652..ebb9bcfb16 100644 --- a/frontend/src/app/main/ui/dashboard/sidebar.cljs +++ b/frontend/src/app/main/ui/dashboard/sidebar.cljs @@ -234,7 +234,7 @@ (let [form (fm/use-form :spec ::leave-modal-form :initial {}) members (some->> members (filterv #(not= (:id %) (:id profile)))) options (into [{:value "" - :label (tr "modals.leave-and-reassign.select-memeber-to-promote")}] + :label (tr "modals.leave-and-reassign.select-member-to-promote")}] (map #(hash-map :label (:name %) :value (str (:id %))) members)) on-cancel (st/emitf (modal/hide)) diff --git a/frontend/src/app/main/ui/dashboard/team_form.cljs b/frontend/src/app/main/ui/dashboard/team_form.cljs index 1a936b26fb..d7088c0303 100644 --- a/frontend/src/app/main/ui/dashboard/team_form.cljs +++ b/frontend/src/app/main/ui/dashboard/team_form.cljs @@ -25,14 +25,14 @@ (defn- on-create-success [_form response] - (let [msg "Team created successfuly"] + (let [msg "Team created successfully"] (st/emit! (dm/success msg) (modal/hide) (rt/nav :dashboard-projects {:team-id (:id response)})))) (defn- on-update-success [_form _response] - (let [msg "Team created successfuly"] + (let [msg "Team created successfully"] (st/emit! (dm/success msg) (modal/hide)))) diff --git a/frontend/src/app/main/ui/hooks.cljs b/frontend/src/app/main/ui/hooks.cljs index 484974c1da..683e27c6c1 100644 --- a/frontend/src/app/main/ui/hooks.cljs +++ b/frontend/src/app/main/ui/hooks.cljs @@ -191,7 +191,7 @@ (defn use-stream - "Wraps the subscription to a strem into a `use-effect` call" + "Wraps the subscription to a stream into a `use-effect` call" ([stream on-subscribe] (use-stream stream (mf/deps) on-subscribe)) ([stream deps on-subscribe] diff --git a/frontend/src/app/main/ui/onboarding.cljs b/frontend/src/app/main/ui/onboarding.cljs index d70f633411..c2286f06c3 100644 --- a/frontend/src/app/main/ui/onboarding.cljs +++ b/frontend/src/app/main/ui/onboarding.cljs @@ -393,7 +393,7 @@ (mf/defc onboarding-templates-modal {::mf/register modal/components ::mf/register-as :onboarding-templates} - ;; NOTE: the project usually comes empty, it only comes fullfilled + ;; NOTE: the project usually comes empty, it only comes fulfilled ;; when a user creates a new team just after signup. [{:keys [project-id] :as props}] (let [close-fn (mf/use-callback #(st/emit! (modal/hide))) diff --git a/frontend/src/app/main/ui/shapes/custom_stroke.cljs b/frontend/src/app/main/ui/shapes/custom_stroke.cljs index bf627751b8..b88e72722c 100644 --- a/frontend/src/app/main/ui/shapes/custom_stroke.cljs +++ b/frontend/src/app/main/ui/shapes/custom_stroke.cljs @@ -181,7 +181,7 @@ [:& cap-markers {:shape shape :render-id render-id}]))) -;; Outer alingmnent: display the shape in two layers. One +;; Outer alignment: display the shape in two layers. One ;; without stroke (only fill), and another one only with stroke ;; at double width (transparent fill) and passed through a mask ;; that shows the whole shape, but hides the original shape diff --git a/frontend/src/app/main/ui/shapes/embed.cljs b/frontend/src/app/main/ui/shapes/embed.cljs index 1f68376cb8..34b9f7d1a7 100644 --- a/frontend/src/app/main/ui/shapes/embed.cljs +++ b/frontend/src/app/main/ui/shapes/embed.cljs @@ -38,6 +38,6 @@ #(when sub (rx/dispose! sub))))) - ;; Use ref so if the urls are cached will return inmediately instead of the + ;; Use ref so if the urls are cached will return immediately instead of the ;; next render (mf/ref-val uri-data))) diff --git a/frontend/src/app/main/ui/shapes/mask.cljs b/frontend/src/app/main/ui/shapes/mask.cljs index 87fa6790b1..7220aceaa3 100644 --- a/frontend/src/app/main/ui/shapes/mask.cljs +++ b/frontend/src/app/main/ui/shapes/mask.cljs @@ -49,7 +49,7 @@ :in2 "SourceGraphic" :operator "in" :result "comp"}]] - ;; Clip path is necesary so the elements inside the mask won't affect + ;; Clip path is necessary so the elements inside the mask won't affect ;; the events outside. Clip hides the elements but mask doesn't (like display vs visibility) ;; we cannot use clips instead of mask because clips can only be simple shapes [:clipPath {:id (clip-id render-id mask)} diff --git a/frontend/src/app/main/ui/shapes/text.cljs b/frontend/src/app/main/ui/shapes/text.cljs index 88e48e13b7..008bca5570 100644 --- a/frontend/src/app/main/ui/shapes/text.cljs +++ b/frontend/src/app/main/ui/shapes/text.cljs @@ -208,7 +208,7 @@ :height (if (#{:auto-height :auto-width} grow-type) 100000 height) :style (-> (obj/new) (attrs/add-layer-props shape)) :ref ref} - ;; We use a class here because react has a bug that won't use the appropiate selector for + ;; We use a class here because react has a bug that won't use the appropriate selector for ;; `background-clip` [:style ".text-node { background-clip: text; -webkit-background-clip: text;" ] diff --git a/frontend/src/app/main/ui/viewer/handoff/attributes/text.cljs b/frontend/src/app/main/ui/viewer/handoff/attributes/text.cljs index e760b668f4..2cfdda7bd6 100644 --- a/frontend/src/app/main/ui/viewer/handoff/attributes/text.cljs +++ b/frontend/src/app/main/ui/viewer/handoff/attributes/text.cljs @@ -166,8 +166,8 @@ (mapv (fn [[style text]] (vector (merge txt/default-text-attrs style) text))))] (for [[idx [full-style text]] (map-indexed vector style-text-blocks)] - (let [previus-style (first (nth style-text-blocks (dec idx) nil)) - style (remove-equal-values full-style previus-style) + (let [previous-style (first (nth style-text-blocks (dec idx) nil)) + style (remove-equal-values full-style previous-style) ;; If the color is set we need to add opacity otherwise the display will not work style (cond-> style diff --git a/frontend/src/app/main/ui/workspace/shapes/frame.cljs b/frontend/src/app/main/ui/workspace/shapes/frame.cljs index 6f7504222a..380dac1c7a 100644 --- a/frontend/src/app/main/ui/workspace/shapes/frame.cljs +++ b/frontend/src/app/main/ui/workspace/shapes/frame.cljs @@ -50,7 +50,7 @@ ;; :style {:filter "sepia(1)"} }]))) -;; This custom deffered don't deffer rendering when ghost rendering is +;; This custom deferred don't defer rendering when ghost rendering is ;; used. (defn custom-deferred [component] diff --git a/frontend/src/app/main/ui/workspace/shapes/text.cljs b/frontend/src/app/main/ui/workspace/shapes/text.cljs index 704920fba6..09fc366988 100644 --- a/frontend/src/app/main/ui/workspace/shapes/text.cljs +++ b/frontend/src/app/main/ui/workspace/shapes/text.cljs @@ -110,7 +110,7 @@ [:> shape-container {:shape shape} ;; We keep hidden the shape when we're editing so it keeps track of the size - ;; and updates the selrect acordingly + ;; and updates the selrect accordingly [:g.text-shape {:opacity (when edition? 0) :pointer-events "none"} diff --git a/frontend/src/app/main/ui/workspace/shapes/text/editor.cljs b/frontend/src/app/main/ui/workspace/shapes/text/editor.cljs index d00ea37bd6..47880bac01 100644 --- a/frontend/src/app/main/ui/workspace/shapes/text/editor.cljs +++ b/frontend/src/app/main/ui/workspace/shapes/text/editor.cljs @@ -98,7 +98,7 @@ state (get state-map id empty-editor-state) self-ref (mf/use-ref) - blured (mf/use-var false) + blurred (mf/use-var false) on-key-up (fn [event] @@ -123,13 +123,13 @@ (fn [event] (dom/stop-propagation event) (dom/prevent-default event) - (reset! blured true))) + (reset! blurred true))) on-focus (mf/use-callback (mf/deps shape state) (fn [_] - (reset! blured false))) + (reset! blurred false))) prev-value (mf/use-ref state) @@ -159,7 +159,7 @@ (mf/use-callback (fn [val] (let [val (handle-change val) - val (if (true? @blured) + val (if (true? @blurred) (ted/add-editor-blur-selection val) (ted/remove-editor-blur-selection val))] (st/emit! (dwt/update-editor-state shape val))))) diff --git a/frontend/src/app/main/ui/workspace/sidebar/assets.cljs b/frontend/src/app/main/ui/workspace/sidebar/assets.cljs index 16889f7590..71bc1139ae 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/assets.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/assets.cljs @@ -1087,7 +1087,7 @@ (mf/defc typographies-group [{:keys [file-id prefix groups open-groups file local? selected-typographies local - editting-id on-asset-click handle-change apply-typography + editing-id on-asset-click handle-change apply-typography on-rename-group on-ungroup on-context-menu]}] (let [group-open? (get open-groups prefix true)] @@ -1113,7 +1113,7 @@ :selected? (contains? selected-typographies (:id typography)) :on-click #(on-asset-click % (:id typography) (partial apply-typography typography)) - :editting? (= editting-id (:id typography)) + :editing? (= editing-id (:id typography)) :focus-name? (= (:rename-typography local) (:id typography))}])]) (for [[path-item content] groups] @@ -1125,7 +1125,7 @@ :file file :local? local? :selected-typographies selected-typographies - :editting-id editting-id + :editing-id editing-id :local local :on-asset-click on-asset-click :handle-change handle-change @@ -1272,7 +1272,7 @@ (dwl/sync-file file-id file-id) (dwu/commit-undo-transaction))))) - editting-id (or (:rename-typography local) (:edit-typography local))] + editing-id (or (:rename-typography local) (:edit-typography local))] (mf/use-effect (mf/deps local) @@ -1301,7 +1301,7 @@ :file file :local? local? :selected-typographies selected-typographies - :editting-id editting-id + :editing-id editing-id :local local :on-asset-click (partial on-asset-click groups) :handle-change handle-change diff --git a/frontend/src/app/main/ui/workspace/sidebar/history.cljs b/frontend/src/app/main/ui/workspace/sidebar/history.cljs index 84afab2d1b..d3db889a0f 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/history.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/history.cljs @@ -21,7 +21,7 @@ (l/derived :workspace-undo st/state)) (defn get-object - "Searchs for a shape inside the objects list or inside the undo history" + "Searches for a shape inside the objects list or inside the undo history" [id entries objects] (let [search-deleted-shape (fn [id entries] @@ -144,7 +144,7 @@ maybe-keyword)) (defn select-entry - "Selects the entry the user will see inside a list of posible entries. + "Selects the entry the user will see inside a list of possible entries. Sometimes the result will be a combination." [candidates] (let [;; Group by id and type diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs b/frontend/src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs index 53a14ae5f8..4eb0733206 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs @@ -249,7 +249,7 @@ [:div.interactions-summary {:on-click #(swap! extended-open? not)} [:div.trigger-name (event-type-name interaction)] [:div.action-summary (action-summary interaction destination)]] - [:div.elemen-set-actions {:on-click #(remove-interaction index)} + [:div.element-set-actions {:on-click #(remove-interaction index)} [:div.element-set-actions-button i/minus]] (when @extended-open? diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/menus/text.cljs b/frontend/src/app/main/ui/workspace/sidebar/options/menus/text.cljs index 5f55a9ab2e..8f7842c06f 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/options/menus/text.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/options/menus/text.cljs @@ -269,12 +269,12 @@ on-convert-to-typography (fn [_] - (let [setted-values (-> (d/without-nils values) + (let [set-values (-> (d/without-nils values) (select-keys (d/concat text-font-attrs text-spacing-attrs text-transform-attrs))) - typography (merge txt/default-typography setted-values) + typography (merge txt/default-typography set-values) typography (generate-typography-name typography) id (uuid/next)] (st/emit! (dwl/add-typography (assoc typography :id id) false)) diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/menus/typography.cljs b/frontend/src/app/main/ui/workspace/sidebar/options/menus/typography.cljs index b51955e962..975572524e 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/options/menus/typography.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/options/menus/typography.cljs @@ -433,8 +433,8 @@ ;; In summary, this need to a good UX/UI/IMPL rework. (mf/defc typography-entry - [{:keys [typography read-only? selected? on-click on-change on-detach on-context-menu editting? focus-name? file]}] - (let [open? (mf/use-state editting?) + [{:keys [typography read-only? selected? on-click on-change on-detach on-context-menu editing? focus-name? file]}] + (let [open? (mf/use-state editing?) hover-detach (mf/use-state false) name-input-ref (mf/use-ref) @@ -458,10 +458,10 @@ (mf/set-ref-val! name-ref (dom/get-target-val event))))] (mf/use-effect - (mf/deps editting?) + (mf/deps editing?) (fn [] - (when editting? - (reset! open? editting?)))) + (when editing? + (reset! open? editing?)))) (mf/use-effect (mf/deps focus-name?) diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/shapes/frame.cljs b/frontend/src/app/main/ui/workspace/sidebar/options/shapes/frame.cljs index 55435c4e77..6144856f5b 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/options/shapes/frame.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/options/shapes/frame.cljs @@ -280,13 +280,13 @@ {:name "Twitter post" :width 1024 :height 512} - {:name "Youtube profile" + {:name "YouTube profile" :width 800 :height 800} - {:name "Youtube banner" + {:name "YouTube banner" :width 2560 :height 1440} - {:name "Youtube thumb" + {:name "YouTube thumb" :width 1280 :height 720} ]) diff --git a/frontend/src/app/main/ui/workspace/viewport/actions.cljs b/frontend/src/app/main/ui/workspace/viewport/actions.cljs index b5427fb4e7..714b537a7f 100644 --- a/frontend/src/app/main/ui/workspace/viewport/actions.cljs +++ b/frontend/src/app/main/ui/workspace/viewport/actions.cljs @@ -369,7 +369,7 @@ (/ zoom))] (dom/prevent-default event) (dom/stop-propagation event) - (if (and (not (cfg/check-platform? :macos)) ;; macos sends delta-x automaticaly, don't need to do it + (if (and (not (cfg/check-platform? :macos)) ;; macos sends delta-x automatically, don't need to do it (kbd/shift? event)) (st/emit! (dw/update-viewport-position {:x #(+ % delta-y)})) (st/emit! (dw/update-viewport-position {:x #(+ % delta-x) diff --git a/frontend/src/app/main/ui/workspace/viewport/gradients.cljs b/frontend/src/app/main/ui/workspace/viewport/gradients.cljs index 48a8668754..a1b623c360 100644 --- a/frontend/src/app/main/ui/workspace/viewport/gradients.cljs +++ b/frontend/src/app/main/ui/workspace/viewport/gradients.cljs @@ -83,9 +83,9 @@ :height (+ (/ (* 2 gradient-width-handler-radius) zoom) (/ 2 zoom) 4) :offset (/ 2 zoom)}]) -(def checkboard "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAIAAAC0tAIdAAACvUlEQVQoFQGyAk39AeLi4gAAAAAAAB0dHQAAAAAAAOPj4wAAAAAAAB0dHQAAAAAAAOPj4wAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB////AAAAAAAA4+PjAAAAAAAAHR0dAAAAAAAA4+PjAAAAAAAAHR0dAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATj4+MAAAAAAAAdHR0AAAAAAADj4+MAAAAAAAAdHR0AAAAAAADj4+MAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjScaa0cU7nIAAAAASUVORK5CYII=") +(def checkerboard "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAIAAAC0tAIdAAACvUlEQVQoFQGyAk39AeLi4gAAAAAAAB0dHQAAAAAAAOPj4wAAAAAAAB0dHQAAAAAAAOPj4wAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB////AAAAAAAA4+PjAAAAAAAAHR0dAAAAAAAA4+PjAAAAAAAAHR0dAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATj4+MAAAAAAAAdHR0AAAAAAADj4+MAAAAAAAAdHR0AAAAAAADj4+MAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjScaa0cU7nIAAAAASUVORK5CYII=") -#_(def checkboard "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAADFJREFUOE9jZGBgEAFifOANPknGUQMYhkkYEEgG+NMJKAwIAbwJbdQABnBCIgRoG4gAIF8IsXB/Rs4AAAAASUVORK5CYII=") +#_(def checkerboard "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAADFJREFUOE9jZGBgEAFifOANPknGUQMYhkkYEEgG+NMJKAwIAbwJbdQABnBCIgRoG4gAIF8IsXB/Rs4AAAAASUVORK5CYII=") (mf/defc gradient-color-handler [{:keys [filter-id zoom point color angle selected @@ -93,7 +93,7 @@ [:g {:filter (str/fmt "url(#%s)" filter-id) :transform (gmt/rotate-matrix angle point)} - [:image {:href checkboard + [:image {:href checkerboard :x (- (:x point) (/ gradient-square-width 2 zoom)) :y (- (:y point) (/ gradient-square-width 2 zoom)) :width (/ gradient-square-width zoom) @@ -173,7 +173,7 @@ [:g.gradient-handlers [:defs [:& gradient-line-drop-shadow-filter {:id "gradient_line_drop_shadow" :from-p from-p :to-p to-p :zoom zoom}] - [:& gradient-line-drop-shadow-filter {:id "gradient_widh_line_drop_shadow" :from-p from-p :to-p width-p :zoom zoom}] + [:& gradient-line-drop-shadow-filter {:id "gradient_width_line_drop_shadow" :from-p from-p :to-p width-p :zoom zoom}] [:& gradient-square-drop-shadow-filter {:id "gradient_square_from_drop_shadow" :point from-p :zoom zoom}] [:& gradient-square-drop-shadow-filter {:id "gradient_square_to_drop_shadow" :point to-p :zoom zoom}] [:& gradient-width-handler-shadow-filter {:id "gradient_width_handler_drop_shadow" :point width-p :zoom zoom}]] @@ -187,7 +187,7 @@ :stroke-width (/ gradient-line-stroke-width zoom)}]] (when width-p - [:g {:filter "url(#gradient_widh_line_drop_shadow)"} + [:g {:filter "url(#gradient_width_line_drop_shadow)"} [:line {:x1 (:x from-p) :y1 (:y from-p) :x2 (:x width-p) diff --git a/frontend/src/app/main/ui/workspace/viewport/selection.cljs b/frontend/src/app/main/ui/workspace/viewport/selection.cljs index 9dc30ad5d2..b42a2feb76 100644 --- a/frontend/src/app/main/ui/workspace/viewport/selection.cljs +++ b/frontend/src/app/main/ui/workspace/viewport/selection.cljs @@ -179,7 +179,7 @@ )])) (mf/defc resize-side-handler - "The side handler is always rendered horizontaly and then rotated" + "The side handler is always rendered horizontally and then rotated" [{:keys [x y length align angle zoom position rotation transform on-resize]}] (let [res-point (if (#{:top :bottom} position) {:y y} diff --git a/frontend/src/app/util/dom.cljs b/frontend/src/app/util/dom.cljs index 82a94e0ed6..4370501dde 100644 --- a/frontend/src/app/util/dom.cljs +++ b/frontend/src/app/util/dom.cljs @@ -44,7 +44,7 @@ (.insertAdjacentHTML head "beforeend" (str " -
-
-
ERID:
-
{{id}}
-
- {% if profile-id %} -
-
PFID:
-
{{profile-id}}
-
- {% endif %} - {% if user-agent %} -
-
UAGT:
-
{{user-agent}}
-
- {% endif %} - - {% if frontend-version %} -
-
FVER:
-
{{frontend-version}}
-
- {% endif %} - -
-
BVER:
-
{{version}}
-
- - {% if host %} -
-
HOST:
-
{{host}}
-
- {% endif %} - - {% if tenant %} -
-
ENV:
-
{{tenant}}
-
- {% endif %} - - {% if public-uri %} -
-
PURI:
-
{{public-uri}}
-
- {% endif %} - - {% if type %} -
-
TYPE:
-
{{type}}
-
- {% endif %} - - {% if code %} -
-
CODE:
-
{{code}}
-
- {% endif %} - - {% if error %} -
-
CLSS:
-
{{error.class}}
-
- {% endif %} - - {% if hint %} -
-
HINT:
-
{{hint}}
-
- {% endif %} - - {% if method %} -
-
PATH:
-
{{method|upper}} {{path}}
-
- {% endif %} - - - - - - {% if params %} -
-
PARAMS:
-
-
{{params}}
-
-
+ +
+
+
+
CONTEXT:
+
+
{{context}}
+
+
- {% if spec-problems %} -
-
SPEC PROBLEMS:
-
-
{{spec-problems}}
+ {% if params %} +
+
PARAMS:
+
+
{{params}}
+
-
- {% endif %} + {% endif %} - {% if cause %} -
-
TRACE:
-
-
{{cause}}
+ + {% if data %} +
+
ERROR DATA:
+
+
{{data}}
+
-
- {% elif trace %} -
-
TRACE:
-
-
{{trace}}
+ {% endif %} + + {% if spec-problems %} +
+
SPEC PROBLEMS:
+
+
{{spec-problems}}
+
-
- {% elif error %} -
-
TRACE:
-
-
{{error.trace}}
+ {% endif %} + + {% if trace %} +
+
TRACE:
+
+
{{trace}}
+
+ {% endif %}
- {% endif %} -
+
diff --git a/backend/src/app/http/debug.clj b/backend/src/app/http/debug.clj index d30257b659..1456750e75 100644 --- a/backend/src/app/http/debug.clj +++ b/backend/src/app/http/debug.clj @@ -11,6 +11,7 @@ [app.common.spec :as us] [app.common.transit :as t] [app.common.uuid :as uuid] + [clojure.pprint :as ppr] [app.config :as cf] [app.db :as db] [app.util.template :as tmpl] @@ -99,7 +100,6 @@ (ex/raise :type :validation :code :invalid-arguments)))) - (defn retrieve-error [{:keys [pool]} request] (letfn [(parse-id [request] @@ -107,14 +107,23 @@ id (us/uuid-conformer id)] (when (uuid? id) id))) + (retrieve-report [id] (ex/ignoring - (when-let [{:keys [content] :as row} (db/get-by-id pool :server-error-report id)] - (assoc row :content (db/decode-transit-pgobject content))))) + (some-> (db/get-by-id pool :server-error-report id) :content db/decode-transit-pgobject))) - (render-template [{:keys [content] :as report}] - (some-> (io/resource "error-report.tmpl") - (tmpl/render content)))] + (render-template [report] + (binding [ppr/*print-right-margin* 300] + (let [context (dissoc report :trace :cause :params :data :spec-prob :spec-problems) + params {:context (with-out-str (ppr/pprint context)) + :data (:data report) + :trace (or (:cause report) + (:trace report) + (some-> report :error :trace)) + :params (:params report)}] + (-> (io/resource "error-report.tmpl") + (tmpl/render params))))) + ] (when-not (authorized? pool request) (ex/raise :type :authentication diff --git a/backend/src/app/http/errors.clj b/backend/src/app/http/errors.clj index e4ff27bcfd..d1205c465d 100644 --- a/backend/src/app/http/errors.clj +++ b/backend/src/app/http/errors.clj @@ -30,14 +30,13 @@ :hint (or (:hint data) (ex-message error)) :params (l/stringify-data (:params request)) :spec-problems (some-> data ::s/problems) + :data (some-> data (dissoc ::s/problems)) :ip-addr (parse-client-ip request) :profile-id (:profile-id request)} (let [headers (:headers request)] {:user-agent (get headers "user-agent") - :frontend-version (get headers "x-frontend-version" "unknown")}) - - (dissoc data ::s/problems)))) + :frontend-version (get headers "x-frontend-version" "unknown")})))) (defmulti handle-exception (fn [err & _rest] @@ -56,8 +55,7 @@ (defmethod handle-exception :validation [err _] (let [edata (ex-data err)] - {:status 400 - :body (dissoc edata ::s/problems)})) + {:status 400 :body edata})) (defmethod handle-exception :assertion [error request] diff --git a/backend/src/app/http/session.clj b/backend/src/app/http/session.clj index 2888961402..f341f91da2 100644 --- a/backend/src/app/http/session.clj +++ b/backend/src/app/http/session.clj @@ -73,6 +73,7 @@ (if-let [{:keys [id profile-id] :as session} (retrieve-from-request cfg request)] (do (a/>!! (::events-ch cfg) id) + (l/set-context! {:profile-id profile-id}) (handler (assoc request :profile-id profile-id))) (handler request)))) diff --git a/backend/src/app/loggers/database.clj b/backend/src/app/loggers/database.clj index 20b9625c2f..6bbc1297ed 100644 --- a/backend/src/app/loggers/database.clj +++ b/backend/src/app/loggers/database.clj @@ -62,7 +62,7 @@ (let [event (parse-event event) uri (cf/get :public-uri)] (l/debug :hint "registering error on database" :id (:id event) - :uri (str uri "/dbg/error-by-id/" (:id event))) + :uri (str uri "/dbg/error/" (:id event))) (persist-on-database! cfg event)) (catch Exception e (l/warn :hint "unexpected exception on database error logger" diff --git a/common/src/app/common/logging.cljc b/common/src/app/common/logging.cljc index f9356e5880..b9940f1ea2 100644 --- a/common/src/app/common/logging.cljc +++ b/common/src/app/common/logging.cljc @@ -65,7 +65,7 @@ val (coll? val) - (binding [clojure.pprint/*print-right-margin* 120] + (binding [clojure.pprint/*print-right-margin* 200] (-> (with-out-str (pprint val)) (simple-prune (* 1024 1024 3)))) @@ -83,6 +83,12 @@ (stringify-data val)]))) data))) +#?(:clj + (defn set-context! + [data] + (ThreadContext/putAll (data->context-map data)) + nil)) + #?(:clj (defmacro with-context [data & body] diff --git a/common/src/app/common/spec.cljc b/common/src/app/common/spec.cljc index b8fbd7986b..19ef41255d 100644 --- a/common/src/app/common/spec.cljc +++ b/common/src/app/common/spec.cljc @@ -256,7 +256,7 @@ (let [data (s/explain-data spec data)] (throw (ex/error :type :validation :code :spec-validation - :data data)))) + ::s/problems (::s/problems data))))) result)) (defmacro instrument! From 79e5716f36c54b1cec10b78601cdf849965f63a4 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Thu, 30 Dec 2021 19:43:05 +0100 Subject: [PATCH 150/307] :paperclip: Fix linter issues. --- backend/src/app/http.clj | 1 - backend/src/app/http/debug.clj | 13 +++++-------- backend/src/app/loggers/database.clj | 2 -- backend/src/app/util/websocket.clj | 2 +- 4 files changed, 6 insertions(+), 12 deletions(-) diff --git a/backend/src/app/http.clj b/backend/src/app/http.clj index 7507c1eefb..a88b4c3462 100644 --- a/backend/src/app/http.clj +++ b/backend/src/app/http.clj @@ -12,7 +12,6 @@ [app.common.spec :as us] [app.http.doc :as doc] [app.http.errors :as errors] - [app.http.debug :as debug] [app.http.middleware :as middleware] [app.metrics :as mtx] [clojure.spec.alpha :as s] diff --git a/backend/src/app/http/debug.clj b/backend/src/app/http/debug.clj index 1456750e75..4138e2244e 100644 --- a/backend/src/app/http/debug.clj +++ b/backend/src/app/http/debug.clj @@ -9,17 +9,14 @@ [app.common.data :as d] [app.common.exceptions :as ex] [app.common.spec :as us] - [app.common.transit :as t] [app.common.uuid :as uuid] - [clojure.pprint :as ppr] [app.config :as cf] [app.db :as db] - [app.util.template :as tmpl] - [clojure.java.io :as io] [app.rpc.queries.profile :as profile] [app.util.blob :as blob] - [app.util.json :as json] - [clojure.spec.alpha :as s] + [app.util.template :as tmpl] + [clojure.java.io :as io] + [clojure.pprint :as ppr] [cuerdas.core :as str] [integrant.core :as ig])) @@ -67,7 +64,7 @@ (prepare-response (some-> file :data blob/decode)))))) (defn retrieve-file-changes - [{:keys [pool]} {:keys [params path-params profile-id] :as request}] + [{:keys [pool]} request] (when-not (authorized? pool request) (ex/raise :type :authentication :code :only-admins-allowed)) @@ -143,7 +140,7 @@ ;; TODO: error list table (defmethod ig/init-key ::handlers - [_ {:keys [pool] :as cfg}] + [_ cfg] {:retrieve-file-data (partial retrieve-file-data cfg) :retrieve-file-changes (partial retrieve-file-changes cfg) :retrieve-error (partial retrieve-error cfg)}) diff --git a/backend/src/app/loggers/database.clj b/backend/src/app/loggers/database.clj index 6bbc1297ed..aea476bbb0 100644 --- a/backend/src/app/loggers/database.clj +++ b/backend/src/app/loggers/database.clj @@ -7,9 +7,7 @@ (ns app.loggers.database "A specific logger impl that persists errors on the database." (:require - [app.common.exceptions :as ex] [app.common.logging :as l] - [app.common.spec :as us] [app.common.uuid :as uuid] [app.config :as cf] [app.db :as db] diff --git a/backend/src/app/util/websocket.clj b/backend/src/app/util/websocket.clj index ecf1fbe580..5eb1737d62 100644 --- a/backend/src/app/util/websocket.clj +++ b/backend/src/app/util/websocket.clj @@ -67,7 +67,7 @@ created-at (dt/now) on-terminate - (fn [& args] + (fn [& _args] (when (compare-and-set! terminated false true) (call-mtx metrics :connections {:cmd :dec :by 1}) (call-mtx metrics :sessions {:val (/ (inst-ms (dt/diff created-at (dt/now))) 1000.0)}) From c9185f265cfc25defa24174c750ecde29c078892 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Thu, 30 Dec 2021 23:51:39 +0100 Subject: [PATCH 151/307] :sparkles: Add error report list template. --- backend/resources/error-list.tmpl | 97 +++++++++++++++++++++++++++++ backend/resources/error-report.tmpl | 4 +- backend/src/app/http.clj | 1 + backend/src/app/http/debug.clj | 21 ++++++- 4 files changed, 120 insertions(+), 3 deletions(-) create mode 100644 backend/resources/error-list.tmpl diff --git a/backend/resources/error-list.tmpl b/backend/resources/error-list.tmpl new file mode 100644 index 0000000000..21e6c3daef --- /dev/null +++ b/backend/resources/error-list.tmpl @@ -0,0 +1,97 @@ + + + + + + + penpot - error report {{id}} + + + + + + +
+
    + {% for item in items %} +
  • {{item.created-at}}
  • + {% endfor %} + {% for item in items %} +
  • {{item.created-at}}
  • + {% endfor %} +
+
+ + + diff --git a/backend/resources/error-report.tmpl b/backend/resources/error-report.tmpl index 397b83b026..ad663f604b 100644 --- a/backend/resources/error-report.tmpl +++ b/backend/resources/error-report.tmpl @@ -44,7 +44,7 @@ font-size: 12px; } .table { - margin-top: 40px; + margin-top: 25px; display: flex; flex-direction: column; } @@ -87,6 +87,8 @@