From 98811bbdfb392299ce5cee31e97730632c066692 Mon Sep 17 00:00:00 2001 From: timotheegoguely Date: Fri, 7 Feb 2025 16:55:48 +0100 Subject: [PATCH 1/3] move comments style to 2.blocks.comments.css --- src/assets/css/index.css | 1 + src/assets/css/src/2.blocks.comments.css | 216 +++++++++++++++++++++++ src/components/comments/Comment.vue | 86 --------- src/components/comments/Comments.vue | 129 -------------- 4 files changed, 217 insertions(+), 215 deletions(-) create mode 100644 src/assets/css/src/2.blocks.comments.css diff --git a/src/assets/css/index.css b/src/assets/css/index.css index 148a9cb..e0fc8a4 100644 --- a/src/assets/css/index.css +++ b/src/assets/css/index.css @@ -18,6 +18,7 @@ @import 'src/2.blocks.badge.css'; @import 'src/2.blocks.button.css'; @import 'src/2.blocks.card.css'; +@import 'src/2.blocks.comments.css'; @import 'src/2.blocks.design-to-light.css'; @import 'src/2.blocks.dialog.css'; @import 'src/2.blocks.header.css'; diff --git a/src/assets/css/src/2.blocks.comments.css b/src/assets/css/src/2.blocks.comments.css new file mode 100644 index 0000000..27cc823 --- /dev/null +++ b/src/assets/css/src/2.blocks.comments.css @@ -0,0 +1,216 @@ +/* COMMENTS BLOCK */ + +#toggle-comments { + position: absolute; + right: var(--space-16); + bottom: var(--space-16); + padding: 0.625rem; +} + +#comments-container { + background-color: black; + position: absolute; + top: 0; + right: 0; + bottom: 4.5rem; + width: var(--dialog-comments-w); + padding: var(--space-24) var(--space-32); +} + +.comments { + scroll-behavior: smooth; + overflow-y: auto; + height: calc(100% - 3.5rem); + margin-bottom: 1rem; + margin-right: -2rem; + padding-right: 2rem; +} + +.comments.empty::after { + content: "Partagez vos idées en ajoutant des commentaires"; + height: 100%; + display: grid; + place-items: center; + text-align: center; + max-width: 24ch; + margin: auto; + font-size: var(--text-sm); + color: var(--color-grey-400); +} +.comments.empty::before { + --icon-size: 1.25rem; + --icon-color: var(--color-white); + content: ""; + display: block; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, calc(-50% - 4.5rem)); + width: var(--icon-size); + height: var(--icon-size); + background: var(--icon-color, currentColor); + mask-repeat: no-repeat; + mask-position: center; + mask-size: var(--icon-size); + mask-image: var(--icon-comment); +} + +#new-comment { + position: absolute; + bottom: var(--space-24); + left: var(--space-32); + right: var(--space-32); +} +#new-comment [data-icon] { + --column-gap: var(--space-12); + font-weight: 500; +} + +#comments-container form { + --flow-space: 0.5rem; + flex-direction: column; + position: -webkit-sticky; + position: sticky; + bottom: 5.5rem; + background: #333; +} +#comments-container textarea:not(.comment__body) { + position: sticky; + bottom: 0; + margin: 0; + background: none; + padding: 0; + color: var(--color-white); +} +#comments-container textarea { + resize: none; +} +#comments-container textarea:focus { + outline: none; +} +::placeholder { + color: var(--color-white-50); +} +#comments-container form footer { + gap: var(--space-12); +} +#comments-container form footer > * { + flex-grow: 1; +} + +.track.waiting-comment, +.track.waiting-comment .drag-zone, +.vpv-pages-inner-container.waiting-comment .page-inner-container, +.vpv-pages-inner-container.waiting-comment .vpv-text-layer-text, +.vpv-pages-inner-container.waiting-comment .vpv-text-layer-wrapper { + cursor: var(--icon-comment-cursor) -2 28, cell !important; +} + +.comment-marker { + --marker-size: 1.75rem; + position: absolute; + display: block; + width: var(--marker-size); + height: var(--marker-size); + background: var(--icon-comment-default) no-repeat center / contain; + scroll-margin-block-start: 4rem; + cursor: pointer !important; + z-index: 999; + overflow: visible; + transition: transform 0.1s ease-out; + transform-origin: bottom left; + margin-left: calc(var(--marker-size) * -0.025); + margin-top: calc(var(--marker-size) / -1.025); +} +.comment-marker:hover, +.comment-marker.big { + transform: scale(1.1); +} +.comment-marker.active, +.comment-marker:focus { + background-image: var(--icon-comment-focus); +} + +.comments > .comment:not([data-opened="true"]) { + cursor: pointer; +} +.comment { + --flow-space: var(--space-12); + font-size: var(--text-sm); + border: var(--border); + border-width: 2px; + border-radius: var(--rounded-lg); + padding: var(--space-12); + color: var(--color-grey-400); + transition: border-color 0.1s ease-in-out; +} +.comment.highlight { + border-color: #fff; +} + +.comment header p { + display: flex; + gap: var(--space-8); +} +.comment header strong, +.comment footer { + font-weight: 500; + color: var(--color-white); +} +.comment header time { + color: var(--color-primary); + font-weight: 500; + margin-left: auto; +} +.comment[data-status="unread"] { + background: var(--color-white); + border-color: var(--color-white); + color: var(--color-grey-700); +} +.comment[data-status="unread"] header p > :first-child::before { + content: ""; + display: inline-block; + width: 0.375rem; + height: 0.375rem; + border-radius: 50%; + background: var(--color-primary); + margin-right: var(--space-8); + margin-bottom: 0.075em; +} +.comment[data-status="unread"] header strong, +.comment[data-status="unread"] footer { + color: var(--color-black); +} +.comment[data-status="unread"] header time { + color: var(--color-primary); +} +.comment[data-opened="true"] { + border-color: transparent; +} +.comment[data-opened="true"] .comment__replies { + color: var(--color-primary); +} +.comment__id, +.comment__page, +.comment__date { + flex-shrink: 0; +} +.comment__body { + width: 100%; + padding: 0; + margin-bottom: 0; + color: var(--color-grey-400); + font: inherit; + letter-spacing: inherit; +} +.comment__ctas > * { + --border-color: transparent; + margin-right: var(--space-4); +} +.comment__edit-ctas { + display: flex; + gap: var(--space-12); +} +.comment__edit-ctas > * { + flex-grow: 1; +} diff --git a/src/components/comments/Comment.vue b/src/components/comments/Comment.vue index 273386a..b89ec5b 100644 --- a/src/components/comments/Comment.vue +++ b/src/components/comments/Comment.vue @@ -235,89 +235,3 @@ function unhightlightCorrespondingMarker() { correspondingMarker.classList.remove("big"); } - - diff --git a/src/components/comments/Comments.vue b/src/components/comments/Comments.vue index 5a947b0..4721e5d 100644 --- a/src/components/comments/Comments.vue +++ b/src/components/comments/Comments.vue @@ -325,132 +325,3 @@ function showCorrespondingView() { ); } - - From 652262ac94fafcac380f15fe5a9cf77b6852332a Mon Sep 17 00:00:00 2001 From: isUnknown Date: Tue, 28 Jan 2025 19:56:10 +0100 Subject: [PATCH 2/3] fix #109 --- src/components/project/virtual-sample/Interactive360.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/project/virtual-sample/Interactive360.vue b/src/components/project/virtual-sample/Interactive360.vue index a590c92..7acbe8b 100644 --- a/src/components/project/virtual-sample/Interactive360.vue +++ b/src/components/project/virtual-sample/Interactive360.vue @@ -50,7 +50,7 @@ localStorage.setItem("isHelperHidden", true); // Grab interaction const yMax = computed(() => { return parseInt( - activeTrack.files[activeTrack.files.length - 1].name.charAt(0) + activeTrack.files[activeTrack.files.length - 1].name.split("_")[0] ); }); const xMax = computed(() => { From 9c662bcbba52ecca9b34ec5bc2bd944d9139807f Mon Sep 17 00:00:00 2001 From: isUnknown Date: Fri, 7 Feb 2025 17:11:37 +0100 Subject: [PATCH 3/3] update kirby --- public/composer.json | 2 +- public/composer.lock | 90 +++++++-------- public/kirby/README.md | 10 +- public/kirby/bootstrap.php | 2 +- public/kirby/cacert.pem | 89 +-------------- public/kirby/composer.json | 14 +-- public/kirby/composer.lock | 106 +++++++++--------- public/kirby/config/areas/site/searches.php | 4 +- public/kirby/config/areas/system/views.php | 2 +- public/kirby/config/areas/users/searches.php | 2 +- public/kirby/config/blocks/image/image.yml | 1 + public/kirby/config/components.php | 10 +- public/kirby/config/fields/checkboxes.php | 4 +- public/kirby/config/fields/date.php | 6 +- public/kirby/config/fields/info.php | 2 +- public/kirby/config/fields/link.php | 39 +++++-- .../kirby/config/fields/mixins/datetime.php | 2 +- public/kirby/config/fields/mixins/picker.php | 10 +- public/kirby/config/fields/mixins/upload.php | 2 +- public/kirby/config/fields/number.php | 4 +- public/kirby/config/fields/pages.php | 2 +- public/kirby/config/fields/select.php | 2 +- public/kirby/config/fields/slug.php | 4 +- public/kirby/config/fields/structure.php | 14 +-- public/kirby/config/fields/tags.php | 6 +- public/kirby/config/fields/text.php | 8 +- public/kirby/config/fields/textarea.php | 12 +- public/kirby/config/fields/time.php | 4 +- public/kirby/config/fields/writer.php | 4 +- public/kirby/config/helpers.php | 6 +- public/kirby/config/methods.php | 4 +- public/kirby/config/routes.php | 4 +- public/kirby/config/sections/files.php | 2 +- public/kirby/config/sections/info.php | 4 +- .../kirby/config/sections/mixins/layout.php | 2 +- public/kirby/config/sections/mixins/max.php | 2 +- public/kirby/config/sections/mixins/min.php | 2 +- .../config/sections/mixins/pagination.php | 4 +- .../kirby/config/sections/mixins/parent.php | 2 +- public/kirby/config/sections/mixins/sort.php | 2 +- public/kirby/config/sections/pages.php | 2 +- .../parsedown-extra/ParsedownExtra.php | 4 +- .../dependencies/parsedown/Parsedown.php | 8 +- public/kirby/i18n/translations/bg.json | 44 ++++++++ public/kirby/i18n/translations/ca.json | 44 ++++++++ public/kirby/i18n/translations/cs.json | 44 ++++++++ public/kirby/i18n/translations/da.json | 44 ++++++++ public/kirby/i18n/translations/de.json | 46 +++++++- public/kirby/i18n/translations/el.json | 48 +++++++- public/kirby/i18n/translations/en.json | 1 + public/kirby/i18n/translations/eo.json | 44 ++++++++ public/kirby/i18n/translations/es_419.json | 44 ++++++++ public/kirby/i18n/translations/es_ES.json | 44 ++++++++ public/kirby/i18n/translations/fa.json | 44 ++++++++ public/kirby/i18n/translations/fi.json | 44 ++++++++ public/kirby/i18n/translations/fr.json | 44 ++++++++ public/kirby/i18n/translations/hu.json | 48 +++++++- public/kirby/i18n/translations/id.json | 44 ++++++++ public/kirby/i18n/translations/is_IS.json | 44 ++++++++ public/kirby/i18n/translations/it.json | 44 ++++++++ public/kirby/i18n/translations/ko.json | 44 ++++++++ public/kirby/i18n/translations/lt.json | 44 ++++++++ public/kirby/i18n/translations/nb.json | 44 ++++++++ public/kirby/i18n/translations/nl.json | 44 ++++++++ public/kirby/i18n/translations/pl.json | 44 ++++++++ public/kirby/i18n/translations/pt_BR.json | 44 ++++++++ public/kirby/i18n/translations/pt_PT.json | 44 ++++++++ public/kirby/i18n/translations/ro.json | 44 ++++++++ public/kirby/i18n/translations/ru.json | 44 ++++++++ public/kirby/i18n/translations/sk.json | 44 ++++++++ public/kirby/i18n/translations/sv_SE.json | 44 ++++++++ public/kirby/i18n/translations/tr.json | 44 ++++++++ public/kirby/package-lock.json | 6 - public/kirby/panel/.prettierignore | 2 - public/kirby/panel/eslint.config.mjs | 28 ----- public/kirby/src/Api/Api.php | 2 +- public/kirby/src/Cms/App.php | 34 +++--- public/kirby/src/Cms/AppPlugins.php | 12 +- public/kirby/src/Cms/AppTranslations.php | 2 +- public/kirby/src/Cms/AppUsers.php | 4 +- public/kirby/src/Cms/Auth.php | 12 +- public/kirby/src/Cms/Blocks.php | 2 +- public/kirby/src/Cms/Blueprint.php | 6 +- public/kirby/src/Cms/Collection.php | 4 +- public/kirby/src/Cms/ContentLocks.php | 2 +- public/kirby/src/Cms/Email.php | 6 +- public/kirby/src/Cms/Fieldsets.php | 2 +- public/kirby/src/Cms/File.php | 8 +- public/kirby/src/Cms/FileActions.php | 8 +- public/kirby/src/Cms/FileModifications.php | 8 +- public/kirby/src/Cms/FileRules.php | 4 +- public/kirby/src/Cms/Files.php | 8 +- public/kirby/src/Cms/Find.php | 2 +- public/kirby/src/Cms/HasChildren.php | 4 +- public/kirby/src/Cms/HasFiles.php | 6 +- public/kirby/src/Cms/Html.php | 2 +- public/kirby/src/Cms/Ingredients.php | 2 +- public/kirby/src/Cms/Items.php | 4 +- public/kirby/src/Cms/Language.php | 4 +- public/kirby/src/Cms/Layouts.php | 2 +- public/kirby/src/Cms/Media.php | 2 +- public/kirby/src/Cms/Model.php | 4 +- public/kirby/src/Cms/ModelWithContent.php | 36 +++--- public/kirby/src/Cms/NestCollection.php | 2 +- public/kirby/src/Cms/Page.php | 14 +-- public/kirby/src/Cms/PageActions.php | 4 +- public/kirby/src/Cms/PagePicker.php | 10 +- public/kirby/src/Cms/PageRules.php | 4 +- public/kirby/src/Cms/Pages.php | 14 +-- public/kirby/src/Cms/Pagination.php | 2 +- public/kirby/src/Cms/Picker.php | 2 +- public/kirby/src/Cms/Plugin.php | 2 +- public/kirby/src/Cms/Responder.php | 12 +- public/kirby/src/Cms/Role.php | 6 +- public/kirby/src/Cms/Roles.php | 2 +- public/kirby/src/Cms/Search.php | 6 +- public/kirby/src/Cms/Structure.php | 2 +- public/kirby/src/Cms/System.php | 14 ++- public/kirby/src/Cms/Translation.php | 2 +- public/kirby/src/Cms/Url.php | 6 +- public/kirby/src/Cms/User.php | 10 +- public/kirby/src/Cms/UserActions.php | 8 +- public/kirby/src/Cms/Users.php | 8 +- public/kirby/src/Content/Content.php | 6 +- .../kirby/src/Content/ContentTranslation.php | 2 +- public/kirby/src/Content/Field.php | 2 +- public/kirby/src/Data/Txt.php | 2 +- public/kirby/src/Database/Query.php | 10 +- public/kirby/src/Database/Sql.php | 2 +- public/kirby/src/Database/Sql/Sqlite.php | 2 +- public/kirby/src/Filesystem/Dir.php | 4 +- public/kirby/src/Filesystem/File.php | 4 +- public/kirby/src/Filesystem/Mime.php | 4 +- public/kirby/src/Form/Field.php | 8 +- public/kirby/src/Form/Field/BlocksField.php | 4 +- public/kirby/src/Form/Field/LayoutField.php | 2 +- public/kirby/src/Form/FieldClass.php | 4 +- public/kirby/src/Form/Fields.php | 2 +- public/kirby/src/Form/Mixin/Max.php | 2 +- public/kirby/src/Form/Mixin/Min.php | 2 +- public/kirby/src/Http/Environment.php | 8 +- public/kirby/src/Http/Route.php | 2 +- public/kirby/src/Http/Url.php | 2 +- public/kirby/src/Image/Image.php | 16 ++- public/kirby/src/Option/Option.php | 2 +- public/kirby/src/Panel/Model.php | 11 +- public/kirby/src/Panel/Panel.php | 2 +- public/kirby/src/Panel/View.php | 6 +- public/kirby/src/Parsley/Parsley.php | 2 +- public/kirby/src/Query/Expression.php | 2 +- public/kirby/src/Query/Query.php | 6 +- public/kirby/src/Query/Segments.php | 2 +- public/kirby/src/Session/Session.php | 4 +- public/kirby/src/Session/Sessions.php | 2 +- public/kirby/src/Toolkit/A.php | 4 +- public/kirby/src/Toolkit/Collection.php | 18 +-- public/kirby/src/Toolkit/Facade.php | 2 +- public/kirby/src/Toolkit/Html.php | 2 +- public/kirby/src/Toolkit/I18n.php | 12 +- public/kirby/src/Toolkit/Properties.php | 2 +- public/kirby/src/Toolkit/Silo.php | 4 +- public/kirby/src/Toolkit/Str.php | 60 +++++----- public/kirby/src/Toolkit/V.php | 12 +- public/kirby/src/Toolkit/Xml.php | 2 +- public/kirby/src/Uuid/Uri.php | 2 +- 165 files changed, 1757 insertions(+), 598 deletions(-) delete mode 100644 public/kirby/package-lock.json delete mode 100644 public/kirby/panel/.prettierignore delete mode 100644 public/kirby/panel/eslint.config.mjs diff --git a/public/composer.json b/public/composer.json index dc68ea8..ccd0f07 100644 --- a/public/composer.json +++ b/public/composer.json @@ -23,7 +23,7 @@ }, "require": { "php": "~8.1.0 || ~8.2.0 || ~8.3.0", - "getkirby/cms": "^4.5", + "getkirby/cms": "^4.6", "getkirby/kql": "^1.2" }, "config": { diff --git a/public/composer.lock b/public/composer.lock index 9f08a10..6707bf1 100644 --- a/public/composer.lock +++ b/public/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "8f2fa8b1557df883bef5b3425ee05c4c", + "content-hash": "b27285f9bf3dfa65b84a013e5b62c6ee", "packages": [ { "name": "christian-riesen/base32", @@ -67,16 +67,16 @@ }, { "name": "claviska/simpleimage", - "version": "4.2.0", + "version": "4.2.1", "source": { "type": "git", "url": "https://github.com/claviska/SimpleImage.git", - "reference": "dfbe53c01dae8467468ef2b817c09b786a7839d2" + "reference": "ec6d5021e5a7153a2520d64c59b86b6f3c4157c5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/claviska/SimpleImage/zipball/dfbe53c01dae8467468ef2b817c09b786a7839d2", - "reference": "dfbe53c01dae8467468ef2b817c09b786a7839d2", + "url": "https://api.github.com/repos/claviska/SimpleImage/zipball/ec6d5021e5a7153a2520d64c59b86b6f3c4157c5", + "reference": "ec6d5021e5a7153a2520d64c59b86b6f3c4157c5", "shasum": "" }, "require": { @@ -108,7 +108,7 @@ "description": "A PHP class that makes working with images as simple as possible.", "support": { "issues": "https://github.com/claviska/SimpleImage/issues", - "source": "https://github.com/claviska/SimpleImage/tree/4.2.0" + "source": "https://github.com/claviska/SimpleImage/tree/4.2.1" }, "funding": [ { @@ -116,7 +116,7 @@ "type": "github" } ], - "time": "2024-04-15T16:07:16+00:00" + "time": "2024-11-22T13:25:03+00:00" }, { "name": "composer/semver", @@ -201,16 +201,16 @@ }, { "name": "filp/whoops", - "version": "2.16.0", + "version": "2.17.0", "source": { "type": "git", "url": "https://github.com/filp/whoops.git", - "reference": "befcdc0e5dce67252aa6322d82424be928214fa2" + "reference": "075bc0c26631110584175de6523ab3f1652eb28e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/befcdc0e5dce67252aa6322d82424be928214fa2", - "reference": "befcdc0e5dce67252aa6322d82424be928214fa2", + "url": "https://api.github.com/repos/filp/whoops/zipball/075bc0c26631110584175de6523ab3f1652eb28e", + "reference": "075bc0c26631110584175de6523ab3f1652eb28e", "shasum": "" }, "require": { @@ -260,7 +260,7 @@ ], "support": { "issues": "https://github.com/filp/whoops/issues", - "source": "https://github.com/filp/whoops/tree/2.16.0" + "source": "https://github.com/filp/whoops/tree/2.17.0" }, "funding": [ { @@ -268,25 +268,25 @@ "type": "github" } ], - "time": "2024-09-25T12:00:00+00:00" + "time": "2025-01-25T12:00:00+00:00" }, { "name": "getkirby/cms", - "version": "4.5.0", + "version": "4.6.0", "source": { "type": "git", "url": "https://github.com/getkirby/kirby.git", - "reference": "94cc37ee7c3004ebb4950a53f14e1329ed4d28d3" + "reference": "994556ca78eab3c11415702870b6388e8472addc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/getkirby/kirby/zipball/94cc37ee7c3004ebb4950a53f14e1329ed4d28d3", - "reference": "94cc37ee7c3004ebb4950a53f14e1329ed4d28d3", + "url": "https://api.github.com/repos/getkirby/kirby/zipball/994556ca78eab3c11415702870b6388e8472addc", + "reference": "994556ca78eab3c11415702870b6388e8472addc", "shasum": "" }, "require": { "christian-riesen/base32": "1.6.0", - "claviska/simpleimage": "4.2.0", + "claviska/simpleimage": "4.2.1", "composer/semver": "3.4.3", "ext-ctype": "*", "ext-curl": "*", @@ -299,15 +299,15 @@ "ext-mbstring": "*", "ext-openssl": "*", "ext-simplexml": "*", - "filp/whoops": "2.16.0", + "filp/whoops": "2.17.0", "getkirby/composer-installer": "^1.2.1", - "laminas/laminas-escaper": "2.14.0", + "laminas/laminas-escaper": "2.15.0", "michelf/php-smartypants": "1.8.1", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0", - "phpmailer/phpmailer": "6.9.2", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0", + "phpmailer/phpmailer": "6.9.3", "symfony/polyfill-intl-idn": "1.31.0", "symfony/polyfill-mbstring": "1.31.0", - "symfony/yaml": "6.4.13" + "symfony/yaml": "6.4.18" }, "replace": { "symfony/polyfill-php72": "*" @@ -371,7 +371,7 @@ "type": "custom" } ], - "time": "2024-11-28T10:10:23+00:00" + "time": "2025-01-30T11:02:53+00:00" }, { "name": "getkirby/composer-installer", @@ -477,16 +477,16 @@ }, { "name": "laminas/laminas-escaper", - "version": "2.14.0", + "version": "2.15.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-escaper.git", - "reference": "0f7cb975f4443cf22f33408925c231225cfba8cb" + "reference": "c612b0488ae486284c39885efca494c180f16351" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/0f7cb975f4443cf22f33408925c231225cfba8cb", - "reference": "0f7cb975f4443cf22f33408925c231225cfba8cb", + "url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/c612b0488ae486284c39885efca494c180f16351", + "reference": "c612b0488ae486284c39885efca494c180f16351", "shasum": "" }, "require": { @@ -498,12 +498,12 @@ "zendframework/zend-escaper": "*" }, "require-dev": { - "infection/infection": "^0.27.9", - "laminas/laminas-coding-standard": "~3.0.0", + "infection/infection": "^0.27.11", + "laminas/laminas-coding-standard": "~3.0.1", "maglnet/composer-require-checker": "^3.8.0", - "phpunit/phpunit": "^9.6.16", + "phpunit/phpunit": "^9.6.22", "psalm/plugin-phpunit": "^0.19.0", - "vimeo/psalm": "^5.21.1" + "vimeo/psalm": "^5.26.1" }, "type": "library", "autoload": { @@ -535,7 +535,7 @@ "type": "community_bridge" } ], - "time": "2024-10-24T10:12:53+00:00" + "time": "2024-12-17T19:39:54+00:00" }, { "name": "league/color-extractor", @@ -654,16 +654,16 @@ }, { "name": "phpmailer/phpmailer", - "version": "v6.9.2", + "version": "v6.9.3", "source": { "type": "git", "url": "https://github.com/PHPMailer/PHPMailer.git", - "reference": "a7b17b42fa4887c92146243f3d2f4ccb962af17c" + "reference": "2f5c94fe7493efc213f643c23b1b1c249d40f47e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/a7b17b42fa4887c92146243f3d2f4ccb962af17c", - "reference": "a7b17b42fa4887c92146243f3d2f4ccb962af17c", + "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/2f5c94fe7493efc213f643c23b1b1c249d40f47e", + "reference": "2f5c94fe7493efc213f643c23b1b1c249d40f47e", "shasum": "" }, "require": { @@ -723,7 +723,7 @@ "description": "PHPMailer is a full-featured email creation and transfer class for PHP", "support": { "issues": "https://github.com/PHPMailer/PHPMailer/issues", - "source": "https://github.com/PHPMailer/PHPMailer/tree/v6.9.2" + "source": "https://github.com/PHPMailer/PHPMailer/tree/v6.9.3" }, "funding": [ { @@ -731,7 +731,7 @@ "type": "github" } ], - "time": "2024-10-09T10:07:50+00:00" + "time": "2024-11-24T18:04:13+00:00" }, { "name": "psr/log", @@ -1175,16 +1175,16 @@ }, { "name": "symfony/yaml", - "version": "v6.4.13", + "version": "v6.4.18", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "e99b4e94d124b29ee4cf3140e1b537d2dad8cec9" + "reference": "bf598c9d9bb4a22f495a4e26e4c4fce2f8ecefc5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/e99b4e94d124b29ee4cf3140e1b537d2dad8cec9", - "reference": "e99b4e94d124b29ee4cf3140e1b537d2dad8cec9", + "url": "https://api.github.com/repos/symfony/yaml/zipball/bf598c9d9bb4a22f495a4e26e4c4fce2f8ecefc5", + "reference": "bf598c9d9bb4a22f495a4e26e4c4fce2f8ecefc5", "shasum": "" }, "require": { @@ -1227,7 +1227,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v6.4.13" + "source": "https://github.com/symfony/yaml/tree/v6.4.18" }, "funding": [ { @@ -1243,7 +1243,7 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:18:03+00:00" + "time": "2025-01-07T09:44:41+00:00" } ], "packages-dev": [], diff --git a/public/kirby/README.md b/public/kirby/README.md index 4ef329d..284fd6d 100644 --- a/public/kirby/README.md +++ b/public/kirby/README.md @@ -5,7 +5,7 @@ [![Coverage Status](https://img.shields.io/codecov/c/gh/getkirby/kirby?token=ROZ2RVA0OF)](https://codecov.io/gh/getkirby/kirby) [![Downloads](https://img.shields.io/packagist/dt/getkirby/cms?color=red)](https://github.com/getkirby/kirby/releases/latest) -**Kirby: the CMS that adapts to any project, loved by developers and editors alike.** +**Kirby: the CMS that adapts to any project, loved by developers and editors alike.** With Kirby, you build your own ideal interface. Combine forms, galleries, articles, spreadsheets and more into an amazing editing experience. You can learn more about Kirby at [getkirby.com](https://getkirby.com). This is Kirby's core application folder. Get started with one of the following repositories instead: @@ -21,13 +21,13 @@ Kirby is not free software. However, you can try Kirby and the Starterkit on you ### Contribute -**Found a bug?** +**Found a bug?** Please post all bugs as individual reports in our [issue tracker](https://github.com/getkirby/kirby/issues). -**Suggest a feature** +**Suggest a feature** If you have ideas for a feature or enhancement for Kirby, please use our [feedback platform](https://feedback.getkirby.com). -**Translations, bug fixes, code contributions ...** +**Translations, bug fixes, code contributions ...** Read about how to contribute to the development in our [contributing guide](/CONTRIBUTING.md). ## What's Kirby? @@ -41,7 +41,7 @@ Read about how to contribute to the development in our [contributing guide](/CON - **[Discord](https://chat.getkirby.com)** – Hang out and meet the community. - **[YouTube](https://youtube.com/kirbyCasts)** - Watch the latest video tutorials visually with Bastian. - **[Mastodon](https://mastodon.social/@getkirby)** – Spread the word. -- **[Instagram](https://www.instagram.com/getkirby/)** – Share your creations: #madewithkirby. +- **[Bluesky](https://bsky.app/profile/getkirby.com)** – Tell a friend. --- diff --git a/public/kirby/bootstrap.php b/public/kirby/bootstrap.php index 9a419de..9500125 100644 --- a/public/kirby/bootstrap.php +++ b/public/kirby/bootstrap.php @@ -6,7 +6,7 @@ */ if ( version_compare(PHP_VERSION, '8.1.0', '>=') === false || - version_compare(PHP_VERSION, '8.4.0', '<') === false + version_compare(PHP_VERSION, '8.5.0', '<') === false ) { die(include __DIR__ . '/views/php.php'); } diff --git a/public/kirby/cacert.pem b/public/kirby/cacert.pem index eb11b2f..e8cc6c1 100644 --- a/public/kirby/cacert.pem +++ b/public/kirby/cacert.pem @@ -1,7 +1,7 @@ ## ## Bundle of CA Root Certificates ## -## Certificate data from Mozilla as of: Tue Nov 26 13:58:25 2024 GMT +## Certificate data from Mozilla as of: Tue Dec 31 04:12:05 2024 GMT ## ## Find updated versions here: https://curl.se/docs/caextract.html ## @@ -16,7 +16,7 @@ ## Just configure this file as the SSLCACertificateFile. ## ## Conversion done with mk-ca-bundle.pl version 1.29. -## SHA256: 36105b01631f9fc03b1eca779b44a30a1a5890b9bf8dc07ccb001a07301e01cf +## SHA256: c99d6d3f8d3d4e47719ba2b648992f5b58b150128d3aca3c05c566d8dc98e116 ## @@ -584,27 +584,6 @@ NwUASZQDhETnv0Mxz3WLJdH0pmT1kvarBes96aULNmLazAZfNou2XjG4Kvte9nHfRCaexOYNkbQu dZWAUWpLMKawYqGT8ZvYzsRjdT9ZR7E= -----END CERTIFICATE----- -SecureSign RootCA11 -=================== ------BEGIN CERTIFICATE----- -MIIDbTCCAlWgAwIBAgIBATANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQGEwJKUDErMCkGA1UEChMi -SmFwYW4gQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcywgSW5jLjEcMBoGA1UEAxMTU2VjdXJlU2lnbiBS -b290Q0ExMTAeFw0wOTA0MDgwNDU2NDdaFw0yOTA0MDgwNDU2NDdaMFgxCzAJBgNVBAYTAkpQMSsw -KQYDVQQKEyJKYXBhbiBDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzLCBJbmMuMRwwGgYDVQQDExNTZWN1 -cmVTaWduIFJvb3RDQTExMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA/XeqpRyQBTvL -TJszi1oURaTnkBbR31fSIRCkF/3frNYfp+TbfPfs37gD2pRY/V1yfIw/XwFndBWW4wI8h9uuywGO -wvNmxoVF9ALGOrVisq/6nL+k5tSAMJjzDbaTj6nU2DbysPyKyiyhFTOVMdrAG/LuYpmGYz+/3ZMq -g6h2uRMft85OQoWPIucuGvKVCbIFtUROd6EgvanyTgp9UK31BQ1FT0Zx/Sg+U/sE2C3XZR1KG/rP -O7AxmjVuyIsG0wCR8pQIZUyxNAYAeoni8McDWc/V1uinMrPmmECGxc0nEovMe863ETxiYAcjPitA -bpSACW22s293bzUIUPsCh8U+iQIDAQABo0IwQDAdBgNVHQ4EFgQUW/hNT7KlhtQ60vFjmqC+CfZX -t94wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAKCh -OBZmLqdWHyGcBvod7bkixTgm2E5P7KN/ed5GIaGHd48HCJqypMWvDzKYC3xmKbabfSVSSUOrTC4r -bnpwrxYO4wJs+0LmGJ1F2FXI6Dvd5+H0LgscNFxsWEr7jIhQX5Ucv+2rIrVls4W6ng+4reV6G4pQ -Oh29Dbx7VFALuUKvVaAYga1lme++5Jy/xIWrQbJUb9wlze144o4MjQlJ3WN7WmmWAiGovVJZ6X01 -y8hSyn+B/tlr0/cR7SXf+Of5pPpyl4RTDaXQMhhRdlkUbA/r7F+AjHVDg8OFmP9Mni0N5HeDk061 -lgeLKBObjBmNQSdJQO7e5iNEOdyhIta6A/I= ------END CERTIFICATE----- - Microsec e-Szigno Root CA 2009 ============================== -----BEGIN CERTIFICATE----- @@ -2319,40 +2298,6 @@ hcErulWuBurQB7Lcq9CClnXO0lD+mefPL5/ndtFhKvshuzHQqp9HpLIiyhY6UFfEW0NnxWViA0kB dBb9HxEGmpv0 -----END CERTIFICATE----- -Entrust Root Certification Authority - G4 -========================================= ------BEGIN CERTIFICATE----- -MIIGSzCCBDOgAwIBAgIRANm1Q3+vqTkPAAAAAFVlrVgwDQYJKoZIhvcNAQELBQAwgb4xCzAJBgNV -BAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1c3Qu -bmV0L2xlZ2FsLXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxNSBFbnRydXN0LCBJbmMuIC0gZm9yIGF1 -dGhvcml6ZWQgdXNlIG9ubHkxMjAwBgNVBAMTKUVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1 -dGhvcml0eSAtIEc0MB4XDTE1MDUyNzExMTExNloXDTM3MTIyNzExNDExNlowgb4xCzAJBgNVBAYT -AlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1c3QubmV0 -L2xlZ2FsLXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxNSBFbnRydXN0LCBJbmMuIC0gZm9yIGF1dGhv -cml6ZWQgdXNlIG9ubHkxMjAwBgNVBAMTKUVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhv -cml0eSAtIEc0MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAsewsQu7i0TD/pZJH4i3D -umSXbcr3DbVZwbPLqGgZ2K+EbTBwXX7zLtJTmeH+H17ZSK9dE43b/2MzTdMAArzE+NEGCJR5WIoV -3imz/f3ET+iq4qA7ec2/a0My3dl0ELn39GjUu9CH1apLiipvKgS1sqbHoHrmSKvS0VnM1n4j5pds -8ELl3FFLFUHtSUrJ3hCX1nbB76W1NhSXNdh4IjVS70O92yfbYVaCNNzLiGAMC1rlLAHGVK/XqsEQ -e9IFWrhAnoanw5CGAlZSCXqc0ieCU0plUmr1POeo8pyvi73TDtTUXm6Hnmo9RR3RXRv06QqsYJn7 -ibT/mCzPfB3pAqoEmh643IhuJbNsZvc8kPNXwbMv9W3y+8qh+CmdRouzavbmZwe+LGcKKh9asj5X -xNMhIWNlUpEbsZmOeX7m640A2Vqq6nPopIICR5b+W45UYaPrL0swsIsjdXJ8ITzI9vF01Bx7owVV -7rtNOzK+mndmnqxpkCIHH2E6lr7lmk/MBTwoWdPBDFSoWWG9yHJM6Nyfh3+9nEg2XpWjDrk4JFX8 -dWbrAuMINClKxuMrLzOg2qOGpRKX/YAr2hRC45K9PvJdXmd0LhyIRyk0X+IyqJwlN4y6mACXi0mW -Hv0liqzc2thddG5msP9E36EYxr5ILzeUePiVSj9/E15dWf10hkNjc0kCAwEAAaNCMEAwDwYDVR0T -AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJ84xFYjwznooHFs6FRM5Og6sb9n -MA0GCSqGSIb3DQEBCwUAA4ICAQAS5UKme4sPDORGpbZgQIeMJX6tuGguW8ZAdjwD+MlZ9POrYs4Q -jbRaZIxowLByQzTSGwv2LFPSypBLhmb8qoMi9IsabyZIrHZ3CL/FmFz0Jomee8O5ZDIBf9PD3Vht -7LGrhFV0d4QEJ1JrhkzO3bll/9bGXp+aEJlLdWr+aumXIOTkdnrG0CSqkM0gkLpHZPt/B7NTeLUK -YvJzQ85BK4FqLoUWlFPUa19yIqtRLULVAJyZv967lDtX/Zr1hstWO1uIAeV8KEsD+UmDfLJ/fOPt -jqF/YFOOVZ1QNBIPt5d7bIdKROf1beyAN/BYGW5KaHbwH5Lk6rWS02FREAutp9lfx1/cH6NcjKF+ -m7ee01ZvZl4HliDtC3T7Zk6LERXpgUl+b7DUUH8i119lAg2m9IUe2K4GS0qn0jFmwvjO5QimpAKW -RGhXxNUzzxkvFMSUHHuk2fCfDrGA4tGeEWSpiBE6doLlYsKA2KSD7ZPvfC+QsDJMlhVoSFLUmQjA -JOgc47OlIQ6SwJAfzyBfyjs4x7dtOvPmRLgOMWuIjnDrnBdSqEGULoe256YSxXXfW8AKbnuk5F6G -+TaU33fD6Q3AOfF5u0aOq0NZJ7cguyPpVkAh7DE9ZapD8j3fcEThuk0mEDuYn/PIjhs4ViFqUZPT -kcpG2om3PVODLAgfi49T3f+sHw== ------END CERTIFICATE----- - Microsoft ECC Root Certificate Authority 2017 ============================================= -----BEGIN CERTIFICATE----- @@ -3170,36 +3115,6 @@ AwMDaAAwZQIxALGOWiDDshliTd6wT99u0nCK8Z9+aozmut6Dacpps6kFtZaSF4fC0urQe87YQVt8 rgIwRt7qy12a7DLCZRawTDBcMPPaTnOGBtjOiQRINzf43TNRnXCve1XYAS59BWQOhriR -----END CERTIFICATE----- -Security Communication RootCA3 -============================== ------BEGIN CERTIFICATE----- -MIIFfzCCA2egAwIBAgIJAOF8N0D9G/5nMA0GCSqGSIb3DQEBDAUAMF0xCzAJBgNVBAYTAkpQMSUw -IwYDVQQKExxTRUNPTSBUcnVzdCBTeXN0ZW1zIENPLixMVEQuMScwJQYDVQQDEx5TZWN1cml0eSBD -b21tdW5pY2F0aW9uIFJvb3RDQTMwHhcNMTYwNjE2MDYxNzE2WhcNMzgwMTE4MDYxNzE2WjBdMQsw -CQYDVQQGEwJKUDElMCMGA1UEChMcU0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEnMCUGA1UE -AxMeU2VjdXJpdHkgQ29tbXVuaWNhdGlvbiBSb290Q0EzMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A -MIICCgKCAgEA48lySfcw3gl8qUCBWNO0Ot26YQ+TUG5pPDXC7ltzkBtnTCHsXzW7OT4rCmDvu20r -hvtxosis5FaU+cmvsXLUIKx00rgVrVH+hXShuRD+BYD5UpOzQD11EKzAlrenfna84xtSGc4RHwsE -NPXY9Wk8d/Nk9A2qhd7gCVAEF5aEt8iKvE1y/By7z/MGTfmfZPd+pmaGNXHIEYBMwXFAWB6+oHP2 -/D5Q4eAvJj1+XCO1eXDe+uDRpdYMQXF79+qMHIjH7Iv10S9VlkZ8WjtYO/u62C21Jdp6Ts9EriGm -npjKIG58u4iFW/vAEGK78vknR+/RiTlDxN/e4UG/VHMgly1s2vPUB6PmudhvrvyMGS7TZ2crldtY -XLVqAvO4g160a75BflcJdURQVc1aEWEhCmHCqYj9E7wtiS/NYeCVvsq1e+F7NGcLH7YMx3weGVPK -p7FKFSBWFHA9K4IsD50VHUeAR/94mQ4xr28+j+2GaR57GIgUssL8gjMunEst+3A7caoreyYn8xrC -3PsXuKHqy6C0rtOUfnrQq8PsOC0RLoi/1D+tEjtCrI8Cbn3M0V9hvqG8OmpI6iZVIhZdXw3/JzOf -GAN0iltSIEdrRU0id4xVJ/CvHozJgyJUt5rQT9nO/NkuHJYosQLTA70lUhw0Zk8jq/R3gpYd0Vcw -CBEF/VfR2ccCAwEAAaNCMEAwHQYDVR0OBBYEFGQUfPxYchamCik0FW8qy7z8r6irMA4GA1UdDwEB -/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBDAUAA4ICAQDcAiMI4u8hOscNtybS -YpOnpSNyByCCYN8Y11StaSWSntkUz5m5UoHPrmyKO1o5yGwBQ8IibQLwYs1OY0PAFNr0Y/Dq9HHu -Tofjcan0yVflLl8cebsjqodEV+m9NU1Bu0soo5iyG9kLFwfl9+qd9XbXv8S2gVj/yP9kaWJ5rW4O -H3/uHWnlt3Jxs/6lATWUVCvAUm2PVcTJ0rjLyjQIUYWg9by0F1jqClx6vWPGOi//lkkZhOpn2ASx -YfQAW0q3nHE3GYV5v4GwxxMOdnE+OoAGrgYWp421wsTL/0ClXI2lyTrtcoHKXJg80jQDdwj98ClZ -XSEIx2C/pHF7uNkegr4Jr2VvKKu/S7XuPghHJ6APbw+LP6yVGPO5DtxnVW5inkYO0QR4ynKudtml -+LLfiAlhi+8kTtFZP1rUPcmTPCtk9YENFpb3ksP+MW/oKjJ0DvRMmEoYDjBU1cXrvMUVnuiZIesn -KwkK2/HmcBhWuwzkvvnoEKQTkrgc4NtnHVMDpCKn3F2SEDzq//wbEBrD2NCcnWXL0CsnMQMeNuE9 -dnUM/0Umud1RvCPHX9jYhxBAEg09ODfnRDwYwFMJZI//1ZqmfHAuc1Uh6N//g7kdPjIe1qZ9LPFm -6Vwdp6POXiUyK+OVrCoHzrQoeIY8LaadTdJ0MN1kURXbg4NR16/9M51NZg== ------END CERTIFICATE----- - Security Communication ECC RootCA1 ================================== -----BEGIN CERTIFICATE----- diff --git a/public/kirby/composer.json b/public/kirby/composer.json index 0cf0d0a..b433476 100644 --- a/public/kirby/composer.json +++ b/public/kirby/composer.json @@ -3,7 +3,7 @@ "description": "The Kirby core", "license": "proprietary", "type": "kirby-cms", - "version": "4.5.0", + "version": "4.6.0", "keywords": [ "kirby", "cms", @@ -24,7 +24,7 @@ "source": "https://github.com/getkirby/kirby" }, "require": { - "php": "~8.1.0 || ~8.2.0 || ~8.3.0", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0", "ext-SimpleXML": "*", "ext-ctype": "*", "ext-curl": "*", @@ -37,16 +37,16 @@ "ext-mbstring": "*", "ext-openssl": "*", "christian-riesen/base32": "1.6.0", - "claviska/simpleimage": "4.2.0", + "claviska/simpleimage": "4.2.1", "composer/semver": "3.4.3", - "filp/whoops": "2.16.0", + "filp/whoops": "2.17.0", "getkirby/composer-installer": "^1.2.1", - "laminas/laminas-escaper": "2.14.0", + "laminas/laminas-escaper": "2.15.0", "michelf/php-smartypants": "1.8.1", - "phpmailer/phpmailer": "6.9.2", + "phpmailer/phpmailer": "6.9.3", "symfony/polyfill-intl-idn": "1.31.0", "symfony/polyfill-mbstring": "1.31.0", - "symfony/yaml": "6.4.13" + "symfony/yaml": "6.4.18" }, "replace": { "symfony/polyfill-php72": "*" diff --git a/public/kirby/composer.lock b/public/kirby/composer.lock index 778013c..d1d7f20 100644 --- a/public/kirby/composer.lock +++ b/public/kirby/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "f12b026f0a6ca67dc1bd0072f607d1eb", + "content-hash": "bb22a0d37b9f64b37d3b4d166bdd1e21", "packages": [ { "name": "christian-riesen/base32", @@ -67,16 +67,16 @@ }, { "name": "claviska/simpleimage", - "version": "4.2.0", + "version": "4.2.1", "source": { "type": "git", "url": "https://github.com/claviska/SimpleImage.git", - "reference": "dfbe53c01dae8467468ef2b817c09b786a7839d2" + "reference": "ec6d5021e5a7153a2520d64c59b86b6f3c4157c5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/claviska/SimpleImage/zipball/dfbe53c01dae8467468ef2b817c09b786a7839d2", - "reference": "dfbe53c01dae8467468ef2b817c09b786a7839d2", + "url": "https://api.github.com/repos/claviska/SimpleImage/zipball/ec6d5021e5a7153a2520d64c59b86b6f3c4157c5", + "reference": "ec6d5021e5a7153a2520d64c59b86b6f3c4157c5", "shasum": "" }, "require": { @@ -108,7 +108,7 @@ "description": "A PHP class that makes working with images as simple as possible.", "support": { "issues": "https://github.com/claviska/SimpleImage/issues", - "source": "https://github.com/claviska/SimpleImage/tree/4.2.0" + "source": "https://github.com/claviska/SimpleImage/tree/4.2.1" }, "funding": [ { @@ -116,7 +116,7 @@ "type": "github" } ], - "time": "2024-04-15T16:07:16+00:00" + "time": "2024-11-22T13:25:03+00:00" }, { "name": "composer/semver", @@ -201,16 +201,16 @@ }, { "name": "filp/whoops", - "version": "2.16.0", + "version": "2.17.0", "source": { "type": "git", "url": "https://github.com/filp/whoops.git", - "reference": "befcdc0e5dce67252aa6322d82424be928214fa2" + "reference": "075bc0c26631110584175de6523ab3f1652eb28e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/befcdc0e5dce67252aa6322d82424be928214fa2", - "reference": "befcdc0e5dce67252aa6322d82424be928214fa2", + "url": "https://api.github.com/repos/filp/whoops/zipball/075bc0c26631110584175de6523ab3f1652eb28e", + "reference": "075bc0c26631110584175de6523ab3f1652eb28e", "shasum": "" }, "require": { @@ -260,7 +260,7 @@ ], "support": { "issues": "https://github.com/filp/whoops/issues", - "source": "https://github.com/filp/whoops/tree/2.16.0" + "source": "https://github.com/filp/whoops/tree/2.17.0" }, "funding": [ { @@ -268,7 +268,7 @@ "type": "github" } ], - "time": "2024-09-25T12:00:00+00:00" + "time": "2025-01-25T12:00:00+00:00" }, { "name": "getkirby/composer-installer", @@ -319,16 +319,16 @@ }, { "name": "laminas/laminas-escaper", - "version": "2.14.0", + "version": "2.15.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-escaper.git", - "reference": "0f7cb975f4443cf22f33408925c231225cfba8cb" + "reference": "c612b0488ae486284c39885efca494c180f16351" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/0f7cb975f4443cf22f33408925c231225cfba8cb", - "reference": "0f7cb975f4443cf22f33408925c231225cfba8cb", + "url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/c612b0488ae486284c39885efca494c180f16351", + "reference": "c612b0488ae486284c39885efca494c180f16351", "shasum": "" }, "require": { @@ -340,12 +340,12 @@ "zendframework/zend-escaper": "*" }, "require-dev": { - "infection/infection": "^0.27.9", - "laminas/laminas-coding-standard": "~3.0.0", + "infection/infection": "^0.27.11", + "laminas/laminas-coding-standard": "~3.0.1", "maglnet/composer-require-checker": "^3.8.0", - "phpunit/phpunit": "^9.6.16", + "phpunit/phpunit": "^9.6.22", "psalm/plugin-phpunit": "^0.19.0", - "vimeo/psalm": "^5.21.1" + "vimeo/psalm": "^5.26.1" }, "type": "library", "autoload": { @@ -377,7 +377,7 @@ "type": "community_bridge" } ], - "time": "2024-10-24T10:12:53+00:00" + "time": "2024-12-17T19:39:54+00:00" }, { "name": "league/color-extractor", @@ -496,16 +496,16 @@ }, { "name": "phpmailer/phpmailer", - "version": "v6.9.2", + "version": "v6.9.3", "source": { "type": "git", "url": "https://github.com/PHPMailer/PHPMailer.git", - "reference": "a7b17b42fa4887c92146243f3d2f4ccb962af17c" + "reference": "2f5c94fe7493efc213f643c23b1b1c249d40f47e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/a7b17b42fa4887c92146243f3d2f4ccb962af17c", - "reference": "a7b17b42fa4887c92146243f3d2f4ccb962af17c", + "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/2f5c94fe7493efc213f643c23b1b1c249d40f47e", + "reference": "2f5c94fe7493efc213f643c23b1b1c249d40f47e", "shasum": "" }, "require": { @@ -565,7 +565,7 @@ "description": "PHPMailer is a full-featured email creation and transfer class for PHP", "support": { "issues": "https://github.com/PHPMailer/PHPMailer/issues", - "source": "https://github.com/PHPMailer/PHPMailer/tree/v6.9.2" + "source": "https://github.com/PHPMailer/PHPMailer/tree/v6.9.3" }, "funding": [ { @@ -573,7 +573,7 @@ "type": "github" } ], - "time": "2024-10-09T10:07:50+00:00" + "time": "2024-11-24T18:04:13+00:00" }, { "name": "psr/log", @@ -627,16 +627,16 @@ }, { "name": "symfony/deprecation-contracts", - "version": "v3.5.0", + "version": "v3.5.1", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1" + "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", - "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6", + "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6", "shasum": "" }, "require": { @@ -644,12 +644,12 @@ }, "type": "library", "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, "branch-alias": { "dev-main": "3.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" } }, "autoload": { @@ -674,7 +674,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.0" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.1" }, "funding": [ { @@ -690,7 +690,7 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:32:20+00:00" + "time": "2024-09-25T14:20:29+00:00" }, { "name": "symfony/polyfill-ctype", @@ -718,8 +718,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -795,8 +795,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -877,8 +877,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -961,8 +961,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -1017,16 +1017,16 @@ }, { "name": "symfony/yaml", - "version": "v6.4.13", + "version": "v6.4.18", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "e99b4e94d124b29ee4cf3140e1b537d2dad8cec9" + "reference": "bf598c9d9bb4a22f495a4e26e4c4fce2f8ecefc5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/e99b4e94d124b29ee4cf3140e1b537d2dad8cec9", - "reference": "e99b4e94d124b29ee4cf3140e1b537d2dad8cec9", + "url": "https://api.github.com/repos/symfony/yaml/zipball/bf598c9d9bb4a22f495a4e26e4c4fce2f8ecefc5", + "reference": "bf598c9d9bb4a22f495a4e26e4c4fce2f8ecefc5", "shasum": "" }, "require": { @@ -1069,7 +1069,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v6.4.13" + "source": "https://github.com/symfony/yaml/tree/v6.4.18" }, "funding": [ { @@ -1085,7 +1085,7 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:18:03+00:00" + "time": "2025-01-07T09:44:41+00:00" } ], "packages-dev": [], @@ -1095,7 +1095,7 @@ "prefer-stable": false, "prefer-lowest": false, "platform": { - "php": "~8.1.0 || ~8.2.0 || ~8.3.0", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0", "ext-simplexml": "*", "ext-ctype": "*", "ext-curl": "*", diff --git a/public/kirby/config/areas/site/searches.php b/public/kirby/config/areas/site/searches.php index 4cefefe..f40f218 100644 --- a/public/kirby/config/areas/site/searches.php +++ b/public/kirby/config/areas/site/searches.php @@ -8,7 +8,7 @@ return [ 'pages' => [ 'label' => I18n::translate('pages'), 'icon' => 'page', - 'query' => function (string $query = null, int $limit, int $page) { + 'query' => function (string|null $query, int $limit, int $page) { $kirby = App::instance(); $pages = $kirby->site() ->index(true) @@ -31,7 +31,7 @@ return [ 'files' => [ 'label' => I18n::translate('files'), 'icon' => 'image', - 'query' => function (string $query = null, int $limit, int $page) { + 'query' => function (string|null $query, int $limit, int $page) { $kirby = App::instance(); $files = $kirby->site() ->index(true) diff --git a/public/kirby/config/areas/system/views.php b/public/kirby/config/areas/system/views.php index a24d1bc..5484193 100644 --- a/public/kirby/config/areas/system/views.php +++ b/public/kirby/config/areas/system/views.php @@ -35,7 +35,7 @@ return [ ], [ 'label' => I18n::translate('server'), - 'value' => $system->serverSoftware() ?? '?', + 'value' => $system->serverSoftwareShort() ?? '?', 'icon' => 'server' ] ]; diff --git a/public/kirby/config/areas/users/searches.php b/public/kirby/config/areas/users/searches.php index 82bce90..b4e4a0b 100644 --- a/public/kirby/config/areas/users/searches.php +++ b/public/kirby/config/areas/users/searches.php @@ -8,7 +8,7 @@ return [ 'users' => [ 'label' => I18n::translate('users'), 'icon' => 'users', - 'query' => function (string $query = null, int $limit, int $page) { + 'query' => function (string|null $query, int $limit, int $page) { $kirby = App::instance(); $users = $kirby->users() ->search($query) diff --git a/public/kirby/config/blocks/image/image.yml b/public/kirby/config/blocks/image/image.yml index ada9313..dc348a5 100644 --- a/public/kirby/config/blocks/image/image.yml +++ b/public/kirby/config/blocks/image/image.yml @@ -7,6 +7,7 @@ fields: type: radio columns: 2 default: "kirby" + required: true options: kirby: "{{ t('field.blocks.image.location.internal') }}" web: "{{ t('field.blocks.image.location.external') }}" diff --git a/public/kirby/config/components.php b/public/kirby/config/components.php index 637e96f..ab93814 100644 --- a/public/kirby/config/components.php +++ b/public/kirby/config/components.php @@ -118,7 +118,7 @@ return [ */ 'markdown' => function ( App $kirby, - string $text = null, + string|null $text = null, array $options = [] ): string { static $markdown; @@ -230,7 +230,7 @@ return [ $scoring['score'] += 16 * $score; $scoring['hits'] += 1; - // check for exact beginning matches + // check for exact beginning matches } elseif ( $options['words'] === false && Str::startsWith($lowerValue, $query) === true @@ -238,7 +238,7 @@ return [ $scoring['score'] += 8 * $score; $scoring['hits'] += 1; - // check for exact query matches + // check for exact query matches } elseif ($matches = preg_match_all('!' . $exact . '!ui', $value, $r)) { $scoring['score'] += 2 * $score; $scoring['hits'] += $matches; @@ -270,7 +270,7 @@ return [ */ 'smartypants' => function ( App $kirby, - string $text = null, + string|null $text = null, array $options = [] ): string { static $smartypants; @@ -354,7 +354,7 @@ return [ */ 'url' => function ( App $kirby, - string $path = null, + string|null $path = null, $options = null ): string { $language = null; diff --git a/public/kirby/config/fields/checkboxes.php b/public/kirby/config/fields/checkboxes.php index c8d962d..00a94b8 100644 --- a/public/kirby/config/fields/checkboxes.php +++ b/public/kirby/config/fields/checkboxes.php @@ -29,13 +29,13 @@ return [ /** * Maximum number of checked boxes */ - 'max' => function (int $max = null) { + 'max' => function (int|null $max = null) { return $max; }, /** * Minimum number of checked boxes */ - 'min' => function (int $min = null) { + 'min' => function (int|null $min = null) { return $min; }, 'value' => function ($value = null) { diff --git a/public/kirby/config/fields/date.php b/public/kirby/config/fields/date.php index 1cfa41c..34559db 100644 --- a/public/kirby/config/fields/date.php +++ b/public/kirby/config/fields/date.php @@ -24,7 +24,7 @@ return [ /** * Default date when a new page/file/user gets created */ - 'default' => function (string $default = null): string { + 'default' => function (string|null $default = null): string { return $this->toDatetime($default) ?? ''; }, @@ -46,13 +46,13 @@ return [ /** * Latest date, which can be selected/saved (Y-m-d) */ - 'max' => function (string $max = null): string|null { + 'max' => function (string|null $max = null): string|null { return Date::optional($max); }, /** * Earliest date, which can be selected/saved (Y-m-d) */ - 'min' => function (string $min = null): string|null { + 'min' => function (string|null $min = null): string|null { return Date::optional($min); }, diff --git a/public/kirby/config/fields/info.php b/public/kirby/config/fields/info.php index e65dc83..57907a2 100644 --- a/public/kirby/config/fields/info.php +++ b/public/kirby/config/fields/info.php @@ -26,7 +26,7 @@ return [ /** * Change the design of the info box */ - 'theme' => function (string $theme = null) { + 'theme' => function (string|null $theme = null) { return $theme; } ], diff --git a/public/kirby/config/fields/link.php b/public/kirby/config/fields/link.php index 885eb87..9493c3e 100644 --- a/public/kirby/config/fields/link.php +++ b/public/kirby/config/fields/link.php @@ -16,14 +16,29 @@ return [ * @values 'anchor', 'url, 'page, 'file', 'email', 'tel', 'custom' */ 'options' => function (array|null $options = null): array { - return $options ?? [ - 'url', - 'page', - 'file', - 'email', - 'tel', - 'anchor' - ]; + // default options + if ($options === null) { + return [ + 'url', + 'page', + 'file', + 'email', + 'tel', + 'anchor' + ]; + } + + // validate options + $available = array_keys($this->availableTypes()); + + if ($unavailable = array_diff($options, $available)) { + throw new InvalidArgumentException([ + 'key' => 'field.link.options', + 'data' => ['options' => implode(', ', $unavailable)] + ]); + } + + return $options; }, 'value' => function (string|null $value = null) { return $value ?? ''; @@ -31,9 +46,11 @@ return [ ], 'methods' => [ 'activeTypes' => function () { - return array_filter($this->availableTypes(), function (string $type) { - return in_array($type, $this->props['options']) === true; - }, ARRAY_FILTER_USE_KEY); + return array_filter( + $this->availableTypes(), + fn (string $type) => in_array($type, $this->props['options']), + ARRAY_FILTER_USE_KEY + ); }, 'availableTypes' => function () { return [ diff --git a/public/kirby/config/fields/mixins/datetime.php b/public/kirby/config/fields/mixins/datetime.php index b47a865..8d43d2a 100644 --- a/public/kirby/config/fields/mixins/datetime.php +++ b/public/kirby/config/fields/mixins/datetime.php @@ -7,7 +7,7 @@ return [ /** * Defines a custom format that is used when the field is saved */ - 'format' => function (string $format = null) { + 'format' => function (string|null $format = null) { return $format; } ], diff --git a/public/kirby/config/fields/mixins/picker.php b/public/kirby/config/fields/mixins/picker.php index a555c2f..0e4c5b8 100644 --- a/public/kirby/config/fields/mixins/picker.php +++ b/public/kirby/config/fields/mixins/picker.php @@ -23,7 +23,7 @@ return [ /** * Info text for each item */ - 'info' => function (string $info = null) { + 'info' => function (string|null $info = null) { return $info; }, @@ -37,14 +37,14 @@ return [ /** * The minimum number of required selected */ - 'min' => function (int $min = null) { + 'min' => function (int|null $min = null) { return $min; }, /** * The maximum number of allowed selected */ - 'max' => function (int $max = null) { + 'max' => function (int|null $max = null) { return $max; }, @@ -58,7 +58,7 @@ return [ /** * Query for the items to be included in the picker */ - 'query' => function (string $query = null) { + 'query' => function (string|null $query = null) { return $query; }, @@ -86,7 +86,7 @@ return [ /** * Main text for each item */ - 'text' => function (string $text = null) { + 'text' => function (string|null $text = null) { return $text; }, ], diff --git a/public/kirby/config/fields/mixins/upload.php b/public/kirby/config/fields/mixins/upload.php index a5b9962..ec136bd 100644 --- a/public/kirby/config/fields/mixins/upload.php +++ b/public/kirby/config/fields/mixins/upload.php @@ -74,7 +74,7 @@ return [ return $map($file, $parent); }); }, - 'uploadParent' => function (string $parentQuery = null) { + 'uploadParent' => function (string|null $parentQuery = null) { $parent = $this->model(); if ($parentQuery) { diff --git a/public/kirby/config/fields/number.php b/public/kirby/config/fields/number.php index 11334e8..cc41887 100644 --- a/public/kirby/config/fields/number.php +++ b/public/kirby/config/fields/number.php @@ -13,13 +13,13 @@ return [ /** * The lowest allowed number */ - 'min' => function (float $min = null) { + 'min' => function (float|null $min = null) { return $min; }, /** * The highest allowed number */ - 'max' => function (float $max = null) { + 'max' => function (float|null $max = null) { return $max; }, /** diff --git a/public/kirby/config/fields/pages.php b/public/kirby/config/fields/pages.php index 54d9aa8..3d9d56d 100644 --- a/public/kirby/config/fields/pages.php +++ b/public/kirby/config/fields/pages.php @@ -31,7 +31,7 @@ return [ /** * Optional query to select a specific set of pages */ - 'query' => function (string $query = null) { + 'query' => function (string|null $query = null) { return $query; }, diff --git a/public/kirby/config/fields/select.php b/public/kirby/config/fields/select.php index 4c06b5b..2f09c2d 100644 --- a/public/kirby/config/fields/select.php +++ b/public/kirby/config/fields/select.php @@ -13,7 +13,7 @@ return [ /** * Custom icon to replace the arrow down. */ - 'icon' => function (string $icon = null) { + 'icon' => function (string|null $icon = null) { return $icon; }, /** diff --git a/public/kirby/config/fields/slug.php b/public/kirby/config/fields/slug.php index 9d8efb5..15c6839 100644 --- a/public/kirby/config/fields/slug.php +++ b/public/kirby/config/fields/slug.php @@ -28,7 +28,7 @@ return [ /** * Set prefix for the help text */ - 'path' => function (string $path = null) { + 'path' => function (string|null $path = null) { return $path; }, @@ -36,7 +36,7 @@ return [ * Name of another field that should be used to * automatically update this field's value */ - 'sync' => function (string $sync = null) { + 'sync' => function (string|null $sync = null) { return $sync; }, diff --git a/public/kirby/config/fields/structure.php b/public/kirby/config/fields/structure.php index 510459b..66b614c 100644 --- a/public/kirby/config/fields/structure.php +++ b/public/kirby/config/fields/structure.php @@ -45,7 +45,7 @@ return [ /** * Set the default rows for the structure */ - 'default' => function (array $default = null) { + 'default' => function (array|null $default = null) { return $default; }, @@ -58,38 +58,38 @@ return [ /** * The number of entries that will be displayed on a single page. Afterwards pagination kicks in. */ - 'limit' => function (int $limit = null) { + 'limit' => function (int|null $limit = null) { return $limit; }, /** * Maximum allowed entries in the structure. Afterwards the "Add" button will be switched off. */ - 'max' => function (int $max = null) { + 'max' => function (int|null $max = null) { return $max; }, /** * Minimum required entries in the structure */ - 'min' => function (int $min = null) { + 'min' => function (int|null $min = null) { return $min; }, /** * Toggles adding to the top or bottom of the list */ - 'prepend' => function (bool $prepend = null) { + 'prepend' => function (bool|null $prepend = null) { return $prepend; }, /** * Toggles drag & drop sorting */ - 'sortable' => function (bool $sortable = null) { + 'sortable' => function (bool|null $sortable = null) { return $sortable; }, /** * Sorts the entries by the given field and order (i.e. `title desc`) * Drag & drop is disabled in this case */ - 'sortBy' => function (string $sort = null) { + 'sortBy' => function (string|null $sort = null) { return $sort; } ], diff --git a/public/kirby/config/fields/tags.php b/public/kirby/config/fields/tags.php index b5b6c9e..90020bc 100644 --- a/public/kirby/config/fields/tags.php +++ b/public/kirby/config/fields/tags.php @@ -37,13 +37,13 @@ return [ /** * Minimum number of required entries/tags */ - 'min' => function (int $min = null) { + 'min' => function (int|null $min = null) { return $min; }, /** * Maximum number of allowed entries/tags */ - 'max' => function (int $max = null) { + 'max' => function (int|null $max = null) { return $max; }, /** @@ -93,7 +93,7 @@ return [ return $value; } ], - 'save' => function (array $value = null): string { + 'save' => function (array|null $value = null): string { return A::join( $value, $this->separator() . ' ' diff --git a/public/kirby/config/fields/text.php b/public/kirby/config/fields/text.php index 574a4ec..ac87d85 100644 --- a/public/kirby/config/fields/text.php +++ b/public/kirby/config/fields/text.php @@ -30,28 +30,28 @@ return [ /** * Sets the font family (sans or monospace) */ - 'font' => function (string $font = null) { + 'font' => function (string|null $font = null) { return $font === 'monospace' ? 'monospace' : 'sans-serif'; }, /** * Maximum number of allowed characters */ - 'maxlength' => function (int $maxlength = null) { + 'maxlength' => function (int|null $maxlength = null) { return $maxlength; }, /** * Minimum number of required characters */ - 'minlength' => function (int $minlength = null) { + 'minlength' => function (int|null $minlength = null) { return $minlength; }, /** * A regular expression, which will be used to validate the input */ - 'pattern' => function (string $pattern = null) { + 'pattern' => function (string|null $pattern = null) { return $pattern; }, diff --git a/public/kirby/config/fields/textarea.php b/public/kirby/config/fields/textarea.php index 7b51c1f..e09d6c1 100644 --- a/public/kirby/config/fields/textarea.php +++ b/public/kirby/config/fields/textarea.php @@ -26,7 +26,7 @@ return [ /** * Sets the default text when a new page/file/user is created */ - 'default' => function (string $default = null) { + 'default' => function (string|null $default = null) { return trim($default ?? ''); }, @@ -48,28 +48,28 @@ return [ /** * Sets the font family (sans or monospace) */ - 'font' => function (string $font = null) { + 'font' => function (string|null $font = null) { return $font === 'monospace' ? 'monospace' : 'sans-serif'; }, /** * Maximum number of allowed characters */ - 'maxlength' => function (int $maxlength = null) { + 'maxlength' => function (int|null $maxlength = null) { return $maxlength; }, /** * Minimum number of required characters */ - 'minlength' => function (int $minlength = null) { + 'minlength' => function (int|null $minlength = null) { return $minlength; }, /** * Changes the size of the textarea. Available sizes: `small`, `medium`, `large`, `huge` */ - 'size' => function (string $size = null) { + 'size' => function (string|null $size = null) { return $size; }, @@ -80,7 +80,7 @@ return [ return $spellcheck; }, - 'value' => function (string $value = null) { + 'value' => function (string|null $value = null) { return trim($value ?? ''); } ], diff --git a/public/kirby/config/fields/time.php b/public/kirby/config/fields/time.php index 4a0b6fc..413420b 100644 --- a/public/kirby/config/fields/time.php +++ b/public/kirby/config/fields/time.php @@ -36,13 +36,13 @@ return [ /** * Latest time, which can be selected/saved (H:i or H:i:s) */ - 'max' => function (string $max = null): string|null { + 'max' => function (string|null $max = null): string|null { return Date::optional($max); }, /** * Earliest time, which can be selected/saved (H:i or H:i:s) */ - 'min' => function (string $min = null): string|null { + 'min' => function (string|null $min = null): string|null { return Date::optional($min); }, diff --git a/public/kirby/config/fields/writer.php b/public/kirby/config/fields/writer.php index c9f7869..72440ff 100644 --- a/public/kirby/config/fields/writer.php +++ b/public/kirby/config/fields/writer.php @@ -36,14 +36,14 @@ return [ /** * Maximum number of allowed characters */ - 'maxlength' => function (int $maxlength = null) { + 'maxlength' => function (int|null $maxlength = null) { return $maxlength; }, /** * Minimum number of required characters */ - 'minlength' => function (int $minlength = null) { + 'minlength' => function (int|null $minlength = null) { return $minlength; }, /** diff --git a/public/kirby/config/helpers.php b/public/kirby/config/helpers.php index 2dc83d8..79e13dd 100644 --- a/public/kirby/config/helpers.php +++ b/public/kirby/config/helpers.php @@ -7,6 +7,8 @@ use Kirby\Cms\Html; use Kirby\Cms\ModelWithContent; use Kirby\Cms\Page; use Kirby\Cms\Pages; +use Kirby\Cms\Plugin; +use Kirby\Cms\PluginAssets; use Kirby\Cms\Response; use Kirby\Cms\Site; use Kirby\Cms\Url; @@ -89,7 +91,7 @@ if (Helpers::hasOverride('css') === false) { // @codeCoverageIgnore * @param string|array|null $options Pass an array of attributes for the link tag or a media attribute string */ function css( - string|array $url, + string|array|Plugin|PluginAssets $url, string|array|null $options = null ): string|null { return Html::css($url, $options); @@ -260,7 +262,7 @@ if (Helpers::hasOverride('js') === false) { // @codeCoverageIgnore * Creates a script tag to load a javascript file */ function js( - string|array $url, + string|array|Plugin|PluginAssets $url, string|array|bool|null $options = null ): string|null { return Html::js($url, $options); diff --git a/public/kirby/config/methods.php b/public/kirby/config/methods.php index 870c243..760ab24 100644 --- a/public/kirby/config/methods.php +++ b/public/kirby/config/methods.php @@ -115,7 +115,7 @@ return function (App $app) { 'toDate' => function ( Field $field, string|IntlDateFormatter|null $format = null, - string $fallback = null + string|null $fallback = null ) use ($app): string|int|null { if (empty($field->value) === true && $fallback === null) { return null; @@ -504,7 +504,7 @@ return function (App $app) { */ 'query' => function ( Field $field, - string $expect = null + string|null $expect = null ) use ($app): mixed { if ($parent = $field->parent()) { return $parent->query($field->value, $expect); diff --git a/public/kirby/config/routes.php b/public/kirby/config/routes.php index cd7924d..0699ef1 100644 --- a/public/kirby/config/routes.php +++ b/public/kirby/config/routes.php @@ -33,7 +33,7 @@ return function (App $kirby) { 'pattern' => $api . '/(:all)', 'method' => 'ALL', 'env' => 'api', - 'action' => function (string $path = null) use ($kirby) { + 'action' => function (string|null $path = null) use ($kirby) { if ($kirby->option('api') === false) { return null; } @@ -125,7 +125,7 @@ return function (App $kirby) { 'pattern' => $panel . '/(:all?)', 'method' => 'ALL', 'env' => 'panel', - 'action' => function (string $path = null) { + 'action' => function (string|null $path = null) { return Panel::router($path); } ], diff --git a/public/kirby/config/sections/files.php b/public/kirby/config/sections/files.php index 35ff9e3..8bab322 100644 --- a/public/kirby/config/sections/files.php +++ b/public/kirby/config/sections/files.php @@ -28,7 +28,7 @@ return [ /** * Filters all files by template and also sets the template, which will be used for all uploads */ - 'template' => function (string $template = null) { + 'template' => function (string|null $template = null) { return $template; }, /** diff --git a/public/kirby/config/sections/info.php b/public/kirby/config/sections/info.php index 7999aac..20a288d 100644 --- a/public/kirby/config/sections/info.php +++ b/public/kirby/config/sections/info.php @@ -7,13 +7,13 @@ return [ 'headline', ], 'props' => [ - 'icon' => function (string $icon = null) { + 'icon' => function (string|null $icon = null) { return $icon; }, 'text' => function ($text = null) { return I18n::translate($text, $text); }, - 'theme' => function (string $theme = null) { + 'theme' => function (string|null $theme = null) { return $theme; } ], diff --git a/public/kirby/config/sections/mixins/layout.php b/public/kirby/config/sections/mixins/layout.php index 75230b0..b348176 100644 --- a/public/kirby/config/sections/mixins/layout.php +++ b/public/kirby/config/sections/mixins/layout.php @@ -10,7 +10,7 @@ return [ /** * Columns config for `layout: table` */ - 'columns' => function (array $columns = null) { + 'columns' => function (array|null $columns = null) { return $columns ?? []; }, /** diff --git a/public/kirby/config/sections/mixins/max.php b/public/kirby/config/sections/mixins/max.php index a87c1cc..b49c627 100644 --- a/public/kirby/config/sections/mixins/max.php +++ b/public/kirby/config/sections/mixins/max.php @@ -5,7 +5,7 @@ return [ /** * Sets the maximum number of allowed entries in the section */ - 'max' => function (int $max = null) { + 'max' => function (int|null $max = null) { return $max; } ], diff --git a/public/kirby/config/sections/mixins/min.php b/public/kirby/config/sections/mixins/min.php index 6295f2d..40fa82e 100644 --- a/public/kirby/config/sections/mixins/min.php +++ b/public/kirby/config/sections/mixins/min.php @@ -5,7 +5,7 @@ return [ /** * Sets the minimum number of required entries in the section */ - 'min' => function (int $min = null) { + 'min' => function (int|null $min = null) { return $min; } ], diff --git a/public/kirby/config/sections/mixins/pagination.php b/public/kirby/config/sections/mixins/pagination.php index 3b2a2b0..39f8d0a 100644 --- a/public/kirby/config/sections/mixins/pagination.php +++ b/public/kirby/config/sections/mixins/pagination.php @@ -12,9 +12,9 @@ return [ return $limit; }, /** - * Sets the default page for the pagination. This will overwrite default pagination. + * Sets the default page for the pagination. */ - 'page' => function (int $page = null) { + 'page' => function (int|null $page = null) { return App::instance()->request()->get('page', $page); }, ], diff --git a/public/kirby/config/sections/mixins/parent.php b/public/kirby/config/sections/mixins/parent.php index 1096930..1217411 100644 --- a/public/kirby/config/sections/mixins/parent.php +++ b/public/kirby/config/sections/mixins/parent.php @@ -11,7 +11,7 @@ return [ /** * Sets the query to a parent to find items for the list */ - 'parent' => function (string $parent = null) { + 'parent' => function (string|null $parent = null) { return $parent; } ], diff --git a/public/kirby/config/sections/mixins/sort.php b/public/kirby/config/sections/mixins/sort.php index 5b994ec..118e03b 100644 --- a/public/kirby/config/sections/mixins/sort.php +++ b/public/kirby/config/sections/mixins/sort.php @@ -17,7 +17,7 @@ return [ /** * Overwrites manual sorting and sorts by the given field and sorting direction (i.e. `date desc`) */ - 'sortBy' => function (string $sortBy = null) { + 'sortBy' => function (string|null $sortBy = null) { return $sortBy; }, ], diff --git a/public/kirby/config/sections/pages.php b/public/kirby/config/sections/pages.php index 7f142ae..6ca1090 100644 --- a/public/kirby/config/sections/pages.php +++ b/public/kirby/config/sections/pages.php @@ -53,7 +53,7 @@ return [ /** * Filters the list by single template. */ - 'template' => function (string|array $template = null) { + 'template' => function (string|array|null $template = null) { return $template; }, /** diff --git a/public/kirby/dependencies/parsedown-extra/ParsedownExtra.php b/public/kirby/dependencies/parsedown-extra/ParsedownExtra.php index 2f9c62d..390edd7 100644 --- a/public/kirby/dependencies/parsedown-extra/ParsedownExtra.php +++ b/public/kirby/dependencies/parsedown-extra/ParsedownExtra.php @@ -17,7 +17,7 @@ class ParsedownExtra extends Parsedown { # ~ - public const version = '0.8.0-beta-1'; + public const version = '0.8.0-beta-2'; # ~ @@ -297,7 +297,7 @@ class ParsedownExtra extends Parsedown # # Setext - protected function blockSetextHeader($Line, array $Block = null) + protected function blockSetextHeader($Line, array|null $Block = null) { $Block = parent::blockSetextHeader($Line, $Block); diff --git a/public/kirby/dependencies/parsedown/Parsedown.php b/public/kirby/dependencies/parsedown/Parsedown.php index ab72225..76b2a7c 100644 --- a/public/kirby/dependencies/parsedown/Parsedown.php +++ b/public/kirby/dependencies/parsedown/Parsedown.php @@ -17,7 +17,7 @@ class Parsedown { # ~ - public const version = '1.8.0-beta-7'; + public const version = '1.8.0-beta-8'; # ~ @@ -526,7 +526,7 @@ class Parsedown # # List - protected function blockList($Line, array $CurrentBlock = null) + protected function blockList($Line, array|null $CurrentBlock = null) { list($name, $pattern) = $Line['text'][0] <= '-' ? array('ul', '[*+-]') : array('ol', '[0-9]{1,9}+[.\)]'); @@ -741,7 +741,7 @@ class Parsedown # # Setext - protected function blockSetextHeader($Line, array $Block = null) + protected function blockSetextHeader($Line, array|null $Block = null) { if (! isset($Block) or $Block['type'] !== 'Paragraph' or isset($Block['interrupted'])) { return; @@ -821,7 +821,7 @@ class Parsedown # # Table - protected function blockTable($Line, array $Block = null) + protected function blockTable($Line, array|null $Block = null) { if (! isset($Block) or $Block['type'] !== 'Paragraph' or isset($Block['interrupted'])) { return; diff --git a/public/kirby/i18n/translations/bg.json b/public/kirby/i18n/translations/bg.json index 5a3dc20..5b798c2 100644 --- a/public/kirby/i18n/translations/bg.json +++ b/public/kirby/i18n/translations/bg.json @@ -21,6 +21,8 @@ "copy": "Копирай", "copy.all": "Copy all", "copy.success": "{count} copied!", + "copy.success.multiple": "{count} copied!", + "copy.url": "Copy URL", "create": "Създай", "custom": "Custom", @@ -90,6 +92,12 @@ "error.cache.type.invalid": "Invalid cache type \"{type}\"", + "error.content.lock.delete": "The version is locked and cannot be deleted", + "error.content.lock.move": "The source version is locked and cannot be moved", + "error.content.lock.publish": "This version is already published", + "error.content.lock.replace": "The version is locked and cannot be replaced", + "error.content.lock.update": "The version is locked and cannot be updated", + "error.email.preset.notFound": "Email шаблонът \"{name}\" не може да бъде открит", "error.field.converter.invalid": "Невалиден конвертор \"{converter}\"", @@ -118,6 +126,7 @@ "error.file.name.missing": "Името на файла е задължително", "error.file.notFound": "Файлът \"{filename}\" не може да бъде намерен", "error.file.orientation": "The orientation of the image must be \"{orientation}\"", + "error.file.sort.permission": "You are not allowed to change the sorting of \"{filename}\"", "error.file.type.forbidden": "Не е позволен ъплоуда на файлове от тип {type}", "error.file.type.invalid": "Invalid file type: {type}", "error.file.undefined": "\u0424\u0430\u0439\u043b\u044a\u0442 \u043d\u0435 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0431\u044a\u0434\u0435 \u043d\u0430\u043c\u0435\u0440\u0435\u043d", @@ -168,6 +177,7 @@ "error.page.move.ancestor": "The page cannot be moved into itself", "error.page.move.directory": "The page directory cannot be moved", "error.page.move.duplicate": "A sub page with the URL appendix \"{slug}\" already exists", + "error.page.move.noSections": "The page \"{parent}\" cannot be a parent of any page because it lacks any pages sections in its blueprint", "error.page.move.notFound": "The moved page could not be found", "error.page.move.permission": "You are not allowed to move \"{slug}\"", "error.page.move.template": "The \"{template}\" template is not accepted as a subpage of \"{parent}\"", @@ -297,6 +307,9 @@ "field.blocks.heading.name": "Heading", "field.blocks.heading.text": "Text", "field.blocks.heading.placeholder": "Heading …", + "field.blocks.figure.back.plain": "Plain", + "field.blocks.figure.back.pattern.light": "Pattern (light)", + "field.blocks.figure.back.pattern.dark": "Pattern (dark)", "field.blocks.image.alt": "Alternative text", "field.blocks.image.caption": "Caption", "field.blocks.image.crop": "Crop", @@ -334,6 +347,7 @@ "field.blocks.video.url.placeholder": "https://youtube.com/?v=", "field.files.empty": "Все още не са избрани файлове", + "field.files.empty.single": "No file selected yet", "field.layout.change": "Change layout", "field.layout.delete": "Delete layout", @@ -345,12 +359,14 @@ "field.object.empty": "No information yet", "field.pages.empty": "Все още не са избрани страници", + "field.pages.empty.single": "No page selected yet", "field.structure.delete.confirm": "Сигурни ли сте, че искате да изтриете това вписване?", "field.structure.delete.confirm.all": "Do you really want to delete all entries?", "field.structure.empty": "Все още няма статии", "field.users.empty": "Все още не са избрани потребители", + "field.users.empty.single": "No user selected yet", "fields.empty": "No fields yet", @@ -369,6 +385,13 @@ "filter": "Filter", + "form.discard": "Discard changes", + "form.discard.confirm": "Do you really want to discard all your changes?", + "form.locked": "This content is disabled for you as it is currently edited by another user", + "form.unsaved": "The current changes have not yet been saved", + "form.preview": "Preview changes", + "form.preview.draft": "Preview draft", + "hide": "Hide", "hour": "Hour", "hue": "Hue", @@ -444,6 +467,8 @@ "license.status.missing.bubble": "Ready to launch your site?", "license.status.missing.info": "No valid license", "license.status.missing.label": "Please activate your license", + "license.status.unknown.info": "The license status is unknown", + "license.status.unknown.label": "Unknown license", "license.manage": "Manage your licenses", "license.purchased": "Purchased", "license.success": "Thank you for supporting Kirby", @@ -456,6 +481,9 @@ "lock.unsaved": "Unsaved changes", "lock.unsaved.empty": "There are no more unsaved changes", + "lock.unsaved.files": "Unsaved files", + "lock.unsaved.pages": "Unsaved pages", + "lock.unsaved.users": "Unsaved accounts", "lock.isLocked": "Unsaved changes by {email}", "lock.unlock": "Unlock", "lock.unlock.submit": "Unlock and overwrite unsaved changes by {email}", @@ -578,6 +606,10 @@ "plugins": "Plugins", "prev": "Previous", "preview": "Preview", + + "publish": "Publish", + "published": "Published", + "remove": "Премахни", "rename": "Преименувай", "renew": "Renew", @@ -597,7 +629,9 @@ "role.nobody.title": "Nobody", "save": "\u0417\u0430\u043f\u0438\u0448\u0438", + "saved": "Saved", "search": "Търси", + "searching": "Searching", "search.min": "Enter {min} characters to search", "search.all": "Show all {count} results", "search.results.none": "No results", @@ -622,6 +656,7 @@ "system.info.copy": "Copy info", "system.info.copied": "System info copied", + "system.issues.api.methods": "Your server does not support PATCH requests", "system.issues.content": "The content folder seems to be exposed", "system.issues.eol.kirby": "Your installed Kirby version has reached end-of-life and will not receive further security updates", "system.issues.eol.plugin": "Your installed version of the { plugin } plugin is has reached end-of-life and will not receive further security updates", @@ -646,6 +681,12 @@ "tel": "Phone", "tel.placeholder": "+49123456789", "template": "Образец", + + "theme": "Theme", + "theme.light": "Lights on", + "theme.dark": "Lights off", + "theme.automatic": "Match system default", + "title": "Заглавие", "today": "Днес", @@ -715,10 +756,13 @@ "users": "Потребители", "version": "\u0412\u0435\u0440\u0441\u0438\u044f \u043d\u0430 Kirby", + "version.changes": "Changed version", + "version.compare": "Compare versions", "version.current": "Current version", "version.latest": "Latest version", "versionInformation": "Version information", + "view": "View", "view.account": "\u0412\u0430\u0448\u0438\u044f \u0430\u043a\u0430\u0443\u043d\u0442", "view.installation": "\u0418\u043d\u0441\u0442\u0430\u043b\u0430\u0446\u0438\u044f", "view.languages": "Езици", diff --git a/public/kirby/i18n/translations/ca.json b/public/kirby/i18n/translations/ca.json index a7bcd3f..5e9218f 100644 --- a/public/kirby/i18n/translations/ca.json +++ b/public/kirby/i18n/translations/ca.json @@ -21,6 +21,8 @@ "copy": "Copiar", "copy.all": "Copy all", "copy.success": "{count} copied!", + "copy.success.multiple": "{count} copied!", + "copy.url": "Copy URL", "create": "Crear", "custom": "Custom", @@ -90,6 +92,12 @@ "error.cache.type.invalid": "Invalid cache type \"{type}\"", + "error.content.lock.delete": "The version is locked and cannot be deleted", + "error.content.lock.move": "The source version is locked and cannot be moved", + "error.content.lock.publish": "This version is already published", + "error.content.lock.replace": "The version is locked and cannot be replaced", + "error.content.lock.update": "The version is locked and cannot be updated", + "error.email.preset.notFound": "No es pot trobar la configuració de correu electrònic \"{name}\"", "error.field.converter.invalid": "Convertidor no vàlid \"{converter}\"", @@ -118,6 +126,7 @@ "error.file.name.missing": "El nom del fitxer no pot estar buit", "error.file.notFound": "L'arxiu \"{filename}\" no s'ha trobat", "error.file.orientation": "L’orientació de la imatge ha de ser \"{orientation}\"", + "error.file.sort.permission": "You are not allowed to change the sorting of \"{filename}\"", "error.file.type.forbidden": "No tens permís per penjar fitxers {type}", "error.file.type.invalid": "Invalid file type: {type}", "error.file.undefined": "L'arxiu no s'ha trobat", @@ -168,6 +177,7 @@ "error.page.move.ancestor": "The page cannot be moved into itself", "error.page.move.directory": "The page directory cannot be moved", "error.page.move.duplicate": "A sub page with the URL appendix \"{slug}\" already exists", + "error.page.move.noSections": "The page \"{parent}\" cannot be a parent of any page because it lacks any pages sections in its blueprint", "error.page.move.notFound": "The moved page could not be found", "error.page.move.permission": "You are not allowed to move \"{slug}\"", "error.page.move.template": "The \"{template}\" template is not accepted as a subpage of \"{parent}\"", @@ -297,6 +307,9 @@ "field.blocks.heading.name": "Heading", "field.blocks.heading.text": "Text", "field.blocks.heading.placeholder": "Heading …", + "field.blocks.figure.back.plain": "Plain", + "field.blocks.figure.back.pattern.light": "Pattern (light)", + "field.blocks.figure.back.pattern.dark": "Pattern (dark)", "field.blocks.image.alt": "Alternative text", "field.blocks.image.caption": "Caption", "field.blocks.image.crop": "Crop", @@ -334,6 +347,7 @@ "field.blocks.video.url.placeholder": "https://youtube.com/?v=", "field.files.empty": "Encara no hi ha cap fitxer seleccionat", + "field.files.empty.single": "No file selected yet", "field.layout.change": "Change layout", "field.layout.delete": "Delete layout", @@ -345,12 +359,14 @@ "field.object.empty": "No information yet", "field.pages.empty": "Encara no s'ha seleccionat cap pàgina", + "field.pages.empty.single": "No page selected yet", "field.structure.delete.confirm": "Segur que voleu eliminar aquesta fila?", "field.structure.delete.confirm.all": "Do you really want to delete all entries?", "field.structure.empty": "Encara no hi ha entrades.", "field.users.empty": "Encara no s'ha seleccionat cap usuari", + "field.users.empty.single": "No user selected yet", "fields.empty": "No fields yet", @@ -369,6 +385,13 @@ "filter": "Filter", + "form.discard": "Discard changes", + "form.discard.confirm": "Do you really want to discard all your changes?", + "form.locked": "This content is disabled for you as it is currently edited by another user", + "form.unsaved": "The current changes have not yet been saved", + "form.preview": "Preview changes", + "form.preview.draft": "Preview draft", + "hide": "Hide", "hour": "Hora", "hue": "Hue", @@ -444,6 +467,8 @@ "license.status.missing.bubble": "Ready to launch your site?", "license.status.missing.info": "No valid license", "license.status.missing.label": "Please activate your license", + "license.status.unknown.info": "The license status is unknown", + "license.status.unknown.label": "Unknown license", "license.manage": "Manage your licenses", "license.purchased": "Purchased", "license.success": "Gràcies per donar suport a Kirby", @@ -456,6 +481,9 @@ "lock.unsaved": "Canvis no guardats", "lock.unsaved.empty": "Ja no hi ha canvis no guardats", + "lock.unsaved.files": "Unsaved files", + "lock.unsaved.pages": "Unsaved pages", + "lock.unsaved.users": "Unsaved accounts", "lock.isLocked": "Unsaved changes by {email}", "lock.unlock": "Desbloquejar", "lock.unlock.submit": "Unlock and overwrite unsaved changes by {email}", @@ -578,6 +606,10 @@ "plugins": "Plugins", "prev": "Anterior", "preview": "Preview", + + "publish": "Publish", + "published": "Publicat", + "remove": "Eliminar", "rename": "Canviar el nom", "renew": "Renew", @@ -597,7 +629,9 @@ "role.nobody.title": "Ningú", "save": "Desar", + "saved": "Saved", "search": "Cercar", + "searching": "Searching", "search.min": "Introduïu {min} caràcters per cercar", "search.all": "Show all {count} results", "search.results.none": "Sense resultats", @@ -622,6 +656,7 @@ "system.info.copy": "Copy info", "system.info.copied": "System info copied", + "system.issues.api.methods": "Your server does not support PATCH requests", "system.issues.content": "The content folder seems to be exposed", "system.issues.eol.kirby": "Your installed Kirby version has reached end-of-life and will not receive further security updates", "system.issues.eol.plugin": "Your installed version of the { plugin } plugin is has reached end-of-life and will not receive further security updates", @@ -646,6 +681,12 @@ "tel": "Phone", "tel.placeholder": "+49123456789", "template": "Plantilla", + + "theme": "Theme", + "theme.light": "Lights on", + "theme.dark": "Lights off", + "theme.automatic": "Match system default", + "title": "Títol", "today": "Avui", @@ -715,10 +756,13 @@ "users": "Usuaris", "version": "Versi\u00f3 de Kirby", + "version.changes": "Changed version", + "version.compare": "Compare versions", "version.current": "Current version", "version.latest": "Latest version", "versionInformation": "Version information", + "view": "View", "view.account": "La teva compta", "view.installation": "Instal·lació", "view.languages": "Idiomes", diff --git a/public/kirby/i18n/translations/cs.json b/public/kirby/i18n/translations/cs.json index e2154f9..9cb6e7f 100644 --- a/public/kirby/i18n/translations/cs.json +++ b/public/kirby/i18n/translations/cs.json @@ -21,6 +21,8 @@ "copy": "Kopírovat", "copy.all": "Kopírovat vše", "copy.success": "{count} zkopírováno!", + "copy.success.multiple": "{count} copied!", + "copy.url": "Kopírovat URL", "create": "Vytvořit", "custom": "Vlastní", @@ -90,6 +92,12 @@ "error.cache.type.invalid": "Neplatný typ cache \"{type}\"", + "error.content.lock.delete": "Tato verze je uzamčená a nelze jí smazat", + "error.content.lock.move": "The source version is locked and cannot be moved", + "error.content.lock.publish": "Tato verze je již zveřejněná", + "error.content.lock.replace": "The version is locked and cannot be replaced", + "error.content.lock.update": "The version is locked and cannot be updated", + "error.email.preset.notFound": "Nelze nalézt emailové přednastavení \"{name}\"", "error.field.converter.invalid": "Neplatný konvertor \"{converter}\"", @@ -118,6 +126,7 @@ "error.file.name.missing": "Název souboru nesmí být prázdný", "error.file.notFound": "Soubor se nepoda\u0159ilo nal\u00e9zt", "error.file.orientation": "Orientace obrázku másí být \"{orientation}\"", + "error.file.sort.permission": "You are not allowed to change the sorting of \"{filename}\"", "error.file.type.forbidden": "Nemáte povoleno nahrávat soubory typu {type} ", "error.file.type.invalid": "Neplatný typ souboru: {type}", "error.file.undefined": "Soubor se nepoda\u0159ilo nal\u00e9zt", @@ -168,6 +177,7 @@ "error.page.move.ancestor": "Stránka nemůže být přesunuta sama do sebe", "error.page.move.directory": "Adresář stránky nelze přesunout", "error.page.move.duplicate": "Podstránka s URL \"{slug}\" již existuje", + "error.page.move.noSections": "The page \"{parent}\" cannot be a parent of any page because it lacks any pages sections in its blueprint", "error.page.move.notFound": "Přesunutá stránka nebyla nalezena", "error.page.move.permission": "Nemáte dovoleno přesunout stránku \"{slug}\"", "error.page.move.template": "Šablonu \"{template}\" nelze použít pro podstránku \"{parent}\"", @@ -297,6 +307,9 @@ "field.blocks.heading.name": "Nadpis", "field.blocks.heading.text": "Text", "field.blocks.heading.placeholder": "Nadpis …", + "field.blocks.figure.back.plain": "Plain", + "field.blocks.figure.back.pattern.light": "Pattern (light)", + "field.blocks.figure.back.pattern.dark": "Pattern (dark)", "field.blocks.image.alt": "Alternativní text", "field.blocks.image.caption": "Titulek", "field.blocks.image.crop": "Oříznout", @@ -334,6 +347,7 @@ "field.blocks.video.url.placeholder": "https://youtube.com/?v=", "field.files.empty": "Nebyly zatím vybrány žádné soubory", + "field.files.empty.single": "No file selected yet", "field.layout.change": "Změnit rozvržení", "field.layout.delete": "Smazat rozvržení", @@ -345,12 +359,14 @@ "field.object.empty": "Zatím žádná informace", "field.pages.empty": "Nebyly zatím vybrány žádné stránky", + "field.pages.empty.single": "No page selected yet", "field.structure.delete.confirm": "Opravdu chcete smazat tento z\u00e1znam?", "field.structure.delete.confirm.all": "Opravdu chcete smazat všechny záznamy?", "field.structure.empty": "Zat\u00edm nejsou \u017e\u00e1dn\u00e9 z\u00e1znamy.", "field.users.empty": "Nebyli zatím vybráni žádní uživatelé", + "field.users.empty.single": "No user selected yet", "fields.empty": "Zatím žádné pole", @@ -369,6 +385,13 @@ "filter": "Filtr", + "form.discard": "Discard changes", + "form.discard.confirm": "Do you really want to discard all your changes?", + "form.locked": "This content is disabled for you as it is currently edited by another user", + "form.unsaved": "The current changes have not yet been saved", + "form.preview": "Náhled změn", + "form.preview.draft": "Náhled konceptu", + "hide": "Skrýt", "hour": "Hodina", "hue": "Odstín", @@ -444,6 +467,8 @@ "license.status.missing.bubble": "Vše připraveno na spuštění vaši stránky?", "license.status.missing.info": "Žádlná platná licence", "license.status.missing.label": "Prosím aktivute svoji licenci", + "license.status.unknown.info": "Status licence je neznámý", + "license.status.unknown.label": "Neznámá licence", "license.manage": "Spravovat licence", "license.purchased": "Zakoupeno", "license.success": "Děkujeme Vám za podporu Kirby", @@ -456,6 +481,9 @@ "lock.unsaved": "Neuložené změny", "lock.unsaved.empty": "Nezbývají již žádné neuložené změny.", + "lock.unsaved.files": "Neuložené soubory", + "lock.unsaved.pages": "Neuložené stránky", + "lock.unsaved.users": "Neuložené účty", "lock.isLocked": "Neuložené změny od {email}", "lock.unlock": "Odemknout", "lock.unlock.submit": "Odemknout a přepsat neuložené změny od {email}", @@ -578,6 +606,10 @@ "plugins": "Doplňky", "prev": "Předchozí", "preview": "Náhled", + + "publish": "Zveřejnit", + "published": "Zveřejněno", + "remove": "Odstranit", "rename": "Přejmenovat", "renew": "Obnovit", @@ -597,7 +629,9 @@ "role.nobody.title": "Nikdo", "save": "Ulo\u017eit", + "saved": "Uloženo", "search": "Hledat", + "searching": "Hledání", "search.min": "Pro vyhledání zadejte alespoň {min} znaky", "search.all": "Zobrazit všech {count} výsledků", "search.results.none": "Žádné výsledky", @@ -622,6 +656,7 @@ "system.info.copy": "Kopírovat informace", "system.info.copied": "Systémové informace zkopírovány", + "system.issues.api.methods": "Your server does not support PATCH requests", "system.issues.content": "Složka content je zřejmě přístupná zvenčí", "system.issues.eol.kirby": "Instalovaná verze Kirby dosáhla konce životnosti a nebude již dále dostávat bezpečnostní aktualizace", "system.issues.eol.plugin": "Instalovaná verze doplňku { plugin } dosáhla konce životnosti a nebude již dále dostávat bezpečnostní aktualizace", @@ -646,6 +681,12 @@ "tel": "Telefon", "tel.placeholder": "+49123456789", "template": "\u0160ablona", + + "theme": "Motiv", + "theme.light": "Lights on", + "theme.dark": "Lights off", + "theme.automatic": "Podle nastavení systému", + "title": "Název", "today": "Dnes", @@ -715,10 +756,13 @@ "users": "Uživatelé", "version": "Verze Kirby", + "version.changes": "Změnit verzi", + "version.compare": "Porovnat verze", "version.current": "Současná verze", "version.latest": "Poslední verze", "versionInformation": "Informace o verzi", + "view": "View", "view.account": "V\u00e1\u0161 \u00fa\u010det", "view.installation": "Instalace", "view.languages": "Jazyky", diff --git a/public/kirby/i18n/translations/da.json b/public/kirby/i18n/translations/da.json index 471b2c5..f2db383 100644 --- a/public/kirby/i18n/translations/da.json +++ b/public/kirby/i18n/translations/da.json @@ -21,6 +21,8 @@ "copy": "Kopier", "copy.all": "Kopier alle", "copy.success": "{count} copied!", + "copy.success.multiple": "{count} copied!", + "copy.url": "Copy URL", "create": "Opret", "custom": "Custom", @@ -90,6 +92,12 @@ "error.cache.type.invalid": "Invalid cache type \"{type}\"", + "error.content.lock.delete": "The version is locked and cannot be deleted", + "error.content.lock.move": "The source version is locked and cannot be moved", + "error.content.lock.publish": "This version is already published", + "error.content.lock.replace": "The version is locked and cannot be replaced", + "error.content.lock.update": "The version is locked and cannot be updated", + "error.email.preset.notFound": "Email preset \"{name}\" findes ikke", "error.field.converter.invalid": "Ugyldig converter \"{converter}\"", @@ -118,6 +126,7 @@ "error.file.name.missing": "Filnavn må ikke være tomt", "error.file.notFound": "Filen kunne ikke findes", "error.file.orientation": "Formatet på billedet skal være \"{orientation}\"", + "error.file.sort.permission": "You are not allowed to change the sorting of \"{filename}\"", "error.file.type.forbidden": "Du har ikke tilladelse til at uploade {type} filer", "error.file.type.invalid": "Ugyldig filtype: {type}", "error.file.undefined": "Filen kunne ikke findes", @@ -168,6 +177,7 @@ "error.page.move.ancestor": "The page cannot be moved into itself", "error.page.move.directory": "The page directory cannot be moved", "error.page.move.duplicate": "A sub page with the URL appendix \"{slug}\" already exists", + "error.page.move.noSections": "The page \"{parent}\" cannot be a parent of any page because it lacks any pages sections in its blueprint", "error.page.move.notFound": "The moved page could not be found", "error.page.move.permission": "You are not allowed to move \"{slug}\"", "error.page.move.template": "The \"{template}\" template is not accepted as a subpage of \"{parent}\"", @@ -297,6 +307,9 @@ "field.blocks.heading.name": "Overskrift", "field.blocks.heading.text": "Tekst", "field.blocks.heading.placeholder": "Overskrift …", + "field.blocks.figure.back.plain": "Plain", + "field.blocks.figure.back.pattern.light": "Pattern (light)", + "field.blocks.figure.back.pattern.dark": "Pattern (dark)", "field.blocks.image.alt": "Alternativ tekst", "field.blocks.image.caption": "Billedtekst", "field.blocks.image.crop": "Beskær", @@ -334,6 +347,7 @@ "field.blocks.video.url.placeholder": "https://youtube.com/?v=", "field.files.empty": "Ingen filer valgt endnu", + "field.files.empty.single": "No file selected yet", "field.layout.change": "Change layout", "field.layout.delete": "Slet layout", @@ -345,12 +359,14 @@ "field.object.empty": "No information yet", "field.pages.empty": "Ingen sider valgt endnu", + "field.pages.empty.single": "No page selected yet", "field.structure.delete.confirm": "\u00d8nsker du virkelig at slette denne indtastning?", "field.structure.delete.confirm.all": "Do you really want to delete all entries?", "field.structure.empty": "Ingen indtastninger endnu.", "field.users.empty": "Ingen brugere er valgt", + "field.users.empty.single": "No user selected yet", "fields.empty": "No fields yet", @@ -369,6 +385,13 @@ "filter": "Filter", + "form.discard": "Discard changes", + "form.discard.confirm": "Do you really want to discard all your changes?", + "form.locked": "This content is disabled for you as it is currently edited by another user", + "form.unsaved": "The current changes have not yet been saved", + "form.preview": "Preview changes", + "form.preview.draft": "Preview draft", + "hide": "Skjul", "hour": "Time", "hue": "Hue", @@ -444,6 +467,8 @@ "license.status.missing.bubble": "Ready to launch your site?", "license.status.missing.info": "No valid license", "license.status.missing.label": "Please activate your license", + "license.status.unknown.info": "The license status is unknown", + "license.status.unknown.label": "Unknown license", "license.manage": "Manage your licenses", "license.purchased": "Purchased", "license.success": "Tak for din støtte af Kirby", @@ -456,6 +481,9 @@ "lock.unsaved": "Ugemte ændringer", "lock.unsaved.empty": "Der er ikke flere ændringer der ikke er gamt", + "lock.unsaved.files": "Unsaved files", + "lock.unsaved.pages": "Unsaved pages", + "lock.unsaved.users": "Unsaved accounts", "lock.isLocked": "Unsaved changes by {email}", "lock.unlock": "Lås op", "lock.unlock.submit": "Unlock and overwrite unsaved changes by {email}", @@ -578,6 +606,10 @@ "plugins": "Plugins", "prev": "Forrige", "preview": "Forhåndsvisning", + + "publish": "Publish", + "published": "Udgivede", + "remove": "Fjern", "rename": "Omdøb", "renew": "Renew", @@ -597,7 +629,9 @@ "role.nobody.title": "Ingen", "save": "Gem", + "saved": "Saved", "search": "Søg", + "searching": "Searching", "search.min": "Indtast {min} tegn for at søge", "search.all": "Show all {count} results", "search.results.none": "Ingen resultater", @@ -622,6 +656,7 @@ "system.info.copy": "Copy info", "system.info.copied": "System info copied", + "system.issues.api.methods": "Your server does not support PATCH requests", "system.issues.content": "The content folder seems to be exposed", "system.issues.eol.kirby": "Your installed Kirby version has reached end-of-life and will not receive further security updates", "system.issues.eol.plugin": "Your installed version of the { plugin } plugin is has reached end-of-life and will not receive further security updates", @@ -646,6 +681,12 @@ "tel": "Phone", "tel.placeholder": "+49123456789", "template": "Skabelon", + + "theme": "Theme", + "theme.light": "Lights on", + "theme.dark": "Lights off", + "theme.automatic": "Match system default", + "title": "Titel", "today": "Idag", @@ -715,10 +756,13 @@ "users": "Brugere", "version": "Kirby version", + "version.changes": "Changed version", + "version.compare": "Compare versions", "version.current": "Current version", "version.latest": "Latest version", "versionInformation": "Version information", + "view": "View", "view.account": "Din konto", "view.installation": "Installation", "view.languages": "Sprog", diff --git a/public/kirby/i18n/translations/de.json b/public/kirby/i18n/translations/de.json index d57e2c9..2ec324a 100644 --- a/public/kirby/i18n/translations/de.json +++ b/public/kirby/i18n/translations/de.json @@ -20,7 +20,9 @@ "coordinates": "Koordinaten", "copy": "Kopieren", "copy.all": "Alle kopieren", - "copy.success": "{count} kopiert!", + "copy.success": "Kopiert", + "copy.success.multiple": "{count} kopiert!", + "copy.url": "URL kopieren", "create": "Erstellen", "custom": "Benutzerdefiniert", @@ -90,6 +92,12 @@ "error.cache.type.invalid": "Ungültiger Cachetyp: \"{type}\"", + "error.content.lock.delete": "Die Version ist blockiert und kann daher nicht gelöscht werden.", + "error.content.lock.move": "Die Ursprungsversion ist blockiert und kann daher nicht gelöscht werden", + "error.content.lock.publish": "Die Version wurde bereits veröffentlicht", + "error.content.lock.replace": "Die Version ist blockiert und kann daher nicht ersetzt werden", + "error.content.lock.update": "Die Version ist blockiert und kann daher nicht geändert werden", + "error.email.preset.notFound": "Die E-Mailvorlage \"{name}\" wurde nicht gefunden", "error.field.converter.invalid": "Ungültiger Konverter: \"{converter}\"", @@ -118,6 +126,7 @@ "error.file.name.missing": "Bitte gib einen Dateinamen an", "error.file.notFound": "Die Datei \"{filename}\" konnte nicht gefunden werden", "error.file.orientation": "Das Bildformat ist ungültig. Erwartetes Format: \"{orientation}\"", + "error.file.sort.permission": "Du darfst die Sortierung für \"{filename}\" nicht ändern.", "error.file.type.forbidden": "Du kannst keinen {type}-Dateien hochladen", "error.file.type.invalid": "Ungültiger Dateityp: {mime}", "error.file.undefined": "Die Datei konnte nicht gefunden werden", @@ -168,6 +177,7 @@ "error.page.move.ancestor": "Die Seite kann nicht in sich selbst verschoben werden", "error.page.move.directory": "Der Ordner der Seite kann nicht verschoben werden", "error.page.move.duplicate": "Eine Seite mit dem URL-Kürzel \"{slug}\" besteht bereits", + "error.page.move.noSections": "Die Seite \"{parent}\" kann nicht ausgewählt werden, weil sie keine Unterseiten haben kann. ", "error.page.move.notFound": "Die verschobene Seite kann nicht gefunden werden", "error.page.move.permission": "Du kannst die Seite \"{slug}\" nicht verschieben", "error.page.move.template": "Die Vorlage \"{template}\" wird nicht als Unterseite von \"{parent}\" akzeptiert", @@ -297,6 +307,9 @@ "field.blocks.heading.name": "Überschrift", "field.blocks.heading.text": "Text", "field.blocks.heading.placeholder": "Überschrift …", + "field.blocks.figure.back.plain": "Ohne", + "field.blocks.figure.back.pattern.light": "Muster (hell)", + "field.blocks.figure.back.pattern.dark": "Muster (dunkel)", "field.blocks.image.alt": "Alternativer Text", "field.blocks.image.caption": "Bildunterschrift", "field.blocks.image.crop": "Beschneiden", @@ -334,6 +347,7 @@ "field.blocks.video.url.placeholder": "https://youtube.com/?v=", "field.files.empty": "Keine Dateien ausgewählt", + "field.files.empty.single": "Keine Dateien ausgewählt", "field.layout.change": "Layout ändern", "field.layout.delete": "Layout löschen", @@ -345,12 +359,14 @@ "field.object.empty": "Noch keine Information", "field.pages.empty": "Keine Seiten ausgewählt", + "field.pages.empty.single": "Keine Seiten ausgewählt", "field.structure.delete.confirm": "Willst du diesen Eintrag wirklich l\u00f6schen?", "field.structure.delete.confirm.all": "Möchtest du wirklich alle Einträge löschen?", "field.structure.empty": "Es bestehen keine Eintr\u00e4ge.", "field.users.empty": "Keine Accounts ausgewählt", + "field.users.empty.single": "Keine Accounts ausgewählt", "fields.empty": "Keine Felder", @@ -369,6 +385,13 @@ "filter": "Filter", + "form.discard": "Änderungen verwerfen", + "form.discard.confirm": "Willst du wirklich alle ungespeicherten Änderungen verwerfen? ", + "form.locked": "Dieser Inhalt ist gesperrt, weil er aktuell von einem anderen Account bearbeitet wird", + "form.unsaved": "Die aktuellen Änderungen wurden noch nicht gespeichert", + "form.preview": "Änderungsvorschau", + "form.preview.draft": "Entwurfsvorschau", + "hide": "Verbergen", "hour": "Stunde", "hue": "Farbton", @@ -444,6 +467,8 @@ "license.status.missing.bubble": "Bereit, deine Seite zu veröffentlichen?", "license.status.missing.info": "Keine gültige Lizenz", "license.status.missing.label": "Bitte aktiviere deine Lizenz", + "license.status.unknown.info": "Der Lizenzstatus ist unbekannt", + "license.status.unknown.label": "Unbekannte Lizenz", "license.manage": "Verwalte deine Lizenzen", "license.purchased": "Gekauft", "license.success": "Vielen Dank für deine Unterstützung", @@ -456,6 +481,9 @@ "lock.unsaved": "Ungespeicherte Änderungen", "lock.unsaved.empty": "Keine ungespeicherten Änderungen", + "lock.unsaved.files": "Geänderte Dateien", + "lock.unsaved.pages": "Geänderte Seiten", + "lock.unsaved.users": "Geänderte Accounts", "lock.isLocked": "Ungespeicherte Änderungen von {email}", "lock.unlock": "Entsperren", "lock.unlock.submit": "Entsperre und überschreibe ungespeicherte Änderungen von {email}", @@ -578,6 +606,10 @@ "plugins": "Plugins", "prev": "Vorheriger Eintrag", "preview": "Vorschau", + + "publish": "Veröffentlichen", + "published": "Veröffentlicht", + "remove": "Entfernen", "rename": "Umbenennen", "renew": "Erneuern", @@ -597,7 +629,9 @@ "role.nobody.title": "Niemand", "save": "Speichern", + "saved": "Gespeichert", "search": "Suchen", + "searching": "Suchen", "search.min": "Gib mindestens {min}  Zeichen ein, um zu suchen", "search.all": "Zeige alle {count} Ergebnisse", "search.results.none": "Keine Ergebnisse", @@ -622,6 +656,7 @@ "system.info.copy": "Info kopieren", "system.info.copied": "System Info wurde kopiert", + "system.issues.api.methods": "Dein Server unterstützt keine PATCH Requests", "system.issues.content": "Der content Ordner scheint öffentlich zugänglich zu sein", "system.issues.eol.kirby": "Deine Kirby Installation ist veraltet und erhält keine weiteren Sicherheitsupdates", "system.issues.eol.plugin": "Deine Version des { plugin } Plugins ist veraltet und erhält keine weiteren Sicherheitsupdates", @@ -646,6 +681,12 @@ "tel": "Telefon", "tel.placeholder": "+49123456789", "template": "Vorlage", + + "theme": "Thema", + "theme.light": "Licht an", + "theme.dark": "Licht aus", + "theme.automatic": "Systemeinstellung übernehmen", + "title": "Titel", "today": "Heute", @@ -715,10 +756,13 @@ "users": "Accounts", "version": "Version", + "version.changes": "Geänderte Version", + "version.compare": "Versionen vergleichen", "version.current": "Aktuelle Version", "version.latest": "Neueste Version", "versionInformation": "Informationen zur Version", + "view": "Ansicht", "view.account": "Dein Account", "view.installation": "Installation", "view.languages": "Sprachen", diff --git a/public/kirby/i18n/translations/el.json b/public/kirby/i18n/translations/el.json index bd4c1c8..b365750 100644 --- a/public/kirby/i18n/translations/el.json +++ b/public/kirby/i18n/translations/el.json @@ -20,7 +20,9 @@ "coordinates": "Coordinates", "copy": "Αντιγραφή", "copy.all": "Copy all", - "copy.success": "{count} copied!", + "copy.success": "Copied", + "copy.success.multiple": "{count} copied!", + "copy.url": "Copy URL", "create": "Δημιουργία", "custom": "Custom", @@ -90,6 +92,12 @@ "error.cache.type.invalid": "Invalid cache type \"{type}\"", + "error.content.lock.delete": "The version is locked and cannot be deleted", + "error.content.lock.move": "The source version is locked and cannot be moved", + "error.content.lock.publish": "This version is already published", + "error.content.lock.replace": "The version is locked and cannot be replaced", + "error.content.lock.update": "The version is locked and cannot be updated", + "error.email.preset.notFound": "Δεν είναι δυνατή η εύρεση της προεπιλογής διεύθινσης ηλεκτρονικού ταχυδρομείου \"{name}\"", "error.field.converter.invalid": "Μη έγκυρος μετατροπέας \"{converter}\"", @@ -118,6 +126,7 @@ "error.file.name.missing": "Το όνομα αρχείου δεν μπορεί να είναι άδειο", "error.file.notFound": "Δεν είναι δυνατό να βρεθεί το αρχείο \"{filename}\"", "error.file.orientation": "The orientation of the image must be \"{orientation}\"", + "error.file.sort.permission": "You are not allowed to change the sorting of \"{filename}\"", "error.file.type.forbidden": "Δεν επιτρέπεται η μεταφόρτωση αρχείων {type}", "error.file.type.invalid": "Invalid file type: {type}", "error.file.undefined": "Δεν ήταν δυνατή η εύρεση του αρχείου", @@ -168,6 +177,7 @@ "error.page.move.ancestor": "The page cannot be moved into itself", "error.page.move.directory": "The page directory cannot be moved", "error.page.move.duplicate": "A sub page with the URL appendix \"{slug}\" already exists", + "error.page.move.noSections": "The page \"{parent}\" cannot be a parent of any page because it lacks any pages sections in its blueprint", "error.page.move.notFound": "The moved page could not be found", "error.page.move.permission": "You are not allowed to move \"{slug}\"", "error.page.move.template": "The \"{template}\" template is not accepted as a subpage of \"{parent}\"", @@ -297,6 +307,9 @@ "field.blocks.heading.name": "Heading", "field.blocks.heading.text": "Text", "field.blocks.heading.placeholder": "Heading …", + "field.blocks.figure.back.plain": "Plain", + "field.blocks.figure.back.pattern.light": "Pattern (light)", + "field.blocks.figure.back.pattern.dark": "Pattern (dark)", "field.blocks.image.alt": "Alternative text", "field.blocks.image.caption": "Caption", "field.blocks.image.crop": "Crop", @@ -334,6 +347,7 @@ "field.blocks.video.url.placeholder": "https://youtube.com/?v=", "field.files.empty": "Δεν έχουν επιλεγεί αρχεία ακόμα", + "field.files.empty.single": "No file selected yet", "field.layout.change": "Change layout", "field.layout.delete": "Delete layout", @@ -345,12 +359,14 @@ "field.object.empty": "No information yet", "field.pages.empty": "Δεν έχουν επιλεγεί ακόμη σελίδες", + "field.pages.empty.single": "No page selected yet", "field.structure.delete.confirm": "\u0395\u03af\u03c3\u03c4\u03b5 \u03c3\u03af\u03b3\u03bf\u03c5\u03c1\u03bf\u03c2 \u03cc\u03c4\u03b9 \u03b8\u03ad\u03bb\u03b5\u03c4\u03b5 \u03bd\u03b1 \u03b4\u03b9\u03b1\u03b3\u03c1\u03ac\u03c8\u03b5\u03c4\u03b5 \u03b1\u03c5\u03c4\u03ae\u03bd \u03c4\u03b7\u03bd \u03ba\u03b1\u03c4\u03b1\u03c7\u03ce\u03c1\u03b9\u03c3\u03b7;", "field.structure.delete.confirm.all": "Do you really want to delete all entries?", "field.structure.empty": "\u0394\u03b5\u03bd \u03c5\u03c0\u03ac\u03c1\u03c7\u03bf\u03c5\u03bd \u03b1\u03ba\u03cc\u03bc\u03b7 \u03ba\u03b1\u03c4\u03b1\u03c7\u03c9\u03c1\u03af\u03c3\u03b5\u03b9\u03c2.", "field.users.empty": "Δεν έχουν επιλεγεί ακόμη χρήστες", + "field.users.empty.single": "No user selected yet", "fields.empty": "No fields yet", @@ -369,6 +385,13 @@ "filter": "Filter", + "form.discard": "Discard changes", + "form.discard.confirm": "Do you really want to discard all your changes?", + "form.locked": "This content is disabled for you as it is currently edited by another user", + "form.unsaved": "The current changes have not yet been saved", + "form.preview": "Preview changes", + "form.preview.draft": "Preview draft", + "hide": "Hide", "hour": "Ώρα", "hue": "Hue", @@ -444,6 +467,8 @@ "license.status.missing.bubble": "Ready to launch your site?", "license.status.missing.info": "No valid license", "license.status.missing.label": "Please activate your license", + "license.status.unknown.info": "The license status is unknown", + "license.status.unknown.label": "Unknown license", "license.manage": "Manage your licenses", "license.purchased": "Purchased", "license.success": "Σας ευχαριστούμε για την υποστήριξη του Kirby", @@ -455,7 +480,10 @@ "loading": "Φόρτωση", "lock.unsaved": "Unsaved changes", - "lock.unsaved.empty": "There are no more unsaved changes", + "lock.unsaved.empty": "There are no unsaved changes", + "lock.unsaved.files": "Unsaved files", + "lock.unsaved.pages": "Unsaved pages", + "lock.unsaved.users": "Unsaved accounts", "lock.isLocked": "Unsaved changes by {email}", "lock.unlock": "Unlock", "lock.unlock.submit": "Unlock and overwrite unsaved changes by {email}", @@ -578,6 +606,10 @@ "plugins": "Plugins", "prev": "Προηγούμενο", "preview": "Preview", + + "publish": "Publish", + "published": "Δημοσιευμένο", + "remove": "Αφαίρεση", "rename": "Μετονομασία", "renew": "Renew", @@ -597,7 +629,9 @@ "role.nobody.title": "Nobody", "save": "\u0391\u03c0\u03bf\u03b8\u03ae\u03ba\u03b5\u03c5\u03c3\u03b7", + "saved": "Saved", "search": "Αναζήτηση", + "searching": "Searching", "search.min": "Enter {min} characters to search", "search.all": "Show all {count} results", "search.results.none": "No results", @@ -622,6 +656,7 @@ "system.info.copy": "Copy info", "system.info.copied": "System info copied", + "system.issues.api.methods": "Your server does not support PATCH requests", "system.issues.content": "The content folder seems to be exposed", "system.issues.eol.kirby": "Your installed Kirby version has reached end-of-life and will not receive further security updates", "system.issues.eol.plugin": "Your installed version of the { plugin } plugin is has reached end-of-life and will not receive further security updates", @@ -646,6 +681,12 @@ "tel": "Phone", "tel.placeholder": "+49123456789", "template": "\u03a0\u03c1\u03cc\u03c4\u03c5\u03c0\u03bf", + + "theme": "Theme", + "theme.light": "Lights on", + "theme.dark": "Lights off", + "theme.automatic": "Match system default", + "title": "Τίτλος", "today": "Σήμερα", @@ -715,10 +756,13 @@ "users": "Χρήστες", "version": "\u0388\u03ba\u03b4\u03bf\u03c3\u03b7 Kirby", + "version.changes": "Changed version", + "version.compare": "Compare versions", "version.current": "Current version", "version.latest": "Latest version", "versionInformation": "Version information", + "view": "View", "view.account": "\u039f \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03cc\u03c2 \u03c3\u03b1\u03c2", "view.installation": "\u0395\u03b3\u03ba\u03b1\u03c4\u03ac\u03c3\u03c4\u03b1\u03c3\u03b7", "view.languages": "Γλώσσες", diff --git a/public/kirby/i18n/translations/en.json b/public/kirby/i18n/translations/en.json index f88d787..010d871 100644 --- a/public/kirby/i18n/translations/en.json +++ b/public/kirby/i18n/translations/en.json @@ -93,6 +93,7 @@ "error.email.preset.notFound": "The email preset \"{name}\" cannot be found", "error.field.converter.invalid": "Invalid converter \"{converter}\"", + "error.field.link.options": "Invalid options: {options}", "error.field.type.missing": "Field \"{ name }\": The field type \"{ type }\" does not exist", "error.file.changeName.empty": "The name must not be empty", diff --git a/public/kirby/i18n/translations/eo.json b/public/kirby/i18n/translations/eo.json index 939b2cc..5cc0825 100644 --- a/public/kirby/i18n/translations/eo.json +++ b/public/kirby/i18n/translations/eo.json @@ -21,6 +21,8 @@ "copy": "Kopii", "copy.all": "Kopii ĉiujn", "copy.success": "{count} copied!", + "copy.success.multiple": "{count} copied!", + "copy.url": "Copy URL", "create": "Krei", "custom": "Custom", @@ -90,6 +92,12 @@ "error.cache.type.invalid": "Invalid cache type \"{type}\"", + "error.content.lock.delete": "The version is locked and cannot be deleted", + "error.content.lock.move": "The source version is locked and cannot be moved", + "error.content.lock.publish": "This version is already published", + "error.content.lock.replace": "The version is locked and cannot be replaced", + "error.content.lock.update": "The version is locked and cannot be updated", + "error.email.preset.notFound": "La retpoŝta antaŭagordo \"{name}\" ne estas trovebla", "error.field.converter.invalid": "Nevalida konvertilo \"{converter}\"", @@ -118,6 +126,7 @@ "error.file.name.missing": "La dosiernomo ne rajtas esti malplena", "error.file.notFound": "La dosiero \"{filename}\" ne troveblas", "error.file.orientation": "La orientiĝo de la bildo devas esti \"{orientation}\"", + "error.file.sort.permission": "You are not allowed to change the sorting of \"{filename}\"", "error.file.type.forbidden": "Vi ne rajtas alŝuti dosiertipon {type}", "error.file.type.invalid": "Nevalida dosiertipo: {type}", "error.file.undefined": "La dosiero ne troveblas", @@ -168,6 +177,7 @@ "error.page.move.ancestor": "The page cannot be moved into itself", "error.page.move.directory": "The page directory cannot be moved", "error.page.move.duplicate": "A sub page with the URL appendix \"{slug}\" already exists", + "error.page.move.noSections": "The page \"{parent}\" cannot be a parent of any page because it lacks any pages sections in its blueprint", "error.page.move.notFound": "The moved page could not be found", "error.page.move.permission": "You are not allowed to move \"{slug}\"", "error.page.move.template": "The \"{template}\" template is not accepted as a subpage of \"{parent}\"", @@ -297,6 +307,9 @@ "field.blocks.heading.name": "Titolo", "field.blocks.heading.text": "Teksto", "field.blocks.heading.placeholder": "Titolo ...", + "field.blocks.figure.back.plain": "Plain", + "field.blocks.figure.back.pattern.light": "Pattern (light)", + "field.blocks.figure.back.pattern.dark": "Pattern (dark)", "field.blocks.image.alt": "Alternativa titolo", "field.blocks.image.caption": "Apudskribo", "field.blocks.image.crop": "Stuci", @@ -334,6 +347,7 @@ "field.blocks.video.url.placeholder": "https://youtube.com/?v=", "field.files.empty": "Ankoraŭ neniu dosiero elektita", + "field.files.empty.single": "No file selected yet", "field.layout.change": "Change layout", "field.layout.delete": "Forigi blokaranĝo", @@ -345,12 +359,14 @@ "field.object.empty": "No information yet", "field.pages.empty": "Ankoraŭ neniu paĝo elektita", + "field.pages.empty.single": "No page selected yet", "field.structure.delete.confirm": "Ĉu vi certe volas forigi ĉi tiun vicon?", "field.structure.delete.confirm.all": "Do you really want to delete all entries?", "field.structure.empty": "Ankoraŭ neniu enigo", "field.users.empty": "Ankoraŭ neniu uzanto elektita", + "field.users.empty.single": "No user selected yet", "fields.empty": "No fields yet", @@ -369,6 +385,13 @@ "filter": "Filter", + "form.discard": "Discard changes", + "form.discard.confirm": "Do you really want to discard all your changes?", + "form.locked": "This content is disabled for you as it is currently edited by another user", + "form.unsaved": "The current changes have not yet been saved", + "form.preview": "Preview changes", + "form.preview.draft": "Preview draft", + "hide": "Kaŝi", "hour": "Horo", "hue": "Hue", @@ -444,6 +467,8 @@ "license.status.missing.bubble": "Ready to launch your site?", "license.status.missing.info": "No valid license", "license.status.missing.label": "Please activate your license", + "license.status.unknown.info": "The license status is unknown", + "license.status.unknown.label": "Unknown license", "license.manage": "Manage your licenses", "license.purchased": "Purchased", "license.success": "Dankon pro subteni Kirby", @@ -456,6 +481,9 @@ "lock.unsaved": "Nekonservitaj ŝanĝoj", "lock.unsaved.empty": "Ĉiuj ŝanĝoj estas nun konservitaj", + "lock.unsaved.files": "Unsaved files", + "lock.unsaved.pages": "Unsaved pages", + "lock.unsaved.users": "Unsaved accounts", "lock.isLocked": "Unsaved changes by {email}", "lock.unlock": "Malŝlosi", "lock.unlock.submit": "Unlock and overwrite unsaved changes by {email}", @@ -578,6 +606,10 @@ "plugins": "Kromprogramoj", "prev": "Antaŭe", "preview": "Antaŭrigardi", + + "publish": "Publish", + "published": "Publikigita", + "remove": "Forigi", "rename": "Ŝanĝi nomon", "renew": "Renew", @@ -597,7 +629,9 @@ "role.nobody.title": "Neniu", "save": "Konservi", + "saved": "Saved", "search": "Serĉi", + "searching": "Searching", "search.min": "Entajpu {min} literojn por serĉi", "search.all": "Show all {count} results", "search.results.none": "Neniu rezulto", @@ -622,6 +656,7 @@ "system.info.copy": "Copy info", "system.info.copied": "System info copied", + "system.issues.api.methods": "Your server does not support PATCH requests", "system.issues.content": "The content folder seems to be exposed", "system.issues.eol.kirby": "Your installed Kirby version has reached end-of-life and will not receive further security updates", "system.issues.eol.plugin": "Your installed version of the { plugin } plugin is has reached end-of-life and will not receive further security updates", @@ -646,6 +681,12 @@ "tel": "Phone", "tel.placeholder": "+49123456789", "template": "Ŝablono", + + "theme": "Theme", + "theme.light": "Lights on", + "theme.dark": "Lights off", + "theme.automatic": "Match system default", + "title": "Titolo", "today": "Hodiaŭ", @@ -715,10 +756,13 @@ "users": "Uzantoj", "version": "Versio", + "version.changes": "Changed version", + "version.compare": "Compare versions", "version.current": "Current version", "version.latest": "Latest version", "versionInformation": "Version information", + "view": "View", "view.account": "Via konto", "view.installation": "Instalado", "view.languages": "Lingvoj", diff --git a/public/kirby/i18n/translations/es_419.json b/public/kirby/i18n/translations/es_419.json index dbaf216..fc23540 100644 --- a/public/kirby/i18n/translations/es_419.json +++ b/public/kirby/i18n/translations/es_419.json @@ -21,6 +21,8 @@ "copy": "Copiar", "copy.all": "Copiar todo", "copy.success": "{count} copied!", + "copy.success.multiple": "{count} copied!", + "copy.url": "Copy URL", "create": "Crear", "custom": "Custom", @@ -90,6 +92,12 @@ "error.cache.type.invalid": "Tipo de caché \"{tipo}\" no válido", + "error.content.lock.delete": "The version is locked and cannot be deleted", + "error.content.lock.move": "The source version is locked and cannot be moved", + "error.content.lock.publish": "This version is already published", + "error.content.lock.replace": "The version is locked and cannot be replaced", + "error.content.lock.update": "The version is locked and cannot be updated", + "error.email.preset.notFound": "El preajuste de email \"{name}\" no se pudo encontrar.", "error.field.converter.invalid": "Convertidor inválido \"{converter}\"", @@ -118,6 +126,7 @@ "error.file.name.missing": "El nombre del archivo no debe estar vacío.", "error.file.notFound": "El archivo \"{filename}\" no pudo ser encontrado.", "error.file.orientation": "La orientación de la imagen debe ser \"{orientation}\"", + "error.file.sort.permission": "You are not allowed to change the sorting of \"{filename}\"", "error.file.type.forbidden": "No está permitido subir archivos {type}.", "error.file.type.invalid": "Tipo de archivo inválido: {type}", "error.file.undefined": "El archivo no se puede encontrar", @@ -168,6 +177,7 @@ "error.page.move.ancestor": "The page cannot be moved into itself", "error.page.move.directory": "The page directory cannot be moved", "error.page.move.duplicate": "A sub page with the URL appendix \"{slug}\" already exists", + "error.page.move.noSections": "The page \"{parent}\" cannot be a parent of any page because it lacks any pages sections in its blueprint", "error.page.move.notFound": "The moved page could not be found", "error.page.move.permission": "You are not allowed to move \"{slug}\"", "error.page.move.template": "The \"{template}\" template is not accepted as a subpage of \"{parent}\"", @@ -297,6 +307,9 @@ "field.blocks.heading.name": "Encabezado", "field.blocks.heading.text": "Texto", "field.blocks.heading.placeholder": "Encabezado...", + "field.blocks.figure.back.plain": "Plain", + "field.blocks.figure.back.pattern.light": "Pattern (light)", + "field.blocks.figure.back.pattern.dark": "Pattern (dark)", "field.blocks.image.alt": "Texto alternativo", "field.blocks.image.caption": "Leyenda", "field.blocks.image.crop": "Cortar", @@ -334,6 +347,7 @@ "field.blocks.video.url.placeholder": "https://youtube.com/?v=", "field.files.empty": "Aún no ha seleccionado ningún archivo", + "field.files.empty.single": "No file selected yet", "field.layout.change": "Change layout", "field.layout.delete": "Eliminar layout", @@ -345,12 +359,14 @@ "field.object.empty": "Aún no hay información", "field.pages.empty": "Aún no ha seleccionado ningúna pagina", + "field.pages.empty.single": "No page selected yet", "field.structure.delete.confirm": "\u00bfEn realidad desea borrar esta entrada?", "field.structure.delete.confirm.all": "¿Realmente quieres eliminar todas las entradas?", "field.structure.empty": "A\u00fan no existen entradas.", "field.users.empty": "Aún no ha seleccionado ningún usuario", + "field.users.empty.single": "No user selected yet", "fields.empty": "No fields yet", @@ -369,6 +385,13 @@ "filter": "Filter", + "form.discard": "Discard changes", + "form.discard.confirm": "Do you really want to discard all your changes?", + "form.locked": "This content is disabled for you as it is currently edited by another user", + "form.unsaved": "The current changes have not yet been saved", + "form.preview": "Preview changes", + "form.preview.draft": "Preview draft", + "hide": "Ocultar", "hour": "Hora", "hue": "Hue", @@ -444,6 +467,8 @@ "license.status.missing.bubble": "Ready to launch your site?", "license.status.missing.info": "No valid license", "license.status.missing.label": "Please activate your license", + "license.status.unknown.info": "The license status is unknown", + "license.status.unknown.label": "Unknown license", "license.manage": "Gestiona tus licencias", "license.purchased": "Purchased", "license.success": "Gracias por apoyar a Kirby", @@ -456,6 +481,9 @@ "lock.unsaved": "Cambios sin guardar", "lock.unsaved.empty": "No hay más cambios sin guardar", + "lock.unsaved.files": "Unsaved files", + "lock.unsaved.pages": "Unsaved pages", + "lock.unsaved.users": "Unsaved accounts", "lock.isLocked": "Unsaved changes by {email}", "lock.unlock": "Desbloquear", "lock.unlock.submit": "Unlock and overwrite unsaved changes by {email}", @@ -578,6 +606,10 @@ "plugins": "Plugins", "prev": "Anterior", "preview": "Previsualizar", + + "publish": "Publish", + "published": "Publicado", + "remove": "Eliminar", "rename": "Renombrar", "renew": "Renew", @@ -597,7 +629,9 @@ "role.nobody.title": "Nadie", "save": "Guardar", + "saved": "Saved", "search": "Buscar", + "searching": "Searching", "search.min": "Introduce {min} caracteres para buscar", "search.all": "Show all {count} results", "search.results.none": "Sin resultados", @@ -622,6 +656,7 @@ "system.info.copy": "Copy info", "system.info.copied": "System info copied", + "system.issues.api.methods": "Your server does not support PATCH requests", "system.issues.content": "La carpeta content parece estar expuesta", "system.issues.eol.kirby": "La versión de Kirby que tienes instalada ha llegado al final de su vida útil y no recibirá más actualizaciones de seguridad.", "system.issues.eol.plugin": "Tu versión instalada del plugin { plugin } ha llegado al final de su vida útil y no recibirá más actualizaciones de seguridad.", @@ -646,6 +681,12 @@ "tel": "Phone", "tel.placeholder": "+49123456789", "template": "Plantilla", + + "theme": "Theme", + "theme.light": "Lights on", + "theme.dark": "Lights off", + "theme.automatic": "Match system default", + "title": "Título", "today": "Hoy", @@ -715,10 +756,13 @@ "users": "Usuarios", "version": "Versión", + "version.changes": "Changed version", + "version.compare": "Compare versions", "version.current": "Versión actual", "version.latest": "Última versión", "versionInformation": "información sobre la versión", + "view": "View", "view.account": "Tu cuenta", "view.installation": "Instalaci\u00f3n", "view.languages": "Idiomas", diff --git a/public/kirby/i18n/translations/es_ES.json b/public/kirby/i18n/translations/es_ES.json index 25ea458..a9555df 100644 --- a/public/kirby/i18n/translations/es_ES.json +++ b/public/kirby/i18n/translations/es_ES.json @@ -21,6 +21,8 @@ "copy": "Copiar", "copy.all": "Copiar todo", "copy.success": "{count} copied!", + "copy.success.multiple": "{count} copied!", + "copy.url": "Copy URL", "create": "Crear", "custom": "Custom", @@ -90,6 +92,12 @@ "error.cache.type.invalid": "Tipo de caché inválido \"{tipo}\"", + "error.content.lock.delete": "The version is locked and cannot be deleted", + "error.content.lock.move": "The source version is locked and cannot be moved", + "error.content.lock.publish": "This version is already published", + "error.content.lock.replace": "The version is locked and cannot be replaced", + "error.content.lock.update": "The version is locked and cannot be updated", + "error.email.preset.notFound": "El preset del correo \"{name}\" no puede ser encontrado", "error.field.converter.invalid": "Convertidor \"{converter}\" inválido", @@ -118,6 +126,7 @@ "error.file.name.missing": "El nombre de archivo no debe estar vacío", "error.file.notFound": "El archivo \"{filename}\" no puede ser encontrado", "error.file.orientation": "La orientación de la imagen debe ser \"{orientation}", + "error.file.sort.permission": "You are not allowed to change the sorting of \"{filename}\"", "error.file.type.forbidden": "No tienes permiso para subir archivos {type}", "error.file.type.invalid": "Tipo de archivo inválido: {type}", "error.file.undefined": "El archivo no puede ser encontrado", @@ -168,6 +177,7 @@ "error.page.move.ancestor": "The page cannot be moved into itself", "error.page.move.directory": "The page directory cannot be moved", "error.page.move.duplicate": "A sub page with the URL appendix \"{slug}\" already exists", + "error.page.move.noSections": "The page \"{parent}\" cannot be a parent of any page because it lacks any pages sections in its blueprint", "error.page.move.notFound": "The moved page could not be found", "error.page.move.permission": "You are not allowed to move \"{slug}\"", "error.page.move.template": "The \"{template}\" template is not accepted as a subpage of \"{parent}\"", @@ -297,6 +307,9 @@ "field.blocks.heading.name": "Encabezado", "field.blocks.heading.text": "Texto", "field.blocks.heading.placeholder": "Encabezado...", + "field.blocks.figure.back.plain": "Plain", + "field.blocks.figure.back.pattern.light": "Pattern (light)", + "field.blocks.figure.back.pattern.dark": "Pattern (dark)", "field.blocks.image.alt": "Texto alternativo", "field.blocks.image.caption": "Leyenda", "field.blocks.image.crop": "Cortar", @@ -334,6 +347,7 @@ "field.blocks.video.url.placeholder": "https://youtube.com/?v=", "field.files.empty": "Aún no hay archivos seleccionados", + "field.files.empty.single": "No file selected yet", "field.layout.change": "Change layout", "field.layout.delete": "Eliminar layout", @@ -345,12 +359,14 @@ "field.object.empty": "Aún no hay información", "field.pages.empty": "Aún no hay páginas seleccionadas", + "field.pages.empty.single": "No page selected yet", "field.structure.delete.confirm": "¿Realmente quieres eliminar esta fila?", "field.structure.delete.confirm.all": "¿Realmente quieres eliminar todas las entradas?", "field.structure.empty": "Aún no hay entradas", "field.users.empty": "Aún no hay usuarios seleccionados", + "field.users.empty.single": "No user selected yet", "fields.empty": "No fields yet", @@ -369,6 +385,13 @@ "filter": "Filter", + "form.discard": "Discard changes", + "form.discard.confirm": "Do you really want to discard all your changes?", + "form.locked": "This content is disabled for you as it is currently edited by another user", + "form.unsaved": "The current changes have not yet been saved", + "form.preview": "Preview changes", + "form.preview.draft": "Preview draft", + "hide": "Ocultar", "hour": "Hora", "hue": "Hue", @@ -444,6 +467,8 @@ "license.status.missing.bubble": "Ready to launch your site?", "license.status.missing.info": "No valid license", "license.status.missing.label": "Please activate your license", + "license.status.unknown.info": "The license status is unknown", + "license.status.unknown.label": "Unknown license", "license.manage": "Gestiona licencias", "license.purchased": "Purchased", "license.success": "Gracias por apoyar a Kirby", @@ -456,6 +481,9 @@ "lock.unsaved": "Cambios sin guardar", "lock.unsaved.empty": "No hay más cambios sin guardar", + "lock.unsaved.files": "Unsaved files", + "lock.unsaved.pages": "Unsaved pages", + "lock.unsaved.users": "Unsaved accounts", "lock.isLocked": "Unsaved changes by {email}", "lock.unlock": "Desbloquear", "lock.unlock.submit": "Unlock and overwrite unsaved changes by {email}", @@ -578,6 +606,10 @@ "plugins": "Plugins", "prev": "Anterior", "preview": "Previsualizar", + + "publish": "Publish", + "published": "Publicadas", + "remove": "Eliminar", "rename": "Renombrar", "renew": "Renew", @@ -597,7 +629,9 @@ "role.nobody.title": "Nadie", "save": "Guardar", + "saved": "Saved", "search": "Buscar", + "searching": "Searching", "search.min": "Introduce {min} caracteres para buscar", "search.all": "Show all {count} results", "search.results.none": "Sin resultados", @@ -622,6 +656,7 @@ "system.info.copy": "Copy info", "system.info.copied": "System info copied", + "system.issues.api.methods": "Your server does not support PATCH requests", "system.issues.content": "La carpeta content parece estar expuesta", "system.issues.eol.kirby": "La versión de Kirby que tienes instalada ha llegado al final de su vida útil y no recibirá más actualizaciones de seguridad.", "system.issues.eol.plugin": "La versión del plugin { plugin } que tienes instalada ha llegado al final de su vida útil y no recibirá más actualizaciones de seguridad.", @@ -646,6 +681,12 @@ "tel": "Phone", "tel.placeholder": "+49123456789", "template": "Plantilla", + + "theme": "Theme", + "theme.light": "Lights on", + "theme.dark": "Lights off", + "theme.automatic": "Match system default", + "title": "Título", "today": "Hoy", @@ -715,10 +756,13 @@ "users": "Usuarios", "version": "Versión", + "version.changes": "Changed version", + "version.compare": "Compare versions", "version.current": "Versión actual", "version.latest": "Última versión", "versionInformation": "Información sobre la versión", + "view": "View", "view.account": "Tu cuenta", "view.installation": "Instalación", "view.languages": "Idiomas", diff --git a/public/kirby/i18n/translations/fa.json b/public/kirby/i18n/translations/fa.json index 9b92a85..a6fa368 100644 --- a/public/kirby/i18n/translations/fa.json +++ b/public/kirby/i18n/translations/fa.json @@ -21,6 +21,8 @@ "copy": "کپی", "copy.all": "Copy all", "copy.success": "{count} copied!", + "copy.success.multiple": "{count} copied!", + "copy.url": "Copy URL", "create": "ایجاد", "custom": "Custom", @@ -90,6 +92,12 @@ "error.cache.type.invalid": "Invalid cache type \"{type}\"", + "error.content.lock.delete": "The version is locked and cannot be deleted", + "error.content.lock.move": "The source version is locked and cannot be moved", + "error.content.lock.publish": "This version is already published", + "error.content.lock.replace": "The version is locked and cannot be replaced", + "error.content.lock.update": "The version is locked and cannot be updated", + "error.email.preset.notFound": "قالب ایمیل «{name}» پیدا نشد", "error.field.converter.invalid": "مبدل «{converter}» نامعتبر است", @@ -118,6 +126,7 @@ "error.file.name.missing": "نام فایل اجباری است", "error.file.notFound": "فایل «{filename}» پیدا نشد.", "error.file.orientation": "The orientation of the image must be \"{orientation}\"", + "error.file.sort.permission": "You are not allowed to change the sorting of \"{filename}\"", "error.file.type.forbidden": "شما اجازه بارگذاری فایلهای «{type}» را ندارید", "error.file.type.invalid": "Invalid file type: {type}", "error.file.undefined": "\u0641\u0627\u06cc\u0644 \u0645\u0648\u0631\u062f \u0646\u0638\u0631 \u067e\u06cc\u062f\u0627 \u0646\u0634\u062f.", @@ -168,6 +177,7 @@ "error.page.move.ancestor": "The page cannot be moved into itself", "error.page.move.directory": "The page directory cannot be moved", "error.page.move.duplicate": "A sub page with the URL appendix \"{slug}\" already exists", + "error.page.move.noSections": "The page \"{parent}\" cannot be a parent of any page because it lacks any pages sections in its blueprint", "error.page.move.notFound": "The moved page could not be found", "error.page.move.permission": "You are not allowed to move \"{slug}\"", "error.page.move.template": "The \"{template}\" template is not accepted as a subpage of \"{parent}\"", @@ -297,6 +307,9 @@ "field.blocks.heading.name": "Heading", "field.blocks.heading.text": "Text", "field.blocks.heading.placeholder": "Heading …", + "field.blocks.figure.back.plain": "Plain", + "field.blocks.figure.back.pattern.light": "Pattern (light)", + "field.blocks.figure.back.pattern.dark": "Pattern (dark)", "field.blocks.image.alt": "Alternative text", "field.blocks.image.caption": "Caption", "field.blocks.image.crop": "Crop", @@ -334,6 +347,7 @@ "field.blocks.video.url.placeholder": "https://youtube.com/?v=", "field.files.empty": "فایلی انتخاب نشده است", + "field.files.empty.single": "No file selected yet", "field.layout.change": "Change layout", "field.layout.delete": "Delete layout", @@ -345,12 +359,14 @@ "field.object.empty": "No information yet", "field.pages.empty": "صفحه‌ای انتخاب نشده است", + "field.pages.empty.single": "No page selected yet", "field.structure.delete.confirm": "\u0645\u062f\u062e\u0644 \u062c\u0627\u0631\u06cc \u062d\u0630\u0641 \u0634\u0648\u062f\u061f", "field.structure.delete.confirm.all": "Do you really want to delete all entries?", "field.structure.empty": "\u0645\u0648\u0631\u062f\u06cc \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0631\u062f.", "field.users.empty": "کاربری انتخاب نشده است", + "field.users.empty.single": "No user selected yet", "fields.empty": "No fields yet", @@ -369,6 +385,13 @@ "filter": "Filter", + "form.discard": "Discard changes", + "form.discard.confirm": "Do you really want to discard all your changes?", + "form.locked": "This content is disabled for you as it is currently edited by another user", + "form.unsaved": "The current changes have not yet been saved", + "form.preview": "Preview changes", + "form.preview.draft": "Preview draft", + "hide": "Hide", "hour": "ساعت", "hue": "Hue", @@ -444,6 +467,8 @@ "license.status.missing.bubble": "Ready to launch your site?", "license.status.missing.info": "No valid license", "license.status.missing.label": "Please activate your license", + "license.status.unknown.info": "The license status is unknown", + "license.status.unknown.label": "Unknown license", "license.manage": "Manage your licenses", "license.purchased": "Purchased", "license.success": "با تشکر از شما برای حمایت از کربی", @@ -456,6 +481,9 @@ "lock.unsaved": "Unsaved changes", "lock.unsaved.empty": "There are no more unsaved changes", + "lock.unsaved.files": "Unsaved files", + "lock.unsaved.pages": "Unsaved pages", + "lock.unsaved.users": "Unsaved accounts", "lock.isLocked": "Unsaved changes by {email}", "lock.unlock": "Unlock", "lock.unlock.submit": "Unlock and overwrite unsaved changes by {email}", @@ -578,6 +606,10 @@ "plugins": "Plugins", "prev": "قبلی", "preview": "Preview", + + "publish": "Publish", + "published": "منتشر شده", + "remove": "حذف", "rename": "تغییر نام", "renew": "Renew", @@ -597,7 +629,9 @@ "role.nobody.title": "Nobody", "save": "\u0630\u062e\u06cc\u0631\u0647", + "saved": "Saved", "search": "جستجو", + "searching": "Searching", "search.min": "Enter {min} characters to search", "search.all": "Show all {count} results", "search.results.none": "No results", @@ -622,6 +656,7 @@ "system.info.copy": "Copy info", "system.info.copied": "System info copied", + "system.issues.api.methods": "Your server does not support PATCH requests", "system.issues.content": "The content folder seems to be exposed", "system.issues.eol.kirby": "Your installed Kirby version has reached end-of-life and will not receive further security updates", "system.issues.eol.plugin": "Your installed version of the { plugin } plugin is has reached end-of-life and will not receive further security updates", @@ -646,6 +681,12 @@ "tel": "Phone", "tel.placeholder": "+49123456789", "template": "\u0642\u0627\u0644\u0628 \u0635\u0641\u062d\u0647", + + "theme": "Theme", + "theme.light": "Lights on", + "theme.dark": "Lights off", + "theme.automatic": "Match system default", + "title": "عنوان", "today": "امروز", @@ -715,10 +756,13 @@ "users": "کاربران", "version": "\u0646\u0633\u062e\u0647 \u0646\u0631\u0645 \u0627\u0641\u0632\u0627\u0631", + "version.changes": "Changed version", + "version.compare": "Compare versions", "version.current": "Current version", "version.latest": "Latest version", "versionInformation": "Version information", + "view": "View", "view.account": "حساب کاربری شما", "view.installation": "\u0646\u0635\u0628 \u0648 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc", "view.languages": "زبان‌ها", diff --git a/public/kirby/i18n/translations/fi.json b/public/kirby/i18n/translations/fi.json index 68ecc72..b28fcd0 100644 --- a/public/kirby/i18n/translations/fi.json +++ b/public/kirby/i18n/translations/fi.json @@ -21,6 +21,8 @@ "copy": "Kopioi", "copy.all": "Kopioi kaikki", "copy.success": "{count} copied!", + "copy.success.multiple": "{count} copied!", + "copy.url": "Copy URL", "create": "Luo", "custom": "Custom", @@ -90,6 +92,12 @@ "error.cache.type.invalid": "Invalid cache type \"{type}\"", + "error.content.lock.delete": "The version is locked and cannot be deleted", + "error.content.lock.move": "The source version is locked and cannot be moved", + "error.content.lock.publish": "This version is already published", + "error.content.lock.replace": "The version is locked and cannot be replaced", + "error.content.lock.update": "The version is locked and cannot be updated", + "error.email.preset.notFound": "Nimellä \"{name}\" ja kyseisellä verkkotunnuksella ei löydy sähköpostiosoitetta", "error.field.converter.invalid": "Muunnin \"{converter}\" ei kelpaa", @@ -118,6 +126,7 @@ "error.file.name.missing": "Tiedostonimi ei voi olla tyhjä", "error.file.notFound": "Tiedostoa \"{filename}\" ei löytynyt", "error.file.orientation": "Kuvan suuntaus täytyy olla \"{orientation}\"", + "error.file.sort.permission": "You are not allowed to change the sorting of \"{filename}\"", "error.file.type.forbidden": "Sinulla ei ole oikeutta lähettää tiedostoja joiden tyyppi on {type}", "error.file.type.invalid": "Tiedostotyyppi {type} ei kelpaa", "error.file.undefined": "Tiedostoa ei l\u00f6ytynyt", @@ -168,6 +177,7 @@ "error.page.move.ancestor": "The page cannot be moved into itself", "error.page.move.directory": "The page directory cannot be moved", "error.page.move.duplicate": "A sub page with the URL appendix \"{slug}\" already exists", + "error.page.move.noSections": "The page \"{parent}\" cannot be a parent of any page because it lacks any pages sections in its blueprint", "error.page.move.notFound": "The moved page could not be found", "error.page.move.permission": "You are not allowed to move \"{slug}\"", "error.page.move.template": "The \"{template}\" template is not accepted as a subpage of \"{parent}\"", @@ -297,6 +307,9 @@ "field.blocks.heading.name": "Otsikko", "field.blocks.heading.text": "Teksti", "field.blocks.heading.placeholder": "Otsikko …", + "field.blocks.figure.back.plain": "Plain", + "field.blocks.figure.back.pattern.light": "Pattern (light)", + "field.blocks.figure.back.pattern.dark": "Pattern (dark)", "field.blocks.image.alt": "Vaihtoehtoinen teksti", "field.blocks.image.caption": "Kuvateksti", "field.blocks.image.crop": "Rajaa", @@ -334,6 +347,7 @@ "field.blocks.video.url.placeholder": "https://youtube.com/?v=", "field.files.empty": "Tiedostoja ei ole vielä valittu", + "field.files.empty.single": "No file selected yet", "field.layout.change": "Change layout", "field.layout.delete": "Poista asettelu", @@ -345,12 +359,14 @@ "field.object.empty": "Ei vielä tietoja", "field.pages.empty": " Sivuja ei ole vielä valittu", + "field.pages.empty.single": "No page selected yet", "field.structure.delete.confirm": "Haluatko varmasti poistaa tämän rivin?", "field.structure.delete.confirm.all": "Do you really want to delete all entries?", "field.structure.empty": "Rivejä ei ole vielä lisätty", "field.users.empty": "Käyttäjiä ei ole vielä valittu", + "field.users.empty.single": "No user selected yet", "fields.empty": "No fields yet", @@ -369,6 +385,13 @@ "filter": "Filter", + "form.discard": "Discard changes", + "form.discard.confirm": "Do you really want to discard all your changes?", + "form.locked": "This content is disabled for you as it is currently edited by another user", + "form.unsaved": "The current changes have not yet been saved", + "form.preview": "Preview changes", + "form.preview.draft": "Preview draft", + "hide": "Piilota", "hour": "Tunti", "hue": "Hue", @@ -444,6 +467,8 @@ "license.status.missing.bubble": "Ready to launch your site?", "license.status.missing.info": "No valid license", "license.status.missing.label": "Please activate your license", + "license.status.unknown.info": "The license status is unknown", + "license.status.unknown.label": "Unknown license", "license.manage": "Hallinnoi lisenssejäsi", "license.purchased": "Purchased", "license.success": "Kiitos kun tuet Kirbyä", @@ -456,6 +481,9 @@ "lock.unsaved": "Tallentamattomia muutoksia", "lock.unsaved.empty": "Ei enempää tallentamattomia muutoksia ", + "lock.unsaved.files": "Unsaved files", + "lock.unsaved.pages": "Unsaved pages", + "lock.unsaved.users": "Unsaved accounts", "lock.isLocked": "Unsaved changes by {email}", "lock.unlock": "Vapauta", "lock.unlock.submit": "Unlock and overwrite unsaved changes by {email}", @@ -578,6 +606,10 @@ "plugins": "Liitännäiset", "prev": "Edellinen", "preview": "Esikatselu", + + "publish": "Publish", + "published": "Julkaistut", + "remove": "Poista", "rename": "Nimeä uudelleen", "renew": "Renew", @@ -597,7 +629,9 @@ "role.nobody.title": "Tuntematon", "save": "Tallenna", + "saved": "Saved", "search": "Haku", + "searching": "Searching", "search.min": "Anna vähintään {min} merkkiä hakua varten", "search.all": "Show all {count} results", "search.results.none": "Ei tuloksia", @@ -622,6 +656,7 @@ "system.info.copy": "Copy info", "system.info.copied": "System info copied", + "system.issues.api.methods": "Your server does not support PATCH requests", "system.issues.content": "Content-kansio näyttäisi olevan julkinen", "system.issues.eol.kirby": "Your installed Kirby version has reached end-of-life and will not receive further security updates", "system.issues.eol.plugin": "Your installed version of the { plugin } plugin is has reached end-of-life and will not receive further security updates", @@ -646,6 +681,12 @@ "tel": "Phone", "tel.placeholder": "+49123456789", "template": "Sivupohja", + + "theme": "Theme", + "theme.light": "Lights on", + "theme.dark": "Lights off", + "theme.automatic": "Match system default", + "title": "Nimi", "today": "Tänään", @@ -715,10 +756,13 @@ "users": "Käyttäjät", "version": "Versio", + "version.changes": "Changed version", + "version.compare": "Compare versions", "version.current": "Nykyinen versio ", "version.latest": "Uusin versio ", "versionInformation": "Version tiedot", + "view": "View", "view.account": "Oma käyttäjätili", "view.installation": "Asennus", "view.languages": "Kielet", diff --git a/public/kirby/i18n/translations/fr.json b/public/kirby/i18n/translations/fr.json index 8c75064..eafb173 100644 --- a/public/kirby/i18n/translations/fr.json +++ b/public/kirby/i18n/translations/fr.json @@ -21,6 +21,8 @@ "copy": "Copier", "copy.all": "Tout copier", "copy.success": "Copié : {count}", + "copy.success.multiple": "Copié : {count}", + "copy.url": "Copy URL", "create": "Créer", "custom": "Personnalisé", @@ -90,6 +92,12 @@ "error.cache.type.invalid": "Type de cache invalide « {type} »", + "error.content.lock.delete": "The version is locked and cannot be deleted", + "error.content.lock.move": "The source version is locked and cannot be moved", + "error.content.lock.publish": "This version is already published", + "error.content.lock.replace": "The version is locked and cannot be replaced", + "error.content.lock.update": "The version is locked and cannot be updated", + "error.email.preset.notFound": "La configuration de courriel « {name} » n’a pu être trouvé ", "error.field.converter.invalid": "Convertisseur « {converter} » invalide", @@ -118,6 +126,7 @@ "error.file.name.missing": "Veuillez entrer un titre", "error.file.notFound": "Le fichier « {filename} » n’a pu être trouvé", "error.file.orientation": "L’orientation de l'image doit être « {orientation} »", + "error.file.sort.permission": "You are not allowed to change the sorting of \"{filename}\"", "error.file.type.forbidden": "Vous n’êtes pas autorisé à transférer des fichiers {type}", "error.file.type.invalid": "Type de fichier invalide : {type}", "error.file.undefined": "Le fichier n’a pu être trouvé", @@ -168,6 +177,7 @@ "error.page.move.ancestor": "La page ne peut être déplacée à l’intérieur d’elle-même", "error.page.move.directory": "Le répertoire de la page ne peut être déplacé", "error.page.move.duplicate": "Une sous-page possédant l’identifiant d’URL « {slug} » existe déjà", + "error.page.move.noSections": "The page \"{parent}\" cannot be a parent of any page because it lacks any pages sections in its blueprint", "error.page.move.notFound": "La page déplacée n’a pu être trouvée", "error.page.move.permission": "Vous n’êtes pas autorisé à déplacer « {slug} » ", "error.page.move.template": "Le modèle « {template} » n’est pas accepté en tant que sous-page de « {parent} »", @@ -297,6 +307,9 @@ "field.blocks.heading.name": "Titre", "field.blocks.heading.text": "Texte", "field.blocks.heading.placeholder": "Titre…", + "field.blocks.figure.back.plain": "Plain", + "field.blocks.figure.back.pattern.light": "Pattern (light)", + "field.blocks.figure.back.pattern.dark": "Pattern (dark)", "field.blocks.image.alt": "Texte alternatif", "field.blocks.image.caption": "Légende", "field.blocks.image.crop": "Recadrer", @@ -334,6 +347,7 @@ "field.blocks.video.url.placeholder": "https://youtube.com/?v=", "field.files.empty": "Pas encore de fichier sélectionné", + "field.files.empty.single": "No file selected yet", "field.layout.change": "Changer de disposition", "field.layout.delete": "Supprimer cette disposition", @@ -345,12 +359,14 @@ "field.object.empty": "Pas encore d‘information", "field.pages.empty": "Pas encore de page sélectionnée", + "field.pages.empty.single": "No page selected yet", "field.structure.delete.confirm": "Voulez-vous vraiment supprimer cette ligne ?", "field.structure.delete.confirm.all": "Voulez-vous vraiment supprimer toutes les entrées ?", "field.structure.empty": "Pas encore d’entrée", "field.users.empty": "Pas encore d’utilisateur sélectionné", + "field.users.empty.single": "No user selected yet", "fields.empty": "Pas encore de champs", @@ -369,6 +385,13 @@ "filter": "Filtrer", + "form.discard": "Discard changes", + "form.discard.confirm": "Do you really want to discard all your changes?", + "form.locked": "This content is disabled for you as it is currently edited by another user", + "form.unsaved": "The current changes have not yet been saved", + "form.preview": "Preview changes", + "form.preview.draft": "Preview draft", + "hide": "Masquer", "hour": "Heure", "hue": "Teinte", @@ -444,6 +467,8 @@ "license.status.missing.bubble": "Prêt à lancer votre site ?", "license.status.missing.info": "Pas de licence valide", "license.status.missing.label": "Veuillez activer votre licence", + "license.status.unknown.info": "The license status is unknown", + "license.status.unknown.label": "Unknown license", "license.manage": "Gérer vos licences", "license.purchased": "Achetée", "license.success": "Merci pour votre soutien à Kirby", @@ -456,6 +481,9 @@ "lock.unsaved": "Modifications non enregistrées", "lock.unsaved.empty": "Il n’y a plus de modifications non enregistrées", + "lock.unsaved.files": "Unsaved files", + "lock.unsaved.pages": "Unsaved pages", + "lock.unsaved.users": "Unsaved accounts", "lock.isLocked": "Modifications non enregistrées par {email}", "lock.unlock": "Déverrouiller", "lock.unlock.submit": "Déverrouiller et écraser les modifications non enregistrées par {email}", @@ -578,6 +606,10 @@ "plugins": "Plugins", "prev": "Précédent", "preview": "Prévisualiser", + + "publish": "Publish", + "published": "Publié", + "remove": "Supprimer", "rename": "Renommer", "renew": "Renouveler", @@ -597,7 +629,9 @@ "role.nobody.title": "Personne", "save": "Enregistrer", + "saved": "Sauvegardé", "search": "Rechercher", + "searching": "Searching", "search.min": "Saisissez {min} caractères pour rechercher", "search.all": "Afficher tous les résultats de {count}", "search.results.none": "Pas de résultats", @@ -622,6 +656,7 @@ "system.info.copy": "Copier les informations", "system.info.copied": "Informations système copiées", + "system.issues.api.methods": "Your server does not support PATCH requests", "system.issues.content": "Le dossier content semble exposé", "system.issues.eol.kirby": "La version de Kirby installée a atteint la fin de son cycle de vie et ne recevra plus de mises à jour de sécurité", "system.issues.eol.plugin": "La version du plugin { plugin } installée a atteint la fin de son cycle de vie et ne recevra plus de mises à jour de sécurité", @@ -646,6 +681,12 @@ "tel": "Téléphone", "tel.placeholder": "+33123456789", "template": "Modèle", + + "theme": "Theme", + "theme.light": "Lights on", + "theme.dark": "Lights off", + "theme.automatic": "Match system default", + "title": "Titre", "today": "Aujourd’hui", @@ -715,10 +756,13 @@ "users": "Utilisateurs", "version": "Version", + "version.changes": "Changed version", + "version.compare": "Compare versions", "version.current": "Version actuelle", "version.latest": "Dernière version", "versionInformation": "Informations de version", + "view": "View", "view.account": "Votre compte", "view.installation": "Installation", "view.languages": "Langues", diff --git a/public/kirby/i18n/translations/hu.json b/public/kirby/i18n/translations/hu.json index 25c33b0..cbc0bb5 100644 --- a/public/kirby/i18n/translations/hu.json +++ b/public/kirby/i18n/translations/hu.json @@ -20,7 +20,9 @@ "coordinates": "Coordinates", "copy": "Másol", "copy.all": "Összes másolása", - "copy.success": "{count} copied!", + "copy.success": "Copied", + "copy.success.multiple": "{count} copied!", + "copy.url": "Copy URL", "create": "Létrehoz", "custom": "Custom", @@ -90,6 +92,12 @@ "error.cache.type.invalid": "Invalid cache type \"{type}\"", + "error.content.lock.delete": "The version is locked and cannot be deleted", + "error.content.lock.move": "The source version is locked and cannot be moved", + "error.content.lock.publish": "This version is already published", + "error.content.lock.replace": "The version is locked and cannot be replaced", + "error.content.lock.update": "The version is locked and cannot be updated", + "error.email.preset.notFound": "A \"{name}\" email-beállítás nem található", "error.field.converter.invalid": "Érvénytelen konverter: \"{converter}\"", @@ -118,6 +126,7 @@ "error.file.name.missing": "A fálj neve nem lehet üres", "error.file.notFound": "A \"{filename}\" fájl nem található", "error.file.orientation": "A képnek \"{orientation}\" tájolásúnak kell lennie", + "error.file.sort.permission": "You are not allowed to change the sorting of \"{filename}\"", "error.file.type.forbidden": "Nem tölthetsz fel \"{type}\" típusú fájlokat", "error.file.type.invalid": "Érvénytelen fájltípus: {type}", "error.file.undefined": "A f\u00e1jl nem tal\u00e1lhat\u00f3", @@ -168,6 +177,7 @@ "error.page.move.ancestor": "The page cannot be moved into itself", "error.page.move.directory": "The page directory cannot be moved", "error.page.move.duplicate": "A sub page with the URL appendix \"{slug}\" already exists", + "error.page.move.noSections": "The page \"{parent}\" cannot be a parent of any page because it lacks any pages sections in its blueprint", "error.page.move.notFound": "The moved page could not be found", "error.page.move.permission": "You are not allowed to move \"{slug}\"", "error.page.move.template": "The \"{template}\" template is not accepted as a subpage of \"{parent}\"", @@ -297,6 +307,9 @@ "field.blocks.heading.name": "Címsor", "field.blocks.heading.text": "Szöveg", "field.blocks.heading.placeholder": "Címsor …", + "field.blocks.figure.back.plain": "Plain", + "field.blocks.figure.back.pattern.light": "Pattern (light)", + "field.blocks.figure.back.pattern.dark": "Pattern (dark)", "field.blocks.image.alt": "Alternatív szöveg", "field.blocks.image.caption": "Képaláírás", "field.blocks.image.crop": "Körülvágás", @@ -334,6 +347,7 @@ "field.blocks.video.url.placeholder": "https://youtube.com/?v=", "field.files.empty": "Nincs fálj kiválasztva", + "field.files.empty.single": "No file selected yet", "field.layout.change": "Change layout", "field.layout.delete": "Elrendezés törlése", @@ -345,12 +359,14 @@ "field.object.empty": "No information yet", "field.pages.empty": "Nincs oldal kiválasztva", + "field.pages.empty.single": "No page selected yet", "field.structure.delete.confirm": "Biztos t\u00f6r\u00f6lni szeretn\u00e9d ezt a bejegyz\u00e9st?", "field.structure.delete.confirm.all": "Do you really want to delete all entries?", "field.structure.empty": "Nincs m\u00e9g bejegyz\u00e9s", "field.users.empty": "Nincs felhasználó kiválasztva", + "field.users.empty.single": "No user selected yet", "fields.empty": "No fields yet", @@ -369,6 +385,13 @@ "filter": "Filter", + "form.discard": "Discard changes", + "form.discard.confirm": "Do you really want to discard all your changes?", + "form.locked": "This content is disabled for you as it is currently edited by another user", + "form.unsaved": "The current changes have not yet been saved", + "form.preview": "Preview changes", + "form.preview.draft": "Preview draft", + "hide": "Elrejtés", "hour": "Óra", "hue": "Hue", @@ -444,6 +467,8 @@ "license.status.missing.bubble": "Ready to launch your site?", "license.status.missing.info": "No valid license", "license.status.missing.label": "Please activate your license", + "license.status.unknown.info": "The license status is unknown", + "license.status.unknown.label": "Unknown license", "license.manage": "Manage your licenses", "license.purchased": "Purchased", "license.success": "Köszönjük, hogy támogatod a Kirby-t", @@ -455,7 +480,10 @@ "loading": "Betöltés", "lock.unsaved": "Nem mentett változások", - "lock.unsaved.empty": "Nincsenek nem mentett változások", + "lock.unsaved.empty": "There are no unsaved changes", + "lock.unsaved.files": "Unsaved files", + "lock.unsaved.pages": "Unsaved pages", + "lock.unsaved.users": "Unsaved accounts", "lock.isLocked": "Unsaved changes by {email}", "lock.unlock": "Kinyit", "lock.unlock.submit": "Unlock and overwrite unsaved changes by {email}", @@ -578,6 +606,10 @@ "plugins": "Pluginek", "prev": "Előző", "preview": "Előnézet", + + "publish": "Publish", + "published": "Publikálva", + "remove": "Eltávolítás", "rename": "Átnevezés", "renew": "Renew", @@ -597,7 +629,9 @@ "role.nobody.title": "Senki", "save": "Ment\u00e9s", + "saved": "Saved", "search": "Keresés", + "searching": "Searching", "search.min": "A kereséshez írj be minimum {min} karaktert", "search.all": "Show all {count} results", "search.results.none": "Nincs találat", @@ -622,6 +656,7 @@ "system.info.copy": "Copy info", "system.info.copied": "System info copied", + "system.issues.api.methods": "Your server does not support PATCH requests", "system.issues.content": "The content folder seems to be exposed", "system.issues.eol.kirby": "Your installed Kirby version has reached end-of-life and will not receive further security updates", "system.issues.eol.plugin": "Your installed version of the { plugin } plugin is has reached end-of-life and will not receive further security updates", @@ -646,6 +681,12 @@ "tel": "Phone", "tel.placeholder": "+49123456789", "template": "Sablon", + + "theme": "Theme", + "theme.light": "Lights on", + "theme.dark": "Lights off", + "theme.automatic": "Match system default", + "title": "Cím", "today": "Ma", @@ -715,10 +756,13 @@ "users": "Felhasználók", "version": "Kirby verzi\u00f3", + "version.changes": "Changed version", + "version.compare": "Compare versions", "version.current": "Current version", "version.latest": "Latest version", "versionInformation": "Version information", + "view": "View", "view.account": "Fi\u00f3kod", "view.installation": "Telep\u00edt\u00e9s", "view.languages": "Nyelvek", diff --git a/public/kirby/i18n/translations/id.json b/public/kirby/i18n/translations/id.json index 2dd6ba7..f3676ea 100644 --- a/public/kirby/i18n/translations/id.json +++ b/public/kirby/i18n/translations/id.json @@ -21,6 +21,8 @@ "copy": "Salin", "copy.all": "Salin semua", "copy.success": "{count} disalin!", + "copy.success.multiple": "{count} copied!", + "copy.url": "Copy URL", "create": "Buat", "custom": "Kustom", @@ -90,6 +92,12 @@ "error.cache.type.invalid": "Tipe tembolok tidak valid \"{type}\"", + "error.content.lock.delete": "The version is locked and cannot be deleted", + "error.content.lock.move": "The source version is locked and cannot be moved", + "error.content.lock.publish": "This version is already published", + "error.content.lock.replace": "The version is locked and cannot be replaced", + "error.content.lock.update": "The version is locked and cannot be updated", + "error.email.preset.notFound": "Surel \"{name}\" tidak dapat ditemukan", "error.field.converter.invalid": "Konverter \"{converter}\" tidak valid", @@ -118,6 +126,7 @@ "error.file.name.missing": "Nama berkas harus diisi", "error.file.notFound": "Berkas \"{filename}\" tidak dapat ditemukan", "error.file.orientation": "Orientasi gambar harus \"{orientation}\"", + "error.file.sort.permission": "You are not allowed to change the sorting of \"{filename}\"", "error.file.type.forbidden": "Anda tidak diizinkan mengunggah berkas dengan tipe {type}", "error.file.type.invalid": "Tipe berkas tidak valid: {type}", "error.file.undefined": "Berkas tidak dapat ditemukan", @@ -168,6 +177,7 @@ "error.page.move.ancestor": "Halaman tidak dapat dipindahkan ke dirinya sendiri", "error.page.move.directory": "Direktori halaman tidak dapat dipindahkan", "error.page.move.duplicate": "Suatu sub halaman dengan akhiran URL \"{slug}\" sudah ada", + "error.page.move.noSections": "The page \"{parent}\" cannot be a parent of any page because it lacks any pages sections in its blueprint", "error.page.move.notFound": "Halaman yang dipindahkan tidak dapat ditemukan", "error.page.move.permission": "Anda tidak diizinkan memindahkan \"{slug}\"", "error.page.move.template": "Templat \"{template}\" tidak dapat diterima sebagai sub halaman dari \"{parent}\"", @@ -297,6 +307,9 @@ "field.blocks.heading.name": "Penajukan", "field.blocks.heading.text": "Teks", "field.blocks.heading.placeholder": "Penajukan …", + "field.blocks.figure.back.plain": "Plain", + "field.blocks.figure.back.pattern.light": "Pattern (light)", + "field.blocks.figure.back.pattern.dark": "Pattern (dark)", "field.blocks.image.alt": "Teks alternatif", "field.blocks.image.caption": "Keterangan", "field.blocks.image.crop": "Pangkas", @@ -334,6 +347,7 @@ "field.blocks.video.url.placeholder": "https://youtube.com/?v=", "field.files.empty": "Belum ada berkas yang dipilih", + "field.files.empty.single": "No file selected yet", "field.layout.change": "Change layout", "field.layout.delete": "Hapus tata letak", @@ -345,12 +359,14 @@ "field.object.empty": "No information yet", "field.pages.empty": "Belum ada halaman yang dipilih", + "field.pages.empty.single": "No page selected yet", "field.structure.delete.confirm": "Anda yakin menghapus baris ini?", "field.structure.delete.confirm.all": "Do you really want to delete all entries?", "field.structure.empty": "Belum ada entri", "field.users.empty": "Belum ada pengguna yang dipilih", + "field.users.empty.single": "No user selected yet", "fields.empty": "No fields yet", @@ -369,6 +385,13 @@ "filter": "Filter", + "form.discard": "Discard changes", + "form.discard.confirm": "Do you really want to discard all your changes?", + "form.locked": "This content is disabled for you as it is currently edited by another user", + "form.unsaved": "The current changes have not yet been saved", + "form.preview": "Preview changes", + "form.preview.draft": "Preview draft", + "hide": "Sembunyikan", "hour": "Jam", "hue": "Hue", @@ -444,6 +467,8 @@ "license.status.missing.bubble": "Ready to launch your site?", "license.status.missing.info": "No valid license", "license.status.missing.label": "Please activate your license", + "license.status.unknown.info": "The license status is unknown", + "license.status.unknown.label": "Unknown license", "license.manage": "Manage your licenses", "license.purchased": "Purchased", "license.success": "Terima kasih atas dukungan untuk Kirby", @@ -456,6 +481,9 @@ "lock.unsaved": "Perubahan belum tersimpan", "lock.unsaved.empty": "Tidak ada lagi perubahan belum tersimpan", + "lock.unsaved.files": "Unsaved files", + "lock.unsaved.pages": "Unsaved pages", + "lock.unsaved.users": "Unsaved accounts", "lock.isLocked": "Unsaved changes by {email}", "lock.unlock": "Buka kunci", "lock.unlock.submit": "Unlock and overwrite unsaved changes by {email}", @@ -578,6 +606,10 @@ "plugins": "Plugins", "prev": "Sebelumnya", "preview": "Pratinjau", + + "publish": "Publish", + "published": "Dipublikasikan", + "remove": "Hapus", "rename": "Ubah nama", "renew": "Renew", @@ -597,7 +629,9 @@ "role.nobody.title": "Tidak siapapun", "save": "Simpan", + "saved": "Saved", "search": "Cari", + "searching": "Searching", "search.min": "Masukkan {min} karakter untuk mencari", "search.all": "Show all {count} results", "search.results.none": "Tidak ada hasil", @@ -622,6 +656,7 @@ "system.info.copy": "Copy info", "system.info.copied": "System info copied", + "system.issues.api.methods": "Your server does not support PATCH requests", "system.issues.content": "Folder konten nampaknya terekspos", "system.issues.eol.kirby": "Versi instalasi Kirby Anda sudah mencapai akhir dan tidak akan lagi mendapat pembaruan keamanan", "system.issues.eol.plugin": "Versi instalasi plugin { plugin } Anda sudah mencapai akhir dan tidak akan lagi mendapatkan pembaruan keamanan", @@ -646,6 +681,12 @@ "tel": "Phone", "tel.placeholder": "+49123456789", "template": "Templat", + + "theme": "Theme", + "theme.light": "Lights on", + "theme.dark": "Lights off", + "theme.automatic": "Match system default", + "title": "Judul", "today": "Hari ini", @@ -715,10 +756,13 @@ "users": "Pengguna", "version": "Versi", + "version.changes": "Changed version", + "version.compare": "Compare versions", "version.current": "Current version", "version.latest": "Latest version", "versionInformation": "Version information", + "view": "View", "view.account": "Akun Anda", "view.installation": "Pemasangan", "view.languages": "Bahasa", diff --git a/public/kirby/i18n/translations/is_IS.json b/public/kirby/i18n/translations/is_IS.json index 2a0def1..8c7dd9a 100644 --- a/public/kirby/i18n/translations/is_IS.json +++ b/public/kirby/i18n/translations/is_IS.json @@ -21,6 +21,8 @@ "copy": "Afrita", "copy.all": "Afrita allt", "copy.success": "Afritaði {count}!", + "copy.success.multiple": "Afritaði {count}!", + "copy.url": "Afrita slóð", "create": "Stofna", "custom": "Sérstillt", @@ -90,6 +92,12 @@ "error.cache.type.invalid": "Ógyld skyndiminnisgerð \"{type}\"", + "error.content.lock.delete": "Þessi útgáfa er læst og henni verður ekki eytt", + "error.content.lock.move": "Þessi útgáfa er læst og hún verður ekki færð", + "error.content.lock.publish": "Þessi útgáfa er núþegar útgefin", + "error.content.lock.replace": "Þessi útfáfa er læst og það verður ekki skipt út", + "error.content.lock.update": "Þessi útgáfa er læst og hún verður ekki uppfærð", + "error.email.preset.notFound": "Netfangstillingarnar: \"{name}\" fundust ekki", "error.field.converter.invalid": "Ógildur umbreytari \"{converter}\"", @@ -118,6 +126,7 @@ "error.file.name.missing": "Skrárnafnið má ekki skilja eftir tómt", "error.file.notFound": "Skráin \"{filename}\" fannst ekki", "error.file.orientation": "Snið myndarinnar þarf að vera \"{orientation}\"", + "error.file.sort.permission": "Þú mátt ekkert breyta röðuninni á \"{filename}\"", "error.file.type.forbidden": "Þú mátt ekkert hlaða inn {type} skrám", "error.file.type.invalid": "Ógild skrártegund: {type}", "error.file.undefined": "Skráin fannst ekki", @@ -168,6 +177,7 @@ "error.page.move.ancestor": "Það er ekki hægt að færa síðuna á sjálfa sig.", "error.page.move.directory": "Ekki er reyndist unnt að færa möppu síðunnar.", "error.page.move.duplicate": "Undirsíða með slóðinni og forskeytinu \"{slug}\" er núþegar til", + "error.page.move.noSections": "Síðan \"{parent}\" getur ekki átt undirsíður þar sem tilskylin svið til umsýslu á undirsíðum vantar", "error.page.move.notFound": "Síðan sem færð var finnst því miður ekki", "error.page.move.permission": "Þú mátt ekkert færa \"{slug}\"", "error.page.move.template": "Sniðmátið \"{template}\" er ekki gillt sem undirsíða af \"{parent}\"", @@ -297,6 +307,9 @@ "field.blocks.heading.name": "Fyrirsögn", "field.blocks.heading.text": "Texti/Prósi", "field.blocks.heading.placeholder": "Fyrirsögn …", + "field.blocks.figure.back.plain": "Látlaust", + "field.blocks.figure.back.pattern.light": "Mynstur (ljóst)", + "field.blocks.figure.back.pattern.dark": "Mynstur (dökkt)", "field.blocks.image.alt": "ALT texti", "field.blocks.image.caption": "Myndartexti", "field.blocks.image.crop": "Kroppa", @@ -334,6 +347,7 @@ "field.blocks.video.url.placeholder": "https://youtube.com/?v=", "field.files.empty": "Engar skrár valdar ennþá", + "field.files.empty.single": "Engin skrá valin enn", "field.layout.change": "Breyta uppsetningu ramma", "field.layout.delete": "Eyða ramma", @@ -345,12 +359,14 @@ "field.object.empty": "Engar upplýsingar enn", "field.pages.empty": "Engar síður valdar ennþá", + "field.pages.empty.single": "Engin síða valin enn", "field.structure.delete.confirm": "Viltu virkilega eyða þessari röð?", "field.structure.delete.confirm.all": "Ætlar þú virkilega að eyða öllum færslum?", "field.structure.empty": "Engar færslur enn", "field.users.empty": "Engir notendur valdir enn", + "field.users.empty.single": "Enginn notandi valinn enn", "fields.empty": "Hér eru engin svið enn", @@ -369,6 +385,13 @@ "filter": "Sigta", + "form.discard": "Hunsa breytingar", + "form.discard.confirm": "Ætlarðu virkilega að hunsa alla breytingar?", + "form.locked": "Efnið er þér ekki aðgengilegt þar sem annar notandi er nú þegar að vinna í því", + "form.unsaved": "Þessar breytingar hafa ekki verið vistaðar", + "form.preview": "Skoða breytingar", + "form.preview.draft": "Skoða uppkast", + "hide": "Fela", "hour": "Klukkustund", "hue": "Blær", @@ -444,6 +467,8 @@ "license.status.missing.bubble": "Er allt tilbúið til að gefa vefinn út?", "license.status.missing.info": "Ekkert gilt skráningarleyfi", "license.status.missing.label": "Vinsamlegast virkjaðu leyfið þitt", + "license.status.unknown.info": "Staða leyfis fyrir hugbúnaðinn er óþekkt", + "license.status.unknown.label": "Óþekkt leyfi", "license.manage": "Sýslaðu með leyfin þín", "license.purchased": "Verslað", "license.success": "Þakka þér fyrir að velja Kirby", @@ -456,6 +481,9 @@ "lock.unsaved": "Óvistað breytingar", "lock.unsaved.empty": "Það eru öngvar óvistaðar breytingar", + "lock.unsaved.files": "Óvistaðar skrár", + "lock.unsaved.pages": "Óvistaðar síður", + "lock.unsaved.users": "Óvistaðir notendareikningar", "lock.isLocked": "Óvistaðar breytingar framkvæmdar af {email}", "lock.unlock": "Aflæsa", "lock.unlock.submit": "Aflæsa og yfirskrifa óvistaðar breytingar framkvæmdar af {email}", @@ -578,6 +606,10 @@ "plugins": "Viðbætur", "prev": "Fyrri", "preview": "Forskoða", + + "publish": "Útgefa", + "published": "Útgefnar og listaðar", + "remove": "Fjarlægja", "rename": "Endurnefna", "renew": "Endurnýja", @@ -597,7 +629,9 @@ "role.nobody.title": "Enginn", "save": "Vista", + "saved": "Vistað", "search": "Leita", + "searching": "Leita ..", "search.min": "Lágmark {min} stafir til að leita", "search.all": "Sýna allar {count} niðurstöður.", "search.results.none": "Engar niðurstöður", @@ -622,6 +656,7 @@ "system.info.copy": "Copy info", "system.info.copied": "System info copied", + "system.issues.api.methods": "Vefþjónn þinn styður ekkert PATCH beiðnir", "system.issues.content": "Efnismappan virðist vera berskjölduð", "system.issues.eol.kirby": "Uppsett Kirby eintak þitt hefur runnið sitt skeið á enda og mun ekki verða uppfært framar", "system.issues.eol.plugin": "Uppsett eintak þitt af viðbótinni { plugin } hefur runnið sitt skeið á enda og mun ekki verða uppfærð framar", @@ -646,6 +681,12 @@ "tel": "Sími", "tel.placeholder": "+3548561234", "template": "Sniðmát", + + "theme": "Þema", + "theme.light": "Ljósin kveikt", + "theme.dark": "Ljósin slökkt", + "theme.automatic": "Nota kerfisstillingu", + "title": "Titill", "today": "Núna", @@ -715,10 +756,13 @@ "users": "Notendur", "version": "Útgáfa", + "version.changes": "Breytt útgáfa", + "version.compare": "Bera saman útgáfur", "version.current": "Núverandi útgáfa", "version.latest": "Nýjasta útgáfa", "versionInformation": "Útgáfuupplýsingar", + "view": "Sýn", "view.account": "Þínar stillingar", "view.installation": "Uppsetning", "view.languages": "Tungumál", diff --git a/public/kirby/i18n/translations/it.json b/public/kirby/i18n/translations/it.json index 6263b62..a1b276a 100644 --- a/public/kirby/i18n/translations/it.json +++ b/public/kirby/i18n/translations/it.json @@ -21,6 +21,8 @@ "copy": "Copia", "copy.all": "Copia tutto", "copy.success": "{count} copied!", + "copy.success.multiple": "{count} copied!", + "copy.url": "Copy URL", "create": "Crea", "custom": "Custom", @@ -90,6 +92,12 @@ "error.cache.type.invalid": "Tipo di cache \"{type}\" non valido", + "error.content.lock.delete": "The version is locked and cannot be deleted", + "error.content.lock.move": "The source version is locked and cannot be moved", + "error.content.lock.publish": "This version is already published", + "error.content.lock.replace": "The version is locked and cannot be replaced", + "error.content.lock.update": "The version is locked and cannot be updated", + "error.email.preset.notFound": "Non è stato possibile trovare il preset email \"{name}\"", "error.field.converter.invalid": "Convertitore \"{converter}\" non valido", @@ -118,6 +126,7 @@ "error.file.name.missing": "Il nome del file non può essere vuoto", "error.file.notFound": "Il file non \u00e8 stato trovato", "error.file.orientation": "L'imaggine dev'essere orientata in \"{orientation}\"", + "error.file.sort.permission": "You are not allowed to change the sorting of \"{filename}\"", "error.file.type.forbidden": "Non ti è permesso caricare file {type}", "error.file.type.invalid": "Tipo di file non valido: {type}", "error.file.undefined": "Il file non \u00e8 stato trovato", @@ -168,6 +177,7 @@ "error.page.move.ancestor": "The page cannot be moved into itself", "error.page.move.directory": "The page directory cannot be moved", "error.page.move.duplicate": "A sub page with the URL appendix \"{slug}\" already exists", + "error.page.move.noSections": "The page \"{parent}\" cannot be a parent of any page because it lacks any pages sections in its blueprint", "error.page.move.notFound": "The moved page could not be found", "error.page.move.permission": "You are not allowed to move \"{slug}\"", "error.page.move.template": "The \"{template}\" template is not accepted as a subpage of \"{parent}\"", @@ -297,6 +307,9 @@ "field.blocks.heading.name": "Titolo", "field.blocks.heading.text": "Testo", "field.blocks.heading.placeholder": "Titolo …", + "field.blocks.figure.back.plain": "Plain", + "field.blocks.figure.back.pattern.light": "Pattern (light)", + "field.blocks.figure.back.pattern.dark": "Pattern (dark)", "field.blocks.image.alt": "Testo alternativo", "field.blocks.image.caption": "Didascalia", "field.blocks.image.crop": "Ritaglio", @@ -334,6 +347,7 @@ "field.blocks.video.url.placeholder": "https://youtube.com/?v=", "field.files.empty": "Nessun file selezionato", + "field.files.empty.single": "No file selected yet", "field.layout.change": "Change layout", "field.layout.delete": "Elimina layout", @@ -345,12 +359,14 @@ "field.object.empty": "Ancora nessuna informazione", "field.pages.empty": "Nessuna pagina selezionata", + "field.pages.empty.single": "No page selected yet", "field.structure.delete.confirm": "Vuoi veramente eliminare questo elemento?", "field.structure.delete.confirm.all": "Vuoi davvero cancellare tutte le voci?", "field.structure.empty": "Non ci sono ancora elementi.", "field.users.empty": "Nessun utente selezionato", + "field.users.empty.single": "No user selected yet", "fields.empty": "No fields yet", @@ -369,6 +385,13 @@ "filter": "Filter", + "form.discard": "Discard changes", + "form.discard.confirm": "Do you really want to discard all your changes?", + "form.locked": "This content is disabled for you as it is currently edited by another user", + "form.unsaved": "The current changes have not yet been saved", + "form.preview": "Preview changes", + "form.preview.draft": "Preview draft", + "hide": "Nascondi", "hour": "Ora", "hue": "Hue", @@ -444,6 +467,8 @@ "license.status.missing.bubble": "Pronto a lanciare il tuo sito?", "license.status.missing.info": "Nessuna licenza valida", "license.status.missing.label": "Attiva la tua licenza ora", + "license.status.unknown.info": "The license status is unknown", + "license.status.unknown.label": "Unknown license", "license.manage": "Gestisci le tue licenze", "license.purchased": "Acquistata", "license.success": "Ti ringraziamo per aver supportato Kirby", @@ -456,6 +481,9 @@ "lock.unsaved": "Modifiche non salvate", "lock.unsaved.empty": "Non ci sono altre modifiche non salvate", + "lock.unsaved.files": "Unsaved files", + "lock.unsaved.pages": "Unsaved pages", + "lock.unsaved.users": "Unsaved accounts", "lock.isLocked": "Unsaved changes by {email}", "lock.unlock": "Sblocca", "lock.unlock.submit": "Unlock and overwrite unsaved changes by {email}", @@ -578,6 +606,10 @@ "plugins": "Plugins", "prev": "Precedente", "preview": "Anteprima", + + "publish": "Publish", + "published": "Pubblicato", + "remove": "Rimuovi", "rename": "Rinomina", "renew": "Rinnova", @@ -597,7 +629,9 @@ "role.nobody.title": "Nessuno", "save": "Salva", + "saved": "Saved", "search": "Cerca", + "searching": "Searching", "search.min": "Inserisci almeno {min} caratteri per la ricerca", "search.all": "Mostra tutti i {count} risultati", "search.results.none": "Nessun risultato", @@ -622,6 +656,7 @@ "system.info.copy": "Copy info", "system.info.copied": "System info copied", + "system.issues.api.methods": "Your server does not support PATCH requests", "system.issues.content": "La cartella content sembra essere esposta", "system.issues.eol.kirby": "La versione di Kirby installata è giunta alla fine del suo ciclo di vita e non riceverà ulteriori aggiornamenti di sicurezza ", "system.issues.eol.plugin": "La versione installata del plugin { plugin } è giunta alla fine del suo ciclo di vita e non riceverà ulteriori aggiornamenti di sicurezza", @@ -646,6 +681,12 @@ "tel": "Phone", "tel.placeholder": "+49123456789", "template": "Template", + + "theme": "Theme", + "theme.light": "Lights on", + "theme.dark": "Lights off", + "theme.automatic": "Match system default", + "title": "Titolo", "today": "Oggi", @@ -715,10 +756,13 @@ "users": "Utenti", "version": "Versione di Kirby", + "version.changes": "Changed version", + "version.compare": "Compare versions", "version.current": "Versione corrente", "version.latest": "Ultima versione", "versionInformation": "Informazioni sulla versione", + "view": "View", "view.account": "Il tuo account", "view.installation": "Installazione", "view.languages": "Lingue", diff --git a/public/kirby/i18n/translations/ko.json b/public/kirby/i18n/translations/ko.json index 4dae542..2fc704a 100644 --- a/public/kirby/i18n/translations/ko.json +++ b/public/kirby/i18n/translations/ko.json @@ -21,6 +21,8 @@ "copy": "복사", "copy.all": "모두 복사", "copy.success": "복사되었습니다. ({count})", + "copy.success.multiple": "복사되었습니다. ({count})", + "copy.url": "Copy URL", "create": "등록", "custom": "개인화", @@ -90,6 +92,12 @@ "error.cache.type.invalid": "캐시 형식(({type})이 올바르지 않습니다.", + "error.content.lock.delete": "The version is locked and cannot be deleted", + "error.content.lock.move": "The source version is locked and cannot be moved", + "error.content.lock.publish": "This version is already published", + "error.content.lock.replace": "The version is locked and cannot be replaced", + "error.content.lock.update": "The version is locked and cannot be updated", + "error.email.preset.notFound": "기본 이메일 주소({name})가 없습니다.", "error.field.converter.invalid": "컨버터({converter})가 올바르지 않습니다.", @@ -118,6 +126,7 @@ "error.file.name.missing": "파일명을 입력하세요.", "error.file.notFound": "파일({filename})이 없습니다.", "error.file.orientation": "이미지의 비율({orientation})을 확인하세요.", + "error.file.sort.permission": "You are not allowed to change the sorting of \"{filename}\"", "error.file.type.forbidden": "이 형식({type})의 파일을 업로드할 권한이 없습니다.", "error.file.type.invalid": "파일 형식({type})이 올바르지 않습니다.", "error.file.undefined": "\ud30c\uc77c\uc774 \uc5c6\uc2b5\ub2c8\ub2e4.", @@ -168,6 +177,7 @@ "error.page.move.ancestor": "해당 페이지로 이동할 수 없습니다.", "error.page.move.directory": "페이지 디렉토리는 이동할 수 없습니다.", "error.page.move.duplicate": "고유 주소({slug})가 같은 서브 페이지가 있습니다.", + "error.page.move.noSections": "The page \"{parent}\" cannot be a parent of any page because it lacks any pages sections in its blueprint", "error.page.move.notFound": "이동된 페이지를 찾을 수 없습니다.", "error.page.move.permission": "페이지({slug})를 이동할 권한이 없습니다.", "error.page.move.template": "이 템플릿({template})은 이 페이지({parent})의 서브 페이지로 이동할 수 없습니다.", @@ -297,6 +307,9 @@ "field.blocks.heading.name": "제목", "field.blocks.heading.text": "제목", "field.blocks.heading.placeholder": "제목", + "field.blocks.figure.back.plain": "Plain", + "field.blocks.figure.back.pattern.light": "Pattern (light)", + "field.blocks.figure.back.pattern.dark": "Pattern (dark)", "field.blocks.image.alt": "대체 텍스트", "field.blocks.image.caption": "캡션", "field.blocks.image.crop": "자르기", @@ -334,6 +347,7 @@ "field.blocks.video.url.placeholder": "https://youtube.com/?v=", "field.files.empty": "선택한 파일이 없습니다.", + "field.files.empty.single": "No file selected yet", "field.layout.change": "레이아웃 변경", "field.layout.delete": "레이아웃 삭제", @@ -345,12 +359,14 @@ "field.object.empty": "정보가 없습니다.", "field.pages.empty": "선택한 페이지가 없습니다.", + "field.pages.empty.single": "No page selected yet", "field.structure.delete.confirm": "이 항목을 삭제할까요?", "field.structure.delete.confirm.all": "모든 항목을 삭제할까요?", "field.structure.empty": "항목이 없습니다.", "field.users.empty": "선택한 사용자가 없습니다.", + "field.users.empty.single": "No user selected yet", "fields.empty": "필드가 없습니다.", @@ -369,6 +385,13 @@ "filter": "필터", + "form.discard": "Discard changes", + "form.discard.confirm": "Do you really want to discard all your changes?", + "form.locked": "This content is disabled for you as it is currently edited by another user", + "form.unsaved": "The current changes have not yet been saved", + "form.preview": "Preview changes", + "form.preview.draft": "Preview draft", + "hide": "숨기기", "hour": "시", "hue": "색상", @@ -444,6 +467,8 @@ "license.status.missing.bubble": "사이트를 공개합니다.", "license.status.missing.info": "유효한 라이선스가 없습니다.", "license.status.missing.label": "라이선스를 활성화하세요.", + "license.status.unknown.info": "The license status is unknown", + "license.status.unknown.label": "Unknown license", "license.manage": "라이선스 관리", "license.purchased": "구입했습니다.", "license.success": "Kirby와 함께해주셔서 감사합니다.", @@ -456,6 +481,9 @@ "lock.unsaved": "저장되지 않은 항목이 있습니다.", "lock.unsaved.empty": "모든 페이지를 저장했습니다.", + "lock.unsaved.files": "Unsaved files", + "lock.unsaved.pages": "Unsaved pages", + "lock.unsaved.users": "Unsaved accounts", "lock.isLocked": "사용자({email})의 변경 사항이 저장되지 않았습니다.", "lock.unlock": "잠금 해제", "lock.unlock.submit": "사용자({email})의 저장되지 않은 변경 사항을 해제하고 덮어쓰기", @@ -578,6 +606,10 @@ "plugins": "플러그인", "prev": "이전", "preview": "미리 보기", + + "publish": "Publish", + "published": "발행", + "remove": "삭제", "rename": "이름 변경", "renew": "갱신", @@ -597,7 +629,9 @@ "role.nobody.title": "사용자가 없습니다.", "save": "\uc800\uc7a5", + "saved": "Saved", "search": "검색", + "searching": "Searching", "search.min": "{min}자 이상 입력하세요.", "search.all": "모든 결과({count}) 보기", "search.results.none": "해당하는 결과가 없습니다.", @@ -622,6 +656,7 @@ "system.info.copy": "정보 복사", "system.info.copied": "시스템 정보가 복사되었습니다.", + "system.issues.api.methods": "Your server does not support PATCH requests", "system.issues.content": "/content 폴더의 권한을 확인하세요.", "system.issues.eol.kirby": "설치된 Kirby 버전이 만료되었습니다. 더 이상 보안 업데이트를 받을 수 없습니다.", "system.issues.eol.plugin": "설치된 플러그인({plugin}의 지원이 종료되었습니다. 더 이상 보안 업데이트를 받을 수 없습니다.", @@ -646,6 +681,12 @@ "tel": "Phone", "tel.placeholder": "+49123456789", "template": "\ud15c\ud50c\ub9bf", + + "theme": "Theme", + "theme.light": "Lights on", + "theme.dark": "Lights off", + "theme.automatic": "Match system default", + "title": "제목", "today": "오늘", @@ -715,10 +756,13 @@ "users": "사용자", "version": "버전", + "version.changes": "Changed version", + "version.compare": "Compare versions", "version.current": "현재 버전", "version.latest": "최신 버전", "versionInformation": "버전 정보", + "view": "View", "view.account": "계정", "view.installation": "\uc124\uce58", "view.languages": "언어", diff --git a/public/kirby/i18n/translations/lt.json b/public/kirby/i18n/translations/lt.json index 6c14373..b7f9987 100644 --- a/public/kirby/i18n/translations/lt.json +++ b/public/kirby/i18n/translations/lt.json @@ -21,6 +21,8 @@ "copy": "Kopijuoti", "copy.all": "Kopijuoti visus", "copy.success": "{count} nukopijuota!", + "copy.success.multiple": "{count} nukopijuota!", + "copy.url": "Copy URL", "create": "Sukurti", "custom": "Custom", @@ -90,6 +92,12 @@ "error.cache.type.invalid": "Invalid cache type \"{type}\"", + "error.content.lock.delete": "The version is locked and cannot be deleted", + "error.content.lock.move": "The source version is locked and cannot be moved", + "error.content.lock.publish": "This version is already published", + "error.content.lock.replace": "The version is locked and cannot be replaced", + "error.content.lock.update": "The version is locked and cannot be updated", + "error.email.preset.notFound": "El. pašto paruoštukas \"{name}\" nerastas", "error.field.converter.invalid": "Neteisingas konverteris \"{converter}\"", @@ -118,6 +126,7 @@ "error.file.name.missing": "Failo pavadinimas negali būti tuščias", "error.file.notFound": "Failas \"{filename}\" nerastas", "error.file.orientation": "Failo orientacija turi būti \"{orientation}\"", + "error.file.sort.permission": "You are not allowed to change the sorting of \"{filename}\"", "error.file.type.forbidden": "Jūs neturite teisės įkelti {type} tipo failų", "error.file.type.invalid": "Neteisingas failo tipas: {type}", "error.file.undefined": "Failas nerastas", @@ -168,6 +177,7 @@ "error.page.move.ancestor": "Puslapio negalima perkelti į save patį", "error.page.move.directory": "The page directory cannot be moved", "error.page.move.duplicate": "A sub page with the URL appendix \"{slug}\" already exists", + "error.page.move.noSections": "The page \"{parent}\" cannot be a parent of any page because it lacks any pages sections in its blueprint", "error.page.move.notFound": "The moved page could not be found", "error.page.move.permission": "You are not allowed to move \"{slug}\"", "error.page.move.template": "The \"{template}\" template is not accepted as a subpage of \"{parent}\"", @@ -297,6 +307,9 @@ "field.blocks.heading.name": "Antraštė", "field.blocks.heading.text": "Tekstas", "field.blocks.heading.placeholder": "Antraštė ...", + "field.blocks.figure.back.plain": "Plain", + "field.blocks.figure.back.pattern.light": "Pattern (light)", + "field.blocks.figure.back.pattern.dark": "Pattern (dark)", "field.blocks.image.alt": "Alternatyvus tekstas", "field.blocks.image.caption": "Aprašymas", "field.blocks.image.crop": "Kirpti", @@ -334,6 +347,7 @@ "field.blocks.video.url.placeholder": "https://youtube.com/?v=", "field.files.empty": "Pasirinkti", + "field.files.empty.single": "No file selected yet", "field.layout.change": "Change layout", "field.layout.delete": "Pašalinti eilutę", @@ -345,12 +359,14 @@ "field.object.empty": "Dar nėra informacijos", "field.pages.empty": "Dar nėra puslapių", + "field.pages.empty.single": "No page selected yet", "field.structure.delete.confirm": "Ar tikrai norite pašalinti šią eilutę?", "field.structure.delete.confirm.all": "Ar tikrai norite išrtinti visus įrašus?", "field.structure.empty": "Dar nėra įrašų", "field.users.empty": "Dar nėra vartotojų", + "field.users.empty.single": "No user selected yet", "fields.empty": "No fields yet", @@ -369,6 +385,13 @@ "filter": "Filter", + "form.discard": "Discard changes", + "form.discard.confirm": "Do you really want to discard all your changes?", + "form.locked": "This content is disabled for you as it is currently edited by another user", + "form.unsaved": "The current changes have not yet been saved", + "form.preview": "Preview changes", + "form.preview.draft": "Preview draft", + "hide": "Paslėpti", "hour": "Valanda", "hue": "Hue", @@ -444,6 +467,8 @@ "license.status.missing.bubble": "Pasiruošę paleisti naują svetainę?", "license.status.missing.info": "Nėra galiojančios licencijos", "license.status.missing.label": "Prašome aktyvuoti jūsų licenciją", + "license.status.unknown.info": "The license status is unknown", + "license.status.unknown.label": "Unknown license", "license.manage": "Valdyti savo licencijas", "license.purchased": "Nupirkta", "license.success": "Ačiū, kad palaikote Kirby", @@ -456,6 +481,9 @@ "lock.unsaved": "Neišsaugoti pakeitimai", "lock.unsaved.empty": "Nebeliko neišsaugotų pakeitimų", + "lock.unsaved.files": "Unsaved files", + "lock.unsaved.pages": "Unsaved pages", + "lock.unsaved.users": "Unsaved accounts", "lock.isLocked": "Unsaved changes by {email}", "lock.unlock": "Atrakinti", "lock.unlock.submit": "Unlock and overwrite unsaved changes by {email}", @@ -578,6 +606,10 @@ "plugins": "Įskiepai", "prev": "Ankstesnis", "preview": "Peržiūra", + + "publish": "Publish", + "published": "Paskelbti", + "remove": "Pašalinti", "rename": "Pervadinti", "renew": "Atnaujinti", @@ -597,7 +629,9 @@ "role.nobody.title": "Niekas", "save": "Išsaugoti", + "saved": "Saved", "search": "Ieškoti", + "searching": "Searching", "search.min": "Minimalus simbolių kiekis paieškai: {min}", "search.all": "Parodyti visus {count} rezultatus", "search.results.none": "Nėra rezultatų", @@ -622,6 +656,7 @@ "system.info.copy": "Copy info", "system.info.copied": "System info copied", + "system.issues.api.methods": "Your server does not support PATCH requests", "system.issues.content": "The content folder seems to be exposed", "system.issues.eol.kirby": "Your installed Kirby version has reached end-of-life and will not receive further security updates", "system.issues.eol.plugin": "Your installed version of the { plugin } plugin is has reached end-of-life and will not receive further security updates", @@ -646,6 +681,12 @@ "tel": "Phone", "tel.placeholder": "+49123456789", "template": "Puslapio šablonas", + + "theme": "Theme", + "theme.light": "Lights on", + "theme.dark": "Lights off", + "theme.automatic": "Match system default", + "title": "Pavadinimas", "today": "Šiandien", @@ -715,10 +756,13 @@ "users": "Vartotojai", "version": "Versija", + "version.changes": "Changed version", + "version.compare": "Compare versions", "version.current": "Dabartinė versija", "version.latest": "Naujausia versija", "versionInformation": "Versijos informacija", + "view": "View", "view.account": "Jūsų paskyra", "view.installation": "Installation", "view.languages": "Kalbos", diff --git a/public/kirby/i18n/translations/nb.json b/public/kirby/i18n/translations/nb.json index f479dad..ddb2d75 100644 --- a/public/kirby/i18n/translations/nb.json +++ b/public/kirby/i18n/translations/nb.json @@ -21,6 +21,8 @@ "copy": "Kopier", "copy.all": "Kopier alle", "copy.success": "{count} kopiert!", + "copy.success.multiple": "{count} copied!", + "copy.url": "Copy URL", "create": "Opprett", "custom": "Egendefinert", @@ -90,6 +92,12 @@ "error.cache.type.invalid": "Ugyldig type cache \"{type}\"", + "error.content.lock.delete": "The version is locked and cannot be deleted", + "error.content.lock.move": "The source version is locked and cannot be moved", + "error.content.lock.publish": "This version is already published", + "error.content.lock.replace": "The version is locked and cannot be replaced", + "error.content.lock.update": "The version is locked and cannot be updated", + "error.email.preset.notFound": "E-postinnstillingen \"{name}\" ble ikke funnet", "error.field.converter.invalid": "Ugyldig omformer \"{converter}\"", @@ -118,6 +126,7 @@ "error.file.name.missing": "Filnavnet kan ikke være tomt", "error.file.notFound": "Filen \"{filename}\" kan ikke bli funnet", "error.file.orientation": "Bilderetningen må være \"{orientation}\"", + "error.file.sort.permission": "You are not allowed to change the sorting of \"{filename}\"", "error.file.type.forbidden": "Du har ikke lov til å laste opp filer av typen {type}", "error.file.type.invalid": "Ugyldig filtype: {type}", "error.file.undefined": "Finner ikke filen", @@ -168,6 +177,7 @@ "error.page.move.ancestor": "Siden kan ikke flyttes inn i seg selv", "error.page.move.directory": "Sidestrukturen kan ikke flyttes", "error.page.move.duplicate": "En underside med url banen \"{slug}\" finnes allerede", + "error.page.move.noSections": "The page \"{parent}\" cannot be a parent of any page because it lacks any pages sections in its blueprint", "error.page.move.notFound": "Den flyttede siden kan ikke bli funnet", "error.page.move.permission": "You are not allowed to move \"{slug}\"", "error.page.move.template": "\"{template}\" malen er ikke akseptert som underside av \"{parent}\"", @@ -297,6 +307,9 @@ "field.blocks.heading.name": "Overskrift", "field.blocks.heading.text": "Tekst", "field.blocks.heading.placeholder": "Overskrift…", + "field.blocks.figure.back.plain": "Plain", + "field.blocks.figure.back.pattern.light": "Pattern (light)", + "field.blocks.figure.back.pattern.dark": "Pattern (dark)", "field.blocks.image.alt": "Alternativ tekst", "field.blocks.image.caption": "Caption", "field.blocks.image.crop": "Beskjær", @@ -334,6 +347,7 @@ "field.blocks.video.url.placeholder": "https://youtube.com/?v=", "field.files.empty": "Ingen filer har blitt valgt", + "field.files.empty.single": "No file selected yet", "field.layout.change": "Endre layout", "field.layout.delete": "Slett layout", @@ -345,12 +359,14 @@ "field.object.empty": "Ingen informasjon enda", "field.pages.empty": "Ingen side har blitt valgt", + "field.pages.empty.single": "No page selected yet", "field.structure.delete.confirm": "\u00d8nsker du virkelig \u00e5 slette denne oppf\u00f8ringen?", "field.structure.delete.confirm.all": "Vil du virkelig slette alle oppføringer?", "field.structure.empty": "Ingen oppf\u00f8ringer enda", "field.users.empty": "Ingen bruker har blitt valgt", + "field.users.empty.single": "No user selected yet", "fields.empty": "Ingen felt enda", @@ -369,6 +385,13 @@ "filter": "Filter", + "form.discard": "Discard changes", + "form.discard.confirm": "Do you really want to discard all your changes?", + "form.locked": "This content is disabled for you as it is currently edited by another user", + "form.unsaved": "The current changes have not yet been saved", + "form.preview": "Preview changes", + "form.preview.draft": "Preview draft", + "hide": "Skjul", "hour": "Tid", "hue": "Hue", @@ -444,6 +467,8 @@ "license.status.missing.bubble": "Klar til å lansere din nettside?", "license.status.missing.info": "Ingen gyldig lisens", "license.status.missing.label": "Vennligst skriv inn din lisenskode", + "license.status.unknown.info": "The license status is unknown", + "license.status.unknown.label": "Unknown license", "license.manage": "Håndter dine lisenser", "license.purchased": "Kjøpt", "license.success": "Takk for at du støtter Kirby", @@ -456,6 +481,9 @@ "lock.unsaved": "Ulagrede endringer", "lock.unsaved.empty": "Det er ingen flere ulagrede endringer", + "lock.unsaved.files": "Unsaved files", + "lock.unsaved.pages": "Unsaved pages", + "lock.unsaved.users": "Unsaved accounts", "lock.isLocked": "Ulagrede endringer av {email}", "lock.unlock": "Lås opp", "lock.unlock.submit": "Lås opp og overskriv ulagrede endringer fra {email}", @@ -578,6 +606,10 @@ "plugins": "Plugins", "prev": "Forrige", "preview": "Forhåndsvisning", + + "publish": "Publish", + "published": "Publisert", + "remove": "Fjern", "rename": "Endre navn", "renew": "Fornye", @@ -597,7 +629,9 @@ "role.nobody.title": "Ingen", "save": "Lagre", + "saved": "Saved", "search": "Søk", + "searching": "Searching", "search.min": "Skriv inn {min} tegn for å søke", "search.all": "Vis alle {count} resultat", "search.results.none": "Ingen resultater", @@ -622,6 +656,7 @@ "system.info.copy": "Copy info", "system.info.copied": "System info copied", + "system.issues.api.methods": "Your server does not support PATCH requests", "system.issues.content": "content-mappen ser ut til å være eksponert", "system.issues.eol.kirby": "Din installerte Kirby versjon har nådd sitt end-of-life, og vil ikke lenger motta sikkerhetsoppdateringer", "system.issues.eol.plugin": "Din installerte plugin { plugin } har nådd sitt end-of-life og vil ikke lenger motta sikkerhetsoppdateringer", @@ -646,6 +681,12 @@ "tel": "Telefon", "tel.placeholder": "+49123456789", "template": "Mal", + + "theme": "Theme", + "theme.light": "Lights on", + "theme.dark": "Lights off", + "theme.automatic": "Match system default", + "title": "Tittel", "today": "I dag", @@ -715,10 +756,13 @@ "users": "Brukere", "version": "Kirby versjon", + "version.changes": "Changed version", + "version.compare": "Compare versions", "version.current": "Nåværende versjon", "version.latest": "Siste versjon", "versionInformation": "Versjonsinformasjon", + "view": "View", "view.account": "Din konto", "view.installation": "Installasjon", "view.languages": "Språk", diff --git a/public/kirby/i18n/translations/nl.json b/public/kirby/i18n/translations/nl.json index 37fde74..0361968 100644 --- a/public/kirby/i18n/translations/nl.json +++ b/public/kirby/i18n/translations/nl.json @@ -21,6 +21,8 @@ "copy": "Kopiëren", "copy.all": "Kopieer alles", "copy.success": "{count} gekopieerd!", + "copy.success.multiple": "{count} gekopieerd!", + "copy.url": "Copy URL", "create": "Aanmaken", "custom": "Custom", @@ -90,6 +92,12 @@ "error.cache.type.invalid": "Ongeldig cache type \"{type}\"", + "error.content.lock.delete": "The version is locked and cannot be deleted", + "error.content.lock.move": "The source version is locked and cannot be moved", + "error.content.lock.publish": "This version is already published", + "error.content.lock.replace": "The version is locked and cannot be replaced", + "error.content.lock.update": "The version is locked and cannot be updated", + "error.email.preset.notFound": "De e-mailvoorinstelling \"{name}\" kan niet worden gevonden", "error.field.converter.invalid": "Ongeldige converter \"{converter}\"", @@ -118,6 +126,7 @@ "error.file.name.missing": "De bestandsnaam mag niet leeg zijn", "error.file.notFound": "Het bestand kan niet worden gevonden", "error.file.orientation": "De oriëntatie van de afbeelding moet \"{orientation}\" zijn", + "error.file.sort.permission": "You are not allowed to change the sorting of \"{filename}\"", "error.file.type.forbidden": "Je hebt geen rechten om {type} bestanden up te loaden", "error.file.type.invalid": "Ongeldig bestands type: {type}", "error.file.undefined": "Het bestand kan niet worden gevonden", @@ -168,6 +177,7 @@ "error.page.move.ancestor": "De pagina kan niet in zichzelf worden verplaatst", "error.page.move.directory": "De page map kan niet worden verplaatst", "error.page.move.duplicate": "Er bestaat al een subpagina met de URL-appendix \"{slug}\"", + "error.page.move.noSections": "The page \"{parent}\" cannot be a parent of any page because it lacks any pages sections in its blueprint", "error.page.move.notFound": "De verplaatste pagina kan niet gevonden worden", "error.page.move.permission": "Je hebt geen rechten om \"{slug}\" te verplaatsen", "error.page.move.template": "De \"{template}\" template is niet toegestaan als een subpagina van \"{parent}\"", @@ -297,6 +307,9 @@ "field.blocks.heading.name": "Koptekst", "field.blocks.heading.text": "Tekst", "field.blocks.heading.placeholder": "Koptekst ...", + "field.blocks.figure.back.plain": "Plain", + "field.blocks.figure.back.pattern.light": "Pattern (light)", + "field.blocks.figure.back.pattern.dark": "Pattern (dark)", "field.blocks.image.alt": "Alternatieve tekst", "field.blocks.image.caption": "Beschrijving", "field.blocks.image.crop": "Uitsnede", @@ -334,6 +347,7 @@ "field.blocks.video.url.placeholder": "https://youtube.com/?v=", "field.files.empty": "Nog geen bestanden geselecteerd", + "field.files.empty.single": "No file selected yet", "field.layout.change": "Verander layout", "field.layout.delete": "Verwijder indeling", @@ -345,12 +359,14 @@ "field.object.empty": "Nog geen informatie", "field.pages.empty": "Nog geen pagina's geselecteerd", + "field.pages.empty.single": "No page selected yet", "field.structure.delete.confirm": "Wil je deze rij verwijderen?", "field.structure.delete.confirm.all": "Weet je zeker dat je alle items wil verwijderen?", "field.structure.empty": "Nog geen items", "field.users.empty": "Nog geen gebruikers geselecteerd", + "field.users.empty.single": "No user selected yet", "fields.empty": "Nog geen velden", @@ -369,6 +385,13 @@ "filter": "Filter", + "form.discard": "Discard changes", + "form.discard.confirm": "Do you really want to discard all your changes?", + "form.locked": "This content is disabled for you as it is currently edited by another user", + "form.unsaved": "The current changes have not yet been saved", + "form.preview": "Preview changes", + "form.preview.draft": "Preview draft", + "hide": "Verberg", "hour": "Uur", "hue": "Hue", @@ -444,6 +467,8 @@ "license.status.missing.bubble": "Klaar om je website te lanceren?", "license.status.missing.info": "Geen geldige licentie", "license.status.missing.label": "Activeer je licentie", + "license.status.unknown.info": "The license status is unknown", + "license.status.unknown.label": "Unknown license", "license.manage": "Beheer je licenties", "license.purchased": "Gekocht", "license.success": "Bedankt dat je Kirby ondersteunt", @@ -456,6 +481,9 @@ "lock.unsaved": "Niet opgeslagen wijzigingen", "lock.unsaved.empty": "Er zijn geen niet opgeslagen wijzigingen meer", + "lock.unsaved.files": "Unsaved files", + "lock.unsaved.pages": "Unsaved pages", + "lock.unsaved.users": "Unsaved accounts", "lock.isLocked": "Niet opgeslagen wijzigingen door {email}", "lock.unlock": "Ontgrendelen", "lock.unlock.submit": "Niet-opgeslagen wijzigingen ontgrendelen en overschrijven met {email}", @@ -578,6 +606,10 @@ "plugins": "Plugins", "prev": "Vorige", "preview": "Voorbeeld", + + "publish": "Publish", + "published": "Gepubliceerd", + "remove": "Verwijder", "rename": "Hernoem", "renew": "Verlengen", @@ -597,7 +629,9 @@ "role.nobody.title": "Niemand", "save": "Opslaan", + "saved": "Saved", "search": "Zoeken", + "searching": "Searching", "search.min": "Voer {min} tekens in om te zoeken", "search.all": "Laat alle {count} resultaten zien", "search.results.none": "Geen resultaten", @@ -622,6 +656,7 @@ "system.info.copy": "Kopieer informatie", "system.info.copied": "Systeem informatie gekopieerd", + "system.issues.api.methods": "Your server does not support PATCH requests", "system.issues.content": "De content map lijkt zichtbaar te zijn", "system.issues.eol.kirby": "De geïnstalleerde Kirby versie is niet meer actueel en zal geen verdere beveiligingsupdates meer ontvangen.", "system.issues.eol.plugin": "De geïnstalleerde versie van plugin { plugin } is niet meer actueel en zal geen verdere beveiligingsupdates meer ontvangen.", @@ -646,6 +681,12 @@ "tel": "Telefoon", "tel.placeholder": "+49123456789", "template": "Template", + + "theme": "Theme", + "theme.light": "Lights on", + "theme.dark": "Lights off", + "theme.automatic": "Match system default", + "title": "Titel", "today": "Vandaag", @@ -715,10 +756,13 @@ "users": "Gebruikers", "version": "Kirby-versie", + "version.changes": "Changed version", + "version.compare": "Compare versions", "version.current": "Huidige versie", "version.latest": "Laatste versie", "versionInformation": "Versie informatie", + "view": "View", "view.account": "Jouw account", "view.installation": "Installatie", "view.languages": "Talen", diff --git a/public/kirby/i18n/translations/pl.json b/public/kirby/i18n/translations/pl.json index 26269a4..c4c8b9a 100644 --- a/public/kirby/i18n/translations/pl.json +++ b/public/kirby/i18n/translations/pl.json @@ -21,6 +21,8 @@ "copy": "Kopiuj", "copy.all": "Skopiuj wszystko", "copy.success": "{count} skopiowanych!", + "copy.success.multiple": "{count} skopiowanych!", + "copy.url": "Copy URL", "create": "Utwórz", "custom": "Niestandardowe", @@ -90,6 +92,12 @@ "error.cache.type.invalid": "Nieprawidłowy typ pamięci podręcznej „{type}”", + "error.content.lock.delete": "The version is locked and cannot be deleted", + "error.content.lock.move": "The source version is locked and cannot be moved", + "error.content.lock.publish": "This version is already published", + "error.content.lock.replace": "The version is locked and cannot be replaced", + "error.content.lock.update": "The version is locked and cannot be updated", + "error.email.preset.notFound": "Nie udało się załadować wzorca wiadomości e-mail \"{name}\"", "error.field.converter.invalid": "Nieprawidłowy konwerter \"{converter}\"", @@ -118,6 +126,7 @@ "error.file.name.missing": "Nazwa pliku nie może być pusta", "error.file.notFound": "Nie można znaleźć pliku \"{filename}\"", "error.file.orientation": "Orientacja obrazka musi być \"{orientation}\"", + "error.file.sort.permission": "You are not allowed to change the sorting of \"{filename}\"", "error.file.type.forbidden": "Nie możesz przesyłać plików {type}", "error.file.type.invalid": "Nieprawidłowy typ pliku: {type}", "error.file.undefined": "Nie można znaleźć pliku", @@ -168,6 +177,7 @@ "error.page.move.ancestor": "Strony nie można przenieść do siebie samej", "error.page.move.directory": "Nie można przenieść katalogu strony", "error.page.move.duplicate": "Istnieje już podstrona z końcówką URL \"{slug}\"", + "error.page.move.noSections": "The page \"{parent}\" cannot be a parent of any page because it lacks any pages sections in its blueprint", "error.page.move.notFound": "Przeniesiona strona nie została odnaleziona", "error.page.move.permission": "Nie masz uprawnień, by przenieść \"{slug}\"", "error.page.move.template": "Szablon \"{template}\" nie jest akceptowany jako podstrona \"{parent}\"", @@ -297,6 +307,9 @@ "field.blocks.heading.name": "Nagłówek", "field.blocks.heading.text": "Tekst", "field.blocks.heading.placeholder": "Nagłówek …", + "field.blocks.figure.back.plain": "Plain", + "field.blocks.figure.back.pattern.light": "Pattern (light)", + "field.blocks.figure.back.pattern.dark": "Pattern (dark)", "field.blocks.image.alt": "Tekst alternatywny", "field.blocks.image.caption": "Podpis", "field.blocks.image.crop": "Przytnij", @@ -334,6 +347,7 @@ "field.blocks.video.url.placeholder": "https://youtube.com/?v=", "field.files.empty": "Nie wybrano jeszcze żadnych plików", + "field.files.empty.single": "No file selected yet", "field.layout.change": "Zmień układ", "field.layout.delete": "Usuń układ", @@ -345,12 +359,14 @@ "field.object.empty": "Brak informacji", "field.pages.empty": "Nie wybrano jeszcze żadnych stron", + "field.pages.empty.single": "No page selected yet", "field.structure.delete.confirm": "Czy na pewno chcesz usunąć ten wiersz?", "field.structure.delete.confirm.all": "Czy na pewno chcesz usunąć wszystkie wpisy?", "field.structure.empty": "Nie ma jeszcze \u017cadnych wpis\u00f3w.", "field.users.empty": "Nie wybrano jeszcze żadnych użytkowników", + "field.users.empty.single": "No user selected yet", "fields.empty": "Nie ma jeszcze żadnych pól", @@ -369,6 +385,13 @@ "filter": "Filtr", + "form.discard": "Discard changes", + "form.discard.confirm": "Do you really want to discard all your changes?", + "form.locked": "This content is disabled for you as it is currently edited by another user", + "form.unsaved": "The current changes have not yet been saved", + "form.preview": "Preview changes", + "form.preview.draft": "Preview draft", + "hide": "Ukryj", "hour": "Godzina", "hue": "Odcień", @@ -444,6 +467,8 @@ "license.status.missing.bubble": "Gotowy/-a do uruchomienia strony?", "license.status.missing.info": "Brak ważnej licencji", "license.status.missing.label": "Aktywuj swoją licencję", + "license.status.unknown.info": "The license status is unknown", + "license.status.unknown.label": "Unknown license", "license.manage": "Zarządzaj swoimi licencjami", "license.purchased": "Zakupiona", "license.success": "Dziękujemy za wspieranie Kirby", @@ -456,6 +481,9 @@ "lock.unsaved": "Niezapisane zmiany", "lock.unsaved.empty": "Nie ma już żadnych niezapisanych zmian", + "lock.unsaved.files": "Unsaved files", + "lock.unsaved.pages": "Unsaved pages", + "lock.unsaved.users": "Unsaved accounts", "lock.isLocked": "Niezapisane zmiany autorstwa {email}", "lock.unlock": "Odblokuj", "lock.unlock.submit": "Odblokuj i nadpisz niezapisane zmiany autorstwa {email}", @@ -578,6 +606,10 @@ "plugins": "Wtyczki", "prev": "Poprzednie", "preview": "Podgląd", + + "publish": "Publish", + "published": "Opublikowane", + "remove": "Usuń", "rename": "Zmień nazwę", "renew": "Odnów", @@ -597,7 +629,9 @@ "role.nobody.title": "Nikt", "save": "Zapisz", + "saved": "Saved", "search": "Szukaj", + "searching": "Searching", "search.min": "Aby wyszukać, wprowadź co najmniej {min} znaków", "search.all": "Pokaż wszystkie {count} wyniki/-ów", "search.results.none": "Brak wyników", @@ -622,6 +656,7 @@ "system.info.copy": "Copy info", "system.info.copied": "System info copied", + "system.issues.api.methods": "Your server does not support PATCH requests", "system.issues.content": "Zdaje się, że folder „content” jest wystawiony na publiczny dostęp", "system.issues.eol.kirby": "Twoja zainstalowana wersja Kirby osiągnęła koniec okresu wsparcia i nie będzie otrzymywać dalszych aktualizacji zabezpieczeń", "system.issues.eol.plugin": "Twoja zainstalowana wersja wtyczki { plugin } osiągnęła koniec okresu wsparcia i nie będzie otrzymywać dalszych aktualizacji zabezpieczeń", @@ -646,6 +681,12 @@ "tel": "Telefon", "tel.placeholder": "+48123456789", "template": "Szablon", + + "theme": "Theme", + "theme.light": "Lights on", + "theme.dark": "Lights off", + "theme.automatic": "Match system default", + "title": "Tytuł", "today": "Dzisiaj", @@ -715,10 +756,13 @@ "users": "Użytkownicy", "version": "Wersja", + "version.changes": "Changed version", + "version.compare": "Compare versions", "version.current": "Obecna wersja", "version.latest": "Ostatnia wersja", "versionInformation": "Informacje o wersji", + "view": "View", "view.account": "Twoje konto", "view.installation": "Instalacja", "view.languages": "Języki", diff --git a/public/kirby/i18n/translations/pt_BR.json b/public/kirby/i18n/translations/pt_BR.json index 6c018ca..7961f36 100644 --- a/public/kirby/i18n/translations/pt_BR.json +++ b/public/kirby/i18n/translations/pt_BR.json @@ -21,6 +21,8 @@ "copy": "Copiar", "copy.all": "Copiar todos", "copy.success": "{count} copiados!", + "copy.success.multiple": "{count} copiados!", + "copy.url": "Copiar URL", "create": "Criar", "custom": "Personalizado", @@ -90,6 +92,12 @@ "error.cache.type.invalid": "Tipo de cache \"{type}\" inválido", + "error.content.lock.delete": "A versão está bloqueada e não pode ser eliminada", + "error.content.lock.move": "A versão está bloqueada e não pode ser movida", + "error.content.lock.publish": "Esta versão já se encontra publicada", + "error.content.lock.replace": "A versão está bloqueada e não pode ser substituída", + "error.content.lock.update": "A versão está bloqueada e não pode ser atualizada", + "error.email.preset.notFound": "Pré-configuração de email \"{name}\" não foi encontrada", "error.field.converter.invalid": "Conversor \"{converter}\" inválido", @@ -118,6 +126,7 @@ "error.file.name.missing": "O nome do arquivo não pode ficar em branco", "error.file.notFound": "Arquivo \"{filename}\" não encontrado", "error.file.orientation": "A orientação da imagem deve ser “{orientation}”", + "error.file.sort.permission": "Não tem permissão para alterar a ordem de \"{filename}\"", "error.file.type.forbidden": "Você não tem permissão para enviar arquivos {type}", "error.file.type.invalid": "Tipo inválido de arquivo: {type}", "error.file.undefined": "Arquivo n\u00e3o encontrado", @@ -168,6 +177,7 @@ "error.page.move.ancestor": "A página não pode ser movida para dentro dela mesma", "error.page.move.directory": "A pasta da página não pode ser movida", "error.page.move.duplicate": "Uma subpágina com o segmento de URL \"{slug}\" já existe", + "error.page.move.noSections": "A página \"{parent}\" não pode ser pai de nenhuma página porque não tem secções de páginas na sua blueprint", "error.page.move.notFound": "A página movida não foi encontrada", "error.page.move.permission": "Não tem permissão para mover \"{slug}\"", "error.page.move.template": "O template \"{template}\" não é aceite como subpágina de \"{parent}\"", @@ -297,6 +307,9 @@ "field.blocks.heading.name": "Título ", "field.blocks.heading.text": "Texto", "field.blocks.heading.placeholder": "Título …", + "field.blocks.figure.back.plain": "Simples", + "field.blocks.figure.back.pattern.light": "Padrão (claro)", + "field.blocks.figure.back.pattern.dark": "Padrão (escuro)", "field.blocks.image.alt": "Texto alternativo", "field.blocks.image.caption": "Legenda", "field.blocks.image.crop": "Cortar", @@ -334,6 +347,7 @@ "field.blocks.video.url.placeholder": "https://youtube.com/?v=", "field.files.empty": "Nenhum arquivo selecionado", + "field.files.empty.single": "Nenhum ficheiro selecionado ainda", "field.layout.change": "Alterar layout", "field.layout.delete": "Deletar layout", @@ -345,12 +359,14 @@ "field.object.empty": "Nenhuma informação ainda", "field.pages.empty": "Nenhuma página selecionada", + "field.pages.empty.single": "Nenhuma página selecionada ainda", "field.structure.delete.confirm": "Deseja realmente deletar esta linha?", "field.structure.delete.confirm.all": "Tem a certeza que pretende eliminar todos os registos?", "field.structure.empty": "Nenhum registro", "field.users.empty": "Nenhum usuário selecionado", + "field.users.empty.single": "Nenhum utilizador selecionado ainda", "fields.empty": "Nenhum campo ainda", @@ -369,6 +385,13 @@ "filter": "Filtro", + "form.discard": "Reverter alterações", + "form.discard.confirm": "Tem a certeza que pretende reverter todas as suas alterações?", + "form.locked": "Este conteúdo está desativado para si porque encontra-se a ser editado por outro utilizador", + "form.unsaved": "As alterações atuais ainda não foram guardadas", + "form.preview": "Pré-visualizar alterações", + "form.preview.draft": "Pré-visualizar rascunho", + "hide": "Ocultar", "hour": "Hora", "hue": "Tonalidade", @@ -444,6 +467,8 @@ "license.status.missing.bubble": "Pronto para lançar o seu site?", "license.status.missing.info": "Nenhuma licença válida", "license.status.missing.label": "Por favor, ative a sua licença", + "license.status.unknown.info": "O estado da licença é desconhecido", + "license.status.unknown.label": "Licença desconhecida", "license.manage": "Gerir as suas licenças", "license.purchased": "Compradas", "license.success": "Obrigado por apoiar o Kirby", @@ -456,6 +481,9 @@ "lock.unsaved": "Mudanças não salvas", "lock.unsaved.empty": "Não há mais mudanças não salvas", + "lock.unsaved.files": "Ficheiros não guardados", + "lock.unsaved.pages": "Páginas não guardadas", + "lock.unsaved.users": "Contas não guardadas", "lock.isLocked": "Alterações não guardadas de {email}", "lock.unlock": "Destrancar", "lock.unlock.submit": "Desbloqueie e substitua alterações não guardadas de {email}", @@ -578,6 +606,10 @@ "plugins": "Plugins", "prev": "Anterior", "preview": "Visualizar", + + "publish": "Publicar", + "published": "Publicadas", + "remove": "Remover", "rename": "Renomear", "renew": "Renovar", @@ -597,7 +629,9 @@ "role.nobody.title": "Ninguém", "save": "Salvar", + "saved": "Guardado", "search": "Buscar", + "searching": "À procura", "search.min": "Digite {min} caracteres para fazer uma busca", "search.all": "Mostrar todos os {count} resultados", "search.results.none": "Nenhum resultado", @@ -622,6 +656,7 @@ "system.info.copy": "Copiar informação", "system.info.copied": "Informação de sistema copiada", + "system.issues.api.methods": "O servidor não suporta pedidos PATCH", "system.issues.content": "A pasta \"content\" parece não estar protegida", "system.issues.eol.kirby": "A versão instalada do Kirby chegou ao fim da sua vida útil e não irá receber mais atualizações de segurança", "system.issues.eol.plugin": "A versão instalada do plugin {plugin} chegou ao fim da sua vida útil e não irá receber mais atualizações de segurança", @@ -646,6 +681,12 @@ "tel": "Telefone", "tel.placeholder": "+351 123456789", "template": "Tema", + + "theme": "Tema", + "theme.light": "Luzes ligadas", + "theme.dark": "Luzes desligadas", + "theme.automatic": "Ajustar ao tema do sistema", + "title": "Título", "today": "Hoje", @@ -715,10 +756,13 @@ "users": "Usuários", "version": "Vers\u00e3o do Kirby", + "version.changes": "Versão alterada", + "version.compare": "Comparar versões", "version.current": "Versão atual", "version.latest": "Versão mais recente", "versionInformation": "Informação da versão", + "view": "Visualizar", "view.account": "Sua conta", "view.installation": "Instala\u00e7\u00e3o", "view.languages": "Idiomas", diff --git a/public/kirby/i18n/translations/pt_PT.json b/public/kirby/i18n/translations/pt_PT.json index 3da7c47..f225c57 100644 --- a/public/kirby/i18n/translations/pt_PT.json +++ b/public/kirby/i18n/translations/pt_PT.json @@ -21,6 +21,8 @@ "copy": "Copiar", "copy.all": "Copiar todos", "copy.success": "{count} copiados!", + "copy.success.multiple": "{count} copiados!", + "copy.url": "Copiar URL", "create": "Criar", "custom": "Personalizado", @@ -90,6 +92,12 @@ "error.cache.type.invalid": "Tipo de cache \"{type}\" inválido", + "error.content.lock.delete": "A versão está bloqueada e não pode ser eliminada", + "error.content.lock.move": "A versão está bloqueada e não pode ser movida", + "error.content.lock.publish": "Esta versão já se encontra publicada", + "error.content.lock.replace": "A versão está bloqueada e não pode ser substituída", + "error.content.lock.update": "A versão está bloqueada e não pode ser atualizada", + "error.email.preset.notFound": "A predefinição de email \"{name}\" não foi encontrada", "error.field.converter.invalid": "Conversor \"{converter}\" inválido", @@ -118,6 +126,7 @@ "error.file.name.missing": "O nome do ficheiro não pode ficar em branco", "error.file.notFound": "Não foi possível encontrar o ficheiro \"{filename}\"", "error.file.orientation": "A orientação da imagem deve ser \"{orientation}\"", + "error.file.sort.permission": "Não tem permissão para alterar a ordem de \"{filename}\"", "error.file.type.forbidden": "Não tem permissões para enviar ficheiros {type}", "error.file.type.invalid": "Tipo de ficheiro inválido: {type}", "error.file.undefined": "Não foi possível encontrar o ficheiro", @@ -168,6 +177,7 @@ "error.page.move.ancestor": "A página não pode ser movida para dentro dela mesma", "error.page.move.directory": "A pasta da página não pode ser movida", "error.page.move.duplicate": "Já existe uma subpágina com o URL \"{slug}\"", + "error.page.move.noSections": "A página \"{parent}\" não pode ser pai de nenhuma página porque não tem secções de páginas na sua blueprint", "error.page.move.notFound": "A página movida não foi encontrada", "error.page.move.permission": "Não tem permissões para mover \"{slug}\"", "error.page.move.template": "O template \"{template}\" não é aceite como subpágina de \"{parent}\"", @@ -297,6 +307,9 @@ "field.blocks.heading.name": "Título ", "field.blocks.heading.text": "Texto", "field.blocks.heading.placeholder": "Título …", + "field.blocks.figure.back.plain": "Simples", + "field.blocks.figure.back.pattern.light": "Padrão (claro)", + "field.blocks.figure.back.pattern.dark": "Padrão (escuro)", "field.blocks.image.alt": "Texto alternativo", "field.blocks.image.caption": "Legenda", "field.blocks.image.crop": "Cortar", @@ -334,6 +347,7 @@ "field.blocks.video.url.placeholder": "https://youtube.com/?v=", "field.files.empty": "Nenhum ficheiro selecionado ainda", + "field.files.empty.single": "Nenhum ficheiro selecionado ainda", "field.layout.change": "Alterar layout", "field.layout.delete": "Eliminar layout", @@ -345,12 +359,14 @@ "field.object.empty": "Nenhuma informação ainda", "field.pages.empty": "Nenhuma página selecionada ainda", + "field.pages.empty.single": "Nenhuma página selecionada ainda", "field.structure.delete.confirm": "Tem a certeza que pretende eliminar esta linha?", "field.structure.delete.confirm.all": "Tem a certeza que pretende eliminar todos os registos?", "field.structure.empty": "Nenhum registo ainda", "field.users.empty": "Nenhum utilizador selecionado ainda", + "field.users.empty.single": "Nenhum utilizador selecionado ainda", "fields.empty": "Nenhum campo ainda", @@ -369,6 +385,13 @@ "filter": "Filtro", + "form.discard": "Reverter alterações", + "form.discard.confirm": "Tem a certeza que pretende reverter todas as suas alterações?", + "form.locked": "Este conteúdo está desativado para si porque encontra-se a ser editado por outro utilizador", + "form.unsaved": "As alterações atuais ainda não foram guardadas", + "form.preview": "Pré-visualizar alterações", + "form.preview.draft": "Pré-visualizar rascunho", + "hide": "Ocultar", "hour": "Hora", "hue": "Tonalidade", @@ -444,6 +467,8 @@ "license.status.missing.bubble": "Pronto para lançar o seu site?", "license.status.missing.info": "Sem licença válida", "license.status.missing.label": "Por favor, ative a sua licença", + "license.status.unknown.info": "O estado da licença é desconhecido", + "license.status.unknown.label": "Licença desconhecida", "license.manage": "Gerir as suas licenças", "license.purchased": "Comprada", "license.success": "Obrigado por apoiar o Kirby", @@ -456,6 +481,9 @@ "lock.unsaved": "Alterações não guardadas", "lock.unsaved.empty": "Não existem mais alterações não guardadas", + "lock.unsaved.files": "Ficheiros não guardados", + "lock.unsaved.pages": "Páginas não guardadas", + "lock.unsaved.users": "Contas não guardadas", "lock.isLocked": "Alterações não guardadas de {email}", "lock.unlock": "Desbloquear", "lock.unlock.submit": "Desbloqueie e substitua alterações não guardadas de {email}", @@ -578,6 +606,10 @@ "plugins": "Plugins", "prev": "Anterior", "preview": "Pré-visualizar", + + "publish": "Publicar", + "published": "Publicadas", + "remove": "Remover", "rename": "Alterar nome", "renew": "Renovar", @@ -597,7 +629,9 @@ "role.nobody.title": "Ninguém", "save": "Guardar", + "saved": "Guardado", "search": "Pesquisar", + "searching": "À procura", "search.min": "Insira {min} caracteres para pesquisar", "search.all": "Mostrar todos os {count} resultados", "search.results.none": "Sem resultados", @@ -622,6 +656,7 @@ "system.info.copy": "Copiar informação", "system.info.copied": "Informação de sistema copiada", + "system.issues.api.methods": "O servidor não suporta pedidos PATCH", "system.issues.content": "A pasta content parece não estar protegida", "system.issues.eol.kirby": "A versão instalada do Kirby chegou ao fim da sua vida útil e não irá receber mais atualizações de segurança", "system.issues.eol.plugin": "A versão instalada do plugin { plugin } chegou ao fim da sua vida útil e não irá receber mais atualizações de segurança", @@ -646,6 +681,12 @@ "tel": "Telefone", "tel.placeholder": "+351912345678", "template": "Template", + + "theme": "Tema", + "theme.light": "Luzes ligadas", + "theme.dark": "Luzes desligadas", + "theme.automatic": "Ajustar ao tema do sistema", + "title": "Título", "today": "Hoje", @@ -715,10 +756,13 @@ "users": "Utilizadores", "version": "Versão", + "version.changes": "Versão alterada", + "version.compare": "Comparar versões", "version.current": "Versão atual", "version.latest": "Versão mais recente", "versionInformation": "Informação da versão", + "view": "Visualizar", "view.account": "A sua conta", "view.installation": "Instala\u00e7\u00e3o", "view.languages": "Idiomas", diff --git a/public/kirby/i18n/translations/ro.json b/public/kirby/i18n/translations/ro.json index 17a022d..cc40a26 100644 --- a/public/kirby/i18n/translations/ro.json +++ b/public/kirby/i18n/translations/ro.json @@ -21,6 +21,8 @@ "copy": "Copiază", "copy.all": "Copiază toate", "copy.success": "Copiat {count}!", + "copy.success.multiple": "Copiat {count}!", + "copy.url": "Copy URL", "create": "Creează", "custom": "Personalizat", @@ -90,6 +92,12 @@ "error.cache.type.invalid": "Tipul de cache \"{type}\" este nevalid", + "error.content.lock.delete": "The version is locked and cannot be deleted", + "error.content.lock.move": "The source version is locked and cannot be moved", + "error.content.lock.publish": "This version is already published", + "error.content.lock.replace": "The version is locked and cannot be replaced", + "error.content.lock.update": "The version is locked and cannot be updated", + "error.email.preset.notFound": "Preset-ul de e-mail \"{name}\" nu a fost găsit", "error.field.converter.invalid": "Convertorul \"{converter}\" nu este valid", @@ -118,6 +126,7 @@ "error.file.name.missing": "Numele fișierului nu poate fi gol", "error.file.notFound": "Fișierul \"{filename}\" nu a fost găsit", "error.file.orientation": "Orientarea imaginii trebuie să fie \"{orientation}\"", + "error.file.sort.permission": "You are not allowed to change the sorting of \"{filename}\"", "error.file.type.forbidden": "Nu ai voie să încarci fișiere {type}", "error.file.type.invalid": "Tip nevalid de fișier: {type}", "error.file.undefined": "Fișierul nu a fost găsit", @@ -168,6 +177,7 @@ "error.page.move.ancestor": "Pagina nu poate fi mutată în ea însăși", "error.page.move.directory": "Directorul de pagini nu poate fi mutat", "error.page.move.duplicate": "Există deja o sub-pagină cu apendicele URL \"{slug}\"", + "error.page.move.noSections": "The page \"{parent}\" cannot be a parent of any page because it lacks any pages sections in its blueprint", "error.page.move.notFound": "Pagina mutată nu a fost găsită", "error.page.move.permission": "Nu ai voie să muți \"{slug}\"", "error.page.move.template": "Șablonul \"{template}\" nu este acceptat ca sub-pagină a \"{parent}\"", @@ -297,6 +307,9 @@ "field.blocks.heading.name": "Subtitlu", "field.blocks.heading.text": "Text", "field.blocks.heading.placeholder": "Subtitlu …", + "field.blocks.figure.back.plain": "Plain", + "field.blocks.figure.back.pattern.light": "Pattern (light)", + "field.blocks.figure.back.pattern.dark": "Pattern (dark)", "field.blocks.image.alt": "Text alternativ", "field.blocks.image.caption": "Etichetă", "field.blocks.image.crop": "Decupaj", @@ -334,6 +347,7 @@ "field.blocks.video.url.placeholder": "https://youtube.com/?v=", "field.files.empty": "Niciun fișier selectat deocamdată", + "field.files.empty.single": "No file selected yet", "field.layout.change": "Schimbă aranjament", "field.layout.delete": "Șterge aranjamentul", @@ -345,12 +359,14 @@ "field.object.empty": "Nicio informație deocamdată", "field.pages.empty": "Nicio pagină aleasă deocamdată", + "field.pages.empty.single": "No page selected yet", "field.structure.delete.confirm": "Chiar vrei să ștergi acest rând?", "field.structure.delete.confirm.all": "Chiar vrei să ștergi toate înregistrările?", "field.structure.empty": "Nicio înregistrare deocamdată", "field.users.empty": "Niciun utilizator ales deocamdată", + "field.users.empty.single": "No user selected yet", "fields.empty": "Niciun câmp deocamdată", @@ -369,6 +385,13 @@ "filter": "Filtru", + "form.discard": "Discard changes", + "form.discard.confirm": "Do you really want to discard all your changes?", + "form.locked": "This content is disabled for you as it is currently edited by another user", + "form.unsaved": "The current changes have not yet been saved", + "form.preview": "Preview changes", + "form.preview.draft": "Preview draft", + "hide": "Ascunde", "hour": "Ora", "hue": "Nuanță", @@ -444,6 +467,8 @@ "license.status.missing.bubble": "Sunteți pregătit să lansați site-ul?", "license.status.missing.info": "Licență nevalidă", "license.status.missing.label": "Vă rugăm să activați licența", + "license.status.unknown.info": "The license status is unknown", + "license.status.unknown.label": "Unknown license", "license.manage": "Gestionează-ți licențele", "license.purchased": "Achiziționat", "license.success": "Mulțumim că susții Kirby", @@ -456,6 +481,9 @@ "lock.unsaved": "Schimbări nesalvate", "lock.unsaved.empty": "Nu mai există nicio schimbare nesalvată", + "lock.unsaved.files": "Unsaved files", + "lock.unsaved.pages": "Unsaved pages", + "lock.unsaved.users": "Unsaved accounts", "lock.isLocked": "Schimbări nesalvate de {email}", "lock.unlock": "Deblochează", "lock.unlock.submit": "Deblochează și suprascrie schimbările nesalvate de {email}", @@ -578,6 +606,10 @@ "plugins": "Plugin-uri", "prev": "Precedenta", "preview": "Previzualizează", + + "publish": "Publish", + "published": "Publicate", + "remove": "Înlătură", "rename": "Redenumește", "renew": "Reînnoiți", @@ -597,7 +629,9 @@ "role.nobody.title": "Nimeni", "save": "Salveaz\u0103", + "saved": "Saved", "search": "Caută", + "searching": "Searching", "search.min": "Introdu {min} caractere pentru a căuta", "search.all": "Afișați toate {count} rezultatele", "search.results.none": "Niciun rezultat", @@ -622,6 +656,7 @@ "system.info.copy": "Copy info", "system.info.copied": "System info copied", + "system.issues.api.methods": "Your server does not support PATCH requests", "system.issues.content": "Directorul de conținut pare să fie expus", "system.issues.eol.kirby": "Versiunea instalată de Kirby a ajuns la sfârșitul vieții utile și nu va mai primi actualizări de securitate.", "system.issues.eol.plugin": "Versiunea instalată a plugin-ului { plugin } a ajuns la sfârșitul vieții utile și nu va mai primi actualizări de securitate.", @@ -646,6 +681,12 @@ "tel": "Telefon", "tel.placeholder": "+40123456789", "template": "Șablon", + + "theme": "Theme", + "theme.light": "Lights on", + "theme.dark": "Lights off", + "theme.automatic": "Match system default", + "title": "Titlu", "today": "Astăzi", @@ -715,10 +756,13 @@ "users": "Utilizatori", "version": "Versiune", + "version.changes": "Changed version", + "version.compare": "Compare versions", "version.current": "Versiunea curentă", "version.latest": "Ultima versiune", "versionInformation": "Informații despre versiune", + "view": "View", "view.account": "Contul t\u0103u", "view.installation": "Instalare", "view.languages": "Limbi", diff --git a/public/kirby/i18n/translations/ru.json b/public/kirby/i18n/translations/ru.json index 8ce0410..aada80d 100644 --- a/public/kirby/i18n/translations/ru.json +++ b/public/kirby/i18n/translations/ru.json @@ -21,6 +21,8 @@ "copy": "Скопировать", "copy.all": "Копировать все", "copy.success": "{count} скопировано", + "copy.success.multiple": "{count} скопировано", + "copy.url": "Скопировать ссылку", "create": "Создать", "custom": "Другое", @@ -90,6 +92,12 @@ "error.cache.type.invalid": "Неверный тип кэша: \"{type}\"", + "error.content.lock.delete": "The version is locked and cannot be deleted", + "error.content.lock.move": "The source version is locked and cannot be moved", + "error.content.lock.publish": "This version is already published", + "error.content.lock.replace": "The version is locked and cannot be replaced", + "error.content.lock.update": "The version is locked and cannot be updated", + "error.email.preset.notFound": "Email-шаблон \"{name}\" не найден", "error.field.converter.invalid": "Неверный конвертер \"{converter}\"", @@ -118,6 +126,7 @@ "error.file.name.missing": "Название файла не может быть пустым", "error.file.notFound": "\u0424\u0430\u0439\u043b \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d", "error.file.orientation": "Ориентация изображения должна быть \"{orientation}\"", + "error.file.sort.permission": "You are not allowed to change the sorting of \"{filename}\"", "error.file.type.forbidden": "У вас нет права загружать файлы {type}", "error.file.type.invalid": "Неверный тип файла: {type}", "error.file.undefined": "\u0424\u0430\u0439\u043b \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d", @@ -168,6 +177,7 @@ "error.page.move.ancestor": "Невозможно переместить страницу саму в себя", "error.page.move.directory": "Невозможно перенести каталог страницы", "error.page.move.duplicate": "Подстраница с URL \"{slug}\" уже существует", + "error.page.move.noSections": "The page \"{parent}\" cannot be a parent of any page because it lacks any pages sections in its blueprint", "error.page.move.notFound": "Перемещенная страница не найдена", "error.page.move.permission": "У вас нет права переместить \"{slug}\"", "error.page.move.template": "Шаблон \"{template}\" не разрешен для подстраниц \"{parent}\"", @@ -297,6 +307,9 @@ "field.blocks.heading.name": "Заголовок", "field.blocks.heading.text": "Текст", "field.blocks.heading.placeholder": "Заголовок …", + "field.blocks.figure.back.plain": "Plain", + "field.blocks.figure.back.pattern.light": "Паттерн (светлый)", + "field.blocks.figure.back.pattern.dark": "Паттерн (темный)", "field.blocks.image.alt": "Альтернативный текст", "field.blocks.image.caption": "Подпись", "field.blocks.image.crop": "Обрезать", @@ -334,6 +347,7 @@ "field.blocks.video.url.placeholder": "https://youtube.com/?v=", "field.files.empty": "Файлы не выбраны", + "field.files.empty.single": "No file selected yet", "field.layout.change": "Изменить разметку", "field.layout.delete": "Удалить разметку", @@ -345,12 +359,14 @@ "field.object.empty": "Пока нет информации", "field.pages.empty": "Страницы не выбраны", + "field.pages.empty.single": "No page selected yet", "field.structure.delete.confirm": "Вы точно хотите удалить эту запись?", "field.structure.delete.confirm.all": "Вы действительно хотите удалить все значения?", "field.structure.empty": "Записей нет", "field.users.empty": "Пользователей нет", + "field.users.empty.single": "No user selected yet", "fields.empty": "Ещё нет полей", @@ -369,6 +385,13 @@ "filter": "Фильтр", + "form.discard": " Отменить изменения", + "form.discard.confirm": "Do you really want to discard all your changes?", + "form.locked": "This content is disabled for you as it is currently edited by another user", + "form.unsaved": "Текущие изменения не сохранены", + "form.preview": "Preview changes", + "form.preview.draft": "Preview draft", + "hide": "Скрыть", "hour": "Час", "hue": "Оттенок", @@ -444,6 +467,8 @@ "license.status.missing.bubble": "Готовы запустить Ваш сайт?", "license.status.missing.info": "Нет действительной лицензии", "license.status.missing.label": "Пожалуйста, активируйте Вашу лицензию", + "license.status.unknown.info": "Статус лицензии неизвестен", + "license.status.unknown.label": "Неизвестная лицензия", "license.manage": "Управление лицензиями", "license.purchased": "Приобретено", "license.success": "Спасибо за поддержку Kirby", @@ -456,6 +481,9 @@ "lock.unsaved": "Несохраненные изменения", "lock.unsaved.empty": "Несохраненных изменений нет", + "lock.unsaved.files": "Несохраненные файлы", + "lock.unsaved.pages": "Несохраненные страницы", + "lock.unsaved.users": "Несохраненные аккаунты", "lock.isLocked": "Несохраненные изменения {email}", "lock.unlock": "Разблокировать", "lock.unlock.submit": "Разблокируйте и перезапишите несохраненные изменения {email}", @@ -578,6 +606,10 @@ "plugins": "Плагины", "prev": "Предыдущий", "preview": "Предпросмотр", + + "publish": "Опубликовать", + "published": "Опубликовано", + "remove": "Удалить", "rename": "Переименовать", "renew": "Обновить", @@ -597,7 +629,9 @@ "role.nobody.title": "Никто", "save": "\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c", + "saved": "Сохранено", "search": "Поиск", + "searching": "Поиск", "search.min": "Введите хотя бы {min} символов для поиска", "search.all": "Показать все результаты ({count})", "search.results.none": "Нет результатов", @@ -622,6 +656,7 @@ "system.info.copy": "Copy info", "system.info.copied": "System info copied", + "system.issues.api.methods": "Your server does not support PATCH requests", "system.issues.content": "Похоже, к папке content есть несанкционированный доступ", "system.issues.eol.kirby": "Срок службы установленной вами версии Kirby истек, и она больше не будет получать обновления для системы безопасности", "system.issues.eol.plugin": "Срок службы установленной вами версии плагина { plugin } истек, и он не будет получать дальнейших обновлений для системы безопасности", @@ -646,6 +681,12 @@ "tel": "Телефон", "tel.placeholder": "+79123456789", "template": "\u0428\u0430\u0431\u043b\u043e\u043d", + + "theme": "Тема", + "theme.light": "Светлая тема", + "theme.dark": "Темная тема", + "theme.automatic": "Как в системе", + "title": "Название", "today": "Сегодня", @@ -715,10 +756,13 @@ "users": "Пользователи", "version": "Версия", + "version.changes": "Changed version", + "version.compare": "Сравнить версии", "version.current": "Текущая версия", "version.latest": "Последняя версия", "versionInformation": "Информация о версии", + "view": "View", "view.account": "Ваш аккаунт", "view.installation": "\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430", "view.languages": "Языки", diff --git a/public/kirby/i18n/translations/sk.json b/public/kirby/i18n/translations/sk.json index 70a43c9..27ef2c0 100644 --- a/public/kirby/i18n/translations/sk.json +++ b/public/kirby/i18n/translations/sk.json @@ -21,6 +21,8 @@ "copy": "Kopírovať", "copy.all": "Copy all", "copy.success": "{count} copied!", + "copy.success.multiple": "{count} copied!", + "copy.url": "Copy URL", "create": "Vytvoriť", "custom": "Custom", @@ -90,6 +92,12 @@ "error.cache.type.invalid": "Invalid cache type \"{type}\"", + "error.content.lock.delete": "The version is locked and cannot be deleted", + "error.content.lock.move": "The source version is locked and cannot be moved", + "error.content.lock.publish": "This version is already published", + "error.content.lock.replace": "The version is locked and cannot be replaced", + "error.content.lock.update": "The version is locked and cannot be updated", + "error.email.preset.notFound": "E-mailovú predvoľbu \"{name}\" nie je možné nájsť", "error.field.converter.invalid": "Neplatný converter \"{converter}\"", @@ -118,6 +126,7 @@ "error.file.name.missing": "Názov súboru nemôže byť prázdny", "error.file.notFound": "Súbor \"{filename}\" sa nepodarilo nájsť", "error.file.orientation": "The orientation of the image must be \"{orientation}\"", + "error.file.sort.permission": "You are not allowed to change the sorting of \"{filename}\"", "error.file.type.forbidden": "Nemáte povolenie na nahrávanie súborov s typom {type}", "error.file.type.invalid": "Neplatný typ súboru: \"{type}\"", "error.file.undefined": "Súbor nie je možné nájsť", @@ -168,6 +177,7 @@ "error.page.move.ancestor": "The page cannot be moved into itself", "error.page.move.directory": "The page directory cannot be moved", "error.page.move.duplicate": "A sub page with the URL appendix \"{slug}\" already exists", + "error.page.move.noSections": "The page \"{parent}\" cannot be a parent of any page because it lacks any pages sections in its blueprint", "error.page.move.notFound": "The moved page could not be found", "error.page.move.permission": "You are not allowed to move \"{slug}\"", "error.page.move.template": "The \"{template}\" template is not accepted as a subpage of \"{parent}\"", @@ -297,6 +307,9 @@ "field.blocks.heading.name": "Nadpis", "field.blocks.heading.text": "Text", "field.blocks.heading.placeholder": "Nadpis ...", + "field.blocks.figure.back.plain": "Plain", + "field.blocks.figure.back.pattern.light": "Pattern (light)", + "field.blocks.figure.back.pattern.dark": "Pattern (dark)", "field.blocks.image.alt": "Alternative text", "field.blocks.image.caption": "Popis", "field.blocks.image.crop": "Orezanie", @@ -334,6 +347,7 @@ "field.blocks.video.url.placeholder": "https://youtube.com/?v=", "field.files.empty": "Žiadne súbory zatiaľ neboli zvolené", + "field.files.empty.single": "No file selected yet", "field.layout.change": "Change layout", "field.layout.delete": "Delete layout", @@ -345,12 +359,14 @@ "field.object.empty": "No information yet", "field.pages.empty": "Žiadne stránky zatiaľ neboli zvolené", + "field.pages.empty.single": "No page selected yet", "field.structure.delete.confirm": "Ste si istý, že chcete zmazať tento riadok?", "field.structure.delete.confirm.all": "Do you really want to delete all entries?", "field.structure.empty": "Zatiaľ žiadne údaje", "field.users.empty": "Žiadni užívatelia zatiaľ neboli zvolení", + "field.users.empty.single": "No user selected yet", "fields.empty": "No fields yet", @@ -369,6 +385,13 @@ "filter": "Filter", + "form.discard": "Discard changes", + "form.discard.confirm": "Do you really want to discard all your changes?", + "form.locked": "This content is disabled for you as it is currently edited by another user", + "form.unsaved": "The current changes have not yet been saved", + "form.preview": "Preview changes", + "form.preview.draft": "Preview draft", + "hide": "Hide", "hour": "Hodina", "hue": "Hue", @@ -444,6 +467,8 @@ "license.status.missing.bubble": "Ready to launch your site?", "license.status.missing.info": "No valid license", "license.status.missing.label": "Please activate your license", + "license.status.unknown.info": "The license status is unknown", + "license.status.unknown.label": "Unknown license", "license.manage": "Manage your licenses", "license.purchased": "Purchased", "license.success": "Ďakujeme za vašu podporu Kirby", @@ -456,6 +481,9 @@ "lock.unsaved": "Unsaved changes", "lock.unsaved.empty": "There are no more unsaved changes", + "lock.unsaved.files": "Unsaved files", + "lock.unsaved.pages": "Unsaved pages", + "lock.unsaved.users": "Unsaved accounts", "lock.isLocked": "Unsaved changes by {email}", "lock.unlock": "Unlock", "lock.unlock.submit": "Unlock and overwrite unsaved changes by {email}", @@ -578,6 +606,10 @@ "plugins": "Plugins", "prev": "Predchádzajúci", "preview": "Preview", + + "publish": "Publish", + "published": "Zverejnené", + "remove": "Odstrániť", "rename": "Premenovať", "renew": "Renew", @@ -597,7 +629,9 @@ "role.nobody.title": "Nobody", "save": "Uložiť", + "saved": "Saved", "search": "Hľadať", + "searching": "Searching", "search.min": "Enter {min} characters to search", "search.all": "Show all {count} results", "search.results.none": "No results", @@ -622,6 +656,7 @@ "system.info.copy": "Copy info", "system.info.copied": "System info copied", + "system.issues.api.methods": "Your server does not support PATCH requests", "system.issues.content": "The content folder seems to be exposed", "system.issues.eol.kirby": "Your installed Kirby version has reached end-of-life and will not receive further security updates", "system.issues.eol.plugin": "Your installed version of the { plugin } plugin is has reached end-of-life and will not receive further security updates", @@ -646,6 +681,12 @@ "tel": "Phone", "tel.placeholder": "+49123456789", "template": "Šablóna", + + "theme": "Theme", + "theme.light": "Lights on", + "theme.dark": "Lights off", + "theme.automatic": "Match system default", + "title": "Titulok", "today": "Dnes", @@ -715,10 +756,13 @@ "users": "Užívatelia", "version": "Verzia", + "version.changes": "Changed version", + "version.compare": "Compare versions", "version.current": "Current version", "version.latest": "Latest version", "versionInformation": "Version information", + "view": "View", "view.account": "Váš účet", "view.installation": "Inštalácia", "view.languages": "Jazyky", diff --git a/public/kirby/i18n/translations/sv_SE.json b/public/kirby/i18n/translations/sv_SE.json index 75e2e20..3c46818 100644 --- a/public/kirby/i18n/translations/sv_SE.json +++ b/public/kirby/i18n/translations/sv_SE.json @@ -21,6 +21,8 @@ "copy": "Kopiera", "copy.all": "Kopiera alla", "copy.success": "{count} kopierad!", + "copy.success.multiple": "{count} kopierad!", + "copy.url": "Kopiera URL", "create": "Skapa", "custom": "Anpassad", @@ -90,6 +92,12 @@ "error.cache.type.invalid": "Ogiltig cachetyp \"{type}\"", + "error.content.lock.delete": "Versionen är låst och kan inte raderas", + "error.content.lock.move": "Källversionen är låst och kan inte flyttas", + "error.content.lock.publish": "Denna version är redan publicerad", + "error.content.lock.replace": "Versionen är låst och kan inte bytas ut", + "error.content.lock.update": "Versionen är låst och kan inte uppdateras", + "error.email.preset.notFound": "E-postförinställningen \"{name}\" kan inte hittas", "error.field.converter.invalid": "Ogiltig omvandlare \"{converter}\"", @@ -118,6 +126,7 @@ "error.file.name.missing": "Filnamnet får inte vara tomt", "error.file.notFound": "Filen \"{filename}\" kan ej hittas", "error.file.orientation": "Bildens orientering måste vara \"{orientation}\"", + "error.file.sort.permission": "Du har inte behörighet att ändra sorteringen av \"{filename}\"", "error.file.type.forbidden": "Du har inte behörighet att ladda upp filer av typen {type}", "error.file.type.invalid": "Ogiltig filtyp: {type}", "error.file.undefined": "Filen kan inte hittas", @@ -168,6 +177,7 @@ "error.page.move.ancestor": "Sidan kan inte flyttas in i sig själv", "error.page.move.directory": "Sidans mapp kan inte flyttas", "error.page.move.duplicate": "En undersida med URL-appendixen \"{slug}\" existerar redan", + "error.page.move.noSections": "Sidan \"{parent}\" kan inte vara en förälder till någon sida eftersom den saknar sidsektioner i dess blueprint", "error.page.move.notFound": "Den flyttade sidan kunde inte hittas", "error.page.move.permission": "Du saknar behörighet för att flytta \"{slug}\"", "error.page.move.template": "Mallen \"{template}\" accepteras inte som en undersida till \"{parent}\"", @@ -297,6 +307,9 @@ "field.blocks.heading.name": "Rubrik", "field.blocks.heading.text": "Text", "field.blocks.heading.placeholder": "Rubrik …", + "field.blocks.figure.back.plain": "Vanlig", + "field.blocks.figure.back.pattern.light": "Mönster (ljust)", + "field.blocks.figure.back.pattern.dark": "Mönster (mörkt)", "field.blocks.image.alt": "Alternativ text", "field.blocks.image.caption": "Rubrik", "field.blocks.image.crop": "Beskär", @@ -334,6 +347,7 @@ "field.blocks.video.url.placeholder": "https://youtube.com/?v=", "field.files.empty": "Inga filer valda än", + "field.files.empty.single": "Ingen fil har valts än", "field.layout.change": "Ändra layout", "field.layout.delete": "Radera layout", @@ -345,12 +359,14 @@ "field.object.empty": "Ingen information ännu", "field.pages.empty": "Inga sidor valda än", + "field.pages.empty.single": "Ingen sida har valts än", "field.structure.delete.confirm": "Vill du verkligen radera denna rad?", "field.structure.delete.confirm.all": "Vill du verkligen radera alla poster?", "field.structure.empty": "Inga poster än", "field.users.empty": "Inga användare valda än", + "field.users.empty.single": "Ingen användare har valts än", "fields.empty": "Inga fält ännu", @@ -369,6 +385,13 @@ "filter": "Filter", + "form.discard": "Kassera ändringar", + "form.discard.confirm": "Vill du verkligen kassera dina ändringar?", + "form.locked": "Detta innehåll är inaktiverat för dig eftersom det för närvarande redigeras av en annan användare", + "form.unsaved": "De aktuella ändringarna har inte sparats än", + "form.preview": "Förhandsgranska ändringar", + "form.preview.draft": "Förhandsgranska utkast", + "hide": "Göm", "hour": "Timme", "hue": "Nyans", @@ -444,6 +467,8 @@ "license.status.missing.bubble": "Är du redo att lansera din webbplats?", "license.status.missing.info": "Ingen giltig licens", "license.status.missing.label": "Vänligen aktivera din licens", + "license.status.unknown.info": "Licensstatusen är okänd", + "license.status.unknown.label": "Okänd licens", "license.manage": "Hantera dina licenser", "license.purchased": "Köpt", "license.success": "Tack för att du stödjer Kirby", @@ -456,6 +481,9 @@ "lock.unsaved": "Osparade ändringar", "lock.unsaved.empty": "Det finns inga fler osparade ändringar", + "lock.unsaved.files": "Osparade filer", + "lock.unsaved.pages": "Osparade sidor", + "lock.unsaved.users": "Osparade konton", "lock.isLocked": "Osparade ändringar av {email}", "lock.unlock": "Lås upp", "lock.unlock.submit": "Lås upp och skriv över osparade ändringar av {email}", @@ -578,6 +606,10 @@ "plugins": "Tillägg", "prev": "Föregående", "preview": "Förhandsgranska", + + "publish": "Publicera", + "published": "Publicerade", + "remove": "Ta bort", "rename": "Byt namn", "renew": "Förnya", @@ -597,7 +629,9 @@ "role.nobody.title": "Ingen", "save": "Spara", + "saved": "Sparad", "search": "Sök", + "searching": "Söker", "search.min": "Ange {min} tecken för att söka", "search.all": "Visa alla {count} resultat", "search.results.none": "Inga träffar", @@ -622,6 +656,7 @@ "system.info.copy": "Kopiera info", "system.info.copied": "Systeminformation kopierad", + "system.issues.api.methods": "Din server stöder inte PATCH-förfrågningar", "system.issues.content": "Mappen content verkar vara exponerad", "system.issues.eol.kirby": "Din installerade Kirby-version har nått slutet av sin livscykel och kommer inte att få fler säkerhetsuppdateringar", "system.issues.eol.plugin": "Den installerade versionen av tillägget { plugin } har nått slutet på sin livscykel och kommer inte att få fler säkerhetsuppdateringar.", @@ -646,6 +681,12 @@ "tel": "Telefon", "tel.placeholder": "+46701234567", "template": "Mall", + + "theme": "Tema", + "theme.light": "Ljus på", + "theme.dark": "Ljus av", + "theme.automatic": "Matcha systemstandard", + "title": "Titel", "today": "Idag", @@ -715,10 +756,13 @@ "users": "Användare", "version": "Version", + "version.changes": "Ändrad version", + "version.compare": "Jämför versioner", "version.current": "Aktuell version", "version.latest": "Senaste version", "versionInformation": "Versionsinformation", + "view": "Visa", "view.account": "Ditt konto", "view.installation": "Installation", "view.languages": "Språk", diff --git a/public/kirby/i18n/translations/tr.json b/public/kirby/i18n/translations/tr.json index 6d529f4..634dfd1 100644 --- a/public/kirby/i18n/translations/tr.json +++ b/public/kirby/i18n/translations/tr.json @@ -21,6 +21,8 @@ "copy": "Kopyala", "copy.all": "Tümünü kopyala", "copy.success": "{count} kopyalandı!", + "copy.success.multiple": "{count} kopyalandı!", + "copy.url": "Copy URL", "create": "Oluştur", "custom": "Özel", @@ -90,6 +92,12 @@ "error.cache.type.invalid": "Geçersiz önbellek türü \"{type}\"", + "error.content.lock.delete": "The version is locked and cannot be deleted", + "error.content.lock.move": "The source version is locked and cannot be moved", + "error.content.lock.publish": "This version is already published", + "error.content.lock.replace": "The version is locked and cannot be replaced", + "error.content.lock.update": "The version is locked and cannot be updated", + "error.email.preset.notFound": "\"{name}\" e-posta adresi bulunamadı", "error.field.converter.invalid": "Geçersiz dönüştürücü \"{converter}\"", @@ -118,6 +126,7 @@ "error.file.name.missing": "Dosya adı boş bırakılamaz", "error.file.notFound": "\"{filename}\" dosyası bulunamadı", "error.file.orientation": "Resmin oryantasyonu \"{orientation}\" olmalıdır", + "error.file.sort.permission": "You are not allowed to change the sorting of \"{filename}\"", "error.file.type.forbidden": "{type} dosya yükleme izni yok", "error.file.type.invalid": "Geçersiz dosya türü: {type}", "error.file.undefined": "Dosya bulunamad\u0131", @@ -168,6 +177,7 @@ "error.page.move.ancestor": "Sayfa kendi içine taşınamaz", "error.page.move.directory": "Sayfa dizini taşınamaz", "error.page.move.duplicate": "\"{slug}\" URL ekine sahip bir alt sayfa zaten mevcut", + "error.page.move.noSections": "The page \"{parent}\" cannot be a parent of any page because it lacks any pages sections in its blueprint", "error.page.move.notFound": "Taşınan sayfa bulunamadı", "error.page.move.permission": "\"{slug}\" öğesini taşımanıza izin verilmiyor", "error.page.move.template": "\"{template}\" şablonu \"{parent}\" alt sayfası olarak kabul edilmiyor", @@ -297,6 +307,9 @@ "field.blocks.heading.name": "Başlık", "field.blocks.heading.text": "Metin", "field.blocks.heading.placeholder": "Başlık …", + "field.blocks.figure.back.plain": "Plain", + "field.blocks.figure.back.pattern.light": "Pattern (light)", + "field.blocks.figure.back.pattern.dark": "Pattern (dark)", "field.blocks.image.alt": "Alternatif metin", "field.blocks.image.caption": "Altyazı", "field.blocks.image.crop": "Kırp", @@ -334,6 +347,7 @@ "field.blocks.video.url.placeholder": "https://youtube.com/?v=", "field.files.empty": "Henüz dosya seçilmedi", + "field.files.empty.single": "No file selected yet", "field.layout.change": "Düzeni değiştir", "field.layout.delete": "Düzeni sil", @@ -345,12 +359,14 @@ "field.object.empty": "Henüz bilgi yok", "field.pages.empty": "Henüz sayfa seçilmedi", + "field.pages.empty.single": "No page selected yet", "field.structure.delete.confirm": "Bu girdiyi silmek istedi\u011finizden emin misiniz?", "field.structure.delete.confirm.all": "Tüm girdileri gerçekten silmek istiyor musunuz?", "field.structure.empty": "Hen\u00fcz bir girdi yok", "field.users.empty": "Henüz kullanıcı seçilmedi", + "field.users.empty.single": "No user selected yet", "fields.empty": "Henüz alan yok", @@ -369,6 +385,13 @@ "filter": "Filtre", + "form.discard": "Discard changes", + "form.discard.confirm": "Do you really want to discard all your changes?", + "form.locked": "This content is disabled for you as it is currently edited by another user", + "form.unsaved": "The current changes have not yet been saved", + "form.preview": "Preview changes", + "form.preview.draft": "Preview draft", + "hide": "Gizle", "hour": "Saat", "hue": "Renk tonu", @@ -444,6 +467,8 @@ "license.status.missing.bubble": "Sitenizi yayına almaya hazır mısınız?", "license.status.missing.info": "Geçerli lisans yok", "license.status.missing.label": "Lütfen lisansınızı etkinleştirin", + "license.status.unknown.info": "The license status is unknown", + "license.status.unknown.label": "Unknown license", "license.manage": "Lisanslarınızı yönetin", "license.purchased": "Satın alındı", "license.success": "Kirby'yi desteklediğiniz için teşekkürler", @@ -456,6 +481,9 @@ "lock.unsaved": "Kaydedilmemiş değişiklikler", "lock.unsaved.empty": "Daha fazla kaydedilmemiş değişiklik yok", + "lock.unsaved.files": "Unsaved files", + "lock.unsaved.pages": "Unsaved pages", + "lock.unsaved.users": "Unsaved accounts", "lock.isLocked": "{email} tarafından yapılan kaydedilmemiş değişiklikler", "lock.unlock": "Kilidi Aç", "lock.unlock.submit": "Kaydedilmemiş değişikliklerin kilidini {email} ile açın ve üzerine yazın", @@ -578,6 +606,10 @@ "plugins": "Eklentiler", "prev": "Önceki", "preview": "Önizle", + + "publish": "Publish", + "published": "Yayınlandı", + "remove": "Kaldır", "rename": "Yeniden Adlandır", "renew": "Yenileme", @@ -597,7 +629,9 @@ "role.nobody.title": "Hiçkimse", "save": "Kaydet", + "saved": "Saved", "search": "Arama", + "searching": "Searching", "search.min": "Aramak için {min} karakter girin", "search.all": "Tüm {count} sonuçlarını göster", "search.results.none": "Sonuç yok", @@ -622,6 +656,7 @@ "system.info.copy": "Bilgileri kopyala", "system.info.copied": "Sistem bilgisi kopyalandı", + "system.issues.api.methods": "Your server does not support PATCH requests", "system.issues.content": "İçerik klasörü açığa çıkmış görünüyor", "system.issues.eol.kirby": "Yüklü Kirby sürümünüz kullanım ömrünün sonuna ulaştı ve daha fazla güvenlik güncellemesi almayacak", "system.issues.eol.plugin": "{ plugin } eklentisinin yüklü sürümü kullanım ömrünün sonuna ulaştı ve daha fazla güvenlik güncellemesi almayacak", @@ -646,6 +681,12 @@ "tel": "Telefon", "tel.placeholder": "+49123456789", "template": "\u015eablon", + + "theme": "Theme", + "theme.light": "Lights on", + "theme.dark": "Lights off", + "theme.automatic": "Match system default", + "title": "Başlık", "today": "Bugün", @@ -715,10 +756,13 @@ "users": "Kullanıcılar", "version": "Versiyon", + "version.changes": "Changed version", + "version.compare": "Compare versions", "version.current": "Mevcut sürüm", "version.latest": "En son sürüm", "versionInformation": "Sürüm bilgisi", + "view": "View", "view.account": "Hesap Bilgilerin", "view.installation": "Kurulum", "view.languages": "Diller", diff --git a/public/kirby/package-lock.json b/public/kirby/package-lock.json deleted file mode 100644 index 7c78dd2..0000000 --- a/public/kirby/package-lock.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "kirby", - "lockfileVersion": 3, - "requires": true, - "packages": {} -} diff --git a/public/kirby/panel/.prettierignore b/public/kirby/panel/.prettierignore deleted file mode 100644 index 511620b..0000000 --- a/public/kirby/panel/.prettierignore +++ /dev/null @@ -1,2 +0,0 @@ - -src/components/Text/Highlight.vue \ No newline at end of file diff --git a/public/kirby/panel/eslint.config.mjs b/public/kirby/panel/eslint.config.mjs deleted file mode 100644 index cfe049e..0000000 --- a/public/kirby/panel/eslint.config.mjs +++ /dev/null @@ -1,28 +0,0 @@ -import js from "@eslint/js"; -import prettier from "eslint-config-prettier"; -import vue from "eslint-plugin-vue"; - -export default [ - js.configs.recommended, - ...vue.configs["flat/vue2-recommended"], - prettier, - { - rules: { - "vue/attributes-order": "error", - "vue/component-definition-name-casing": "off", - "vue/html-closing-bracket-newline": [ - "error", - { - singleline: "never", - multiline: "always" - } - ], - "vue/multi-word-component-names": "off", - "vue/require-default-prop": "off", - "vue/require-prop-types": "error" - }, - languageOptions: { - ecmaVersion: 2022 - } - } -]; diff --git a/public/kirby/src/Api/Api.php b/public/kirby/src/Api/Api.php index 75b5d1d..e7647b3 100644 --- a/public/kirby/src/Api/Api.php +++ b/public/kirby/src/Api/Api.php @@ -592,7 +592,7 @@ class Api * @return $this */ protected function setRequestMethod( - string $requestMethod = null + string|null $requestMethod = null ): static { $this->requestMethod = $requestMethod ?? 'GET'; return $this; diff --git a/public/kirby/src/Cms/App.php b/public/kirby/src/Cms/App.php index 32044c7..953d22d 100644 --- a/public/kirby/src/Cms/App.php +++ b/public/kirby/src/Cms/App.php @@ -285,7 +285,7 @@ class App * * @return $this */ - protected function bakeRoots(array $roots = null): static + protected function bakeRoots(array|null $roots = null): static { $roots = array_merge($this->core->roots(), (array)$roots); $this->roots = Ingredients::bake($roots); @@ -297,7 +297,7 @@ class App * * @return $this */ - protected function bakeUrls(array $urls = null): static + protected function bakeUrls(array|null $urls = null): static { $urls = array_merge($this->core->urls(), (array)$urls); $this->urls = Ingredients::bake($urls); @@ -331,7 +331,7 @@ class App /** * Calls any Kirby route */ - public function call(string $path = null, string $method = null): mixed + public function call(string|null $path = null, string|null $method = null): mixed { $path ??= $this->path(); $method ??= $this->request()->method(); @@ -697,7 +697,7 @@ class App * @psalm-return ($lazy is false ? static : static|null) */ public static function instance( - self $instance = null, + self|null $instance = null, bool $lazy = false ): static|null { if ($instance !== null) { @@ -852,7 +852,7 @@ class App * * @internal */ - public function kirbytags(string $text = null, array $data = []): string + public function kirbytags(string|null $text = null, array $data = []): string { $data['kirby'] ??= $this; $data['site'] ??= $data['kirby']->site(); @@ -872,7 +872,7 @@ class App * * @internal */ - public function kirbytext(string $text = null, array $options = []): string + public function kirbytext(string|null $text = null, array $options = []): string { $text = $this->apply('kirbytext:before', compact('text'), 'text'); $text = $this->kirbytags($text, $options); @@ -891,7 +891,7 @@ class App * Returns the language by code or shortcut (`default`, `current`). * Passing `null` is an alias for passing `current` */ - public function language(string $code = null): Language|null + public function language(string|null $code = null): Language|null { if ($this->multilang() === false) { return null; @@ -909,7 +909,7 @@ class App * * @internal */ - public function languageCode(string $languageCode = null): string|null + public function languageCode(string|null $languageCode = null): string|null { return $this->language($languageCode)?->code(); } @@ -952,7 +952,7 @@ class App * * @internal */ - public function markdown(string $text = null, array $options = null): string + public function markdown(string|null $text = null, array|null $options = null): string { // merge global options with local options $options = array_merge( @@ -1181,8 +1181,8 @@ class App * current request */ public function render( - string $path = null, - string $method = null + string|null $path = null, + string|null $method = null ): Response|null { if (($_ENV['KIRBY_RENDER'] ?? true) === false) { return null; @@ -1441,7 +1441,7 @@ class App * * @return $this */ - protected function setLanguages(array $languages = null): static + protected function setLanguages(array|null $languages = null): static { if ($languages !== null) { $objects = []; @@ -1462,7 +1462,7 @@ class App * * @return $this */ - protected function setPath(string $path = null): static + protected function setPath(string|null $path = null): static { $this->path = $path !== null ? trim($path, '/') : null; return $this; @@ -1473,7 +1473,7 @@ class App * * @return $this */ - protected function setRequest(array $request = null): static + protected function setRequest(array|null $request = null): static { if ($request !== null) { $this->request = new Request($request); @@ -1487,7 +1487,7 @@ class App * * @return $this */ - protected function setRoles(array $roles = null): static + protected function setRoles(array|null $roles = null): static { if ($roles !== null) { $this->roles = Roles::factory($roles); @@ -1501,7 +1501,7 @@ class App * * @return $this */ - protected function setSite(Site|array $site = null): static + protected function setSite(Site|array|null $site = null): static { if (is_array($site) === true) { $site = new Site($site); @@ -1528,7 +1528,7 @@ class App * * @internal */ - public function smartypants(string $text = null): string + public function smartypants(string|null $text = null): string { $options = $this->option('smartypants', []); diff --git a/public/kirby/src/Cms/AppPlugins.php b/public/kirby/src/Cms/AppPlugins.php index 8cfeae3..645c652 100644 --- a/public/kirby/src/Cms/AppPlugins.php +++ b/public/kirby/src/Cms/AppPlugins.php @@ -99,7 +99,7 @@ trait AppPlugins */ public function extend( array $extensions, - Plugin $plugin = null + Plugin|null $plugin = null ): array { foreach ($this->extensions as $type => $registered) { if (isset($extensions[$type]) === true) { @@ -382,7 +382,7 @@ trait AppPlugins */ protected function extendOptions( array $options, - Plugin $plugin = null + Plugin|null $plugin = null ): array { if ($plugin !== null) { $options = [$plugin->prefix() => $options]; @@ -428,7 +428,7 @@ trait AppPlugins */ protected function extendPermissions( array $permissions, - Plugin $plugin = null + Plugin|null $plugin = null ): array { if ($plugin !== null) { $permissions = [$plugin->prefix() => $permissions]; @@ -583,7 +583,7 @@ trait AppPlugins * * @internal */ - public function extensions(string $type = null): array + public function extensions(string|null $type = null): array { if ($type === null) { return $this->extensions; @@ -713,7 +713,7 @@ trait AppPlugins */ public static function plugin( string $name, - array $extends = null, + array|null $extends = null, array $info = [], string|null $root = null, string|null $version = null @@ -747,7 +747,7 @@ trait AppPlugins * @internal * @param array|null $plugins Can be used to overwrite the plugins registry */ - public function plugins(array $plugins = null): array + public function plugins(array|null $plugins = null): array { // overwrite the existing plugins registry if ($plugins !== null) { diff --git a/public/kirby/src/Cms/AppTranslations.php b/public/kirby/src/Cms/AppTranslations.php index 1efae28..1e24f23 100644 --- a/public/kirby/src/Cms/AppTranslations.php +++ b/public/kirby/src/Cms/AppTranslations.php @@ -108,7 +108,7 @@ trait AppTranslations * * @internal */ - public function setCurrentTranslation(string $translationCode = null): void + public function setCurrentTranslation(string|null $translationCode = null): void { I18n::$locale = $translationCode ?? 'en'; } diff --git a/public/kirby/src/Cms/AppUsers.php b/public/kirby/src/Cms/AppUsers.php index 82a61f0..6f2f7be 100644 --- a/public/kirby/src/Cms/AppUsers.php +++ b/public/kirby/src/Cms/AppUsers.php @@ -72,7 +72,7 @@ trait AppUsers * * @return $this */ - protected function setUser(User|string $user = null): static + protected function setUser(User|string|null $user = null): static { $this->user = $user; return $this; @@ -83,7 +83,7 @@ trait AppUsers * * @return $this */ - protected function setUsers(array $users = null): static + protected function setUsers(array|null $users = null): static { if ($users !== null) { $this->users = Users::factory($users); diff --git a/public/kirby/src/Cms/Auth.php b/public/kirby/src/Cms/Auth.php index d02b01e..689f567 100644 --- a/public/kirby/src/Cms/Auth.php +++ b/public/kirby/src/Cms/Auth.php @@ -202,7 +202,7 @@ class Auth * @throws \Kirby\Exception\InvalidArgumentException if the authorization header is invalid * @throws \Kirby\Exception\PermissionException if basic authentication is not allowed */ - public function currentUserFromBasicAuth(BasicAuth $auth = null): User|null + public function currentUserFromBasicAuth(BasicAuth|null $auth = null): User|null { if ($this->kirby->option('api.basicAuth', false) !== true) { throw new PermissionException('Basic authentication is not activated'); @@ -250,7 +250,7 @@ class Auth * valid user id in there */ public function currentUserFromSession( - Session|array $session = null + Session|array|null $session = null ): User|null { $session = $this->session($session); @@ -440,7 +440,7 @@ class Auth * logged in user will be returned */ public function status( - Session|array $session = null, + Session|array|null $session = null, bool $allowImpersonation = true ): Status { // try to return from cache @@ -723,7 +723,7 @@ class Auth * @throws \Throwable If an authentication error occurred */ public function user( - Session|array $session = null, + Session|array|null $session = null, bool $allowImpersonation = true ): User|null { if ($allowImpersonation === true && $this->impersonate !== null) { @@ -887,7 +887,7 @@ class Auth */ protected function fail( Throwable $exception, - Throwable $fallback = null + Throwable|null $fallback = null ): void { $debug = $this->kirby->option('auth.debug', 'log'); @@ -911,7 +911,7 @@ class Auth /** * Creates a session object from the passed options */ - protected function session(Session|array $session = null): Session + protected function session(Session|array|null $session = null): Session { // use passed session options or session object if set if (is_array($session) === true) { diff --git a/public/kirby/src/Cms/Blocks.php b/public/kirby/src/Cms/Blocks.php index 6ea7a6c..5e0c0c9 100644 --- a/public/kirby/src/Cms/Blocks.php +++ b/public/kirby/src/Cms/Blocks.php @@ -54,7 +54,7 @@ class Blocks extends Items * catch blocks from layouts */ public static function factory( - array $items = null, + array|null $items = null, array $params = [] ): static { $items = static::extractFromLayouts($items); diff --git a/public/kirby/src/Cms/Blueprint.php b/public/kirby/src/Cms/Blueprint.php index 7895c85..ff97590 100644 --- a/public/kirby/src/Cms/Blueprint.php +++ b/public/kirby/src/Cms/Blueprint.php @@ -39,7 +39,7 @@ class Blueprint /** * Magic getter/caller for any blueprint prop */ - public function __call(string $key, array $arguments = null): mixed + public function __call(string $key, array|null $arguments = null): mixed { return $this->props[$key] ?? null; } @@ -102,7 +102,7 @@ class Blueprint * Gathers what file templates are allowed in * this model based on the blueprint */ - public function acceptedFileTemplates(string $inSection = null): array + public function acceptedFileTemplates(string|null $inSection = null): array { // get cached results for the current file model // (except when collecting for a specific section) @@ -320,7 +320,7 @@ class Blueprint */ public static function factory( string $name, - string $fallback = null, + string|null $fallback, ModelWithContent $model ): static|null { try { diff --git a/public/kirby/src/Cms/Collection.php b/public/kirby/src/Cms/Collection.php index a4a5cb6..251b228 100644 --- a/public/kirby/src/Cms/Collection.php +++ b/public/kirby/src/Cms/Collection.php @@ -365,7 +365,7 @@ class Collection extends BaseCollection * Searches the collection */ public function search( - string $query = null, + string|null $query = null, string|array $params = [] ): static { return Search::collection($this, $query, $params); @@ -376,7 +376,7 @@ class Collection extends BaseCollection * to an array. This can also take a callback * function to further modify the array result. */ - public function toArray(Closure $map = null): array + public function toArray(Closure|null $map = null): array { return parent::toArray($map ?? fn ($object) => $object->toArray()); } diff --git a/public/kirby/src/Cms/ContentLocks.php b/public/kirby/src/Cms/ContentLocks.php index 2d7c400..bdcc6f4 100644 --- a/public/kirby/src/Cms/ContentLocks.php +++ b/public/kirby/src/Cms/ContentLocks.php @@ -173,7 +173,7 @@ class ContentLocks ) { unset($this->data[$file][$id]); - // there is empty unlock data, but still lock data + // there is empty unlock data, but still lock data } elseif ( isset($data['unlock']) === true && count($data['unlock']) === 0 diff --git a/public/kirby/src/Cms/Email.php b/public/kirby/src/Cms/Email.php index 80900dc..18f06a2 100644 --- a/public/kirby/src/Cms/Email.php +++ b/public/kirby/src/Cms/Email.php @@ -113,7 +113,7 @@ class Email $this->props['body']['text'] = $text->render($data); } - // fallback to single email text template + // fallback to single email text template } elseif ($text->exists()) { $this->props['body'] = $text->render($data); } else { @@ -125,7 +125,7 @@ class Email /** * Returns an email template by name and type */ - protected function getTemplate(string $name, string $type = null): Template + protected function getTemplate(string $name, string|null $type = null): Template { return App::instance()->template('emails/' . $name, $type, 'text'); } @@ -163,7 +163,7 @@ class Email string $prop, string $class, string $contentValue, - string $contentKey = null + string|null $contentKey = null ): array { $value = $this->props[$prop] ?? []; diff --git a/public/kirby/src/Cms/Fieldsets.php b/public/kirby/src/Cms/Fieldsets.php index 181f1c4..4f5f5ce 100644 --- a/public/kirby/src/Cms/Fieldsets.php +++ b/public/kirby/src/Cms/Fieldsets.php @@ -74,7 +74,7 @@ class Fieldsets extends Items } public static function factory( - array $items = null, + array|null $items = null, array $params = [] ): static { $items ??= App::instance()->option('blocks.fieldsets', [ diff --git a/public/kirby/src/Cms/File.php b/public/kirby/src/Cms/File.php index 9937bdc..a3d47ea 100644 --- a/public/kirby/src/Cms/File.php +++ b/public/kirby/src/Cms/File.php @@ -155,7 +155,7 @@ class File extends ModelWithContent * Returns an array with all blueprints that are available for the file * by comparing files sections and files fields of the parent model */ - public function blueprints(string $inSection = null): array + public function blueprints(string|null $inSection = null): array { // get cached results for the current file model // (except when collecting for a specific section) @@ -227,7 +227,7 @@ class File extends ModelWithContent */ public function contentFileData( array $data, - string $languageCode = null + string|null $languageCode = null ): array { // only add the template in, if the $data array // doesn't explicitly unsets it @@ -443,7 +443,7 @@ class File extends ModelWithContent * Timestamp of the last modification * of the content file */ - protected function modifiedContent(string $languageCode = null): int + protected function modifiedContent(string|null $languageCode = null): int { return $this->storage()->modified('published', $languageCode) ?? 0; } @@ -548,7 +548,7 @@ class File extends ModelWithContent * * @return $this */ - protected function setBlueprint(array $blueprint = null): static + protected function setBlueprint(array|null $blueprint = null): static { if ($blueprint !== null) { $blueprint['model'] = $this; diff --git a/public/kirby/src/Cms/FileActions.php b/public/kirby/src/Cms/FileActions.php index 712291a..54fbdca 100644 --- a/public/kirby/src/Cms/FileActions.php +++ b/public/kirby/src/Cms/FileActions.php @@ -404,8 +404,8 @@ trait FileActions * @internal */ public function save( - array $data = null, - string $languageCode = null, + array|null $data = null, + string|null $languageCode = null, bool $overwrite = false ): static { $file = parent::save($data, $languageCode, $overwrite); @@ -444,8 +444,8 @@ trait FileActions * @throws \Kirby\Exception\InvalidArgumentException If the input array contains invalid values */ public function update( - array $input = null, - string $languageCode = null, + array|null $input = null, + string|null $languageCode = null, bool $validate = false ): static { // delete all public media versions when focus field gets changed diff --git a/public/kirby/src/Cms/FileModifications.php b/public/kirby/src/Cms/FileModifications.php index d1a256d..38629ab 100644 --- a/public/kirby/src/Cms/FileModifications.php +++ b/public/kirby/src/Cms/FileModifications.php @@ -38,7 +38,7 @@ trait FileModifications */ public function crop( int $width, - int $height = null, + int|null $height = null, $options = null ): FileVersion|File|Asset { $quality = null; @@ -94,9 +94,9 @@ trait FileModifications * @throws \Kirby\Exception\InvalidArgumentException */ public function resize( - int $width = null, - int $height = null, - int $quality = null + int|null $width = null, + int|null $height = null, + int|null $quality = null ): FileVersion|File|Asset { return $this->thumb([ 'width' => $width, diff --git a/public/kirby/src/Cms/FileRules.php b/public/kirby/src/Cms/FileRules.php index 84a93ec..ee4b9dd 100644 --- a/public/kirby/src/Cms/FileRules.php +++ b/public/kirby/src/Cms/FileRules.php @@ -252,7 +252,7 @@ class FileRules * Validates the extension, MIME type and filename * * @param $mime If not passed, the MIME type is detected from the file, - * if `false`, the MIME type is not validated for performance reasons + * if `false`, the MIME type is not validated for performance reasons * @throws \Kirby\Exception\InvalidArgumentException If the extension, MIME type or filename is missing or forbidden */ public static function validFile( @@ -312,7 +312,7 @@ class FileRules * * @throws \Kirby\Exception\InvalidArgumentException If the MIME type is missing or forbidden */ - public static function validMime(File $file, string $mime = null): bool + public static function validMime(File $file, string|null $mime = null): bool { // make it easier to compare the mime $mime = strtolower($mime ?? ''); diff --git a/public/kirby/src/Cms/Files.php b/public/kirby/src/Cms/Files.php index 70760b2..ed5c76a 100644 --- a/public/kirby/src/Cms/Files.php +++ b/public/kirby/src/Cms/Files.php @@ -44,19 +44,19 @@ class Files extends Collection if ($object instanceof self) { $this->data = array_merge($this->data, $object->data); - // add a file by id + // add a file by id } elseif ( is_string($object) === true && $file = App::instance()->file($object) ) { $this->__set($file->id(), $file); - // add a file object + // add a file object } elseif ($object instanceof File) { $this->__set($object->id(), $object); - // give a useful error message on invalid input; - // silently ignore "empty" values for compatibility with existing setups + // give a useful error message on invalid input; + // silently ignore "empty" values for compatibility with existing setups } elseif (in_array($object, [null, false, true], true) !== true) { throw new InvalidArgumentException('You must pass a Files or File object or an ID of an existing file to the Files collection'); } diff --git a/public/kirby/src/Cms/Find.php b/public/kirby/src/Cms/Find.php index aa2c363..6059c81 100644 --- a/public/kirby/src/Cms/Find.php +++ b/public/kirby/src/Cms/Find.php @@ -142,7 +142,7 @@ class Find * @param string|null $id User's id * @throws \Kirby\Exception\NotFoundException if the user for the given id cannot be found */ - public static function user(string $id = null): User|null + public static function user(string|null $id = null): User|null { // account is a reserved word to find the current // user. It's used in various API and area routes. diff --git a/public/kirby/src/Cms/HasChildren.php b/public/kirby/src/Cms/HasChildren.php index 4bc88da..d12ee38 100644 --- a/public/kirby/src/Cms/HasChildren.php +++ b/public/kirby/src/Cms/HasChildren.php @@ -176,7 +176,7 @@ trait HasChildren * * @return $this */ - protected function setChildren(array $children = null): static + protected function setChildren(array|null $children = null): static { if ($children !== null) { $this->children = Pages::factory($children, $this); @@ -190,7 +190,7 @@ trait HasChildren * * @return $this */ - protected function setDrafts(array $drafts = null): static + protected function setDrafts(array|null $drafts = null): static { if ($drafts !== null) { $this->drafts = Pages::factory($drafts, $this, true); diff --git a/public/kirby/src/Cms/HasFiles.php b/public/kirby/src/Cms/HasFiles.php index 86788d2..cc6ac65 100644 --- a/public/kirby/src/Cms/HasFiles.php +++ b/public/kirby/src/Cms/HasFiles.php @@ -63,7 +63,7 @@ trait HasFiles * Returns a specific file by filename or the first one */ public function file( - string $filename = null, + string|null $filename = null, string $in = 'files' ): File|null { if ($filename === null) { @@ -152,7 +152,7 @@ trait HasFiles /** * Returns a specific image by filename or the first one */ - public function image(string $filename = null): File|null + public function image(string|null $filename = null): File|null { return $this->file($filename, 'images'); } @@ -170,7 +170,7 @@ trait HasFiles * * @return $this */ - protected function setFiles(array $files = null): static + protected function setFiles(array|null $files = null): static { if ($files !== null) { $this->files = Files::factory($files, $this); diff --git a/public/kirby/src/Cms/Html.php b/public/kirby/src/Cms/Html.php index 9ab61c4..dfe8101 100644 --- a/public/kirby/src/Cms/Html.php +++ b/public/kirby/src/Cms/Html.php @@ -81,7 +81,7 @@ class Html extends \Kirby\Toolkit\Html */ public static function link( string|null $href = null, - string|array $text = null, + string|array|null $text = null, array $attr = [] ): string { return parent::link(Url::to($href), $text, $attr); diff --git a/public/kirby/src/Cms/Ingredients.php b/public/kirby/src/Cms/Ingredients.php index f9c1c59..e8f4b33 100644 --- a/public/kirby/src/Cms/Ingredients.php +++ b/public/kirby/src/Cms/Ingredients.php @@ -34,7 +34,7 @@ class Ingredients /** * Magic getter for single ingredients */ - public function __call(string $method, array $args = null): mixed + public function __call(string $method, array|null $args = null): mixed { return $this->ingredients[$method] ?? null; } diff --git a/public/kirby/src/Cms/Items.php b/public/kirby/src/Cms/Items.php index 97f8104..13cc966 100644 --- a/public/kirby/src/Cms/Items.php +++ b/public/kirby/src/Cms/Items.php @@ -48,7 +48,7 @@ class Items extends Collection * an array of item props */ public static function factory( - array $items = null, + array|null $items = null, array $params = [] ): static { if (empty($items) === true || is_array($items) === false) { @@ -93,7 +93,7 @@ class Items extends Collection /** * Convert the items to an array */ - public function toArray(Closure $map = null): array + public function toArray(Closure|null $map = null): array { return array_values(parent::toArray($map)); } diff --git a/public/kirby/src/Cms/Language.php b/public/kirby/src/Cms/Language.php index d9e3eba..4c6b491 100644 --- a/public/kirby/src/Cms/Language.php +++ b/public/kirby/src/Cms/Language.php @@ -344,7 +344,7 @@ class Language * * @param int $category If passed, returns the locale for the specified category (e.g. LC_ALL) as string */ - public function locale(int $category = null): array|string|null + public function locale(int|null $category = null): array|string|null { if ($category !== null) { return $this->locale[$category] ?? $this->locale[LC_ALL] ?? null; @@ -513,7 +513,7 @@ class Language * Update language properties and save them * @internal */ - public function update(array $props = null): static + public function update(array|null $props = null): static { $kirby = App::instance(); $user = $kirby->user(); diff --git a/public/kirby/src/Cms/Layouts.php b/public/kirby/src/Cms/Layouts.php index 1888680..fa6031c 100644 --- a/public/kirby/src/Cms/Layouts.php +++ b/public/kirby/src/Cms/Layouts.php @@ -26,7 +26,7 @@ class Layouts extends Items public static array $methods = []; public static function factory( - array $items = null, + array|null $items = null, array $params = [] ): static { // convert single layout to layouts array diff --git a/public/kirby/src/Cms/Media.php b/public/kirby/src/Cms/Media.php index 45c8017..fe8c8e9 100644 --- a/public/kirby/src/Cms/Media.php +++ b/public/kirby/src/Cms/Media.php @@ -27,7 +27,7 @@ class Media * and to copy it to the media folder. */ public static function link( - Page|Site|User $model = null, + Page|Site|User|null $model, string $hash, string $filename ): Response|false { diff --git a/public/kirby/src/Cms/Model.php b/public/kirby/src/Cms/Model.php index b7010d3..a9c61e5 100644 --- a/public/kirby/src/Cms/Model.php +++ b/public/kirby/src/Cms/Model.php @@ -86,7 +86,7 @@ abstract class Model * @param \Kirby\Cms\App|null $kirby * @return $this */ - protected function setKirby(App $kirby = null) + protected function setKirby(App|null $kirby = null) { static::$kirby = $kirby; return $this; @@ -99,7 +99,7 @@ abstract class Model * @param \Kirby\Cms\Site|null $site * @return $this */ - public function setSite(Site $site = null) + public function setSite(Site|null $site = null) { $this->site = $site; return $this; diff --git a/public/kirby/src/Cms/ModelWithContent.php b/public/kirby/src/Cms/ModelWithContent.php index 1a7baf5..d525307 100644 --- a/public/kirby/src/Cms/ModelWithContent.php +++ b/public/kirby/src/Cms/ModelWithContent.php @@ -71,7 +71,7 @@ abstract class ModelWithContent implements Identifiable /** * Returns an array with all blueprints that are available */ - public function blueprints(string $inSection = null): array + public function blueprints(string|null $inSection = null): array { // helper function $toBlueprints = function (array $sections): array { @@ -176,7 +176,7 @@ abstract class ModelWithContent implements Identifiable * @throws \Kirby\Exception\InvalidArgumentException If the language for the given code does not exist */ public function contentFile( - string $languageCode = null, + string|null $languageCode = null, bool $force = false ): string { Helpers::deprecated('The internal $model->contentFile() method has been deprecated. You can use $model->storage()->contentFile() instead, however please note that this method is also internal and may be removed in the future.', 'model-content-file'); @@ -212,7 +212,7 @@ abstract class ModelWithContent implements Identifiable */ public function contentFileData( array $data, - string $languageCode = null + string|null $languageCode = null ): array { return $data; } @@ -371,7 +371,7 @@ abstract class ModelWithContent implements Identifiable public function increment( string $field, int $by = 1, - int $max = null + int|null $max = null ): static { $value = (int)$this->content()->get($field)->value() + $by; @@ -462,8 +462,8 @@ abstract class ModelWithContent implements Identifiable * @internal */ public function query( - string $query = null, - string $expect = null + string|null $query = null, + string|null $expect = null ): mixed { if ($query === null) { return null; @@ -491,7 +491,7 @@ abstract class ModelWithContent implements Identifiable * Read the content from the content file * @internal */ - public function readContent(string $languageCode = null): array + public function readContent(string|null $languageCode = null): array { try { return $this->storage()->read( @@ -531,7 +531,7 @@ abstract class ModelWithContent implements Identifiable * Save the single language content */ protected function saveContent( - array $data = null, + array|null $data = null, bool $overwrite = false ): static { // create a clone to avoid modifying the original @@ -552,8 +552,8 @@ abstract class ModelWithContent implements Identifiable * @throws \Kirby\Exception\InvalidArgumentException If the language for the given code does not exist */ protected function saveTranslation( - array $data = null, - string $languageCode = null, + array|null $data = null, + string|null $languageCode = null, bool $overwrite = false ): static { // create a clone to not touch the original @@ -603,7 +603,7 @@ abstract class ModelWithContent implements Identifiable * * @return $this */ - protected function setContent(array $content = null): static + protected function setContent(array|null $content = null): static { if ($content !== null) { $content = new Content($content, $this); @@ -618,7 +618,7 @@ abstract class ModelWithContent implements Identifiable * * @return $this */ - protected function setTranslations(array $translations = null): static + protected function setTranslations(array|null $translations = null): static { if ($translations !== null) { $this->translations = new Collection(); @@ -675,7 +675,7 @@ abstract class ModelWithContent implements Identifiable * (`null` to keep the original token) */ public function toSafeString( - string $template = null, + string|null $template = null, array $data = [], string|null $fallback = '' ): string { @@ -691,7 +691,7 @@ abstract class ModelWithContent implements Identifiable * @param string $handler For internal use */ public function toString( - string $template = null, + string|null $template = null, array $data = [], string|null $fallback = '', string $handler = 'template' @@ -728,7 +728,7 @@ abstract class ModelWithContent implements Identifiable * If no code is specified the current translation is returned */ public function translation( - string $languageCode = null + string|null $languageCode = null ): ContentTranslation|null { if ($language = $this->kirby()->language($languageCode)) { return $this->translations()->find($language->code()); @@ -766,8 +766,8 @@ abstract class ModelWithContent implements Identifiable * @throws \Kirby\Exception\InvalidArgumentException If the input array contains invalid values */ public function update( - array $input = null, - string $languageCode = null, + array|null $input = null, + string|null $languageCode = null, bool $validate = false ): static { $form = Form::for($this, [ @@ -811,7 +811,7 @@ abstract class ModelWithContent implements Identifiable * to store the given data on disk or anywhere else * @internal */ - public function writeContent(array $data, string $languageCode = null): bool + public function writeContent(array $data, string|null $languageCode = null): bool { $data = $this->contentFileData($data, $languageCode); $id = $this->storage()->defaultVersion(); diff --git a/public/kirby/src/Cms/NestCollection.php b/public/kirby/src/Cms/NestCollection.php index 129668d..605b0cb 100644 --- a/public/kirby/src/Cms/NestCollection.php +++ b/public/kirby/src/Cms/NestCollection.php @@ -21,7 +21,7 @@ class NestCollection extends BaseCollection * to an array. This can also take a callback * function to further modify the array result. */ - public function toArray(Closure $map = null): array + public function toArray(Closure|null $map = null): array { return parent::toArray($map ?? fn ($object) => $object->toArray()); } diff --git a/public/kirby/src/Cms/Page.php b/public/kirby/src/Cms/Page.php index 413a267..a1e04df 100644 --- a/public/kirby/src/Cms/Page.php +++ b/public/kirby/src/Cms/Page.php @@ -776,7 +776,7 @@ class Page extends ModelWithContent * This is only used for drafts so far. * @internal */ - public function isVerified(string $token = null): bool + public function isVerified(string|null $token = null): bool { if ( $this->isPublished() === true && @@ -1091,7 +1091,7 @@ class Page extends ModelWithContent * * @return $this */ - protected function setBlueprint(array $blueprint = null): static + protected function setBlueprint(array|null $blueprint = null): static { if ($blueprint !== null) { $blueprint['model'] = $this; @@ -1106,7 +1106,7 @@ class Page extends ModelWithContent * * @return $this */ - protected function setTemplate(string $template = null): static + protected function setTemplate(string|null $template = null): static { if ($template !== null) { $this->intendedTemplate = $this->kirby()->template($template); @@ -1120,7 +1120,7 @@ class Page extends ModelWithContent * * @return $this */ - protected function setUrl(string $url = null): static + protected function setUrl(string|null $url = null): static { if (is_string($url) === true) { $url = rtrim($url, '/'); @@ -1133,7 +1133,7 @@ class Page extends ModelWithContent /** * Returns the slug of the page */ - public function slug(string $languageCode = null): string + public function slug(string|null $languageCode = null): string { if ($this->kirby()->multilang() === true) { $languageCode ??= $this->kirby()->languageCode(); @@ -1245,7 +1245,7 @@ class Page extends ModelWithContent * The uri is the same as the id, except * that it will be translated in multi-language setups */ - public function uri(string $languageCode = null): string + public function uri(string|null $languageCode = null): string { // set the id, depending on the parent if ($parent = $this->parent()) { @@ -1301,7 +1301,7 @@ class Page extends ModelWithContent */ public function urlForLanguage( $language = null, - array $options = null + array|null $options = null ): string { if ($options !== null) { return Url::to($this->urlForLanguage($language), $options); diff --git a/public/kirby/src/Cms/PageActions.php b/public/kirby/src/Cms/PageActions.php index 4145692..4e27018 100644 --- a/public/kirby/src/Cms/PageActions.php +++ b/public/kirby/src/Cms/PageActions.php @@ -578,7 +578,7 @@ trait PageActions * Create the sorting number for the page * depending on the blueprint settings */ - public function createNum(int $num = null): int + public function createNum(int|null $num = null): int { $mode = $this->blueprint()->num(); @@ -827,7 +827,7 @@ trait PageActions /** * @throws \Kirby\Exception\LogicException If the page is not included in the siblings collection */ - protected function resortSiblingsAfterListing(int $position = null): bool + protected function resortSiblingsAfterListing(int|null $position = null): bool { // get all siblings including the current page $siblings = $this diff --git a/public/kirby/src/Cms/PagePicker.php b/public/kirby/src/Cms/PagePicker.php index f8dccf8..e51464a 100644 --- a/public/kirby/src/Cms/PagePicker.php +++ b/public/kirby/src/Cms/PagePicker.php @@ -79,7 +79,7 @@ class PagePicker extends Picker * parent model that is currently selected * in the page picker. */ - public function modelToArray(Page|Site $model = null): array|null + public function modelToArray(Page|Site|null $model = null): array|null { if ($model === null) { return null; @@ -126,13 +126,13 @@ class PagePicker extends Picker if (empty($this->options['query']) === true) { $items = $this->itemsForParent(); - // when subpage navigation is enabled, a parent - // might be passed in addition to the query. - // The parent then takes priority. + // when subpage navigation is enabled, a parent + // might be passed in addition to the query. + // The parent then takes priority. } elseif ($this->options['subpages'] === true && empty($this->options['parent']) === false) { $items = $this->itemsForParent(); - // search by query + // search by query } else { $items = $this->itemsForQuery(); } diff --git a/public/kirby/src/Cms/PageRules.php b/public/kirby/src/Cms/PageRules.php index 8bc6736..bef0993 100644 --- a/public/kirby/src/Cms/PageRules.php +++ b/public/kirby/src/Cms/PageRules.php @@ -25,7 +25,7 @@ class PageRules * * @throws \Kirby\Exception\InvalidArgumentException If the given number is invalid */ - public static function changeNum(Page $page, int $num = null): bool + public static function changeNum(Page $page, int|null $num = null): bool { if ($num !== null && $num < 0) { throw new InvalidArgumentException(['key' => 'page.num.invalid']); @@ -86,7 +86,7 @@ class PageRules public static function changeStatus( Page $page, string $status, - int $position = null + int|null $position = null ): bool { if (isset($page->blueprint()->status()[$status]) === false) { throw new InvalidArgumentException(['key' => 'page.status.invalid']); diff --git a/public/kirby/src/Cms/Pages.php b/public/kirby/src/Cms/Pages.php index 692d047..8c96708 100644 --- a/public/kirby/src/Cms/Pages.php +++ b/public/kirby/src/Cms/Pages.php @@ -61,19 +61,19 @@ class Pages extends Collection if ($object instanceof self) { $this->data = array_merge($this->data, $object->data); - // add a page by id + // add a page by id } elseif ( is_string($object) === true && $page = $site->find($object) ) { $this->__set($page->id(), $page); - // add a page object + // add a page object } elseif ($object instanceof Page) { $this->__set($object->id(), $object); - // give a useful error message on invalid input; - // silently ignore "empty" values for compatibility with existing setups + // give a useful error message on invalid input; + // silently ignore "empty" values for compatibility with existing setups } elseif (in_array($object, [null, false, true], true) !== true) { throw new InvalidArgumentException('You must pass a Pages or Page object or an ID of an existing page to the Pages collection'); } @@ -142,8 +142,8 @@ class Pages extends Collection */ public static function factory( array $pages, - Page|Site $model = null, - bool $draft = null + Page|Site|null $model = null, + bool|null $draft = null ): static { $model ??= App::instance()->site(); $children = new static([], $model); @@ -248,7 +248,7 @@ class Pages extends Collection */ protected function findByKeyRecursive( string $id, - string $startAt = null, + string|null $startAt = null, bool $multiLang = false ) { $path = explode('/', $id); diff --git a/public/kirby/src/Cms/Pagination.php b/public/kirby/src/Cms/Pagination.php index fdefddd..223d80a 100644 --- a/public/kirby/src/Cms/Pagination.php +++ b/public/kirby/src/Cms/Pagination.php @@ -125,7 +125,7 @@ class Pagination extends BasePagination * If the `$page` variable is set, the URL * for that page will be returned. */ - public function pageUrl(int $page = null): string|null + public function pageUrl(int|null $page = null): string|null { if ($page === null) { return $this->pageUrl($this->page()); diff --git a/public/kirby/src/Cms/Picker.php b/public/kirby/src/Cms/Picker.php index da4b7a5..f3bcce0 100644 --- a/public/kirby/src/Cms/Picker.php +++ b/public/kirby/src/Cms/Picker.php @@ -68,7 +68,7 @@ abstract class Picker * array that is already optimized for the * panel picker component. */ - public function itemsToArray(Collection $items = null): array + public function itemsToArray(Collection|null $items = null): array { if ($items === null) { return []; diff --git a/public/kirby/src/Cms/Plugin.php b/public/kirby/src/Cms/Plugin.php index d20a4c3..cc6cc8f 100644 --- a/public/kirby/src/Cms/Plugin.php +++ b/public/kirby/src/Cms/Plugin.php @@ -77,7 +77,7 @@ class Plugin /** * Allows access to any composer.json field by method call */ - public function __call(string $key, array $arguments = null): mixed + public function __call(string $key, array|null $arguments = null): mixed { return $this->info()[$key] ?? null; } diff --git a/public/kirby/src/Cms/Responder.php b/public/kirby/src/Cms/Responder.php index e99ce56..640381e 100644 --- a/public/kirby/src/Cms/Responder.php +++ b/public/kirby/src/Cms/Responder.php @@ -75,7 +75,7 @@ class Responder * * @return $this|string|null */ - public function body(string $body = null): static|string|null + public function body(string|null $body = null): static|string|null { if ($body === null) { return $this->body; @@ -210,7 +210,7 @@ class Responder * * @return int|$this */ - public function code(int $code = null) + public function code(int|null $code = null) { if ($code === null) { return $this->code; @@ -266,7 +266,7 @@ class Responder * * @return array|$this */ - public function headers(array $headers = null) + public function headers(array|null $headers = null) { if ($headers === null) { $injectedHeaders = []; @@ -305,7 +305,7 @@ class Responder * * @return string|$this */ - public function json(array $json = null) + public function json(array|null $json = null) { if ($json !== null) { $this->body(json_encode($json)); @@ -334,7 +334,7 @@ class Responder /** * Creates and returns the response object from the config */ - public function send(string $body = null): Response + public function send(string|null $body = null): Response { if ($body !== null) { $this->body($body); @@ -365,7 +365,7 @@ class Responder * * @return string|$this */ - public function type(string $type = null) + public function type(string|null $type = null) { if ($type === null) { return $this->type; diff --git a/public/kirby/src/Cms/Role.php b/public/kirby/src/Cms/Role.php index 3579b62..ecdf2a6 100644 --- a/public/kirby/src/Cms/Role.php +++ b/public/kirby/src/Cms/Role.php @@ -82,7 +82,11 @@ class Role public static function factory(array $props, array $inject = []): static { - return new static($props + $inject); + // ensure to properly extend the blueprint + $props = $props + $inject; + $props = Blueprint::extend($props); + + return new static($props); } public function id(): string diff --git a/public/kirby/src/Cms/Roles.php b/public/kirby/src/Cms/Roles.php index b2a4dec..4b33db6 100644 --- a/public/kirby/src/Cms/Roles.php +++ b/public/kirby/src/Cms/Roles.php @@ -96,7 +96,7 @@ class Roles extends Collection return $collection->sort('name', 'asc'); } - public static function load(string $root = null, array $inject = []): static + public static function load(string|null $root = null, array $inject = []): static { $kirby = App::instance(); $roles = new static(); diff --git a/public/kirby/src/Cms/Search.php b/public/kirby/src/Cms/Search.php index 14add5c..b8e66f9 100644 --- a/public/kirby/src/Cms/Search.php +++ b/public/kirby/src/Cms/Search.php @@ -17,7 +17,7 @@ namespace Kirby\Cms; class Search { public static function files( - string $query = null, + string|null $query = null, array $params = [] ): Files { return App::instance()->site()->index()->files()->search($query, $params); @@ -36,14 +36,14 @@ class Search } public static function pages( - string $query = null, + string|null $query = null, array $params = [] ): Pages { return App::instance()->site()->index()->search($query, $params); } public static function users( - string $query = null, + string|null $query = null, array $params = [] ): Users { return App::instance()->users()->search($query, $params); diff --git a/public/kirby/src/Cms/Structure.php b/public/kirby/src/Cms/Structure.php index 222881d..efdfad1 100644 --- a/public/kirby/src/Cms/Structure.php +++ b/public/kirby/src/Cms/Structure.php @@ -30,7 +30,7 @@ class Structure extends Items * an array of item props */ public static function factory( - array $items = null, + array|null $items = null, array $params = [] ): static { if (is_array($items) === true) { diff --git a/public/kirby/src/Cms/System.php b/public/kirby/src/Cms/System.php index f1a7ee6..47a08ec 100644 --- a/public/kirby/src/Cms/System.php +++ b/public/kirby/src/Cms/System.php @@ -364,7 +364,7 @@ class System { return version_compare(PHP_VERSION, '8.1.0', '>=') === true && - version_compare(PHP_VERSION, '8.4.0', '<') === true; + version_compare(PHP_VERSION, '8.5.0', '<') === true; } /** @@ -385,7 +385,7 @@ class System * @throws \Kirby\Exception\Exception * @throws \Kirby\Exception\InvalidArgumentException */ - public function register(string $license = null, string $email = null): bool + public function register(string|null $license = null, string|null $email = null): bool { $license = new License( code: $license, @@ -405,6 +405,16 @@ class System return $this->app->environment()->get('SERVER_SOFTWARE', '–'); } + /** + * Returns the short version of the detected server software + * @since 4.6.0 + */ + public function serverSoftwareShort(): string + { + $software = $this->serverSoftware(); + return strtok($software, ' '); + } + /** * Check for a writable sessions folder */ diff --git a/public/kirby/src/Cms/Translation.php b/public/kirby/src/Cms/Translation.php index 680f212..d71d336 100644 --- a/public/kirby/src/Cms/Translation.php +++ b/public/kirby/src/Cms/Translation.php @@ -87,7 +87,7 @@ class Translation * Returns a single translation * string by key */ - public function get(string $key, string $default = null): string|null + public function get(string $key, string|null $default = null): string|null { return $this->data[$key] ?? $default; } diff --git a/public/kirby/src/Cms/Url.php b/public/kirby/src/Cms/Url.php index 2ec0fd7..eb5036f 100644 --- a/public/kirby/src/Cms/Url.php +++ b/public/kirby/src/Cms/Url.php @@ -44,9 +44,9 @@ class Url extends BaseUrl * @return string The safe string */ public static function slug( - string $string = null, - string $separator = null, - string $allowed = null, + string|null $string = null, + string|null $separator = null, + string|null $allowed = null, ): string { $maxlength = App::instance()->option('slugs.maxlength', 255); return Str::slug($string, $separator, $allowed, $maxlength); diff --git a/public/kirby/src/Cms/User.php b/public/kirby/src/Cms/User.php index d72df94..6b09900 100644 --- a/public/kirby/src/Cms/User.php +++ b/public/kirby/src/Cms/User.php @@ -239,7 +239,7 @@ class User extends ModelWithContent */ public static function hashPassword( #[SensitiveParameter] - string $password = null + string|null $password = null ): string|null { if ($password !== null) { $password = password_hash($password, PASSWORD_DEFAULT); @@ -279,7 +279,7 @@ class User extends ModelWithContent /** * Compares the current object with the given user object */ - public function is(User $user = null): bool + public function is(User|null $user = null): bool { if ($user === null) { return false; @@ -625,7 +625,7 @@ class User extends ModelWithContent * * @return $this */ - protected function setBlueprint(array $blueprint = null): static + protected function setBlueprint(array|null $blueprint = null): static { if ($blueprint !== null) { $blueprint['model'] = $this; @@ -683,7 +683,7 @@ class User extends ModelWithContent * (`null` to keep the original token) */ public function toString( - string $template = null, + string|null $template = null, array $data = [], string|null $fallback = '', string $handler = 'template' @@ -711,7 +711,7 @@ class User extends ModelWithContent */ public function validatePassword( #[SensitiveParameter] - string $password = null + string|null $password = null ): bool { if (empty($this->password()) === true) { throw new NotFoundException(['key' => 'user.password.undefined']); diff --git a/public/kirby/src/Cms/UserActions.php b/public/kirby/src/Cms/UserActions.php index 728acc1..3f0ccac 100644 --- a/public/kirby/src/Cms/UserActions.php +++ b/public/kirby/src/Cms/UserActions.php @@ -209,7 +209,7 @@ trait UserActions /** * Creates a new User from the given props and returns a new User object */ - public static function create(array $props = null): User + public static function create(array|null $props = null): User { $data = $props; @@ -364,8 +364,8 @@ trait UserActions * Updates the user data */ public function update( - array $input = null, - string $languageCode = null, + array|null $input = null, + string|null $languageCode = null, bool $validate = false ): static { $user = parent::update($input, $languageCode, $validate); @@ -408,7 +408,7 @@ trait UserActions */ protected function writePassword( #[SensitiveParameter] - string $password = null + string|null $password = null ): bool { return $this->writeSecret('password', $password); } diff --git a/public/kirby/src/Cms/Users.php b/public/kirby/src/Cms/Users.php index df2f6c3..4014402 100644 --- a/public/kirby/src/Cms/Users.php +++ b/public/kirby/src/Cms/Users.php @@ -49,19 +49,19 @@ class Users extends Collection if ($object instanceof self) { $this->data = array_merge($this->data, $object->data); - // add a user by id + // add a user by id } elseif ( is_string($object) === true && $user = App::instance()->user($object) ) { $this->__set($user->id(), $user); - // add a user object + // add a user object } elseif ($object instanceof User) { $this->__set($object->id(), $object); - // give a useful error message on invalid input; - // silently ignore "empty" values for compatibility with existing setups + // give a useful error message on invalid input; + // silently ignore "empty" values for compatibility with existing setups } elseif (in_array($object, [null, false, true], true) !== true) { throw new InvalidArgumentException('You must pass a Users or User object or an ID of an existing user to the Users collection'); } diff --git a/public/kirby/src/Content/Content.php b/public/kirby/src/Content/Content.php index 978c8d2..0169287 100644 --- a/public/kirby/src/Content/Content.php +++ b/public/kirby/src/Content/Content.php @@ -54,7 +54,7 @@ class Content */ public function __construct( array $data = [], - ModelWithContent $parent = null, + ModelWithContent|null $parent = null, bool $normalize = true ) { if ($normalize === true) { @@ -149,7 +149,7 @@ class Content * Returns either a single field object * or all registered fields */ - public function get(string $key = null): Field|array + public function get(string|null $key = null): Field|array { if ($key === null) { return $this->fields(); @@ -234,7 +234,7 @@ class Content * @return $this */ public function update( - array $content = null, + array|null $content = null, bool $overwrite = false ): static { $content = array_change_key_case((array)$content, CASE_LOWER); diff --git a/public/kirby/src/Content/ContentTranslation.php b/public/kirby/src/Content/ContentTranslation.php index c04ec32..e341d15 100644 --- a/public/kirby/src/Content/ContentTranslation.php +++ b/public/kirby/src/Content/ContentTranslation.php @@ -145,7 +145,7 @@ class ContentTranslation * * @return $this */ - public function update(array $data = null, bool $overwrite = false): static + public function update(array|null $data = null, bool $overwrite = false): static { $data = array_change_key_case((array)$data); diff --git a/public/kirby/src/Content/Field.php b/public/kirby/src/Content/Field.php index 82ae4b6..201ccc2 100644 --- a/public/kirby/src/Content/Field.php +++ b/public/kirby/src/Content/Field.php @@ -210,7 +210,7 @@ class Field * the modified field will be returned. Otherwise it * will return the field value. */ - public function value(string|Closure $value = null): mixed + public function value(string|Closure|null $value = null): mixed { if ($value === null) { return $this->value; diff --git a/public/kirby/src/Data/Txt.php b/public/kirby/src/Data/Txt.php index 7ea7d06..985f5ea 100644 --- a/public/kirby/src/Data/Txt.php +++ b/public/kirby/src/Data/Txt.php @@ -45,7 +45,7 @@ class Txt extends Handler // avoid problems with arrays if (is_array($value) === true) { $value = Data::encode($value, 'yaml'); - // avoid problems with localized floats + // avoid problems with localized floats } elseif (is_float($value) === true) { $value = Str::float($value); } diff --git a/public/kirby/src/Database/Query.php b/public/kirby/src/Database/Query.php index 1181b98..73dfe10 100644 --- a/public/kirby/src/Database/Query.php +++ b/public/kirby/src/Database/Query.php @@ -421,7 +421,7 @@ class Query * @param string|null $order * @return $this */ - public function order(string $order = null) + public function order(string|null $order = null) { $this->order = $order; return $this; @@ -828,13 +828,13 @@ class Query if ($args[0] === null) { return $current; - // ->where('username like "myuser"'); + // ->where('username like "myuser"'); } elseif (is_string($args[0]) === true) { // simply add the entire string to the where clause // escaping or using bindings has to be done before calling this method $result = $args[0]; - // ->where(['username' => 'myuser']); + // ->where(['username' => 'myuser']); } elseif (is_array($args[0]) === true) { // simple array mode (AND operator) $sql = $this->database->sql()->values($this->table, $args[0], ' AND ', true, true); @@ -868,7 +868,7 @@ class Query // store the bindings $this->bindings($args[1]); - // ->where('username like ?', 'myuser') + // ->where('username like ?', 'myuser') } elseif (is_string($args[0]) === true && is_scalar($args[1]) === true) { // prepared where clause $result = $args[0]; @@ -913,7 +913,7 @@ class Query }; $result = $key . ' ' . $predicate . ' ' . $values; - // ->where('username', 'like', 'myuser'); + // ->where('username', 'like', 'myuser'); } else { $predicates = [ '=', '>=', '>', '<=', '<', '<>', '!=', '<=>', diff --git a/public/kirby/src/Database/Sql.php b/public/kirby/src/Database/Sql.php index 16349af..877d61f 100644 --- a/public/kirby/src/Database/Sql.php +++ b/public/kirby/src/Database/Sql.php @@ -146,7 +146,7 @@ abstract class Sql * Combines an identifier (table and column) * * @param $values bool Whether the identifier is going to be used for a VALUES clause; - * only relevant for SQLite + * only relevant for SQLite */ public function combineIdentifier(string $table, string $column, bool $values = false): string { diff --git a/public/kirby/src/Database/Sql/Sqlite.php b/public/kirby/src/Database/Sql/Sqlite.php index fcb36b5..267014e 100644 --- a/public/kirby/src/Database/Sql/Sqlite.php +++ b/public/kirby/src/Database/Sql/Sqlite.php @@ -130,7 +130,7 @@ class Sqlite extends Sql public function tables(): array { return [ - 'query' => 'SELECT name FROM sqlite_master WHERE type = "table" OR type = "view"', + 'query' => 'SELECT name FROM sqlite_master WHERE type = \'table\' OR type = \'view\'', 'bindings' => [] ]; } diff --git a/public/kirby/src/Filesystem/Dir.php b/public/kirby/src/Filesystem/Dir.php index 680789b..c12b7d1 100644 --- a/public/kirby/src/Filesystem/Dir.php +++ b/public/kirby/src/Filesystem/Dir.php @@ -149,7 +149,7 @@ class Dir string $dir, bool $recursive = false, array|false|null $ignore = [], - string $path = null + string|null $path = null ): array { $result = []; $dir = realpath($dir); @@ -434,7 +434,7 @@ class Dir */ public static function modified( string $dir, - string $format = null, + string|null $format = null, string|null $handler = null ): int|string { $modified = filemtime($dir); diff --git a/public/kirby/src/Filesystem/File.php b/public/kirby/src/Filesystem/File.php index 035c25c..fc9beec 100644 --- a/public/kirby/src/Filesystem/File.php +++ b/public/kirby/src/Filesystem/File.php @@ -59,8 +59,8 @@ class File * @throws \Kirby\Exception\InvalidArgumentException When the model does not use the `Kirby\Filesystem\IsFile` trait */ public function __construct( - array|string $props = null, - string $url = null + array|string|null $props = null, + string|null $url = null ) { // Legacy support for old constructor of // the `Kirby\Image\Image` class diff --git a/public/kirby/src/Filesystem/Mime.php b/public/kirby/src/Filesystem/Mime.php index 5b83918..2bb2a03 100644 --- a/public/kirby/src/Filesystem/Mime.php +++ b/public/kirby/src/Filesystem/Mime.php @@ -251,7 +251,7 @@ class Mime /** * Returns the extension for a given MIME type */ - public static function toExtension(string $mime = null): string|false + public static function toExtension(string|null $mime = null): string|false { foreach (static::$types as $key => $value) { if (is_array($value) === true && in_array($mime, $value) === true) { @@ -269,7 +269,7 @@ class Mime /** * Returns all available extensions for a given MIME type */ - public static function toExtensions(string $mime = null, bool $matchWildcards = false): array + public static function toExtensions(string|null $mime = null, bool $matchWildcards = false): array { $extensions = []; $testMime = fn (string $v) => static::matches($v, $mime); diff --git a/public/kirby/src/Form/Field.php b/public/kirby/src/Form/Field.php index cb95fd4..114a826 100644 --- a/public/kirby/src/Form/Field.php +++ b/public/kirby/src/Form/Field.php @@ -127,7 +127,7 @@ class Field extends Component /** * Sets the focus on this field when the form loads. Only the first field with this label gets */ - 'autofocus' => function (bool $autofocus = null): bool { + 'autofocus' => function (bool|null $autofocus = null): bool { return $autofocus ?? false; }, /** @@ -145,7 +145,7 @@ class Field extends Component /** * If `true`, the field is no longer editable and will not be saved */ - 'disabled' => function (bool $disabled = null): bool { + 'disabled' => function (bool|null $disabled = null): bool { return $disabled ?? false; }, /** @@ -157,7 +157,7 @@ class Field extends Component /** * Optional icon that will be shown at the end of the field */ - 'icon' => function (string $icon = null) { + 'icon' => function (string|null $icon = null) { return $icon; }, /** @@ -175,7 +175,7 @@ class Field extends Component /** * If `true`, the field has to be filled in correctly to be saved. */ - 'required' => function (bool $required = null): bool { + 'required' => function (bool|null $required = null): bool { return $required ?? false; }, /** diff --git a/public/kirby/src/Form/Field/BlocksField.php b/public/kirby/src/Form/Field/BlocksField.php index e37d373..2d66a6b 100644 --- a/public/kirby/src/Form/Field/BlocksField.php +++ b/public/kirby/src/Form/Field/BlocksField.php @@ -214,7 +214,7 @@ class BlocksField extends FieldClass 'action' => function ( string $fieldsetType, string $fieldName, - string $path = null + string|null $path = null ) use ($field) { $fields = $field->fields($fieldsetType); $field = $field->form($fields)->field($fieldName); @@ -276,7 +276,7 @@ class BlocksField extends FieldClass ); } - protected function setGroup(string $group = null): void + protected function setGroup(string|null $group = null): void { $this->group = $group; } diff --git a/public/kirby/src/Form/Field/LayoutField.php b/public/kirby/src/Form/Field/LayoutField.php index 2e595c0..d92c352 100644 --- a/public/kirby/src/Form/Field/LayoutField.php +++ b/public/kirby/src/Form/Field/LayoutField.php @@ -175,7 +175,7 @@ class LayoutField extends BlocksField 'method' => 'ALL', 'action' => function ( string $fieldName, - string $path = null + string|null $path = null ) use ($field): array { $form = $field->attrsForm(); $field = $form->field($fieldName); diff --git a/public/kirby/src/Form/FieldClass.php b/public/kirby/src/Form/FieldClass.php index cc4115e..613122c 100644 --- a/public/kirby/src/Form/FieldClass.php +++ b/public/kirby/src/Form/FieldClass.php @@ -610,7 +610,7 @@ abstract class FieldClass } protected function valueToJson( - array $value = null, + array|null $value = null, bool $pretty = false ): string { $constants = JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE; @@ -622,7 +622,7 @@ abstract class FieldClass return json_encode($value, $constants); } - protected function valueToYaml(array $value = null): string + protected function valueToYaml(array|null $value = null): string { return Data::encode($value, 'yaml'); } diff --git a/public/kirby/src/Form/Fields.php b/public/kirby/src/Form/Fields.php index ef46f2e..95c8fec 100644 --- a/public/kirby/src/Form/Fields.php +++ b/public/kirby/src/Form/Fields.php @@ -39,7 +39,7 @@ class Fields extends Collection * array and also does that for every * included field. */ - public function toArray(Closure $map = null): array + public function toArray(Closure|null $map = null): array { $array = []; diff --git a/public/kirby/src/Form/Mixin/Max.php b/public/kirby/src/Form/Mixin/Max.php index 3141bbe..1641917 100644 --- a/public/kirby/src/Form/Mixin/Max.php +++ b/public/kirby/src/Form/Mixin/Max.php @@ -11,7 +11,7 @@ trait Max return $this->max; } - protected function setMax(int $max = null) + protected function setMax(int|null $max = null) { $this->max = $max; } diff --git a/public/kirby/src/Form/Mixin/Min.php b/public/kirby/src/Form/Mixin/Min.php index 1b585e1..aa57af5 100644 --- a/public/kirby/src/Form/Mixin/Min.php +++ b/public/kirby/src/Form/Mixin/Min.php @@ -11,7 +11,7 @@ trait Min return $this->min; } - protected function setMin(int $min = null) + protected function setMin(int|null $min = null) { $this->min = $min; } diff --git a/public/kirby/src/Http/Environment.php b/public/kirby/src/Http/Environment.php index bb8f4f6..c7b1f05 100644 --- a/public/kirby/src/Http/Environment.php +++ b/public/kirby/src/Http/Environment.php @@ -153,8 +153,8 @@ class Environment * @param array|null $info Optional override for `$_SERVER` */ public function detect( - array $options = null, - array $info = null + array|null $options = null, + array|null $info = null ): array { $defaults = [ 'cli' => null, @@ -178,11 +178,11 @@ class Environment if ($options['allowed'] === '*' || $options['allowed'] === ['*']) { $this->detectAuto(true); - // fixed environments + // fixed environments } elseif (empty($options['allowed']) === false) { $this->detectAllowed($options['allowed']); - // secure auto-detection + // secure auto-detection } else { $this->detectAuto(); } diff --git a/public/kirby/src/Http/Route.php b/public/kirby/src/Http/Route.php index 7d6dd7d..8bc8348 100644 --- a/public/kirby/src/Http/Route.php +++ b/public/kirby/src/Http/Route.php @@ -63,7 +63,7 @@ class Route /** * Magic getter for route attributes */ - public function __call(string $key, array $args = null): mixed + public function __call(string $key, array|null $args = null): mixed { return $this->attributes[$key] ?? null; } diff --git a/public/kirby/src/Http/Url.php b/public/kirby/src/Http/Url.php index 9360040..8139b94 100644 --- a/public/kirby/src/Http/Url.php +++ b/public/kirby/src/Http/Url.php @@ -220,7 +220,7 @@ class Url */ public static function to( string|null $path = null, - array $options = null + array|null $options = null ): string { // make sure $path is string $path ??= ''; diff --git a/public/kirby/src/Image/Image.php b/public/kirby/src/Image/Image.php index 4e7b0de..f012a1e 100644 --- a/public/kirby/src/Image/Image.php +++ b/public/kirby/src/Image/Image.php @@ -2,6 +2,7 @@ namespace Kirby\Image; +use Kirby\Cms\FileVersion; use Kirby\Content\Content; use Kirby\Exception\LogicException; use Kirby\Filesystem\File; @@ -115,15 +116,20 @@ class Image extends File */ public function html(array $attr = []): string { + $model = match (true) { + $this->model instanceof FileVersion => $this->model->original(), + default => $this->model + }; + // if no alt text explicitly provided, // try to infer from model content file if ( - $this->model !== null && - method_exists($this->model, 'content') === true && - $this->model->content() instanceof Content && - $this->model->content()->get('alt')->isNotEmpty() === true + $model !== null && + method_exists($model, 'content') === true && + $model->content() instanceof Content && + $model->content()->get('alt')->isNotEmpty() === true ) { - $attr['alt'] ??= $this->model->content()->get('alt')->value(); + $attr['alt'] ??= $model->content()->get('alt')->value(); } if ($url = $this->url()) { diff --git a/public/kirby/src/Option/Option.php b/public/kirby/src/Option/Option.php index 3e58741..7de4b42 100644 --- a/public/kirby/src/Option/Option.php +++ b/public/kirby/src/Option/Option.php @@ -28,7 +28,7 @@ class Option $this->text ??= new NodeText(['en' => $this->value]); } - public static function factory(string|int|float|null|array $props): static + public static function factory(string|int|float|array|null $props): static { if (is_array($props) === false) { $props = ['value' => $props]; diff --git a/public/kirby/src/Panel/Model.php b/public/kirby/src/Panel/Model.php index 9391780..b00873f 100644 --- a/public/kirby/src/Panel/Model.php +++ b/public/kirby/src/Panel/Model.php @@ -115,12 +115,19 @@ abstract class Model $blueprint = null; } + // convert string blueprint settings to proper array + if (is_string($blueprint) === true) { + $blueprint = ['query' => $blueprint]; + } + // skip image thumbnail if option // is explicitly set to show the icon if ($settings === 'icon') { $settings = ['query' => false]; - } elseif (is_string($settings) === true) { - // convert string settings to proper array + } + + // convert string settings to proper array + if (is_string($settings) === true) { $settings = ['query' => $settings]; } diff --git a/public/kirby/src/Panel/Panel.php b/public/kirby/src/Panel/Panel.php index e6f9ff6..b88bcab 100644 --- a/public/kirby/src/Panel/Panel.php +++ b/public/kirby/src/Panel/Panel.php @@ -235,7 +235,7 @@ class Panel if ($result === null || $result === false) { $result = new NotFoundException('The data could not be found'); - // interpret strings as errors + // interpret strings as errors } elseif (is_string($result) === true) { $result = new Exception($result); } diff --git a/public/kirby/src/Panel/View.php b/public/kirby/src/Panel/View.php index 9058e5e..c857710 100644 --- a/public/kirby/src/Panel/View.php +++ b/public/kirby/src/Panel/View.php @@ -330,15 +330,15 @@ class View if ($data instanceof Redirect) { return Response::redirect($data->location(), $data->code()); - // handle Kirby exceptions + // handle Kirby exceptions } elseif ($data instanceof Exception) { $data = static::error($data->getMessage(), $data->getHttpCode()); - // handle regular exceptions + // handle regular exceptions } elseif ($data instanceof Throwable) { $data = static::error($data->getMessage(), 500); - // only expect arrays from here on + // only expect arrays from here on } elseif (is_array($data) === false) { $data = static::error('Invalid Panel response', 500); } diff --git a/public/kirby/src/Parsley/Parsley.php b/public/kirby/src/Parsley/Parsley.php index 3f2242e..b6d834b 100644 --- a/public/kirby/src/Parsley/Parsley.php +++ b/public/kirby/src/Parsley/Parsley.php @@ -212,7 +212,7 @@ class Parsley ) { $this->blocks[$lastIndex]['content']['text'] .= ' ' . $block['content']['text']; - // append + // append } else { $this->blocks[] = $block; } diff --git a/public/kirby/src/Query/Expression.php b/public/kirby/src/Query/Expression.php index f205c30..84928c3 100644 --- a/public/kirby/src/Query/Expression.php +++ b/public/kirby/src/Query/Expression.php @@ -25,7 +25,7 @@ class Expression /** * Parses an expression string into its parts */ - public static function factory(string $expression, Query $parent = null): static|Segments + public static function factory(string $expression, Query|null $parent = null): static|Segments { // split into different expression parts and operators $parts = static::parse($expression); diff --git a/public/kirby/src/Query/Query.php b/public/kirby/src/Query/Query.php index ab6381c..20cefa5 100644 --- a/public/kirby/src/Query/Query.php +++ b/public/kirby/src/Query/Query.php @@ -131,12 +131,12 @@ Query::$entries['site'] = function (): Site { Query::$entries['t'] = function ( string $key, - string|array $fallback = null, - string $locale = null + string|array|null $fallback = null, + string|null $locale = null ): string|null { return I18n::translate($key, $fallback, $locale); }; -Query::$entries['user'] = function (string $id = null): User|null { +Query::$entries['user'] = function (string|null $id = null): User|null { return App::instance()->user($id); }; diff --git a/public/kirby/src/Query/Segments.php b/public/kirby/src/Query/Segments.php index d2af470..c4069a1 100644 --- a/public/kirby/src/Query/Segments.php +++ b/public/kirby/src/Query/Segments.php @@ -28,7 +28,7 @@ class Segments extends Collection * Split query string into segments by dot * but not inside (nested) parens */ - public static function factory(string $query, Query $parent = null): static + public static function factory(string $query, Query|null $parent = null): static { $segments = static::parse($query); $position = 0; diff --git a/public/kirby/src/Session/Session.php b/public/kirby/src/Session/Session.php index e530258..39478cd 100644 --- a/public/kirby/src/Session/Session.php +++ b/public/kirby/src/Session/Session.php @@ -149,7 +149,7 @@ class Session * @param string|null $mode Optional new transmission mode * @return string Transmission mode */ - public function mode(string $mode = null): string + public function mode(string|null $mode = null): string { if ($mode !== null) { // only allow this if this is a new session, otherwise the change @@ -214,7 +214,7 @@ class Session * @param int|null $duration Optional new duration in seconds to set * @return int Number of seconds */ - public function duration(int $duration = null): int + public function duration(int|null $duration = null): int { if ($duration !== null) { // verify that the duration is at least 1 second diff --git a/public/kirby/src/Session/Sessions.php b/public/kirby/src/Session/Sessions.php index 581d144..0606b33 100644 --- a/public/kirby/src/Session/Sessions.php +++ b/public/kirby/src/Session/Sessions.php @@ -105,7 +105,7 @@ class Sessions * @param string $token Session token, either including or without the key * @param string|null $mode Optional transmission mode override */ - public function get(string $token, string $mode = null): Session + public function get(string $token, string|null $mode = null): Session { return $this->cache[$token] ??= new Session( $this, diff --git a/public/kirby/src/Toolkit/A.php b/public/kirby/src/Toolkit/A.php index 1970cc9..d8ac7a2 100644 --- a/public/kirby/src/Toolkit/A.php +++ b/public/kirby/src/Toolkit/A.php @@ -508,7 +508,7 @@ class A ) { $merged[] = $value; - // recursively merge the two array values + // recursively merge the two array values } elseif ( is_array($value) === true && isset($merged[$key]) === true && @@ -516,7 +516,7 @@ class A ) { $merged[$key] = static::merge($merged[$key], $value, $mode); - // simply overwrite with the value from the second array + // simply overwrite with the value from the second array } else { $merged[$key] = $value; } diff --git a/public/kirby/src/Toolkit/Collection.php b/public/kirby/src/Toolkit/Collection.php index 7c9fa16..a962bcb 100644 --- a/public/kirby/src/Toolkit/Collection.php +++ b/public/kirby/src/Toolkit/Collection.php @@ -198,7 +198,7 @@ class Collection extends Iterator implements Countable * @param array|null $data * @return array|$this */ - public function data(array $data = null) + public function data(array|null $data = null) { if ($data === null) { return $this->data; @@ -775,7 +775,7 @@ class Collection extends Iterator implements Countable * @param bool $unique * @return array */ - public function pluck(string $field, string $split = null, bool $unique = false): array + public function pluck(string $field, string|null $split = null, bool $unique = false): array { $result = []; @@ -956,7 +956,7 @@ class Collection extends Iterator implements Countable * @param int|null $limit The optional number of elements to return * @return $this|static */ - public function slice(int $offset = 0, int $limit = null) + public function slice(int $offset = 0, int|null $limit = null) { if ($offset === 0 && $limit === null) { return $this; @@ -1027,7 +1027,7 @@ class Collection extends Iterator implements Countable } elseif ($arg === SORT_DESC || $argLower === 'desc') { $fields[$currentField]['direction'] = SORT_DESC; - // other string: the field name + // other string: the field name } elseif (is_string($arg) === true) { $values = []; @@ -1041,7 +1041,7 @@ class Collection extends Iterator implements Countable $fields[] = ['field' => $arg, 'values' => $values]; - // callable: custom field values + // callable: custom field values } elseif (is_callable($arg) === true) { $values = []; @@ -1055,7 +1055,7 @@ class Collection extends Iterator implements Countable $fields[] = ['field' => null, 'values' => $values]; - // flags + // flags } else { $fields[$currentField]['flags'] = $arg; } @@ -1126,7 +1126,7 @@ class Collection extends Iterator implements Countable * @param \Closure|null $map * @return array */ - public function toArray(Closure $map = null): array + public function toArray(Closure|null $map = null): array { if ($map !== null) { return array_map($map, $this->data); @@ -1163,7 +1163,7 @@ class Collection extends Iterator implements Countable * @param Closure|null $map * @return array */ - public function values(Closure $map = null): array + public function values(Closure|null $map = null): array { $data = $map === null ? $this->data : array_map($map, $this->data); return array_values($data); @@ -1181,7 +1181,7 @@ class Collection extends Iterator implements Countable * @param \Closure|null $fallback * @return mixed */ - public function when($condition, Closure $callback, Closure $fallback = null) + public function when($condition, Closure $callback, Closure|null $fallback = null) { if ($condition) { return $callback->call($this, $condition); diff --git a/public/kirby/src/Toolkit/Facade.php b/public/kirby/src/Toolkit/Facade.php index b1547ec..04e9e15 100644 --- a/public/kirby/src/Toolkit/Facade.php +++ b/public/kirby/src/Toolkit/Facade.php @@ -23,7 +23,7 @@ abstract class Facade /** * Proxy for all public instance calls */ - public static function __callStatic(string $method, array $args = null) + public static function __callStatic(string $method, array|null $args = null) { return static::instance()->$method(...$args); } diff --git a/public/kirby/src/Toolkit/Html.php b/public/kirby/src/Toolkit/Html.php index 56c4ed8..9170c67 100644 --- a/public/kirby/src/Toolkit/Html.php +++ b/public/kirby/src/Toolkit/Html.php @@ -405,7 +405,7 @@ class Html extends Xml string $name, array|string|null $content = '', array $attr = [], - string $indent = null, + string|null $indent = null, int $level = 0 ): string { // treat an explicit `null` value as an empty tag diff --git a/public/kirby/src/Toolkit/I18n.php b/public/kirby/src/Toolkit/I18n.php index 0c790de..793072c 100644 --- a/public/kirby/src/Toolkit/I18n.php +++ b/public/kirby/src/Toolkit/I18n.php @@ -78,7 +78,7 @@ class I18n /** * Formats a number */ - public static function formatNumber(int|float $number, string $locale = null): string + public static function formatNumber(int|float $number, string|null $locale = null): string { $locale ??= static::locale(); $formatter = static::decimalNumberFormatter($locale); @@ -108,7 +108,7 @@ class I18n */ public static function template( string $key, - string|array $fallback = null, + string|array|null $fallback = null, array|null $replace = null, string|null $locale = null ): string { @@ -130,8 +130,8 @@ class I18n */ public static function translate( string|array|null $key, - string|array $fallback = null, - string $locale = null + string|array|null $fallback = null, + string|null $locale = null ): string|array|Closure|null { // use current locale if no specific is passed $locale ??= static::locale(); @@ -242,7 +242,7 @@ class I18n * by locale. If the translation does not exist * yet, the loader will try to load it, if defined. */ - public static function translation(string $locale = null): array + public static function translation(string|null $locale = null): array { $locale ??= static::locale(); @@ -304,7 +304,7 @@ class I18n public static function translateCount( string $key, int $count, - string $locale = null, + string|null $locale = null, bool $formatNumber = true ) { $locale ??= static::locale(); diff --git a/public/kirby/src/Toolkit/Properties.php b/public/kirby/src/Toolkit/Properties.php index 8ab1a77..64575ba 100644 --- a/public/kirby/src/Toolkit/Properties.php +++ b/public/kirby/src/Toolkit/Properties.php @@ -96,7 +96,7 @@ trait Properties } } - protected function setProperties($props, array $keys = null) + protected function setProperties($props, array|null $keys = null) { foreach (get_object_vars($this) as $name => $default) { if ($name === 'propertyData') { diff --git a/public/kirby/src/Toolkit/Silo.php b/public/kirby/src/Toolkit/Silo.php index d377dcc..ace941b 100644 --- a/public/kirby/src/Toolkit/Silo.php +++ b/public/kirby/src/Toolkit/Silo.php @@ -30,7 +30,7 @@ class Silo return static::$data; } - public static function get(string|array $key = null, $default = null) + public static function get(string|array|null $key = null, $default = null) { if ($key === null) { return static::$data; @@ -42,7 +42,7 @@ class Silo /** * Removes an item from the data array */ - public static function remove(string $key = null): array + public static function remove(string|null $key = null): array { // reset the entire array if ($key === null) { diff --git a/public/kirby/src/Toolkit/Str.php b/public/kirby/src/Toolkit/Str.php index 73fdbf6..0a4dde4 100644 --- a/public/kirby/src/Toolkit/Str.php +++ b/public/kirby/src/Toolkit/Str.php @@ -263,7 +263,7 @@ class Str * Returns everything between two strings from the first occurrence of a given string */ public static function between( - string $string = null, + string|null $string, string $start, string $end ): string { @@ -275,7 +275,7 @@ class Str * * @param string $value The string to convert */ - public static function camel(string $value = null): string + public static function camel(string|null $value = null): string { return lcfirst(static::studly($value)); } @@ -286,7 +286,7 @@ class Str * * @param string $value The string to convert */ - public static function camelToKebab(string $value = null): string + public static function camelToKebab(string|null $value = null): string { return static::lower(preg_replace('!([a-z0-9])([A-Z])!', '$1-$2', $value)); } @@ -295,7 +295,7 @@ class Str * Checks if a str contains another string */ public static function contains( - string $string = null, + string|null $string, string $needle, bool $caseInsensitive = false ): bool { @@ -316,7 +316,7 @@ class Str */ public static function date( int|null $time = null, - string|IntlDateFormatter $format = null, + string|IntlDateFormatter|null $format = null, string|null $handler = null ): string|int|false { if (is_null($format) === true) { @@ -365,7 +365,7 @@ class Str public static function convert( string $string, string $targetEncoding, - string $sourceEncoding = null + string|null $sourceEncoding = null ): string { // detect the source encoding if not passed as third argument $sourceEncoding ??= static::encoding($string); @@ -414,7 +414,7 @@ class Str * Checks if a string ends with the passed needle */ public static function endsWith( - string $string = null, + string|null $string, string $needle, bool $caseInsensitive = false ): bool { @@ -574,7 +574,7 @@ class Str /** * Convert a string to kebab case. */ - public static function kebab(string $value = null): string + public static function kebab(string|null $value = null): string { return static::snake($value, '-'); } @@ -582,7 +582,7 @@ class Str /** * Convert a kebab case string to camel case. */ - public static function kebabToCamel(string $value = null): string + public static function kebabToCamel(string|null $value = null): string { return ucfirst(preg_replace_callback( '/-(.)/', @@ -594,7 +594,7 @@ class Str /** * A UTF-8 safe version of strlen() */ - public static function length(string $string = null): int + public static function length(string|null $string = null): int { return mb_strlen($string ?? '', 'UTF-8'); } @@ -602,7 +602,7 @@ class Str /** * A UTF-8 safe version of strtolower() */ - public static function lower(string $string = null): string + public static function lower(string|null $string = null): string { return mb_strtolower($string ?? '', 'UTF-8'); } @@ -707,7 +707,7 @@ class Str * @throws \Kirby\Exception\InvalidArgumentException for empty $needle */ public static function position( - string $string = null, + string|null $string, string $needle, bool $caseInsensitive = false ): int|false { @@ -739,7 +739,7 @@ class Str * @param string $type Pool type (type of allowed characters) */ public static function random( - int $length = null, + int|null $length = null, string $type = 'alphaNum' ): string|false { $length ??= random_int(5, 10); @@ -967,7 +967,7 @@ class Str * @return string The filled-in and partially escaped string */ public static function safeTemplate( - string $string = null, + string|null $string = null, array $data = [], array $options = [] ): string { @@ -1024,7 +1024,7 @@ class Str * @return string The shortened string */ public static function short( - string $string = null, + string|null $string = null, int $length = 0, string $appendix = '…' ): string { @@ -1129,9 +1129,9 @@ class Str * @return string The safe string */ public static function slug( - string $string = null, - string $separator = null, - string $allowed = null, + string|null $string = null, + string|null $separator = null, + string|null $allowed = null, int|false $maxlength = 128 ): string { $separator ??= static::$defaults['slug']['separator']; @@ -1176,7 +1176,7 @@ class Str * Convert a string to snake case. */ public static function snake( - string $value = null, + string|null $value = null, string $delimiter = '_' ): string { if (ctype_lower($value) === false) { @@ -1230,7 +1230,7 @@ class Str * Checks if a string starts with the passed needle */ public static function startsWith( - string $string = null, + string|null $string, string $needle, bool $caseInsensitive = false ): bool { @@ -1247,7 +1247,7 @@ class Str * * @param string $value The string to convert */ - public static function studly(string $value = null): string + public static function studly(string|null $value = null): string { $value = str_replace(['-', '_'], ' ', $value); $value = ucwords($value); @@ -1258,9 +1258,9 @@ class Str * A UTF-8 safe version of substr() */ public static function substr( - string $string = null, + string|null $string = null, int $start = 0, - int $length = null + int|null $length = null ): string { return mb_substr($string ?? '', $start, $length, 'UTF-8'); } @@ -1287,7 +1287,7 @@ class Str * @return string The filled-in string */ public static function template( - string $string = null, + string|null $string = null, array $data = [], array $options = [] ): string { @@ -1384,7 +1384,7 @@ class Str /** * A UTF-8 safe version of ucfirst() */ - public static function ucfirst(string $string = null): string + public static function ucfirst(string|null $string = null): string { $first = static::substr($string, 0, 1); $rest = static::substr($string, 1); @@ -1394,7 +1394,7 @@ class Str /** * A UTF-8 safe version of ucwords() */ - public static function ucwords(string $string = null): string + public static function ucwords(string|null $string = null): string { return mb_convert_case($string ?? '', MB_CASE_TITLE, 'UTF-8'); } @@ -1409,7 +1409,7 @@ class Str * * */ - public static function unhtml(string $string = null): string + public static function unhtml(string|null $string = null): string { return Html::decode($string); } @@ -1434,7 +1434,7 @@ class Str /** * A UTF-8 safe version of strotoupper() */ - public static function upper(string $string = null): string + public static function upper(string|null $string = null): string { return mb_strtoupper($string ?? '', 'UTF-8'); } @@ -1472,7 +1472,7 @@ class Str * typographical widows at the end of a paragraph – * that's a single word in the last line */ - public static function widont(string $string = null): string + public static function widont(string|null $string = null): string { // make sure $string is string $string ??= ''; @@ -1504,7 +1504,7 @@ class Str public static function wrap( string $string, string $before, - string $after = null + string|null $after = null ): string { return $before . $string . ($after ?? $before); } diff --git a/public/kirby/src/Toolkit/V.php b/public/kirby/src/Toolkit/V.php index 1170542..5d5ce63 100644 --- a/public/kirby/src/Toolkit/V.php +++ b/public/kirby/src/Toolkit/V.php @@ -306,7 +306,7 @@ V::$validators = [ * Pass an operator as second argument and another date as * third argument to compare them. */ - 'date' => function (string|null $value, string $operator = null, string $test = null): bool { + 'date' => function (string|null $value, string|null $operator = null, string|null $test = null): bool { // make sure $value is a string $value ??= ''; @@ -474,28 +474,28 @@ V::$validators = [ /** * Checks if the number of characters in the value equals or is below the given maximum */ - 'maxLength' => function (string $value = null, $max): bool { + 'maxLength' => function (string|null $value, $max): bool { return Str::length(trim($value)) <= $max; }, /** * Checks if the number of characters in the value equals or is greater than the given minimum */ - 'minLength' => function (string $value = null, $min): bool { + 'minLength' => function (string|null $value, $min): bool { return Str::length(trim($value)) >= $min; }, /** * Checks if the number of words in the value equals or is below the given maximum */ - 'maxWords' => function (string $value = null, $max): bool { + 'maxWords' => function (string|null $value, $max): bool { return V::max(explode(' ', trim($value)), $max) === true; }, /** * Checks if the number of words in the value equals or is below the given maximum */ - 'minWords' => function (string $value = null, $min): bool { + 'minWords' => function (string|null $value, $min): bool { return V::min(explode(' ', trim($value)), $min) === true; }, @@ -628,7 +628,7 @@ V::$validators = [ /** * Checks for a valid Uuid, optionally for specific model type */ - 'uuid' => function (string $value, string $type = null): bool { + 'uuid' => function (string $value, string|null $type = null): bool { return Uuid::is($value, $type); } ]; diff --git a/public/kirby/src/Toolkit/Xml.php b/public/kirby/src/Toolkit/Xml.php index e140d5f..72a9855 100644 --- a/public/kirby/src/Toolkit/Xml.php +++ b/public/kirby/src/Toolkit/Xml.php @@ -373,7 +373,7 @@ class Xml string $name, array|string|null $content = '', array $attr = [], - string $indent = null, + string|null $indent = null, int $level = 0 ): string { $attr = static::attr($attr); diff --git a/public/kirby/src/Uuid/Uri.php b/public/kirby/src/Uuid/Uri.php index 33295c7..34faf1d 100644 --- a/public/kirby/src/Uuid/Uri.php +++ b/public/kirby/src/Uuid/Uri.php @@ -61,7 +61,7 @@ class Uri extends BaseUri * Returns the ID part of the UUID string * (and sets it when new one passed) */ - public function host(string $host = null): string|null + public function host(string|null $host = null): string|null { if ($host !== null) { return $this->host = $host;