mirror of
https://github.com/penpot/penpot.git
synced 2025-06-04 03:21:38 +02:00
Merge remote-tracking branch 'origin/staging' into develop
This commit is contained in:
commit
9a965dc693
8 changed files with 167 additions and 213 deletions
|
@ -10,16 +10,18 @@
|
||||||
[app.common.geom.point :as gpt]
|
[app.common.geom.point :as gpt]
|
||||||
[clojure.data.fressian :as fres])
|
[clojure.data.fressian :as fres])
|
||||||
(:import
|
(:import
|
||||||
clojure.lang.Ratio
|
|
||||||
org.fressian.handlers.WriteHandler
|
|
||||||
org.fressian.handlers.ReadHandler
|
|
||||||
org.fressian.Writer
|
|
||||||
org.fressian.Reader
|
|
||||||
org.fressian.StreamingWriter
|
|
||||||
app.common.geom.matrix.Matrix
|
app.common.geom.matrix.Matrix
|
||||||
app.common.geom.point.Point
|
app.common.geom.point.Point
|
||||||
|
clojure.lang.Ratio
|
||||||
java.io.ByteArrayInputStream
|
java.io.ByteArrayInputStream
|
||||||
java.io.ByteArrayOutputStream))
|
java.io.ByteArrayOutputStream
|
||||||
|
java.time.Instant
|
||||||
|
java.time.OffsetDateTime
|
||||||
|
org.fressian.Reader
|
||||||
|
org.fressian.StreamingWriter
|
||||||
|
org.fressian.Writer
|
||||||
|
org.fressian.handlers.ReadHandler
|
||||||
|
org.fressian.handlers.WriteHandler))
|
||||||
|
|
||||||
;; --- MISC
|
;; --- MISC
|
||||||
|
|
||||||
|
@ -92,6 +94,20 @@
|
||||||
(.-e ^Matrix o)
|
(.-e ^Matrix o)
|
||||||
(.-f ^Matrix o)))))}
|
(.-f ^Matrix o)))))}
|
||||||
|
|
||||||
|
Instant
|
||||||
|
{"java/instant"
|
||||||
|
(reify WriteHandler
|
||||||
|
(write [_ w ch]
|
||||||
|
(.writeTag w "java/instant" 1)
|
||||||
|
(.writeInt w (.toEpochMilli ^Instant ch))))}
|
||||||
|
|
||||||
|
OffsetDateTime
|
||||||
|
{"java/instant"
|
||||||
|
(reify WriteHandler
|
||||||
|
(write [_ w ch]
|
||||||
|
(.writeTag w "java/instant" 1)
|
||||||
|
(.writeInt w (.toEpochMilli ^Instant (.toInstant ^OffsetDateTime ch)))))}
|
||||||
|
|
||||||
Ratio
|
Ratio
|
||||||
{"ratio"
|
{"ratio"
|
||||||
(reify WriteHandler
|
(reify WriteHandler
|
||||||
|
@ -181,6 +197,12 @@
|
||||||
(read [_ rdr _ _]
|
(read [_ rdr _ _]
|
||||||
(char (.readObject rdr))))
|
(char (.readObject rdr))))
|
||||||
|
|
||||||
|
"java/instant"
|
||||||
|
(reify ReadHandler
|
||||||
|
(read [_ rdr _ _]
|
||||||
|
(Instant/ofEpochMilli (.readInt rdr))))
|
||||||
|
|
||||||
|
|
||||||
"clj/ratio"
|
"clj/ratio"
|
||||||
(reify ReadHandler
|
(reify ReadHandler
|
||||||
(read [_ rdr _ _]
|
(read [_ rdr _ _]
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
(defn parse
|
(defn parse
|
||||||
[data]
|
[data]
|
||||||
(cond
|
(cond
|
||||||
(= data "%version%")
|
(str/starts-with? data "%")
|
||||||
{:full "develop"
|
{:full "develop"
|
||||||
:branch "develop"
|
:branch "develop"
|
||||||
:base "0.0.0"
|
:base "0.0.0"
|
||||||
|
|
|
@ -1,73 +0,0 @@
|
||||||
const l = require("lodash");
|
|
||||||
const fs = require("fs");
|
|
||||||
const gt = require("gettext-parser");
|
|
||||||
|
|
||||||
function generateLang(data, lang) {
|
|
||||||
let output = {};
|
|
||||||
|
|
||||||
for (let key of Object.keys(data)) {
|
|
||||||
const trObj = data[key];
|
|
||||||
const trRef = trObj["used-in"];
|
|
||||||
|
|
||||||
let content = trObj.translations[lang];
|
|
||||||
let comments = {};
|
|
||||||
|
|
||||||
if (l.isNil(content)) {
|
|
||||||
continue;
|
|
||||||
} else {
|
|
||||||
let result = {
|
|
||||||
msgid: key,
|
|
||||||
comments: {}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (l.isArray(trRef)) {
|
|
||||||
result.comments.reference = trRef.join(", ");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (trObj.permanent) {
|
|
||||||
result.comments.flag = "permanent";
|
|
||||||
}
|
|
||||||
|
|
||||||
if (l.isArray(content)) {
|
|
||||||
result.msgid_plural = key;
|
|
||||||
result.msgstr = content;
|
|
||||||
} else if (l.isString(content)) {
|
|
||||||
result.msgstr = [content];
|
|
||||||
} else {
|
|
||||||
throw new Error("unexpected");
|
|
||||||
}
|
|
||||||
|
|
||||||
output[key] = result;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (lang.includes("_")) {
|
|
||||||
const [a, b] = lang.split("_");
|
|
||||||
lang = `${a}_${b.toUpperCase()}`;
|
|
||||||
}
|
|
||||||
|
|
||||||
const poData = {
|
|
||||||
charset: "utf-8",
|
|
||||||
headers: {
|
|
||||||
"Language": lang,
|
|
||||||
"MIME-Version": "1.0",
|
|
||||||
"Content-Type": "text/plain; charset=UTF-8",
|
|
||||||
"Content-Transfer-Encoding": "8bit",
|
|
||||||
"Plural-Forms": "nplurals=2; plural=(n != 1);"
|
|
||||||
},
|
|
||||||
"translations": {
|
|
||||||
"": output
|
|
||||||
}
|
|
||||||
}
|
|
||||||
const buff = gt.po.compile(poData, {sort: true});
|
|
||||||
fs.writeFileSync(`./translations/${lang}.po`, buff);
|
|
||||||
}
|
|
||||||
|
|
||||||
const content = fs.readFileSync("./resources/locales.json");
|
|
||||||
const data = JSON.parse(content);
|
|
||||||
const langs = ["de"];
|
|
||||||
|
|
||||||
for (let lang of langs) {
|
|
||||||
generateLang(data, lang);
|
|
||||||
}
|
|
||||||
|
|
|
@ -242,7 +242,8 @@
|
||||||
|
|
||||||
(nil? frame)
|
(nil? frame)
|
||||||
[:section.empty-state
|
[:section.empty-state
|
||||||
[:span (tr "viewer.frame-not-found")]]
|
(when (some? index)
|
||||||
|
[:span (tr "viewer.frame-not-found")])]
|
||||||
|
|
||||||
(some? frame)
|
(some? frame)
|
||||||
(if (= :handoff section)
|
(if (= :handoff section)
|
||||||
|
|
|
@ -433,95 +433,97 @@
|
||||||
[:label {:for (str "background-" index)}
|
[:label {:for (str "background-" index)}
|
||||||
(tr "workspace.options.interaction-background")]]]])
|
(tr "workspace.options.interaction-background")]]]])
|
||||||
|
|
||||||
; Animation select
|
(when (cti/has-animation? interaction)
|
||||||
[:div.interactions-element.separator
|
[:*
|
||||||
[:span.element-set-subtitle.wide (tr "workspace.options.interaction-animation")]
|
; Animation select
|
||||||
[:select.input-select
|
[:div.interactions-element.separator
|
||||||
{:value (str (-> interaction :animation :animation-type))
|
[:span.element-set-subtitle.wide (tr "workspace.options.interaction-animation")]
|
||||||
:on-change change-animation-type}
|
[:select.input-select
|
||||||
[:option {:value ""} (tr "workspace.options.interaction-animation-none")]
|
{:value (str (-> interaction :animation :animation-type))
|
||||||
(for [[value name] (animation-type-names interaction)]
|
:on-change change-animation-type}
|
||||||
[:option {:value (str value)} name])]]
|
[:option {:value ""} (tr "workspace.options.interaction-animation-none")]
|
||||||
|
(for [[value name] (animation-type-names interaction)]
|
||||||
|
[:option {:value (str value)} name])]]
|
||||||
|
|
||||||
; Direction
|
; Direction
|
||||||
(when (cti/has-way? interaction)
|
(when (cti/has-way? interaction)
|
||||||
[:div.interactions-element.interactions-way-buttons
|
[:div.interactions-element.interactions-way-buttons
|
||||||
[:div.input-radio
|
[:div.input-radio
|
||||||
[:input {:type "radio"
|
[:input {:type "radio"
|
||||||
:id "way-in"
|
:id "way-in"
|
||||||
:checked (= :in way)
|
:checked (= :in way)
|
||||||
:name "animation-way"
|
:name "animation-way"
|
||||||
:value ":in"
|
:value ":in"
|
||||||
:on-change change-way}]
|
:on-change change-way}]
|
||||||
[:label {:for "way-in"} (tr "workspace.options.interaction-in")]]
|
[:label {:for "way-in"} (tr "workspace.options.interaction-in")]]
|
||||||
[:div.input-radio
|
[:div.input-radio
|
||||||
[:input {:type "radio"
|
[:input {:type "radio"
|
||||||
:id "way-out"
|
:id "way-out"
|
||||||
:checked (= :out way)
|
:checked (= :out way)
|
||||||
:name "animation-way"
|
:name "animation-way"
|
||||||
:value ":out"
|
:value ":out"
|
||||||
:on-change change-way}]
|
:on-change change-way}]
|
||||||
[:label {:for "way-out"} (tr "workspace.options.interaction-out")]]])
|
[:label {:for "way-out"} (tr "workspace.options.interaction-out")]]])
|
||||||
|
|
||||||
; Direction
|
; Direction
|
||||||
(when (cti/has-direction? interaction)
|
(when (cti/has-direction? interaction)
|
||||||
[:div.interactions-element.interactions-direction-buttons
|
[:div.interactions-element.interactions-direction-buttons
|
||||||
[:div.element-set-actions-button
|
[:div.element-set-actions-button
|
||||||
{:class (dom/classnames :active (= direction :right))
|
{:class (dom/classnames :active (= direction :right))
|
||||||
:on-click #(change-direction :right)}
|
:on-click #(change-direction :right)}
|
||||||
i/animate-right]
|
i/animate-right]
|
||||||
[:div.element-set-actions-button
|
[:div.element-set-actions-button
|
||||||
{:class (dom/classnames :active (= direction :down))
|
{:class (dom/classnames :active (= direction :down))
|
||||||
:on-click #(change-direction :down)}
|
:on-click #(change-direction :down)}
|
||||||
i/animate-down]
|
i/animate-down]
|
||||||
[:div.element-set-actions-button
|
[:div.element-set-actions-button
|
||||||
{:class (dom/classnames :active (= direction :left))
|
{:class (dom/classnames :active (= direction :left))
|
||||||
:on-click #(change-direction :left)}
|
:on-click #(change-direction :left)}
|
||||||
i/animate-left]
|
i/animate-left]
|
||||||
[:div.element-set-actions-button
|
[:div.element-set-actions-button
|
||||||
{:class (dom/classnames :active (= direction :up))
|
{:class (dom/classnames :active (= direction :up))
|
||||||
:on-click #(change-direction :up)}
|
:on-click #(change-direction :up)}
|
||||||
i/animate-up]])
|
i/animate-up]])
|
||||||
|
|
||||||
; Duration
|
; Duration
|
||||||
(when (cti/has-duration? interaction)
|
(when (cti/has-duration? interaction)
|
||||||
[:div.interactions-element
|
[:div.interactions-element
|
||||||
[:span.element-set-subtitle.wide (tr "workspace.options.interaction-duration")]
|
[:span.element-set-subtitle.wide (tr "workspace.options.interaction-duration")]
|
||||||
[:div.input-element {:title (tr "workspace.options.interaction-ms")}
|
[:div.input-element {:title (tr "workspace.options.interaction-ms")}
|
||||||
[:> numeric-input {:ref ext-duration-ref
|
[:> numeric-input {:ref ext-duration-ref
|
||||||
:on-click (select-text ext-duration-ref)
|
:on-click (select-text ext-duration-ref)
|
||||||
:on-change change-duration
|
:on-change change-duration
|
||||||
:value (-> interaction :animation :duration)
|
:value (-> interaction :animation :duration)
|
||||||
:title (tr "workspace.options.interaction-ms")}]
|
:title (tr "workspace.options.interaction-ms")}]
|
||||||
[:span.after (tr "workspace.options.interaction-ms")]]])
|
[:span.after (tr "workspace.options.interaction-ms")]]])
|
||||||
|
|
||||||
; Easing
|
; Easing
|
||||||
(when (cti/has-easing? interaction)
|
(when (cti/has-easing? interaction)
|
||||||
[:div.interactions-element
|
[:div.interactions-element
|
||||||
[:span.element-set-subtitle.wide (tr "workspace.options.interaction-easing")]
|
[:span.element-set-subtitle.wide (tr "workspace.options.interaction-easing")]
|
||||||
[:select.input-select
|
[:select.input-select
|
||||||
{:value (str (-> interaction :animation :easing))
|
{:value (str (-> interaction :animation :easing))
|
||||||
:on-change change-easing}
|
:on-change change-easing}
|
||||||
(for [[value name] (easing-names)]
|
(for [[value name] (easing-names)]
|
||||||
[:option {:value (str value)} name])]
|
[:option {:value (str value)} name])]
|
||||||
[:div.interactions-easing-icon
|
[:div.interactions-easing-icon
|
||||||
(case (-> interaction :animation :easing)
|
(case (-> interaction :animation :easing)
|
||||||
:linear i/easing-linear
|
:linear i/easing-linear
|
||||||
:ease i/easing-ease
|
:ease i/easing-ease
|
||||||
:ease-in i/easing-ease-in
|
:ease-in i/easing-ease-in
|
||||||
:ease-out i/easing-ease-out
|
:ease-out i/easing-ease-out
|
||||||
:ease-in-out i/easing-ease-in-out)]])
|
:ease-in-out i/easing-ease-in-out)]])
|
||||||
|
|
||||||
; Offset effect
|
; Offset effect
|
||||||
(when (cti/has-offset-effect? interaction)
|
(when (cti/has-offset-effect? interaction)
|
||||||
[:div.interactions-element
|
[:div.interactions-element
|
||||||
[:div.input-checkbox
|
[:div.input-checkbox
|
||||||
[:input {:type "checkbox"
|
[:input {:type "checkbox"
|
||||||
:id (str "offset-effect-" index)
|
:id (str "offset-effect-" index)
|
||||||
:checked (-> interaction :animation :offset-effect)
|
:checked (-> interaction :animation :offset-effect)
|
||||||
:on-change change-offset-effect}]
|
:on-change change-offset-effect}]
|
||||||
[:label {:for (str "offset-effect-" index)}
|
[:label {:for (str "offset-effect-" index)}
|
||||||
(tr "workspace.options.interaction-offset-effect")]]])])]]))
|
(tr "workspace.options.interaction-offset-effect")]]])])])]]))
|
||||||
|
|
||||||
(mf/defc interactions-menu
|
(mf/defc interactions-menu
|
||||||
[{:keys [shape] :as props}]
|
[{:keys [shape] :as props}]
|
||||||
|
|
|
@ -478,7 +478,9 @@
|
||||||
([uri name]
|
([uri name]
|
||||||
(open-new-window uri name "noopener,noreferrer"))
|
(open-new-window uri name "noopener,noreferrer"))
|
||||||
([uri name features]
|
([uri name features]
|
||||||
(.open js/window (str uri) name features)))
|
(let [new-window (.open js/window (str uri) name features)]
|
||||||
|
(when (not= name "_blank")
|
||||||
|
(.reload (.-location new-window))))))
|
||||||
|
|
||||||
(defn browser-back
|
(defn browser-back
|
||||||
[]
|
[]
|
||||||
|
|
|
@ -925,6 +925,9 @@ msgstr "Code"
|
||||||
msgid "handoff.tabs.code.selected.circle"
|
msgid "handoff.tabs.code.selected.circle"
|
||||||
msgstr "Circle"
|
msgstr "Circle"
|
||||||
|
|
||||||
|
msgid "handoff.tabs.code.selected.component"
|
||||||
|
msgstr "Component"
|
||||||
|
|
||||||
msgid "handoff.tabs.code.selected.curve"
|
msgid "handoff.tabs.code.selected.curve"
|
||||||
msgstr "Curve"
|
msgstr "Curve"
|
||||||
|
|
||||||
|
@ -937,9 +940,6 @@ msgstr "Group"
|
||||||
msgid "handoff.tabs.code.selected.image"
|
msgid "handoff.tabs.code.selected.image"
|
||||||
msgstr "Image"
|
msgstr "Image"
|
||||||
|
|
||||||
msgid "handoff.tabs.code.selected.component"
|
|
||||||
msgstr "Component"
|
|
||||||
|
|
||||||
msgid "handoff.tabs.code.selected.mask"
|
msgid "handoff.tabs.code.selected.mask"
|
||||||
msgstr "Mask"
|
msgstr "Mask"
|
||||||
|
|
||||||
|
@ -2109,6 +2109,10 @@ msgstr "Show color palette"
|
||||||
msgid "workspace.header.menu.show-rules"
|
msgid "workspace.header.menu.show-rules"
|
||||||
msgstr "Show rules"
|
msgstr "Show rules"
|
||||||
|
|
||||||
|
#: src/app/main/ui/workspace/header.cljs
|
||||||
|
msgid "workspace.header.reset-zoom"
|
||||||
|
msgstr "Reset"
|
||||||
|
|
||||||
#: src/app/main/ui/workspace/header.cljs
|
#: src/app/main/ui/workspace/header.cljs
|
||||||
msgid "workspace.header.save-error"
|
msgid "workspace.header.save-error"
|
||||||
msgstr "Error on saving"
|
msgstr "Error on saving"
|
||||||
|
@ -2126,32 +2130,28 @@ msgid "workspace.header.unsaved"
|
||||||
msgstr "Unsaved changes"
|
msgstr "Unsaved changes"
|
||||||
|
|
||||||
#: src/app/main/ui/workspace/header.cljs
|
#: src/app/main/ui/workspace/header.cljs
|
||||||
msgid "workspace.header.reset-zoom"
|
msgid "workspace.header.viewer"
|
||||||
msgstr "Reset"
|
msgstr "View mode (%s)"
|
||||||
|
|
||||||
#: src/app/main/ui/workspace/header.cljs
|
|
||||||
msgid "workspace.header.zoom-fit-all"
|
|
||||||
msgstr "Zoom to fil all"
|
|
||||||
|
|
||||||
#: src/app/main/ui/workspace/header.cljs
|
|
||||||
msgid "workspace.header.zoom-selected"
|
|
||||||
msgstr "Zoom to selected"
|
|
||||||
|
|
||||||
#: src/app/main/ui/workspace/header.cljs
|
|
||||||
msgid "workspace.header.zoom-fit"
|
|
||||||
msgstr "Fit - Scale down to fit"
|
|
||||||
|
|
||||||
#: src/app/main/ui/workspace/header.cljs
|
#: src/app/main/ui/workspace/header.cljs
|
||||||
msgid "workspace.header.zoom-fill"
|
msgid "workspace.header.zoom-fill"
|
||||||
msgstr "Fill -Scale to fill"
|
msgstr "Fill -Scale to fill"
|
||||||
|
|
||||||
|
#: src/app/main/ui/workspace/header.cljs
|
||||||
|
msgid "workspace.header.zoom-fit"
|
||||||
|
msgstr "Fit - Scale down to fit"
|
||||||
|
|
||||||
|
#: src/app/main/ui/workspace/header.cljs
|
||||||
|
msgid "workspace.header.zoom-fit-all"
|
||||||
|
msgstr "Zoom to fil all"
|
||||||
|
|
||||||
#: src/app/main/ui/workspace/header.cljs
|
#: src/app/main/ui/workspace/header.cljs
|
||||||
msgid "workspace.header.zoom-full-screen"
|
msgid "workspace.header.zoom-full-screen"
|
||||||
msgstr "Full screen"
|
msgstr "Full screen"
|
||||||
|
|
||||||
#: src/app/main/ui/workspace/header.cljs
|
#: src/app/main/ui/workspace/header.cljs
|
||||||
msgid "workspace.header.viewer"
|
msgid "workspace.header.zoom-selected"
|
||||||
msgstr "View mode (%s)"
|
msgstr "Zoom to selected"
|
||||||
|
|
||||||
#: src/app/main/ui/workspace/libraries.cljs
|
#: src/app/main/ui/workspace/libraries.cljs
|
||||||
msgid "workspace.libraries.add"
|
msgid "workspace.libraries.add"
|
||||||
|
@ -2363,10 +2363,6 @@ msgstr "Exporting…"
|
||||||
msgid "workspace.options.fill"
|
msgid "workspace.options.fill"
|
||||||
msgstr "Fill"
|
msgstr "Fill"
|
||||||
|
|
||||||
#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs
|
|
||||||
msgid "workspace.options.show-fill-on-export"
|
|
||||||
msgstr "Show in exports"
|
|
||||||
|
|
||||||
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs
|
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs
|
||||||
msgid "workspace.options.flows.add-flow-start"
|
msgid "workspace.options.flows.add-flow-start"
|
||||||
msgstr "Add flow start"
|
msgstr "Add flow start"
|
||||||
|
@ -2845,6 +2841,10 @@ msgstr "Group shadow"
|
||||||
msgid "workspace.options.shadow-options.title.multiple"
|
msgid "workspace.options.shadow-options.title.multiple"
|
||||||
msgstr "Selection shadows"
|
msgstr "Selection shadows"
|
||||||
|
|
||||||
|
#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs
|
||||||
|
msgid "workspace.options.show-fill-on-export"
|
||||||
|
msgstr "Show in exports"
|
||||||
|
|
||||||
#: src/app/main/ui/workspace/sidebar/options/shapes/frame.cljs, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs
|
#: src/app/main/ui/workspace/sidebar/options/shapes/frame.cljs, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs
|
||||||
msgid "workspace.options.size"
|
msgid "workspace.options.size"
|
||||||
msgstr "Size"
|
msgstr "Size"
|
||||||
|
|
|
@ -926,6 +926,9 @@ msgstr "Código"
|
||||||
msgid "handoff.tabs.code.selected.circle"
|
msgid "handoff.tabs.code.selected.circle"
|
||||||
msgstr "Círculo"
|
msgstr "Círculo"
|
||||||
|
|
||||||
|
msgid "handoff.tabs.code.selected.component"
|
||||||
|
msgstr "Componente"
|
||||||
|
|
||||||
msgid "handoff.tabs.code.selected.curve"
|
msgid "handoff.tabs.code.selected.curve"
|
||||||
msgstr "Curva"
|
msgstr "Curva"
|
||||||
|
|
||||||
|
@ -938,9 +941,6 @@ msgstr "Grupo"
|
||||||
msgid "handoff.tabs.code.selected.image"
|
msgid "handoff.tabs.code.selected.image"
|
||||||
msgstr "Imagen"
|
msgstr "Imagen"
|
||||||
|
|
||||||
msgid "handoff.tabs.code.selected.component"
|
|
||||||
msgstr "Componente"
|
|
||||||
|
|
||||||
msgid "handoff.tabs.code.selected.mask"
|
msgid "handoff.tabs.code.selected.mask"
|
||||||
msgstr "Máscara"
|
msgstr "Máscara"
|
||||||
|
|
||||||
|
@ -2124,6 +2124,10 @@ msgstr "Mostrar paleta de colores"
|
||||||
msgid "workspace.header.menu.show-rules"
|
msgid "workspace.header.menu.show-rules"
|
||||||
msgstr "Mostrar reglas"
|
msgstr "Mostrar reglas"
|
||||||
|
|
||||||
|
#: src/app/main/ui/workspace/header.cljs
|
||||||
|
msgid "workspace.header.reset-zoom"
|
||||||
|
msgstr "Restablecer"
|
||||||
|
|
||||||
#: src/app/main/ui/workspace/header.cljs
|
#: src/app/main/ui/workspace/header.cljs
|
||||||
msgid "workspace.header.save-error"
|
msgid "workspace.header.save-error"
|
||||||
msgstr "Error al guardar"
|
msgstr "Error al guardar"
|
||||||
|
@ -2141,32 +2145,28 @@ msgid "workspace.header.unsaved"
|
||||||
msgstr "Cambios sin guardar"
|
msgstr "Cambios sin guardar"
|
||||||
|
|
||||||
#: src/app/main/ui/workspace/header.cljs
|
#: src/app/main/ui/workspace/header.cljs
|
||||||
msgid "workspace.header.reset-zoom"
|
msgid "workspace.header.viewer"
|
||||||
msgstr "Restablecer"
|
msgstr "Modo de visualización (%s)"
|
||||||
|
|
||||||
#: src/app/main/ui/workspace/header.cljs
|
|
||||||
msgid "workspace.header.zoom-fit-all"
|
|
||||||
msgstr "Zoom abarcar todo"
|
|
||||||
|
|
||||||
#: src/app/main/ui/workspace/header.cljs
|
|
||||||
msgid "workspace.header.zoom-selected"
|
|
||||||
msgstr "Zoom a selección"
|
|
||||||
|
|
||||||
#: src/app/main/ui/workspace/header.cljs
|
|
||||||
msgid "workspace.header.zoom-fit"
|
|
||||||
msgstr "Escalar para ajustar"
|
|
||||||
|
|
||||||
#: src/app/main/ui/workspace/header.cljs
|
#: src/app/main/ui/workspace/header.cljs
|
||||||
msgid "workspace.header.zoom-fill"
|
msgid "workspace.header.zoom-fill"
|
||||||
msgstr "Escalar para rellenar"
|
msgstr "Escalar para rellenar"
|
||||||
|
|
||||||
|
#: src/app/main/ui/workspace/header.cljs
|
||||||
|
msgid "workspace.header.zoom-fit"
|
||||||
|
msgstr "Escalar para ajustar"
|
||||||
|
|
||||||
|
#: src/app/main/ui/workspace/header.cljs
|
||||||
|
msgid "workspace.header.zoom-fit-all"
|
||||||
|
msgstr "Zoom abarcar todo"
|
||||||
|
|
||||||
#: src/app/main/ui/workspace/header.cljs
|
#: src/app/main/ui/workspace/header.cljs
|
||||||
msgid "workspace.header.zoom-full-screen"
|
msgid "workspace.header.zoom-full-screen"
|
||||||
msgstr "Pantalla completa"
|
msgstr "Pantalla completa"
|
||||||
|
|
||||||
#: src/app/main/ui/workspace/header.cljs
|
#: src/app/main/ui/workspace/header.cljs
|
||||||
msgid "workspace.header.viewer"
|
msgid "workspace.header.zoom-selected"
|
||||||
msgstr "Modo de visualización (%s)"
|
msgstr "Zoom a selección"
|
||||||
|
|
||||||
#: src/app/main/ui/workspace/libraries.cljs
|
#: src/app/main/ui/workspace/libraries.cljs
|
||||||
msgid "workspace.libraries.add"
|
msgid "workspace.libraries.add"
|
||||||
|
@ -2378,10 +2378,6 @@ msgstr "Exportando"
|
||||||
msgid "workspace.options.fill"
|
msgid "workspace.options.fill"
|
||||||
msgstr "Relleno"
|
msgstr "Relleno"
|
||||||
|
|
||||||
#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs
|
|
||||||
msgid "workspace.options.show-fill-on-export"
|
|
||||||
msgstr "Mostrar al exportar"
|
|
||||||
|
|
||||||
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs
|
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs
|
||||||
msgid "workspace.options.flows.add-flow-start"
|
msgid "workspace.options.flows.add-flow-start"
|
||||||
msgstr "Añadir inicio de flujo"
|
msgstr "Añadir inicio de flujo"
|
||||||
|
@ -2858,6 +2854,10 @@ msgstr "Sombra del grupo"
|
||||||
msgid "workspace.options.shadow-options.title.multiple"
|
msgid "workspace.options.shadow-options.title.multiple"
|
||||||
msgstr "Sombras de la seleccíón"
|
msgstr "Sombras de la seleccíón"
|
||||||
|
|
||||||
|
#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs
|
||||||
|
msgid "workspace.options.show-fill-on-export"
|
||||||
|
msgstr "Mostrar al exportar"
|
||||||
|
|
||||||
#: src/app/main/ui/workspace/sidebar/options/shapes/frame.cljs, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs
|
#: src/app/main/ui/workspace/sidebar/options/shapes/frame.cljs, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs
|
||||||
msgid "workspace.options.size"
|
msgid "workspace.options.size"
|
||||||
msgstr "Tamaño"
|
msgstr "Tamaño"
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue