mirror of
https://github.com/penpot/penpot.git
synced 2026-10-02 08:46:15 +00:00
Drop 277 keys nothing references from en.po (verified against frontend/src and common/src) and let sync propagate the deletions to every locale. Clear all 10 fuzzy entries: fill the 5 empty translations, keep the 4 valid ones, and drop the duplicated max-quote-reached in favor of max-quota-reached (the backend code stays, the UI maps it to the quota text). Recover 22 used-but-missing keys with translations: the 19 shortcuts section/subsection labels plus connected-to, pixel-grid-color and tokens.add-set. Make the rest statically visible to rehash instead: :label fns on shortcut commands, sections and subsections (one debug-only and one colorpicker-local id exempt); case branches in place of dm/str-built keys (export modal, text decoration and transform, undo history with raw-key fallback); hoist conditionals out of tr calls; pre-translate modal props and role labels; replace the lone (i18n/tr ...) site with tr. Turn static :error/code data into eager :error/fn calls in the common schemas and the auth/password forms. Rename the two keys containing spaces and point team leave at max-quota-reached. Backend-driven keys stay dynamic by design, declared with (tr ...) comments: the five weak-password details, team and organization notifications. Tooling: rehash also scans common/src and no longer treats a missing -l as no locale; new clj-kondo tr-dynamic warning flags non-literal tr args (lint scripts use --fail-level error so it never fails CI); tr docstring states the literal-only rule. Tests cover the shortcut label wiring, the undo-history fallback and the :error/fn schemas. Translations memory rewritten to match; es check word list gains three entries. Rebased onto develop: adopt the register field-error UX (the weak-password declarations move onto the :options code), keep develop's newer keys (connection-error, account-locked, save-retrying, tokens-source strings) with fresh references, and reword the shortcuts.cljs prose comment so rehash does not invent a "literal" key. AI-assisted-by: muse-spark-1.3-contributor
107 lines
2.4 KiB
Clojure
107 lines
2.4 KiB
Clojure
{:lint-as
|
|
{promesa.core/let clojure.core/let
|
|
promesa.core/->> clojure.core/->>
|
|
promesa.core/-> clojure.core/->
|
|
promesa.exec.csp/go-loop clojure.core/loop
|
|
promesa.util/with-open clojure.core/with-open
|
|
app.common.schema.generators/let clojure.core/let
|
|
app.common.data/export clojure.core/def
|
|
app.common.data.macros/get-in clojure.core/get-in
|
|
app.common.data.macros/with-open clojure.core/with-open
|
|
app.common.data.macros/select-keys clojure.core/select-keys
|
|
app.common.logging/with-context clojure.core/do}
|
|
|
|
:hooks
|
|
{:analyze-call
|
|
{app.common.data.macros/export hooks.export/export
|
|
app.util.services/defmethod hooks.export/service-defmethod
|
|
app.common.record/defrecord hooks.export/penpot-defrecord
|
|
app.db/with-atomic hooks.export/penpot-with-atomic
|
|
potok.v2.core/reify hooks.export/potok-reify
|
|
rumext.v2/fnc hooks.export/rumext-fnc
|
|
rumext.v2/defc hooks.export/rumext-defc
|
|
rumext.v2/lazy-component hooks.export/rumext-lazycomponent
|
|
shadow.lazy/loadable hooks.export/rumext-lazycomponent
|
|
app.util.i18n/tr hooks.i18n/tr-dynamic
|
|
app.common.i18n/tr hooks.i18n/tr-dynamic
|
|
}}
|
|
|
|
:output
|
|
{:exclude-files
|
|
["data_readers.clj"
|
|
"src/app/util/perf.cljs"
|
|
"src/app/common/logging.cljc"
|
|
"src/app/common/exceptions.cljc"
|
|
"^(?:backend|frontend|exporter|common)/build.clj"
|
|
"^(?:backend|frontend|exporter|common)/deps.edn"
|
|
"^(?:backend|frontend|exporter|common)/scripts/"
|
|
"^(?:backend|frontend|exporter|common)/dev/"
|
|
"^(?:backend|frontend|exporter|common)/test/"]
|
|
|
|
:linter-name true}
|
|
|
|
:linters
|
|
{:unsorted-required-namespaces
|
|
{:level :warning}
|
|
|
|
:potok/reify-type
|
|
{:level :error}
|
|
|
|
:penpot/tr-dynamic
|
|
{:level :warning}
|
|
|
|
:redundant-primitive-coercion
|
|
{:level :off}
|
|
|
|
:unused-excluded-var
|
|
{:level :off}
|
|
|
|
:unresolved-excluded-var
|
|
{:level :off}
|
|
|
|
:missing-protocol-method
|
|
{:level :off}
|
|
|
|
:unresolved-namespace
|
|
{:level :warning
|
|
:exclude [data_readers]}
|
|
|
|
:unused-value
|
|
{:level :off}
|
|
|
|
:single-key-in
|
|
{:level :warning}
|
|
|
|
:non-arg-vec-return-type-hint
|
|
{:level :off}
|
|
|
|
:redundant-do
|
|
{:level :off}
|
|
|
|
:redundant-ignore
|
|
{:level :off}
|
|
|
|
:redundant-nested-call
|
|
{:level :off}
|
|
|
|
:redundant-str-call
|
|
{:level :off}
|
|
|
|
:earmuffed-var-not-dynamic
|
|
{:level :off}
|
|
|
|
:dynamic-var-not-earmuffed
|
|
{:level :off}
|
|
|
|
:type-mismatch
|
|
{:level :off}
|
|
|
|
:used-underscored-binding
|
|
{:level :warning}
|
|
|
|
:unused-binding
|
|
{:exclude-destructured-as true
|
|
:exclude-destructured-keys-in-fn-args false
|
|
}
|
|
}}
|