diff --git a/assets/css/main.scss b/assets/css/main.scss
index 93ed18a..627492e 100644
--- a/assets/css/main.scss
+++ b/assets/css/main.scss
@@ -69,35 +69,6 @@ body {
align-items: flex-start;
}
-.navigation {
- max-width: 100%;
-
- &__item {
-
- + .navigation__item {
- margin: 0.3rem 0 0 0;
- }
- }
-
- &__link {
- display: block;
- max-width: fit-content;
- overflow-x: hidden;
- white-space: nowrap;
- text-overflow: ellipsis;
- font-weight: var(--bold-font-weight);
- transition: color 200ms ease-in-out;
-
- &--white {
- color: var(--white);
-
- &:focus-visible {
- outline: 1px dashed var(--white);
- }
- }
- }
-}
-
.social {
width: 100%;
display: flex;
@@ -132,33 +103,12 @@ body {
@media screen and (min-width: $tablet-media-query) {
- .navigation {
-
- &__item {
-
- + .navigation__item {
- margin: 0.2rem 0 0 0;
- }
- }
- }
-
.social {
justify-content: flex-start;
}
}
-@media screen and (min-width: $desktop-media-query) {
-
- .navigation {
-
- &__item {
-
- + .navigation__item {
- margin: 0.1rem 0 0 0;
- }
- }
- }
-}
+@media screen and (min-width: $desktop-media-query) {}
// Slider section
diff --git a/assets/js/app.js b/assets/js/app.js
index f9f548e..974e90a 100644
--- a/assets/js/app.js
+++ b/assets/js/app.js
@@ -12,13 +12,9 @@ const body = document.body;
// SLIDER
const homeSection = document.querySelector('.home-section');
-const navLinks = document.querySelectorAll('.navigation__link');
-const socialLinks = document.querySelectorAll('.social__link');
const sliderSection = document.querySelector('.slider-section');
let slider;
const slides = document.querySelectorAll('.splide__slide');
-let cursorOrientation;
-let cursorColor;
// ----------------------------------------------------------------------------
// LOGIC
@@ -88,86 +84,6 @@ function changeSlideOnSwipe() {
}
}
-function turnSidebarLinksToWhite() {
- if (navLinks) {
- for (let i = 0; i < navLinks.length; i++) {
- navLinks[i].classList.add('navigation__link--white');
- }
- }
- if (socialLinks) {
- for (let i = 0; i < socialLinks.length; i++) {
- socialLinks[i].classList.add('social__link--white');
- }
- }
-}
-
-function turnSidebarLinksToBlack() {
- if (navLinks) {
- for (let i = 0; i < navLinks.length; i++) {
- navLinks[i].classList.remove('navigation__link--white');
- }
- }
- if (socialLinks) {
- for (let i = 0; i < socialLinks.length; i++) {
- socialLinks[i].classList.remove('social__link--white');
- }
- }
-}
-
-function editColorTheme(slide) {
- if (slide) {
- if (slide.getAttribute('data-text-color') === 'white') {
- turnSidebarLinksToWhite();
- cursorColor = 'light';
- } else if (slide.getAttribute('data-text-color') === 'black') {
- turnSidebarLinksToBlack();
- cursorColor = 'dark';
- }
- if (body && cursorOrientation && cursorColor) {
- if (cursorOrientation === 'previous') {
- body.style.cursor = `url('/images/cursor-${cursorOrientation}-${cursorColor}.svg') 0 12, auto`;
- } else if (cursorOrientation === 'next') {
- body.style.cursor = `url('/images/cursor-${cursorOrientation}-${cursorColor}.svg') 24 12, auto`;
- }
- }
- }
-}
-
-function editColorThemeOnSliderMounted() {
- if (slider && slides) {
- slider.on('mounted', function() {
- editColorTheme(slides[0]);
- })
- }
-}
-
-function editColorThemeOnSlideActive() {
- if (slider) {
- slider.on('active', function(e) {
- editColorTheme(e.slide);
- });
- }
-}
-
-function setCursorOnMove() {
- if (body) {
- body.addEventListener('mousemove', function(e) {
- if (e.clientX >= window.innerWidth / 2) {
- cursorOrientation = 'next';
- } else {
- cursorOrientation = 'previous';
- }
- if (cursorOrientation && cursorColor) {
- if (cursorOrientation === 'previous') {
- body.style.cursor = `url('/images/cursor-${cursorOrientation}-${cursorColor}.svg') 0 12, auto`;
- } else if (cursorOrientation === 'next') {
- body.style.cursor = `url('/images/cursor-${cursorOrientation}-${cursorColor}.svg') 24 12, auto`;
- }
- }
- });
- }
-}
-
// ----------------------------------------------------------------------------
// PROGRAM
// ----------------------------------------------------------------------------
@@ -179,9 +95,6 @@ enableActivePseudoClass();
// SLIDER
setUpSlider();
-editColorThemeOnSliderMounted();
mountSlider();
changeSlideOnClick();
changeSlideOnSwipe();
-editColorThemeOnSlideActive();
-setCursorOnMove();
diff --git a/composer.json b/composer.json
index 47dde13..67aded7 100644
--- a/composer.json
+++ b/composer.json
@@ -12,9 +12,8 @@
],
"require": {
"php": ">=8.1.0 <8.4.0",
- "getkirby/cms": "^3.10.0",
+ "getkirby/cms": "^4.0",
"kirbyzone/sitemapper": "^1.2.1",
- "mullema/k3-image-clip": "^3.2",
"wearejust/kirby-twig": "^5.0"
},
"scripts": {
diff --git a/composer.lock b/composer.lock
index 3793cbd..41e45db 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,20 +4,79 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "cbae6775c72f7f216b3cadb214a0fee3",
+ "content-hash": "f17093a48c983686f90617c12b92d15c",
"packages": [
{
- "name": "claviska/simpleimage",
- "version": "4.2.0",
+ "name": "christian-riesen/base32",
+ "version": "1.6.0",
"source": {
"type": "git",
- "url": "https://github.com/claviska/SimpleImage.git",
- "reference": "dfbe53c01dae8467468ef2b817c09b786a7839d2"
+ "url": "https://github.com/ChristianRiesen/base32.git",
+ "reference": "2e82dab3baa008e24a505649b0d583c31d31e894"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/claviska/SimpleImage/zipball/dfbe53c01dae8467468ef2b817c09b786a7839d2",
- "reference": "dfbe53c01dae8467468ef2b817c09b786a7839d2",
+ "url": "https://api.github.com/repos/ChristianRiesen/base32/zipball/2e82dab3baa008e24a505649b0d583c31d31e894",
+ "reference": "2e82dab3baa008e24a505649b0d583c31d31e894",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0"
+ },
+ "require-dev": {
+ "friendsofphp/php-cs-fixer": "^2.17",
+ "phpstan/phpstan": "^0.12",
+ "phpunit/phpunit": "^8.5.13 || ^9.5"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Base32\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Christian Riesen",
+ "email": "chris.riesen@gmail.com",
+ "homepage": "http://christianriesen.com",
+ "role": "Developer"
+ }
+ ],
+ "description": "Base32 encoder/decoder according to RFC 4648",
+ "homepage": "https://github.com/ChristianRiesen/base32",
+ "keywords": [
+ "base32",
+ "decode",
+ "encode",
+ "rfc4648"
+ ],
+ "support": {
+ "issues": "https://github.com/ChristianRiesen/base32/issues",
+ "source": "https://github.com/ChristianRiesen/base32/tree/1.6.0"
+ },
+ "time": "2021-02-26T10:19:33+00:00"
+ },
+ {
+ "name": "claviska/simpleimage",
+ "version": "4.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/claviska/SimpleImage.git",
+ "reference": "ec6d5021e5a7153a2520d64c59b86b6f3c4157c5"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/claviska/SimpleImage/zipball/ec6d5021e5a7153a2520d64c59b86b6f3c4157c5",
+ "reference": "ec6d5021e5a7153a2520d64c59b86b6f3c4157c5",
"shasum": ""
},
"require": {
@@ -49,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": [
{
@@ -57,28 +116,28 @@
"type": "github"
}
],
- "time": "2024-04-15T16:07:16+00:00"
+ "time": "2024-11-22T13:25:03+00:00"
},
{
"name": "composer/semver",
- "version": "3.4.0",
+ "version": "3.4.3",
"source": {
"type": "git",
"url": "https://github.com/composer/semver.git",
- "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32"
+ "reference": "4313d26ada5e0c4edfbd1dc481a92ff7bff91f12"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/composer/semver/zipball/35e8d0af4486141bc745f23a29cc2091eb624a32",
- "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32",
+ "url": "https://api.github.com/repos/composer/semver/zipball/4313d26ada5e0c4edfbd1dc481a92ff7bff91f12",
+ "reference": "4313d26ada5e0c4edfbd1dc481a92ff7bff91f12",
"shasum": ""
},
"require": {
"php": "^5.3.2 || ^7.0 || ^8.0"
},
"require-dev": {
- "phpstan/phpstan": "^1.4",
- "symfony/phpunit-bridge": "^4.2 || ^5"
+ "phpstan/phpstan": "^1.11",
+ "symfony/phpunit-bridge": "^3 || ^7"
},
"type": "library",
"extra": {
@@ -122,7 +181,7 @@
"support": {
"irc": "ircs://irc.libera.chat:6697/composer",
"issues": "https://github.com/composer/semver/issues",
- "source": "https://github.com/composer/semver/tree/3.4.0"
+ "source": "https://github.com/composer/semver/tree/3.4.3"
},
"funding": [
{
@@ -138,30 +197,30 @@
"type": "tidelift"
}
],
- "time": "2023-08-31T09:50:34+00:00"
+ "time": "2024-09-19T14:15:21+00:00"
},
{
"name": "filp/whoops",
- "version": "2.15.4",
+ "version": "2.18.0",
"source": {
"type": "git",
"url": "https://github.com/filp/whoops.git",
- "reference": "a139776fa3f5985a50b509f2a02ff0f709d2a546"
+ "reference": "a7de6c3c6c3c022f5cfc337f8ede6a14460cf77e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/filp/whoops/zipball/a139776fa3f5985a50b509f2a02ff0f709d2a546",
- "reference": "a139776fa3f5985a50b509f2a02ff0f709d2a546",
+ "url": "https://api.github.com/repos/filp/whoops/zipball/a7de6c3c6c3c022f5cfc337f8ede6a14460cf77e",
+ "reference": "a7de6c3c6c3c022f5cfc337f8ede6a14460cf77e",
"shasum": ""
},
"require": {
- "php": "^5.5.9 || ^7.0 || ^8.0",
+ "php": "^7.1 || ^8.0",
"psr/log": "^1.0.1 || ^2.0 || ^3.0"
},
"require-dev": {
- "mockery/mockery": "^0.9 || ^1.0",
- "phpunit/phpunit": "^4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.3",
- "symfony/var-dumper": "^2.6 || ^3.0 || ^4.0 || ^5.0"
+ "mockery/mockery": "^1.0",
+ "phpunit/phpunit": "^7.5.20 || ^8.5.8 || ^9.3.3",
+ "symfony/var-dumper": "^4.0 || ^5.0"
},
"suggest": {
"symfony/var-dumper": "Pretty print complex values better with var-dumper available",
@@ -201,7 +260,7 @@
],
"support": {
"issues": "https://github.com/filp/whoops/issues",
- "source": "https://github.com/filp/whoops/tree/2.15.4"
+ "source": "https://github.com/filp/whoops/tree/2.18.0"
},
"funding": [
{
@@ -209,25 +268,26 @@
"type": "github"
}
],
- "time": "2023-11-03T12:00:00+00:00"
+ "time": "2025-03-15T12:00:00+00:00"
},
{
"name": "getkirby/cms",
- "version": "3.10.1.1",
+ "version": "4.7.0",
"source": {
"type": "git",
"url": "https://github.com/getkirby/kirby.git",
- "reference": "1953eb4979f6d05ce7779c547bf761517024cccb"
+ "reference": "938fe98951cace6c77aab744779bf4e0799ad705"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/getkirby/kirby/zipball/1953eb4979f6d05ce7779c547bf761517024cccb",
- "reference": "1953eb4979f6d05ce7779c547bf761517024cccb",
+ "url": "https://api.github.com/repos/getkirby/kirby/zipball/938fe98951cace6c77aab744779bf4e0799ad705",
+ "reference": "938fe98951cace6c77aab744779bf4e0799ad705",
"shasum": ""
},
"require": {
- "claviska/simpleimage": "4.2.0",
- "composer/semver": "3.4.0",
+ "christian-riesen/base32": "1.6.0",
+ "claviska/simpleimage": "4.2.1",
+ "composer/semver": "3.4.3",
"ext-ctype": "*",
"ext-curl": "*",
"ext-dom": "*",
@@ -239,15 +299,15 @@
"ext-mbstring": "*",
"ext-openssl": "*",
"ext-simplexml": "*",
- "filp/whoops": "2.15.4",
+ "filp/whoops": "2.18.0",
"getkirby/composer-installer": "^1.2.1",
- "laminas/laminas-escaper": "2.13.0",
+ "laminas/laminas-escaper": "2.16.0",
"michelf/php-smartypants": "1.8.1",
- "php": "~8.1.0 || ~8.2.0 || ~8.3.0",
- "phpmailer/phpmailer": "6.9.1",
- "symfony/polyfill-intl-idn": "1.30.0",
- "symfony/polyfill-mbstring": "1.30.0",
- "symfony/yaml": "6.4.8"
+ "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.18"
},
"replace": {
"symfony/polyfill-php72": "*"
@@ -292,7 +352,7 @@
"homepage": "https://getkirby.com"
}
],
- "description": "The Kirby 3 core",
+ "description": "The Kirby core",
"homepage": "https://getkirby.com",
"keywords": [
"cms",
@@ -311,7 +371,7 @@
"type": "custom"
}
],
- "time": "2024-08-29T08:36:26+00:00"
+ "time": "2025-03-25T11:15:09+00:00"
},
{
"name": "getkirby/composer-installer",
@@ -399,33 +459,32 @@
},
{
"name": "laminas/laminas-escaper",
- "version": "2.13.0",
+ "version": "2.16.0",
"source": {
"type": "git",
"url": "https://github.com/laminas/laminas-escaper.git",
- "reference": "af459883f4018d0f8a0c69c7a209daef3bf973ba"
+ "reference": "9cf1f5317ca65b4fd5c6a3c2855e24a187b288c8"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/af459883f4018d0f8a0c69c7a209daef3bf973ba",
- "reference": "af459883f4018d0f8a0c69c7a209daef3bf973ba",
+ "url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/9cf1f5317ca65b4fd5c6a3c2855e24a187b288c8",
+ "reference": "9cf1f5317ca65b4fd5c6a3c2855e24a187b288c8",
"shasum": ""
},
"require": {
"ext-ctype": "*",
"ext-mbstring": "*",
- "php": "~8.1.0 || ~8.2.0 || ~8.3.0"
+ "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0"
},
"conflict": {
"zendframework/zend-escaper": "*"
},
"require-dev": {
- "infection/infection": "^0.27.0",
- "laminas/laminas-coding-standard": "~2.5.0",
- "maglnet/composer-require-checker": "^3.8.0",
- "phpunit/phpunit": "^9.6.7",
- "psalm/plugin-phpunit": "^0.18.4",
- "vimeo/psalm": "^5.9"
+ "infection/infection": "^0.29.8",
+ "laminas/laminas-coding-standard": "~3.0.1",
+ "phpunit/phpunit": "^10.5.45",
+ "psalm/plugin-phpunit": "^0.19.2",
+ "vimeo/psalm": "^6.6.2"
},
"type": "library",
"autoload": {
@@ -457,7 +516,7 @@
"type": "community_bridge"
}
],
- "time": "2023-10-10T08:35:13+00:00"
+ "time": "2025-02-17T12:40:19+00:00"
},
{
"name": "league/color-extractor",
@@ -574,60 +633,18 @@
},
"time": "2016-12-13T01:01:17+00:00"
},
- {
- "name": "mullema/k3-image-clip",
- "version": "3.2.0",
- "source": {
- "type": "git",
- "url": "https://github.com/mullema/k3-image-clip.git",
- "reference": "66e5c2147fd6736f48878aaed6eef9ffe08cdd21"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/mullema/k3-image-clip/zipball/66e5c2147fd6736f48878aaed6eef9ffe08cdd21",
- "reference": "66e5c2147fd6736f48878aaed6eef9ffe08cdd21",
- "shasum": ""
- },
- "require": {
- "getkirby/composer-installer": "^1.2"
- },
- "conflict": {
- "getkirby/cms": "<3.6"
- },
- "type": "kirby-plugin",
- "extra": {
- "installer-name": "k3-image-clip"
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Matthias Müller",
- "email": "moeli@moeli.com",
- "homepage": "https://getkirby.com/plugins/mullema"
- }
- ],
- "description": "Visual image clip for Kirby 3",
- "support": {
- "issues": "https://github.com/mullema/k3-image-clip/issues",
- "source": "https://github.com/mullema/k3-image-clip/tree/3.2.0"
- },
- "time": "2022-11-05T10:49:35+00:00"
- },
{
"name": "phpmailer/phpmailer",
- "version": "v6.9.1",
+ "version": "v6.9.3",
"source": {
"type": "git",
"url": "https://github.com/PHPMailer/PHPMailer.git",
- "reference": "039de174cd9c17a8389754d3b877a2ed22743e18"
+ "reference": "2f5c94fe7493efc213f643c23b1b1c249d40f47e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/039de174cd9c17a8389754d3b877a2ed22743e18",
- "reference": "039de174cd9c17a8389754d3b877a2ed22743e18",
+ "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/2f5c94fe7493efc213f643c23b1b1c249d40f47e",
+ "reference": "2f5c94fe7493efc213f643c23b1b1c249d40f47e",
"shasum": ""
},
"require": {
@@ -687,7 +704,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.1"
+ "source": "https://github.com/PHPMailer/PHPMailer/tree/v6.9.3"
},
"funding": [
{
@@ -695,7 +712,7 @@
"type": "github"
}
],
- "time": "2023-11-25T22:23:28+00:00"
+ "time": "2024-11-24T18:04:13+00:00"
},
{
"name": "psr/log",
@@ -895,22 +912,21 @@
},
{
"name": "symfony/polyfill-intl-idn",
- "version": "v1.30.0",
+ "version": "v1.31.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-idn.git",
- "reference": "a6e83bdeb3c84391d1dfe16f42e40727ce524a5c"
+ "reference": "c36586dcf89a12315939e00ec9b4474adcb1d773"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/a6e83bdeb3c84391d1dfe16f42e40727ce524a5c",
- "reference": "a6e83bdeb3c84391d1dfe16f42e40727ce524a5c",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/c36586dcf89a12315939e00ec9b4474adcb1d773",
+ "reference": "c36586dcf89a12315939e00ec9b4474adcb1d773",
"shasum": ""
},
"require": {
- "php": ">=7.1",
- "symfony/polyfill-intl-normalizer": "^1.10",
- "symfony/polyfill-php72": "^1.10"
+ "php": ">=7.2",
+ "symfony/polyfill-intl-normalizer": "^1.10"
},
"suggest": {
"ext-intl": "For best performance"
@@ -959,7 +975,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.30.0"
+ "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.31.0"
},
"funding": [
{
@@ -975,7 +991,7 @@
"type": "tidelift"
}
],
- "time": "2024-05-31T15:07:36+00:00"
+ "time": "2024-09-09T11:45:10+00:00"
},
{
"name": "symfony/polyfill-intl-normalizer",
@@ -1060,20 +1076,20 @@
},
{
"name": "symfony/polyfill-mbstring",
- "version": "v1.30.0",
+ "version": "v1.31.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
- "reference": "fd22ab50000ef01661e2a31d850ebaa297f8e03c"
+ "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fd22ab50000ef01661e2a31d850ebaa297f8e03c",
- "reference": "fd22ab50000ef01661e2a31d850ebaa297f8e03c",
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/85181ba99b2345b0ef10ce42ecac37612d9fd341",
+ "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341",
"shasum": ""
},
"require": {
- "php": ">=7.1"
+ "php": ">=7.2"
},
"provide": {
"ext-mbstring": "*"
@@ -1120,83 +1136,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.30.0"
- },
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "time": "2024-06-19T12:30:46+00:00"
- },
- {
- "name": "symfony/polyfill-php81",
- "version": "v1.31.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-php81.git",
- "reference": "4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c",
- "reference": "4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c",
- "shasum": ""
- },
- "require": {
- "php": ">=7.2"
- },
- "type": "library",
- "extra": {
- "thanks": {
- "url": "https://github.com/symfony/polyfill",
- "name": "symfony/polyfill"
- }
- },
- "autoload": {
- "files": [
- "bootstrap.php"
- ],
- "psr-4": {
- "Symfony\\Polyfill\\Php81\\": ""
- },
- "classmap": [
- "Resources/stubs"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "polyfill",
- "portable",
- "shim"
- ],
- "support": {
- "source": "https://github.com/symfony/polyfill-php81/tree/v1.31.0"
+ "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.31.0"
},
"funding": [
{
@@ -1216,16 +1156,16 @@
},
{
"name": "symfony/yaml",
- "version": "v6.4.8",
+ "version": "v6.4.18",
"source": {
"type": "git",
"url": "https://github.com/symfony/yaml.git",
- "reference": "52903de178d542850f6f341ba92995d3d63e60c9"
+ "reference": "bf598c9d9bb4a22f495a4e26e4c4fce2f8ecefc5"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/yaml/zipball/52903de178d542850f6f341ba92995d3d63e60c9",
- "reference": "52903de178d542850f6f341ba92995d3d63e60c9",
+ "url": "https://api.github.com/repos/symfony/yaml/zipball/bf598c9d9bb4a22f495a4e26e4c4fce2f8ecefc5",
+ "reference": "bf598c9d9bb4a22f495a4e26e4c4fce2f8ecefc5",
"shasum": ""
},
"require": {
@@ -1268,7 +1208,7 @@
"description": "Loads and dumps YAML files",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/yaml/tree/v6.4.8"
+ "source": "https://github.com/symfony/yaml/tree/v6.4.18"
},
"funding": [
{
@@ -1284,28 +1224,27 @@
"type": "tidelift"
}
],
- "time": "2024-05-31T14:49:08+00:00"
+ "time": "2025-01-07T09:44:41+00:00"
},
{
"name": "twig/twig",
- "version": "v3.18.0",
+ "version": "v3.20.0",
"source": {
"type": "git",
"url": "https://github.com/twigphp/Twig.git",
- "reference": "acffa88cc2b40dbe42eaf3a5025d6c0d4600cc50"
+ "reference": "3468920399451a384bef53cf7996965f7cd40183"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/twigphp/Twig/zipball/acffa88cc2b40dbe42eaf3a5025d6c0d4600cc50",
- "reference": "acffa88cc2b40dbe42eaf3a5025d6c0d4600cc50",
+ "url": "https://api.github.com/repos/twigphp/Twig/zipball/3468920399451a384bef53cf7996965f7cd40183",
+ "reference": "3468920399451a384bef53cf7996965f7cd40183",
"shasum": ""
},
"require": {
- "php": ">=8.0.2",
+ "php": ">=8.1.0",
"symfony/deprecation-contracts": "^2.5|^3",
"symfony/polyfill-ctype": "^1.8",
- "symfony/polyfill-mbstring": "^1.3",
- "symfony/polyfill-php81": "^1.29"
+ "symfony/polyfill-mbstring": "^1.3"
},
"require-dev": {
"phpstan/phpstan": "^2.0",
@@ -1352,7 +1291,7 @@
],
"support": {
"issues": "https://github.com/twigphp/Twig/issues",
- "source": "https://github.com/twigphp/Twig/tree/v3.18.0"
+ "source": "https://github.com/twigphp/Twig/tree/v3.20.0"
},
"funding": [
{
@@ -1364,7 +1303,7 @@
"type": "tidelift"
}
],
- "time": "2024-12-29T10:51:50+00:00"
+ "time": "2025-02-13T08:34:43+00:00"
},
{
"name": "wearejust/kirby-twig",
diff --git a/kirby/.editorconfig b/kirby/.editorconfig
index 76df047..10fd327 100644
--- a/kirby/.editorconfig
+++ b/kirby/.editorconfig
@@ -17,6 +17,10 @@ trim_trailing_whitespace = true
indent_size = 4
insert_final_newline = true
+[*.vue.php]
+indent_size = 2
+insert_final_newline = false
+
[*.yml]
indent_style = space
diff --git a/kirby/CONTRIBUTING.md b/kirby/CONTRIBUTING.md
index 5aadd3c..a4c299a 100644
--- a/kirby/CONTRIBUTING.md
+++ b/kirby/CONTRIBUTING.md
@@ -6,15 +6,17 @@
To keep track of different states of our code (current release, bugfixes, features) we use branches:
-| Branch | Used for | PRs allowed? |
-| ----------- | ------------------------------------------------------------------------ | --------------------------- |
-| `main` | Latest released version | - |
-| `develop` | Working branch for next release, e.g. `3.7.x` | ✅ |
-| `fix/*` | Temporary branches for single patch | - |
-| `feature/*` | Temporary branches for single feature | - |
-| `release/*` | Pre-releases in testing before they are merged into `main` when released | only during release testing |
+| Branch | Used for | PRs allowed? |
+| --------------- | ------------------------------------------------------------------------ | --------------------------- |
+| `main` | Latest released version | ❌ |
+| `develop-patch` | Working branch for next patch release, e.g. `4.0.x` | ✅ |
+| `develop-minor` | Working branch for next minor release, e.g. `4.x.0` | ✅ |
+| `v5/develop` | Working branch for next major release, e.g. `5.0.0` | ✅ |
+| `fix/*` | Temporary branches for single bugfix | - |
+| `feature/*` | Temporary branches for single feature | - |
+| `release/*` | Pre-releases in testing before they are merged into `main` when released | only during release testing |
-We will review all pull requests (PRs) to `develop` and merge them if accepted, once an appropriate version is upcoming. Please understand that this might not be the immediate next release and might take some time.
+We will review all pull requests (PRs) to `develop-patch`, `develop-minor` and `v5/develop` and merge them if accepted, once an appropriate version is upcoming. Please understand that this might not be the immediate next release and might take some time.
## How you can contribute
@@ -26,25 +28,25 @@ When you find a bug, the first step to fixing it is to help us understand and re
For bug fixes, please create a new branch following the name scheme: `fix/issue_number-bug-x`, e.g. `fix/234-this-nasty-bug`. Limit bug fix PRs to a single bug. **Do not mix multiple bug fixes in a single PR.** This will make it easier for us to review the fix and merge it.
-- Always send bug fix PRs against the `develop` branch––not `main`.
+- Always send bug fix PRs against the `develop-patch` branch––not `main`.
- Add a helpful description of what the PR does if it is not 100% self-explanatory.
- Every bug fix should include a [unit test](#tests) to avoid future regressions. Let us know if you need help with that.
- Make sure your code [style](#style) matches ours and includes [comments/in-code documentation](#documentation).
-- Make sure your branch is up to date with the latest state on the `develop` branch. [Rebase](https://help.github.com/articles/about-pull-request-merges/) changes before you send the PR.
+- Make sure your branch is up to date with the latest state on the `develop-patch` branch. [Rebase](https://help.github.com/articles/about-pull-request-merges/) changes before you send the PR.
- Please *don't* commit updated dist files in the `panel/dist` folder to avoid merge conflicts. We only build the dist files on release. Your branch should only contain changes to the source files.
### Features
For features create a new branch following the name scheme: `feature/issue_number-feature-x`, e.g. `feature/123-awesome-function`. Our [feedback platform](https://feedback.getkirby.com) can be a good source of highly requested features. Maybe your feature idea already exists and you can get valuable feedback from other Kirby users. Focus on a single feature per PR. Don't mix features!
-- Always send feature PRs against the `develop` branch––not `main`.
+- Always send feature PRs against the `develop-minor` branch––not `main`.
- Add a helpful description of what the PR does.
- New features should include [unit tests](#tests). Let us know if you need help with that.
- Make your code [style](#style) matches ours and includes [comments/in-code documentation](#documentation).
-- Make sure your branch is up to date with the latest state on the `develop` branch. [Rebase](https://help.github.com/articles/about-pull-request-merges/) changes before you send the PR.
+- Make sure your branch is up to date with the latest state on the `develop-minor` branch. [Rebase](https://help.github.com/articles/about-pull-request-merges/) changes before you send the PR.
- Please *don't* commit updated dist files in the `panel/dist` folder to avoid merge conflicts. We only build the dist files on release. Your branch should only contain changes to the source files.
-We try to bundle features in our major releases, e.g. `3.x`. That is why we might only review and, if accepted, merge your PR once an appropriate release is upcoming. Please understand that we cannot merge all feature ideas or that it might take a while. Check out the [roadmap](https://roadmap.getkirby.com) to see upcoming releases.
+We try to bundle features in our major releases, e.g. `5.0`. That is why we might only review and, if accepted, merge your PR once an appropriate release is upcoming. Please understand that we cannot merge all feature ideas or that it might take a while. Check out the [roadmap](https://roadmap.getkirby.com) to see upcoming releases.
### Translations
diff --git a/kirby/LICENSE.md b/kirby/LICENSE.md
index 8d109fe..27b4e75 100644
--- a/kirby/LICENSE.md
+++ b/kirby/LICENSE.md
@@ -1,7 +1,7 @@
# Kirby License Agreement
-Published: March 21, 2023
-Source: https://getkirby.com/license/2023-03-21
+Published: March 18, 2025
+Source: https://getkirby.com/license/2025-03-18
## About this Agreement
@@ -11,84 +11,131 @@ This End User License Agreement (the **"Agreement"**) is fundamental to the rela
If you do not agree to this Agreement, please do not download, install or use Kirby. Installation or use of Kirby signifies that you have read, understood, and agreed to be bound by this Agreement.
+## Summary
+
+This section summarizes the most important conditions of this Agreement to give you a quick overview:
+
+- With your purchase you obtain a license. A license allows you to use Kirby according to this Agreement.
+- Each project (defined by its URL) needs its own license. You need to purchase the right license for your project and/or client. You can find our license variants on Сигурни ли сте, че искате да зададете {name} за език по подразбиране? Действието не може да бъде отменено. В случай, че в {name} има непреведено съдържание, то части от сайта ви могат да останат празни. This will disable one‑time codes for {user}. In the future, a different second factor like a login code sent via email will be requested when they log in. {user} can set up one‑time codes again after their next login. Segur que voleu convertir {name} a l'idioma predeterminat? Això no es pot desfer. Si {name} té contingut no traduït, ja no podreu tornar enrere i algunes parts del vostre lloc poden quedar buides. This will disable one‑time codes for {user}. In the future, a different second factor like a login code sent via email will be requested when they log in. {user} can set up one‑time codes again after their next login. Opravdu chcete převést{name} na výchozí jazyk? Tuto volbu nelze vzít zpátky. Pokud {name} obsahuje nepřeložený text, nebude již k dispozici záložní varianta a části stránky mohou zůstat prázdné. Tím se jednorázové kódy pro{user} zakážou. V budoucnu bude při přihlášení vyžadován jiný druhý faktor, například přihlašovací kód zaslaný e-mailem. Jednorázové kódy si může {user} nastavit znovu po svém dalším přihlášení.",
+ "login.totp.disable.success": "Jednorázové kódy vypnuty",
"logout": "Odhlásit se",
+ "merge": "Spojit",
"menu": "Menu",
"meridiem": "AM/PM",
"mime": "Typ média",
@@ -402,44 +549,51 @@
"months.december": "Prosinec",
"months.february": "Únor",
"months.january": "Leden",
- "months.july": "Červenec",
- "months.june": "Červen",
- "months.march": "Březen",
- "months.may": "Květen",
+ "months.july": "\u010cervenec",
+ "months.june": "\u010cerven",
+ "months.march": "B\u0159ezen",
+ "months.may": "Kv\u011bten",
"months.november": "Listopad",
- "months.october": "Říjen",
- "months.september": "Září",
+ "months.october": "\u0158\u00edjen",
+ "months.september": "Z\u00e1\u0159\u00ed",
"more": "Více",
+ "move": "Přesunout",
"name": "Jméno",
"next": "Další",
+ "night": "Noc",
"no": "ne",
"off": "vypnuto",
"on": "zapnuto",
"open": "Otevřít",
"open.newWindow": "Otevřít v novém okně",
+ "option": "Možnost",
"options": "Možnosti",
"options.none": "Žádné možnosti",
+ "options.all": "Zobrazit všech {count} možností",
"orientation": "Orientace",
"orientation.landscape": "Na šířku",
"orientation.portrait": "Na výšku",
"orientation.square": "Čtverec",
+ "page": "Stránka",
"page.blueprint": "Tento typ stránky nemá blueprint. Blueprint můžete definovat v /site/blueprints/pages/{blueprint}.yml",
- "page.changeSlug": "Změnit URL",
- "page.changeSlug.fromTitle": "Vytvořit z názvu",
+ "page.changeSlug": "Zm\u011bnit URL",
+ "page.changeSlug.fromTitle": "Vytvo\u0159it z n\u00e1zvu",
"page.changeStatus": "Změnit status",
"page.changeStatus.position": "Vyberte prosím pozici",
"page.changeStatus.select": "Vybrat nový status",
"page.changeTemplate": "Změnit šablonu",
- "page.delete.confirm": "Opravdu chcete smazat tuto stránku?",
+ "page.changeTemplate.notice": "Změna šablony stránky odstraní obsah pro pole, jejichž typy se neshodují. Používejte obezřetně.",
+ "page.create": "Vytvořit jako {status}",
+ "page.delete.confirm": "Opravdu chcete smazat tuto str\u00e1nku?",
"page.delete.confirm.subpages": "Tato stránka má podstránky. Ønsker du virkelig at konvertere {name} til standardsproget? Dette kan ikke fortrydes. Hvis {name} har uoversat indhold, vil der ikke længere være et gyldigt tilbagefald og dele af dit website vil måske fremstå tomt. This will disable one‑time codes for {user}. In the future, a different second factor like a login code sent via email will be requested when they log in. {user} can set up one‑time codes again after their next login. Willst du {name} wirklich in die Standardsprache umwandeln? Dieser Schritt kann nicht rückgängig gemacht werden. Wenn {name} unübersetzte Felder hat, gibt es keine gültigen Standardwerte für diese Felder und Inhalte könnten verloren gehen. Einmal-Codes für {user} werden hiermit deaktiviert. In Zukunft wird für die Anmeldung ein anderer zweiter Faktor abgefragt. Z.B. ein Login-Code, der per Email zugeschickt wird. {user} kann nach der nächsten Anmeldung jeder Zeit wieder Einmal-Codes für den Account aktivieren. Θέλετε πραγματικά να μετατρέψετε τη {name} στην προεπιλεγμένη γλώσσα; Αυτό δεν μπορεί να ανακληθεί. Αν το {name} χει μη μεταφρασμένο περιεχόμενο, δεν θα υπάρχει πλέον έγκυρη εναλλακτική λύση και τμήματα του ιστότοπού σας ενδέχεται να είναι κενά. This will disable one‑time codes for {user}. In the future, a different second factor like a login code sent via email will be requested when they log in. {user} can set up one‑time codes again after their next login. Do you really want to convert {name} to the default language? This cannot be undone. If {name} has untranslated content, there will no longer be a valid fallback and parts of your site might be empty. This will disable one‑time codes for {user}. In the future, a different second factor like a login code sent via email will be requested when they log in. {user} can set up one‑time codes again after their next login. Ĉu vi certe volas konverti {name} al la defaŭlta lingvo? Ĉi tion vi ne povos malfari. Se {name} havas netradukitan enhavon, tiuj tekstoj nun ne havos defaŭlton, kaj simple ne aperos en via retejo. This will disable one‑time codes for {user}. In the future, a different second factor like a login code sent via email will be requested when they log in. {user} can set up one‑time codes again after their next login. Realmente deseas convertir {name} al idioma por defecto? Esta acción no se puede deshacer. Si {name} tiene contenido sin traducir, no habrá vuelta atras y tu sitio puede quedar con partes sin contenido. ",
"language.deleted": "El idioma ha sido borrado",
"language.direction": "Dirección de lectura",
@@ -340,7 +442,16 @@
"language.locale": "Cadena de localización PHP",
"language.locale.warning": "Estas utilizando un configuración local. Por favor modifícalo en el archivo del lenguaje en /site/languages",
"language.name": "Nombre",
+ "language.secondary": "Secondary language",
+ "language.settings": "Language settings",
"language.updated": "El idioma a sido actualizado",
+ "language.variables": "Language variables",
+ "language.variables.empty": "No translations yet",
+
+ "language.variable.delete.confirm": "Do you really want to delete the variable for {key}?",
+ "language.variable.key": "Key",
+ "language.variable.notFound": "The variable could not be found",
+ "language.variable.value": "Value",
"languages": "Idiomas",
"languages.default": "Idioma por defecto",
@@ -349,15 +460,32 @@
"languages.secondary.empty": "Todavía no hay idiomas secundarios",
"license": "Licencia",
+ "license.activate": "Activate it now",
+ "license.activate.label": "Please activate your license",
+ "license.activate.domain": "Your license will be activated for {host}.",
+ "license.activate.local": "You are about to activate your Kirby license for your local domain {host}. If this site will be deployed to a public domain, please activate it there instead. If {host} is the domain you want to use your license for, please continue.",
+ "license.activated": "Activated",
"license.buy": "Comprar una licencia",
- "license.register": "Registrar",
+ "license.code": "Código",
+ "license.code.help": "You received your license code after the purchase via email. Please copy and paste it here.",
+ "license.code.label": "Por favor, ingresa tu código de licencia",
+ "license.status.active.info": "Includes new major versions until {date}",
+ "license.status.active.label": "Valid license",
+ "license.status.demo.info": "This is a demo installation",
+ "license.status.demo.label": "Demo",
+ "license.status.inactive.info": "Renew license to update to new major versions",
+ "license.status.inactive.label": "No new major versions",
+ "license.status.legacy.bubble": "Ready to renew your license?",
+ "license.status.legacy.info": "Your license does not cover this version",
+ "license.status.legacy.label": "Please renew your license",
+ "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.manage": "Gestiona tus licencias",
- "license.register.help": "Recibió su código de licencia después de la compra por correo electrónico. Por favor copie y pegue para registrarse.",
- "license.register.label": "Por favor, ingresa tu código de licencia",
- "license.register.domain": "Tu licencia será registrada para {host}.",
- "license.register.local": "Estás a punto de registrar tu licencia para el dominio local {host}. Si este sitio va a ser desplegado en un dominio público, por favor regístralo allí. Si {host} es el dominio en el que quiere registrar Kirby, por favor continúa.",
- "license.register.success": "Gracias por apoyar a Kirby",
- "license.unregistered": "Este es un demo no registrado de Kirby",
+ "license.purchased": "Purchased",
+ "license.success": "Gracias por apoyar a Kirby",
"license.unregistered.label": "No registrado",
"link": "Enlace",
@@ -367,17 +495,21 @@
"lock.unsaved": "Cambios sin guardar",
"lock.unsaved.empty": "No hay más cambios sin guardar",
- "lock.isLocked": "Cambios sin guardar por {email}",
- "lock.file.isLocked": "El archivo está siendo actualmente editado por {email} y no puede ser cambiado.",
- "lock.page.isLocked": "La página está siendo actualmente editada por {email} y no puede ser cambiada.",
+ "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.isUnlocked": "Tus cambios sin guardar han sido sobrescritos por otro usuario. Puedes descargar los cambios y fusionarlos manualmente.",
+ "lock.unlock.submit": "Unlock and overwrite unsaved changes by {email}",
+ "lock.isUnlocked": "Was unlocked by another user",
- "login": "Log in",
+ "login": "Iniciar sesión",
"login.code.label.login": "Código de inicio de sesión",
"login.code.label.password-reset": "Código de restablecimiento de contraseña",
"login.code.placeholder.email": "000 000",
+ "login.code.placeholder.totp": "000000",
"login.code.text.email": "Si tu dirección de correo electrónico está registrada, el código solicitado fue enviado por correo electrónico.",
+ "login.code.text.totp": "Please enter the one‑time code from your authenticator app.",
"login.email.login.body": "Hola {user.nameOrEmail},\n\nHas pedido, recientemente, un código de restablecimiento de contraseña para el Panel del sitio {site}.\nEl siguiente código de restablecimiento de contraseña será válido por {timeout} minutos:\n\n{code}\n\nSi no pediste un código de restablecimiento de contraseña, por favor ignora este correo o contacta a tu administrador si tienes dudas.\nPor seguridad, por favor NO reenvíes este correo.",
"login.email.login.subject": "Tu código de inicio de sesión",
"login.email.password-reset.body": "Hola {user.nameOrEmail},\n\nHas pedido, recientemente, un código de restablecimiento de contraseña para el Panel del sitio {site}.\nEl siguiente código de restablecimiento de contraseña será válido por {timeout} minutos:\n\n{code}\n\nSi no pediste un código de restablecimiento de contraseña, por favor ignora este correo o contacta a tu administrador si tienes dudas.\nPor seguridad, por favor NO reenvíes este correo.",
@@ -388,58 +520,80 @@
"login.toggleText.code.email-password": "Iniciar sesión con contraseña",
"login.toggleText.password-reset.email": "¿Olvidaste tu contraseña?",
"login.toggleText.password-reset.email-password": "← Volver al inicio de sesión",
+ "login.totp.enable.option": "Set up one‑time codes",
+ "login.totp.enable.intro": "Authenticator apps can generate one‑time codes that are used as a second factor when signing into your account.",
+ "login.totp.enable.qr.label": "1. Scan this QR code",
+ "login.totp.enable.qr.help": "Unable to scan? Add the setup key This will disable one‑time codes for {user}. In the future, a different second factor like a login code sent via email will be requested when they log in. {user} can set up one‑time codes again after their next login. ¿Realmente quieres convertir {name} al idioma por defecto? Esto no se puede deshacer. Si {name} tiene contenido sin traducir, ya no habrá un respaldo válido y algunas partes de tu sitio podrían estar vacías. This will disable one‑time codes for {user}. In the future, a different second factor like a login code sent via email will be requested when they log in. {user} can set up one‑time codes again after their next login. آیا واقعا میخواهید {name} را به زبان پیشفرض تبدیل کنید؟ این عمل برگشت ناپذیر است. اگر {name} دارای محتوای غیر ترجمه شده باشد، جایگزین معتبر دیگری نخواهد بود و ممکن است بخشهایی از سایت شما خالی باشد. This will disable one‑time codes for {user}. In the future, a different second factor like a login code sent via email will be requested when they log in. {user} can set up one‑time codes again after their next login. Haluatko varmasti muuttaa kielen {name} oletuskieleksi? Tätä muutosta ei voi peruuttaa. Jos{name} sisältää kääntämättömiä kohtia, varakäännöstä ei enää ole näille kohdille ja sivustosi saattaa olla osittain tyhjä. This will disable one‑time codes for {user}. In the future, a different second factor like a login code sent via email will be requested when they log in. {user} can set up one‑time codes again after their next login. Souhaitez-vous vraiment convertir {name} vers la langue par défaut ? Cette action ne peut pas être annulée. Si {name} a un contenu non traduit, il n’y aura plus de solution de secours possible et certaines parties de votre site pourraient être vides. Cela désactivera les codes à usage unique pour {user}. Un second facteur différent, par exemple un code de connexion envoyé par courriel lui sera demandé à la connexion. {user} pourra à nouveau configurer les codes à usage unique ultérieurement. Tényleg az alaőértelmezett nyelvre szeretnéd konvertálni ezt: {name}? Ez a művelet nem vonható vissza. Ha{name} olyat is tartalmaz, amelynek nincs megfelelő fordítása, a honlapod egyes részei az új alapértelmezett nyelv hiányosságai miatt üresek maradhatnak. This will disable one‑time codes for {user}. In the future, a different second factor like a login code sent via email will be requested when they log in. {user} can set up one‑time codes again after their next login. Anda yakin mengubah {name} menjadi bahasa bawaan? Ini tidak dapat dibatalkan. Jika {name} memiliki konten yang tidak diterjemahkan, tidak akan ada pengganti yang valid dan dapat menyebabkan beberapa bagian dari situs Anda menjadi kosong. This will disable one‑time codes for {user}. In the future, a different second factor like a login code sent via email will be requested when they log in. {user} can set up one‑time codes again after their next login. Ertu viss um að þú viljir breyta {name} í sjálfgefið (lesist aðal) tungumál? Þessu verður ekki viðsnúið. Ef {name} hefur innihald sem ekki hefur verið þýtt, þá verða engir möguleikar til þrautarvara og hluti vefsins gæti birtst tómur. Þetta mun afvirkja einnota kóða fyrir {user}. Framvegis mun nýr seinniþáttarkóði verða sendur í tölvupósti þegar notendur skrá sig inn. {user} getur sett upp einnota kóðana eftir næstu innskráningu. Sei sicuro di voler convertire {name} nella lingua predefinita? Questa operazione non può essere annullata. Se {name} non contiene tutte le traduzioni, non ci sarà più una versione alternativa valida e parti del sito potrebbero rimanere vuote. Questo disattiverà i codici monouso per {user}. In futuro verrà richiesto un secondo fattore diverso per l'accesso, per esempio un codice inviato per email. {user} potrà impostare nuovamente i codici monouso dopo il suo prossimo accesso. Do you really want to convert {name} to the default language? This cannot be undone. If {name} has untranslated content, there will no longer be a valid fallback and parts of your site might be empty. Tai išjungs vienkartinius kodus vartotojui {user}. Ateityje kitoks 2-factor bus prašomas prisijungiant, pvz. login kodas, siunčiamas el. paštu. Jūs galite visada nustatyti vienkartinius kodus vėl vėliau. {user} galės nustatyti vienkartinius kodus, kai jungsis kitą kartą.",
+ "login.totp.disable.success": "Vienkartiniai kodai išjungti",
"logout": "Atsijungti",
+ "merge": "Merge",
"menu": "Meniu",
"meridiem": "AM/PM",
"mime": "Media Tipas",
@@ -411,21 +558,26 @@
"months.september": "Rugsėjis",
"more": "Daugiau",
+ "move": "Move",
"name": "Pavadinimas",
"next": "Toliau",
+ "night": "Night",
"no": "ne",
"off": "ne",
"on": "taip",
"open": "Atidaryti",
"open.newWindow": "Atidaryti naujame lange",
+ "option": "Option",
"options": "Pasirinkimai",
"options.none": "Nėra pasirinkimų",
+ "options.all": "Rodyti visas {count} opcijas",
"orientation": "Orientacija",
"orientation.landscape": "Horizontali",
"orientation.portrait": "Portretas",
"orientation.square": "Kvadratas",
+ "page": "Puslapis",
"page.blueprint": "Šis puslapis dar neturi blueprint. Galite jį nustatyti per /site/blueprints/pages/{blueprint}.yml",
"page.changeSlug": "Pakeisti URL",
"page.changeSlug.fromTitle": "Sukurti URL pagal pavadinimą",
@@ -433,13 +585,15 @@
"page.changeStatus.position": "Pasirinkite poziciją",
"page.changeStatus.select": "Pasirinkite statusą",
"page.changeTemplate": "Pakeisti šabloną",
+ "page.changeTemplate.notice": "Changing the page's template will remove content for fields that don't match in type. Use with caution.",
+ "page.create": "Sukurti kaip {status}",
"page.delete.confirm": "🙀 Ar tikrai norite pašalinti puslapį {title}?",
"page.delete.confirm.subpages": "Šis puslapis turi sub-puslapių. Vil du virkelig konvertere {name} til standardspråk? Dette kan ikke angres. Dersom {name} har innhold som ikke er oversatt, vil nettstedet mangle innhold å falle tilbake på. Dette kan resultere i at deler av nettstedet fremstår som tomt. Dette kommer til å deaktivere engangskoder for {user}. I fremtiden vil en annen tofaktorløsning – som en loginkode sendt via epost – bli etterspurt når de logger inn. {user} kan alltid sette opp tofaktorkoder igjen på senere tidspunkt.",
+ "login.totp.disable.success": "Engangskoder deaktivert",
"logout": "Logg ut",
+ "merge": "Slå sammen",
"menu": "Meny",
"meridiem": "AM/PM",
"mime": "Mediatype",
@@ -411,21 +558,26 @@
"months.september": "September",
"more": "Mer",
+ "move": "Flytt",
"name": "Navn",
"next": "Neste",
+ "night": "Natt",
"no": "nei",
"off": "av",
"on": "på",
"open": "Åpne",
"open.newWindow": "Åpne i nytt vindu",
+ "option": "Alternativ",
"options": "Alternativer",
"options.none": "Ingen alternativer",
+ "options.all": "Vis alle {count} alternativ",
"orientation": "Orientering",
"orientation.landscape": "Landskap",
"orientation.portrait": "Portrett",
"orientation.square": "Kvadrat",
+ "page": "Side",
"page.blueprint": "Denne siden har ikke en blueprint enda. Du kan definere oppsettet i /site/blueprints/pages/{blueprint}.yml",
"page.changeSlug": "Endre URL",
"page.changeSlug.fromTitle": "Opprett fra tittel",
@@ -433,13 +585,15 @@
"page.changeStatus.position": "Vennligst velg en posisjon",
"page.changeStatus.select": "Velg ny status",
"page.changeTemplate": "Endre mal",
+ "page.changeTemplate.notice": "Changing the page's template will remove content for fields that don't match in type. Use with caution.",
+ "page.create": "Lag som {status}",
"page.delete.confirm": "Vil du virkelig slette denne siden?",
"page.delete.confirm.subpages": "Denne siden har undersider. Weet je zeker dat je {name} wilt aanpassen naar de standaard taal? Dit kan niet ongedaan worden gemaakt Als {name} nog niet vertaalde content heeft, is er geen content meer om op terug te vallen en zouden delen van je site leeg kunnen zijn. Dit schakelt eenmalige codes uit voor {user}. In de toekomst zal bij het inloggen om een andere tweede factor worden gevraagd, zoals een inlogcode die via e-mail wordt verzonden. {user} kan na zijn volgende aanmelding opnieuw eenmalige codes instellen. Czy na pewno chcesz zmienić domyślny język na {name}? Nie można tego cofnąć. Jeżeli brakuje tłumaczenia jakichś treści na {name}, nie będzie ich czym zastąpić i części witryny mogą być puste. Spowoduje to wyłączenie kodów jednorazowych dla użytkownika {user}. W przyszłości podczas logowania wymagany będzie inny drugi czynnik, taki jak kod logowania wysłany emailem. {user} może ponownie skonfigurować kody jednorazowe po następnym zalogowaniu. Deseja realmente converter {name} para o idioma padrão? Esta ação não poderá ser revertida. Se {name} tiver conteúdo não traduzido, partes do seu site poderão ficar sem conteúdo. Deseja realmente converter {name} para o idioma padrão? Esta ação não poderá ser revertida. Se {name} tiver conteúdo não traduzido, partes do seu site poderão ficar sem conteúdo. Tem a certeza que pretende converter {name} para o idioma por defeito? Esta ação não pode ser revertida. Se {name} tiver conteúdo não traduzido, partes do site podem ficar sem conteúdo. Isto irá desativar os códigos de segurança para {user}. No futuro, um segundo fator diferente, como um código de início de sessão enviado por e-mail, será solicitado quando eles iniciarem a sessão. {user} poderá configurar códigos de segurança novamente após o próximo início de sessão. Chiar vrei să transformi {name} în limba implicită? Această modificare este ireversibilă. Dacă {name} are conținut netradus, unele părți din site s-ar putea să nu mai aibă conținut de rezervă, și vor apărea goale. Această acțiune va dezactiva codurile de unică folosință pentru {user}. În viitor, se va solicita un al doilea factor diferit, cum ar fi un cod de autentificare trimis prin e-mail, atunci când se autentifică. {user} poate configura din nou codurile de unică folosință după următoarea autentificare.",
+ "login.totp.disable.success": "Codurile de unică folosință dezactivate",
- "logout": "Deconectează-te",
+ "logout": "Deconectare",
+ "merge": "Îmbină",
"menu": "Meniu",
"meridiem": "AM/PM",
"mime": "Tipul media",
@@ -411,45 +558,53 @@
"months.september": "Septembrie",
"more": "Mai multe",
+ "move": "Mută",
"name": "Nume",
"next": "Următoarea",
+ "night": "Noapte",
"no": "nu",
"off": "oprit",
"on": "pornit",
"open": "Deschide",
"open.newWindow": "Deschide în fereastră nouă",
+ "option": "Opțiune",
"options": "Opțiuni",
"options.none": "Nicio opțiune",
+ "options.all": "Afișați toate {count} opțiunile",
"orientation": "Orientare",
"orientation.landscape": "Landscape",
"orientation.portrait": "Portrait",
"orientation.square": "Pătrată",
+ "page": "Pagină",
"page.blueprint": "Această pagină nu are încă un Blueprint. Poți să-l definești în /site/blueprints/pages/{blueprint}.yml",
"page.changeSlug": "Schimbă URL-ul",
"page.changeSlug.fromTitle": "Creează din titlu",
- "page.changeStatus": "Schimbă statusul",
+ "page.changeStatus": "Schimbă starea",
"page.changeStatus.position": "Te rog alege o poziție",
- "page.changeStatus.select": "Alege un status nou",
+ "page.changeStatus.select": "Alege o stare nouă",
"page.changeTemplate": "Schimbă șablonul",
+ "page.changeTemplate.notice": "Schimbarea șablonului paginii va înlătura conținutul câmpurilor care nu se potrivesc ca tip. Folosește cu prudență.",
+ "page.create": "Creează ca {status}",
"page.delete.confirm": "Chiar vrei să ștergi {title}?",
"page.delete.confirm.subpages": "Această pagină are subpagini. Вы точно хотите конвертировать {name} в главный язык? Это нельзя будет отменить. Если {name} имеет непереведенный контент, то больше не будет верного каскада и части вашего сайта могут быть пустыми. Вы отключаете одноразовые коды для{user}. Теперь при входе в систему будет запрашиваться другой второй фактор, например код для входа, отправленный по Email. {user} может повторно настроить одноразовые коды после следующего входа в систему. Ste si istý, že chcete nastaviť {name} ako predvolený jazyk? Túto akciu nie je možné zvrátiť. Ak {name} obsahuje nepreložený obsah, tak pre tento obsah nebude fungovať platné volanie a niektoré časti vašich stránok zostanú prázdne. This will disable one‑time codes for {user}. In the future, a different second factor like a login code sent via email will be requested when they log in. {user} can set up one‑time codes again after their next login. Vill du verkligen göra {name} till standardspråket? Detta kan inte ångras. Om {name} har oöversatt innehåll, kommer det inte längre finnas en alternativ översättning och delar av sajten kommer kanske att vara tom. Detta kommer att inaktivera engångskoder för {user}. I fortsättningen kommer en annan andra faktor som en inloggningskod som skickas via e-post att begäras när de loggar in. {user} kan ställa in engångskoder igen efter nästa inloggning. {name}'i varsayılan dile dönüştürmek istiyor musunuz? Bu geri alınamaz. {name} çevrilmemiş içeriğe sahipse, artık geçerli bir geri dönüş olmaz ve sitenizin bazı bölümleri boş olabilir. Bu {user} için tek seferlik kodları devre dışı bırakacaktır.](https://getkirby.com)
+[
](https://getkirby.com)
[](https://github.com/getkirby/kirby/releases/latest)
[](https://github.com/getkirby/kirby/actions?query=workflow%3ACI+branch%3Amain)
[](https://codecov.io/gh/getkirby/kirby)
[](https://github.com/getkirby/kirby/releases/latest)
-**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).
+**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:
@@ -15,21 +15,23 @@ This is Kirby's core application folder. Get started with one of the following r
-### Try Kirby for free
+### Try Kirby for free
+
Kirby is not free software. However, you can try Kirby and the Starterkit on your local machine or on a test server as long as you need to make sure it is the right tool for your next project. … and when you’re convinced, [buy your license](https://getkirby.com/buy).
### 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?
+
- **[getkirby.com](https://getkirby.com)** – Get to know the CMS.
- **[Try it](https://getkirby.com/try)** – Take a test ride with our online demo. Or download one of our kits to get started.
- **[Documentation](https://getkirby.com/docs/guide)** – Read the official guide, reference and cookbook recipes.
@@ -39,9 +41,9 @@ 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.
---
-© 2009-2023 Bastian Allgeier
+© 2009 Bastian Allgeier
[getkirby.com](https://getkirby.com) · [License agreement](https://getkirby.com/license)
diff --git a/kirby/SECURITY.md b/kirby/SECURITY.md
index ae42a38..ffc6ad0 100644
--- a/kirby/SECURITY.md
+++ b/kirby/SECURITY.md
@@ -1,3 +1,27 @@
# Security Policy
-Please see the [Security Policy on the Kirby website](https://getkirby.com/security) for a list of the currently supported Kirby versions and of past security incidents as well as for information on how to report security vulnerabilities in the Kirby core or in the Panel.
+## Supported versions and past security incidents
+
+You can find up-to-date information on the security status of each version on
` tags.
* @since 3.3.0
- *
- * @param \Kirby\Cms\Field $field
- * @return \Kirby\Cms\Field
*/
- 'nl2br' => function (Field $field) {
+ 'nl2br' => function (Field $field): Field {
$field->value = nl2br($field->value ?? '', false);
return $field;
},
/**
- * Uses the field value as Kirby query
+ * Parses the field value as DOM and replaces
+ * any permalinks in href/src attributes with
+ * the regular url
*
- * @param \Kirby\Cms\Field $field
- * @param string|null $expect
- * @return mixed
+ * This method is still experimental! You can use
+ * it to solve potential problems with permalinks
+ * already, but it might change in the future.
*/
- 'query' => function (Field $field, string $expect = null) use ($app) {
+ 'permalinksToUrls' => function (Field $field): Field {
+ if ($field->isNotEmpty() === true) {
+ $dom = new Dom($field->value);
+ $attributes = ['href', 'src'];
+ $elements = $dom->query('//*[' . implode(' | ', A::map($attributes, fn ($attribute) => '@' . $attribute)) . ']');
+
+ foreach ($elements as $element) {
+ foreach ($attributes as $attribute) {
+ if ($element->hasAttribute($attribute) && $uuid = $element->getAttribute($attribute)) {
+ try {
+ if ($url = Uuid::for($uuid)?->model()?->url()) {
+ $element->setAttribute($attribute, $url);
+ }
+ } catch (InvalidArgumentException) {
+ // ignore anything else than permalinks
+ }
+ }
+ }
+ }
+
+ $field->value = $dom->toString();
+ }
+
+ return $field;
+ },
+
+ /**
+ * Uses the field value as Kirby query
+ */
+ 'query' => function (
+ Field $field,
+ string|null $expect = null
+ ) use ($app): mixed {
if ($parent = $field->parent()) {
return $parent->query($field->value, $expect);
}
@@ -509,13 +520,13 @@ return function (App $app) {
/**
* It parses any queries found in the field value.
*
- * @param \Kirby\Cms\Field $field
- * @param array $data
- * @param string|null $fallback Fallback for tokens in the template that cannot be replaced
- * (`null` to keep the original token)
- * @return \Kirby\Cms\Field
+ * @param string|null $fallback Fallback for tokens in the template that cannot be replaced (`null` to keep the original token)
*/
- 'replace' => function (Field $field, array $data = [], string|null $fallback = '') use ($app) {
+ 'replace' => function (
+ Field $field,
+ array $data = [],
+ string|null $fallback = ''
+ ) use ($app): Field {
if ($parent = $field->parent()) {
// never pass `null` as the $template to avoid the fallback to the model ID
$field->value = $parent->toString($field->value ?? '', $data, $fallback);
@@ -534,55 +545,45 @@ return function (App $app) {
* Cuts the string after the given length and
* adds "…" if it is longer
*
- * @param \Kirby\Cms\Field $field
* @param int $length The number of characters in the string
* @param string $appendix An optional replacement for the missing rest
- * @return \Kirby\Cms\Field
*/
- 'short' => function (Field $field, int $length, string $appendix = '…') {
+ 'short' => function (
+ Field $field,
+ int $length,
+ string $appendix = '…'
+ ): Field {
$field->value = Str::short($field->value, $length, $appendix);
return $field;
},
/**
* Converts the field content to a slug
- *
- * @param \Kirby\Cms\Field $field
- * @return \Kirby\Cms\Field
*/
- 'slug' => function (Field $field) {
+ 'slug' => function (Field $field): Field {
$field->value = Str::slug($field->value);
return $field;
},
/**
* Applies SmartyPants to the field
- *
- * @param \Kirby\Cms\Field $field
- * @return \Kirby\Cms\Field
*/
- 'smartypants' => function (Field $field) use ($app) {
+ 'smartypants' => function (Field $field) use ($app): Field {
$field->value = $app->smartypants($field->value);
return $field;
},
/**
* Splits the field content into an array
- *
- * @param \Kirby\Cms\Field $field
- * @return array
*/
- 'split' => function (Field $field, $separator = ',') {
+ 'split' => function (Field $field, $separator = ','): array {
return Str::split((string)$field->value, $separator);
},
/**
* Converts the field content to uppercase
- *
- * @param \Kirby\Cms\Field $field
- * @return \Kirby\Cms\Field
*/
- 'upper' => function (Field $field) {
+ 'upper' => function (Field $field): Field {
$field->value = Str::upper($field->value);
return $field;
},
@@ -590,22 +591,16 @@ return function (App $app) {
/**
* Avoids typographical widows in strings by replacing
* the last space with ` `
- *
- * @param \Kirby\Cms\Field $field
- * @return \Kirby\Cms\Field
*/
- 'widont' => function (Field $field) {
+ 'widont' => function (Field $field): Field {
$field->value = Str::widont($field->value);
return $field;
},
/**
* Converts the field content to valid XML
- *
- * @param \Kirby\Cms\Field $field
- * @return \Kirby\Cms\Field
*/
- 'xml' => function (Field $field) {
+ 'xml' => function (Field $field): Field {
$field->value = Xml::encode($field->value);
return $field;
},
@@ -614,9 +609,6 @@ return function (App $app) {
/**
* Parses yaml in the field content and returns an array
- *
- * @param \Kirby\Cms\Field $field
- * @return array
*/
'yaml' => function (Field $field): array {
return $field->toData('yaml');
diff --git a/kirby/config/presets/page.php b/kirby/config/presets/page.php
index e01bcf1..a2102ef 100644
--- a/kirby/config/presets/page.php
+++ b/kirby/config/presets/page.php
@@ -44,7 +44,7 @@ return function ($props) {
}
if (empty($sidebar) === true) {
- $props['fields'] = $props['fields'] ?? [];
+ $props['fields'] ??= [];
unset(
$props['files'],
diff --git a/kirby/config/presets/pages.php b/kirby/config/presets/pages.php
index 32a4589..a2c7714 100644
--- a/kirby/config/presets/pages.php
+++ b/kirby/config/presets/pages.php
@@ -26,7 +26,7 @@ return function (array $props) {
// inject the global templates definition
if (empty($templates) === false) {
- $props['templates'] = $props['templates'] ?? $templates;
+ $props['templates'] ??= $templates;
}
return array_replace_recursive($defaults, $props);
diff --git a/kirby/config/routes.php b/kirby/config/routes.php
index d8f4962..0699ef1 100644
--- a/kirby/config/routes.php
+++ b/kirby/config/routes.php
@@ -1,5 +1,6 @@
option('api.slug', 'api');
$panel = $kirby->option('panel.slug', 'panel');
$index = $kirby->url('index');
@@ -32,7 +33,7 @@ return function ($kirby) {
'pattern' => $api . '/(:all)',
'method' => 'ALL',
'env' => 'api',
- 'action' => function ($path = null) use ($kirby) {
+ 'action' => function (string|null $path = null) use ($kirby) {
if ($kirby->option('api') === false) {
return null;
}
@@ -60,37 +61,63 @@ return function ($kirby) {
}
],
[
- 'pattern' => $media . '/plugins/(:any)/(:any)/(:all)\.(css|map|gif|js|mjs|jpg|png|svg|webp|avif|woff2|woff|json)',
+ // TODO: change to '/plugins/(:any)/(:any)/(:any)/(:all)' once
+ // the hash is made mandatory
+ 'pattern' => $media . '/plugins/(:any)/(:any)/(?:(:any)/)?(:all)',
'env' => 'media',
- 'action' => function (string $provider, string $pluginName, string $filename, string $extension) {
- return PluginAssets::resolve($provider . '/' . $pluginName, $filename . '.' . $extension);
+ 'action' => function (
+ string $provider,
+ string $pluginName,
+ string $hash,
+ string $path
+ ) {
+ return PluginAssets::resolve(
+ $provider . '/' . $pluginName,
+ $hash,
+ $path
+ );
}
],
[
'pattern' => $media . '/pages/(:all)/(:any)/(:any)',
'env' => 'media',
- 'action' => function ($path, $hash, $filename) use ($kirby) {
+ 'action' => function (
+ string $path,
+ string $hash,
+ string $filename
+ ) use ($kirby) {
return Media::link($kirby->page($path), $hash, $filename);
}
],
[
'pattern' => $media . '/site/(:any)/(:any)',
'env' => 'media',
- 'action' => function ($hash, $filename) use ($kirby) {
+ 'action' => function (
+ string $hash,
+ string $filename
+ ) use ($kirby) {
return Media::link($kirby->site(), $hash, $filename);
}
],
[
'pattern' => $media . '/users/(:any)/(:any)/(:any)',
'env' => 'media',
- 'action' => function ($id, $hash, $filename) use ($kirby) {
+ 'action' => function (
+ string $id,
+ string $hash,
+ string $filename
+ ) use ($kirby) {
return Media::link($kirby->user($id), $hash, $filename);
}
],
[
'pattern' => $media . '/assets/(:all)/(:any)/(:any)',
'env' => 'media',
- 'action' => function ($path, $hash, $filename) {
+ 'action' => function (
+ string $path,
+ string $hash,
+ string $filename
+ ) {
return Media::thumb($path, $hash, $filename);
}
],
@@ -98,7 +125,7 @@ return function ($kirby) {
'pattern' => $panel . '/(:all?)',
'method' => 'ALL',
'env' => 'panel',
- 'action' => function ($path = null) {
+ 'action' => function (string|null $path = null) {
return Panel::router($path);
}
],
diff --git a/kirby/config/sections/files.php b/kirby/config/sections/files.php
index 1b123d7..8bab322 100644
--- a/kirby/config/sections/files.php
+++ b/kirby/config/sections/files.php
@@ -1,6 +1,7 @@
[
+ /**
+ * Filters pages by a query. Sorting will be disabled
+ */
+ 'query' => function (string|null $query = null) {
+ return $query;
+ },
/**
* 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;
},
/**
@@ -40,7 +47,7 @@ return [
'template' => $this->template
]);
- return $file->blueprint()->acceptMime();
+ return $file->blueprint()->acceptAttribute();
}
return null;
@@ -48,11 +55,18 @@ return [
'parent' => function () {
return $this->parentModel();
},
- 'files' => function () {
- $files = $this->parent->files()->template($this->template);
+ 'models' => function () {
+ if ($this->query !== null) {
+ $files = $this->parent->query($this->query, Files::class) ?? new Files([]);
+ } else {
+ $files = $this->parent->files();
+ }
- // filter out all protected files
- $files = $files->filter('isReadable', true);
+ // filter files by template
+ $files = $files->template($this->template);
+
+ // filter out all protected and hidden files
+ $files = $files->filter('isListable', true);
// search
if ($this->search === true && empty($this->searchterm()) === false) {
@@ -85,6 +99,9 @@ return [
return $files;
},
+ 'files' => function () {
+ return $this->models;
+ },
'data' => function () {
$data = [];
@@ -92,7 +109,7 @@ return [
// a different parent model
$dragTextAbsolute = $this->model->is($this->parent) === false;
- foreach ($this->files as $file) {
+ foreach ($this->models as $file) {
$panel = $file->panel();
$item = [
@@ -123,7 +140,7 @@ return [
return $data;
},
'total' => function () {
- return $this->files->pagination()->total();
+ return $this->models->pagination()->total();
},
'errors' => function () {
$errors = [];
@@ -177,24 +194,44 @@ return [
'multiple' => $multiple,
'max' => $max,
'api' => $this->parent->apiUrl(true) . '/files',
- 'attributes' => array_filter([
+ 'preview' => $this->image,
+ 'attributes' => [
// TODO: an edge issue that needs to be solved:
- // if multiple users load the same section at the same time
- // and upload a file, uploaded files have the same sort number
+ // if multiple users load the same section
+ // at the same time and upload a file,
+ // uploaded files have the same sort number
'sort' => $this->sortable === true ? $this->total + 1 : null,
'template' => $template
- ])
+ ]
];
}
],
+ // @codeCoverageIgnoreStart
+ 'api' => function () {
+ return [
+ [
+ 'pattern' => 'sort',
+ 'method' => 'PATCH',
+ 'action' => function () {
+ $this->section()->model()->files()->changeSort(
+ $this->requestBody('files'),
+ $this->requestBody('index')
+ );
+
+ return true;
+ }
+ ]
+ ];
+ },
+ // @codeCoverageIgnoreEnd
'toArray' => function () {
return [
'data' => $this->data,
'errors' => $this->errors,
'options' => [
'accept' => $this->accept,
- 'apiUrl' => $this->parent->apiUrl(true),
- 'columns' => $this->columns,
+ 'apiUrl' => $this->parent->apiUrl(true) . '/sections/' . $this->name,
+ 'columns' => $this->columnsWithTypes(),
'empty' => $this->empty,
'headline' => $this->headline,
'help' => $this->help,
diff --git a/kirby/config/sections/info.php b/kirby/config/sections/info.php
index bc390c7..20a288d 100644
--- a/kirby/config/sections/info.php
+++ b/kirby/config/sections/info.php
@@ -7,10 +7,13 @@ return [
'headline',
],
'props' => [
+ '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;
}
],
@@ -25,6 +28,7 @@ return [
],
'toArray' => function () {
return [
+ 'icon' => $this->icon,
'label' => $this->headline,
'text' => $this->text,
'theme' => $this->theme
diff --git a/kirby/config/sections/mixins/layout.php b/kirby/config/sections/mixins/layout.php
index d362a7c..b348176 100644
--- a/kirby/config/sections/mixins/layout.php
+++ b/kirby/config/sections/mixins/layout.php
@@ -1,5 +1,7 @@
function (array $columns = null) {
+ 'columns' => function (array|null $columns = null) {
return $columns ?? [];
},
/**
@@ -20,7 +22,15 @@ return [
return in_array($layout, $layouts) ? $layout : 'list';
},
/**
- * The size option controls the size of cards. By default cards are auto-sized and the cards grid will always fill the full width. With a size you can disable auto-sizing. Available sizes: `tiny`, `small`, `medium`, `large`, `huge`
+ * Whether the raw content file values should be used for the table column previews. Should not be used unless it eases performance issues in your setup introduced with Kirby 4.2
+ *
+ * @todo remove when Form classes have been refactored
+ */
+ 'rawvalues' => function (bool $rawvalues = false) {
+ return $rawvalues;
+ },
+ /**
+ * The size option controls the size of cards. By default cards are auto-sized and the cards grid will always fill the full width. With a size you can disable auto-sizing. Available sizes: `tiny`, `small`, `medium`, `large`, `huge`, `full`
*/
'size' => function (string $size = 'auto') {
return $size;
@@ -28,7 +38,7 @@ return [
],
'computed' => [
'columns' => function () {
- $columns = [];
+ $columns = [];
if ($this->layout !== 'table') {
return [];
@@ -76,9 +86,12 @@ return [
// keep the original column name as id
$column['id'] = $columnName;
- // add the custom column to the array with a key that won't
- // override the system columns
- $columns[$columnName . 'Cell'] = $column;
+ // add the custom column to the array
+ // allowing to extend/overwrite existing columns
+ $columns[$columnName] = [
+ ...$columns[$columnName] ?? [],
+ ...$column
+ ];
}
if ($this->type === 'pages') {
@@ -94,7 +107,27 @@ return [
},
],
'methods' => [
- 'columnsValues' => function (array $item, $model) {
+ 'columnsWithTypes' => function () {
+ $columns = $this->columns;
+
+ // add the type to the columns for the table layout
+ if ($this->layout === 'table') {
+ $blueprint = $this->models->first()?->blueprint();
+
+ if ($blueprint === null) {
+ return $columns;
+ }
+
+ foreach ($columns as $columnName => $column) {
+ if ($id = $column['id'] ?? null) {
+ $columns[$columnName]['type'] ??= $blueprint->field($id)['type'] ?? null;
+ }
+ }
+ }
+
+ return $columns;
+ },
+ 'columnsValues' => function (array $item, ModelWithContent $model) {
$item['title'] = [
// override toSafeString() coming from `$item`
// because the table cells don't use v-html
@@ -108,19 +141,35 @@ return [
$item['info'] = $model->toString($this->info);
}
+ // if forcing raw values, get those directly from content file
+ // TODO: remove once Form classes have been refactored
+ // @codeCoverageIgnoreStart
+ if ($this->rawvalues === true) {
+ foreach ($this->columns as $columnName => $column) {
+ $item[$columnName] = match (empty($column['value'])) {
+ // if column value defined, resolve the query
+ false => $model->toString($column['value']),
+ // otherwise use the form value,
+ // but don't overwrite columns
+ default => $item[$columnName] ?? $model->content()->get($column['id'] ?? $columnName)->value()
+ };
+ }
+
+ return $item;
+ }
+ // @codeCoverageIgnoreEnd
+
+ // Use form to get the proper values for the columns
+ $form = Form::for($model)->values();
+
foreach ($this->columns as $columnName => $column) {
- // don't overwrite essential columns
- if (isset($item[$columnName]) === true) {
- continue;
- }
-
- if (empty($column['value']) === false) {
- $value = $model->toString($column['value']);
- } else {
- $value = $model->content()->get($column['id'] ?? $columnName)->value();
- }
-
- $item[$columnName] = $value;
+ $item[$columnName] = match (empty($column['value'])) {
+ // if column value defined, resolve the query
+ false => $model->toString($column['value']),
+ // otherwise use the form value,
+ // but don't overwrite columns
+ default => $item[$columnName] ?? $form[$column['id'] ?? $columnName] ?? null
+ };
}
return $item;
diff --git a/kirby/config/sections/mixins/max.php b/kirby/config/sections/mixins/max.php
index a87c1cc..b49c627 100644
--- a/kirby/config/sections/mixins/max.php
+++ b/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/kirby/config/sections/mixins/min.php b/kirby/config/sections/mixins/min.php
index 6295f2d..40fa82e 100644
--- a/kirby/config/sections/mixins/min.php
+++ b/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/kirby/config/sections/mixins/pagination.php b/kirby/config/sections/mixins/pagination.php
index 3b2a2b0..39f8d0a 100644
--- a/kirby/config/sections/mixins/pagination.php
+++ b/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/kirby/config/sections/mixins/parent.php b/kirby/config/sections/mixins/parent.php
index 1096930..1217411 100644
--- a/kirby/config/sections/mixins/parent.php
+++ b/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/kirby/config/sections/mixins/sort.php b/kirby/config/sections/mixins/sort.php
index 4387bae..118e03b 100644
--- a/kirby/config/sections/mixins/sort.php
+++ b/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;
},
],
@@ -39,6 +39,10 @@ return [
return false;
}
+ if ($this->query !== null) {
+ return false;
+ }
+
if ($this->sortBy !== null) {
return false;
}
diff --git a/kirby/config/sections/pages.php b/kirby/config/sections/pages.php
index c9b23b7..6ca1090 100644
--- a/kirby/config/sections/pages.php
+++ b/kirby/config/sections/pages.php
@@ -2,6 +2,7 @@
use Kirby\Cms\Blueprint;
use Kirby\Cms\Page;
+use Kirby\Cms\Pages;
use Kirby\Cms\Site;
use Kirby\Exception\InvalidArgumentException;
use Kirby\Toolkit\A;
@@ -29,6 +30,12 @@ return [
'create' => function ($create = null) {
return $create;
},
+ /**
+ * Filters pages by a query. Sorting will be disabled
+ */
+ 'query' => function (string|null $query = null) {
+ return $query;
+ },
/**
* Filters pages by their status. Available status settings: `draft`, `unlisted`, `listed`, `published`, `all`.
*/
@@ -43,11 +50,23 @@ return [
return $status;
},
+ /**
+ * Filters the list by single template.
+ */
+ 'template' => function (string|array|null $template = null) {
+ return $template;
+ },
/**
* Filters the list by templates and sets template options when adding new pages to the section.
*/
'templates' => function ($templates = null) {
return A::wrap($templates ?? $this->template);
+ },
+ /**
+ * Excludes the selected templates.
+ */
+ 'templatesIgnore' => function ($templates = null) {
+ return A::wrap($templates);
}
],
'computed' => [
@@ -63,14 +82,18 @@ return [
return $parent;
},
- 'pages' => function () {
- $pages = match ($this->status) {
- 'draft' => $this->parent->drafts(),
- 'listed' => $this->parent->children()->listed(),
- 'published' => $this->parent->children(),
- 'unlisted' => $this->parent->children()->unlisted(),
- default => $this->parent->childrenAndDrafts()
- };
+ 'models' => function () {
+ if ($this->query !== null) {
+ $pages = $this->parent->query($this->query, Pages::class) ?? new Pages([]);
+ } else {
+ $pages = match ($this->status) {
+ 'draft' => $this->parent->drafts(),
+ 'listed' => $this->parent->children()->listed(),
+ 'published' => $this->parent->children(),
+ 'unlisted' => $this->parent->children()->unlisted(),
+ default => $this->parent->childrenAndDrafts()
+ };
+ }
// filters pages that are protected and not in the templates list
// internal `filter()` method used instead of foreach loop that previously included `unset()`
@@ -78,13 +101,26 @@ return [
// also it has been tested that there is no performance difference
// even in 0.1 seconds on 100k virtual pages
$pages = $pages->filter(function ($page) {
- // remove all protected pages
- if ($page->isReadable() === false) {
+ // remove all protected and hidden pages
+ if ($page->isListable() === false) {
return false;
}
+ $intendedTemplate = $page->intendedTemplate()->name();
+
// filter by all set templates
- if ($this->templates && in_array($page->intendedTemplate()->name(), $this->templates) === false) {
+ if (
+ $this->templates &&
+ in_array($intendedTemplate, $this->templates) === false
+ ) {
+ return false;
+ }
+
+ // exclude by all ignored templates
+ if (
+ $this->templatesIgnore &&
+ in_array($intendedTemplate, $this->templatesIgnore) === true
+ ) {
return false;
}
@@ -120,13 +156,16 @@ return [
return $pages;
},
+ 'pages' => function () {
+ return $this->models;
+ },
'total' => function () {
- return $this->pages->pagination()->total();
+ return $this->models->pagination()->total();
},
'data' => function () {
$data = [];
- foreach ($this->pages as $page) {
+ foreach ($this->models as $page) {
$panel = $page->panel();
$permissions = $page->permissions();
@@ -193,11 +232,39 @@ return [
return false;
}
- if (in_array($this->status, ['draft', 'all']) === false) {
+ if ($this->isFull() === true) {
return false;
}
- if ($this->isFull() === true) {
+ // form here on, we need to check with which status
+ // the pages are created and if the section can show
+ // these newly created pages
+
+ // if the section shows pages no matter what status they have,
+ // we can always show the add button
+ if ($this->status === 'all') {
+ return true;
+ }
+
+ // collect all statuses of the blueprints
+ // that are allowed to be created
+ $statuses = [];
+
+ foreach ($this->blueprintNames() as $blueprint) {
+ try {
+ $props = Blueprint::load('pages/' . $blueprint);
+ $statuses[] = $props['create']['status'] ?? 'draft';
+ } catch (Throwable) {
+ $statuses[] = 'draft'; // @codeCoverageIgnore
+ }
+ }
+
+ $statuses = array_unique($statuses);
+
+ // if there are multiple statuses or if the section is showing
+ // a different status than new pages would be created with,
+ // we cannot show the add button
+ if (count($statuses) > 1 || $this->status !== $statuses[0]) {
return false;
}
@@ -210,17 +277,12 @@ return [
'methods' => [
'blueprints' => function () {
$blueprints = [];
- $templates = empty($this->create) === false ? A::wrap($this->create) : $this->templates;
-
- if (empty($templates) === true) {
- $templates = $this->kirby()->blueprints();
- }
// convert every template to a usable option array
// for the template select box
- foreach ($templates as $template) {
+ foreach ($this->blueprintNames() as $blueprint) {
try {
- $props = Blueprint::load('pages/' . $template);
+ $props = Blueprint::load('pages/' . $blueprint);
$blueprints[] = [
'name' => basename($props['name']),
@@ -228,14 +290,28 @@ return [
];
} catch (Throwable) {
$blueprints[] = [
- 'name' => basename($template),
- 'title' => ucfirst($template),
+ 'name' => basename($blueprint),
+ 'title' => ucfirst($blueprint),
];
}
}
return $blueprints;
- }
+ },
+ 'blueprintNames' => function () {
+ $blueprints = empty($this->create) === false ? A::wrap($this->create) : $this->templates;
+
+ if (empty($blueprints) === true) {
+ $blueprints = $this->kirby()->blueprints();
+ }
+
+ // excludes ignored templates
+ if ($templatesIgnore = $this->templatesIgnore) {
+ $blueprints = array_diff($blueprints, $templatesIgnore);
+ }
+
+ return $blueprints;
+ },
],
'toArray' => function () {
return [
@@ -243,7 +319,7 @@ return [
'errors' => $this->errors,
'options' => [
'add' => $this->add,
- 'columns' => $this->columns,
+ 'columns' => $this->columnsWithTypes(),
'empty' => $this->empty,
'headline' => $this->headline,
'help' => $this->help,
diff --git a/kirby/config/sections/stats.php b/kirby/config/sections/stats.php
index e18eba0..86efe96 100644
--- a/kirby/config/sections/stats.php
+++ b/kirby/config/sections/stats.php
@@ -8,7 +8,7 @@ return [
],
'props' => [
/**
- * Array or query string for reports. Each report needs a `label` and `value` and can have additional `info`, `link` and `theme` settings.
+ * Array or query string for reports. Each report needs a `label` and `value` and can have additional `info`, `link`, `icon` and `theme` settings.
*/
'reports' => function ($reports = null) {
if ($reports === null) {
@@ -53,6 +53,7 @@ return [
$value = $report['value'] ?? null;
$reports[] = [
+ 'icon' => $toString($report['icon'] ?? null),
'info' => $toString(I18n::translate($info, $info)),
'label' => $toString(I18n::translate($label, $label)),
'link' => $toString(I18n::translate($link, $link)),
diff --git a/kirby/config/setup.php b/kirby/config/setup.php
index bbe61c1..09b73bb 100644
--- a/kirby/config/setup.php
+++ b/kirby/config/setup.php
@@ -1,11 +1,5 @@
[
'attr' => [],
- 'html' => function ($tag) {
- return strtolower($tag->date) === 'year' ? date('Y') : date($tag->date);
+ 'html' => function (KirbyTag $tag): string {
+ if (strtolower($tag->date) === 'year') {
+ return date('Y');
+ }
+
+ return date($tag->date);
}
],
@@ -31,7 +38,7 @@ return [
'text',
'title'
],
- 'html' => function ($tag) {
+ 'html' => function (KirbyTag $tag): string {
return Html::email($tag->value, $tag->text, [
'class' => $tag->class,
'rel' => $tag->rel,
@@ -53,9 +60,9 @@ return [
'text',
'title'
],
- 'html' => function ($tag) {
+ 'html' => function (KirbyTag $tag): string {
if (!$file = $tag->file($tag->value)) {
- return $tag->text;
+ return $tag->text ?? $tag->value;
}
// use filename if the text is empty and make sure to
@@ -81,7 +88,7 @@ return [
'attr' => [
'file'
],
- 'html' => function ($tag) {
+ 'html' => function (KirbyTag $tag): string {
return Html::gist($tag->value, $tag->file);
}
],
@@ -99,16 +106,41 @@ return [
'link',
'linkclass',
'rel',
+ 'srcset',
'target',
'title',
'width'
],
- 'html' => function ($tag) {
+ 'html' => function (KirbyTag $tag): string {
+ $kirby = $tag->kirby();
+
+ $tag->width ??= $kirby->option('kirbytext.image.width');
+ $tag->height ??= $kirby->option('kirbytext.image.height');
+
if ($tag->file = $tag->file($tag->value)) {
- $tag->src = $tag->file->url();
- $tag->alt = $tag->alt ?? $tag->file->alt()->or(' ')->value();
- $tag->title = $tag->title ?? $tag->file->title()->value();
- $tag->caption = $tag->caption ?? $tag->file->caption()->value();
+ $tag->src = $tag->file->url();
+ $tag->alt ??= $tag->file->alt()->or('')->value();
+ $tag->title ??= $tag->file->title()->value();
+ $tag->caption ??= $tag->file->caption()->value();
+
+ if ($srcset = $tag->srcset) {
+ $srcset = Str::split($srcset);
+ $srcset = match (count($srcset) > 1) {
+ // comma-separated list of sizes
+ true => A::map($srcset, fn ($size) => (int)trim($size)),
+ // srcset config name
+ default => $srcset[0]
+ };
+
+ $tag->srcset = $tag->file->srcset($srcset);
+ }
+
+ if ($tag->width === 'auto') {
+ $tag->width = $tag->file->width();
+ }
+ if ($tag->height === 'auto') {
+ $tag->height = $tag->file->height();
+ }
} else {
$tag->src = Url::to($tag->value);
}
@@ -129,25 +161,26 @@ return [
};
$image = Html::img($tag->src, [
+ 'srcset' => $tag->srcset,
'width' => $tag->width,
'height' => $tag->height,
'class' => $tag->imgclass,
'title' => $tag->title,
- 'alt' => $tag->alt ?? ' '
+ 'alt' => $tag->alt ?? ''
]);
- if ($tag->kirby()->option('kirbytext.image.figure', true) === false) {
+ if ($kirby->option('kirbytext.image.figure', true) === false) {
return $link($image);
}
// render KirbyText in caption
if ($tag->caption) {
$options = ['markdown' => ['inline' => true]];
- $caption = $tag->kirby()->kirbytext($tag->caption, $options);
+ $caption = $kirby->kirbytext($tag->caption, $options);
$tag->caption = [$caption];
}
- return Html::figure([ $link($image) ], $tag->caption, [
+ return Html::figure([$link($image)], $tag->caption, [
'class' => $tag->class
]);
}
@@ -166,7 +199,7 @@ return [
'title',
'text',
],
- 'html' => function ($tag) {
+ 'html' => function (KirbyTag $tag): string {
if (empty($tag->lang) === false) {
$tag->value = Url::to($tag->value, $tag->lang);
}
@@ -177,7 +210,20 @@ return [
Uuid::is($tag->value, 'page') === true ||
Uuid::is($tag->value, 'file') === true
) {
- $tag->value = Uuid::for($tag->value)->model()->url();
+ $tag->value = Uuid::for($tag->value)->model()?->url();
+ }
+
+ // if url is empty, throw exception or link to the error page
+ if ($tag->value === null) {
+ if ($tag->kirby()->option('debug', false) === true) {
+ if (empty($tag->text) === false) {
+ throw new NotFoundException('The linked page cannot be found for the link text "' . $tag->text . '"');
+ } else {
+ throw new NotFoundException('The linked page cannot be found');
+ }
+ } else {
+ $tag->value = Url::to($tag->kirby()->site()->errorPageId());
+ }
}
return Html::a($tag->value, $tag->text, [
@@ -200,7 +246,7 @@ return [
'text',
'title'
],
- 'html' => function ($tag) {
+ 'html' => function (KirbyTag $tag): string {
return Html::tel($tag->value, $tag->text, [
'class' => $tag->class,
'rel' => $tag->rel,
@@ -209,37 +255,6 @@ return [
}
],
- /**
- * Twitter
- */
- 'twitter' => [
- 'attr' => [
- 'class',
- 'rel',
- 'target',
- 'text',
- 'title'
- ],
- 'html' => function ($tag) {
- // get and sanitize the username
- $username = str_replace('@', '', $tag->value);
-
- // build the profile url
- $url = 'https://twitter.com/' . $username;
-
- // sanitize the link text
- $text = $tag->text ?? '@' . $username;
-
- // build the final link
- return Html::a($url, $text, [
- 'class' => $tag->class,
- 'rel' => $tag->rel,
- 'target' => $tag->target,
- 'title' => $tag->title,
- ]);
- }
- ],
-
/**
* Video
*/
@@ -249,6 +264,7 @@ return [
'caption',
'controls',
'class',
+ 'disablepictureinpicture',
'height',
'loop',
'muted',
@@ -258,7 +274,7 @@ return [
'style',
'width',
],
- 'html' => function ($tag) {
+ 'html' => function (KirbyTag $tag): string {
// checks and gets if poster is local file
if (
empty($tag->poster) === false &&
@@ -291,12 +307,15 @@ return [
// don't use attributes that iframe doesn't support
if ($isProviderVideo === false) {
- // converts tag attributes to supported formats (listed below) to output correct html
- // booleans: autoplay, controls, loop, muted
- // strings : poster, preload
- // for ex : `autoplay` will not work if `false` is a `string` instead of a `boolean`
+ // convert tag attributes to supported formats (bool, string)
+ // to output correct html attributes
+ //
+ // for ex:
+ // `autoplay` will not work if `false` is a string
+ // instead of a boolean
$attrs['autoplay'] = $autoplay = Str::toType($tag->autoplay, 'bool');
$attrs['controls'] = Str::toType($tag->controls ?? true, 'bool');
+ $attrs['disablepictureinpicture'] = Str::toType($tag->disablepictureinpicture ?? false, 'bool');
$attrs['loop'] = Str::toType($tag->loop, 'bool');
$attrs['muted'] = Str::toType($tag->muted ?? $autoplay, 'bool');
$attrs['playsinline'] = Str::toType($tag->playsinline ?? $autoplay, 'bool');
diff --git a/kirby/dependencies/parsedown-extra/ParsedownExtra.php b/kirby/dependencies/parsedown-extra/ParsedownExtra.php
index 2f9c62d..390edd7 100644
--- a/kirby/dependencies/parsedown-extra/ParsedownExtra.php
+++ b/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/kirby/dependencies/parsedown/Parsedown.php b/kirby/dependencies/parsedown/Parsedown.php
index ab72225..76b2a7c 100644
--- a/kirby/dependencies/parsedown/Parsedown.php
+++ b/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/kirby/i18n/translations/bg.json b/kirby/i18n/translations/bg.json
index 8d7fde9..4a483a3 100644
--- a/kirby/i18n/translations/bg.json
+++ b/kirby/i18n/translations/bg.json
@@ -3,57 +3,75 @@
"account.delete": "Delete your account",
"account.delete.confirm": "Do you really want to delete your account? You will be logged out immediately. Your account cannot be recovered.",
- "add": "Добави",
+ "activate": "Activate",
+ "add": "\u0414\u043e\u0431\u0430\u0432\u0438",
+ "alpha": "Alpha",
"author": "Author",
"avatar": "Профилна снимка",
"back": "Назад",
- "cancel": "Откажи",
- "change": "Промени",
- "close": "Затвори",
+ "cancel": "\u041e\u0442\u043a\u0430\u0436\u0438",
+ "change": "\u041f\u0440\u043e\u043c\u0435\u043d\u0438",
+ "close": "\u0417\u0430\u0442\u0432\u043e\u0440\u0438",
+ "changes": "Changes",
"confirm": "Ок",
"collapse": "Collapse",
"collapse.all": "Collapse All",
+ "color": "Color",
+ "coordinates": "Coordinates",
"copy": "Копирай",
"copy.all": "Copy all",
+ "copy.success": "{count} copied!",
+ "copy.success.multiple": "{count} copied!",
+ "copy.url": "Copy URL",
"create": "Създай",
+ "custom": "Custom",
"date": "Дата",
"date.select": "Select a date",
"day": "Day",
- "days.fri": "Пт",
- "days.mon": "Пн",
- "days.sat": "Сб",
- "days.sun": "Нд",
- "days.thu": "Чт",
- "days.tue": "Вт",
- "days.wed": "Ср",
+ "days.fri": "\u041f\u0442",
+ "days.mon": "\u041f\u043d",
+ "days.sat": "\u0421\u0431",
+ "days.sun": "\u041d\u0434",
+ "days.thu": "\u0427\u0442",
+ "days.tue": "\u0412\u0442",
+ "days.wed": "\u0421\u0440",
"debugging": "Debugging",
- "delete": "Изтрий",
+ "delete": "\u0418\u0437\u0442\u0440\u0438\u0439",
"delete.all": "Delete all",
+ "dialog.fields.empty": "This dialog has no fields",
"dialog.files.empty": "No files to select",
"dialog.pages.empty": "No pages to select",
+ "dialog.text.empty": "This dialog does not define any text",
"dialog.users.empty": "No users to select",
"dimensions": "Размери",
+ "disable": "Disable",
"disabled": "Disabled",
- "discard": "Отмени",
+ "discard": "\u041e\u0442\u043c\u0435\u043d\u0438",
+
+ "drawer.fields.empty": "This drawer has no fields",
+
+ "domain": "Domain",
"download": "Download",
"duplicate": "Duplicate",
- "edit": "Редактирай",
+ "edit": "\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u0439",
"email": "Email",
"email.placeholder": "mail@example.com",
+ "enter": "Enter",
"entries": "Entries",
"entry": "Entry",
"environment": "Environment",
+ "error": "Error",
"error.access.code": "Invalid code",
"error.access.login": "Invalid login",
"error.access.panel": "Нямате права за достъп до панела",
@@ -74,13 +92,31 @@
"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.entries.max.plural": "You must not add more than {max} entries",
+ "error.entries.max.singular": "You must not add more than one entry",
+ "error.entries.min.plural": "You must add at least {min} entries",
+ "error.entries.min.singular": "You must add at least one entry",
+ "error.entries.supports": "\"{type}\" field type is not supported for the entries field",
+ "error.entries.validation": "There's an error on the \"{field}\" field in row {index}",
+
"error.email.preset.notFound": "Email шаблонът \"{name}\" не може да бъде открит",
"error.field.converter.invalid": "Невалиден конвертор \"{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",
"error.file.changeName.permission": "Не можете да смените името на \"{filename}\"",
+ "error.file.changeTemplate.invalid": "The template for the file \"{id}\" cannot be changed to \"{template}\" (valid: \"{blueprints}\")",
+ "error.file.changeTemplate.permission": "You are not allowed to change the template for the file \"{id}\"",
+
+ "error.file.delete.multiple": "Not all files could be deleted. Try each remaining file individually to see the specific error that prevents deletion.",
"error.file.duplicate": "Файл с име \"{filename}\" вече съществува",
"error.file.extension.forbidden": "Файловото разширение \"{extension}\" не е позволено",
"error.file.extension.invalid": "Invalid extension: {extension}",
@@ -95,33 +131,43 @@
"error.file.minheight": "The height of the image must be at least {height} pixels",
"error.file.minsize": "The file is too small",
"error.file.minwidth": "The width of the image must be at least {width} pixels",
+ "error.file.name.unique": "The filename must be unique",
"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": "Файлът не може да бъде намерен",
+ "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",
"error.form.incomplete": "Моля коригирайте всички грешки във формата...",
"error.form.notSaved": "Формата не може да бъде запазена",
"error.language.code": "Please enter a valid code for the language",
+ "error.language.create.permission": "You are not allowed to create a language",
+ "error.language.delete.permission": "You are not allowed to delete the language",
"error.language.duplicate": "The language already exists",
"error.language.name": "Please enter a valid name for the language",
"error.language.notFound": "The language could not be found",
+ "error.language.update.permission": "You are not allowed to update the language",
"error.layout.validation.block": "There's an error on the \"{field}\" field in block {blockIndex} using the \"{fieldset}\" block type in layout {layoutIndex}",
"error.layout.validation.settings": "There's an error in layout {index} settings",
- "error.license.format": "Please enter a valid license key",
+ "error.license.domain": "The domain for the license is missing",
"error.license.email": "Моля въведете валиден email адрес",
+ "error.license.format": "Please enter a valid license code",
"error.license.verification": "The license could not be verified",
+ "error.login.totp.confirm.invalid": "Invalid code",
+ "error.login.totp.confirm.missing": "Please enter the current code",
+
"error.object.validation": "There’s an error in the \"{label}\" field:\n{message}",
"error.offline": "The Panel is currently offline",
"error.page.changeSlug.permission": "Не можете да смените URL на \"{slug}\"",
+ "error.page.changeSlug.reserved": "The path of top-level pages must not start with \"{path}\"",
"error.page.changeStatus.incomplete": "Страницата съдържа грешки и не може да бъде публикувана",
"error.page.changeStatus.permission": "Статусът на страницата не може да бъде променен",
"error.page.changeStatus.toDraft.invalid": "Страницата \"{slug}\" не може да бъде променена в чернова",
@@ -133,17 +179,25 @@
"error.page.delete": "Страницата \"{slug}\" не може да бъде изтрита",
"error.page.delete.confirm": "Моля въведете името на страницата, за да потвърдите",
"error.page.delete.hasChildren": "Страницата има подстраници и не може да бъде изтрита",
+ "error.page.delete.multiple": "Not all pages could be deleted. Try each remaining page individually to see the specific error that prevents deletion.",
"error.page.delete.permission": "Не можете да изтриете \"{slug}\"",
"error.page.draft.duplicate": "Вече съществува чернова с URL-добавка \"{slug}\"",
"error.page.duplicate": "Страница с URL-добавка \"{slug}\" вече съществува",
"error.page.duplicate.permission": "You are not allowed to duplicate \"{slug}\"",
+ "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}\"",
"error.page.notFound": "Страницата \"{slug}\" не може да бъде намерена",
"error.page.num.invalid": "Моля въведете валидно число за сортиране. Числата не трябва да са негативни.",
"error.page.slug.invalid": "Please enter a valid URL appendix",
"error.page.slug.maxlength": "Slug length must be less than \"{length}\" characters",
"error.page.sort.permission": "Страницата \"{slug}\" не може да бъде сортирана",
"error.page.status.invalid": "Моля изберете валиден статус на страницата",
- "error.page.undefined": "Страницата не може да бъде намерена",
+ "error.page.undefined": "\u0421\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0442\u0430 \u043d\u0435 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0431\u044a\u0434\u0435 \u043d\u0430\u043c\u0435\u0440\u0435\u043d\u0430",
"error.page.update.permission": "Не можете да обновите \"{slug}\"",
"error.section.files.max.plural": "Не можете да добавяте повече от {max} файлa в секция \"{section}\"",
@@ -163,6 +217,8 @@
"error.site.changeTitle.permission": "Не може да променяте заглавието на сайта",
"error.site.update.permission": "Нямате права за да обновите сайта",
+ "error.structure.validation": "There's an error on the \"{field}\" field in row {index}",
+
"error.template.default.notFound": "Стандартният шаблон не съществува",
"error.unexpected": "An unexpected error occurred! Enable debug mode for more info: https://getkirby.com/docs/reference/system/options/debug",
@@ -175,17 +231,17 @@
"error.user.changeRole.permission": "Нямате права да промените ролята на този потребител \"{name}\"",
"error.user.changeRole.toAdmin": "You are not allowed to promote someone to the admin role",
"error.user.create.permission": "Нямате права да създадете този потребител",
- "error.user.delete": "Потребителят не може да бъде изтрит",
- "error.user.delete.lastAdmin": "Не можете да изтриете последния администратор",
+ "error.user.delete": "\u041f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u044f\u0442 \u043d\u0435 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0431\u044a\u0434\u0435 \u0438\u0437\u0442\u0440\u0438\u0442",
+ "error.user.delete.lastAdmin": "\u041d\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u0430 \u0438\u0437\u0442\u0440\u0438\u0435\u0442\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u044f \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440",
"error.user.delete.lastUser": "Последният потребител не може да бъде изтрит",
- "error.user.delete.permission": "Не е позволено да изтривате този потребител",
+ "error.user.delete.permission": "\u041d\u0435 \u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u0435\u043d\u043e \u0434\u0430 \u0438\u0437\u0442\u0440\u0438\u0432\u0430\u0442\u0435 \u0442\u043e\u0437\u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b",
"error.user.duplicate": "Потребител с имейл \"{email}\" вече съществува",
"error.user.email.invalid": "Моля въведете валиден email адрес",
"error.user.language.invalid": "Моля въведете валиден език",
- "error.user.notFound": "Потребителят не може да бъде намерен.",
+ "error.user.notFound": "\u041f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u044f\u0442 \u043d\u0435 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0431\u044a\u0434\u0435 \u043d\u0430\u043c\u0435\u0440\u0435\u043d.",
"error.user.password.excessive": "Please enter a valid password. Passwords must not be longer than 1000 characters.",
"error.user.password.invalid": "Моля въведете валидна парола. Тя трабва да съдържа поне 8 символа.",
- "error.user.password.notSame": "Моля, потвърдете паролата",
+ "error.user.password.notSame": "\u041c\u043e\u043b\u044f, \u043f\u043e\u0442\u0432\u044a\u0440\u0434\u0435\u0442\u0435 \u043f\u0430\u0440\u043e\u043b\u0430\u0442\u0430",
"error.user.password.undefined": "Потребителят няма парола",
"error.user.password.wrong": "Wrong password",
"error.user.role.invalid": "Моля въведете валидна роля",
@@ -195,8 +251,10 @@
"error.validation.accepted": "Моля потвърдете",
"error.validation.alpha": "Моля въвдете символи измежду a-z",
"error.validation.alphanum": "Моля въвдете символи измежду a-z или цифри 0-9",
+ "error.validation.anchor": "Please enter a correct link anchor",
"error.validation.between": "Моля въведете стойност между \"{min}\" и \"{max}\"",
"error.validation.boolean": "Моля потвърдете или откажете",
+ "error.validation.color": "Please enter a valid color in the {format} format",
"error.validation.contains": "Моля въведете стойност, която съдържа \"{needle}\"",
"error.validation.date": "Моля въведете валидна дата",
"error.validation.date.after": "Please enter a date after {date}",
@@ -211,6 +269,7 @@
"error.validation.integer": "Моля въведете валидно цяло число",
"error.validation.ip": "Моля въведете валиден IP адрес",
"error.validation.less": "Моля въведете стойност по-ниска от {max}",
+ "error.validation.linkType": "The link type is not allowed",
"error.validation.match": "Стойността не съвпада с очаквания модел",
"error.validation.max": "Please enter a value equal to or lower than {max}",
"error.validation.maxlength": "Моля въведете по-къса стойност. (макс. {max} символа)",
@@ -227,15 +286,18 @@
"error.validation.same": "Моля въведете \"{other}\"",
"error.validation.size": "Размерът на стойността трябва да бъде \"{size}\"",
"error.validation.startswith": "Стойността трябва да започва с \"{start}\"",
+ "error.validation.tel": "Please enter an unformatted phone number",
"error.validation.time": "Моля въведете валидно време",
"error.validation.time.after": "Please enter a time after {time}",
"error.validation.time.before": "Please enter a time before {time}",
"error.validation.time.between": "Please enter a time between {min} and {max}",
+ "error.validation.uuid": "Please enter a valid UUID",
"error.validation.url": "Моля въведете валиден URL",
"expand": "Expand",
"expand.all": "Expand All",
+ "field.invalid": "The field is invalid",
"field.required": "The field is required",
"field.blocks.changeType": "Change type",
"field.blocks.code.name": "Код",
@@ -245,8 +307,9 @@
"field.blocks.delete.confirm.all": "Do you really want to delete all blocks?",
"field.blocks.delete.confirm.selected": "Do you really want to delete the selected blocks?",
"field.blocks.empty": "No blocks yet",
+ "field.blocks.fieldsets.empty": "No fieldsets yet",
"field.blocks.fieldsets.label": "Please select a block type …",
- "field.blocks.fieldsets.paste": "Press {{ shortcut }} to paste/import blocks from your clipboard",
+ "field.blocks.fieldsets.paste": "Press {{ shortcut }} to import layouts/blocks from your clipboard Only those allowed in the current field will get inserted.",
"field.blocks.gallery.name": "Gallery",
"field.blocks.gallery.images.empty": "No images yet",
"field.blocks.gallery.images.label": "Images",
@@ -254,11 +317,16 @@
"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",
"field.blocks.image.link": "Връзка",
"field.blocks.image.location": "Location",
+ "field.blocks.image.location.internal": "This website",
+ "field.blocks.image.location.external": "External source",
"field.blocks.image.name": "Изображение",
"field.blocks.image.placeholder": "Select an image",
"field.blocks.image.ratio": "Ratio",
@@ -275,41 +343,75 @@
"field.blocks.quote.citation.placeholder": "by …",
"field.blocks.text.name": "Text",
"field.blocks.text.placeholder": "Text …",
+ "field.blocks.video.autoplay": "Autoplay",
"field.blocks.video.caption": "Caption",
+ "field.blocks.video.controls": "Controls",
+ "field.blocks.video.location": "Location",
+ "field.blocks.video.loop": "Loop",
+ "field.blocks.video.muted": "Muted",
"field.blocks.video.name": "Video",
"field.blocks.video.placeholder": "Enter a video URL",
+ "field.blocks.video.poster": "Poster",
+ "field.blocks.video.preload": "Preload",
"field.blocks.video.url.label": "Video-URL",
"field.blocks.video.url.placeholder": "https://youtube.com/?v=",
- "field.files.empty": "Все още не са избрани файлове",
+ "field.entries.delete.confirm.all": "Do you really want to delete all entries?",
+ "field.entries.empty": "Все още няма статии",
+ "field.files.empty": "Все още не са избрани файлове",
+ "field.files.empty.single": "No file selected yet",
+
+ "field.layout.change": "Change layout",
"field.layout.delete": "Delete layout",
"field.layout.delete.confirm": "Do you really want to delete this layout?",
+ "field.layout.delete.confirm.all": "Do you really want to delete all layouts?",
"field.layout.empty": "No rows yet",
"field.layout.select": "Select a layout",
"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",
+
+ "file": "Файл",
"file.blueprint": "This file has no blueprint yet. You can define the setup in /site/blueprints/files/{blueprint}.yml",
+ "file.changeTemplate": "Промени шаблон",
+ "file.changeTemplate.notice": "Changing the file's template will remove content for fields that don't match in type. If the new template defines certain rules, e.g. image dimensions, those will also be applied irreversibly. Use with caution.",
"file.delete.confirm": "Сигурни ли сте, че искате да изтриете
{filename}?",
+ "file.focus.placeholder": "Set focal point",
+ "file.focus.reset": "Remove focal point",
+ "file.focus.title": "Focus",
"file.sort": "Change position",
"files": "Файлове",
+ "files.delete.confirm.selected": "Do you really want to delete the selected files? This action cannot be undone.",
"files.empty": "Няма файлове",
+ "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",
"import": "Import",
"info": "Info",
- "insert": "Вмъкни",
+ "insert": "\u0412\u043c\u044a\u043a\u043d\u0438",
"insert.after": "Insert after",
"insert.before": "Insert before",
"install": "Инсталирай",
@@ -324,14 +426,14 @@
"installation.issues.mbstring": "Изисква се разширението MB String
",
"installation.issues.media": "Папката /media
не съществува или няма права за запис",
"installation.issues.php": "Бъдете сигурни, че използвате PHP 8+
",
- "installation.issues.server": "Kirby изисква Apache
, Nginx
или Caddy
",
"installation.issues.sessions": "The /site/sessions
folder does not exist or is not writable",
- "language": "Език",
+ "language": "\u0415\u0437\u0438\u043a",
"language.code": "Код",
"language.convert": "Направи по подразбиране",
"language.convert.confirm": "{secret}
manually to your authenticator app.",
+ "login.totp.enable.confirm.headline": "2. Confirm with generated code",
+ "login.totp.enable.confirm.text": "Your app generates a new one‑time code every 30 seconds. Enter the current code to complete the setup:",
+ "login.totp.enable.confirm.label": "Current code",
+ "login.totp.enable.confirm.help": "After this setup, we will ask you for a one‑time code every time you log in.",
+ "login.totp.enable.success": "One‑time codes enabled",
+ "login.totp.disable.option": "Disable one‑time codes",
+ "login.totp.disable.label": "Enter your password to disable one‑time codes",
+ "login.totp.disable.help": "In the future, a different second factor like a login code sent via email will be requested when you log in. You can always set up one‑time codes again later.",
+ "login.totp.disable.admin": "
Всички подстраници също ще бъдат изтрити.",
"page.delete.confirm.title": "Въведи заглавие на страница за да потвърдиш",
- "page.draft.create": "Създай чернова",
"page.duplicate.appendix": "Копирай",
"page.duplicate.files": "Copy files",
"page.duplicate.pages": "Copy pages",
+ "page.move": "Move page",
"page.sort": "Change position",
"page.status": "Status",
"page.status.draft": "Чернова",
@@ -450,6 +604,7 @@
"page.status.unlisted.description": "Страницата е достъпна само чрез URL",
"pages": "Страници",
+ "pages.delete.confirm.selected": "Do you really want to delete the selected pages? This action cannot be undone.",
"pages.empty": "Все още няма страници",
"pages.status.draft": "Drafts",
"pages.status.listed": "Published",
@@ -457,22 +612,29 @@
"pagination.page": "Страница",
- "password": "Парола",
+ "password": "\u041f\u0430\u0440\u043e\u043b\u0430",
"paste": "Paste",
"paste.after": "Paste after",
+ "paste.success": "{count} pasted!",
"pixel": "Пиксел",
"plugin": "Plugin",
"plugins": "Plugins",
"prev": "Previous",
"preview": "Preview",
+
+ "publish": "Publish",
+ "published": "Published",
+
"remove": "Премахни",
"rename": "Преименувай",
- "replace": "Замести",
- "retry": "Опитай пак",
- "revert": "Отмени",
+ "renew": "Renew",
+ "replace": "\u0417\u0430\u043c\u0435\u0441\u0442\u0438",
+ "replace.with": "Replace with",
+ "retry": "\u041e\u043f\u0438\u0442\u0430\u0439 \u043f\u0430\u043a",
+ "revert": "\u041e\u0442\u043c\u0435\u043d\u0438",
"revert.confirm": "Do you really want to delete all unsaved changes?",
- "role": "Роля",
+ "role": "\u0420\u043e\u043b\u044f",
"role.admin.description": "The admin has all rights",
"role.admin.title": "Admin",
"role.all": "Всички",
@@ -481,12 +643,15 @@
"role.nobody.description": "This is a fallback role without any permissions",
"role.nobody.title": "Nobody",
- "save": "Запиши",
+ "save": "\u0417\u0430\u043f\u0438\u0448\u0438",
+ "saved": "Saved",
"search": "Търси",
+ "searching": "Searching",
"search.min": "Enter {min} characters to search",
- "search.all": "Show all",
+ "search.all": "Show all {count} results",
"search.results.none": "No results",
+ "section.invalid": "The section is invalid",
"section.required": "The section is required",
"security": "Security",
@@ -496,18 +661,27 @@
"show": "Show",
"site.blueprint": "The site has no blueprint yet. You can define the setup in /site/blueprints/site.yml",
"size": "Размер",
- "slug": "URL-добавка",
+ "slug": "URL-\u0434\u043e\u0431\u0430\u0432\u043a\u0430",
"sort": "Сортирай",
+ "sort.drag": "Drag to sort …",
+ "split": "Split",
"stats.empty": "No reports",
+ "status": "Status",
+
+ "system.info.copy": "Copy info",
+ "system.info.copied": "System info copied",
"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",
+ "system.issues.eol.php": "Your installed PHP release { release } has reached end-of-life and will not receive further security updates",
"system.issues.debug": "Debugging must be turned off in production",
"system.issues.git": "The .git folder seems to be exposed",
"system.issues.https": "We recommend HTTPS for all your sites",
"system.issues.kirby": "The kirby folder seems to be exposed",
+ "system.issues.local": "The site is running locally with relaxed security checks",
"system.issues.site": "The site folder seems to be exposed",
+ "system.issues.vue.compiler": "The Vue template compiler is enabled",
"system.issues.vulnerability.kirby": "Your installation might be affected by the following vulnerability ({ severity } severity): { description }",
"system.issues.vulnerability.plugin": "Your installation might be affected by the following vulnerability in the { plugin } plugin ({ severity } severity): { description }",
"system.updateStatus": "Update status",
@@ -520,12 +694,21 @@
"system.updateStatus.update": "Free update { version } available",
"system.updateStatus.upgrade": "Upgrade { version } available",
- "title": "Заглавие",
+ "tel": "Phone",
+ "tel.placeholder": "+49123456789",
"template": "Образец",
+
+ "theme": "Theme",
+ "theme.light": "Lights on",
+ "theme.dark": "Lights off",
+ "theme.automatic": "Match system default",
+
+ "title": "Заглавие",
"today": "Днес",
+ "toolbar.button.clear": "Clear formatting",
"toolbar.button.code": "Код",
- "toolbar.button.bold": "Получер шрифт",
+ "toolbar.button.bold": "\u041f\u043e\u043b\u0443\u0447\u0435\u0440 \u0448\u0440\u0438\u0444\u0442",
"toolbar.button.email": "Email",
"toolbar.button.headings": "Заглавия",
"toolbar.button.heading.1": "Заглавие 1",
@@ -534,13 +717,15 @@
"toolbar.button.heading.4": "Heading 4",
"toolbar.button.heading.5": "Heading 5",
"toolbar.button.heading.6": "Heading 6",
- "toolbar.button.italic": "Наклонен шрифт",
+ "toolbar.button.italic": "\u041d\u0430\u043a\u043b\u043e\u043d\u0435\u043d \u0448\u0440\u0438\u0444\u0442",
"toolbar.button.file": "Файл",
"toolbar.button.file.select": "Select a file",
"toolbar.button.file.upload": "Upload a file",
- "toolbar.button.link": "Връзка",
+ "toolbar.button.link": "\u0412\u0440\u044a\u0437\u043a\u0430",
"toolbar.button.paragraph": "Paragraph",
"toolbar.button.strike": "Strike-through",
+ "toolbar.button.sub": "Subscript",
+ "toolbar.button.sup": "Superscript",
"toolbar.button.ol": "Подреден списък",
"toolbar.button.underline": "Underline",
"toolbar.button.ul": "Списък",
@@ -550,6 +735,8 @@
"translation.name": "Български",
"translation.locale": "bg_BG",
+ "type": "Type",
+
"upload": "Прикачи",
"upload.error.cantMove": "The uploaded file could not be moved",
"upload.error.cantWrite": "Failed to write file to disk",
@@ -562,7 +749,7 @@
"upload.error.noFiles": "No files were uploaded",
"upload.error.partial": "The uploaded file was only partially uploaded",
"upload.error.tmpDir": "Missing a temporary folder",
- "upload.errors": "Error",
+ "upload.errors": "Грешка",
"upload.progress": "Uploading…",
"url": "Url",
@@ -574,6 +761,7 @@
"user.changeLanguage": "Промени език",
"user.changeName": "Преименувай този потребител",
"user.changePassword": "Промени парола",
+ "user.changePassword.current": "Your current password",
"user.changePassword.new": "Нова парола",
"user.changePassword.new.confirm": "Потвърдете новата парола...",
"user.changeRole": "Променете роля",
@@ -584,18 +772,21 @@
"users": "Потребители",
- "version": "Версия на Kirby",
+ "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.account": "Вашия акаунт",
- "view.installation": "Инсталация",
+ "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": "Езици",
"view.resetPassword": "Reset password",
"view.site": "Сайт",
"view.system": "System",
- "view.users": "Потребители",
+ "view.users": "\u041f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u0438",
"welcome": "Добре дошли",
"year": "Year",
diff --git a/kirby/i18n/translations/ca.json b/kirby/i18n/translations/ca.json
index 92129e8..6a0a49a 100644
--- a/kirby/i18n/translations/ca.json
+++ b/kirby/i18n/translations/ca.json
@@ -3,19 +3,28 @@
"account.delete": "Delete your account",
"account.delete.confirm": "Do you really want to delete your account? You will be logged out immediately. Your account cannot be recovered.",
+ "activate": "Activate",
"add": "Afegir",
+ "alpha": "Alpha",
"author": "Author",
"avatar": "Imatge del perfil",
"back": "Tornar",
- "cancel": "Cancel·lar",
+ "cancel": "Cancel\u00b7lar",
"change": "Canviar",
"close": "Tancar",
+ "changes": "Changes",
"confirm": "Ok",
"collapse": "Col·lapsar",
"collapse.all": "Col·lapsar tot",
+ "color": "Color",
+ "coordinates": "Coordinates",
"copy": "Copiar",
"copy.all": "Copy all",
+ "copy.success": "{count} copied!",
+ "copy.success.multiple": "{count} copied!",
+ "copy.url": "Copy URL",
"create": "Crear",
+ "custom": "Custom",
"date": "Data",
"date.select": "Selecciona una data",
@@ -34,13 +43,20 @@
"delete": "Eliminar",
"delete.all": "Eliminar tot",
+ "dialog.fields.empty": "This dialog has no fields",
"dialog.files.empty": "No hi ha cap fitxer per seleccionar",
"dialog.pages.empty": "No hi ha cap pàgina per seleccionar",
+ "dialog.text.empty": "This dialog does not define any text",
"dialog.users.empty": "No hi ha cap usuari per seleccionar",
"dimensions": "Dimensions",
+ "disable": "Disable",
"disabled": "Desactivat",
"discard": "Descartar",
+
+ "drawer.fields.empty": "This drawer has no fields",
+
+ "domain": "Domain",
"download": "Descarregar",
"duplicate": "Duplicar",
@@ -49,11 +65,13 @@
"email": "Email",
"email.placeholder": "mail@exemple.com",
+ "enter": "Enter",
"entries": "Entries",
"entry": "Entry",
"environment": "Environment",
+ "error": "Error",
"error.access.code": "Codi invàlid",
"error.access.login": "Inici de sessió no vàlid",
"error.access.panel": "No tens permís per accedir al panell",
@@ -74,13 +92,31 @@
"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.entries.max.plural": "You must not add more than {max} entries",
+ "error.entries.max.singular": "You must not add more than one entry",
+ "error.entries.min.plural": "You must add at least {min} entries",
+ "error.entries.min.singular": "You must add at least one entry",
+ "error.entries.supports": "\"{type}\" field type is not supported for the entries field",
+ "error.entries.validation": "There's an error on the \"{field}\" field in row {index}",
+
"error.email.preset.notFound": "No es pot trobar la configuració de correu electrònic \"{name}\"",
"error.field.converter.invalid": "Convertidor no vàlid \"{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": "El nom no pot estar buit",
"error.file.changeName.permission": "No tens permís per canviar el nom de \"{filename}\"",
+ "error.file.changeTemplate.invalid": "The template for the file \"{id}\" cannot be changed to \"{template}\" (valid: \"{blueprints}\")",
+ "error.file.changeTemplate.permission": "You are not allowed to change the template for the file \"{id}\"",
+
+ "error.file.delete.multiple": "Not all files could be deleted. Try each remaining file individually to see the specific error that prevents deletion.",
"error.file.duplicate": "Ja existeix un fitxer amb el nom \"{filename}\"",
"error.file.extension.forbidden": "L'extensió de l'arxiu \"{extension}\" no està permesa",
"error.file.extension.invalid": "Invalid extension: {extension}",
@@ -95,9 +131,11 @@
"error.file.minheight": "L'alçada de la imatge ha de ser com a mínim de {height} píxels",
"error.file.minsize": "El fitxer és massa petit",
"error.file.minwidth": "L'amplada de la imatge ha de ser com a mínim de {width} píxels",
+ "error.file.name.unique": "The filename must be unique",
"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",
@@ -106,22 +144,30 @@
"error.form.notSaved": "No s'ha pogut desar el formulari",
"error.language.code": "Introdueix un codi vàlid per a l’idioma",
+ "error.language.create.permission": "You are not allowed to create a language",
+ "error.language.delete.permission": "You are not allowed to delete the language",
"error.language.duplicate": "L'idioma ja existeix",
"error.language.name": "Introdueix un nom vàlid per a l'idioma",
"error.language.notFound": "The language could not be found",
+ "error.language.update.permission": "You are not allowed to update the language",
"error.layout.validation.block": "There's an error on the \"{field}\" field in block {blockIndex} using the \"{fieldset}\" block type in layout {layoutIndex}",
"error.layout.validation.settings": "There's an error in layout {index} settings",
- "error.license.format": "Introduïu una clau de llicència vàlida",
+ "error.license.domain": "The domain for the license is missing",
"error.license.email": "Si us plau, introdueix una adreça de correu electrònic vàlida",
+ "error.license.format": "Please enter a valid license code",
"error.license.verification": "No s’ha pogut verificar la llicència",
+ "error.login.totp.confirm.invalid": "Codi invàlid",
+ "error.login.totp.confirm.missing": "Please enter the current code",
+
"error.object.validation": "There’s an error in the \"{label}\" field:\n{message}",
"error.offline": "The Panel is currently offline",
"error.page.changeSlug.permission": "No teniu permís per canviar l'apèndix d'URL per a \"{slug}\"",
+ "error.page.changeSlug.reserved": "The path of top-level pages must not start with \"{path}\"",
"error.page.changeStatus.incomplete": "La pàgina té errors i no es pot publicar",
"error.page.changeStatus.permission": "No es pot canviar l'estat d'aquesta pàgina",
"error.page.changeStatus.toDraft.invalid": "La pàgina \"{slug}\" no es pot convertir en un esborrany",
@@ -133,17 +179,25 @@
"error.page.delete": "La pàgina \"{slug}\" no es pot esborrar",
"error.page.delete.confirm": "Si us plau, introdueix el títol de la pàgina per confirmar",
"error.page.delete.hasChildren": "La pàgina té subpàgines i no es pot esborrar",
+ "error.page.delete.multiple": "Not all pages could be deleted. Try each remaining page individually to see the specific error that prevents deletion.",
"error.page.delete.permission": "No tens permís per esborrar \"{slug}\"",
"error.page.draft.duplicate": "Ja existeix un esborrany de pàgina amb l'apèndix d'URL \"{slug}\"",
"error.page.duplicate": "Ja existeix una pàgina amb l'apèndix d'URL \"{slug}\"",
"error.page.duplicate.permission": "No tens permís per duplicar \"{slug}\"",
+ "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}\"",
"error.page.notFound": "La pàgina \"{slug}\" no s'ha trobat",
"error.page.num.invalid": "Si us plau, introdueix un número d 'ordenació vàlid. Els números no poden ser negatius.",
"error.page.slug.invalid": "Please enter a valid URL appendix",
"error.page.slug.maxlength": "La longitud del nom ha de tenir menys de caràcters \"{length}\"",
"error.page.sort.permission": "La pàgina \"{slug}\" no es pot ordenar",
"error.page.status.invalid": "Si us plau, estableix un estat de pàgina vàlid",
- "error.page.undefined": "La pàgina no s'ha trobat",
+ "error.page.undefined": "La p\u00e0gina no s'ha trobat",
"error.page.update.permission": "No tens permís per actualitzar \"{slug}\"",
"error.section.files.max.plural": "No has d'afegir més de {max} fitxers a la secció \"{section}\"",
@@ -163,6 +217,8 @@
"error.site.changeTitle.permission": "No tens permís per canviar el títol del lloc web",
"error.site.update.permission": "No tens permís per actualitzar el lloc web",
+ "error.structure.validation": "There's an error on the \"{field}\" field in row {index}",
+
"error.template.default.notFound": "La plantilla predeterminada no existeix",
"error.unexpected": "An unexpected error occurred! Enable debug mode for more info: https://getkirby.com/docs/reference/system/options/debug",
@@ -176,7 +232,7 @@
"error.user.changeRole.toAdmin": "No tens permís per promocionar algú al rol d’administrador",
"error.user.create.permission": "No tens permís per crear aquest usuari",
"error.user.delete": "L'usuari \"{name}\" no es pot eliminar",
- "error.user.delete.lastAdmin": "No es pot eliminar l'últim administrador",
+ "error.user.delete.lastAdmin": "No es pot eliminar l'\u00faltim administrador",
"error.user.delete.lastUser": "El darrer usuari no es pot eliminar",
"error.user.delete.permission": "No pots eliminar l'usuari \"{name}\"",
"error.user.duplicate": "Ja existeix un usuari amb l'adreça electrònica \"{email}\"",
@@ -195,8 +251,10 @@
"error.validation.accepted": "Si us plau confirma",
"error.validation.alpha": "Si us plau, introdueix únicament caràcters entre a-z",
"error.validation.alphanum": "Si us plau, introdueix únicament caràcters entre a-z o números de 0-9",
+ "error.validation.anchor": "Please enter a correct link anchor",
"error.validation.between": "Introdueix un valor entre \"{min}\" i \"{max}\"",
"error.validation.boolean": "Si us plau confirma o denega",
+ "error.validation.color": "Please enter a valid color in the {format} format",
"error.validation.contains": "Si us plau, introduïu un valor que contingui \"{needle}\"",
"error.validation.date": "Si us plau, introdueix una data vàlida",
"error.validation.date.after": "Introdueix una data posterior {date}",
@@ -211,6 +269,7 @@
"error.validation.integer": "Si us plau, introduïu un nombre enter vàlid",
"error.validation.ip": "Si us plau, introduïu una adreça IP vàlida",
"error.validation.less": "Si us plau, introduïu un valor inferior a {max}",
+ "error.validation.linkType": "The link type is not allowed",
"error.validation.match": "El valor no coincideix amb el patró esperat",
"error.validation.max": "Si us plau, introduïu un valor igual o inferior a {max}",
"error.validation.maxlength": "Si us plau, introduïu un valor més curt. (màxim {max} caràcters)",
@@ -227,15 +286,18 @@
"error.validation.same": "Si us plau, introduïu \"{other}\"",
"error.validation.size": "La mida del valor ha de ser \"{size}\"",
"error.validation.startswith": "El valor ha de començar amb \"{start}\"",
+ "error.validation.tel": "Please enter an unformatted phone number",
"error.validation.time": "Si us plau, introduïu una hora vàlida",
"error.validation.time.after": "Please enter a time after {time}",
"error.validation.time.before": "Please enter a time before {time}",
"error.validation.time.between": "Please enter a time between {min} and {max}",
+ "error.validation.uuid": "Please enter a valid UUID",
"error.validation.url": "Si us plau, introduïu una URL vàlida",
"expand": "Expandir",
"expand.all": "Expandir tot",
+ "field.invalid": "The field is invalid",
"field.required": "El camp és obligatori",
"field.blocks.changeType": "Change type",
"field.blocks.code.name": "Codi",
@@ -245,8 +307,9 @@
"field.blocks.delete.confirm.all": "Do you really want to delete all blocks?",
"field.blocks.delete.confirm.selected": "Do you really want to delete the selected blocks?",
"field.blocks.empty": "No blocks yet",
+ "field.blocks.fieldsets.empty": "No fieldsets yet",
"field.blocks.fieldsets.label": "Please select a block type …",
- "field.blocks.fieldsets.paste": "Press {{ shortcut }} to paste/import blocks from your clipboard",
+ "field.blocks.fieldsets.paste": "Press {{ shortcut }} to import layouts/blocks from your clipboard Only those allowed in the current field will get inserted.",
"field.blocks.gallery.name": "Gallery",
"field.blocks.gallery.images.empty": "No images yet",
"field.blocks.gallery.images.label": "Images",
@@ -254,11 +317,16 @@
"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",
"field.blocks.image.link": "Enllaç",
"field.blocks.image.location": "Location",
+ "field.blocks.image.location.internal": "This website",
+ "field.blocks.image.location.external": "External source",
"field.blocks.image.name": "Imatge",
"field.blocks.image.placeholder": "Select an image",
"field.blocks.image.ratio": "Ratio",
@@ -275,38 +343,72 @@
"field.blocks.quote.citation.placeholder": "by …",
"field.blocks.text.name": "Text",
"field.blocks.text.placeholder": "Text …",
+ "field.blocks.video.autoplay": "Autoplay",
"field.blocks.video.caption": "Caption",
+ "field.blocks.video.controls": "Controls",
+ "field.blocks.video.location": "Location",
+ "field.blocks.video.loop": "Loop",
+ "field.blocks.video.muted": "Muted",
"field.blocks.video.name": "Video",
"field.blocks.video.placeholder": "Enter a video URL",
+ "field.blocks.video.poster": "Poster",
+ "field.blocks.video.preload": "Preload",
"field.blocks.video.url.label": "Video-URL",
"field.blocks.video.url.placeholder": "https://youtube.com/?v=",
- "field.files.empty": "Encara no hi ha cap fitxer seleccionat",
+ "field.entries.delete.confirm.all": "Do you really want to delete all entries?",
+ "field.entries.empty": "Encara no hi ha entrades.",
+ "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",
"field.layout.delete.confirm": "Do you really want to delete this layout?",
+ "field.layout.delete.confirm.all": "Do you really want to delete all layouts?",
"field.layout.empty": "No rows yet",
"field.layout.select": "Select a layout",
"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",
+
+ "file": "Arxiu",
"file.blueprint": "This file has no blueprint yet. You can define the setup in /site/blueprints/files/{blueprint}.yml",
+ "file.changeTemplate": "Canviar la plantilla",
+ "file.changeTemplate.notice": "Changing the file's template will remove content for fields that don't match in type. If the new template defines certain rules, e.g. image dimensions, those will also be applied irreversibly. Use with caution.",
"file.delete.confirm": "Esteu segurs d'eliminar
{filename}?",
+ "file.focus.placeholder": "Set focal point",
+ "file.focus.reset": "Remove focal point",
+ "file.focus.title": "Focus",
"file.sort": "Change position",
"files": "Arxius",
+ "files.delete.confirm.selected": "Do you really want to delete the selected files? This action cannot be undone.",
"files.empty": "Encara no hi ha fitxers",
+ "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",
"import": "Import",
"info": "Info",
"insert": "Insertar",
@@ -324,7 +426,6 @@
"installation.issues.mbstring": "Es requereix l'extensió de MB String
",
"installation.issues.media": "La carpeta /media
no existeix o no es pot escriure",
"installation.issues.php": "Assegureu-vos d'utilitzar PHP 8+
",
- "installation.issues.server": "Kirby requereix Apache
, Nginx
o Caddy
",
"installation.issues.sessions": "La carpeta /site/sessions
no existeix o no es pot escriure",
"language": "Idioma",
@@ -332,6 +433,7 @@
"language.convert": "Fer per defecte",
"language.convert.confirm": "{secret}
manually to your authenticator app.",
+ "login.totp.enable.confirm.headline": "2. Confirm with generated code",
+ "login.totp.enable.confirm.text": "Your app generates a new one‑time code every 30 seconds. Enter the current code to complete the setup:",
+ "login.totp.enable.confirm.label": "Current code",
+ "login.totp.enable.confirm.help": "After this setup, we will ask you for a one‑time code every time you log in.",
+ "login.totp.enable.success": "One‑time codes enabled",
+ "login.totp.disable.option": "Disable one‑time codes",
+ "login.totp.disable.label": "Enter your password to disable one‑time codes",
+ "login.totp.disable.help": "In the future, a different second factor like a login code sent via email will be requested when you log in. You can always set up one‑time codes again later.",
+ "login.totp.disable.admin": "
Totes les subpàgines també s'eliminaran.",
"page.delete.confirm.title": "Introduïu el títol de la pàgina per confirmar",
- "page.draft.create": "Crear un esborrany",
"page.duplicate.appendix": "Copiar",
"page.duplicate.files": "Copiar fitxers",
"page.duplicate.pages": "Copiar pàgines",
+ "page.move": "Move page",
"page.sort": "Change position",
"page.status": "Estat",
"page.status.draft": "Esborrany",
@@ -450,24 +604,32 @@
"page.status.unlisted.description": "La pàgina només es pot accedir a través de l'URL",
"pages": "Pàgines",
+ "pages.delete.confirm.selected": "Do you really want to delete the selected pages? This action cannot be undone.",
"pages.empty": "Encara no hi ha pàgines",
"pages.status.draft": "Esborranys",
"pages.status.listed": "Publicat",
"pages.status.unlisted": "Sense classificar",
- "pagination.page": "Page",
+ "pagination.page": "Pàgina",
"password": "Contrasenya",
"paste": "Paste",
"paste.after": "Paste after",
+ "paste.success": "{count} pasted!",
"pixel": "Pixel",
"plugin": "Plugin",
"plugins": "Plugins",
"prev": "Anterior",
"preview": "Preview",
+
+ "publish": "Publish",
+ "published": "Publicat",
+
"remove": "Eliminar",
"rename": "Canviar el nom",
- "replace": "Reemplaçar",
+ "renew": "Renew",
+ "replace": "Reempla\u00e7ar",
+ "replace.with": "Replace with",
"retry": "Reintentar",
"revert": "Revertir",
"revert.confirm": "Segur que voleu eliminar tots els canvis pendents desar?",
@@ -482,11 +644,14 @@
"role.nobody.title": "Ningú",
"save": "Desar",
+ "saved": "Saved",
"search": "Cercar",
+ "searching": "Searching",
"search.min": "Introduïu {min} caràcters per cercar",
- "search.all": "Mostrar tots",
+ "search.all": "Show all {count} results",
"search.results.none": "Sense resultats",
+ "section.invalid": "The section is invalid",
"section.required": "La secció és obligatòria",
"security": "Security",
@@ -496,18 +661,27 @@
"show": "Show",
"site.blueprint": "The site has no blueprint yet. You can define the setup in /site/blueprints/site.yml",
"size": "Tamany",
- "slug": "URL-apèndix",
+ "slug": "URL-ap\u00e8ndix",
"sort": "Ordenar",
+ "sort.drag": "Drag to sort …",
+ "split": "Split",
"stats.empty": "No reports",
+ "status": "Estat",
+
+ "system.info.copy": "Copy info",
+ "system.info.copied": "System info copied",
"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",
+ "system.issues.eol.php": "Your installed PHP release { release } has reached end-of-life and will not receive further security updates",
"system.issues.debug": "Debugging must be turned off in production",
"system.issues.git": "The .git folder seems to be exposed",
"system.issues.https": "We recommend HTTPS for all your sites",
"system.issues.kirby": "The kirby folder seems to be exposed",
+ "system.issues.local": "The site is running locally with relaxed security checks",
"system.issues.site": "The site folder seems to be exposed",
+ "system.issues.vue.compiler": "The Vue template compiler is enabled",
"system.issues.vulnerability.kirby": "Your installation might be affected by the following vulnerability ({ severity } severity): { description }",
"system.issues.vulnerability.plugin": "Your installation might be affected by the following vulnerability in the { plugin } plugin ({ severity } severity): { description }",
"system.updateStatus": "Update status",
@@ -520,10 +694,19 @@
"system.updateStatus.update": "Free update { version } available",
"system.updateStatus.upgrade": "Upgrade { version } available",
- "title": "Títol",
+ "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",
+ "toolbar.button.clear": "Clear formatting",
"toolbar.button.code": "Codi",
"toolbar.button.bold": "Negreta",
"toolbar.button.email": "Email",
@@ -538,9 +721,11 @@
"toolbar.button.file": "Arxiu",
"toolbar.button.file.select": "Selecciona un fitxer",
"toolbar.button.file.upload": "Carrega un fitxer",
- "toolbar.button.link": "Enllaç",
+ "toolbar.button.link": "Enlla\u00e7",
"toolbar.button.paragraph": "Paragraph",
"toolbar.button.strike": "Strike-through",
+ "toolbar.button.sub": "Subscript",
+ "toolbar.button.sup": "Superscript",
"toolbar.button.ol": "Llista ordenada",
"toolbar.button.underline": "Underline",
"toolbar.button.ul": "Llista de vinyetes",
@@ -550,6 +735,8 @@
"translation.name": "Catalan",
"translation.locale": "ca_ES",
+ "type": "Type",
+
"upload": "Carregar",
"upload.error.cantMove": "El fitxer carregat no s'ha pogut moure",
"upload.error.cantWrite": "No s'ha pogut escriure el fitxer al disc",
@@ -574,6 +761,7 @@
"user.changeLanguage": "Canviar idioma",
"user.changeName": "Canviar el nom d'aquest usuari",
"user.changePassword": "Canviar contrasenya",
+ "user.changePassword.current": "Your current password",
"user.changePassword.new": "Nova contrasenya",
"user.changePassword.new.confirm": "Confirma la nova contrasenya ...",
"user.changeRole": "Canviar el rol",
@@ -584,11 +772,14 @@
"users": "Usuaris",
- "version": "Versió de Kirby",
+ "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/kirby/i18n/translations/cs.json b/kirby/i18n/translations/cs.json
index b094bd0..f2564fb 100644
--- a/kirby/i18n/translations/cs.json
+++ b/kirby/i18n/translations/cs.json
@@ -1,32 +1,41 @@
{
- "account.changeName": "Přejmenovat uživatele",
+ "account.changeName": "Změnit jméno",
"account.delete": "Smazat účet",
"account.delete.confirm": "Opravdu chcete smazat svůj účet? Budete okamžitě odhlášeni. Účet nemůže být zpětně obnoven.",
- "add": "Přidat",
+ "activate": "Aktivovat",
+ "add": "P\u0159idat",
+ "alpha": "Alfa",
"author": "Autor",
- "avatar": "Profilový obrázek",
+ "avatar": "Profilov\u00fd obr\u00e1zek",
"back": "Zpět",
- "cancel": "Zrušit",
- "change": "Změnit",
+ "cancel": "Zru\u0161it",
+ "change": "Zm\u011bnit",
"close": "Zavřít",
+ "changes": "Změny",
"confirm": "Ok",
"collapse": "Sbalit",
"collapse.all": "Sbalit vše",
+ "color": "Barva",
+ "coordinates": "Souřadnice",
"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í",
"date": "Datum",
"date.select": "Vyberte datum",
"day": "Den",
- "days.fri": "pá",
+ "days.fri": "p\u00e1",
"days.mon": "po",
"days.sat": "so",
"days.sun": "ne",
- "days.thu": "čt",
- "days.tue": "út",
+ "days.thu": "\u010dt",
+ "days.tue": "\u00fat",
"days.wed": "st",
"debugging": "Ladění",
@@ -34,13 +43,20 @@
"delete": "Smazat",
"delete.all": "Smazat vše",
+ "dialog.fields.empty": "Tento dialog neobsahuje žádná pole",
"dialog.files.empty": "Žádné soubory k výběru",
"dialog.pages.empty": "Žádné stránky k výběru",
+ "dialog.text.empty": "Tento dialog nemá definovaný žádný text",
"dialog.users.empty": "Žádní uživatelé k výběru",
"dimensions": "Rozměry",
+ "disable": "Deaktivovat",
"disabled": "Zakázáno",
"discard": "Zahodit",
+
+ "drawer.fields.empty": "Tento vysouvací panel nemá žádná pole",
+
+ "domain": "Doména",
"download": "Stáhnout",
"duplicate": "Duplikovat",
@@ -49,18 +65,20 @@
"email": "Email",
"email.placeholder": "mail@example.com",
+ "enter": "Zapsat",
"entries": "Záznamy",
"entry": "Záznam",
"environment": "Prostředí",
+ "error": "Chyba",
"error.access.code": "Neplatný kód",
"error.access.login": "Neplatné přihlášení",
"error.access.panel": "Nemáte oprávnění k přihlášení do panelu",
"error.access.view": "Nemáte oprávnění ke vstupu do této části panelu.",
"error.avatar.create.fail": "Nebylo možné nahrát profilový obrázek",
- "error.avatar.delete.fail": "Nebylo možné smazat profilový obrázek",
+ "error.avatar.delete.fail": "Nebylo mo\u017en\u00e9 smazat profilov\u00fd obr\u00e1zek",
"error.avatar.dimensions.invalid": "Šířka a výška obrázku musí být pod 3000 pixelů",
"error.avatar.mime.forbidden": "Profilový obrázek musí být ve formátu JPEG nebo PNG",
@@ -74,17 +92,35 @@
"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": "Zdrojová verze je uzamčená a nemůže být přesunuta",
+ "error.content.lock.publish": "Tato verze je již zveřejněná",
+ "error.content.lock.replace": "Tato verze je uzamčená a nemůže být nahrazena",
+ "error.content.lock.update": "Tato verze je uzamčená a nemůže být aktualizována",
+
+ "error.entries.max.plural": "Nelze přidat více než {max} záznamů",
+ "error.entries.max.singular": "Nelze přidat více než jeden záznam",
+ "error.entries.min.plural": "Musíte přidat alespoň {min} záznamů",
+ "error.entries.min.singular": "Musíte přidat alespoň jeden záznam",
+ "error.entries.supports": "\"{type}\" typ pole není pro záznamy podporován",
+ "error.entries.validation": "Chyba v poli \"{field}\" na řádku {index}",
+
"error.email.preset.notFound": "Nelze nalézt emailové přednastavení \"{name}\"",
"error.field.converter.invalid": "Neplatný konvertor \"{converter}\"",
+ "error.field.link.options": "Neplatné volby: {options}",
"error.field.type.missing": "Pole \"{ name }\": Typ pole \"{ type }\" neexistuje",
"error.file.changeName.empty": "Toto jméno nesmí být prázdné",
"error.file.changeName.permission": "Nemáte povoleno změnit jméno souboru \"{filename}\"",
+ "error.file.changeTemplate.invalid": "Šablonu souboru \"{id}\" nelze změnit na \"{template}\" (platné: \"{blueprints}\")",
+ "error.file.changeTemplate.permission": "Nemáte dovoleno změnit šablonu souboru \"{id}\"",
+
+ "error.file.delete.multiple": "Nebylo možné vymazat všechny soubory. Zkuste zbývající soubory vymazat postupně, abyste nalezli chybu, která bránila hromadnému smazání.",
"error.file.duplicate": "Soubor s názvem \"{filename}\" již existuje",
"error.file.extension.forbidden": "Přípona souboru \"{extension}\" není povolena",
"error.file.extension.invalid": "Neplatná přípona souboru: {extension}",
- "error.file.extension.missing": "Nemůžete nahrát soubor bez přípony",
+ "error.file.extension.missing": "Nem\u016f\u017eete nahr\u00e1t soubor bez p\u0159\u00edpony",
"error.file.maxheight": "Výška obrázku nesmí přesáhnout {height} pixelů",
"error.file.maxsize": "Soubor je příliš velký",
"error.file.maxwidth": "Šířka obrázku nesmí přesáhnout {width} pixelů",
@@ -95,33 +131,43 @@
"error.file.minheight": "Výška obrázku musí být alespoň {height} pixelů",
"error.file.minsize": "Soubor je příliš malý",
"error.file.minwidth": "Šířka obrázku musí být alespoň {width} pixelů",
+ "error.file.name.unique": "Název souboru musí být unikátní",
"error.file.name.missing": "Název souboru nesmí být prázdný",
- "error.file.notFound": "Soubor se nepodařilo nalézt",
+ "error.file.notFound": "Soubor se nepoda\u0159ilo nal\u00e9zt",
"error.file.orientation": "Orientace obrázku másí být \"{orientation}\"",
+ "error.file.sort.permission": "Nemáte dovoleno změnit pozici \"{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řilo nalézt",
+ "error.file.undefined": "Soubor se nepoda\u0159ilo nal\u00e9zt",
"error.form.incomplete": "Prosím opravte všechny chyby ve formuláři",
"error.form.notSaved": "Formulář nemohl být uložen",
"error.language.code": "Zadejte prosím platný kód jazyka",
+ "error.language.create.permission": "Nemáte dovoleno vytvořit jazyk",
+ "error.language.delete.permission": "Nemáte dovoleno jazyk vymazat",
"error.language.duplicate": "Jazyk již existuje",
"error.language.name": "Zadejte prosím platné jméno jazyka",
"error.language.notFound": "Jazyk nebyl nalezen",
+ "error.language.update.permission": "Nemáte dovoleno aktualizovat jazyk",
"error.layout.validation.block": "V rozvržení {layoutIndex} je v poli \"{field}\" v bloku {blockIndex} při použití \"{fieldset}\" typu chyba",
"error.layout.validation.settings": "Chyba v nastavení rozvržení {index}",
- "error.license.format": "Zadejte prosím platné licenční číslo",
+ "error.license.domain": "Licenčnímu klíči chybí doména",
"error.license.email": "Zadejte prosím platnou emailovou adresu",
+ "error.license.format": "Zadejte prosím platné licenční číslo",
"error.license.verification": "Licenci nelze ověřit",
+ "error.login.totp.confirm.invalid": "Neplatný kód",
+ "error.login.totp.confirm.missing": "Zadejte prosím licenční kód",
+
"error.object.validation": "V poli \"{label}\" je chyba:\n{message}",
"error.offline": "Panel je v současnosti off-line",
- "error.page.changeSlug.permission": "Nemůžete změnit URL této stránky",
+ "error.page.changeSlug.permission": "Nem\u016f\u017eete zm\u011bnit URL t\u00e9to str\u00e1nky",
+ "error.page.changeSlug.reserved": "Cesta k stránkám na nevyšší úrovni nesmí začínat jako \"{path}\"",
"error.page.changeStatus.incomplete": "Stránka obsahuje chyby a nemohla být zveřejněna",
"error.page.changeStatus.permission": "Status této stránky nelze změnit",
"error.page.changeStatus.toDraft.invalid": "Stránka \"{slug}\" nemůže být převedena na koncept",
@@ -133,17 +179,25 @@
"error.page.delete": "Stránku \"{slug}\" nelze vymazat",
"error.page.delete.confirm": "Pro potvrzení prosím zadejte titulek stránky",
"error.page.delete.hasChildren": "Stránka má podstránky, nemůže být vymazána",
+ "error.page.delete.multiple": "Nebylo možné vymazat všechny stránky. Zkuste zbývající stránky vymazat postupně, abyste nalezli chybu, která bránila hromadnému smazání.",
"error.page.delete.permission": "Nemáte dovoleno odstranit \"{slug}\"",
"error.page.draft.duplicate": "Koncept stránky, který obsahuje v adrese URL \"{slug}\" již existuje ",
"error.page.duplicate": "Stránka, která v adrese URL obsahuje \"{slug}\" již existuje",
"error.page.duplicate.permission": "Nemáte dovoleno duplikovat \"{slug}\"",
- "error.page.notFound": "Stránku se nepodařilo nalézt.",
+ "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": "Stránka \"{parent}\" nemůže být žádné jiné stránce nadřazená, protože neobsahuje sekci pro podstránky",
+ "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}\"",
+ "error.page.notFound": "Str\u00e1nku se nepoda\u0159ilo nal\u00e9zt.",
"error.page.num.invalid": "Zadejte prosím platné pořadové číslo. Čísla nesmí být záporná.",
"error.page.slug.invalid": "Podtržení",
"error.page.slug.maxlength": "URL musí mít méně než \"{length}\" znaků",
"error.page.sort.permission": "Stránce \"{slug}\" nelze změnit pořadí",
"error.page.status.invalid": "Nastavte prosím platný status stránky",
- "error.page.undefined": "Stránku se nepodařilo nalézt.",
+ "error.page.undefined": "Str\u00e1nku se nepoda\u0159ilo nal\u00e9zt.",
"error.page.update.permission": "Nemáte dovoleno upravit \"{slug}\"",
"error.section.files.max.plural": "Sekce \"{section}\" nesmí obsahovat více jak {max} souborů",
@@ -163,6 +217,8 @@
"error.site.changeTitle.permission": "Nemáte dovoleno změnit titulek stránky",
"error.site.update.permission": "Nemáte dovoleno upravit stránku",
+ "error.structure.validation": "Chyba v poli \"{field}\" na řádku {index}",
+
"error.template.default.notFound": "Výchozí šablona neexistuje",
"error.unexpected": "Vyskytla se neočekávaná chyba! Pro více informací povolte debug mód, viz: https://getkirby.com/docs/reference/system/options/debug",
@@ -175,17 +231,17 @@
"error.user.changeRole.permission": "Nemáte dovoleno změnit roli uživatele \"{name}\"",
"error.user.changeRole.toAdmin": "Nemáte dovoleno povýšit uživatele do role administrátora.",
"error.user.create.permission": "Nemáte dovoleno vytvořit tohoto uživatele",
- "error.user.delete": "Uživatel nemohl být smazán",
- "error.user.delete.lastAdmin": "Nemůžete smazat posledního administrátora",
+ "error.user.delete": "U\u017eivatel nemohl b\u00fdt smaz\u00e1n",
+ "error.user.delete.lastAdmin": "Nem\u016f\u017eete smazat posledn\u00edho administr\u00e1tora",
"error.user.delete.lastUser": "Poslední uživatel nemůže být smazán",
- "error.user.delete.permission": "Nemáte dovoleno smazat tohoto uživatele",
+ "error.user.delete.permission": "Nem\u00e1te dovoleno smazat tohoto u\u017eivatele",
"error.user.duplicate": "Uživatel s emailovou adresou \"{email}\" již existuje",
"error.user.email.invalid": "Zadejte prosím platnou emailovou adresu",
"error.user.language.invalid": "Zadejte prosím platný jazyk",
- "error.user.notFound": "Uživatele se nepodařilo nalézt",
+ "error.user.notFound": "U\u017eivatele se nepoda\u0159ilo nal\u00e9zt",
"error.user.password.excessive": "Zadejte prosím platné heslo. Heslo nesmí být delší než 1000 znaků.",
"error.user.password.invalid": "Zadejte prosím platné heslo. Heslo musí být dlouhé alespoň 8 znaků.",
- "error.user.password.notSame": "Prosím potvrďte heslo",
+ "error.user.password.notSame": "Pros\u00edm potvr\u010fte heslo",
"error.user.password.undefined": "Uživatel nemá nastavené heslo.",
"error.user.password.wrong": "Špatné heslo",
"error.user.role.invalid": "Zadejte prosím platnou roli",
@@ -195,8 +251,10 @@
"error.validation.accepted": "Potvrďte prosím",
"error.validation.alpha": "Zadávejte prosím pouze znaky v rozmezí a-z",
"error.validation.alphanum": "Zadávejte prosím pouze znaky v rozmezí a-z nebo čísla v rozmezí 0-9",
+ "error.validation.anchor": "Zadejte správný název kotvy",
"error.validation.between": "Zadejte prosím hodnotu mez \"{min}\" a \"{max}\"",
"error.validation.boolean": "Potvrďte prosím, nebo odmítněte",
+ "error.validation.color": "Zadejte platnou barvu ve formátu {format}",
"error.validation.contains": "Zadejte prosím hodnotu, která obsahuje \"{needle}\"",
"error.validation.date": "Zadejte prosím platné datum",
"error.validation.date.after": "Zadejte prosím datum po {date}",
@@ -211,6 +269,7 @@
"error.validation.integer": "Zadejte prosím platné celé číslo",
"error.validation.ip": "Zadejte prosím platnou IP adresu",
"error.validation.less": "Zadejte prosím hodnotu menší než {max}",
+ "error.validation.linkType": "Typ odkazu není povolen",
"error.validation.match": "Hodnota neodpovídá očekávanému vzoru",
"error.validation.max": "Zadejte prosím hodnotu rovnou, nebo menší než {max}",
"error.validation.maxlength": "Zadaná hodnota je příliš dlouhá. (Povoleno nejvýše {max} znaků)",
@@ -227,15 +286,18 @@
"error.validation.same": "Zadejte prosím \"{other}\"",
"error.validation.size": "Velikost hodnoty musí být \"{size}\"",
"error.validation.startswith": "Hodnota musí začínat \"{start}\"",
+ "error.validation.tel": "Zadejte neformátované telefonní číslo ",
"error.validation.time": "Zadejte prosím platný čas",
"error.validation.time.after": "Zadejte prosím čas po {time}",
"error.validation.time.before": "Zadejte prosím čas před {time}",
"error.validation.time.between": "Zadejte prosím čas v rozmezí od {min} do {max}",
+ "error.validation.uuid": "Zadejte platné UUID",
"error.validation.url": "Zadejte prosím platnou adresu URL",
"expand": "Rozbalit",
"expand.all": "Rozbalit vše",
+ "field.invalid": "Pole není platné",
"field.required": "Pole musí být vyplněno.",
"field.blocks.changeType": "Změnit typ",
"field.blocks.code.name": "Kód",
@@ -245,8 +307,9 @@
"field.blocks.delete.confirm.all": "Opravdu chcete smazat všechny bloky?",
"field.blocks.delete.confirm.selected": "Opravdu chcete smazat vybrané bloky?",
"field.blocks.empty": "Zatím žádné bloky",
+ "field.blocks.fieldsets.empty": "Zatím žádné fieldsets",
"field.blocks.fieldsets.label": "Vyberte prosím typ bloku …",
- "field.blocks.fieldsets.paste": "Stiskněte{{ shortcut }} pro vložení/import bloků z Vaší schránky",
+ "field.blocks.fieldsets.paste": "Stiskněte{{ shortcut }} pro vložení rozvržení/bloků ze schránky Vloženy budou jen ty, které jsou v aktuálním poli povolené.",
"field.blocks.gallery.name": "Galerie",
"field.blocks.gallery.images.empty": "Zatím žádné obrázky",
"field.blocks.gallery.images.label": "Obrázky",
@@ -254,11 +317,16 @@
"field.blocks.heading.name": "Nadpis",
"field.blocks.heading.text": "Text",
"field.blocks.heading.placeholder": "Nadpis …",
+ "field.blocks.figure.back.plain": "Čistý",
+ "field.blocks.figure.back.pattern.light": "Vzor (světlý)",
+ "field.blocks.figure.back.pattern.dark": "Vzor (tmavý)",
"field.blocks.image.alt": "Alternativní text",
"field.blocks.image.caption": "Titulek",
"field.blocks.image.crop": "Oříznout",
"field.blocks.image.link": "Odkaz",
"field.blocks.image.location": "Umístění",
+ "field.blocks.image.location.internal": "Tato webová stránka",
+ "field.blocks.image.location.external": "Externí zdroj",
"field.blocks.image.name": "Obrázek",
"field.blocks.image.placeholder": "Vyberte obrázek",
"field.blocks.image.ratio": "Poměr stran",
@@ -275,41 +343,75 @@
"field.blocks.quote.citation.placeholder": "od …",
"field.blocks.text.name": "Text",
"field.blocks.text.placeholder": "Text …",
+ "field.blocks.video.autoplay": "Autoplay",
"field.blocks.video.caption": "Titulek",
+ "field.blocks.video.controls": "Ovládání",
+ "field.blocks.video.location": "Umístění",
+ "field.blocks.video.loop": "Smyčka",
+ "field.blocks.video.muted": "Ztlumené",
"field.blocks.video.name": "Video",
"field.blocks.video.placeholder": "Zadejte URL adresu videa",
+ "field.blocks.video.poster": "Náhledový obrázek",
+ "field.blocks.video.preload": "Předběžně načíst",
"field.blocks.video.url.label": "URL adresa videa",
"field.blocks.video.url.placeholder": "https://youtube.com/?v=",
- "field.files.empty": "Nebyly zatím vybrány žádné soubory",
+ "field.entries.delete.confirm.all": "Opravdu chcete smazat všechny záznamy?",
+ "field.entries.empty": "Zatím nejsou žádné záznamy.",
+ "field.files.empty": "Nebyly zatím vybrány žádné soubory",
+ "field.files.empty.single": "Nebyl zatím vybrán žádný soubor",
+
+ "field.layout.change": "Změnit rozvržení",
"field.layout.delete": "Smazat rozvržení",
"field.layout.delete.confirm": "Opravdu chcete smazat toto rozvržení?",
+ "field.layout.delete.confirm.all": "Opravdu chcete smazat všechna rozvržení?",
"field.layout.empty": "Zatím žádné řádky",
"field.layout.select": "Vyberte rozvržení",
"field.object.empty": "Zatím žádná informace",
"field.pages.empty": "Nebyly zatím vybrány žádné stránky",
+ "field.pages.empty.single": "Nebyla zatím vybrána žádná stránka",
- "field.structure.delete.confirm": "Opravdu chcete smazat tento záznam?",
+ "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ím nejsou žádné 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": "Nebyl zatím vybrán žádný uživatel",
+ "fields.empty": "Zatím žádné pole",
+
+ "file": "Soubor",
"file.blueprint": "Tento typ souboru nemá blueprint. Blueprint můžete definovat v /site/blueprints/files/{blueprint}.yml",
+ "file.changeTemplate": "Změnit šablonu",
+ "file.changeTemplate.notice": "Změna šablony souboru změní obsah pro pole, která mají odlišný typ. Pokud má nová šablona nastavena určitá pravidla, např. rozměry obrázku, tato pravidla budou také aplikována. Používejte obezřetně.",
"file.delete.confirm": "Opravdu chcete smazat tento soubor?",
+ "file.focus.placeholder": "Nastavit ohnisko",
+ "file.focus.reset": "Odstranit ohnisko",
+ "file.focus.title": "Zaměřit na",
"file.sort": "Změnit pozici",
"files": "Soubory",
+ "files.delete.confirm.selected": "Opravdu chcete smazat vybrané soubory? Tuto akci nelze vzít zpět!",
"files.empty": "Zatím žádné soubory",
+ "filter": "Filtr",
+
+ "form.discard": "Zahodit změny",
+ "form.discard.confirm": "Opravdu chcete zahodit všechny změny?",
+ "form.locked": "Obsah je momentálně zablokován, protože ho upravuje jiný uživatel",
+ "form.unsaved": "Změny dosud nebyly uloženy",
+ "form.preview": "Náhled změn",
+ "form.preview.draft": "Náhled konceptu",
+
"hide": "Skrýt",
"hour": "Hodina",
+ "hue": "Odstín",
"import": "Import",
"info": "Informace",
- "insert": "Vložit",
+ "insert": "Vlo\u017eit",
"insert.after": "Vložit za",
"insert.before": "Vložit před",
"install": "Instalovat",
@@ -317,14 +419,13 @@
"installation": "Instalace",
"installation.completed": "Panel byl nainstalován",
"installation.disabled": "Instalátor panelu je ve výchozím nastavení na veřejných serverech zakázán. Spusťte prosím instalátor na lokálním počítači nebo jej povolte prostřednictvím panel.install
.",
- "installation.issues.accounts": "/site/accounts není zapisovatelné",
- "installation.issues.content": "Složka content a všechny soubory a složky v ní musí být zapisovatelné.",
+ "installation.issues.accounts": "\/site\/accounts nen\u00ed zapisovateln\u00e9",
+ "installation.issues.content": "Slo\u017eka content a v\u0161echny soubory a slo\u017eky v n\u00ed mus\u00ed b\u00fdt zapisovateln\u00e9.",
"installation.issues.curl": "Je vyžadováno rozšířeníCURL
",
"installation.issues.headline": "Panel nelze nainstalovat",
"installation.issues.mbstring": "Je vyžadováno rozšířeníMB String
",
"installation.issues.media": "Složka/media
neexistuje, nebo nemá povolený zápis",
"installation.issues.php": "Ujistěte se, že používátePHP 8+
",
- "installation.issues.server": "Kirby vyžadujeApache
, Nginx
neboCaddy
",
"installation.issues.sessions": "Složka/site/sessions
neexistuje, nebo nemá povolený zápis",
"language": "Jazyk",
@@ -332,6 +433,7 @@
"language.convert": "Nastavte výchozí možnost",
"language.convert.confirm": " {secret}
ručně do své autentifikační aplikace.",
+ "login.totp.enable.confirm.headline": "2. Potvrďte vygenerovaným kódem",
+ "login.totp.enable.confirm.text": "Vaše aplikace generuje každých 30 sekund nový jednorázový kód. Zadejte aktuální kód a dokončete nastavení:",
+ "login.totp.enable.confirm.label": "Současný kód",
+ "login.totp.enable.confirm.help": "Po tomto nastavení vás při každém přihlášení požádáme o jednorázový kód.",
+ "login.totp.enable.success": "Jednorázové kódy zapnuty",
+ "login.totp.disable.option": "Vypnutí jednorázových kódu",
+ "login.totp.disable.label": "Pro vypnutí jednorázových kódů zadejte svoje heslo",
+ "login.totp.disable.help": "V budoucnu bude při přihlašování vyžadován jiný druhý faktor, například přihlašovací kód zaslaný e-mailem. Jednorázové kódy můžete vždy později nastavit znovu.",
+ "login.totp.disable.admin": "
Všechny podstránky budou vymazány.",
"page.delete.confirm.title": "Pro potvrzení zadejte titulek stránky",
- "page.draft.create": "Vytvořit koncept",
"page.duplicate.appendix": "Kopírovat",
"page.duplicate.files": "Kopírovat soubory",
"page.duplicate.pages": "Kopírovat stránky",
+ "page.move": "Přesunout stránku",
"page.sort": "Změnit pozici",
"page.status": "Stav",
"page.status.draft": "Koncept",
@@ -450,24 +604,32 @@
"page.status.unlisted.description": "Tato stránka je dostupná pouze přes URL.",
"pages": "Stránky",
+ "pages.delete.confirm.selected": "Opravdu chcete smazat vybrané stránky? Tuto akci nelze vzít zpět!",
"pages.empty": "Zatím žádné stránky",
"pages.status.draft": "Koncepty",
"pages.status.listed": "Zveřejněno",
"pages.status.unlisted": "Neveřejná",
- "pagination.page": "Page",
+ "pagination.page": "Stránka",
"password": "Heslo",
"paste": "Vložit",
"paste.after": "Vložit za",
+ "paste.success": "{count} vloženo!",
"pixel": "Pixel",
- "plugin": "Doplňek",
+ "plugin": "Doplněk",
"plugins": "Doplňky",
"prev": "Předchozí",
"preview": "Náhled",
+
+ "publish": "Zveřejnit",
+ "published": "Zveřejněno",
+
"remove": "Odstranit",
"rename": "Přejmenovat",
+ "renew": "Obnovit",
"replace": "Nahradit",
+ "replace.with": "Nahradit pomocí",
"retry": "Zkusit znovu",
"revert": "Zahodit",
"revert.confirm": "Opravdu chcete smazat všechny provedené změny?",
@@ -481,12 +643,15 @@
"role.nobody.description": "Toto je výchozí role bez jakýchkoli oprávnění",
"role.nobody.title": "Nikdo",
- "save": "Uložit",
+ "save": "Ulo\u017eit",
+ "saved": "Uloženo",
"search": "Hledat",
+ "searching": "Hledání",
"search.min": "Pro vyhledání zadejte alespoň {min} znaky",
- "search.all": "Zobrazit vše",
+ "search.all": "Zobrazit všech {count} výsledků",
"search.results.none": "Žádné výsledky",
+ "section.invalid": "Sekce je neplatná",
"section.required": "Sekce musí být vyplněna",
"security": "Zabezpečení",
@@ -496,18 +661,27 @@
"show": "Zobrazit",
"site.blueprint": "Hlavní panel nemá blueprint. Blueprint můžete definovat v /site/blueprints/site.yml",
"size": "Velikost",
- "slug": "Přípona URL",
+ "slug": "P\u0159\u00edpona URL",
"sort": "Řadit",
+ "sort.drag": "Táhnout pro změnu řazení ...",
+ "split": "Rozdělit",
"stats.empty": "Žádná hlášení",
+ "status": "Stav",
+
+ "system.info.copy": "Kopírovat informace",
+ "system.info.copied": "Systémové informace zkopírovány",
"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",
+ "system.issues.eol.php": "Instalovaná verze PHP { release } dosálhla konce životnosti a nebude již dále dostávat bezpečností aktualizace",
"system.issues.debug": "Debug mode musí být v produkci vypnutý",
"system.issues.git": "Složka .git je zřejmě přístupná zvenčí",
"system.issues.https": "Pro všechny stránky doporučujeme používat protokol HTTPS",
"system.issues.kirby": "Složka kirby je zřejmě přístupná zvenčí",
+ "system.issues.local": "Stránka běží lokálně s mírnějšími bezpečnostními kontrolami",
"system.issues.site": "Složka site je zřejmě přístupná zvenčí",
+ "system.issues.vue.compiler": "Kompilátor Vue šablon je povolen",
"system.issues.vulnerability.kirby": "Vaše instalace může být ovlivněna následující zranitelností (stupeň vážnosti - { severity }): { description }",
"system.issues.vulnerability.plugin": "Vaše instalace může být ovlivněna následující zranitelností v doplňku { plugin } (stupeň vážnosti - { severity }): { description }",
"system.updateStatus": "Status aktualizací",
@@ -520,12 +694,21 @@
"system.updateStatus.update": "Je dostupná bezplatná nová verze { version }",
"system.updateStatus.upgrade": "Je dostupný upgrade na verzi { version }",
+ "tel": "Telefon",
+ "tel.placeholder": "+49123456789",
+ "template": "\u0160ablona",
+
+ "theme": "Motiv",
+ "theme.light": "Světlý motiv",
+ "theme.dark": "Tmavý motiv",
+ "theme.automatic": "Podle nastavení systému",
+
"title": "Název",
- "template": "Šablona",
"today": "Dnes",
+ "toolbar.button.clear": "Odstranit formátování",
"toolbar.button.code": "Kód",
- "toolbar.button.bold": "Tučný text",
+ "toolbar.button.bold": "Tu\u010dn\u00fd text",
"toolbar.button.email": "Email",
"toolbar.button.headings": "Nadpisy",
"toolbar.button.heading.1": "Nadpis 1",
@@ -534,22 +717,26 @@
"toolbar.button.heading.4": "Nadpis 4",
"toolbar.button.heading.5": "Nadpis 5",
"toolbar.button.heading.6": "Nadpis 6",
- "toolbar.button.italic": "Kurzíva",
+ "toolbar.button.italic": "Kurz\u00edva",
"toolbar.button.file": "Soubor",
"toolbar.button.file.select": "Vyberte soubor",
"toolbar.button.file.upload": "Nahrajte soubor",
"toolbar.button.link": "Odkaz",
"toolbar.button.paragraph": "Odstavec",
"toolbar.button.strike": "Přeškrtnutí",
+ "toolbar.button.sub": "Dolní index",
+ "toolbar.button.sup": "Horní index",
"toolbar.button.ol": "Číslovaný seznam",
"toolbar.button.underline": "Podtržení",
"toolbar.button.ul": "Odrážkový seznam",
"translation.author": "Kirby tým",
"translation.direction": "ltr",
- "translation.name": "Česky",
+ "translation.name": "\u010cesky",
"translation.locale": "cs_CZ",
+ "type": "Typ",
+
"upload": "Nahrát",
"upload.error.cantMove": "Nahraný soubor nemohl být přesunut",
"upload.error.cantWrite": "Zápis souboru na disk se nezdařil",
@@ -562,7 +749,7 @@
"upload.error.noFiles": "Nebyly nahrány žádné soubory",
"upload.error.partial": "Soubor byl nahrán pouze z části",
"upload.error.tmpDir": "Chybí dočasná složka",
- "upload.errors": "Error",
+ "upload.errors": "Chyba",
"upload.progress": "Nahrávání...",
"url": "Url",
@@ -574,28 +761,32 @@
"user.changeLanguage": "Změnit jazyk",
"user.changeName": "Přejmenovat tohoto uživatele",
"user.changePassword": "Změnit heslo",
+ "user.changePassword.current": "Vaše současné heslo",
"user.changePassword.new": "Nové heslo",
"user.changePassword.new.confirm": "Potvrdit nové heslo...",
"user.changeRole": "Změnit roli",
"user.changeRole.select": "Vybrat novou roli",
"user.create": "Přidat nového uživatele",
"user.delete": "Smazat tohoto uživatele",
- "user.delete.confirm": "Opravdu chcete smazat tohoto uživatele?",
+ "user.delete.confirm": "Opravdu chcete smazat tohoto u\u017eivatele?",
"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.account": "Váš účet",
+ "view": "Pohled",
+ "view.account": "V\u00e1\u0161 \u00fa\u010det",
"view.installation": "Instalace",
"view.languages": "Jazyky",
"view.resetPassword": "Resetovat heslo",
"view.site": "Stránka",
"view.system": "Systém",
- "view.users": "Uživatelé",
+ "view.users": "U\u017eivatel\u00e9",
"welcome": "Vítejte",
"year": "Rok",
diff --git a/kirby/i18n/translations/da.json b/kirby/i18n/translations/da.json
index 67138d5..8c05064 100644
--- a/kirby/i18n/translations/da.json
+++ b/kirby/i18n/translations/da.json
@@ -3,19 +3,28 @@
"account.delete": "Slet din konto",
"account.delete.confirm": "Ønsker du virkelig at slette din konto? Du vil blive logget ud med det samme. Din konto kan ikke gendannes.",
+ "activate": "Activate",
"add": "Ny",
+ "alpha": "Alpha",
"author": "Forfatter",
"avatar": "Profilbillede",
"back": "Tilbage",
"cancel": "Annuller",
- "change": "Ændre",
+ "change": "\u00c6ndre",
"close": "Luk",
+ "changes": "Changes",
"confirm": "Gem",
"collapse": "Fold sammen",
"collapse.all": "Fold alle sammen",
+ "color": "Color",
+ "coordinates": "Coordinates",
"copy": "Kopier",
"copy.all": "Kopier alle",
+ "copy.success": "{count} copied!",
+ "copy.success.multiple": "{count} copied!",
+ "copy.url": "Copy URL",
"create": "Opret",
+ "custom": "Custom",
"date": "Dato",
"date.select": "Vælg en dato",
@@ -23,8 +32,8 @@
"day": "Dag",
"days.fri": "Fre",
"days.mon": "Man",
- "days.sat": "Lør",
- "days.sun": "Søn",
+ "days.sat": "L\u00f8r",
+ "days.sun": "S\u00f8n",
"days.thu": "Tor",
"days.tue": "Tir",
"days.wed": "Ons",
@@ -34,13 +43,20 @@
"delete": "Slet",
"delete.all": "Slet alle",
+ "dialog.fields.empty": "This dialog has no fields",
"dialog.files.empty": "Ingen filer kan vælges",
"dialog.pages.empty": "Ingen sider kan vælges",
+ "dialog.text.empty": "This dialog does not define any text",
"dialog.users.empty": "Ingen brugere kan vælges",
"dimensions": "Dimensioner",
+ "disable": "Disable",
"disabled": "Deaktiveret",
- "discard": "Kassér",
+ "discard": "Kass\u00e9r",
+
+ "drawer.fields.empty": "This drawer has no fields",
+
+ "domain": "Domain",
"download": "Download",
"duplicate": "Dupliker",
@@ -49,11 +65,13 @@
"email": "Email",
"email.placeholder": "mail@eksempel.dk",
+ "enter": "Enter",
"entries": "Entries",
"entry": "Entry",
"environment": "Miljø",
+ "error": "Fejl",
"error.access.code": "Ugyldig kode",
"error.access.login": "Ugyldigt log ind",
"error.access.panel": "Du har ikke adgang til panelet",
@@ -74,13 +92,31 @@
"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.entries.max.plural": "You must not add more than {max} entries",
+ "error.entries.max.singular": "You must not add more than one entry",
+ "error.entries.min.plural": "You must add at least {min} entries",
+ "error.entries.min.singular": "You must add at least one entry",
+ "error.entries.supports": "\"{type}\" field type is not supported for the entries field",
+ "error.entries.validation": "There's an error on the \"{field}\" field in row {index}",
+
"error.email.preset.notFound": "Email preset \"{name}\" findes ikke",
"error.field.converter.invalid": "Ugyldig 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": "Navn kan ikke efterlades tomt",
"error.file.changeName.permission": "Du har ikke tilladelse til at ændre navnet på filen \"{filename}\"",
+ "error.file.changeTemplate.invalid": "The template for the file \"{id}\" cannot be changed to \"{template}\" (valid: \"{blueprints}\")",
+ "error.file.changeTemplate.permission": "You are not allowed to change the template for the file \"{id}\"",
+
+ "error.file.delete.multiple": "Not all files could be deleted. Try each remaining file individually to see the specific error that prevents deletion.",
"error.file.duplicate": "En fil med navnet \"{filename}\" eksisterer allerede",
"error.file.extension.forbidden": "Uacceptabel fil-endelse",
"error.file.extension.invalid": "Ugyldig endelse: {extension}",
@@ -95,9 +131,11 @@
"error.file.minheight": "Højden af billedet skal mindst være {height} pixels",
"error.file.minsize": "Filen er for lille",
"error.file.minwidth": "Bredden af billedet skal mindst være {width} pixels",
+ "error.file.name.unique": "The filename must be unique",
"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",
@@ -106,22 +144,30 @@
"error.form.notSaved": "Formularen kunne ikke gemmes",
"error.language.code": "Indtast venligst en gyldig kode for sproget",
+ "error.language.create.permission": "You are not allowed to create a language",
+ "error.language.delete.permission": "You are not allowed to delete the language",
"error.language.duplicate": "Sproget eksisterer allerede",
"error.language.name": "Indtast venligst et gyldigt navn for sproget",
"error.language.notFound": "Sproget fandtes ikke",
+ "error.language.update.permission": "You are not allowed to update the language",
"error.layout.validation.block": "There's an error on the \"{field}\" field in block {blockIndex} using the \"{fieldset}\" block type in layout {layoutIndex}",
"error.layout.validation.settings": "Der er fejl i layout {index} indstillinger",
- "error.license.format": "Indtast venligst en gyldig licensnøgle",
+ "error.license.domain": "The domain for the license is missing",
"error.license.email": "Indtast venligst en gyldig email adresse",
+ "error.license.format": "Please enter a valid license code",
"error.license.verification": "Licensen kunne ikke verificeres",
+ "error.login.totp.confirm.invalid": "Ugyldig kode",
+ "error.login.totp.confirm.missing": "Please enter the current code",
+
"error.object.validation": "There’s an error in the \"{label}\" field:\n{message}",
"error.offline": "Panelet er i øjeblikket offline",
"error.page.changeSlug.permission": "Du kan ikke ændre URL-endelse for \"{slug}\"",
+ "error.page.changeSlug.reserved": "The path of top-level pages must not start with \"{path}\"",
"error.page.changeStatus.incomplete": "Siden indeholder fejl og kan derfor ikke udgives",
"error.page.changeStatus.permission": "Status for denne side kan ikke ændres",
"error.page.changeStatus.toDraft.invalid": "Siden \"{slug}\" kan ikke konverteres om til en kladde",
@@ -133,10 +179,18 @@
"error.page.delete": "Siden \"{slug}\" kan ikke slettes",
"error.page.delete.confirm": "Indtast venligst sidens titel for at bekræfte",
"error.page.delete.hasChildren": "Siden har unsersider og kan derfor ikke slettes",
+ "error.page.delete.multiple": "Not all pages could be deleted. Try each remaining page individually to see the specific error that prevents deletion.",
"error.page.delete.permission": "Du har ikke tilladelse til at slette \"{slug}\"",
"error.page.draft.duplicate": "En sidekladde med URL-endelsen \"{slug}\" eksisterer allerede",
"error.page.duplicate": "En side med URL-endelsen \"{slug}\" eksisterer allerede",
"error.page.duplicate.permission": "Du har ikke mulighed for at duplikere \"{slug}\"",
+ "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}\"",
"error.page.notFound": "Siden kunne ikke findes",
"error.page.num.invalid": "Indtast venligst et gyldigt sorteringsnummer. Nummeret kan ikke være negativt.",
"error.page.slug.invalid": "Indtast venligst et gyldigt URL appendix",
@@ -163,6 +217,8 @@
"error.site.changeTitle.permission": "Du har ikke tilladelse til at ændre titlen på sitet",
"error.site.update.permission": "Du har ikke tilladelse til at opdatere sitet",
+ "error.structure.validation": "There's an error on the \"{field}\" field in row {index}",
+
"error.template.default.notFound": "Standardskabelonen eksisterer ikke",
"error.unexpected": "En uventet fejl opstod! Aktiver debug mode for mere info: https://getkirby.com/docs/reference/system/options/debug",
@@ -185,7 +241,7 @@
"error.user.notFound": "Brugeren kunne ikke findes",
"error.user.password.excessive": "Please enter a valid password. Passwords must not be longer than 1000 characters.",
"error.user.password.invalid": "Indtast venligst en gyldig adgangskode. Adgangskoder skal minimum være 8 tegn lange.",
- "error.user.password.notSame": "Bekræft venligst adgangskoden",
+ "error.user.password.notSame": "Bekr\u00e6ft venligst adgangskoden",
"error.user.password.undefined": "Brugeren har ikke en adgangskode",
"error.user.password.wrong": "Forkert adgangskode",
"error.user.role.invalid": "Indtast venligst en gyldig rolle",
@@ -195,8 +251,10 @@
"error.validation.accepted": "Bekræft venligst",
"error.validation.alpha": "Indtast venligst kun bogstaver imellem a-z",
"error.validation.alphanum": "Indtast venligst kun bogstaver og tal imellem a-z eller 0-9",
+ "error.validation.anchor": "Please enter a correct link anchor",
"error.validation.between": "Indtast venligst en værdi imellem \"{min}\" og \"{max}\"",
"error.validation.boolean": "Venligst bekræft eller afvis",
+ "error.validation.color": "Please enter a valid color in the {format} format",
"error.validation.contains": "Indtast venligst en værdi der indeholder \"{needle}\"",
"error.validation.date": "Indtast venligst en gyldig dato",
"error.validation.date.after": "Indtast venligst en dato efter {date}",
@@ -211,6 +269,7 @@
"error.validation.integer": "Indtast et gyldigt tal",
"error.validation.ip": "Indtast en gyldig IP adresse",
"error.validation.less": "Indtast venligst en værdi mindre end {max}",
+ "error.validation.linkType": "The link type is not allowed",
"error.validation.match": "Værdien matcher ikke det forventede mønster",
"error.validation.max": "Indtast venligst en værdi lig med eller lavere end {max}",
"error.validation.maxlength": "Indtast venligst en kortere værdi. (maks. {max} karakterer)",
@@ -227,15 +286,18 @@
"error.validation.same": "Indtast venligst \"{other}\"",
"error.validation.size": "Størrelsen på værdien skal være \"{size}\"",
"error.validation.startswith": "Værdien skal starte med \"{start}\"",
+ "error.validation.tel": "Please enter an unformatted phone number",
"error.validation.time": "Indtast venligst et gyldigt tidspunkt",
"error.validation.time.after": "Indtast venligst et tidspunkt efter {time}",
"error.validation.time.before": "Indtast venligst et tidspunkt inden {time}",
"error.validation.time.between": "Indtast venligst et tidspunkt imellem {min} og {max}",
+ "error.validation.uuid": "Please enter a valid UUID",
"error.validation.url": "Indtast venligst en gyldig URL",
"expand": "Fold ud",
"expand.all": "Fold alle ud",
+ "field.invalid": "The field is invalid",
"field.required": "Feltet er påkrævet",
"field.blocks.changeType": "Skift type",
"field.blocks.code.name": "Kode",
@@ -245,8 +307,9 @@
"field.blocks.delete.confirm.all": "Ønsker du virkelig at slette alle blokke?",
"field.blocks.delete.confirm.selected": "Ønsker du virkelig at slette de valgte blokke?",
"field.blocks.empty": "Ingen blokke endnu",
+ "field.blocks.fieldsets.empty": "No fieldsets yet",
"field.blocks.fieldsets.label": "Vælg venligst en blok type",
- "field.blocks.fieldsets.paste": "Tryk {{ shortcut }} for at indsætte/importere blokke fra dit udklipsholder",
+ "field.blocks.fieldsets.paste": "Press {{ shortcut }} to import layouts/blocks from your clipboard Only those allowed in the current field will get inserted.",
"field.blocks.gallery.name": "Galleri",
"field.blocks.gallery.images.empty": "Ingen billeder endnu",
"field.blocks.gallery.images.label": "Billeder",
@@ -254,11 +317,16 @@
"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",
"field.blocks.image.link": "Link",
"field.blocks.image.location": "Placering",
+ "field.blocks.image.location.internal": "This website",
+ "field.blocks.image.location.external": "External source",
"field.blocks.image.name": "Billede",
"field.blocks.image.placeholder": "Vælg et billede",
"field.blocks.image.ratio": "Størrelsesforhold",
@@ -275,41 +343,75 @@
"field.blocks.quote.citation.placeholder": "af …",
"field.blocks.text.name": "Tekst",
"field.blocks.text.placeholder": "Tekst …",
+ "field.blocks.video.autoplay": "Autoplay",
"field.blocks.video.caption": "Billedtekst",
+ "field.blocks.video.controls": "Controls",
+ "field.blocks.video.location": "Placering",
+ "field.blocks.video.loop": "Loop",
+ "field.blocks.video.muted": "Muted",
"field.blocks.video.name": "Video",
"field.blocks.video.placeholder": "Indtast URL til en video",
+ "field.blocks.video.poster": "Poster",
+ "field.blocks.video.preload": "Preload",
"field.blocks.video.url.label": "Video-URL",
"field.blocks.video.url.placeholder": "https://youtube.com/?v=",
- "field.files.empty": "Ingen filer valgt endnu",
+ "field.entries.delete.confirm.all": "Do you really want to delete all entries?",
+ "field.entries.empty": "Ingen indtastninger endnu.",
+ "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",
"field.layout.delete.confirm": "Ønsker du virkelig at slette dette layout",
+ "field.layout.delete.confirm.all": "Do you really want to delete all layouts?",
"field.layout.empty": "Ingen rækker endnu",
"field.layout.select": "Vælg et layout",
"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": "Ønsker du virkelig at slette denne indtastning?",
+ "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",
+
+ "file": "File",
"file.blueprint": "Denne fil har intet blueprint endnu. Du kan definere opsætningen i /site/blueprints/files/{blueprint}.yml",
- "file.delete.confirm": "Ønsker du virkelig at slette denne fil?",
+ "file.changeTemplate": "Skift skabelon",
+ "file.changeTemplate.notice": "Changing the file's template will remove content for fields that don't match in type. If the new template defines certain rules, e.g. image dimensions, those will also be applied irreversibly. Use with caution.",
+ "file.delete.confirm": "\u00d8nsker du virkelig at slette denne fil?",
+ "file.focus.placeholder": "Set focal point",
+ "file.focus.reset": "Remove focal point",
+ "file.focus.title": "Focus",
"file.sort": "Skift position",
"files": "Filer",
+ "files.delete.confirm.selected": "Do you really want to delete the selected files? This action cannot be undone.",
"files.empty": "Ingen filer endnu",
+ "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",
"import": "Importer",
"info": "Info",
- "insert": "Indsæt",
+ "insert": "Inds\u00e6t",
"insert.after": "Indsæt efter",
"insert.before": "Indsæt før",
"install": "Installer",
@@ -317,14 +419,13 @@
"installation": "Installation",
"installation.completed": "Panelet er blevet installeret",
"installation.disabled": "Panel installationen er deaktiveret på offentlige servere som standard. Kør venligst installationen på en lokal maskine eller aktiver det med panel.install panel.install
muligheden.",
- "installation.issues.accounts": "/site/accounts er ikke skrivbar",
- "installation.issues.content": "Content mappen samt alle underliggende filer og mapper skal være skrivbare.",
+ "installation.issues.accounts": "\/site\/accounts er ikke skrivbar",
+ "installation.issues.content": "Content mappen samt alle underliggende filer og mapper skal v\u00e6re skrivbare.",
"installation.issues.curl": "CURL
extension er påkrævet",
"installation.issues.headline": "Panelet kan ikke installeres",
"installation.issues.mbstring": "MB String
extension er påkrævet",
"installation.issues.media": "/media
mappen eksisterer ikke eller er ikke skrivbar",
"installation.issues.php": "Sikre dig at der benyttes PHP 8+
",
- "installation.issues.server": "Kirby kræver Apache
, Nginx
eller Caddy
",
"installation.issues.sessions": "/site/sessions mappen eksisterer ikke eller er ikke skrivbar",
"language": "Sprog",
@@ -332,6 +433,7 @@
"language.convert": "Gør standard",
"language.convert.confirm": "{secret}
manually to your authenticator app.",
+ "login.totp.enable.confirm.headline": "2. Confirm with generated code",
+ "login.totp.enable.confirm.text": "Your app generates a new one‑time code every 30 seconds. Enter the current code to complete the setup:",
+ "login.totp.enable.confirm.label": "Current code",
+ "login.totp.enable.confirm.help": "After this setup, we will ask you for a one‑time code every time you log in.",
+ "login.totp.enable.success": "One‑time codes enabled",
+ "login.totp.disable.option": "Disable one‑time codes",
+ "login.totp.disable.label": "Enter your password to disable one‑time codes",
+ "login.totp.disable.help": "In the future, a different second factor like a login code sent via email will be requested when you log in. You can always set up one‑time codes again later.",
+ "login.totp.disable.admin": "
Alle undersider vil også blive slettet.",
"page.delete.confirm.title": "Indtast sidens titel for at bekræfte",
- "page.draft.create": "Opret kladde",
"page.duplicate.appendix": "Kopier",
"page.duplicate.files": "Kopier filer",
"page.duplicate.pages": "Kopier sider",
+ "page.move": "Move page",
"page.sort": "Skift position",
"page.status": "Status",
"page.status.draft": "Kladde",
@@ -450,26 +604,34 @@
"page.status.unlisted.description": "Siden er kun tilgængelig via URL",
"pages": "Sider",
+ "pages.delete.confirm.selected": "Do you really want to delete the selected pages? This action cannot be undone.",
"pages.empty": "Ingen sider endnu",
"pages.status.draft": "Kladder",
"pages.status.listed": "Udgivede",
"pages.status.unlisted": "Ulistede",
- "pagination.page": "Page",
+ "pagination.page": "Side",
"password": "Adgangskode",
"paste": "Indsæt",
"paste.after": "Indsæt efter",
+ "paste.success": "{count} pasted!",
"pixel": "Pixel",
"plugin": "Plugin",
"plugins": "Plugins",
"prev": "Forrige",
"preview": "Forhåndsvisning",
+
+ "publish": "Publish",
+ "published": "Udgivede",
+
"remove": "Fjern",
"rename": "Omdøb",
+ "renew": "Renew",
"replace": "Erstat",
- "retry": "Prøv igen",
- "revert": "Kassér",
+ "replace.with": "Replace with",
+ "retry": "Pr\u00f8v igen",
+ "revert": "Kass\u00e9r",
"revert.confirm": "Ønsker du virkelig at slette all ændringer der ikke er gemt?",
"role": "Rolle",
@@ -482,11 +644,14 @@
"role.nobody.title": "Ingen",
"save": "Gem",
+ "saved": "Saved",
"search": "Søg",
+ "searching": "Searching",
"search.min": "Indtast {min} tegn for at søge",
- "search.all": "Vis alle",
+ "search.all": "Show all {count} results",
"search.results.none": "Ingen resultater",
+ "section.invalid": "The section is invalid",
"section.required": "Sektionen er påkrævet",
"security": "Security",
@@ -498,16 +663,25 @@
"size": "Størrelse",
"slug": "URL-appendiks",
"sort": "Sorter",
+ "sort.drag": "Drag to sort …",
+ "split": "Split",
"stats.empty": "No reports",
+ "status": "Status",
+
+ "system.info.copy": "Copy info",
+ "system.info.copied": "System info copied",
"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",
+ "system.issues.eol.php": "Your installed PHP release { release } has reached end-of-life and will not receive further security updates",
"system.issues.debug": "Debugging must be turned off in production",
"system.issues.git": "The .git folder seems to be exposed",
"system.issues.https": "We recommend HTTPS for all your sites",
"system.issues.kirby": "The kirby folder seems to be exposed",
+ "system.issues.local": "The site is running locally with relaxed security checks",
"system.issues.site": "The site folder seems to be exposed",
+ "system.issues.vue.compiler": "The Vue template compiler is enabled",
"system.issues.vulnerability.kirby": "Your installation might be affected by the following vulnerability ({ severity } severity): { description }",
"system.issues.vulnerability.plugin": "Your installation might be affected by the following vulnerability in the { plugin } plugin ({ severity } severity): { description }",
"system.updateStatus": "Update status",
@@ -520,10 +694,19 @@
"system.updateStatus.update": "Free update { version } available",
"system.updateStatus.upgrade": "Upgrade { version } available",
- "title": "Titel",
+ "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",
+ "toolbar.button.clear": "Clear formatting",
"toolbar.button.code": "Kode",
"toolbar.button.bold": "Fed tekst",
"toolbar.button.email": "Email",
@@ -535,12 +718,14 @@
"toolbar.button.heading.5": "Overskrift 5",
"toolbar.button.heading.6": "Overskrift 6",
"toolbar.button.italic": "Kursiv tekst",
- "toolbar.button.file": "File",
+ "toolbar.button.file": "Fil",
"toolbar.button.file.select": "Vælg en fil",
"toolbar.button.file.upload": "Upload en fil",
"toolbar.button.link": "Link",
"toolbar.button.paragraph": "Afsnit",
"toolbar.button.strike": "Gennemstreg",
+ "toolbar.button.sub": "Subscript",
+ "toolbar.button.sup": "Superscript",
"toolbar.button.ol": "Ordnet liste",
"toolbar.button.underline": "Understreg",
"toolbar.button.ul": "Punktliste",
@@ -550,6 +735,8 @@
"translation.name": "Dansk",
"translation.locale": "da_DK",
+ "type": "Type",
+
"upload": "Upload",
"upload.error.cantMove": "Den uploadede fil kunne ikke flyttes",
"upload.error.cantWrite": "Kunne ikke skrive fil til disk",
@@ -574,21 +761,25 @@
"user.changeLanguage": "Skift sprog",
"user.changeName": "Omdøb denne bruger",
"user.changePassword": "Skift adgangskode",
+ "user.changePassword.current": "Your current password",
"user.changePassword.new": "Ny adgangskode",
"user.changePassword.new.confirm": "Bekræft den nye adgangskode...",
"user.changeRole": "Skift rolle",
"user.changeRole.select": "Vælg en ny rolle",
"user.create": "Tilføj en ny bruger",
"user.delete": "Slet denne bruger",
- "user.delete.confirm": "Ønsker du virkelig at slette denne bruger?",
+ "user.delete.confirm": "\u00d8nsker du virkelig at slette denne bruger?",
"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/kirby/i18n/translations/de.json b/kirby/i18n/translations/de.json
index caec627..f5f19ba 100644
--- a/kirby/i18n/translations/de.json
+++ b/kirby/i18n/translations/de.json
@@ -3,19 +3,28 @@
"account.delete": "Deinen Account löschen",
"account.delete.confirm": "Willst du deinen Account wirklich löschen? Du wirst sofort danach abgemeldet. Dein Account kann nicht wieder hergestellt werden.",
- "add": "Hinzufügen",
+ "activate": "Aktivieren",
+ "add": "Hinzuf\u00fcgen",
+ "alpha": "Alpha",
"author": "Autor",
"avatar": "Profilbild",
"back": "Zurück",
"cancel": "Abbrechen",
- "change": "Ändern",
- "close": "Schließen",
+ "change": "\u00c4ndern",
+ "close": "Schlie\u00dfen",
+ "changes": "Änderungen",
"confirm": "OK",
"collapse": "Zusammenklappen",
"collapse.all": "Alle zusammenklappen",
+ "color": "Farbe",
+ "coordinates": "Koordinaten",
"copy": "Kopieren",
"copy.all": "Alle kopieren",
+ "copy.success": "Kopiert",
+ "copy.success.multiple": "{count} kopiert!",
+ "copy.url": "URL kopieren",
"create": "Erstellen",
+ "custom": "Benutzerdefiniert",
"date": "Datum",
"date.select": "Datum auswählen",
@@ -31,16 +40,23 @@
"debugging": "Debugging",
- "delete": "Löschen",
+ "delete": "L\u00f6schen",
"delete.all": "Alle löschen",
+ "dialog.fields.empty": "Der Dialog hat keine Felder",
"dialog.files.empty": "Keine verfügbaren Dateien",
"dialog.pages.empty": "Keine verfügbaren Seiten",
+ "dialog.text.empty": "Dieser Dialog definiert keinen Text",
"dialog.users.empty": "Keine verfügbaren Accounts",
"dimensions": "Maße",
+ "disable": "Deaktivieren",
"disabled": "Gesperrt",
"discard": "Verwerfen",
+
+ "drawer.fields.empty": "Die Schublade hat keine Felder",
+
+ "domain": "Domain",
"download": "Download",
"duplicate": "Duplizieren",
@@ -49,18 +65,20 @@
"email": "E-Mail",
"email.placeholder": "mail@beispiel.de",
+ "enter": "Enter",
"entries": "Einträge",
"entry": "Eintrag",
"environment": "Umgebung",
+ "error": "Fehler",
"error.access.code": "Ungültiger Code",
"error.access.login": "Ungültige Zugangsdaten",
"error.access.panel": "Du hast keinen Zugang zum Panel",
"error.access.view": "Du hast keinen Zugriff auf diesen Teil des Panels",
"error.avatar.create.fail": "Das Profilbild konnte nicht hochgeladen werden",
- "error.avatar.delete.fail": "Das Profilbild konnte nicht gelöscht werden",
+ "error.avatar.delete.fail": "Das Profilbild konnte nicht gel\u00f6scht werden",
"error.avatar.dimensions.invalid": "Bitte lade ein Profilbild hoch, das nicht breiter oder höher als 3000 Pixel ist.",
"error.avatar.mime.forbidden": "Das Profilbild muss vom Format JPEG oder PNG sein",
@@ -74,13 +92,31 @@
"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.entries.max.plural": "Bitte füge nicht mehr als {max} Einträge hinzu",
+ "error.entries.max.singular": "Bitte füge nicht mehr als einen Eintrag hinzu",
+ "error.entries.min.plural": "Bitte füge mindestens {min} Einträge hinzu",
+ "error.entries.min.singular": "Bitte füge mindestens einen Eintrag hinzu",
+ "error.entries.supports": "Der Feldtyp \"{type}\" wird im Entries Feld nicht unterstützt.",
+ "error.entries.validation": "Fehler im Feld \"{field}\" in Zeile {index}",
+
"error.email.preset.notFound": "Die E-Mailvorlage \"{name}\" wurde nicht gefunden",
"error.field.converter.invalid": "Ungültiger Konverter: \"{converter}\"",
+ "error.field.link.options": "Ungültige Optionen: {options}",
"error.field.type.missing": "Feld \"{ name }\": Der Feldtyp \"{ type }\" existiert nicht",
"error.file.changeName.empty": "Bitte gib einen Namen an",
"error.file.changeName.permission": "Du darfst den Dateinamen von \"{filename}\" nicht ändern",
+ "error.file.changeTemplate.invalid": "Die Vorlage für die Datei \"{id}\" kann nicht zu \"{template}\" geändert werden (gültig: \"{blueprints}\")",
+ "error.file.changeTemplate.permission": "Du kannst die Vorlage für die Datei \"{id}\" nicht ändern",
+
+ "error.file.delete.multiple": "Es konnten nicht alle Dateien gelöscht werden. Versuche verbleibende Dateien einzeln zu löschen, um die Ursachen festzustellen.",
"error.file.duplicate": "Eine Datei mit dem Dateinamen \"{filename}\" besteht bereits",
"error.file.extension.forbidden": "Verbotene Dateiendung \"{extension}\"",
"error.file.extension.invalid": "Verbotene Dateiendung \"{extension}\"",
@@ -95,9 +131,11 @@
"error.file.minheight": "Die Bildhöhe muss mindestens {height} Pixel betragen",
"error.file.minsize": "Die Datei ist zu klein",
"error.file.minwidth": "Die Bildbreite muss mindestens {width} Pixel betragen",
+ "error.file.name.unique": "Der Dateiname besteht bereits",
"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",
@@ -106,22 +144,30 @@
"error.form.notSaved": "Das Formular konnte nicht gespeichert werden",
"error.language.code": "Bitte gib einen gültigen Code für die Sprache an",
+ "error.language.create.permission": "Du darfst keine Sprache anlegen",
+ "error.language.delete.permission": "Du darfst diese Sprache nicht löschen",
"error.language.duplicate": "Die Sprache besteht bereits",
"error.language.name": "Bitte gib einen gültigen Namen für die Sprache an",
"error.language.notFound": "Die Sprache konnte nicht gefunden werden",
+ "error.language.update.permission": "Du darfst diese Sprache nicht bearbeiten",
"error.layout.validation.block": "Fehler im \"{field}\" Feld in Block {blockIndex} mit dem Blocktyp \"{fieldset}\" in Layout {layoutIndex}",
"error.layout.validation.settings": "Fehler in den Einstellungen von Layout {index}",
- "error.license.format": "Bitte gib einen gültigen Lizenzschlüssel ein",
+ "error.license.domain": "Die Domain für die Lizenz fehlt",
"error.license.email": "Bitte gib eine gültige E-Mailadresse an",
+ "error.license.format": "Bitte gib einen gültigen Lizenzschlüssel ein",
"error.license.verification": "Die Lizenz konnte nicht verifiziert werden",
+ "error.login.totp.confirm.invalid": "Ungültiger Code",
+ "error.login.totp.confirm.missing": "Bitte gib den aktuellen Code ein",
+
"error.object.validation": "Fehler im \"{label}\" Feld:\n{message}",
"error.offline": "Das Panel ist zur Zeit offline",
"error.page.changeSlug.permission": "Du darfst die URL der Seite \"{slug}\" nicht ändern",
+ "error.page.changeSlug.reserved": "Der Pfad für Top-Level Seiten darf nicht mit \"{path}\" beginnen.",
"error.page.changeStatus.incomplete": "Die Seite ist nicht vollständig und kann daher nicht veröffentlicht werden",
"error.page.changeStatus.permission": "Der Status der Seite kann nicht geändert werden",
"error.page.changeStatus.toDraft.invalid": "Die Seite \"{slug}\" kann nicht in einen Entwurf umgewandelt werden",
@@ -133,10 +179,18 @@
"error.page.delete": "Die Seite \"{slug}\" kann nicht gelöscht werden",
"error.page.delete.confirm": "Bitte gib zur Bestätigung den Seitentitel ein",
"error.page.delete.hasChildren": "Die Seite hat Unterseiten und kann nicht gelöscht werden",
+ "error.page.delete.multiple": "Es konnten nicht alle Seiten gelöscht werden. Versuche verbleibende Seiten einzeln zu löschen, um die Ursachen festzustellen.",
"error.page.delete.permission": "Du kannst die Seite \"{slug}\" nicht löschen",
"error.page.draft.duplicate": "Ein Entwurf mit dem URL-Kürzel \"{slug}\" besteht bereits",
"error.page.duplicate": "Eine Seite mit dem URL-Kürzel \"{slug}\" besteht bereits",
"error.page.duplicate.permission": "Du kannst die Seite \"{slug}\" nicht duplizieren",
+ "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",
"error.page.notFound": "Die Seite \"{slug}\" konnte nicht gefunden werden",
"error.page.num.invalid": "Bitte gib eine gültige Sortierungszahl an. Negative Zahlen sind nicht erlaubt.",
"error.page.slug.invalid": "Bitte gib ein gültiges URL-Kürzel an",
@@ -163,6 +217,8 @@
"error.site.changeTitle.permission": "Du kannst den Titel der Seite nicht ändern",
"error.site.update.permission": "Du darfst die Seite nicht bearbeiten",
+ "error.structure.validation": "Fehler im Feld \"{field}\" in Zeile {index}",
+
"error.template.default.notFound": "Die \"Default\"-Vorlage existiert nicht",
"error.unexpected": "Ein unerwarteter Fehler ist aufgetreten. Aktiviere den Debug-Modus für weitere Informationen: https://getkirby.com/docs/reference/system/options/debug",
@@ -195,8 +251,10 @@
"error.validation.accepted": "Bitte bestätige",
"error.validation.alpha": "Bitte gib nur Zeichen zwischen A und Z ein",
"error.validation.alphanum": "Bitte gib nur Zeichen zwischen A und Z und Zahlen zwischen 0 und 9 ein",
+ "error.validation.anchor": "Bitte gib einen korrekten Anker an",
"error.validation.between": "Bitte gib einen Wert zwischen \"{min}\" und \"{max}\" ein",
"error.validation.boolean": "Bitte bestätige oder lehne ab",
+ "error.validation.color": "Bitte gib eine gültige Farbe im Format {format} ein",
"error.validation.contains": "Bitte gib einen Wert ein, der \"{needle}\" enthält",
"error.validation.date": "Bitte gib ein gültiges Datum ein",
"error.validation.date.after": "Bitte gib ein Datum nach dem {date} ein",
@@ -211,6 +269,7 @@
"error.validation.integer": "Bitte gib eine ganze Zahl ein",
"error.validation.ip": "Bitte gib eine gültige IP Adresse ein",
"error.validation.less": "Bitte gib einen Wert kleiner als {max} ein",
+ "error.validation.linkType": "Der Linktyp ist nicht erlaubt",
"error.validation.match": "Der Wert entspricht nicht dem erwarteten Muster",
"error.validation.max": "Bitte gib einen Wert ein, der nicht größer als {max} ist",
"error.validation.maxlength": "Bitte gib einen kürzeren Text ein (max. {max} Zeichen)",
@@ -227,15 +286,18 @@
"error.validation.same": "Bitte gib \"{other}\" ein",
"error.validation.size": "Die Größe des Wertes muss \"{size}\" sein",
"error.validation.startswith": "Der Wert muss mit \"{start}\" beginnen",
+ "error.validation.tel": "Bitte gib eine unformatierte Telefonnummer an",
"error.validation.time": "Bitte gib eine gültige Uhrzeit ein",
"error.validation.time.after": "Bitte gib eine Zeit nach {time} ein",
"error.validation.time.before": "Bitte gib eine Zeit vor {time} ein",
"error.validation.time.between": "Bitte gib eine Zeit zwischen {min} und {max} ein",
+ "error.validation.uuid": "Bitte gib eine gültige UUID an",
"error.validation.url": "Bitte gib eine gültige URL ein",
"expand": "Aufklappen",
"expand.all": "Alle aufklappen",
+ "field.invalid": "Das Feld ist ungültig",
"field.required": "Das Feld ist Pflicht",
"field.blocks.changeType": "Blocktyp ändern",
"field.blocks.code.name": "Code",
@@ -245,8 +307,9 @@
"field.blocks.delete.confirm.all": "Willst du wirklich alle Blöcke löschen?",
"field.blocks.delete.confirm.selected": "Willst du wirklich die ausgewählten Blöcke löschen?",
"field.blocks.empty": "Keine Blöcke",
+ "field.blocks.fieldsets.empty": "Keine Block Definition",
"field.blocks.fieldsets.label": "Bitte wähle einen Blocktyp aus …",
- "field.blocks.fieldsets.paste": "Drücke {{ shortcut }} um Blöcke aus der Zwischenablage zu importieren",
+ "field.blocks.fieldsets.paste": "Drücke {{ shortcut }} um Layouts/Blocks von deinem Clipboard zu importieren. Nur die, die im aktuellen Feld erlaubt sind werden eingefügt.",
"field.blocks.gallery.name": "Galerie",
"field.blocks.gallery.images.empty": "Keine Bilder",
"field.blocks.gallery.images.label": "Bilder",
@@ -254,11 +317,16 @@
"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",
"field.blocks.image.link": "Link",
"field.blocks.image.location": "Ort",
+ "field.blocks.image.location.internal": "Diese Webseite",
+ "field.blocks.image.location.external": "Externe Quelle",
"field.blocks.image.name": "Bild",
"field.blocks.image.placeholder": "Bild auswählen",
"field.blocks.image.ratio": "Seitenverhältnis",
@@ -275,41 +343,75 @@
"field.blocks.quote.citation.placeholder": "Quelle …",
"field.blocks.text.name": "Text",
"field.blocks.text.placeholder": "Text …",
+ "field.blocks.video.autoplay": "Autoplay",
"field.blocks.video.caption": "Bildunterschrift",
+ "field.blocks.video.controls": "Steuerung",
+ "field.blocks.video.location": "Ort",
+ "field.blocks.video.loop": "Schleife",
+ "field.blocks.video.muted": "Stumm",
"field.blocks.video.name": "Video",
"field.blocks.video.placeholder": "Video-URL eingeben",
+ "field.blocks.video.poster": "Poster",
+ "field.blocks.video.preload": "Vorladen",
"field.blocks.video.url.label": "Video-URL",
"field.blocks.video.url.placeholder": "https://youtube.com/?v=",
- "field.files.empty": "Keine Dateien ausgewählt",
+ "field.entries.delete.confirm.all": "Möchtest du wirklich alle Einträge löschen?",
+ "field.entries.empty": "Es bestehen keine Einträge.",
+ "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",
"field.layout.delete.confirm": "Willst du dieses Layout wirklich löschen?",
+ "field.layout.delete.confirm.all": "Willst du wirklich alle Layouts löschen?",
"field.layout.empty": "Keine Layouts",
"field.layout.select": "Layout auswählen",
"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öschen?",
+ "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äge.",
+ "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",
+
+ "file": "Datei",
"file.blueprint": "Du kannst zusätzliche Felder und Bereiche für diese Datei in /site/blueprints/files/{blueprint}.yml anlegen",
+ "file.changeTemplate": "Vorlage ändern",
+ "file.changeTemplate.notice": "Das Ändern der Dateivorlage wird alle Inhalte von Feldern entfernen, deren Feldtypen nicht übereinstimmen. Wenn die neue Vorlage bestimmte Regeln definiert, z.B. Bildabmessungen, werden diese unwiderruflich angewandt. Benutze diese Funktion mit Vorsicht.",
"file.delete.confirm": "Willst du die Datei {filename}
wirklich löschen?",
+ "file.focus.placeholder": "Fokuspunkt setzen",
+ "file.focus.reset": "Fokuspunkt entfernen",
+ "file.focus.title": "Fokus",
"file.sort": "Position ändern",
"files": "Dateien",
+ "files.delete.confirm.selected": "Willst du wirklich die ausgewählten Dateien löschen? Diese Aktion kann nicht rückgängig gemacht werden.",
"files.empty": "Keine Dateien",
+ "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",
"import": "Importieren",
"info": "Info",
- "insert": "Einfügen",
+ "insert": "Einf\u00fcgen",
"insert.after": "Danach einfügen",
"insert.before": "Davor einfügen",
"install": "Installieren",
@@ -324,7 +426,6 @@
"installation.issues.mbstring": "Die MB String
Erweiterung wird benötigt",
"installation.issues.media": "Der /media
Ordner ist nicht beschreibbar",
"installation.issues.php": "Bitte verwende PHP 8+
",
- "installation.issues.server": "Kirby benötigt Apache
, Nginx
or Caddy
",
"installation.issues.sessions": "/site/sessions
ist nicht beschreibbar",
"language": "Sprache",
@@ -332,6 +433,7 @@
"language.convert": "Als Standard auswählen",
"language.convert.confirm": "{secret}
manuell in deiner Authentifizierungs-App ein. ",
+ "login.totp.enable.confirm.headline": "2. Bestätige den erstellten Code.",
+ "login.totp.enable.confirm.text": "Deine App erstellt alle 30 Sekunden einen neuen Einmal-Code. Gib den aktuellen Code ein, um das Setup abzuschliessen. ",
+ "login.totp.enable.confirm.label": "Aktueller Code",
+ "login.totp.enable.confirm.help": "Nach dem Setup werden wir dich bei jeder Anmeldung nach einem Einmal-Code fragen. ",
+ "login.totp.enable.success": "Einmal-Codes aktiviert",
+ "login.totp.disable.option": "Einmal-Codes deaktivieren",
+ "login.totp.disable.label": "Gib dein Passwort ein, um die Einmal-Codes zu deaktivieren. ",
+ "login.totp.disable.help": "In Zukunft wird bei der Anmeldung ein anderer zweiter Faktor abgefragt. Z.B. ein Login-Code der per Email zugeschickt wird. Du kannst die Einmal-Codes jeder Zeit später wieder neu einrichten. ",
+ "login.totp.disable.admin": "
Alle Unterseiten werden ebenfalls gelöscht.",
"page.delete.confirm.title": "Gib zur Bestätigung den Seitentitel ein",
- "page.draft.create": "Entwurf anlegen",
- "page.duplicate.appendix": "Kopieren",
+ "page.duplicate.appendix": "Kopie",
"page.duplicate.files": "Dateien kopieren",
"page.duplicate.pages": "Seiten kopieren",
+ "page.move": "Seite bewegen",
"page.sort": "Position ändern",
"page.status": "Status",
"page.status.draft": "Entwurf",
@@ -450,6 +604,7 @@
"page.status.unlisted.description": "Die Seite kann nur über die URL aufgerufen werden",
"pages": "Seiten",
+ "pages.delete.confirm.selected": "Willst du wirklich die ausgewählten Seiten löschen? Diese Aktion kann nicht rückgängig gemacht werden.",
"pages.empty": "Keine Seiten",
"pages.status.draft": "Entwürfe",
"pages.status.listed": "Veröffentlicht",
@@ -460,14 +615,21 @@
"password": "Passwort",
"paste": "Einfügen",
"paste.after": "Danach einfügen",
+ "paste.success": "{count} eingefügt!",
"pixel": "Pixel",
"plugin": "Plugin",
"plugins": "Plugins",
"prev": "Vorheriger Eintrag",
"preview": "Vorschau",
+
+ "publish": "Veröffentlichen",
+ "published": "Veröffentlicht",
+
"remove": "Entfernen",
"rename": "Umbenennen",
+ "renew": "Erneuern",
"replace": "Ersetzen",
+ "replace.with": "Ersetzen mit",
"retry": "Wiederholen",
"revert": "Verwerfen",
"revert.confirm": "Willst du wirklich alle ungespeicherten Änderungen verwerfen? ",
@@ -482,11 +644,14 @@
"role.nobody.title": "Niemand",
"save": "Speichern",
+ "saved": "Gespeichert",
"search": "Suchen",
+ "searching": "Suchen",
"search.min": "Gib mindestens {min} Zeichen ein, um zu suchen",
- "search.all": "Alles zeigen",
+ "search.all": "Zeige alle {count} Ergebnisse",
"search.results.none": "Keine Ergebnisse",
+ "section.invalid": "Der Bereich ist ungültig",
"section.required": "Der Bereich ist Pflicht",
"security": "Sicherheit",
@@ -498,16 +663,25 @@
"size": "Größe",
"slug": "URL-Anhang",
"sort": "Sortieren",
+ "sort.drag": "Bewegen um zu sortieren …",
+ "split": "Teilen",
"stats.empty": "Keine Daten",
+ "status": "Status",
+
+ "system.info.copy": "Info kopieren",
+ "system.info.copied": "System Info wurde kopiert",
"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",
+ "system.issues.eol.php": "Deine installierte PHP-Version { release } ist veraltet und erhält keinen Sicherheits-Updates mehr",
"system.issues.debug": "Debugging muss im öffentlichen Betrieb ausgeschaltet sein",
"system.issues.git": "Der .git Ordner scheint öffentlich zugänglich zu sein",
"system.issues.https": "Wir empfehlen HTTPS für alle deine Seiten",
"system.issues.kirby": "Der kirby Ordner scheint öffentlich zugänglich zu sein",
+ "system.issues.local": "Die Seite läuft lokal mit abgeschwächten Sicherheitschecks",
"system.issues.site": "Der site Ordner scheint öffentlich zugänglich zu sein",
+ "system.issues.vue.compiler": "Der Vue Template Compiler ist aktiviert",
"system.issues.vulnerability.kirby": "Deine Installation könnte von folgender Sicherheitslücke betroffen sein ({ severity } severity): { description }",
"system.issues.vulnerability.plugin": "Deine Installation könnte von folgender Sicherheitslücke im { plugin } Plugin betroffen sein ({ severity } severity): { description }",
"system.updateStatus": "Update Status",
@@ -520,10 +694,19 @@
"system.updateStatus.update": "Kostenloses Update { version } verfügbar",
"system.updateStatus.upgrade": "Upgrade { version } verfügbar",
- "title": "Titel",
+ "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",
+ "toolbar.button.clear": "Formatierung entfernen",
"toolbar.button.code": "Code",
"toolbar.button.bold": "Fetter Text",
"toolbar.button.email": "E-Mail",
@@ -541,6 +724,8 @@
"toolbar.button.link": "Link",
"toolbar.button.paragraph": "Absatz",
"toolbar.button.strike": "Durchgestrichen",
+ "toolbar.button.sub": "Tiefgestellt",
+ "toolbar.button.sup": "Hochgestellt",
"toolbar.button.ol": "Geordnete Liste",
"toolbar.button.underline": "Unterstrichen",
"toolbar.button.ul": "Ungeordnete Liste",
@@ -550,6 +735,8 @@
"translation.name": "Deutsch",
"translation.locale": "de_DE",
+ "type": "Typ",
+
"upload": "Hochladen",
"upload.error.cantMove": "Die Datei konnte nicht an ihren Zielort bewegt werden",
"upload.error.cantWrite": "Die Datei konnte nicht auf der Festplatte gespeichert werden",
@@ -574,6 +761,7 @@
"user.changeLanguage": "Sprache ändern",
"user.changeName": "Account umbenennen",
"user.changePassword": "Passwort ändern",
+ "user.changePassword.current": "Dein aktuelles Passwort",
"user.changePassword.new": "Neues Passwort",
"user.changePassword.new.confirm": "Wiederhole das Passwort …",
"user.changeRole": "Rolle ändern",
@@ -585,10 +773,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/kirby/i18n/translations/el.json b/kirby/i18n/translations/el.json
index 8d37a84..1679c6d 100644
--- a/kirby/i18n/translations/el.json
+++ b/kirby/i18n/translations/el.json
@@ -3,57 +3,75 @@
"account.delete": "Delete your account",
"account.delete.confirm": "Do you really want to delete your account? You will be logged out immediately. Your account cannot be recovered.",
- "add": "Add",
+ "activate": "Activate",
+ "add": "\u03a0\u03c1\u03bf\u03c3\u03b8\u03ae\u03ba\u03b7",
+ "alpha": "Alpha",
"author": "Author",
- "avatar": "Profile picture",
- "back": "Back",
- "cancel": "Cancel",
- "change": "Change",
- "close": "Close",
- "confirm": "Ok",
+ "avatar": "\u0395\u03b9\u03ba\u03cc\u03bd\u03b1 \u03c0\u03c1\u03bf\u03c6\u03af\u03bb",
+ "back": "Πίσω",
+ "cancel": "\u0391\u03ba\u03cd\u03c1\u03c9\u03c3\u03b7",
+ "change": "\u0391\u03bb\u03bb\u03b1\u03b3\u03ae",
+ "close": "\u039a\u03bb\u03b5\u03af\u03c3\u03b9\u03bc\u03bf",
+ "changes": "Changes",
+ "confirm": "Εντάξει",
"collapse": "Collapse",
"collapse.all": "Collapse All",
+ "color": "Color",
+ "coordinates": "Coordinates",
"copy": "Αντιγραφή",
"copy.all": "Copy all",
+ "copy.success": "Copied",
+ "copy.success.multiple": "{count} copied!",
+ "copy.url": "Copy URL",
"create": "Δημιουργία",
+ "custom": "Custom",
- "date": "Date",
+ "date": "Ημερομηνία",
"date.select": "Επιλογή ημερομηνίας",
"day": "Ημέρα",
- "days.fri": "Fri",
- "days.mon": "Mon",
- "days.sat": "Sat",
- "days.sun": "Κυρ",
- "days.thu": "Thu",
- "days.tue": "Tue",
- "days.wed": "Wed",
+ "days.fri": "\u03a0\u03b1\u03c1",
+ "days.mon": "\u0394\u03b5\u03c5",
+ "days.sat": "\u03a3\u03ac\u03b2",
+ "days.sun": "\u039a\u03c5\u03c1",
+ "days.thu": "\u03a0\u03ad\u03bc",
+ "days.tue": "\u03a4\u03c1\u03af",
+ "days.wed": "\u03a4\u03b5\u03c4",
"debugging": "Debugging",
- "delete": "Delete",
+ "delete": "\u0394\u03b9\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae",
"delete.all": "Delete all",
+ "dialog.fields.empty": "This dialog has no fields",
"dialog.files.empty": "No files to select",
"dialog.pages.empty": "No pages to select",
+ "dialog.text.empty": "This dialog does not define any text",
"dialog.users.empty": "No users to select",
"dimensions": "Διαστάσεις",
+ "disable": "Disable",
"disabled": "Disabled",
"discard": "Απόρριψη",
+
+ "drawer.fields.empty": "This drawer has no fields",
+
+ "domain": "Domain",
"download": "Λήψη",
"duplicate": "Αντίγραφο",
- "edit": "Edit",
+ "edit": "\u0395\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1",
"email": "Διεύθυνση ηλεκτρονικού ταχυδρομείου",
"email.placeholder": "mail@example.com",
+ "enter": "Enter",
"entries": "Entries",
"entry": "Entry",
"environment": "Environment",
+ "error": "Error",
"error.access.code": "Mη έγκυρος κωδικός",
"error.access.login": "Mη έγκυρη σύνδεση",
"error.access.panel": "Δεν επιτρέπεται η πρόσβαση στον πίνακα ελέγχου",
@@ -62,7 +80,7 @@
"error.avatar.create.fail": "Δεν ήταν δυνατή η μεταφόρτωση της εικόνας προφίλ",
"error.avatar.delete.fail": "Δεν ήταν δυνατή η διαγραφή της εικόνας προφίλ",
"error.avatar.dimensions.invalid": "Διατηρήστε το πλάτος και το ύψος της εικόνας προφίλ κάτω από 3000 εικονοστοιχεία",
- "error.avatar.mime.forbidden": "Μη αποδεκτός τύπος αρχείου",
+ "error.avatar.mime.forbidden": "\u039c\u03b7 \u03b1\u03c0\u03bf\u03b4\u03b5\u03ba\u03c4\u03cc\u03c2 \u03c4\u03cd\u03c0\u03bf\u03c2 \u03b1\u03c1\u03c7\u03b5\u03af\u03bf\u03c5",
"error.blueprint.notFound": "Δεν ήταν δυνατή η φόρτωση του προσχεδίου \"{name}\"",
@@ -74,15 +92,33 @@
"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.entries.max.plural": "You must not add more than {max} entries",
+ "error.entries.max.singular": "You must not add more than one entry",
+ "error.entries.min.plural": "You must add at least {min} entries",
+ "error.entries.min.singular": "You must add at least one entry",
+ "error.entries.supports": "\"{type}\" field type is not supported for the entries field",
+ "error.entries.validation": "There's an error on the \"{field}\" field in row {index}",
+
"error.email.preset.notFound": "Δεν είναι δυνατή η εύρεση της προεπιλογής διεύθινσης ηλεκτρονικού ταχυδρομείου \"{name}\"",
"error.field.converter.invalid": "Μη έγκυρος μετατροπέας \"{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",
"error.file.changeName.permission": "Δεν επιτρέπεται να αλλάξετε το όνομα του \"{filename}\"",
+ "error.file.changeTemplate.invalid": "The template for the file \"{id}\" cannot be changed to \"{template}\" (valid: \"{blueprints}\")",
+ "error.file.changeTemplate.permission": "You are not allowed to change the template for the file \"{id}\"",
+
+ "error.file.delete.multiple": "Not all files could be deleted. Try each remaining file individually to see the specific error that prevents deletion.",
"error.file.duplicate": "Ένα αρχείο με το όνομα \"{filename}\" υπάρχει ήδη",
- "error.file.extension.forbidden": "Μη αποδεκτή επέκταση αρχείου",
+ "error.file.extension.forbidden": "\u039c\u03b7 \u03b1\u03c0\u03bf\u03b4\u03b5\u03ba\u03c4\u03ae \u03b5\u03c0\u03ad\u03ba\u03c4\u03b1\u03c3\u03b7 \u03b1\u03c1\u03c7\u03b5\u03af\u03bf\u03c5",
"error.file.extension.invalid": "Invalid extension: {extension}",
"error.file.extension.missing": "Λείπει η επέκταση για το \"{filename}\"",
"error.file.maxheight": "The height of the image must not exceed {height} pixels",
@@ -95,9 +131,11 @@
"error.file.minheight": "The height of the image must be at least {height} pixels",
"error.file.minsize": "The file is too small",
"error.file.minwidth": "The width of the image must be at least {width} pixels",
+ "error.file.name.unique": "The filename must be unique",
"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": "Δεν ήταν δυνατή η εύρεση του αρχείου",
@@ -106,22 +144,30 @@
"error.form.notSaved": "Δεν ήταν δυνατή η αποθήκευση της φόρμας",
"error.language.code": "Please enter a valid code for the language",
+ "error.language.create.permission": "You are not allowed to create a language",
+ "error.language.delete.permission": "You are not allowed to delete the language",
"error.language.duplicate": "The language already exists",
"error.language.name": "Please enter a valid name for the language",
"error.language.notFound": "The language could not be found",
+ "error.language.update.permission": "You are not allowed to update the language",
"error.layout.validation.block": "There's an error on the \"{field}\" field in block {blockIndex} using the \"{fieldset}\" block type in layout {layoutIndex}",
"error.layout.validation.settings": "There's an error in layout {index} settings",
- "error.license.format": "Please enter a valid license key",
+ "error.license.domain": "The domain for the license is missing",
"error.license.email": "Παρακαλώ εισάγετε μια έγκυρη διεύθυνση ηλεκτρονικού ταχυδρομείου",
+ "error.license.format": "Please enter a valid license code",
"error.license.verification": "The license could not be verified",
+ "error.login.totp.confirm.invalid": "Mη έγκυρος κωδικός",
+ "error.login.totp.confirm.missing": "Please enter the current code",
+
"error.object.validation": "There’s an error in the \"{label}\" field:\n{message}",
"error.offline": "The Panel is currently offline",
"error.page.changeSlug.permission": "Δεν επιτρέπεται να αλλάξετε το URL της σελίδας \"{slug}\"",
+ "error.page.changeSlug.reserved": "The path of top-level pages must not start with \"{path}\"",
"error.page.changeStatus.incomplete": "Δεν ήταν δυνατή η δημοσίευση της σελίδας καθώς περιέχει σφάλματα",
"error.page.changeStatus.permission": "Δεν είναι δυνατή η αλλαγή κατάστασης για αυτή τη σελίδα",
"error.page.changeStatus.toDraft.invalid": "Δεν είναι δυνατή η μετατροπή της σελίδας \"{slug}\" σε προσχέδιο",
@@ -133,10 +179,18 @@
"error.page.delete": "Δεν είναι δυνατή η διαγραφή της σελίδας \"{slug}\"",
"error.page.delete.confirm": "Παρακαλώ εισάγετε τον τίτλο της σελίδας για επιβεβαίωση",
"error.page.delete.hasChildren": "Δεν είναι δυνατή η διαγραφή της σελίδας καθώς περιέχει υποσελίδες",
+ "error.page.delete.multiple": "Not all pages could be deleted. Try each remaining page individually to see the specific error that prevents deletion.",
"error.page.delete.permission": "Δεν επιτρέπεται η διαγραφή της σελίδας \"{slug}\"",
"error.page.draft.duplicate": "Υπάρχει ήδη ένα προσχέδιο σελίδας με την διεύθυνση URL \"{slug}\"",
"error.page.duplicate": "Υπάρχει ήδη μια σελίδα με την διεύθυνση URL \"{slug}\"",
"error.page.duplicate.permission": "You are not allowed to duplicate \"{slug}\"",
+ "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}\"",
"error.page.notFound": "Δεν ήταν δυνατή η εύρεση της σελίδας \"{slug}\"",
"error.page.num.invalid": "Παρακαλώ εισάγετε έναν έγκυρο αριθμό ταξινόμησης. Οι αριθμοί δεν μπορεί να είναι αρνητικοί.",
"error.page.slug.invalid": "Please enter a valid URL appendix",
@@ -163,6 +217,8 @@
"error.site.changeTitle.permission": "Δεν επιτρέπεται να αλλάξετε τον τίτλο του ιστότοπου",
"error.site.update.permission": "Δεν επιτρέπεται η ενημέρωση του ιστότοπου",
+ "error.structure.validation": "There's an error on the \"{field}\" field in row {index}",
+
"error.template.default.notFound": "Το προεπιλεγμένο πρότυπο δεν υπάρχει",
"error.unexpected": "An unexpected error occurred! Enable debug mode for more info: https://getkirby.com/docs/reference/system/options/debug",
@@ -175,7 +231,7 @@
"error.user.changeRole.permission": "Δεν επιτρέπεται να αλλάξετε το ρόλο του χρήστη \"{name}\"",
"error.user.changeRole.toAdmin": "You are not allowed to promote someone to the admin role",
"error.user.create.permission": "Δεν επιτρέπεται η δημιουργία αυτού του χρήστη",
- "error.user.delete": "Ο χρήστης δεν μπορούσε να διαγραφεί",
+ "error.user.delete": "\u039f \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7\u03c2 \u03b4\u03b5\u03bd \u03bc\u03c0\u03bf\u03c1\u03bf\u03cd\u03c3\u03b5 \u03bd\u03b1 \u03b4\u03b9\u03b1\u03b3\u03c1\u03b1\u03c6\u03b5\u03af",
"error.user.delete.lastAdmin": "Δεν είναι δυνατή η διαγραφή του τελευταίου διαχειριστή",
"error.user.delete.lastUser": "Δεν είναι δυνατή η διαγραφή του τελευταίου χρήστη",
"error.user.delete.permission": "Δεν επιτρέπεται να διαγράψετ τον χρήστη \"{name}\"",
@@ -185,7 +241,7 @@
"error.user.notFound": "Δεν είναι δυνατή η εύρεση του χρήστη \"{name}\"",
"error.user.password.excessive": "Please enter a valid password. Passwords must not be longer than 1000 characters.",
"error.user.password.invalid": "Παρακαλώ εισάγετε έναν έγκυρο κωδικό πρόσβασης. Οι κωδικοί πρόσβασης πρέπει να έχουν μήκος τουλάχιστον 8 χαρακτήρων.",
- "error.user.password.notSame": "Παρακαλούμε επιβεβαιώστε τον Κωδικό Πρόσβασης",
+ "error.user.password.notSame": "\u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03bf\u03cd\u03bc\u03b5 \u03b5\u03c0\u03b9\u03b2\u03b5\u03b2\u03b1\u03b9\u03ce\u03c3\u03c4\u03b5 \u03c4\u03bf\u03bd \u039a\u03c9\u03b4\u03b9\u03ba\u03cc \u03a0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2",
"error.user.password.undefined": "Ο χρήστης δεν έχει κωδικό πρόσβασης",
"error.user.password.wrong": "Wrong password",
"error.user.role.invalid": "Παρακαλώ εισαγάγετε έναν έγκυρο ρόλο",
@@ -195,8 +251,10 @@
"error.validation.accepted": "Παρακαλώ επιβεβαιώστε",
"error.validation.alpha": "Παρακαλώ εισάγετε μόνο χαρακτήρες μεταξύ των a-z",
"error.validation.alphanum": "Παρακαλώ εισάγετε μόνο χαρακτήρες μεταξύ των a-z ή αριθμούς απο το 0 έως το 9",
+ "error.validation.anchor": "Please enter a correct link anchor",
"error.validation.between": "Παρακαλώ εισάγετε μια τιμή μεταξύ \"{min}\" και \"{max}\"",
"error.validation.boolean": "Παρακαλώ επιβεβαιώστε ή αρνηθείτε",
+ "error.validation.color": "Please enter a valid color in the {format} format",
"error.validation.contains": "Παρακαλώ καταχωρίστε μια τιμή που περιέχει \"{needle}\"",
"error.validation.date": "Παρακαλώ εισάγετε μία έγκυρη ημερομηνία",
"error.validation.date.after": "Please enter a date after {date}",
@@ -211,6 +269,7 @@
"error.validation.integer": "Παρακαλώ εισάγετε έναν έγκυρο ακέραιο αριθμό",
"error.validation.ip": "Παρακαλώ εισάγετε μια έγκυρη διεύθυνση IP",
"error.validation.less": "Παρακαλώ εισάγετε μια τιμή μικρότερη από {max}",
+ "error.validation.linkType": "The link type is not allowed",
"error.validation.match": "Η τιμή δεν ταιριάζει με το αναμενόμενο πρότυπο",
"error.validation.max": "Παρακαλώ εισάγετε μια τιμή ίση ή μικρότερη από {max}",
"error.validation.maxlength": "Παρακαλώ εισάγετε μια μικρότερη τιμή. (max. {max} χαρακτήρες)",
@@ -227,15 +286,18 @@
"error.validation.same": "Παρακαλώ εισάγετε \"{other}\"",
"error.validation.size": "Το μέγεθος της τιμής πρέπει να είναι \"{size}\"",
"error.validation.startswith": "Η τιμή πρέπει να αρχίζει με \"{start}\"",
+ "error.validation.tel": "Please enter an unformatted phone number",
"error.validation.time": "Παρακαλώ εισάγετε μια έγκυρη ώρα",
"error.validation.time.after": "Please enter a time after {time}",
"error.validation.time.before": "Please enter a time before {time}",
"error.validation.time.between": "Please enter a time between {min} and {max}",
+ "error.validation.uuid": "Please enter a valid UUID",
"error.validation.url": "Παρακαλώ εισάγετε μια έγκυρη διεύθυνση URL",
"expand": "Expand",
"expand.all": "Expand All",
+ "field.invalid": "The field is invalid",
"field.required": "The field is required",
"field.blocks.changeType": "Change type",
"field.blocks.code.name": "Κώδικας",
@@ -245,8 +307,9 @@
"field.blocks.delete.confirm.all": "Do you really want to delete all blocks?",
"field.blocks.delete.confirm.selected": "Do you really want to delete the selected blocks?",
"field.blocks.empty": "No blocks yet",
+ "field.blocks.fieldsets.empty": "No fieldsets yet",
"field.blocks.fieldsets.label": "Please select a block type …",
- "field.blocks.fieldsets.paste": "Press {{ shortcut }} to paste/import blocks from your clipboard",
+ "field.blocks.fieldsets.paste": "Press {{ shortcut }} to import layouts/blocks from your clipboard Only those allowed in the current field will get inserted.",
"field.blocks.gallery.name": "Gallery",
"field.blocks.gallery.images.empty": "No images yet",
"field.blocks.gallery.images.label": "Images",
@@ -254,11 +317,16 @@
"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",
"field.blocks.image.link": "Σύνδεσμος",
"field.blocks.image.location": "Location",
+ "field.blocks.image.location.internal": "This website",
+ "field.blocks.image.location.external": "External source",
"field.blocks.image.name": "Εικόνα",
"field.blocks.image.placeholder": "Select an image",
"field.blocks.image.ratio": "Ratio",
@@ -275,63 +343,97 @@
"field.blocks.quote.citation.placeholder": "by …",
"field.blocks.text.name": "Text",
"field.blocks.text.placeholder": "Text …",
+ "field.blocks.video.autoplay": "Autoplay",
"field.blocks.video.caption": "Caption",
+ "field.blocks.video.controls": "Controls",
+ "field.blocks.video.location": "Location",
+ "field.blocks.video.loop": "Loop",
+ "field.blocks.video.muted": "Muted",
"field.blocks.video.name": "Video",
"field.blocks.video.placeholder": "Enter a video URL",
+ "field.blocks.video.poster": "Poster",
+ "field.blocks.video.preload": "Preload",
"field.blocks.video.url.label": "Video-URL",
"field.blocks.video.url.placeholder": "https://youtube.com/?v=",
- "field.files.empty": "Δεν έχουν επιλεγεί αρχεία ακόμα",
+ "field.entries.delete.confirm.all": "Do you really want to delete all entries?",
+ "field.entries.empty": "Δεν υπάρχουν ακόμη καταχωρίσεις.",
+ "field.files.empty": "Δεν έχουν επιλεγεί αρχεία ακόμα",
+ "field.files.empty.single": "No file selected yet",
+
+ "field.layout.change": "Change layout",
"field.layout.delete": "Delete layout",
"field.layout.delete.confirm": "Do you really want to delete this layout?",
+ "field.layout.delete.confirm.all": "Do you really want to delete all layouts?",
"field.layout.empty": "No rows yet",
"field.layout.select": "Select a layout",
"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": "\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": "Δεν υπάρχουν ακόμη καταχωρίσεις.",
+ "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",
+
+ "file": "Αρχείο",
"file.blueprint": "This file has no blueprint yet. You can define the setup in /site/blueprints/files/{blueprint}.yml",
- "file.delete.confirm": "Θέλετε σίγουρα να διαγράψετε αυτό το αρχείο;",
+ "file.changeTemplate": "Αλλαγή προτύπου",
+ "file.changeTemplate.notice": "Changing the file's template will remove content for fields that don't match in type. If the new template defines certain rules, e.g. image dimensions, those will also be applied irreversibly. Use with caution.",
+ "file.delete.confirm": "\u0398\u03ad\u03bb\u03b5\u03c4\u03b5 \u03c3\u03af\u03b3\u03bf\u03c5\u03c1\u03b1 \u03bd\u03b1 \u03b4\u03b9\u03b1\u03b3\u03c1\u03ac\u03c8\u03b5\u03c4\u03b5 \u03b1\u03c5\u03c4\u03cc \u03c4\u03bf \u03b1\u03c1\u03c7\u03b5\u03af\u03bf;",
+ "file.focus.placeholder": "Set focal point",
+ "file.focus.reset": "Remove focal point",
+ "file.focus.title": "Focus",
"file.sort": "Change position",
- "files": "Files",
+ "files": "Αρχεία",
+ "files.delete.confirm.selected": "Do you really want to delete the selected files? This action cannot be undone.",
"files.empty": "Δεν υπάρχουν ακόμα αρχεία",
+ "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",
"import": "Import",
"info": "Info",
- "insert": "Insert",
+ "insert": "\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae",
"insert.after": "Insert after",
"insert.before": "Insert before",
"install": "Εγκατάσταση",
- "installation": "Installation",
+ "installation": "Εγκατάσταση",
"installation.completed": "Ο πίνακας ελέγχου έχει εγκατασταθεί",
"installation.disabled": "Η εγκατάσταση του πίνακα ελέγχου είναι απενεργοποιημένη για δημόσιους διακομιστές από προεπιλογή. Εκτελέστε την εγκατάσταση σε ένα τοπικό μηχάνημα ή ενεργοποιήστε την με την επιλογή panel.install.",
- "installation.issues.accounts": "Ο φάκελος /site/accounts δεν είναι εγγράψιμος",
- "installation.issues.content": "Ο φάκελος content και όλοι οι υποφάκελοι πρέπει να είναι εγγράψιμοι.",
+ "installation.issues.accounts": "\u039f \u03c6\u03ac\u03ba\u03b5\u03bb\u03bf\u03c2 \/site\/accounts \u03b4\u03b5\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03b5\u03b3\u03b3\u03c1\u03ac\u03c8\u03b9\u03bc\u03bf\u03c2",
+ "installation.issues.content": "\u039f \u03c6\u03ac\u03ba\u03b5\u03bb\u03bf\u03c2 content \u03ba\u03b1\u03b9 \u03cc\u03bb\u03bf\u03b9 \u03bf\u03b9 \u03c5\u03c0\u03bf\u03c6\u03ac\u03ba\u03b5\u03bb\u03bf\u03b9 \u03c0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03b5\u03af\u03bd\u03b1\u03b9 \u03b5\u03b3\u03b3\u03c1\u03ac\u03c8\u03b9\u03bc\u03bf\u03b9.",
"installation.issues.curl": "Απαιτείται η επέκταση CURL
",
"installation.issues.headline": "Ο πίνακας ελέγχου δεν μπορεί να εγκατασταθεί",
"installation.issues.mbstring": "Απαιτείται η επέκταση MB String
",
"installation.issues.media": "Ο φάκελος /media
δεν υπάρχει ή δεν είναι εγγράψιμος",
"installation.issues.php": "Βεβαιωθείτε ότι χρησιμοποιήτε PHP 8+
",
- "installation.issues.server": "To Kirby απαιτεί Apache
, Nginx
ή Caddy
",
"installation.issues.sessions": "Ο φάκελος /site/sessions
δεν υπάρχει ή δεν είναι εγγράψιμος",
- "language": "Γλώσσα",
+ "language": "\u0393\u03bb\u03ce\u03c3\u03c3\u03b1",
"language.code": "Κώδικας",
"language.convert": "Χρήση ως προεπιλογή",
"language.convert.confirm": "{secret}
manually to your authenticator app.",
+ "login.totp.enable.confirm.headline": "2. Confirm with generated code",
+ "login.totp.enable.confirm.text": "Your app generates a new one‑time code every 30 seconds. Enter the current code to complete the setup:",
+ "login.totp.enable.confirm.label": "Current code",
+ "login.totp.enable.confirm.help": "After this setup, we will ask you for a one‑time code every time you log in.",
+ "login.totp.enable.success": "One‑time codes enabled",
+ "login.totp.disable.option": "Disable one‑time codes",
+ "login.totp.disable.label": "Enter your password to disable one‑time codes",
+ "login.totp.disable.help": "In the future, a different second factor like a login code sent via email will be requested when you log in. You can always set up one‑time codes again later.",
+ "login.totp.disable.admin": "
Όλες οι υποσελίδες θα διαγραφούν επίσης.",
"page.delete.confirm.title": "Εισάγετε τον τίτλο της σελίδας για επιβεβαίωση",
- "page.draft.create": "Δημιουργία προσχεδίου",
"page.duplicate.appendix": "Αντιγραφή",
"page.duplicate.files": "Copy files",
"page.duplicate.pages": "Copy pages",
+ "page.move": "Move page",
"page.sort": "Change position",
"page.status": "Kατάσταση",
"page.status.draft": "Προσχέδιο",
@@ -449,30 +603,38 @@
"page.status.unlisted": "Μη καταχωρημένο",
"page.status.unlisted.description": "Η σελίδα είναι προσβάσιμη μόνο μέσω της διεύθυνσης URL",
- "pages": "Pages",
+ "pages": "Σελίδες",
+ "pages.delete.confirm.selected": "Do you really want to delete the selected pages? This action cannot be undone.",
"pages.empty": "Δεν υπάρχουν ακόμα σελίδες",
"pages.status.draft": "Προσχέδια",
"pages.status.listed": "Δημοσιευμένο",
"pages.status.unlisted": "Μη καταχωρημένο",
- "pagination.page": "Page",
+ "pagination.page": "Σελίδα",
- "password": "Password",
+ "password": "\u039a\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03a0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2",
"paste": "Paste",
"paste.after": "Paste after",
+ "paste.success": "{count} pasted!",
"pixel": "Εικονοστοιχέιο",
"plugin": "Plugin",
"plugins": "Plugins",
"prev": "Προηγούμενο",
"preview": "Preview",
+
+ "publish": "Publish",
+ "published": "Δημοσιευμένο",
+
"remove": "Αφαίρεση",
"rename": "Μετονομασία",
- "replace": "Replace",
- "retry": "Επανάληψη",
- "revert": "Αγνόηση",
+ "renew": "Renew",
+ "replace": "\u0391\u03bd\u03c4\u03b9\u03ba\u03b1\u03c4\u03ac\u03c3\u03c4\u03b1\u03c3\u03b7",
+ "replace.with": "Replace with",
+ "retry": "\u0395\u03c0\u03b1\u03bd\u03ac\u03bb\u03b7\u03c8\u03b7",
+ "revert": "\u0391\u03b3\u03bd\u03cc\u03b7\u03c3\u03b7",
"revert.confirm": "Do you really want to delete all unsaved changes?",
- "role": "Role",
+ "role": "\u03a1\u03cc\u03bb\u03bf\u03c2",
"role.admin.description": "The admin has all rights",
"role.admin.title": "Admin",
"role.all": "Όλα",
@@ -481,12 +643,15 @@
"role.nobody.description": "This is a fallback role without any permissions",
"role.nobody.title": "Nobody",
- "save": "Save",
+ "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",
+ "search.all": "Show all {count} results",
"search.results.none": "No results",
+ "section.invalid": "The section is invalid",
"section.required": "The section is required",
"security": "Security",
@@ -496,18 +661,27 @@
"show": "Show",
"site.blueprint": "The site has no blueprint yet. You can define the setup in /site/blueprints/site.yml",
"size": "Μέγεθος",
- "slug": "Επίθεμα URL",
+ "slug": "\u0395\u03c0\u03af\u03b8\u03b5\u03bc\u03b1 URL",
"sort": "Ταξινόμηση",
+ "sort.drag": "Drag to sort …",
+ "split": "Split",
"stats.empty": "No reports",
+ "status": "Kατάσταση",
+
+ "system.info.copy": "Copy info",
+ "system.info.copied": "System info copied",
"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",
+ "system.issues.eol.php": "Your installed PHP release { release } has reached end-of-life and will not receive further security updates",
"system.issues.debug": "Debugging must be turned off in production",
"system.issues.git": "The .git folder seems to be exposed",
"system.issues.https": "We recommend HTTPS for all your sites",
"system.issues.kirby": "The kirby folder seems to be exposed",
+ "system.issues.local": "The site is running locally with relaxed security checks",
"system.issues.site": "The site folder seems to be exposed",
+ "system.issues.vue.compiler": "The Vue template compiler is enabled",
"system.issues.vulnerability.kirby": "Your installation might be affected by the following vulnerability ({ severity } severity): { description }",
"system.issues.vulnerability.plugin": "Your installation might be affected by the following vulnerability in the { plugin } plugin ({ severity } severity): { description }",
"system.updateStatus": "Update status",
@@ -520,13 +694,22 @@
"system.updateStatus.update": "Free update { version } available",
"system.updateStatus.upgrade": "Upgrade { version } available",
- "title": "Title",
- "template": "Template",
+ "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": "Σήμερα",
+ "toolbar.button.clear": "Clear formatting",
"toolbar.button.code": "Κώδικας",
- "toolbar.button.bold": "Έντονη γραφή",
- "toolbar.button.email": "Διεύθυνση ηλεκτρονικού ταχυδρομείου",
+ "toolbar.button.bold": "\u0388\u03bd\u03c4\u03bf\u03bd\u03b7 \u03b3\u03c1\u03b1\u03c6\u03ae",
+ "toolbar.button.email": "Email",
"toolbar.button.headings": "Επικεφαλίδες",
"toolbar.button.heading.1": "Επικεφαλίδα 1",
"toolbar.button.heading.2": "Επικεφαλίδα 2",
@@ -534,22 +717,26 @@
"toolbar.button.heading.4": "Heading 4",
"toolbar.button.heading.5": "Heading 5",
"toolbar.button.heading.6": "Heading 6",
- "toolbar.button.italic": "Πλάγια γραφή",
+ "toolbar.button.italic": "\u03a0\u03bb\u03ac\u03b3\u03b9\u03b1 \u03b3\u03c1\u03b1\u03c6\u03ae",
"toolbar.button.file": "Αρχείο",
"toolbar.button.file.select": "Select a file",
"toolbar.button.file.upload": "Upload a file",
- "toolbar.button.link": "Σύνδεσμος",
+ "toolbar.button.link": "\u03a3\u03cd\u03bd\u03b4\u03b5\u03c3\u03bc\u03bf\u03c2",
"toolbar.button.paragraph": "Paragraph",
"toolbar.button.strike": "Strike-through",
+ "toolbar.button.sub": "Subscript",
+ "toolbar.button.sup": "Superscript",
"toolbar.button.ol": "Ταξινομημένη λίστα",
"toolbar.button.underline": "Underline",
"toolbar.button.ul": "Λίστα κουκκίδων",
"translation.author": "Ομάδα Kirby",
"translation.direction": "ltr",
- "translation.name": "Ελληνικά",
+ "translation.name": "\u0395\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03ac",
"translation.locale": "el_GR",
+ "type": "Type",
+
"upload": "Μεταφόρτωση",
"upload.error.cantMove": "The uploaded file could not be moved",
"upload.error.cantWrite": "Failed to write file to disk",
@@ -562,7 +749,7 @@
"upload.error.noFiles": "No files were uploaded",
"upload.error.partial": "The uploaded file was only partially uploaded",
"upload.error.tmpDir": "Missing a temporary folder",
- "upload.errors": "Error",
+ "upload.errors": "Σφάλμα",
"upload.progress": "Μεταφόρτωση...",
"url": "Διεύθινση url",
@@ -574,28 +761,32 @@
"user.changeLanguage": "Αλλαγή γλώσσας",
"user.changeName": "Μετονομασία χρήστη",
"user.changePassword": "Αλλαγή κωδικού πρόσβασης",
- "user.changePassword.new": "New password",
+ "user.changePassword.current": "Your current password",
+ "user.changePassword.new": "Νέος Κωδικός Πρόσβασης",
"user.changePassword.new.confirm": "Επαληθεύση κωδικού πρόσβασης",
"user.changeRole": "Αλλαγή ρόλου",
"user.changeRole.select": "Επιλογή νέου ρόλου",
- "user.create": "Add a new user",
+ "user.create": "Προσθήκη νέου χρήστη",
"user.delete": "Διαγραφή χρήστη",
- "user.delete.confirm": "Θέλετε σίγουρα να διαγράψετε αυτόν τον χρήστη;",
+ "user.delete.confirm": "\u0398\u03ad\u03bb\u03b5\u03c4\u03b5 \u03c3\u03af\u03b3\u03bf\u03c5\u03c1\u03b1 \u03bd\u03b1 \u03b4\u03b9\u03b1\u03b3\u03c1\u03ac\u03c8\u03b5\u03c4\u03b5 \u03b1\u03c5\u03c4\u03cc\u03bd \u03c4\u03bf\u03bd \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7;",
- "users": "Users",
+ "users": "Χρήστες",
- "version": "Έκδοση Kirby",
+ "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.account": "Your account",
- "view.installation": "Installation",
+ "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": "Γλώσσες",
"view.resetPassword": "Reset password",
"view.site": "Iστοσελίδα",
"view.system": "System",
- "view.users": "Users",
+ "view.users": "\u03a7\u03c1\u03ae\u03c3\u03c4\u03b5\u03c2",
"welcome": "Καλώς ήρθατε",
"year": "Έτος",
diff --git a/kirby/i18n/translations/en.json b/kirby/i18n/translations/en.json
index 4ada2bc..f556c6f 100644
--- a/kirby/i18n/translations/en.json
+++ b/kirby/i18n/translations/en.json
@@ -3,19 +3,26 @@
"account.delete": "Delete your account",
"account.delete.confirm": "Do you really want to delete your account? You will be logged out immediately. Your account cannot be recovered.",
+ "activate": "Activate",
"add": "Add",
+ "alpha": "Alpha",
"author": "Author",
"avatar": "Profile picture",
"back": "Back",
"cancel": "Cancel",
"change": "Change",
"close": "Close",
+ "changes": "Changes",
"confirm": "Ok",
"collapse": "Collapse",
"collapse.all": "Collapse All",
+ "color": "Color",
+ "coordinates": "Coordinates",
"copy": "Copy",
"copy.all": "Copy all",
+ "copy.success": "{count} copied!",
"create": "Create",
+ "custom": "Custom",
"date": "Date",
"date.select": "Select a date",
@@ -34,13 +41,20 @@
"delete": "Delete",
"delete.all": "Delete all",
+ "dialog.fields.empty": "This dialog has no fields",
"dialog.files.empty": "No files to select",
"dialog.pages.empty": "No pages to select",
+ "dialog.text.empty": "This dialog does not define any text",
"dialog.users.empty": "No users to select",
"dimensions": "Dimensions",
+ "disable": "Disable",
"disabled": "Disabled",
"discard": "Discard",
+
+ "drawer.fields.empty": "This drawer has no fields",
+
+ "domain": "Domain",
"download": "Download",
"duplicate": "Duplicate",
@@ -49,11 +63,13 @@
"email": "Email",
"email.placeholder": "mail@example.com",
+ "enter": "Enter",
"entries": "Entries",
"entry": "Entry",
"environment": "Environment",
+ "error": "Error",
"error.access.code": "Invalid code",
"error.access.login": "Invalid login",
"error.access.panel": "You are not allowed to access the panel",
@@ -77,10 +93,14 @@
"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",
"error.file.changeName.permission": "You are not allowed to change the name of \"{filename}\"",
+ "error.file.changeTemplate.invalid": "The template for the file \"{id}\" cannot be changed to \"{template}\" (valid: \"{blueprints}\")",
+ "error.file.changeTemplate.permission": "You are not allowed to change the template for the file \"{id}\"",
+
"error.file.duplicate": "A file with the name \"{filename}\" already exists",
"error.file.extension.forbidden": "The extension \"{extension}\" is not allowed",
"error.file.extension.invalid": "Invalid extension: {extension}",
@@ -95,6 +115,7 @@
"error.file.minheight": "The height of the image must be at least {height} pixels",
"error.file.minsize": "The file is too small",
"error.file.minwidth": "The width of the image must be at least {width} pixels",
+ "error.file.name.unique": "The filename must be unique",
"error.file.name.missing": "The filename must not be empty",
"error.file.notFound": "The file \"{filename}\" cannot be found",
"error.file.orientation": "The orientation of the image must be \"{orientation}\"",
@@ -116,15 +137,20 @@
"error.layout.validation.block": "There's an error on the \"{field}\" field in block {blockIndex} using the \"{fieldset}\" block type in layout {layoutIndex}",
"error.layout.validation.settings": "There's an error in layout {index} settings",
- "error.license.format": "Please enter a valid license key",
+ "error.license.domain": "The domain for the license is missing",
"error.license.email": "Please enter a valid email address",
+ "error.license.format": "Please enter a valid license code",
"error.license.verification": "The license could not be verified",
+ "error.login.totp.confirm.invalid": "Invalid code",
+ "error.login.totp.confirm.missing": "Please enter the current code",
+
"error.object.validation": "There’s an error in the \"{label}\" field:\n{message}",
"error.offline": "The Panel is currently offline",
"error.page.changeSlug.permission": "You are not allowed to change the URL appendix for \"{slug}\"",
+ "error.page.changeSlug.reserved": "The path of top-level pages must not start with \"{path}\"",
"error.page.changeStatus.incomplete": "The page has errors and cannot be published",
"error.page.changeStatus.permission": "The status for this page cannot be changed",
"error.page.changeStatus.toDraft.invalid": "The page \"{slug}\" cannot be converted to a draft",
@@ -140,6 +166,13 @@
"error.page.draft.duplicate": "A page draft with the URL appendix \"{slug}\" already exists",
"error.page.duplicate": "A page with the URL appendix \"{slug}\" already exists",
"error.page.duplicate.permission": "You are not allowed to duplicate \"{slug}\"",
+ "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}\"",
"error.page.notFound": "The page \"{slug}\" cannot be found",
"error.page.num.invalid": "Please enter a valid sorting number. Numbers must not be negative.",
"error.page.slug.invalid": "Please enter a valid URL appendix",
@@ -166,6 +199,8 @@
"error.site.changeTitle.permission": "You are not allowed to change the title of the site",
"error.site.update.permission": "You are not allowed to update the site",
+ "error.structure.validation": "There's an error on the \"{field}\" field in row {index}",
+
"error.template.default.notFound": "The default template does not exist",
"error.unexpected": "An unexpected error occurred! Enable debug mode for more info: https://getkirby.com/docs/reference/system/options/debug",
@@ -198,8 +233,10 @@
"error.validation.accepted": "Please confirm",
"error.validation.alpha": "Please only enter characters between a-z",
"error.validation.alphanum": "Please only enter characters between a-z or numerals 0-9",
+ "error.validation.anchor": "Please enter a correct link anchor",
"error.validation.between": "Please enter a value between \"{min}\" and \"{max}\"",
"error.validation.boolean": "Please confirm or deny",
+ "error.validation.color": "Please enter a valid color in the {format} format",
"error.validation.contains": "Please enter a value that contains \"{needle}\"",
"error.validation.date": "Please enter a valid date",
"error.validation.date.after": "Please enter a date after {date}",
@@ -214,6 +251,7 @@
"error.validation.integer": "Please enter a valid integer",
"error.validation.ip": "Please enter a valid IP address",
"error.validation.less": "Please enter a value lower than {max}",
+ "error.validation.linkType": "The link type is not allowed",
"error.validation.match": "The value does not match the expected pattern",
"error.validation.max": "Please enter a value equal to or lower than {max}",
"error.validation.maxlength": "Please enter a shorter value. (max. {max} characters)",
@@ -230,15 +268,18 @@
"error.validation.same": "Please enter \"{other}\"",
"error.validation.size": "The size of the value must be \"{size}\"",
"error.validation.startswith": "The value must start with \"{start}\"",
+ "error.validation.tel": "Please enter an unformatted phone number",
"error.validation.time": "Please enter a valid time",
"error.validation.time.after": "Please enter a time after {time}",
"error.validation.time.before": "Please enter a time before {time}",
"error.validation.time.between": "Please enter a time between {min} and {max}",
+ "error.validation.uuid": "Please enter a valid UUID",
"error.validation.url": "Please enter a valid URL",
"expand": "Expand",
"expand.all": "Expand All",
+ "field.invalid": "The field is invalid",
"field.required": "The field is required",
"field.blocks.changeType": "Change type",
"field.blocks.code.name": "Code",
@@ -248,8 +289,9 @@
"field.blocks.delete.confirm.all": "Do you really want to delete all blocks?",
"field.blocks.delete.confirm.selected": "Do you really want to delete the selected blocks?",
"field.blocks.empty": "No blocks yet",
+ "field.blocks.fieldsets.empty": "No fieldsets yet",
"field.blocks.fieldsets.label": "Please select a block type …",
- "field.blocks.fieldsets.paste": "Press {{ shortcut }} to paste/import blocks from your clipboard",
+ "field.blocks.fieldsets.paste": "Press {{ shortcut }} to import layouts/blocks from your clipboard Only those allowed in the current field will get inserted.",
"field.blocks.gallery.name": "Gallery",
"field.blocks.gallery.images.empty": "No images yet",
"field.blocks.gallery.images.label": "Images",
@@ -257,11 +299,16 @@
"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",
"field.blocks.image.link": "Link",
"field.blocks.image.location": "Location",
+ "field.blocks.image.location.internal": "This website",
+ "field.blocks.image.location.external": "External source",
"field.blocks.image.name": "Image",
"field.blocks.image.placeholder": "Select an image",
"field.blocks.image.ratio": "Ratio",
@@ -278,38 +325,61 @@
"field.blocks.quote.citation.placeholder": "by …",
"field.blocks.text.name": "Text",
"field.blocks.text.placeholder": "Text …",
+ "field.blocks.video.autoplay": "Autoplay",
"field.blocks.video.caption": "Caption",
+ "field.blocks.video.controls": "Controls",
+ "field.blocks.video.location": "Location",
+ "field.blocks.video.loop": "Loop",
+ "field.blocks.video.muted": "Muted",
"field.blocks.video.name": "Video",
"field.blocks.video.placeholder": "Enter a video URL",
+ "field.blocks.video.poster": "Poster",
+ "field.blocks.video.preload": "Preload",
"field.blocks.video.url.label": "Video-URL",
"field.blocks.video.url.placeholder": "https://youtube.com/?v=",
"field.files.empty": "No files selected yet",
+ "field.files.empty.single": "No file selected yet",
+ "field.layout.change": "Change layout",
"field.layout.delete": "Delete layout",
"field.layout.delete.confirm": "Do you really want to delete this layout?",
+ "field.layout.delete.confirm.all": "Do you really want to delete all layouts?",
"field.layout.empty": "No rows yet",
"field.layout.select": "Select a layout",
"field.object.empty": "No information yet",
"field.pages.empty": "No pages selected yet",
+ "field.pages.empty.single": "No page selected yet",
"field.structure.delete.confirm": "Do you really want to delete this row?",
"field.structure.delete.confirm.all": "Do you really want to delete all entries?",
"field.structure.empty": "No entries yet",
"field.users.empty": "No users selected yet",
+ "field.users.empty.single": "No user selected yet",
+ "fields.empty": "No fields yet",
+
+ "file": "File",
"file.blueprint": "This file has no blueprint yet. You can define the setup in /site/blueprints/files/{blueprint}.yml",
+ "file.changeTemplate": "Change template",
+ "file.changeTemplate.notice": "Changing the file's template will remove content for fields that don't match in type. If the new template defines certain rules, e.g. image dimensions, those will also be applied irreversibly. Use with caution.",
"file.delete.confirm": "Do you really want to delete
{filename}?",
+ "file.focus.placeholder": "Set focal point",
+ "file.focus.reset": "Remove focal point",
+ "file.focus.title": "Focus",
"file.sort": "Change position",
"files": "Files",
"files.empty": "No files yet",
+ "filter": "Filter",
+
"hide": "Hide",
"hour": "Hour",
+ "hue": "Hue",
"import": "Import",
"info": "Info",
"insert": "Insert",
@@ -327,7 +397,6 @@
"installation.issues.mbstring": "The MB String
extension is required",
"installation.issues.media": "The /media
folder does not exist or is not writable",
"installation.issues.php": "Make sure to use PHP 8+
",
- "installation.issues.server": "Kirby requires Apache
, Nginx
or Caddy
",
"installation.issues.sessions": "The /site/sessions
folder does not exist or is not writable",
"language": "Language",
@@ -335,6 +404,7 @@
"language.convert": "Make default",
"language.convert.confirm": "{secret}
manually to your authenticator app.",
+ "login.totp.enable.confirm.headline": "2. Confirm with generated code",
+ "login.totp.enable.confirm.text": "Your app generates a new one‑time code every 30 seconds. Enter the current code to complete the setup:",
+ "login.totp.enable.confirm.label": "Current code",
+ "login.totp.enable.confirm.help": "After this setup, we will ask you for a one‑time code every time you log in.",
+ "login.totp.enable.success": "One‑time codes enabled",
+ "login.totp.disable.option": "Disable one‑time codes",
+ "login.totp.disable.label": "Enter your password to disable one‑time codes",
+ "login.totp.disable.help": "In the future, a different second factor like a login code sent via email will be requested when you log in. You can always set up one‑time codes again later.",
+ "login.totp.disable.admin": "
All subpages will be deleted as well.",
"page.delete.confirm.title": "Enter the page title to confirm",
- "page.draft.create": "Create draft",
"page.duplicate.appendix": "Copy",
"page.duplicate.files": "Copy files",
"page.duplicate.pages": "Copy pages",
+ "page.move": "Move page",
"page.sort": "Change position",
"page.status": "Status",
"page.status.draft": "Draft",
@@ -463,6 +580,7 @@
"password": "Password",
"paste": "Paste",
"paste.after": "Paste after",
+ "paste.success": "{count} pasted!",
"pixel": "Pixel",
"plugin": "Plugin",
"plugins": "Plugins",
@@ -470,7 +588,9 @@
"preview": "Preview",
"remove": "Remove",
"rename": "Rename",
+ "renew": "Renew",
"replace": "Replace",
+ "replace.with": "Replace with",
"retry": "Try again",
"revert": "Revert",
"revert.confirm": "Do you really want to delete all unsaved changes?",
@@ -486,10 +606,12 @@
"save": "Save",
"search": "Search",
+ "searching": "Searching",
"search.min": "Enter {min} characters to search",
- "search.all": "Show all",
+ "search.all": "Show all {count} results",
"search.results.none": "No results",
+ "section.invalid": "The section is invalid",
"section.required": "The section is required",
"security": "Security",
@@ -501,8 +623,15 @@
"size": "Size",
"slug": "URL appendix",
"sort": "Sort",
+ "sort.drag": "Drag to sort …",
+ "split": "Split",
"stats.empty": "No reports",
+ "status": "Status",
+
+ "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",
@@ -511,7 +640,9 @@
"system.issues.git": "The .git folder seems to be exposed",
"system.issues.https": "We recommend HTTPS for all your sites",
"system.issues.kirby": "The kirby folder seems to be exposed",
+ "system.issues.local": "The site is running locally with relaxed security checks",
"system.issues.site": "The site folder seems to be exposed",
+ "system.issues.vue.compiler": "The Vue template compiler is enabled",
"system.issues.vulnerability.kirby": "Your installation might be affected by the following vulnerability ({ severity } severity): { description }",
"system.issues.vulnerability.plugin": "Your installation might be affected by the following vulnerability in the { plugin } plugin ({ severity } severity): { description }",
"system.updateStatus": "Update status",
@@ -524,10 +655,13 @@
"system.updateStatus.update": "Free update { version } available",
"system.updateStatus.upgrade": "Upgrade { version } available",
- "title": "Title",
+ "tel": "Phone",
+ "tel.placeholder": "+49123456789",
"template": "Template",
+ "title": "Title",
"today": "Today",
+ "toolbar.button.clear": "Clear formatting",
"toolbar.button.code": "Code",
"toolbar.button.bold": "Bold",
"toolbar.button.email": "Email",
@@ -545,6 +679,8 @@
"toolbar.button.link": "Link",
"toolbar.button.paragraph": "Paragraph",
"toolbar.button.strike": "Strike-through",
+ "toolbar.button.sub": "Subscript",
+ "toolbar.button.sup": "Superscript",
"toolbar.button.ol": "Ordered list",
"toolbar.button.underline": "Underline",
"toolbar.button.ul": "Bullet list",
@@ -554,6 +690,8 @@
"translation.name": "English",
"translation.locale": "en_US",
+ "type": "Type",
+
"upload": "Upload",
"upload.error.cantMove": "The uploaded file could not be moved",
"upload.error.cantWrite": "Failed to write file to disk",
@@ -578,6 +716,7 @@
"user.changeLanguage": "Change language",
"user.changeName": "Rename this user",
"user.changePassword": "Change password",
+ "user.changePassword.current": "Your current password",
"user.changePassword.new": "New password",
"user.changePassword.new.confirm": "Confirm the new password…",
"user.changeRole": "Change role",
diff --git a/kirby/i18n/translations/eo.json b/kirby/i18n/translations/eo.json
index 0ee83fc..c4a8fd4 100644
--- a/kirby/i18n/translations/eo.json
+++ b/kirby/i18n/translations/eo.json
@@ -3,19 +3,28 @@
"account.delete": "Forigi vian konton",
"account.delete.confirm": "Ĉu vi certe deziras forigi vian konton? Vi estos tuj elsalutita. Ne eblos malforigi vian konton.",
+ "activate": "Activate",
"add": "Aldoni",
+ "alpha": "Alpha",
"author": "Aŭtoro",
"avatar": "Profilbildo",
"back": "Reen",
"cancel": "Nuligi",
"change": "Ŝanĝi",
"close": "Fermi",
+ "changes": "Changes",
"confirm": "Bone",
"collapse": "Fermi",
"collapse.all": "Fermi ĉiujn",
+ "color": "Color",
+ "coordinates": "Coordinates",
"copy": "Kopii",
"copy.all": "Kopii ĉiujn",
+ "copy.success": "{count} copied!",
+ "copy.success.multiple": "{count} copied!",
+ "copy.url": "Copy URL",
"create": "Krei",
+ "custom": "Custom",
"date": "Dato",
"date.select": "Elekti daton",
@@ -34,13 +43,20 @@
"delete": "Forigi",
"delete.all": "Forigi ĉiujn",
+ "dialog.fields.empty": "This dialog has no fields",
"dialog.files.empty": "Neniu dosiero por elekti",
"dialog.pages.empty": "Neniu paĝo por elekti",
+ "dialog.text.empty": "This dialog does not define any text",
"dialog.users.empty": "Neniu uzanto por elekti",
"dimensions": "Dimensioj",
+ "disable": "Disable",
"disabled": "Malebligita",
"discard": "Forĵeti",
+
+ "drawer.fields.empty": "This drawer has no fields",
+
+ "domain": "Domain",
"download": "Elŝuti",
"duplicate": "Duobligi",
@@ -49,11 +65,13 @@
"email": "Retpoŝto",
"email.placeholder": "retpoŝto@ekzemplo.com",
+ "enter": "Enter",
"entries": "Entries",
"entry": "Entry",
"environment": "Medio",
+ "error": "Eraro",
"error.access.code": "Nevalida kodo",
"error.access.login": "Nevalida ensaluto",
"error.access.panel": "Vi ne rajtas eniri la administran panelon",
@@ -74,13 +92,31 @@
"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.entries.max.plural": "You must not add more than {max} entries",
+ "error.entries.max.singular": "You must not add more than one entry",
+ "error.entries.min.plural": "You must add at least {min} entries",
+ "error.entries.min.singular": "You must add at least one entry",
+ "error.entries.supports": "\"{type}\" field type is not supported for the entries field",
+ "error.entries.validation": "There's an error on the \"{field}\" field in row {index}",
+
"error.email.preset.notFound": "La retpoŝta antaŭagordo \"{name}\" ne estas trovebla",
"error.field.converter.invalid": "Nevalida konvertilo \"{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": "La nomo ne rajtas esti malplena",
"error.file.changeName.permission": "Vi ne rajtas ŝanĝi la nomon de \"{filename}\"",
+ "error.file.changeTemplate.invalid": "The template for the file \"{id}\" cannot be changed to \"{template}\" (valid: \"{blueprints}\")",
+ "error.file.changeTemplate.permission": "You are not allowed to change the template for the file \"{id}\"",
+
+ "error.file.delete.multiple": "Not all files could be deleted. Try each remaining file individually to see the specific error that prevents deletion.",
"error.file.duplicate": "Jam ekzistas dosiero nomita \"{filename}\"",
"error.file.extension.forbidden": "La dosiersufikso \"{extension}\" ne estas permesita",
"error.file.extension.invalid": "Nevalida dosiersufikso: {extension}",
@@ -95,9 +131,11 @@
"error.file.minheight": "La bildo devas esti almenaŭ {height} bilderojn alta",
"error.file.minsize": "La dosiero estas tro malgranda",
"error.file.minwidth": "La bildo devas esti almenaŭ {width} bilderojn larĝa",
+ "error.file.name.unique": "The filename must be unique",
"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",
@@ -106,22 +144,30 @@
"error.form.notSaved": "Ne eblis konservi la formularon",
"error.language.code": "Bonvolu entajpi validan kodon por la lingvo",
+ "error.language.create.permission": "You are not allowed to create a language",
+ "error.language.delete.permission": "You are not allowed to delete the language",
"error.language.duplicate": "La lingvo jam ekzistas",
"error.language.name": "Bonvolu entajpi validan nomon por la lingvo",
"error.language.notFound": "La lingvo ne troveblas",
+ "error.language.update.permission": "You are not allowed to update the language",
"error.layout.validation.block": "There's an error on the \"{field}\" field in block {blockIndex} using the \"{fieldset}\" block type in layout {layoutIndex}",
"error.layout.validation.settings": "Estas eraro en la agordoj de blokaranĝo {index}",
- "error.license.format": "Bonvolu entajpi validan kodon de permisilo",
+ "error.license.domain": "The domain for the license is missing",
"error.license.email": "Bonvolu entajpi validan retpoŝtadreson",
+ "error.license.format": "Please enter a valid license code",
"error.license.verification": "Ne eblis kontroli la permisilon",
+ "error.login.totp.confirm.invalid": "Nevalida kodo",
+ "error.login.totp.confirm.missing": "Please enter the current code",
+
"error.object.validation": "There’s an error in the \"{label}\" field:\n{message}",
"error.offline": "La panelo estas ĉi-momente nekonektita",
"error.page.changeSlug.permission": "Vi ne rajtas ŝanĝi la URL-nomon de \"{slug}\"",
+ "error.page.changeSlug.reserved": "The path of top-level pages must not start with \"{path}\"",
"error.page.changeStatus.incomplete": "La paĝo havas erarojn, kaj tiel ne povas esti publikigita",
"error.page.changeStatus.permission": "La paĝstato ne estas ŝanĝebla",
"error.page.changeStatus.toDraft.invalid": "Ne eblas konverti la paĝon \"{slug}\" al malneto",
@@ -133,10 +179,18 @@
"error.page.delete": "Ne eblas forigi la paĝon \"{slug}\"",
"error.page.delete.confirm": "Bonvolu entajpi la titolon de la paĝo for konfirmi",
"error.page.delete.hasChildren": "Ne eblas forigi la paĝon ĉar ĝi havas subpaĝojn",
+ "error.page.delete.multiple": "Not all pages could be deleted. Try each remaining page individually to see the specific error that prevents deletion.",
"error.page.delete.permission": "Vi ne rajtas forigi \"{slug}\"",
"error.page.draft.duplicate": "Malneto uzanta la URL-nomon \"{slug}\" jam ekzistas",
"error.page.duplicate": "Paĝo uzanta la URL-nomon \"{slug}\" jam ekzistas",
"error.page.duplicate.permission": "Vi ne rajtas duobligi \"{slug}\"",
+ "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}\"",
"error.page.notFound": "La paĝo \"{slug}\" ne troveblas",
"error.page.num.invalid": "Bonvolu entajpi validan ord-numeron. Numeroj devas esti pozitivaj.",
"error.page.slug.invalid": "Bonvolu entajpi validan URL-nomon",
@@ -163,6 +217,8 @@
"error.site.changeTitle.permission": "Vi ne rajtas ŝanĝi la titolon de la retejo",
"error.site.update.permission": "Vi ne rajtas ĝisdatigi la retejon",
+ "error.structure.validation": "There's an error on the \"{field}\" field in row {index}",
+
"error.template.default.notFound": "La defaŭlta ŝablono ne ekzistas",
"error.unexpected": "An unexpected error occurred! Enable debug mode for more info: https://getkirby.com/docs/reference/system/options/debug",
@@ -195,8 +251,10 @@
"error.validation.accepted": "Bonvolu konfirmi",
"error.validation.alpha": "Bonvolu entajpi nur literojn inter a-z",
"error.validation.alphanum": "Bonvolu entajpi nur aŭ literojn inter a-z aũ numerojn inter 0-9",
+ "error.validation.anchor": "Please enter a correct link anchor",
"error.validation.between": "Bonvolu entajpi valoron inter \"{min}\" kaj \"{max}\"",
"error.validation.boolean": "Bonvolu konfirmi aŭ malkonfirmi",
+ "error.validation.color": "Please enter a valid color in the {format} format",
"error.validation.contains": "Bonvolu entajpi valoron kiu enhavas \"{needle}\"",
"error.validation.date": "Bonvolu entajpi validan daton",
"error.validation.date.after": "Bonvolu entajpi daton post {date}",
@@ -211,6 +269,7 @@
"error.validation.integer": "Bonvolu entajpi validan entjeron",
"error.validation.ip": "Bonvolu entajpi validan IP-adreson",
"error.validation.less": "Bonvolu entajpi valoron malpli ol {max}",
+ "error.validation.linkType": "The link type is not allowed",
"error.validation.match": "La valoro ne kongruas al la atendata ŝablono",
"error.validation.max": "Bonvolu entajpi valoron egalan al aũ malpli ol {max}",
"error.validation.maxlength": "Bonvolu entajpi pli mallongan valoron (maksimume {max} literojn)",
@@ -227,15 +286,18 @@
"error.validation.same": "Bonvolu entajpi \"{other}\"",
"error.validation.size": "La grando de la valoro devas esti \"{size}\"",
"error.validation.startswith": "La valoro devas komenciĝi per \"{start}\"",
+ "error.validation.tel": "Please enter an unformatted phone number",
"error.validation.time": "Bonvolu entajpi validan horaron",
"error.validation.time.after": "Bonvolu entajpi horaron post {time}",
"error.validation.time.before": "Bonvolu entajpi horaron antaŭ {time}",
"error.validation.time.between": "Bonvolu entajpi horaron inter {min} kaj {max}",
+ "error.validation.uuid": "Please enter a valid UUID",
"error.validation.url": "Bonvolu entajpi validan URL",
"expand": "Etendi",
"expand.all": "Etendi ĉiujn",
+ "field.invalid": "The field is invalid",
"field.required": "La kampo ne rajtas esti malplena",
"field.blocks.changeType": "Ŝanĝi tipon",
"field.blocks.code.name": "Kodo",
@@ -245,8 +307,9 @@
"field.blocks.delete.confirm.all": "Ĉu vi certe volas forigi ĉiujn blokojn?",
"field.blocks.delete.confirm.selected": "Ĉu vi certe volas forigi la elektitajn blokojn?",
"field.blocks.empty": "Ankoraŭ neniu bloko",
+ "field.blocks.fieldsets.empty": "No fieldsets yet",
"field.blocks.fieldsets.label": "Bonvolu elekti tipon de bloko ...",
- "field.blocks.fieldsets.paste": "Premu {{ shortcut }}por alglui/importi blokojn el via tondujo",
+ "field.blocks.fieldsets.paste": "Press {{ shortcut }} to import layouts/blocks from your clipboard Only those allowed in the current field will get inserted.",
"field.blocks.gallery.name": "Galerio",
"field.blocks.gallery.images.empty": "Ankoraŭ neniu bildo",
"field.blocks.gallery.images.label": "Bildoj",
@@ -254,11 +317,16 @@
"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",
"field.blocks.image.link": "Ligilo",
"field.blocks.image.location": "Loko",
+ "field.blocks.image.location.internal": "This website",
+ "field.blocks.image.location.external": "External source",
"field.blocks.image.name": "Bildo",
"field.blocks.image.placeholder": "Elekti bildon",
"field.blocks.image.ratio": "Proporcio",
@@ -275,38 +343,72 @@
"field.blocks.quote.citation.placeholder": "de ...",
"field.blocks.text.name": "Teksto",
"field.blocks.text.placeholder": "Teksto ...",
+ "field.blocks.video.autoplay": "Autoplay",
"field.blocks.video.caption": "Apudskribo",
+ "field.blocks.video.controls": "Controls",
+ "field.blocks.video.location": "Loko",
+ "field.blocks.video.loop": "Loop",
+ "field.blocks.video.muted": "Muted",
"field.blocks.video.name": "Videâjo",
"field.blocks.video.placeholder": "Entajpi URL de videaĵo",
+ "field.blocks.video.poster": "Poster",
+ "field.blocks.video.preload": "Preload",
"field.blocks.video.url.label": "Video-URL",
"field.blocks.video.url.placeholder": "https://youtube.com/?v=",
- "field.files.empty": "Ankoraŭ neniu dosiero elektita",
+ "field.entries.delete.confirm.all": "Do you really want to delete all entries?",
+ "field.entries.empty": "Ankoraŭ neniu enigo",
+ "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",
"field.layout.delete.confirm": "Ĉu vi certe volas forigi ĉi tiun blokaranĝon?",
+ "field.layout.delete.confirm.all": "Do you really want to delete all layouts?",
"field.layout.empty": "Ankoraŭ neniu vico",
"field.layout.select": "Elekti blokaranĝon",
"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",
+
+ "file": "Dosiero",
"file.blueprint": "Ĉi tiu dosiero ankoraŭ havas neniun planon. Vi povas difini planon ĉe /site/blueprints/files/{blueprint}.yml",
+ "file.changeTemplate": "Ŝanĝi ŝablonon",
+ "file.changeTemplate.notice": "Changing the file's template will remove content for fields that don't match in type. If the new template defines certain rules, e.g. image dimensions, those will also be applied irreversibly. Use with caution.",
"file.delete.confirm": "Ĉu vi certe vollas forigi
{filename}?",
+ "file.focus.placeholder": "Set focal point",
+ "file.focus.reset": "Remove focal point",
+ "file.focus.title": "Focus",
"file.sort": "Ŝanĝi ordon",
"files": "Dosieroj",
+ "files.delete.confirm.selected": "Do you really want to delete the selected files? This action cannot be undone.",
"files.empty": "Ankoraŭ neniu dosiero",
+ "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",
"import": "Importi",
"info": "Info",
"insert": "Enmeti",
@@ -324,7 +426,6 @@
"installation.issues.mbstring": "La kromprogramo MB String
estas deviga",
"installation.issues.media": "La dosierujo /media
ne ekzistas, aũ ne estas skribebla",
"installation.issues.php": "Nepre uzu PHP 8+
",
- "installation.issues.server": "Kirby bezonas Apache
, Nginx
aŭ Caddy
",
"installation.issues.sessions": "La dosierujo /site/sessions
ne ekzistas, aŭ ne estas skribebla",
"language": "Lingvo",
@@ -332,6 +433,7 @@
"language.convert": "Farigi defaŭlton",
"language.convert.confirm": "{secret}
manually to your authenticator app.",
+ "login.totp.enable.confirm.headline": "2. Confirm with generated code",
+ "login.totp.enable.confirm.text": "Your app generates a new one‑time code every 30 seconds. Enter the current code to complete the setup:",
+ "login.totp.enable.confirm.label": "Current code",
+ "login.totp.enable.confirm.help": "After this setup, we will ask you for a one‑time code every time you log in.",
+ "login.totp.enable.success": "One‑time codes enabled",
+ "login.totp.disable.option": "Disable one‑time codes",
+ "login.totp.disable.label": "Enter your password to disable one‑time codes",
+ "login.totp.disable.help": "In the future, a different second factor like a login code sent via email will be requested when you log in. You can always set up one‑time codes again later.",
+ "login.totp.disable.admin": "
Ĉiuj subpaĝoj estos ankaŭ forigitaj.",
"page.delete.confirm.title": "Entajpu la titolon de la paĝo por konfirmi",
- "page.draft.create": "Krei malneton",
"page.duplicate.appendix": "Kopii",
"page.duplicate.files": "Kopii dosierojn",
"page.duplicate.pages": "Kopii paĝojn",
+ "page.move": "Move page",
"page.sort": "Ŝanĝi ordon",
"page.status": "Stato",
"page.status.draft": "Malneto",
@@ -450,6 +604,7 @@
"page.status.unlisted.description": "La paĝo estas atingebla nur per URL",
"pages": "Paĝoj",
+ "pages.delete.confirm.selected": "Do you really want to delete the selected pages? This action cannot be undone.",
"pages.empty": "Ankoraŭ neniu paĝo",
"pages.status.draft": "Malnetoj",
"pages.status.listed": "Publikigita",
@@ -460,14 +615,21 @@
"password": "Pasvorto",
"paste": "Alglui",
"paste.after": "Alglui post",
+ "paste.success": "{count} pasted!",
"pixel": "Pikselo",
"plugin": "Plugin",
"plugins": "Kromprogramoj",
"prev": "Antaŭe",
"preview": "Antaŭrigardi",
+
+ "publish": "Publish",
+ "published": "Publikigita",
+
"remove": "Forigi",
"rename": "Ŝanĝi nomon",
+ "renew": "Renew",
"replace": "Anstataŭi",
+ "replace.with": "Replace with",
"retry": "Provi denove",
"revert": "Malfari",
"revert.confirm": "Ĉu vi certe volas forigi ĉiujn nekonservitajn ŝanĝojn?",
@@ -482,11 +644,14 @@
"role.nobody.title": "Neniu",
"save": "Konservi",
+ "saved": "Saved",
"search": "Serĉi",
+ "searching": "Searching",
"search.min": "Entajpu {min} literojn por serĉi",
- "search.all": "Montri ĉiujn",
+ "search.all": "Show all {count} results",
"search.results.none": "Neniu rezulto",
+ "section.invalid": "The section is invalid",
"section.required": "La sekcio estas deviga",
"security": "Security",
@@ -498,16 +663,25 @@
"size": "Grando",
"slug": "URL-nomo",
"sort": "Ordigi",
+ "sort.drag": "Drag to sort …",
+ "split": "Split",
"stats.empty": "No reports",
+ "status": "Stato",
+
+ "system.info.copy": "Copy info",
+ "system.info.copied": "System info copied",
"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",
+ "system.issues.eol.php": "Your installed PHP release { release } has reached end-of-life and will not receive further security updates",
"system.issues.debug": "Debugging must be turned off in production",
"system.issues.git": "The .git folder seems to be exposed",
"system.issues.https": "We recommend HTTPS for all your sites",
"system.issues.kirby": "The kirby folder seems to be exposed",
+ "system.issues.local": "The site is running locally with relaxed security checks",
"system.issues.site": "The site folder seems to be exposed",
+ "system.issues.vue.compiler": "The Vue template compiler is enabled",
"system.issues.vulnerability.kirby": "Your installation might be affected by the following vulnerability ({ severity } severity): { description }",
"system.issues.vulnerability.plugin": "Your installation might be affected by the following vulnerability in the { plugin } plugin ({ severity } severity): { description }",
"system.updateStatus": "Update status",
@@ -520,10 +694,19 @@
"system.updateStatus.update": "Free update { version } available",
"system.updateStatus.upgrade": "Upgrade { version } available",
- "title": "Titolo",
+ "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ŭ",
+ "toolbar.button.clear": "Clear formatting",
"toolbar.button.code": "Kodo",
"toolbar.button.bold": "Grasa",
"toolbar.button.email": "Retpoŝto",
@@ -541,6 +724,8 @@
"toolbar.button.link": "Ligilo",
"toolbar.button.paragraph": "Paragrafo",
"toolbar.button.strike": "Trastrekita",
+ "toolbar.button.sub": "Subscript",
+ "toolbar.button.sup": "Superscript",
"toolbar.button.ol": "Numerita listo",
"toolbar.button.underline": "Substrekita",
"toolbar.button.ul": "Bula listo",
@@ -550,6 +735,8 @@
"translation.name": "Esperanto",
"translation.locale": "eo",
+ "type": "Type",
+
"upload": "Alŝuti",
"upload.error.cantMove": "Ne eblis movi la alŝutita dosiero",
"upload.error.cantWrite": "Ne eblis registri la dosieron en la diskon",
@@ -574,6 +761,7 @@
"user.changeLanguage": "Ŝanĝi lingvon",
"user.changeName": "Ŝangi la nomon de la uzanto",
"user.changePassword": "Ŝanĝi pasvorton",
+ "user.changePassword.current": "Your current password",
"user.changePassword.new": "Nova pasvorto",
"user.changePassword.new.confirm": "Konfirmi la novan pasvorton...",
"user.changeRole": "Ŝanĝi rolon",
@@ -585,10 +773,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/kirby/i18n/translations/es_419.json b/kirby/i18n/translations/es_419.json
index f9e8324..bbfa123 100644
--- a/kirby/i18n/translations/es_419.json
+++ b/kirby/i18n/translations/es_419.json
@@ -3,57 +3,75 @@
"account.delete": "Eliminar cuenta",
"account.delete.confirm": "¿Realmente quieres eliminar tu cuenta? Tu sesión se cerrará inmediatamente. Tu cuenta no podrá ser recuperada. ",
- "add": "Add",
+ "activate": "Activate",
+ "add": "Agregar",
+ "alpha": "Alpha",
"author": "Autor",
- "avatar": "Profile picture",
- "back": "Back",
- "cancel": "Cancel",
+ "avatar": "Foto de perfil",
+ "back": "Regresar",
+ "cancel": "Cancelar",
"change": "Cambiar",
- "close": "Close",
+ "close": "Cerrar",
+ "changes": "Changes",
"confirm": "De acuerdo",
"collapse": "Colapsar",
"collapse.all": "Colapsar todos",
+ "color": "Color",
+ "coordinates": "Coordinates",
"copy": "Copiar",
"copy.all": "Copiar todo",
+ "copy.success": "{count} copied!",
+ "copy.success.multiple": "{count} copied!",
+ "copy.url": "Copy URL",
"create": "Crear",
+ "custom": "Custom",
- "date": "Date",
+ "date": "Fecha",
"date.select": "Selecciona una fecha",
"day": "Día",
"days.fri": "Vie",
- "days.mon": "Mon",
- "days.sat": "Sáb",
+ "days.mon": "Lun",
+ "days.sat": "S\u00e1b",
"days.sun": "Dom",
- "days.thu": "Thu",
- "days.tue": "Tue",
- "days.wed": "Mi",
+ "days.thu": "Jue",
+ "days.tue": "Mar",
+ "days.wed": "Mi\u00e9",
"debugging": "Depuración",
"delete": "Eliminar",
"delete.all": "Eliminar todos",
+ "dialog.fields.empty": "This dialog has no fields",
"dialog.files.empty": "No has seleccionado ningún archivo",
"dialog.pages.empty": "No has seleccionado ninguna página",
+ "dialog.text.empty": "This dialog does not define any text",
"dialog.users.empty": "No has seleccionado ningún usuario",
"dimensions": "Dimensiones",
+ "disable": "Disable",
"disabled": "Deshabilitado",
- "discard": "Discard",
+ "discard": "Descartar",
+
+ "drawer.fields.empty": "This drawer has no fields",
+
+ "domain": "Domain",
"download": "Descargar",
"duplicate": "Duplicar",
- "edit": "Edit",
+ "edit": "Editar",
"email": "Correo Electrónico",
"email.placeholder": "correo@ejemplo.com",
+ "enter": "Enter",
"entries": "Entradas",
"entry": "Entrada",
"environment": "Ambiente",
+ "error": "Error",
"error.access.code": "Código inválido",
"error.access.login": "Ingreso inválido",
"error.access.panel": "No tienes permitido acceder al panel",
@@ -74,13 +92,31 @@
"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.entries.max.plural": "You must not add more than {max} entries",
+ "error.entries.max.singular": "You must not add more than one entry",
+ "error.entries.min.plural": "You must add at least {min} entries",
+ "error.entries.min.singular": "You must add at least one entry",
+ "error.entries.supports": "\"{type}\" field type is not supported for the entries field",
+ "error.entries.validation": "There's an error on the \"{field}\" field in row {index}",
+
"error.email.preset.notFound": "El preajuste de email \"{name}\" no se pudo encontrar.",
"error.field.converter.invalid": "Convertidor inválido \"{converter}\"",
+ "error.field.link.options": "Invalid options: {options}",
"error.field.type.missing": "Campo \"{ name }\": El tipo de campo \"{ type }\" no existe",
"error.file.changeName.empty": "El nombre no debe estar vacío",
"error.file.changeName.permission": "No tienes permitido cambiar el nombre de \"{filename}\"",
+ "error.file.changeTemplate.invalid": "The template for the file \"{id}\" cannot be changed to \"{template}\" (valid: \"{blueprints}\")",
+ "error.file.changeTemplate.permission": "You are not allowed to change the template for the file \"{id}\"",
+
+ "error.file.delete.multiple": "Not all files could be deleted. Try each remaining file individually to see the specific error that prevents deletion.",
"error.file.duplicate": "Ya existe un archivo con el nombre \"{filename}\".",
"error.file.extension.forbidden": "La extensión \"{extension}\" no está permitida.",
"error.file.extension.invalid": "Extensión inválida: {extension}",
@@ -95,9 +131,11 @@
"error.file.minheight": "La altura de la imagen debe ser de al menos {height} pixeles",
"error.file.minsize": "El archivo es muy pequeño",
"error.file.minwidth": "El ancho de la imagen debe ser de al menos {width} pixeles",
+ "error.file.name.unique": "The filename must be unique",
"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",
@@ -106,22 +144,30 @@
"error.form.notSaved": "No se pudo guardar el formulario",
"error.language.code": "Por favor introduce un código válido para el idioma",
+ "error.language.create.permission": "You are not allowed to create a language",
+ "error.language.delete.permission": "You are not allowed to delete the language",
"error.language.duplicate": "El idioma ya existe",
"error.language.name": "Por favor introduce un nombre válido para el idioma",
"error.language.notFound": "No se pudo encontrar el idioma",
+ "error.language.update.permission": "You are not allowed to update the language",
"error.layout.validation.block": "Hay un error en el campo \"{field}\" del bloque {blockIndex} que utiliza el tipo de bloque \"{fieldset}\" en el layout {layoutIndex}",
"error.layout.validation.settings": "Hay un error en los ajustes del layout {index}",
- "error.license.format": "Por favor introduce una llave de licencia válida",
+ "error.license.domain": "The domain for the license is missing",
"error.license.email": "Por favor ingresa un correo electrónico valido",
+ "error.license.format": "Please enter a valid license code",
"error.license.verification": "La licencia no pude ser verificada",
+ "error.login.totp.confirm.invalid": "Código inválido",
+ "error.login.totp.confirm.missing": "Please enter the current code",
+
"error.object.validation": "Hay un error en el campo \"{label}\":\n{message}",
"error.offline": "El Panel se encuentra fuera de linea ",
"error.page.changeSlug.permission": "No está permitido cambiar el apéndice de URL para \"{slug}\".",
+ "error.page.changeSlug.reserved": "The path of top-level pages must not start with \"{path}\"",
"error.page.changeStatus.incomplete": "La página tiene errores y no puede ser publicada.",
"error.page.changeStatus.permission": "El estado de esta página no se puede cambiar.",
"error.page.changeStatus.toDraft.invalid": "La página \"{slug}\" no se puede convertir en un borrador",
@@ -133,17 +179,25 @@
"error.page.delete": "La página \"{slug}\" no se puede eliminar",
"error.page.delete.confirm": "Por favor, introduce el título de la página para confirmar",
"error.page.delete.hasChildren": "La página tiene subpáginas y no se puede eliminar",
+ "error.page.delete.multiple": "Not all pages could be deleted. Try each remaining page individually to see the specific error that prevents deletion.",
"error.page.delete.permission": "No tienes permiso para borrar \"{slug}\"",
"error.page.draft.duplicate": "Ya existe un borrador de página con el apéndice de URL \"{slug}\"",
"error.page.duplicate": "Ya existe una página con el apéndice de URL \"{slug}\"",
"error.page.duplicate.permission": "No tienes permitido duplicar \"{slug}\"",
+ "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}\"",
"error.page.notFound": "La página \"{slug}\" no se encuentra",
"error.page.num.invalid": "Por favor, introduce un número de posición válido. Los números no deben ser negativos.",
"error.page.slug.invalid": "Por favor, introduce un apéndice de URL válido",
"error.page.slug.maxlength": "La longitud del slug debe ser inferior a \"{length}\" caracteres",
"error.page.sort.permission": "La página \"{slug}\" no se puede ordenar",
"error.page.status.invalid": "Por favor, establece una estado de página válido",
- "error.page.undefined": "La página no fue encontrada",
+ "error.page.undefined": "La p\u00e1gina no fue encontrada",
"error.page.update.permission": "No tienes permiso para actualizar \"{slug}\"",
"error.section.files.max.plural": "No debes agregar más de {max} archivos a la sección \"{section}\"",
@@ -163,6 +217,8 @@
"error.site.changeTitle.permission": "No tienes permiso para cambiar el título del sitio",
"error.site.update.permission": "No tienes permiso de actualizar el sitio",
+ "error.structure.validation": "There's an error on the \"{field}\" field in row {index}",
+
"error.template.default.notFound": "La plantilla predeterminada no existe",
"error.unexpected": "¡Se ha producido un error inesperado! Activa el modo de depuración para obtener más información: https://getkirby.com/docs/reference/system/options/debug",
@@ -176,7 +232,7 @@
"error.user.changeRole.toAdmin": "No tienes permitido promover a alguien al rol de admin",
"error.user.create.permission": "No tienes permiso de crear este usuario",
"error.user.delete": "El ususario no pudo ser eliminado",
- "error.user.delete.lastAdmin": "Usted no puede borrar el último administrador",
+ "error.user.delete.lastAdmin": "Usted no puede borrar el \u00faltimo administrador",
"error.user.delete.lastUser": "El último usuario no puede ser borrado",
"error.user.delete.permission": "Usted no tiene permitido borrar este usuario",
"error.user.duplicate": "Ya existe un usuario con el email \"{email}\"",
@@ -185,7 +241,7 @@
"error.user.notFound": "El usuario no pudo ser encontrado",
"error.user.password.excessive": "Please enter a valid password. Passwords must not be longer than 1000 characters.",
"error.user.password.invalid": "Por favor ingresa una contraseña valida. Las contraseñas deben tener al menos 8 caracteres de largo.",
- "error.user.password.notSame": "Por favor confirma la contraseña",
+ "error.user.password.notSame": "Por favor confirma la contrase\u00f1a",
"error.user.password.undefined": "El usuario no tiene contraseña",
"error.user.password.wrong": "Contraseña incorrecta",
"error.user.role.invalid": "Por favor ingresa un rol valido",
@@ -195,8 +251,10 @@
"error.validation.accepted": "Por favor, confirma",
"error.validation.alpha": "Por favor ingrese solo caracteres entre a-z",
"error.validation.alphanum": "Por favor ingrese solo caracteres entre a-z o números entre 0-9",
+ "error.validation.anchor": "Please enter a correct link anchor",
"error.validation.between": "Por favor ingrese valores entre \"{min}\" y \"{max}\"",
"error.validation.boolean": "Por favor confirme o niegue",
+ "error.validation.color": "Please enter a valid color in the {format} format",
"error.validation.contains": "Por favor ingrese valores que contengan \"{needle}\"",
"error.validation.date": "Por favor ingresa una fecha válida",
"error.validation.date.after": "Por favor introduce una fecha posterior a {date}",
@@ -211,6 +269,7 @@
"error.validation.integer": "Por favor ingresa un entero válido",
"error.validation.ip": "Por favor ingresa una dirección IP válida",
"error.validation.less": "Por favor ingresa un valor menor a {max}",
+ "error.validation.linkType": "The link type is not allowed",
"error.validation.match": "El valor no coincide con el patrón esperado",
"error.validation.max": "Por favor ingresa un valor menor o igual a {max}",
"error.validation.maxlength": "Por favor ingresa un valor mas corto. (max. {max} caracteres)",
@@ -227,15 +286,18 @@
"error.validation.same": "Por favor ingresa \"{other}\"",
"error.validation.size": "El tamaño del valor debe ser \"{size}\"",
"error.validation.startswith": "El valor debe comenzar con \"{start}\"",
+ "error.validation.tel": "Please enter an unformatted phone number",
"error.validation.time": "Por favor ingresa una hora válida",
"error.validation.time.after": "Por favor ingresa una fecha después de {time}",
"error.validation.time.before": "Por favor ingresa una fecha antes de {time}",
"error.validation.time.between": "Por favor ingresa un fecha entre {min} y {max}",
+ "error.validation.uuid": "Please enter a valid UUID",
"error.validation.url": "Por favor ingresa un URL válido",
"expand": "Expandir",
"expand.all": "Expandir todo",
+ "field.invalid": "The field is invalid",
"field.required": "Este campo es requerido",
"field.blocks.changeType": "Cambiar tipo",
"field.blocks.code.name": "Código",
@@ -245,8 +307,9 @@
"field.blocks.delete.confirm.all": "¿Seguro que quieres eliminar todos los bloques?",
"field.blocks.delete.confirm.selected": "¿Seguro que quieres eliminar los bloques seleccionados?",
"field.blocks.empty": "No hay bloques aún",
+ "field.blocks.fieldsets.empty": "No fieldsets yet",
"field.blocks.fieldsets.label": "Por favor selecciona un tipo de bloque...",
- "field.blocks.fieldsets.paste": "Presiona {{ shortcut }}para pegar/importar bloques en tu portapapeles ",
+ "field.blocks.fieldsets.paste": "Press {{ shortcut }} to import layouts/blocks from your clipboard Only those allowed in the current field will get inserted.",
"field.blocks.gallery.name": "Galería",
"field.blocks.gallery.images.empty": "No hay imágenes aún",
"field.blocks.gallery.images.label": "Imágenes",
@@ -254,11 +317,16 @@
"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",
"field.blocks.image.link": "Enlace",
"field.blocks.image.location": "Ubicación",
+ "field.blocks.image.location.internal": "This website",
+ "field.blocks.image.location.external": "External source",
"field.blocks.image.name": "Imágen",
"field.blocks.image.placeholder": "Selecciona una imagen",
"field.blocks.image.ratio": "Proporción",
@@ -275,38 +343,72 @@
"field.blocks.quote.citation.placeholder": "Por ...",
"field.blocks.text.name": "Texto",
"field.blocks.text.placeholder": "Texto ...",
+ "field.blocks.video.autoplay": "Autoplay",
"field.blocks.video.caption": "Leyenda",
+ "field.blocks.video.controls": "Controls",
+ "field.blocks.video.location": "Ubicación",
+ "field.blocks.video.loop": "Loop",
+ "field.blocks.video.muted": "Muted",
"field.blocks.video.name": "Video",
"field.blocks.video.placeholder": "Introduce la URL de un vídeo",
+ "field.blocks.video.poster": "Poster",
+ "field.blocks.video.preload": "Preload",
"field.blocks.video.url.label": "Vídeo-URL",
"field.blocks.video.url.placeholder": "https://youtube.com/?v=",
- "field.files.empty": "Aún no ha seleccionado ningún archivo",
+ "field.entries.delete.confirm.all": "¿Realmente quieres eliminar todas las entradas?",
+ "field.entries.empty": "Aún no existen entradas.",
+ "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",
"field.layout.delete.confirm": "¿Realmente quieres eliminar este layout?",
+ "field.layout.delete.confirm.all": "Do you really want to delete all layouts?",
"field.layout.empty": "Aún no hay filas",
"field.layout.select": "Seleccionar layout",
"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": "¿En realidad desea borrar esta entrada?",
+ "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ún no existen 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",
+
+ "file": "Archivo",
"file.blueprint": "Este archivo aún no tiene blueprint. Puedes definir la configuración en /site/blueprints/files/{blueprint}.yml",
- "file.delete.confirm": "¿Estás seguro que deseas eliminar este archivo?",
+ "file.changeTemplate": "Cambiar plantilla",
+ "file.changeTemplate.notice": "Changing the file's template will remove content for fields that don't match in type. If the new template defines certain rules, e.g. image dimensions, those will also be applied irreversibly. Use with caution.",
+ "file.delete.confirm": "\u00bfEst\u00e1s seguro que deseas eliminar este archivo?",
+ "file.focus.placeholder": "Set focal point",
+ "file.focus.reset": "Remove focal point",
+ "file.focus.title": "Focus",
"file.sort": "Cambiar posición",
- "files": "Files",
+ "files": "Archivos",
+ "files.delete.confirm.selected": "Do you really want to delete the selected files? This action cannot be undone.",
"files.empty": "Aún no existen archivos",
+ "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",
"import": "Importar",
"info": "Info",
"insert": "Insertar",
@@ -324,7 +426,6 @@
"installation.issues.mbstring": "Se requiere la extensión MB String
.",
"installation.issues.media": "La carpeta /media
no existe o no posee permisos de escritura.",
"installation.issues.php": "Asegurese de estar usando PHP 8+
",
- "installation.issues.server": "Kirby requiere Apache
, Nginx
, Caddy
",
"installation.issues.sessions": "La carpeta /site/sessions
no existe o no posee permisos de escritura.",
"language": "Idioma",
@@ -332,6 +433,7 @@
"language.convert": "Hacer por defecto",
"language.convert.confirm": "{secret}
manually to your authenticator app.",
+ "login.totp.enable.confirm.headline": "2. Confirm with generated code",
+ "login.totp.enable.confirm.text": "Your app generates a new one‑time code every 30 seconds. Enter the current code to complete the setup:",
+ "login.totp.enable.confirm.label": "Current code",
+ "login.totp.enable.confirm.help": "After this setup, we will ask you for a one‑time code every time you log in.",
+ "login.totp.enable.success": "One‑time codes enabled",
+ "login.totp.disable.option": "Disable one‑time codes",
+ "login.totp.disable.label": "Enter your password to disable one‑time codes",
+ "login.totp.disable.help": "In the future, a different second factor like a login code sent via email will be requested when you log in. You can always set up one‑time codes again later.",
+ "login.totp.disable.admin": "
Todas las súbpaginas serán eliminadas también.",
"page.delete.confirm.title": "Introduce el título de la página para confirmar",
- "page.draft.create": "Crear borrador",
"page.duplicate.appendix": "Copiar",
"page.duplicate.files": "Copiar archivos",
"page.duplicate.pages": "Copiar páginas",
+ "page.move": "Move page",
"page.sort": "Cambiar posición",
"page.status": "Estado",
"page.status.draft": "Borrador",
@@ -449,25 +603,33 @@
"page.status.unlisted": "No publicada",
"page.status.unlisted.description": "La página sólo es accesible vía URL",
- "pages": "Paginas",
+ "pages": "Páginas",
+ "pages.delete.confirm.selected": "Do you really want to delete the selected pages? This action cannot be undone.",
"pages.empty": "No hay páginas aún",
"pages.status.draft": "Borradores",
"pages.status.listed": "Publicado",
- "pages.status.unlisted": "No publicada",
+ "pages.status.unlisted": "No publicado",
"pagination.page": "Página",
- "password": "Password",
+ "password": "Contrase\u00f1a",
"paste": "Pegar",
"paste.after": "Pegar después",
+ "paste.success": "{count} pasted!",
"pixel": "Pixel",
"plugin": "Plugin",
"plugins": "Plugins",
"prev": "Anterior",
"preview": "Previsualizar",
+
+ "publish": "Publish",
+ "published": "Publicado",
+
"remove": "Eliminar",
"rename": "Renombrar",
- "replace": "Remplazar",
+ "renew": "Renew",
+ "replace": "Reemplazar",
+ "replace.with": "Replace with",
"retry": "Reintentar",
"revert": "Revertir",
"revert.confirm": "¿Realmente quieres eliminar todos los cambios sin guardar?",
@@ -481,12 +643,15 @@
"role.nobody.description": "Este es un rol alternativo sin permisos",
"role.nobody.title": "Nadie",
- "save": "Save",
+ "save": "Guardar",
+ "saved": "Saved",
"search": "Buscar",
+ "searching": "Searching",
"search.min": "Introduce {min} caracteres para buscar",
- "search.all": "Mostrar todo",
+ "search.all": "Show all {count} results",
"search.results.none": "Sin resultados",
+ "section.invalid": "The section is invalid",
"section.required": "Esta sección es requerida",
"security": "Seguridad",
@@ -498,16 +663,25 @@
"size": "Tamaño",
"slug": "Apéndice URL",
"sort": "Ordenar",
+ "sort.drag": "Drag to sort …",
+ "split": "Split",
"stats.empty": "Sin informes",
+ "status": "Estado",
+
+ "system.info.copy": "Copy info",
+ "system.info.copied": "System info copied",
"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.",
+ "system.issues.eol.php": "Your installed PHP release { release } has reached end-of-life and will not receive further security updates",
"system.issues.debug": "La depuración debe estar desactivada en producción",
"system.issues.git": "La carpeta .git parece estar expuesta",
"system.issues.https": "Recomendamos HTTPS para todos tus sitios web",
"system.issues.kirby": "La carpeta kirby parece estar expuesta",
+ "system.issues.local": "The site is running locally with relaxed security checks",
"system.issues.site": "La carpeta site parece estar expuesta",
+ "system.issues.vue.compiler": "The Vue template compiler is enabled",
"system.issues.vulnerability.kirby": "Tu instalación podría estar afectada por la siguiente vulnerabilidad ({ severity } gravedad): { description }",
"system.issues.vulnerability.plugin": "Tu instalación podría estar afectada por la siguiente vulnerabilidad en el plugin { plugin } ({ severity } gravedad): { description }",
"system.updateStatus": "Estado de actualización",
@@ -520,13 +694,22 @@
"system.updateStatus.update": "Actualización gratuita {version} disponible",
"system.updateStatus.upgrade": "Actualización {versión} disponible",
+ "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",
- "template": "Template",
"today": "Hoy",
+ "toolbar.button.clear": "Clear formatting",
"toolbar.button.code": "Código",
"toolbar.button.bold": "Negrita",
- "toolbar.button.email": "Correo Electrónico",
+ "toolbar.button.email": "Email",
"toolbar.button.headings": "Encabezados",
"toolbar.button.heading.1": "Encabezado 1",
"toolbar.button.heading.2": "Encabezado 2",
@@ -534,13 +717,15 @@
"toolbar.button.heading.4": "Encabezado 4",
"toolbar.button.heading.5": "Encabezado 5",
"toolbar.button.heading.6": "Encabezado 6",
- "toolbar.button.italic": "Texto en Itálicas",
+ "toolbar.button.italic": "Texto en It\u00e1licas",
"toolbar.button.file": "Archivo",
"toolbar.button.file.select": "Selecciona un archivo",
"toolbar.button.file.upload": "Sube un archivo",
"toolbar.button.link": "Enlace",
"toolbar.button.paragraph": "Parágrafo",
"toolbar.button.strike": "Tachado",
+ "toolbar.button.sub": "Subscript",
+ "toolbar.button.sup": "Superscript",
"toolbar.button.ol": "Lista en orden",
"toolbar.button.underline": "Subrayado",
"toolbar.button.ul": "Lista de viñetas",
@@ -550,6 +735,8 @@
"translation.name": "Español (América Latina)",
"translation.locale": "es_419",
+ "type": "Type",
+
"upload": "Subir",
"upload.error.cantMove": "El archivo subido no puede ser movido",
"upload.error.cantWrite": "Error al escribir el archivo en el disco",
@@ -574,23 +761,27 @@
"user.changeLanguage": "Cambiar idioma",
"user.changeName": "Renombrar este usuario",
"user.changePassword": "Cambiar la contraseña",
- "user.changePassword.new": "New password",
+ "user.changePassword.current": "Your current password",
+ "user.changePassword.new": "Nueva contraseña",
"user.changePassword.new.confirm": "Confirma la nueva contraseña...",
"user.changeRole": "Cambiar rol",
"user.changeRole.select": "Selecciona un nuevo rol",
- "user.create": "Añadir un nuevo usuario",
+ "user.create": "Agregar un nuevo usuario",
"user.delete": "Eliminar este usuario",
"user.delete.confirm": "¿Estás seguro que deseas eliminar
{email}?",
"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.installation": "Instalaci\u00f3n",
"view.languages": "Idiomas",
"view.resetPassword": "Restablecer contraseña",
"view.site": "Sitio",
diff --git a/kirby/i18n/translations/es_ES.json b/kirby/i18n/translations/es_ES.json
index 6fd4762..c572229 100644
--- a/kirby/i18n/translations/es_ES.json
+++ b/kirby/i18n/translations/es_ES.json
@@ -3,30 +3,39 @@
"account.delete": "Borrar cuenta",
"account.delete.confirm": "¿Realmente quieres eliminar tu cuenta? Tu sesión se cerrará inmediatamente. La cuenta no podrá ser recuperada.",
- "add": "Add",
+ "activate": "Activate",
+ "add": "Añadir",
+ "alpha": "Alpha",
"author": "Autor",
- "avatar": "Profile picture",
- "back": "Back",
- "cancel": "Cancel",
+ "avatar": "Foto de perfil",
+ "back": "Atrás",
+ "cancel": "Cancelar",
"change": "Cambiar",
- "close": "Close",
+ "close": "Cerrar",
+ "changes": "Changes",
"confirm": "Confirmar",
"collapse": "Colapsar",
"collapse.all": "Colapsar todo",
+ "color": "Color",
+ "coordinates": "Coordinates",
"copy": "Copiar",
"copy.all": "Copiar todo",
+ "copy.success": "{count} copied!",
+ "copy.success.multiple": "{count} copied!",
+ "copy.url": "Copy URL",
"create": "Crear",
+ "custom": "Custom",
- "date": "Date",
+ "date": "Fecha",
"date.select": "Selecciona una fecha",
"day": "Día",
- "days.fri": "Vie",
- "days.mon": "Mon",
+ "days.fri": "Vi",
+ "days.mon": "Lu",
"days.sat": "Sá",
- "days.sun": "Dom",
- "days.thu": "Thu",
- "days.tue": "Tue",
+ "days.sun": "Do",
+ "days.thu": "Ju",
+ "days.tue": "Ma",
"days.wed": "Mi",
"debugging": "Depuración",
@@ -34,26 +43,35 @@
"delete": "Eliminar",
"delete.all": "Eliminar todo",
+ "dialog.fields.empty": "This dialog has no fields",
"dialog.files.empty": "No hay archivos para seleccionar",
"dialog.pages.empty": "No hay páginas para seleccionar",
+ "dialog.text.empty": "This dialog does not define any text",
"dialog.users.empty": "No hay usuarios para seleccionar",
"dimensions": "Dimensiones",
+ "disable": "Disable",
"disabled": "Desabilitado",
- "discard": "Discard",
+ "discard": "Descartar",
+
+ "drawer.fields.empty": "This drawer has no fields",
+
+ "domain": "Domain",
"download": "Descargar",
"duplicate": "Duplicar",
- "edit": "Edit",
+ "edit": "Editar",
"email": "Correo electrónico",
"email.placeholder": "correo@ejemplo.com",
+ "enter": "Enter",
"entries": "Entradas",
"entry": "Entrada",
"environment": "Entorno",
+ "error": "Error",
"error.access.code": "Código inválido",
"error.access.login": "Inicio de sesión inválido",
"error.access.panel": "No tienes permiso para acceder al panel",
@@ -74,13 +92,31 @@
"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.entries.max.plural": "You must not add more than {max} entries",
+ "error.entries.max.singular": "You must not add more than one entry",
+ "error.entries.min.plural": "You must add at least {min} entries",
+ "error.entries.min.singular": "You must add at least one entry",
+ "error.entries.supports": "\"{type}\" field type is not supported for the entries field",
+ "error.entries.validation": "There's an error on the \"{field}\" field in row {index}",
+
"error.email.preset.notFound": "El preset del correo \"{name}\" no puede ser encontrado",
"error.field.converter.invalid": "Convertidor \"{converter}\" inválido",
+ "error.field.link.options": "Invalid options: {options}",
"error.field.type.missing": "Campo \"{ name }\": El tipo de campo \"{ type }\" no existe",
"error.file.changeName.empty": "El nombre no debe estar vacío",
"error.file.changeName.permission": "No tienes permiso para cambiar el nombre de \"{filename}\"",
+ "error.file.changeTemplate.invalid": "The template for the file \"{id}\" cannot be changed to \"{template}\" (valid: \"{blueprints}\")",
+ "error.file.changeTemplate.permission": "You are not allowed to change the template for the file \"{id}\"",
+
+ "error.file.delete.multiple": "Not all files could be deleted. Try each remaining file individually to see the specific error that prevents deletion.",
"error.file.duplicate": "Ya existe un archivo con el nombre \"{filename}\"",
"error.file.extension.forbidden": "La extensión \"{extension}\" no está permitida",
"error.file.extension.invalid": "Extensión inválida: {extension}",
@@ -95,9 +131,11 @@
"error.file.minheight": "La altura de la imagen debe ser de al menos {height} pixeles",
"error.file.minsize": "El archivo es demasiado pequeño",
"error.file.minwidth": "El ancho de la imagen debe ser de al menos {width} pixeles",
+ "error.file.name.unique": "The filename must be unique",
"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",
@@ -106,22 +144,30 @@
"error.form.notSaved": "El formulario no pudo ser guardado",
"error.language.code": "Por favor, introduce un código válido para el idioma",
+ "error.language.create.permission": "You are not allowed to create a language",
+ "error.language.delete.permission": "You are not allowed to delete the language",
"error.language.duplicate": "El idioma ya existe",
"error.language.name": "Por favor, introduce un nombre válido para el idioma",
"error.language.notFound": "No se pudo encontrar el idioma",
+ "error.language.update.permission": "You are not allowed to update the language",
"error.layout.validation.block": "Hay un error en el campo \"{field}\" del bloque {blockIndex} que utiliza el tipo de bloque \"{fieldset}\" en el layout {layoutIndex}",
"error.layout.validation.settings": "Hay un error en los ajustes del layout {index}",
- "error.license.format": "Por favor, introduce una llave de licencia válida",
+ "error.license.domain": "The domain for the license is missing",
"error.license.email": "Por favor, introduce un correo electrónico válido",
+ "error.license.format": "Please enter a valid license code",
"error.license.verification": "La licencia no pudo ser verificada",
+ "error.login.totp.confirm.invalid": "Código inválido",
+ "error.login.totp.confirm.missing": "Please enter the current code",
+
"error.object.validation": "Hay un error en el campo \"{label}\":\n{message}",
"error.offline": "El Panel se encuentra actualmente fuera de línea ",
"error.page.changeSlug.permission": "No tienes permiso para cambiar el apéndice de URL para \"{slug}\"",
+ "error.page.changeSlug.reserved": "The path of top-level pages must not start with \"{path}\"",
"error.page.changeStatus.incomplete": "La página tiene errores y no puede ser publicada.",
"error.page.changeStatus.permission": "El estado de esta página no se puede cambiar",
"error.page.changeStatus.toDraft.invalid": "La página \"{slug}\" no se puede convertir a borrador",
@@ -133,10 +179,18 @@
"error.page.delete": "La página \"{slug}\" no se puede eliminar",
"error.page.delete.confirm": "Por favor, introduce el título de la página para confirmar",
"error.page.delete.hasChildren": "La página tiene subpáginas y no se puede eliminar",
+ "error.page.delete.multiple": "Not all pages could be deleted. Try each remaining page individually to see the specific error that prevents deletion.",
"error.page.delete.permission": "No tienes permiso para eliminar \"{slug}\"",
"error.page.draft.duplicate": "Un borrador de página con el apéndice de URL \"{slug}\" ya existe",
"error.page.duplicate": "Una página con el apéndice de URL \"{slug}\" ya existe",
"error.page.duplicate.permission": "No tienes permiso para duplicar \"{slug}\"",
+ "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}\"",
"error.page.notFound": "No se puede encontrar la página \"{slug}\"",
"error.page.num.invalid": "Por favor, introduce un número de ordenación válido. Los números no deben ser negativos.",
"error.page.slug.invalid": "Por favor, introduce un apéndice de URL válido",
@@ -163,6 +217,8 @@
"error.site.changeTitle.permission": "No tienes permiso para cambiar el título del sitio",
"error.site.update.permission": "No tienes permiso para actualizar el sitio",
+ "error.structure.validation": "There's an error on the \"{field}\" field in row {index}",
+
"error.template.default.notFound": "La plantilla por defecto no existe",
"error.unexpected": "¡Se ha producido un error inesperado! Activa el modo de depuración para obtener más información: https://getkirby.com/docs/reference/system/options/debug",
@@ -180,7 +236,7 @@
"error.user.delete.lastUser": "No se puede eliminar el último usuario ",
"error.user.delete.permission": "No tienes permiso para eliminar el usuario \"{name}\"",
"error.user.duplicate": "Un usuario con la dirección de correo electrónico \"{email}\" ya existe",
- "error.user.email.invalid": "Por favor, introduce un correo electrónico válido",
+ "error.user.email.invalid": "Por favor, introduce una dirección de correo electrónico válida",
"error.user.language.invalid": "Por favor, introduce un idioma válido",
"error.user.notFound": "No se puede encontrar el usuario \"{name}\"",
"error.user.password.excessive": "Please enter a valid password. Passwords must not be longer than 1000 characters.",
@@ -195,8 +251,10 @@
"error.validation.accepted": "Por favor, confirma",
"error.validation.alpha": "Por favor, introduce solo caracteres entre a-z",
"error.validation.alphanum": "Por favor, introduce solo caracteres entre a-z o numerales 0-9",
+ "error.validation.anchor": "Please enter a correct link anchor",
"error.validation.between": "Por favor, introduce un valor entre \"{min}\" y \"{max}\"",
"error.validation.boolean": "Por favor, confirma o rechaza",
+ "error.validation.color": "Please enter a valid color in the {format} format",
"error.validation.contains": "Por favor, introduce un valor que contenga \"{needle}\"",
"error.validation.date": "Por favor, introduce una fecha válida",
"error.validation.date.after": "Por favor, introduce una fecha posterior a {date}",
@@ -211,6 +269,7 @@
"error.validation.integer": "Por favor, introduce un numero integro válido",
"error.validation.ip": "Por favor, introduce una dirección IP válida",
"error.validation.less": "Por favor, introduce un valor inferior a {max}",
+ "error.validation.linkType": "The link type is not allowed",
"error.validation.match": "El valor no coincide con el patrón esperado",
"error.validation.max": "Por favor, introduce un valor igual o inferior a {max}",
"error.validation.maxlength": "Por favor, introduce un valor más corto. (max. {max} caracteres)",
@@ -227,15 +286,18 @@
"error.validation.same": "Por favor, introduce \"{other}\"",
"error.validation.size": "El tamaño del valor debe ser \"{size}\"",
"error.validation.startswith": "El valor debe comenzar con \"{start}\"",
+ "error.validation.tel": "Please enter an unformatted phone number",
"error.validation.time": "Por favor, introduce una hora válida",
"error.validation.time.after": "Por favor, introduce una fecha después de {time}",
"error.validation.time.before": "Por favor, introduce una fecha antes de {time}",
"error.validation.time.between": "Por favor, introduce un fecha entre {min} y {max}",
+ "error.validation.uuid": "Please enter a valid UUID",
"error.validation.url": "Por favor, introduce un URL válido",
"expand": "Expandir",
"expand.all": "Expandir todo",
+ "field.invalid": "The field is invalid",
"field.required": "Este campo es obligatorio",
"field.blocks.changeType": "Cambiar tipo",
"field.blocks.code.name": "Código",
@@ -245,8 +307,9 @@
"field.blocks.delete.confirm.all": "¿Realmente quieres eliminar todos los bloques?",
"field.blocks.delete.confirm.selected": "¿Realmente quieres eliminar los bloques seleccionados?",
"field.blocks.empty": "Aún no hay bloques",
+ "field.blocks.fieldsets.empty": "No fieldsets yet",
"field.blocks.fieldsets.label": "Por favor, selecciona un tipo de bloque...",
- "field.blocks.fieldsets.paste": "Presiona {{ shortcut }}para pegar/importar bloques en tu portapapeles ",
+ "field.blocks.fieldsets.paste": "Press {{ shortcut }} to import layouts/blocks from your clipboard Only those allowed in the current field will get inserted.",
"field.blocks.gallery.name": "Galería",
"field.blocks.gallery.images.empty": "Aún no hay imágenes",
"field.blocks.gallery.images.label": "Imágenes",
@@ -254,11 +317,16 @@
"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",
"field.blocks.image.link": "Enlace",
"field.blocks.image.location": "Ubicación",
+ "field.blocks.image.location.internal": "This website",
+ "field.blocks.image.location.external": "External source",
"field.blocks.image.name": "Imágen",
"field.blocks.image.placeholder": "Selecciona una imagen",
"field.blocks.image.ratio": "Proporción",
@@ -275,38 +343,72 @@
"field.blocks.quote.citation.placeholder": "Por ...",
"field.blocks.text.name": "Texto",
"field.blocks.text.placeholder": "Texto ...",
+ "field.blocks.video.autoplay": "Autoplay",
"field.blocks.video.caption": "Leyenda",
+ "field.blocks.video.controls": "Controls",
+ "field.blocks.video.location": "Ubicación",
+ "field.blocks.video.loop": "Loop",
+ "field.blocks.video.muted": "Muted",
"field.blocks.video.name": "Video",
"field.blocks.video.placeholder": "Introduce la URL de un vídeo",
+ "field.blocks.video.poster": "Poster",
+ "field.blocks.video.preload": "Preload",
"field.blocks.video.url.label": "Vídeo-URL",
"field.blocks.video.url.placeholder": "https://youtube.com/?v=",
- "field.files.empty": "Aún no hay archivos seleccionados",
+ "field.entries.delete.confirm.all": "¿Realmente quieres eliminar todas las entradas?",
+ "field.entries.empty": "Aún no hay entradas",
+ "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",
"field.layout.delete.confirm": "¿Realmente quieres eliminar este layout?",
+ "field.layout.delete.confirm.all": "Do you really want to delete all layouts?",
"field.layout.empty": "Aún no hay filas",
"field.layout.select": "Seleccionar layout",
"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",
+
+ "file": "Archivo",
"file.blueprint": "Este archivo aún no tiene blueprint. Puedes definir la configuración en /site/blueprints/files/{blueprint}.yml",
+ "file.changeTemplate": "Cambiar plantilla",
+ "file.changeTemplate.notice": "Changing the file's template will remove content for fields that don't match in type. If the new template defines certain rules, e.g. image dimensions, those will also be applied irreversibly. Use with caution.",
"file.delete.confirm": "¿Realmente quieres eliminar
{filename}?",
+ "file.focus.placeholder": "Set focal point",
+ "file.focus.reset": "Remove focal point",
+ "file.focus.title": "Focus",
"file.sort": "Cambiar posición",
- "files": "Files",
+ "files": "Archivos",
+ "files.delete.confirm.selected": "Do you really want to delete the selected files? This action cannot be undone.",
"files.empty": "Aún no hay archivos",
+ "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",
"import": "Importar",
"info": "Info",
"insert": "Insertar",
@@ -324,7 +426,6 @@
"installation.issues.mbstring": "La extension MB String
es requerida",
"installation.issues.media": "La carpeta /media
no existe o no se puede escribir",
"installation.issues.php": "Asegurese de estar usando PHP 8+
",
- "installation.issues.server": "Kirby requiere Apache
, Nginx
o Caddy
",
"installation.issues.sessions": "La carpeta /site/sessions
no existe o no se puede escribir",
"language": "Idioma",
@@ -332,6 +433,7 @@
"language.convert": "Hacer por defecto",
"language.convert.confirm": "{secret}
manually to your authenticator app.",
+ "login.totp.enable.confirm.headline": "2. Confirm with generated code",
+ "login.totp.enable.confirm.text": "Your app generates a new one‑time code every 30 seconds. Enter the current code to complete the setup:",
+ "login.totp.enable.confirm.label": "Current code",
+ "login.totp.enable.confirm.help": "After this setup, we will ask you for a one‑time code every time you log in.",
+ "login.totp.enable.success": "One‑time codes enabled",
+ "login.totp.disable.option": "Disable one‑time codes",
+ "login.totp.disable.label": "Enter your password to disable one‑time codes",
+ "login.totp.disable.help": "In the future, a different second factor like a login code sent via email will be requested when you log in. You can always set up one‑time codes again later.",
+ "login.totp.disable.admin": "
Todas las subpáginas también serán eliminadas.",
"page.delete.confirm.title": "Introduce el título de la página para confirmar",
- "page.draft.create": "Crear borrador",
"page.duplicate.appendix": "Copiar",
"page.duplicate.files": "Copiar archivos",
"page.duplicate.pages": "Copiar páginas",
+ "page.move": "Move page",
"page.sort": "Cambiar posición",
"page.status": "Estado",
"page.status.draft": "Borrador",
@@ -450,6 +604,7 @@
"page.status.unlisted.description": "La página solo es accesible vía URL",
"pages": "Paginas",
+ "pages.delete.confirm.selected": "Do you really want to delete the selected pages? This action cannot be undone.",
"pages.empty": "Aún no hay páginas",
"pages.status.draft": "Borradores",
"pages.status.listed": "Publicadas",
@@ -457,17 +612,24 @@
"pagination.page": "Página",
- "password": "Password",
+ "password": "Contraseña",
"paste": "Pegar",
"paste.after": "Pegar después",
+ "paste.success": "{count} pasted!",
"pixel": "Pixel",
"plugin": "Plugin",
"plugins": "Plugins",
"prev": "Anterior",
"preview": "Previsualizar",
+
+ "publish": "Publish",
+ "published": "Publicadas",
+
"remove": "Eliminar",
"rename": "Renombrar",
+ "renew": "Renew",
"replace": "Remplazar",
+ "replace.with": "Replace with",
"retry": "Inténtalo de nuevo",
"revert": "Revertir",
"revert.confirm": "¿Realmente quieres eliminar todos los cambios sin guardar?",
@@ -481,12 +643,15 @@
"role.nobody.description": "Este es un rol alternativo sin permisos",
"role.nobody.title": "Nadie",
- "save": "Save",
+ "save": "Guardar",
+ "saved": "Saved",
"search": "Buscar",
+ "searching": "Searching",
"search.min": "Introduce {min} caracteres para buscar",
- "search.all": "Mostrar todo",
+ "search.all": "Show all {count} results",
"search.results.none": "Sin resultados",
+ "section.invalid": "The section is invalid",
"section.required": "Esta sección es obligatoria",
"security": "Seguridad",
@@ -498,16 +663,25 @@
"size": "Tamaño",
"slug": "Apéndice de URL",
"sort": "Ordenar",
+ "sort.drag": "Drag to sort …",
+ "split": "Split",
"stats.empty": "Sin informes",
+ "status": "Estado",
+
+ "system.info.copy": "Copy info",
+ "system.info.copied": "System info copied",
"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.",
+ "system.issues.eol.php": "Your installed PHP release { release } has reached end-of-life and will not receive further security updates",
"system.issues.debug": "La depuración debe estar desactivada en producción",
"system.issues.git": "La carpeta .git parece estar expuesta",
"system.issues.https": "Recomendamos HTTPS para todos tus sitios web",
"system.issues.kirby": "La carpeta kirby parece estar expuesta",
+ "system.issues.local": "The site is running locally with relaxed security checks",
"system.issues.site": "La carpeta site parece estar expuesta",
+ "system.issues.vue.compiler": "The Vue template compiler is enabled",
"system.issues.vulnerability.kirby": "Tu instalación podría estar afectada por la siguiente vulnerabilidad ({ severity } gravedad): { description }",
"system.issues.vulnerability.plugin": "Tu instalación podría estar afectada por la siguiente vulnerabilidad en el plugin { plugin } ({ severity } gravedad): { description }",
"system.updateStatus": "Estado de actualización",
@@ -520,10 +694,19 @@
"system.updateStatus.update": "Actualización gratuita {version} disponible",
"system.updateStatus.upgrade": "Actualización {versión} disponible",
+ "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",
- "template": "Template",
"today": "Hoy",
+ "toolbar.button.clear": "Clear formatting",
"toolbar.button.code": "Código",
"toolbar.button.bold": "Negrita",
"toolbar.button.email": "Correo electrónico",
@@ -541,6 +724,8 @@
"toolbar.button.link": "Enlace",
"toolbar.button.paragraph": "Parágrafo",
"toolbar.button.strike": "Tachado",
+ "toolbar.button.sub": "Subscript",
+ "toolbar.button.sup": "Superscript",
"toolbar.button.ol": "Lista ordenada",
"toolbar.button.underline": "Subrayado",
"toolbar.button.ul": "Lista de viñetas",
@@ -550,6 +735,8 @@
"translation.name": "Español",
"translation.locale": "es_ES",
+ "type": "Type",
+
"upload": "Subir",
"upload.error.cantMove": "El archivo subido no pudo ser movido",
"upload.error.cantWrite": "Error al escribir el archivo en el disco",
@@ -574,7 +761,8 @@
"user.changeLanguage": "Cambiar idioma",
"user.changeName": "Renombrar a este usuario",
"user.changePassword": "Cambiar contraseña",
- "user.changePassword.new": "New password",
+ "user.changePassword.current": "Your current password",
+ "user.changePassword.new": "Nueva contraseña",
"user.changePassword.new.confirm": "Confirmar nueva contraseña…",
"user.changeRole": "Cambiar rol",
"user.changeRole.select": "Seleccionar un nuevo rol",
@@ -585,10 +773,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/kirby/i18n/translations/fa.json b/kirby/i18n/translations/fa.json
index 6086cd0..3009ca6 100644
--- a/kirby/i18n/translations/fa.json
+++ b/kirby/i18n/translations/fa.json
@@ -3,64 +3,82 @@
"account.delete": "Delete your account",
"account.delete.confirm": "Do you really want to delete your account? You will be logged out immediately. Your account cannot be recovered.",
- "add": "افزودن",
+ "activate": "Activate",
+ "add": "\u0627\u0641\u0632\u0648\u062f\u0646",
+ "alpha": "Alpha",
"author": "Author",
- "avatar": "تصویر پروفایل",
+ "avatar": "\u062a\u0635\u0648\u06cc\u0631 \u067e\u0631\u0648\u0641\u0627\u06cc\u0644",
"back": "بازگشت",
- "cancel": "انصراف",
- "change": "اصلاح",
- "close": "بستن",
+ "cancel": "\u0627\u0646\u0635\u0631\u0627\u0641",
+ "change": "\u0627\u0635\u0644\u0627\u062d",
+ "close": "\u0628\u0633\u062a\u0646",
+ "changes": "Changes",
"confirm": "تایید",
"collapse": "Collapse",
"collapse.all": "Collapse All",
+ "color": "Color",
+ "coordinates": "Coordinates",
"copy": "کپی",
"copy.all": "Copy all",
+ "copy.success": "{count} copied!",
+ "copy.success.multiple": "{count} copied!",
+ "copy.url": "Copy URL",
"create": "ایجاد",
+ "custom": "Custom",
"date": "تاریخ",
"date.select": "یک تاریخ را انتخاب کنید",
"day": "روز",
- "days.fri": "جمعه",
- "days.mon": "دوشنبه",
- "days.sat": "شنبه",
- "days.sun": "یکشنبه",
- "days.thu": "پنجشنبه",
- "days.tue": "سه شنبه",
- "days.wed": "چهارشنبه",
+ "days.fri": "\u062c\u0645\u0639\u0647",
+ "days.mon": "\u062f\u0648\u0634\u0646\u0628\u0647",
+ "days.sat": "\u0634\u0646\u0628\u0647",
+ "days.sun": "\u06cc\u06a9\u0634\u0646\u0628\u0647",
+ "days.thu": "\u067e\u0646\u062c\u0634\u0646\u0628\u0647",
+ "days.tue": "\u0633\u0647 \u0634\u0646\u0628\u0647",
+ "days.wed": "\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647",
"debugging": "Debugging",
- "delete": "حذف",
+ "delete": "\u062d\u0630\u0641",
"delete.all": "Delete all",
+ "dialog.fields.empty": "This dialog has no fields",
"dialog.files.empty": "No files to select",
"dialog.pages.empty": "No pages to select",
+ "dialog.text.empty": "This dialog does not define any text",
"dialog.users.empty": "No users to select",
"dimensions": "ابعاد",
+ "disable": "Disable",
"disabled": "Disabled",
- "discard": "انصراف",
+ "discard": "\u0627\u0646\u0635\u0631\u0627\u0641",
+
+ "drawer.fields.empty": "This drawer has no fields",
+
+ "domain": "Domain",
"download": "Download",
"duplicate": "Duplicate",
- "edit": "ویرایش",
+ "edit": "\u0648\u06cc\u0631\u0627\u06cc\u0634",
- "email": "پست الکترونیک",
+ "email": "\u067e\u0633\u062a \u0627\u0644\u06a9\u062a\u0631\u0648\u0646\u06cc\u06a9",
"email.placeholder": "mail@example.com",
+ "enter": "Enter",
"entries": "Entries",
"entry": "Entry",
"environment": "Environment",
+ "error": "Error",
"error.access.code": "Invalid code",
"error.access.login": "اطلاعات ورودی نامعتبر است",
"error.access.panel": "شما اجازه دسترسی به پانل را ندارید",
"error.access.view": "You are not allowed to access this part of the panel",
"error.avatar.create.fail": "بارگزاری تصویر پروفایل موفق نبود",
- "error.avatar.delete.fail": "تصویر پروفایل را نمیتوان حذف کرد",
+ "error.avatar.delete.fail": "\u062a\u0635\u0648\u06cc\u0631 \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u0631\u0627 \u0646\u0645\u06cc\u062a\u0648\u0627\u0646 \u062d\u0630\u0641 \u06a9\u0631\u062f",
"error.avatar.dimensions.invalid": "لطفا طول و عرض تصویر پروفایل را زیر 3000 پیکسل انتخاب کنید",
"error.avatar.mime.forbidden": "تصویر پروفایل باید از نوع JPEG یا PNG باشد",
@@ -74,17 +92,35 @@
"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.entries.max.plural": "You must not add more than {max} entries",
+ "error.entries.max.singular": "You must not add more than one entry",
+ "error.entries.min.plural": "You must add at least {min} entries",
+ "error.entries.min.singular": "You must add at least one entry",
+ "error.entries.supports": "\"{type}\" field type is not supported for the entries field",
+ "error.entries.validation": "There's an error on the \"{field}\" field in row {index}",
+
"error.email.preset.notFound": "قالب ایمیل «{name}» پیدا نشد",
"error.field.converter.invalid": "مبدل «{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",
"error.file.changeName.permission": "شما اجازه تنغییر نام فایل «{filename}» را ندارید",
+ "error.file.changeTemplate.invalid": "The template for the file \"{id}\" cannot be changed to \"{template}\" (valid: \"{blueprints}\")",
+ "error.file.changeTemplate.permission": "You are not allowed to change the template for the file \"{id}\"",
+
+ "error.file.delete.multiple": "Not all files could be deleted. Try each remaining file individually to see the specific error that prevents deletion.",
"error.file.duplicate": "فایلی هم نام با «{filename}» هم اکنون موجود است",
"error.file.extension.forbidden": "پسوند فایل «{extension}» غیرمجاز است",
"error.file.extension.invalid": "Invalid extension: {extension}",
- "error.file.extension.missing": "شما نمیتوانید فایلهای بدون پسوند را آپلود کنید",
+ "error.file.extension.missing": "\u0634\u0645\u0627 \u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u0628\u062f\u0648\u0646 \u067e\u0633\u0648\u0646\u062f \u0631\u0627 \u0622\u067e\u0644\u0648\u062f \u06a9\u0646\u06cc\u062f",
"error.file.maxheight": "The height of the image must not exceed {height} pixels",
"error.file.maxsize": "The file is too large",
"error.file.maxwidth": "The width of the image must not exceed {width} pixels",
@@ -95,33 +131,43 @@
"error.file.minheight": "The height of the image must be at least {height} pixels",
"error.file.minsize": "The file is too small",
"error.file.minwidth": "The width of the image must be at least {width} pixels",
+ "error.file.name.unique": "The filename must be unique",
"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": "فایل مورد نظر پیدا نشد.",
+ "error.file.undefined": "\u0641\u0627\u06cc\u0644 \u0645\u0648\u0631\u062f \u0646\u0638\u0631 \u067e\u06cc\u062f\u0627 \u0646\u0634\u062f.",
"error.form.incomplete": "لطفا کلیه خطاهای فرم را برطرف کنید",
"error.form.notSaved": "امکان دخیره فرم وجود ندارد",
"error.language.code": "Please enter a valid code for the language",
+ "error.language.create.permission": "You are not allowed to create a language",
+ "error.language.delete.permission": "You are not allowed to delete the language",
"error.language.duplicate": "The language already exists",
"error.language.name": "Please enter a valid name for the language",
"error.language.notFound": "The language could not be found",
+ "error.language.update.permission": "You are not allowed to update the language",
"error.layout.validation.block": "There's an error on the \"{field}\" field in block {blockIndex} using the \"{fieldset}\" block type in layout {layoutIndex}",
"error.layout.validation.settings": "There's an error in layout {index} settings",
- "error.license.format": "Please enter a valid license key",
- "error.license.email": "لطفا یک ایمیل معتبر وارد کنید",
+ "error.license.domain": "The domain for the license is missing",
+ "error.license.email": "لطفا ایمیل صحیحی وارد کنید",
+ "error.license.format": "Please enter a valid license code",
"error.license.verification": "The license could not be verified",
+ "error.login.totp.confirm.invalid": "Invalid code",
+ "error.login.totp.confirm.missing": "Please enter the current code",
+
"error.object.validation": "There’s an error in the \"{label}\" field:\n{message}",
"error.offline": "The Panel is currently offline",
"error.page.changeSlug.permission": "شما امکان تغییر پسوند Url صفحه «{slug}» را ندارید",
+ "error.page.changeSlug.reserved": "The path of top-level pages must not start with \"{path}\"",
"error.page.changeStatus.incomplete": "صفحه حاوی خطا است و قابل انتشار نیست",
"error.page.changeStatus.permission": "وضعیت صفحه جاری قابل تغییر نیست",
"error.page.changeStatus.toDraft.invalid": "صفحه «{slug}» قابل تبدیل به پیش نویس نیست",
@@ -133,10 +179,18 @@
"error.page.delete": "حذف صفحه «{slug}» ممکن نیست",
"error.page.delete.confirm": "جهت ادامه عنوان صفحه را وارد کنید",
"error.page.delete.hasChildren": "این صفحه جاوی زیرصفحه است و نمی تواند حذف شود",
+ "error.page.delete.multiple": "Not all pages could be deleted. Try each remaining page individually to see the specific error that prevents deletion.",
"error.page.delete.permission": "شما اجازه حذف «{slug}» را ندارید",
"error.page.draft.duplicate": "صفحه پیشنویسی با پسوند Url مشابه «{slug}» هم اکنون موجود است",
"error.page.duplicate": "صفحهای با آدرس Url مشابه «{slug}» هم اکنون موجود است",
"error.page.duplicate.permission": "You are not allowed to duplicate \"{slug}\"",
+ "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}\"",
"error.page.notFound": "صفحه مورد نظر با آدرس «{slug}» پیدا نشد.",
"error.page.num.invalid": "لطفا شماره ترتیب را بدرستی وارد نمایید. اعداد نباید منفی باشند.",
"error.page.slug.invalid": "Please enter a valid URL appendix",
@@ -163,6 +217,8 @@
"error.site.changeTitle.permission": "شما اجازه تغییر عنوان سایت را ندارید",
"error.site.update.permission": "شما اجازه بروزرسانی سایت را ندارید",
+ "error.structure.validation": "There's an error on the \"{field}\" field in row {index}",
+
"error.template.default.notFound": "قالب پیش فرض موجود نیست",
"error.unexpected": "An unexpected error occurred! Enable debug mode for more info: https://getkirby.com/docs/reference/system/options/debug",
@@ -176,7 +232,7 @@
"error.user.changeRole.toAdmin": "You are not allowed to promote someone to the admin role",
"error.user.create.permission": "شما اجازه ایجاد این کاربر را ندارید",
"error.user.delete": "کاربر «{name}» نمی تواند حذف شود",
- "error.user.delete.lastAdmin": "حذف آخرین مدیر سیستم ممکن نیست",
+ "error.user.delete.lastAdmin": "\u062d\u0630\u0641 \u0622\u062e\u0631\u06cc\u0646 \u0645\u062f\u06cc\u0631 \u0633\u06cc\u0633\u062a\u0645 \u0645\u0645\u06a9\u0646 \u0646\u06cc\u0633\u062a",
"error.user.delete.lastUser": "حذف آخرین کاربر ممکن نیست",
"error.user.delete.permission": "شما اجازه حذف کاربر «{name}» را ندارید",
"error.user.duplicate": "کاربری با ایمیل «{email}» هم اکنون موجود است",
@@ -185,7 +241,7 @@
"error.user.notFound": "کاربر «{name}» پیدا نشد",
"error.user.password.excessive": "Please enter a valid password. Passwords must not be longer than 1000 characters.",
"error.user.password.invalid": "لطفا گذرواژه صحیحی با حداقل طول 8 حرف وارد کنید. ",
- "error.user.password.notSame": "لطفا تکرار گذرواژه را وارد نمایید",
+ "error.user.password.notSame": "\u0644\u0637\u0641\u0627 \u062a\u06a9\u0631\u0627\u0631 \u06af\u0630\u0631\u0648\u0627\u0698\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u0646\u0645\u0627\u06cc\u06cc\u062f",
"error.user.password.undefined": "کاربر فاقد گذرواژه است",
"error.user.password.wrong": "Wrong password",
"error.user.role.invalid": "لطفا نقش صحیحی وارد نمایید",
@@ -195,8 +251,10 @@
"error.validation.accepted": "لطفا تایید کنید",
"error.validation.alpha": "لطفا تنها از بین حروف a-z انتخاب کنید",
"error.validation.alphanum": "لطفا تنها از بین حروف a-z و اعداد 0-9 انتخاب کنید",
+ "error.validation.anchor": "Please enter a correct link anchor",
"error.validation.between": "لطفا مقداری مابین «{min}» و «{max}» وارد کنید",
"error.validation.boolean": "لطفا تایید یا رد کنید",
+ "error.validation.color": "Please enter a valid color in the {format} format",
"error.validation.contains": "لطفا مقداری شامل «{needle}» وارد کنید",
"error.validation.date": "لطفا تاریخ معتبری وارد کنید",
"error.validation.date.after": "Please enter a date after {date}",
@@ -204,13 +262,14 @@
"error.validation.date.between": "Please enter a date between {min} and {max}",
"error.validation.denied": "لطفا رد کنید",
"error.validation.different": "مقدار نباید مساوی «{other}» باشد",
- "error.validation.email": "لطفا یک ایمیل معتبر وارد کنید",
+ "error.validation.email": "لطفا ایمیل صحیحی وارد کنید",
"error.validation.endswith": "مقدار باید با «{end}» ختم شود",
"error.validation.filename": "لطفا نام فایل صحیحی وارد کنید",
"error.validation.in": "لطفا یکی از مقادیر روبرو را وارد کنید: ({in})",
"error.validation.integer": "لطفا عدد صحیحی وارد کنید",
"error.validation.ip": "لطفا IP آدرس صحیحی وارد کنید",
"error.validation.less": "لطفا مقداری کمتر از {max} وارد کنید",
+ "error.validation.linkType": "The link type is not allowed",
"error.validation.match": "مقدار وارد شده با الگوی مورد نظر همخوانی ندارد",
"error.validation.max": "لطفا مقداری کوچکتر یا مساوی {min} وارد کنید",
"error.validation.maxlength": "لطفا عبارت کوتاهتری وارد کنید. (حداکثر {max} حرف)",
@@ -227,15 +286,18 @@
"error.validation.same": "لطفا مقدار «{other}» را وارد کنید",
"error.validation.size": "اندازه ورودی باید معادل «{size}» باشد",
"error.validation.startswith": "مقدار باید با «{start}» شروع شود",
+ "error.validation.tel": "Please enter an unformatted phone number",
"error.validation.time": "لطفا زمان معتبری وارد کنید",
"error.validation.time.after": "Please enter a time after {time}",
"error.validation.time.before": "Please enter a time before {time}",
"error.validation.time.between": "Please enter a time between {min} and {max}",
+ "error.validation.uuid": "Please enter a valid UUID",
"error.validation.url": "لطفا آدرس URL صحیح وارد کنید",
"expand": "Expand",
"expand.all": "Expand All",
+ "field.invalid": "The field is invalid",
"field.required": "The field is required",
"field.blocks.changeType": "Change type",
"field.blocks.code.name": "کد",
@@ -245,8 +307,9 @@
"field.blocks.delete.confirm.all": "Do you really want to delete all blocks?",
"field.blocks.delete.confirm.selected": "Do you really want to delete the selected blocks?",
"field.blocks.empty": "No blocks yet",
+ "field.blocks.fieldsets.empty": "No fieldsets yet",
"field.blocks.fieldsets.label": "Please select a block type …",
- "field.blocks.fieldsets.paste": "Press {{ shortcut }} to paste/import blocks from your clipboard",
+ "field.blocks.fieldsets.paste": "Press {{ shortcut }} to import layouts/blocks from your clipboard Only those allowed in the current field will get inserted.",
"field.blocks.gallery.name": "Gallery",
"field.blocks.gallery.images.empty": "No images yet",
"field.blocks.gallery.images.label": "Images",
@@ -254,11 +317,16 @@
"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",
"field.blocks.image.link": "پیوند",
"field.blocks.image.location": "Location",
+ "field.blocks.image.location.internal": "This website",
+ "field.blocks.image.location.external": "External source",
"field.blocks.image.name": "تصویر",
"field.blocks.image.placeholder": "Select an image",
"field.blocks.image.ratio": "Ratio",
@@ -275,41 +343,75 @@
"field.blocks.quote.citation.placeholder": "by …",
"field.blocks.text.name": "Text",
"field.blocks.text.placeholder": "Text …",
+ "field.blocks.video.autoplay": "Autoplay",
"field.blocks.video.caption": "Caption",
+ "field.blocks.video.controls": "Controls",
+ "field.blocks.video.location": "Location",
+ "field.blocks.video.loop": "Loop",
+ "field.blocks.video.muted": "Muted",
"field.blocks.video.name": "Video",
"field.blocks.video.placeholder": "Enter a video URL",
+ "field.blocks.video.poster": "Poster",
+ "field.blocks.video.preload": "Preload",
"field.blocks.video.url.label": "Video-URL",
"field.blocks.video.url.placeholder": "https://youtube.com/?v=",
- "field.files.empty": "فایلی انتخاب نشده است",
+ "field.entries.delete.confirm.all": "Do you really want to delete all entries?",
+ "field.entries.empty": "موردی وجود ندارد.",
+ "field.files.empty": "فایلی انتخاب نشده است",
+ "field.files.empty.single": "No file selected yet",
+
+ "field.layout.change": "Change layout",
"field.layout.delete": "Delete layout",
"field.layout.delete.confirm": "Do you really want to delete this layout?",
+ "field.layout.delete.confirm.all": "Do you really want to delete all layouts?",
"field.layout.empty": "No rows yet",
"field.layout.select": "Select a layout",
"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": "\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": "موردی وجود ندارد.",
+ "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",
+
+ "file": "File",
"file.blueprint": "This file has no blueprint yet. You can define the setup in /site/blueprints/files/{blueprint}.yml",
+ "file.changeTemplate": "تغییر قالب",
+ "file.changeTemplate.notice": "Changing the file's template will remove content for fields that don't match in type. If the new template defines certain rules, e.g. image dimensions, those will also be applied irreversibly. Use with caution.",
"file.delete.confirm": "آیا واقعا می خواهید این فایل را حذف کنید؟
{filename}",
+ "file.focus.placeholder": "Set focal point",
+ "file.focus.reset": "Remove focal point",
+ "file.focus.title": "Focus",
"file.sort": "Change position",
"files": "فایلها",
+ "files.delete.confirm.selected": "Do you really want to delete the selected files? This action cannot be undone.",
"files.empty": "فایلی موجود نیست",
+ "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",
"import": "Import",
"info": "Info",
- "insert": "درج",
+ "insert": "\u062f\u0631\u062c",
"insert.after": "Insert after",
"insert.before": "Insert before",
"install": "نصب",
@@ -324,14 +426,14 @@
"installation.issues.mbstring": "افزونه MB String
مورد نیاز است",
"installation.issues.media": "پوشه /media
موجود نیست یا قابل نوشتن نیست",
"installation.issues.php": "لطفا از پیاچپی 8 یا بالاتر استفاده کنید",
- "installation.issues.server": "کربی نیاز به Apache
، Nginx
یا Caddy
دارد",
"installation.issues.sessions": "پوشه /site/sessions
وجود ندارد یا قابل نوشتن نیست",
- "language": "زبان",
+ "language": "\u0632\u0628\u0627\u0646",
"language.code": "کد",
"language.convert": "پیشفرض شود",
"language.convert.confirm": "{secret}
manually to your authenticator app.",
+ "login.totp.enable.confirm.headline": "2. Confirm with generated code",
+ "login.totp.enable.confirm.text": "Your app generates a new one‑time code every 30 seconds. Enter the current code to complete the setup:",
+ "login.totp.enable.confirm.label": "Current code",
+ "login.totp.enable.confirm.help": "After this setup, we will ask you for a one‑time code every time you log in.",
+ "login.totp.enable.success": "One‑time codes enabled",
+ "login.totp.disable.option": "Disable one‑time codes",
+ "login.totp.disable.label": "Enter your password to disable one‑time codes",
+ "login.totp.disable.help": "In the future, a different second factor like a login code sent via email will be requested when you log in. You can always set up one‑time codes again later.",
+ "login.totp.disable.admin": "
تمام زیر صفحات نیز حذف خواهد شد.",
"page.delete.confirm.title": "جهت ادامه عنوان صفحه را وارد کنید",
- "page.draft.create": "ایجاد پیشنویس",
"page.duplicate.appendix": "کپی",
"page.duplicate.files": "Copy files",
"page.duplicate.pages": "Copy pages",
+ "page.move": "Move page",
"page.sort": "Change position",
"page.status": "وضعیت",
"page.status.draft": "پیشنویس",
@@ -450,6 +604,7 @@
"page.status.unlisted.description": "این صفحه فقط از طریق URL قابل دسترسی است",
"pages": "صفحات",
+ "pages.delete.confirm.selected": "Do you really want to delete the selected pages? This action cannot be undone.",
"pages.empty": "هنوز هیچ صفحهای موجود نیست",
"pages.status.draft": "پیشنویسها",
"pages.status.listed": "منتشر شده",
@@ -457,22 +612,29 @@
"pagination.page": "صفحه",
- "password": "گذرواژه",
+ "password": "\u06af\u0630\u0631\u0648\u0627\u0698\u0647",
"paste": "Paste",
"paste.after": "Paste after",
+ "paste.success": "{count} pasted!",
"pixel": "پیکسل",
"plugin": "Plugin",
"plugins": "Plugins",
"prev": "قبلی",
"preview": "Preview",
+
+ "publish": "Publish",
+ "published": "منتشر شده",
+
"remove": "حذف",
"rename": "تغییر نام",
- "replace": "جایگزینی",
- "retry": "تلاش مجدد",
+ "renew": "Renew",
+ "replace": "\u062c\u0627\u06cc\u06af\u0632\u06cc\u0646\u06cc",
+ "replace.with": "Replace with",
+ "retry": "\u062a\u0644\u0627\u0634 \u0645\u062c\u062f\u062f",
"revert": "بازگرداندن تغییرات",
"revert.confirm": "Do you really want to delete all unsaved changes?",
- "role": "نقش",
+ "role": "\u0646\u0642\u0634",
"role.admin.description": "The admin has all rights",
"role.admin.title": "Admin",
"role.all": "همه",
@@ -481,12 +643,15 @@
"role.nobody.description": "This is a fallback role without any permissions",
"role.nobody.title": "Nobody",
- "save": "ذخیره",
+ "save": "\u0630\u062e\u06cc\u0631\u0647",
+ "saved": "Saved",
"search": "جستجو",
+ "searching": "Searching",
"search.min": "Enter {min} characters to search",
- "search.all": "Show all",
+ "search.all": "Show all {count} results",
"search.results.none": "No results",
+ "section.invalid": "The section is invalid",
"section.required": "The section is required",
"security": "Security",
@@ -498,16 +663,25 @@
"size": "اندازه",
"slug": "پسوند Url",
"sort": "ترتیب",
+ "sort.drag": "Drag to sort …",
+ "split": "Split",
"stats.empty": "No reports",
+ "status": "وضعیت",
+
+ "system.info.copy": "Copy info",
+ "system.info.copied": "System info copied",
"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",
+ "system.issues.eol.php": "Your installed PHP release { release } has reached end-of-life and will not receive further security updates",
"system.issues.debug": "Debugging must be turned off in production",
"system.issues.git": "The .git folder seems to be exposed",
"system.issues.https": "We recommend HTTPS for all your sites",
"system.issues.kirby": "The kirby folder seems to be exposed",
+ "system.issues.local": "The site is running locally with relaxed security checks",
"system.issues.site": "The site folder seems to be exposed",
+ "system.issues.vue.compiler": "The Vue template compiler is enabled",
"system.issues.vulnerability.kirby": "Your installation might be affected by the following vulnerability ({ severity } severity): { description }",
"system.issues.vulnerability.plugin": "Your installation might be affected by the following vulnerability in the { plugin } plugin ({ severity } severity): { description }",
"system.updateStatus": "Update status",
@@ -520,13 +694,22 @@
"system.updateStatus.update": "Free update { version } available",
"system.updateStatus.upgrade": "Upgrade { version } available",
+ "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": "عنوان",
- "template": "قالب صفحه",
"today": "امروز",
+ "toolbar.button.clear": "Clear formatting",
"toolbar.button.code": "کد",
- "toolbar.button.bold": "متن با حروف درشت",
- "toolbar.button.email": "پست الکترونیک",
+ "toolbar.button.bold": "\u0645\u062a\u0646 \u0628\u0627 \u062d\u0631\u0648\u0641 \u062f\u0631\u0634\u062a",
+ "toolbar.button.email": "\u067e\u0633\u062a \u0627\u0644\u06a9\u062a\u0631\u0648\u0646\u06cc\u06a9",
"toolbar.button.headings": "عنوانها",
"toolbar.button.heading.1": "عنوان 1",
"toolbar.button.heading.2": "عنوان 2",
@@ -534,13 +717,15 @@
"toolbar.button.heading.4": "Heading 4",
"toolbar.button.heading.5": "Heading 5",
"toolbar.button.heading.6": "Heading 6",
- "toolbar.button.italic": "متن اریب",
- "toolbar.button.file": "File",
+ "toolbar.button.italic": "\u0645\u062a\u0646 \u0627\u0631\u06cc\u0628",
+ "toolbar.button.file": "فایل",
"toolbar.button.file.select": "Select a file",
"toolbar.button.file.upload": "Upload a file",
- "toolbar.button.link": "پیوند",
+ "toolbar.button.link": "\u067e\u06cc\u0648\u0646\u062f",
"toolbar.button.paragraph": "Paragraph",
"toolbar.button.strike": "Strike-through",
+ "toolbar.button.sub": "Subscript",
+ "toolbar.button.sup": "Superscript",
"toolbar.button.ol": "لیست مرتب",
"toolbar.button.underline": "Underline",
"toolbar.button.ul": "لیست معمولی",
@@ -550,6 +735,8 @@
"translation.name": "انگلیسی",
"translation.locale": "fa_IR",
+ "type": "Type",
+
"upload": "بارگذاری",
"upload.error.cantMove": "The uploaded file could not be moved",
"upload.error.cantWrite": "Failed to write file to disk",
@@ -562,7 +749,7 @@
"upload.error.noFiles": "No files were uploaded",
"upload.error.partial": "The uploaded file was only partially uploaded",
"upload.error.tmpDir": "Missing a temporary folder",
- "upload.errors": "Error",
+ "upload.errors": "خطا",
"upload.progress": "در حال بارگذاری...",
"url": "Url",
@@ -574,6 +761,7 @@
"user.changeLanguage": "تغییر زبان",
"user.changeName": "تغییر نام این کاربر",
"user.changePassword": "تغییر گذرواژه",
+ "user.changePassword.current": "Your current password",
"user.changePassword.new": "گذرواژه جدید",
"user.changePassword.new.confirm": "تایید گذرواژه جدید...",
"user.changeRole": "تغییر نقش",
@@ -584,18 +772,21 @@
"users": "کاربران",
- "version": "نسخه نرم افزار",
+ "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": "نصب و راه اندازی",
+ "view.installation": "\u0646\u0635\u0628 \u0648 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc",
"view.languages": "زبانها",
"view.resetPassword": "Reset password",
"view.site": "سایت",
"view.system": "System",
- "view.users": "کاربران",
+ "view.users": "\u06a9\u0627\u0631\u0628\u0631\u0627\u0646",
"welcome": "خوش آمدید",
"year": "سال",
diff --git a/kirby/i18n/translations/fi.json b/kirby/i18n/translations/fi.json
index 9f37323..75a75f5 100644
--- a/kirby/i18n/translations/fi.json
+++ b/kirby/i18n/translations/fi.json
@@ -3,19 +3,28 @@
"account.delete": "Poista tilisi",
"account.delete.confirm": "Haluatko varmasti poistaa tilisi? Sinut kirjataan ulos välittömästi, eikä tiliäsi voi palauttaa.",
- "add": "Lisää",
+ "activate": "Activate",
+ "add": "Lis\u00e4\u00e4",
+ "alpha": "Alpha",
"author": "Tekijä",
"avatar": "Profiilikuva",
"back": "Takaisin",
"cancel": "Peruuta",
"change": "Muuta",
"close": "Sulje",
+ "changes": "Changes",
"confirm": "Ok",
"collapse": "Pienennä",
"collapse.all": "Pienennä kaikki",
+ "color": "Color",
+ "coordinates": "Coordinates",
"copy": "Kopioi",
"copy.all": "Kopioi kaikki",
+ "copy.success": "{count} copied!",
+ "copy.success.multiple": "{count} copied!",
+ "copy.url": "Copy URL",
"create": "Luo",
+ "custom": "Custom",
"date": "Päivämäärä",
"date.select": "Valitse päivämäärä",
@@ -34,26 +43,35 @@
"delete": "Poista",
"delete.all": "Poista kaikki",
+ "dialog.fields.empty": "This dialog has no fields",
"dialog.files.empty": "Ei valittavissa olevia tiedostoja",
"dialog.pages.empty": "Ei valittavissa olevia sivuja",
+ "dialog.text.empty": "This dialog does not define any text",
"dialog.users.empty": "Ei valittavissa olevia käyttäjiä",
"dimensions": "Mitat",
+ "disable": "Disable",
"disabled": "Pois käytöstä",
"discard": "Hylkää",
+
+ "drawer.fields.empty": "This drawer has no fields",
+
+ "domain": "Domain",
"download": "Lataa",
"duplicate": "Kahdenna",
"edit": "Muokkaa",
- "email": "Sähköposti",
+ "email": "S\u00e4hk\u00f6posti",
"email.placeholder": "nimi@osoite.fi",
+ "enter": "Enter",
"entries": "Entries",
"entry": "Entry",
"environment": "Ympäristö",
+ "error": "Error",
"error.access.code": "Väärä koodi",
"error.access.login": "Kirjautumistiedot eivät kelpaa",
"error.access.panel": "Sinulla ei ole oikeutta käyttää paneelia",
@@ -74,13 +92,31 @@
"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.entries.max.plural": "You must not add more than {max} entries",
+ "error.entries.max.singular": "You must not add more than one entry",
+ "error.entries.min.plural": "You must add at least {min} entries",
+ "error.entries.min.singular": "You must add at least one entry",
+ "error.entries.supports": "\"{type}\" field type is not supported for the entries field",
+ "error.entries.validation": "There's an error on the \"{field}\" field in row {index}",
+
"error.email.preset.notFound": "Nimellä \"{name}\" ja kyseisellä verkkotunnuksella ei löydy sähköpostiosoitetta",
"error.field.converter.invalid": "Muunnin \"{converter}\" ei kelpaa",
+ "error.field.link.options": "Invalid options: {options}",
"error.field.type.missing": "Field \"{ name }\": The field type \"{ type }\" does not exist",
"error.file.changeName.empty": "Nimi ei voi olla tyhjä",
"error.file.changeName.permission": "Sinulla ei ole oikeutta muuttaa tiedoston \"{filename}\" nimeä",
+ "error.file.changeTemplate.invalid": "The template for the file \"{id}\" cannot be changed to \"{template}\" (valid: \"{blueprints}\")",
+ "error.file.changeTemplate.permission": "You are not allowed to change the template for the file \"{id}\"",
+
+ "error.file.delete.multiple": "Not all files could be deleted. Try each remaining file individually to see the specific error that prevents deletion.",
"error.file.duplicate": "Tiedosto nimeltä \"{filename}\" on jo olemassa",
"error.file.extension.forbidden": "Tiedostopääte \"{extension}\" ei ole sallittu",
"error.file.extension.invalid": "Pääte {extension} ei kelpaa",
@@ -95,33 +131,43 @@
"error.file.minheight": "Kuvan korkeus täytyy olla vähintään {height} pikseliä",
"error.file.minsize": "Tiedosto on liian pieni",
"error.file.minwidth": "Kuvan leveys täytyy olla vähintään {width} pikseliä",
+ "error.file.name.unique": "The filename must be unique",
"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öytynyt",
+ "error.file.undefined": "Tiedostoa ei l\u00f6ytynyt",
"error.form.incomplete": "Korjaa kaikki lomakkeen virheet…",
"error.form.notSaved": "Lomaketta ei voitu tallentaa",
"error.language.code": "Anna kielen lyhenne",
+ "error.language.create.permission": "You are not allowed to create a language",
+ "error.language.delete.permission": "You are not allowed to delete the language",
"error.language.duplicate": "Kieli on jo olemassa",
"error.language.name": "Anna kielen nimi",
"error.language.notFound": "Kieltä ei löytynyt",
+ "error.language.update.permission": "You are not allowed to update the language",
"error.layout.validation.block": "There's an error on the \"{field}\" field in block {blockIndex} using the \"{fieldset}\" block type in layout {layoutIndex}",
"error.layout.validation.settings": "Virhe asetelman {index} asetuksissa",
- "error.license.format": "Anna lisenssiavain",
- "error.license.email": "Anna kelpaava sähköpostiosoite",
+ "error.license.domain": "The domain for the license is missing",
+ "error.license.email": "Anna sähköpostiosoite",
+ "error.license.format": "Please enter a valid license code",
"error.license.verification": "Lisenssiä ei voitu vahvistaa",
+ "error.login.totp.confirm.invalid": "Väärä koodi",
+ "error.login.totp.confirm.missing": "Please enter the current code",
+
"error.object.validation": "There’s an error in the \"{label}\" field:\n{message}",
"error.offline": "Paneeli on offline-tilassa",
"error.page.changeSlug.permission": "Sinulla ei ole oikeutta muuttaa URL-liitettä sivulle \"{slug}\"",
+ "error.page.changeSlug.reserved": "The path of top-level pages must not start with \"{path}\"",
"error.page.changeStatus.incomplete": "Sivulla on virheitä eikä sitä voitu julkaista",
"error.page.changeStatus.permission": "Tämän sivun tilaa ei voi muuttaa",
"error.page.changeStatus.toDraft.invalid": "Sivua \"{slug}\" ei voi muuttaa luonnokseksi",
@@ -133,17 +179,25 @@
"error.page.delete": "Sivua \"{slug}\" ei voi poistaa",
"error.page.delete.confirm": "Anna vahvistuksena sivun nimi",
"error.page.delete.hasChildren": "Sivu sisältää alasivuja eikä sitä voida poistaa",
+ "error.page.delete.multiple": "Not all pages could be deleted. Try each remaining page individually to see the specific error that prevents deletion.",
"error.page.delete.permission": "Sinulla ei ole oikeutta poistaa sivua \"{slug}\"",
"error.page.draft.duplicate": "Sivuluonnos URL-liitteellä \"{slug}\" on jo olemassa",
"error.page.duplicate": "Sivu URL-liitteellä \"{slug}\" on jo olemassa",
"error.page.duplicate.permission": "Sinulla ei ole oikeutta kahdentaa sivua \"{slug}\"",
+ "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}\"",
"error.page.notFound": "Sivua \"{slug}\" ei löytynyt",
"error.page.num.invalid": "Anna kelpaava järjestysnumero. Numero ei voi olla negatiivinen.",
"error.page.slug.invalid": "Anna kelpaava URL-liite",
"error.page.slug.maxlength": "URL-liite täytyy olla vähemmän kuin \"{length}\" merkkiä pitkä",
"error.page.sort.permission": "Sivua \"{slug}\" ei voi järjestellä",
"error.page.status.invalid": "Aseta kelvollinen sivun tila",
- "error.page.undefined": "Sivua ei löytynyt",
+ "error.page.undefined": "Sivua ei l\u00f6ytynyt",
"error.page.update.permission": "Sinulla ei ole oikeutta päivittää sivua \"{slug}\"",
"error.section.files.max.plural": "Et voi lisätä enemmän kuin {max} tiedostoa osioon \"{section}\"",
@@ -163,6 +217,8 @@
"error.site.changeTitle.permission": "Sinulla ei ole oikeutta päivittää sivuston nimeä",
"error.site.update.permission": "Sinulla ei ole oikeutta päivittää sivuston tietoja",
+ "error.structure.validation": "There's an error on the \"{field}\" field in row {index}",
+
"error.template.default.notFound": "Oletussivupohjaa ei ole määritetty",
"error.unexpected": "Pahus, määrittelemätön virhe! Laita virheenkäsittelytila päälle saadaksesi lisätietoja: https://getkirby.com/docs/reference/system/options/debug",
@@ -182,7 +238,7 @@
"error.user.duplicate": "Käyttäjä, jonka sähköpostiosoite on \"{name}\", on jo olemassa",
"error.user.email.invalid": "Anna kelpaava sähköpostiosoite",
"error.user.language.invalid": "Anna kelpaava kieli",
- "error.user.notFound": "Käyttäjää ei löytynyt",
+ "error.user.notFound": "K\u00e4ytt\u00e4j\u00e4\u00e4 ei l\u00f6ytynyt",
"error.user.password.excessive": "Please enter a valid password. Passwords must not be longer than 1000 characters.",
"error.user.password.invalid": "Anna kelpaava salasana. Salasanan täytyy olla ainakin 8 merkkiä pitkä.",
"error.user.password.notSame": "Salasanat eivät täsmää",
@@ -195,8 +251,10 @@
"error.validation.accepted": "Ole hyvä ja vahvista",
"error.validation.alpha": "Anna vain merkkejä väliltä a-z",
"error.validation.alphanum": "Anna vain merkkejä väliltä a-z tai/ja numeroita väliltä 0-9",
+ "error.validation.anchor": "Please enter a correct link anchor",
"error.validation.between": "Anna arvo väliltä \"{min}\" ja \"{max}\"",
"error.validation.boolean": "Vahvista tai peruuta",
+ "error.validation.color": "Please enter a valid color in the {format} format",
"error.validation.contains": "Anna arvo joka sisältää \"{needle}\"",
"error.validation.date": "Anna kelpaava päivämäärä",
"error.validation.date.after": "Anna päivämäärä {date} jälkeen",
@@ -211,6 +269,7 @@
"error.validation.integer": "Anna kelpaava kokonaisluku",
"error.validation.ip": "Anna kelpaava IP-osoite",
"error.validation.less": "Anna arvo joka on pienempi kuin {max}",
+ "error.validation.linkType": "The link type is not allowed",
"error.validation.match": "Arvo ei vastaa vaadittua kaavaa",
"error.validation.max": "Anna arvo joka on enintään {max}",
"error.validation.maxlength": "Anna lyhyempi arvo. (enintään {max} merkkiä)",
@@ -227,26 +286,30 @@
"error.validation.same": "Anna \"{other}\"",
"error.validation.size": "Arvon koko täytyy olla \"{size}\"",
"error.validation.startswith": "Arvon alkuosa täytyy olla \"{start}\"",
+ "error.validation.tel": "Please enter an unformatted phone number",
"error.validation.time": "Anna kelpaava aika",
"error.validation.time.after": "Anna myöhempi aika kuin {time}",
"error.validation.time.before": "Anna aiempi aika kuin {time}",
"error.validation.time.between": "Anna aika väliltä {min} ja {max}",
+ "error.validation.uuid": "Please enter a valid UUID",
"error.validation.url": "Anna kelpaava URL",
"expand": "Laajenna",
"expand.all": "Laajenna kaikki",
+ "field.invalid": "The field is invalid",
"field.required": "Kenttä on pakollinen",
"field.blocks.changeType": "Vaihda tyyppiä",
- "field.blocks.code.name": "Tunniste",
+ "field.blocks.code.name": "Koodi",
"field.blocks.code.language": "Kieli",
"field.blocks.code.placeholder": "Koodisi …",
"field.blocks.delete.confirm": "Haluatko varmasti poistaa tämän lohkon?",
"field.blocks.delete.confirm.all": "Haluatko varmasti poistaa kaikki lohkot?",
"field.blocks.delete.confirm.selected": "Haluatko varmasti poistaa valitut lohkot?",
"field.blocks.empty": "Ei lohkoja",
+ "field.blocks.fieldsets.empty": "No fieldsets yet",
"field.blocks.fieldsets.label": "Valitse lohkon tyyppi …",
- "field.blocks.fieldsets.paste": "Paina {{ shortcut }} liittääksesi tai tuodaksesi lohkoja leikepöydältä",
+ "field.blocks.fieldsets.paste": "Press {{ shortcut }} to import layouts/blocks from your clipboard Only those allowed in the current field will get inserted.",
"field.blocks.gallery.name": "Galleria",
"field.blocks.gallery.images.empty": "Ei kuvia",
"field.blocks.gallery.images.label": "Kuvat",
@@ -254,11 +317,16 @@
"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",
"field.blocks.image.link": "Linkki",
"field.blocks.image.location": "Sijainti",
+ "field.blocks.image.location.internal": "This website",
+ "field.blocks.image.location.external": "External source",
"field.blocks.image.name": "Kuva",
"field.blocks.image.placeholder": "Valitse kuva",
"field.blocks.image.ratio": "Kuvasuhde",
@@ -275,41 +343,75 @@
"field.blocks.quote.citation.placeholder": "Lähde …",
"field.blocks.text.name": "Teksti",
"field.blocks.text.placeholder": "Teksti …",
- "field.blocks.video.caption": "Kuvateksti",
+ "field.blocks.video.autoplay": "Autoplay",
+ "field.blocks.video.caption": "Videon teksti",
+ "field.blocks.video.controls": "Controls",
+ "field.blocks.video.location": "Sijainti",
+ "field.blocks.video.loop": "Loop",
+ "field.blocks.video.muted": "Muted",
"field.blocks.video.name": "Video",
"field.blocks.video.placeholder": "Anna videon URL",
+ "field.blocks.video.poster": "Poster",
+ "field.blocks.video.preload": "Preload",
"field.blocks.video.url.label": "Videon URL",
"field.blocks.video.url.placeholder": "https://youtube.com/?v=",
- "field.files.empty": "Tiedostoja ei ole vielä valittu",
+ "field.entries.delete.confirm.all": "Do you really want to delete all entries?",
+ "field.entries.empty": "Rivejä ei ole vielä lisätty",
+ "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",
"field.layout.delete.confirm": "Halutako varmasti poistaa tämän asettelun?",
+ "field.layout.delete.confirm.all": "Do you really want to delete all layouts?",
"field.layout.empty": "Ei rivejä",
"field.layout.select": "Valitse asettelu",
"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",
+
+ "file": "File",
"file.blueprint": "Tällä tiedostolla ei ole vielä suunnitelmaa. Voit määrittää suunnitelman tiedostoon /site/blueprints/files/{blueprint}.yml",
+ "file.changeTemplate": "Vaihda sivupohja",
+ "file.changeTemplate.notice": "Changing the file's template will remove content for fields that don't match in type. If the new template defines certain rules, e.g. image dimensions, those will also be applied irreversibly. Use with caution.",
"file.delete.confirm": "Haluatko varmasti poistaa tiedoston
{filename}?",
+ "file.focus.placeholder": "Set focal point",
+ "file.focus.reset": "Remove focal point",
+ "file.focus.title": "Focus",
"file.sort": "Muuta järjestyspaikkaa",
"files": "Tiedostot",
+ "files.delete.confirm.selected": "Do you really want to delete the selected files? This action cannot be undone.",
"files.empty": "Tiedostoja ei ole vielä lisätty",
+ "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",
"import": "Tuo",
"info": "Tietoja",
- "insert": "Lisää",
+ "insert": "Lis\u00e4\u00e4",
"insert.after": "Lisää eteen",
"insert.before": "Lisää jälkeen",
"install": "Asenna",
@@ -324,7 +426,6 @@
"installation.issues.mbstring": "MB String
-laajennos on pakollinen",
"installation.issues.media": "/media
-kansio ei ole olemassa tai siihen ei voi kirjoittaa",
"installation.issues.php": "Varmista että PHP 8+
on käytössä",
- "installation.issues.server": "Kirby tarvitsee jonkun seuraavista: Apache
, Nginx
tai Caddy
",
"installation.issues.sessions": "/site/sessions
-kansio ei ole olemassa tai siihen ei voi kirjoittaa",
"language": "Kieli",
@@ -332,6 +433,7 @@
"language.convert": "Muuta oletukseksi",
"language.convert.confirm": "{secret}
manually to your authenticator app.",
+ "login.totp.enable.confirm.headline": "2. Confirm with generated code",
+ "login.totp.enable.confirm.text": "Your app generates a new one‑time code every 30 seconds. Enter the current code to complete the setup:",
+ "login.totp.enable.confirm.label": "Current code",
+ "login.totp.enable.confirm.help": "After this setup, we will ask you for a one‑time code every time you log in.",
+ "login.totp.enable.success": "One‑time codes enabled",
+ "login.totp.disable.option": "Disable one‑time codes",
+ "login.totp.disable.label": "Enter your password to disable one‑time codes",
+ "login.totp.disable.help": "In the future, a different second factor like a login code sent via email will be requested when you log in. You can always set up one‑time codes again later.",
+ "login.totp.disable.admin": "
Myös kaikki alasivut poistetaan.",
"page.delete.confirm.title": "Anna vahvistuksena sivun nimi",
- "page.draft.create": "Uusi luonnos",
"page.duplicate.appendix": "Kopioi",
"page.duplicate.files": "Kopioi tiedostot",
"page.duplicate.pages": "Kopioi sivut",
+ "page.move": "Move page",
"page.sort": "Muuta järjestyspaikkaa",
"page.status": "Tila",
"page.status.draft": "Luonnos",
@@ -450,29 +604,37 @@
"page.status.unlisted.description": "Sivulle pääsee vain URL:n kautta",
"pages": "Sivut",
+ "pages.delete.confirm.selected": "Do you really want to delete the selected pages? This action cannot be undone.",
"pages.empty": "Sivuja ei ole vielä lisätty",
"pages.status.draft": "Luonnokset",
"pages.status.listed": "Julkaistut",
"pages.status.unlisted": "Listaamaton",
- "pagination.page": "Page",
+ "pagination.page": "Sivu",
"password": "Salasana",
"paste": "Liitä",
"paste.after": "Liitä jälkeen",
+ "paste.success": "{count} pasted!",
"pixel": "Pikseli",
"plugin": "Liitännäinen",
"plugins": "Liitännäiset",
"prev": "Edellinen",
"preview": "Esikatselu",
+
+ "publish": "Publish",
+ "published": "Julkaistut",
+
"remove": "Poista",
"rename": "Nimeä uudelleen",
+ "renew": "Renew",
"replace": "Korvaa",
- "retry": "Yritä uudelleen",
+ "replace.with": "Replace with",
+ "retry": "Yrit\u00e4 uudelleen",
"revert": "Palauta",
"revert.confirm": "Haluatko varmasti poistaa kaikki tallentamattomat muutokset?",
- "role": "Käyttäjätaso",
+ "role": "K\u00e4ytt\u00e4j\u00e4taso",
"role.admin.description": "Pääkäyttäjällä on kaikki oikeudet",
"role.admin.title": "Pääkäyttäjä",
"role.all": "Kaikki",
@@ -482,11 +644,14 @@
"role.nobody.title": "Tuntematon",
"save": "Tallenna",
+ "saved": "Saved",
"search": "Haku",
+ "searching": "Searching",
"search.min": "Anna vähintään {min} merkkiä hakua varten",
- "search.all": "Näytä kaikki",
+ "search.all": "Show all {count} results",
"search.results.none": "Ei tuloksia",
+ "section.invalid": "The section is invalid",
"section.required": "Osio on pakollinen",
"security": "Tietoturva",
@@ -498,16 +663,25 @@
"size": "Koko",
"slug": "URL-tunniste",
"sort": "Järjestele",
+ "sort.drag": "Drag to sort …",
+ "split": "Split",
"stats.empty": "Ei raportteja",
+ "status": "Tila",
+
+ "system.info.copy": "Copy info",
+ "system.info.copied": "System info copied",
"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",
+ "system.issues.eol.php": "Your installed PHP release { release } has reached end-of-life and will not receive further security updates",
"system.issues.debug": "Virheenkäsittelytila pitää poistaa käytöstä tuotantoympäristössä",
"system.issues.git": ".git-kansio näyttäisi olevan julkinen",
"system.issues.https": "Suosittelemme HTTPS:n käyttöä kaikilla sivustoillasi",
"system.issues.kirby": "Kirby-kansio näyttäisi olevan julkinen",
+ "system.issues.local": "The site is running locally with relaxed security checks",
"system.issues.site": "Site-kansio näyttäisi olevan julkinen",
+ "system.issues.vue.compiler": "The Vue template compiler is enabled",
"system.issues.vulnerability.kirby": "Asennuksesi voi olla altis seuraaville haavoittuvuuksille ({ severity } vakavuus): { description }",
"system.issues.vulnerability.plugin": "Asennuksesi käyttämä liitännäinen { plugin } voi olla altis haavoittuvuudelle ({ severity } vakavuus): { description }",
"system.updateStatus": "Päivitysten tilanne",
@@ -520,13 +694,22 @@
"system.updateStatus.update": "Ilmainen päivitys { version } saatavilla",
"system.updateStatus.upgrade": "Päivitys { version } saatavilla",
- "title": "Nimi",
+ "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",
- "toolbar.button.code": "Tunniste",
+ "toolbar.button.clear": "Clear formatting",
+ "toolbar.button.code": "Koodi",
"toolbar.button.bold": "Lihavointi",
- "toolbar.button.email": "Sähköposti",
+ "toolbar.button.email": "S\u00e4hk\u00f6posti",
"toolbar.button.headings": "Otsikot",
"toolbar.button.heading.1": "Otsikko 1",
"toolbar.button.heading.2": "Otsikko 2",
@@ -535,12 +718,14 @@
"toolbar.button.heading.5": "Otsikko 5",
"toolbar.button.heading.6": "Otsikko 6",
"toolbar.button.italic": "Kursivointi",
- "toolbar.button.file": "File",
+ "toolbar.button.file": "Tiedosto",
"toolbar.button.file.select": "Valitse tiedosto",
"toolbar.button.file.upload": "Lähetä tiedosto",
"toolbar.button.link": "Linkki",
"toolbar.button.paragraph": "Kappale",
"toolbar.button.strike": "Yliviivaus",
+ "toolbar.button.sub": "Subscript",
+ "toolbar.button.sup": "Superscript",
"toolbar.button.ol": "Järjestetty lista",
"toolbar.button.underline": "Alaviiva",
"toolbar.button.ul": "Järjestämätön lista",
@@ -550,6 +735,8 @@
"translation.name": "Suomi",
"translation.locale": "fi_FI",
+ "type": "Type",
+
"upload": "Lähetä",
"upload.error.cantMove": "Lähetettyä tiedostoa ei voitu siirtää",
"upload.error.cantWrite": "Tiedoston kirjoitus levylle epäonnistui",
@@ -562,7 +749,7 @@
"upload.error.noFiles": "Tiedostoja ei lähetetty",
"upload.error.partial": "Tiedoston lähetys onnistui vain osittain",
"upload.error.tmpDir": "Väliaikainen hakemisto puuttuu",
- "upload.errors": "Error",
+ "upload.errors": "Virhe",
"upload.progress": "Lähetetään...",
"url": "Url",
@@ -574,6 +761,7 @@
"user.changeLanguage": "Vaihda kieli",
"user.changeName": "Nimeä uudelleen",
"user.changePassword": "Vaihda salasana",
+ "user.changePassword.current": "Your current password",
"user.changePassword.new": "Uusi salasana",
"user.changePassword.new.confirm": "Vahvista uusi salasana...",
"user.changeRole": "Muuta käyttäjätasoa",
@@ -585,17 +773,20 @@
"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",
"view.resetPassword": "Aseta salasana",
"view.site": "Sivusto",
"view.system": "Järjestelmä",
- "view.users": "Käyttäjät",
+ "view.users": "K\u00e4ytt\u00e4j\u00e4t",
"welcome": "Tervetuloa",
"year": "Vuosi",
diff --git a/kirby/i18n/translations/fr.json b/kirby/i18n/translations/fr.json
index 8cfb56d..769a184 100644
--- a/kirby/i18n/translations/fr.json
+++ b/kirby/i18n/translations/fr.json
@@ -3,19 +3,28 @@
"account.delete": "Supprimer votre compte",
"account.delete.confirm": "Voulez-vous vraiment supprimer votre compte ? Vous serez déconnecté immédiatement. Votre compte ne pourra pas être récupéré.",
+ "activate": "Activer",
"add": "Ajouter",
+ "alpha": "Alpha",
"author": "Auteur",
- "avatar": "Photo de profil",
+ "avatar": "Image de profil",
"back": "Retour",
"cancel": "Annuler",
"change": "Changer",
"close": "Fermer",
+ "changes": "Modifications",
"confirm": "Ok",
"collapse": "Replier",
"collapse.all": "Tout replier",
+ "color": "Couleur",
+ "coordinates": "Coordonnées",
"copy": "Copier",
"copy.all": "Tout copier",
+ "copy.success": "Copié",
+ "copy.success.multiple": "Copié : {count}",
+ "copy.url": "Copier l’URL",
"create": "Créer",
+ "custom": "Personnalisé",
"date": "Date",
"date.select": "Choisir une date",
@@ -34,13 +43,20 @@
"delete": "Supprimer",
"delete.all": "Tout supprimer",
+ "dialog.fields.empty": "Ce dialogue ne comporte aucun champ",
"dialog.files.empty": "Aucun fichier à sélectionner",
"dialog.pages.empty": "Aucune page à sélectionner",
+ "dialog.text.empty": "Ce dialogue ne définit aucun texte",
"dialog.users.empty": "Aucun utilisateur à sélectionner",
"dimensions": "Dimensions",
+ "disable": "Désactiver",
"disabled": "Désactivé",
"discard": "Supprimer",
+
+ "drawer.fields.empty": "Ce tiroir ne comporte aucun champ",
+
+ "domain": "Domaine",
"download": "Télécharger",
"duplicate": "Dupliquer",
@@ -49,18 +65,20 @@
"email": "Courriel",
"email.placeholder": "mail@example.com",
+ "enter": "Entrer",
"entries": "Entrées",
"entry": "Entrée",
"environment": "Environnement",
+ "error": "Erreur",
"error.access.code": "Code incorrect",
"error.access.login": "Identifiant incorrect",
"error.access.panel": "Vous n’êtes pas autorisé à accéder au Panel",
"error.access.view": "Vous n’êtes pas autorisé à accéder à cette section du Panel",
"error.avatar.create.fail": "L’image du profil n’a pu être transférée",
- "error.avatar.delete.fail": "La photo de profil n‘a pu être supprimée",
+ "error.avatar.delete.fail": "L’image du profil n’a pu être supprimée",
"error.avatar.dimensions.invalid": "Veuillez choisir une image de profil de largeur et hauteur inférieures à 3000 pixels",
"error.avatar.mime.forbidden": "L'image du profil utilisateur doit être un fichier JPEG ou PNG",
@@ -74,30 +92,50 @@
"error.cache.type.invalid": "Type de cache invalide « {type} »",
+ "error.content.lock.delete": "Cette version est verrouillée et ne peut être supprimée",
+ "error.content.lock.move": "Cette version de la source est verrouillée et ne peut être supprimée",
+ "error.content.lock.publish": "Cette version est déjà publiée",
+ "error.content.lock.replace": "Cette version est verrouillée et ne peut être remplacée",
+ "error.content.lock.update": "Cette version est verrouillée et ne peut être mise à jour",
+
+ "error.entries.max.plural": "Vous ne devez pas ajouter plus de {max} entrées",
+ "error.entries.max.singular": "Vous ne devez pas ajouter plus d’une entrée",
+ "error.entries.min.plural": "Vous devez ajouter au moins {min} entrées",
+ "error.entries.min.singular": "Vous devez ajouter au moins une entrée",
+ "error.entries.supports": "Le champ de type « {type} » n’est pas pris en charge par le champ entrées",
+ "error.entries.validation": "Il y a une erreur dans le champ « {field} » de la rangée {index}",
+
"error.email.preset.notFound": "La configuration de courriel « {name} » n’a pu être trouvé ",
"error.field.converter.invalid": "Convertisseur « {converter} » invalide",
+ "error.field.link.options": "Options invalides : {options}",
"error.field.type.missing": "Champ « { name } » : Le type de champ « { type } » n’existe pas",
"error.file.changeName.empty": "Le nom ne peut être vide",
"error.file.changeName.permission": "Vous n’êtes pas autorisé à modifier le nom de « {filename} »",
+ "error.file.changeTemplate.invalid": "Le modèle du fichier « {id} » ne peut être modifié en « {template} » (valide : « {blueprints} »)",
+ "error.file.changeTemplate.permission": "Vous n’êtes pas autorisé à changer le modèle du fichier « {id} »",
+
+ "error.file.delete.multiple": "Tous les fichiers n’ont pu être supprimés. Essayez avec chaque fichier restant individuellement pour voir quelle erreur empêche sa suppression.",
"error.file.duplicate": "Un fichier nommé « {filename} » existe déjà",
"error.file.extension.forbidden": "L’extension « {extension} » n’est pas autorisée",
"error.file.extension.invalid": "Extension incorrecte : {extension}",
"error.file.extension.missing": "L’extension pour « {filename} » est manquante",
"error.file.maxheight": "La hauteur de l'image ne doit pas excéder {height} pixels",
"error.file.maxsize": "Le fichier est trop volumineux",
- "error.file.maxwidth": "La largeur de l'image ne doit pas excéder {width} pixels",
+ "error.file.maxwidth": "La largeur de l’image ne doit pas excéder {width} pixels",
"error.file.mime.differs": "Le fichier transféré doit être du même type de média « {mime} »",
"error.file.mime.forbidden": "Le type de média « {mime} » n’est pas autorisé",
"error.file.mime.invalid": "Type de média invalide : {mime}",
"error.file.mime.missing": "Le type de média de « {filename} » n’a pu être détecté",
- "error.file.minheight": "La hauteur de l'image doit être au moins {height} pixels",
- "error.file.minsize": "Le fichier n'est pas assez volumineux",
- "error.file.minwidth": "La largeur de l'image doit être au moins {width} pixels",
+ "error.file.minheight": "La hauteur de l’image doit être au moins {height} pixels",
+ "error.file.minsize": "Le fichier n’est pas assez volumineux",
+ "error.file.minwidth": "La largeur de l’image doit être au moins {width} pixels",
+ "error.file.name.unique": "Le nom de fichier doit être unique",
"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.orientation": "L’orientation de l'image doit être « {orientation} »",
+ "error.file.sort.permission": "Vous n’êtes pas autorisé à modifier le tri de « {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é",
@@ -105,23 +143,31 @@
"error.form.incomplete": "Veuillez corriger toutes les erreurs du formulaire…",
"error.form.notSaved": "Le formulaire n’a pu être enregistré",
- "error.language.code": "Veuillez saisir un code correct pour cette langue",
+ "error.language.code": "Veuillez saisir un code correct pour la langue",
+ "error.language.create.permission": "Vous n’êtes pas autorisé à créer une langue",
+ "error.language.delete.permission": "Vous n’êtes pas autorisé à supprimer la langue",
"error.language.duplicate": "Cette langue existe déjà",
- "error.language.name": "Veuillez saisir un nom correct pour cette langue",
+ "error.language.name": "Veuillez saisir un nom correct pour la langue",
"error.language.notFound": "La langue n’a pu être trouvée",
+ "error.language.update.permission": "Vous n’êtes pas autorisé à modifier la langue",
"error.layout.validation.block": "Il y a une erreur sur le champ « {field} » du bloc {blockIndex} utilisant le type de bloc « {fieldset} » dans le layout {layoutIndex}.",
"error.layout.validation.settings": "Il y a une erreur dans les paramètres de la disposition {index}",
- "error.license.format": "Veuillez saisir un numéro de licence correct",
+ "error.license.domain": "Le domaine de la licence est manquant",
"error.license.email": "Veuillez saisir un courriel correct",
+ "error.license.format": "Veuillez saisir un numéro de licence valide",
"error.license.verification": "La licence n’a pu être vérifiée",
+ "error.login.totp.confirm.invalid": "Code invalide",
+ "error.login.totp.confirm.missing": "Veuillez saisir le code actuel",
+
"error.object.validation": "Il y a une erreur dans le champ « {label} » :\n{message}",
"error.offline": "Le Panel est actuellement hors ligne",
"error.page.changeSlug.permission": "Vous n’êtes pas autorisé à modifier l’identifiant d’URL pour « {slug} »",
+ "error.page.changeSlug.reserved": "Le chemin des pages de premier niveau ne doit pas commencer par « {path} »",
"error.page.changeStatus.incomplete": "La page comporte des erreurs et ne peut pas être publiée",
"error.page.changeStatus.permission": "Le statut de cette page ne peut être modifié",
"error.page.changeStatus.toDraft.invalid": "La page « {slug} » ne peut être convertie en brouillon",
@@ -133,13 +179,21 @@
"error.page.delete": "La page « {slug} » ne peut être supprimée",
"error.page.delete.confirm": "Veuillez saisir le titre de la page pour confirmer",
"error.page.delete.hasChildren": "La page comporte des sous-pages et ne peut pas être supprimée",
+ "error.page.delete.multiple": "Toutes les pages n’ont pu être supprimées. Essayez avec chaque page restante individuellement pour voir quelle erreur empêche sa suppression.",
"error.page.delete.permission": "Vous n’êtes pas autorisé à supprimer « {slug} »",
"error.page.draft.duplicate": "Un brouillon avec l’identifiant d’URL « {slug} » existe déjà",
"error.page.duplicate": "Une page avec l’identifiant d’URL « {slug} » existe déjà",
- "error.page.duplicate.permission": "Vous n'êtes pas autorisé à dupliquer « {slug} »",
+ "error.page.duplicate.permission": "Vous n’êtes pas autorisé à dupliquer « {slug} »",
+ "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": "La page « {parent} » ne peut être parente d'autres pages car elle ne comporte pas de section de pages dans son 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} »",
"error.page.notFound": "La page « {slug} » n’a pu être trouvée",
"error.page.num.invalid": "Veuillez saisir un numéro de position correct. Les numéros ne doivent pas être négatifs.",
- "error.page.slug.invalid": "Veuillez saisir un identifiant d’URL correct",
+ "error.page.slug.invalid": "Veuillez entrer un identifiant d’URL correct",
"error.page.slug.maxlength": "L’identifiant d’URL doit faire moins de « {length} » caractères",
"error.page.sort.permission": "La page « {slug} » ne peut être réordonnée",
"error.page.status.invalid": "Veuillez choisir un statut de page correct",
@@ -163,9 +217,11 @@
"error.site.changeTitle.permission": "Vous n’êtes pas autorisé à modifier le titre du site",
"error.site.update.permission": "Vous n’êtes pas autorisé à modifier le contenu global du site",
+ "error.structure.validation": "Il y a une erreur dans le champ « {field} » de la rangée {index}",
+
"error.template.default.notFound": "Le modèle par défaut n’existe pas",
- "error.unexpected": "Une erreur inattendue est survenue ! Activez le mode de débogage pour plus d'informations : https://getkirby.com/docs/reference/system/options/debug",
+ "error.unexpected": "Une erreur inattendue est survenue ! Activez le mode de débogage pour plus d’informations : https://getkirby.com/docs/reference/system/options/debug",
"error.user.changeEmail.permission": "Vous n’êtes pas autorisé à modifier le courriel de l’utilisateur « {name} »",
"error.user.changeLanguage.permission": "Vous n’êtes pas autorisé à changer la langue de l’utilisateur « {name} »",
@@ -195,8 +251,10 @@
"error.validation.accepted": "Veuillez confirmer",
"error.validation.alpha": "Veuillez saisir uniquement des caractères alphabétiques minuscules",
"error.validation.alphanum": "Veuillez ne saisir que des minuscules de a à z et des chiffres de 0 à 9",
+ "error.validation.anchor": "Veuillez entrer un lien ancré correct",
"error.validation.between": "Veuillez saisir une valeur entre « {min} » et « {max} »",
"error.validation.boolean": "Veuillez confirmer ou refuser",
+ "error.validation.color": "Veuillez entrer une couleur valide dans le format {format}",
"error.validation.contains": "Veuillez saisir une valeur contenant « {needle} »",
"error.validation.date": "Veuillez saisir une date correcte",
"error.validation.date.after": "Veuillez saisir une date après {date}",
@@ -211,6 +269,7 @@
"error.validation.integer": "Veuillez saisir un entier correct",
"error.validation.ip": "Veuillez saisir une adresse IP correcte",
"error.validation.less": "Veuillez saisir une valeur inférieure à {max}",
+ "error.validation.linkType": "Le type de lien n’est pas autorisé",
"error.validation.match": "La valeur ne correspond pas au modèle attendu",
"error.validation.max": "Veuillez saisir une valeur inférieure ou égale à {max}",
"error.validation.maxlength": "Veuillez saisir une valeur plus courte (max. {max} caractères)",
@@ -227,15 +286,18 @@
"error.validation.same": "Veuillez saisir « {other} »",
"error.validation.size": "La grandeur de la valeur doit être « {size} »",
"error.validation.startswith": "La valeur doit commencer par « {start} »",
+ "error.validation.tel": "Veuillez saisir un numéro de téléphone non formaté",
"error.validation.time": "Veuillez saisir une heure correcte",
"error.validation.time.after": "Veuillez saisir une heure après {time}",
"error.validation.time.before": "Veuillez saisir une heure avant {time}",
"error.validation.time.between": "Veuillez saisir une heure entre {min} et {max}",
+ "error.validation.uuid": "Veuillez saisir un UUID valide",
"error.validation.url": "Veuillez saisir une URL correcte",
"expand": "Déplier",
"expand.all": "Tout déplier",
+ "field.invalid": "Le champ est invalide",
"field.required": "Le champ est obligatoire",
"field.blocks.changeType": "Changer le type",
"field.blocks.code.name": "Code",
@@ -245,8 +307,9 @@
"field.blocks.delete.confirm.all": "Voulez-vous vraiment supprimer tous les blocs ?",
"field.blocks.delete.confirm.selected": "Voulez-vous vraiment supprimer les blocs sélectionnés ?",
"field.blocks.empty": "Pas encore de blocs",
+ "field.blocks.fieldsets.empty": "Pas encore d‘ensembles de champs",
"field.blocks.fieldsets.label": "Veuillez sélectionner un type de bloc…",
- "field.blocks.fieldsets.paste": "Presser {{ shortcut }} pour coller/importer des blocks depuis votre presse-papier",
+ "field.blocks.fieldsets.paste": "Pressez {{ shortcut }} pour importer des dispositions ou blocs depuis votre presse-papier Seuls ceux autorisés dans le champ actuel seront insérés.",
"field.blocks.gallery.name": "Galerie",
"field.blocks.gallery.images.empty": "Pas encore d’images",
"field.blocks.gallery.images.label": "Images",
@@ -254,15 +317,20 @@
"field.blocks.heading.name": "Titre",
"field.blocks.heading.text": "Texte",
"field.blocks.heading.placeholder": "Titre…",
+ "field.blocks.figure.back.plain": "Brut",
+ "field.blocks.figure.back.pattern.light": "Motif (clair)",
+ "field.blocks.figure.back.pattern.dark": "Motif (sombre)",
"field.blocks.image.alt": "Texte alternatif",
"field.blocks.image.caption": "Légende",
"field.blocks.image.crop": "Recadrer",
"field.blocks.image.link": "Lien",
"field.blocks.image.location": "Emplacement",
+ "field.blocks.image.location.internal": "Ce site web",
+ "field.blocks.image.location.external": "Source externe",
"field.blocks.image.name": "Image",
"field.blocks.image.placeholder": "Sélectionnez une image",
"field.blocks.image.ratio": "Proportions",
- "field.blocks.image.url": "URL de l'image",
+ "field.blocks.image.url": "URL de l’image",
"field.blocks.line.name": "Ligne",
"field.blocks.list.name": "Liste",
"field.blocks.markdown.name": "Markdown",
@@ -275,38 +343,72 @@
"field.blocks.quote.citation.placeholder": "par…",
"field.blocks.text.name": "Texte",
"field.blocks.text.placeholder": "Texte…",
+ "field.blocks.video.autoplay": "Lecture automatique",
"field.blocks.video.caption": "Légende",
+ "field.blocks.video.controls": "Contrôles",
+ "field.blocks.video.location": "Emplacement",
+ "field.blocks.video.loop": "Boucle",
+ "field.blocks.video.muted": "Muet",
"field.blocks.video.name": "Vidéo",
"field.blocks.video.placeholder": "Saisissez l’URL d’une vidéo",
+ "field.blocks.video.poster": "Vignette",
+ "field.blocks.video.preload": "Préchargement",
"field.blocks.video.url.label": "URL de la vidéo",
"field.blocks.video.url.placeholder": "https://youtube.com/?v=",
- "field.files.empty": "Pas encore de fichier sélectionné",
+ "field.entries.delete.confirm.all": "Voulez-vous vraiment supprimer toutes les entrées ?",
+ "field.entries.empty": "Pas encore d’entrée",
+ "field.files.empty": "Pas encore de fichier sélectionné",
+ "field.files.empty.single": "Pas encore de fichier sélectionné",
+
+ "field.layout.change": "Changer de disposition",
"field.layout.delete": "Supprimer cette disposition",
"field.layout.delete.confirm": "Voulez-vous vraiment supprimer cette disposition ?",
+ "field.layout.delete.confirm.all": "Voulez-vous vraiment supprimer toutes les dispositions ?",
"field.layout.empty": "Pas encore de rangées",
"field.layout.select": "Choisir une disposition",
"field.object.empty": "Pas encore d‘information",
"field.pages.empty": "Pas encore de page sélectionnée",
+ "field.pages.empty.single": "Pas encore de page sélectionnée",
"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": "Pas encore d’utilisateur sélectionné",
+ "fields.empty": "Pas encore de champs",
+
+ "file": "Fichier",
"file.blueprint": "Ce fichier n’a pas encore de blueprint. Vous pouvez en définir les paramètres dans /site/blueprints/files/{blueprint}.yml",
+ "file.changeTemplate": "Changer de modèle",
+ "file.changeTemplate.notice": "Modifier le modèle du fichier supprimera le contenu des champs dont le type ne correspond pas. Si le nouveau modèle définit certaines règles, par exemple les dimensions des images, celles-ci seront également appliquées de manière irréversible. Utilisez avec précaution.",
"file.delete.confirm": "Voulez-vous vraiment supprimer
{filename} ?",
+ "file.focus.placeholder": "Définir le point focal",
+ "file.focus.reset": "Supprimer le point focal",
+ "file.focus.title": "Point focal",
"file.sort": "Modifier la position",
"files": "Fichiers",
+ "files.delete.confirm.selected": "Voulez-vous vraiment supprimer le fichier sélectionné ? Cette action ne peut être annulée.",
"files.empty": "Pas encore de fichier",
+ "filter": "Filtrer",
+
+ "form.discard": "Annuler les modifications",
+ "form.discard.confirm": "Voulez-vous vraiment annuler toutes les modifications ?",
+ "form.locked": "Ce contenu est désactivé pour vous car il est actuellement édité par un autre utilisateur.",
+ "form.unsaved": "Les modifications actuelles n’ont pas encore été enregistrées",
+ "form.preview": "Prévisualiser les modifications",
+ "form.preview.draft": "Prévisualiser le brouillon",
+
"hide": "Masquer",
"hour": "Heure",
+ "hue": "Teinte",
"import": "Importer",
"info": "Info",
"insert": "Insérer",
@@ -316,7 +418,7 @@
"installation": "Installation",
"installation.completed": "Le Panel a été installé",
- "installation.disabled": "L'installation du Panel est désactivée par défaut sur les serveurs publics. Veuillez lancer l'installation sur un serveur local, ou activez-la avec l'option panel.install
.",
+ "installation.disabled": "L’installation du Panel est désactivée par défaut sur les serveurs publics. Veuillez lancer l’installation sur un serveur local, ou activez-la avec l’option panel.install
.",
"installation.issues.accounts": "Le dossier /site/accounts
n’existe pas ou n’est pas accessible en écriture",
"installation.issues.content": "Le dossier /content
n’existe pas ou n’est pas accessible en écriture",
"installation.issues.curl": "L’extension CURL
est requise",
@@ -324,7 +426,6 @@
"installation.issues.mbstring": "L’extension MB String
est requise",
"installation.issues.media": "Le dossier /media
n’existe pas ou n’est pas accessible en écriture",
"installation.issues.php": "Veuillez utiliser PHP 8+
",
- "installation.issues.server": "Kirby requiert Apache
, Nginx
ou Caddy
",
"installation.issues.sessions": "Le dossier /site/sessions
n’existe pas ou n’est pas accessible en écriture",
"language": "Langue",
@@ -332,6 +433,7 @@
"language.convert": "Choisir comme langue par défaut",
"language.convert.confirm": "{secret}
manuellement à votre application d’authentification..",
+ "login.totp.enable.confirm.headline": "2. Confirmez avec le code généré",
+ "login.totp.enable.confirm.text": "Votre application génère un nouveau code à usage unique toutes les 30 secondes. Saisissez le code actuel pour terminer la configuration :",
+ "login.totp.enable.confirm.label": "Code actuel",
+ "login.totp.enable.confirm.help": "Après cette configuration, nous vous demanderons un code à usage unique à chaque connexion.",
+ "login.totp.enable.success": "Codes à usage unique activés",
+ "login.totp.disable.option": "Désactiver les codes à usage unique",
+ "login.totp.disable.label": "Saisissez votre mot de passe pour désactiver les codes à usage unique.",
+ "login.totp.disable.help": "Un second facteur différent, par exemple un code de connexion envoyé par courriel, vous sera demandé à la connexion. Vous pourrez à nouveau configurer les codes à usage unique ultérieurement.",
+ "login.totp.disable.admin": "
Toutes les sous-pages seront également supprimées.",
"page.delete.confirm.title": "Veuillez saisir le titre de la page pour confirmer",
- "page.draft.create": "Créer un brouillon",
"page.duplicate.appendix": "Copier",
"page.duplicate.files": "Copier les fichiers",
"page.duplicate.pages": "Copier les pages",
+ "page.move": "Déplacer la page",
"page.sort": "Modifier la position",
"page.status": "Statut",
"page.status.draft": "Brouillon",
@@ -450,6 +604,7 @@
"page.status.unlisted.description": "La page est accessible uniquement par son URL",
"pages": "Pages",
+ "pages.delete.confirm.selected": "Voulez-vous vraiment supprimer la page sélectionnée ? Cette action ne peut être annulée.",
"pages.empty": "Pas encore de pages",
"pages.status.draft": "Brouillons",
"pages.status.listed": "Publié",
@@ -460,14 +615,21 @@
"password": "Mot de passe",
"paste": "Coller",
"paste.after": "Coller après",
+ "paste.success": "Copié : {count}",
"pixel": "Pixel",
"plugin": "Plugin",
"plugins": "Plugins",
"prev": "Précédent",
"preview": "Prévisualiser",
+
+ "publish": "Publier",
+ "published": "Publié",
+
"remove": "Supprimer",
"rename": "Renommer",
+ "renew": "Renouveler",
"replace": "Remplacer",
+ "replace.with": "Remplacer par",
"retry": "Essayer à nouveau",
"revert": "Revenir",
"revert.confirm": "Voulez-vous vraiment supprimer toutes les modifications non enregistrées ?",
@@ -482,11 +644,14 @@
"role.nobody.title": "Personne",
"save": "Enregistrer",
+ "saved": "Enregistré",
"search": "Rechercher",
+ "searching": "Recherche en cours",
"search.min": "Saisissez {min} caractères pour rechercher",
- "search.all": "Tout afficher",
+ "search.all": "Afficher tous les résultats de {count}",
"search.results.none": "Pas de résultats",
+ "section.invalid": "La section est invalide",
"section.required": "Cette section est obligatoire",
"security": "Sécurité",
@@ -498,20 +663,29 @@
"size": "Poids",
"slug": "Identifiant de l’URL",
"sort": "Trier",
+ "sort.drag": "Déplacer pour réordonner…",
+ "split": "Diviser",
"stats.empty": "Aucun rapport",
+ "status": "Statut",
+
+ "system.info.copy": "Copier les informations",
+ "system.info.copied": "Informations système copiées",
"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é",
+ "system.issues.eol.php": "Votre version de PHP installée { release } a atteint la fin de son cycle de vie et ne recevra plus de mises à jour de sécurité",
"system.issues.debug": "Le débogage doit être désactivé en production",
"system.issues.git": "Le dossier .git semble exposé",
"system.issues.https": "Nous recommandons HTTPS pour tous vos sites",
"system.issues.kirby": "Le dossier kirby semble exposé",
+ "system.issues.local": "Le site fonctionne localement avec des contrôles de sécurité allégés.",
"system.issues.site": "Le dossier site semble exposé",
+ "system.issues.vue.compiler": "Le compileur de templates de Vue est activé",
"system.issues.vulnerability.kirby": "Votre installation pourrait être affectée par la vulnérabilité suivante ({ severity } gravité) : { description }",
"system.issues.vulnerability.plugin": "Votre installation pourrait être affectée par la vulnérabilité suivante du plugin { plugin } ({ severity } gravité) : { description }",
"system.updateStatus": "Statut des mises à jour",
- "system.updateStatus.error": "Les mises à jour n'ont pu être vérifiées",
+ "system.updateStatus.error": "Les mises à jour n’ont pu être vérifiées",
"system.updateStatus.not-vulnerable": "Aucune vulnérabilité connue",
"system.updateStatus.security-update": "Mise à jour gratuite { version } disponible",
"system.updateStatus.security-upgrade": "Mise à jour { version } avec correctifs de sécurité disponible",
@@ -520,10 +694,19 @@
"system.updateStatus.update": "Mise à jour gratuite { version } disponible",
"system.updateStatus.upgrade": "Mise à jour { version } disponible",
- "title": "Titre",
+ "tel": "Téléphone",
+ "tel.placeholder": "+33123456789",
"template": "Modèle",
+
+ "theme": "Thème",
+ "theme.light": "Allumer",
+ "theme.dark": "Éteindre",
+ "theme.automatic": "Suivre le réglage système",
+
+ "title": "Titre",
"today": "Aujourd’hui",
+ "toolbar.button.clear": "Supprimer la mise en forme",
"toolbar.button.code": "Code",
"toolbar.button.bold": "Gras",
"toolbar.button.email": "Courriel",
@@ -541,6 +724,8 @@
"toolbar.button.link": "Lien",
"toolbar.button.paragraph": "Paragraphe",
"toolbar.button.strike": "Barré",
+ "toolbar.button.sub": "Indice",
+ "toolbar.button.sup": "Exposant",
"toolbar.button.ol": "Liste ordonnée",
"toolbar.button.underline": "Souligné",
"toolbar.button.ul": "Liste non-ordonnée",
@@ -550,6 +735,8 @@
"translation.name": "Français",
"translation.locale": "fr_FR",
+ "type": "Type",
+
"upload": "Transférer",
"upload.error.cantMove": "Le fichier transféré n’a pu être déplacé",
"upload.error.cantWrite": "Le fichier n’a pu être écrit sur le disque",
@@ -569,11 +756,12 @@
"url.placeholder": "https://example.com",
"user": "Utilisateur",
- "user.blueprint": "Vous pouvez définir de nouvelles sections et champs de formulaires pour ce rôle d'utilisateur dans /site/blueprints/users/{blueprint}.yml",
+ "user.blueprint": "Vous pouvez définir de nouvelles sections et champs de formulaires pour ce rôle d’utilisateur dans /site/blueprints/users/{blueprint}.yml",
"user.changeEmail": "Modifier le courriel",
"user.changeLanguage": "Modifier la langue",
"user.changeName": "Renommer cet utilisateur",
"user.changePassword": "Modifier le mot de passe",
+ "user.changePassword.current": "Votre mot de passe actuel",
"user.changePassword.new": "Nouveau mot de passe",
"user.changePassword.new.confirm": "Confirmer le nouveau mot de passe…",
"user.changeRole": "Modifier le rôle",
@@ -585,10 +773,13 @@
"users": "Utilisateurs",
"version": "Version",
+ "version.changes": "Version modifiée",
+ "version.compare": "Comparer les versions",
"version.current": "Version actuelle",
"version.latest": "Dernière version",
"versionInformation": "Informations de version",
+ "view": "Visualiser",
"view.account": "Votre compte",
"view.installation": "Installation",
"view.languages": "Langues",
diff --git a/kirby/i18n/translations/hu.json b/kirby/i18n/translations/hu.json
index 929ae64..56424ac 100644
--- a/kirby/i18n/translations/hu.json
+++ b/kirby/i18n/translations/hu.json
@@ -3,57 +3,75 @@
"account.delete": "Fiók törlése",
"account.delete.confirm": "Tényleg törölni szeretnéd a fiókodat? Azonnal kijelentkeztetünk és ez a folyamat visszavonhatatlan.",
- "add": "Hozzáad",
+ "activate": "Activate",
+ "add": "Hozz\u00e1ad",
+ "alpha": "Alpha",
"author": "Szerző",
"avatar": "Profilkép",
"back": "Vissza",
- "cancel": "Mégsem",
- "change": "Módosítás",
- "close": "Bezár",
+ "cancel": "M\u00e9gsem",
+ "change": "M\u00f3dos\u00edt\u00e1s",
+ "close": "Bez\u00e1r",
+ "changes": "Changes",
"confirm": "Mentés",
"collapse": "Bezárás",
"collapse.all": "Összes bezárása",
+ "color": "Color",
+ "coordinates": "Coordinates",
"copy": "Másol",
"copy.all": "Összes másolása",
+ "copy.success": "Copied",
+ "copy.success.multiple": "{count} copied!",
+ "copy.url": "Copy URL",
"create": "Létrehoz",
+ "custom": "Custom",
"date": "Dátum",
"date.select": "Dátum kiválasztása",
"day": "Nap",
- "days.fri": "pé",
- "days.mon": "hé",
+ "days.fri": "p\u00e9",
+ "days.mon": "h\u00e9",
"days.sat": "szo",
"days.sun": "va",
- "days.thu": "csü",
+ "days.thu": "cs\u00fc",
"days.tue": "ke",
"days.wed": "sze",
"debugging": "Hibakeresés",
- "delete": "Törlés",
+ "delete": "T\u00f6rl\u00e9s",
"delete.all": "Összes törlése",
+ "dialog.fields.empty": "This dialog has no fields",
"dialog.files.empty": "Nincsenek fájlok kiválasztva",
"dialog.pages.empty": "Nincsenek oldalak kiválasztva",
+ "dialog.text.empty": "This dialog does not define any text",
"dialog.users.empty": "Nincsenek felhasználók kiválasztva",
"dimensions": "Méretek",
+ "disable": "Disable",
"disabled": "Inaktív",
- "discard": "Visszavonás",
+ "discard": "Visszavon\u00e1s",
+
+ "drawer.fields.empty": "This drawer has no fields",
+
+ "domain": "Domain",
"download": "Letöltés",
"duplicate": "Másolat",
- "edit": "Aloldal szerkesztése",
+ "edit": "Aloldal szerkeszt\u00e9se",
"email": "Email",
"email.placeholder": "mail@pelda.hu",
+ "enter": "Enter",
"entries": "Entries",
"entry": "Entry",
"environment": "Környezet",
+ "error": "Error",
"error.access.code": "Érvénytelen kód",
"error.access.login": "Érvénytelen bejelentkezés",
"error.access.panel": "Nincs jogosultságod megnyitni a panelt",
@@ -74,17 +92,35 @@
"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.entries.max.plural": "You must not add more than {max} entries",
+ "error.entries.max.singular": "You must not add more than one entry",
+ "error.entries.min.plural": "You must add at least {min} entries",
+ "error.entries.min.singular": "You must add at least one entry",
+ "error.entries.supports": "\"{type}\" field type is not supported for the entries field",
+ "error.entries.validation": "There's an error on the \"{field}\" field in row {index}",
+
"error.email.preset.notFound": "A \"{name}\" email-beállítás nem található",
"error.field.converter.invalid": "Érvénytelen konverter: \"{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": "A név nem lehet üres",
"error.file.changeName.permission": "Nincs jogosultságod megváltoztatni a \"{filename}\" fájl nevét",
+ "error.file.changeTemplate.invalid": "The template for the file \"{id}\" cannot be changed to \"{template}\" (valid: \"{blueprints}\")",
+ "error.file.changeTemplate.permission": "You are not allowed to change the template for the file \"{id}\"",
+
+ "error.file.delete.multiple": "Not all files could be deleted. Try each remaining file individually to see the specific error that prevents deletion.",
"error.file.duplicate": "Már létezik \"{filename}\" nevű fájl",
- "error.file.extension.forbidden": "Tiltott kiterjesztésű fájl",
+ "error.file.extension.forbidden": "Tiltott kiterjeszt\u00e9s\u0171 f\u00e1jl",
"error.file.extension.invalid": "Érvénytelen kiterjesztés: {extension}",
- "error.file.extension.missing": "Kiterjesztés nélküli fájl nem tölthető fel",
+ "error.file.extension.missing": "Kiterjeszt\u00e9s n\u00e9lk\u00fcli f\u00e1jl nem t\u00f6lthet\u0151 fel",
"error.file.maxheight": "A kép nem lehet magasabb {height} pixelnél",
"error.file.maxsize": "A fájl túl nagy",
"error.file.maxwidth": "A kép nem lehet szélesebb {width} pixelnél",
@@ -95,33 +131,43 @@
"error.file.minheight": "A képnek legalább {height} pixel magasnak kell lennie",
"error.file.minsize": "A fájl túl kicsi",
"error.file.minwidth": "A képnek legalább {width} pixel szélesnek kell lennie",
+ "error.file.name.unique": "The filename must be unique",
"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ájl nem található",
+ "error.file.undefined": "A f\u00e1jl nem tal\u00e1lhat\u00f3",
"error.form.incomplete": "Kérlek javítsd ki az összes hibát az űrlapon",
"error.form.notSaved": "Az űrlap nem menthető",
"error.language.code": "Kérlek, add meg a nyelv érvényes kódját",
+ "error.language.create.permission": "You are not allowed to create a language",
+ "error.language.delete.permission": "You are not allowed to delete the language",
"error.language.duplicate": "A nyelv már létezik",
"error.language.name": "Kérlek, add meg a nyelv érvényes nevét",
"error.language.notFound": "A nyelv nem található",
+ "error.language.update.permission": "You are not allowed to update the language",
"error.layout.validation.block": "There's an error on the \"{field}\" field in block {blockIndex} using the \"{fieldset}\" block type in layout {layoutIndex}",
"error.layout.validation.settings": "Hibát találtunk a(z) {index} elrendezés beállításaiban",
- "error.license.format": "Kérlek, add meg az évényes lincensz kulcsot",
+ "error.license.domain": "The domain for the license is missing",
"error.license.email": "Kérlek adj meg egy valós email-címet",
+ "error.license.format": "Please enter a valid license code",
"error.license.verification": "A licensz nem ellenőrizhető",
+ "error.login.totp.confirm.invalid": "Érvénytelen kód",
+ "error.login.totp.confirm.missing": "Please enter the current code",
+
"error.object.validation": "There’s an error in the \"{label}\" field:\n{message}",
"error.offline": "A Panel jelenleg nem elérhető",
"error.page.changeSlug.permission": "Nem változtathatod meg az URL-előtagot: \"{slug}\"",
+ "error.page.changeSlug.reserved": "The path of top-level pages must not start with \"{path}\"",
"error.page.changeStatus.incomplete": "Az oldal hibákat tartalmaz és nem publikálható",
"error.page.changeStatus.permission": "Az oldal státusza nem változtatható meg",
"error.page.changeStatus.toDraft.invalid": "A(z) \"{slug}\" oldalt nem lehet piszkozattá alakítani",
@@ -133,17 +179,25 @@
"error.page.delete": "A(z) \"{slug}\" oldal nem törölhető",
"error.page.delete.confirm": "Megerősítéshez add meg az oldal címét",
"error.page.delete.hasChildren": "Az oldalnak vannak aloldalai és nem törölhető",
+ "error.page.delete.multiple": "Not all pages could be deleted. Try each remaining page individually to see the specific error that prevents deletion.",
"error.page.delete.permission": "Nincs jogosultságod a(z) \"{slug}\" oldal törléséhez",
"error.page.draft.duplicate": "Van már egy másik oldal ezzel az URL-lel: \"{slug}\"",
"error.page.duplicate": "Van már egy másik oldal ezzel az URL-lel: \"{slug}\"",
"error.page.duplicate.permission": "Nincs engedélyed a(z) \"{slug}\" másolat keszítéséhez",
- "error.page.notFound": "Az oldal nem található",
+ "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}\"",
+ "error.page.notFound": "Az oldal nem tal\u00e1lhat\u00f3",
"error.page.num.invalid": "Kérlek megfelelő oldalszámozást adj meg. Negatív szám itt nem használható.",
"error.page.slug.invalid": "Kérlek érvényes URL-kiterjesztést adj meg",
"error.page.slug.maxlength": "Az URL maximum \"{length}\" karakter hosszúságú lehet",
"error.page.sort.permission": "A(z) \"{slug}\" oldal nem illeszthető a sorrendbe",
"error.page.status.invalid": "Kérlek add meg a megfelelő oldalstátuszt",
- "error.page.undefined": "Az oldal nem található",
+ "error.page.undefined": "Az oldal nem tal\u00e1lhat\u00f3",
"error.page.update.permission": "Nincs jogosultságod a(z) \"{slug}\" oldal frissítéséhez",
"error.section.files.max.plural": "Maximum {max} fájlt adhatsz hozzá a(z) \"{section}\" szekcióhoz",
@@ -163,6 +217,8 @@
"error.site.changeTitle.permission": "Nincs jogosultságod megváltoztatni az honlap címét",
"error.site.update.permission": "Nincs jogosultságod frissíteni a honlapot",
+ "error.structure.validation": "There's an error on the \"{field}\" field in row {index}",
+
"error.template.default.notFound": "Az alapértelmezett sablon nem létezik",
"error.unexpected": "Váratlan hiba történt! További információért engedélyezd a hibakeresés módot: https://getkirby.com/docs/reference/system/options/debug",
@@ -175,17 +231,17 @@
"error.user.changeRole.permission": "Nincs jogosultságod megváltoztatni \"{name}\" felhasználó szerepkörét",
"error.user.changeRole.toAdmin": "Nincs jogosultságod előléptetni a felhasználót adminisztrátorrá",
"error.user.create.permission": "Nincs jogosultságod létrehozni ezt a felhasználót",
- "error.user.delete": "A felhasználó nem törölhető",
- "error.user.delete.lastAdmin": "Nem törölheted az egyetlen adminisztrátort",
+ "error.user.delete": "A felhaszn\u00e1l\u00f3 nem t\u00f6r\u00f6lhet\u0151",
+ "error.user.delete.lastAdmin": "Nem t\u00f6r\u00f6lheted az egyetlen adminisztr\u00e1tort",
"error.user.delete.lastUser": "Nem törölheted az egyetlen felhasználót",
- "error.user.delete.permission": "Nincs jogosultságod törölni ezt a felhasználót",
+ "error.user.delete.permission": "Nincs jogosults\u00e1god t\u00f6r\u00f6lni ezt a felhaszn\u00e1l\u00f3t",
"error.user.duplicate": "Már létezik felhasználó \"{email}\" email-címmel",
"error.user.email.invalid": "Kérlek adj meg egy valós email-címet",
"error.user.language.invalid": "Kérlek add meg a megfelelő nyelvi beállítást",
- "error.user.notFound": "A felhasználó nem található",
+ "error.user.notFound": "A felhaszn\u00e1l\u00f3 nem tal\u00e1lhat\u00f3",
"error.user.password.excessive": "Please enter a valid password. Passwords must not be longer than 1000 characters.",
"error.user.password.invalid": "Kérlek adj meg egy megfelelő jelszót. A jelszónak legalább 8 karakter hosszúságúnak kell lennie.",
- "error.user.password.notSame": "Kérlek erősítsd meg a jelszót",
+ "error.user.password.notSame": "K\u00e9rlek er\u0151s\u00edtsd meg a jelsz\u00f3t",
"error.user.password.undefined": "A felhasználónak nincs jelszó megadva",
"error.user.password.wrong": "Hibás jelszó",
"error.user.role.invalid": "Kérlek adj meg egy megfelelő szerepkört",
@@ -195,8 +251,10 @@
"error.validation.accepted": "Kérlek erősítsd meg",
"error.validation.alpha": "Kérlek csak kis betűket használj (a-z)",
"error.validation.alphanum": "Kérlek csak kis betűket és számjegyeket használj (a-z, 0-9)",
+ "error.validation.anchor": "Please enter a correct link anchor",
"error.validation.between": "Kérlek egy \"{min}\" és \"{max}\" közötti értéket adj meg",
"error.validation.boolean": "Kérlek erősítsd meg vagy vesd el",
+ "error.validation.color": "Please enter a valid color in the {format} format",
"error.validation.contains": "Kérlek olyan értéket adj meg, amely tartalmazza ezt: \"{needle}\"",
"error.validation.date": "Kérlek megfelelő dátumot adj meg",
"error.validation.date.after": "Kérlek olyan dátumot adj meg, amely későbbi ennél: {date}",
@@ -211,6 +269,7 @@
"error.validation.integer": "Kérlek valós számot adj meg",
"error.validation.ip": "Kérlek megfelelő IP-címet adj meg",
"error.validation.less": "A megadott érték kevesebb legyen, mint {max}",
+ "error.validation.linkType": "The link type is not allowed",
"error.validation.match": "A megadott érték nem felel meg az elvárt struktúrának",
"error.validation.max": "A megadott érték egyenlő vagy kevesebb legyen, mint {max}",
"error.validation.maxlength": "Kérlek rövidebb értéket adj meg (legfeljebb {max} karakter)",
@@ -227,15 +286,18 @@
"error.validation.same": "Kérlek írd be: \"{other}\"",
"error.validation.size": "Az értéknek az alábbi méretűnek kell lennie: \"{size}\"",
"error.validation.startswith": "Az értéknek ezzel kell kezdődnie: \"{start}\"",
+ "error.validation.tel": "Please enter an unformatted phone number",
"error.validation.time": "Kérlek megfelelő időt adj meg",
"error.validation.time.after": "Kérlek olyan időpontot adj meg, amely későbbi ennél: {time}",
"error.validation.time.before": "Kérlek olyan időpontot adj meg, amely korábbi ennél: {time}",
"error.validation.time.between": "Kérlek {min} és {max} közötti időpontot adj meg",
+ "error.validation.uuid": "Please enter a valid UUID",
"error.validation.url": "Kérlek megfelelő URL-t adj meg",
"expand": "Kinyitás",
"expand.all": "Összes kinyitása",
+ "field.invalid": "The field is invalid",
"field.required": "Kötelező mező",
"field.blocks.changeType": "Típus megváltoztatása",
"field.blocks.code.name": "Kód",
@@ -245,8 +307,9 @@
"field.blocks.delete.confirm.all": "Tényleg minden blokkot törölni szeretnél?",
"field.blocks.delete.confirm.selected": "Tényleg törölni szeretnéd a kijelölt blokkokat?",
"field.blocks.empty": "Még nincsenek blokkok",
+ "field.blocks.fieldsets.empty": "No fieldsets yet",
"field.blocks.fieldsets.label": "Kérlek válassz blokktípust …",
- "field.blocks.fieldsets.paste": "Blokk beszúrásához a vágólapról használd a {{ shortcut }} billentyűkombinációt",
+ "field.blocks.fieldsets.paste": "Press {{ shortcut }} to import layouts/blocks from your clipboard Only those allowed in the current field will get inserted.",
"field.blocks.gallery.name": "Galéria",
"field.blocks.gallery.images.empty": "Még nincsenek képek",
"field.blocks.gallery.images.label": "Képek",
@@ -254,11 +317,16 @@
"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",
"field.blocks.image.link": "Link",
"field.blocks.image.location": "A kép helye",
+ "field.blocks.image.location.internal": "This website",
+ "field.blocks.image.location.external": "External source",
"field.blocks.image.name": "Kép",
"field.blocks.image.placeholder": "Kép kiválasztása",
"field.blocks.image.ratio": "Képarány",
@@ -275,38 +343,72 @@
"field.blocks.quote.citation.placeholder": "Szerző …",
"field.blocks.text.name": "Szöveg",
"field.blocks.text.placeholder": "Szöveg …",
+ "field.blocks.video.autoplay": "Autoplay",
"field.blocks.video.caption": "Képaláírás",
+ "field.blocks.video.controls": "Controls",
+ "field.blocks.video.location": "A kép helye",
+ "field.blocks.video.loop": "Loop",
+ "field.blocks.video.muted": "Muted",
"field.blocks.video.name": "Videó",
"field.blocks.video.placeholder": "Videó URL-jének megadása",
+ "field.blocks.video.poster": "Poster",
+ "field.blocks.video.preload": "Preload",
"field.blocks.video.url.label": "Videó URL",
"field.blocks.video.url.placeholder": "https://youtube.com/?v=",
- "field.files.empty": "Nincs fálj kiválasztva",
+ "field.entries.delete.confirm.all": "Do you really want to delete all entries?",
+ "field.entries.empty": "Nincs még bejegyzés",
+ "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",
"field.layout.delete.confirm": "Tényleg törölni szeretnéd ezt az elrendezést?",
+ "field.layout.delete.confirm.all": "Do you really want to delete all layouts?",
"field.layout.empty": "Még nincsenek sorok",
"field.layout.select": "Válassz elrendezést",
"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örölni szeretnéd ezt a bejegyzést?",
+ "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ég bejegyzés",
+ "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",
+
+ "file": "Fájl",
"file.blueprint": "Ehhez a fájlhoz még nem tartozik oldalsablon. Itt hozhatod létre: /site/blueprints/files/{blueprint}.yml",
+ "file.changeTemplate": "Sablon módosítása",
+ "file.changeTemplate.notice": "Changing the file's template will remove content for fields that don't match in type. If the new template defines certain rules, e.g. image dimensions, those will also be applied irreversibly. Use with caution.",
"file.delete.confirm": "Biztos törölni akarod ezt a fájlt:
{filename}?",
+ "file.focus.placeholder": "Set focal point",
+ "file.focus.reset": "Remove focal point",
+ "file.focus.title": "Focus",
"file.sort": "Sorrend megváltoztatása",
"files": "Fájlok",
+ "files.delete.confirm.selected": "Do you really want to delete the selected files? This action cannot be undone.",
"files.empty": "Még nincsenek fájlok",
+ "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",
"import": "Importálás",
"info": "Info",
"insert": "Beilleszt",
@@ -324,7 +426,6 @@
"installation.issues.mbstring": "Az MB String
bővítmény engedélyezése szükséges",
"installation.issues.media": "A /media
mappa nem létezik vagy nem írható",
"installation.issues.php": "Bizonyosodj meg róla, hogy az általad használt PHP-verzió PHP 8+
",
- "installation.issues.server": "A Kirby az alábbi szervereken futtatható: Apache
, Nginx
vagy Caddy
",
"installation.issues.sessions": "A /site/sessions
könyvtár nem létezik vagy nem írható",
"language": "Nyelv",
@@ -332,6 +433,7 @@
"language.convert": "Alapértelmezettnek jelölés",
"language.convert.confirm": "{secret}
manually to your authenticator app.",
+ "login.totp.enable.confirm.headline": "2. Confirm with generated code",
+ "login.totp.enable.confirm.text": "Your app generates a new one‑time code every 30 seconds. Enter the current code to complete the setup:",
+ "login.totp.enable.confirm.label": "Current code",
+ "login.totp.enable.confirm.help": "After this setup, we will ask you for a one‑time code every time you log in.",
+ "login.totp.enable.success": "One‑time codes enabled",
+ "login.totp.disable.option": "Disable one‑time codes",
+ "login.totp.disable.label": "Enter your password to disable one‑time codes",
+ "login.totp.disable.help": "In the future, a different second factor like a login code sent via email will be requested when you log in. You can always set up one‑time codes again later.",
+ "login.totp.disable.admin": "
Az oldal törlésekor a hozzá tartozó aloldalak is törlődnek.",
"page.delete.confirm.title": "Megerősítéshez add meg az oldal címét",
- "page.draft.create": "Piszkozat létrehozása",
"page.duplicate.appendix": "Másol",
"page.duplicate.files": "Fájlok másolása",
"page.duplicate.pages": "Oldalak másolása",
+ "page.move": "Move page",
"page.sort": "Sorrend megváltoztatása",
"page.status": "Állapot",
"page.status.draft": "Piszkozat",
@@ -450,6 +604,7 @@
"page.status.unlisted.description": "Az oldal csak URL-en keresztül érhető el",
"pages": "Oldalak",
+ "pages.delete.confirm.selected": "Do you really want to delete the selected pages? This action cannot be undone.",
"pages.empty": "Nincs még bejegyzés",
"pages.status.draft": "Piszkozatok",
"pages.status.listed": "Publikálva",
@@ -457,19 +612,26 @@
"pagination.page": "Oldal",
- "password": "Jelszó",
+ "password": "Jelsz\u00f3",
"paste": "Beillesztés",
"paste.after": "Beillesztés utána",
+ "paste.success": "{count} pasted!",
"pixel": "Pixel",
"plugin": "Plugin",
"plugins": "Pluginek",
"prev": "Előző",
"preview": "Előnézet",
+
+ "publish": "Publish",
+ "published": "Publikálva",
+
"remove": "Eltávolítás",
"rename": "Átnevezés",
- "replace": "Cserél",
+ "renew": "Renew",
+ "replace": "Cser\u00e9l",
+ "replace.with": "Replace with",
"retry": "Próbáld újra",
- "revert": "Visszavonás",
+ "revert": "Visszavon\u00e1s",
"revert.confirm": "Tényleg törölni szeretnél minden nem mentett változtatást?",
"role": "Szerepkör",
@@ -481,12 +643,15 @@
"role.nobody.description": "Ez a visszatérő szabály a nem rendelkező jogosultsághoz",
"role.nobody.title": "Senki",
- "save": "Mentés",
+ "save": "Ment\u00e9s",
+ "saved": "Saved",
"search": "Keresés",
+ "searching": "Searching",
"search.min": "A kereséshez írj be minimum {min} karaktert",
- "search.all": "Összes mutatása",
+ "search.all": "Show all {count} results",
"search.results.none": "Nincs találat",
+ "section.invalid": "The section is invalid",
"section.required": "Ez a szakasz kötelező",
"security": "Security",
@@ -496,18 +661,27 @@
"show": "Mutat",
"site.blueprint": "Ehhez a weblaphoz még nem tartozik oldalsablon. Itt hozhatod létre: /site/blueprints/site.yml",
"size": "Méret",
- "slug": "URL név",
+ "slug": "URL n\u00e9v",
"sort": "Rendezés",
+ "sort.drag": "Drag to sort …",
+ "split": "Split",
"stats.empty": "No reports",
+ "status": "Állapot",
+
+ "system.info.copy": "Copy info",
+ "system.info.copied": "System info copied",
"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",
+ "system.issues.eol.php": "Your installed PHP release { release } has reached end-of-life and will not receive further security updates",
"system.issues.debug": "Debugging must be turned off in production",
"system.issues.git": "The .git folder seems to be exposed",
"system.issues.https": "We recommend HTTPS for all your sites",
"system.issues.kirby": "The kirby folder seems to be exposed",
+ "system.issues.local": "The site is running locally with relaxed security checks",
"system.issues.site": "The site folder seems to be exposed",
+ "system.issues.vue.compiler": "The Vue template compiler is enabled",
"system.issues.vulnerability.kirby": "Your installation might be affected by the following vulnerability ({ severity } severity): { description }",
"system.issues.vulnerability.plugin": "Your installation might be affected by the following vulnerability in the { plugin } plugin ({ severity } severity): { description }",
"system.updateStatus": "Update status",
@@ -520,12 +694,21 @@
"system.updateStatus.update": "Free update { version } available",
"system.updateStatus.upgrade": "Upgrade { version } available",
- "title": "Cím",
+ "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",
+ "toolbar.button.clear": "Clear formatting",
"toolbar.button.code": "Kód",
- "toolbar.button.bold": "Félkövér szöveg",
+ "toolbar.button.bold": "F\u00e9lk\u00f6v\u00e9r sz\u00f6veg",
"toolbar.button.email": "Email",
"toolbar.button.headings": "Címsor",
"toolbar.button.heading.1": "Címsor 1",
@@ -541,6 +724,8 @@
"toolbar.button.link": "Link",
"toolbar.button.paragraph": "Bekezdés",
"toolbar.button.strike": "Áthúzott szöveg",
+ "toolbar.button.sub": "Subscript",
+ "toolbar.button.sup": "Superscript",
"toolbar.button.ol": "Rendezett lista",
"toolbar.button.underline": "Aláhúzott szöveg",
"toolbar.button.ul": "Rendezetlen lista",
@@ -550,6 +735,8 @@
"translation.name": "Magyar",
"translation.locale": "hu_HU",
+ "type": "Type",
+
"upload": "Feltöltés",
"upload.error.cantMove": "A feltöltött fájlt nem sikerült áthelyezni",
"upload.error.cantWrite": "Hiba a fájl lemezre írása közben",
@@ -562,7 +749,7 @@
"upload.error.noFiles": "Nem lettek fájlok feltöltve",
"upload.error.partial": "A fájl feltöltése csak részben sikerült",
"upload.error.tmpDir": "Hiányzik egy átmeneti mappa",
- "upload.errors": "Error",
+ "upload.errors": "Hiba",
"upload.progress": "Feltöltés...",
"url": "Url",
@@ -574,6 +761,7 @@
"user.changeLanguage": "Nyelv módosítása",
"user.changeName": "Felhasználó átnevezése",
"user.changePassword": "Jelszó módosítása",
+ "user.changePassword.current": "Your current password",
"user.changePassword.new": "Új jelszó",
"user.changePassword.new.confirm": "Az új jelszó megerősítése",
"user.changeRole": "Szerepkör módosítása",
@@ -584,18 +772,21 @@
"users": "Felhasználók",
- "version": "Kirby verzió",
+ "version": "Kirby verzi\u00f3",
+ "version.changes": "Changed version",
+ "version.compare": "Compare versions",
"version.current": "Current version",
"version.latest": "Latest version",
"versionInformation": "Version information",
- "view.account": "Fiókod",
- "view.installation": "Telepítés",
+ "view": "View",
+ "view.account": "Fi\u00f3kod",
+ "view.installation": "Telep\u00edt\u00e9s",
"view.languages": "Nyelvek",
"view.resetPassword": "Jelszó visszaállítása",
"view.site": "Weboldal",
"view.system": "Rendszer",
- "view.users": "Felhasználók",
+ "view.users": "Felhaszn\u00e1l\u00f3k",
"welcome": "Üdvözlünk",
"year": "Év",
diff --git a/kirby/i18n/translations/id.json b/kirby/i18n/translations/id.json
index f226111..b6f0e0f 100644
--- a/kirby/i18n/translations/id.json
+++ b/kirby/i18n/translations/id.json
@@ -3,19 +3,28 @@
"account.delete": "Hapus akun Anda",
"account.delete.confirm": "Anda yakin menghapus akun? Anda akan dikeluarkan segera. Akun Anda tidak dapat dipulihkan.",
+ "activate": "Activate",
"add": "Tambah",
+ "alpha": "Alpha",
"author": "Penulis",
"avatar": "Gambar profil",
"back": "Kembali",
"cancel": "Batal",
"change": "Ubah",
"close": "Tutup",
+ "changes": "Perubahan",
"confirm": "Oke",
"collapse": "Lipat",
"collapse.all": "Lipat Semua",
+ "color": "Warna",
+ "coordinates": "Koordinat",
"copy": "Salin",
"copy.all": "Salin semua",
+ "copy.success": "{count} disalin!",
+ "copy.success.multiple": "{count} copied!",
+ "copy.url": "Copy URL",
"create": "Buat",
+ "custom": "Kustom",
"date": "Tanggal",
"date.select": "Pilih tanggal",
@@ -34,13 +43,20 @@
"delete": "Hapus",
"delete.all": "Hapus semua",
+ "dialog.fields.empty": "Dialog ini tidak memiliki bidang",
"dialog.files.empty": "Tidak ada berkas untuk dipilih",
"dialog.pages.empty": "Tidak ada halaman untuk dipilih",
+ "dialog.text.empty": "Dialog ini tidak mendefinisikan teks apa pun",
"dialog.users.empty": "Tidak ada pengguna untuk dipilih",
"dimensions": "Dimensi",
+ "disable": "Disable",
"disabled": "Dimatikan",
"discard": "Buang",
+
+ "drawer.fields.empty": "Drawer ini tidak memiliki bidang",
+
+ "domain": "Domain",
"download": "Unduh",
"duplicate": "Duplikasi",
@@ -49,11 +65,13 @@
"email": "Surel",
"email.placeholder": "surel@contoh.com",
- "entries": "Entries",
- "entry": "Entry",
+ "enter": "Masuk",
+ "entries": "Entri",
+ "entry": "Entri",
- "environment": "Environment",
+ "environment": "Lingkungan",
+ "error": "Kesalahan",
"error.access.code": "Kode tidak valid",
"error.access.login": "Upaya masuk tidak valid",
"error.access.panel": "Anda tidak diizinkan mengakses panel",
@@ -70,17 +88,35 @@
"error.blocks.max.singular": "Anda tidak boleh menambahkan lebih dari satu blok",
"error.blocks.min.plural": "Anda setidaknya menambahkan {min} blok",
"error.blocks.min.singular": "Anda setidaknya menambahkan satu blok",
- "error.blocks.validation": "There's an error on the \"{field}\" field in block {index} using the \"{fieldset}\" block type",
+ "error.blocks.validation": "Ada kesalahan di bidang \"{field}\" di blok {index} menggunakan \"{fieldset}\" tipe blok",
- "error.cache.type.invalid": "Invalid cache type \"{type}\"",
+ "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.entries.max.plural": "You must not add more than {max} entries",
+ "error.entries.max.singular": "You must not add more than one entry",
+ "error.entries.min.plural": "You must add at least {min} entries",
+ "error.entries.min.singular": "You must add at least one entry",
+ "error.entries.supports": "\"{type}\" field type is not supported for the entries field",
+ "error.entries.validation": "Ada kesalahan pada bidang \"{field}\" di baris {index}",
"error.email.preset.notFound": "Surel \"{name}\" tidak dapat ditemukan",
"error.field.converter.invalid": "Konverter \"{converter}\" tidak valid",
- "error.field.type.missing": "Field \"{ name }\": The field type \"{ type }\" does not exist",
+ "error.field.link.options": "Invalid options: {options}",
+ "error.field.type.missing": "Bidang \"{ name }\": Tipe bidang \"{ type }\" tidak ada",
"error.file.changeName.empty": "Nama harus diisi",
"error.file.changeName.permission": "Anda tidak diizinkan mengubah nama berkas \"{filename}\"",
+ "error.file.changeTemplate.invalid": "Templat untuk berkas \"{id}\" tidak dapat diubah menjadi \"{template}\" (valid: \"{blueprints}\")",
+ "error.file.changeTemplate.permission": "Anda tidak diizinkan mengubah templat untuk berkas \"{id}\"",
+
+ "error.file.delete.multiple": "Not all files could be deleted. Try each remaining file individually to see the specific error that prevents deletion.",
"error.file.duplicate": "Berkas dengan nama \"{filename}\" sudah ada",
"error.file.extension.forbidden": "Ekstensi \"{extension}\" tidak diizinkan",
"error.file.extension.invalid": "Ekstensi tidak valid: {extension}",
@@ -95,9 +131,11 @@
"error.file.minheight": "Tinggi gambar setidaknya {height} piksel",
"error.file.minsize": "Berkas terlalu kecil",
"error.file.minwidth": "Lebar gambar setidaknya {width} piksel",
+ "error.file.name.unique": "Nama berkas harus unik",
"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",
@@ -106,22 +144,30 @@
"error.form.notSaved": "Formulir tidak dapat disimpan",
"error.language.code": "Masukkan kode bahasa yang valid",
+ "error.language.create.permission": "You are not allowed to create a language",
+ "error.language.delete.permission": "You are not allowed to delete the language",
"error.language.duplicate": "Bahasa sudah ada",
"error.language.name": "Masukkan nama bahasa yang valid",
- "error.language.notFound": "The language could not be found",
+ "error.language.notFound": "Bahasa tidak ditemukan",
+ "error.language.update.permission": "You are not allowed to update the language",
- "error.layout.validation.block": "There's an error on the \"{field}\" field in block {blockIndex} using the \"{fieldset}\" block type in layout {layoutIndex}",
+ "error.layout.validation.block": "Ada kesalahan pada bidang \"{field}\" di blok {blockIndex} menggunakan tipe blok \"{fieldset}\" di tata letak {layoutIndex}",
"error.layout.validation.settings": "Ada kesalahan di pengaturan tata letak {index}",
- "error.license.format": "Masukkan kode lisensi yang valid",
+ "error.license.domain": "The domain for the license is missing",
"error.license.email": "Masukkan surel yang valid",
+ "error.license.format": "Please enter a valid license code",
"error.license.verification": "Lisensi tidak dapat diverifikasi",
- "error.object.validation": "There’s an error in the \"{label}\" field:\n{message}",
+ "error.login.totp.confirm.invalid": "Kode tidak valid",
+ "error.login.totp.confirm.missing": "Please enter the current code",
- "error.offline": "The Panel is currently offline",
+ "error.object.validation": "Ada kesalahan di bidang \"{label}\":\n{message}",
+
+ "error.offline": "Panel saat ini luring",
"error.page.changeSlug.permission": "Anda tidak diizinkan mengubah akhiran URL untuk \"{slug}\"",
+ "error.page.changeSlug.reserved": "Alur halaman-halaman level atas tidak boleh diawali dengan \"{path}\"",
"error.page.changeStatus.incomplete": "Halaman memiliki kesalahan dan tidak dapat diterbitkan",
"error.page.changeStatus.permission": "Status halaman ini tidak dapat diubah",
"error.page.changeStatus.toDraft.invalid": "Halaman \"{slug}\" tidak dapat dikonversi menjadi draf",
@@ -133,10 +179,18 @@
"error.page.delete": "Halaman \"{slug}\" tidak dapat dihapus",
"error.page.delete.confirm": "Masukkan judul halaman untuk mengonfirmasi",
"error.page.delete.hasChildren": "Halaman ini memiliki sub-halaman dan tidak dapat dihapus",
+ "error.page.delete.multiple": "Not all pages could be deleted. Try each remaining page individually to see the specific error that prevents deletion.",
"error.page.delete.permission": "Anda tidak diizinkan menghapus \"{slug}\"",
"error.page.draft.duplicate": "Draf halaman dengan akhiran URL \"{slug}\" sudah ada",
"error.page.duplicate": "Halaman dengan akhiran URL \"{slug}\" sudah ada",
"error.page.duplicate.permission": "Anda tidak diizinkan menduplikasi \"{slug}\"",
+ "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}\"",
"error.page.notFound": "Halaman \"{slug}\" tidak dapat ditemukan",
"error.page.num.invalid": "Masukkan nomor urut yang valid. Nomor tidak boleh negatif.",
"error.page.slug.invalid": "Masukkan akhiran URL yang valid",
@@ -163,9 +217,11 @@
"error.site.changeTitle.permission": "Anda tidak diizinkan mengubah judul situs",
"error.site.update.permission": "Anda tidak diizinkan memperbaharui situs",
+ "error.structure.validation": "Ada kesalahan pada bidang \"{field}\" di baris {index}",
+
"error.template.default.notFound": "Templat bawaan tidak ada",
- "error.unexpected": "An unexpected error occurred! Enable debug mode for more info: https://getkirby.com/docs/reference/system/options/debug",
+ "error.unexpected": "Kesalahan tidak terduga terjadi! Hidupkan mode debug untuk informasi lebih lanjut: https://getkirby.com/docs/reference/system/options/debug",
"error.user.changeEmail.permission": "Anda tidak diizinkan mengubah surel dari pengguna \"{name}\"",
"error.user.changeLanguage.permission": "Anda tidak diizinkan mengubah bahasa dari pengguna \"{name}\"",
@@ -183,7 +239,7 @@
"error.user.email.invalid": "Masukkan surel yang valid",
"error.user.language.invalid": "Masukkan bahasa yang valid",
"error.user.notFound": "Pengguna \"{name}\" tidak dapat ditemukan",
- "error.user.password.excessive": "Please enter a valid password. Passwords must not be longer than 1000 characters.",
+ "error.user.password.excessive": "Masukkan sandi yang valid. Sandi tidak boleh lebih dari 1000 karakter.",
"error.user.password.invalid": "Masukkan sandi yang valid. Sandi setidaknya mengandung 8 karakter.",
"error.user.password.notSame": "Sandi tidak cocok",
"error.user.password.undefined": "Pengguna tidak memiliki sandi",
@@ -195,8 +251,10 @@
"error.validation.accepted": "Mohon konfirmasi",
"error.validation.alpha": "Masukkan hanya karakter a-z",
"error.validation.alphanum": "Masukkan hanya karakter a-z atau 0-9",
+ "error.validation.anchor": "Masukkan tautan yang valid",
"error.validation.between": "Masukkan nilai antara \"{min}\" dan \"{max}\"",
"error.validation.boolean": "Mohon konfirmasi atau tolak",
+ "error.validation.color": "Masukkan warna yang valid dalam format {format}",
"error.validation.contains": "Masukkan nilai yang mengandung \"{needle}\"",
"error.validation.date": "Masukkan tanggal yang valid",
"error.validation.date.after": "Masukkan tanggal setelah {date}",
@@ -211,6 +269,7 @@
"error.validation.integer": "Masukkan bilangan bulat yang valid",
"error.validation.ip": "Masukkan IP yang valid",
"error.validation.less": "Masukkan nilai kurang dari {max}",
+ "error.validation.linkType": "Tipe tautan tidak diizinkan",
"error.validation.match": "Nilai tidak cocok dengan pola yang semestinya",
"error.validation.max": "Masukkan nilai yang sama dengan atau kurang dari {max}",
"error.validation.maxlength": "Masukkan nilai yang lebih pendek. (maksimal {max} karakter)",
@@ -227,15 +286,18 @@
"error.validation.same": "Masukkan \"{other}\"",
"error.validation.size": "Ukuran dari nilai harus \"{size}\"",
"error.validation.startswith": "Nilai harus diawali dengan \"{start}\"",
+ "error.validation.tel": "Masukkan nomor telepon tanpa format",
"error.validation.time": "Masukkan waktu yang valid",
"error.validation.time.after": "Masukkan waktu setelah {time}",
"error.validation.time.before": "Masukkan waktu sebelum {time}",
"error.validation.time.between": "Masukkan waktu antara {min} dan {max}",
+ "error.validation.uuid": "Masukkan UUID yang valid",
"error.validation.url": "Masukkan URL yang valid",
"expand": "Luaskan",
"expand.all": "Luaskan Semua",
+ "field.invalid": "Bidang tidak valid",
"field.required": "Bidang ini wajib",
"field.blocks.changeType": "Ubah tipe",
"field.blocks.code.name": "Kode",
@@ -245,8 +307,9 @@
"field.blocks.delete.confirm.all": "Anda yakin menghapus semua blok?",
"field.blocks.delete.confirm.selected": "Anda yakin menghapus blok yang dipilih?",
"field.blocks.empty": "Belum ada blok",
+ "field.blocks.fieldsets.empty": "Belum ada set bidang",
"field.blocks.fieldsets.label": "Pilih tipe blok …",
- "field.blocks.fieldsets.paste": "Press {{ shortcut }} to paste/import blocks from your clipboard",
+ "field.blocks.fieldsets.paste": "Press {{ shortcut }} to import layouts/blocks from your clipboard Only those allowed in the current field will get inserted.",
"field.blocks.gallery.name": "Galeri",
"field.blocks.gallery.images.empty": "Belum ada gambar",
"field.blocks.gallery.images.label": "Gambar",
@@ -254,11 +317,16 @@
"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": "Deskripsi",
+ "field.blocks.image.caption": "Keterangan",
"field.blocks.image.crop": "Pangkas",
"field.blocks.image.link": "Tautan",
"field.blocks.image.location": "Lokasi",
+ "field.blocks.image.location.internal": "This website",
+ "field.blocks.image.location.external": "External source",
"field.blocks.image.name": "Gambar",
"field.blocks.image.placeholder": "Pilih gambar",
"field.blocks.image.ratio": "Rasio",
@@ -275,38 +343,72 @@
"field.blocks.quote.citation.placeholder": "oleh …",
"field.blocks.text.name": "Teks",
"field.blocks.text.placeholder": "Teks …",
+ "field.blocks.video.autoplay": "Autoplay",
"field.blocks.video.caption": "Deskripsi",
+ "field.blocks.video.controls": "Controls",
+ "field.blocks.video.location": "Lokasi",
+ "field.blocks.video.loop": "Loop",
+ "field.blocks.video.muted": "Muted",
"field.blocks.video.name": "Video",
"field.blocks.video.placeholder": "Masukkan URL video",
+ "field.blocks.video.poster": "Poster",
+ "field.blocks.video.preload": "Preload",
"field.blocks.video.url.label": "URL Video",
"field.blocks.video.url.placeholder": "https://youtube.com/?v=",
- "field.files.empty": "Belum ada berkas yang dipilih",
+ "field.entries.delete.confirm.all": "Do you really want to delete all entries?",
+ "field.entries.empty": "Belum ada entri",
+ "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",
"field.layout.delete.confirm": "Anda yakin menghapus tata letak ini?",
+ "field.layout.delete.confirm.all": "Do you really want to delete all layouts?",
"field.layout.empty": "Belum ada baris",
"field.layout.select": "Pilih tata letak",
"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",
+
+ "file": "Berkas",
"file.blueprint": "This file has no blueprint yet. You can define the setup in /site/blueprints/files/{blueprint}.yml",
+ "file.changeTemplate": "Ubah templat",
+ "file.changeTemplate.notice": "Changing the file's template will remove content for fields that don't match in type. If the new template defines certain rules, e.g. image dimensions, those will also be applied irreversibly. Use with caution.",
"file.delete.confirm": "Anda yakin menghapus
{filename}?",
+ "file.focus.placeholder": "Set focal point",
+ "file.focus.reset": "Remove focal point",
+ "file.focus.title": "Focus",
"file.sort": "Ubah posisi",
"files": "Berkas",
+ "files.delete.confirm.selected": "Do you really want to delete the selected files? This action cannot be undone.",
"files.empty": "Belum ada berkas",
+ "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",
"import": "Import",
"info": "Info",
"insert": "Sisipkan",
@@ -324,7 +426,6 @@
"installation.issues.mbstring": "Ekstensi MB String
diperlukan",
"installation.issues.media": "Folder /media
tidak ada atau tidak dapat ditulis",
"installation.issues.php": "Pastikan Anda menggunakan PHP 8+
",
- "installation.issues.server": "Kirby memerlukan Apache
, Nginx
, atau Caddy
",
"installation.issues.sessions": "Folder /site/sessions
tidak ada atau tidak dapat ditulis",
"language": "Bahasa",
@@ -332,6 +433,7 @@
"language.convert": "Atur sebagai bawaan",
"language.convert.confirm": "{secret}
manually to your authenticator app.",
+ "login.totp.enable.confirm.headline": "2. Confirm with generated code",
+ "login.totp.enable.confirm.text": "Your app generates a new one‑time code every 30 seconds. Enter the current code to complete the setup:",
+ "login.totp.enable.confirm.label": "Current code",
+ "login.totp.enable.confirm.help": "After this setup, we will ask you for a one‑time code every time you log in.",
+ "login.totp.enable.success": "One‑time codes enabled",
+ "login.totp.disable.option": "Disable one‑time codes",
+ "login.totp.disable.label": "Enter your password to disable one‑time codes",
+ "login.totp.disable.help": "In the future, a different second factor like a login code sent via email will be requested when you log in. You can always set up one‑time codes again later.",
+ "login.totp.disable.admin": "
Semua sub-halaman akan ikut dihapus.",
"page.delete.confirm.title": "Masukkan judul halaman untuk mengonfirmasi",
- "page.draft.create": "Buat draf",
"page.duplicate.appendix": "Salin",
"page.duplicate.files": "Salin berkas",
"page.duplicate.pages": "Salin halaman",
+ "page.move": "Move page",
"page.sort": "Ubah posisi",
"page.status": "Status",
"page.status.draft": "Draf",
@@ -450,6 +604,7 @@
"page.status.unlisted.description": "Halaman hanya dapat diakses via URL",
"pages": "Halaman",
+ "pages.delete.confirm.selected": "Do you really want to delete the selected pages? This action cannot be undone.",
"pages.empty": "Belum ada halaman",
"pages.status.draft": "Draf",
"pages.status.listed": "Dipublikasikan",
@@ -460,14 +615,21 @@
"password": "Sandi",
"paste": "Paste",
"paste.after": "Paste after",
+ "paste.success": "{count} pasted!",
"pixel": "Piksel",
"plugin": "Plugin",
"plugins": "Plugins",
"prev": "Sebelumnya",
"preview": "Pratinjau",
+
+ "publish": "Publish",
+ "published": "Dipublikasikan",
+
"remove": "Hapus",
"rename": "Ubah nama",
+ "renew": "Renew",
"replace": "Ganti",
+ "replace.with": "Replace with",
"retry": "Coba lagi",
"revert": "Kembalikan",
"revert.confirm": "Anda yakin menghapus semua perubahan yang belum tersimpan?",
@@ -482,34 +644,46 @@
"role.nobody.title": "Tidak siapapun",
"save": "Simpan",
+ "saved": "Saved",
"search": "Cari",
+ "searching": "Searching",
"search.min": "Masukkan {min} karakter untuk mencari",
- "search.all": "Tampilkan semua",
+ "search.all": "Show all {count} results",
"search.results.none": "Tidak ada hasil",
+ "section.invalid": "Bagian ini tidak valid",
"section.required": "Bagian ini wajib",
- "security": "Security",
+ "security": "Keamanan",
"select": "Pilih",
- "server": "Server",
+ "server": "Peladen",
"settings": "Pengaturan",
"show": "Tampilkan",
"site.blueprint": "Situs ini belum memiliki cetak biru. Anda dapat mendefinisikannya di /site/blueprints/site.yml",
"size": "Ukuran",
"slug": "Akhiran URL",
"sort": "Urutkan",
+ "sort.drag": "Geser untuk mengurutkan …",
+ "split": "Pisahkan",
- "stats.empty": "No reports",
- "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",
+ "stats.empty": "Tidak ada laporan",
+ "status": "Status",
+
+ "system.info.copy": "Copy info",
+ "system.info.copied": "System info copied",
+ "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",
+ "system.issues.eol.php": "Your installed PHP release { release } has reached end-of-life and will not receive further security updates",
"system.issues.debug": "Debugging must be turned off in production",
"system.issues.git": "The .git folder seems to be exposed",
"system.issues.https": "We recommend HTTPS for all your sites",
"system.issues.kirby": "The kirby folder seems to be exposed",
+ "system.issues.local": "The site is running locally with relaxed security checks",
"system.issues.site": "The site folder seems to be exposed",
- "system.issues.vulnerability.kirby": "Your installation might be affected by the following vulnerability ({ severity } severity): { description }",
- "system.issues.vulnerability.plugin": "Your installation might be affected by the following vulnerability in the { plugin } plugin ({ severity } severity): { description }",
+ "system.issues.vue.compiler": "The Vue template compiler is enabled",
+ "system.issues.vulnerability.kirby": "Instalasi Anda mungkin terpengaruh oleh celah keamanan berikut ({ severity } severity): { description }",
+ "system.issues.vulnerability.plugin": "Instalasi Anda mungkin terpengaruh oleh celah keamanan di dalam plugin { plugin } ({ severity } severity): { description }",
"system.updateStatus": "Update status",
"system.updateStatus.error": "Could not check for updates",
"system.updateStatus.not-vulnerable": "No known vulnerabilities",
@@ -520,10 +694,19 @@
"system.updateStatus.update": "Free update { version } available",
"system.updateStatus.upgrade": "Upgrade { version } available",
- "title": "Judul",
+ "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",
+ "toolbar.button.clear": "Clear formatting",
"toolbar.button.code": "Kode",
"toolbar.button.bold": "Tebal",
"toolbar.button.email": "Surel",
@@ -541,6 +724,8 @@
"toolbar.button.link": "Tautan",
"toolbar.button.paragraph": "Paragraph",
"toolbar.button.strike": "Coret",
+ "toolbar.button.sub": "Subscript",
+ "toolbar.button.sup": "Superscript",
"toolbar.button.ol": "Daftar berurut",
"toolbar.button.underline": "Garis bawah",
"toolbar.button.ul": "Daftar tidak berurut",
@@ -550,6 +735,8 @@
"translation.name": "Bahasa Indonesia",
"translation.locale": "id_ID",
+ "type": "Type",
+
"upload": "Unggah",
"upload.error.cantMove": "Berkas unggahan tidak dapat dipindahkan",
"upload.error.cantWrite": "Gagal menyimpan berkas",
@@ -574,6 +761,7 @@
"user.changeLanguage": "Ubah bahasa",
"user.changeName": "Ubah nama pengguna ini",
"user.changePassword": "Ubah sandi",
+ "user.changePassword.current": "Your current password",
"user.changePassword.new": "Sandi baru",
"user.changePassword.new.confirm": "Konfirmasi sandi baru…",
"user.changeRole": "Ubah peran",
@@ -585,10 +773,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/kirby/i18n/translations/is_IS.json b/kirby/i18n/translations/is_IS.json
index f6d6259..a8fff49 100644
--- a/kirby/i18n/translations/is_IS.json
+++ b/kirby/i18n/translations/is_IS.json
@@ -3,19 +3,28 @@
"account.delete": "Eyða notandareikning þínum",
"account.delete.confirm": "Ertu alveg viss um að þú viljir endanlega eyða reikningnum þínum? Þú munt verða útskráð/ur án tafar. Ómögulegt verður að endurheimta reikninginn þinn.",
+ "activate": "Virkja",
"add": "Bæta við",
+ "alpha": "Gagnsæi",
"author": "Höfundur",
"avatar": "Prófíl mynd",
"back": "Til baka",
"cancel": "Hætta við",
"change": "Breyta",
"close": "Loka",
+ "changes": "Breytingar",
"confirm": "OK",
"collapse": "Fella",
"collapse.all": "Fella allt",
+ "color": "Litur",
+ "coordinates": "Hnit",
"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",
"date": "Dagsetning",
"date.select": "Veldu dagsetningu",
@@ -34,13 +43,20 @@
"delete": "Eyða",
"delete.all": "Eyða hreint öllu",
+ "dialog.fields.empty": "Þessi valmynd hefur engin svið",
"dialog.files.empty": "Engar skrár til að velja úr",
"dialog.pages.empty": "Engar síður til að velja úr",
+ "dialog.text.empty": "þessi valmynd skilgreinir engan texta",
"dialog.users.empty": "Engir notendur til að velja úr",
"dimensions": "Rýmd",
+ "disable": "Afvirkja",
"disabled": "Óvirkt",
"discard": "Hunsa",
+
+ "drawer.fields.empty": "Þessi skúffa hefur engin svið",
+
+ "domain": "Lén",
"download": "Hlaða niður",
"duplicate": "Klóna",
@@ -49,11 +65,13 @@
"email": "Netfang",
"email.placeholder": "nafn@netfang.is",
+ "enter": "Venda",
"entries": "Færslur",
"entry": "Færsla",
"environment": "Umhverfi",
+ "error": "Villa",
"error.access.code": "Ógildur kóði",
"error.access.login": "Ógild innskráning",
"error.access.panel": "Þú hefur ekkert leyfi til að nota panelinn",
@@ -74,13 +92,31 @@
"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.entries.max.plural": "You must not add more than {max} entries",
+ "error.entries.max.singular": "You must not add more than one entry",
+ "error.entries.min.plural": "You must add at least {min} entries",
+ "error.entries.min.singular": "You must add at least one entry",
+ "error.entries.supports": "\"{type}\" field type is not supported for the entries field",
+ "error.entries.validation": "Það er villa í \"{field}\" sviðinu í röð {index}",
+
"error.email.preset.notFound": "Netfangstillingarnar: \"{name}\" fundust ekki",
"error.field.converter.invalid": "Ógildur umbreytari \"{converter}\"",
+ "error.field.link.options": "Invalid options: {options}",
"error.field.type.missing": "Sviðið \"{ name }\": Sviðgerðin er \"{type}\" er alls ekki til.",
"error.file.changeName.empty": "Nafn skal fylla út",
"error.file.changeName.permission": "Þú mátt ekkert breyta nafninu á skránni \"{filename}\"",
+ "error.file.changeTemplate.invalid": "Sniðmátinu fyrir skránna \"{id}\" er ekki hægt að breyta í \"{template}\" (gild: \"{blueprints}\")",
+ "error.file.changeTemplate.permission": "Þú mátt ekkert breyta sniðmátinu fyrir skránna \"{id}\"",
+
+ "error.file.delete.multiple": "Not all files could be deleted. Try each remaining file individually to see the specific error that prevents deletion.",
"error.file.duplicate": "Skrá með nafninu \"{filename}\" er nú þegar til",
"error.file.extension.forbidden": "Skrárendingin \"{extension}\" er ekki leyfð",
"error.file.extension.invalid": "Óleyfilegt skrársnið hér: {extension}",
@@ -95,9 +131,11 @@
"error.file.minheight": "Hæð myndarinnar þarf að vera minnst {height} punktar",
"error.file.minsize": "Skráin er of smá",
"error.file.minwidth": "Breidd myndarinnar þarf að vera minnst {width} punktar",
+ "error.file.name.unique": "Skrárnafnið þarf að vera einstakt",
"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",
@@ -106,37 +144,53 @@
"error.form.notSaved": "Ekki tókst að vista upplýsingar úr forminu",
"error.language.code": "Gófúslega settu inn gildan kóða fyrir tungumál",
+ "error.language.create.permission": "You are not allowed to create a language",
+ "error.language.delete.permission": "You are not allowed to delete the language",
"error.language.duplicate": "Þetta tungumál er nú þegar skráð",
"error.language.name": "Gott og gyllt nafn fyrir tungumálið",
"error.language.notFound": "Tungumálið fannst ekkert",
+ "error.language.update.permission": "You are not allowed to update the language",
"error.layout.validation.block": "Það er villa í {field} sviðinu í bálkinum {blockIndex} sem notar {fieldset} bálkgerðina í rammanum {layoutIndex}",
"error.layout.validation.settings": "Hér er villa í sitllingum fyrir ramman {index}",
- "error.license.format": "Gildur leyfiskóði hér",
+ "error.license.domain": "Lénið fyrir skráningarleyfið vantar",
"error.license.email": "Almennilegt netfang hér",
+ "error.license.format": "Vinsamlegast og fyrir alla muni settu inn gildan leyfiskóða",
"error.license.verification": "Ekki heppnaðist að staðfesta leyfið",
+ "error.login.totp.confirm.invalid": "Ógildur kóði",
+ "error.login.totp.confirm.missing": "Settu inn núverandi lykilkóða",
+
"error.object.validation": "Það er villa í \"{label}\" sviðinu:\n{message}",
"error.offline": "Stjórnborðið er óvirkt eins og stendur.",
"error.page.changeSlug.permission": "Þú hefur ekkert leyfi til þess að breyta slóðarviðskeytinu fyrir \"{slug}\"",
+ "error.page.changeSlug.reserved": "Slóð síðna í rótinni verður að byrja með \"{path}\"",
"error.page.changeStatus.incomplete": "Það eru villur á síðunni og við getum ekki gefið hana út",
"error.page.changeStatus.permission": "Stöðu síðunnar var ekki hægt að breyta",
"error.page.changeStatus.toDraft.invalid": "Síðunni \"{slug}\" er ekki hægt að breyta í uppkast",
"error.page.changeTemplate.invalid": "Sniðmáti fyrir síðuna \"{slug}\" er ekki hægt að breyta",
"error.page.changeTemplate.permission": "Þú hefur engan veginn leyfi til að breyta sniðmáti fyrir síðuna \"{slug}\"",
- "error.page.changeTitle.empty": "Ekki skilja titilinn eftir tóman",
+ "error.page.changeTitle.empty": "Titillinn getur ekki verið óskilgreindur",
"error.page.changeTitle.permission": "Þú mátt ekki breyta titlinum fyrir \"{slug}\"",
"error.page.create.permission": "Þú hefur ekki leyfi til að stofna \"{slug}\"",
"error.page.delete": "Síðunni \"{slug}\" er ekki hægt að eyða",
"error.page.delete.confirm": "Ritaðu titil síðunnar til að staðfesta",
"error.page.delete.hasChildren": "Síðan hefur undirsíður og er því ekki hægt að eyða",
+ "error.page.delete.multiple": "Not all pages could be deleted. Try each remaining page individually to see the specific error that prevents deletion.",
"error.page.delete.permission": "Þú mátt ekkert eyða \"{slug}\"",
"error.page.draft.duplicate": "Uppkast með slóðinni \"{slug}\" er þegar til",
"error.page.duplicate": "Síða með slóðinni \"{slug}\" er þegar til",
"error.page.duplicate.permission": "Þú mátt ekki klóna \"{slug}\"",
+ "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}\"",
"error.page.notFound": "Síðan \"{slug}\" fannst ekkert",
"error.page.num.invalid": "Veldu ákjósanlega raðtölu. Neikvæðar tölur bannaðar.",
"error.page.slug.invalid": "Veldu ákjósanlega vefslóð",
@@ -163,6 +217,8 @@
"error.site.changeTitle.permission": "Þú mátt ekkert breyta titil vefsvæðisins",
"error.site.update.permission": "Þú mátt ekkert uppfæra vefsvæðið",
+ "error.structure.validation": "Það er villa í \"{field}\" sviðinu í röð {index}",
+
"error.template.default.notFound": "Ekkert sjálfgefið sniðmát fannst",
"error.unexpected": "Það átti sér stað óvænt villa. Notaðu lúsarleitarhaminn (e. debug mode) til að skilja þetta betur. \nFyrir nánari upplýsingar: https://getkirby.com/docs/reference/system/options/debug",
@@ -180,7 +236,7 @@
"error.user.delete.lastUser": "Síðasta notandanum er ekki hægt að eyða",
"error.user.delete.permission": "Þú mátt ekkert eyða notandanum \"{name}\"",
"error.user.duplicate": "Nú þegar finnst notandi með þetta netfang: \"{email}\"",
- "error.user.email.invalid": "Almennilegt netfang hér",
+ "error.user.email.invalid": "Vinsamlegast ákjósanlegt netfang",
"error.user.language.invalid": "Vinsamlegast ákjósanlegt tungumál",
"error.user.notFound": "Þessi notandi; \"{name}\" fannst ekki",
"error.user.password.excessive": "Vinsamlegast settu inn gilt lykilorð. Lykilorð hér meiga ekki vera lengri en 1000 stafabil.",
@@ -195,8 +251,10 @@
"error.validation.accepted": "Staðfestu",
"error.validation.alpha": "Aðeins stafir úr Enska stafrófinu, a-z",
"error.validation.alphanum": "Aðeins stafir úr Enska stafrófinu, a-z eða tölustafir 0-9",
+ "error.validation.anchor": "Vinsamlegast rétt og gillt merki",
"error.validation.between": "Gildi milli \"{min}\" og \"{max}\"",
"error.validation.boolean": "Staðfestu eða hafnaðu þessu",
+ "error.validation.color": "Endilega settu inn gildan lit í sniðinu {format}",
"error.validation.contains": "Settu inni gildi er inniheldur \"{needle}\"",
"error.validation.date": "Ákjósanlega dagsetningu",
"error.validation.date.after": "Dagsetningu eftir {date}",
@@ -204,13 +262,14 @@
"error.validation.date.between": "Dagsetningu milli {min} og {max}",
"error.validation.denied": "Hafnaðu",
"error.validation.different": "Gildið má ekki vera \"{other}\"",
- "error.validation.email": "Almennilegt netfang hér",
+ "error.validation.email": "Ákjósanlegt netfang",
"error.validation.endswith": "Gildið verður að enda á \"{end}\"",
"error.validation.filename": "Ákjósanlegt skrárnafn",
"error.validation.in": "Vinsamlegast skráðu eitt af eftirfarandi: ({in})",
"error.validation.integer": "Skráðu heiltölu",
"error.validation.ip": "Skráðu ákjósanlega IP tölu",
"error.validation.less": "Skráðu gildi lægra en {max}",
+ "error.validation.linkType": "Þessi tengilsgerð er ekki leyfð hér um slóðir.",
"error.validation.match": "Gildið er ekki eftir væntingum",
"error.validation.max": "Skráðu gildi sem er ekki hærra en {max}",
"error.validation.maxlength": "Veldu eitthvað styttra. (hámark {max} stafir)",
@@ -227,38 +286,47 @@
"error.validation.same": "Skráðu \"{other}\"",
"error.validation.size": "Gildið þarf að vera \"{size}\"",
"error.validation.startswith": "Þetta þarf að byrja á \"{start}\"",
+ "error.validation.tel": "Vinsamlegast ósniðið símanúmer hér.",
"error.validation.time": "Ákjósanlegur tími",
"error.validation.time.after": "Veldu tíma eftir {time}",
"error.validation.time.before": "Veldu tíma fyrir{time}",
"error.validation.time.between": "Veldu tíma milli {min} og {max}",
+ "error.validation.uuid": "Vinsamlegast gillt UUID (Notandakenni)",
"error.validation.url": "Ákjósanleg vefslóð",
"expand": "Þenja út",
"expand.all": "Þenja allt út",
+ "field.invalid": "Þetta svið er bara ógillt sem stendur.",
"field.required": "Þetta svið er nauðsynlegt",
"field.blocks.changeType": "Breyta um bálkagerð",
- "field.blocks.code.name": "Kóðasnið",
+ "field.blocks.code.name": "Kóði",
"field.blocks.code.language": "Tungumal",
"field.blocks.code.placeholder": "Kóðinn þinn …",
"field.blocks.delete.confirm": "Ætlarðu virkilega að eyða þessum bálk?",
"field.blocks.delete.confirm.all": "Ertu nú alveg viss um að þú viljir eyða öllum þessum bálkum?",
"field.blocks.delete.confirm.selected": "Viltu virkilega eyða völdum bálkum?",
"field.blocks.empty": "Öngvir bálkar enn",
+ "field.blocks.fieldsets.empty": "Engin sviðasett enn",
"field.blocks.fieldsets.label": "Veldu bálkagerð …",
- "field.blocks.fieldsets.paste": "Notaðu {{ shortcut }} flýtilyklaaðgerðina til að setja bálkinn hér.",
+ "field.blocks.fieldsets.paste": "Ýttu á {{ shortcut }} til þess að flytja raðir/bálka hingað Aðeins þeir sem eru gildir hér mun verða færðir hingað.",
"field.blocks.gallery.name": "Myndasafn",
"field.blocks.gallery.images.empty": "Engar myndir enn",
"field.blocks.gallery.images.label": "Myndir",
"field.blocks.heading.level": "Stig",
"field.blocks.heading.name": "Fyrirsögn",
- "field.blocks.heading.text": "Prósi",
+ "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",
"field.blocks.image.link": "Tengill",
"field.blocks.image.location": "Staðsetning",
+ "field.blocks.image.location.internal": "Þetta vefsvæði",
+ "field.blocks.image.location.external": "Ytri kelda",
"field.blocks.image.name": "Mynd",
"field.blocks.image.placeholder": "Veldu mynd",
"field.blocks.image.ratio": "Hlutfall",
@@ -266,47 +334,81 @@
"field.blocks.line.name": "Lína",
"field.blocks.list.name": "Listi",
"field.blocks.markdown.name": "Markdown",
- "field.blocks.markdown.label": "Prósi",
+ "field.blocks.markdown.label": "Texti",
"field.blocks.markdown.placeholder": "Markdown …",
"field.blocks.quote.name": "Tilvitnun",
- "field.blocks.quote.text.label": "Prósi",
+ "field.blocks.quote.text.label": "Innihald tilvitnunar",
"field.blocks.quote.text.placeholder": "Þessi tilvitnun …",
"field.blocks.quote.citation.label": "Heimild",
"field.blocks.quote.citation.placeholder": "eftir …",
"field.blocks.text.name": "Prósi",
"field.blocks.text.placeholder": "Þessi prósi …",
- "field.blocks.video.caption": "Myndartexti",
+ "field.blocks.video.autoplay": "Sjálfspila",
+ "field.blocks.video.caption": "Myndskeiðstexti",
+ "field.blocks.video.controls": "Stjórnhnappar",
+ "field.blocks.video.location": "Staðsetning",
+ "field.blocks.video.loop": "Lykkja",
+ "field.blocks.video.muted": "Þaggað",
"field.blocks.video.name": "Myndskeið",
"field.blocks.video.placeholder": "Vefslóð myndskeiðs (URL)",
+ "field.blocks.video.poster": "Plakkat",
+ "field.blocks.video.preload": "Forhlaða",
"field.blocks.video.url.label": "Vefslóð",
"field.blocks.video.url.placeholder": "https://youtube.com/?v=",
- "field.files.empty": "Engar skrár valdar ennþá",
+ "field.entries.delete.confirm.all": "Ætlar þú virkilega að eyða öllum færslum?",
+ "field.entries.empty": "Engar færslur enn",
+ "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",
"field.layout.delete.confirm": "Ætlarðu virkilega að eyða þessum ramma?",
+ "field.layout.delete.confirm.all": "Ætlarðu virkilega að eyða öllum römmum?",
"field.layout.empty": "Nei. Engir rammar enn.",
"field.layout.select": "Veldu rammategund",
"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",
+
+ "file": "Skrár",
"file.blueprint": "Þessi skrá hefur ekki skipan (e. blueprint) ennþá. Þú mátt skilgreina skipanina í /site/blueprints/{template}.yml",
+ "file.changeTemplate": "Breyta sniðmáti",
+ "file.changeTemplate.notice": "Að breyta sniðmáti skránnar mun fjarlæjga efnið er tilheyrir þeim sviðum er ekki passar við viðkomandi gerð. Ef nýja sniðmátið er skilgreint með ákveðnum reglum s.s. stærð mynda þá verða þær breytingar óafturkræfar. Notist með gát.",
"file.delete.confirm": "Ætlarðu virkilega að eyða
{filename}?",
+ "file.focus.placeholder": "Settu brennipunkt",
+ "file.focus.reset": "Fjarlægðu brennipunkt",
+ "file.focus.title": "Fókus",
"file.sort": "Breyta röðun",
"files": "Skrár",
+ "files.delete.confirm.selected": "Do you really want to delete the selected files? This action cannot be undone.",
"files.empty": "Engar skrár enn",
+ "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",
"import": "Hlaða inn",
"info": "Upplýsingar",
"insert": "Setja inn",
@@ -324,14 +426,14 @@
"installation.issues.mbstring": "MB String
er hér bráðnauðsynleg",
"installation.issues.media": "/media
mappan er annaðhvort ekki til eða er ekki skrifanleg",
"installation.issues.php": "Notaðu PHP 8+
",
- "installation.issues.server": "Kirby krefst Apache
, Nginx
eða Caddy
",
"installation.issues.sessions": "/site/sessions
mappan er annaðhvort ekki til eða er ekki skrifanleg",
- "language": "Tungumal",
- "language.code": "Kóðasnið",
+ "language": "Tungumál",
+ "language.code": "Kóði",
"language.convert": "Gera sjálfgefið",
"language.convert.confirm": "{secret}
fyrir auðkenningarappið.",
+ "login.totp.enable.confirm.headline": "2. Staðfestu með auðkenningar kóða",
+ "login.totp.enable.confirm.text": "Appið þitt framleiðir nýjan einnota kóða á 30 sekúndna fresti. Setti inn núverandi kóða til að ljúka uppsetningu.",
+ "login.totp.enable.confirm.label": "Núverandi kóði",
+ "login.totp.enable.confirm.help": "Eftir uppsetninguna þá munum við biðja um einnota kóða í hvert skipti sem þú skráir þig inn.",
+ "login.totp.enable.success": "Einnota skráningarkóði virkjaður",
+ "login.totp.disable.option": "Afvirkjaðir einnota kóðar.",
+ "login.totp.disable.label": "Sláðu inn lykilorðið þitt til að afvirkja einnota kóða.",
+ "login.totp.disable.help": "Framveigis þá mun nýr seinniþáttar kóði verða sendur í tölvupósti til þín þegar þú skráir þig inn. Þú munt alltaf geta sett upp einnota kóðana aftur síðar.",
+ "login.totp.disable.admin": "
Þeim mun verða fargað líka.",
"page.delete.confirm.title": "Skráðu síðutitilinn til staðfestingar",
- "page.draft.create": "Stofna uppkast",
"page.duplicate.appendix": "Afrita",
"page.duplicate.files": "Afrita skrár",
"page.duplicate.pages": "Afrita síður",
+ "page.move": "Færa síðu",
"page.sort": "Breyta röðun",
"page.status": "Staða",
"page.status.draft": "Uppkast",
"page.status.draft.description": "Þessi síða er uppkast og er aðeins sýnileg vefstjórum eða gegnum laumu tengil.",
"page.status.listed": "Útgefin og listuð",
"page.status.listed.description": "Síðan er útgefin og listuð.",
- "page.status.unlisted": "Útgefin",
+ "page.status.unlisted": "Útgefin en ólistuð",
"page.status.unlisted.description": "Síðan er útgefin en þó ólistuð.",
"pages": "Síður",
+ "pages.delete.confirm.selected": "Do you really want to delete the selected pages? This action cannot be undone.",
"pages.empty": "Engar síður enn",
"pages.status.draft": "Uppköst",
"pages.status.listed": "Útgefnar og listaðar",
- "pages.status.unlisted": "Útgefin",
+ "pages.status.unlisted": "Útgefnar en ólistaðar",
"pagination.page": "Síða",
"password": "Lykilorð",
"paste": "Líma",
"paste.after": "Líma eftir",
+ "paste.success": "{count} límt!",
"pixel": "Punkta",
"plugin": "Viðbót",
"plugins": "Viðbætur",
"prev": "Fyrri",
"preview": "Forskoða",
+
+ "publish": "Útgefa",
+ "published": "Útgefnar og listaðar",
+
"remove": "Fjarlægja",
"rename": "Endurnefna",
+ "renew": "Endurnýja",
"replace": "Setja í stað",
+ "replace.with": "Endursetja með",
"retry": "Reyndu aftur",
"revert": "Taka upp fyrri siði",
"revert.confirm": "Viltu virkilega eyða öllum óvistuðum breytingum?",
@@ -482,11 +644,14 @@
"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 allt",
+ "search.all": "Sýna allar {count} niðurstöður.",
"search.results.none": "Engar niðurstöður",
+ "section.invalid": "Þetta svæði er bara ógillt sem stendur.",
"section.required": "Þetta svæði er nauðsynlegt",
"security": "Öryggi",
@@ -498,17 +663,26 @@
"size": "Stærð",
"slug": "Slóðar viðskeyti",
"sort": "Raða",
+ "sort.drag": "Dragðu til að raða",
+ "split": "Skipta",
"stats.empty": "Engar skýrslur",
+ "status": "Staða",
+
+ "system.info.copy": "Copy info",
+ "system.info.copied": "System info copied",
"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",
+ "system.issues.eol.php": "Núverandi PHP útgáfa {release} hefur runnið sitt skeið og mun ekki verða uppfærð með öryggisuppfærslum.",
"system.issues.debug": "Aflúsun ætti alltaf að vera óvirk í útgefnum vef",
"system.issues.git": ".git mappan virðist vera berskjölduð",
"system.issues.https": "Við mælum harðlega með því að þú notir HTTPS fyrir öll þín vefsvæði",
"system.issues.kirby": "Kirby mappan virðist vera berskjölduð",
+ "system.issues.local": "The site is running locally with relaxed security checks",
"system.issues.site": "Mappa vefsvæðisins virðist vera berskjölduð",
- "system.issues.vulnerability.kirby": "Uppsetningin þín gæti verið berskjölduð gagnvart eftirfarandi veikleika: ({ severity } veikleiki): { description }",
+ "system.issues.vue.compiler": "The Vue template compiler is enabled",
+ "system.issues.vulnerability.kirby": "Uppsetningin þín gæti verið berskjölduð gagnvart eftirfarandi veikleika: ({ severity } veikleikinn): { description }",
"system.issues.vulnerability.plugin": "Uppsetningin þín gæti verið berskjölduð gagnvart eftirfarandi veikleika í viðbótinni { plugin }: ({ severity } veikleikinn): { description }",
"system.updateStatus": "Uppfærslustaða",
"system.updateStatus.error": "Gat því miður ekki athugað með uppfærslur",
@@ -520,10 +694,19 @@
"system.updateStatus.update": "Ókeypis uppfærsla { version } fáanleg",
"system.updateStatus.upgrade": "Uppfærsla fyrir { version } fáanleg",
- "title": "Titill",
+ "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",
+ "toolbar.button.clear": "Hreinsa snið",
"toolbar.button.code": "Kóðasnið",
"toolbar.button.bold": "Feitletrun",
"toolbar.button.email": "Netfang",
@@ -541,6 +724,8 @@
"toolbar.button.link": "Tengill",
"toolbar.button.paragraph": "Efnisgrein",
"toolbar.button.strike": "Gegnumstrika",
+ "toolbar.button.sub": "Hnéletur",
+ "toolbar.button.sup": "Höfuðletur",
"toolbar.button.ol": "Raðaður listi",
"toolbar.button.underline": "Undirstrika",
"toolbar.button.ul": "Áherslumerktur listi",
@@ -550,6 +735,8 @@
"translation.name": "Íslenska",
"translation.locale": "is_IS",
+ "type": "Gerð",
+
"upload": "Hlaða inn",
"upload.error.cantMove": "Innhlöðnu skránni var ekki haggað",
"upload.error.cantWrite": "Það mistókst að skrifa skránna í geymslu",
@@ -574,6 +761,7 @@
"user.changeLanguage": "Breyta tungumáli",
"user.changeName": "Endurnefna þennan notanda",
"user.changePassword": "Breyta lykilorð",
+ "user.changePassword.current": "Your current password",
"user.changePassword.new": "Nýtt lykilorð",
"user.changePassword.new.confirm": "Staðfestu nýtt lykilorð…",
"user.changeRole": "Breyta hlutverki",
@@ -585,14 +773,17 @@
"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": "Uppsettning",
+ "view.installation": "Uppsetning",
"view.languages": "Tungumál",
- "view.resetPassword": "Endurheimta lykilorð takk",
+ "view.resetPassword": "Endurstilla lykilorð",
"view.site": "Vefsvæðið",
"view.system": "Kerfi",
"view.users": "Notendur",
diff --git a/kirby/i18n/translations/it.json b/kirby/i18n/translations/it.json
index dfc9529..9e1c235 100644
--- a/kirby/i18n/translations/it.json
+++ b/kirby/i18n/translations/it.json
@@ -3,19 +3,28 @@
"account.delete": "Elimina l'account",
"account.delete.confirm": "Vuoi davvero eliminare il tuo account? Verrai disconnesso immediatamente. Il tuo account non potrà essere recuperato.",
+ "activate": "Attiva",
"add": "Aggiungi",
+ "alpha": "Alpha",
"author": "Autore",
"avatar": "Immagine del profilo",
"back": "Indietro",
"cancel": "Annulla",
"change": "Cambia",
"close": "Chiudi",
+ "changes": "Changes",
"confirm": "OK",
"collapse": "Comprimi",
"collapse.all": "Comprimi tutto",
+ "color": "Color",
+ "coordinates": "Coordinates",
"copy": "Copia",
"copy.all": "Copia tutto",
+ "copy.success": "{count} copied!",
+ "copy.success.multiple": "{count} copied!",
+ "copy.url": "Copy URL",
"create": "Crea",
+ "custom": "Custom",
"date": "Data",
"date.select": "Scegli una data",
@@ -34,13 +43,20 @@
"delete": "Elimina",
"delete.all": "Elimina tutti",
+ "dialog.fields.empty": "This dialog has no fields",
"dialog.files.empty": "Nessun file selezionabile",
"dialog.pages.empty": "Nessuna pagina selezionabile",
+ "dialog.text.empty": "This dialog does not define any text",
"dialog.users.empty": "Nessuno user selezionabile",
"dimensions": "Dimensioni",
+ "disable": "Disattiva",
"disabled": "Disabilitato",
"discard": "Abbandona",
+
+ "drawer.fields.empty": "This drawer has no fields",
+
+ "domain": "Dominio",
"download": "Scarica",
"duplicate": "Duplica",
@@ -49,11 +65,13 @@
"email": "Email",
"email.placeholder": "mail@esempio.com",
+ "enter": "Enter",
"entries": "Voci",
"entry": "Voce",
"environment": "Ambiente",
+ "error": "Error",
"error.access.code": "Codice non valido",
"error.access.login": "Login invalido",
"error.access.panel": "Non ti è permesso accedere al pannello",
@@ -74,13 +92,31 @@
"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.entries.max.plural": "You must not add more than {max} entries",
+ "error.entries.max.singular": "You must not add more than one entry",
+ "error.entries.min.plural": "You must add at least {min} entries",
+ "error.entries.min.singular": "You must add at least one entry",
+ "error.entries.supports": "\"{type}\" field type is not supported for the entries field",
+ "error.entries.validation": "C'è un errore nel campo \"{field}\" nella riga {index}",
+
"error.email.preset.notFound": "Non è stato possibile trovare il preset email \"{name}\"",
"error.field.converter.invalid": "Convertitore \"{converter}\" non valido",
+ "error.field.link.options": "Invalid options: {options}",
"error.field.type.missing": "Campo \"{ name }\": il tipo di campo \"{ type }\" non esiste",
"error.file.changeName.empty": "Il nome non dev'essere vuoto",
"error.file.changeName.permission": "Non ti è permesso modificare il nome di \"{filename}\"",
+ "error.file.changeTemplate.invalid": "The template for the file \"{id}\" cannot be changed to \"{template}\" (valid: \"{blueprints}\")",
+ "error.file.changeTemplate.permission": "You are not allowed to change the template for the file \"{id}\"",
+
+ "error.file.delete.multiple": "Not all files could be deleted. Try each remaining file individually to see the specific error that prevents deletion.",
"error.file.duplicate": "Un file con il nome \"{filename}\" esiste già",
"error.file.extension.forbidden": "L'estensione \"{extension}\" non è consentita",
"error.file.extension.invalid": "Estensione non valida: {extension}",
@@ -95,33 +131,43 @@
"error.file.minheight": "L'immagine dev'essere alta almeno {height} pixel",
"error.file.minsize": "Il file è troppo leggero",
"error.file.minwidth": "L'immagine dev'essere larga almeno {width} pixel",
+ "error.file.name.unique": "The filename must be unique",
"error.file.name.missing": "Il nome del file non può essere vuoto",
- "error.file.notFound": "Il file non è stato trovato",
+ "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 è stato trovato",
+ "error.file.undefined": "Il file non \u00e8 stato trovato",
"error.form.incomplete": "Correggi tutti gli errori nel form...",
"error.form.notSaved": "Non è stato possibile salvare il form",
"error.language.code": "Inserisci un codice valido per la lingua",
+ "error.language.create.permission": "You are not allowed to create a language",
+ "error.language.delete.permission": "You are not allowed to delete the language",
"error.language.duplicate": "La lingua esiste già",
"error.language.name": "Inserisci un nome valido per la lingua",
"error.language.notFound": "La lingua non è stata trovata",
+ "error.language.update.permission": "You are not allowed to update the language",
"error.layout.validation.block": "C'è un errore sul campo \"{field}\" nel blocco {blockIndex} che utilizza il tipo di blocco \"{fieldset}\" nel layout {layoutIndex}",
"error.layout.validation.settings": "C'è un errore nelle impostazioni del layout {index}",
- "error.license.format": "Inserisci un codice di licenza valido",
+ "error.license.domain": "Il dominio per la licenza è assente",
"error.license.email": "Inserisci un indirizzo email valido",
+ "error.license.format": "Per favore inserisci un codice di licenza valido",
"error.license.verification": "Non è stato possibile verificare la licenza",
+ "error.login.totp.confirm.invalid": "Codice non valido",
+ "error.login.totp.confirm.missing": "Inserisci il codice attuale",
+
"error.object.validation": "C'è un errore nel campo \"{label}\":\n{message}",
"error.offline": "Il pannello di controllo è attualmente offline",
"error.page.changeSlug.permission": "Non ti è permesso cambiare l'URL di \"{slug}\"",
+ "error.page.changeSlug.reserved": "The path of top-level pages must not start with \"{path}\"",
"error.page.changeStatus.incomplete": "La pagina contiene errori e non può essere pubblicata",
"error.page.changeStatus.permission": "Lo stato di questa pagina non può essere cambiato",
"error.page.changeStatus.toDraft.invalid": "La pagina \"{slug}\" non può essere convertita in bozza",
@@ -133,17 +179,25 @@
"error.page.delete": "La pagina \"{slug}\" non può essere eliminata",
"error.page.delete.confirm": "Inserisci il titolo della pagina per confermare",
"error.page.delete.hasChildren": "La pagina ha sottopagine e non può essere eliminata",
+ "error.page.delete.multiple": "Not all pages could be deleted. Try each remaining page individually to see the specific error that prevents deletion.",
"error.page.delete.permission": "Non ti è permesso eliminare \"{slug}\"",
"error.page.draft.duplicate": "Una bozza di pagina con l'URL \"{slug}\" esiste già",
"error.page.duplicate": "Una pagina con l'URL \"{slug}\" esiste già",
"error.page.duplicate.permission": "Non ti è permesso duplicare \"{slug}\"",
+ "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}\"",
"error.page.notFound": "La pagina \"{slug}\" non è stata trovata",
"error.page.num.invalid": "Inserisci un numero di ordinamento valido. I numeri non devono essere negativi",
"error.page.slug.invalid": "Per favore inserisci un suffisso valido per l'URL",
"error.page.slug.maxlength": "Lo \"slug\" dev'essere più corto di \"{length}\" caratteri",
"error.page.sort.permission": "La pagina \"{slug}\" non può essere ordinata",
"error.page.status.invalid": "Imposta uno stato valido per la pagina",
- "error.page.undefined": "La pagina non è stata trovata",
+ "error.page.undefined": "La pagina non \u00e8 stata trovata",
"error.page.update.permission": "Non ti è permesso modificare \"{slug}\"",
"error.section.files.max.plural": "Non puoi aggiungere più di {max} file alla sezione \"{section}\"",
@@ -163,6 +217,8 @@
"error.site.changeTitle.permission": "Non ti è permesso modificare il titolo del sito",
"error.site.update.permission": "Non ti è permesso modificare i contenuti globali del sito",
+ "error.structure.validation": "C'è un errore nel campo \"{field}\" nella riga {index}",
+
"error.template.default.notFound": "Il template \"default\" non esiste",
"error.unexpected": "Si è verificato un errore inaspettato! Abilita la modalità \"debug\" per ulteriori informazioni: https://getkirby.com/docs/reference/system/options/debug",
@@ -175,14 +231,14 @@
"error.user.changeRole.permission": "Non ti è permesso modificare il ruolo dell'utente \"{name}\"",
"error.user.changeRole.toAdmin": "Non ti è permesso assegnare il ruolo di amministratore ad altri utenti",
"error.user.create.permission": "Non ti è permesso creare questo utente",
- "error.user.delete": "L'utente non può essere eliminato",
+ "error.user.delete": "L'utente non pu\u00f2 essere eliminato",
"error.user.delete.lastAdmin": "L'ultimo amministratore non può essere eliminato",
"error.user.delete.lastUser": "L'ultimo utente non può essere eliminato",
- "error.user.delete.permission": "Non ti è permesso eliminare questo utente ",
+ "error.user.delete.permission": "Non ti \u00e8 permesso eliminare questo utente ",
"error.user.duplicate": "Esiste già un utente con l'indirizzo email \"{email}\"",
"error.user.email.invalid": "Inserisci un indirizzo email valido",
"error.user.language.invalid": "Inserisci una lingua valida",
- "error.user.notFound": "L'utente non è stato trovato",
+ "error.user.notFound": "L'utente non \u00e8 stato trovato",
"error.user.password.excessive": "Please enter a valid password. Passwords must not be longer than 1000 characters.",
"error.user.password.invalid": "Per favore inserisci una password valida. Le password devono essere lunghe almeno 8 caratteri",
"error.user.password.notSame": "Le password non corrispondono",
@@ -195,8 +251,10 @@
"error.validation.accepted": "Per favore conferma",
"error.validation.alpha": "Puoi inserire solo caratteri tra a-z",
"error.validation.alphanum": "Puoi inserire solo caratteri tra a-z e numeri 0-9",
+ "error.validation.anchor": "Please enter a correct link anchor",
"error.validation.between": "Inserisci un valore tra \"{min}\" e \"{max}\"",
"error.validation.boolean": "Per favore conferma o nega",
+ "error.validation.color": "Please enter a valid color in the {format} format",
"error.validation.contains": "Inserisci un valore che contiene \"{needle}\"",
"error.validation.date": "Inserisci una data valida",
"error.validation.date.after": "Inserisci una data dopo il {date}",
@@ -211,6 +269,7 @@
"error.validation.integer": "Inserisci un numero intero",
"error.validation.ip": "Inserisci un indirizzo IP valido",
"error.validation.less": "Inserisci un valore inferiore a {max}",
+ "error.validation.linkType": "The link type is not allowed",
"error.validation.match": "Il valore non corrisponde al pattern previsto",
"error.validation.max": "Inserisci un valore inferiore o uguale a {max}",
"error.validation.maxlength": "Inserisci un testo più corto. (max. {max} caratteri)",
@@ -227,15 +286,18 @@
"error.validation.same": "Inserisci \"{other}\"",
"error.validation.size": "La dimensione del valore dev'essere \"{size}\"",
"error.validation.startswith": "Il valore deve iniziare con \"{start}\"",
+ "error.validation.tel": "Please enter an unformatted phone number",
"error.validation.time": "Inserisci un orario valido",
"error.validation.time.after": "Inserisci un orario dopo le {time}",
"error.validation.time.before": "Inserisci un orario prima delle {time}",
"error.validation.time.between": "Inserisci un orario tra le {min} e le {max}",
+ "error.validation.uuid": "Please enter a valid UUID",
"error.validation.url": "Inserisci un URL valido",
"expand": "Espandi",
"expand.all": "Espandi tutto",
+ "field.invalid": "The field is invalid",
"field.required": "Il campo è obbligatorio",
"field.blocks.changeType": "Cambia tipo",
"field.blocks.code.name": "Codice",
@@ -245,8 +307,9 @@
"field.blocks.delete.confirm.all": "Vuoi veramente eliminare tutti i blocchi? ",
"field.blocks.delete.confirm.selected": "Vuoi veramente eliminare i blocchi selezionati?",
"field.blocks.empty": "Nessun blocco inserito",
+ "field.blocks.fieldsets.empty": "No fieldsets yet",
"field.blocks.fieldsets.label": "Seleziona il tipo di blocco …",
- "field.blocks.fieldsets.paste": "Premi {{ shortcut }} per incollare/importare i blocchi dagli appunti",
+ "field.blocks.fieldsets.paste": "Press {{ shortcut }} to import layouts/blocks from your clipboard Only those allowed in the current field will get inserted.",
"field.blocks.gallery.name": "Galleria",
"field.blocks.gallery.images.empty": "Nessuna immagine inserita",
"field.blocks.gallery.images.label": "Immagini",
@@ -254,11 +317,16 @@
"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",
"field.blocks.image.link": "Link",
"field.blocks.image.location": "Posizione",
+ "field.blocks.image.location.internal": "This website",
+ "field.blocks.image.location.external": "External source",
"field.blocks.image.name": "Immagine",
"field.blocks.image.placeholder": "Seleziona un'immagine",
"field.blocks.image.ratio": "Rapporto",
@@ -275,38 +343,72 @@
"field.blocks.quote.citation.placeholder": "di …",
"field.blocks.text.name": "Testo",
"field.blocks.text.placeholder": "Testo …",
+ "field.blocks.video.autoplay": "Autoplay",
"field.blocks.video.caption": "Didascalia",
+ "field.blocks.video.controls": "Controls",
+ "field.blocks.video.location": "Posizione",
+ "field.blocks.video.loop": "Loop",
+ "field.blocks.video.muted": "Muted",
"field.blocks.video.name": "Video",
"field.blocks.video.placeholder": "Inserisci un URL di un video",
+ "field.blocks.video.poster": "Poster",
+ "field.blocks.video.preload": "Preload",
"field.blocks.video.url.label": "URL Video",
"field.blocks.video.url.placeholder": "https://youtube.com/?v=",
- "field.files.empty": "Nessun file selezionato",
+ "field.entries.delete.confirm.all": "Vuoi davvero cancellare tutte le voci?",
+ "field.entries.empty": "Non ci sono ancora elementi.",
+ "field.files.empty": "Nessun file selezionato",
+ "field.files.empty.single": "No file selected yet",
+
+ "field.layout.change": "Change layout",
"field.layout.delete": "Elimina layout",
"field.layout.delete.confirm": "Vuoi veramente eliminare questo layout?",
+ "field.layout.delete.confirm.all": "Do you really want to delete all layouts?",
"field.layout.empty": "Nessuna riga inserita",
"field.layout.select": "Scegli un layout",
"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",
+
+ "file": "File",
"file.blueprint": "Questo file non ha ancora un blueprint. Puoi definire la sua configurazione in /site/blueprints/files/{blueprint}.yml",
+ "file.changeTemplate": "Cambia template",
+ "file.changeTemplate.notice": "Changing the file's template will remove content for fields that don't match in type. If the new template defines certain rules, e.g. image dimensions, those will also be applied irreversibly. Use with caution.",
"file.delete.confirm": "Sei sicuro di voler eliminare questo file?",
+ "file.focus.placeholder": "Set focal point",
+ "file.focus.reset": "Remove focal point",
+ "file.focus.title": "Focus",
"file.sort": "Cambia posizione",
"files": "Files",
+ "files.delete.confirm.selected": "Do you really want to delete the selected files? This action cannot be undone.",
"files.empty": "Nessun file caricato",
+ "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",
"import": "Importa",
"info": "Info",
"insert": "Inserisci",
@@ -324,7 +426,6 @@
"installation.issues.mbstring": "È necessaria l'estensione MB String
",
"installation.issues.media": "La cartella /media
non esiste o non dispone dei permessi di scrittura",
"installation.issues.php": "Assicurati di utilizzare PHP 8+
",
- "installation.issues.server": "Kirby necessita di Apache
, Nginx
o Caddy
",
"installation.issues.sessions": "La cartella /site/sessions
non esiste o non dispone dei permessi di scrittura",
"language": "Lingua",
@@ -332,6 +433,7 @@
"language.convert": "Imposta come predefinito",
"language.convert.confirm": "{secret}
alla tua app di autenticazione.",
+ "login.totp.enable.confirm.headline": "2. Conferma con il codice generato",
+ "login.totp.enable.confirm.text": "La tua app genera un nuovo codice monouso ogni 30 secondi. Inserisci il codice attuale per completare la configurazione:",
+ "login.totp.enable.confirm.label": "Codice attuale",
+ "login.totp.enable.confirm.help": "Dopo la configurazione, ti chiederemo un codice monouso ogni volta che effettuerai l'accesso. ",
+ "login.totp.enable.success": "Codici monouso attivati",
+ "login.totp.disable.option": "Disattiva i codici monouso",
+ "login.totp.disable.label": "Inserisci la tua password per disattivare i codici monouso",
+ "login.totp.disable.help": "In futuro, un secondo fattore diverso, come un codice login inviato tramite email, sarà richiesto per l'accesso. Potrai sempre reimpostare i codici monouso più tardi.",
+ "login.totp.disable.admin": "
Anche tutte le sottopagine verranno eliminate.",
"page.delete.confirm.title": "Inserisci il titolo della pagina per confermare",
- "page.draft.create": "Crea bozza",
"page.duplicate.appendix": "Copia",
"page.duplicate.files": "Copia file",
"page.duplicate.pages": "Copia pagine",
+ "page.move": "Move page",
"page.sort": "Cambia posizione",
"page.status": "Stato",
"page.status.draft": "Bozza",
@@ -450,24 +604,32 @@
"page.status.unlisted.description": "La pagina è accessibile soltanto tramite URL",
"pages": "Pagine",
+ "pages.delete.confirm.selected": "Do you really want to delete the selected pages? This action cannot be undone.",
"pages.empty": "Nessuna pagina",
"pages.status.draft": "Bozza",
"pages.status.listed": "Pubblicato",
"pages.status.unlisted": "Non in elenco",
- "pagination.page": "Page",
+ "pagination.page": "Pagina",
"password": "Password",
"paste": "Incolla",
"paste.after": "Incolla dopo",
+ "paste.success": "{count} pasted!",
"pixel": "Pixel",
"plugin": "Plugin",
"plugins": "Plugins",
"prev": "Precedente",
"preview": "Anteprima",
+
+ "publish": "Publish",
+ "published": "Pubblicato",
+
"remove": "Rimuovi",
"rename": "Rinomina",
+ "renew": "Rinnova",
"replace": "Sostituisci",
+ "replace.with": "Replace with",
"retry": "Riprova",
"revert": "Abbandona",
"revert.confirm": "Sei sicuro di voler cancellare tutte le modifiche non salvate?",
@@ -482,11 +644,14 @@
"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",
+ "search.all": "Mostra tutti i {count} risultati",
"search.results.none": "Nessun risultato",
+ "section.invalid": "The section is invalid",
"section.required": "La sezione è obbligatoria",
"security": "Sicurezza",
@@ -498,16 +663,25 @@
"size": "Dimensioni",
"slug": "URL",
"sort": "Ordina",
+ "sort.drag": "Drag to sort …",
+ "split": "Split",
"stats.empty": "Nessuna segnalazione",
+ "status": "Stato",
+
+ "system.info.copy": "Copy info",
+ "system.info.copied": "System info copied",
"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",
+ "system.issues.eol.php": "La versione {release} di PHP installata è giunta alla fine del suo ciclo di vita e non riceverà ulteriori aggiornamenti di sicurezza",
"system.issues.debug": "Il debug deve essere disattivato in produzione",
"system.issues.git": "La cartella .git sembra essere esposta",
"system.issues.https": "Raccomandiamo l'utilizzo di HTTPS per tutti i siti",
"system.issues.kirby": "La cartella kirby sembra essere esposta",
+ "system.issues.local": "The site is running locally with relaxed security checks",
"system.issues.site": "La cartella site sembra essere esposta",
+ "system.issues.vue.compiler": "The Vue template compiler is enabled",
"system.issues.vulnerability.kirby": "La tua installazione potrebbe essere colpita dalla seguente vulnerabilità ({ severity } gravità): { description }",
"system.issues.vulnerability.plugin": "La tua installazione potrebbe essere colpita dalla seguente vulnerabilità nel plugin { plugin } ({ severity } gravità): { description }",
"system.updateStatus": "Aggiorna lo stato",
@@ -520,10 +694,19 @@
"system.updateStatus.update": "Aggiornamento gratuito { version } disponibile",
"system.updateStatus.upgrade": "Aggiornamento { version } disponibile",
- "title": "Titolo",
+ "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",
+ "toolbar.button.clear": "Clear formatting",
"toolbar.button.code": "Codice",
"toolbar.button.bold": "Grassetto",
"toolbar.button.email": "Email",
@@ -541,6 +724,8 @@
"toolbar.button.link": "Link",
"toolbar.button.paragraph": "Paragrafo",
"toolbar.button.strike": "Barrato",
+ "toolbar.button.sub": "Subscript",
+ "toolbar.button.sup": "Superscript",
"toolbar.button.ol": "Elenco numerato",
"toolbar.button.underline": "Sottolinea",
"toolbar.button.ul": "Elenco puntato",
@@ -550,6 +735,8 @@
"translation.name": "Italiano",
"translation.locale": "it_IT",
+ "type": "Tipo",
+
"upload": "Carica",
"upload.error.cantMove": "Non è stato possibile spostare il file caricato",
"upload.error.cantWrite": "Impossibile scrivere il file su disco",
@@ -562,7 +749,7 @@
"upload.error.noFiles": "Nessun file è stato caricato",
"upload.error.partial": "Il file è stato caricato solo parzialmente",
"upload.error.tmpDir": "Manca la cartella temporanea",
- "upload.errors": "Error",
+ "upload.errors": "Errore",
"upload.progress": "Caricamento...",
"url": "URL",
@@ -574,6 +761,7 @@
"user.changeLanguage": "Cambia lingua",
"user.changeName": "Rinomina questo utente",
"user.changePassword": "Cambia password",
+ "user.changePassword.current": "Your current password",
"user.changePassword.new": "Nuova password",
"user.changePassword.new.confirm": "Conferma la nuova password...",
"user.changeRole": "Cambia ruolo",
@@ -585,10 +773,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/kirby/i18n/translations/ko.json b/kirby/i18n/translations/ko.json
index 7805add..41f85a7 100644
--- a/kirby/i18n/translations/ko.json
+++ b/kirby/i18n/translations/ko.json
@@ -1,66 +1,84 @@
{
"account.changeName": "이름 변경",
"account.delete": "계정 삭제",
- "account.delete.confirm": "계정을 삭제할까요? 계정을 삭제한 뒤에는 복구할 수 없습니다.",
+ "account.delete.confirm": "계정을 삭제할까요? 계정을 삭제한 뒤에는 즉시 로그아웃되며, 삭제된 계정은 복구할 수 없습니다.",
- "add": "추가",
+ "activate": "활성화",
+ "add": "\ucd94\uac00",
+ "alpha": "알파",
"author": "저자",
"avatar": "프로필 이미지",
"back": "뒤로",
- "cancel": "취소",
- "change": "변경",
- "close": "닫기",
+ "cancel": "\ucde8\uc18c",
+ "change": "\ubcc0\uacbd",
+ "close": "\ub2eb\uae30",
+ "changes": "변경",
"confirm": "확인",
"collapse": "접기",
"collapse.all": "모두 접기",
+ "color": "색",
+ "coordinates": "좌표",
"copy": "복사",
"copy.all": "모두 복사",
+ "copy.success": "복사되었습니다. ({count})",
+ "copy.success.multiple": "복사되었습니다. ({count})",
+ "copy.url": "Copy URL",
"create": "등록",
+ "custom": "개인화",
"date": "날짜",
"date.select": "날짜 지정",
"day": "일",
- "days.fri": "금",
- "days.mon": "월",
- "days.sat": "토",
- "days.sun": "일",
- "days.thu": "목",
- "days.tue": "화",
- "days.wed": "수",
+ "days.fri": "\uae08",
+ "days.mon": "\uc6d4",
+ "days.sat": "\ud1a0",
+ "days.sun": "\uc77c",
+ "days.thu": "\ubaa9",
+ "days.tue": "\ud654",
+ "days.wed": "\uc218",
"debugging": "디버그",
- "delete": "삭제",
+ "delete": "\uc0ad\uc81c",
"delete.all": "모두 삭제",
+ "dialog.fields.empty": "필드가 없습니다.",
"dialog.files.empty": "선택할 파일이 없습니다.",
"dialog.pages.empty": "선택할 페이지가 없습니다.",
+ "dialog.text.empty": "정의된 텍스트가 없습니다.",
"dialog.users.empty": "선택할 사용자가 없습니다.",
"dimensions": "크기",
+ "disable": "비활성화",
"disabled": "비활성화",
"discard": "무시",
+
+ "drawer.fields.empty": "필드가 없습니다.",
+
+ "domain": "도메인",
"download": "다운로드",
"duplicate": "복제",
- "edit": "편집",
+ "edit": "\ud3b8\uc9d1",
- "email": "이메일 주소",
+ "email": "\uc774\uba54\uc77c \uc8fc\uc18c",
"email.placeholder": "mail@example.com",
+ "enter": "Enter",
"entries": "항목",
"entry": "항목",
"environment": "구동 환경",
+ "error": "오류",
"error.access.code": "코드가 올바르지 않습니다.",
"error.access.login": "로그인할 수 없습니다.",
"error.access.panel": "패널에 접근할 권한이 없습니다.",
"error.access.view": "패널에 접근할 권한이 없습니다.",
"error.avatar.create.fail": "프로필 이미지를 업로드할 수 없습니다.",
- "error.avatar.delete.fail": "프로필 이미지를 삭제할 수 없습니다.",
+ "error.avatar.delete.fail": "\ud504\ub85c\ud544 \uc774\ubbf8\uc9c0\ub97c \uc0ad\uc81c\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.",
"error.avatar.dimensions.invalid": "프로필 이미지의 너비와 높이를 3,000픽셀 이하로 설정하세요.",
"error.avatar.mime.forbidden": "프로필 이미지의 확장자(JPG, JPEG, PNG)를 확인하세요.",
@@ -70,17 +88,35 @@
"error.blocks.max.singular": "블록을 하나 이상 추가할 수 없습니다.",
"error.blocks.min.plural": "블록을 {min}개 이상 추가하세요.",
"error.blocks.min.singular": "블록을 하나 이상 추가하세요.",
- "error.blocks.validation": "There's an error on the \"{field}\" field in block {index} using the \"{fieldset}\" block type",
+ "error.blocks.validation": "블록 유형({fieldset})을 사용하는 블록({index})의 필드({field})에 오류가 있습니다.",
- "error.cache.type.invalid": "Invalid cache type \"{type}\"",
+ "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.entries.max.plural": "You must not add more than {max} entries",
+ "error.entries.max.singular": "You must not add more than one entry",
+ "error.entries.min.plural": "You must add at least {min} entries",
+ "error.entries.min.singular": "You must add at least one entry",
+ "error.entries.supports": "\"{type}\" field type is not supported for the entries field",
+ "error.entries.validation": "{index}번째 필드({field})에 오류가 있습니다.",
"error.email.preset.notFound": "기본 이메일 주소({name})가 없습니다.",
"error.field.converter.invalid": "컨버터({converter})가 올바르지 않습니다.",
- "error.field.type.missing": "Field \"{ name }\": The field type \"{ type }\" does not exist",
+ "error.field.link.options": "Invalid options: {options}",
+ "error.field.type.missing": "필드({name}): 필드 타입({type})이 없습니다.",
"error.file.changeName.empty": "이름을 입력하세요.",
"error.file.changeName.permission": "파일명({filename})을 변경할 권한이 없습니다.",
+ "error.file.changeTemplate.invalid": "파일({id}) 템플릿을 다음 템플릿({template})으로 변경할 수 없습니다. (valid: \"{blueprints}\")",
+ "error.file.changeTemplate.permission": "파일({id}) 템플릿을 변경할 수 없습니다.",
+
+ "error.file.delete.multiple": "Not all files could be deleted. Try each remaining file individually to see the specific error that prevents deletion.",
"error.file.duplicate": "파일명이 같은 파일({filename})이 있습니다.",
"error.file.extension.forbidden": "이 확장자({extension})는 업로드할 수 없습니다.",
"error.file.extension.invalid": "확장자({extension})가 올바르지 않습니다.",
@@ -95,55 +131,73 @@
"error.file.minheight": "이미지의 높이를 {height}픽셀 이상으로 설정하세요.",
"error.file.minsize": "파일이 너무 작습니다.",
"error.file.minwidth": "이미지의 너비를 {width}픽셀 이상으로 설정하세요.",
+ "error.file.name.unique": "고유한 파일명을 지정하세요.",
"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": "파일이 없습니다.",
+ "error.file.type.invalid": "파일 형식({type})이 올바르지 않습니다.",
+ "error.file.undefined": "\ud30c\uc77c\uc774 \uc5c6\uc2b5\ub2c8\ub2e4.",
"error.form.incomplete": "항목에 오류가 있습니다.",
"error.form.notSaved": "항목을 저장할 수 없습니다.",
"error.language.code": "올바른 언어 코드를 입력하세요.",
+ "error.language.create.permission": "언어를 등록할 권한이 없습니다.",
+ "error.language.delete.permission": "언어를 삭제할 권한이 없습니다.",
"error.language.duplicate": "이미 등록한 언어입니다.",
"error.language.name": "올바른 언어명을 입력하세요.",
"error.language.notFound": "언어를 찾을 수 없습니다.",
+ "error.language.update.permission": "언어를 변경할 권한이 없습니다.",
- "error.layout.validation.block": "There's an error on the \"{field}\" field in block {blockIndex} using the \"{fieldset}\" block type in layout {layoutIndex}",
- "error.layout.validation.settings": "레이아웃({index})의 옵션을 확인하세요.",
+ "error.layout.validation.block": "레이아웃({layoutIndex})의 특정 블록 유형({fieldset})을 사용하는 블록({blockIndex})의 특정 필드({field})에 오류가 있습니다.",
+ "error.layout.validation.settings": "레이아웃({index}) 옵션을 확인하세요.",
- "error.license.format": "올바른 라이선스 키를 입력하세요.",
+ "error.license.domain": "라이선스에 대한 도메인이 누락되었습니다.",
"error.license.email": "올바른 이메일 주소를 입력하세요.",
+ "error.license.format": "올바른 라이선스 코드를 입력하세요.",
"error.license.verification": "라이선스 키가 올바르지 않습니다.",
- "error.object.validation": "{label} 필드에 오류가 있습니다.\n{message}",
+ "error.login.totp.confirm.invalid": "코드가 올바르지 않습니다.",
+ "error.login.totp.confirm.missing": "현재 코드를 입력하세요.",
+
+ "error.object.validation": "필드({label})에 오류가 있습니다.\n{message}",
"error.offline": "패널이 오프라인 상태입니다.",
"error.page.changeSlug.permission": "고유 주소({slug})를 변경할 권한이 없습니다.",
+ "error.page.changeSlug.reserved": "상위 페이지는 이 경로({path})로 시작할 수 없습니다.",
"error.page.changeStatus.incomplete": "페이지를 공개할 수 없습니다.",
- "error.page.changeStatus.permission": "페이지의 상태를 변경할 수 없습니다.",
- "error.page.changeStatus.toDraft.invalid": "페이지({slug})의 상태를 초안으로 변경할 수 없습니다.",
- "error.page.changeTemplate.invalid": "페이지({slug})의 템플릿을 변경할 수 없습니다.",
- "error.page.changeTemplate.permission": "페이지({slug})의 템플릿을 변경할 권한이 없습니다.",
+ "error.page.changeStatus.permission": "페이지 상태를 변경할 수 없습니다.",
+ "error.page.changeStatus.toDraft.invalid": "페이지({slug}) 상태를 초안으로 변경할 수 없습니다.",
+ "error.page.changeTemplate.invalid": "페이지({slug}) 템플릿을 변경할 수 없습니다.",
+ "error.page.changeTemplate.permission": "페이지({slug}) 템플릿을 변경할 권한이 없습니다.",
"error.page.changeTitle.empty": "제목을 입력하세요.",
- "error.page.changeTitle.permission": "페이지({slug})의 제목을 변경할 권한이 없습니다.",
+ "error.page.changeTitle.permission": "페이지({slug}) 제목을 변경할 권한이 없습니다.",
"error.page.create.permission": "페이지({slug})를 등록할 권한이 없습니다.",
"error.page.delete": "페이지({slug})를 삭제할 수 없습니다.",
"error.page.delete.confirm": "페이지를 삭제하려면 페이지의 제목을 입력하세요.",
"error.page.delete.hasChildren": "하위 페이지가 있는 페이지는 삭제할 수 없습니다.",
+ "error.page.delete.multiple": "Not all pages could be deleted. Try each remaining page individually to see the specific error that prevents deletion.",
"error.page.delete.permission": "페이지({slug})를 삭제할 권한이 없습니다.",
"error.page.draft.duplicate": "고유 주소({slug})가 같은 초안 페이지가 있습니다.",
"error.page.duplicate": "고유 주소({slug})가 같은 페이지가 있습니다.",
"error.page.duplicate.permission": "페이지({slug})를 복제할 권한이 없습니다.",
+ "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})의 서브 페이지로 이동할 수 없습니다.",
"error.page.notFound": "페이지({slug})가 없습니다.",
"error.page.num.invalid": "올바른 정수를 입력하세요.",
"error.page.slug.invalid": "올바른 URL을 입력하세요.",
"error.page.slug.maxlength": "고유 주소를 {length}자 이하로 입력하세요.",
"error.page.sort.permission": "페이지({slug})를 정렬할 수 없습니다.",
"error.page.status.invalid": "올바른 상태를 설정하세요.",
- "error.page.undefined": "페이지가 없습니다.",
+ "error.page.undefined": "\ud398\uc774\uc9c0\uac00 \uc5c6\uc2b5\ub2c8\ub2e4.",
"error.page.update.permission": "페이지({slug})를 변경할 권한이 없습니다.",
"error.section.files.max.plural": "이 섹션({section})에는 파일을 {max}개 이상 추가할 수 없습니다.",
@@ -157,11 +211,13 @@
"error.section.pages.min.singular": "이 섹션({section})에는 페이지가 하나 이상 필요합니다.",
"error.section.notLoaded": "섹션({name})을 확인할 수 없습니다.",
- "error.section.type.invalid": "섹션의 형식({type})이 올바르지 않습니다.",
+ "error.section.type.invalid": "섹션 형식({type})이 올바르지 않습니다.",
"error.site.changeTitle.empty": "제목을 입력하세요.",
"error.site.changeTitle.permission": "사이트명을 변경할 권한이 없습니다.",
- "error.site.update.permission": "사이트의 정보를 변경할 권한이 없습니다.",
+ "error.site.update.permission": "사이트 정보를 변경할 권한이 없습니다.",
+
+ "error.structure.validation": "{index}번째 필드({field})에 오류가 있습니다.",
"error.template.default.notFound": "기본 템플릿이 없습니다.",
@@ -176,16 +232,16 @@
"error.user.changeRole.toAdmin": "다른 사용자를 관리자로 지정할 권한이 없습니다.",
"error.user.create.permission": "사용자를 등록할 권한이 없습니다.",
"error.user.delete": "사용자({name})를 삭제할 수 없습니다.",
- "error.user.delete.lastAdmin": "최종 관리자는 삭제할 수 없습니다.",
+ "error.user.delete.lastAdmin": "\ucd5c\uc885 \uad00\ub9ac\uc790\ub294 \uc0ad\uc81c\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.",
"error.user.delete.lastUser": "최종 사용자는 삭제할 수 없습니다.",
"error.user.delete.permission": "사용자({name})를 삭제할 권한이 없습니다.",
"error.user.duplicate": "이메일 주소({email})가 같은 사용자가 있습니다.",
"error.user.email.invalid": "올바른 이메일 주소를 입력하세요.",
"error.user.language.invalid": "올바른 언어를 입력하세요.",
"error.user.notFound": "사용자({name})가 없습니다.",
- "error.user.password.excessive": "Please enter a valid password. Passwords must not be longer than 1000 characters.",
+ "error.user.password.excessive": "올바른 암호를 입력하세요. 암호는 1,000자를 넘을 수 없습니다.",
"error.user.password.invalid": "암호를 8자 이상으로 설정하세요.",
- "error.user.password.notSame": "암호를 확인하세요.",
+ "error.user.password.notSame": "\uc554\ud638\ub97c \ud655\uc778\ud558\uc138\uc694.",
"error.user.password.undefined": "암호가 설정되지 않았습니다.",
"error.user.password.wrong": "암호가 올바르지 않습니다.",
"error.user.role.invalid": "올바른 역할을 지정하세요.",
@@ -195,8 +251,10 @@
"error.validation.accepted": "확인하세요.",
"error.validation.alpha": "로마자(a~z)만 입력할 수 있습니다.",
"error.validation.alphanum": "로마자(a~z) 또는 숫자(0~9)만 입력할 수 있습니다.",
+ "error.validation.anchor": "올바른 링크를 입력하세요.",
"error.validation.between": "{min}, {max} 사이의 값을 입력하세요.",
"error.validation.boolean": "확인하거나 취소하세요.",
+ "error.validation.color": "색상 값은 {format} 형식으로 입력하세요.",
"error.validation.contains": "{needle}에 포함된 값을 입력하세요.",
"error.validation.date": "올바른 날짜를 입력하세요.",
"error.validation.date.after": "{date} 이후 날짜를 입력하세요.",
@@ -211,6 +269,7 @@
"error.validation.integer": "올바른 정수를 입력하세요.",
"error.validation.ip": "올바른 IP 주소를 입력하세요.",
"error.validation.less": "{max} 미만의 값을 입력하세요.",
+ "error.validation.linkType": "이 형식의 링크는 입력할 수 없습니다.",
"error.validation.match": "입력한 값이 예상 패턴과 일치하지 않습니다.",
"error.validation.max": "{max} 이하의 값을 입력하세요.",
"error.validation.maxlength": "{max}자 이하의 값을 입력하세요.",
@@ -227,38 +286,47 @@
"error.validation.same": "이 값({other})을 입력하세요.",
"error.validation.size": "값의 크기({size})를 확인하세요. ",
"error.validation.startswith": "값은 다음({start})으로 시작해야 합니다.",
+ "error.validation.tel": "숫자만 입력하세요.",
"error.validation.time": "올바른 시각을 입력하세요.",
"error.validation.time.after": "{time} 이후 시각을 입력하세요.",
"error.validation.time.before": "{time} 이전 시각을 입력하세요.",
"error.validation.time.between": "{min}, {max} 사이의 시각을 입력하세요.",
+ "error.validation.uuid": "올바른 UUID를 입력하세요.",
"error.validation.url": "올바른 URL을 입력하세요.",
"expand": "열기",
"expand.all": "모두 열기",
+ "field.invalid": "필드가 올바르지 않습니다.",
"field.required": "필드를 채우세요.",
"field.blocks.changeType": "유형 변경",
- "field.blocks.code.name": "언어 코드",
+ "field.blocks.code.name": "코드",
"field.blocks.code.language": "언어",
"field.blocks.code.placeholder": "코드",
"field.blocks.delete.confirm": "블록을 삭제할까요?",
"field.blocks.delete.confirm.all": "모든 블록을 삭제할까요?",
"field.blocks.delete.confirm.selected": "선택한 블록을 삭제할까요?",
"field.blocks.empty": "블록이 없습니다.",
- "field.blocks.fieldsets.label": "블록의 유형을 선택하세요.",
- "field.blocks.fieldsets.paste": "단축키({{ shortcut }})로 클립보드에서 블록을 가져올 수 있습니다.",
+ "field.blocks.fieldsets.empty": "필드셋이 없습니다.",
+ "field.blocks.fieldsets.label": "블록 유형을 선택하세요.",
+ "field.blocks.fieldsets.paste": "{{ shortcut }}를 눌러 클립보드에서 레이아웃 또는 블록을 가져옵니다. 현재 필드에서 허용된 것만 삽입됩니다.",
"field.blocks.gallery.name": "갤러리",
"field.blocks.gallery.images.empty": "이미지가 없습니다.",
"field.blocks.gallery.images.label": "이미지",
"field.blocks.heading.level": "단계",
"field.blocks.heading.name": "제목",
- "field.blocks.heading.text": "마크다운",
+ "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": "자르기",
- "field.blocks.image.link": "일반 링크",
+ "field.blocks.image.link": "링크",
"field.blocks.image.location": "위치",
+ "field.blocks.image.location.internal": "이 웹사이트",
+ "field.blocks.image.location.external": "외부 소스",
"field.blocks.image.name": "이미지",
"field.blocks.image.placeholder": "이미지 선택",
"field.blocks.image.ratio": "비율",
@@ -269,47 +337,81 @@
"field.blocks.markdown.label": "마크다운",
"field.blocks.markdown.placeholder": "마크다운",
"field.blocks.quote.name": "인용문",
- "field.blocks.quote.text.label": "마크다운",
+ "field.blocks.quote.text.label": "인용문",
"field.blocks.quote.text.placeholder": "인용문",
"field.blocks.quote.citation.label": "출처",
"field.blocks.quote.citation.placeholder": "출처",
- "field.blocks.text.name": "마크다운",
+ "field.blocks.text.name": "텍스트",
"field.blocks.text.placeholder": "텍스트",
+ "field.blocks.video.autoplay": "자동 재생",
"field.blocks.video.caption": "캡션",
+ "field.blocks.video.controls": "제어 도구",
+ "field.blocks.video.location": "위치",
+ "field.blocks.video.loop": "반복",
+ "field.blocks.video.muted": "음소거",
"field.blocks.video.name": "영상",
"field.blocks.video.placeholder": "영상 URL 입력",
+ "field.blocks.video.poster": "대표 이미지",
+ "field.blocks.video.preload": "미리 로드",
"field.blocks.video.url.label": "영상 URL",
"field.blocks.video.url.placeholder": "https://youtube.com/?v=",
- "field.files.empty": "선택한 파일이 없습니다.",
+ "field.entries.delete.confirm.all": "모든 항목을 삭제할까요?",
+ "field.entries.empty": "항목이 없습니다.",
+ "field.files.empty": "선택한 파일이 없습니다.",
+ "field.files.empty.single": "No file selected yet",
+
+ "field.layout.change": "레이아웃 변경",
"field.layout.delete": "레이아웃 삭제",
"field.layout.delete.confirm": "레이아웃을 삭제할까요?",
+ "field.layout.delete.confirm.all": "모든 레이아웃을 삭제할까요?",
"field.layout.empty": "행이 없습니다.",
"field.layout.select": "레이아웃 선택",
"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": "필드가 없습니다.",
+
+ "file": "파일",
"file.blueprint": "블루프린트(/site/blueprints/files/{blueprint}.yml)를 설정하세요.",
+ "file.changeTemplate": "템플릿 변경",
+ "file.changeTemplate.notice": "템플릿을 변경하면 유형이 일치하지 않은 필드에 입력한 콘텐츠가 삭제됩니다. 템플릿에서 이미지 크기 등 특정 규칙이 지정된 경우 해당 규칙을 되돌릴 수 없습니다.",
"file.delete.confirm": "파일({filename})을 삭제할까요?",
+ "file.focus.placeholder": "초점 설정",
+ "file.focus.reset": "초점 삭제",
+ "file.focus.title": "초점",
"file.sort": "순서 변경",
"files": "파일",
+ "files.delete.confirm.selected": "Do you really want to delete the selected files? This action cannot be undone.",
"files.empty": "파일이 없습니다.",
+ "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": "색상",
"import": "가져오기",
"info": "정보",
- "insert": "삽입",
+ "insert": "\uc0bd\uc785",
"insert.after": "뒤에 삽입",
"insert.before": "앞에 삽입",
"install": "설치",
@@ -324,14 +426,14 @@
"installation.issues.mbstring": "MB String
확장 모듈이 필요합니다.",
"installation.issues.media": "/media
폴더의 쓰기 권한을 확인하세요.",
"installation.issues.php": "PHP
버전이 8 이상인지 확인하세요.",
- "installation.issues.server": "Kirby를 실행하려면 Apache
, Nginx
, 또는 Caddy
가 필요합니다.",
"installation.issues.sessions": "/site/sessions
폴더의 쓰기 권한을 확인하세요.",
- "language": "언어",
+ "language": "\uc5b8\uc5b4",
"language.code": "언어 코드",
"language.convert": "기본 언어로 지정",
"language.convert.confirm": "이 언어({name})를 기본 언어로 지정할까요? 지정한 뒤에는 복원할 수 없으며, 이 언어로 번역되지 않은 항목은 올바르게 표시되지 않을 수 있습니다.",
"language.create": "새 언어 추가",
+ "language.default": "기본 언어",
"language.delete.confirm": "언어({name})를 삭제할까요? 삭제한 뒤에는 복원할 수 없습니다.",
"language.deleted": "언어를 삭제했습니다.",
"language.direction": "읽기 방향",
@@ -339,8 +441,17 @@
"language.direction.rtl": "오른쪽에서 왼쪽",
"language.locale": "PHP 로캘 문자열",
"language.locale.warning": "사용자 지정 로캘을 사용 중입니다. /site/languages
폴더의 언어 파일을 수정하세요.",
- "language.name": "이름",
+ "language.name": "언어명",
+ "language.secondary": "보조 언어",
+ "language.settings": "언어 설정",
"language.updated": "언어를 변경했습니다.",
+ "language.variables": "언어 변수",
+ "language.variables.empty": "번역이 없습니다.",
+
+ "language.variable.delete.confirm": "변수({key})를 삭제할까요?",
+ "language.variable.key": "키",
+ "language.variable.notFound": "변수를 찾을 수 없습니다.",
+ "language.variable.value": "값",
"languages": "언어",
"languages.default": "기본 언어",
@@ -349,35 +460,56 @@
"languages.secondary.empty": "보조 언어가 없습니다.",
"license": "라이선스",
+ "license.activate": "지금 활성화하세요.",
+ "license.activate.label": "라이선스를 활성화하세요.",
+ "license.activate.domain": "{host}에 대한 라이선스를 활성화합니다.",
+ "license.activate.local": "로컬 도메인({host})에 대한 라이선스를 활성화합니다. 현재 도메인({host})이 라이선스를 사용하려는 도메인인과 같다면 계속 진행하세요.",
+ "license.activated": "활성화됨",
"license.buy": "라이선스 구매",
- "license.register": "등록",
+ "license.code": "언어 코드",
+ "license.code.help": "이메일로 전송된 라이선스 코드를 복사해 붙여넣으세요.",
+ "license.code.label": "라이선스 코드를 입력하세요.",
+ "license.status.active.info": "새로운 메이저 버전은 {date}까지 포함됩니다.",
+ "license.status.active.label": "유효한 라이선스",
+ "license.status.demo.info": "데모를 설치합니다.",
+ "license.status.demo.label": "데모",
+ "license.status.inactive.info": "새로운 메이저 버전으로 업데이트하려면 라이선스를 갱신하세요.",
+ "license.status.inactive.label": "새로운 메이저 버전이 없습니다.",
+ "license.status.legacy.bubble": "라이선스를 갱신합니다.",
+ "license.status.legacy.info": "라이선스가 이 버전을 지원하지 않습니다.",
+ "license.status.legacy.label": "라이선스를 갱신하세요.",
+ "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.manage": "라이선스 관리",
- "license.register.help": "Kirby를 등록하려면 이메일로 전송받은 라이선스 코드와 이메일 주소를 입력하세요.",
- "license.register.label": "라이선스 코드를 입력하세요.",
- "license.register.domain": "Your license will be registered to {host}.",
- "license.register.local": "You are about to register your license for your local domain {host}. If this site will be deployed to a public domain, please register it there instead. If {host} is the domain you want to license Kirby to, please continue.",
- "license.register.success": "Kirby와 함께해주셔서 감사합니다.",
- "license.unregistered": "Kirby가 등록되지 않았습니다.",
+ "license.purchased": "구입했습니다.",
+ "license.success": "Kirby와 함께해주셔서 감사합니다.",
"license.unregistered.label": "Kirby가 등록되지 않았습니다.",
- "link": "일반 링크",
- "link.text": "문자",
+ "link": "\uc77c\ubc18 \ub9c1\ud06c",
+ "link.text": "\ubb38\uc790",
"loading": "로딩 중…",
"lock.unsaved": "저장되지 않은 항목이 있습니다.",
"lock.unsaved.empty": "모든 페이지를 저장했습니다.",
- "lock.isLocked": "다른 사용자({email})가 수정한 사항이 저장되지 않았습니다.",
- "lock.file.isLocked": "파일을 편집할 수 없습니다. 다른 사용자({email})가 편집 중입니다.",
- "lock.page.isLocked": "페이지를 편집할 수 없습니다. 다른 사용자({email})가 편집 중입니다.",
+ "lock.unsaved.files": "Unsaved files",
+ "lock.unsaved.pages": "Unsaved pages",
+ "lock.unsaved.users": "Unsaved accounts",
+ "lock.isLocked": "사용자({email})의 변경 사항이 저장되지 않았습니다.",
"lock.unlock": "잠금 해제",
- "lock.isUnlocked": "다른 사용자가 이미 내용을 수정했으므로 현재 내용이 올바르게 저장되지 않았습니다. 저장되지 않은 내용은 다운로드해 수동으로 대치할 수 있습니다.",
+ "lock.unlock.submit": "사용자({email})의 저장되지 않은 변경 사항을 해제하고 덮어쓰기",
+ "lock.isUnlocked": "다른 사용자가 잠금을 해제했습니다.",
"login": "로그인",
"login.code.label.login": "로그인 코드",
"login.code.label.password-reset": "암호 초기화 코드",
"login.code.placeholder.email": "000 000",
+ "login.code.placeholder.totp": "000000",
"login.code.text.email": "입력한 이메일 주소로 코드를 전송했습니다.",
+ "login.code.text.totp": "인증 앱에서 생성된 일회용 코드를 입력하세요.",
"login.email.login.body": "{user.nameOrEmail} 님,\n\n{site} 패널에서 요청한 로그인 코드는 다음과 같습니다. 로그인 코드는 {timeout}분 동안 유효합니다.\n\n{code}\n\n로그인 코드를 요청한 적이 없다면, 이 이메일을 무시하거나 관리자에게 문의하세요. 보안을 위해 이 이메일은 다른 사람과 공유하지 마세요.",
"login.email.login.subject": "로그인 코드",
"login.email.password-reset.body": "{user.nameOrEmail} 님,\n\n{site} 패널에서 요청한 암호 초기화 코드는 다음과 같습니다. 암호 초기화 코드는 {timeout}분 동안 유효합니다.\n\n{code}\n\n암호 초기화 코드를 요청한 적이 없다면, 이 이메일을 무시하거나 관리자에게 문의하세요. 보안을 위해 이 이메일은 다른 사람과 공유하지 마세요.",
@@ -388,44 +520,64 @@
"login.toggleText.code.email-password": "암호로 로그인",
"login.toggleText.password-reset.email": "암호 찾기",
"login.toggleText.password-reset.email-password": "로그인 화면으로",
+ "login.totp.enable.option": "일회용 코드 설정",
+ "login.totp.enable.intro": "인증 앱은 계정에 로그인하기 위한 일회용 코드를 생성할 수 있습니다.",
+ "login.totp.enable.qr.label": "1. 이 QR 코드를 스캔하세요.",
+ "login.totp.enable.qr.help": "스캔할 수 없다면 인증 앱에 {secret}
설정 키를 수동으로 추가하세요.",
+ "login.totp.enable.confirm.headline": "2. 생성된 코드로 확인하세요.",
+ "login.totp.enable.confirm.text": "앱은 매 30초마다 새로운 일회용 코드를 생성합니다. 설정을 완료하기 위해 현재 코드를 입력하세요.",
+ "login.totp.enable.confirm.label": "현재 코드",
+ "login.totp.enable.confirm.help": "로그인할 때마다 일회용 코드를 요청합니다.",
+ "login.totp.enable.success": "일회용 코드가 활성화되었습니다.",
+ "login.totp.disable.option": "일회용 코드 비활성화",
+ "login.totp.disable.label": "비밀번호를 입력해 일회용 코드를 비활성화하세요.",
+ "login.totp.disable.help": "이후 로그인할 때 이메일로 발송된 로그인 코드와 같은 다른 두 번째 인증 요소를 요청합니다. 언제든 일회용 코드를 나중에 다시 설정할 수 있습니다.",
+ "login.totp.disable.admin": "사용자({user})의 일회용 코드를 비활성화합니다. 사용자({user})가 로그인할 때 이메일로 전송된 로그인 코드와 같은 다른 두 번째 인증 요소가 요청됩니다. 사용자({user})는 다음 로그인 후에 다시 일회용 코드를 설정할 수 있습니다.",
+ "login.totp.disable.success": "일회용 코드가 비활성화되었습니다.",
"logout": "로그아웃",
+ "merge": "합치기",
"menu": "메뉴",
"meridiem": "오전/오후",
"mime": "MIME 형식",
"minutes": "분",
"month": "월",
- "months.april": "4월",
- "months.august": "8월",
- "months.december": "12월",
+ "months.april": "4\uc6d4",
+ "months.august": "8\uc6d4",
+ "months.december": "12\uc6d4",
"months.february": "2월",
- "months.january": "1월",
- "months.july": "7월",
- "months.june": "6월",
- "months.march": "3월",
- "months.may": "5월",
- "months.november": "11월",
- "months.october": "10월",
- "months.september": "9월",
+ "months.january": "1\uc6d4",
+ "months.july": "7\uc6d4",
+ "months.june": "6\uc6d4",
+ "months.march": "3\uc6d4",
+ "months.may": "5\uc6d4",
+ "months.november": "11\uc6d4",
+ "months.october": "10\uc6d4",
+ "months.september": "9\uc6d4",
"more": "더 보기",
+ "move": "이동",
"name": "이름",
"next": "다음",
+ "night": "밤",
"no": "아니요",
"off": "끔",
"on": "켬",
"open": "열기",
"open.newWindow": "새 창에서 열기",
+ "option": "옵션",
"options": "옵션",
"options.none": "옵션이 없습니다.",
+ "options.all": "모든 옵션({count}) 표시",
"orientation": "비율",
"orientation.landscape": "가로로 긴 사각형",
"orientation.portrait": "세로로 긴 사각형",
"orientation.square": "정사각형",
+ "page": "페이지",
"page.blueprint": "블루프린트(/site/blueprints/pages/{blueprint}.yml)를 설정하세요.",
"page.changeSlug": "고유 주소 변경",
"page.changeSlug.fromTitle": "제목에서 가져오기",
@@ -433,13 +585,15 @@
"page.changeStatus.position": "순서를 지정하세요.",
"page.changeStatus.select": "새 상태 선택",
"page.changeTemplate": "템플릿 변경",
+ "page.changeTemplate.notice": "템플릿을 변경하면 유형이 일치하지 않은 필드에 입력한 콘텐츠가 삭제됩니다.",
+ "page.create": "해당 상태({status})로 생성",
"page.delete.confirm": "페이지({title})를 삭제할까요?",
"page.delete.confirm.subpages": "페이지에 하위 페이지가 있습니다. 모든 하위 페이지가 삭제됩니다.",
- "page.delete.confirm.title": "페이지의 제목을 입력하세요.",
- "page.draft.create": "초안 등록",
+ "page.delete.confirm.title": "페이지 제목을 입력하세요.",
"page.duplicate.appendix": "복사",
"page.duplicate.files": "파일 복사",
"page.duplicate.pages": "페이지 복사",
+ "page.move": "페이지 이동",
"page.sort": "순서 변경",
"page.status": "상태",
"page.status.draft": "초안",
@@ -447,9 +601,10 @@
"page.status.listed": "공개",
"page.status.listed.description": "누구나 읽을 수 있습니다.",
"page.status.unlisted": "비공개",
- "page.status.unlisted.description": "URL을 통해 접근할 수 있습니다.",
+ "page.status.unlisted.description": "오직 URL을 통해 접근할 수 있습니다.",
"pages": "페이지",
+ "pages.delete.confirm.selected": "Do you really want to delete the selected pages? This action cannot be undone.",
"pages.empty": "페이지가 없습니다.",
"pages.status.draft": "초안",
"pages.status.listed": "발행",
@@ -457,18 +612,25 @@
"pagination.page": "페이지",
- "password": "암호",
+ "password": "\uc554\ud638",
"paste": "붙여넣기",
"paste.after": "뒤로 붙여넣기",
+ "paste.success": "붙여넣었습니다. ({count})",
"pixel": "픽셀",
"plugin": "플러그인",
"plugins": "플러그인",
"prev": "이전",
"preview": "미리 보기",
+
+ "publish": "Publish",
+ "published": "발행",
+
"remove": "삭제",
"rename": "이름 변경",
- "replace": "교체",
- "retry": "다시 시도",
+ "renew": "갱신",
+ "replace": "\uad50\uccb4",
+ "replace.with": "다음으로 교체",
+ "retry": "\ub2e4\uc2dc \uc2dc\ub3c4",
"revert": "복원",
"revert.confirm": "저장되지 않은 내용을 삭제할까요?",
@@ -481,12 +643,15 @@
"role.nobody.description": "대체 사용자는 아무 권한이 없습니다.",
"role.nobody.title": "사용자가 없습니다.",
- "save": "저장",
+ "save": "\uc800\uc7a5",
+ "saved": "Saved",
"search": "검색",
+ "searching": "Searching",
"search.min": "{min}자 이상 입력하세요.",
- "search.all": "모두 보기",
+ "search.all": "모든 결과({count}) 보기",
"search.results.none": "해당하는 결과가 없습니다.",
+ "section.invalid": "섹션이 올바르지 않습니다.",
"section.required": "섹션이 필요합니다.",
"security": "보안",
@@ -498,33 +663,51 @@
"size": "크기",
"slug": "고유 주소",
"sort": "정렬",
+ "sort.drag": "Drag to sort …",
+ "split": "나누기",
"stats.empty": "관련 기록이 없습니다.",
+ "status": "상태",
+
+ "system.info.copy": "정보 복사",
+ "system.info.copied": "시스템 정보가 복사되었습니다.",
"system.issues.content": "/content
폴더의 권한을 확인하세요.",
- "system.issues.eol.kirby": "설치된 Kirby는 버전이 만료되었습니다. 더 이상 보안 업데이트를 받을 수 없습니다.",
- "system.issues.eol.plugin": "Your installed version of the { plugin } plugin is has reached end-of-life and will not receive further security updates",
+ "system.issues.eol.kirby": "설치된 Kirby 버전이 만료되었습니다. 더 이상 보안 업데이트를 받을 수 없습니다.",
+ "system.issues.eol.plugin": "설치된 플러그인({plugin}의 지원이 종료되었습니다. 더 이상 보안 업데이트를 받을 수 없습니다.",
+ "system.issues.eol.php": "설치된 PHP 버전({release})이 만료되었습니다. 더 이상 보안 업데이트를 받을 수 없습니다.",
"system.issues.debug": "공개 서버상에서는 디버그 모드를 해제하세요.",
"system.issues.git": "/.git
폴더의 권한을 확인하세요.",
"system.issues.https": "HTTPS를 권장합니다.",
"system.issues.kirby": "/kirby
폴더의 권한을 확인하세요.",
+ "system.issues.local": "The site is running locally with relaxed security checks",
"system.issues.site": "/site
폴더의 권한을 확인하세요.",
- "system.issues.vulnerability.kirby": "Your installation might be affected by the following vulnerability ({ severity } severity): { description }",
- "system.issues.vulnerability.plugin": "Your installation might be affected by the following vulnerability in the { plugin } plugin ({ severity } severity): { description }",
+ "system.issues.vue.compiler": "The Vue template compiler is enabled",
+ "system.issues.vulnerability.kirby": "설치한 시스템에 취약점이 있습니다.\n심각도: {severity}\n{description}",
+ "system.issues.vulnerability.plugin": "설치한 플러그인({plugin})에 취약점이 있습니다.\n심각도: {severity}\n{ description }",
"system.updateStatus": "업데이트 상태",
"system.updateStatus.error": "업데이트를 확인할 수 없습니다.",
"system.updateStatus.not-vulnerable": "알려진 취약성이 없습니다.",
- "system.updateStatus.security-update": "Free security update { version } available",
- "system.updateStatus.security-upgrade": "Upgrade { version } with security fixes available",
+ "system.updateStatus.security-update": "{ version } 버전으로 무료 보안 업데이트",
+ "system.updateStatus.security-upgrade": "{ version } 버전으로 보안 업그레이드",
"system.updateStatus.unreleased": "출시 전 버전",
"system.updateStatus.up-to-date": "최신 버전입니다.",
"system.updateStatus.update": "{ version } 버전으로 무료 업데이트",
"system.updateStatus.upgrade": "{ version } 버전으로 업그레이드",
+ "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": "제목",
- "template": "템플릿",
"today": "오늘",
- "toolbar.button.code": "언어 코드",
+ "toolbar.button.clear": "서식 제거",
+ "toolbar.button.code": "코드",
"toolbar.button.bold": "강조",
"toolbar.button.email": "이메일 주소",
"toolbar.button.headings": "제목",
@@ -538,9 +721,11 @@
"toolbar.button.file": "파일",
"toolbar.button.file.select": "파일 선택",
"toolbar.button.file.upload": "파일 업로드",
- "toolbar.button.link": "일반 링크",
+ "toolbar.button.link": "링크",
"toolbar.button.paragraph": "문단",
"toolbar.button.strike": "취소선",
+ "toolbar.button.sub": "아래 첨자",
+ "toolbar.button.sup": "위 첨자",
"toolbar.button.ol": "숫자 목록",
"toolbar.button.underline": "밑줄",
"toolbar.button.ul": "기호 목록",
@@ -550,6 +735,8 @@
"translation.name": "한국어",
"translation.locale": "ko_KR",
+ "type": "유형",
+
"upload": "업로드",
"upload.error.cantMove": "파일을 이동할 수 없습니다.",
"upload.error.cantWrite": "디스크를 읽을 수 없습니다.",
@@ -574,6 +761,7 @@
"user.changeLanguage": "언어 변경",
"user.changeName": "사용자명 변경",
"user.changePassword": "암호 변경",
+ "user.changePassword.current": "Your current password",
"user.changePassword.new": "새 암호",
"user.changePassword.new.confirm": "새 암호 확인",
"user.changeRole": "역할 변경",
@@ -585,17 +773,20 @@
"users": "사용자",
"version": "버전",
+ "version.changes": "Changed version",
+ "version.compare": "Compare versions",
"version.current": "현재 버전",
"version.latest": "최신 버전",
"versionInformation": "버전 정보",
+ "view": "View",
"view.account": "계정",
- "view.installation": "설치",
+ "view.installation": "\uc124\uce58",
"view.languages": "언어",
"view.resetPassword": "암호 초기화",
"view.site": "사이트",
"view.system": "시스템",
- "view.users": "사용자",
+ "view.users": "\uc0ac\uc6a9\uc790",
"welcome": "반갑습니다.",
"year": "년",
diff --git a/kirby/i18n/translations/lt.json b/kirby/i18n/translations/lt.json
index 8407817..a6706c4 100644
--- a/kirby/i18n/translations/lt.json
+++ b/kirby/i18n/translations/lt.json
@@ -3,19 +3,28 @@
"account.delete": "Panaikinti savo paskyrą",
"account.delete.confirm": "Ar tikrai norite panaikinti savo paskyrą? Jūs iš karto atsijungsite. Paskyros bus neįmanoma atstatyti.",
+ "activate": "Aktyvuoti",
"add": "Pridėti",
+ "alpha": "Alpha",
"author": "Autorius",
"avatar": "Profilio nuotrauka",
"back": "Atgal",
"cancel": "Atšaukti",
"change": "Keisti",
"close": "Uždaryti",
+ "changes": "Changes",
"confirm": "Ok",
"collapse": "Sutraukti",
"collapse.all": "Sutraukti viską",
+ "color": "Color",
+ "coordinates": "Coordinates",
"copy": "Kopijuoti",
"copy.all": "Kopijuoti visus",
+ "copy.success": "{count} nukopijuota!",
+ "copy.success.multiple": "{count} nukopijuota!",
+ "copy.url": "Copy URL",
"create": "Sukurti",
+ "custom": "Custom",
"date": "Data",
"date.select": "Pasirinkite datą",
@@ -34,26 +43,35 @@
"delete": "Pašalinti",
"delete.all": "Pašalinti viską",
+ "dialog.fields.empty": "This dialog has no fields",
"dialog.files.empty": "Nėra failų pasirinkimui",
"dialog.pages.empty": "Nėra puslapių pasirinkimui",
+ "dialog.text.empty": "This dialog does not define any text",
"dialog.users.empty": "Nėra vartotojų pasirinkimui",
"dimensions": "Išmatavimai",
+ "disable": "Išjungti",
"disabled": "Išjungta",
"discard": "Atšaukti",
+
+ "drawer.fields.empty": "This drawer has no fields",
+
+ "domain": "Domenas",
"download": "Parsisiųsti",
"duplicate": "Dublikuoti",
"edit": "Redaguoti",
"email": "El. paštas",
- "email.placeholder": "mail@example.com",
+ "email.placeholder": "info@pavyzdys.lt",
+ "enter": "Enter",
"entries": "Įrašai",
"entry": "Įrašas",
"environment": "Aplinka",
+ "error": "Error",
"error.access.code": "Neteisinas kodas",
"error.access.login": "Neteisingas prisijungimo vardas",
"error.access.panel": "Neturite teisės prisijungti prie valdymo pulto",
@@ -74,13 +92,31 @@
"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.entries.max.plural": "You must not add more than {max} entries",
+ "error.entries.max.singular": "You must not add more than one entry",
+ "error.entries.min.plural": "You must add at least {min} entries",
+ "error.entries.min.singular": "You must add at least one entry",
+ "error.entries.supports": "\"{type}\" field type is not supported for the entries field",
+ "error.entries.validation": "There's an error on the \"{field}\" field in row {index}",
+
"error.email.preset.notFound": "El. pašto paruoštukas \"{name}\" nerastas",
"error.field.converter.invalid": "Neteisingas konverteris \"{converter}\"",
+ "error.field.link.options": "Invalid options: {options}",
"error.field.type.missing": "Laukelis \"{ name }\": Šio tipo (\"{ type }\") laukelis neegzistuoja",
"error.file.changeName.empty": "Pavadinimas negali būti tuščias",
"error.file.changeName.permission": "Neturite teisės pakeisti failo pavadinimo \"{filename}\"",
+ "error.file.changeTemplate.invalid": "The template for the file \"{id}\" cannot be changed to \"{template}\" (valid: \"{blueprints}\")",
+ "error.file.changeTemplate.permission": "You are not allowed to change the template for the file \"{id}\"",
+
+ "error.file.delete.multiple": "Not all files could be deleted. Try each remaining file individually to see the specific error that prevents deletion.",
"error.file.duplicate": "Failas su pavadinimu \"{filename}\" jau yra",
"error.file.extension.forbidden": "Failo tipas (plėtinys) \"{extension}\" neleidžiamas",
"error.file.extension.invalid": "Neteisingas plėtinys: {extension}",
@@ -95,9 +131,11 @@
"error.file.minheight": "Failo aukštis turi būti bent {height} px",
"error.file.minsize": "Failas per mažas",
"error.file.minwidth": "Failo plotis turi būti bent {width} px",
+ "error.file.name.unique": "The filename must be unique",
"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",
@@ -106,22 +144,30 @@
"error.form.notSaved": "Formos nepavyko išsaugoti",
"error.language.code": "Prašome įrašyti teisingą kalbos kodą",
+ "error.language.create.permission": "You are not allowed to create a language",
+ "error.language.delete.permission": "You are not allowed to delete the language",
"error.language.duplicate": "Tokia kalba jau yra",
"error.language.name": "Prašome įrašyti teisingą kalbos pavadinimą",
"error.language.notFound": "Nepavyko rasti šios kalbos",
+ "error.language.update.permission": "You are not allowed to update the language",
"error.layout.validation.block": "There's an error on the \"{field}\" field in block {blockIndex} using the \"{fieldset}\" block type in layout {layoutIndex}",
"error.layout.validation.settings": "Yra klaida išdėstymo {index} nustatymuose",
- "error.license.format": "Prašome įrašyti teisingą licenzijos kodą",
+ "error.license.domain": "Licencijai trūksta domeno",
"error.license.email": "Prašome įrašyti teisingą el. pašto adresą",
+ "error.license.format": "Prašome įrašyti teisingą licencijos kodą",
"error.license.verification": "Nepavyko patikrinti licenzijos",
+ "error.login.totp.confirm.invalid": "Neteisinas kodas",
+ "error.login.totp.confirm.missing": "Prašome įrašyti kodą",
+
"error.object.validation": "There’s an error in the \"{label}\" field:\n{message}",
"error.offline": "Valdymo pultas dabar yra offline",
"error.page.changeSlug.permission": "Neturite teisės pakeisti \"{slug}\" URL",
+ "error.page.changeSlug.reserved": "The path of top-level pages must not start with \"{path}\"",
"error.page.changeStatus.incomplete": "Puslapis turi klaidų ir negali būti paskelbtas",
"error.page.changeStatus.permission": "Šiam puslapiui negalima pakeisti statuso",
"error.page.changeStatus.toDraft.invalid": "Puslapio \"{slug}\" negalima paversti juodraščiu",
@@ -133,10 +179,18 @@
"error.page.delete": "Puslapio \"{slug}\" negalima pašalinti",
"error.page.delete.confirm": "Įrašykite puslapio pavadinimą, tam kad patvirtintumėte",
"error.page.delete.hasChildren": "Puslapis turi vidinių puslapių, dėl to negalima jo pašalinti",
+ "error.page.delete.multiple": "Not all pages could be deleted. Try each remaining page individually to see the specific error that prevents deletion.",
"error.page.delete.permission": "Neturite leidimo šalinti \"{slug}\"",
"error.page.draft.duplicate": "Puslapio juodraštis su URL pabaiga \"{slug}\" jau yra",
"error.page.duplicate": "Puslapis su URL pabaiga \"{slug}\" jau yra",
"error.page.duplicate.permission": "Neturite leidimo dubliuoti \"{slug}\"",
+ "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}\"",
"error.page.notFound": "Puslapis \"{slug}\" nerastas",
"error.page.num.invalid": "Įrašykite teisingą eiliškumo numerį. Numeris negali būti neigiamas.",
"error.page.slug.invalid": "Įrašykite teisingą URL priedą",
@@ -163,6 +217,8 @@
"error.site.changeTitle.permission": "Neturite leidimo keisti svetainės pavadinimo",
"error.site.update.permission": "Neturite leidimo atnaujinti svetainės",
+ "error.structure.validation": "There's an error on the \"{field}\" field in row {index}",
+
"error.template.default.notFound": "Nėra šablono pagal nutylėjimą",
"error.unexpected": "An unexpected error occurred! Enable debug mode for more info: https://getkirby.com/docs/reference/system/options/debug",
@@ -180,7 +236,7 @@
"error.user.delete.lastUser": "Vienintelio vartotojo negalima pašalinti",
"error.user.delete.permission": "Neturite leidimo pašalinti vartotoją \"{name}\"",
"error.user.duplicate": "Vartotojas su el. paštu \"{email}\" jau yra",
- "error.user.email.invalid": "Prašome įrašyti teisingą el. pašto adresą",
+ "error.user.email.invalid": "Įrašykite teisingą el. pašto adresą",
"error.user.language.invalid": "Įrašykite teisingą kalbą",
"error.user.notFound": "Vartotojas \"{name}\" nerastas",
"error.user.password.excessive": "Please enter a valid password. Passwords must not be longer than 1000 characters.",
@@ -195,8 +251,10 @@
"error.validation.accepted": "Prašome patvirtinti",
"error.validation.alpha": "Prašome įrašyti tik raides a-z",
"error.validation.alphanum": "Prašome įrašyti tik raides a-z arba skaičius 0-9",
+ "error.validation.anchor": "Please enter a correct link anchor",
"error.validation.between": "Prašome įrašyti reikšmę tarp \"{min}\" ir \"{max}\"",
"error.validation.boolean": "Patvirtinkite arba atšaukite",
+ "error.validation.color": "Please enter a valid color in the {format} format",
"error.validation.contains": "Prašome įrašyti reikšmę, kuri turėtų \"{needle}\"",
"error.validation.date": "Prašome įrašyti korektišką datą",
"error.validation.date.after": "Įrašykite datą nuo {date}",
@@ -204,13 +262,14 @@
"error.validation.date.between": "Įrašykite datą tarp {min} ir {max}",
"error.validation.denied": "Prašome neleisti",
"error.validation.different": "Reikšmė neturi būti \"{other}\"",
- "error.validation.email": "Prašome įrašyti teisingą el. pašto adresą",
+ "error.validation.email": "Prašome įrašyti korektišką el. paštą",
"error.validation.endswith": "Reikšmė turi baigtis su \"{end}\"",
"error.validation.filename": "Prašome įrašyti teisingą failo pavadinimą",
"error.validation.in": "Prašome įrašyti vieną iš šių: ({in})",
"error.validation.integer": "Prašome įrašyti teisingą sveiką skaičių",
"error.validation.ip": "Prašome įrašyti teisingą IP adresą",
"error.validation.less": "Prašome įrašyti mažiau nei {max}",
+ "error.validation.linkType": "The link type is not allowed",
"error.validation.match": "Reikšmė nesutampa su laukiamu šablonu",
"error.validation.max": "Prašome įrašyti reikšmę lygią arba didesnę, nei {max}",
"error.validation.maxlength": "Prašome įrašyti trumpesnę reikšmę. (max. {max} characters)",
@@ -227,15 +286,18 @@
"error.validation.same": "Prašome įrašyti \"{other}\"",
"error.validation.size": "Reikšmės dydis turi būti \"{size}\"",
"error.validation.startswith": "Reikšmė turi prasidėti su \"{start}\"",
+ "error.validation.tel": "Please enter an unformatted phone number",
"error.validation.time": "Prašome įrašyti korektišką laiką",
"error.validation.time.after": "Įrašykite laiką po {time}",
"error.validation.time.before": "Įrašykite laiką prieš {time}",
"error.validation.time.between": "Įrašykite laiką tarp {min} ir {max}",
+ "error.validation.uuid": "Please enter a valid UUID",
"error.validation.url": "Prašome įrašyti teisingą URL",
"expand": "Išskleisti",
"expand.all": "Išskleisti viską",
+ "field.invalid": "The field is invalid",
"field.required": "Laukas privalomas",
"field.blocks.changeType": "Pakeisti tipą",
"field.blocks.code.name": "Kodas",
@@ -245,8 +307,9 @@
"field.blocks.delete.confirm.all": "Ar tikrai norite pašalinti visus blokus?",
"field.blocks.delete.confirm.selected": "Ar tikrai norite pašalinti pasirinktus blokus?",
"field.blocks.empty": "Dar nėra blokų",
+ "field.blocks.fieldsets.empty": "No fieldsets yet",
"field.blocks.fieldsets.label": "Pasirinkite bloko tipą ...",
- "field.blocks.fieldsets.paste": "Spauskite {{ shortcut }} įterpti/importuoti nukopijuotus blokus",
+ "field.blocks.fieldsets.paste": "Press {{ shortcut }} to import layouts/blocks from your clipboard Only those allowed in the current field will get inserted.",
"field.blocks.gallery.name": "Galerija",
"field.blocks.gallery.images.empty": "Dar nėra nuotraukų",
"field.blocks.gallery.images.label": "Nuotraukos",
@@ -254,11 +317,16 @@
"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",
"field.blocks.image.link": "Nuoroda",
"field.blocks.image.location": "Šaltinis",
+ "field.blocks.image.location.internal": "This website",
+ "field.blocks.image.location.external": "External source",
"field.blocks.image.name": "Nuotrauka",
"field.blocks.image.placeholder": "Pasirinkite nuotrauką",
"field.blocks.image.ratio": "Proporcijos",
@@ -275,38 +343,72 @@
"field.blocks.quote.citation.placeholder": "autorius",
"field.blocks.text.name": "Tekstas",
"field.blocks.text.placeholder": "Tekstas ...",
+ "field.blocks.video.autoplay": "Autoplay",
"field.blocks.video.caption": "Aprašymas",
+ "field.blocks.video.controls": "Controls",
+ "field.blocks.video.location": "Šaltinis",
+ "field.blocks.video.loop": "Loop",
+ "field.blocks.video.muted": "Muted",
"field.blocks.video.name": "Video",
"field.blocks.video.placeholder": "Įrašykite video URL",
+ "field.blocks.video.poster": "Poster",
+ "field.blocks.video.preload": "Preload",
"field.blocks.video.url.label": "Video-URL",
"field.blocks.video.url.placeholder": "https://youtube.com/?v=",
- "field.files.empty": "Pasirinkti",
+ "field.entries.delete.confirm.all": "Ar tikrai norite išrtinti visus įrašus?",
+ "field.entries.empty": "Dar nėra įrašų",
+ "field.files.empty": "Pasirinkti",
+ "field.files.empty.single": "No file selected yet",
+
+ "field.layout.change": "Change layout",
"field.layout.delete": "Pašalinti eilutę",
"field.layout.delete.confirm": "Ar tikrai norite pašalinti šią eilutę",
+ "field.layout.delete.confirm.all": "Do you really want to delete all layouts?",
"field.layout.empty": "Dar nėra eilučių",
"field.layout.select": "Pasirinkite išdėstymą",
"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",
+
+ "file": "Failas",
"file.blueprint": "Šis failas dar neturi blueprint. Galite nustatyti jį per /site/blueprints/files/{blueprint}.yml",
+ "file.changeTemplate": "Pakeisti šabloną",
+ "file.changeTemplate.notice": "Changing the file's template will remove content for fields that don't match in type. If the new template defines certain rules, e.g. image dimensions, those will also be applied irreversibly. Use with caution.",
"file.delete.confirm": "Ar tikrai norite pašalinti
{filename}?",
+ "file.focus.placeholder": "Set focal point",
+ "file.focus.reset": "Remove focal point",
+ "file.focus.title": "Focus",
"file.sort": "Pakeisti poziciją",
"files": "Failai",
+ "files.delete.confirm.selected": "Do you really want to delete the selected files? This action cannot be undone.",
"files.empty": "Įkelti",
+ "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",
"import": "Importuoti",
"info": "Info",
"insert": "Įterpti",
@@ -314,7 +416,7 @@
"insert.before": "Įterpti prieš",
"install": "Įdiegti",
- "installation": "Installation",
+ "installation": "Įdiegimas",
"installation.completed": "Valdymo pultas įdiegtas",
"installation.disabled": "Pagal nutylėjimą valdymo pulto įdiegimas viešuose serveriuose yra negalimas. Prašome įdiegti lokalioje aplinkoje arba įgalinkite jį su panel.install
opcija.",
"installation.issues.accounts": "Katalogas /site/accounts
neegzistuoja arba neturi įrašymo teisių",
@@ -324,7 +426,6 @@
"installation.issues.mbstring": "Plėtinys MB String
yra privalomas",
"installation.issues.media": "Katalogas /media
neegzistuoja arba neturi įrašymo teisių",
"installation.issues.php": "Įsitikinkite, kad naudojama PHP 8+
",
- "installation.issues.server": "Kirby reikalauja Apache
, Nginx
arba Caddy
",
"installation.issues.sessions": "Katalogas /site/sessions
neegzistuoja arba neturi įrašymo teisių",
"language": "Kalba",
@@ -332,6 +433,7 @@
"language.convert": "Padaryti pagrindinį",
"language.convert.confirm": "{secret}
rankiniu būdu į savo autentifikavimo programėlę.",
+ "login.totp.enable.confirm.headline": "2. Patvirtinti su sugeneruotu kodu",
+ "login.totp.enable.confirm.text": "Jūsų programėlė generuoja naują vienkartinį kodą kas 30 sekundžių. Įrašykite dabartinį kodą, norėdami užbaigti:",
+ "login.totp.enable.confirm.label": "Dabartinis kodas",
+ "login.totp.enable.confirm.help": "Po šio nustatymo, iš jūsų bus prašomas vienkartinis kodas jungiantis kiekvieną kartą.",
+ "login.totp.enable.success": "Vienkartiniai kodai įjungti",
+ "login.totp.disable.option": "Išjungti vienkartinius kodus",
+ "login.totp.disable.label": "Įrašykite savo slaptažodį norėdami išjungti vienkartinius kodus",
+ "login.totp.disable.help": "Ateityje kitoks 2-factor bus prašomas prisijungiant, pvz. login kodas, siunčiamas el. paštu. Jūs galite visada nustatyti vienkartinius kodus vėl vėliau.",
+ "login.totp.disable.admin": "
Visi sub-puslapiai taip pat bus pašalinti.",
"page.delete.confirm.title": "Įrašykite puslapio pavadinimą tam, kad patvirtinti",
- "page.draft.create": "Sukurti juodraštį",
"page.duplicate.appendix": "Kopijuoti",
"page.duplicate.files": "Kopijuoti failus",
"page.duplicate.pages": "Kopijuoti puslapius",
+ "page.move": "Perkelti puslapį",
"page.sort": "Pakeisti poziciją",
"page.status": "Statusas",
"page.status.draft": "Juodraštis",
@@ -450,24 +604,32 @@
"page.status.unlisted.description": "Rodomas viešai visiems, bet tik per URL",
"pages": "Puslapiai",
+ "pages.delete.confirm.selected": "Do you really want to delete the selected pages? This action cannot be undone.",
"pages.empty": "Dar nėra puslapių",
"pages.status.draft": "Juodraščiai",
"pages.status.listed": "Paskelbti",
- "pages.status.unlisted": "Nerodomas",
+ "pages.status.unlisted": "Nerodomi",
"pagination.page": "Puslapis",
"password": "Slaptažodis",
"paste": "Įterpti",
"paste.after": "Įterpti po",
+ "paste.success": "{count} pasted!",
"pixel": "Pikselis",
"plugin": "Įskiepas",
"plugins": "Įskiepai",
"prev": "Ankstesnis",
"preview": "Peržiūra",
+
+ "publish": "Publish",
+ "published": "Paskelbti",
+
"remove": "Pašalinti",
"rename": "Pervadinti",
+ "renew": "Atnaujinti",
"replace": "Apkeisti",
+ "replace.with": "Replace with",
"retry": "Bandyti dar",
"revert": "Grąžinti",
"revert.confirm": "Ar tikrai norite atšaukti visus neišsaugotus pakeitimus?",
@@ -482,11 +644,14 @@
"role.nobody.title": "Niekas",
"save": "Išsaugoti",
+ "saved": "Saved",
"search": "Ieškoti",
+ "searching": "Searching",
"search.min": "Minimalus simbolių kiekis paieškai: {min}",
- "search.all": "Rodyti viską",
+ "search.all": "Parodyti visus {count} rezultatus",
"search.results.none": "Nėra rezultatų",
+ "section.invalid": "The section is invalid",
"section.required": "Sekcija privaloma",
"security": "Saugumas",
@@ -498,16 +663,25 @@
"size": "Dydis",
"slug": "URL pabaiga",
"sort": "Rikiuoti",
+ "sort.drag": "Drag to sort …",
+ "split": "Split",
"stats.empty": "Nėra pranešimų",
+ "status": "Statusas",
+
+ "system.info.copy": "Copy info",
+ "system.info.copied": "System info copied",
"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",
+ "system.issues.eol.php": "Jūsų PHP versija { release } pasiekė gyvenimo galą ir daugiau negaus saugumo atnaujinimų",
"system.issues.debug": "Debugging must be turned off in production",
"system.issues.git": "The .git folder seems to be exposed",
"system.issues.https": "Rekomenduojame HTTPS visoms svetainėms",
"system.issues.kirby": "The kirby folder seems to be exposed",
+ "system.issues.local": "The site is running locally with relaxed security checks",
"system.issues.site": "The site folder seems to be exposed",
+ "system.issues.vue.compiler": "The Vue template compiler is enabled",
"system.issues.vulnerability.kirby": "Your installation might be affected by the following vulnerability ({ severity } severity): { description }",
"system.issues.vulnerability.plugin": "Your installation might be affected by the following vulnerability in the { plugin } plugin ({ severity } severity): { description }",
"system.updateStatus": "Atnaujinimų statusas",
@@ -520,10 +694,19 @@
"system.updateStatus.update": "Prieinamas nemokamas atnaujinimas { version }",
"system.updateStatus.upgrade": "Prieinamas atnaujinimas { version }",
- "title": "Pavadinimas",
+ "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",
+ "toolbar.button.clear": "Clear formatting",
"toolbar.button.code": "Kodas",
"toolbar.button.bold": "Bold",
"toolbar.button.email": "El. paštas",
@@ -541,6 +724,8 @@
"toolbar.button.link": "Nuoroda",
"toolbar.button.paragraph": "Paragrafas",
"toolbar.button.strike": "Perbraukimas",
+ "toolbar.button.sub": "Subscript",
+ "toolbar.button.sup": "Superscript",
"toolbar.button.ol": "Sąrašas su skaičiais",
"toolbar.button.underline": "Pabraukimas",
"toolbar.button.ul": "Sąrašas su taškais",
@@ -550,6 +735,8 @@
"translation.name": "Lietuvių",
"translation.locale": "lt_LT",
+ "type": "Type",
+
"upload": "Įkelti",
"upload.error.cantMove": "Įkeltas failas negali būti perkeltas",
"upload.error.cantWrite": "Nepavyko įrašyti failo į diską",
@@ -562,7 +749,7 @@
"upload.error.noFiles": "Failai nebuvo įkelti",
"upload.error.partial": "Failas įkeltas tik iš dalies",
"upload.error.tmpDir": "Trūksta laikinojo katalogo",
- "upload.errors": "Error",
+ "upload.errors": "Klaida",
"upload.progress": "Įkėlimas…",
"url": "Url",
@@ -574,6 +761,7 @@
"user.changeLanguage": "Keisti kalbą",
"user.changeName": "Pervadinti vartotoją",
"user.changePassword": "Keisti slaptažodį",
+ "user.changePassword.current": "Your current password",
"user.changePassword.new": "Naujas slaptažodis",
"user.changePassword.new.confirm": "Patvirtinti naują slaptažodį…",
"user.changeRole": "Keisti rolę",
@@ -585,10 +773,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/kirby/i18n/translations/nb.json b/kirby/i18n/translations/nb.json
index 3272036..236e105 100644
--- a/kirby/i18n/translations/nb.json
+++ b/kirby/i18n/translations/nb.json
@@ -3,19 +3,28 @@
"account.delete": "Slett kontoen din",
"account.delete.confirm": "Er du sikker på at du vil slette kontoen din? Du vil bli logget ut umiddelbart. Kontoen din kan ikke gjenopprettes.",
+ "activate": "Aktiver",
"add": "Legg til",
+ "alpha": "Alfa",
"author": "Forfatter",
"avatar": "Profilbilde",
"back": "Tilbake",
"cancel": "Avbryt",
"change": "Endre",
"close": "Lukk",
+ "changes": "Endringer",
"confirm": "Lagre",
"collapse": "Skjul",
"collapse.all": "Skjule alle",
+ "color": "Farge",
+ "coordinates": "Koordinater",
"copy": "Kopier",
"copy.all": "Kopier alle",
+ "copy.success": "{count} kopiert!",
+ "copy.success.multiple": "{count} copied!",
+ "copy.url": "Copy URL",
"create": "Opprett",
+ "custom": "Egendefinert",
"date": "Dato",
"date.select": "Velg dato",
@@ -23,8 +32,8 @@
"day": "Dag",
"days.fri": "Fre",
"days.mon": "Man",
- "days.sat": "Lør",
- "days.sun": "Søn",
+ "days.sat": "L\u00f8r",
+ "days.sun": "S\u00f8n",
"days.thu": "Tor",
"days.tue": "Tir",
"days.wed": "Ons",
@@ -34,13 +43,20 @@
"delete": "Slett",
"delete.all": "Slett alle",
+ "dialog.fields.empty": "Denne dialogen har ingen felter",
"dialog.files.empty": "Ingen filer å velge",
"dialog.pages.empty": "Ingen sider å velge",
+ "dialog.text.empty": "Denne dialogen definerer ingen tekst",
"dialog.users.empty": "Ingen brukere å velge",
"dimensions": "Dimensjoner",
+ "disable": "Deaktivere",
"disabled": "Deaktivert",
"discard": "Forkast",
+
+ "drawer.fields.empty": "Denne skuffen har ingen felt",
+
+ "domain": "Domene",
"download": "Last ned",
"duplicate": "Dupliser",
@@ -49,11 +65,13 @@
"email": "Epost",
"email.placeholder": "epost@eksempel.no",
- "entries": "Entries",
- "entry": "Entry",
+ "enter": "Enter",
+ "entries": "Artikler",
+ "entry": "Artikkel",
"environment": "Miljø",
+ "error": "Feil",
"error.access.code": "Ugyldig kode",
"error.access.login": "Ugyldig innlogging",
"error.access.panel": "Du har ikke tilgang til panelet",
@@ -70,17 +88,35 @@
"error.blocks.max.singular": "Du kan ikke legge til mer enn en blokk",
"error.blocks.min.plural": "Du må legge til minst {min} blokker",
"error.blocks.min.singular": "Du må legge til minst en blokk",
- "error.blocks.validation": "There's an error on the \"{field}\" field in block {index} using the \"{fieldset}\" block type",
+ "error.blocks.validation": "Det er en feil med feltet \"{field}\" i blokk {index} hvor blokktypen \"{fieldset}\" brukes",
- "error.cache.type.invalid": "Invalid cache type \"{type}\"",
+ "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.entries.max.plural": "You must not add more than {max} entries",
+ "error.entries.max.singular": "You must not add more than one entry",
+ "error.entries.min.plural": "You must add at least {min} entries",
+ "error.entries.min.singular": "You must add at least one entry",
+ "error.entries.supports": "\"{type}\" field type is not supported for the entries field",
+ "error.entries.validation": "Det er en feilmelding på felt \"{field}\" i rad {index}",
"error.email.preset.notFound": "E-postinnstillingen \"{name}\" ble ikke funnet",
"error.field.converter.invalid": "Ugyldig omformer \"{converter}\"",
- "error.field.type.missing": "Field \"{ name }\": The field type \"{ type }\" does not exist",
+ "error.field.link.options": "Invalid options: {options}",
+ "error.field.type.missing": "Felt \"{ name }\": Felttypen \"{ type }\" finnes ikke",
"error.file.changeName.empty": "Navnet kan ikke være tomt",
"error.file.changeName.permission": "Du har ikke rettighet til å endre navnet til \"{filename}\"",
+ "error.file.changeTemplate.invalid": "Malen for filen \"{id}\" Kan ikke endres til \"{template}\" (gyldig: \"{blueprints}\")",
+ "error.file.changeTemplate.permission": "Du har ikke rettigheter til å endre malen for filen \"{id}\"",
+
+ "error.file.delete.multiple": "Not all files could be deleted. Try each remaining file individually to see the specific error that prevents deletion.",
"error.file.duplicate": "En fil med navnet \"{filename}\" eksisterer allerede",
"error.file.extension.forbidden": "Ugyldig filtype",
"error.file.extension.invalid": "Ugyldig utvidelse: {extension}",
@@ -95,9 +131,11 @@
"error.file.minheight": "Høyden til bildet må være minst {height} piksler",
"error.file.minsize": "Filen er for liten",
"error.file.minwidth": "Bredden til bildet må være minst {width} piksler",
+ "error.file.name.unique": "The filename must be unique",
"error.file.name.missing": "Filnavnet kan ikke være tomt",
- "error.file.notFound": "Finner ikke filen",
+ "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",
@@ -106,22 +144,30 @@
"error.form.notSaved": "Skjemaet kunne ikke lagres",
"error.language.code": "Vennligst skriv inn gyldig språkkode",
+ "error.language.create.permission": "You are not allowed to create a language",
+ "error.language.delete.permission": "You are not allowed to delete the language",
"error.language.duplicate": "Språket eksisterer allerede",
"error.language.name": "Vennligst skriv inn et gyldig navn for språket",
"error.language.notFound": "Finner ikke språket",
+ "error.language.update.permission": "You are not allowed to update the language",
- "error.layout.validation.block": "There's an error on the \"{field}\" field in block {blockIndex} using the \"{fieldset}\" block type in layout {layoutIndex}",
+ "error.layout.validation.block": "Det er en feilmelding på \"{field}\" feltet i blokk {blockIndex} med bruk av \"{fieldset}\" blokktypen i layout {layoutIndex}",
"error.layout.validation.settings": "Det er en feil i layout {index} innstillinger",
- "error.license.format": "Vennligst skriv inn gyldig lisensnøkkel",
+ "error.license.domain": "Domenen for lisensen mangler",
"error.license.email": "Vennligst skriv inn en gyldig e-postadresse",
+ "error.license.format": "Please enter a valid license code",
"error.license.verification": "Lisensen kunne ikke verifiseres",
- "error.object.validation": "There’s an error in the \"{label}\" field:\n{message}",
+ "error.login.totp.confirm.invalid": "Ugyldig kode",
+ "error.login.totp.confirm.missing": "Vennligst skriv inn nåværende koden",
+
+ "error.object.validation": "Det er en feilmelding i \"{label}\" feltet:\n{message}",
"error.offline": "Panelet er i øyeblikket offline",
"error.page.changeSlug.permission": "Du kan ikke endre URLen for denne siden",
+ "error.page.changeSlug.reserved": "Stien til toppnivåsider kan ikke starte med \"{path}\"",
"error.page.changeStatus.incomplete": "Siden har feil og kan ikke publiseres",
"error.page.changeStatus.permission": "Sidens status kan ikke endres",
"error.page.changeStatus.toDraft.invalid": "Siden \"{slug}\" kan ikke konverteres til et utkast",
@@ -133,10 +179,18 @@
"error.page.delete": "Siden \"{slug}\" kan ikke slettes",
"error.page.delete.confirm": "Vennligst skriv inn sidens tittel for å bekrefte",
"error.page.delete.hasChildren": "Siden har undersider og kan derfor ikke slettes",
+ "error.page.delete.multiple": "Not all pages could be deleted. Try each remaining page individually to see the specific error that prevents deletion.",
"error.page.delete.permission": "Du har ikke til å slette \"{slug}\"",
"error.page.draft.duplicate": "Et sideutkast med URL-tillegget \"{slug}\" eksisterer allerede",
"error.page.duplicate": "En side med URL-tillegget \"{slug}\" eksisterer allerede",
"error.page.duplicate.permission": "Du har ikke tillatelse til å duplisere \"{slug}\"",
+ "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}\"",
"error.page.notFound": "Siden \"{slug}\" ble ikke funnet",
"error.page.num.invalid": "Vennligst skriv inn et gyldig sorteringsnummer. Tallet må ikke være negativt.",
"error.page.slug.invalid": "Vennligst skriv inn en gyldig URL endelse",
@@ -163,6 +217,8 @@
"error.site.changeTitle.permission": "Du har ikke tillatelse til å endre tittel på siden",
"error.site.update.permission": "Du har ikke tillatelse til å oppdatere denne siden",
+ "error.structure.validation": "Det er en feilmelding på felt \"{field}\" i rad {index}",
+
"error.template.default.notFound": "Standardmalen eksisterer ikke",
"error.unexpected": "En uventet feil oppstod! Aktiver feilsøkmodus for mer info: https://getkirby.com/docs/reference/system/options/debug",
@@ -178,7 +234,7 @@
"error.user.delete": "Denne brukeren kunne ikke bli slettet",
"error.user.delete.lastAdmin": "Siste administrator kan ikke slettes",
"error.user.delete.lastUser": "Den siste brukeren kan ikke slettes",
- "error.user.delete.permission": "Du er ikke tillat å slette denne brukeren",
+ "error.user.delete.permission": "Du er ikke tillat \u00e5 slette denne brukeren",
"error.user.duplicate": "En bruker med e-postadresse \"{email}\" eksisterer allerede",
"error.user.email.invalid": "Vennligst skriv inn en gyldig e-postadresse",
"error.user.language.invalid": "Vennligst skriv inn et gyldig språk",
@@ -195,8 +251,10 @@
"error.validation.accepted": "Vennligst bekreft",
"error.validation.alpha": "Vennligst skriv kun tegn mellom a-z",
"error.validation.alphanum": "Vennligst skriv kun tegn mellom a-z eller tall mellom 0-9",
+ "error.validation.anchor": "Vennligst skriv inn en riktig link-ankertekst",
"error.validation.between": "Vennligst angi en verdi mellom \"{min}\" og \"{max}\"",
"error.validation.boolean": "Vennligst bekreft eller avslå",
+ "error.validation.color": "Please enter a valid color in the {format} format",
"error.validation.contains": "Vennligst skriv inn en verdi som inneholder \"{needle}\"",
"error.validation.date": "Vennligst skriv inn en gyldig dato",
"error.validation.date.after": "Vennligst angi en dato etter {date}",
@@ -211,6 +269,7 @@
"error.validation.integer": "Vennligst skriv inn et gyldig tall",
"error.validation.ip": "Vennligst skriv inn en gyldig IP-adresse",
"error.validation.less": "Vennligst angi en verdi lavere enn {max}",
+ "error.validation.linkType": "The link type is not allowed",
"error.validation.match": "Verdien samsvarer ikke med det forventede mønsteret",
"error.validation.max": "Vennligst angi en verdi lik eller lavere enn {max}",
"error.validation.maxlength": "Vennligst angi en kortere verdi. (maks. {max} tegn)",
@@ -227,15 +286,18 @@
"error.validation.same": "Vennligst angi \"{other}\"",
"error.validation.size": "Størrelsen på verdien må være \"{size}\"",
"error.validation.startswith": "Verdien må starte med \"{start}\"",
+ "error.validation.tel": "Please enter an unformatted phone number",
"error.validation.time": "Vennligst angi et gyldig tidspunkt",
"error.validation.time.after": "Vennligst angi et tidspunkt etter {time}",
"error.validation.time.before": "Vennligst angi et tidspunkt før {time}",
"error.validation.time.between": "Vennligst angi et tidspunkt mellom {min} og {max}",
+ "error.validation.uuid": "Please enter a valid UUID",
"error.validation.url": "Vennligst skriv inn en gyldig URL",
"expand": "Utvid",
"expand.all": "Utvid alle",
+ "field.invalid": "The field is invalid",
"field.required": "Feltet er påkrevd",
"field.blocks.changeType": "Endre type",
"field.blocks.code.name": "Kode",
@@ -245,8 +307,9 @@
"field.blocks.delete.confirm.all": "Er du sikker på at du vil slette alle blokkene?",
"field.blocks.delete.confirm.selected": "Er du sikker på at du vil slette de valgte blokkene?",
"field.blocks.empty": "Ingen blokker enda",
+ "field.blocks.fieldsets.empty": "Ingen feltsett enda",
"field.blocks.fieldsets.label": "Vennligst velg en blokktype…",
- "field.blocks.fieldsets.paste": "Trykk {{ shortcut }} for å lime/importere blokker fra din utklippstavle",
+ "field.blocks.fieldsets.paste": "Trykk {{ shortcut }} for å importere layout/blokker fra utklippsverktøyet Bare de som er tillat i nåværende felt vil bli limt inn.",
"field.blocks.gallery.name": "Galleri",
"field.blocks.gallery.images.empty": "Ingen bilder enda",
"field.blocks.gallery.images.label": "Bilder",
@@ -254,11 +317,16 @@
"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",
"field.blocks.image.link": "Adresse",
"field.blocks.image.location": "Plassering",
+ "field.blocks.image.location.internal": "Denne nettsiden",
+ "field.blocks.image.location.external": "Ekstern kilde",
"field.blocks.image.name": "Bilde",
"field.blocks.image.placeholder": "Velg et bilde",
"field.blocks.image.ratio": "Ratio",
@@ -275,38 +343,72 @@
"field.blocks.quote.citation.placeholder": "av…",
"field.blocks.text.name": "Tekst",
"field.blocks.text.placeholder": "Tekst…",
+ "field.blocks.video.autoplay": "Autoplay",
"field.blocks.video.caption": "Caption",
+ "field.blocks.video.controls": "Controls",
+ "field.blocks.video.location": "Plassering",
+ "field.blocks.video.loop": "Loop",
+ "field.blocks.video.muted": "Muted",
"field.blocks.video.name": "Video",
"field.blocks.video.placeholder": "Legg til en video URL",
+ "field.blocks.video.poster": "Poster",
+ "field.blocks.video.preload": "Preload",
"field.blocks.video.url.label": "Video-URL",
"field.blocks.video.url.placeholder": "https://youtube.com/?v=",
- "field.files.empty": "Ingen filer har blitt valgt",
+ "field.entries.delete.confirm.all": "Vil du virkelig slette alle oppføringer?",
+ "field.entries.empty": "Ingen oppføringer enda",
+ "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",
"field.layout.delete.confirm": "Er du sikker på at du vil slette denne layouten?",
+ "field.layout.delete.confirm.all": "Vil du virkelig slette alle layout?",
"field.layout.empty": "Ingen rader enda",
"field.layout.select": "Velg en layout",
- "field.object.empty": "No information yet",
+ "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": "Ønsker du virkelig å slette denne oppføringen?",
- "field.structure.delete.confirm.all": "Do you really want to delete all entries?",
- "field.structure.empty": "Ingen oppføringer enda",
+ "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",
+
+ "file": "Fil",
"file.blueprint": "Denne filen har ikke en blueprint enda. Du kan definere oppsettet i /site/blueprints/files/{blueprint}.yml",
+ "file.changeTemplate": "Endre mal",
+ "file.changeTemplate.notice": "Endring av denne filens mal kommer til å fjerne innhold for felter som ikke korresponderer med typen. Dersom den nye malen inneholder gitte regler, f.eks bildedimensjoner, vil også disse bli påført irreversibelt. Bruk varsomt.",
"file.delete.confirm": "Vil du virkelig slette denne filen?",
+ "file.focus.placeholder": "Sett fokuspunkt",
+ "file.focus.reset": "Fjern fokuspunkt",
+ "file.focus.title": "Focus",
"file.sort": "Endre plassering",
"files": "Filer",
+ "files.delete.confirm.selected": "Do you really want to delete the selected files? This action cannot be undone.",
"files.empty": "Ingen filer ennå",
+ "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",
"import": "Importer",
"info": "Info",
"insert": "Sett Inn",
@@ -317,21 +419,21 @@
"installation": "Installasjon",
"installation.completed": "Panelet har blitt installert",
"installation.disabled": "Installasjonsprogrammet for Panelet er deaktivert på offentlige servere som standard. Vennligst kjør installasjonsprogrammet på en lokal maskin eller aktiver den med panel.install
innstillingen.",
- "installation.issues.accounts": "/site/accounts er ikke skrivbar",
- "installation.issues.content": "Mappen content og alt av innhold må være skrivbar.",
+ "installation.issues.accounts": "\/site\/accounts er ikke skrivbar",
+ "installation.issues.content": "Mappen content og alt av innhold m\u00e5 v\u00e6re skrivbar.",
"installation.issues.curl": "Utvidelsen CURL
er nødvendig",
"installation.issues.headline": "Panelet kan ikke installeres",
"installation.issues.mbstring": "Utvidelsen MB String
er nødvendig",
"installation.issues.media": "Mappen /media
eksisterer ikke eller er ikke skrivbar",
"installation.issues.php": "Pass på at du bruker PHP 8+
",
- "installation.issues.server": "Kirby krever Apache
, Nginx
eller Caddy
",
"installation.issues.sessions": "Mappen /site/sessions
eksisterer ikke eller er ikke skrivbar",
- "language": "Språk",
+ "language": "Spr\u00e5k",
"language.code": "Kode",
"language.convert": "Gjør til standard",
"language.convert.confirm": "{secret}
manuelt i din autentiseringsapp.",
+ "login.totp.enable.confirm.headline": "2. Bekreft med den genererte koden",
+ "login.totp.enable.confirm.text": "Din app genererer en engangskode hvert 30ende sekund. Skriv inn koden som vises nå for å ferdigstille oppsettet:",
+ "login.totp.enable.confirm.label": "Nærværende kode",
+ "login.totp.enable.confirm.help": "Etter dette er satt opp, vil vi spørre etter en engangskode hver gang du logger inn.",
+ "login.totp.enable.success": "Engangskoder er aktivert",
+ "login.totp.disable.option": "Deaktiver engangskoder",
+ "login.totp.disable.label": "Skriv inn ditt passord for å deaktivere bruk av engangskoder",
+ "login.totp.disable.help": "I fremtiden vil en annen tofaktorløsning – som en loginkode sendt via epost – bli etterspurt når du logger inn. Du kan alltid sette opp tofaktorkoder igjen på senere tidspunkt.",
+ "login.totp.disable.admin": "
Alle undersider vil også bli slettet.",
"page.delete.confirm.title": "Skriv inn sidetittel for å bekrefte",
- "page.draft.create": "Lag utkast",
"page.duplicate.appendix": "Kopier",
"page.duplicate.files": "Kopier filer",
"page.duplicate.pages": "Kopier sider",
+ "page.move": "Flytt side",
"page.sort": "Endre plassering",
"page.status": "Status",
"page.status.draft": "Utkast",
@@ -450,25 +604,33 @@
"page.status.unlisted.description": "Siden er ikke er oppført og er kun tilgjengelig via URL",
"pages": "Sider",
+ "pages.delete.confirm.selected": "Do you really want to delete the selected pages? This action cannot be undone.",
"pages.empty": "Ingen sider ennå",
"pages.status.draft": "Utkast",
"pages.status.listed": "Publisert",
"pages.status.unlisted": "Unotert",
- "pagination.page": "Page",
+ "pagination.page": "Side",
"password": "Passord",
"paste": "Lim inn",
"paste.after": "Lim inn etter",
+ "paste.success": "{count} limt inn!",
"pixel": "Piksel",
- "plugin": "Plugin",
+ "plugin": "Utvidelse",
"plugins": "Plugins",
"prev": "Forrige",
"preview": "Forhåndsvisning",
+
+ "publish": "Publish",
+ "published": "Publisert",
+
"remove": "Fjern",
"rename": "Endre navn",
+ "renew": "Fornye",
"replace": "Erstatt",
- "retry": "Prøv på nytt",
+ "replace.with": "Erstatt med",
+ "retry": "Pr\u00f8v p\u00e5 nytt",
"revert": "Forkast",
"revert.confirm": "Er du sikker på at vil slette alle ulagrede endringer?",
@@ -482,14 +644,17 @@
"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",
+ "search.all": "Vis alle {count} resultat",
"search.results.none": "Ingen resultater",
+ "section.invalid": "The section is invalid",
"section.required": "Denne seksjonen er påkrevd",
- "security": "Security",
+ "security": "Sikkerhet",
"select": "Velg",
"server": "Server",
"settings": "Innstillinger",
@@ -498,32 +663,50 @@
"size": "Størrelse",
"slug": "URL-appendiks",
"sort": "Sortere",
+ "sort.drag": "Drag to sort …",
+ "split": "Del",
- "stats.empty": "No reports",
- "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",
- "system.issues.debug": "Debugging must be turned off in production",
- "system.issues.git": "The .git folder seems to be exposed",
- "system.issues.https": "We recommend HTTPS for all your sites",
- "system.issues.kirby": "The kirby folder seems to be exposed",
- "system.issues.site": "The site folder seems to be exposed",
- "system.issues.vulnerability.kirby": "Your installation might be affected by the following vulnerability ({ severity } severity): { description }",
- "system.issues.vulnerability.plugin": "Your installation might be affected by the following vulnerability in the { plugin } plugin ({ severity } severity): { description }",
- "system.updateStatus": "Update status",
- "system.updateStatus.error": "Could not check for updates",
- "system.updateStatus.not-vulnerable": "No known vulnerabilities",
- "system.updateStatus.security-update": "Free security update { version } available",
- "system.updateStatus.security-upgrade": "Upgrade { version } with security fixes available",
- "system.updateStatus.unreleased": "Unreleased version",
- "system.updateStatus.up-to-date": "Up to date",
- "system.updateStatus.update": "Free update { version } available",
- "system.updateStatus.upgrade": "Upgrade { version } available",
+ "stats.empty": "Ingen rapporter",
+ "status": "Status",
+
+ "system.info.copy": "Copy info",
+ "system.info.copied": "System info copied",
+ "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",
+ "system.issues.eol.php": "Din installerte PHP versjon { release } har nådd sitt end-of-life og vil ikke lenger motta sikkerhetsoppdateringer",
+ "system.issues.debug": "Debugging må bli skrudd av i production",
+ "system.issues.git": ".git mappen ser ut til å være eksponert",
+ "system.issues.https": "Vi anbefaler HTTPS for alle dine sider",
+ "system.issues.kirby": "kirby-mappen ser ut til å være eksponert",
+ "system.issues.local": "The site is running locally with relaxed security checks",
+ "system.issues.site": "site-mappen ser ut til å være eksponert",
+ "system.issues.vue.compiler": "The Vue template compiler is enabled",
+ "system.issues.vulnerability.kirby": "Din installasjon er muligens påvirket av følgende sikkerhetshull ({ severity } severity): { description }",
+ "system.issues.vulnerability.plugin": "Din installasjon er muligens påvirket av følgende sikkerhetshull i pluginen { plugin } ({ severity } severity): { description }",
+ "system.updateStatus": "Oppdater status",
+ "system.updateStatus.error": "Klarte ikke å lete etter oppdateringer",
+ "system.updateStatus.not-vulnerable": "Ingen kjente sikkerhetshull",
+ "system.updateStatus.security-update": "Gratis sikkerhetsoppdatering { version } tilgjengelig",
+ "system.updateStatus.security-upgrade": "Oppdatering { version } med sikkerhetsoppdateringer tilgjengelig",
+ "system.updateStatus.unreleased": "Ulansert versjon",
+ "system.updateStatus.up-to-date": "Oppdatert",
+ "system.updateStatus.update": "Gratis oppdatering { version } tilgjengelig",
+ "system.updateStatus.upgrade": "Oppdatering { version } tilgjengelig",
+
+ "tel": "Telefon",
+ "tel.placeholder": "+49123456789",
+ "template": "Mal",
+
+ "theme": "Theme",
+ "theme.light": "Lights on",
+ "theme.dark": "Lights off",
+ "theme.automatic": "Match system default",
"title": "Tittel",
- "template": "Mal",
"today": "I dag",
+ "toolbar.button.clear": "Fjern formattering",
"toolbar.button.code": "Kode",
"toolbar.button.bold": "Fet tekst",
"toolbar.button.email": "Epost",
@@ -541,15 +724,19 @@
"toolbar.button.link": "Adresse",
"toolbar.button.paragraph": "Avsnitt",
"toolbar.button.strike": "Gjennomstreking",
+ "toolbar.button.sub": "Subscript",
+ "toolbar.button.sup": "Superscript",
"toolbar.button.ol": "Ordnet liste",
"toolbar.button.underline": "Understrek",
"toolbar.button.ul": "Punktliste",
"translation.author": "Kirby Team",
"translation.direction": "ltr",
- "translation.name": "Norsk Bokmål",
+ "translation.name": "Norsk Bokm\u00e5l",
"translation.locale": "nb_NO",
+ "type": "Type",
+
"upload": "Last opp",
"upload.error.cantMove": "Den opplastede filen kunne ikke flyttes",
"upload.error.cantWrite": "Kunne ikke skrive fil til disk",
@@ -562,11 +749,11 @@
"upload.error.noFiles": "Ingen filer ble lastet opp",
"upload.error.partial": "Den opplastede filen ble bare delvis lastet opp",
"upload.error.tmpDir": "Mangler en midlertidig mappe",
- "upload.errors": "Error",
+ "upload.errors": "Feil",
"upload.progress": "Laster opp…",
"url": "Nettadresse",
- "url.placeholder": "https://example.com",
+ "url.placeholder": "https://eksempel.no",
"user": "Bruker",
"user.blueprint": "Du kan definere flere seksjoner og skjemafelter for denne brukerrollen i /site/blueprints/users/{blueprint}.yml",
@@ -574,6 +761,7 @@
"user.changeLanguage": "Endre språk",
"user.changeName": "Angi nytt navn for denne brukeren",
"user.changePassword": "Bytt passord",
+ "user.changePassword.current": "Your current password",
"user.changePassword.new": "Nytt passord",
"user.changePassword.new.confirm": "Bekreft nytt passord…",
"user.changeRole": "Bytt rolle",
@@ -585,10 +773,13 @@
"users": "Brukere",
"version": "Kirby versjon",
- "version.current": "Current version",
- "version.latest": "Latest version",
- "versionInformation": "Version information",
+ "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/kirby/i18n/translations/nl.json b/kirby/i18n/translations/nl.json
index 2751f30..899c397 100644
--- a/kirby/i18n/translations/nl.json
+++ b/kirby/i18n/translations/nl.json
@@ -1,21 +1,30 @@
{
"account.changeName": "Wijzig je naam",
"account.delete": "Verwijder je account",
- "account.delete.confirm": "Wil je echt je account verwijderen? Je wordt direct uitgelogd. Uw account kan niet worden hersteld.",
+ "account.delete.confirm": "Wil je echt je account verwijderen? Je wordt direct uitgelogd. Je account kan niet worden hersteld.",
+ "activate": "Activeren",
"add": "Voeg toe",
+ "alpha": "Alpha",
"author": "Auteur",
"avatar": "Avatar",
"back": "Terug",
"cancel": "Annuleren",
"change": "Wijzigen",
"close": "Sluiten",
- "confirm": "OK",
+ "changes": "Wijzigingen",
+ "confirm": "Oke",
"collapse": "Sluit",
"collapse.all": "Sluit alles",
+ "color": "Kleur",
+ "coordinates": "Coördinaten ",
"copy": "Kopiëren",
"copy.all": "Kopieer alles",
+ "copy.success": "{count} gekopieerd!",
+ "copy.success.multiple": "{count} gekopieerd!",
+ "copy.url": "Copy URL",
"create": "Aanmaken",
+ "custom": "Custom",
"date": "Datum",
"date.select": "Selecteer een datum",
@@ -34,13 +43,20 @@
"delete": "Verwijderen",
"delete.all": "Verwijder alles",
+ "dialog.fields.empty": "Dit venster heeft geen velden",
"dialog.files.empty": "Geen bestanden om te selecteren",
"dialog.pages.empty": "Geen pagina's om te selecteren",
+ "dialog.text.empty": "Dit venster bevat geen tekst",
"dialog.users.empty": "Geen gebruikers om te selecteren",
"dimensions": "Dimensies",
+ "disable": "Uitschakelen",
"disabled": "Uitgeschakeld",
"discard": "Annuleren",
+
+ "drawer.fields.empty": "Deze drawer heeft geen velden",
+
+ "domain": "Domein",
"download": "Download",
"duplicate": "Dupliceren",
@@ -49,15 +65,17 @@
"email": "E-mailadres",
"email.placeholder": "mail@voorbeeld.nl",
- "entries": "Entries",
- "entry": "Entry",
+ "enter": "Enter",
+ "entries": "Items",
+ "entry": "Item",
"environment": "Omgeving",
+ "error": "Foutmelding",
"error.access.code": "Ongeldige code",
"error.access.login": "Ongeldige login",
"error.access.panel": "Je hebt geen toegang tot het Panel",
- "error.access.view": "Je hebt geen toegangsrechten voor deze zone van het Panel",
+ "error.access.view": "Je hebt geen toegangsrechten voor dit gedeelte van het Panel",
"error.avatar.create.fail": "De avatar kon niet worden geupload",
"error.avatar.delete.fail": "De avatar kan niet worden verwijderd",
@@ -70,17 +88,35 @@
"error.blocks.max.singular": "Je kunt niet meer dan één blok toevoegen",
"error.blocks.min.plural": "Je moet ten minste {min} blok toevoegen",
"error.blocks.min.singular": "Je moet ten minste één blok toevoegen",
- "error.blocks.validation": "There's an error on the \"{field}\" field in block {index} using the \"{fieldset}\" block type",
+ "error.blocks.validation": "Er is een fout opgetreden bij het \"{field}\" veld in blok {index} in het \"{fieldset}\" bloktype",
- "error.cache.type.invalid": "Invalid cache type \"{type}\"",
+ "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.entries.max.plural": "You must not add more than {max} entries",
+ "error.entries.max.singular": "You must not add more than one entry",
+ "error.entries.min.plural": "You must add at least {min} entries",
+ "error.entries.min.singular": "You must add at least one entry",
+ "error.entries.supports": "\"{type}\" field type is not supported for the entries field",
+ "error.entries.validation": "Er is een fout opgetreden in veld \"{field}\" in rij {index}",
"error.email.preset.notFound": "De e-mailvoorinstelling \"{name}\" kan niet worden gevonden",
"error.field.converter.invalid": "Ongeldige converter \"{converter}\"",
- "error.field.type.missing": "Field \"{ name }\": The field type \"{ type }\" does not exist",
+ "error.field.link.options": "Invalid options: {options}",
+ "error.field.type.missing": "Veld \"{ name }\": Het veldtype \"{ type }\" bestaat niet",
"error.file.changeName.empty": "De naam mag niet leeg zijn",
"error.file.changeName.permission": "Je hebt geen rechten om de naam te wijzigen van \"{filename}\"",
+ "error.file.changeTemplate.invalid": "Het template voor het bestand \"{id}\" kan niet worden gewijzigd in \"{template}\" (geldig: \"{blueprints}\")",
+ "error.file.changeTemplate.permission": "Je hebt geen rechten om het template te wijzigen voor bestand \"{id}\"",
+
+ "error.file.delete.multiple": "Not all files could be deleted. Try each remaining file individually to see the specific error that prevents deletion.",
"error.file.duplicate": "Er bestaat al een bestand met de naam \"{filename}\"",
"error.file.extension.forbidden": "Bestandsextensie \"{extension}\" is niet toegestaan",
"error.file.extension.invalid": "Ongeldige extensie: {extension}",
@@ -95,9 +131,11 @@
"error.file.minheight": "De hoogte van de afbeelding moet minimaal {height} pixels zijn",
"error.file.minsize": "Het bestand is te klein",
"error.file.minwidth": "De breedte van de afbeelding moet minimaal {width} pixels zijn",
+ "error.file.name.unique": "De bestandsnaam moet uniek zijn",
"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",
@@ -106,22 +144,30 @@
"error.form.notSaved": "Het formulier kon niet worden opgeslagen",
"error.language.code": "Vul een geldige code voor deze taal in",
+ "error.language.create.permission": "Je hebt geen rechten om een taal toe te voegen",
+ "error.language.delete.permission": "Je hebt geen rechten om een taal te verwijderen",
"error.language.duplicate": "De taal bestaat al",
"error.language.name": "Vul een geldige naam voor deze taal in",
"error.language.notFound": "De taal kan niet worden gevonden",
+ "error.language.update.permission": "Je hebt geen rechten om deze taal te updaten",
- "error.layout.validation.block": "There's an error on the \"{field}\" field in block {blockIndex} using the \"{fieldset}\" block type in layout {layoutIndex}",
+ "error.layout.validation.block": "Er is een fout opgetreden bij het \"{field}\" veld in blok {blockIndex} in het \"{fieldset}\" bloktype in layout {layoutIndex}",
"error.layout.validation.settings": "Er is een fout gevonden in de instellingen van ontwerp {index} ",
- "error.license.format": "Vul een gelidge licentie-key in",
+ "error.license.domain": "Het domein voor de licentie ontbreekt",
"error.license.email": "Gelieve een geldig emailadres in te voeren",
+ "error.license.format": "Vul een geldige licentie in",
"error.license.verification": "De licentie kon niet worden geverifieerd. ",
- "error.object.validation": "There’s an error in the \"{label}\" field:\n{message}",
+ "error.login.totp.confirm.invalid": "Ongeldige code",
+ "error.login.totp.confirm.missing": "Vul de code in",
+
+ "error.object.validation": "Er is een fout opgetreden in het veld \"{label}\":\n{message}",
"error.offline": "Het Panel is momenteel offline",
"error.page.changeSlug.permission": "Je kunt de URL van deze pagina niet wijzigen",
+ "error.page.changeSlug.reserved": "Het pad van hoofdpagina's mogen niet beginnen met \"{path}\".",
"error.page.changeStatus.incomplete": "Deze pagina bevat fouten en kan niet worden gepubliceerd",
"error.page.changeStatus.permission": "De status van deze pagina kan niet worden gewijzigd",
"error.page.changeStatus.toDraft.invalid": "De pagina \"{slug}\" kan niet worden aangepast naar 'concept'",
@@ -133,10 +179,18 @@
"error.page.delete": "De pagina \"{slug}\" kan niet worden verwijderd",
"error.page.delete.confirm": "Voer de paginatitel in om te bevestigen",
"error.page.delete.hasChildren": "Deze pagina heeft subpagina's en kan niet worden verwijderd",
+ "error.page.delete.multiple": "Not all pages could be deleted. Try each remaining page individually to see the specific error that prevents deletion.",
"error.page.delete.permission": "Je hebt geen rechten om \"{slug}\" te verwijderen",
"error.page.draft.duplicate": "Er bestaat al een conceptpagina met de URL-appendix \"{slug}\"",
"error.page.duplicate": "Er bestaat al een pagina met de URL-appendix \"{slug}\"",
"error.page.duplicate.permission": "Je bent niet gemachtigd om \"{slug}\" te dupliceren",
+ "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}\"",
"error.page.notFound": "De pagina \"{slug}\" kan niet worden gevonden",
"error.page.num.invalid": "Vul een geldig sorteer-cijfer in. Het cijfer mag niet negatief zijn",
"error.page.slug.invalid": "Vul een geldig URL-achtervoegsel in",
@@ -163,6 +217,8 @@
"error.site.changeTitle.permission": "Je hebt geen rechten om de titel van de site te wijzigen",
"error.site.update.permission": "Je hebt geen rechten om de site te updaten",
+ "error.structure.validation": "Er is een fout opgetreden in veld \"{field}\" in rij {index}",
+
"error.template.default.notFound": "Het standaard template bestaat niet",
"error.unexpected": "Een onverwacht fout heeft plaats gevonden! Schakel debug-modus in voor meer informatie: https://getkirby.com/docs/reference/system/options/debug",
@@ -180,23 +236,25 @@
"error.user.delete.lastUser": "De laatste gebruiker kan niet worden verwijderd",
"error.user.delete.permission": "Je hebt geen rechten om gebruiker \"{name}\" te verwijderen",
"error.user.duplicate": "Er bestaat al een gebruiker met e-mailadres \"{email}\"",
- "error.user.email.invalid": "Gelieve een geldig emailadres in te voeren",
- "error.user.language.invalid": "Gelieve een geldige taal in te voeren",
+ "error.user.email.invalid": "Vul een geldig e-mailadres in",
+ "error.user.language.invalid": "Vul een geldige taal in",
"error.user.notFound": "De gebruiker \"{name}\" kan niet worden gevonden",
- "error.user.password.excessive": "Please enter a valid password. Passwords must not be longer than 1000 characters.",
- "error.user.password.invalid": "Gelieve een geldig wachtwoord in te voeren. Wachtwoorden moeten minstens 8 karakters lang zijn.",
+ "error.user.password.excessive": "Voer een geldig wachtwoord in. Wachtwoorden mogen niet langer zijn dan 1000 tekens.",
+ "error.user.password.invalid": "Voer een geldig wachtwoord in. Wachtwoorden moeten minstens 8 tekens lang zijn.",
"error.user.password.notSame": "De wachtwoorden komen niet overeen",
"error.user.password.undefined": "De gebruiker heeft geen wachtwoord",
"error.user.password.wrong": "Fout wachtwoord",
- "error.user.role.invalid": "Gelieve een geldige rol in te voeren",
+ "error.user.role.invalid": "Vul een geldige rol in",
"error.user.undefined": "De gebruiker kan niet worden gevonden",
"error.user.update.permission": "Je hebt geen rechten om gebruiker \"{name}\" te updaten",
- "error.validation.accepted": "Gelieve te bevestigen",
+ "error.validation.accepted": "Ga akkoord",
"error.validation.alpha": "Vul alleen a-z karakters in",
- "error.validation.alphanum": "Vul alleen a-z karakters of cijfers (0-9) in",
+ "error.validation.alphanum": "Vul alleen tekens in tussen a-z of cijfers 0-9",
+ "error.validation.anchor": "Vul een juiste link in",
"error.validation.between": "Vul een waarde tussen \"{min}\" en \"{max}\"",
"error.validation.boolean": "Ga akkoord of weiger",
+ "error.validation.color": "Vul een geldige kleur in {format} in",
"error.validation.contains": "Vul een waarde in die \"{needle}\" bevat",
"error.validation.date": "Vul een geldige datum in",
"error.validation.date.after": "Vul een datum in na {date}",
@@ -204,13 +262,14 @@
"error.validation.date.between": "Vul een datum in tussen {min} en {max}",
"error.validation.denied": "Weiger",
"error.validation.different": "De invoer mag niet \"{other}\" zijn",
- "error.validation.email": "Gelieve een geldig emailadres in te voeren",
+ "error.validation.email": "Vul een geldig e-mailadres in",
"error.validation.endswith": "De invoer moet eindigen met \"{end}\"",
"error.validation.filename": "Vul een geldige bestandsnaam in",
"error.validation.in": "Vul één van de volgende dingen in: ({in})",
"error.validation.integer": "Vul een geldig geheel getal in",
"error.validation.ip": "Vul een geldig IP-adres in",
"error.validation.less": "Vul een waarde in lager dan {max}",
+ "error.validation.linkType": "Het type link is niet toegestaan",
"error.validation.match": "De invoer klopt niet met het verwachte patroon",
"error.validation.max": "Vul een waarde in die gelijk is aan of lager dan {max}",
"error.validation.maxlength": "Gebruik minder karakters (maximaal {max} karakters)",
@@ -227,15 +286,18 @@
"error.validation.same": "Vul \"{other}\" in",
"error.validation.size": "De lengte van de invoer moet \"{size}\" zijn",
"error.validation.startswith": "De invoer moet beginnen met \"{start}\"",
+ "error.validation.tel": "Vul een niet-geformatteerd telefoonnummer in",
"error.validation.time": "Vul een geldige tijd in",
- "error.validation.time.after": "Voer een tijd in na {time}",
- "error.validation.time.before": "Voer een tijd in voor {time}",
- "error.validation.time.between": "Voer een tijd in tussen {min} en {max}",
+ "error.validation.time.after": "Vul een tijd in na {time}",
+ "error.validation.time.before": "Vul een tijd in voor {time}",
+ "error.validation.time.between": "Vul een tijd in tussen {min} en {max}",
+ "error.validation.uuid": "Vul een geldige UUID in",
"error.validation.url": "Vul een geldige URL in",
"expand": "Open",
"expand.all": "Open alles",
+ "field.invalid": "Dit veld is niet geldig",
"field.required": "Dit veld is verplicht",
"field.blocks.changeType": "Wijzig type",
"field.blocks.code.name": "Code",
@@ -245,8 +307,9 @@
"field.blocks.delete.confirm.all": "Wil je echt alle blokken verwijderen?",
"field.blocks.delete.confirm.selected": "Wil je de geselecteerde blokken echt verwijderen?",
"field.blocks.empty": "Nog geen blokken",
+ "field.blocks.fieldsets.empty": "Nog geen veldsets",
"field.blocks.fieldsets.label": "Selecteer een bloktype ...",
- "field.blocks.fieldsets.paste": "Druk op {{ shortcut }} om blokken van je klembord te plakken/importeren",
+ "field.blocks.fieldsets.paste": "Druk op {{ shortcut }} om layouts/blokken van je klembord te importeren Alleen de toegestane layouts/blokken in het huidige veld worden ingevoegd.",
"field.blocks.gallery.name": "Galerij",
"field.blocks.gallery.images.empty": "Nog geen afbeeldingen",
"field.blocks.gallery.images.label": "Afbeeldingen",
@@ -254,11 +317,16 @@
"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",
"field.blocks.image.link": "Link",
"field.blocks.image.location": "Locatie",
+ "field.blocks.image.location.internal": "Deze website",
+ "field.blocks.image.location.external": "Externe bron",
"field.blocks.image.name": "Afbeelding",
"field.blocks.image.placeholder": "Selecteer een afbeelding",
"field.blocks.image.ratio": "Verhouding",
@@ -275,38 +343,72 @@
"field.blocks.quote.citation.placeholder": "door ...",
"field.blocks.text.name": "Tekst",
"field.blocks.text.placeholder": "Tekst ...",
+ "field.blocks.video.autoplay": "Automatisch afspelen",
"field.blocks.video.caption": "Beschrijving",
+ "field.blocks.video.controls": "Besturingselementen",
+ "field.blocks.video.location": "Locatie",
+ "field.blocks.video.loop": "Herhalen",
+ "field.blocks.video.muted": "Gedempt",
"field.blocks.video.name": "Video",
"field.blocks.video.placeholder": "Voer een video link in",
+ "field.blocks.video.poster": "Afbeelding",
+ "field.blocks.video.preload": "Vooral laden",
"field.blocks.video.url.label": "Video link",
"field.blocks.video.url.placeholder": "https://youtube.com/?v=",
- "field.files.empty": "Nog geen bestanden geselecteerd",
+ "field.entries.delete.confirm.all": "Weet je zeker dat je alle items wil verwijderen?",
+ "field.entries.empty": "Nog geen items",
+ "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",
- "field.layout.delete.confirm": "Weet je zeker dat je deze indeling wilt verwijderen?",
+ "field.layout.delete.confirm": "Weet je zeker dat je deze layout wilt verwijderen?",
+ "field.layout.delete.confirm.all": "Weet je zeker dat je alle layouts wilt verwijderen?",
"field.layout.empty": "Er zijn nog geen rijen",
"field.layout.select": "Selecteer een indeling",
"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 entry verwijderen?",
- "field.structure.delete.confirm.all": "Do you really want to delete all entries?",
- "field.structure.empty": "Nog geen items.",
+ "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",
+
+ "file": "Bestand",
"file.blueprint": "Dit bestand heeft nog geen blauwdruk. U kunt de instellingen definiëren in /site/blueprints/files/{blueprint}.yml",
+ "file.changeTemplate": "Verander template",
+ "file.changeTemplate.notice": "Door het template van het bestand te wijzigen, wordt inhoud verwijderd voor velden waarvan het type niet overeenkomt. Als het nieuwe template bepaalde regels definieert, bv. afmetingen van afbeeldingen, dan worden die ook onomkeerbaar toegepast. Wees hier voorzichtig mee.",
"file.delete.confirm": "Wil je dit bestand
{filename} verwijderen?",
+ "file.focus.placeholder": "Set focal point",
+ "file.focus.reset": "Remove focal point",
+ "file.focus.title": "Focus",
"file.sort": "Verander positie",
"files": "Bestanden",
+ "files.delete.confirm.selected": "Do you really want to delete the selected files? This action cannot be undone.",
"files.empty": "Nog geen bestanden",
+ "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",
"import": "Importeer",
"info": "Info",
"insert": "Toevoegen",
@@ -324,7 +426,6 @@
"installation.issues.mbstring": "De MB String
extensie is verplicht",
"installation.issues.media": "De map /media
bestaat niet of heeft geen schrijfrechten",
"installation.issues.php": "Gebruik PHP8+
",
- "installation.issues.server": "Kirby vereist Apache
, Nginx
of Caddy
",
"installation.issues.sessions": "De map /site/sessions
bestaat niet of heeft geen schrijfrechten",
"language": "Taal",
@@ -332,6 +433,7 @@
"language.convert": "Maak standaard",
"language.convert.confirm": "{secret}
handmatig toe aan je Authenticator-app.",
+ "login.totp.enable.confirm.headline": "2. Bevestig met een gegenereerde code",
+ "login.totp.enable.confirm.text": "De app genereert elke 30 seconden een nieuwe eenmalige code. Voer de huidige code in om de setup af te ronden:",
+ "login.totp.enable.confirm.label": "Huidige code",
+ "login.totp.enable.confirm.help": "Na het instellen zullen we elke keer om een eenmalige code vragen bij het inloggen.",
+ "login.totp.enable.success": "Eenmalige codes geactiveerd",
+ "login.totp.disable.option": "Schakel eenmalige codes uit",
+ "login.totp.disable.label": "Voer je wachtwoord in om eenmalige codes uit te schakelen",
+ "login.totp.disable.help": "In de toekomst zal een andere tweede factor, zoals een inlogcode die via e-mail wordt verzonden, worden gevraagd wanneer je inlogt. Je kunt later altijd weer eenmalige codes instellen.",
+ "login.totp.disable.admin": "
Alle subpagina's zullen ook worden verwijderd.",
"page.delete.confirm.title": "Voeg een paginatitel in om te bevestigen",
- "page.draft.create": "Maak concept",
"page.duplicate.appendix": "Kopiëren",
"page.duplicate.files": "Kopieer bestanden",
"page.duplicate.pages": "Kopieer pagina's",
+ "page.move": "Move page",
"page.sort": "Verander positie",
"page.status": "Status",
"page.status.draft": "Concept",
@@ -450,6 +604,7 @@
"page.status.unlisted.description": "Deze pagina is alleen bereikbaar via URL",
"pages": "Pagina’s",
+ "pages.delete.confirm.selected": "Do you really want to delete the selected pages? This action cannot be undone.",
"pages.empty": "Nog geen pagina's",
"pages.status.draft": "Concepten",
"pages.status.listed": "Gepubliceerd",
@@ -460,14 +615,21 @@
"password": "Wachtwoord",
"paste": "Plak",
"paste.after": "Plak achter",
+ "paste.success": "{count} geplakt!",
"pixel": "Pixel",
"plugin": "Plugin",
"plugins": "Plugins",
"prev": "Vorige",
"preview": "Voorbeeld",
+
+ "publish": "Publish",
+ "published": "Gepubliceerd",
+
"remove": "Verwijder",
"rename": "Hernoem",
+ "renew": "Verlengen",
"replace": "Vervang",
+ "replace.with": "Vervangen met",
"retry": "Probeer opnieuw",
"revert": "Annuleren",
"revert.confirm": "Weet je zeker dat je alle niet-opgeslagen veranderingen wilt verwijderen?",
@@ -482,11 +644,14 @@
"role.nobody.title": "Niemand",
"save": "Opslaan",
+ "saved": "Saved",
"search": "Zoeken",
+ "searching": "Searching",
"search.min": "Voer {min} tekens in om te zoeken",
- "search.all": "Toon alles",
+ "search.all": "Laat alle {count} resultaten zien",
"search.results.none": "Geen resultaten",
+ "section.invalid": "De sectie is ongeldig",
"section.required": "De sectie is verplicht",
"security": "Beveiliging",
@@ -498,21 +663,30 @@
"size": "Grootte",
"slug": "URL-toevoeging",
"sort": "Sorteren",
+ "sort.drag": "Sleep om te sorteren ...",
+ "split": "Splitsen",
- "stats.empty": "No reports",
- "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",
- "system.issues.debug": "Debugging must be turned off in production",
+ "stats.empty": "Geen rapporten",
+ "status": "Status",
+
+ "system.info.copy": "Kopieer informatie",
+ "system.info.copied": "Systeem informatie gekopieerd",
+ "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.",
+ "system.issues.eol.php": "De geïnstalleerde PHP versie { release } is niet meer actueel en zal geen verdere beveiligingsupdates meer ontvangen.",
+ "system.issues.debug": "De debug modus moet uitgeschakeld zijn in productie",
"system.issues.git": "De .git map lijkt zichtbaar te zijn",
"system.issues.https": "We raden HTTPS aan voor al je sites",
- "system.issues.kirby": "The kirby folder seems to be exposed",
- "system.issues.site": "The site folder seems to be exposed",
- "system.issues.vulnerability.kirby": "Your installation might be affected by the following vulnerability ({ severity } severity): { description }",
- "system.issues.vulnerability.plugin": "Your installation might be affected by the following vulnerability in the { plugin } plugin ({ severity } severity): { description }",
+ "system.issues.kirby": "De kirby map lijkt zichtbaar te zijn",
+ "system.issues.local": "The site is running locally with relaxed security checks",
+ "system.issues.site": "De site map lijkt zichtbaar te zijn",
+ "system.issues.vue.compiler": "The Vue template compiler is enabled",
+ "system.issues.vulnerability.kirby": "De installatie is mogelijk getroffen door de volgende kwetsbaarheid ({ severity } ernst): { description }",
+ "system.issues.vulnerability.plugin": "De installatie is mogelijk getroffen door de volgende kwetsbaarheid in plugin { plugin } ({ severity } ernst): { description }",
"system.updateStatus": "Update status",
- "system.updateStatus.error": "Could not check for updates",
- "system.updateStatus.not-vulnerable": "Geen gekende kwetsbaarheden",
+ "system.updateStatus.error": "Kan niet checken voor updates",
+ "system.updateStatus.not-vulnerable": "Geen bekende kwetsbaarheden",
"system.updateStatus.security-update": "Gratis veiligheids update { version } beschikbaar",
"system.updateStatus.security-upgrade": "Upgrade { version } met veiligheid aanpassingen beschikbaar",
"system.updateStatus.unreleased": "Niet vrijgegeven versie",
@@ -520,10 +694,19 @@
"system.updateStatus.update": "Gratis update { version } beschikbaar",
"system.updateStatus.upgrade": "Upgrade { version } beschikbaar",
- "title": "Titel",
+ "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",
+ "toolbar.button.clear": "Verwijder formattering",
"toolbar.button.code": "Code",
"toolbar.button.bold": "Dikgedrukte tekst",
"toolbar.button.email": "E-mailadres",
@@ -541,6 +724,8 @@
"toolbar.button.link": "Link",
"toolbar.button.paragraph": "Paragraaf",
"toolbar.button.strike": "Doorstreept",
+ "toolbar.button.sub": "Subscript",
+ "toolbar.button.sup": "Superscript",
"toolbar.button.ol": "Genummerde lijst",
"toolbar.button.underline": "Onderlijn",
"toolbar.button.ul": "Opsomming",
@@ -550,6 +735,8 @@
"translation.name": "Nederlands",
"translation.locale": "nl_NL",
+ "type": "Type",
+
"upload": "Upload",
"upload.error.cantMove": "Het geüploadde bestand kon niet worden verplaatst",
"upload.error.cantWrite": "Fout bij het schrijven van het bestand naar de schijf",
@@ -574,6 +761,7 @@
"user.changeLanguage": "Taal veranderen",
"user.changeName": "Gebruiker hernoemen",
"user.changePassword": "Wachtwoord wijzigen",
+ "user.changePassword.current": "Your current password",
"user.changePassword.new": "Nieuw wachtwoord",
"user.changePassword.new.confirm": "Bevestig het nieuwe wachtwoord...",
"user.changeRole": "Verander rol",
@@ -585,10 +773,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/kirby/i18n/translations/pl.json b/kirby/i18n/translations/pl.json
index 8fd5bac..ae5a73b 100644
--- a/kirby/i18n/translations/pl.json
+++ b/kirby/i18n/translations/pl.json
@@ -3,44 +3,60 @@
"account.delete": "Usuń swoje konto",
"account.delete.confirm": "Czy na pewno chcesz usunąć swoje konto? Zostaniesz natychmiast wylogowany. Twojego konta nie da się odzyskać.",
+ "activate": "Aktywuj",
"add": "Dodaj",
+ "alpha": "Alfa",
"author": "Autor",
- "avatar": "Zdjęcie profilowe",
+ "avatar": "Zdj\u0119cie profilowe",
"back": "Wróć",
"cancel": "Anuluj",
- "change": "Zmień",
+ "change": "Zmie\u0144",
"close": "Zamknij",
+ "changes": "Zmiany",
"confirm": "Ok",
"collapse": "Zwiń",
"collapse.all": "Zwiń wszystkie",
+ "color": "Kolor",
+ "coordinates": "Współrzędne",
"copy": "Kopiuj",
"copy.all": "Skopiuj wszystko",
+ "copy.success": "{count} skopiowanych!",
+ "copy.success.multiple": "{count} skopiowanych!",
+ "copy.url": "Copy URL",
"create": "Utwórz",
+ "custom": "Niestandardowe",
"date": "Data",
"date.select": "Wybierz datę",
"day": "Dzień",
"days.fri": "Pt",
- "days.mon": "Pon",
+ "days.mon": "Pn",
"days.sat": "Sb",
"days.sun": "Nd",
"days.thu": "Czw",
"days.tue": "Wt",
- "days.wed": "Śr",
+ "days.wed": "\u015ar",
"debugging": "Debugowanie",
- "delete": "Usuń",
+ "delete": "Usu\u0144",
"delete.all": "Usuń wszystkie",
+ "dialog.fields.empty": "To okno dialogowe nie zawiera żadnych pól",
"dialog.files.empty": "Brak plików do wyboru",
"dialog.pages.empty": "Brak stron do wyboru",
+ "dialog.text.empty": "To okno dialogowe nie definiuje żadnego tekstu",
"dialog.users.empty": "Brak użytkowników do wyboru",
"dimensions": "Wymiary",
+ "disable": "Wyłącz",
"disabled": "Wyłączone",
- "discard": "Odrzuć",
+ "discard": "Odrzu\u0107",
+
+ "drawer.fields.empty": "Ten panel nie zawiera żadnych pól",
+
+ "domain": "Domena",
"download": "Pobierz",
"duplicate": "Zduplikuj",
@@ -49,11 +65,13 @@
"email": "Email",
"email.placeholder": "mail@example.com",
+ "enter": "Wprowadź",
"entries": "Wpisy",
"entry": "Wpis",
"environment": "Środowisko",
+ "error": "Błąd",
"error.access.code": "Nieprawidłowy kod",
"error.access.login": "Nieprawidłowy login",
"error.access.panel": "Nie masz uprawnień by dostać się do panelu",
@@ -74,13 +92,31 @@
"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.entries.max.plural": "You must not add more than {max} entries",
+ "error.entries.max.singular": "You must not add more than one entry",
+ "error.entries.min.plural": "You must add at least {min} entries",
+ "error.entries.min.singular": "You must add at least one entry",
+ "error.entries.supports": "\"{type}\" field type is not supported for the entries field",
+ "error.entries.validation": "Wystąpił błąd w polu \"{field}\" w wierszu {index}",
+
"error.email.preset.notFound": "Nie udało się załadować wzorca wiadomości e-mail \"{name}\"",
"error.field.converter.invalid": "Nieprawidłowy konwerter \"{converter}\"",
+ "error.field.link.options": "Invalid options: {options}",
"error.field.type.missing": "Pole „{ name }”: Typ pola „{ type }” nie istnieje",
"error.file.changeName.empty": "Imię nie może być puste",
"error.file.changeName.permission": "Nie masz uprawnień, by zmienić nazwę \"{filename}\"",
+ "error.file.changeTemplate.invalid": "Szablonu pliku \"{id}\" nie można zmienić na \"{template}\" (poprawne: \"{blueprints}\")",
+ "error.file.changeTemplate.permission": "Nie masz uprawnień, by zmieniać szablon pliku \"{id}\"",
+
+ "error.file.delete.multiple": "Not all files could be deleted. Try each remaining file individually to see the specific error that prevents deletion.",
"error.file.duplicate": "Istnieje już plik o nazwie \"{filename}\"",
"error.file.extension.forbidden": "Rozszerzenie \"{extension}\" jest niedozwolone",
"error.file.extension.invalid": "Nieprawidłowe rozszerzenie: {extension}",
@@ -95,9 +131,11 @@
"error.file.minheight": "Wysokość obrazka musi wynosić co najmniej {height} pikseli",
"error.file.minsize": "Plik jest za mały",
"error.file.minwidth": "Szerokość obrazka musi wynosić co najmniej {width} pikseli",
+ "error.file.name.unique": "Nazwa pliku musi być unikalna",
"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",
@@ -106,22 +144,30 @@
"error.form.notSaved": "Nie udało się zapisać formularza",
"error.language.code": "Wprowadź poprawny kod języka.",
+ "error.language.create.permission": "You are not allowed to create a language",
+ "error.language.delete.permission": "You are not allowed to delete the language",
"error.language.duplicate": "Język już istnieje.",
"error.language.name": "Wprowadź poprawną nazwę języka.",
"error.language.notFound": "Język nie został odnaleziony",
+ "error.language.update.permission": "You are not allowed to update the language",
"error.layout.validation.block": "Wystąpił błąd w polu „{field}” w bloku {blockIndex} o typie bloku „{fieldset}” w układzie {layoutIndex}",
"error.layout.validation.settings": "W ustawieniach układu {index} jest błąd",
- "error.license.format": "Wprowadź poprawny klucz licencyjny",
+ "error.license.domain": "Brakuje domeny dla licencji",
"error.license.email": "Wprowadź poprawny adres email",
+ "error.license.format": "Please enter a valid license code",
"error.license.verification": "Nie udało się zweryfikować licencji",
+ "error.login.totp.confirm.invalid": "Nieprawidłowy kod",
+ "error.login.totp.confirm.missing": "Wpisz aktualny kod",
+
"error.object.validation": "Wystąpił błąd w polu „{label}”:\n{message}",
"error.offline": "Panel jest obecnie offline",
"error.page.changeSlug.permission": "Nie możesz zmienić końcówki adresu URL w \"{slug}\"",
+ "error.page.changeSlug.reserved": "Ścieżka stron najwyższego poziomu nie może zaczynać się od \"{path}\"",
"error.page.changeStatus.incomplete": "Strona zawiera błędy i nie można jej opublikować",
"error.page.changeStatus.permission": "Status tej strony nie może zostać zmieniony",
"error.page.changeStatus.toDraft.invalid": "Strony \"{slug}\" nie można przekonwertować na szkic",
@@ -133,10 +179,18 @@
"error.page.delete": "Strony \"{slug}\" nie można usunąć",
"error.page.delete.confirm": "Wprowadź tytuł strony, aby potwierdzić",
"error.page.delete.hasChildren": "Strona zawiera podstrony i nie można jej usunąć",
+ "error.page.delete.multiple": "Not all pages could be deleted. Try each remaining page individually to see the specific error that prevents deletion.",
"error.page.delete.permission": "Nie masz uprawnień, by usunąć \"{slug}\"",
"error.page.draft.duplicate": "Istnieje już szkic z końcówką URL \"{slug}\"",
"error.page.duplicate": "Istnieje już strona z końcówką URL \"{slug}\"",
"error.page.duplicate.permission": "Nie masz uprawnień, by zduplikować \"{slug}\"",
+ "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}\"",
"error.page.notFound": "Nie można znaleźć strony \"{slug}\"",
"error.page.num.invalid": "Wprowadź poprawny numer sortujący. Liczby nie mogą być ujemne.",
"error.page.slug.invalid": "Wprowadź poprawną końcówkę adresu URL",
@@ -163,6 +217,8 @@
"error.site.changeTitle.permission": "Nie masz uprawnień, by zmienić tytuł strony",
"error.site.update.permission": "Nie masz uprawnień, by zaktualizować stronę",
+ "error.structure.validation": "Wystąpił błąd w polu \"{field}\" w wierszu {index}",
+
"error.template.default.notFound": "Domyślny szablon nie istnieje",
"error.unexpected": "Wystąpił nieoczekiwany błąd! Włącz tryb debugowania, aby uzyskać więcej informacji: https://getkirby.com/docs/reference/system/options/debug",
@@ -195,8 +251,10 @@
"error.validation.accepted": "Proszę potwierdzić",
"error.validation.alpha": "Wprowadź tylko znaki między a-z",
"error.validation.alphanum": "Wprowadź tylko znaki między a-z lub cyfry 0-9",
+ "error.validation.anchor": "Wprowadź poprawny odnośnik",
"error.validation.between": "Wprowadź wartość między \"{min}\" i \"{max}\"",
"error.validation.boolean": "Potwierdź lub odmów",
+ "error.validation.color": "Wprowadź poprawny kolor w formacie {format}",
"error.validation.contains": "Wprowadź wartość, która zawiera \"{needle}\"",
"error.validation.date": "Wprowadź poprawną datę",
"error.validation.date.after": "Wprowadź datę późniejszą niż {date}",
@@ -211,6 +269,7 @@
"error.validation.integer": "Wprowadź poprawną liczbę całkowitą",
"error.validation.ip": "Wprowadź poprawny adres IP",
"error.validation.less": "Wprowadź wartość mniejszą niż {max}",
+ "error.validation.linkType": "Typ łącza jest niedozwolony",
"error.validation.match": "Wartość nie jest zgodna z oczekiwanym wzorcem",
"error.validation.max": "Wprowadź wartość równą lub mniejszą niż {max}",
"error.validation.maxlength": "Wprowadź krótszą wartość. (maks. {max} znaków)",
@@ -227,15 +286,18 @@
"error.validation.same": "Wprowadź \"{other}\"",
"error.validation.size": "Rozmiar wartości musi wynosić \"{size}\"",
"error.validation.startswith": "Wartość musi zaczynać się od \"{start}\"",
+ "error.validation.tel": "Wprowadź niesformatowany numer telefonu",
"error.validation.time": "Wprowadź poprawny czas",
"error.validation.time.after": "Wprowadź czas późniejszy niż {time}",
"error.validation.time.before": "Wprowadź czas wcześniejszy niż {time}",
"error.validation.time.between": "Wprowadź czas między {min} a {max}",
+ "error.validation.uuid": "Wprowadź prawidłowy identyfikator UUID",
"error.validation.url": "Wprowadź poprawny adres URL",
"expand": "Rozwiń",
"expand.all": "Rozwiń wszystkie",
+ "field.invalid": "Pole jest nieprawidłowe",
"field.required": "Pole jest wymagane",
"field.blocks.changeType": "Zmień typ",
"field.blocks.code.name": "Kod",
@@ -245,8 +307,9 @@
"field.blocks.delete.confirm.all": "Czy na pewno chcesz usunąć wszystkie bloki?",
"field.blocks.delete.confirm.selected": "Czy na pewno chcesz usunąć wszystkie wybrane bloki?",
"field.blocks.empty": "Nie ma jeszcze żadnych bloków",
+ "field.blocks.fieldsets.empty": "Nie ma jeszcze zestawów pól",
"field.blocks.fieldsets.label": "Wybierz typ bloku …",
- "field.blocks.fieldsets.paste": "Wciśnij {{ shortcut }} by wkleić/zaimportować bloki ze schowka",
+ "field.blocks.fieldsets.paste": "Naciśnij {{ shortcut }}, aby zaimportować układy/bloki ze schowka. Zostaną wstawione tylko te, które są dozwolone w bieżącym polu.",
"field.blocks.gallery.name": "Galeria",
"field.blocks.gallery.images.empty": "Nie ma jeszcze żadnych obrazków",
"field.blocks.gallery.images.label": "Obrazki",
@@ -254,11 +317,16 @@
"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",
"field.blocks.image.link": "Link",
"field.blocks.image.location": "Lokalizacja",
+ "field.blocks.image.location.internal": "Ta witryna",
+ "field.blocks.image.location.external": "Zewnętrzne źródło",
"field.blocks.image.name": "Obrazek",
"field.blocks.image.placeholder": "Wybierz obrazek",
"field.blocks.image.ratio": "Proporcje",
@@ -275,38 +343,72 @@
"field.blocks.quote.citation.placeholder": "autorstwa …",
"field.blocks.text.name": "Tekst",
"field.blocks.text.placeholder": "Tekst …",
+ "field.blocks.video.autoplay": "Autoplay",
"field.blocks.video.caption": "Podpis",
+ "field.blocks.video.controls": "Controls",
+ "field.blocks.video.location": "Lokalizacja",
+ "field.blocks.video.loop": "Loop",
+ "field.blocks.video.muted": "Muted",
"field.blocks.video.name": "Video",
"field.blocks.video.placeholder": "Wprowadź URL video",
+ "field.blocks.video.poster": "Poster",
+ "field.blocks.video.preload": "Preload",
"field.blocks.video.url.label": "URL video",
"field.blocks.video.url.placeholder": "https://youtube.com/?v=",
- "field.files.empty": "Nie wybrano jeszcze żadnych plików",
+ "field.entries.delete.confirm.all": "Czy na pewno chcesz usunąć wszystkie wpisy?",
+ "field.entries.empty": "Nie ma jeszcze żadnych wpisów.",
+ "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",
"field.layout.delete.confirm": "Czy na pewno chcesz usunąć ten układ?",
+ "field.layout.delete.confirm.all": "Czy na pewno chcesz usunąć wszystkie układy?",
"field.layout.empty": "Nie ma jeszcze żadnych rzędów",
"field.layout.select": "Wybierz układ",
"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 żadnych wpisów.",
+ "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",
+
+ "file": "Plik",
"file.blueprint": "Ten plik nie ma jeszcze wzorca. Możesz go zdefiniować w /site/blueprints/files/{blueprint}.yml",
+ "file.changeTemplate": "Zmień szablon",
+ "file.changeTemplate.notice": "Zmiana szablonu pliku spowoduje usunięcie zawartości pól, które nie pasują pod względem typu. Jeżeli nowy szablon określa pewne zasady, np. wymiarów obrazu, one również zostaną zastosowane nieodwracalnie. Używaj ostrożnie.",
"file.delete.confirm": "Czy na pewno chcesz usunąć
{filename}?",
+ "file.focus.placeholder": "Ustaw punkt centralny",
+ "file.focus.reset": "Usuń punkt centralny",
+ "file.focus.title": "Punkt centralny",
"file.sort": "Zmień pozycję",
"files": "Pliki",
+ "files.delete.confirm.selected": "Do you really want to delete the selected files? This action cannot be undone.",
"files.empty": "Nie ma jeszcze żadnych plików",
+ "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ń",
"import": "Importuj",
"info": "Informacje",
"insert": "Wstaw",
@@ -324,14 +426,14 @@
"installation.issues.mbstring": "Wymagane jest rozszerzenie MB String
",
"installation.issues.media": "Folder /media
nie istnieje lub nie ma uprawnień do zapisu",
"installation.issues.php": "Upewnij się, że używasz PHP 8+
",
- "installation.issues.server": "Kirby wymaga Apache
, Nginx
lub Caddy
",
"installation.issues.sessions": "Folder /site/sessions
nie istnieje lub nie ma uprawnień do zapisu",
- "language": "Język",
+ "language": "J\u0119zyk",
"language.code": "Kod",
"language.convert": "Ustaw jako domyślny",
"language.convert.confirm": "{secret}
do aplikacji uwierzytelniającej.",
+ "login.totp.enable.confirm.headline": "2. Potwierdź wygenerowanym kodem",
+ "login.totp.enable.confirm.text": "Aplikacja generuje nowy kod jednorazowy co 30 sekund. Wprowadź aktualny kod, aby dokończyć konfigurację:",
+ "login.totp.enable.confirm.label": "Aktualny kod",
+ "login.totp.enable.confirm.help": "Po tej konfiguracji będziemy prosić o jednorazowy kod przy każdym logowaniu.",
+ "login.totp.enable.success": "Kody jednorazowe włączone",
+ "login.totp.disable.option": "Wyłącz kody jednorazowe",
+ "login.totp.disable.label": "Wprowadź swoje hasło, aby wyłączyć kody jednorazowe",
+ "login.totp.disable.help": "W przyszłości podczas logowania wymagany będzie inny drugi czynnik, taki jak kod logowania wysłany emailem. Kody jednorazowe możesz zawsze skonfigurować później.",
+ "login.totp.disable.admin": "
Wszystkie podstrony również zostaną usunięte.",
"page.delete.confirm.title": "Wprowadź tytuł strony, aby potwierdzić",
- "page.draft.create": "Utwórz szkic",
"page.duplicate.appendix": "Kopiuj",
"page.duplicate.files": "Kopiuj pliki",
"page.duplicate.pages": "Kopiuj strony",
+ "page.move": "Przenieś stronę",
"page.sort": "Zmień pozycję",
"page.status": "Status",
"page.status.draft": "Szkic",
@@ -450,6 +604,7 @@
"page.status.unlisted.description": "Strona jest dostępna tylko za pośrednictwem adresu URL",
"pages": "Strony",
+ "pages.delete.confirm.selected": "Do you really want to delete the selected pages? This action cannot be undone.",
"pages.empty": "Nie ma jeszcze żadnych stron",
"pages.status.draft": "Szkice",
"pages.status.listed": "Opublikowane",
@@ -457,19 +612,26 @@
"pagination.page": "Strona",
- "password": "Hasło",
+ "password": "Has\u0142o",
"paste": "Wklej",
"paste.after": "Wklej po",
+ "paste.success": "{count} wklejonych!",
"pixel": "Piksel",
"plugin": "Wtyczka",
"plugins": "Wtyczki",
"prev": "Poprzednie",
"preview": "Podgląd",
+
+ "publish": "Publish",
+ "published": "Opublikowane",
+
"remove": "Usuń",
"rename": "Zmień nazwę",
- "replace": "Zastąp",
- "retry": "Ponów próbę",
- "revert": "Odrzuć",
+ "renew": "Odnów",
+ "replace": "Zamie\u0144",
+ "replace.with": "Zamień z",
+ "retry": "Pon\u00f3w pr\u00f3b\u0119",
+ "revert": "Odrzu\u0107",
"revert.confirm": "Czy na pewno chcesz usunąć wszystkie niezapisane zmiany?",
"role": "Rola",
@@ -482,11 +644,14 @@
"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ż wzystkie",
+ "search.all": "Pokaż wszystkie {count} wyniki/-ów",
"search.results.none": "Brak wyników",
+ "section.invalid": "Sekcja jest nieprawidłowa",
"section.required": "Sekcja jest wymagana",
"security": "Bezpieczeństwo",
@@ -498,16 +663,25 @@
"size": "Rozmiar",
"slug": "Końcówka URL",
"sort": "Sortuj",
+ "sort.drag": "Przeciągnij, aby posortować…",
+ "split": "Podziel",
"stats.empty": "Brak raportów",
+ "status": "Status",
+
+ "system.info.copy": "Copy info",
+ "system.info.copied": "System info copied",
"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ń",
+ "system.issues.eol.php": "Zainstalowana wersja PHP { release } osiągnęła koniec okresu eksploatacji i nie będzie otrzymywać dalszych aktualizacji zabezpieczeń.",
"system.issues.debug": "Debugowanie musi być wyłączone w środowisku produkcyjnym",
"system.issues.git": "Zdaje się, że folder „.git” jest wystawiony na publiczny dostęp",
"system.issues.https": "Zalecamy HTTPS dla wszystkich Twoich witryn",
"system.issues.kirby": "Zdaje się, że folder „kirby” jest wystawiony na publiczny dostęp",
+ "system.issues.local": "The site is running locally with relaxed security checks",
"system.issues.site": "Zdaje się, że folder „site” jest wystawiony na publiczny dostęp",
+ "system.issues.vue.compiler": "The Vue template compiler is enabled",
"system.issues.vulnerability.kirby": "Twojej instalacji może zagrażać następująca luka w zabezpieczeniach ({ severity } stopień): { description }",
"system.issues.vulnerability.plugin": "Twojej instalacji może zagrażać następująca luka w zabezpieczeniach we wtyczce { plugin } ({ severity } poziom): { description }",
"system.updateStatus": "Stan aktualizacji",
@@ -520,10 +694,19 @@
"system.updateStatus.update": "Dostępna darmowa aktualizacja { version }",
"system.updateStatus.upgrade": "Dostępna aktualizacja { version }",
- "title": "Tytuł",
+ "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",
+ "toolbar.button.clear": "Wyczyść formatowanie",
"toolbar.button.code": "Kod",
"toolbar.button.bold": "Pogrubienie",
"toolbar.button.email": "Email",
@@ -541,6 +724,8 @@
"toolbar.button.link": "Link",
"toolbar.button.paragraph": "Akapit",
"toolbar.button.strike": "Przekreślenie",
+ "toolbar.button.sub": "Indeks dolny",
+ "toolbar.button.sup": "Indeks górny",
"toolbar.button.ol": "Lista numerowana",
"toolbar.button.underline": "Podkreślenie",
"toolbar.button.ul": "Lista wypunktowana",
@@ -550,6 +735,8 @@
"translation.name": "Polski",
"translation.locale": "pl_PL",
+ "type": "Typ",
+
"upload": "Prześlij",
"upload.error.cantMove": "Przesłany plik nie mógł być przeniesiony",
"upload.error.cantWrite": "Nie udało się zapisać pliku na dysku",
@@ -574,6 +761,7 @@
"user.changeLanguage": "Zmień język",
"user.changeName": "Zmień nazwę tego użytkownika",
"user.changePassword": "Zmień hasło",
+ "user.changePassword.current": "Your current password",
"user.changePassword.new": "Nowe hasło",
"user.changePassword.new.confirm": "Potwierdź nowe hasło…",
"user.changeRole": "Zmień rolę",
@@ -585,17 +773,20 @@
"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",
"view.resetPassword": "Zresetuj hasło",
"view.site": "Strona",
"view.system": "System",
- "view.users": "Użytkownicy",
+ "view.users": "U\u017cytkownicy",
"welcome": "Witaj",
"year": "Rok",
diff --git a/kirby/i18n/translations/pt_BR.json b/kirby/i18n/translations/pt_BR.json
index 379711a..aba221d 100644
--- a/kirby/i18n/translations/pt_BR.json
+++ b/kirby/i18n/translations/pt_BR.json
@@ -3,30 +3,39 @@
"account.delete": "Deletar sua conta",
"account.delete.confirm": "Deseja realmente deletar sua conta? Você sairá do site imediatamente. Sua conta não poderá ser recuperada. ",
- "add": "Add",
+ "activate": "Ativar",
+ "add": "Adicionar",
+ "alpha": "Alpha",
"author": "Autor",
"avatar": "Foto do perfil",
- "back": "Back",
- "cancel": "Cancel",
+ "back": "Voltar",
+ "cancel": "Cancelar",
"change": "Alterar",
- "close": "Close",
+ "close": "Fechar",
+ "changes": "Alterações",
"confirm": "Salvar",
"collapse": "Colapsar",
"collapse.all": "Colapsar todos",
+ "color": "Cor",
+ "coordinates": "Coordenadas",
"copy": "Copiar",
"copy.all": "Copiar todos",
+ "copy.success": "{count} copiados!",
+ "copy.success.multiple": "{count} copiados!",
+ "copy.url": "Copiar URL",
"create": "Criar",
+ "custom": "Personalizado",
"date": "Data",
"date.select": "Selecione uma data",
"day": "Dia",
"days.fri": "Sex",
- "days.mon": "Mon",
- "days.sat": "Sáb",
+ "days.mon": "Seg",
+ "days.sat": "S\u00e1b",
"days.sun": "Dom",
"days.thu": "Qui",
- "days.tue": "Tue",
+ "days.tue": "Ter",
"days.wed": "Qua",
"debugging": "Depuração ",
@@ -34,26 +43,35 @@
"delete": "Deletar",
"delete.all": "Deletar todos",
+ "dialog.fields.empty": "Esta caixa de diálogo não tem campos",
"dialog.files.empty": "Nenhum arquivo para selecionar",
"dialog.pages.empty": "Nenhuma página para selecionar",
+ "dialog.text.empty": "Esta caixa de diálogo não define nenhum texto",
"dialog.users.empty": "Nenhum usuário para selecionar",
"dimensions": "Dimensões",
+ "disable": "Desativar",
"disabled": "Desativado",
- "discard": "Discard",
+ "discard": "Descartar",
+
+ "drawer.fields.empty": "Esta janela não tem campos",
+
+ "domain": "Domínio",
"download": "Baixar",
"duplicate": "Duplicar",
- "edit": "Edit",
+ "edit": "Editar",
"email": "Email",
- "email.placeholder": "mail@exemplo.pt",
+ "email.placeholder": "mail@exemplo.com",
- "entries": "Entries",
- "entry": "Entry",
+ "enter": "Insira",
+ "entries": "Registos",
+ "entry": "Registo",
"environment": "Ambiente",
+ "error": "Erro",
"error.access.code": "Código inválido",
"error.access.login": "Código de acesso inválido",
"error.access.panel": "Você não tem permissão para acessar o painel",
@@ -70,17 +88,35 @@
"error.blocks.max.singular": "Você não deve adicionar mais do que um bloco",
"error.blocks.min.plural": "Você deve adicionar pelo menos {min} blocos",
"error.blocks.min.singular": "Você deve adicionar pelo menos um bloco",
- "error.blocks.validation": "There's an error on the \"{field}\" field in block {index} using the \"{fieldset}\" block type",
+ "error.blocks.validation": "Há um erro no campo \"{field}\" no bloco {index} a usar o tipo de bloco \"{fieldset}\"",
- "error.cache.type.invalid": "Invalid cache type \"{type}\"",
+ "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.entries.max.plural": "Não deve adicionar mais do que {max} entradas",
+ "error.entries.max.singular": "Não deve adicionar mais do que uma entrada",
+ "error.entries.min.plural": "Deve adicionar pelo menos {min} entradas",
+ "error.entries.min.singular": "Deve adicionar pelo menos uma entrada",
+ "error.entries.supports": "O tipo de campo \"{type}\" não é compatível com o campo entries",
+ "error.entries.validation": "Existe um erro no campo \"{field}\" na linha {index}",
"error.email.preset.notFound": "Pré-configuração de email \"{name}\" não foi encontrada",
"error.field.converter.invalid": "Conversor \"{converter}\" inválido",
- "error.field.type.missing": "Field \"{ name }\": The field type \"{ type }\" does not exist",
+ "error.field.link.options": "Opções inválidas: {options}",
+ "error.field.type.missing": "Campo \"{name}\": O tipo de campo \"{type}\" não existe",
"error.file.changeName.empty": "O nome não deve ficar em branco",
"error.file.changeName.permission": "Você não tem permissão para alterar o nome de \"{filename}\"",
+ "error.file.changeTemplate.invalid": "O template para o ficheiro \"{id}\" não pode ser alterado para \"{template}\" (válido: \"{blueprints}\")",
+ "error.file.changeTemplate.permission": "Não tem permissão para alterar o template do ficheiro \"{id}\"",
+
+ "error.file.delete.multiple": "Nem todos os ficheiros puderam ser eliminados. Experimente cada ficheiro restante individualmente para ver o erro específico que impede a sua eliminação.",
"error.file.duplicate": "Um arquivo com o nome \"{filename}\" já existe",
"error.file.extension.forbidden": "Extensão \"{extension}\" não permitida",
"error.file.extension.invalid": "Extensão inválida: {extension}",
@@ -95,33 +131,43 @@
"error.file.minheight": "A altura da imagem deve ser pelo menos {height} pixels",
"error.file.minsize": "O arquivo é pequeno demais",
"error.file.minwidth": "A largura da imagem deve ser pelo menos {width} pixels",
+ "error.file.name.unique": "O nome do ficheiro deve ser único",
"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ão encontrado",
+ "error.file.undefined": "Arquivo n\u00e3o encontrado",
"error.form.incomplete": "Por favor, corrija os erros do formulário…",
"error.form.notSaved": "O formulário não pôde ser salvo",
"error.language.code": "Por favor entre um código válido para o idioma",
+ "error.language.create.permission": "Não tem permissões para criar um idioma",
+ "error.language.delete.permission": "Não tem permissões para eliminar o idioma",
"error.language.duplicate": "O idioma já existe",
"error.language.name": "Por favor entre um nome válido para o idioma",
"error.language.notFound": "O idioma não foi encontrado",
+ "error.language.update.permission": "Não tem permissões para atualizar o idioma",
- "error.layout.validation.block": "There's an error on the \"{field}\" field in block {blockIndex} using the \"{fieldset}\" block type in layout {layoutIndex}",
+ "error.layout.validation.block": "Há um erro no campo \"{field}\" no bloco {blockIndex} a usar o tipo de bloco \"{fieldset}\" no layout {layoutIndex}",
"error.layout.validation.settings": "Há um erro na configuração do layout {index}",
- "error.license.format": "Por favor entre uma chave de licensa válida ",
+ "error.license.domain": "O domínio da licença está em falta",
"error.license.email": "Digite um endereço de email válido",
+ "error.license.format": "Por favor insira um código de licença válido",
"error.license.verification": "A licensa não pôde ser verificada",
- "error.object.validation": "There’s an error in the \"{label}\" field:\n{message}",
+ "error.login.totp.confirm.invalid": "Código inválido",
+ "error.login.totp.confirm.missing": "Por favor insira o código atual",
+
+ "error.object.validation": "Há um erro no campo \"{label}\":\n{message}",
"error.offline": "O painel está offline no momento",
"error.page.changeSlug.permission": "Você não tem permissão para alterar o anexo de URL de \"{slug}\"",
+ "error.page.changeSlug.reserved": "O caminho das páginas de nível superior não deve começar com \"{path}\"",
"error.page.changeStatus.incomplete": "A página possui erros e não pode ser salva",
"error.page.changeStatus.permission": "O estado desta página não pode ser alterado",
"error.page.changeStatus.toDraft.invalid": "A página \"{slug}\" não pode ser convertida para rascunho",
@@ -133,17 +179,25 @@
"error.page.delete": "A página \"{slug}\" não pode ser deletada",
"error.page.delete.confirm": "Por favor, digite o título da página para confirmar",
"error.page.delete.hasChildren": "A página possui subpáginas e não pode ser deletada",
+ "error.page.delete.multiple": "Nem todas as páginas puderam ser eliminadas. Experimente cada página restante individualmente para ver o erro específico que impede a sua eliminação.",
"error.page.delete.permission": "Você não tem permissão para deletar \"{slug}\"",
"error.page.draft.duplicate": "Uma página rascunho com um anexo de URL \"{slug}\" já existe",
"error.page.duplicate": "Uma página com o anexo de URL \"{slug}\" já existe",
"error.page.duplicate.permission": "Você não tem permissão para duplicar “{slug}”",
+ "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}\"",
"error.page.notFound": "Página \"{slug}\" não encontrada",
"error.page.num.invalid": "Digite um número de ordenação válido. Este número não pode ser negativo.",
"error.page.slug.invalid": "Por favor entre um anexo de URL válido ",
"error.page.slug.maxlength": "O slug deve ter menos de “{length}” caracteres",
"error.page.sort.permission": "A página \"{slug}\" não pode ser ordenada",
"error.page.status.invalid": "Por favor, defina um estado de página válido",
- "error.page.undefined": "Página não encontrada",
+ "error.page.undefined": "P\u00e1gina n\u00e3o encontrada",
"error.page.update.permission": "Você não tem permissão para atualizar \"{slug}\"",
"error.section.files.max.plural": "Você não pode adicionar mais do que {max} arquivos à seção \"{section}\"",
@@ -163,9 +217,11 @@
"error.site.changeTitle.permission": "Você não tem permissão para alterar o título do site",
"error.site.update.permission": "Você não tem permissão para atualizar o site",
+ "error.structure.validation": "Existe um erro no campo \"{field}\" na linha {index}",
+
"error.template.default.notFound": "O tema padrão não existe",
- "error.unexpected": "An unexpected error occurred! Enable debug mode for more info: https://getkirby.com/docs/reference/system/options/debug",
+ "error.unexpected": "Ocorreu um erro inesperado! Ative o modo de debug para obter mais informações: https://getkirby.com/docs/reference/system/options/debug",
"error.user.changeEmail.permission": "Você não tem permissão para alterar o email do usuário \"{name}\"",
"error.user.changeLanguage.permission": "Você não tem permissão para alterar o idioma do usuário \"{name}\"",
@@ -183,7 +239,7 @@
"error.user.email.invalid": "Digite um endereço de email válido",
"error.user.language.invalid": "Digite um idioma válido",
"error.user.notFound": "Usuário \"{name}\" não encontrado",
- "error.user.password.excessive": "Please enter a valid password. Passwords must not be longer than 1000 characters.",
+ "error.user.password.excessive": "Por favor insira uma palavra-passe válida. As palavras-passe não devem ter mais do que 1000 caracteres.",
"error.user.password.invalid": "Digite uma senha válida. Sua senha deve ter pelo menos 8 caracteres.",
"error.user.password.notSame": "As senhas não combinam",
"error.user.password.undefined": "O usuário não possui uma senha",
@@ -195,8 +251,10 @@
"error.validation.accepted": "Por favor, confirme",
"error.validation.alpha": "Por favor, use apenas caracteres entre a-z",
"error.validation.alphanum": "Por favor, use apenas caracteres entre a-z ou 0-9",
+ "error.validation.anchor": "Por favor insira uma âncora de link correta",
"error.validation.between": "Digite um valor entre \"{min}\" e \"{max}\"",
"error.validation.boolean": "Por favor, confirme ou rejeite",
+ "error.validation.color": "Por favor, insira uma cor válida no formato {format}",
"error.validation.contains": "Digite um valor que contenha \"{needle}\"",
"error.validation.date": "Escolha uma data válida",
"error.validation.date.after": "Por favor entre uma data depois de {date}",
@@ -211,6 +269,7 @@
"error.validation.integer": "Digite um número inteiro válido",
"error.validation.ip": "Digite um endereço de IP válido",
"error.validation.less": "Digite um valor menor que {max}",
+ "error.validation.linkType": "O tipo de link não é permitido",
"error.validation.match": "O valor não combina com o padrão esperado",
"error.validation.max": "Digite um valor igual ou menor que {max}",
"error.validation.maxlength": "Digite um valor curto. (no máximo {max} caracteres)",
@@ -227,15 +286,18 @@
"error.validation.same": "Por favor, digite \"{other}\"",
"error.validation.size": "O tamanho do valor deve ser \"{size}\"",
"error.validation.startswith": "O valor deve começar com \"{start}\"",
+ "error.validation.tel": "Por favor, insira um número de telefone não formatado",
"error.validation.time": "Digite um horário válido",
"error.validation.time.after": "Por favor entre um horário depois de {time}",
"error.validation.time.before": "Por favor entre um horário antes de {time}",
"error.validation.time.between": "Por favor entre um horário entre {min} e {max}",
+ "error.validation.uuid": "Por favor, insira um UUID válido",
"error.validation.url": "Digite uma URL válida",
"expand": "Expandir",
"expand.all": "Expandir todos",
+ "field.invalid": "O campo é inválido",
"field.required": "Este campo é obrigatório ",
"field.blocks.changeType": "Mudar tipo",
"field.blocks.code.name": "Código",
@@ -245,8 +307,9 @@
"field.blocks.delete.confirm.all": "Deseja realmente deletar todos os blocos?",
"field.blocks.delete.confirm.selected": "Deseja realmente deletar os blocos selecionados?",
"field.blocks.empty": "Nenhum bloco",
+ "field.blocks.fieldsets.empty": "Ainda não há tipos de blocos",
"field.blocks.fieldsets.label": "Por favor selecione um tipo de bloco …",
- "field.blocks.fieldsets.paste": "Digite {{ shortcut }} para colar/importar blocos da sua área de transferência ",
+ "field.blocks.fieldsets.paste": "Pressione {{ shortcut }} para importar layouts/blocks da sua área de transferência Só serão inseridos aqueles permitidos no campo atual.",
"field.blocks.gallery.name": "Galeria",
"field.blocks.gallery.images.empty": "Nenhuma imagem",
"field.blocks.gallery.images.label": "Imagens",
@@ -254,11 +317,16 @@
"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",
"field.blocks.image.link": "Link",
"field.blocks.image.location": "Localização ",
+ "field.blocks.image.location.internal": "Este website",
+ "field.blocks.image.location.external": "Fonte externa",
"field.blocks.image.name": "Imagem",
"field.blocks.image.placeholder": "Selecionar uma imagem",
"field.blocks.image.ratio": "Proporção ",
@@ -275,38 +343,72 @@
"field.blocks.quote.citation.placeholder": "de …",
"field.blocks.text.name": "Texto",
"field.blocks.text.placeholder": "Texto …",
+ "field.blocks.video.autoplay": "Reprodução automática",
"field.blocks.video.caption": "Legenda",
+ "field.blocks.video.controls": "Controlos",
+ "field.blocks.video.location": "Localização ",
+ "field.blocks.video.loop": "Repetir",
+ "field.blocks.video.muted": "Sem som",
"field.blocks.video.name": "Vídeo ",
"field.blocks.video.placeholder": "Entre uma URL de vídeo ",
+ "field.blocks.video.poster": "Poster",
+ "field.blocks.video.preload": "Pré-carregamento",
"field.blocks.video.url.label": "URL-Vídeo",
"field.blocks.video.url.placeholder": "https://youtube.com/?v=",
- "field.files.empty": "Nenhum arquivo selecionado",
+ "field.entries.delete.confirm.all": "Tem a certeza que pretende eliminar todos os registos?",
+ "field.entries.empty": "Nenhum registro",
+ "field.files.empty": "Nenhum arquivo selecionado",
+ "field.files.empty.single": "Nenhum ficheiro selecionado ainda",
+
+ "field.layout.change": "Alterar layout",
"field.layout.delete": "Deletar layout",
"field.layout.delete.confirm": "Deseja realmente deletar este layout?",
+ "field.layout.delete.confirm.all": "Tem a certeza que pretende remover todos os layouts?",
"field.layout.empty": "Nenhuma linha",
"field.layout.select": "Selecionar um layout",
- "field.object.empty": "No information yet",
+ "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": "Do you really want to delete all entries?",
+ "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",
+
+ "file": "Ficheiro",
"file.blueprint": "Este arquivo não tem planta. Você pode definir sua planta em /site/blueprints/files/{blueprint}.yml",
+ "file.changeTemplate": "Alterar tema",
+ "file.changeTemplate.notice": "Alterar o template do ficheiro irá remover o conteúdo dos campos que não correspondem ao mesmo tipo. Se o novo template definir certas regras, por exemplo dimensões de imagem, estas também serão aplicadas irreversivelmente. Use com cuidado.",
"file.delete.confirm": "Deseja realmente deletar
{filename}?",
+ "file.focus.placeholder": "Definir ponto de foco",
+ "file.focus.reset": "Remover ponto de foco",
+ "file.focus.title": "Foco",
"file.sort": "Mudar posição",
"files": "Arquivos",
+ "files.delete.confirm.selected": "Tem a certeza que pretende eliminar os ficheiros selecionados? Esta ação não pode ser revertida.",
"files.empty": "Nenhum arquivo",
+ "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",
"import": "Importar",
"info": "Info",
"insert": "Inserir",
@@ -324,7 +426,6 @@
"installation.issues.mbstring": "A extensão MB String
é necessária",
"installation.issues.media": "A pasta /media
não existe ou não possui permissão de escrita",
"installation.issues.php": "Certifique-se que você está usando o PHP 8+
",
- "installation.issues.server": "Kirby necessita do Apache
, Nginx
ou Caddy
",
"installation.issues.sessions": "A pasta /site/sessions
não existe ou não possui permissão de escrita",
"language": "Idioma",
@@ -332,6 +433,7 @@
"language.convert": "Tornar padrão",
"language.convert.confirm": "{secret}
manualmente à sua aplicação de autenticação.",
+ "login.totp.enable.confirm.headline": "2. Confirme com o código gerado",
+ "login.totp.enable.confirm.text": "A sua aplicação gera um novo código único a cada 30 segundos. Insira o código atual para concluir a configuração:",
+ "login.totp.enable.confirm.label": "Código atual",
+ "login.totp.enable.confirm.help": "Após esta configuração, iremos solicitar um código único sempre que iniciar a sessão.",
+ "login.totp.enable.success": "Códigos únicos ativados",
+ "login.totp.disable.option": "Desativar códigos únicos",
+ "login.totp.disable.label": "Insira a sua palavra-passe para desativar códigos únicos",
+ "login.totp.disable.help": "No futuro, um segundo fator diferente, como um código de início de sessão enviado por e-mail, será solicitado quando iniciar a sessão. Poderá configurar códigos únicos novamente mais tarde.",
+ "login.totp.disable.admin": "Isto irá desactivar os códigos únicos para {user}. No futuro, um segundo fator diferente, como um código de início de sessão enviado por e-mail, será solicitado quando eles iniciarem a sessão. {user} poderá configurar códigos únicos novamente após o próximo início de sessão.",
+ "login.totp.disable.success": "Códigos únicos desativados",
- "logout": "Log out",
+ "logout": "Sair",
+ "merge": "Unir",
"menu": "Menu",
"meridiem": "AM/PM",
"mime": "Tipo de mídia",
"minutes": "Minutos",
"month": "Mês",
- "months.april": "April",
+ "months.april": "Abril",
"months.august": "Agosto",
- "months.december": "December",
+ "months.december": "Dezembro",
"months.february": "Fevereiro",
"months.january": "Janeiro",
"months.july": "Julho",
- "months.june": "June",
- "months.march": "Março",
+ "months.june": "Junho",
+ "months.march": "Mar\u00e7o",
"months.may": "Maio",
"months.november": "Novembro",
"months.october": "Outubro",
"months.september": "Setembro",
"more": "Mais",
+ "move": "Mover",
"name": "Nome",
"next": "Próximo",
+ "night": "Noite",
"no": "não",
"off": "não",
"on": "sim",
"open": "Abrir",
"open.newWindow": "Abrir em nova janela",
+ "option": "Opção",
"options": "Opções",
"options.none": "Nenhuma opção",
+ "options.all": "Mostrar todas as {count} opções",
"orientation": "Orientação",
"orientation.landscape": "Paisagem",
"orientation.portrait": "Retrato",
"orientation.square": "Quadrado",
+ "page": "Página",
"page.blueprint": "Esta página não tem planta. Você pode definir sua planta em /site/blueprints/pages/{blueprint}.yml",
"page.changeSlug": "Alterar URL",
- "page.changeSlug.fromTitle": "Criar a partir do título",
+ "page.changeSlug.fromTitle": "Criar a partir do t\u00edtulo",
"page.changeStatus": "Alterar estado",
"page.changeStatus.position": "Selecione uma posição",
"page.changeStatus.select": "Selecione um novo estado",
"page.changeTemplate": "Alterar tema",
+ "page.changeTemplate.notice": "Alterar o template da página irá remover o conteúdo dos campos que não correspondem ao mesmo tipo. Use com cuidado.",
+ "page.create": "Criar como {status}",
"page.delete.confirm": "Deseja realmente deletar {title}?",
"page.delete.confirm.subpages": "Esta página possui subpáginas.
Todas as subpáginas serão excluídas também.",
"page.delete.confirm.title": "Digite o título da página para confirmar",
- "page.draft.create": "Criar rascunho",
"page.duplicate.appendix": "Copiar",
"page.duplicate.files": "Copiar arquivos",
"page.duplicate.pages": "Copiar páginas",
+ "page.move": "Mover página",
"page.sort": "Mudar posição",
"page.status": "Estado",
"page.status.draft": "Rascunho",
@@ -449,7 +603,8 @@
"page.status.unlisted": "Não listadas",
"page.status.unlisted.description": "Esta página é acessível somente através da URL",
- "pages": "Pages",
+ "pages": "Páginas",
+ "pages.delete.confirm.selected": "Tem a certeza que pretende eliminar as páginas selecionadas? Esta ação não pode ser revertida.",
"pages.empty": "Nenhuma página",
"pages.status.draft": "Rascunhos",
"pages.status.listed": "Publicadas",
@@ -460,19 +615,26 @@
"password": "Senha",
"paste": "Colar",
"paste.after": "Colar após",
+ "paste.success": "{count} colados!",
"pixel": "Pixel",
"plugin": "Plugin",
"plugins": "Plugins",
"prev": "Anterior",
"preview": "Visualizar",
+
+ "publish": "Publicar",
+ "published": "Publicadas",
+
"remove": "Remover",
"rename": "Renomear",
- "replace": "Replace",
+ "renew": "Renovar",
+ "replace": "Substituir",
+ "replace.with": "Substituir por",
"retry": "Tentar novamente",
"revert": "Descartar",
"revert.confirm": "Deseja realmente deletar todas as mudanças não salvas?",
- "role": "Função",
+ "role": "Papel",
"role.admin.description": "O administrador tem todos os direitos",
"role.admin.title": "Administrador",
"role.all": "Todos",
@@ -482,14 +644,17 @@
"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",
+ "search.all": "Mostrar todos os {count} resultados",
"search.results.none": "Nenhum resultado",
+ "section.invalid": "A secção é inválida",
"section.required": "Esta seção é obrigatória",
- "security": "Security",
+ "security": "Segurança",
"select": "Selecionar",
"server": "Servidor",
"settings": "Configurações",
@@ -498,32 +663,50 @@
"size": "Tamanho",
"slug": "Anexo de URL",
"sort": "Ordenar",
+ "sort.drag": "Arraste para ordenar ...",
+ "split": "Dividir",
- "stats.empty": "No reports",
- "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",
- "system.issues.debug": "Debugging must be turned off in production",
- "system.issues.git": "The .git folder seems to be exposed",
- "system.issues.https": "We recommend HTTPS for all your sites",
- "system.issues.kirby": "The kirby folder seems to be exposed",
- "system.issues.site": "The site folder seems to be exposed",
- "system.issues.vulnerability.kirby": "Your installation might be affected by the following vulnerability ({ severity } severity): { description }",
- "system.issues.vulnerability.plugin": "Your installation might be affected by the following vulnerability in the { plugin } plugin ({ severity } severity): { description }",
- "system.updateStatus": "Update status",
- "system.updateStatus.error": "Could not check for updates",
- "system.updateStatus.not-vulnerable": "No known vulnerabilities",
- "system.updateStatus.security-update": "Free security update { version } available",
- "system.updateStatus.security-upgrade": "Upgrade { version } with security fixes available",
- "system.updateStatus.unreleased": "Unreleased version",
- "system.updateStatus.up-to-date": "Up to date",
- "system.updateStatus.update": "Free update { version } available",
- "system.updateStatus.upgrade": "Upgrade { version } available",
+ "stats.empty": "Nenhum relatório",
+ "status": "Estado",
+
+ "system.info.copy": "Copiar informação",
+ "system.info.copied": "Informação de sistema copiada",
+ "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",
+ "system.issues.eol.php": "A versão instalada {release} de PHP chegou ao fim da sua vida útil e não irá receber mais atualizações de segurança",
+ "system.issues.debug": "O modo debug deve ser desativado em produção",
+ "system.issues.git": "A pasta \".git\" parece não estar protegida",
+ "system.issues.https": "Nós recomendamos HTTPS para todos os seus sites",
+ "system.issues.kirby": "A pasta \"kirby\" parece não estar protegida",
+ "system.issues.local": "O site está a correr localmente com verificações de segurança relaxadas",
+ "system.issues.site": "A pasta \"site\" parece não estar protegida",
+ "system.issues.vue.compiler": "O compilador de templates Vue está ativado",
+ "system.issues.vulnerability.kirby": "A sua instalação poderá ser afetada pela seguinte vulnerabilidade ({ severity } gravidade): { description }",
+ "system.issues.vulnerability.plugin": "A sua instalação poderá ser afetada pela seguinte vulnerabilidade no plugin { plugin } ({ severity } gravidade): { description }",
+ "system.updateStatus": "Atualizar estado",
+ "system.updateStatus.error": "Não foi possível verificar se havia atualizações",
+ "system.updateStatus.not-vulnerable": "Nenhuma vulnerabilidade conhecida",
+ "system.updateStatus.security-update": "Atualização de segurança gratuita { version } disponível",
+ "system.updateStatus.security-upgrade": "Atualização { version } com correções de segurança disponível",
+ "system.updateStatus.unreleased": "Versão não lançada",
+ "system.updateStatus.up-to-date": "Atualizado",
+ "system.updateStatus.update": "Atualização gratuita { version } disponível",
+ "system.updateStatus.upgrade": "Atualização { version } disponível",
+
+ "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",
- "template": "Tema",
"today": "Hoje",
+ "toolbar.button.clear": "Limpar formatação",
"toolbar.button.code": "Código",
"toolbar.button.bold": "Negrito",
"toolbar.button.email": "Email",
@@ -535,12 +718,14 @@
"toolbar.button.heading.5": "Título 5",
"toolbar.button.heading.6": "Título 6",
"toolbar.button.italic": "Itálico",
- "toolbar.button.file": "File",
+ "toolbar.button.file": "Arquivo",
"toolbar.button.file.select": "Selecionar arquivo",
"toolbar.button.file.upload": "Carregar arquivo",
"toolbar.button.link": "Link",
"toolbar.button.paragraph": "Parágrafo",
"toolbar.button.strike": "Riscado",
+ "toolbar.button.sub": "Subscrito",
+ "toolbar.button.sup": "Sobrescrito",
"toolbar.button.ol": "Lista ordenada",
"toolbar.button.underline": "Sublinhado",
"toolbar.button.ul": "Lista não-ordenada",
@@ -550,6 +735,8 @@
"translation.name": "Português do Brasil",
"translation.locale": "pt_BR",
+ "type": "Tipo",
+
"upload": "Enviar",
"upload.error.cantMove": "O arquivo carregado não pôde ser movido",
"upload.error.cantWrite": "Falha ao escrever o arquivo no disco",
@@ -562,7 +749,7 @@
"upload.error.noFiles": "Nenhum arquivo foi carregado",
"upload.error.partial": "O arquivo foi só parcialmente carregado",
"upload.error.tmpDir": "Falta uma pasta temporária",
- "upload.errors": "Error",
+ "upload.errors": "Erro",
"upload.progress": "Enviando…",
"url": "Url",
@@ -574,28 +761,32 @@
"user.changeLanguage": "Alterar idioma",
"user.changeName": "Renomear usuário",
"user.changePassword": "Alterar senha",
+ "user.changePassword.current": "A sua palavra-passe atual",
"user.changePassword.new": "Nova senha",
"user.changePassword.new.confirm": "Confirme a nova senha…",
"user.changeRole": "Alterar papel",
"user.changeRole.select": "Selecione um novo papel",
- "user.create": "Add a new user",
+ "user.create": "Adicionar novo usuário",
"user.delete": "Deletar este usuário",
"user.delete.confirm": "Deseja realmente deletar
{email}?",
"users": "Usuários",
- "version": "Versão do Kirby",
- "version.current": "Current version",
- "version.latest": "Latest version",
- "versionInformation": "Version information",
+ "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ção",
+ "view.installation": "Instala\u00e7\u00e3o",
"view.languages": "Idiomas",
"view.resetPassword": "Redefinir senha",
"view.site": "Site",
"view.system": "Sistema",
- "view.users": "Usuários",
+ "view.users": "Usu\u00e1rios",
"welcome": "Bem-vindo",
"year": "Ano",
diff --git a/kirby/i18n/translations/pt_PT.json b/kirby/i18n/translations/pt_PT.json
index aafd148..a9fc33b 100644
--- a/kirby/i18n/translations/pt_PT.json
+++ b/kirby/i18n/translations/pt_PT.json
@@ -1,264 +1,332 @@
{
- "account.changeName": "Mudar seu nome",
- "account.delete": "Deletar sua conta",
- "account.delete.confirm": "Deseja realmente deletar sua conta? Você sairá do site imediatamente. Sua conta não poderá ser recuperada. ",
+ "account.changeName": "Altere o seu nome",
+ "account.delete": "Elimine a sua conta",
+ "account.delete.confirm": "Tem a certeza que pretende eliminar a sua conta? A sessão será terminada imediatamente. A sua conta não poderá ser recuperada. ",
- "add": "Add",
+ "activate": "Ativar",
+ "add": "Adicionar",
+ "alpha": "Alpha",
"author": "Autor",
- "avatar": "Foto do perfil",
- "back": "Back",
- "cancel": "Cancel",
+ "avatar": "Foto de perfil",
+ "back": "Voltar",
+ "cancel": "Cancelar",
"change": "Alterar",
- "close": "Close",
- "confirm": "Salvar",
+ "close": "Fechar",
+ "changes": "Alterações",
+ "confirm": "Ok",
"collapse": "Colapsar",
"collapse.all": "Colapsar todos",
+ "color": "Cor",
+ "coordinates": "Coordenadas",
"copy": "Copiar",
"copy.all": "Copiar todos",
+ "copy.success": "{count} copiados!",
+ "copy.success.multiple": "{count} copiados!",
+ "copy.url": "Copiar URL",
"create": "Criar",
+ "custom": "Personalizado",
"date": "Data",
"date.select": "Selecione uma data",
"day": "Dia",
"days.fri": "Sex",
- "days.mon": "Mon",
- "days.sat": "Sáb",
+ "days.mon": "Seg",
+ "days.sat": "S\u00e1b",
"days.sun": "Dom",
"days.thu": "Qui",
- "days.tue": "Tue",
+ "days.tue": "Ter",
"days.wed": "Qua",
"debugging": "Depuração ",
- "delete": "Excluir",
- "delete.all": "Deletar todos",
+ "delete": "Eliminar",
+ "delete.all": "Eliminar todos",
- "dialog.files.empty": "Sem arquivos para selecionar",
+ "dialog.fields.empty": "Esta caixa de diálogo não tem campos",
+ "dialog.files.empty": "Sem ficheiros para selecionar",
"dialog.pages.empty": "Sem páginas para selecionar",
+ "dialog.text.empty": "Esta caixa de diálogo não define nenhum texto",
"dialog.users.empty": "Sem utilizadores para selecionar",
"dimensions": "Dimensões",
- "disabled": "Inativo",
- "discard": "Discard",
+ "disable": "Desativar",
+ "disabled": "Desativado",
+ "discard": "Descartar",
+
+ "drawer.fields.empty": "Esta janela não tem campos",
+
+ "domain": "Domínio",
"download": "Descarregar",
"duplicate": "Duplicar",
- "edit": "Edit",
+ "edit": "Editar",
"email": "Email",
"email.placeholder": "mail@exemplo.pt",
- "entries": "Entries",
- "entry": "Entry",
+ "enter": "Insira",
+ "entries": "Entradas",
+ "entry": "Entrada",
"environment": "Ambiente",
+ "error": "Erro",
"error.access.code": "Código inválido",
- "error.access.login": "Login inválido",
+ "error.access.login": "Dados de acesso inválidos",
"error.access.panel": "Não tem permissões para aceder ao painel",
- "error.access.view": "Não tem permissões para aceder a esta área do Painel",
+ "error.access.view": "Não tem permissões para aceder a esta área do painel",
- "error.avatar.create.fail": "A foto de perfil não foi enviada",
- "error.avatar.delete.fail": "A foto do perfil não foi excluída",
+ "error.avatar.create.fail": "Não foi possível enviar a foto de perfil",
+ "error.avatar.delete.fail": "Não foi possível eliminar a foto de perfil",
"error.avatar.dimensions.invalid": "Por favor, use uma foto de perfil com largura e altura menores que 3000 pixels",
- "error.avatar.mime.forbidden": "A foto de perfil deve ser um arquivo JPEG ou PNG",
+ "error.avatar.mime.forbidden": "A foto de perfil deve ser um ficheiro JPEG ou PNG",
- "error.blueprint.notFound": "O blueprint \"{name}\" não pode ser carregado",
+ "error.blueprint.notFound": "Não foi possível carregar o blueprint \"{name}\"",
- "error.blocks.max.plural": "Você não deve adicionar mais do que {max} blocos",
- "error.blocks.max.singular": "Você não deve adicionar mais do que um bloco",
- "error.blocks.min.plural": "Você deve adicionar pelo menos {min} blocos",
- "error.blocks.min.singular": "Você deve adicionar pelo menos um bloco",
- "error.blocks.validation": "There's an error on the \"{field}\" field in block {index} using the \"{fieldset}\" block type",
+ "error.blocks.max.plural": "Não pode adicionar mais do que {max} blocos",
+ "error.blocks.max.singular": "Não pode adicionar mais do que um bloco",
+ "error.blocks.min.plural": "Tem de adicionar pelo menos {min} blocos",
+ "error.blocks.min.singular": "Tem de adicionar pelo menos um bloco",
+ "error.blocks.validation": "Há um erro no campo \"{field}\" no bloco {index} a usar o tipo de bloco \"{fieldset}\"",
- "error.cache.type.invalid": "Invalid cache type \"{type}\"",
+ "error.cache.type.invalid": "Tipo de cache \"{type}\" inválido",
- "error.email.preset.notFound": "Preset de email \"{name}\" não encontrado",
+ "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.entries.max.plural": "Não deve adicionar mais do que {max} entradas",
+ "error.entries.max.singular": "Não deve adicionar mais do que uma entrada",
+ "error.entries.min.plural": "Deve adicionar pelo menos {min} entradas",
+ "error.entries.min.singular": "Deve adicionar pelo menos uma entrada",
+ "error.entries.supports": "O tipo de campo \"{type}\" não é compatível com o campo entries",
+ "error.entries.validation": "Existe um erro no campo \"{field}\" na linha {index}",
+
+ "error.email.preset.notFound": "A predefinição de email \"{name}\" não foi encontrada",
"error.field.converter.invalid": "Conversor \"{converter}\" inválido",
- "error.field.type.missing": "Field \"{ name }\": The field type \"{ type }\" does not exist",
+ "error.field.link.options": "Opções inválidas: {options}",
+ "error.field.type.missing": "Campo \"{name}\": O tipo de campo \"{type}\" não existe",
"error.file.changeName.empty": "O nome não pode ficar em branco",
"error.file.changeName.permission": "Não tem permissões para alterar o nome de \"{filename}\"",
- "error.file.duplicate": "Um arquivo com o nome \"{filename}\" já existe",
- "error.file.extension.forbidden": "Extensão \"{extension}\" não permitida",
+ "error.file.changeTemplate.invalid": "O template para o ficheiro \"{id}\" não pode ser alterado para \"{template}\" (válido: \"{blueprints}\")",
+ "error.file.changeTemplate.permission": "Não tem permissão para alterar o template do ficheiro \"{id}\"",
+
+ "error.file.delete.multiple": "Nem todos os ficheiros puderam ser eliminados. Experimente cada ficheiro restante individualmente para ver o erro específico que impede a sua eliminação.",
+ "error.file.duplicate": "Um ficheiro com o nome \"{filename}\" já existe",
+ "error.file.extension.forbidden": "A extensão \"{extension}\" não é permitida",
"error.file.extension.invalid": "Extensão inválida: {extension}",
- "error.file.extension.missing": "Extensão de \"{filename}\" em falta",
- "error.file.maxheight": "A altura da imagem não deve exceder {height} pixels",
- "error.file.maxsize": "O arquivo é muito grande",
- "error.file.maxwidth": "A largura da imagem não deve exceder {width} pixels",
- "error.file.mime.differs": "O arquivo enviado precisa ser do tipo \"{mime}\"",
- "error.file.mime.forbidden": "Tipo de mídia \"{mime}\" não permitido",
+ "error.file.extension.missing": "As extensões de \"{filename}\" estão em falta",
+ "error.file.maxheight": "A altura da imagem não deve exceder {height} píxeis",
+ "error.file.maxsize": "O ficheiro é demasiado grande",
+ "error.file.maxwidth": "A largura da imagem não deve exceder {width} píxeis",
+ "error.file.mime.differs": "O ficheiro enviado precisa de ser do tipo \"{mime}\"",
+ "error.file.mime.forbidden": "O tipo de mídia \"{mime}\" não é permitido",
"error.file.mime.invalid": "Tipo de mídia inválido: {mime}",
- "error.file.mime.missing": "Tipo de mídia de \"{filename}\" não detectado",
- "error.file.minheight": "A altura da imagem deve ser pelo menos {height} pixels",
- "error.file.minsize": "O ficheiro é muito pequeno",
- "error.file.minwidth": "A largura da imagem deve ser pelo menos {width} pixels",
- "error.file.name.missing": "O nome do arquivo não pode ficar em branco",
- "error.file.notFound": "Arquivo \"{filename}\" não encontrado",
+ "error.file.mime.missing": "Não foi possível detectar o tipo de mídia de \"{filename}\"",
+ "error.file.minheight": "A altura da imagem deve ter pelo menos {height} píxeis",
+ "error.file.minsize": "O ficheiro é demasiado pequeno",
+ "error.file.minwidth": "A largura da imagem deve ter pelo menos {width} píxeis",
+ "error.file.name.unique": "O nome do ficheiro deve ser único",
+ "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.type.forbidden": "Não tem permissões para enviar arquivos {type}",
- "error.file.type.invalid": "Tipo inválido de arquivo: {type}",
- "error.file.undefined": "Arquivo não encontrado",
+ "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",
- "error.form.incomplete": "Por favor, corrija os erros do formulário…",
- "error.form.notSaved": "O formulário não foi guardado",
+ "error.form.incomplete": "Por favor, corrija todos os erros do formulário…",
+ "error.form.notSaved": "Não foi possível guardar o formulário",
- "error.language.code": "Insira um código de idioma válido",
+ "error.language.code": "Por favor, insira um código válido para o idioma",
+ "error.language.create.permission": "Não tem permissões para criar um idioma",
+ "error.language.delete.permission": "Não tem permissões para eliminar o idioma",
"error.language.duplicate": "O idioma já existe",
- "error.language.name": "Insira um nome válido para o idioma",
- "error.language.notFound": "O idioma não foi encontrado",
+ "error.language.name": "Por favor, insira um nome válido para o idioma",
+ "error.language.notFound": "Não foi possível encontrar o idioma",
+ "error.language.update.permission": "Não tem permissões para atualizar o idioma",
- "error.layout.validation.block": "There's an error on the \"{field}\" field in block {blockIndex} using the \"{fieldset}\" block type in layout {layoutIndex}",
+ "error.layout.validation.block": "Há um erro no campo \"{field}\" no bloco {blockIndex} a usar o tipo de bloco \"{fieldset}\" no layout {layoutIndex}",
"error.layout.validation.settings": "Há um erro na configuração do layout {index}",
- "error.license.format": "Insira uma chave de licença válida",
- "error.license.email": "Digite um endereço de email válido",
+ "error.license.domain": "O domínio da licença está em falta",
+ "error.license.email": "Por favor, insira um endereço de email válido",
+ "error.license.format": "Por favor, insira um código de licença válido",
"error.license.verification": "Não foi possível verificar a licença",
- "error.object.validation": "There’s an error in the \"{label}\" field:\n{message}",
+ "error.login.totp.confirm.invalid": "Código inválido",
+ "error.login.totp.confirm.missing": "Por favor, insira o código atual",
- "error.offline": "O painel está offline no momento",
+ "error.object.validation": "Há um erro no campo \"{label}\":\n{message}",
- "error.page.changeSlug.permission": "Não tem permissões para alterar a URL de \"{slug}\"",
- "error.page.changeStatus.incomplete": "A página possui erros e não pode ser guardada",
+ "error.offline": "O painel encontra-se offline de momento",
+
+ "error.page.changeSlug.permission": "Não tem permissões para alterar o URL de \"{slug}\"",
+ "error.page.changeSlug.reserved": "O caminho das páginas de nível superior não deve começar com \"{path}\"",
+ "error.page.changeStatus.incomplete": "A página tem erros e não pode ser publicada",
"error.page.changeStatus.permission": "O estado desta página não pode ser alterado",
"error.page.changeStatus.toDraft.invalid": "A página \"{slug}\" não pode ser convertida para rascunho",
- "error.page.changeTemplate.invalid": "O tema da página \"{slug}\" não pode ser alterado",
- "error.page.changeTemplate.permission": "Não tem permissões para alterar o tema de \"{slug}\"",
+ "error.page.changeTemplate.invalid": "O template da página \"{slug}\" não pode ser alterado",
+ "error.page.changeTemplate.permission": "Não tem permissões para alterar o template de \"{slug}\"",
"error.page.changeTitle.empty": "O título não pode ficar em branco",
"error.page.changeTitle.permission": "Não tem permissões para alterar o título de \"{slug}\"",
"error.page.create.permission": "Não tem permissões para criar \"{slug}\"",
- "error.page.delete": "A página \"{slug}\" não pode ser excluída",
- "error.page.delete.confirm": "Por favor, digite o título da página para confirmar",
- "error.page.delete.hasChildren": "A página possui subpáginas e não pode ser excluída",
- "error.page.delete.permission": "Não tem permissões para excluir \"{slug}\"",
- "error.page.draft.duplicate": "Um rascunho de página com a URL \"{slug}\" já existe",
- "error.page.duplicate": "Uma página com a URL \"{slug}\" já existe",
- "error.page.duplicate.permission": "Não tem permissão para duplicar \"{slug}\"",
- "error.page.notFound": "Página\"{slug}\" não encontrada",
- "error.page.num.invalid": "Digite um número de ordenação válido. Este número não pode ser negativo.",
- "error.page.slug.invalid": "Por favor entre um anexo de URL válido ",
- "error.page.slug.maxlength": "O slug não pode conter mais do que \"{length}\" caracteres",
- "error.page.sort.permission": "A página \"{slug}\" não pode ser ordenada",
+ "error.page.delete": "A página \"{slug}\" não pode ser eliminada",
+ "error.page.delete.confirm": "Por favor, insira o título da página para confirmar",
+ "error.page.delete.hasChildren": "A página tem subpáginas e não pode ser eliminada",
+ "error.page.delete.multiple": "Nem todas as páginas puderam ser eliminadas. Experimente cada página restante individualmente para ver o erro específico que impede a sua eliminação.",
+ "error.page.delete.permission": "Não tem permissões para eliminar \"{slug}\"",
+ "error.page.draft.duplicate": "Uma página de rascunho com o URL \"{slug}\" já existe",
+ "error.page.duplicate": "Uma página com o URL \"{slug}\" já existe",
+ "error.page.duplicate.permission": "Não tem permissões para duplicar \"{slug}\"",
+ "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}\"",
+ "error.page.notFound": "Não foi possível encontrar a página \"{slug}\"",
+ "error.page.num.invalid": "Por favor, insira um número de ordenação válido. Este número não pode ser negativo.",
+ "error.page.slug.invalid": "Por favor, insira um caminho de URL válido ",
+ "error.page.slug.maxlength": "O URL não pode conter mais do que \"{length}\" caracteres",
+ "error.page.sort.permission": "Não é possível ordenar a página \"{slug}\"",
"error.page.status.invalid": "Por favor, defina um estado de página válido",
- "error.page.undefined": "Página não encontrada",
+ "error.page.undefined": "Não foi possível encontrar a página",
"error.page.update.permission": "Não tem permissões para atualizar \"{slug}\"",
- "error.section.files.max.plural": "Não pode adicionar mais do que {max} arquivos à seção \"{section}\"",
- "error.section.files.max.singular": "Não pode adicionar mais do que um arquivo à seção \"{section}\"",
- "error.section.files.min.plural": "A secção \"{section}\" requer no mínimo {min} arquivos",
- "error.section.files.min.singular": "A secção \"{section}\" requer no mínimo um arquivo",
+ "error.section.files.max.plural": "Não pode adicionar mais do que {max} ficheiros à secção \"{section}\"",
+ "error.section.files.max.singular": "Não pode adicionar mais do que um ficheiro à secção \"{section}\"",
+ "error.section.files.min.plural": "A secção \"{section}\" requer no mínimo {min} ficheiros",
+ "error.section.files.min.singular": "A secção \"{section}\" requer no mínimo um ficheiro",
- "error.section.pages.max.plural": "Não pode adicionar mais do que {max} página à seção \"{section}\"",
- "error.section.pages.max.singular": "Não pode adicionar mais do que uma página à seção \"{section}\"",
+ "error.section.pages.max.plural": "Não pode adicionar mais do que {max} páginas à secção \"{section}\"",
+ "error.section.pages.max.singular": "Não pode adicionar mais do que uma página à secção \"{section}\"",
"error.section.pages.min.plural": "A secção \"{section}\" requer no mínimo {min} páginas",
"error.section.pages.min.singular": "A secção \"{section}\" requer no mínimo uma página",
- "error.section.notLoaded": "A seção \"{name}\" não pôde ser carregada",
- "error.section.type.invalid": "O tipo da seção \"{type}\" não é válido",
+ "error.section.notLoaded": "Não foi possível carregar a secção \"{name}\"",
+ "error.section.type.invalid": "O tipo de secção \"{type}\" não é válido",
"error.site.changeTitle.empty": "O título não pode ficar em branco",
"error.site.changeTitle.permission": "Não tem permissões para alterar o título do site",
"error.site.update.permission": "Não tem permissões para atualizar o site",
- "error.template.default.notFound": "O tema padrão não existe",
+ "error.structure.validation": "Existe um erro no campo \"{field}\" na linha {index}",
- "error.unexpected": "An unexpected error occurred! Enable debug mode for more info: https://getkirby.com/docs/reference/system/options/debug",
+ "error.template.default.notFound": "O template \"default\" não existe",
+
+ "error.unexpected": "Ocorreu um erro inesperado! Ative o modo de debug para obter mais informações: https://getkirby.com/docs/reference/system/options/debug",
"error.user.changeEmail.permission": "Não tem permissões para alterar o email do utilizador \"{name}\"",
"error.user.changeLanguage.permission": "Não tem permissões para alterar o idioma do utilizador \"{name}\"",
"error.user.changeName.permission": "Não tem permissões para alterar o nome do utilizador \"{name}\"",
"error.user.changePassword.permission": "Não tem permissões para alterar a palavra-passe do utilizador \"{name}\"",
- "error.user.changeRole.lastAdmin": "A função do último administrador não pode ser alterado",
+ "error.user.changeRole.lastAdmin": "A função do último administrador não pode ser alterada",
"error.user.changeRole.permission": "Não tem permissões para alterar a função do utilizador \"{name}\"",
"error.user.changeRole.toAdmin": "Não tem permissões para promover utilizadores à função de administrador",
"error.user.create.permission": "Não tem permissões para criar este utilizador",
- "error.user.delete": "O utilizador \"{name}\" não pode ser excluído",
- "error.user.delete.lastAdmin": "O último administrador não pode ser excluído",
- "error.user.delete.lastUser": "O último utilizador não pode ser excluído",
- "error.user.delete.permission": "Não tem permissões para excluir o utilizador \"{name}\"",
- "error.user.duplicate": "Um utilizador com o email \"{email}\" já existe",
- "error.user.email.invalid": "Digite um endereço de email válido",
- "error.user.language.invalid": "Digite um idioma válido",
- "error.user.notFound": "Utilizador \"{name}\" não encontrado",
- "error.user.password.excessive": "Please enter a valid password. Passwords must not be longer than 1000 characters.",
- "error.user.password.invalid": "Digite uma palavra-passe válida. A sua palavra-passe deve ter pelo menos 8 caracteres.",
- "error.user.password.notSame": "As palavras-passe não combinam",
- "error.user.password.undefined": "O utilizador não possui uma palavra-passe",
- "error.user.password.wrong": "Senha errada",
- "error.user.role.invalid": "Digite uma função válida",
- "error.user.undefined": "Usuário não encontrado",
+ "error.user.delete": "Não é possível eliminar o utilizador \"{name}\"",
+ "error.user.delete.lastAdmin": "Não é possível eliminar o último administrador",
+ "error.user.delete.lastUser": "Não é possível eliminar o último utilizador",
+ "error.user.delete.permission": "Não tem permissões para eliminar o utilizador \"{name}\"",
+ "error.user.duplicate": "Já existe um utilizador com o email \"{email}\"",
+ "error.user.email.invalid": "Por favor, insira um endereço de email válido",
+ "error.user.language.invalid": "Por favor, insira um idioma válido",
+ "error.user.notFound": "Não foi possível encontrar o utilizador \"{name}\"",
+ "error.user.password.excessive": "Por favor, insira uma palavra-passe válida. As palavras-passe não devem ter mais do que 1000 caracteres.",
+ "error.user.password.invalid": "Por favor, insira uma palavra-passe válida. As palavras-passe devem ter pelo menos 8 caracteres.",
+ "error.user.password.notSame": "As palavras-passe não coincidem",
+ "error.user.password.undefined": "O utilizador não tem uma palavra-passe",
+ "error.user.password.wrong": "Palavra-passe errada",
+ "error.user.role.invalid": "Por favor, insira uma função válida",
+ "error.user.undefined": "Não foi possível encontrar o utilizador",
"error.user.update.permission": "Não tem permissões para atualizar o utilizador \"{name}\"",
"error.validation.accepted": "Por favor, confirme",
- "error.validation.alpha": "Por favor, use apenas caracteres entre a-z",
- "error.validation.alphanum": "Por favor, use apenas caracteres entre a-z ou 0-9",
- "error.validation.between": "Digite um valor entre \"{min}\" e \"{max}\"",
+ "error.validation.alpha": "Por favor, insira apenas caracteres entre a-z",
+ "error.validation.alphanum": "Por favor, insira apenas caracteres entre a-z ou 0-9",
+ "error.validation.anchor": "Por favor, insira uma âncora de link correta",
+ "error.validation.between": "Por favor, insira um valor entre \"{min}\" e \"{max}\"",
"error.validation.boolean": "Por favor, confirme ou rejeite",
- "error.validation.contains": "Digite um valor que contenha \"{needle}\"",
- "error.validation.date": "Escolha uma data válida",
- "error.validation.date.after": "Escolha uma data posterior a {date}",
- "error.validation.date.before": "Escolha uma data anterior a {date}",
- "error.validation.date.between": "Escolha uma data compreendida entre {min} e {max}",
- "error.validation.denied": "Por favor, cancele",
- "error.validation.different": "O valor deve ser diferente de \"{other}\"",
- "error.validation.email": "Digite um endereço de email válido",
- "error.validation.endswith": "O valor deve terminar com \"{end}\"",
- "error.validation.filename": "Digite um nome de arquivo válido",
- "error.validation.in": "Digite um destes valores: ({in})",
- "error.validation.integer": "Digite um número inteiro válido",
- "error.validation.ip": "Digite um endereço de IP válido",
- "error.validation.less": "Digite um valor menor que {max}",
- "error.validation.match": "O valor não combina com o padrão esperado",
- "error.validation.max": "Digite um valor igual ou menor que {max}",
- "error.validation.maxlength": "Digite um valor curto. (no máximo {max} caracteres)",
- "error.validation.maxwords": "Digite menos que {max} palavra(s)",
- "error.validation.min": "Digite um valor igual ou maior que {min}",
- "error.validation.minlength": "Digite um valor maior. (no mínimo {min} caracteres)",
- "error.validation.minwords": "Digite ao menos {min} palavra(s)",
- "error.validation.more": "Digite um valor maior que {min}",
- "error.validation.notcontains": "Digite um valor que não contenha \"{needle}\"",
- "error.validation.notin": "Não digite nenhum destes valores: ({notIn})",
- "error.validation.option": "Escolha uma opção válida",
- "error.validation.num": "Digite um número válido",
- "error.validation.required": "Digite algo",
- "error.validation.same": "Por favor, digite \"{other}\"",
- "error.validation.size": "O tamanho do valor deve ser \"{size}\"",
- "error.validation.startswith": "O valor deve começar com \"{start}\"",
- "error.validation.time": "Digite uma hora válida",
- "error.validation.time.after": "Por favor entre um horário depois de {time}",
- "error.validation.time.before": "Por favor entre um horário antes de {time}",
- "error.validation.time.between": "Por favor entre um horário entre {min} e {max}",
- "error.validation.url": "Digite uma URL válida",
+ "error.validation.color": "Por favor, insira uma cor válida no formato {format}",
+ "error.validation.contains": "Por favor, insira um valor que contenha \"{needle}\"",
+ "error.validation.date": "Por favor, insira uma data válida",
+ "error.validation.date.after": "Por favor, insira uma data posterior a {date}",
+ "error.validation.date.before": "Por favor, insira uma data anterior a {date}",
+ "error.validation.date.between": "Por favor, insira uma data entre {min} e {max}",
+ "error.validation.denied": "Por favor, rejeite",
+ "error.validation.different": "O valor tem de ser diferente de \"{other}\"",
+ "error.validation.email": "Por favor, insira um endereço de email válido",
+ "error.validation.endswith": "O valor tem de terminar com \"{end}\"",
+ "error.validation.filename": "Por favor, insira um nome de ficheiro válido",
+ "error.validation.in": "Por favor, insira um dos seguintes valores: ({in})",
+ "error.validation.integer": "Por favor, insira um número inteiro válido",
+ "error.validation.ip": "Por favor, insira um endereço de IP válido",
+ "error.validation.less": "Por favor, insira um valor menor que {max}",
+ "error.validation.linkType": "O tipo de link não é permitido",
+ "error.validation.match": "O valor não corresponde ao padrão esperado",
+ "error.validation.max": "Por favor, insira um valor igual ou menor que {max}",
+ "error.validation.maxlength": "Por favor, insira um valor mais curto. (máximo {max} caracteres)",
+ "error.validation.maxwords": "Por favor, não insira mais que {max} palavra(s)",
+ "error.validation.min": "Por favor, insira um valor igual ou maior que {min}",
+ "error.validation.minlength": "Por favor, insira um valor mais longo. (mínimo {min} caracteres)",
+ "error.validation.minwords": "Por favor, insira pelo menos {min} palavra(s)",
+ "error.validation.more": "Por favor, insira um valor maior que {min}",
+ "error.validation.notcontains": "Por favor, insira um valor que não contenha \"{needle}\"",
+ "error.validation.notin": "Por favor, não insira nenhum destes valores: ({notIn})",
+ "error.validation.option": "Por favor, selecione uma opção válida",
+ "error.validation.num": "Por favor, insira um número válido",
+ "error.validation.required": "Por favor, insira algo",
+ "error.validation.same": "Por favor, insira \"{other}\"",
+ "error.validation.size": "O tamanho do valor tem de ser \"{size}\"",
+ "error.validation.startswith": "O valor tem de começar com \"{start}\"",
+ "error.validation.tel": "Por favor, insira um número de telefone não formatado",
+ "error.validation.time": "Por favor, insira uma hora válida",
+ "error.validation.time.after": "Por favor, insira uma hora posterior a {time}",
+ "error.validation.time.before": "Por favor, insira uma hora anterior a {time}",
+ "error.validation.time.between": "Por favor, insira uma hora entre {min} e {max}",
+ "error.validation.uuid": "Por favor, insira um UUID válido",
+ "error.validation.url": "Por favor, insira um URL válido",
"expand": "Expandir",
"expand.all": "Expandir todos",
- "field.required": "Este campo é necessário",
- "field.blocks.changeType": "Mudar tipo",
+ "field.invalid": "O campo é inválido",
+ "field.required": "O campo é obrigatório",
+ "field.blocks.changeType": "Alterar tipo",
"field.blocks.code.name": "Código",
"field.blocks.code.language": "Idioma",
- "field.blocks.code.placeholder": "Seu código …",
- "field.blocks.delete.confirm": "Deseja realmente deletar este bloco?",
- "field.blocks.delete.confirm.all": "Deseja realmente deletar todos os blocos?",
- "field.blocks.delete.confirm.selected": "Deseja realmente deletar os blocos selecionados?",
- "field.blocks.empty": "Nenhum bloco",
- "field.blocks.fieldsets.label": "Por favor selecione um tipo de bloco …",
- "field.blocks.fieldsets.paste": "Digite {{ shortcut }} para colar/importar blocos da sua área de transferência ",
+ "field.blocks.code.placeholder": "O seu código …",
+ "field.blocks.delete.confirm": "Tem a certeza que pretende eliminar este bloco?",
+ "field.blocks.delete.confirm.all": "Tem a certeza que pretende eliminar todos os blocos?",
+ "field.blocks.delete.confirm.selected": "Tem a certeza que pretende eliminar os blocos selecionados?",
+ "field.blocks.empty": "Nenhum bloco ainda",
+ "field.blocks.fieldsets.empty": "Nenhum tipo de bloco ainda",
+ "field.blocks.fieldsets.label": "Por favor, selecione um tipo de bloco …",
+ "field.blocks.fieldsets.paste": "Pressione {{ shortcut }} para importar layouts/blocks da sua área de transferência Só serão inseridos aqueles permitidos no campo atual.",
"field.blocks.gallery.name": "Galeria",
- "field.blocks.gallery.images.empty": "Nenhuma imagem",
+ "field.blocks.gallery.images.empty": "Nenhuma imagem ainda",
"field.blocks.gallery.images.label": "Imagens",
"field.blocks.heading.level": "Nível ",
"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",
"field.blocks.image.link": "Link",
"field.blocks.image.location": "Localização ",
+ "field.blocks.image.location.internal": "Este website",
+ "field.blocks.image.location.external": "Fonte externa",
"field.blocks.image.name": "Imagem",
"field.blocks.image.placeholder": "Selecionar uma imagem",
"field.blocks.image.ratio": "Proporção ",
@@ -275,38 +343,72 @@
"field.blocks.quote.citation.placeholder": "de …",
"field.blocks.text.name": "Texto",
"field.blocks.text.placeholder": "Texto …",
+ "field.blocks.video.autoplay": "Reprodução automática",
"field.blocks.video.caption": "Legenda",
+ "field.blocks.video.controls": "Controlos",
+ "field.blocks.video.location": "Localização ",
+ "field.blocks.video.loop": "Repetir",
+ "field.blocks.video.muted": "Sem som",
"field.blocks.video.name": "Vídeo ",
- "field.blocks.video.placeholder": "Entre uma URL de vídeo ",
+ "field.blocks.video.placeholder": "Insira um URL de vídeo ",
+ "field.blocks.video.poster": "Poster",
+ "field.blocks.video.preload": "Pré-carregamento",
"field.blocks.video.url.label": "URL-Vídeo",
"field.blocks.video.url.placeholder": "https://youtube.com/?v=",
- "field.files.empty": "Nenhum arquivo selecionado",
+ "field.entries.delete.confirm.all": "Tem a certeza que pretende eliminar todas as entradas?",
+ "field.entries.empty": "Nenhuma entrada ainda",
- "field.layout.delete": "Deletar layout",
- "field.layout.delete.confirm": "Deseja realmente deletar este layout?",
- "field.layout.empty": "Nenhuma linha",
+ "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",
+ "field.layout.delete.confirm": "Tem a certeza que pretende eliminar este layout?",
+ "field.layout.delete.confirm.all": "Tem a certeza que pretende eliminar todos os layouts?",
+ "field.layout.empty": "Nenhuma linha ainda",
"field.layout.select": "Selecionar um layout",
- "field.object.empty": "No information yet",
+ "field.object.empty": "Nenhuma informação ainda",
- "field.pages.empty": "Nenhuma página selecionada",
+ "field.pages.empty": "Nenhuma página selecionada ainda",
+ "field.pages.empty.single": "Nenhuma página selecionada ainda",
- "field.structure.delete.confirm": "Deseja realmente excluir este registro?",
- "field.structure.delete.confirm.all": "Do you really want to delete all entries?",
- "field.structure.empty": "Nenhum registro",
+ "field.structure.delete.confirm": "Tem a certeza que pretende eliminar esta linha?",
+ "field.structure.delete.confirm.all": "Tem a certeza que pretende eliminar todas as entradas?",
+ "field.structure.empty": "Nenhuma entrada ainda",
- "field.users.empty": "Nenhum utilizador selecionado",
+ "field.users.empty": "Nenhum utilizador selecionado ainda",
+ "field.users.empty.single": "Nenhum utilizador selecionado ainda",
- "file.blueprint": "Este arquivo não tem planta. Você pode definir sua planta em /site/blueprints/files/{blueprint}.yml",
- "file.delete.confirm": "Deseja realmente excluir
{filename}?",
- "file.sort": "Mudar posição",
+ "fields.empty": "Nenhum campo ainda",
- "files": "Arquivos",
- "files.empty": "Nenhum arquivo",
+ "file": "Ficheiro",
+ "file.blueprint": "Este ficheiro ainda não tem blueprint. Pode configurar o blueprint em /site/blueprints/files/{blueprint}.yml",
+ "file.changeTemplate": "Alterar template",
+ "file.changeTemplate.notice": "Alterar o template do ficheiro irá remover o conteúdo dos campos que não correspondem ao mesmo tipo. Se o novo template definir certas regras, por exemplo dimensões de imagem, estas também serão aplicadas irreversivelmente. Use com cuidado.",
+ "file.delete.confirm": "Tem a certeza que pretende eliminar
{filename}?",
+ "file.focus.placeholder": "Definir ponto de foco",
+ "file.focus.reset": "Remover ponto de foco",
+ "file.focus.title": "Foco",
+ "file.sort": "Alterar posição",
+
+ "files": "Ficheiros",
+ "files.delete.confirm.selected": "Tem a certeza que pretende eliminar os ficheiros selecionados? Esta ação não pode ser revertida.",
+ "files.empty": "Nenhum ficheiro ainda",
+
+ "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",
"import": "Importar",
"info": "Info",
"insert": "Inserir",
@@ -315,215 +417,296 @@
"install": "Instalar",
"installation": "Instalação",
- "installation.completed": "Painel instalado com sucesso",
- "installation.disabled": "Por padrão, o instalador do painel está desabilitado em servidores públicos. Por favor, execute o instalador numa máquina local ou habilite a opção panel.install
.",
- "installation.issues.accounts": "A pasta /site/accounts
não existe ou não possui permissão de escrita",
- "installation.issues.content": "A pasta /content
não existe ou não possui permissão de escrita",
+ "installation.completed": "O painel foi instalado com sucesso",
+ "installation.disabled": "A instalação do painel está desativada em servidores públicos por defeito. Execute a instalação numa máquina local ou ative-a com a opção panel.install
.",
+ "installation.issues.accounts": "A pasta /site/accounts
não existe ou não tem permissão de escrita",
+ "installation.issues.content": "A pasta /content
não existe ou não tem permissão de escrita",
"installation.issues.curl": "A extensão CURL
é necessária",
- "installation.issues.headline": "O painel não pôde ser instalado",
+ "installation.issues.headline": "Não foi possível instalar o painel",
"installation.issues.mbstring": "A extensão MB String
é necessária",
- "installation.issues.media": "A pasta /media
não existe ou não possui permissão de escrita",
- "installation.issues.php": "Certifique-se que você está usando o PHP 8+
",
- "installation.issues.server": "O Kirby necessita do Apache
, Nginx
ou Caddy
",
- "installation.issues.sessions": "A pasta /site/sessions
não existe ou não possui permissão de escrita",
+ "installation.issues.media": "A pasta /media
não existe ou não tem permissão de escrita",
+ "installation.issues.php": "Certifique-se que está a usar o PHP 8+
",
+ "installation.issues.sessions": "A pasta /site/sessions
não existe ou não tem permissão de escrita",
"language": "Idioma",
"language.code": "Código",
- "language.convert": "Tornar padrão",
- "language.convert.confirm": "{secret}
manualmente à sua aplicação de autenticação.",
+ "login.totp.enable.confirm.headline": "2. Confirme com o código gerado",
+ "login.totp.enable.confirm.text": "A sua aplicação gera um novo código de segurança a cada 30 segundos. Insira o código atual para concluir a configuração:",
+ "login.totp.enable.confirm.label": "Código atual",
+ "login.totp.enable.confirm.help": "Após esta configuração, iremos solicitar um código de segurança sempre que iniciar a sessão.",
+ "login.totp.enable.success": "Códigos de segurança ativados",
+ "login.totp.disable.option": "Desativar códigos de segurança",
+ "login.totp.disable.label": "Insira a sua palavra-passe para desativar códigos de segurança",
+ "login.totp.disable.help": "No futuro, um segundo fator diferente, como um código de início de sessão enviado por e-mail, será solicitado quando iniciar a sessão. Poderá configurar códigos de segurança novamente mais tarde.",
+ "login.totp.disable.admin": "
Todas as subpáginas serão excluídas também.",
- "page.delete.confirm.title": "Digite o título da página para confirmar",
- "page.draft.create": "Criar rascunho",
+ "page.changeTemplate": "Alterar template",
+ "page.changeTemplate.notice": "Alterar o template da página irá remover o conteúdo dos campos que não correspondem ao mesmo tipo. Use com cuidado.",
+ "page.create": "Criar como {status}",
+ "page.delete.confirm": "Tem a certeza que pretende eliminar {title}?",
+ "page.delete.confirm.subpages": "Esta página tem subpáginas.
Todas as subpáginas serão eliminadas também.",
+ "page.delete.confirm.title": "Por favor, insira o título da página para confirmar",
"page.duplicate.appendix": "Copiar",
- "page.duplicate.files": "Copiar arquivos",
+ "page.duplicate.files": "Copiar ficheiros",
"page.duplicate.pages": "Copiar páginas",
- "page.sort": "Mudar posição",
+ "page.move": "Mover página",
+ "page.sort": "Alterar posição",
"page.status": "Estado",
"page.status.draft": "Rascunho",
- "page.status.draft.description": "A página está em modo de rascunho e é visível somente para editores",
+ "page.status.draft.description": "A página está em modo de rascunho e é visível apenas para editores com sessão iniciada ou através de um link secreto",
"page.status.listed": "Pública",
"page.status.listed.description": "A página é pública para todos",
- "page.status.unlisted": "Não listadas",
- "page.status.unlisted.description": "Esta página é acessível somente através da URL",
+ "page.status.unlisted": "Não listada",
+ "page.status.unlisted.description": "Esta página é acessível apenas através de URL",
- "pages": "Pages",
- "pages.empty": "Nenhuma página",
+ "pages": "Páginas",
+ "pages.delete.confirm.selected": "Tem a certeza que pretende eliminar as páginas selecionadas? Esta ação não pode ser revertida.",
+ "pages.empty": "Nenhuma página ainda",
"pages.status.draft": "Rascunhos",
"pages.status.listed": "Publicadas",
"pages.status.unlisted": "Não listadas",
"pagination.page": "Página",
- "password": "Senha",
+ "password": "Palavra-passe",
"paste": "Colar",
"paste.after": "Colar após",
- "pixel": "Pixel",
+ "paste.success": "{count} colados!",
+ "pixel": "Píxel",
"plugin": "Plugin",
"plugins": "Plugins",
"prev": "Anterior",
- "preview": "Visualizar",
+ "preview": "Pré-visualizar",
+
+ "publish": "Publicar",
+ "published": "Publicadas",
+
"remove": "Remover",
- "rename": "Renomear",
- "replace": "Replace",
+ "rename": "Alterar nome",
+ "renew": "Renovar",
+ "replace": "Substituir",
+ "replace.with": "Substituir por",
"retry": "Tentar novamente",
- "revert": "Descartar",
- "revert.confirm": "Tem a certeza que pretende eliminar todas as alterações por guardar?",
+ "revert": "Reverter",
+ "revert.confirm": "Tem a certeza que pretende eliminar todas as alterações não guardadas?",
"role": "Função",
- "role.admin.description": "O administrador tem todas as permissões.",
+ "role.admin.description": "O administrador tem todas as permissões",
"role.admin.title": "Administrador",
"role.all": "Todos",
"role.empty": "Não há utilizadores com esta função",
"role.description.placeholder": "Sem descrição",
- "role.nobody.description": "Esta é uma função de salvaguarda sem permissões.",
+ "role.nobody.description": "Esta é uma função de recurso sem permissões",
"role.nobody.title": "Ninguém",
- "save": "Salvar",
- "search": "Buscar",
- "search.min": "Introduza {min} caracteres para pesquisar",
- "search.all": "Mostrar todos",
+ "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",
- "section.required": "Esta seção é necessária",
+ "section.invalid": "A secção é inválida",
+ "section.required": "A secção é obrigatória",
- "security": "Security",
+ "security": "Segurança",
"select": "Selecionar",
"server": "Servidor",
"settings": "Configurações",
"show": "Mostrar",
- "site.blueprint": "Este site não tem planta. Você pode definir sua planta em /site/blueprints/site.yml",
+ "site.blueprint": "O site não tem blueprint ainda. Pode configurar o blueprint em /site/blueprints/site.yml",
"size": "Tamanho",
"slug": "URL",
"sort": "Ordenar",
+ "sort.drag": "Arraste para ordenar ...",
+ "split": "Dividir",
- "stats.empty": "No reports",
- "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",
- "system.issues.debug": "Debugging must be turned off in production",
- "system.issues.git": "The .git folder seems to be exposed",
- "system.issues.https": "We recommend HTTPS for all your sites",
- "system.issues.kirby": "The kirby folder seems to be exposed",
- "system.issues.site": "The site folder seems to be exposed",
- "system.issues.vulnerability.kirby": "Your installation might be affected by the following vulnerability ({ severity } severity): { description }",
- "system.issues.vulnerability.plugin": "Your installation might be affected by the following vulnerability in the { plugin } plugin ({ severity } severity): { description }",
- "system.updateStatus": "Update status",
- "system.updateStatus.error": "Could not check for updates",
- "system.updateStatus.not-vulnerable": "No known vulnerabilities",
- "system.updateStatus.security-update": "Free security update { version } available",
- "system.updateStatus.security-upgrade": "Upgrade { version } with security fixes available",
- "system.updateStatus.unreleased": "Unreleased version",
- "system.updateStatus.up-to-date": "Up to date",
- "system.updateStatus.update": "Free update { version } available",
- "system.updateStatus.upgrade": "Upgrade { version } available",
+ "stats.empty": "Sem relatórios",
+ "status": "Estado",
+
+ "system.info.copy": "Copiar informação",
+ "system.info.copied": "Informação de sistema copiada",
+ "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",
+ "system.issues.eol.php": "A versão instalada { release } de PHP chegou ao fim da sua vida útil e não irá receber mais atualizações de segurança",
+ "system.issues.debug": "O modo debug deve ser desativado em produção",
+ "system.issues.git": "A pasta .git parece não estar protegida",
+ "system.issues.https": "Nós recomendamos HTTPS para todos os seus sites",
+ "system.issues.kirby": "A pasta kirby parece não estar protegida",
+ "system.issues.local": "O site está a correr localmente com verificações de segurança relaxadas",
+ "system.issues.site": "A pasta site parece não estar protegida",
+ "system.issues.vue.compiler": "O compilador de templates Vue está ativado",
+ "system.issues.vulnerability.kirby": "A sua instalação poderá ser afetada pela seguinte vulnerabilidade ({ severity } gravidade): { description }",
+ "system.issues.vulnerability.plugin": "A sua instalação poderá ser afetada pela seguinte vulnerabilidade no plugin { plugin } ({ severity } gravidade): { description }",
+ "system.updateStatus": "Atualizar estado",
+ "system.updateStatus.error": "Não foi possível verificar se havia atualizações",
+ "system.updateStatus.not-vulnerable": "Nenhuma vulnerabilidade conhecida",
+ "system.updateStatus.security-update": "Atualização de segurança gratuita { version } disponível",
+ "system.updateStatus.security-upgrade": "Atualização { version } com correções de segurança disponível",
+ "system.updateStatus.unreleased": "Versão não lançada",
+ "system.updateStatus.up-to-date": "Atualizado",
+ "system.updateStatus.update": "Atualização gratuita { version } disponível",
+ "system.updateStatus.upgrade": "Atualização { version } disponível",
+
+ "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",
- "template": "Tema",
"today": "Hoje",
+ "toolbar.button.clear": "Limpar formatação",
"toolbar.button.code": "Código",
"toolbar.button.bold": "Negrito",
"toolbar.button.email": "Email",
@@ -535,67 +718,75 @@
"toolbar.button.heading.5": "Título 5",
"toolbar.button.heading.6": "Título 6",
"toolbar.button.italic": "Itálico",
- "toolbar.button.file": "File",
- "toolbar.button.file.select": "Selecione o arquivo",
- "toolbar.button.file.upload": "Carregue o arquivo",
+ "toolbar.button.file": "Ficheiro",
+ "toolbar.button.file.select": "Selecione um ficheiro",
+ "toolbar.button.file.upload": "Envie um ficheiro",
"toolbar.button.link": "Link",
"toolbar.button.paragraph": "Parágrafo",
- "toolbar.button.strike": "Riscado",
+ "toolbar.button.strike": "Rasurado",
+ "toolbar.button.sub": "Subscrito",
+ "toolbar.button.sup": "Sobrescrito",
"toolbar.button.ol": "Lista ordenada",
"toolbar.button.underline": "Sublinhado",
"toolbar.button.ul": "Lista não-ordenada",
- "translation.author": "Kirby Team",
+ "translation.author": "Equipa Kirby",
"translation.direction": "ltr",
- "translation.name": "Português (Europeu)",
+ "translation.name": "Português (Portugal)",
"translation.locale": "pt_PT",
+ "type": "Tipo",
+
"upload": "Enviar",
- "upload.error.cantMove": "Não foi possível mover o arquivo carregado",
- "upload.error.cantWrite": "Não foi possível guardar o arquivo no sistema de ficheiros.",
- "upload.error.default": "Não foi possível carregar o arquivo",
- "upload.error.extension": "A extensão do arquivo não permite o carregamento",
- "upload.error.formSize": "O arquivo excede o tamanho MAX_FILE_SIZE",
- "upload.error.iniPostSize": "O arquivo excede o tamanho post_max_size",
- "upload.error.iniSize": "O arquivo carregado excede a definição upload_max_filesize do php.ini",
- "upload.error.noFile": "Nenhum arquivo carregado",
- "upload.error.noFiles": "Nenhuns arquivos carregados",
- "upload.error.partial": "O arquivo foi parcialmente carregado",
+ "upload.error.cantMove": "Não foi possível mover o ficheiro enviado",
+ "upload.error.cantWrite": "Não foi possível guardar o ficheiro em disco",
+ "upload.error.default": "Não foi possível enviar o ficheiro",
+ "upload.error.extension": "O envio do ficheiro foi interrompido devido à extensão",
+ "upload.error.formSize": "O ficheiro enviado excede a diretiva MAX_FILE_SIZE especificada no formulário",
+ "upload.error.iniPostSize": "O ficheiro enviado excede a diretiva post_max_size do php.ini",
+ "upload.error.iniSize": "O ficheiro enviado excede a diretiva upload_max_filesize do php.ini",
+ "upload.error.noFile": "Nenhum ficheiro foi enviado",
+ "upload.error.noFiles": "Nenhum ficheiro foi enviado",
+ "upload.error.partial": "O ficheiro foi enviado apenas parcialmente",
"upload.error.tmpDir": "Pasta temporária em falta",
- "upload.errors": "Error",
+ "upload.errors": "Erro",
"upload.progress": "A enviar…",
- "url": "Url",
+ "url": "URL",
"url.placeholder": "https://exemplo.pt",
"user": "Utilizador",
- "user.blueprint": "Você pode definir seções e campos de formulário adicionais para este papel de usuário em /site/blueprints/users/{blueprint}.yml",
+ "user.blueprint": "Pode definir secções adicionais e campos de formulário para esta função de utilizador em /site/blueprints/users/{blueprint}.yml",
"user.changeEmail": "Alterar email",
"user.changeLanguage": "Alterar idioma",
- "user.changeName": "Renomear este utilizador",
+ "user.changeName": "Alterar o nome deste utilizador",
"user.changePassword": "Alterar palavra-passe",
+ "user.changePassword.current": "A sua palavra-passe atual",
"user.changePassword.new": "Nova palavra-passe",
"user.changePassword.new.confirm": "Confirme a nova palavra-passe…",
- "user.changeRole": "Alterar Função",
+ "user.changeRole": "Alterar função",
"user.changeRole.select": "Selecione uma nova função",
- "user.create": "Add a new user",
- "user.delete": "Excluir este utilizador",
- "user.delete.confirm": "Deseja realmente excluir
{email}?",
+ "user.create": "Adicionar um novo utilizador",
+ "user.delete": "Eliminar este utilizador",
+ "user.delete.confirm": "Tem a certeza que pretende eliminar
{email}?",
- "users": "Usuários",
+ "users": "Utilizadores",
- "version": "Versão do Kirby",
- "version.current": "Current version",
- "version.latest": "Latest version",
- "versionInformation": "Version information",
+ "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ção",
+ "view.installation": "Instala\u00e7\u00e3o",
"view.languages": "Idiomas",
- "view.resetPassword": "Redefinir senha",
+ "view.resetPassword": "Redefinir palavra-passe",
"view.site": "Site",
"view.system": "Sistema",
- "view.users": "Usuários",
+ "view.users": "Utilizadores",
"welcome": "Bem-vindo",
"year": "Ano",
diff --git a/kirby/i18n/translations/ro.json b/kirby/i18n/translations/ro.json
index 0db8db1..120852a 100644
--- a/kirby/i18n/translations/ro.json
+++ b/kirby/i18n/translations/ro.json
@@ -3,19 +3,28 @@
"account.delete": "Șterge-ți contul",
"account.delete.confirm": "Chiar vrei să îți ștergi contul? Vei fi deconectat imediat. Contul nu poate fi recuperat.",
- "add": "Adaugă",
+ "activate": "Activează",
+ "add": "Adaug\u0103",
+ "alpha": "Alfa",
"author": "Autor",
"avatar": "Imagine de profil",
"back": "Înapoi",
"cancel": "Anulează",
- "change": "Schimbă",
- "close": "Închide",
+ "change": "Modific\u0103",
+ "close": "\u00cenchide",
+ "changes": "Schimbări",
"confirm": "Ok",
"collapse": "Pliază",
"collapse.all": "Pliază toate",
+ "color": "Culoare",
+ "coordinates": "Coordonate",
"copy": "Copiază",
"copy.all": "Copiază toate",
+ "copy.success": "Copiat {count}!",
+ "copy.success.multiple": "Copiat {count}!",
+ "copy.url": "Copy URL",
"create": "Creează",
+ "custom": "Personalizat",
"date": "Data",
"date.select": "Alege o dată",
@@ -23,7 +32,7 @@
"day": "Ziua",
"days.fri": "Vin",
"days.mon": "Lun",
- "days.sat": "Sâm",
+ "days.sat": "S\u00e2m",
"days.sun": "Dum",
"days.thu": "Joi",
"days.tue": "Mar",
@@ -31,31 +40,40 @@
"debugging": "Depanare",
- "delete": "Șterge",
+ "delete": "\u0218terge",
"delete.all": "Șterge toate",
+ "dialog.fields.empty": "Acest dialog nu are niciun câmp",
"dialog.files.empty": "Nu există fișiere de selectat",
"dialog.pages.empty": "Nu există pagini de selectat",
+ "dialog.text.empty": "Acest dialog nu definește niciun text",
"dialog.users.empty": "Nu există utilizatori de selectat",
"dimensions": "Dimensiuni",
+ "disable": "Dezactivați",
"disabled": "Dezactivat",
- "discard": "Renunță",
+ "discard": "Renun\u021b\u0103",
+
+ "drawer.fields.empty": "Acest sertar nu are niciun câmp",
+
+ "domain": "Domeniu",
"download": "Descarcă",
"duplicate": "Duplică",
- "edit": "Editează",
+ "edit": "Editeaz\u0103",
- "email": "Adresă e-mail",
- "email.placeholder": "email@exemplu.ro",
+ "email": "E-mail",
+ "email.placeholder": "email@exemplu.com",
+ "enter": "Introdu",
"entries": "Întregistrări",
"entry": "Înregistrare",
"environment": "Mediu",
- "error.access.code": "Cod invalid",
- "error.access.login": "Conectare invalidă",
+ "error": "Eroare",
+ "error.access.code": "Cod nevalid",
+ "error.access.login": "Conectare nevalidă",
"error.access.panel": "Nu ai voie să accesezi panoul",
"error.access.view": "Nu ai voie să accesezi această parte a panoului",
@@ -72,77 +90,113 @@
"error.blocks.min.singular": "Trebuie să adaugi cel puțin un bloc",
"error.blocks.validation": "Există o eroare la câmpul \"{field}\" în blocul {index} care folosește tipul de bloc \"{fieldset}\"",
- "error.cache.type.invalid": "Tipul de cache \"{type}\" este invalid",
+ "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.entries.max.plural": "You must not add more than {max} entries",
+ "error.entries.max.singular": "You must not add more than one entry",
+ "error.entries.min.plural": "You must add at least {min} entries",
+ "error.entries.min.singular": "You must add at least one entry",
+ "error.entries.supports": "\"{type}\" field type is not supported for the entries field",
+ "error.entries.validation": "Există o eroare la câmpul \"{field}\" pe rândul {index}",
"error.email.preset.notFound": "Preset-ul de e-mail \"{name}\" nu a fost găsit",
- "error.field.converter.invalid": "Convertorul \"{converter}\" invalid",
+ "error.field.converter.invalid": "Convertorul \"{converter}\" nu este valid",
+ "error.field.link.options": "Invalid options: {options}",
"error.field.type.missing": "Câmpul \"{ name }\": Tipul de câmp \"{ type }\" nu există",
"error.file.changeName.empty": "Numele nu trebuie să fie gol",
"error.file.changeName.permission": "Nu ai voie să schimbi numele fișierului \"{filename}\"",
+ "error.file.changeTemplate.invalid": "Șablonul pentru fișierul \"{id}\" nu poate fi schimbat la \"{template}\" (valide: \"{blueprints}\")",
+ "error.file.changeTemplate.permission": "Nu ai voie să schimbi șablonul pentru fișierul \"{id}\"",
+
+ "error.file.delete.multiple": "Not all files could be deleted. Try each remaining file individually to see the specific error that prevents deletion.",
"error.file.duplicate": "Există deja un fișier cu numele \"{filename}\"",
"error.file.extension.forbidden": "Extensia de fișier \"{extension}\" nu este permisă",
- "error.file.extension.invalid": "Extensie de fișier invalidă: {extension}",
+ "error.file.extension.invalid": "Extensie de fișier nevalidă: {extension}",
"error.file.extension.missing": "Extensia de fișier pentru \"{filename}\" lipsește",
"error.file.maxheight": "Înălțimea imaginii nu poate depăși {height} pixeli",
"error.file.maxsize": "Fișierul este prea mare",
"error.file.maxwidth": "Lățimea imaginii nu poate depăși {width} pixeli",
"error.file.mime.differs": "Fișierul încărcat trebuie să aibă același tip mime \"{mime}\"",
"error.file.mime.forbidden": "Tipul media \"{mime}\" nu este permis",
- "error.file.mime.invalid": "Tip mime invalid: {mime}",
+ "error.file.mime.invalid": "Tip mime nevalid: {mime}",
"error.file.mime.missing": "Tipul media pentru \"{filename}\" nu poate fi detectat",
"error.file.minheight": "Imaginea trebuie să aibă înălțimea de minim {height} pixeli",
"error.file.minsize": "Fișierul este prea mic",
"error.file.minwidth": "Imaginea trebuie să aibă lățimea de minim {width} pixeli",
+ "error.file.name.unique": "Numele fișierului trebuie să fie unic",
"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.type.forbidden": "Nu ai permisiunea să încarci fișiere {type}",
- "error.file.type.invalid": "Tip invalid de fișier: {type}",
+ "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",
"error.form.incomplete": "Te rog repară toate erorile din formular…",
"error.form.notSaved": "Formularul nu a putut fi salvat",
"error.language.code": "Te rog introdu un cod valid pentru limbă",
+ "error.language.create.permission": "You are not allowed to create a language",
+ "error.language.delete.permission": "You are not allowed to delete the language",
"error.language.duplicate": "Limba există deja",
"error.language.name": "Te rog introdu un nume valid pentru limbă",
"error.language.notFound": "Limba nu a fost găsită",
+ "error.language.update.permission": "You are not allowed to update the language",
"error.layout.validation.block": "Există o eroare la câmpul \"{field}\" în blocul {blockIndex} care utilizează tipul de bloc \"{fieldset}\" în aranjamentul {layoutIndex}",
"error.layout.validation.settings": "Există o eroare la setările aranjamentului {index}",
- "error.license.format": "Te rog introdu o cheie de licență validă",
+ "error.license.domain": "Domeniul pentru licență lipsește",
"error.license.email": "Te rog introdu o adresă de e-mail validă",
+ "error.license.format": "Te rog introdu un cod de licență valid",
"error.license.verification": "Licența nu a putut fi verificată",
+ "error.login.totp.confirm.invalid": "Cod nevalid",
+ "error.login.totp.confirm.missing": "Vă rugăm să introduceți codul curent",
+
"error.object.validation": "Există o eroare la câmpul \"{label}\":\n{message}",
"error.offline": "Panoul este momentan offline",
"error.page.changeSlug.permission": "Nu ai voie să schimbi apendicele URL pentru \"{slug}\"",
+ "error.page.changeSlug.reserved": "Calea paginilor de la primul nivel nu poate să înceapă cu \"{path}\"",
"error.page.changeStatus.incomplete": "Pagina are erori și nu poate fi publicată",
- "error.page.changeStatus.permission": "Statusul acestei pagini nu poate fi schimbat",
+ "error.page.changeStatus.permission": "Starea acestei pagini nu poate fi schimbată",
"error.page.changeStatus.toDraft.invalid": "Pagina \"{slug}\" nu poate fi schimbată în ciornă",
"error.page.changeTemplate.invalid": "Șablonul paginii \"{slug}\" nu poate fi schimbat",
"error.page.changeTemplate.permission": "Nu ai voie să schimbi șablonul pentru \"{slug}\"",
- "error.page.changeTitle.empty": "Titlul nu poate să rămână gol",
+ "error.page.changeTitle.empty": "Titlul nu poate rămâne gol",
"error.page.changeTitle.permission": "Nu ai voie să schimbi titlul pentru \"{slug}\"",
"error.page.create.permission": "Nu ai voie să creezi \"{slug}\"",
"error.page.delete": "Pagina \"{slug}\" nu poate fi ștearsă",
"error.page.delete.confirm": "Te rog introdu titlul paginii pentru a confirma",
"error.page.delete.hasChildren": "Pagina are subpagini și nu poate fi ștearsă",
+ "error.page.delete.multiple": "Not all pages could be deleted. Try each remaining page individually to see the specific error that prevents deletion.",
"error.page.delete.permission": "Nu ai voie să ștergi \"{slug}\"",
"error.page.draft.duplicate": "Există deja o ciornă cu apendicele URL \"{slug}\"",
"error.page.duplicate": "Există deja o pagină cu apendicele URL \"{slug}\"",
"error.page.duplicate.permission": "Nu ai voie să duplici \"{slug}\"",
+ "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}\"",
"error.page.notFound": "Pagina \"{slug}\" nu a fost găsită",
"error.page.num.invalid": "Te rog introdu un număr de sortare valid. Numerele nu pot fi negative.",
"error.page.slug.invalid": "Te rog introdu un apendice URL valid",
"error.page.slug.maxlength": "Lungimea slug-ului nu poate depăși \"{length}\"",
"error.page.sort.permission": "Pagina \"{slug}\" nu poate fi sortată",
- "error.page.status.invalid": "Te rog stabilește un status valid pentru pagină",
+ "error.page.status.invalid": "Te rog stabilește o stare validă pentru pagină",
"error.page.undefined": "Pagina nu a fost găsită",
"error.page.update.permission": "Nu ai voie să actualizezi \"{slug}\"",
@@ -163,6 +217,8 @@
"error.site.changeTitle.permission": "Nu ai voie să schimbi titlul site-ului",
"error.site.update.permission": "Nu ai voie să actualizezi site-ul",
+ "error.structure.validation": "Există o eroare la câmpul \"{field}\" pe rândul {index}",
+
"error.template.default.notFound": "Șablonul implicit nu există",
"error.unexpected": "S-a produs o eroare neașteptată! Activează modul depanare pentru mai multe informații: https://getkirby.com/docs/reference/system/options/debug",
@@ -195,8 +251,10 @@
"error.validation.accepted": "Te rog confirmă",
"error.validation.alpha": "Te rog introdu doar caractere din intervalul a-z",
"error.validation.alphanum": "Te rog introdu doar caractere din intervalul a-z sau cifre 0-9",
+ "error.validation.anchor": "Te rog introdu o ancoră corectă pentru legătură",
"error.validation.between": "Te rog introdu o valoare între \"{min}\" și \"{max}\"",
"error.validation.boolean": "Te rog confirmă sau refuză",
+ "error.validation.color": "Te rog introdu o culoare validă în formatul {format}",
"error.validation.contains": "Te rog introdu o valoare care conține \"{needle}\"",
"error.validation.date": "Te rog introdu o dată validă",
"error.validation.date.after": "Te rog introdu o dată după {date}",
@@ -211,6 +269,7 @@
"error.validation.integer": "Te rog introdu un număr întreg valid",
"error.validation.ip": "Te rog introdu o adresă IP validă",
"error.validation.less": "Te rog introdu o valoare mai mică decât {max}",
+ "error.validation.linkType": "Tipul de legătură nu este permis",
"error.validation.match": "Valoarea nu se potrivește cu forma așteptată",
"error.validation.max": "Te rog introdu o valoare mai mică sau egală cu {max}",
"error.validation.maxlength": "Te rog introdu o valoare mai scurtă. (max. {max} caractere)",
@@ -227,15 +286,18 @@
"error.validation.same": "Te rog introdu \"{other}\"",
"error.validation.size": "Dimensiunea valorii trebuie să fie \"{size}\"",
"error.validation.startswith": "Valoarea trebuie să înceapă cu \"{start}\"",
+ "error.validation.tel": "Te rog introdu un număr de telefon neformatat",
"error.validation.time": "Te rog introdu un timp valid",
"error.validation.time.after": "Te rog introdu un timp după {time}",
"error.validation.time.before": "Te rog introdu un timp înainte de {time}",
"error.validation.time.between": "Te rog introdu un timp între {min} și {max}",
+ "error.validation.uuid": "Te rog introdu un UUID valid",
"error.validation.url": "Te rog introdu un URL valid",
"expand": "Extinde",
"expand.all": "Extinde toate",
+ "field.invalid": "Câmpul este nevalid",
"field.required": "Acest câmp este necesar",
"field.blocks.changeType": "Schimbă tipul",
"field.blocks.code.name": "Cod",
@@ -245,8 +307,9 @@
"field.blocks.delete.confirm.all": "Chiar vrei să ștergi toate blocurile?",
"field.blocks.delete.confirm.selected": "Chiar vrei să ștergi blocurile selectate?",
"field.blocks.empty": "Niciun bloc deocamdată",
+ "field.blocks.fieldsets.empty": "Niciun set de câmpuri încă",
"field.blocks.fieldsets.label": "Te rog alege un tip de bloc …",
- "field.blocks.fieldsets.paste": "Apasă {{ shortcut }} pentru a insera/aduce blocuri din clipboard-ul tău",
+ "field.blocks.fieldsets.paste": "Apasă {{ shortcut }} pentru a importa aranjamente/blocuri din clipboard Doar cele permise pentru câmpul curent vor fi inserate.",
"field.blocks.gallery.name": "Galerie",
"field.blocks.gallery.images.empty": "Nicio imagine deocamdată",
"field.blocks.gallery.images.label": "Imagini",
@@ -254,11 +317,16 @@
"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",
"field.blocks.image.link": "Legătură",
"field.blocks.image.location": "Localizare",
+ "field.blocks.image.location.internal": "Acest website",
+ "field.blocks.image.location.external": "Sursă externă",
"field.blocks.image.name": "Imagine",
"field.blocks.image.placeholder": "Alege o imagine",
"field.blocks.image.ratio": "Raport",
@@ -275,38 +343,72 @@
"field.blocks.quote.citation.placeholder": "de …",
"field.blocks.text.name": "Text",
"field.blocks.text.placeholder": "Text …",
+ "field.blocks.video.autoplay": "Autoredare",
"field.blocks.video.caption": "Etichetă",
+ "field.blocks.video.controls": "Controale",
+ "field.blocks.video.location": "Localizare",
+ "field.blocks.video.loop": "În buclă",
+ "field.blocks.video.muted": "Fără sonor",
"field.blocks.video.name": "Video",
"field.blocks.video.placeholder": "Introdu URL-ul video-ului",
+ "field.blocks.video.poster": "Poster",
+ "field.blocks.video.preload": "Preîncarcă",
"field.blocks.video.url.label": "URL-ul video-ului",
"field.blocks.video.url.placeholder": "https://youtube.com/?v=",
- "field.files.empty": "Niciun fișier selectat deocamdată",
+ "field.entries.delete.confirm.all": "Chiar vrei să ștergi toate înregistrările?",
+ "field.entries.empty": "Nicio înregistrare deocamdată",
+ "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",
"field.layout.delete.confirm": "Chiar vrei să ștergi acest aranjament?",
+ "field.layout.delete.confirm.all": "Chiar vrei să ștergi toate aranjamentele?",
"field.layout.empty": "Niciun rând deocamdată",
"field.layout.select": "Alege un aranjament",
"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ă",
+
+ "file": "Fișier",
"file.blueprint": "Acest fișier nu are încă un Blueprint. Poți să-l definești în /site/blueprints/files/{blueprint}.yml",
+ "file.changeTemplate": "Schimbă șablonul",
+ "file.changeTemplate.notice": "Schimbarea șablonului fișierului va înlătura conținutul câmpurilor care nu se potrivesc ca tip. Dacă noul șablon definește anumite reguli, de ex. dimensiuni de imagini, acestea vor fi de asemenea aplicate în mod ireversibil. Folosiți cu prudență.",
"file.delete.confirm": "Chiar vrei să ștergi
{filename}?",
+ "file.focus.placeholder": "Stabilește punct focal",
+ "file.focus.reset": "Înlătură punct focal",
+ "file.focus.title": "Focalizare",
"file.sort": "Schimbă poziția",
"files": "Fișiere",
+ "files.delete.confirm.selected": "Do you really want to delete the selected files? This action cannot be undone.",
"files.empty": "Niciun fișier deocamdată",
+ "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ță",
"import": "Importă",
"info": "Informații",
"insert": "Inserează",
@@ -324,7 +426,6 @@
"installation.issues.mbstring": "Extensia MB String
este necesară",
"installation.issues.media": "Directorul /media
nu există sau nu are permisiuni de scriere",
"installation.issues.php": "Asigură-te că folosești PHP 8+
",
- "installation.issues.server": "Kirby are nevoie de Apache
, Nginx
sau Caddy
",
"installation.issues.sessions": "Directorul /site/sessions
folder nu există sau nu are permisiuni de scriere",
"language": "Limba",
@@ -332,6 +433,7 @@
"language.convert": "Stabilește ca implicit",
"language.convert.confirm": "{secret}
în aplicația dvs. de autentificare.",
+ "login.totp.enable.confirm.headline": "2. Confirmați cu codul generat",
+ "login.totp.enable.confirm.text": "Aplicația dvs. generează un nou cod de unică folosință la fiecare 30 de secunde. Introduceți codul curent pentru a finaliza configurarea:",
+ "login.totp.enable.confirm.label": "Cod curent",
+ "login.totp.enable.confirm.help": "După această configurare, vă vom solicita un cod de unică folosință de fiecare dată când vă autentificați.",
+ "login.totp.enable.success": "Codurile de unică folosință activate",
+ "login.totp.disable.option": "Dezactivați codurile de unică folosință",
+ "login.totp.disable.label": "Introduceți parola pentru a dezactiva codurile de unică folosință",
+ "login.totp.disable.help": "În viitor, va fi solicitat un al doilea factor diferit, cum ar fi un cod de autentificare trimis prin e-mail, atunci când vă autentificați. Puteți configura din nou codurile de unică folosință oricând mai târziu.",
+ "login.totp.disable.admin": "
Subpaginile vor fi de asemenea toate șterse.",
"page.delete.confirm.title": "Introdu titlul paginii pentru a confirma",
- "page.draft.create": "Creează ciornă",
"page.duplicate.appendix": "Copiază",
"page.duplicate.files": "Copiază fișierele",
"page.duplicate.pages": "Copiază paginile",
+ "page.move": "Mută pagina",
"page.sort": "Schimbă poziția",
- "page.status": "Status",
+ "page.status": "Stare",
"page.status.draft": "Ciornă",
"page.status.draft.description": "Pagina este în modul ciornă și va fi vizibilă doar editorilor conectați sau printr-un link secret",
"page.status.listed": "Publică",
"page.status.listed.description": "Pagina este publică, accesibilă oricui",
- "page.status.unlisted": "Nelistate",
+ "page.status.unlisted": "Nelistată",
"page.status.unlisted.description": "Pagina este accesibilă doar prin URL",
"pages": "Pagini",
+ "pages.delete.confirm.selected": "Do you really want to delete the selected pages? This action cannot be undone.",
"pages.empty": "Nicio pagină deocamdată",
"pages.status.draft": "Ciorne",
"pages.status.listed": "Publicate",
@@ -460,14 +615,21 @@
"password": "Parola",
"paste": "Inserează",
"paste.after": "Inserează după",
+ "paste.success": "inserate {count}!",
"pixel": "Pixel",
"plugin": "Plugin",
"plugins": "Plugin-uri",
"prev": "Precedenta",
"preview": "Previzualizează",
+
+ "publish": "Publish",
+ "published": "Publicate",
+
"remove": "Înlătură",
"rename": "Redenumește",
- "replace": "Înlocuiește",
+ "renew": "Reînnoiți",
+ "replace": "\u00cenlocuie\u0219te",
+ "replace.with": "Înlocuiește cu",
"retry": "Încearcă din nou",
"revert": "Renunță",
"revert.confirm": "Chiar vrei să ștergi toate schimbările nesalvate?",
@@ -481,12 +643,15 @@
"role.nobody.description": "Acesta este un rol de rezervă fără nicio permisiune.",
"role.nobody.title": "Nimeni",
- "save": "Salvează",
+ "save": "Salveaz\u0103",
+ "saved": "Saved",
"search": "Caută",
+ "searching": "Searching",
"search.min": "Introdu {min} caractere pentru a căuta",
- "search.all": "Arată toate",
+ "search.all": "Afișați toate {count} rezultatele",
"search.results.none": "Niciun rezultat",
+ "section.invalid": "Secțiunea este nevalidă",
"section.required": "Această secțiune este necesară",
"security": "Securitate",
@@ -498,19 +663,28 @@
"size": "Dimensiune",
"slug": "Apendicele URL",
"sort": "Sortare",
+ "sort.drag": "Trage pt. a sorta …",
+ "split": "Împarte",
"stats.empty": "Niciun raport",
+ "status": "Stare",
+
+ "system.info.copy": "Copy info",
+ "system.info.copied": "System info copied",
"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.",
+ "system.issues.eol.php": "Versiunea PHP instalată { release } a ajuns la sfârșitul vieții și nu va mai primi actualizări de securitate",
"system.issues.debug": "Modul depanare trebuie să fie oprit în producție",
"system.issues.git": "Directorul .git pare să fie expus",
"system.issues.https": "Recomandăm HTTPS pentru toate site-urile.",
"system.issues.kirby": "Directorul Kirby pare să fie expus",
+ "system.issues.local": "The site is running locally with relaxed security checks",
"system.issues.site": "Directorul site pare să fie expus",
+ "system.issues.vue.compiler": "The Vue template compiler is enabled",
"system.issues.vulnerability.kirby": "Instalarea ta ar putea fi afectată de următoarea vulnerabilitate ({ severity } severity): { description }",
"system.issues.vulnerability.plugin": "Instalarea ta ar putea fi afectată de următoarea vulnerabilitate în plugin-ul { plugin } ({ severity } severity): { description }",
- "system.updateStatus": "Status actualizare",
+ "system.updateStatus": "Starea actualizării",
"system.updateStatus.error": "Nu am putut căuta actualizări",
"system.updateStatus.not-vulnerable": "Nicio vulnerabilitate cunoscută",
"system.updateStatus.security-update": "Actualizare gratuită de securitate { version } disponibilă",
@@ -520,10 +694,19 @@
"system.updateStatus.update": "Actualizare gratuită { version } disponibilă",
"system.updateStatus.upgrade": "Actualizare { version } disponibilă",
- "title": "Titlu",
+ "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",
+ "toolbar.button.clear": "Elimină formatarea",
"toolbar.button.code": "Cod",
"toolbar.button.bold": "Bold",
"toolbar.button.email": "Adresă e-mail",
@@ -538,18 +721,22 @@
"toolbar.button.file": "Fișier",
"toolbar.button.file.select": "Alege un fișier",
"toolbar.button.file.upload": "Încarcă un fișier",
- "toolbar.button.link": "Legătură",
+ "toolbar.button.link": "Link",
"toolbar.button.paragraph": "Paragraf",
"toolbar.button.strike": "Tăiat",
+ "toolbar.button.sub": "Indice",
+ "toolbar.button.sup": "Exponent",
"toolbar.button.ol": "Listă ordonată",
"toolbar.button.underline": "Subliniat",
"toolbar.button.ul": "Listă cu puncte",
"translation.author": "Echipa Kirby",
"translation.direction": "ltr",
- "translation.name": "Română",
+ "translation.name": "Rom\u00e2n\u0103",
"translation.locale": "ro_RO",
+ "type": "Tip",
+
"upload": "Încarcă",
"upload.error.cantMove": "Fișierul încărcat nu a putut fi mutat",
"upload.error.cantWrite": "Nu s-a putut scrie fișierul pe disc",
@@ -574,6 +761,7 @@
"user.changeLanguage": "Schimbă limba",
"user.changeName": "Redenumește acest utilizator",
"user.changePassword": "Schimbă parola",
+ "user.changePassword.current": "Your current password",
"user.changePassword.new": "Parola nouă",
"user.changePassword.new.confirm": "Confirmă parola nouă...",
"user.changeRole": "Schimbă rolul",
@@ -585,11 +773,14 @@
"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.account": "Contul tău",
+ "view": "View",
+ "view.account": "Contul t\u0103u",
"view.installation": "Instalare",
"view.languages": "Limbi",
"view.resetPassword": "Restabilește parola",
diff --git a/kirby/i18n/translations/ru.json b/kirby/i18n/translations/ru.json
index 4500b0d..dc10016 100644
--- a/kirby/i18n/translations/ru.json
+++ b/kirby/i18n/translations/ru.json
@@ -3,64 +3,82 @@
"account.delete": "Удалить пользователя",
"account.delete.confirm": "Вы действительно хотите удалить свой аккаунт? Вы сразу покинете панель управления, а аккаунт нельзя будет восстановить.",
- "add": "Добавить",
+ "activate": "Активировать",
+ "add": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c",
+ "alpha": "Альфа",
"author": "Автор",
- "avatar": "Аватар",
+ "avatar": "\u0410\u0432\u0430\u0442\u0430\u0440 (\u0444\u043e\u0442\u043e)",
"back": "Назад",
- "cancel": "Отменить",
- "change": "Изменить",
- "close": "Закрыть",
+ "cancel": "\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c",
+ "change": "\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c",
+ "close": "\u0417\u0430\u043a\u0440\u044b\u0442\u044c",
+ "changes": "Изменения",
"confirm": "Ок",
"collapse": "Свернуть",
"collapse.all": "Свернуть все",
- "copy": "(копия)",
+ "color": "Цвет",
+ "coordinates": "Координаты",
+ "copy": "Скопировать",
"copy.all": "Копировать все",
+ "copy.success": "{count} скопировано",
+ "copy.success.multiple": "{count} скопировано",
+ "copy.url": "Скопировать ссылку",
"create": "Создать",
+ "custom": "Другое",
"date": "Дата",
"date.select": "Выберите дату",
"day": "День",
- "days.fri": "Пт",
- "days.mon": "Пн",
- "days.sat": "Сб",
- "days.sun": "Сб",
- "days.thu": "Чт",
- "days.tue": "Вт",
- "days.wed": "Ср",
+ "days.fri": "\u041f\u0442",
+ "days.mon": "\u041f\u043d",
+ "days.sat": "\u0421\u0431",
+ "days.sun": "\u0412\u0441",
+ "days.thu": "\u0427\u0442",
+ "days.tue": "\u0412\u0442",
+ "days.wed": "\u0421\u0440",
"debugging": "Отладка",
- "delete": "Удалить",
+ "delete": "\u0423\u0434\u0430\u043b\u0438\u0442\u044c",
"delete.all": "Удалить все",
+ "dialog.fields.empty": "Для этого окна нет полей",
"dialog.files.empty": "Нет файлов для выбора",
"dialog.pages.empty": "Нет страниц для выбора",
+ "dialog.text.empty": "Окно не содержит никакого текста",
"dialog.users.empty": "Нет пользователей для выбора",
"dimensions": "Размеры",
+ "disable": "Отключить",
"disabled": "Отключено",
- "discard": "Сброс",
+ "discard": "\u0421\u0431\u0440\u043e\u0441",
+
+ "drawer.fields.empty": "Нет полей",
+
+ "domain": "Домен",
"download": "Скачать",
"duplicate": "Дублировать",
- "edit": "Редактировать",
+ "edit": "\u041d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c",
"email": "Email",
"email.placeholder": "mail@example.com",
+ "enter": "Введите",
"entries": "Записи",
"entry": "Запись",
"environment": "Среда",
+ "error": "Ошибка",
"error.access.code": "Неверный код",
- "error.access.login": "Неправильный логин",
+ "error.access.login": "Неверный логин или пароль",
"error.access.panel": "У вас нет права доступа к панели",
"error.access.view": "У вас нет прав доступа к этой части панели",
"error.avatar.create.fail": "Не удалось загрузить фотографию профиля",
- "error.avatar.delete.fail": "Аватар (фото) к аккаунту не может быть удален",
+ "error.avatar.delete.fail": "\u0410\u0432\u0430\u0442\u0430\u0440 (\u0444\u043e\u0442\u043e) \u043a \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0443 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0443\u0434\u0430\u043b\u0435\u043d",
"error.avatar.dimensions.invalid": "Пожалуйста, сделайте чтобы ширина или высота фотографии была меньше 3000 пикселей",
"error.avatar.mime.forbidden": "Фотография профиля должна быть JPEG или PNG",
@@ -74,13 +92,31 @@
"error.cache.type.invalid": "Неверный тип кэша: \"{type}\"",
+ "error.content.lock.delete": "Версия заблокирована и не может быть удалена",
+ "error.content.lock.move": "Исходная версия заблокирована и не может быть перемещена",
+ "error.content.lock.publish": "Эта версия уже опубликована",
+ "error.content.lock.replace": "Версия заблокирована и не может быть заменена",
+ "error.content.lock.update": "Версия заблокирована и не может быть обновлена",
+
+ "error.entries.max.plural": "Вы не должны добавлять более {max} записей",
+ "error.entries.max.singular": "Вы должны добавить не более одной записи",
+ "error.entries.min.plural": "Вы должны добавить не менее {min} записей",
+ "error.entries.min.singular": "Вы должны добавить хотя бы одну запись",
+ "error.entries.supports": "\"{type}\" тип поля не поддерживается для поля записи",
+ "error.entries.validation": "Ошибка в поле \"{field}\" в строке {index}",
+
"error.email.preset.notFound": "Email-шаблон \"{name}\" не найден",
"error.field.converter.invalid": "Неверный конвертер \"{converter}\"",
+ "error.field.link.options": "Недопустимые параметры: {options}",
"error.field.type.missing": "Поле \"{ name }\": тип поля \"{ type }\" не существует",
"error.file.changeName.empty": "Название не может быть пустым",
"error.file.changeName.permission": "У вас нет права изменить название \"{filename}\"",
+ "error.file.changeTemplate.invalid": "Шаблон для файла \"{id}\" не может быть изменен на \"{template}\" (допускается: \"{blueprints}\")",
+ "error.file.changeTemplate.permission": "У вас нет права изменять шаблон для файла \"{id}\"",
+
+ "error.file.delete.multiple": "Не все файлы удалось удалить. Попробуйте удалить каждый оставшийся файл по отдельности, чтобы увидеть конкретную ошибку, которая мешает удалению.",
"error.file.duplicate": "Файл с названием \"{filename}\" уже есть",
"error.file.extension.forbidden": "Расширение файла \"{extension}\" неразрешено",
"error.file.extension.invalid": "Неверное разрешение: {extension}",
@@ -95,33 +131,43 @@
"error.file.minheight": "Высота файла должна быть хотя бы {height} px",
"error.file.minsize": "Файл слишком маленький",
"error.file.minwidth": "Ширина файла должна быть хотя бы {width} px",
+ "error.file.name.unique": "Название файла должно быть уникальным",
"error.file.name.missing": "Название файла не может быть пустым",
- "error.file.notFound": "Файл не найден",
+ "error.file.notFound": "\u0424\u0430\u0439\u043b \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d",
"error.file.orientation": "Ориентация изображения должна быть \"{orientation}\"",
+ "error.file.sort.permission": "Вам не разрешается изменять сортировку \"{filename}\"",
"error.file.type.forbidden": "У вас нет права загружать файлы {type}",
"error.file.type.invalid": "Неверный тип файла: {type}",
- "error.file.undefined": "Файл не найден",
+ "error.file.undefined": "\u0424\u0430\u0439\u043b \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d",
"error.form.incomplete": "Пожалуйста, исправьте все ошибки в форме",
"error.form.notSaved": "Форма не может быть сохранена",
"error.language.code": "Пожалуйста, впишите правильный код языка",
+ "error.language.create.permission": "You are not allowed to create a language",
+ "error.language.delete.permission": "You are not allowed to delete the language",
"error.language.duplicate": "Язык уже есть",
"error.language.name": "Пожалуйста, впишите правильное название языка",
"error.language.notFound": "Не получилось найти этот язык",
+ "error.language.update.permission": "You are not allowed to update the language",
"error.layout.validation.block": "Ошибка в поле \"{field}\" в блоке {blockIndex} типа \"{fieldset}\" внутри разметки {layoutIndex}",
"error.layout.validation.settings": "Ошибка в настройках макета {index}",
- "error.license.format": "Пожалуйста, введите правильный лицензионный код",
+ "error.license.domain": "Лицензия на этот домен отсутствует",
"error.license.email": "Пожалуйста, введите правильный Email",
+ "error.license.format": "Пожалуйста, введите правильный лицензионный код",
"error.license.verification": "Лицензия не подтверждена",
+ "error.login.totp.confirm.invalid": "Неверный код",
+ "error.login.totp.confirm.missing": "Пожалуйста, введите текущий код",
+
"error.object.validation": "Ошибка в поле \"{label}\":\n{message}",
"error.offline": "Панель управления не в сети",
- "error.page.changeSlug.permission": "Вы не можете изменить URL этой страницы",
+ "error.page.changeSlug.permission": "\u0412\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c URL \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b",
+ "error.page.changeSlug.reserved": "Путь к страницам верхнего уровня не должен начинаться с \"{path}\"",
"error.page.changeStatus.incomplete": "На странице есть ошибки и поэтому ее нельзя опубликовать",
"error.page.changeStatus.permission": "Невозможно изменить статус для этой страницы",
"error.page.changeStatus.toDraft.invalid": "Невозможно конвертировать в черновик страницу \"{slug}\"",
@@ -133,17 +179,25 @@
"error.page.delete": "Невозможно удалить страницу \"{slug}\"",
"error.page.delete.confirm": "Впишите название страницы чтобы подтвердить",
"error.page.delete.hasChildren": "У страницы есть внутренние страницы, поэтому ее невозможно удалить",
+ "error.page.delete.multiple": "Не все страницы удалось удалить. Попробуйте удалить каждую оставшуюся страницу по отдельности, чтобы увидеть конкретную ошибку, которая мешает удалению.",
"error.page.delete.permission": "У вас нет права удалить \"{slug}\"",
"error.page.draft.duplicate": "Черновик страницы с URL \"{slug}\" уже есть",
"error.page.duplicate": "Страница с URL \"{slug}\" уже есть",
"error.page.duplicate.permission": "У вас нет права дублировать \"{slug}\"",
- "error.page.notFound": "Страница не найдена",
+ "error.page.move.ancestor": "Невозможно переместить страницу саму в себя",
+ "error.page.move.directory": "Невозможно перенести каталог страницы",
+ "error.page.move.duplicate": "Подстраница с URL \"{slug}\" уже существует",
+ "error.page.move.noSections": "Страница \"{parent}\" не может быть родительской для какой-либо страницы, поскольку в ее разметке отсутствуют какие-либо разделы страниц",
+ "error.page.move.notFound": "Перемещенная страница не найдена",
+ "error.page.move.permission": "У вас нет права переместить \"{slug}\"",
+ "error.page.move.template": "Шаблон \"{template}\" не разрешен для подстраниц \"{parent}\"",
+ "error.page.notFound": "\u0421\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u0430",
"error.page.num.invalid": "Пожалуйста, впишите правильное число сортировки. Число не может быть отрицательным.",
"error.page.slug.invalid": "Пожалуйста, введите правильный URL",
"error.page.slug.maxlength": "Длина ссылки должна быть короче \"{length}\" символов",
"error.page.sort.permission": "Невозможно сортировать страницу \"{slug}\"",
"error.page.status.invalid": "Пожалуйста, установите верный статус страницы",
- "error.page.undefined": "Страница не найдена",
+ "error.page.undefined": "\u0421\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u0430",
"error.page.update.permission": "У вас нет права обновить \"{slug}\"",
"error.section.files.max.plural": "Нельзя добавить больше чем {max} файлов в секции \"{section}\"",
@@ -163,6 +217,8 @@
"error.site.changeTitle.permission": "У вас нет права изменять название сайта",
"error.site.update.permission": "У вас нет права обновить сайт",
+ "error.structure.validation": "Ошибка в поле \"{field}\" в строке {index}",
+
"error.template.default.notFound": "Нет шаблона по умолчанию",
"error.unexpected": "Произошла непредвиденная ошибка! Включите режим отладки для получения дополнительной информации: https://getkirby.com/docs/reference/system/options/debug",
@@ -175,8 +231,8 @@
"error.user.changeRole.permission": "У вас нет права изменять роль пользователя \"{name}\"",
"error.user.changeRole.toAdmin": "У вас нет прав предоставить роль администратора",
"error.user.create.permission": "У вас нет права создать этого пользователя",
- "error.user.delete": "Аккаунт не может быть удален",
- "error.user.delete.lastAdmin": "Вы не можете удалить единственного администратора",
+ "error.user.delete": "\u0410\u043a\u043a\u0430\u0443\u043d\u0442 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0443\u0434\u0430\u043b\u0435\u043d",
+ "error.user.delete.lastAdmin": "\u0412\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430",
"error.user.delete.lastUser": "Нельзя удалить единственного пользователя",
"error.user.delete.permission": "У вас нет права удалить пользователя \"{name}\"",
"error.user.duplicate": "Пользователь с Email \"{email}\" уже есть",
@@ -185,7 +241,7 @@
"error.user.notFound": "Пользователь \"{name}\" не найден",
"error.user.password.excessive": "Пожалуйста, введите верный пароль. Длина паролей не должна превышать 1000 символов.",
"error.user.password.invalid": "Пожалуйста, введите правильный пароль. Он должен состоять минимум из 8 символов.",
- "error.user.password.notSame": "Пожалуйста, подтвердите пароль",
+ "error.user.password.notSame": "\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u0435 \u043f\u0430\u0440\u043e\u043b\u044c",
"error.user.password.undefined": "У пользователя нет пароля",
"error.user.password.wrong": "Неверный пароль",
"error.user.role.invalid": "Введите правильную роль",
@@ -195,8 +251,10 @@
"error.validation.accepted": "Пожалуйста, подтвердите",
"error.validation.alpha": "Пожалуйста, введите только буквы a-z",
"error.validation.alphanum": "Пожалуйста, введите только буквы a-z или числа 0-9",
+ "error.validation.anchor": "Пожалуйста, введите правильную ссылку на якорь",
"error.validation.between": "Пожалуйста, введите значение от \"{min}\" до \"{max}\"",
"error.validation.boolean": "Пожалуйста, подтвердите или отмените",
+ "error.validation.color": "Пожалуйста, введите верное значение цвета в формате {format}",
"error.validation.contains": "Пожалуйста, впишите значение, которое содержит \"{needle}\"",
"error.validation.date": "Пожалуйста, укажите правильную дату",
"error.validation.date.after": "Пожалуйста, укажите дату после {date}",
@@ -211,6 +269,7 @@
"error.validation.integer": "Пожалуйста, введите правильное целое число",
"error.validation.ip": "Пожалуйста, введите правильный IP адрес",
"error.validation.less": "Пожалуйста, введите значение меньше чем {max}",
+ "error.validation.linkType": "Тип ссылки не допускается",
"error.validation.match": "Значение не соответствует ожидаемому шаблону",
"error.validation.max": "Пожалуйста, введите значение равное или больше чем {max}",
"error.validation.maxlength": "Пожалуйста, введите значение короче (макс. {max} символов)",
@@ -227,15 +286,18 @@
"error.validation.same": "Пожалуйста, введите \"{other}\"",
"error.validation.size": "Значение размера должно быть \"{size}\"",
"error.validation.startswith": "Значение должно начинаться с \"{start}\"",
+ "error.validation.tel": "Пожалуйста, введите неформатированный номер телефона",
"error.validation.time": "Пожалуйста, введите правильную дату",
"error.validation.time.after": "Пожалуйста, укажите время после {time}",
"error.validation.time.before": "Пожалуйста, укажите время до {time}",
"error.validation.time.between": "Пожалуйста, укажите время между {min} и {max}",
+ "error.validation.uuid": "Пожалуйста, введите правильный UUID",
"error.validation.url": "Пожалуйста, введите правильный URL",
"expand": "Развернуть",
"expand.all": "Развернуть все",
+ "field.invalid": "Неверное поле",
"field.required": "Поле обязательно",
"field.blocks.changeType": "Изменить тип",
"field.blocks.code.name": "Код",
@@ -245,8 +307,9 @@
"field.blocks.delete.confirm.all": "Вы действительно хотите удалить все блоки?",
"field.blocks.delete.confirm.selected": "Вы действительно хотите удалить эти блоки?",
"field.blocks.empty": "Блоков нет",
+ "field.blocks.fieldsets.empty": "Пока нет наборов полей",
"field.blocks.fieldsets.label": "Пожалуйста, выберите тип блока…",
- "field.blocks.fieldsets.paste": "Нажмите {{ shortcut }} чтобы вставить/импортировать блоки из буфера памяти",
+ "field.blocks.fieldsets.paste": "Нажмите {{ shortcut }} чтобы импортировать макеты/блоки из буфера обмена Будут вставлены только те, которые разрешены в текущем поле.",
"field.blocks.gallery.name": "Галерея",
"field.blocks.gallery.images.empty": "Изображений нет",
"field.blocks.gallery.images.label": "Изображения",
@@ -254,11 +317,16 @@
"field.blocks.heading.name": "Заголовок",
"field.blocks.heading.text": "Текст",
"field.blocks.heading.placeholder": "Заголовок …",
+ "field.blocks.figure.back.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": "Обрезать",
"field.blocks.image.link": "Ссылка",
"field.blocks.image.location": "Расположение",
+ "field.blocks.image.location.internal": "Этот сайт",
+ "field.blocks.image.location.external": "Внешний источник",
"field.blocks.image.name": "Картинка",
"field.blocks.image.placeholder": "Выберите изображение",
"field.blocks.image.ratio": "Соотношение",
@@ -275,41 +343,75 @@
"field.blocks.quote.citation.placeholder": "Автор …",
"field.blocks.text.name": "Текст",
"field.blocks.text.placeholder": "Текст …",
+ "field.blocks.video.autoplay": "Автовоспроизведение",
"field.blocks.video.caption": "Подпись",
+ "field.blocks.video.controls": "Элементы управления",
+ "field.blocks.video.location": "Расположение",
+ "field.blocks.video.loop": "Зациклить",
+ "field.blocks.video.muted": "Без звука",
"field.blocks.video.name": "Видео",
"field.blocks.video.placeholder": "Введите ссылку на видео",
+ "field.blocks.video.poster": "Обложка",
+ "field.blocks.video.preload": "Предзагрузка",
"field.blocks.video.url.label": "Ссылка на видео",
"field.blocks.video.url.placeholder": "https://youtube.com/?v=",
- "field.files.empty": "Файлы не выбраны",
+ "field.entries.delete.confirm.all": "Вы действительно хотите удалить все значения?",
+ "field.entries.empty": "Записей нет",
+ "field.files.empty": "Файлы не выбраны",
+ "field.files.empty.single": "Файл не выбран",
+
+ "field.layout.change": "Изменить разметку",
"field.layout.delete": "Удалить разметку",
"field.layout.delete.confirm": "Вы действительно хотите удалить эту разметку?",
+ "field.layout.delete.confirm.all": "Вы действительно хотите удалить всю разметку?",
"field.layout.empty": "Строк нет",
"field.layout.select": "Выберите разметку",
"field.object.empty": "Пока нет информации",
"field.pages.empty": "Страницы не выбраны",
+ "field.pages.empty.single": "Страница не выбрана",
"field.structure.delete.confirm": "Вы точно хотите удалить эту запись?",
"field.structure.delete.confirm.all": "Вы действительно хотите удалить все значения?",
"field.structure.empty": "Записей нет",
"field.users.empty": "Пользователей нет",
+ "field.users.empty.single": "Пользователь не выбран",
+ "fields.empty": "Ещё нет полей",
+
+ "file": "Файл",
"file.blueprint": "У файла пока нет разметки. Вы можете определить новые секции и поля разметки в /site/blueprints/files/{blueprint}.yml",
+ "file.changeTemplate": "Изменить шаблон",
+ "file.changeTemplate.notice": "Изменение шаблона файла приведет к удалению содержимого полей, которые не совпадут по типу. Если у нового шаблона есть определенные условия, например размер изображения, они также будут применены. Используйте с осторожностью.",
"file.delete.confirm": "Вы точно хотите удалить файл
{filename}?",
+ "file.focus.placeholder": "Установить фокусную точку",
+ "file.focus.reset": "Удалить фокусную точку",
+ "file.focus.title": "Фокусная точка",
"file.sort": "Изменить позицию",
"files": "Файлы",
- "files.empty": "Ещё нет файлов",
+ "files.delete.confirm.selected": "Вы действительно хотите удалить выбранные файлы? Это действие невозможно отменить.",
+ "files.empty": "Еще нет файлов",
+
+ "filter": "Фильтр",
+
+ "form.discard": " Отменить изменения",
+ "form.discard.confirm": " Вы действительно хотите отменить все свои изменения?",
+ "form.locked": "Этот контент для вас недоступен, так как в сейчас он редактируется другим пользователем",
+ "form.unsaved": "Текущие изменения не сохранены",
+ "form.preview": "Предпросмотр",
+ "form.preview.draft": "Посмотреть черновик",
"hide": "Скрыть",
"hour": "Час",
+ "hue": "Оттенок",
"import": "Импортировать",
"info": "Информация",
- "insert": "Вставить",
+ "insert": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c",
"insert.after": "Вставить ниже",
"insert.before": "Вставить выше",
"install": "Установить",
@@ -324,14 +426,14 @@
"installation.issues.mbstring": "Расширение MB String
необходимо",
"installation.issues.media": "Каталог /media
не существует или нет прав записи",
"installation.issues.php": "Убедитесь, что используется PHP 8+
",
- "installation.issues.server": "Kirby требует Apache
, Nginx
или Caddy
",
"installation.issues.sessions": "Каталог /site/sessions
не существует или нет прав записи",
- "language": "Язык",
+ "language": "\u042f\u0437\u044b\u043a",
"language.code": "Код",
"language.convert": "Установить по умолчанию",
"language.convert.confirm": "
Все внутренние страницы так же будут удалены.",
"page.delete.confirm.title": "Напишите название страницы, чтобы подтвердить",
- "page.draft.create": "Создать черновик",
"page.duplicate.appendix": "(копия)",
"page.duplicate.files": "Копировать файлы",
"page.duplicate.pages": "Копировать страницы",
+ "page.move": "Переместить",
"page.sort": "Изменить позицию",
"page.status": "Статус",
"page.status.draft": "Черновик",
@@ -450,29 +604,37 @@
"page.status.unlisted.description": "Страница доступна только по URL",
"pages": "Страницы",
+ "pages.delete.confirm.selected": "Вы действительно хотите удалить выбранные страницы? Это действие невозможно отменить.",
"pages.empty": "Страниц нет",
"pages.status.draft": "Черновики",
"pages.status.listed": "Опубликовано",
- "pages.status.unlisted": "Скрыта",
+ "pages.status.unlisted": "Скрытая",
"pagination.page": "Страница",
- "password": "Пароль",
+ "password": "\u041f\u0430\u0440\u043e\u043b\u044c",
"paste": "Вставить",
"paste.after": "Вставить после",
+ "paste.success": "{count} вставлено",
"pixel": "Пиксель",
"plugin": "Расширение",
"plugins": "Плагины",
"prev": "Предыдущий",
"preview": "Предпросмотр",
+
+ "publish": "Опубликовать",
+ "published": "Опубликовано",
+
"remove": "Удалить",
"rename": "Переименовать",
- "replace": "Заменить",
- "retry": "Повторить",
- "revert": "Сброс",
+ "renew": "Обновить",
+ "replace": "\u0417\u0430\u043c\u0435\u043d\u0438\u0442\u044c",
+ "replace.with": "Заменить на",
+ "retry": "\u041f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c",
+ "revert": "\u0421\u0431\u0440\u043e\u0441",
"revert.confirm": "Вы действительно хотите удалить все несохраненные изменения?",
- "role": "Роль",
+ "role": "\u0420\u043e\u043b\u044c",
"role.admin.description": "Администратор имеет все права",
"role.admin.title": "Администратор",
"role.all": "Все",
@@ -481,12 +643,15 @@
"role.nobody.description": "Эта роль применяется если у пользователя нет никаких прав",
"role.nobody.title": "Никто",
- "save": "Сохранить",
+ "save": "\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c",
+ "saved": "Сохранено",
"search": "Поиск",
+ "searching": "Поиск",
"search.min": "Введите хотя бы {min} символов для поиска",
- "search.all": "Показать все",
+ "search.all": "Показать все результаты ({count})",
"search.results.none": "Нет результатов",
+ "section.invalid": "Неверная секция",
"section.required": "Секция обязательна",
"security": "Безопасность",
@@ -498,16 +663,25 @@
"size": "Размер",
"slug": "URL",
"sort": "Сортировать",
+ "sort.drag": "Потяните для сортировки…",
+ "split": "Разделить",
"stats.empty": "Статистики нет",
+ "status": "Статус",
+
+ "system.info.copy": "Copy info",
+ "system.info.copied": "System info copied",
"system.issues.content": "Похоже, к папке content есть несанкционированный доступ",
"system.issues.eol.kirby": "Срок службы установленной вами версии Kirby истек, и она больше не будет получать обновления для системы безопасности",
"system.issues.eol.plugin": "Срок службы установленной вами версии плагина { plugin } истек, и он не будет получать дальнейших обновлений для системы безопасности",
+ "system.issues.eol.php": "Ваша версия PHP { release } устарела и не будет получать дальнейших обновлений для системы безопасности",
"system.issues.debug": "Включен режим отладки (debugging). Используйте его только при разработке.",
"system.issues.git": "Похоже, к папке .git есть несанкционированный доступ",
"system.issues.https": "Рекомендуется использовать HTTPS на всех сайтах",
"system.issues.kirby": "Похоже, к папке kirby есть несанкционированный доступ",
+ "system.issues.local": "Сайт работает локально, с ослабленными проверками безопасности",
"system.issues.site": "Похоже, к папке site есть несанкционированный доступ",
+ "system.issues.vue.compiler": "Включен компилятор шаблонов Vue",
"system.issues.vulnerability.kirby": "Обнаружена уязвимость уровня \"{ severity }\": { description }",
"system.issues.vulnerability.plugin": "В плагине { plugin } обнаружена уязвимость уровня \"{ severity }\": { description }",
"system.updateStatus": "Обновить статус",
@@ -520,12 +694,21 @@
"system.updateStatus.update": "Доступно бесплатное обновление { version }",
"system.updateStatus.upgrade": "Доступно обновление { version }",
+ "tel": "Телефон",
+ "tel.placeholder": "+79123456789",
+ "template": "\u0428\u0430\u0431\u043b\u043e\u043d",
+
+ "theme": "Тема",
+ "theme.light": "Светлая тема",
+ "theme.dark": "Темная тема",
+ "theme.automatic": "Как в системе",
+
"title": "Название",
- "template": "Шаблон",
"today": "Сегодня",
+ "toolbar.button.clear": "Очистить форматирование",
"toolbar.button.code": "Код",
- "toolbar.button.bold": "Жирный шрифт",
+ "toolbar.button.bold": "\u0416\u0438\u0440\u043d\u044b\u0439 \u0448\u0440\u0438\u0444\u0442",
"toolbar.button.email": "Email",
"toolbar.button.headings": "Заголовки",
"toolbar.button.heading.1": "Заголовок 1",
@@ -538,9 +721,11 @@
"toolbar.button.file": "Файл",
"toolbar.button.file.select": "Выбрать файл",
"toolbar.button.file.upload": "Загрузить файл",
- "toolbar.button.link": "Ссылка",
+ "toolbar.button.link": "\u0421\u0441\u044b\u043b\u043a\u0430",
"toolbar.button.paragraph": "Параграф",
"toolbar.button.strike": "Зачёркнутый",
+ "toolbar.button.sub": "Нижний индекс",
+ "toolbar.button.sup": "Верхний индекс",
"toolbar.button.ol": "Нумерованный список",
"toolbar.button.underline": "Подчёркнутый",
"toolbar.button.ul": "Маркированный список",
@@ -550,6 +735,8 @@
"translation.name": "Русский (Russian)",
"translation.locale": "ru_RU",
+ "type": "Введите",
+
"upload": "Загрузить",
"upload.error.cantMove": "Не удалось переместить загруженный файл",
"upload.error.cantWrite": "Не получилось записать файл на диск",
@@ -574,28 +761,32 @@
"user.changeLanguage": "Изменить язык",
"user.changeName": "Переименовать пользователя",
"user.changePassword": "Изменить пароль",
+ "user.changePassword.current": "Ваш текущий пароль",
"user.changePassword.new": "Новый пароль",
"user.changePassword.new.confirm": "Подтвердить новый пароль…",
"user.changeRole": "Изменить роль",
"user.changeRole.select": "Выбрать новую роль",
- "user.create": "Добавить пользователя",
+ "user.create": "Добавить нового пользователя",
"user.delete": "Удалить этого пользователя",
"user.delete.confirm": "Вы действительно хотите аккаунт
{email}?",
"users": "Пользователи",
"version": "Версия",
+ "version.changes": "Измененная версия",
+ "version.compare": "Сравнить версии",
"version.current": "Текущая версия",
"version.latest": "Последняя версия",
"versionInformation": "Информация о версии",
+ "view": "Посмотреть",
"view.account": "Ваш аккаунт",
- "view.installation": "Установка",
+ "view.installation": "\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430",
"view.languages": "Языки",
"view.resetPassword": "Сбросить пароль",
"view.site": "Сайт",
"view.system": "Система",
- "view.users": "Пользователи",
+ "view.users": "\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438",
"welcome": "Добро пожаловать",
"year": "Год",
diff --git a/kirby/i18n/translations/sk.json b/kirby/i18n/translations/sk.json
index d3b3145..5b341aa 100644
--- a/kirby/i18n/translations/sk.json
+++ b/kirby/i18n/translations/sk.json
@@ -3,57 +3,75 @@
"account.delete": "Zmazať váš účet",
"account.delete.confirm": "Do you really want to delete your account? You will be logged out immediately. Your account cannot be recovered.",
+ "activate": "Activate",
"add": "Pridať",
+ "alpha": "Alpha",
"author": "Autor",
"avatar": "Profilový obrázok",
- "back": "Back",
- "cancel": "Cancel",
+ "back": "Späť",
+ "cancel": "Zrušiť",
"change": "Zmeniť",
"close": "Zavrieť",
+ "changes": "Zmeny",
"confirm": "Ok",
"collapse": "Zabaliť",
"collapse.all": "Zabaliť všetky",
+ "color": "Farba",
+ "coordinates": "Koordináty",
"copy": "Kopírovať",
"copy.all": "Copy all",
+ "copy.success": "{count} copied!",
+ "copy.success.multiple": "{count} copied!",
+ "copy.url": "Copy URL",
"create": "Vytvoriť",
+ "custom": "Custom",
"date": "Dátum",
"date.select": "Zvoliť dátum",
"day": "Deň",
"days.fri": "Pia",
- "days.mon": "Mon",
+ "days.mon": "Pon",
"days.sat": "Sob",
"days.sun": "Ned",
"days.thu": "Štv",
"days.tue": "Uto",
- "days.wed": "Wed",
+ "days.wed": "Str",
"debugging": "Debugging",
"delete": "Zmazať",
"delete.all": "Zmazať všetky",
+ "dialog.fields.empty": "This dialog has no fields",
"dialog.files.empty": "No files to select",
"dialog.pages.empty": "No pages to select",
+ "dialog.text.empty": "This dialog does not define any text",
"dialog.users.empty": "Zvolení neboli žiadni uživátelia",
"dimensions": "Rozmery",
+ "disable": "Disable",
"disabled": "Disabled",
- "discard": "Discard",
+ "discard": "Zahodiť",
+
+ "drawer.fields.empty": "This drawer has no fields",
+
+ "domain": "Domain",
"download": "Stiahnuť",
"duplicate": "Duplikovať",
- "edit": "Edit",
+ "edit": "Upraviť",
"email": "E-mail",
"email.placeholder": "mail@example.com",
+ "enter": "Enter",
"entries": "Entries",
"entry": "Entry",
"environment": "Environment",
+ "error": "Chyba",
"error.access.code": "Neplatný kód",
"error.access.login": "Neplatné prihlásenie",
"error.access.panel": "Nemáte povolenie na prístup do Panel-u",
@@ -61,7 +79,7 @@
"error.avatar.create.fail": "Profilový obrázok sa nepodarilo nahrať",
"error.avatar.delete.fail": "Profilový obrázok sa nepodarilo zmazať",
- "error.avatar.dimensions.invalid": "Prosím, dodržte, aby šírka a výška profilového obrázka bola menšia ako 3000 pixelov.",
+ "error.avatar.dimensions.invalid": "Prosím, dodržte, aby šírka a výška profilového obrázka bola menšia ako 3000 pixelov",
"error.avatar.mime.forbidden": "Profilový obrázok musí byť súbor JPEG alebo PNG.",
"error.blueprint.notFound": "Blueprint \"{name}\" sa nepodarilo načítať",
@@ -74,13 +92,31 @@
"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.entries.max.plural": "You must not add more than {max} entries",
+ "error.entries.max.singular": "You must not add more than one entry",
+ "error.entries.min.plural": "You must add at least {min} entries",
+ "error.entries.min.singular": "You must add at least one entry",
+ "error.entries.supports": "\"{type}\" field type is not supported for the entries field",
+ "error.entries.validation": "There's an error on the \"{field}\" field in row {index}",
+
"error.email.preset.notFound": "E-mailovú predvoľbu \"{name}\" nie je možné nájsť",
"error.field.converter.invalid": "Neplatný 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": "Meno nesmie byť prázdne",
"error.file.changeName.permission": "Nemáte povolenie na zmenu názvu pre \"{filename}\"",
+ "error.file.changeTemplate.invalid": "The template for the file \"{id}\" cannot be changed to \"{template}\" (valid: \"{blueprints}\")",
+ "error.file.changeTemplate.permission": "You are not allowed to change the template for the file \"{id}\"",
+
+ "error.file.delete.multiple": "Not all files could be deleted. Try each remaining file individually to see the specific error that prevents deletion.",
"error.file.duplicate": "Súbor s názvom \"{filename}\" už existuje",
"error.file.extension.forbidden": "Prípona \"{extension}\" nie je povolená",
"error.file.extension.invalid": "Neplatná prípona: \"{extension}\"",
@@ -95,9 +131,11 @@
"error.file.minheight": "Výška obrázku musí byť aspoň \"{height}\" pixelov",
"error.file.minsize": "Súbor je príliš malý",
"error.file.minwidth": "Šírka obrázku musí byť aspoň \"{width}\" pixelov",
+ "error.file.name.unique": "The filename must be unique",
"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ť",
@@ -106,22 +144,30 @@
"error.form.notSaved": "Formulár sa nepodarilo uložiť",
"error.language.code": "Please enter a valid code for the language",
+ "error.language.create.permission": "You are not allowed to create a language",
+ "error.language.delete.permission": "You are not allowed to delete the language",
"error.language.duplicate": "The language already exists",
"error.language.name": "Please enter a valid name for the language",
"error.language.notFound": "The language could not be found",
+ "error.language.update.permission": "You are not allowed to update the language",
"error.layout.validation.block": "There's an error on the \"{field}\" field in block {blockIndex} using the \"{fieldset}\" block type in layout {layoutIndex}",
"error.layout.validation.settings": "There's an error in layout {index} settings",
- "error.license.format": "Please enter a valid license key",
+ "error.license.domain": "The domain for the license is missing",
"error.license.email": "Prosím, zadajte platnú e-mailovú adresu",
+ "error.license.format": "Please enter a valid license code",
"error.license.verification": "The license could not be verified",
+ "error.login.totp.confirm.invalid": "Neplatný kód",
+ "error.login.totp.confirm.missing": "Please enter the current code",
+
"error.object.validation": "There’s an error in the \"{label}\" field:\n{message}",
"error.offline": "The Panel is currently offline",
"error.page.changeSlug.permission": "Nemáte povolenie na zmenu URL príponu pre \"{slug}\"",
+ "error.page.changeSlug.reserved": "The path of top-level pages must not start with \"{path}\"",
"error.page.changeStatus.incomplete": "Stránka obsahuje chyby a nemôže byť zverejnená",
"error.page.changeStatus.permission": "Status tejto stránky nemôže byť zmenený",
"error.page.changeStatus.toDraft.invalid": "Stránka \"{slug}\" nemôže byť zmenená na koncept.",
@@ -133,10 +179,18 @@
"error.page.delete": "Stránku \"{slug}\" nie je možné vymazať",
"error.page.delete.confirm": "Prosím, zadajte titulok stránky pre potvrdenie",
"error.page.delete.hasChildren": "Táto stránka obsahuje podstránky a nemôže byť zmazaná",
+ "error.page.delete.multiple": "Not all pages could be deleted. Try each remaining page individually to see the specific error that prevents deletion.",
"error.page.delete.permission": "Nemáte povolenie na zmazanie stránky \"{slug}\"",
"error.page.draft.duplicate": "Koncept stránky s URL appendix-om \"{slug}\" už existuje",
"error.page.duplicate": "Stránka s URL appendix-om \"{slug}\" už existuje",
"error.page.duplicate.permission": "You are not allowed to duplicate \"{slug}\"",
+ "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}\"",
"error.page.notFound": "Stránku \"{slug}\" nie je možné nájsť",
"error.page.num.invalid": "Prosím, zadajte platné číslo pre radenie. Čísla nemôžu byť záporné.",
"error.page.slug.invalid": "Please enter a valid URL appendix",
@@ -163,6 +217,8 @@
"error.site.changeTitle.permission": "Nemáte povolenie na zmenu titulku pre portál",
"error.site.update.permission": "Nemáte povolenie na aktualizovanie portálu",
+ "error.structure.validation": "There's an error on the \"{field}\" field in row {index}",
+
"error.template.default.notFound": "Predvolená šablóna neexistuje",
"error.unexpected": "An unexpected error occurred! Enable debug mode for more info: https://getkirby.com/docs/reference/system/options/debug",
@@ -195,8 +251,10 @@
"error.validation.accepted": "Prosím, potvrďte",
"error.validation.alpha": "Prosím, zadajte len znaky z hlások a-z",
"error.validation.alphanum": "Prosím, zadajte len znaky z hlások a-z a čísloviek 0-9",
+ "error.validation.anchor": "Please enter a correct link anchor",
"error.validation.between": "Prosím, zadajte hodnotu od \"{min}\" do \"{max}\"",
"error.validation.boolean": "Prosím, potvrďte alebo odmietnite",
+ "error.validation.color": "Please enter a valid color in the {format} format",
"error.validation.contains": "Prosím, zadajte hodnotu, ktorá obsahuje \"{needle}\"",
"error.validation.date": "Prosím, zadajte platný dátum",
"error.validation.date.after": "Please enter a date after {date}",
@@ -211,6 +269,7 @@
"error.validation.integer": "Prosím, zadajte platné celé číslo",
"error.validation.ip": "Prosím, zadajte platnú e-mailovú adresu",
"error.validation.less": "Prosím, zadajte hodnotu menšiu ako {max}",
+ "error.validation.linkType": "The link type is not allowed",
"error.validation.match": "Hodnota nezodpovedá očakávanému vzoru",
"error.validation.max": "Prosím, zadajte hodnotu rovnú alebo menšiu ako {max}",
"error.validation.maxlength": "Prosím, zadajte kratšiu hodnotu. (max. {max} charaktery/ov)",
@@ -227,15 +286,18 @@
"error.validation.same": "Prosím, zadajte \"{other}\"",
"error.validation.size": "Veľkosť hodnoty musí byť \"{size}\"",
"error.validation.startswith": "Hodnota musí začínať s \"{start}\"",
+ "error.validation.tel": "Please enter an unformatted phone number",
"error.validation.time": "Prosím, zadajte platný čas",
"error.validation.time.after": "Please enter a time after {time}",
"error.validation.time.before": "Please enter a time before {time}",
"error.validation.time.between": "Please enter a time between {min} and {max}",
+ "error.validation.uuid": "Please enter a valid UUID",
"error.validation.url": "Prosím, zadajte platnú URL",
"expand": "Rozbaliť",
"expand.all": "Rozbaliť všetky",
+ "field.invalid": "The field is invalid",
"field.required": "The field is required",
"field.blocks.changeType": "Change type",
"field.blocks.code.name": "Kód",
@@ -245,8 +307,9 @@
"field.blocks.delete.confirm.all": "Naozaj chcete zmazať všetky bloky?",
"field.blocks.delete.confirm.selected": "Naozaj chcete zmazať vybrané bloky?",
"field.blocks.empty": "No blocks yet",
+ "field.blocks.fieldsets.empty": "No fieldsets yet",
"field.blocks.fieldsets.label": "Please select a block type …",
- "field.blocks.fieldsets.paste": "Press {{ shortcut }} to paste/import blocks from your clipboard",
+ "field.blocks.fieldsets.paste": "Press {{ shortcut }} to import layouts/blocks from your clipboard Only those allowed in the current field will get inserted.",
"field.blocks.gallery.name": "Galéria",
"field.blocks.gallery.images.empty": "No images yet",
"field.blocks.gallery.images.label": "Obrázky",
@@ -254,11 +317,16 @@
"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",
"field.blocks.image.link": "Odkaz",
"field.blocks.image.location": "Poloha",
+ "field.blocks.image.location.internal": "This website",
+ "field.blocks.image.location.external": "External source",
"field.blocks.image.name": "Obrázok",
"field.blocks.image.placeholder": "Select an image",
"field.blocks.image.ratio": "Ratio",
@@ -275,38 +343,72 @@
"field.blocks.quote.citation.placeholder": "by …",
"field.blocks.text.name": "Text",
"field.blocks.text.placeholder": "Text …",
+ "field.blocks.video.autoplay": "Autoplay",
"field.blocks.video.caption": "Popis",
+ "field.blocks.video.controls": "Controls",
+ "field.blocks.video.location": "Poloha",
+ "field.blocks.video.loop": "Loop",
+ "field.blocks.video.muted": "Muted",
"field.blocks.video.name": "Video",
"field.blocks.video.placeholder": "Enter a video URL",
+ "field.blocks.video.poster": "Poster",
+ "field.blocks.video.preload": "Preload",
"field.blocks.video.url.label": "Video-URL",
"field.blocks.video.url.placeholder": "https://youtube.com/?v=",
- "field.files.empty": "Žiadne súbory zatiaľ neboli zvolené",
+ "field.entries.delete.confirm.all": "Do you really want to delete all entries?",
+ "field.entries.empty": "Zatiaľ žiadne údaje",
+ "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",
"field.layout.delete.confirm": "Do you really want to delete this layout?",
+ "field.layout.delete.confirm.all": "Do you really want to delete all layouts?",
"field.layout.empty": "No rows yet",
"field.layout.select": "Select a layout",
"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",
+
+ "file": "Súbor",
"file.blueprint": "This file has no blueprint yet. You can define the setup in /site/blueprints/files/{blueprint}.yml",
+ "file.changeTemplate": "Zmeniť šablónu",
+ "file.changeTemplate.notice": "Changing the file's template will remove content for fields that don't match in type. If the new template defines certain rules, e.g. image dimensions, those will also be applied irreversibly. Use with caution.",
"file.delete.confirm": "Ste si istý, že chcete zmazať
{filename}?",
+ "file.focus.placeholder": "Set focal point",
+ "file.focus.reset": "Remove focal point",
+ "file.focus.title": "Focus",
"file.sort": "Change position",
- "files": "Files",
+ "files": "Súbory",
+ "files.delete.confirm.selected": "Do you really want to delete the selected files? This action cannot be undone.",
"files.empty": "Zatiaľ žiadne súbory",
+ "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",
"import": "Import",
"info": "Info",
"insert": "Vložiť",
@@ -324,7 +426,6 @@
"installation.issues.mbstring": "MB String
rozšírenie je povinné",
"installation.issues.media": "Priečinok /media
neexistuje alebo nie je nastavený ako zapisovateľný",
"installation.issues.php": "Uistite sa, že používate PHP 8+
",
- "installation.issues.server": "Kirby vyžaduje Apache
, Nginx
alebo Caddy
",
"installation.issues.sessions": "Priečinok /site/sessions
neexistuje alebo nie je nastavený ako zapisovateľný",
"language": "Jazyk",
@@ -332,6 +433,7 @@
"language.convert": "Nastaviť ako predvolené",
"language.convert.confirm": "{secret}
manually to your authenticator app.",
+ "login.totp.enable.confirm.headline": "2. Confirm with generated code",
+ "login.totp.enable.confirm.text": "Your app generates a new one‑time code every 30 seconds. Enter the current code to complete the setup:",
+ "login.totp.enable.confirm.label": "Current code",
+ "login.totp.enable.confirm.help": "After this setup, we will ask you for a one‑time code every time you log in.",
+ "login.totp.enable.success": "One‑time codes enabled",
+ "login.totp.disable.option": "Disable one‑time codes",
+ "login.totp.disable.label": "Enter your password to disable one‑time codes",
+ "login.totp.disable.help": "In the future, a different second factor like a login code sent via email will be requested when you log in. You can always set up one‑time codes again later.",
+ "login.totp.disable.admin": "
Všetky podstránky budú taktiež zmazané.",
"page.delete.confirm.title": "Pre potvrdenie zadajte titulok stránky",
- "page.draft.create": "Vytvoriť koncept",
"page.duplicate.appendix": "Kopírovať",
"page.duplicate.files": "Copy files",
"page.duplicate.pages": "Copy pages",
+ "page.move": "Move page",
"page.sort": "Change position",
"page.status": "Status",
"page.status.draft": "Koncept",
@@ -449,7 +603,8 @@
"page.status.unlisted": "Skryté",
"page.status.unlisted.description": "Stránka je prístupná len prostredníctvom priamej URL",
- "pages": "Pages",
+ "pages": "Stránky",
+ "pages.delete.confirm.selected": "Do you really want to delete the selected pages? This action cannot be undone.",
"pages.empty": "Zatiaľ žiadne stránky",
"pages.status.draft": "Koncepty",
"pages.status.listed": "Zverejnené",
@@ -457,17 +612,24 @@
"pagination.page": "Stránka",
- "password": "Password",
+ "password": "Heslo",
"paste": "Paste",
"paste.after": "Paste after",
+ "paste.success": "{count} pasted!",
"pixel": "Pixel",
"plugin": "Plugin",
"plugins": "Plugins",
"prev": "Predchádzajúci",
"preview": "Preview",
+
+ "publish": "Publish",
+ "published": "Zverejnené",
+
"remove": "Odstrániť",
"rename": "Premenovať",
- "replace": "Replace",
+ "renew": "Renew",
+ "replace": "Nahradiť",
+ "replace.with": "Replace with",
"retry": "Skúsiť ešte raz",
"revert": "Vrátiť späť",
"revert.confirm": "Do you really want to delete all unsaved changes?",
@@ -482,11 +644,14 @@
"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",
+ "search.all": "Show all {count} results",
"search.results.none": "No results",
+ "section.invalid": "The section is invalid",
"section.required": "The section is required",
"security": "Security",
@@ -498,16 +663,25 @@
"size": "Veľkosť",
"slug": "URL appendix",
"sort": "Zoradiť",
+ "sort.drag": "Drag to sort …",
+ "split": "Split",
"stats.empty": "No reports",
+ "status": "Status",
+
+ "system.info.copy": "Copy info",
+ "system.info.copied": "System info copied",
"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",
+ "system.issues.eol.php": "Your installed PHP release { release } has reached end-of-life and will not receive further security updates",
"system.issues.debug": "Debugging must be turned off in production",
"system.issues.git": "The .git folder seems to be exposed",
"system.issues.https": "We recommend HTTPS for all your sites",
"system.issues.kirby": "The kirby folder seems to be exposed",
+ "system.issues.local": "The site is running locally with relaxed security checks",
"system.issues.site": "The site folder seems to be exposed",
+ "system.issues.vue.compiler": "The Vue template compiler is enabled",
"system.issues.vulnerability.kirby": "Your installation might be affected by the following vulnerability ({ severity } severity): { description }",
"system.issues.vulnerability.plugin": "Your installation might be affected by the following vulnerability in the { plugin } plugin ({ severity } severity): { description }",
"system.updateStatus": "Update status",
@@ -520,10 +694,19 @@
"system.updateStatus.update": "Free update { version } available",
"system.updateStatus.upgrade": "Upgrade { version } available",
- "title": "Titulok",
+ "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",
+ "toolbar.button.clear": "Clear formatting",
"toolbar.button.code": "Kód",
"toolbar.button.bold": "Tučný",
"toolbar.button.email": "E-mail",
@@ -541,6 +724,8 @@
"toolbar.button.link": "Odkaz",
"toolbar.button.paragraph": "Paragraph",
"toolbar.button.strike": "Strike-through",
+ "toolbar.button.sub": "Subscript",
+ "toolbar.button.sup": "Superscript",
"toolbar.button.ol": "Číslovaný zoznam",
"toolbar.button.underline": "Underline",
"toolbar.button.ul": "Odrážkový zoznam",
@@ -550,6 +735,8 @@
"translation.name": "Slovensky",
"translation.locale": "sk_SK",
+ "type": "Type",
+
"upload": "Nahrať",
"upload.error.cantMove": "The uploaded file could not be moved",
"upload.error.cantWrite": "Failed to write file to disk",
@@ -574,6 +761,7 @@
"user.changeLanguage": "Zmeniť jazyk",
"user.changeName": "Premenovať tohto užívateľa",
"user.changePassword": "Zmeniť heslo",
+ "user.changePassword.current": "Your current password",
"user.changePassword.new": "Nové heslo",
"user.changePassword.new.confirm": "Potvrdiť nové heslo...",
"user.changeRole": "Zmeniť rolu",
@@ -585,10 +773,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/kirby/i18n/translations/sv_SE.json b/kirby/i18n/translations/sv_SE.json
index be0fcd7..91b0971 100644
--- a/kirby/i18n/translations/sv_SE.json
+++ b/kirby/i18n/translations/sv_SE.json
@@ -3,57 +3,75 @@
"account.delete": "Radera ditt konto",
"account.delete.confirm": "Vill du verkligen radera ditt konto? Du kommer att loggas ut omedelbart. Ditt konto kan inte återställas.",
- "add": "Lägg till",
+ "activate": "Aktivera",
+ "add": "L\u00e4gg till",
+ "alpha": "Alpha",
"author": "Författare",
"avatar": "Profilbild",
"back": "Tillbaka",
"cancel": "Avbryt",
- "change": "Ändra",
- "close": "Stäng",
- "confirm": "Ok",
+ "change": "\u00c4ndra",
+ "close": "St\u00e4ng",
+ "changes": "Ändringar",
+ "confirm": "Spara",
"collapse": "Kollapsa",
"collapse.all": "Kollapsa alla",
+ "color": "Färg",
+ "coordinates": "Koordinater",
"copy": "Kopiera",
"copy.all": "Kopiera alla",
+ "copy.success": "{count} kopierad!",
+ "copy.success.multiple": "{count} kopierad!",
+ "copy.url": "Kopiera URL",
"create": "Skapa",
+ "custom": "Anpassad",
"date": "Datum",
"date.select": "Välj ett datum",
"day": "Dag",
- "days.fri": "fre",
- "days.mon": "mån",
- "days.sat": "lör",
- "days.sun": "sön",
- "days.thu": "tors",
- "days.tue": "tis",
- "days.wed": "ons",
+ "days.fri": "Fre",
+ "days.mon": "M\u00e5n",
+ "days.sat": "L\u00f6r",
+ "days.sun": "S\u00f6n",
+ "days.thu": "Tor",
+ "days.tue": "Tis",
+ "days.wed": "Ons",
"debugging": "Felsökning",
"delete": "Radera",
"delete.all": "Radera allt",
+ "dialog.fields.empty": "Den här dialogrutan har inga fält",
"dialog.files.empty": "Inga filer att välja",
"dialog.pages.empty": "Inga sidor att välja",
+ "dialog.text.empty": "Den här dialogrutan definierar ingen text",
"dialog.users.empty": "Inga användare att välja",
"dimensions": "Dimensioner",
+ "disable": "Inaktivera",
"disabled": "Inaktiverad",
"discard": "Kassera",
+
+ "drawer.fields.empty": "Denna vy har inga fält",
+
+ "domain": "Domän",
"download": "Ladda ner",
"duplicate": "Duplicera",
"edit": "Redigera",
"email": "E-postadress",
- "email.placeholder": "mail@example.com",
+ "email.placeholder": "namn@exempel.se",
+ "enter": "Enter",
"entries": "Poster",
"entry": "Post",
"environment": "Miljö",
+ "error": "Fel",
"error.access.code": "Ogiltig kod",
"error.access.login": "Ogiltig inloggning",
"error.access.panel": "Du saknar behörighet att nå panelen",
@@ -74,13 +92,31 @@
"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.entries.max.plural": "You must not add more than {max} entries",
+ "error.entries.max.singular": "You must not add more than one entry",
+ "error.entries.min.plural": "You must add at least {min} entries",
+ "error.entries.min.singular": "You must add at least one entry",
+ "error.entries.supports": "\"{type}\" field type is not supported for the entries field",
+ "error.entries.validation": "Det finns ett fel i fältet \"{field}\" i rad {index}",
+
"error.email.preset.notFound": "E-postförinställningen \"{name}\" kan inte hittas",
"error.field.converter.invalid": "Ogiltig omvandlare \"{converter}\"",
+ "error.field.link.options": "Invalid options: {options}",
"error.field.type.missing": "Fältet \"{ name }\": Fälttypen \"{ type }\" finns inte",
"error.file.changeName.empty": "Namnet får inte vara tomt",
"error.file.changeName.permission": "Du har inte behörighet att ändra namnet på \"{filename}\"",
+ "error.file.changeTemplate.invalid": "Mallen för filen \"{id}\" kan inte ändras till \"{template}\" (giltiga mallar: \"{blueprints}\")",
+ "error.file.changeTemplate.permission": "Du saknar behörighet för att ändra mallen för filen \"{id}\"",
+
+ "error.file.delete.multiple": "Not all files could be deleted. Try each remaining file individually to see the specific error that prevents deletion.",
"error.file.duplicate": "En fil med namnet \"{filename}\" existerar redan",
"error.file.extension.forbidden": "Filändelsen \"{extension}\" är inte tillåten",
"error.file.extension.invalid": "Ogiltig filändelse: {extension}",
@@ -95,9 +131,11 @@
"error.file.minheight": "Bildens höjd måste vara minst {height} pixlar",
"error.file.minsize": "Filen är för liten",
"error.file.minwidth": "Bildens bredd måste vara minst {width} pixlar",
+ "error.file.name.unique": "Filnamnet måste vara unikt",
"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",
@@ -106,22 +144,30 @@
"error.form.notSaved": "Formuläret kunde inte sparas",
"error.language.code": "Ange en giltig kod för språket",
+ "error.language.create.permission": "Du saknar behörighet att skapa ett nytt språk",
+ "error.language.delete.permission": "Du saknar behörighet att radera språket",
"error.language.duplicate": "Språket finns redan",
"error.language.name": "Ange ett giltigt namn för språket",
"error.language.notFound": "Språket hittades inte",
+ "error.language.update.permission": "Du saknar behörighet att redigera språket",
"error.layout.validation.block": "Det finns ett fel i fältet \"{field}\" i blocket {blockIndex} med blocktypen \"{fieldset}\" i layouten {layoutIndex}",
"error.layout.validation.settings": "Det finns ett fel i inställningarna för layout {index}",
- "error.license.format": "Ange en giltig licensnyckel",
+ "error.license.domain": "Domänen för licensen saknas",
"error.license.email": "Ange en giltig e-postadress",
+ "error.license.format": "Ange en giltig licenskod",
"error.license.verification": "Licensen kunde inte verifieras",
+ "error.login.totp.confirm.invalid": "Ogiltig kod",
+ "error.login.totp.confirm.missing": "Vänligen ange den aktuella koden",
+
"error.object.validation": "Det finns ett fel i fältet \"{label}\":\n{message}",
"error.offline": "Panelen är för närvarande offline",
"error.page.changeSlug.permission": "Du har inte behörighet att ändra URL-appendixen för \"{slug}\"",
+ "error.page.changeSlug.reserved": "Sökvägen till sidor på toppnivå får inte börja med \"{path}\"",
"error.page.changeStatus.incomplete": "Sidan innehåller fel och kan inte publiceras",
"error.page.changeStatus.permission": "Statusen för denna sida kan inte ändras",
"error.page.changeStatus.toDraft.invalid": "Statusen för sidan \"{slug}\" kan inte ändras till utkast",
@@ -133,10 +179,18 @@
"error.page.delete": "Sidan \"{slug}\" kan inte raderas",
"error.page.delete.confirm": "Fyll i sidans titel för att bekräfta",
"error.page.delete.hasChildren": "Sidan har undersidor och kan inte raderas",
+ "error.page.delete.multiple": "Not all pages could be deleted. Try each remaining page individually to see the specific error that prevents deletion.",
"error.page.delete.permission": "Du har inte behörighet att radera \"{slug}\"",
"error.page.draft.duplicate": "Ett utkast med URL-appendixen \"{slug}\" existerar redan",
"error.page.duplicate": "En sida med URL-appendixen \"{slug}\" existerar redan",
"error.page.duplicate.permission": "Du har inte behörighet att duplicera \"{slug}\"",
+ "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}\"",
"error.page.notFound": "Sidan \"{slug}\" kan inte hittas",
"error.page.num.invalid": "Ange ett giltigt nummer för sortering. Numret får inte vara negativt.",
"error.page.slug.invalid": "Ange en giltig URL-appendix",
@@ -163,6 +217,8 @@
"error.site.changeTitle.permission": "Du har inte behörighet att ändra titeln på webbplatsen",
"error.site.update.permission": "Du har inte behörighet att uppdatera webbplatsen",
+ "error.structure.validation": "Det finns ett fel i fältet \"{field}\" i rad {index}",
+
"error.template.default.notFound": "Standardmallen finns inte",
"error.unexpected": "Ett oväntat fel uppstod! Aktivera felsökningsläge för mer information: https://getkirby.com/docs/reference/system/options/debug",
@@ -195,8 +251,10 @@
"error.validation.accepted": "Vänligen bekräfta",
"error.validation.alpha": "Ange endast tecken mellan a-z",
"error.validation.alphanum": "Ange endast tecken mellan a-z eller siffror 0-9",
+ "error.validation.anchor": "Vänligen ange en korrekt länk",
"error.validation.between": "Ange ett värde mellan \"{min}\" och \"{max}\"",
"error.validation.boolean": "Bekräfta eller neka",
+ "error.validation.color": "Ange en giltig färg i formatet {format}",
"error.validation.contains": "Ange ett värde som innehåller \"{needle}\"",
"error.validation.date": "Ange ett giltigt datum",
"error.validation.date.after": "Ange ett datum efter {date}",
@@ -211,6 +269,7 @@
"error.validation.integer": "Ange en giltig heltalssiffra",
"error.validation.ip": "Ange en giltig IP-adress",
"error.validation.less": "Ange ett värde lägre än {max}",
+ "error.validation.linkType": "Länktypen är inte tillåten",
"error.validation.match": "Värdet matchar inte det förväntade mönstret",
"error.validation.max": "Ange ett värde som är lika med eller lägre än {max}",
"error.validation.maxlength": "Ange ett kortare värde. (max {max} tecken)",
@@ -227,15 +286,18 @@
"error.validation.same": "Ange \"{other}\"",
"error.validation.size": "Storleken av värdet måste vara \"{size}\"",
"error.validation.startswith": "Värdet måste börja med \"{start}\"",
+ "error.validation.tel": "Ange ett oformaterat telefonnummer",
"error.validation.time": "Ange en giltig tid",
"error.validation.time.after": "Ange en tid efter {time}",
"error.validation.time.before": "Ange en tid före {time}",
"error.validation.time.between": "Ange en tid mellan {min} och {max}",
+ "error.validation.uuid": "Ange ett giltigt UUID",
"error.validation.url": "Ange en giltig URL",
"expand": "Expandera",
"expand.all": "Expandera alla",
+ "field.invalid": "Fältet är ogiltigt",
"field.required": "Fältet krävs",
"field.blocks.changeType": "Ändra typ",
"field.blocks.code.name": "Kod",
@@ -245,8 +307,9 @@
"field.blocks.delete.confirm.all": "Vill du verkligen radera alla block?",
"field.blocks.delete.confirm.selected": "Vill du verkligen radera de valda blocken?",
"field.blocks.empty": "Inga block än",
+ "field.blocks.fieldsets.empty": "Inga fältuppsättningar ännu",
"field.blocks.fieldsets.label": "Välj en typ av block …",
- "field.blocks.fieldsets.paste": "Tryck på {{ shortcut }} för att klistra in/importera block från ditt urklipp",
+ "field.blocks.fieldsets.paste": "Tryck på {{ shortcut }} för att importera layouter/block från urklipp Endast de som är tillåtna i det aktuella fältet kommer att infogas.",
"field.blocks.gallery.name": "Galleri",
"field.blocks.gallery.images.empty": "Inga bilder än",
"field.blocks.gallery.images.label": "Bilder",
@@ -254,11 +317,16 @@
"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",
"field.blocks.image.link": "Länk",
"field.blocks.image.location": "Plats",
+ "field.blocks.image.location.internal": "Denna webbplats",
+ "field.blocks.image.location.external": "Extern källa",
"field.blocks.image.name": "Bild",
"field.blocks.image.placeholder": "Välj en bild",
"field.blocks.image.ratio": "Bildförhållande",
@@ -275,38 +343,72 @@
"field.blocks.quote.citation.placeholder": "av …",
"field.blocks.text.name": "Text",
"field.blocks.text.placeholder": "Text …",
+ "field.blocks.video.autoplay": "Autospela",
"field.blocks.video.caption": "Rubrik",
+ "field.blocks.video.controls": "Kontroller",
+ "field.blocks.video.location": "Plats",
+ "field.blocks.video.loop": "Loopa",
+ "field.blocks.video.muted": "Ljud av",
"field.blocks.video.name": "Video",
"field.blocks.video.placeholder": "Ange en URL till en video",
+ "field.blocks.video.poster": "Stillbild",
+ "field.blocks.video.preload": "Förladda",
"field.blocks.video.url.label": "Video-URL",
"field.blocks.video.url.placeholder": "https://youtube.com/?v=",
- "field.files.empty": "Inga filer valda än",
+ "field.entries.delete.confirm.all": "Vill du verkligen radera alla poster?",
+ "field.entries.empty": "Inga poster än",
+ "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",
"field.layout.delete.confirm": "Vill du verkligen radera denna layout?",
+ "field.layout.delete.confirm.all": "Vill du verkligen ta bort alla layouter?",
"field.layout.empty": "Inga rader än",
"field.layout.select": "Välj en layout",
"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",
+
+ "file": "Fil",
"file.blueprint": "Denna fil har ingen blueprint än. Du kan skapa en i /site/blueprints/files/{blueprint}.yml",
+ "file.changeTemplate": "Ändra mall",
+ "file.changeTemplate.notice": "Att ändra filens mall kommer att ta bort innehåll för fält som inte matchar fältets typ. Om den nya mallen definierar vissa regler, t.ex. bilddimensioner, kommer de också att tillämpas oåterkalleligt. Använd med försiktighet.",
"file.delete.confirm": "Vill du verkligen radera
{filename}?",
+ "file.focus.placeholder": "Ange fokuspunkt",
+ "file.focus.reset": "Ta bort fokuspunkt",
+ "file.focus.title": "Fokus",
"file.sort": "Ändra position",
"files": "Filer",
+ "files.delete.confirm.selected": "Do you really want to delete the selected files? This action cannot be undone.",
"files.empty": "Inga filer än",
+ "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",
"import": "Importera",
"info": "Info",
"insert": "Infoga",
@@ -324,14 +426,14 @@
"installation.issues.mbstring": "Tillägget MB String
krävs",
"installation.issues.media": "Mappen /media
finns inte eller är inte skrivbar",
"installation.issues.php": "Se till att du använder PHP 8+
",
- "installation.issues.server": "Kirby kräver Apache
, Nginx
eller Caddy
",
"installation.issues.sessions": "Mappen /site/sessions
finns inte eller är inte skrivbar",
- "language": "Språk",
+ "language": "Spr\u00e5k",
"language.code": "Kod",
"language.convert": "Ange som standard",
"language.convert.confirm": "{secret}
manuellt i din autentiseringsapp.",
+ "login.totp.enable.confirm.headline": "2. Bekräfta med genererad kod",
+ "login.totp.enable.confirm.text": "Din app genererar en ny engångskod var 30:e sekund. Ange den aktuella koden för att slutföra installationen:",
+ "login.totp.enable.confirm.label": "Nuvarande kod",
+ "login.totp.enable.confirm.help": "Efter denna installation kommer vi att be dig om en engångskod varje gång du loggar in.",
+ "login.totp.enable.success": "Engångskoder aktiverade",
+ "login.totp.disable.option": "Inaktivera engångskoder",
+ "login.totp.disable.label": "Ange ditt lösenord för att inaktivera engångskoder",
+ "login.totp.disable.help": "I fortsättningen kommer en annan andra faktor som en inloggningskod som skickas via e-post att begäras när du loggar in. Du kan alltid ställa in engångskoder igen senare.",
+ "login.totp.disable.admin": "
Alla undersidor kommer också att raderas.",
"page.delete.confirm.title": "Fyll i sidans titel för att bekräfta",
- "page.draft.create": "Skapa utkast",
"page.duplicate.appendix": "Kopiera",
"page.duplicate.files": "Kopiera filer",
"page.duplicate.pages": "Kopiera sidor",
+ "page.move": "Flytta sidan",
"page.sort": "Ändra position",
"page.status": "Status",
"page.status.draft": "Utkast",
@@ -450,25 +604,33 @@
"page.status.unlisted.description": "Sidan är endast åtkomlig via URL",
"pages": "Sidor",
+ "pages.delete.confirm.selected": "Do you really want to delete the selected pages? This action cannot be undone.",
"pages.empty": "Inga sidor än",
"pages.status.draft": "Utkast",
"pages.status.listed": "Publicerade",
- "pages.status.unlisted": "Olistad",
+ "pages.status.unlisted": "Olistade",
"pagination.page": "Sida",
- "password": "Lösenord",
+ "password": "L\u00f6senord",
"paste": "Klistra in",
"paste.after": "Klistra in efter",
+ "paste.success": "{count} har klistrats in!",
"pixel": "Pixel",
"plugin": "Tillägg",
"plugins": "Tillägg",
"prev": "Föregående",
"preview": "Förhandsgranska",
+
+ "publish": "Publicera",
+ "published": "Publicerade",
+
"remove": "Ta bort",
"rename": "Byt namn",
+ "renew": "Förnya",
"replace": "Ersätt",
- "retry": "Försök igen",
+ "replace.with": "Ersätt med",
+ "retry": "F\u00f6rs\u00f6k igen",
"revert": "Återgå",
"revert.confirm": "Vill du verkligen radera alla osparade ändringar?",
@@ -482,11 +644,14 @@
"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",
+ "search.all": "Visa alla {count} resultat",
"search.results.none": "Inga träffar",
+ "section.invalid": "Sektionen är ogiltig",
"section.required": "Sektionen krävs",
"security": "Säkerhet",
@@ -498,16 +663,25 @@
"size": "Storlek",
"slug": "URL-appendix",
"sort": "Sortera",
+ "sort.drag": "Dra för att sortera …",
+ "split": "Dela",
"stats.empty": "Inga rapporter",
+ "status": "Status",
+
+ "system.info.copy": "Kopiera info",
+ "system.info.copied": "Systeminformation kopierad",
"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.",
+ "system.issues.eol.php": "Din installerade PHP-version { release } har nått slutet av sin livslängd och kommer inte att få fler säkerhetsuppdateringar",
"system.issues.debug": "Felsökningsläget måste vara avstängt i produktion",
"system.issues.git": "Mappen .git verkar vara exponerad",
"system.issues.https": "Vi rekommenderar HTTPS för alla dina webbplatser",
"system.issues.kirby": "Mappen kirby verkar vara exponerad",
+ "system.issues.local": "The site is running locally with relaxed security checks",
"system.issues.site": "Mappen site verkar vara exponerad",
+ "system.issues.vue.compiler": "The Vue template compiler is enabled",
"system.issues.vulnerability.kirby": "Din installation kan vara påverkad av följande sårbarhet ({ severity } allvarlighetsgrad): { description }",
"system.issues.vulnerability.plugin": "Din installation kan vara påverkad av följande sårbarhet i tillägget { plugin } ({ severity } allvarlighetsgrad): { description }",
"system.updateStatus": "Uppdateringsstatus",
@@ -520,13 +694,22 @@
"system.updateStatus.update": "Gratis uppdatering { version } tillgänglig",
"system.updateStatus.upgrade": "Uppgradering { version } tillgänglig",
- "title": "Titel",
+ "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",
+ "toolbar.button.clear": "Rensa formatering",
"toolbar.button.code": "Kod",
"toolbar.button.bold": "Fet",
- "toolbar.button.email": "E-postadress",
+ "toolbar.button.email": "E-post",
"toolbar.button.headings": "Rubriker",
"toolbar.button.heading.1": "Rubrik 1",
"toolbar.button.heading.2": "Rubrik 2",
@@ -538,9 +721,11 @@
"toolbar.button.file": "Fil",
"toolbar.button.file.select": "Välj en fil",
"toolbar.button.file.upload": "Ladda upp en fil",
- "toolbar.button.link": "Länk",
+ "toolbar.button.link": "L\u00e4nk",
"toolbar.button.paragraph": "Stycke",
"toolbar.button.strike": "Genomstruken",
+ "toolbar.button.sub": "Nedsänkt",
+ "toolbar.button.sup": "Upphöjd",
"toolbar.button.ol": "Sorterad lista",
"toolbar.button.underline": "Understruken",
"toolbar.button.ul": "Punktlista",
@@ -550,6 +735,8 @@
"translation.name": "Svenska",
"translation.locale": "sv_SE",
+ "type": "Typ",
+
"upload": "Ladda upp",
"upload.error.cantMove": "Den överförda filen kunde inte flyttas",
"upload.error.cantWrite": "Det gick inte att skriva filen till hårddisken",
@@ -574,6 +761,7 @@
"user.changeLanguage": "Ändra språk",
"user.changeName": "Byt namn på denna användare",
"user.changePassword": "Ändra lösenord",
+ "user.changePassword.current": "Your current password",
"user.changePassword.new": "Nytt lösenord",
"user.changePassword.new.confirm": "Bekräfta det nya lösenordet...",
"user.changeRole": "Ändra roll",
@@ -585,17 +773,20 @@
"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",
"view.resetPassword": "Återställ lösenord",
"view.site": "Webbplats",
"view.system": "System",
- "view.users": "Användare",
+ "view.users": "Anv\u00e4ndare",
"welcome": "Välkommen",
"year": "År",
diff --git a/kirby/i18n/translations/tr.json b/kirby/i18n/translations/tr.json
index d4875e2..9684444 100644
--- a/kirby/i18n/translations/tr.json
+++ b/kirby/i18n/translations/tr.json
@@ -3,19 +3,28 @@
"account.delete": "Hesabınızı silin",
"account.delete.confirm": "Hesabınızı gerçekten silmek istiyor musunuz? Oturumunuz hemen sonlandırılacaktır. Hesabınız daha sonra geri alınamaz.",
+ "activate": "Etkinleştir",
"add": "Ekle",
+ "alpha": "Alfa",
"author": "Yazar",
"avatar": "Profil resmi",
"back": "Geri",
- "cancel": "İptal",
- "change": "Değiştir",
+ "cancel": "\u0130ptal",
+ "change": "De\u011fi\u015ftir",
"close": "Kapat",
+ "changes": "Değişiklikler",
"confirm": "Tamam",
"collapse": "Daralt",
"collapse.all": "Tümünü daralt",
- "copy": "Kopya",
+ "color": "Renk",
+ "coordinates": "Koordinatlar",
+ "copy": "Kopyala",
"copy.all": "Tümünü kopyala",
+ "copy.success": "{count} kopyalandı!",
+ "copy.success.multiple": "{count} kopyalandı!",
+ "copy.url": "URL kopyala",
"create": "Oluştur",
+ "custom": "Özel",
"date": "Tarih",
"date.select": "Bir tarih seçiniz",
@@ -27,33 +36,42 @@
"days.sun": "Paz",
"days.thu": "Per",
"days.tue": "Sal",
- "days.wed": "Çar",
+ "days.wed": "\u00c7ar",
"debugging": "Hata ayıklama",
"delete": "Sil",
"delete.all": "Tümünü sil",
+ "dialog.fields.empty": "Bu iletişim kutusunda alan yok",
"dialog.files.empty": "Seçilecek dosya yok",
"dialog.pages.empty": "Seçilecek sayfa yok",
+ "dialog.text.empty": "Bu iletişim kutusu herhangi bir metin tanımlamaz",
"dialog.users.empty": "Seçilecek kullanıcı yok",
"dimensions": "Boyutlar",
+ "disable": "Devre dışı bırak",
"disabled": "Devredışı",
- "discard": "Vazgeç",
+ "discard": "Vazge\u00e7",
+
+ "drawer.fields.empty": "Bu çekmecede alan yok",
+
+ "domain": "Alan adı",
"download": "İndir",
"duplicate": "Kopyala",
- "edit": "Düzenle",
+ "edit": "D\u00fczenle",
- "email": "E-posta",
- "email.placeholder": "mail@example.com",
+ "email": "E-Posta",
+ "email.placeholder": "eposta@ornek.com",
+ "enter": "Giriş",
"entries": "Girdiler",
"entry": "Girdi",
"environment": "Ortam",
+ "error": "Hata",
"error.access.code": "Geçersiz kod",
"error.access.login": "Geçersiz giriş",
"error.access.panel": "Panel'e erişim izniniz yok",
@@ -74,13 +92,31 @@
"error.cache.type.invalid": "Geçersiz önbellek türü \"{type}\"",
+ "error.content.lock.delete": "Bu sürüm kilitlidir ve silinemez",
+ "error.content.lock.move": "Bu kaynak sürümü kilitlidir ve taşınamaz",
+ "error.content.lock.publish": "Bu sürüm zaten yayınlandı",
+ "error.content.lock.replace": "Bu sürüm kilitlidir ve değiştirilemez",
+ "error.content.lock.update": "Bu sürüm kilitlidir ve güncellenemez",
+
+ "error.entries.max.plural": "{max} girdiden fazlasını eklememelisiniz",
+ "error.entries.max.singular": "Birden fazla girdi eklememelisiniz",
+ "error.entries.min.plural": "En az {min} girdi eklemelisiniz",
+ "error.entries.min.singular": "En az bir girdi eklemelisiniz",
+ "error.entries.supports": "\"{type}\" alan türü girdiler alanı için desteklenmiyor",
+ "error.entries.validation": "{index} satırındaki \"{field}\" alanında bir hata var",
+
"error.email.preset.notFound": "\"{name}\" e-posta adresi bulunamadı",
"error.field.converter.invalid": "Geçersiz dönüştürücü \"{converter}\"",
+ "error.field.link.options": "Geçersiz seçenekler: {options}",
"error.field.type.missing": "\"{ name }\" alanı: \"{ type }\" alan türü mevcut değil",
"error.file.changeName.empty": "İsim boş olmamalıdır",
"error.file.changeName.permission": "\"{filename}\" adını değiştiremezsiniz",
+ "error.file.changeTemplate.invalid": "\"{id}\" dosyası için şablon \"{template}\" olarak değiştirilemez (geçerli: \"{blueprints}\")",
+ "error.file.changeTemplate.permission": "\"{id}\" dosyası için şablonu değiştirmenize izin verilmiyor",
+
+ "error.file.delete.multiple": "Tüm dosyalar silinemedi. Silinmeyi engelleyen belirli hatayı görmek için kalan her dosyayı ayrı ayrı deneyin.",
"error.file.duplicate": "\"{filename}\" isimli bir dosya zaten var",
"error.file.extension.forbidden": "\"{extension}\" dosya uzantısına izin verilmiyor",
"error.file.extension.invalid": "Geçersiz uzantı: {extension}",
@@ -95,33 +131,43 @@
"error.file.minheight": "Resmin yüksekliği en az {height} piksel olmalıdır",
"error.file.minsize": "Dosya çok küçük",
"error.file.minwidth": "Resmin genişliği en az {width} piksel olmalıdır",
+ "error.file.name.unique": "Dosya adı benzersiz olmalıdır",
"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": "\"{filename}\" dosyasının sıralamasını değiştiremezsiniz",
"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ı",
+ "error.file.undefined": "Dosya bulunamad\u0131",
"error.form.incomplete": "Lütfen tüm form hatalarını düzeltin...",
"error.form.notSaved": "Form kaydedilemedi",
"error.language.code": "Lütfen dil için geçerli bir kod girin",
+ "error.language.create.permission": "Bir dil oluşturmanıza izin verilmiyor",
+ "error.language.delete.permission": "Dili silmenize izin verilmiyor",
"error.language.duplicate": "Bu dil zaten var",
"error.language.name": "Lütfen dil için geçerli bir isim girin",
"error.language.notFound": "Dil bulunamadı",
+ "error.language.update.permission": "Dili güncellemenize izin verilmiyor",
"error.layout.validation.block": "{layoutIndex}. sıradaki düzende \"{fieldset}\" blok türünü kullanan {blockIndex}. bloktaki \"{field}\" alanında bir hata var",
"error.layout.validation.settings": "{index}. düzen ayarlarında bir hata var",
- "error.license.format": "Lütfen geçerli bir lisans anahtarı girin",
+ "error.license.domain": "Lisans için alan adı eksik",
"error.license.email": "Lütfen geçerli bir e-posta adresi girin",
+ "error.license.format": "Lütfen geçerli bir lisans anahtarı girin",
"error.license.verification": "Lisans doğrulanamadı",
+ "error.login.totp.confirm.invalid": "Geçersiz kod",
+ "error.login.totp.confirm.missing": "Lütfen geçerli kodu girin",
+
"error.object.validation": "\"{label}\" alanında bir hata var:\n{message}",
"error.offline": "Panel şu anda çevrimdışı",
"error.page.changeSlug.permission": "\"{slug}\" uzantısına sahip bu sayfanın adresini değiştirilemez",
+ "error.page.changeSlug.reserved": "Üst düzey sayfaların yolu \"{path}\" ile başlamamalıdır",
"error.page.changeStatus.incomplete": "Sayfada hatalar var ve yayınlanamadı",
"error.page.changeStatus.permission": "Bu sayfanın durumu değiştirilemez",
"error.page.changeStatus.toDraft.invalid": "\"{slug}\" sayfası bir taslak haline dönüştürülemiyor",
@@ -133,17 +179,25 @@
"error.page.delete": "\"{slug}\" sayfası silinemedi",
"error.page.delete.confirm": "Onaylamak için sayfa başlığını girin",
"error.page.delete.hasChildren": "Sayfada alt sayfalar var ve silinemiyor",
+ "error.page.delete.multiple": "Tüm sayfalar silinemedi. Silinmeyi engelleyen belirli hatayı görmek için kalan her sayfayı ayrı ayrı deneyin.",
"error.page.delete.permission": "\"{slug}\" öğesini silmenize izin verilmiyor",
"error.page.draft.duplicate": "\"{slug}\" adres eki olan bir sayfa taslağı zaten mevcut",
"error.page.duplicate": "\"{slug}\" adres eki içeren bir sayfa zaten mevcut",
"error.page.duplicate.permission": "\"{slug}\" öğesini çoğaltmanıza izin verilmiyor",
+ "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": "\"{parent}\" sayfası, planında herhangi bir sayfa bölümü bulunmadığı için herhangi bir sayfanın üst öğesi olamaz",
+ "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",
"error.page.notFound": "\"{slug}\" uzantısındaki sayfa bulunamadı",
"error.page.num.invalid": "Lütfen geçerli bir sıralama numarası girin. Sayılar negatif olmamalıdır.",
"error.page.slug.invalid": "Lütfen geçerli bir URL eki girin",
"error.page.slug.maxlength": "Adres uzantısı \"{length}\" karakterden az olmalıdır",
"error.page.sort.permission": "\"{slug}\" sayfası sıralanamıyor",
"error.page.status.invalid": "Lütfen geçerli bir sayfa durumu ayarlayın",
- "error.page.undefined": "Sayfa bulunamadı",
+ "error.page.undefined": "Sayfa bulunamad\u0131",
"error.page.update.permission": "\"{slug}\" güncellemesine izin verilmiyor",
"error.section.files.max.plural": "\"{section}\" bölümüne {max} dosyadan daha fazlasını eklememelisiniz",
@@ -163,6 +217,8 @@
"error.site.changeTitle.permission": "Sitenin başlığını değiştiremezsin",
"error.site.update.permission": "Siteyi güncellemenize izin verilmiyor",
+ "error.structure.validation": "{index} satırındaki \"{field}\" alanında bir hata var",
+
"error.template.default.notFound": "Varsayılan şablon yok",
"error.unexpected": "Beklenmeyen bir hata oluştu! Daha fazla bilgi için hata ayıklama modunu etkinleştirin: https://getkirby.com/docs/reference/system/options/debug",
@@ -176,7 +232,7 @@
"error.user.changeRole.toAdmin": "Birini yönetici rolüne tanıtmanıza izin verilmiyor",
"error.user.create.permission": "Bu kullanıcıyı oluşturmanıza izin verilmiyor",
"error.user.delete": "\"{name}\" kullanıcısı silinemedi",
- "error.user.delete.lastAdmin": "Son yönetici kullanıcıyı silemezsiniz",
+ "error.user.delete.lastAdmin": "Son y\u00f6netici kullan\u0131c\u0131y\u0131 silemezsiniz",
"error.user.delete.lastUser": "Son kullanıcı silinemez",
"error.user.delete.permission": "\"{name}\" kullanıcısını silme yetkiniz yok",
"error.user.duplicate": "\"{email}\" e-posta adresine sahip bir kullanıcı zaten var",
@@ -185,7 +241,7 @@
"error.user.notFound": "\"{name}\" kullanıcısı bulunamadı",
"error.user.password.excessive": "Lütfen geçerli bir şifre girin. Şifreler 1000 karakterden uzun olmamalıdır.",
"error.user.password.invalid": "Lütfen geçerli bir şifre giriniz. Şifreler en az 8 karakter uzunluğunda olmalıdır.",
- "error.user.password.notSame": "Lütfen şifreyi doğrulayın",
+ "error.user.password.notSame": "L\u00fctfen \u015fifreyi do\u011frulay\u0131n",
"error.user.password.undefined": "Bu kullanıcının şifresi yok",
"error.user.password.wrong": "Yanlış şifre",
"error.user.role.invalid": "Lütfen geçerli bir rol girin",
@@ -195,8 +251,10 @@
"error.validation.accepted": "Lütfen onaylayın",
"error.validation.alpha": "Lütfen sadece a-z arasındaki karakterleri girin",
"error.validation.alphanum": "Lütfen sadece a-z veya 0-9 arasındaki rakamları girin",
+ "error.validation.anchor": "Lütfen doğru bir bağlantı çapası girin",
"error.validation.between": "Lütfen \"{min}\" ile \"{max}\" arasında bir değer girin",
"error.validation.boolean": "Lütfen onaylayın veya reddedin",
+ "error.validation.color": "Lütfen {format} biçiminde geçerli bir renk girin",
"error.validation.contains": "Lütfen \"{needle}\" içeren bir değer girin",
"error.validation.date": "Lütfen geçerli bir tarih girin",
"error.validation.date.after": "Lütfen {date} tarihinden sonra bir tarih girin",
@@ -211,6 +269,7 @@
"error.validation.integer": "Lütfen geçerli bir tamsayı girin",
"error.validation.ip": "Lütfen geçerli bir ip adresi girin",
"error.validation.less": "Lütfen {max} 'dan daha düşük bir değer girin",
+ "error.validation.linkType": "Bağlantı türüne izin verilmiyor",
"error.validation.match": "Değer beklenen modelle eşleşmiyor",
"error.validation.max": "Lütfen {max} 'a eşit veya daha küçük bir değer girin",
"error.validation.maxlength": "Lütfen daha kısa bir değer girin. (maks. {max} karakter)",
@@ -227,15 +286,18 @@
"error.validation.same": "Lütfen \"{other}\" yazınız",
"error.validation.size": "Değerin boyutu \"{size}\" olmalıdır",
"error.validation.startswith": "Değer \"{start}\" ile başlamalıdır",
+ "error.validation.tel": "Lütfen biçimlendirilmemiş bir telefon numarası girin",
"error.validation.time": "Lütfen geçerli bir zaman girin",
"error.validation.time.after": "Lütfen {time} sonrası bir tarih girin",
"error.validation.time.before": "Lütfen {time} öncesi bir tarih girin",
"error.validation.time.between": "Lütfen {min} ile {max} arasında bir tarih girin",
+ "error.validation.uuid": "Lütfen geçerli bir UUID girin",
"error.validation.url": "Lütfen geçerli bir adres girin",
"expand": "Genişlet",
"expand.all": "Tümünü genişlet",
+ "field.invalid": "Bu alan geçersizdir",
"field.required": "Alan gereklidir",
"field.blocks.changeType": "Türü değiştir",
"field.blocks.code.name": "Kod",
@@ -245,8 +307,9 @@
"field.blocks.delete.confirm.all": "Tüm blokları gerçekten silmek istiyor musunuz?",
"field.blocks.delete.confirm.selected": "Seçilen blokları gerçekten silmek istiyor musunuz?",
"field.blocks.empty": "Henüz blok yok",
+ "field.blocks.fieldsets.empty": "Henüz alan kümesi yok",
"field.blocks.fieldsets.label": "Lütfen bir blok türü seçiniz …",
- "field.blocks.fieldsets.paste": "Panonuzdan blokları yapıştırmak veya içe aktarmak için {{ shortcut }}'e basın",
+ "field.blocks.fieldsets.paste": "Panonuzdan düzenleri/blokları içe aktarmak için {{ shortcut }} tuşuna basın Yalnızca geçerli alanda izin verilenler eklenecektir.",
"field.blocks.gallery.name": "Galeri",
"field.blocks.gallery.images.empty": "Henüz görsel yok",
"field.blocks.gallery.images.label": "Görseller",
@@ -254,11 +317,16 @@
"field.blocks.heading.name": "Başlık",
"field.blocks.heading.text": "Metin",
"field.blocks.heading.placeholder": "Başlık …",
+ "field.blocks.figure.back.plain": "Düz",
+ "field.blocks.figure.back.pattern.light": "Desen (açık)",
+ "field.blocks.figure.back.pattern.dark": "Desen (koyu)",
"field.blocks.image.alt": "Alternatif metin",
"field.blocks.image.caption": "Altyazı",
"field.blocks.image.crop": "Kırp",
"field.blocks.image.link": "Bağlantı",
"field.blocks.image.location": "Lokasyon",
+ "field.blocks.image.location.internal": "Bu website",
+ "field.blocks.image.location.external": "Dış kaynak",
"field.blocks.image.name": "Görsel",
"field.blocks.image.placeholder": "Bir görsel seçin",
"field.blocks.image.ratio": "Oran",
@@ -275,38 +343,72 @@
"field.blocks.quote.citation.placeholder": "yazar …",
"field.blocks.text.name": "Metin",
"field.blocks.text.placeholder": "Metin …",
+ "field.blocks.video.autoplay": "Otomatik oynatma",
"field.blocks.video.caption": "Altyazı",
+ "field.blocks.video.controls": "Kontroller",
+ "field.blocks.video.location": "Lokasyon",
+ "field.blocks.video.loop": "Döngü",
+ "field.blocks.video.muted": "Sessiz",
"field.blocks.video.name": "Video",
"field.blocks.video.placeholder": "Bir video URL'si girin",
+ "field.blocks.video.poster": "Kapak",
+ "field.blocks.video.preload": "Önyükleme",
"field.blocks.video.url.label": "Video-URL",
"field.blocks.video.url.placeholder": "https://youtube.com/?v=",
- "field.files.empty": "Henüz dosya seçilmedi",
+ "field.entries.delete.confirm.all": "Tüm girdileri gerçekten silmek istiyor musunuz?",
+ "field.entries.empty": "Henüz bir girdi yok",
+ "field.files.empty": "Henüz dosya seçilmedi",
+ "field.files.empty.single": "Henüz dosya seçilmedi",
+
+ "field.layout.change": "Düzeni değiştir",
"field.layout.delete": "Düzeni sil",
"field.layout.delete.confirm": "Bu düzeni gerçekten silmek istiyor musunuz?",
+ "field.layout.delete.confirm.all": "Gerçekten tüm düzenleri silmek istiyor musunuz?",
"field.layout.empty": "Henüz satır yok",
"field.layout.select": "Bir düzen seçin",
"field.object.empty": "Henüz bilgi yok",
"field.pages.empty": "Henüz sayfa seçilmedi",
+ "field.pages.empty.single": "Henüz sayfa seçilmedi",
- "field.structure.delete.confirm": "Bu girdiyi silmek istediğinizden emin misiniz?",
+ "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üz bir girdi yok",
+ "field.structure.empty": "Hen\u00fcz bir girdi yok",
"field.users.empty": "Henüz kullanıcı seçilmedi",
+ "field.users.empty.single": "Henüz kullanıcı seçilmedi",
+ "fields.empty": "Henüz alan yok",
+
+ "file": "Dosya",
"file.blueprint": "Bu dosyanın henüz bir planı yok. Kurulumu /site/blueprints/files/{blueprint}.yml dosyasında tanımlayabilirsiniz.",
+ "file.changeTemplate": "Şablonu değiştir",
+ "file.changeTemplate.notice": "Dosyanın şablonunun değiştirilmesi, tür olarak eşleşmeyen alanların içeriğini kaldıracaktır. Yeni şablon, görüntü boyutları gibi belirli kuralları tanımlıyorsa, bunlar da geri döndürülemez şekilde uygulanacaktır. Dikkatli kullanın.",
"file.delete.confirm": "{filename} dosyasını silmek istediğinizden emin misiniz?",
+ "file.focus.placeholder": "Odak noktasını belirleyin",
+ "file.focus.reset": "Odak noktasını kaldırın",
+ "file.focus.title": "Odak",
"file.sort": "Pozisyon değiştir",
"files": "Dosyalar",
+ "files.delete.confirm.selected": "Seçili dosyaları gerçekten silmek istiyor musunuz? Bu eylem geri alınamaz.",
"files.empty": "Henüz dosya yok",
+ "filter": "Filtre",
+
+ "form.discard": "Değişiklikleri iptal et",
+ "form.discard.confirm": "Gerçekten tüm değişikliklerinizi silmek istiyor musunuz?",
+ "form.locked": "Bu içerik şu anda başka bir kullanıcı tarafından düzenlendiği için sizin için devre dışı bırakıldı",
+ "form.unsaved": "Mevcut değişiklikler henüz kaydedilmedi",
+ "form.preview": "Değişiklikleri önizle",
+ "form.preview.draft": "Taslağı önizle",
+
"hide": "Gizle",
"hour": "Saat",
+ "hue": "Renk tonu",
"import": "İçe aktar",
"info": "Bilgi",
"insert": "Ekle",
@@ -324,7 +426,6 @@
"installation.issues.mbstring": "MB String
eklentisi gerekli",
"installation.issues.media": "/media
klasörü yok yada yazılamaz",
"installation.issues.php": "PHP 8+
kullandığınızdan emin olun. ",
- "installation.issues.server": "Kirby Apache
, Nginx
veya Caddy
gerektirir",
"installation.issues.sessions": "/site/sessions
klasörü mevcut değil veya yazılabilir değil",
"language": "Dil",
@@ -332,6 +433,7 @@
"language.convert": "Varsayılan yap",
"language.convert.confirm": "{secret}
kimlik doğrulayıcı uygulamanıza elle ekleyin.",
+ "login.totp.enable.confirm.headline": "2. Oluşturulan kod ile onaylayın",
+ "login.totp.enable.confirm.text": "Uygulamanız her 30 saniyede bir yeni bir kerelik kod oluşturur. Kurulumu tamamlamak için geçerli kodu girin:",
+ "login.totp.enable.confirm.label": "Geçerli kod",
+ "login.totp.enable.confirm.help": "Bu kurulumdan sonra, her oturum açtığınızda sizden tek seferlik bir kod isteyeceğiz.",
+ "login.totp.enable.success": "Tek seferlik kodlar etkinleştirildi",
+ "login.totp.disable.option": "Tek seferlik kodları devre dışı bırakma",
+ "login.totp.disable.label": "Tek seferlik kodları devre dışı bırakmak için şifrenizi girin",
+ "login.totp.disable.help": "Gelecekte, oturum açtığınızda e-posta yoluyla gönderilen bir oturum açma kodu gibi farklı bir ikinci faktör istenecektir. Tek seferlik kodları daha sonra her zaman yeniden ayarlayabilirsiniz.",
+ "login.totp.disable.admin": "
|<\/p>)/gi,""),this.$emit("input",this.html)):this.$emit("input",this.list="")}}},(function(){var t=this;return(0,t._self._c)("k-writer",t._b({ref:"input",staticClass:"k-list-input",attrs:{extensions:t.extensions,nodes:["bulletList","orderedList"],value:t.list},on:{input:t.onInput}},"k-writer",t.$props,!1))}),[],!1,null,null,null,null).exports,Pe={mixins:[_t,xt,At],props:{max:Number,min:Number,layout:String,options:Array,search:[Object,Boolean],separator:{type:String,default:","},sort:Boolean,value:{type:Array,required:!0,default:()=>[]}}};const Ne=G({mixins:[Pe],inheritAttrs:!1,data(){return{state:this.value,q:null,limit:!0,scrollTop:0}},computed:{draggable(){return this.state.length>1&&!this.sort},dragOptions(){return{disabled:!this.draggable,draggable:".k-tag",delay:1}},emptyLabel(){return this.q?this.$t("search.results.none"):this.$t("options.none")},filtered(){var t;return(null==(t=this.q)?void 0:t.length)>=(this.search.min||0)?this.options.filter((t=>this.isFiltered(t))).map((t=>({...t,text:this.toHighlightedString(t.text)}))):this.options},more(){return!this.max||this.state.length <\/p><\/li><\/ul>)$/," <\/p><\/li>)/," <\/p>)$/,""),i[1]=i[1].replace(/^( <\/p>)/,"")),this.$emit("split",i.map((t=>({text:t})))))}}},(function(){var t=this;return(0,t._self._c)(t.component,t._b({ref:"input",tag:"component",staticClass:"k-block-type-text-input",attrs:{disabled:t.disabled,keys:t.keys,value:t.content.text},on:{input:function(e){return t.update({text:e})}}},"component",t.textField,!1))}),[]).exports;const bi=ct({extends:Ge,computed:{captionMarks(){return this.field("caption",{marks:!0}).marks},location(){return this.content.location},poster(){var t,e;return null==(e=null==(t=this.content.poster)?void 0:t[0])?void 0:e.url},video(){var t,e;return"kirby"===this.content.location?null==(e=null==(t=this.content.video)?void 0:t[0])?void 0:e.url:this.$helper.embed.video(this.content.url??"",!0)}}},(function(){var t=this,e=t._self._c;return e("k-block-figure",{staticClass:"k-block-type-video-figure",attrs:{caption:t.content.caption,"caption-marks":t.captionMarks,disabled:t.disabled,"empty-text":t.$t("field.blocks.video.placeholder")+" …","is-empty":!t.video,"empty-icon":"video"},on:{open:t.open,update:t.update}},[e("k-frame",{attrs:{ratio:"16/9"}},[t.video?["kirby"==t.location?e("video",{attrs:{src:t.video,poster:t.poster,controls:""}}):e("iframe",{attrs:{src:t.video,referrerpolicy:"strict-origin-when-cross-origin"}})]:t._e()],2)],1)}),[]).exports,vi={install(t){t.component("k-block",Qe),t.component("k-blocks",ei),t.component("k-block-options",Ze),t.component("k-block-pasteboard",ii),t.component("k-block-selector",si),t.component("k-block-background-dropdown",ni),t.component("k-block-figure",oi),t.component("k-block-figure-caption",ai),t.component("k-block-title",We),t.component("k-block-type-code",ri),t.component("k-block-type-default",Ge),t.component("k-block-type-fields",li),t.component("k-block-type-gallery",ci),t.component("k-block-type-heading",ui),t.component("k-block-type-image",di),t.component("k-block-type-line",pi),t.component("k-block-type-list",hi),t.component("k-block-type-markdown",mi),t.component("k-block-type-quote",fi),t.component("k-block-type-table",gi),t.component("k-block-type-text",ki),t.component("k-block-type-video",bi)}};const yi=ct({mixins:[Fe,ti],inheritAttrs:!1,data:()=>({opened:[]}),computed:{hasFieldsets(){return this.$helper.object.length(this.fieldsets)>0},isEmpty(){return 0===this.value.length},isFull(){return this.max&&this.value.length>=this.max},options(){return[{click:()=>this.$refs.blocks.copyAll(),disabled:this.isEmpty,icon:"template",text:this.$t("copy.all")},{click:()=>this.$refs.blocks.pasteboard(),disabled:this.isFull,icon:"download",text:this.$t("paste")},"-",{click:()=>this.$refs.blocks.removeAll(),disabled:this.isEmpty,icon:"trash",text:this.$t("delete.all")}]}},methods:{focus(){this.$refs.blocks.focus()}}},(function(){var t=this,e=t._self._c;return e("k-field",t._b({staticClass:"k-blocks-field",scopedSlots:t._u([!t.disabled&&t.hasFieldsets?{key:"options",fn:function(){return[e("k-button-group",{attrs:{layout:"collapsed"}},[e("k-button",{staticClass:"input-focus",attrs:{autofocus:t.autofocus,disabled:t.isFull,responsive:!0,text:t.$t("add"),icon:"add",variant:"filled",size:"xs"},on:{click:function(e){return t.$refs.blocks.choose(t.value.length)}}}),e("k-button",{attrs:{icon:"dots",variant:"filled",size:"xs"},on:{click:function(e){return t.$refs.options.toggle()}}}),e("k-dropdown-content",{ref:"options",attrs:{options:t.options,"align-x":"end"}})],1)]},proxy:!0}:null],null,!0)},"k-field",t.$props,!1),[e("k-blocks",t._g(t._b({ref:"blocks",on:{close:function(e){t.opened=e},open:function(e){t.opened=e}}},"k-blocks",t.$props,!1),t.$listeners)),t.disabled||t.isEmpty||t.isFull||!t.hasFieldsets?t._e():e("footer",[e("k-button",{attrs:{title:t.$t("add"),icon:"add",size:"xs",variant:"filled"},on:{click:function(e){return t.$refs.blocks.choose(t.value.length)}}})],1)],1)}),[]).exports,$i={mixins:[Ie,nt],props:{columns:{default:1,type:Number},max:Number,min:Number,theme:String,value:{type:Array,default:()=>[]}}};const wi=ct({mixins:[De,$i],data:()=>({selected:[]}),computed:{choices(){return this.options.map(((t,e)=>({autofocus:this.autofocus&&0===e,checked:this.selected.includes(t.value),disabled:this.disabled||t.disabled,id:`${this.id}-${e}`,info:t.info,label:t.text,name:this.name??this.id,type:"checkbox",value:t.value})))}},watch:{value:{handler(t){this.selected=Array.isArray(t)?t:[],this.validate()},immediate:!0}},methods:{focus(){var t;null==(t=this.$el.querySelector("input"))||t.focus()},input(t,e){if(!0===e)this.selected.push(t);else{const e=this.selected.indexOf(t);-1!==e&&this.selected.splice(e,1)}this.$emit("input",this.selected)},select(){this.focus()},validate(){this.$emit("invalid",this.$v.$invalid,this.$v)}},validations(){return{selected:{required:!this.required||t.required,min:!this.min||t.minLength(this.min),max:!this.max||t.maxLength(this.max)}}}},(function(){var t=this,e=t._self._c;return e("ul",{staticClass:"k-checkboxes-input k-grid",style:{"--columns":t.columns},attrs:{"data-variant":"choices"}},t._l(t.choices,(function(i,s){return e("li",{key:s},[e("k-choice-input",t._b({on:{input:function(e){return t.input(i.value,e)}}},"k-choice-input",i,!1))],1)})),0)}),[]).exports,xi={props:{counter:{type:Boolean,default:!0}},computed:{counterOptions(){const t=this.counterValue??this.value;return!(!1===this.counter||this.disabled||!t)&&{count:Array.isArray(t)?t.length:String(t).length,min:this.$props.min??this.$props.minlength,max:this.$props.max??this.$props.maxlength}},counterValue:()=>null}};const _i=ct({mixins:[Fe,Ue,$i,xi],inheritAttrs:!1,methods:{focus(){this.$refs.input.focus()}}},(function(){var t,e=this,i=e._self._c;return i("k-field",e._b({staticClass:"k-checkboxes-field",attrs:{input:e.id+"-0",counter:e.counterOptions}},"k-field",e.$props,!1),[(null==(t=e.options)?void 0:t.length)?i("k-checkboxes-input",e._g(e._b({ref:"input"},"k-checkboxes-input",e.$props,!1),e.$listeners)):i("k-empty",{attrs:{text:e.$t("options.none"),icon:"checklist"}})],1)}),[]).exports,Ci={mixins:[Ie,H,J,et,it,ot,at,lt],props:{ariaLabel:String,type:{default:"text",type:String},value:{type:String}}};const Si=ct({mixins:[De,Ci]},(function(){var t=this;return(0,t._self._c)("input",t._b({directives:[{name:"direction",rawName:"v-direction"}],staticClass:"k-string-input",attrs:{"aria-label":t.ariaLabel,"data-font":t.font},on:{input:function(e){return t.$emit("input",e.target.value)}}},"input",{autocomplete:t.autocomplete,autofocus:t.autofocus,disabled:t.disabled,id:t.id,maxlength:t.maxlength,minlength:t.minlength,name:t.name,pattern:t.pattern,placeholder:t.placeholder,required:t.required,spellcheck:t.spellcheck,type:t.type,value:t.value},!1))}),[]).exports,Oi={mixins:[Ci],props:{autocomplete:null,font:null,maxlength:null,minlength:null,pattern:null,spellcheck:null,alpha:{type:Boolean,default:!0},format:{type:String,default:"hex",validator:t=>["hex","rgb","hsl"].includes(t)}}};const Mi=ct({mixins:[Si,Oi],watch:{value(){this.validate()}},mounted(){this.validate()},methods:{convert(t){if(!t)return t;try{return this.$library.colors.toString(t,this.format,this.alpha)}catch{const e=document.createElement("div");return e.style.color=t,document.body.append(e),t=window.getComputedStyle(e).color,e.remove(),this.$library.colors.toString(t,this.format,this.alpha)}},convertAndEmit(t){this.emit(this.convert(t))},emit(t){this.$emit("input",t)},onBlur(){this.convertAndEmit(this.value)},onPaste(t){t instanceof ClipboardEvent&&(t=this.$helper.clipboard.read(t,!0)),this.convertAndEmit(t)},async onSave(){var t;this.convertAndEmit(this.value),await this.$nextTick(),null==(t=this.$el.form)||t.requestSubmit()},validate(){let t="";null===this.$library.colors.parse(this.value)&&(t=this.$t("error.validation.color",{format:this.format})),this.$el.setCustomValidity(t)}}},(function(){var t=this;return(0,t._self._c)("k-string-input",t._b({staticClass:"k-colorname-input",attrs:{spellcheck:!1,autocomplete:"off",type:"text"},on:{input:function(e){return t.$emit("input",e)}},nativeOn:{blur:function(e){return t.onBlur.apply(null,arguments)},paste:function(e){return t.onPaste.apply(null,arguments)},keydown:[function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"s",void 0,e.key,void 0)?null:e.metaKey?(e.stopPropagation(),e.preventDefault(),t.onSave.apply(null,arguments)):null},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"enter",13,e.key,"Enter")?null:t.onSave.apply(null,arguments)}]}},"k-string-input",t.$props,!1))}),[]).exports;const Ai=ct({mixins:[Fe,Ue,Oi],inheritAttrs:!1,props:{icon:{type:String,default:"pipette"},mode:{type:String,default:"picker",validator:t=>["picker","input","options"].includes(t)},options:{type:Array,default:()=>[]}},computed:{convertedOptions(){return this.options.map((t=>({...t,value:this.convert(t.value)})))},currentOption(){return this.convertedOptions.find((t=>t.value===this.value))}},methods:{convert(t){return this.$library.colors.toString(t,this.format,this.alpha)}}},(function(){var t,e=this,i=e._self._c;return i("k-field",e._b({staticClass:"k-color-field",attrs:{input:e.id}},"k-field",e.$props,!1),["options"===e.mode?i("k-coloroptions-input",e._b({staticClass:"k-color-field-options",attrs:{options:e.convertedOptions},on:{input:function(t){return e.$emit("input",t)}}},"k-coloroptions-input",e.$props,!1)):i("k-input",e._b({attrs:{type:"color"},scopedSlots:e._u([{key:"before",fn:function(){return["picker"===e.mode?[i("button",{staticClass:"k-color-field-picker-toggle",attrs:{disabled:e.disabled,type:"button"},on:{click:function(t){return e.$refs.picker.toggle()}}},[i("k-color-frame",{attrs:{color:e.value}})],1),i("k-dropdown-content",{ref:"picker",staticClass:"k-color-field-picker"},[i("k-colorpicker-input",e._b({ref:"color",attrs:{options:e.convertedOptions},on:{input:function(t){return e.$emit("input",t)}},nativeOn:{click:function(t){t.stopPropagation()}}},"k-colorpicker-input",e.$props,!1))],1)]:i("k-color-frame",{attrs:{color:e.value}})]},proxy:!0},{key:"default",fn:function(){return[i("k-colorname-input",e._b({on:{input:function(t){return e.$emit("input",t)}}},"k-colorname-input",e.$props,!1))]},proxy:!0},(null==(t=e.currentOption)?void 0:t.text)?{key:"after",fn:function(){return[i("span",{domProps:{innerHTML:e._s(e.currentOption.text)}})]},proxy:!0}:null,"picker"===e.mode?{key:"icon",fn:function(){return[i("k-button",{staticClass:"k-input-icon-button",attrs:{icon:e.icon},on:{click:function(t){return t.stopPropagation(),e.$refs.picker.toggle()}}})]},proxy:!0}:null],null,!0)},"k-input",e.$props,!1))],1)}),[]).exports,Ii={props:{max:String,min:String,value:String}},Di={mixins:[Ie,Ii],props:{display:{type:String,default:"DD.MM.YYYY"},step:{type:Object,default:()=>({size:1,unit:"day"})},type:{type:String,default:"date"}}};const ji=ct({mixins:[De,Di],emits:["input","focus","submit"],data:()=>({dt:null,formatted:null}),computed:{inputType:()=>"date",pattern(){return this.$library.dayjs.pattern(this.display)},rounding(){return{...this.$options.props.step.default(),...this.step}}},watch:{value:{handler(t,e){if(t!==e){const e=this.toDatetime(t);this.commit(e)}},immediate:!0}},methods:{async alter(t){let e=this.parse()??this.round(this.$library.dayjs()),i=this.rounding.unit,s=this.rounding.size;const n=this.selection();null!==n&&("meridiem"===n.unit?(t="pm"===e.format("a")?"subtract":"add",i="hour",s=12):(i=n.unit,i!==this.rounding.unit&&(s=1))),e=e[t](s,i).round(this.rounding.unit,this.rounding.size),this.commit(e),this.emit(e),await this.$nextTick(),this.select(n)},commit(t){this.dt=t,this.formatted=this.pattern.format(t),this.validate(),this.$emit("invalid",this.$v.$invalid,this.$v)},emit(t){this.$emit("input",this.toISO(t))},onArrowDown(){this.alter("subtract")},onArrowUp(){this.alter("add")},onBlur(){const t=this.parse();this.commit(t),this.emit(t)},async onEnter(){this.onBlur(),await this.$nextTick(),this.$emit("submit")},onInput(t){const e=this.parse(),i=this.pattern.format(e);if(!t||i==t)return this.commit(e),this.emit(e)},async onTab(t){if(""==this.$el.value)return;this.onBlur(),await this.$nextTick();const e=this.selection();if(this.$el&&e.start===this.$el.selectionStart&&e.end===this.$el.selectionEnd-1)if(t.shiftKey){if(0===e.index)return;this.selectPrev(e.index)}else{if(e.index===this.pattern.parts.length-1)return;this.selectNext(e.index)}else{if(this.$el&&this.$el.selectionStart==e.end+1&&e.index==this.pattern.parts.length-1)return;if(this.$el&&this.$el.selectionEnd-1>e.end){const t=this.pattern.at(this.$el.selectionEnd,this.$el.selectionEnd);this.select(this.pattern.parts[t.index])}else this.select(this.pattern.parts[e.index])}t.preventDefault()},parse(){const t=this.$library.dayjs.interpret(this.$el.value,this.inputType);return this.round(t)},round(t){return null==t?void 0:t.round(this.rounding.unit,this.rounding.size)},select(t){var e;t??(t=this.selection()),null==(e=this.$el)||e.setSelectionRange(t.start,t.end+1)},selectFirst(){this.select(this.pattern.parts[0])},selectLast(){this.select(this.pattern.parts[this.pattern.parts.length-1])},selectNext(t){this.select(this.pattern.parts[t+1])},selectPrev(t){this.select(this.pattern.parts[t-1])},selection(){return this.pattern.at(this.$el.selectionStart,this.$el.selectionEnd)},toDatetime(t){return this.round(this.$library.dayjs.iso(t,this.inputType))},toISO(t){return null==t?void 0:t.toISO(this.inputType)},validate(){var t,e,i;const s=[];this.required&&!this.dt&&s.push(this.$t("error.validation.required")),this.min&&!1===(null==(t=this.dt)?void 0:t.validate(this.min,"min",this.rounding.unit))&&s.push(this.$t("error.validation.date.after",{date:this.min})),this.max&&!1===(null==(e=this.dt)?void 0:e.validate(this.max,"max",this.rounding.unit))&&s.push(this.$t("error.validation.date.before",{date:this.max})),null==(i=this.$el)||i.setCustomValidity(s.join(", "))}},validations(){return{value:{min:!this.dt||!this.min||(()=>this.dt.validate(this.min,"min",this.rounding.unit)),max:!this.dt||!this.max||(()=>this.dt.validate(this.max,"max",this.rounding.unit)),required:!this.required||(()=>!!this.dt)}}}},(function(){var t=this;return(0,t._self._c)("input",{directives:[{name:"direction",rawName:"v-direction"}],class:`k-text-input k-${t.type}-input`,attrs:{id:t.id,autofocus:t.autofocus,disabled:t.disabled,placeholder:t.display,required:t.required,autocomplete:"off",spellcheck:"false",type:"text"},domProps:{value:t.formatted},on:{blur:t.onBlur,focus:function(e){return t.$emit("focus")},input:function(e){return t.onInput(e.target.value)},keydown:[function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"down",40,e.key,["Down","ArrowDown"])?null:(e.stopPropagation(),e.preventDefault(),t.onArrowDown.apply(null,arguments))},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"up",38,e.key,["Up","ArrowUp"])?null:(e.stopPropagation(),e.preventDefault(),t.onArrowUp.apply(null,arguments))},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"enter",13,e.key,"Enter")?null:(e.stopPropagation(),e.preventDefault(),t.onEnter.apply(null,arguments))},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"s",void 0,e.key,void 0)?null:e.metaKey?(e.stopPropagation(),e.preventDefault(),t.onEnter.apply(null,arguments)):null},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"s",void 0,e.key,void 0)?null:e.ctrlKey?(e.stopPropagation(),e.preventDefault(),t.onEnter.apply(null,arguments)):null},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"tab",9,e.key,"Tab")?null:t.onTab.apply(null,arguments)}]}})}),[]).exports;const Ei=ct({mixins:[Fe,Ue,Di],inheritAttrs:!1,props:{calendar:{type:Boolean,default:!0},icon:{type:String,default:"calendar"},time:{type:[Boolean,Object],default:()=>({})},times:{type:Boolean,default:!0}},emits:["input","submit"],data(){return{isInvalid:!1,iso:this.toIso(this.value)}},computed:{isEmpty(){return this.time?!this.iso.date||!this.iso.time:!this.iso.date}},watch:{value(t,e){t!==e&&(this.iso=this.toIso(t))}},methods:{focus(){this.$refs.dateInput.focus()},now(){const t=this.$library.dayjs();return{date:t.toISO("date"),time:this.time?t.toISO("time"):"00:00:00"}},onInput(){if(this.isEmpty)return this.$emit("input","");const t=this.$library.dayjs.iso(this.iso.date+" "+this.iso.time);(t||null!==this.iso.date&&null!==this.iso.time)&&this.$emit("input",(null==t?void 0:t.toISO())??"")},onDateInput(t){t&&!this.iso.time&&(this.iso.time=this.now().time),this.iso.date=t,this.onInput()},onDateInvalid(t){this.isInvalid=t},onTimeInput(t){t&&!this.iso.date&&(this.iso.date=this.now().date),this.iso.time=t,this.onInput()},onTimesInput(t){var e;null==(e=this.$refs.times)||e.close(),this.onTimeInput(t+":00")},toIso(t){const e=this.$library.dayjs.iso(t);return{date:(null==e?void 0:e.toISO("date"))??null,time:(null==e?void 0:e.toISO("time"))??null}}}},(function(){var t=this,e=t._self._c;return e("k-field",t._b({staticClass:"k-date-field",attrs:{input:t.id}},"k-field",t.$props,!1),[e("div",{ref:"body",staticClass:"k-date-field-body",attrs:{"data-has-time":Boolean(t.time),"data-invalid":!t.novalidate&&t.isInvalid}},[e("k-input",t._b({ref:"dateInput",attrs:{type:"date"},on:{invalid:t.onDateInvalid,input:t.onDateInput,submit:function(e){return t.$emit("submit")}},scopedSlots:t._u([t.calendar?{key:"icon",fn:function(){return[e("k-button",{staticClass:"k-input-icon-button",attrs:{disabled:t.disabled,icon:t.icon,title:t.$t("date.select")},on:{click:function(e){return t.$refs.calendar.toggle()}}}),e("k-dropdown-content",{ref:"calendar",attrs:{"align-x":"end"}},[e("k-calendar",{attrs:{value:t.iso.date,min:t.min,max:t.max},on:{input:t.onDateInput}})],1)]},proxy:!0}:null],null,!0)},"k-input",t.$props,!1)),t.time?e("k-input",{ref:"timeInput",attrs:{disabled:t.disabled,display:t.time.display,required:t.required,step:t.time.step,value:t.iso.time,icon:t.time.icon,type:"time"},on:{input:t.onTimeInput,submit:function(e){return t.$emit("submit")}},scopedSlots:t._u([t.times?{key:"icon",fn:function(){return[e("k-button",{staticClass:"k-input-icon-button",attrs:{disabled:t.disabled,icon:t.time.icon??"clock",title:t.$t("time.select")},on:{click:function(e){return t.$refs.times.toggle()}}}),e("k-dropdown-content",{ref:"times",attrs:{"align-x":"end"}},[e("k-timeoptions-input",{attrs:{display:t.time.display,value:t.value},on:{input:t.onTimesInput}})],1)]},proxy:!0}:null],null,!0)}):t._e()],1)])}),[]).exports,Li={mixins:[Ie,J,et,it,ot,at,lt],props:{autocomplete:{type:[Boolean,String],default:"off"},preselect:Boolean,type:{type:String,default:"text"},value:String}};const Ti=ct({mixins:[De,Li],data(){return{listeners:{...this.$listeners,input:t=>this.onInput(t.target.value)}}},watch:{value(){this.onInvalid()}},mounted(){this.onInvalid(),this.$props.autofocus&&this.focus(),this.$props.preselect&&this.select()},methods:{onInput(t){this.$emit("input",t)},onInvalid(){this.$emit("invalid",this.$v.$invalid,this.$v)},select(){this.$refs.input.select()}},validations(){return{value:{required:!this.required||t.required,minLength:!this.minlength||t.minLength(this.minlength),maxLength:!this.maxlength||t.maxLength(this.maxlength),email:"email"!==this.type||t.email,url:"url"!==this.type||t.url,pattern:!this.pattern||(t=>!this.required&&!t||!this.$refs.input.validity.patternMismatch)}}}},(function(){var t=this;return(0,t._self._c)("input",t._g(t._b({directives:[{name:"direction",rawName:"v-direction"}],ref:"input",staticClass:"k-text-input",attrs:{"data-font":t.font}},"input",{autocomplete:t.autocomplete,autofocus:t.autofocus,disabled:t.disabled,id:t.id,minlength:t.minlength,name:t.name,pattern:t.pattern,placeholder:t.placeholder,required:t.required,spellcheck:t.spellcheck,type:t.type,value:t.value},!1),t.listeners))}),[]).exports,Bi={mixins:[Li],props:{autocomplete:{type:String,default:"email"},placeholder:{type:String,default:()=>window.panel.$t("email.placeholder")},type:{type:String,default:"email"}}};const qi=ct({extends:Ti,mixins:[Bi]},null,null).exports;const Pi=ct({mixins:[Fe,Ue,Bi],inheritAttrs:!1,props:{link:{type:Boolean,default:!0},icon:{type:String,default:"email"}},computed:{mailto(){var t;return(null==(t=this.value)?void 0:t.length)>0?"mailto:"+this.value:null}},methods:{focus(){this.$refs.input.focus()}}},(function(){var t=this,e=t._self._c;return e("k-field",t._b({staticClass:"k-email-field",attrs:{input:t.id}},"k-field",t.$props,!1),[e("k-input",t._g(t._b({ref:"input",attrs:{type:"email"},scopedSlots:t._u([{key:"icon",fn:function(){return[t.link?e("k-button",{staticClass:"k-input-icon-button",attrs:{icon:t.icon,link:t.mailto,title:t.$t("open"),tabindex:"-1",target:"_blank"}}):t._e()]},proxy:!0}])},"k-input",t.$props,!1),t.$listeners))],1)}),[]).exports;const Ni=ct({type:"model",mixins:[Fe,V,tt],inheritAttrs:!1,props:{empty:String,info:String,link:Boolean,max:Number,multiple:Boolean,parent:String,search:Boolean,size:String,text:String,value:{type:Array,default:()=>[]}},emits:["change","input"],data(){return{selected:this.value}},computed:{buttons(){return[{autofocus:this.autofocus,text:this.$t("select"),icon:"checklist",responsive:!0,click:()=>this.open()}]},collection(){return{empty:this.emptyProps,items:this.selected,layout:this.layout,link:this.link,size:this.size,sortable:!this.disabled&&this.selected.length>1,theme:this.disabled?"disabled":null}},hasDropzone:()=>!1,isInvalid(){return this.required&&0===this.selected.length||this.min&&this.selected.length |<\/p>)/gi,""),this.$emit("input",this.html)):this.$emit("input",this.list="")}}},(function(){var t=this;return(0,t._self._c)("k-writer",t._b({ref:"input",staticClass:"k-list-input",attrs:{extensions:t.listExtensions,value:t.list},on:{input:t.onInput}},"k-writer",t.$props,!1))}),[]).exports;const Ys=ct({mixins:[Fe,Ue,zs],inheritAttrs:!1,methods:{focus(){this.$refs.input.focus()}}},(function(){var t=this,e=t._self._c;return e("k-field",t._b({staticClass:"k-list-field",attrs:{input:t.id,counter:!1}},"k-field",t.$props,!1),[e("k-input",t._b({ref:"input",attrs:{type:"list"},on:{input:function(e){return t.$emit("input",e)}}},"k-input",t.$props,!1))],1)}),[]).exports,Rs={mixins:[W,X,nt],inheritAttrs:!1,props:{layout:String,sort:{default:!1,type:Boolean},value:{default:()=>[],type:Array}}};const Us=ct({mixins:[Rs],props:{draggable:{default:!0,type:Boolean}},emits:["edit","input"],data:()=>({tags:[]}),computed:{dragOptions(){return{delay:1,disabled:!this.isDraggable,draggable:".k-tag",handle:".k-tag-text"}},isDraggable(){return!0!==this.sort&&!1!==this.draggable&&0!==this.tags.length&&!0!==this.disabled}},watch:{value:{handler(){let t=structuredClone(this.value);if(!0===this.sort){const e=[];for(const i of this.options){const s=t.indexOf(i.value);-1!==s&&(e.push(i),t.splice(s,1))}e.push(...t),t=e}this.tags=t.map(this.tag).filter((t=>t))},immediate:!0}},methods:{edit(t,e,i){!1===this.disabled&&this.$emit("edit",t,e,i)},focus(t="last"){this.$refs.navigate.move(t)},index(t){return this.tags.findIndex((e=>e.value===t.value))},input(){this.$emit("input",this.tags.map((t=>t.value)))},navigate(t){this.focus(t)},remove(t){this.tags.length<=1?this.navigate("last"):this.navigate("prev"),this.tags.splice(t,1),this.input()},option(t){return this.options.find((e=>e.value===t.value))},select(){this.focus()},tag(t){"object"!=typeof t&&(t={value:t});const e=this.option(t);return e||{text:this.$helper.string.escapeHTML(t.text??t.value),value:t.value}}}},(function(){var t=this,e=t._self._c;return e("k-navigate",{ref:"navigate",attrs:{axis:"list"===t.layout?"y":"x",select:":where(.k-tag, .k-tags-navigatable):not(:disabled)"}},[e("k-draggable",{staticClass:"k-tags",attrs:{list:t.tags,options:t.dragOptions,"data-layout":t.layout},on:{end:t.input},scopedSlots:t._u([{key:"footer",fn:function(){return[t._t("default")]},proxy:!0}],null,!0)},t._l(t.tags,(function(i,s){return e("k-tag",{key:s,attrs:{disabled:t.disabled,image:i.image,removable:!t.disabled,name:"tag"},on:{remove:function(e){return t.remove(s,i)}},nativeOn:{click:function(t){t.stopPropagation()},keypress:function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"enter",13,e.key,"Enter")?null:t.edit(s,i,e)},dblclick:function(e){return t.edit(s,i,e)}}},[e("span",{domProps:{innerHTML:t._s(i.text)}})])})),1)],1)}),[]).exports,Hs={mixins:[st,rt,Rs,je],props:{value:{default:()=>[],type:Array}},watch:{value:{handler(){this.$emit("invalid",this.$v.$invalid,this.$v)},immediate:!0}},validations(){return{value:{required:!this.required||t.required,minLength:!this.min||t.minLength(this.min),maxLength:!this.max||t.maxLength(this.max)}}},methods:{open(){this.$refs.dropdown.open(this.$el)}}};const Vs=ct({mixins:[De,Hs]},(function(){var t=this,e=t._self._c;return e("div",{staticClass:"k-multiselect-input"},[e("k-tags",t._b({ref:"tags",on:{input:function(e){return t.$emit("input",e)}},nativeOn:{click:function(e){return e.stopPropagation(),t.open.apply(null,arguments)}}},"k-tags",t.$props,!1),[!t.max||t.value.length 1&&r==this.$to.end(--n);)++r;return r}findCloseLevel(e){e:for(let t=Math.min(this.depth,e.depth);t>=0;t--){let{match:n,type:r}=this.frontier[t],i=tthis.$children.length-1){const t=this.$children.filter((t=>!1===t.disabled));this.current=this.$children.indexOf(t[t.length-1]);break}if(this.$children[this.current]&&!1===this.$children[this.current].disabled){this.focus(this.current);break}}break;case"Tab":for(;;){if(this.current++,this.current>this.$children.length-1){this.close(),this.$emit("leave",t.code);break}if(this.$children[this.current]&&!1===this.$children[this.current].disabled)break}}}}},(function(){var t=this,e=t._self._c;return t.isOpen?e("div",{staticClass:"k-dropdown-content",attrs:{"data-align":t.align,"data-dropup":t.dropup,"data-theme":t.theme}},[t._t("default",(function(){return[t._l(t.items,(function(s,n){return["-"===s?e("hr",{key:t._uid+"-item-"+n}):e("k-dropdown-item",t._b({key:t._uid+"-item-"+n,ref:t._uid+"-item-"+n,refInFor:!0,on:{click:function(e){return t.onOptionClick(s)}}},"k-dropdown-item",s,!1),[t._v(" "+t._s(s.text)+" ")])]}))]}))],2):t._e()}),[],!1,null,null,null,null).exports;const Kn=G({inheritAttrs:!1,props:{disabled:Boolean,icon:String,image:[String,Object],link:String,target:String,theme:String,upload:String,current:[String,Boolean]},data(){return{listeners:{...this.$listeners,click:t=>{this.$parent.close(),this.$emit("click",t)}}}},methods:{focus(){this.$refs.button.focus()},tab(){this.$refs.button.tab()}}},(function(){var t=this;return(0,t._self._c)("k-button",t._g(t._b({ref:"button",staticClass:"k-dropdown-item"},"k-button",t.$props,!1),t.listeners),[t._t("default")],2)}),[],!1,null,null,null,null).exports;const Jn=G({mixins:[Yn],props:{disabled:Boolean,rel:String,tabindex:[String,Number],target:String,title:String,to:[String,Function]},data(){return{relAttr:"_blank"===this.target?"noreferrer noopener":this.rel,listeners:{...this.$listeners,click:this.onClick}}},computed:{href(){return"function"==typeof this.to?"":"/"!==this.to[0]||this.target?!0===this.to.includes("@")&&!1===this.to.includes("/")&&!1===this.to.startsWith("mailto:")?"mailto:"+this.to:this.to:this.$url(this.to)}},methods:{isRoutable(t){if(t.metaKey||t.altKey||t.ctrlKey||t.shiftKey)return!1;if(t.defaultPrevented)return!1;if(void 0!==t.button&&0!==t.button)return!1;if(this.target)return!1;if("string"==typeof this.href){if(this.href.includes("://")||this.href.startsWith("//"))return!1;if(this.href.includes("mailto:"))return!1}return!0},onClick(t){if(!0===this.disabled)return t.preventDefault(),!1;"function"==typeof this.to&&(t.preventDefault(),this.to()),this.isRoutable(t)&&(t.preventDefault(),this.$go(this.to)),this.$emit("click",t)}}},(function(){var t=this,e=t._self._c;return t.to&&!t.disabled?e("a",t._g({ref:"link",staticClass:"k-link",attrs:{href:t.href,rel:t.relAttr,tabindex:t.tabindex,target:t.target,title:t.title}},t.listeners),[t._t("default")],2):e("span",{staticClass:"k-link",attrs:{title:t.title,"data-disabled":""}},[t._t("default")],2)}),[],!1,null,null,null,null).exports;const Gn=G({computed:{defaultLanguage(){return this.$languages.find((t=>!0===t.default))},language(){return this.$language},languages(){return this.$languages.filter((t=>!1===t.default))}},methods:{change(t){this.$emit("change",t),this.$go(window.location,{query:{language:t.code}})}}},(function(){var t=this,e=t._self._c;return t.languages.length?e("k-dropdown",{staticClass:"k-languages-dropdown"},[e("k-button",{attrs:{text:t.language.name,responsive:!0,icon:"globe"},on:{click:function(e){return t.$refs.languages.toggle()}}}),t.languages?e("k-dropdown-content",{ref:"languages"},[e("k-dropdown-item",{on:{click:function(e){return t.change(t.defaultLanguage)}}},[t._v(" "+t._s(t.defaultLanguage.name)+" ")]),e("hr"),t._l(t.languages,(function(s){return e("k-dropdown-item",{key:s.code,on:{click:function(e){return t.change(s)}}},[t._v(" "+t._s(s.name)+" ")])}))],2):t._e()],1):t._e()}),[],!1,null,null,null,null).exports;const Wn=G({props:{align:{type:String,default:"right"},icon:{type:String,default:"dots"},options:{type:[Array,Function,String],default:()=>[]},text:{type:[Boolean,String],default:!0},theme:{type:String,default:"dark"}},computed:{hasSingleOption(){return Array.isArray(this.options)&&1===this.options.length}},methods:{onAction(t,e,s){"function"==typeof t?t.call(this):(this.$emit("action",t,e,s),this.$emit("option",t,e,s))},toggle(){this.$refs.options.toggle()}}},(function(){var t=this,e=t._self._c;return t.hasSingleOption?e("k-button",{staticClass:"k-options-dropdown-toggle",attrs:{icon:t.options[0].icon||t.icon,tooltip:t.options[0].tooltip||t.options[0].text},on:{click:function(e){return t.onAction(t.options[0].option||t.options[0].click,t.options[0],0)}}},[!0===t.text?[t._v(" "+t._s(t.options[0].text)+" ")]:!1!==t.text?[t._v(" "+t._s(t.text)+" ")]:t._e()],2):t.options.length?e("k-dropdown",{staticClass:"k-options-dropdown"},[e("k-button",{staticClass:"k-options-dropdown-toggle",attrs:{icon:t.icon,tooltip:t.$t("options")},on:{click:function(e){return t.$refs.options.toggle()}}},[t.text&&!0!==t.text?[t._v(" "+t._s(t.text)+" ")]:t._e()],2),e("k-dropdown-content",{ref:"options",staticClass:"k-options-dropdown-content",attrs:{align:t.align,options:t.options},on:{action:t.onAction}})],1):t._e()}),[],!1,null,null,null,null).exports;const Xn=G({props:{align:{type:String,default:"left"},details:{type:Boolean,default:!1},dropdown:{type:Boolean,default:!0},keys:{type:Boolean,default:!1},limit:{type:Number,default:10},page:{type:Number,default:1},pageLabel:{type:String,default:()=>window.panel.$t("pagination.page")},total:{type:Number,default:0},prevLabel:{type:String,default:()=>window.panel.$t("prev")},nextLabel:{type:String,default:()=>window.panel.$t("next")},validate:{type:Function,default:()=>Promise.resolve()}},data(){return{currentPage:this.page}},computed:{show(){return this.pages>1},start(){return(this.currentPage-1)*this.limit+1},end(){let t=this.start-1+this.limit;return t>this.total?this.total:t},detailsText(){return 1===this.limit?this.start+" / ":this.start+"-"+this.end+" / "},pages(){return Math.ceil(this.total/this.limit)},hasPrev(){return this.start>1},hasNext(){return this.end","")})},split(){var t,e;const i=null==(e=(t=this.input()).getSplitContent)?void 0:e.call(t);i&&this.$emit("split",[{text:i[0].replace(/(
")},{text:i[1].replace(/^(")}])}}},(function(){var t=this;return(0,t._self._c)("k-input",{ref:"input",staticClass:"k-block-type-list-input",attrs:{disabled:t.disabled,keys:t.keys,marks:t.marks,value:t.content.text,type:"list"},on:{input:function(e){return t.update({text:e})}}})}),[]).exports;const mi=ct({extends:Ge,computed:{placeholder(){return this.field("text",{}).placeholder}},methods:{focus(){this.$refs.input.focus()}}},(function(){var t=this;return(0,t._self._c)("k-input",{ref:"input",staticClass:"k-block-type-markdown-input",attrs:{buttons:!1,disabled:t.disabled,placeholder:t.placeholder,spellcheck:!1,value:t.content.text,font:"monospace",type:"textarea"},on:{input:function(e){return t.update({text:e})}}})}),[]).exports;const fi=ct({extends:Ge,computed:{citationField(){return this.field("citation",{})},textField(){return this.field("text",{})}},methods:{focus(){this.$refs.text.focus()}}},(function(){var t=this,e=t._self._c;return e("div",{staticClass:"k-block-type-quote-editor"},[e("k-writer",{ref:"text",staticClass:"k-block-type-quote-text",attrs:{disabled:t.disabled,inline:t.textField.inline??!1,marks:t.textField.marks,placeholder:t.textField.placeholder,value:t.content.text},on:{input:function(e){return t.update({text:e})}}}),e("k-writer",{ref:"citation",staticClass:"k-block-type-quote-citation",attrs:{disabled:t.disabled,inline:t.citationField.inline??!0,marks:t.citationField.marks,placeholder:t.citationField.placeholder,value:t.content.citation},on:{input:function(e){return t.update({citation:e})}}})],1)}),[]).exports;const gi=ct({extends:Ge,inheritAttrs:!1,computed:{columns(){return this.table.columns??this.fields},fields(){return this.table.fields??{}},rows(){return this.content.rows??[]},table(){let t=null;for(const e of Object.values(this.fieldset.tabs??{}))e.fields.rows&&(t=e.fields.rows);return t??{}}}},(function(){var t=this;return(0,t._self._c)("k-table",{staticClass:"k-block-type-table-preview",attrs:{columns:t.columns,empty:t.$t("field.structure.empty"),rows:t.rows},nativeOn:{dblclick:function(e){return t.open.apply(null,arguments)}}})}),[]).exports;const ki=ct({extends:Ge,emits:["open","split","update"],computed:{component(){const t="k-"+this.textField.type+"-input";return this.$helper.isComponent(t)?t:"k-writer-input"},isSplitable(){return this.content.text.length>0&&!1===this.input().isCursorAtStart&&!1===this.input().isCursorAtEnd},keys(){const t={"Mod-Enter":this.split};return!0===this.textField.inline&&(t.Enter=this.split),t},textField(){return this.field("text",{})}},methods:{focus(){this.$refs.input.focus()},input(){return this.$refs.input.$refs.input},merge(t){this.update({text:t.map((t=>t.content.text)).join(this.textField.inline?" ":"")})},split(){var t,e;const i=null==(e=(t=this.input()).getSplitContent)?void 0:e.call(t);i&&("writer"===this.textField.type&&(i[0]=i[0].replace(/(
this.numberOfDays;e.push(i?"":t)}return e},isDisabled(t){const e=this.toDate(t);return this.disabled||e.isBefore(this.mindate,"day")||e.isAfter(this.maxdate,"day")},isSelected(t){return this.toDate(t).isSame(this.selected,"day")},isToday(t){return this.toDate(t).isSame(this.today,"day")},onNext(){const t=this.toDate().add(1,"month");this.show(t)},onPrev(){const t=this.toDate().subtract(1,"month");this.show(t)},select(t){this.$emit("input",(null==t?void 0:t.toISO("date"))??null)},show(t){this.month=(t??this.today).month(),this.year=(t??this.today).year()},toDate(t=1,e){return this.$library.dayjs(`${this.year}-${(e??this.month)+1}-${t}`)},toOptions(t,e){for(var i=[],s=t;s<=e;s++)i.push({value:s,text:this.$helper.pad(s)});return i}}},(function(){var t=this,e=t._self._c;return e("fieldset",{staticClass:"k-calendar-input",on:{click:function(t){t.stopPropagation()}}},[e("legend",{staticClass:"sr-only"},[t._v(t._s(t.$t("date.select")))]),e("nav",[e("k-button",{attrs:{title:t.$t("prev"),icon:"angle-left"},on:{click:t.onPrev}}),e("span",{staticClass:"k-calendar-selects"},[e("k-select-input",{attrs:{"aria-label":t.$t("month"),autofocus:t.autofocus,options:t.months,empty:!1,required:!0,value:t.month},on:{input:function(e){t.month=Number(e)}}}),e("k-select-input",{attrs:{"aria-label":t.$t("year"),options:t.years,empty:!1,required:!0,value:t.year},on:{input:function(e){t.year=Number(e)}}})],1),e("k-button",{attrs:{title:t.$t("next"),icon:"angle-right"},on:{click:t.onNext}})],1),e("table",{key:t.year+"-"+t.month,staticClass:"k-calendar-table"},[e("thead",[e("tr",t._l(t.weekdays,(function(i){return e("th",{key:"weekday_"+i},[t._v(" "+t._s(i)+" ")])})),0)]),e("tbody",t._l(t.weeks,(function(i){return e("tr",{key:"week_"+i},t._l(t.days(i),(function(i,s){return e("td",{key:"day_"+s,staticClass:"k-calendar-day",attrs:{"aria-current":!!t.isToday(i)&&"date","aria-selected":!!t.isSelected(i)&&"date"}},[i?e("k-button",{attrs:{disabled:t.isDisabled(i),text:i},on:{click:function(e){t.select(t.toDate(i))}}}):t._e()],1)})),0)})),0),e("tfoot",[e("tr",[e("td",{staticClass:"k-calendar-today",attrs:{colspan:"7"}},[e("k-button",{attrs:{disabled:t.disabled,text:t.$t("today")},on:{click:function(e){t.show(t.today),t.select(t.today)}}})],1)])])]),e("input",{staticClass:"input-hidden",attrs:{id:t.id,disabled:t.disabled,min:t.min,max:t.max,name:t.name,required:t.required,tabindex:"-1",type:"date"},domProps:{value:t.value}})])}),[]).exports;const Kn=ct({mixins:[De,{mixins:[Ie],props:{checked:{type:Boolean},info:{type:String},label:{type:String},type:{default:"checkbox",type:String},value:{type:[Boolean,Number,String]},variant:{type:String}}}]},(function(){var t=this,e=t._self._c;return e("label",{staticClass:"k-choice-input",attrs:{"aria-disabled":t.disabled}},[e("input",t._b({class:{"sr-only":"invisible"===t.variant},attrs:{"data-variant":t.variant},on:{input:function(e){return t.$emit("input",e.target.checked)}}},"input",{autofocus:t.autofocus,id:t.id,checked:t.checked,disabled:t.disabled,name:t.name,required:t.required,type:t.type,value:t.value},!1)),t.label||t.info?e("span",{staticClass:"k-choice-input-label"},[e("span",{staticClass:"k-choice-input-label-text",domProps:{innerHTML:t._s(t.label)}}),t.info?e("span",{staticClass:"k-choice-input-label-info",domProps:{innerHTML:t._s(t.info)}}):t._e()]):t._e()])}),[]).exports;const Wn=ct({extends:Kn},null,null).exports;const Jn=ct({mixins:[rn,{mixins:[an],props:{format:{type:String,default:"hex",validator:t=>["hex","rgb","hsl"].includes(t)},value:{type:String}}}],computed:{choices(){return this.options.map((t=>({...t,title:t.text??t.value,value:this.colorToString(t.value)})))}},methods:{colorToString(t){try{return this.$library.colors.toString(t,this.format)}catch{return t}}}},(function(){var t=this,e=t._self._c;return t.choices.length?e("fieldset",{staticClass:"k-coloroptions-input",attrs:{disabled:t.disabled}},[e("legend",{staticClass:"sr-only"},[t._v(t._s(t.$t("options")))]),e("ul",t._l(t.choices,(function(i,s){return e("li",{key:s},[e("label",{attrs:{title:i.title}},[e("input",{staticClass:"input-hidden",attrs:{autofocus:t.autofocus&&0===s,disabled:t.disabled,name:t.name??t.id,required:t.required,type:"radio"},domProps:{checked:i.value===t.value,value:i.value},on:{click:function(e){return t.toggle(i.value)},input:function(e){return t.$emit("input",i.value)}}}),e("k-color-frame",{attrs:{color:i.value}})],1)])})),0)]):t._e()}),[]).exports;const Gn=ct({mixins:[De,{mixins:[Ie,nt],props:{alpha:{default:!0,type:Boolean},format:{default:"hex",type:String,validator:t=>["hex","rgb","hsl"].includes(t)},value:{type:[Object,String]}}}],data:()=>({color:{h:0,s:0,v:1,a:1},formatted:null}),computed:{coords(){return this.value?{x:100*this.color.s,y:100*(1-this.color.v)}:null},hsl(){try{const t=this.$library.colors.convert(this.color,"hsl");return{h:t.h,s:(100*t.s).toFixed()+"%",l:(100*t.l).toFixed()+"%",a:t.a}}catch{return{h:0,s:"0%",l:"0%",a:1}}}},watch:{value:{handler(t,e){if(t===e||t===this.formatted)return;const i=this.$library.colors.parseAs(t??"","hsv");i?(this.formatted=this.$library.colors.toString(i,this.format),this.color=i):(this.formatted=null,this.color={h:0,s:0,v:1,a:1})},immediate:!0}},methods:{between:(t,e,i)=>Math.min(Math.max(t,e),i),emit(){return this.formatted=this.$library.colors.toString(this.color,this.format),this.$emit("input",this.formatted)},focus(){this.$refs.coords.focus()},setAlpha(t){this.color.a=this.alpha?this.between(Number(t),0,1):1,this.emit()},setCoords(t){if(!t)return this.$emit("input","");const e=Math.round(t.x),i=Math.round(t.y);this.color.s=this.between(e/100,0,1),this.color.v=this.between(1-i/100,0,1),this.emit()},setHue(t){this.color.h=this.between(Number(t),0,360),this.emit()}}},(function(){var t=this,e=t._self._c;return e("fieldset",{staticClass:"k-colorpicker-input",style:{"--h":t.hsl.h,"--s":t.hsl.s,"--l":t.hsl.l,"--a":t.hsl.a}},[e("legend",{staticClass:"sr-only"},[t._v(t._s(t.$t("color")))]),e("k-coords-input",{ref:"coords",attrs:{autofocus:t.autofocus,disabled:t.disabled,required:t.required,value:t.coords},on:{input:function(e){return t.setCoords(e)}}}),e("label",{attrs:{"aria-label":t.$t("hue")}},[e("k-hue-input",{attrs:{disabled:t.disabled,required:t.required,value:t.color.h},on:{input:function(e){return t.setHue(e)}}})],1),t.alpha?e("label",{attrs:{"aria-label":t.$t("alpha")}},[e("k-alpha-input",{attrs:{disabled:t.disabled,required:t.required,value:t.color.a},on:{input:function(e){return t.setAlpha(e)}}})],1):t._e(),e("k-coloroptions-input",{attrs:{disabled:t.disabled,format:t.format,options:t.options,required:t.required,value:t.value},on:{input:function(e){return t.$emit("input",e)}}}),e("input",{staticClass:"input-hidden",attrs:{name:t.name,required:t.required,tabindex:"-1",type:"text"},domProps:{value:t.formatted}})],1)}),[]).exports;const Xn=ct({mixins:[De,{mixins:[Ie],props:{reset:{default:!0,type:Boolean},value:{default:()=>({x:0,y:0}),type:Object}}}],data:()=>({x:0,y:0}),watch:{value:{handler(t){const e=this.parse(t);this.x=(null==e?void 0:e.x)??0,this.y=(null==e?void 0:e.y)??0},immediate:!0}},methods:{focus(){var t;null==(t=this.$el.querySelector("button"))||t.focus()},getCoords:(t,e)=>({x:Math.min(Math.max(t.clientX-e.left,0),e.width),y:Math.min(Math.max(t.clientY-e.top,0),e.height)}),onDelete(){this.reset&&!this.required&&this.$emit("input",null)},onDrag(t){if(0!==t.button)return;const e=t=>this.onMove(t),i=()=>{window.removeEventListener("mousemove",e),window.removeEventListener("mouseup",i)};window.addEventListener("mousemove",e),window.addEventListener("mouseup",i)},onEnter(){var t;null==(t=this.$el.form)||t.requestSubmit()},onInput(t,e){if(t.preventDefault(),t.stopPropagation(),this.disabled)return!1;this.x=Math.min(Math.max(parseFloat(e.x??this.x??0),0),100),this.y=Math.min(Math.max(parseFloat(e.y??this.y??0),0),100),this.$emit("input",{x:this.x,y:this.y})},onKeys(t){const e=t.shiftKey?10:1,i={ArrowUp:{y:this.y-e},ArrowDown:{y:this.y+e},ArrowLeft:{x:this.x-e},ArrowRight:{x:this.x+e}};i[t.key]&&this.onInput(t,i[t.key])},async onMove(t){const e=this.$el.getBoundingClientRect(),i=this.getCoords(t,e),s=i.x/e.width*100,n=i.y/e.height*100;this.onInput(t,{x:s,y:n}),await this.$nextTick(),this.focus()},parse(t){if("object"==typeof t)return t;const e={"top left":{x:0,y:0},"top center":{x:50,y:0},"top right":{x:100,y:0},"center left":{x:0,y:50},center:{x:50,y:50},"center center":{x:50,y:50},"center right":{x:100,y:50},"bottom left":{x:0,y:100},"bottom center":{x:50,y:100},"bottom right":{x:100,y:100}};if(e[t])return e[t];const i=t.split(",").map((t=>t.trim()));return{x:i[0],y:i[1]??0}}}},(function(){var t=this,e=t._self._c;return e("div",{staticClass:"k-coords-input",attrs:{"aria-disabled":t.disabled,"data-empty":!t.value},on:{mousedown:t.onDrag,click:t.onMove,keydown:t.onKeys}},[t._t("default"),e("button",{staticClass:"k-coords-input-thumb",style:{left:`${t.x}%`,top:`${t.y}%`},attrs:{id:t.id,autofocus:t.autofocus,disabled:t.disabled},on:{keydown:[function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"enter",13,e.key,"Enter")?null:(e.preventDefault(),t.onEnter.apply(null,arguments))},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"delete",[8,46],e.key,["Backspace","Delete","Del"])?null:t.onDelete.apply(null,arguments)}]}}),e("input",{staticClass:"input-hidden",attrs:{name:t.name,required:t.required,tabindex:"-1",type:"text"},domProps:{value:t.value?[t.value.x,t.value.y]:null}})],2)}),[]).exports,Zn={mixins:[cn],props:{max:null,min:null,step:{default:1,type:Number},tooltip:{default:!1,type:[Boolean,Object]}}};const Qn=ct({mixins:[un,Zn]},(function(){var t=this;return(0,t._self._c)("k-range-input",t._b({staticClass:"k-hue-input",attrs:{min:0,max:360},on:{input:function(e){return t.$emit("input",e)}}},"k-range-input",t.$props,!1))}),[]).exports;const to=ct({mixins:[Si,{mixins:[Ci],props:{autocomplete:null,pattern:null,spellcheck:null,placeholder:{default:()=>window.panel.$t("search")+" …",type:String}}}]},(function(){var t=this;return(0,t._self._c)("k-string-input",t._b({staticClass:"k-search-input",attrs:{spellcheck:!1,autocomplete:"off",type:"search"},on:{input:function(e){return t.$emit("input",e)}}},"k-string-input",t.$props,!1))}),[]).exports;const eo=ct({mixins:[De,{mixins:[Ie,Mn]}],props:{display:{type:String,default:"HH:mm"},value:String},computed:{day(){return this.formatTimes([6,7,8,9,10,11,"-",12,13,14,15,16,17])},night(){return this.formatTimes([18,19,20,21,22,23,"-",0,1,2,3,4,5])}},methods:{focus(){this.$el.querySelector("button").focus()},formatTimes(t){return t.map((t=>{if("-"===t)return t;const e=this.$library.dayjs(t+":00","H:mm");return{display:e.format(this.display),select:e.toISO("time")}}))},select(t){this.$emit("input",t)}}},(function(){var t=this,e=t._self._c;return e("div",{staticClass:"k-timeoptions-input"},[e("div",[e("h3",[e("k-icon",{attrs:{type:"sun"}}),t._v(" "),e("span",{staticClass:"sr-only"},[t._v(t._s(t.$t("day")))])],1),e("ul",t._l(t.day,(function(i,s){return e("li",{key:i.select},["-"===i?e("hr"):e("k-button",{attrs:{autofocus:t.autofocus&&0===s,disabled:t.disabled,selected:i.select===t.value&&"time"},on:{click:function(e){return t.select(i.select)}}},[t._v(" "+t._s(i.display)+" ")])],1)})),0)]),e("div",[e("h3",[e("k-icon",{attrs:{type:"moon"}}),t._v(" "),e("span",{staticClass:"sr-only"},[t._v(t._s(t.$t("night")))])],1),e("ul",t._l(t.night,(function(i){return e("li",{key:i.select},["-"===i?e("hr"):e("k-button",{attrs:{disabled:t.disabled,selected:i.select===t.value&&"time"},on:{click:function(e){return t.select(i.select)}}},[t._v(" "+t._s(i.display)+" ")])],1)})),0)]),e("input",{staticClass:"input-hidden",attrs:{id:t.id,disabled:t.disabled,min:t.min,max:t.max,name:t.name,required:t.required,tabindex:"-1",type:"time"},domProps:{value:t.value}})])}),[]).exports,io={install(t){t.component("k-alpha-input",Hn),t.component("k-calendar-input",Vn),t.component("k-checkbox-input",Wn),t.component("k-checkboxes-input",wi),t.component("k-choice-input",Kn),t.component("k-colorname-input",Mi),t.component("k-coloroptions-input",Jn),t.component("k-colorpicker-input",Gn),t.component("k-coords-input",Xn),t.component("k-date-input",ji),t.component("k-email-input",qi),t.component("k-hue-input",Qn),t.component("k-list-input",Fs),t.component("k-multiselect-input",Vs),t.component("k-number-input",Zs),t.component("k-password-input",nn),t.component("k-picklist-input",Le),t.component("k-radio-input",rn),t.component("k-range-input",un),t.component("k-search-input",to),t.component("k-select-input",hn),t.component("k-slug-input",gn),t.component("k-string-input",Si),t.component("k-tags-input",Ws),t.component("k-tel-input",yn),t.component("k-text-input",Ti),t.component("k-textarea-input",Sn),t.component("k-time-input",In),t.component("k-timeoptions-input",eo),t.component("k-toggle-input",En),t.component("k-toggles-input",Bn),t.component("k-url-input",Nn),t.component("k-writer-input",Ps),t.component("k-calendar",Vn),t.component("k-times",eo)}};const so=ct({mixins:[Et],inheritAttrs:!1,props:{cancelButton:{default:!1},label:{default(){return this.$t("field.layout.select")},type:String},layouts:{type:Array},selector:Object,submitButton:{default:!1},value:{type:Array}},emits:["cancel","input","submit"]},(function(){var t,e,i=this,s=i._self._c;return s("k-dialog",i._b({staticClass:"k-layout-selector",attrs:{size:(null==(t=i.selector)?void 0:t.size)??"medium"},on:{cancel:function(t){return i.$emit("cancel")},submit:function(t){return i.$emit("submit",i.value)}}},"k-dialog",i.$props,!1),[s("h3",{staticClass:"k-label"},[i._v(i._s(i.label))]),s("k-navigate",{staticClass:"k-layout-selector-options",style:{"--columns":Number((null==(e=i.selector)?void 0:e.columns)??3)},attrs:{axis:"x"}},i._l(i.layouts,(function(t,e){return s("button",{key:e,staticClass:"k-layout-selector-option",attrs:{"aria-current":i.value===t,"aria-label":t.join(","),value:t},on:{click:function(e){return i.$emit("input",t)}}},[s("k-grid",{attrs:{"aria-hidden":""}},i._l(t,(function(t,e){return s("k-column",{key:e,attrs:{width:t}})})),1)],1)})),0)],1)}),[]).exports,no={install(t){t.component("k-layout",Ki),t.component("k-layout-column",Hi),t.component("k-layouts",Ji),t.component("k-layout-selector",so)}},oo={inheritAttrs:!1,props:{column:{default:()=>({}),type:Object},field:{default:()=>({}),type:Object},value:{}}},ao={props:{html:{type:Boolean}}};const ro=ct({mixins:[ao],inheritAttrs:!1,props:{bubbles:[Array,String]},computed:{items(){let t=this.bubbles;return"string"==typeof t&&(t=t.split(",")),t.map((t=>"string"===t?{text:t}:t))}}},(function(){var t=this,e=t._self._c;return e("ul",{staticClass:"k-bubbles"},t._l(t.items,(function(i,s){return e("li",{key:s},[e("k-bubble",t._b({attrs:{html:t.html}},"k-bubble",i,!1))],1)})),0)}),[]).exports;const lo=ct({mixins:[oo,ao],props:{value:{default:()=>[],type:[Array,String]}},computed:{bubbles(){let t=this.value;const e=this.column.options??this.field.options??[];return"string"==typeof t&&(t=t.split(",")),(t??[]).map((t=>{"string"==typeof t&&(t={value:t,text:t});for(const i of e)i.value===t.value&&(t.text=i.text);return t}))}}},(function(){var t=this,e=t._self._c;return e("div",{staticClass:"k-bubbles-field-preview",class:t.$options.class},[e("k-bubbles",{attrs:{bubbles:t.bubbles,html:t.html}})],1)}),[]).exports;const co=ct({extends:lo,inheritAttrs:!1,class:"k-array-field-preview",computed:{bubbles(){return[{text:1===this.value.length?`1 ${this.$t("entry")}`:`${this.value.length} ${this.$t("entries")}`}]}}},null,null).exports;const uo=ct({mixins:[oo],props:{value:String},computed:{text(){var t;if(!this.value)return;const e=this.$library.colors.toString(this.value,this.field.format,this.field.alpha),i=null==(t=this.field.options)?void 0:t.find((t=>this.$library.colors.toString(t.value,this.field.format,this.field.alpha)===e));return i?i.text:null}}},(function(){var t=this,e=t._self._c;return e("div",{staticClass:"k-color-field-preview"},[e("k-color-frame",{attrs:{color:t.value}}),t.text?[t._v(" "+t._s(t.text)+" ")]:t._e()],2)}),[]).exports;const po=ct({mixins:[oo],inheritAttrs:!1,computed:{text(){return this.value}}},(function(){var t=this;return(0,t._self._c)("p",{staticClass:"k-text-field-preview",class:t.$options.class},[t._v(" "+t._s(t.column.before)+" "),t._t("default",(function(){return[t._v(t._s(t.text))]})),t._v(" "+t._s(t.column.after)+" ")],2)}),[]).exports;const ho=ct({extends:po,props:{value:String},class:"k-date-field-preview",computed:{display(){return this.column.display??this.field.display},format(){var t;let e=this.display??"YYYY-MM-DD";return(null==(t=this.time)?void 0:t.display)&&(e+=" "+this.time.display),e},parsed(){return this.$library.dayjs(this.value)},text(){var t;return!1===this.parsed.isValid()?this.value:null==(t=this.parsed)?void 0:t.format(this.format)},time(){return this.column.time??this.field.time}}},null,null).exports;const mo=ct({mixins:[oo],props:{value:[String,Object]},computed:{link(){return"object"==typeof this.value?this.value.href:this.value},text(){return"object"==typeof this.value?this.value.text:this.link}}},(function(){var t=this,e=t._self._c;return e("p",{staticClass:"k-url-field-preview",class:t.$options.class,attrs:{"data-link":t.link}},[t._v(" "+t._s(t.column.before)+" "),e("k-link",{attrs:{to:t.link},nativeOn:{click:function(t){t.stopPropagation()}}},[e("span",[t._v(t._s(t.text))])]),t._v(" "+t._s(t.column.after)+" ")],1)}),[]).exports;const fo=ct({extends:mo,class:"k-email-field-preview"},null,null).exports;const go=ct({extends:lo,class:"k-files-field-preview",props:{html:{type:Boolean,default:!0}},computed:{bubbles(){return this.value.map((t=>({text:t.filename,link:t.link,image:t.image})))}}},null,null).exports;const ko=ct({mixins:[oo],props:{value:Object},computed:{status(){var t;return{...this.$helper.page.status(null==(t=this.value)?void 0:t.status),...this.value}}}},(function(){var t=this,e=t._self._c;return t.value?e("k-button",t._b({staticClass:"k-flag-field-preview",attrs:{size:"md"}},"k-button",t.status,!1)):t._e()}),[]).exports;const bo=ct({mixins:[oo],props:{value:String},computed:{html(){return this.value}}},(function(){var t=this,e=t._self._c;return e("div",{staticClass:"k-html-field-preview",class:t.$options.class},[t._v(" "+t._s(t.column.before)+" "),e("k-text",{attrs:{html:t.html}}),t._v(" "+t._s(t.column.after)+" ")],1)}),[]).exports;const vo=ct({mixins:[oo],props:{value:[Object]}},(function(){var t=this,e=t._self._c;return t.value?e("k-item-image",{staticClass:"k-image-field-preview",attrs:{image:t.value}}):t._e()}),[]).exports;const yo=ct({mixins:[oo],inheritAttrs:!1,props:{removable:Boolean,type:String},emits:["remove"],data:()=>({model:null}),computed:{currentType(){return this.type??this.detected.type},detected(){return this.$helper.link.detect(this.value)},isLink(){return["url","email","tel"].includes(this.currentType)}},watch:{detected:{async handler(t,e){t!==e&&(this.model=await this.$helper.link.preview(this.detected))},immediate:!0},type(){this.model=null}}},(function(){var t=this,e=t._self._c;return e("div",{class:{"k-link-field-preview":!0,"k-url-field-preview":t.isLink}},["page"===t.currentType||"file"===t.currentType?[t.model?[e("k-tag",{attrs:{image:{...t.model.image,cover:!0},removable:t.removable,text:t.model.label},on:{remove:function(e){return t.$emit("remove",e)}}})]:t._t("placeholder")]:t.isLink?[e("p",{staticClass:"k-text"},[e("a",{attrs:{href:t.value,target:"_blank"}},[e("span",[t._v(t._s(t.detected.link))])])])]:[t._v(" "+t._s(t.detected.link)+" ")]],2)}),[]).exports;const $o=ct({extends:lo,class:"k-object-field-preview",props:{value:[Array,Object]},computed:{bubbles(){return this.value?[{text:"{ ... }"}]:[]}}},null,null).exports;const wo=ct({extends:lo,inheritAttrs:!1,class:"k-pages-field-preview",props:{html:{type:Boolean,default:!0}}},null,null).exports;const xo=ct({extends:ho,class:"k-time-field-preview",computed:{format(){return this.display??"HH:mm"},parsed(){return this.$library.dayjs.iso(this.value,"time")},text(){var t;return null==(t=this.parsed)?void 0:t.format(this.format)}}},null,null).exports;const _o=ct({mixins:[oo],props:{value:Boolean},emits:["input"],computed:{isEditable(){return!0!==this.field.disabled},text(){return!1!==this.column.text?this.field.text:null}}},(function(){var t=this,e=t._self._c;return e("div",{staticClass:"k-toggle-field-preview"},[e("k-toggle-input",{attrs:{disabled:!t.isEditable,text:t.text,value:t.value},on:{input:function(e){return t.$emit("input",e)}},nativeOn:{click:function(e){t.isEditable&&e.stopPropagation()}}})],1)}),[]).exports;const Co=ct({extends:lo,class:"k-users-field-preview",computed:{bubble(){return this.value.map((t=>({text:t.username,link:t.link,image:t.image})))}}},null,null).exports,So={install(t){t.component("k-array-field-preview",co),t.component("k-bubbles-field-preview",lo),t.component("k-color-field-preview",uo),t.component("k-date-field-preview",ho),t.component("k-email-field-preview",fo),t.component("k-files-field-preview",go),t.component("k-flag-field-preview",ko),t.component("k-html-field-preview",bo),t.component("k-image-field-preview",vo),t.component("k-link-field-preview",yo),t.component("k-object-field-preview",$o),t.component("k-pages-field-preview",wo),t.component("k-text-field-preview",po),t.component("k-toggle-field-preview",_o),t.component("k-time-field-preview",xo),t.component("k-url-field-preview",mo),t.component("k-users-field-preview",Co),t.component("k-list-field-preview",bo),t.component("k-writer-field-preview",bo),t.component("k-checkboxes-field-preview",lo),t.component("k-multiselect-field-preview",lo),t.component("k-radio-field-preview",lo),t.component("k-select-field-preview",lo),t.component("k-tags-field-preview",lo),t.component("k-toggles-field-preview",lo)}};const Oo=ct({mixins:[{props:{buttons:{type:Array,default:()=>[]},theme:{type:String,default:"light"}}}],methods:{close(){for(const t in this.$refs){const e=this.$refs[t][0];"function"==typeof(null==e?void 0:e.close)&&e.close()}}}},(function(){var t=this,e=t._self._c;return e("nav",{staticClass:"k-toolbar",attrs:{"data-theme":t.theme}},[t._l(t.buttons,(function(i,s){var n;return["|"===i?e("hr",{key:s}):i.when??1?e("k-button",{key:s,class:["k-toolbar-button",i.class],attrs:{current:i.current,disabled:i.disabled,icon:i.icon,title:i.label??i.title,tabindex:"0"},on:{click:function(e){var n,o;(null==(n=i.dropdown)?void 0:n.length)?t.$refs[s+"-dropdown"][0].toggle():null==(o=i.click)||o.call(i,e)}},nativeOn:{keydown:function(t){var e;null==(e=i.key)||e.call(i,t)}}}):t._e(),(i.when??1)&&(null==(n=i.dropdown)?void 0:n.length)?e("k-dropdown-content",{key:s+"-dropdown",ref:s+"-dropdown",refInFor:!0,attrs:{options:i.dropdown,theme:"dark"===t.theme?"light":"dark"}}):t._e()]}))],2)}),[]).exports;const Mo=ct({extends:Bt,props:{fields:{default:()=>{const t=Bt.props.fields.default();return t.title.label=window.panel.$t("link.text"),t}}},methods:{submit(){const t=this.values.href??"",e=this.values.title??"";return this.$panel.config.kirbytext?(null==e?void 0:e.length)>0?this.$emit("submit",`(email: ${t} text: ${e})`):this.$emit("submit",`(email: ${t})`):(null==e?void 0:e.length)>0?this.$emit("submit",`[${e}](mailto:${t})`):this.$emit("submit",`<${t}>`)}}},null,null).exports;const Ao=ct({extends:Kt,props:{fields:{default:()=>({href:{label:window.panel.$t("link"),type:"link",placeholder:window.panel.$t("url.placeholder"),icon:"url"},title:{label:window.panel.$t("link.text"),type:"text",icon:"title"}})}},methods:{submit(){const t=this.values.href??"",e=this.values.title??"";return this.$panel.config.kirbytext?(null==e?void 0:e.length)>0?this.$emit("submit",`(link: ${t} text: ${e})`):this.$emit("submit",`(link: ${t})`):(null==e?void 0:e.length)>0?this.$emit("submit",`[${e}](${t})`):this.$emit("submit",`<${t}>`)}}},null,null).exports,Io={install(t){t.component("k-toolbar",Oo),t.component("k-textarea-toolbar",_n),t.component("k-toolbar-email-dialog",Mo),t.component("k-toolbar-link-dialog",Ao)}};const Do=ct({props:{editor:{required:!0,type:Object},inline:{default:!0,type:Boolean},marks:{default:()=>["bold","italic","underline","strike","code","|","link","email","|","clear"],type:[Array,Boolean]},nodes:{default:!0,type:[Array,Boolean]}},emits:["command"],data:()=>({isOpen:!1,position:{x:0,y:0}}),computed:{activeNode(){return Object.values(this.nodeButtons).find((t=>this.isNodeActive(t)))??!1},buttons(){var t,e,i;const s=[];if(this.hasNodes){const n=[];let o=0;for(const s in this.nodeButtons){const a=this.nodeButtons[s];n.push({current:(null==(t=this.activeNode)?void 0:t.id)===a.id,disabled:!1===(null==(i=null==(e=this.activeNode)?void 0:e.when)?void 0:i.includes(a.name)),icon:a.icon,label:a.label,click:()=>this.command(a.command??s)}),!0===a.separator&&o!==Object.keys(this.nodeButtons).length-1&&n.push("-"),o++}s.push({current:Boolean(this.activeNode),icon:this.activeNode.icon??"title",dropdown:n})}if(this.hasNodes&&this.hasMarks&&s.push("|"),this.hasMarks)for(const n in this.markButtons){const t=this.markButtons[n];"|"!==t?s.push({current:this.editor.activeMarks.includes(n),icon:t.icon,label:t.label,click:e=>this.command(t.command??n,e)}):s.push("|")}return s},hasMarks(){return this.$helper.object.length(this.markButtons)>0},hasNodes(){return this.$helper.object.length(this.nodeButtons)>1},markButtons(){const t=this.editor.buttons("mark");if(!1===this.marks||0===this.$helper.object.length(t))return{};if(!0===this.marks)return t;const e={};for(const[i,s]of this.marks.entries())"|"===s?e["divider"+i]="|":t[s]&&(e[s]=t[s]);return e},nodeButtons(){const t=this.editor.buttons("node");if(!1===this.nodes||0===this.$helper.object.length(t))return{};if("block+"!==this.editor.nodes.doc.content&&t.paragraph&&delete t.paragraph,!0===this.nodes)return t;const e={};for(const i of this.nodes)t[i]&&(e[i]=t[i]);return e},positions(){return!1===this.inline?null:{top:this.position.y+"px",left:this.position.x+"px"}}},methods:{close(t){t&&!1!==this.$el.contains(t.relatedTarget)||(this.isOpen=!1)},command(t,...e){this.$emit("command",t,...e)},isNodeActive(t){if(!1===this.editor.activeNodes.includes(t.name))return!1;if("paragraph"===t.name)return!1===this.editor.activeNodes.includes("listItem")&&!1===this.editor.activeNodes.includes("quote");if(t.attrs){if(void 0===Object.values(this.editor.activeNodeAttrs).find((e=>JSON.stringify(e)===JSON.stringify(t.attrs))))return!1}return!0},open(){0!==this.buttons.length&&(this.isOpen=!0,this.inline&&this.$nextTick(this.setPosition))},setPosition(){const t=this.$el.getBoundingClientRect(),e=this.editor.element.getBoundingClientRect(),i=document.querySelector(".k-panel-menu").getBoundingClientRect(),{from:s,to:n}=this.editor.selection,o=this.editor.view.coordsAtPos(s),a=this.editor.view.coordsAtPos(n,!0),r=new DOMRect(o.left,o.top,a.right-o.left,a.bottom-o.top);let l=r.x-e.x+r.width/2-t.width/2,c=r.y-e.y-t.height-5;if(t.widtho&&m(e,t,o+1),l=i.depth>o&&m(n,i,o+1),a=[];return y(null,e,o,a),s&&l&&t.index(o)==n.index(o)?(p(s,l),g(v(s,w(e,t,n,i,o+1)),a)):(s&&g(v(s,b(e,t,o+1)),a),y(t,n,o,a),l&&g(v(l,b(n,i,o+1)),a)),y(i,null,o,a),new r(a)}function b(e,t,n){let i=[];if(y(null,e,n,i),e.depth>n){g(v(m(e,t,n+1),b(e,t,n+1)),i)}return y(t,null,n,i),new r(i)}c.empty=new c(r.empty,0,0);class x{constructor(e,t,n){this.pos=e,this.path=t,this.parentOffset=n,this.depth=t.length/3-1}resolveDepth(e){return null==e?this.depth:e<0?this.depth+e:e}get parent(){return this.node(this.depth)}get doc(){return this.node(0)}node(e){return this.path[3*this.resolveDepth(e)]}index(e){return this.path[3*this.resolveDepth(e)+1]}indexAfter(e){return e=this.resolveDepth(e),this.index(e)+(e!=this.depth||this.textOffset?1:0)}start(e){return 0==(e=this.resolveDepth(e))?0:this.path[3*e-1]+1}end(e){return e=this.resolveDepth(e),this.start(e)+this.node(e).content.size}before(e){if(!(e=this.resolveDepth(e)))throw new RangeError("There is no position before the top-level node");return e==this.depth+1?this.pos:this.path[3*e-1]}after(e){if(!(e=this.resolveDepth(e)))throw new RangeError("There is no position after the top-level node");return e==this.depth+1?this.pos:this.path[3*e-1]+this.path[3*e].nodeSize}get textOffset(){return this.pos-this.path[this.path.length-1]}get nodeAfter(){let e=this.parent,t=this.index(this.depth);if(t==e.childCount)return null;let n=this.pos-this.path[this.path.length-1],r=e.child(t);return n?e.child(t).cut(n):r}get nodeBefore(){let e=this.index(this.depth),t=this.pos-this.path[this.path.length-1];return t?this.parent.child(e).cut(0,t):0==e?null:this.parent.child(e-1)}posAtIndex(e,t){t=this.resolveDepth(t);let n=this.path[3*t],r=0==t?0:this.path[3*t-1]+1;for(let i=0;i{e.state==i&&Rn(e)}),50)}function tr(e,t,n){let r=e.state.selection;if(r instanceof Ge&&!r.empty||n.indexOf("s")>-1)return!1;if(jt&&n.indexOf("m")>-1)return!1;let{$from:i,$to:o}=r;if(!i.parent.inlineContent||e.endOfTextblock(t<0?"up":"down")){let n=Kn(e.state,t);if(n&&n instanceof Xe)return Hn(e,n)}if(!i.parent.inlineContent){let n=t<0?i:o,s=r instanceof et?Ke.near(n,t):Ke.findFrom(n,t);return!!s&&Hn(e,s)}return!1}function nr(e,t){if(!(e.state.selection instanceof Ge))return!0;let{$head:n,$anchor:r,empty:i}=e.state.selection;if(!n.sameParent(r))return!0;if(!i)return!1;if(e.endOfTextblock(t>0?"forward":"backward"))return!0;let o=!n.textOffset&&(t<0?n.nodeBefore:n.nodeAfter);if(o&&!o.isText){let r=e.state.tr;return t<0?r.delete(n.pos-o.nodeSize,n.pos):r.delete(n.pos,n.pos+o.nodeSize),e.dispatch(r),!0}return!1}function rr(e,t,n){e.domObserver.stop(),t.contentEditable=n,e.domObserver.start()}function ir(e,t){let n=t.keyCode,r=function(e){let t="";return e.ctrlKey&&(t+="c"),e.metaKey&&(t+="m"),e.altKey&&(t+="a"),e.shiftKey&&(t+="s"),t}(t);return 8==n||jt&&72==n&&"c"==r?nr(e,-1)||Zn(e):46==n||jt&&68==n&&"c"==r?nr(e,1)||Xn(e):13==n||27==n||(37==n||jt&&66==n&&"c"==r?Yn(e,-1,r)||Zn(e):39==n||jt&&70==n&&"c"==r?Yn(e,1,r)||Xn(e):38==n||jt&&80==n&&"c"==r?tr(e,-1,r)||Zn(e):40==n||jt&&78==n&&"c"==r?function(e){if(!Bt||e.state.selection.$head.parentOffset>0)return!1;let{focusNode:t,focusOffset:n}=e.domSelectionRange();if(t&&1==t.nodeType&&0==n&&t.firstChild&&"false"==t.firstChild.contentEditable){let n=t.firstChild;rr(e,n,"true"),setTimeout((()=>rr(e,n,"false")),20)}return!1}(e)||tr(e,1,r)||Xn(e):r==(jt?"m":"c")&&(66==n||73==n||89==n||90==n))}function or(e,t){e.someProp("transformCopied",(n=>{t=n(t,e)}));let n=[],{content:r,openStart:i,openEnd:o}=t;for(;i>1&&o>1&&1==r.childCount&&1==r.firstChild.childCount;){i--,o--;let e=r.firstChild;n.push(e.type.name,e.attrs!=e.type.defaultAttrs?e.attrs:null),r=e.content}let s=e.someProp("clipboardSerializer")||se.fromSchema(e.state.schema),l=mr(),a=l.createElement("div");a.appendChild(s.serializeFragment(r,{document:l}));let c,h=a.firstChild,d=0;for(;h&&1==h.nodeType&&(c=fr[h.nodeName.toLowerCase()]);){for(let e=c.length-1;e>=0;e--){let t=l.createElement(c[e]);for(;a.firstChild;)t.appendChild(a.firstChild);a.appendChild(t),d++}h=a.firstChild}return h&&1==h.nodeType&&h.setAttribute("data-pm-slice",`${i} ${o}${d?` -${d}`:""} ${JSON.stringify(n)}`),{dom:a,text:e.someProp("clipboardTextSerializer",(n=>n(t,e)))||t.content.textBetween(0,t.content.size,"\n\n")}}function sr(e,t,n,i,o){let s,l,a=o.parent.type.spec.code;if(!n&&!t)return null;let h=t&&(i||a||!n);if(h){if(e.someProp("transformPastedText",(n=>{t=n(t,a||i,e)})),a)return t?new c(r.from(e.state.schema.text(t.replace(/\r\n?/g,"\n"))),0,0):c.empty;let n=e.someProp("clipboardTextParser",(n=>n(t,o,i,e)));if(n)l=n;else{let n=o.marks(),{schema:r}=e.state,i=se.fromSchema(r);s=document.createElement("div"),t.split(/(?:\r\n?|\n)+/).forEach((e=>{let t=s.appendChild(document.createElement("p"));e&&t.appendChild(i.serializeNode(r.text(e,n)))}))}}else e.someProp("transformPastedHTML",(t=>{n=t(n,e)})),s=function(e){let t=/^(\s*]*>)*/.exec(e);t&&(e=e.slice(t[0].length));let n,r=mr().createElement("div"),i=/<([a-z][^>\s]+)/i.exec(e);(n=i&&fr[i[1].toLowerCase()])&&(e=n.map((e=>"<"+e+">")).join("")+e+n.map((e=>""+e+">")).reverse().join(""));if(r.innerHTML=e,n)for(let o=0;o=e){this.children[s]==e&&(n=this.children[s+2]);break}let i=e+1,o=i+t.content.size;for(let s=0;s