Update Kirby and Composer dependencies

This commit is contained in:
Paul Nicoué 2022-03-22 15:39:39 +01:00
parent f5d3ea5e84
commit ec74d78ba9
382 changed files with 25077 additions and 4955 deletions

429
composer.lock generated
View file

@ -8,16 +8,16 @@
"packages": [ "packages": [
{ {
"name": "amteich/kirby-twig", "name": "amteich/kirby-twig",
"version": "4.1.4", "version": "4.1.6",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/amteich/kirby-twig.git", "url": "https://github.com/amteich/kirby-twig.git",
"reference": "d4d69a254dc5a904a0f6f5ec3cbe7e12394c0cf8" "reference": "d7f5535a24211702a76bde5c7f59aaf23904efab"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/amteich/kirby-twig/zipball/d4d69a254dc5a904a0f6f5ec3cbe7e12394c0cf8", "url": "https://api.github.com/repos/amteich/kirby-twig/zipball/d7f5535a24211702a76bde5c7f59aaf23904efab",
"reference": "d4d69a254dc5a904a0f6f5ec3cbe7e12394c0cf8", "reference": "d7f5535a24211702a76bde5c7f59aaf23904efab",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -47,22 +47,22 @@
"description": "Twig templating support for Kirby CMS", "description": "Twig templating support for Kirby CMS",
"support": { "support": {
"issues": "https://github.com/amteich/kirby-twig/issues", "issues": "https://github.com/amteich/kirby-twig/issues",
"source": "https://github.com/amteich/kirby-twig/tree/4.1.4" "source": "https://github.com/amteich/kirby-twig/tree/4.1.6"
}, },
"time": "2021-08-27T06:57:14+00:00" "time": "2022-01-03T09:07:58+00:00"
}, },
{ {
"name": "claviska/simpleimage", "name": "claviska/simpleimage",
"version": "3.6.3", "version": "3.6.5",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/claviska/SimpleImage.git", "url": "https://github.com/claviska/SimpleImage.git",
"reference": "21b6f4bf4ef1927158b3e29bd0c2d99c6681c750" "reference": "00f90662686696b9b7157dbb176183aabe89700f"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/claviska/SimpleImage/zipball/21b6f4bf4ef1927158b3e29bd0c2d99c6681c750", "url": "https://api.github.com/repos/claviska/SimpleImage/zipball/00f90662686696b9b7157dbb176183aabe89700f",
"reference": "21b6f4bf4ef1927158b3e29bd0c2d99c6681c750", "reference": "00f90662686696b9b7157dbb176183aabe89700f",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -90,7 +90,7 @@
"description": "A PHP class that makes working with images as simple as possible.", "description": "A PHP class that makes working with images as simple as possible.",
"support": { "support": {
"issues": "https://github.com/claviska/SimpleImage/issues", "issues": "https://github.com/claviska/SimpleImage/issues",
"source": "https://github.com/claviska/SimpleImage/tree/3.6.3" "source": "https://github.com/claviska/SimpleImage/tree/3.6.5"
}, },
"funding": [ "funding": [
{ {
@ -98,7 +98,7 @@
"type": "github" "type": "github"
} }
], ],
"time": "2021-04-20T12:18:18+00:00" "time": "2021-12-01T12:42:55+00:00"
}, },
{ {
"name": "diesdasdigital/kirby-meta-knight", "name": "diesdasdigital/kirby-meta-knight",
@ -144,16 +144,16 @@
}, },
{ {
"name": "filp/whoops", "name": "filp/whoops",
"version": "2.14.4", "version": "2.14.5",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/filp/whoops.git", "url": "https://github.com/filp/whoops.git",
"reference": "f056f1fe935d9ed86e698905a957334029899895" "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/filp/whoops/zipball/f056f1fe935d9ed86e698905a957334029899895", "url": "https://api.github.com/repos/filp/whoops/zipball/a63e5e8f26ebbebf8ed3c5c691637325512eb0dc",
"reference": "f056f1fe935d9ed86e698905a957334029899895", "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -203,7 +203,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/filp/whoops/issues", "issues": "https://github.com/filp/whoops/issues",
"source": "https://github.com/filp/whoops/tree/2.14.4" "source": "https://github.com/filp/whoops/tree/2.14.5"
}, },
"funding": [ "funding": [
{ {
@ -211,47 +211,55 @@
"type": "github" "type": "github"
} }
], ],
"time": "2021-10-03T12:00:00+00:00" "time": "2022-01-07T12:00:00+00:00"
}, },
{ {
"name": "getkirby/cms", "name": "getkirby/cms",
"version": "3.6.0", "version": "3.6.3",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/getkirby/kirby.git", "url": "https://github.com/getkirby/kirby.git",
"reference": "9ea05e38dbeb471657e3066651568fc29763ef06" "reference": "6b20fa11843f57cd9a1e611bc9e8e8a91b855156"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/getkirby/kirby/zipball/9ea05e38dbeb471657e3066651568fc29763ef06", "url": "https://api.github.com/repos/getkirby/kirby/zipball/6b20fa11843f57cd9a1e611bc9e8e8a91b855156",
"reference": "9ea05e38dbeb471657e3066651568fc29763ef06", "reference": "6b20fa11843f57cd9a1e611bc9e8e8a91b855156",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"claviska/simpleimage": "3.6.3", "claviska/simpleimage": "3.6.5",
"ext-ctype": "*", "ext-ctype": "*",
"ext-mbstring": "*", "ext-mbstring": "*",
"filp/whoops": "2.14.4", "filp/whoops": "2.14.5",
"getkirby/composer-installer": "^1.2.1", "getkirby/composer-installer": "^1.2.1",
"laminas/laminas-escaper": "2.9.0", "laminas/laminas-escaper": "2.9.0",
"michelf/php-smartypants": "1.8.1", "michelf/php-smartypants": "1.8.1",
"mustangostang/spyc": "0.6.3", "php": ">=7.4.0 <8.2.0",
"php": ">=7.4.0 <8.1.0", "phpmailer/phpmailer": "6.5.4",
"phpmailer/phpmailer": "6.5.1",
"psr/log": "1.1.4", "psr/log": "1.1.4",
"true/punycode": "2.1.1" "symfony/polyfill-intl-idn": "1.24.0",
"symfony/polyfill-mbstring": "1.24.0"
},
"replace": {
"symfony/polyfill-php72": "*"
}, },
"type": "kirby-cms", "type": "kirby-cms",
"extra": {
"unused": [
"symfony/polyfill-intl-idn"
]
},
"autoload": { "autoload": {
"files": [
"config/setup.php",
"config/helpers.php"
],
"psr-4": { "psr-4": {
"Kirby\\": "src/" "Kirby\\": "src/"
}, },
"classmap": [ "classmap": [
"dependencies/" "dependencies/"
],
"files": [
"config/setup.php",
"config/helpers.php"
] ]
}, },
"notification-url": "https://packagist.org/downloads/", "notification-url": "https://packagist.org/downloads/",
@ -284,7 +292,7 @@
"type": "custom" "type": "custom"
} }
], ],
"time": "2021-11-16T13:49:22+00:00" "time": "2022-03-22T09:36:50+00:00"
}, },
{ {
"name": "getkirby/composer-installer", "name": "getkirby/composer-installer",
@ -544,68 +552,18 @@
}, },
"time": "2016-12-13T01:01:17+00:00" "time": "2016-12-13T01:01:17+00:00"
}, },
{
"name": "mustangostang/spyc",
"version": "0.6.3",
"source": {
"type": "git",
"url": "git@github.com:mustangostang/spyc.git",
"reference": "4627c838b16550b666d15aeae1e5289dd5b77da0"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/mustangostang/spyc/zipball/4627c838b16550b666d15aeae1e5289dd5b77da0",
"reference": "4627c838b16550b666d15aeae1e5289dd5b77da0",
"shasum": ""
},
"require": {
"php": ">=5.3.1"
},
"require-dev": {
"phpunit/phpunit": "4.3.*@dev"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "0.5.x-dev"
}
},
"autoload": {
"files": [
"Spyc.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "mustangostang",
"email": "vlad.andersen@gmail.com"
}
],
"description": "A simple YAML loader/dumper class for PHP",
"homepage": "https://github.com/mustangostang/spyc/",
"keywords": [
"spyc",
"yaml",
"yml"
],
"time": "2019-09-10T13:16:29+00:00"
},
{ {
"name": "phpmailer/phpmailer", "name": "phpmailer/phpmailer",
"version": "v6.5.1", "version": "v6.5.4",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/PHPMailer/PHPMailer.git", "url": "https://github.com/PHPMailer/PHPMailer.git",
"reference": "dd803df5ad7492e1b40637f7ebd258fee5ca7355" "reference": "c0d9f7dd3c2aa247ca44791e9209233829d82285"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/dd803df5ad7492e1b40637f7ebd258fee5ca7355", "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/c0d9f7dd3c2aa247ca44791e9209233829d82285",
"reference": "dd803df5ad7492e1b40637f7ebd258fee5ca7355", "reference": "c0d9f7dd3c2aa247ca44791e9209233829d82285",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -618,10 +576,10 @@
"dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0",
"doctrine/annotations": "^1.2", "doctrine/annotations": "^1.2",
"php-parallel-lint/php-console-highlighter": "^0.5.0", "php-parallel-lint/php-console-highlighter": "^0.5.0",
"php-parallel-lint/php-parallel-lint": "^1.3", "php-parallel-lint/php-parallel-lint": "^1.3.1",
"phpcompatibility/php-compatibility": "^9.3.5", "phpcompatibility/php-compatibility": "^9.3.5",
"roave/security-advisories": "dev-latest", "roave/security-advisories": "dev-latest",
"squizlabs/php_codesniffer": "^3.6.0", "squizlabs/php_codesniffer": "^3.6.2",
"yoast/phpunit-polyfills": "^1.0.0" "yoast/phpunit-polyfills": "^1.0.0"
}, },
"suggest": { "suggest": {
@ -662,7 +620,7 @@
"description": "PHPMailer is a full-featured email creation and transfer class for PHP", "description": "PHPMailer is a full-featured email creation and transfer class for PHP",
"support": { "support": {
"issues": "https://github.com/PHPMailer/PHPMailer/issues", "issues": "https://github.com/PHPMailer/PHPMailer/issues",
"source": "https://github.com/PHPMailer/PHPMailer/tree/v6.5.1" "source": "https://github.com/PHPMailer/PHPMailer/tree/v6.5.4"
}, },
"funding": [ "funding": [
{ {
@ -670,7 +628,7 @@
"type": "github" "type": "github"
} }
], ],
"time": "2021-08-18T09:14:16+00:00" "time": "2022-02-17T08:19:04+00:00"
}, },
{ {
"name": "psr/log", "name": "psr/log",
@ -724,16 +682,16 @@
}, },
{ {
"name": "sylvainjule/matomo", "name": "sylvainjule/matomo",
"version": "1.0.6", "version": "1.0.7",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/sylvainjule/kirby-matomo.git", "url": "https://github.com/sylvainjule/kirby-matomo.git",
"reference": "11d754eb15f7c37cf0877095e50b407f66715096" "reference": "8662f8ec074369c605cb186b245a797c9bbbe68d"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/sylvainjule/kirby-matomo/zipball/11d754eb15f7c37cf0877095e50b407f66715096", "url": "https://api.github.com/repos/sylvainjule/kirby-matomo/zipball/8662f8ec074369c605cb186b245a797c9bbbe68d",
"reference": "11d754eb15f7c37cf0877095e50b407f66715096", "reference": "8662f8ec074369c605cb186b245a797c9bbbe68d",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -756,27 +714,30 @@
"description": "Matomo helpers and panel sections for Kirby", "description": "Matomo helpers and panel sections for Kirby",
"support": { "support": {
"issues": "https://github.com/sylvainjule/kirby-matomo/issues", "issues": "https://github.com/sylvainjule/kirby-matomo/issues",
"source": "https://github.com/sylvainjule/kirby-matomo/tree/1.0.6" "source": "https://github.com/sylvainjule/kirby-matomo/tree/1.0.7"
}, },
"time": "2020-12-23T19:00:39+00:00" "time": "2021-11-20T01:20:25+00:00"
}, },
{ {
"name": "symfony/polyfill-ctype", "name": "symfony/polyfill-ctype",
"version": "v1.23.0", "version": "v1.25.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/polyfill-ctype.git", "url": "https://github.com/symfony/polyfill-ctype.git",
"reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce" "reference": "30885182c981ab175d4d034db0f6f469898070ab"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/46cd95797e9df938fdd2b03693b5fca5e64b01ce", "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab",
"reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce", "reference": "30885182c981ab175d4d034db0f6f469898070ab",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=7.1" "php": ">=7.1"
}, },
"provide": {
"ext-ctype": "*"
},
"suggest": { "suggest": {
"ext-ctype": "For best performance" "ext-ctype": "For best performance"
}, },
@ -791,12 +752,12 @@
} }
}, },
"autoload": { "autoload": {
"psr-4": {
"Symfony\\Polyfill\\Ctype\\": ""
},
"files": [ "files": [
"bootstrap.php" "bootstrap.php"
] ],
"psr-4": {
"Symfony\\Polyfill\\Ctype\\": ""
}
}, },
"notification-url": "https://packagist.org/downloads/", "notification-url": "https://packagist.org/downloads/",
"license": [ "license": [
@ -821,7 +782,178 @@
"portable" "portable"
], ],
"support": { "support": {
"source": "https://github.com/symfony/polyfill-ctype/tree/v1.23.0" "source": "https://github.com/symfony/polyfill-ctype/tree/v1.25.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": "2021-10-20T20:35:02+00:00"
},
{
"name": "symfony/polyfill-intl-idn",
"version": "v1.24.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-idn.git",
"reference": "749045c69efb97c70d25d7463abba812e91f3a44"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44",
"reference": "749045c69efb97c70d25d7463abba812e91f3a44",
"shasum": ""
},
"require": {
"php": ">=7.1",
"symfony/polyfill-intl-normalizer": "^1.10",
"symfony/polyfill-php72": "^1.10"
},
"suggest": {
"ext-intl": "For best performance"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.23-dev"
},
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
}
},
"autoload": {
"files": [
"bootstrap.php"
],
"psr-4": {
"Symfony\\Polyfill\\Intl\\Idn\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Laurent Bassin",
"email": "laurent@bassin.info"
},
{
"name": "Trevor Rowbotham",
"email": "trevor.rowbotham@pm.me"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"idn",
"intl",
"polyfill",
"portable",
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.24.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": "2021-09-14T14:02:44+00:00"
},
{
"name": "symfony/polyfill-intl-normalizer",
"version": "v1.25.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-normalizer.git",
"reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8",
"reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8",
"shasum": ""
},
"require": {
"php": ">=7.1"
},
"suggest": {
"ext-intl": "For best performance"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.23-dev"
},
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
}
},
"autoload": {
"files": [
"bootstrap.php"
],
"psr-4": {
"Symfony\\Polyfill\\Intl\\Normalizer\\": ""
},
"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 for intl's Normalizer class and related functions",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"intl",
"normalizer",
"polyfill",
"portable",
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.25.0"
}, },
"funding": [ "funding": [
{ {
@ -841,21 +973,24 @@
}, },
{ {
"name": "symfony/polyfill-mbstring", "name": "symfony/polyfill-mbstring",
"version": "v1.23.1", "version": "v1.24.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git", "url": "https://github.com/symfony/polyfill-mbstring.git",
"reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6" "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9174a3d80210dca8daa7f31fec659150bbeabfc6", "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825",
"reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6", "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=7.1" "php": ">=7.1"
}, },
"provide": {
"ext-mbstring": "*"
},
"suggest": { "suggest": {
"ext-mbstring": "For best performance" "ext-mbstring": "For best performance"
}, },
@ -870,12 +1005,12 @@
} }
}, },
"autoload": { "autoload": {
"psr-4": {
"Symfony\\Polyfill\\Mbstring\\": ""
},
"files": [ "files": [
"bootstrap.php" "bootstrap.php"
] ],
"psr-4": {
"Symfony\\Polyfill\\Mbstring\\": ""
}
}, },
"notification-url": "https://packagist.org/downloads/", "notification-url": "https://packagist.org/downloads/",
"license": [ "license": [
@ -901,7 +1036,7 @@
"shim" "shim"
], ],
"support": { "support": {
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.23.1" "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.24.0"
}, },
"funding": [ "funding": [
{ {
@ -917,70 +1052,20 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2021-05-27T12:26:48+00:00" "time": "2021-11-30T18:21:41+00:00"
},
{
"name": "true/punycode",
"version": "v2.1.1",
"source": {
"type": "git",
"url": "https://github.com/true/php-punycode.git",
"reference": "a4d0c11a36dd7f4e7cd7096076cab6d3378a071e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/true/php-punycode/zipball/a4d0c11a36dd7f4e7cd7096076cab6d3378a071e",
"reference": "a4d0c11a36dd7f4e7cd7096076cab6d3378a071e",
"shasum": ""
},
"require": {
"php": ">=5.3.0",
"symfony/polyfill-mbstring": "^1.3"
},
"require-dev": {
"phpunit/phpunit": "~4.7",
"squizlabs/php_codesniffer": "~2.0"
},
"type": "library",
"autoload": {
"psr-4": {
"TrueBV\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Renan Gonçalves",
"email": "renan.saddam@gmail.com"
}
],
"description": "A Bootstring encoding of Unicode for Internationalized Domain Names in Applications (IDNA)",
"homepage": "https://github.com/true/php-punycode",
"keywords": [
"idna",
"punycode"
],
"support": {
"issues": "https://github.com/true/php-punycode/issues",
"source": "https://github.com/true/php-punycode/tree/master"
},
"time": "2016-11-16T10:37:54+00:00"
}, },
{ {
"name": "twig/twig", "name": "twig/twig",
"version": "v3.3.3", "version": "v3.3.8",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/twigphp/Twig.git", "url": "https://github.com/twigphp/Twig.git",
"reference": "a27fa056df8a6384316288ca8b0fa3a35fdeb569" "reference": "972d8604a92b7054828b539f2febb0211dd5945c"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/twigphp/Twig/zipball/a27fa056df8a6384316288ca8b0fa3a35fdeb569", "url": "https://api.github.com/repos/twigphp/Twig/zipball/972d8604a92b7054828b539f2febb0211dd5945c",
"reference": "a27fa056df8a6384316288ca8b0fa3a35fdeb569", "reference": "972d8604a92b7054828b539f2febb0211dd5945c",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -1031,7 +1116,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/twigphp/Twig/issues", "issues": "https://github.com/twigphp/Twig/issues",
"source": "https://github.com/twigphp/Twig/tree/v3.3.3" "source": "https://github.com/twigphp/Twig/tree/v3.3.8"
}, },
"funding": [ "funding": [
{ {
@ -1043,7 +1128,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2021-09-17T08:44:23+00:00" "time": "2022-02-04T06:59:48+00:00"
} }
], ],
"packages-dev": [], "packages-dev": [],

View file

@ -1,8 +1,8 @@
# This file is for unifying the coding style for different editors and IDEs # This file is for unifying the coding style for different editors and IDEs
# editorconfig.org # editorconfig.org
# PHP PSR-2 Coding Standards # PHP PSR-12 Coding Standards
# http://www.php-fig.org/psr/psr-2/ # https://www.php-fig.org/psr/psr-12/
root = true root = true

6
kirby/.vscode/extensions.json vendored Normal file
View file

@ -0,0 +1,6 @@
{
"recommendations": [
"dbaeumer.vscode-eslint",
"esbenp.prettier-vscode"
]
}

4
kirby/.vscode/settings.json vendored Normal file
View file

@ -0,0 +1,4 @@
{
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true
}

99
kirby/CONTRIBUTING.md Normal file
View file

@ -0,0 +1,99 @@
# Contributing
:+1::tada: First off, yes, you can contribute and thanks already for taking the time if you do! :tada::+1:
## How we organize code
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 |
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.
## How you can contribute
### Report a bug
When you find a bug, the first step to fixing it is to help us understand and reproduce the bug as best as possible. When you create a bug report, please include as many details as possible. Fill out [the template](ISSUE_TEMPLATE/bug_report.md) because the requested information helps us resolve issues so much faster.
### Bug fixes
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` branchnot `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.
### 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` branchnot `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.
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.
### Translations
We are really happy about any help with translations. Please do not directly translate JSON files, though. We use a service called Transifex to handle [all translations](https://translation.getkirby.com/). Create an account there and send us a request to join our translator group. Additionally, also send an email to <support@getkirby.com>. Unfortunately, we don't get notified properly about new translator requests.
## How we write code
### Style
#### Backend (PHP)
We use [PHP CS Fixer](https://github.com/FriendsOfPHP/PHP-CS-Fixer) to ensure a consistent style for our PHP code. It is mainly based on [PSR-12](https://www.php-fig.org/psr/psr-12/). [Install PHP CS Fixer globally](https://github.com/FriendsOfPHP/PHP-CS-Fixer#globally-composer) via Composer and then run `composer fix` in the `kirby` folder to check for inconsistencies and fix them. Our automated PR checks will fail if there are code style issues with your code.
#### Frontend/Panel (JavaScript, Vue)
We use [Prettier](https://prettier.io) to ensure a consistent style for our JavaScript and Vue code. After running `npm install` in the `kirby/panel` folder, you can run `npm run format` to check for inconsistencies and fix them. We also use [ESLint](https://eslint.org) which you can use by running `npm run lint` and/or `npm run lint:fix`.
### Documentation
In-code documentation and comments help us understand each other's code - or our own code after some months. Especially when matters get more complicated, we try to add a lot of comments to explain what the code does or why we implemented it like this. Even better than good comments is good code that is easy to understand.
#### Backend (PHP)
We use PHP [DocBlocks](https://docs.phpdoc.org/guide/references/phpdoc/basic-syntax.html#what-is-a-docblock) for classes and methods.
#### Frontend/Panel (JavaScript, Vue)
We use [JSDoc](https://jsdoc.app) for documenting JavaScript code, especially for [Vue components](https://vue-styleguidist.github.io/docs/Documenting.html).
#### Public documentation
We also document Kirby on the Kirby website at <https://getkirby.com>. However we recommend to wait with writing public documentation until the feature PR is merged. If you don't know where the documentation for a feature best belongs, don't worry. We can take care of writing the docs.
### Tests
Unit and integration tests help us prevent regressions when we make changes to the code. Every bug fix should also add a unit test for the fixed bug to make sure we won't re-introduce the same problem later down the road. Every new feature should be accompanied by unit tests to protect it from breaking through future changes.
#### Backend (PHP)
We use [PHPUnit](https://phpunit.de) for unit test for our PHP code. You can find all existing tests in the [`kirby/tests` subfolders](https://github.com/getkirby/kirby/tree/main/tests). Take a look to see how we usually structure our tests.
#### Frontend/Panel (JavaScript, Vue)
The Panel doesn't have extensive test coverage yet. That's an area we are still trying to improve.
We use [vitest](https://vitest.dev) for unit tests for JavaScript and Vue components - `.test.js` files next to the actual JavaScript/Vue file.
For integration tests, we use [cypress](https://www.cypress.io) - `.e2e.js` files.
## And last…
Let us know [in the forum](https://forum.getkirby.com) if you have questions.
**And once more: thank you!** :+1::tada:

211
kirby/LICENSE.md Normal file
View file

@ -0,0 +1,211 @@
# Kirby License Agreement
Published: March 15, 2022
Source: https://getkirby.com/license/2022-03-15
## About this Agreement
While Kirby's source code is publicly available, Kirby is **not free**. To use Kirby in production, you need to [purchase a license](https://getkirby.com/buy).
This End User License Agreement (the **"Agreement"**) is fundamental to the relationship between you and us. Therefore we recommend to read this Agreement carefully before you download, install or use Kirby.
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.
## Definitions
Before we get started with the conditions of the Agreement, let's define the terms that will be used throughout it:
- When we refer to **"You"**, we mean the licensee. Before purchasing Kirby, that's the individual or company that has downloaded and/or installed Kirby for a Development Installation, Private Installation or Extension Demo. When used for a Public Site, the licensee is the individual or company that has purchased the Kirby license. If you work on a client project and have purchased the Kirby license for your client, you (and _not_ the client) are the licensee.
- When we refer to **"We"**/**"Us"**/**"Our"**, we mean the licensor, the Content Folder GmbH & Co. KG. You can find Our company and contact information on Our [contact page](https://getkirby.com/contact).
- A **"Website"** is a single Kirby project that is defined by its domain name and root directory (e.g. `https://sub.example.com` or `https://example.com/example/`). Each (sub)domain and root directory is a separate Website, even if the projects are related in any way. Exception: If You use the cross-domain multi-language feature with the same `content` folder, these domains count as the same Website.
You may use Kirby as a headless backend or as a static site generator. In these cases the Website is defined by the domain and root directory of the user- or visitor-facing frontend(s).
- A **"Development Installation"** is a Website that is installed purely for the purposes of development and client preview. It must only be accessible by a restricted number of users (like on a personal computer, on a server in a network with restricted access or when protecting a staging website with a password that only a restricted number of users know).
- A **"Private Installation"** is a Website that is installed purely for personal use. It must only be accessible by You and Your family.
- An **"Extension Demo"** is a Website with the single purpose to showcase a free or commercial Kirby theme or Kirby plugin, as long as that Website only contains demo content. If the showcased extension is a Kirby theme, the demo content must be exactly as shipped with the theme. Demos for Kirby plugins may _not_ contain any additional content that is not needed to showcase the plugin in use.
- A **"Public Site"** is a Website that is _neither_ a Development Installation, a Private Installation nor an Extension Demo.
- An **"Update"** is defined as a Kirby release which adds smaller new features, minor functionality enhancements or bug fixes. This class of release is identified by the change of the revision to the right of the first decimal point, e.g. 3.1 to 3.2, 3.X.1 to 3.X.2 or 3.X.X.1 to 3.X.X.2.
- An **"Upgrade"** is a major Kirby release which incorporates major new features or enhancements that increase the core functionality of Kirby to a larger extent. This class of release is identified by the change of the revision to the left of the first decimal point, e.g. 3.X to 4.0.
- The **"Source Code"** is defined as the contents of all files that are provided with Kirby and that make Kirby work. This includes (but is not limited to) all PHP, JavaScript, JSON, HTML and CSS files as well as all related image and other media files.
Every time you see one of these capitalized terms in the following text, it has the meaning that has been explained above.
## Usage for a Public Site
Installing Kirby on or using it for a Public Site requires a [paid license](https://getkirby.com/buy).
As Kirby is software and software is intangible, We don't sell it as such. Instead, this Agreement grants a license for each purchase to install and use a single instance of Kirby on a **specific Website**. Additional Kirby licenses must be purchased in order to install and use Kirby on **additional Websites**.
The license is **non-exclusive** (meaning that You are not the only one who We will issue a license) and **generally non-transferable** (meaning that the one who purchases the license is the licensee).
On request, We will **transfer** a license to anyone who is also allowed to buy Kirby licenses by law and this Agreement.
We will also **reassign** a license to another Website domain and root directory of Your choice, provided that You confirm that the previous Website is no longer in operation and will not be operated with the same license in the future.
If you need to transfer your Kirby license to another individual or company (for example to your client or a new agency) or reassign it to a different project, please get in touch directly at <support@getkirby.com>.
A license is valid for all Updates of the same major Kirby release. We reserve the right to charge an **upgrade fee for Upgrade releases**. Whether a release is an Update or Upgrade is at Our sole discretion.
## Order Process
Our order process is conducted by Our online reseller [Paddle.com](https://paddle.com). Paddle.com is the Merchant of Record for all Our orders. Paddle provides all customer service inquiries and handles returns.
## Free Licenses
Kirby can be used **for free in the following cases**.
Please note that the restrictions and all other clauses of this Agreement also apply to free licenses. You may especially _not_ alter or circumvent the licensing features.
### Usage for a Development Installation
We believe that it should be possible to test and evaluate software before having to purchase a license. Also, We understand that a web project first needs to be built in a protected environment before it can be published.
Therefore, installing and using Kirby on a personal computer (like a desktop PC, notebook or tablet) or server for a Development Installation is **free** for as long as You need.
The usage of Kirby in production (with the intention to handle production data or content) is _never_ considered a Development Installation, even in internal apps or systems.
### Usage for a Private Installation
You may also install and use Kirby for **free** in Private Installations as long as they are not accessible by anyone except You and Your family.
Our [definition](#definitions) of a Private Installation allows the following use cases:
- Private sites for personal use, for example:
- Apps for You personally (like a personal diary)
- Apps for You as a freelancer (like a bookkeeping, invoicing or project management app)
- Apps for Your family (like a private photo gallery)
- Experimental local Kirby setups for Your personal use (for example to try out Kirby features)
However, the following use cases are _not_ covered and need a **[paid license](#usage-for-a-public-site)**:
- Intranets for companies, authorities or organizations, no matter if on a local or public server
- (Internal) apps for teams or entire companies, authorities or organizations
- Websites that are accessible by the public, even for personal/non-commercial purposes
- Use of Kirby as a local CMS for a static or headless site without a license for the frontend domain(s)
### Usage for an Extension Demo
Extension Demos are not real Websites. We want to encourage you to build and showcase your themes and plugins.
Therefore, You may **operate Extension Demos without purchasing a license**.
Please note that this does _not_ apply to store fronts or other types of sites used to promote free or commercial themes or plugins. If such a site is built with Kirby as well, it is a Public Site and needs a **[paid license](#usage-for-a-public-site)**.
## Restrictions
### Legal Restrictions
You may only use Kirby in a manner that complies with any and all **applicable laws** in the jurisdictions in which You use Kirby. Please respect all applicable restrictions concerning **privacy and intellectual property rights**.
### Making Copies
You may make **copies of Kirby** in any machine readable form solely for purposes of **deploying a Website to a server, developing a Website on a personal computer or server or as a backup**, provided that You reproduce Kirby in its original form and with all proprietary notices on the copy.
You may _not_ reproduce Kirby or its Source Code, in whole or in part, for **any other purpose**.
### Modification of the Source Code
You may **alter, modify or extend the Source Code** for Your own use. You may also **commission a third party** to perform those modifications for You.
However You may _not_:
- **alter or circumvent the licensing features**, including (but not limited to) the license validation and payment prompts or
- **resell, redistribute or transfer** the modified or derivative version.
Please note that We **can't provide technical support** for modified or derivative versions of the Source Code.
### Your Relationship to Third Parties
You are generally _not_ allowed to **sell, assign, license, disclose, distribute, or otherwise transfer or make available** Kirby or its Source Code, in whole or in part, in any form to any third parties.
The following cases are exempted from this restriction:
- Kirby licenses may be transferred to a new licensee by requesting the transfer from Us ([see above](#usage-for-a-public-site)).
- You may create Websites for third parties (e.g. as an agency or freelancer for a client). Together with this Website, You may bill Your client for the used Kirby license. You may also include the license price in a flat rate. Please note that the licensee in both of these cases is still You unless You request to transfer the license to Your client. If Your price exceeds the price You paid to Us, You need to give Your client the option to purchase the license directly from Us.
- You may make Kirby available to customers via a Software-as-a-Service (SaaS) offering, provided You ensure that each Website has a valid Kirby license purchased either by You or Your customer. If multiple customers share a Website, each customer needs at least one license. Your offering _must not_ appear to be provided or officially endorsed by Us.
- You may make a Kirby installation available to employees or partners of You or Your Website client. You may also disclose and distribute Kirbys Source Code to Your client together with the source code of the Website You created for them.
- You may disclose the Source Code to individuals or companies that are involved in the development or operation of Your Website (e.g. agencies, design or development freelancers, hosting providers or administrators).
E.g. the following cases are explicitly **_not_ allowed**:
- Selling, licensing or distributing a new product based on Kirby that modifies or hides Kirbys identity as a Content Management System (CMS)
- Forking Kirby and selling the modified version ([see above](#restrictions__modification-of-the-source-code))
- Buying licenses in bulk and reselling them in your own shop
- Bundling or including Kirbys Source Code in the publication and/or distribution of a Websites source code or a (free or paid) theme or plugin (please use Git submodules or Composer or provide a link to Our repository or website instead)
### Disallowed Uses
The following uses of Kirby are _not_ covered by this Agreement and will result in the termination of the license:
- Direct or indirect use of Kirby in **critical infrastructure** (e.g. water and energy services, public health, financial services, public security services) or **high-risk environments** (e.g. handling of harmful or dangerous materials). The use in Websites without connection to core processes is allowed.
- Use of Kirby for Websites that contain **misinformation, hate speech or discriminating content** based on age, gender, gender identity, race, sexuality, religion, nationality, serious illnesses or disabilities, no matter who authored this content. Misinformation is defined as content that is false or misleading and may lead to significant risk of physical or societal harm.
- Use of Kirby by **companies or individuals who**:
- lobby for, promote, derive a majority of income from or are significantly invested in:
- the production of tobacco or weapons,
- any prison or jail operated for profit,
- any action or facility that supports or contributes to:
- gambling, adversely addictive behaviours or
- deforestation.
- lobby against, or derive a majority of income from actions that discourage or frustrate:
- peace,
- access to the rights set out in the Universal Declaration of Human Rights and the Convention on the Rights of the Child,
- peaceful assembly and association (including worker associations),
- a safe environment or action to curtail the use of fossil fuels or to prevent climate change or
- democratic processes.
### Other Restrictions
You may also _not_:
- **extract parts of the Source Code** for use in other programs or projects (unless the code file in question is explicitly licensed under the terms of the MIT license) or
- **remove or alter any proprietary notices** on Kirby.
## Technical Support
Technical support is **provided as described on Our website** at <https://getkirby.com>. **No representations or guarantees** are made regarding the response time in which support questions are answered, however We will do Our best to respond quickly.
We reserve the right to **limit technical support for free licenses**.
## Refund Policy
We offer a **14-day**, money back refund policy if Kirby didn't work out for Your project.
If you need a refund, please get in touch directly at <support@getkirby.com>.
## No Warranty
KIRBY IS OFFERED ON AN **"AS-IS" BASIS** AND **NO WARRANTY**, EITHER EXPRESSED OR IMPLIED, IS GIVEN. WE EXPRESSLY DISCLAIM ALL WARRANTIES OF ANY KIND, WHETHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. YOU ASSUME ALL RISK ASSOCIATED WITH THE QUALITY, PERFORMANCE, INSTALLATION AND USE OF KIRBY INCLUDING, BUT NOT LIMITED TO, THE RISKS OF PROGRAM ERRORS, DAMAGE TO EQUIPMENT, LOSS OF DATA OR SOFTWARE PROGRAMS, OR UNAVAILABILITY OR INTERRUPTION OF OPERATIONS. **YOU ARE SOLELY RESPONSIBLE** FOR DETERMINING THE APPROPRIATENESS OF USE OF KIRBY AND ASSUME ALL RISKS ASSOCIATED WITH ITS USE. THIS PARAGRAPH ALSO APPLIES TO YOU IF YOU ARE NOT THE LICENSEE (E.G. IF YOU USE KIRBY WHILE SOMEONE ELSE IS THE LICENSEE).
## Term, Termination and Modification
You may use Kirby under this Agreement until either party terminates this Agreement as described in this paragraph. Either party may **terminate the Agreement** at any time, upon notice to the other party in textual form (via email or letter). Upon termination, all or the specified **licenses granted to You will terminate**, and You will **immediately uninstall and cease all use** of Kirby. If not all licenses are terminated, You may continue to use Kirby for the Websites with active licenses. The sections entitled "No Warranty", "Indemnification" and "Limitation of Liability" will **survive any termination** of this Agreement.
We may **modify Kirby and this Agreement** with notice to You either via email or by publishing content on the Kirby website at https://getkirby.com, including but not limited to changing the functionality or appearance of Kirby. Any such modification will **become binding on You** unless You terminate this Agreement. Changes to this Agreement that constrain Your rights to a great extent will only become effective with Your approval in textual or electronic form.
## Indemnification
By accepting the Agreement, you **agree to indemnify and otherwise hold harmless** Us as well as Our officers, employees, agents, subsidiaries, affiliates and other partners from any direct, indirect, incidental, special, consequential or exemplary damages arising out of, relating to, or resulting from your use of Kirby or any other matter relating to Kirby. This paragraph also applies to you if you are not the licensee (e.g. if you use Kirby while someone else is the licensee).
## Limitation of Liability
YOU EXPRESSLY UNDERSTAND AND AGREE THAT **WE SHALL NOT BE LIABLE** FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL OR EXEMPLARY DAMAGES, INCLUDING BUT NOT LIMITED TO, DAMAGES FOR LOSS OF PROFITS, GOODWILL, USE, DATA OR OTHER INTANGIBLE LOSSES (EVEN IF WE HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES). SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF THE LIMITATION OR EXCLUSION OF LIABILITY FOR INCIDENTAL OR CONSEQUENTIAL DAMAGES. ACCORDINGLY, **SOME OF THE ABOVE LIMITATIONS MAY NOT APPLY TO YOU**. **IN NO EVENT WILL OUR TOTAL CUMULATIVE DAMAGES EXCEED** THE FEES YOU PAID TO US UNDER THIS AGREEMENT IN THE MOST RECENT TWELVE-MONTH PERIOD. THIS PARAGRAPH ALSO APPLIES TO YOU IF YOU ARE NOT THE LICENSEE (E.G. IF YOU USE KIRBY WHILE SOMEONE ELSE IS THE LICENSEE).
## All Rights Reserved
Bastian Allgeier **owns all rights**, title and interest to Kirby (including all intellectual property rights) and **reserves all rights to Kirby** that are not expressly granted in this Agreement.
## Applicable Law & Place of Jurisdiction
1. For all disputes arising out of or in connection with this Agreement, the courts competent for Neckargemünd, Germany, shall have exclusive jurisdiction. However, We shall have the choice to file lawsuits against You before the courts competent for Your place of business.
2. If You reside in Germany, para. 1 shall only apply if You are a merchant, a legal entity under public law or a special fund under public law.
3. If You don't reside in Germany, but in a different member state of the European Union, para. 1 shall only apply if You are not a consumer under Art. 17 of the regulation (EU) No. 1215/2012. In that case, You shall be entitled to file actions against Us either at Our place of business or at the courts competent at the place where You usually reside. We, on the other hand, are only entitled to bring proceedings against You in the courts of the Member State in which You are domiciled.
4. If You neither reside in Germany nor in a member state of the EU, the applicability of para. 1 remains unaffected.
## Severability Clause
Should any provision of this Agreement be or become invalid, void or unenforceable, in whole or in part, at present or in the future, this shall not affect the validity of the remaining provisions of this Agreement. The same shall apply if a gap requiring supplementation arises after conclusion of this Agreement. The parties shall replace the invalid, void or unenforceable provision or gap requiring filling by a valid provision which in its legal or economic content takes account of the invalid, void provision and the overall content of the agreement. § Section 139 of the German Civil Code (partial invalidity) is expressly waived.
## Questions?
Due to Kirby's flexibility, you may have special use cases or requirements that don't fit this Agreement.
If that's the case or if you have any questions, feel free to get in touch: <support@getkirby.com>. We are happy to think outside the box and find custom license solutions for your creative application of Kirby.

49
kirby/README.md Normal file
View file

@ -0,0 +1,49 @@
[<img src="http://getkirby.com/assets/images/github/kirby.jpg" width="300">](https://getkirby.com)
[![Release](https://badgen.net/github/release/getkirby/kirby/stable?color=yellow)](https://github.com/getkirby/kirby/releases/latest)
[![CI Status](https://github.com/getkirby/kirby/workflows/CI/badge.svg)](https://github.com/getkirby/kirby/actions?query=workflow%3ACI)
[![Coverage Status](https://badgen.net/codecov/c/gh/getkirby/kirby/main?label=coverage)](https://codecov.io/gh/getkirby/kirby)
[![Downloads](https://badgen.net/packagist/dt/getkirby/cms?color=red)](https://github.com/getkirby/kirby/releases/latest)
[![Twitter](https://badgen.net/twitter/follow/getkirby?color=cyan)](https://twitter.com/getkirby)
**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:
- [Starterkit](https://github.com/getkirby/starterkit)
- [Plainkit](https://github.com/getkirby/plainkit)
<img src="http://getkirby.com/assets/images/github/kirby-screen.png" />
### 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 youre convinced, [buy your license](https://getkirby.com/buy).
### Contribute
**Found a bug?**
Please post all bug reports in our [issue tracker](https://github.com/getkirby/kirby/issues).
**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 ...**
Read about how to contribute to the development in our [contributing guide](/.github/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.
- **[Issues](https://github.com/getkirby/kirby/issues)** Report bugs and other problems.
- **[Feedback](https://feedback.getkirby.com)** You have an idea for Kirby? Share it.
- **[Forum](https://forum.getkirby.com)** Whenever you get stuck, don't hesitate to reach out for questions and support.
- **[Discord](https://chat.getkirby.com)** Hang out and meet the community.
- **[Twitter](https://twitter.com/getkirby)** Spread the word.
- **[Instagram](https://www.instagram.com/getkirby/)** Share your creations: #madewithkirby.
---
© 2009-2022 Bastian Allgeier
[getkirby.com](https://getkirby.com) · [License agreement](https://getkirby.com/license)

View file

@ -6,7 +6,7 @@
*/ */
if ( if (
version_compare(PHP_VERSION, '7.4.0', '>=') === false || version_compare(PHP_VERSION, '7.4.0', '>=') === false ||
version_compare(PHP_VERSION, '8.1.0', '<') === false version_compare(PHP_VERSION, '8.2.0', '<') === false
) { ) {
die(include __DIR__ . '/views/php.php'); die(include __DIR__ . '/views/php.php');
} }

View file

@ -1,7 +1,7 @@
## ##
## Bundle of CA Root Certificates ## Bundle of CA Root Certificates
## ##
## Certificate data from Mozilla as of: Tue Oct 26 03:12:05 2021 GMT ## Certificate data from Mozilla as of: Fri Mar 18 12:29:51 2022 GMT
## ##
## This is a bundle of X.509 certificates of public Certificate Authorities ## This is a bundle of X.509 certificates of public Certificate Authorities
## (CA). These were automatically extracted from Mozilla's root certificates ## (CA). These were automatically extracted from Mozilla's root certificates
@ -13,8 +13,8 @@
## an Apache+mod_ssl webserver for SSL client authentication. ## an Apache+mod_ssl webserver for SSL client authentication.
## Just configure this file as the SSLCACertificateFile. ## Just configure this file as the SSLCACertificateFile.
## ##
## Conversion done with mk-ca-bundle.pl version 1.28. ## Conversion done with mk-ca-bundle.pl version 1.29.
## SHA256: bb36818a81feaa4cca61101e6d6276cd09e972efcb08112dfed846918ca41d7f ## SHA256: 187ef9dc231135324fe78830cf4462f1ecdeab3e6c9d5e38d623391e88dc5d3c
## ##
@ -39,28 +39,6 @@ hm4qxFYxldBniYUr+WymXUadDKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveC
X4XSQRjbgbMEHMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A== X4XSQRjbgbMEHMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A==
-----END CERTIFICATE----- -----END CERTIFICATE-----
GlobalSign Root CA - R2
=======================
-----BEGIN CERTIFICATE-----
MIIDujCCAqKgAwIBAgILBAAAAAABD4Ym5g0wDQYJKoZIhvcNAQEFBQAwTDEgMB4GA1UECxMXR2xv
YmFsU2lnbiBSb290IENBIC0gUjIxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh
bFNpZ24wHhcNMDYxMjE1MDgwMDAwWhcNMjExMjE1MDgwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT
aWduIFJvb3QgQ0EgLSBSMjETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln
bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKbPJA6+Lm8omUVCxKs+IVSbC9N/hHD6
ErPLv4dfxn+G07IwXNb9rfF73OX4YJYJkhD10FPe+3t+c4isUoh7SqbKSaZeqKeMWhG8eoLrvozp
s6yWJQeXSpkqBy+0Hne/ig+1AnwblrjFuTosvNYSuetZfeLQBoZfXklqtTleiDTsvHgMCJiEbKjN
S7SgfQx5TfC4LcshytVsW33hoCmEofnTlEnLJGKRILzdC9XZzPnqJworc5HGnRusyMvo4KD0L5CL
TfuwNhv2GXqF4G3yYROIXJ/gkwpRl4pazq+r1feqCapgvdzZX99yqWATXgAByUr6P6TqBwMhAo6C
ygPCm48CAwEAAaOBnDCBmTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E
FgQUm+IHV2ccHsBqBt5ZtJot39wZhi4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5nbG9i
YWxzaWduLm5ldC9yb290LXIyLmNybDAfBgNVHSMEGDAWgBSb4gdXZxwewGoG3lm0mi3f3BmGLjAN
BgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4GsJ0/WwbgcQ3izDJr86iw8bmEbTUsp
9Z8FHSbBuOmDAGJFtqkIk7mpM0sYmsL4h4hO291xNBrBVNpGP+DTKqttVCL1OmLNIG+6KYnX3ZHu
01yiPqFbQfXf5WRDLenVOavSot+3i9DAgBkcRcAtjOj4LaR0VknFBbVPFd5uRHg5h6h+u/N5GJG7
9G+dwfCMNYxdAfvDbbnvRG15RjF+Cv6pgsH/76tuIMRQyV+dTZsXjAzlAcmgQWpzU/qlULRuJQ/7
TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg==
-----END CERTIFICATE-----
Entrust.net Premium 2048 Secure Server CA Entrust.net Premium 2048 Secure Server CA
========================================= =========================================
-----BEGIN CERTIFICATE----- -----BEGIN CERTIFICATE-----
@ -573,28 +551,6 @@ PBS1xp81HlDQwY9qcEQCYsuuHWhBp6pX6FOqB9IG9tUUBguRA3UsbHK1YZWaDYu5Def131TN3ubY
WyH8EZE0vkHve52Xdf+XlcCWWC/qu0bXu+TZLg== WyH8EZE0vkHve52Xdf+XlcCWWC/qu0bXu+TZLg==
-----END CERTIFICATE----- -----END CERTIFICATE-----
Cybertrust Global Root
======================
-----BEGIN CERTIFICATE-----
MIIDoTCCAomgAwIBAgILBAAAAAABD4WqLUgwDQYJKoZIhvcNAQEFBQAwOzEYMBYGA1UEChMPQ3li
ZXJ0cnVzdCwgSW5jMR8wHQYDVQQDExZDeWJlcnRydXN0IEdsb2JhbCBSb290MB4XDTA2MTIxNTA4
MDAwMFoXDTIxMTIxNTA4MDAwMFowOzEYMBYGA1UEChMPQ3liZXJ0cnVzdCwgSW5jMR8wHQYDVQQD
ExZDeWJlcnRydXN0IEdsb2JhbCBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
+Mi8vRRQZhP/8NN57CPytxrHjoXxEnOmGaoQ25yiZXRadz5RfVb23CO21O1fWLE3TdVJDm71aofW
0ozSJ8bi/zafmGWgE07GKmSb1ZASzxQG9Dvj1Ci+6A74q05IlG2OlTEQXO2iLb3VOm2yHLtgwEZL
AfVJrn5GitB0jaEMAs7u/OePuGtm839EAL9mJRQr3RAwHQeWP032a7iPt3sMpTjr3kfb1V05/Iin
89cqdPHoWqI7n1C6poxFNcJQZZXcY4Lv3b93TZxiyWNzFtApD0mpSPCzqrdsxacwOUBdrsTiXSZT
8M4cIwhhqJQZugRiQOwfOHB3EgZxpzAYXSUnpQIDAQABo4GlMIGiMA4GA1UdDwEB/wQEAwIBBjAP
BgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBS2CHsNesysIEyGVjJez6tuhS1wVzA/BgNVHR8EODA2
MDSgMqAwhi5odHRwOi8vd3d3Mi5wdWJsaWMtdHJ1c3QuY29tL2NybC9jdC9jdHJvb3QuY3JsMB8G
A1UdIwQYMBaAFLYIew16zKwgTIZWMl7Pq26FLXBXMA0GCSqGSIb3DQEBBQUAA4IBAQBW7wojoFRO
lZfJ+InaRcHUowAl9B8Tq7ejhVhpwjCt2BWKLePJzYFa+HMjWqd8BfP9IjsO0QbE2zZMcwSO5bAi
5MXzLqXZI+O4Tkogp24CJJ8iYGd7ix1yCcUxXOl5n4BHPa2hCwcUPUf/A2kaDAtE52Mlp3+yybh2
hO0j9n0Hq0V+09+zv+mKts2oomcrUtW3ZfA5TGOgkXmTUg9U3YO7n9GPp1Nzw8v/MOx8BLjYRB+T
X3EJIrduPuocA06dGiBh+4E37F78CkWr1+cXVdCg6mCbpvbjjFspwgZgFJ0tl0ypkxWdYcQBX0jW
WL1WMRJOEcgh4LMRkWXbtKaIOM5V
-----END CERTIFICATE-----
ePKI Root Certification Authority ePKI Root Certification Authority
================================= =================================
-----BEGIN CERTIFICATE----- -----BEGIN CERTIFICATE-----
@ -1037,36 +993,6 @@ tnRGEmyR7jTV7JqR50S+kDFy1UkC9gLl9B/rfNmWVan/7Ir5mUf/NVoCqgTLiluHcSmRvaS0eg29
mvVXIwAHIRc/SjnRBUkLp7Y3gaVdjKozXoEofKd9J+sAro03 mvVXIwAHIRc/SjnRBUkLp7Y3gaVdjKozXoEofKd9J+sAro03
-----END CERTIFICATE----- -----END CERTIFICATE-----
EC-ACC
======
-----BEGIN CERTIFICATE-----
MIIFVjCCBD6gAwIBAgIQ7is969Qh3hSoYqwE893EATANBgkqhkiG9w0BAQUFADCB8zELMAkGA1UE
BhMCRVMxOzA5BgNVBAoTMkFnZW5jaWEgQ2F0YWxhbmEgZGUgQ2VydGlmaWNhY2lvIChOSUYgUS0w
ODAxMTc2LUkpMSgwJgYDVQQLEx9TZXJ2ZWlzIFB1YmxpY3MgZGUgQ2VydGlmaWNhY2lvMTUwMwYD
VQQLEyxWZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5ldC92ZXJhcnJlbCAoYykwMzE1MDMGA1UE
CxMsSmVyYXJxdWlhIEVudGl0YXRzIGRlIENlcnRpZmljYWNpbyBDYXRhbGFuZXMxDzANBgNVBAMT
BkVDLUFDQzAeFw0wMzAxMDcyMzAwMDBaFw0zMTAxMDcyMjU5NTlaMIHzMQswCQYDVQQGEwJFUzE7
MDkGA1UEChMyQWdlbmNpYSBDYXRhbGFuYSBkZSBDZXJ0aWZpY2FjaW8gKE5JRiBRLTA4MDExNzYt
SSkxKDAmBgNVBAsTH1NlcnZlaXMgUHVibGljcyBkZSBDZXJ0aWZpY2FjaW8xNTAzBgNVBAsTLFZl
Z2V1IGh0dHBzOi8vd3d3LmNhdGNlcnQubmV0L3ZlcmFycmVsIChjKTAzMTUwMwYDVQQLEyxKZXJh
cnF1aWEgRW50aXRhdHMgZGUgQ2VydGlmaWNhY2lvIENhdGFsYW5lczEPMA0GA1UEAxMGRUMtQUND
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsyLHT+KXQpWIR4NA9h0X84NzJB5R85iK
w5K4/0CQBXCHYMkAqbWUZRkiFRfCQ2xmRJoNBD45b6VLeqpjt4pEndljkYRm4CgPukLjbo73FCeT
ae6RDqNfDrHrZqJyTxIThmV6PttPB/SnCWDaOkKZx7J/sxaVHMf5NLWUhdWZXqBIoH7nF2W4onW4
HvPlQn2v7fOKSGRdghST2MDk/7NQcvJ29rNdQlB50JQ+awwAvthrDk4q7D7SzIKiGGUzE3eeml0a
E9jD2z3Il3rucO2n5nzbcc8tlGLfbdb1OL4/pYUKGbio2Al1QnDE6u/LDsg0qBIimAy4E5S2S+zw
0JDnJwIDAQABo4HjMIHgMB0GA1UdEQQWMBSBEmVjX2FjY0BjYXRjZXJ0Lm5ldDAPBgNVHRMBAf8E
BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUoMOLRKo3pUW/l4Ba0fF4opvpXY0wfwYD
VR0gBHgwdjB0BgsrBgEEAfV4AQMBCjBlMCwGCCsGAQUFBwIBFiBodHRwczovL3d3dy5jYXRjZXJ0
Lm5ldC92ZXJhcnJlbDA1BggrBgEFBQcCAjApGidWZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5l
dC92ZXJhcnJlbCAwDQYJKoZIhvcNAQEFBQADggEBAKBIW4IB9k1IuDlVNZyAelOZ1Vr/sXE7zDkJ
lF7W2u++AVtd0x7Y/X1PzaBB4DSTv8vihpw3kpBWHNzrKQXlxJ7HNd+KDM3FIUPpqojlNcAZQmNa
Al6kSBg6hW/cnbw/nZzBh7h6YQjpdwt/cKt63dmXLGQehb+8dJahw3oS7AwaboMMPOhyRp/7SNVe
l+axofjk70YllJyJ22k4vuxcDlbHZVHlUIiIv0LVKz3l+bqeLrPK9HOSAgu+TGbrIP65y7WZf+a2
E/rKS03Z7lNGBjvGTq2TWoF+bCpLagVFjPIhpDGQh2xlnJ2lYJU6Un/10asIbvPuW/mIPX64b24D
5EI=
-----END CERTIFICATE-----
Hellenic Academic and Research Institutions RootCA 2011 Hellenic Academic and Research Institutions RootCA 2011
======================================================= =======================================================
-----BEGIN CERTIFICATE----- -----BEGIN CERTIFICATE-----
@ -1737,20 +1663,6 @@ HU6+4WMBzzuqQhFkoJ2UOQIReVx7Hfpkue4WQrO/isIJxOzksU0CMQDpKmFHjFJKS04YcPbWRNZu
9YO6bVi9JNlWSOrvxKJGgYhqOkbRqZtNyWHa0V1Xahg= 9YO6bVi9JNlWSOrvxKJGgYhqOkbRqZtNyWHa0V1Xahg=
-----END CERTIFICATE----- -----END CERTIFICATE-----
GlobalSign ECC Root CA - R4
===========================
-----BEGIN CERTIFICATE-----
MIIB4TCCAYegAwIBAgIRKjikHJYKBN5CsiilC+g0mAIwCgYIKoZIzj0EAwIwUDEkMCIGA1UECxMb
R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI0MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD
EwpHbG9iYWxTaWduMB4XDTEyMTExMzAwMDAwMFoXDTM4MDExOTAzMTQwN1owUDEkMCIGA1UECxMb
R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI0MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD
EwpHbG9iYWxTaWduMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEuMZ5049sJQ6fLjkZHAOkrprl
OQcJFspjsbmG+IpXwVfOQvpzofdlQv8ewQCybnMO/8ch5RikqtlxP6jUuc6MHaNCMEAwDgYDVR0P
AQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFFSwe61FuOJAf/sKbvu+M8k8o4TV
MAoGCCqGSM49BAMCA0gAMEUCIQDckqGgE6bPA7DmxCGXkPoUVy0D7O48027KqGx2vKLeuwIgJ6iF
JzWbVsaj8kfSt24bAgAXqmemFZHe+pTsewv4n4Q=
-----END CERTIFICATE-----
GlobalSign ECC Root CA - R5 GlobalSign ECC Root CA - R5
=========================== ===========================
-----BEGIN CERTIFICATE----- -----BEGIN CERTIFICATE-----
@ -2472,96 +2384,6 @@ AwMDaAAwZQIwJsdpW9zV57LnyAyMjMPdeYwbY9XJUpROTYJKcx6ygISpJcBMWm1JKWB4E+J+SOtk
AjEA2zQgMgj/mkkCtojeFK9dbJlxjRo/i9fgojaGHAeCOnZT/cKi7e97sIBPWA9LUzm9 AjEA2zQgMgj/mkkCtojeFK9dbJlxjRo/i9fgojaGHAeCOnZT/cKi7e97sIBPWA9LUzm9
-----END CERTIFICATE----- -----END CERTIFICATE-----
GTS Root R1
===========
-----BEGIN CERTIFICATE-----
MIIFWjCCA0KgAwIBAgIQbkepxUtHDA3sM9CJuRz04TANBgkqhkiG9w0BAQwFADBHMQswCQYDVQQG
EwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJv
b3QgUjEwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAG
A1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjEwggIi
MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2EQKLHuOhd5s73L+UPreVp0A8of2C+X0yBoJx
9vaMf/vo27xqLpeXo4xL+Sv2sfnOhB2x+cWX3u+58qPpvBKJXqeqUqv4IyfLpLGcY9vXmX7wCl7r
aKb0xlpHDU0QM+NOsROjyBhsS+z8CZDfnWQpJSMHobTSPS5g4M/SCYe7zUjwTcLCeoiKu7rPWRnW
r4+wB7CeMfGCwcDfLqZtbBkOtdh+JhpFAz2weaSUKK0PfyblqAj+lug8aJRT7oM6iCsVlgmy4HqM
LnXWnOunVmSPlk9orj2XwoSPwLxAwAtcvfaHszVsrBhQf4TgTM2S0yDpM7xSma8ytSmzJSq0SPly
4cpk9+aCEI3oncKKiPo4Zor8Y/kB+Xj9e1x3+naH+uzfsQ55lVe0vSbv1gHR6xYKu44LtcXFilWr
06zqkUspzBmkMiVOKvFlRNACzqrOSbTqn3yDsEB750Orp2yjj32JgfpMpf/VjsPOS+C12LOORc92
wO1AK/1TD7Cn1TsNsYqiA94xrcx36m97PtbfkSIS5r762DL8EGMUUXLeXdYWk70paDPvOmbsB4om
3xPXV2V4J95eSRQAogB/mqghtqmxlbCluQ0WEdrHbEg8QOB+DVrNVjzRlwW5y0vtOUucxD/SVRNu
JLDWcfr0wbrM7Rv1/oFB2ACYPTrIrnqYNxgFlQIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYD
VR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU5K8rJnEaK0gnhS9SZizv8IkTcT4wDQYJKoZIhvcNAQEM
BQADggIBADiWCu49tJYeX++dnAsznyvgyv3SjgofQXSlfKqE1OXyHuY3UjKcC9FhHb8owbZEKTV1
d5iyfNm9dKyKaOOpMQkpAWBz40d8U6iQSifvS9efk+eCNs6aaAyC58/UEBZvXw6ZXPYfcX3v73sv
fuo21pdwCxXu11xWajOl40k4DLh9+42FpLFZXvRq4d2h9mREruZRgyFmxhE+885H7pwoHyXa/6xm
ld01D1zvICxi/ZG6qcz8WpyTgYMpl0p8WnK0OdC3d8t5/Wk6kjftbjhlRn7pYL15iJdfOBL07q9b
gsiG1eGZbYwE8na6SfZu6W0eX6DvJ4J2QPim01hcDyxC2kLGe4g0x8HYRZvBPsVhHdljUEn2NIVq
4BjFbkerQUIpm/ZgDdIx02OYI5NaAIFItO/Nis3Jz5nu2Z6qNuFoS3FJFDYoOj0dzpqPJeaAcWEr
tXvM+SUWgeExX6GjfhaknBZqlxi9dnKlC54dNuYvoS++cJEPqOba+MSSQGwlfnuzCdyyF62ARPBo
pY+Udf90WuioAnwMCeKpSwughQtiue+hMZL77/ZRBIls6Kl0obsXs7X9SQ98POyDGCBDTtWTurQ0
sR8WNh8M5mQ5Fkzc4P4dyKliPUDqysU0ArSuiYgzNdwsE3PYJ/HQcu51OyLemGhmW/HGY0dVHLql
CFF1pkgl
-----END CERTIFICATE-----
GTS Root R2
===========
-----BEGIN CERTIFICATE-----
MIIFWjCCA0KgAwIBAgIQbkepxlqz5yDFMJo/aFLybzANBgkqhkiG9w0BAQwFADBHMQswCQYDVQQG
EwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJv
b3QgUjIwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAG
A1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjIwggIi
MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDO3v2m++zsFDQ8BwZabFn3GTXd98GdVarTzTuk
k3LvCvptnfbwhYBboUhSnznFt+4orO/LdmgUud+tAWyZH8QiHZ/+cnfgLFuv5AS/T3KgGjSY6Dlo
7JUle3ah5mm5hRm9iYz+re026nO8/4Piy33B0s5Ks40FnotJk9/BW9BuXvAuMC6C/Pq8tBcKSOWI
m8Wba96wyrQD8Nr0kLhlZPdcTK3ofmZemde4wj7I0BOdre7kRXuJVfeKH2JShBKzwkCX44ofR5Gm
dFrS+LFjKBC4swm4VndAoiaYecb+3yXuPuWgf9RhD1FLPD+M2uFwdNjCaKH5wQzpoeJ/u1U8dgbu
ak7MkogwTZq9TwtImoS1mKPV+3PBV2HdKFZ1E66HjucMUQkQdYhMvI35ezzUIkgfKtzra7tEscsz
cTJGr61K8YzodDqs5xoic4DSMPclQsciOzsSrZYuxsN2B6ogtzVJV+mSSeh2FnIxZyuWfoqjx5RW
Ir9qS34BIbIjMt/kmkRtWVtd9QCgHJvGeJeNkP+byKq0rxFROV7Z+2et1VsRnTKaG73Vululycsl
aVNVJ1zgyjbLiGH7HrfQy+4W+9OmTN6SpdTi3/UGVN4unUu0kzCqgc7dGtxRcw1PcOnlthYhGXmy
5okLdWTK1au8CcEYof/UVKGFPP0UJAOyh9OktwIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYD
VR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUu//KjiOfT5nK2+JopqUVJxce2Q4wDQYJKoZIhvcNAQEM
BQADggIBALZp8KZ3/p7uC4Gt4cCpx/k1HUCCq+YEtN/L9x0Pg/B+E02NjO7jMyLDOfxA325BS0JT
vhaI8dI4XsRomRyYUpOM52jtG2pzegVATX9lO9ZY8c6DR2Dj/5epnGB3GFW1fgiTz9D2PGcDFWEJ
+YF59exTpJ/JjwGLc8R3dtyDovUMSRqodt6Sm2T4syzFJ9MHwAiApJiS4wGWAqoC7o87xdFtCjMw
c3i5T1QWvwsHoaRc5svJXISPD+AVdyx+Jn7axEvbpxZ3B7DNdehyQtaVhJ2Gg/LkkM0JR9SLA3Da
WsYDQvTtN6LwG1BUSw7YhN4ZKJmBR64JGz9I0cNv4rBgF/XuIwKl2gBbbZCr7qLpGzvpx0QnRY5r
n/WkhLx3+WuXrD5RRaIRpsyF7gpo8j5QOHokYh4XIDdtak23CZvJ/KRY9bb7nE4Yu5UC56Gtmwfu
Nmsk0jmGwZODUNKBRqhfYlcsu2xkiAhu7xNUX90txGdj08+JN7+dIPT7eoOboB6BAFDC5AwiWVIQ
7UNWhwD4FFKnHYuTjKJNRn8nxnGbJN7k2oaLDX5rIMHAnuFl2GqjpuiFizoHCBy69Y9Vmhh1fuXs
gWbRIXOhNUQLgD1bnF5vKheW0YMjiGZt5obicDIvUiLnyOd/xCxgXS/Dr55FBcOEArf9LAhST4Ld
o/DUhgkC
-----END CERTIFICATE-----
GTS Root R3
===========
-----BEGIN CERTIFICATE-----
MIICDDCCAZGgAwIBAgIQbkepx2ypcyRAiQ8DVd2NHTAKBggqhkjOPQQDAzBHMQswCQYDVQQGEwJV
UzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3Qg
UjMwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UE
ChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjMwdjAQBgcq
hkjOPQIBBgUrgQQAIgNiAAQfTzOHMymKoYTey8chWEGJ6ladK0uFxh1MJ7x/JlFyb+Kf1qPKzEUU
Rout736GjOyxfi//qXGdGIRFBEFVbivqJn+7kAHjSxm65FSWRQmx1WyRRK2EE46ajA2ADDL24Cej
QjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTB8Sa6oC2uhYHP
0/EqEr24Cmf9vDAKBggqhkjOPQQDAwNpADBmAjEAgFukfCPAlaUs3L6JbyO5o91lAFJekazInXJ0
glMLfalAvWhgxeG4VDvBNhcl2MG9AjEAnjWSdIUlUfUk7GRSJFClH9voy8l27OyCbvWFGFPouOOa
KaqW04MjyaR7YbPMAuhd
-----END CERTIFICATE-----
GTS Root R4
===========
-----BEGIN CERTIFICATE-----
MIICCjCCAZGgAwIBAgIQbkepyIuUtui7OyrYorLBmTAKBggqhkjOPQQDAzBHMQswCQYDVQQGEwJV
UzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3Qg
UjQwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UE
ChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjQwdjAQBgcq
hkjOPQIBBgUrgQQAIgNiAATzdHOnaItgrkO4NcWBMHtLSZ37wWHO5t5GvWvVYRg1rkDdc/eJkTBa
6zzuhXyiQHY7qca4R9gq55KRanPpsXI5nymfopjTX15YhmUPoYRlBtHci8nHc8iMai/lxKvRHYqj
QjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSATNbrdP9JNqPV
2Py1PsVq8JQdjDAKBggqhkjOPQQDAwNnADBkAjBqUFJ0CMRw3J5QdCHojXohw0+WbhXRIjVhLfoI
N+4Zba3bssx9BzT1YBkstTTZbyACMANxsbqjYAuG7ZoIapVon+Kz4ZNkfF6Tpt95LY2F45TPI11x
zPKwTdb+mciUqXWi4w==
-----END CERTIFICATE-----
UCA Global G2 Root UCA Global G2 Root
================== ==================
-----BEGIN CERTIFICATE----- -----BEGIN CERTIFICATE-----
@ -3230,3 +3052,230 @@ ECUqqHgtvpBBWJAVcqeht6NCMEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUyRtTgRL+BNUW
rcJRQO9gcS3ujwLEXQNwSaSS6sUUiHCm0w2wqsosQJz76YJumgIwK0eaB8bRwoF8yguWGEEbo/Qw rcJRQO9gcS3ujwLEXQNwSaSS6sUUiHCm0w2wqsosQJz76YJumgIwK0eaB8bRwoF8yguWGEEbo/Qw
CZ61IygNnxS2PFOiTAZpffpskcYqSUXm7LcT4Tps CZ61IygNnxS2PFOiTAZpffpskcYqSUXm7LcT4Tps
-----END CERTIFICATE----- -----END CERTIFICATE-----
Autoridad de Certificacion Firmaprofesional CIF A62634068
=========================================================
-----BEGIN CERTIFICATE-----
MIIGFDCCA/ygAwIBAgIIG3Dp0v+ubHEwDQYJKoZIhvcNAQELBQAwUTELMAkGA1UEBhMCRVMxQjBA
BgNVBAMMOUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2
MjYzNDA2ODAeFw0xNDA5MjMxNTIyMDdaFw0zNjA1MDUxNTIyMDdaMFExCzAJBgNVBAYTAkVTMUIw
QAYDVQQDDDlBdXRvcmlkYWQgZGUgQ2VydGlmaWNhY2lvbiBGaXJtYXByb2Zlc2lvbmFsIENJRiBB
NjI2MzQwNjgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKlmuO6vj78aI14H9M2uDD
Utd9thDIAl6zQyrET2qyyhxdKJp4ERppWVevtSBC5IsP5t9bpgOSL/UR5GLXMnE42QQMcas9UX4P
B99jBVzpv5RvwSmCwLTaUbDBPLutN0pcyvFLNg4kq7/DhHf9qFD0sefGL9ItWY16Ck6WaVICqjaY
7Pz6FIMMNx/Jkjd/14Et5cS54D40/mf0PmbR0/RAz15iNA9wBj4gGFrO93IbJWyTdBSTo3OxDqqH
ECNZXyAFGUftaI6SEspd/NYrspI8IM/hX68gvqB2f3bl7BqGYTM+53u0P6APjqK5am+5hyZvQWyI
plD9amML9ZMWGxmPsu2bm8mQ9QEM3xk9Dz44I8kvjwzRAv4bVdZO0I08r0+k8/6vKtMFnXkIoctX
MbScyJCyZ/QYFpM6/EfY0XiWMR+6KwxfXZmtY4laJCB22N/9q06mIqqdXuYnin1oKaPnirjaEbsX
LZmdEyRG98Xi2J+Of8ePdG1asuhy9azuJBCtLxTa/y2aRnFHvkLfuwHb9H/TKI8xWVvTyQKmtFLK
bpf7Q8UIJm+K9Lv9nyiqDdVF8xM6HdjAeI9BZzwelGSuewvF6NkBiDkal4ZkQdU7hwxu+g/GvUgU
vzlN1J5Bto+WHWOWk9mVBngxaJ43BjuAiUVhOSPHG0SjFeUc+JIwuwIDAQABo4HvMIHsMB0GA1Ud
DgQWBBRlzeurNR4APn7VdMActHNHDhpkLzASBgNVHRMBAf8ECDAGAQH/AgEBMIGmBgNVHSAEgZ4w
gZswgZgGBFUdIAAwgY8wLwYIKwYBBQUHAgEWI2h0dHA6Ly93d3cuZmlybWFwcm9mZXNpb25hbC5j
b20vY3BzMFwGCCsGAQUFBwICMFAeTgBQAGEAcwBlAG8AIABkAGUAIABsAGEAIABCAG8AbgBhAG4A
bwB2AGEAIAA0ADcAIABCAGEAcgBjAGUAbABvAG4AYQAgADAAOAAwADEANzAOBgNVHQ8BAf8EBAMC
AQYwDQYJKoZIhvcNAQELBQADggIBAHSHKAIrdx9miWTtj3QuRhy7qPj4Cx2Dtjqn6EWKB7fgPiDL
4QjbEwj4KKE1soCzC1HA01aajTNFSa9J8OA9B3pFE1r/yJfY0xgsfZb43aJlQ3CTkBW6kN/oGbDb
LIpgD7dvlAceHabJhfa9NPhAeGIQcDq+fUs5gakQ1JZBu/hfHAsdCPKxsIl68veg4MSPi3i1O1il
I45PVf42O+AMt8oqMEEgtIDNrvx2ZnOorm7hfNoD6JQg5iKj0B+QXSBTFCZX2lSX3xZEEAEeiGaP
cjiT3SC3NL7X8e5jjkd5KAb881lFJWAiMxujX6i6KtoaPc1A6ozuBRWV1aUsIC+nmCjuRfzxuIgA
LI9C2lHVnOUTaHFFQ4ueCyE8S1wF3BqfmI7avSKecs2tCsvMo2ebKHTEm9caPARYpoKdrcd7b/+A
lun4jWq9GJAd/0kakFI3ky88Al2CdgtR5xbHV/g4+afNmyJU72OwFW1TZQNKXkqgsqeOSQBZONXH
9IBk9W6VULgRfhVwOEqwf9DEMnDAGf/JOC0ULGb0QkTmVXYbgBVX/8Cnp6o5qtjTcNAuuuuUavpf
NIbnYrX9ivAwhZTJryQCL2/W3Wf+47BVTwSYT6RBVuKT0Gro1vP7ZeDOdcQxWQzugsgMYDNKGbqE
ZycPvEJdvSRUDewdcAZfpLz6IHxV
-----END CERTIFICATE-----
vTrus ECC Root CA
=================
-----BEGIN CERTIFICATE-----
MIICDzCCAZWgAwIBAgIUbmq8WapTvpg5Z6LSa6Q75m0c1towCgYIKoZIzj0EAwMwRzELMAkGA1UE
BhMCQ04xHDAaBgNVBAoTE2lUcnVzQ2hpbmEgQ28uLEx0ZC4xGjAYBgNVBAMTEXZUcnVzIEVDQyBS
b290IENBMB4XDTE4MDczMTA3MjY0NFoXDTQzMDczMTA3MjY0NFowRzELMAkGA1UEBhMCQ04xHDAa
BgNVBAoTE2lUcnVzQ2hpbmEgQ28uLEx0ZC4xGjAYBgNVBAMTEXZUcnVzIEVDQyBSb290IENBMHYw
EAYHKoZIzj0CAQYFK4EEACIDYgAEZVBKrox5lkqqHAjDo6LN/llWQXf9JpRCux3NCNtzslt188+c
ToL0v/hhJoVs1oVbcnDS/dtitN9Ti72xRFhiQgnH+n9bEOf+QP3A2MMrMudwpremIFUde4BdS49n
TPEQo0IwQDAdBgNVHQ4EFgQUmDnNvtiyjPeyq+GtJK97fKHbH88wDwYDVR0TAQH/BAUwAwEB/zAO
BgNVHQ8BAf8EBAMCAQYwCgYIKoZIzj0EAwMDaAAwZQIwV53dVvHH4+m4SVBrm2nDb+zDfSXkV5UT
QJtS0zvzQBm8JsctBp61ezaf9SXUY2sAAjEA6dPGnlaaKsyh2j/IZivTWJwghfqrkYpwcBE4YGQL
YgmRWAD5Tfs0aNoJrSEGGJTO
-----END CERTIFICATE-----
vTrus Root CA
=============
-----BEGIN CERTIFICATE-----
MIIFVjCCAz6gAwIBAgIUQ+NxE9izWRRdt86M/TX9b7wFjUUwDQYJKoZIhvcNAQELBQAwQzELMAkG
A1UEBhMCQ04xHDAaBgNVBAoTE2lUcnVzQ2hpbmEgQ28uLEx0ZC4xFjAUBgNVBAMTDXZUcnVzIFJv
b3QgQ0EwHhcNMTgwNzMxMDcyNDA1WhcNNDMwNzMxMDcyNDA1WjBDMQswCQYDVQQGEwJDTjEcMBoG
A1UEChMTaVRydXNDaGluYSBDby4sTHRkLjEWMBQGA1UEAxMNdlRydXMgUm9vdCBDQTCCAiIwDQYJ
KoZIhvcNAQEBBQADggIPADCCAgoCggIBAL1VfGHTuB0EYgWgrmy3cLRB6ksDXhA/kFocizuwZots
SKYcIrrVQJLuM7IjWcmOvFjai57QGfIvWcaMY1q6n6MLsLOaXLoRuBLpDLvPbmyAhykUAyyNJJrI
ZIO1aqwTLDPxn9wsYTwaP3BVm60AUn/PBLn+NvqcwBauYv6WTEN+VRS+GrPSbcKvdmaVayqwlHeF
XgQPYh1jdfdr58tbmnDsPmcF8P4HCIDPKNsFxhQnL4Z98Cfe/+Z+M0jnCx5Y0ScrUw5XSmXX+6KA
YPxMvDVTAWqXcoKv8R1w6Jz1717CbMdHflqUhSZNO7rrTOiwCcJlwp2dCZtOtZcFrPUGoPc2BX70
kLJrxLT5ZOrpGgrIDajtJ8nU57O5q4IikCc9Kuh8kO+8T/3iCiSn3mUkpF3qwHYw03dQ+A0Em5Q2
AXPKBlim0zvc+gRGE1WKyURHuFE5Gi7oNOJ5y1lKCn+8pu8fA2dqWSslYpPZUxlmPCdiKYZNpGvu
/9ROutW04o5IWgAZCfEF2c6Rsffr6TlP9m8EQ5pV9T4FFL2/s1m02I4zhKOQUqqzApVg+QxMaPnu
1RcN+HFXtSXkKe5lXa/R7jwXC1pDxaWG6iSe4gUH3DRCEpHWOXSuTEGC2/KmSNGzm/MzqvOmwMVO
9fSddmPmAsYiS8GVP1BkLFTltvA8Kc9XAgMBAAGjQjBAMB0GA1UdDgQWBBRUYnBj8XWEQ1iO0RYg
scasGrz2iTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOC
AgEAKbqSSaet8PFww+SX8J+pJdVrnjT+5hpk9jprUrIQeBqfTNqK2uwcN1LgQkv7bHbKJAs5EhWd
nxEt/Hlk3ODg9d3gV8mlsnZwUKT+twpw1aA08XXXTUm6EdGz2OyC/+sOxL9kLX1jbhd47F18iMjr
jld22VkE+rxSH0Ws8HqA7Oxvdq6R2xCOBNyS36D25q5J08FsEhvMKar5CKXiNxTKsbhm7xqC5PD4
8acWabfbqWE8n/Uxy+QARsIvdLGx14HuqCaVvIivTDUHKgLKeBRtRytAVunLKmChZwOgzoy8sHJn
xDHO2zTlJQNgJXtxmOTAGytfdELSS8VZCAeHvsXDf+eW2eHcKJfWjwXj9ZtOyh1QRwVTsMo554Wg
icEFOwE30z9J4nfrI8iIZjs9OXYhRvHsXyO466JmdXTBQPfYaJqT4i2pLr0cox7IdMakLXogqzu4
sEb9b91fUlV1YvCXoHzXOP0l382gmxDPi7g4Xl7FtKYCNqEeXxzP4padKar9mK5S4fNBUvupLnKW
nyfjqnN9+BojZns7q2WwMgFLFT49ok8MKzWixtlnEjUwzXYuFrOZnk1PTi07NEPhmg4NpGaXutIc
SkwsKouLgU9xGqndXHt7CMUADTdA43x7VF8vhV929vensBxXVsFy6K2ir40zSbofitzmdHxghm+H
l3s=
-----END CERTIFICATE-----
ISRG Root X2
============
-----BEGIN CERTIFICATE-----
MIICGzCCAaGgAwIBAgIQQdKd0XLq7qeAwSxs6S+HUjAKBggqhkjOPQQDAzBPMQswCQYDVQQGEwJV
UzEpMCcGA1UEChMgSW50ZXJuZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMTDElT
UkcgUm9vdCBYMjAeFw0yMDA5MDQwMDAwMDBaFw00MDA5MTcxNjAwMDBaME8xCzAJBgNVBAYTAlVT
MSkwJwYDVQQKEyBJbnRlcm5ldCBTZWN1cml0eSBSZXNlYXJjaCBHcm91cDEVMBMGA1UEAxMMSVNS
RyBSb290IFgyMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEzZvVn4CDCuwJSvMWSj5cz3es3mcFDR0H
ttwW+1qLFNvicWDEukWVEYmO6gbf9yoWHKS5xcUy4APgHoIYOIvXRdgKam7mAHf7AlF9ItgKbppb
d9/w+kHsOdx1ymgHDB/qo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNV
HQ4EFgQUfEKWrt5LSDv6kviejM9ti6lyN5UwCgYIKoZIzj0EAwMDaAAwZQIwe3lORlCEwkSHRhtF
cP9Ymd70/aTSVaYgLXTWNLxBo1BfASdWtL4ndQavEi51mI38AjEAi/V3bNTIZargCyzuFJ0nN6T5
U6VR5CmD1/iQMVtCnwr1/q4AaOeMSQ+2b1tbFfLn
-----END CERTIFICATE-----
HiPKI Root CA - G1
==================
-----BEGIN CERTIFICATE-----
MIIFajCCA1KgAwIBAgIQLd2szmKXlKFD6LDNdmpeYDANBgkqhkiG9w0BAQsFADBPMQswCQYDVQQG
EwJUVzEjMCEGA1UECgwaQ2h1bmdod2EgVGVsZWNvbSBDby4sIEx0ZC4xGzAZBgNVBAMMEkhpUEtJ
IFJvb3QgQ0EgLSBHMTAeFw0xOTAyMjIwOTQ2MDRaFw0zNzEyMzExNTU5NTlaME8xCzAJBgNVBAYT
AlRXMSMwIQYDVQQKDBpDaHVuZ2h3YSBUZWxlY29tIENvLiwgTHRkLjEbMBkGA1UEAwwSSGlQS0kg
Um9vdCBDQSAtIEcxMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA9B5/UnMyDHPkvRN0
o9QwqNCuS9i233VHZvR85zkEHmpwINJaR3JnVfSl6J3VHiGh8Ge6zCFovkRTv4354twvVcg3Px+k
wJyz5HdcoEb+d/oaoDjq7Zpy3iu9lFc6uux55199QmQ5eiY29yTw1S+6lZgRZq2XNdZ1AYDgr/SE
YYwNHl98h5ZeQa/rh+r4XfEuiAU+TCK72h8q3VJGZDnzQs7ZngyzsHeXZJzA9KMuH5UHsBffMNsA
GJZMoYFL3QRtU6M9/Aes1MU3guvklQgZKILSQjqj2FPseYlgSGDIcpJQ3AOPgz+yQlda22rpEZfd
hSi8MEyr48KxRURHH+CKFgeW0iEPU8DtqX7UTuybCeyvQqww1r/REEXgphaypcXTT3OUM3ECoWqj
1jOXTyFjHluP2cFeRXF3D4FdXyGarYPM+l7WjSNfGz1BryB1ZlpK9p/7qxj3ccC2HTHsOyDry+K4
9a6SsvfhhEvyovKTmiKe0xRvNlS9H15ZFblzqMF8b3ti6RZsR1pl8w4Rm0bZ/W3c1pzAtH2lsN0/
Vm+h+fbkEkj9Bn8SV7apI09bA8PgcSojt/ewsTu8mL3WmKgMa/aOEmem8rJY5AIJEzypuxC00jBF
8ez3ABHfZfjcK0NVvxaXxA/VLGGEqnKG/uY6fsI/fe78LxQ+5oXdUG+3Se0CAwEAAaNCMEAwDwYD
VR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU8ncX+l6o/vY9cdVouslGDDjYr7AwDgYDVR0PAQH/BAQD
AgGGMA0GCSqGSIb3DQEBCwUAA4ICAQBQUfB13HAE4/+qddRxosuej6ip0691x1TPOhwEmSKsxBHi
7zNKpiMdDg1H2DfHb680f0+BazVP6XKlMeJ45/dOlBhbQH3PayFUhuaVevvGyuqcSE5XCV0vrPSl
tJczWNWseanMX/mF+lLFjfiRFOs6DRfQUsJ748JzjkZ4Bjgs6FzaZsT0pPBWGTMpWmWSBUdGSquE
wx4noR8RkpkndZMPvDY7l1ePJlsMu5wP1G4wB9TcXzZoZjmDlicmisjEOf6aIW/Vcobpf2Lll07Q
JNBAsNB1CI69aO4I1258EHBGG3zgiLKecoaZAeO/n0kZtCW+VmWuF2PlHt/o/0elv+EmBYTksMCv
5wiZqAxeJoBF1PhoL5aPruJKHJwWDBNvOIf2u8g0X5IDUXlwpt/L9ZlNec1OvFefQ05rLisY+Gpz
jLrFNe85akEez3GoorKGB1s6yeHvP2UEgEcyRHCVTjFnanRbEEV16rCf0OY1/k6fi8wrkkVbbiVg
hUbN0aqwdmaTd5a+g744tiROJgvM7XpWGuDpWsZkrUx6AEhEL7lAuxM+vhV4nYWBSipX3tUZQ9rb
yltHhoMLP7YNdnhzeSJesYAfz77RP1YQmCuVh6EfnWQUYDksswBVLuT1sw5XxJFBAJw/6KXf6vb/
yPCtbVKoF6ubYfwSUTXkJf2vqmqGOQ==
-----END CERTIFICATE-----
GlobalSign ECC Root CA - R4
===========================
-----BEGIN CERTIFICATE-----
MIIB3DCCAYOgAwIBAgINAgPlfvU/k/2lCSGypjAKBggqhkjOPQQDAjBQMSQwIgYDVQQLExtHbG9i
YWxTaWduIEVDQyBSb290IENBIC0gUjQxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkds
b2JhbFNpZ24wHhcNMTIxMTEzMDAwMDAwWhcNMzgwMTE5MDMxNDA3WjBQMSQwIgYDVQQLExtHbG9i
YWxTaWduIEVDQyBSb290IENBIC0gUjQxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkds
b2JhbFNpZ24wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAS4xnnTj2wlDp8uORkcA6SumuU5BwkW
ymOxuYb4ilfBV85C+nOh92VC/x7BALJucw7/xyHlGKSq2XE/qNS5zowdo0IwQDAOBgNVHQ8BAf8E
BAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUVLB7rUW44kB/+wpu+74zyTyjhNUwCgYI
KoZIzj0EAwIDRwAwRAIgIk90crlgr/HmnKAWBVBfw147bmF0774BxL4YSFlhgjICICadVGNA3jdg
UM/I2O2dgq43mLyjj0xMqTQrbO/7lZsm
-----END CERTIFICATE-----
GTS Root R1
===========
-----BEGIN CERTIFICATE-----
MIIFVzCCAz+gAwIBAgINAgPlk28xsBNJiGuiFzANBgkqhkiG9w0BAQwFADBHMQswCQYDVQQGEwJV
UzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3Qg
UjEwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UE
ChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjEwggIiMA0G
CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2EQKLHuOhd5s73L+UPreVp0A8of2C+X0yBoJx9vaM
f/vo27xqLpeXo4xL+Sv2sfnOhB2x+cWX3u+58qPpvBKJXqeqUqv4IyfLpLGcY9vXmX7wCl7raKb0
xlpHDU0QM+NOsROjyBhsS+z8CZDfnWQpJSMHobTSPS5g4M/SCYe7zUjwTcLCeoiKu7rPWRnWr4+w
B7CeMfGCwcDfLqZtbBkOtdh+JhpFAz2weaSUKK0PfyblqAj+lug8aJRT7oM6iCsVlgmy4HqMLnXW
nOunVmSPlk9orj2XwoSPwLxAwAtcvfaHszVsrBhQf4TgTM2S0yDpM7xSma8ytSmzJSq0SPly4cpk
9+aCEI3oncKKiPo4Zor8Y/kB+Xj9e1x3+naH+uzfsQ55lVe0vSbv1gHR6xYKu44LtcXFilWr06zq
kUspzBmkMiVOKvFlRNACzqrOSbTqn3yDsEB750Orp2yjj32JgfpMpf/VjsPOS+C12LOORc92wO1A
K/1TD7Cn1TsNsYqiA94xrcx36m97PtbfkSIS5r762DL8EGMUUXLeXdYWk70paDPvOmbsB4om3xPX
V2V4J95eSRQAogB/mqghtqmxlbCluQ0WEdrHbEg8QOB+DVrNVjzRlwW5y0vtOUucxD/SVRNuJLDW
cfr0wbrM7Rv1/oFB2ACYPTrIrnqYNxgFlQIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0T
AQH/BAUwAwEB/zAdBgNVHQ4EFgQU5K8rJnEaK0gnhS9SZizv8IkTcT4wDQYJKoZIhvcNAQEMBQAD
ggIBAJ+qQibbC5u+/x6Wki4+omVKapi6Ist9wTrYggoGxval3sBOh2Z5ofmmWJyq+bXmYOfg6LEe
QkEzCzc9zolwFcq1JKjPa7XSQCGYzyI0zzvFIoTgxQ6KfF2I5DUkzps+GlQebtuyh6f88/qBVRRi
ClmpIgUxPoLW7ttXNLwzldMXG+gnoot7TiYaelpkttGsN/H9oPM47HLwEXWdyzRSjeZ2axfG34ar
J45JK3VmgRAhpuo+9K4l/3wV3s6MJT/KYnAK9y8JZgfIPxz88NtFMN9iiMG1D53Dn0reWVlHxYci
NuaCp+0KueIHoI17eko8cdLiA6EfMgfdG+RCzgwARWGAtQsgWSl4vflVy2PFPEz0tv/bal8xa5me
LMFrUKTX5hgUvYU/Z6tGn6D/Qqc6f1zLXbBwHSs09dR2CQzreExZBfMzQsNhFRAbd03OIozUhfJF
fbdT6u9AWpQKXCBfTkBdYiJ23//OYb2MI3jSNwLgjt7RETeJ9r/tSQdirpLsQBqvFAnZ0E6yove+
7u7Y/9waLd64NnHi/Hm3lCXRSHNboTXns5lndcEZOitHTtNCjv0xyBZm2tIMPNuzjsmhDYAPexZ3
FL//2wmUspO8IFgV6dtxQ/PeEMMA3KgqlbbC1j+Qa3bbbP6MvPJwNQzcmRk13NfIRmPVNnGuV/u3
gm3c
-----END CERTIFICATE-----
GTS Root R2
===========
-----BEGIN CERTIFICATE-----
MIIFVzCCAz+gAwIBAgINAgPlrsWNBCUaqxElqjANBgkqhkiG9w0BAQwFADBHMQswCQYDVQQGEwJV
UzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3Qg
UjIwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UE
ChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjIwggIiMA0G
CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDO3v2m++zsFDQ8BwZabFn3GTXd98GdVarTzTukk3Lv
CvptnfbwhYBboUhSnznFt+4orO/LdmgUud+tAWyZH8QiHZ/+cnfgLFuv5AS/T3KgGjSY6Dlo7JUl
e3ah5mm5hRm9iYz+re026nO8/4Piy33B0s5Ks40FnotJk9/BW9BuXvAuMC6C/Pq8tBcKSOWIm8Wb
a96wyrQD8Nr0kLhlZPdcTK3ofmZemde4wj7I0BOdre7kRXuJVfeKH2JShBKzwkCX44ofR5GmdFrS
+LFjKBC4swm4VndAoiaYecb+3yXuPuWgf9RhD1FLPD+M2uFwdNjCaKH5wQzpoeJ/u1U8dgbuak7M
kogwTZq9TwtImoS1mKPV+3PBV2HdKFZ1E66HjucMUQkQdYhMvI35ezzUIkgfKtzra7tEscszcTJG
r61K8YzodDqs5xoic4DSMPclQsciOzsSrZYuxsN2B6ogtzVJV+mSSeh2FnIxZyuWfoqjx5RWIr9q
S34BIbIjMt/kmkRtWVtd9QCgHJvGeJeNkP+byKq0rxFROV7Z+2et1VsRnTKaG73VululycslaVNV
J1zgyjbLiGH7HrfQy+4W+9OmTN6SpdTi3/UGVN4unUu0kzCqgc7dGtxRcw1PcOnlthYhGXmy5okL
dWTK1au8CcEYof/UVKGFPP0UJAOyh9OktwIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0T
AQH/BAUwAwEB/zAdBgNVHQ4EFgQUu//KjiOfT5nK2+JopqUVJxce2Q4wDQYJKoZIhvcNAQEMBQAD
ggIBAB/Kzt3HvqGf2SdMC9wXmBFqiN495nFWcrKeGk6c1SuYJF2ba3uwM4IJvd8lRuqYnrYb/oM8
0mJhwQTtzuDFycgTE1XnqGOtjHsB/ncw4c5omwX4Eu55MaBBRTUoCnGkJE+M3DyCB19m3H0Q/gxh
swWV7uGugQ+o+MePTagjAiZrHYNSVc61LwDKgEDg4XSsYPWHgJ2uNmSRXbBoGOqKYcl3qJfEycel
/FVL8/B/uWU9J2jQzGv6U53hkRrJXRqWbTKH7QMgyALOWr7Z6v2yTcQvG99fevX4i8buMTolUVVn
jWQye+mew4K6Ki3pHrTgSAai/GevHyICc/sgCq+dVEuhzf9gR7A/Xe8bVr2XIZYtCtFenTgCR2y5
9PYjJbigapordwj6xLEokCZYCDzifqrXPW+6MYgKBesntaFJ7qBFVHvmJ2WZICGoo7z7GJa7Um8M
7YNRTOlZ4iBgxcJlkoKM8xAfDoqXvneCbT+PHV28SSe9zE8P4c52hgQjxcCMElv924SgJPFI/2R8
0L5cFtHvma3AH/vLrrw4IgYmZNralw4/KBVEqE8AyvCazM90arQ+POuV7LXTWtiBmelDGDfrs7vR
WGJB82bSj6p4lVQgw1oudCvV0b4YacCs1aTPObpRhANl6WLAYv7YTVWW4tAR+kg0Eeye7QUd5MjW
HYbL
-----END CERTIFICATE-----
GTS Root R3
===========
-----BEGIN CERTIFICATE-----
MIICCTCCAY6gAwIBAgINAgPluILrIPglJ209ZjAKBggqhkjOPQQDAzBHMQswCQYDVQQGEwJVUzEi
MCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjMw
HhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZ
R29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjMwdjAQBgcqhkjO
PQIBBgUrgQQAIgNiAAQfTzOHMymKoYTey8chWEGJ6ladK0uFxh1MJ7x/JlFyb+Kf1qPKzEUURout
736GjOyxfi//qXGdGIRFBEFVbivqJn+7kAHjSxm65FSWRQmx1WyRRK2EE46ajA2ADDL24CejQjBA
MA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTB8Sa6oC2uhYHP0/Eq
Er24Cmf9vDAKBggqhkjOPQQDAwNpADBmAjEA9uEglRR7VKOQFhG/hMjqb2sXnh5GmCCbn9MN2azT
L818+FsuVbu/3ZL3pAzcMeGiAjEA/JdmZuVDFhOD3cffL74UOO0BzrEXGhF16b0DjyZ+hOXJYKaV
11RZt+cRLInUue4X
-----END CERTIFICATE-----
GTS Root R4
===========
-----BEGIN CERTIFICATE-----
MIICCTCCAY6gAwIBAgINAgPlwGjvYxqccpBQUjAKBggqhkjOPQQDAzBHMQswCQYDVQQGEwJVUzEi
MCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjQw
HhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZ
R29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjQwdjAQBgcqhkjO
PQIBBgUrgQQAIgNiAATzdHOnaItgrkO4NcWBMHtLSZ37wWHO5t5GvWvVYRg1rkDdc/eJkTBa6zzu
hXyiQHY7qca4R9gq55KRanPpsXI5nymfopjTX15YhmUPoYRlBtHci8nHc8iMai/lxKvRHYqjQjBA
MA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSATNbrdP9JNqPV2Py1
PsVq8JQdjDAKBggqhkjOPQQDAwNpADBmAjEA6ED/g94D9J+uHXqnLrmvT/aDHQ4thQEd0dlq7A/C
r8deVl5c1RxYIigL9zC2L7F8AjEA8GE8p/SgguMh1YQdc4acLa/KNJvxn7kjNuK8YAOdgLOaVsjh
4rsUecrNIdSUtUlD
-----END CERTIFICATE-----

View file

@ -1,15 +1,14 @@
{ {
"name": "getkirby/cms", "name": "getkirby/cms",
"type": "kirby-cms",
"description": "The Kirby 3 core", "description": "The Kirby 3 core",
"license": "proprietary",
"type": "kirby-cms",
"version": "3.6.3",
"keywords": [ "keywords": [
"kirby", "kirby",
"cms", "cms",
"core" "core"
], ],
"homepage": "https://getkirby.com",
"version": "3.6.0",
"license": "proprietary",
"authors": [ "authors": [
{ {
"name": "Kirby Team", "name": "Kirby Team",
@ -17,23 +16,30 @@
"homepage": "https://getkirby.com" "homepage": "https://getkirby.com"
} }
], ],
"homepage": "https://getkirby.com",
"support": {
"email": "support@getkirby.com",
"issues": "https://github.com/getkirby/kirby/issues",
"forum": "https://forum.getkirby.com",
"source": "https://github.com/getkirby/kirby"
},
"_comment": "TODO: psr/log is not used by Kirby; drop pinned version when Kirby no longer supports PHP 7",
"require": { "require": {
"php": ">=7.4.0 <8.1.0", "php": ">=7.4.0 <8.2.0",
"ext-ctype": "*", "ext-ctype": "*",
"ext-mbstring": "*", "ext-mbstring": "*",
"claviska/simpleimage": "3.6.3", "claviska/simpleimage": "3.6.5",
"filp/whoops": "2.14.4", "filp/whoops": "2.14.5",
"getkirby/composer-installer": "^1.2.1", "getkirby/composer-installer": "^1.2.1",
"laminas/laminas-escaper": "2.9.0", "laminas/laminas-escaper": "2.9.0",
"michelf/php-smartypants": "1.8.1", "michelf/php-smartypants": "1.8.1",
"mustangostang/spyc": "0.6.3", "phpmailer/phpmailer": "6.5.4",
"phpmailer/phpmailer": "6.5.1",
"psr/log": "1.1.4", "psr/log": "1.1.4",
"true/punycode": "2.1.1" "symfony/polyfill-intl-idn": "1.24.0",
"symfony/polyfill-mbstring": "1.24.0"
}, },
"config": { "replace": {
"optimize-autoloader": true, "symfony/polyfill-php72": "*"
"platform-check": false
}, },
"autoload": { "autoload": {
"psr-4": { "psr-4": {
@ -47,6 +53,18 @@
"config/helpers.php" "config/helpers.php"
] ]
}, },
"config": {
"allow-plugins": {
"getkirby/composer-installer": true
},
"optimize-autoloader": true,
"platform-check": false
},
"extra": {
"unused": [
"symfony/polyfill-intl-idn"
]
},
"scripts": { "scripts": {
"post-update-cmd": "curl -o cacert.pem https://curl.se/ca/cacert.pem", "post-update-cmd": "curl -o cacert.pem https://curl.se/ca/cacert.pem",
"analyze": [ "analyze": [
@ -68,12 +86,5 @@
"fix": "php-cs-fixer fix", "fix": "php-cs-fixer fix",
"test": "phpunit --stderr --coverage-html=tests/coverage", "test": "phpunit --stderr --coverage-html=tests/coverage",
"zip": "composer archive --format=zip --file=dist" "zip": "composer archive --format=zip --file=dist"
}, }
"support": {
"email": "support@getkirby.com",
"issues": "https://github.com/getkirby/kirby/issues",
"forum": "https://forum.getkirby.com",
"source": "https://github.com/getkirby/kirby"
},
"_comment": "TODO: psr/log is not used by Kirby; drop pinned version when Kirby no longer supports PHP 7"
} }

342
kirby/composer.lock generated
View file

@ -4,20 +4,20 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"content-hash": "8712d96f826f859411fec3cce4f16e63", "content-hash": "d4cf75084dae428fe0ab54124637d51f",
"packages": [ "packages": [
{ {
"name": "claviska/simpleimage", "name": "claviska/simpleimage",
"version": "3.6.3", "version": "3.6.5",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/claviska/SimpleImage.git", "url": "https://github.com/claviska/SimpleImage.git",
"reference": "21b6f4bf4ef1927158b3e29bd0c2d99c6681c750" "reference": "00f90662686696b9b7157dbb176183aabe89700f"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/claviska/SimpleImage/zipball/21b6f4bf4ef1927158b3e29bd0c2d99c6681c750", "url": "https://api.github.com/repos/claviska/SimpleImage/zipball/00f90662686696b9b7157dbb176183aabe89700f",
"reference": "21b6f4bf4ef1927158b3e29bd0c2d99c6681c750", "reference": "00f90662686696b9b7157dbb176183aabe89700f",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -45,7 +45,7 @@
"description": "A PHP class that makes working with images as simple as possible.", "description": "A PHP class that makes working with images as simple as possible.",
"support": { "support": {
"issues": "https://github.com/claviska/SimpleImage/issues", "issues": "https://github.com/claviska/SimpleImage/issues",
"source": "https://github.com/claviska/SimpleImage/tree/3.6.3" "source": "https://github.com/claviska/SimpleImage/tree/3.6.5"
}, },
"funding": [ "funding": [
{ {
@ -53,20 +53,20 @@
"type": "github" "type": "github"
} }
], ],
"time": "2021-04-20T12:18:18+00:00" "time": "2021-12-01T12:42:55+00:00"
}, },
{ {
"name": "filp/whoops", "name": "filp/whoops",
"version": "2.14.4", "version": "2.14.5",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/filp/whoops.git", "url": "https://github.com/filp/whoops.git",
"reference": "f056f1fe935d9ed86e698905a957334029899895" "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/filp/whoops/zipball/f056f1fe935d9ed86e698905a957334029899895", "url": "https://api.github.com/repos/filp/whoops/zipball/a63e5e8f26ebbebf8ed3c5c691637325512eb0dc",
"reference": "f056f1fe935d9ed86e698905a957334029899895", "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -116,7 +116,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/filp/whoops/issues", "issues": "https://github.com/filp/whoops/issues",
"source": "https://github.com/filp/whoops/tree/2.14.4" "source": "https://github.com/filp/whoops/tree/2.14.5"
}, },
"funding": [ "funding": [
{ {
@ -124,7 +124,7 @@
"type": "github" "type": "github"
} }
], ],
"time": "2021-10-03T12:00:00+00:00" "time": "2022-01-07T12:00:00+00:00"
}, },
{ {
"name": "getkirby/composer-installer", "name": "getkirby/composer-installer",
@ -347,68 +347,18 @@
}, },
"time": "2016-12-13T01:01:17+00:00" "time": "2016-12-13T01:01:17+00:00"
}, },
{
"name": "mustangostang/spyc",
"version": "0.6.3",
"source": {
"type": "git",
"url": "git@github.com:mustangostang/spyc.git",
"reference": "4627c838b16550b666d15aeae1e5289dd5b77da0"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/mustangostang/spyc/zipball/4627c838b16550b666d15aeae1e5289dd5b77da0",
"reference": "4627c838b16550b666d15aeae1e5289dd5b77da0",
"shasum": ""
},
"require": {
"php": ">=5.3.1"
},
"require-dev": {
"phpunit/phpunit": "4.3.*@dev"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "0.5.x-dev"
}
},
"autoload": {
"files": [
"Spyc.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "mustangostang",
"email": "vlad.andersen@gmail.com"
}
],
"description": "A simple YAML loader/dumper class for PHP",
"homepage": "https://github.com/mustangostang/spyc/",
"keywords": [
"spyc",
"yaml",
"yml"
],
"time": "2019-09-10T13:16:29+00:00"
},
{ {
"name": "phpmailer/phpmailer", "name": "phpmailer/phpmailer",
"version": "v6.5.1", "version": "v6.5.4",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/PHPMailer/PHPMailer.git", "url": "https://github.com/PHPMailer/PHPMailer.git",
"reference": "dd803df5ad7492e1b40637f7ebd258fee5ca7355" "reference": "c0d9f7dd3c2aa247ca44791e9209233829d82285"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/dd803df5ad7492e1b40637f7ebd258fee5ca7355", "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/c0d9f7dd3c2aa247ca44791e9209233829d82285",
"reference": "dd803df5ad7492e1b40637f7ebd258fee5ca7355", "reference": "c0d9f7dd3c2aa247ca44791e9209233829d82285",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -421,10 +371,10 @@
"dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0",
"doctrine/annotations": "^1.2", "doctrine/annotations": "^1.2",
"php-parallel-lint/php-console-highlighter": "^0.5.0", "php-parallel-lint/php-console-highlighter": "^0.5.0",
"php-parallel-lint/php-parallel-lint": "^1.3", "php-parallel-lint/php-parallel-lint": "^1.3.1",
"phpcompatibility/php-compatibility": "^9.3.5", "phpcompatibility/php-compatibility": "^9.3.5",
"roave/security-advisories": "dev-latest", "roave/security-advisories": "dev-latest",
"squizlabs/php_codesniffer": "^3.6.0", "squizlabs/php_codesniffer": "^3.6.2",
"yoast/phpunit-polyfills": "^1.0.0" "yoast/phpunit-polyfills": "^1.0.0"
}, },
"suggest": { "suggest": {
@ -465,7 +415,7 @@
"description": "PHPMailer is a full-featured email creation and transfer class for PHP", "description": "PHPMailer is a full-featured email creation and transfer class for PHP",
"support": { "support": {
"issues": "https://github.com/PHPMailer/PHPMailer/issues", "issues": "https://github.com/PHPMailer/PHPMailer/issues",
"source": "https://github.com/PHPMailer/PHPMailer/tree/v6.5.1" "source": "https://github.com/PHPMailer/PHPMailer/tree/v6.5.4"
}, },
"funding": [ "funding": [
{ {
@ -473,7 +423,7 @@
"type": "github" "type": "github"
} }
], ],
"time": "2021-08-18T09:14:16+00:00" "time": "2022-02-17T08:19:04+00:00"
}, },
{ {
"name": "psr/log", "name": "psr/log",
@ -526,22 +476,196 @@
"time": "2021-05-03T11:20:27+00:00" "time": "2021-05-03T11:20:27+00:00"
}, },
{ {
"name": "symfony/polyfill-mbstring", "name": "symfony/polyfill-intl-idn",
"version": "v1.23.1", "version": "v1.24.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git", "url": "https://github.com/symfony/polyfill-intl-idn.git",
"reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6" "reference": "749045c69efb97c70d25d7463abba812e91f3a44"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9174a3d80210dca8daa7f31fec659150bbeabfc6", "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44",
"reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6", "reference": "749045c69efb97c70d25d7463abba812e91f3a44",
"shasum": ""
},
"require": {
"php": ">=7.1",
"symfony/polyfill-intl-normalizer": "^1.10",
"symfony/polyfill-php72": "^1.10"
},
"suggest": {
"ext-intl": "For best performance"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.23-dev"
},
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
}
},
"autoload": {
"files": [
"bootstrap.php"
],
"psr-4": {
"Symfony\\Polyfill\\Intl\\Idn\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Laurent Bassin",
"email": "laurent@bassin.info"
},
{
"name": "Trevor Rowbotham",
"email": "trevor.rowbotham@pm.me"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"idn",
"intl",
"polyfill",
"portable",
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.24.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": "2021-09-14T14:02:44+00:00"
},
{
"name": "symfony/polyfill-intl-normalizer",
"version": "v1.25.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-normalizer.git",
"reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8",
"reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=7.1" "php": ">=7.1"
}, },
"suggest": {
"ext-intl": "For best performance"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.23-dev"
},
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
}
},
"autoload": {
"files": [
"bootstrap.php"
],
"psr-4": {
"Symfony\\Polyfill\\Intl\\Normalizer\\": ""
},
"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 for intl's Normalizer class and related functions",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"intl",
"normalizer",
"polyfill",
"portable",
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.25.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": "2021-02-19T12:13:01+00:00"
},
{
"name": "symfony/polyfill-mbstring",
"version": "v1.24.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
"reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825",
"reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825",
"shasum": ""
},
"require": {
"php": ">=7.1"
},
"provide": {
"ext-mbstring": "*"
},
"suggest": { "suggest": {
"ext-mbstring": "For best performance" "ext-mbstring": "For best performance"
}, },
@ -556,12 +680,12 @@
} }
}, },
"autoload": { "autoload": {
"psr-4": {
"Symfony\\Polyfill\\Mbstring\\": ""
},
"files": [ "files": [
"bootstrap.php" "bootstrap.php"
] ],
"psr-4": {
"Symfony\\Polyfill\\Mbstring\\": ""
}
}, },
"notification-url": "https://packagist.org/downloads/", "notification-url": "https://packagist.org/downloads/",
"license": [ "license": [
@ -587,7 +711,7 @@
"shim" "shim"
], ],
"support": { "support": {
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.23.1" "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.24.0"
}, },
"funding": [ "funding": [
{ {
@ -603,57 +727,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2021-05-27T12:26:48+00:00" "time": "2021-11-30T18:21:41+00:00"
},
{
"name": "true/punycode",
"version": "v2.1.1",
"source": {
"type": "git",
"url": "https://github.com/true/php-punycode.git",
"reference": "a4d0c11a36dd7f4e7cd7096076cab6d3378a071e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/true/php-punycode/zipball/a4d0c11a36dd7f4e7cd7096076cab6d3378a071e",
"reference": "a4d0c11a36dd7f4e7cd7096076cab6d3378a071e",
"shasum": ""
},
"require": {
"php": ">=5.3.0",
"symfony/polyfill-mbstring": "^1.3"
},
"require-dev": {
"phpunit/phpunit": "~4.7",
"squizlabs/php_codesniffer": "~2.0"
},
"type": "library",
"autoload": {
"psr-4": {
"TrueBV\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Renan Gonçalves",
"email": "renan.saddam@gmail.com"
}
],
"description": "A Bootstring encoding of Unicode for Internationalized Domain Names in Applications (IDNA)",
"homepage": "https://github.com/true/php-punycode",
"keywords": [
"idna",
"punycode"
],
"support": {
"issues": "https://github.com/true/php-punycode/issues",
"source": "https://github.com/true/php-punycode/tree/master"
},
"time": "2016-11-16T10:37:54+00:00"
} }
], ],
"packages-dev": [], "packages-dev": [],
@ -663,7 +737,7 @@
"prefer-stable": false, "prefer-stable": false,
"prefer-lowest": false, "prefer-lowest": false,
"platform": { "platform": {
"php": ">=7.4.0 <8.1.0", "php": ">=7.4.0 <8.2.0",
"ext-ctype": "*", "ext-ctype": "*",
"ext-mbstring": "*" "ext-mbstring": "*"
}, },

View file

@ -61,12 +61,10 @@ return [
* Users * Users
*/ */
'users' => [ 'users' => [
'default' => function () { 'default' => fn () => $this->users(),
return $this->users(); 'model' => 'user',
}, 'type' => 'Kirby\Cms\Users',
'model' => 'user', 'view' => 'compact'
'type' => 'Kirby\Cms\Users',
'view' => 'compact'
] ]
]; ];

View file

@ -8,92 +8,48 @@ use Kirby\Form\Form;
*/ */
return [ return [
'fields' => [ 'fields' => [
'blueprint' => function (File $file) { 'blueprint' => fn (File $file) => $file->blueprint(),
return $file->blueprint(); 'content' => fn (File $file) => Form::for($file)->values(),
}, 'dimensions' => fn (File $file) => $file->dimensions()->toArray(),
'content' => function (File $file) { 'dragText' => fn (File $file) => $file->panel()->dragText(),
return Form::for($file)->values(); 'exists' => fn (File $file) => $file->exists(),
}, 'extension' => fn (File $file) => $file->extension(),
'dimensions' => function (File $file) { 'filename' => fn (File $file) => $file->filename(),
return $file->dimensions()->toArray(); 'id' => fn (File $file) => $file->id(),
}, 'link' => fn (File $file) => $file->panel()->url(true),
'dragText' => function (File $file) { 'mime' => fn (File $file) => $file->mime(),
return $file->panel()->dragText(); 'modified' => fn (File $file) => $file->modified('c'),
}, 'name' => fn (File $file) => $file->name(),
'exists' => function (File $file) { 'next' => fn (File $file) => $file->next(),
return $file->exists();
},
'extension' => function (File $file) {
return $file->extension();
},
'filename' => function (File $file) {
return $file->filename();
},
'id' => function (File $file) {
return $file->id();
},
'link' => function (File $file) {
return $file->panel()->url(true);
},
'mime' => function (File $file) {
return $file->mime();
},
'modified' => function (File $file) {
return $file->modified('c');
},
'name' => function (File $file) {
return $file->name();
},
'next' => function (File $file) {
return $file->next();
},
'nextWithTemplate' => function (File $file) { 'nextWithTemplate' => function (File $file) {
$files = $file->templateSiblings()->sorted(); $files = $file->templateSiblings()->sorted();
$index = $files->indexOf($file); $index = $files->indexOf($file);
return $files->nth($index + 1); return $files->nth($index + 1);
}, },
'niceSize' => function (File $file) { 'niceSize' => fn (File $file) => $file->niceSize(),
return $file->niceSize(); 'options' => fn (File $file) => $file->panel()->options(),
}, 'panelIcon' => function (File $file) {
'options' => function (File $file) {
return $file->panel()->options();
},
'panelIcon' => function (File $file) {
// TODO: remove in 3.7.0 // TODO: remove in 3.7.0
// @codeCoverageIgnoreStart // @codeCoverageIgnoreStart
deprecated('The API field file.panelIcon has been deprecated and will be removed in 3.7.0. Use file.panelImage instead'); deprecated('The API field file.panelIcon has been deprecated and will be removed in 3.7.0. Use file.panelImage instead');
return $file->panel()->image(); return $file->panel()->image();
// @codeCoverageIgnoreEnd // @codeCoverageIgnoreEnd
}, },
'panelImage' => function (File $file) { 'panelImage' => fn (File $file) => $file->panel()->image(),
return $file->panel()->image(); 'panelUrl' => fn (File $file) => $file->panel()->url(true),
}, 'prev' => fn (File $file) => $file->prev(),
'panelUrl' => function (File $file) {
return $file->panel()->url(true);
},
'prev' => function (File $file) {
return $file->prev();
},
'prevWithTemplate' => function (File $file) { 'prevWithTemplate' => function (File $file) {
$files = $file->templateSiblings()->sorted(); $files = $file->templateSiblings()->sorted();
$index = $files->indexOf($file); $index = $files->indexOf($file);
return $files->nth($index - 1); return $files->nth($index - 1);
}, },
'parent' => function (File $file) { 'parent' => fn (File $file) => $file->parent(),
return $file->parent(); 'parents' => fn (File $file) => $file->parents()->flip(),
}, 'size' => fn (File $file) => $file->size(),
'parents' => function (File $file) { 'template' => fn (File $file) => $file->template(),
return $file->parents()->flip(); 'thumbs' => function ($file) {
},
'size' => function (File $file) {
return $file->size();
},
'template' => function (File $file) {
return $file->template();
},
'thumbs' => function ($file) {
if ($file->isResizable() === false) { if ($file->isResizable() === false) {
return null; return null;
} }
@ -106,12 +62,8 @@ return [
'huge' => $file->resize(1024)->url(), 'huge' => $file->resize(1024)->url(),
]; ];
}, },
'type' => function (File $file) { 'type' => fn (File $file) => $file->type(),
return $file->type(); 'url' => fn (File $file) => $file->url(),
},
'url' => function (File $file) {
return $file->url();
},
], ],
'type' => 'Kirby\Cms\File', 'type' => 'Kirby\Cms\File',
'views' => [ 'views' => [

View file

@ -7,18 +7,10 @@ use Kirby\Cms\FileBlueprint;
*/ */
return [ return [
'fields' => [ 'fields' => [
'name' => function (FileBlueprint $blueprint) { 'name' => fn (FileBlueprint $blueprint) => $blueprint->name(),
return $blueprint->name(); 'options' => fn (FileBlueprint $blueprint) => $blueprint->options(),
}, 'tabs' => fn (FileBlueprint $blueprint) => $blueprint->tabs(),
'options' => function (FileBlueprint $blueprint) { 'title' => fn (FileBlueprint $blueprint) => $blueprint->title(),
return $blueprint->options();
},
'tabs' => function (FileBlueprint $blueprint) {
return $blueprint->tabs();
},
'title' => function (FileBlueprint $blueprint) {
return $blueprint->title();
},
], ],
'type' => 'Kirby\Cms\FileBlueprint', 'type' => 'Kirby\Cms\FileBlueprint',
'views' => [ 'views' => [

View file

@ -7,42 +7,18 @@ use Kirby\Cms\FileVersion;
*/ */
return [ return [
'fields' => [ 'fields' => [
'dimensions' => function (FileVersion $file) { 'dimensions' => fn (FileVersion $file) => $file->dimensions()->toArray(),
return $file->dimensions()->toArray(); 'exists' => fn (FileVersion $file) => $file->exists(),
}, 'extension' => fn (FileVersion $file) => $file->extension(),
'exists' => function (FileVersion $file) { 'filename' => fn (FileVersion $file) => $file->filename(),
return $file->exists(); 'id' => fn (FileVersion $file) => $file->id(),
}, 'mime' => fn (FileVersion $file) => $file->mime(),
'extension' => function (FileVersion $file) { 'modified' => fn (FileVersion $file) => $file->modified('c'),
return $file->extension(); 'name' => fn (FileVersion $file) => $file->name(),
}, 'niceSize' => fn (FileVersion $file) => $file->niceSize(),
'filename' => function (FileVersion $file) { 'size' => fn (FileVersion $file) => $file->size(),
return $file->filename(); 'type' => fn (FileVersion $file) => $file->type(),
}, 'url' => fn (FileVersion $file) => $file->url(),
'id' => function (FileVersion $file) {
return $file->id();
},
'mime' => function (FileVersion $file) {
return $file->mime();
},
'modified' => function (FileVersion $file) {
return $file->modified('c');
},
'name' => function (FileVersion $file) {
return $file->name();
},
'niceSize' => function (FileVersion $file) {
return $file->niceSize();
},
'size' => function (FileVersion $file) {
return $file->size();
},
'type' => function (FileVersion $file) {
return $file->type();
},
'url' => function (FileVersion $file) {
return $file->url();
},
], ],
'type' => 'Kirby\Cms\FileVersion', 'type' => 'Kirby\Cms\FileVersion',
'views' => [ 'views' => [

View file

@ -7,27 +7,13 @@ use Kirby\Cms\Language;
*/ */
return [ return [
'fields' => [ 'fields' => [
'code' => function (Language $language) { 'code' => fn (Language $language) => $language->code(),
return $language->code(); 'default' => fn (Language $language) => $language->isDefault(),
}, 'direction' => fn (Language $language) => $language->direction(),
'default' => function (Language $language) { 'locale' => fn (Language $language) => $language->locale(),
return $language->isDefault(); 'name' => fn (Language $language) => $language->name(),
}, 'rules' => fn (Language $language) => $language->rules(),
'direction' => function (Language $language) { 'url' => fn (Language $language) => $language->url(),
return $language->direction();
},
'locale' => function (Language $language) {
return $language->locale();
},
'name' => function (Language $language) {
return $language->name();
},
'rules' => function (Language $language) {
return $language->rules();
},
'url' => function (Language $language) {
return $language->url();
},
], ],
'type' => 'Kirby\Cms\Language', 'type' => 'Kirby\Cms\Language',
'views' => [ 'views' => [

View file

@ -8,42 +8,18 @@ use Kirby\Form\Form;
*/ */
return [ return [
'fields' => [ 'fields' => [
'blueprint' => function (Page $page) { 'blueprint' => fn (Page $page) => $page->blueprint(),
return $page->blueprint(); 'blueprints' => fn (Page $page) => $page->blueprints(),
}, 'children' => fn (Page $page) => $page->children(),
'blueprints' => function (Page $page) { 'content' => fn (Page $page) => Form::for($page)->values(),
return $page->blueprints(); 'drafts' => fn (Page $page) => $page->drafts(),
}, 'errors' => fn (Page $page) => $page->errors(),
'children' => function (Page $page) { 'files' => fn (Page $page) => $page->files()->sorted(),
return $page->children(); 'hasChildren' => fn (Page $page) => $page->hasChildren(),
}, 'hasDrafts' => fn (Page $page) => $page->hasDrafts(),
'content' => function (Page $page) { 'hasFiles' => fn (Page $page) => $page->hasFiles(),
return Form::for($page)->values(); 'id' => fn (Page $page) => $page->id(),
}, 'isSortable' => fn (Page $page) => $page->isSortable(),
'drafts' => function (Page $page) {
return $page->drafts();
},
'errors' => function (Page $page) {
return $page->errors();
},
'files' => function (Page $page) {
return $page->files()->sorted();
},
'hasChildren' => function (Page $page) {
return $page->hasChildren();
},
'hasDrafts' => function (Page $page) {
return $page->hasDrafts();
},
'hasFiles' => function (Page $page) {
return $page->hasFiles();
},
'id' => function (Page $page) {
return $page->id();
},
'isSortable' => function (Page $page) {
return $page->isSortable();
},
/** /**
* @deprecated 3.6.0 * @deprecated 3.6.0
* @todo Throw deprecated warning in 3.7.0 * @todo Throw deprecated warning in 3.7.0
@ -58,12 +34,8 @@ return [
->filter('isReadable', true) ->filter('isReadable', true)
->first(); ->first();
}, },
'num' => function (Page $page) { 'num' => fn (Page $page) => $page->num(),
return $page->num(); 'options' => fn (Page $page) => $page->panel()->options(['preview']),
},
'options' => function (Page $page) {
return $page->panel()->options(['preview']);
},
/** /**
* @todo Remove in 3.7.0 * @todo Remove in 3.7.0
* @codeCoverageIgnore * @codeCoverageIgnore
@ -72,15 +44,9 @@ return [
deprecated('The API field page.panelIcon has been deprecated and will be removed in 3.7.0. Use page.panelImage instead'); deprecated('The API field page.panelIcon has been deprecated and will be removed in 3.7.0. Use page.panelImage instead');
return $page->panel()->image(); return $page->panel()->image();
}, },
'panelImage' => function (Page $page) { 'panelImage' => fn (Page $page) => $page->panel()->image(),
return $page->panel()->image(); 'parent' => fn (Page $page) => $page->parent(),
}, 'parents' => fn (Page $page) => $page->parents()->flip(),
'parent' => function (Page $page) {
return $page->parent();
},
'parents' => function (Page $page) {
return $page->parents()->flip();
},
/** /**
* @deprecated 3.6.0 * @deprecated 3.6.0
* @todo Throw deprecated warning in 3.7.0 * @todo Throw deprecated warning in 3.7.0
@ -95,31 +61,19 @@ return [
->filter('isReadable', true) ->filter('isReadable', true)
->last(); ->last();
}, },
'previewUrl' => function (Page $page) { 'previewUrl' => fn (Page $page) => $page->previewUrl(),
return $page->previewUrl(); 'siblings' => function (Page $page) {
},
'siblings' => function (Page $page) {
if ($page->isDraft() === true) { if ($page->isDraft() === true) {
return $page->parentModel()->children()->not($page); return $page->parentModel()->children()->not($page);
} else { } else {
return $page->siblings(); return $page->siblings();
} }
}, },
'slug' => function (Page $page) { 'slug' => fn (Page $page) => $page->slug(),
return $page->slug(); 'status' => fn (Page $page) => $page->status(),
}, 'template' => fn (Page $page) => $page->intendedTemplate()->name(),
'status' => function (Page $page) { 'title' => fn (Page $page) => $page->title()->value(),
return $page->status(); 'url' => fn (Page $page) => $page->url(),
},
'template' => function (Page $page) {
return $page->intendedTemplate()->name();
},
'title' => function (Page $page) {
return $page->title()->value();
},
'url' => function (Page $page) {
return $page->url();
},
], ],
'type' => 'Kirby\Cms\Page', 'type' => 'Kirby\Cms\Page',
'views' => [ 'views' => [

View file

@ -7,27 +7,13 @@ use Kirby\Cms\PageBlueprint;
*/ */
return [ return [
'fields' => [ 'fields' => [
'name' => function (PageBlueprint $blueprint) { 'name' => fn (PageBlueprint $blueprint) => $blueprint->name(),
return $blueprint->name(); 'num' => fn (PageBlueprint $blueprint) => $blueprint->num(),
}, 'options' => fn (PageBlueprint $blueprint) => $blueprint->options(),
'num' => function (PageBlueprint $blueprint) { 'preview' => fn (PageBlueprint $blueprint) => $blueprint->preview(),
return $blueprint->num(); 'status' => fn (PageBlueprint $blueprint) => $blueprint->status(),
}, 'tabs' => fn (PageBlueprint $blueprint) => $blueprint->tabs(),
'options' => function (PageBlueprint $blueprint) { 'title' => fn (PageBlueprint $blueprint) => $blueprint->title(),
return $blueprint->options();
},
'preview' => function (PageBlueprint $blueprint) {
return $blueprint->preview();
},
'status' => function (PageBlueprint $blueprint) {
return $blueprint->status();
},
'tabs' => function (PageBlueprint $blueprint) {
return $blueprint->tabs();
},
'title' => function (PageBlueprint $blueprint) {
return $blueprint->title();
},
], ],
'type' => 'Kirby\Cms\PageBlueprint', 'type' => 'Kirby\Cms\PageBlueprint',
'views' => [ 'views' => [

View file

@ -7,18 +7,10 @@ use Kirby\Cms\Role;
*/ */
return [ return [
'fields' => [ 'fields' => [
'description' => function (Role $role) { 'description' => fn (Role $role) => $role->description(),
return $role->description(); 'name' => fn (Role $role) => $role->name(),
}, 'permissions' => fn (Role $role) => $role->permissions()->toArray(),
'name' => function (Role $role) { 'title' => fn (Role $role) => $role->title(),
return $role->name();
},
'permissions' => function (Role $role) {
return $role->permissions()->toArray();
},
'title' => function (Role $role) {
return $role->title();
},
], ],
'type' => 'Kirby\Cms\Role', 'type' => 'Kirby\Cms\Role',
'views' => [ 'views' => [

View file

@ -7,37 +7,17 @@ use Kirby\Form\Form;
* Site * Site
*/ */
return [ return [
'default' => function () { 'default' => fn () => $this->site(),
return $this->site();
},
'fields' => [ 'fields' => [
'blueprint' => function (Site $site) { 'blueprint' => fn (Site $site) => $site->blueprint(),
return $site->blueprint(); 'children' => fn (Site $site) => $site->children(),
}, 'content' => fn (Site $site) => Form::for($site)->values(),
'children' => function (Site $site) { 'drafts' => fn (Site $site) => $site->drafts(),
return $site->children(); 'files' => fn (Site $site) => $site->files()->sorted(),
}, 'options' => fn (Site $site) => $site->permissions()->toArray(),
'content' => function (Site $site) { 'previewUrl' => fn (Site $site) => $site->previewUrl(),
return Form::for($site)->values(); 'title' => fn (Site $site) => $site->title()->value(),
}, 'url' => fn (Site $site) => $site->url(),
'drafts' => function (Site $site) {
return $site->drafts();
},
'files' => function (Site $site) {
return $site->files()->sorted();
},
'options' => function (Site $site) {
return $site->permissions()->toArray();
},
'previewUrl' => function (Site $site) {
return $site->previewUrl();
},
'title' => function (Site $site) {
return $site->title()->value();
},
'url' => function (Site $site) {
return $site->url();
},
], ],
'type' => 'Kirby\Cms\Site', 'type' => 'Kirby\Cms\Site',
'views' => [ 'views' => [

View file

@ -7,20 +7,11 @@ use Kirby\Cms\SiteBlueprint;
*/ */
return [ return [
'fields' => [ 'fields' => [
'name' => function (SiteBlueprint $blueprint) { 'name' => fn (SiteBlueprint $blueprint) => $blueprint->name(),
return $blueprint->name(); 'options' => fn (SiteBlueprint $blueprint) => $blueprint->options(),
}, 'tabs' => fn (SiteBlueprint $blueprint) => $blueprint->tabs(),
'options' => function (SiteBlueprint $blueprint) { 'title' => fn (SiteBlueprint $blueprint) => $blueprint->title(),
return $blueprint->options();
},
'tabs' => function (SiteBlueprint $blueprint) {
return $blueprint->tabs();
},
'title' => function (SiteBlueprint $blueprint) {
return $blueprint->title();
},
],
'type' => 'Kirby\Cms\SiteBlueprint',
'views' => [
], ],
'type' => 'Kirby\Cms\SiteBlueprint',
'views' => [],
]; ];

View file

@ -8,37 +8,17 @@ use Kirby\Toolkit\Str;
*/ */
return [ return [
'fields' => [ 'fields' => [
'ascii' => function () { 'ascii' => fn () => Str::$ascii,
return Str::$ascii; 'authStatus' => fn () => $this->kirby()->auth()->status()->toArray(),
}, 'defaultLanguage' => fn () => $this->kirby()->panelLanguage(),
'authStatus' => function () { 'isOk' => fn (System $system) => $system->isOk(),
return $this->kirby()->auth()->status()->toArray(); 'isInstallable' => fn (System $system) => $system->isInstallable(),
}, 'isInstalled' => fn (System $system) => $system->isInstalled(),
'defaultLanguage' => function () { 'isLocal' => fn (System $system) => $system->isLocal(),
return $this->kirby()->panelLanguage(); 'multilang' => fn () => $this->kirby()->option('languages', false) !== false,
}, 'languages' => fn () => $this->kirby()->languages(),
'isOk' => function (System $system) { 'license' => fn (System $system) => $system->license(),
return $system->isOk(); 'locales' => function () {
},
'isInstallable' => function (System $system) {
return $system->isInstallable();
},
'isInstalled' => function (System $system) {
return $system->isInstalled();
},
'isLocal' => function (System $system) {
return $system->isLocal();
},
'multilang' => function () {
return $this->kirby()->option('languages', false) !== false;
},
'languages' => function () {
return $this->kirby()->languages();
},
'license' => function (System $system) {
return $system->license();
},
'locales' => function () {
$locales = []; $locales = [];
$translations = $this->kirby()->translations(); $translations = $this->kirby()->translations();
foreach ($translations as $translation) { foreach ($translations as $translation) {
@ -46,21 +26,11 @@ return [
} }
return $locales; return $locales;
}, },
'loginMethods' => function (System $system) { 'loginMethods' => fn (System $system) => array_keys($system->loginMethods()),
return array_keys($system->loginMethods()); 'requirements' => fn (System $system) => $system->toArray(),
}, 'site' => fn (System $system) => $system->title(),
'requirements' => function (System $system) { 'slugs' => fn () => Str::$language,
return $system->toArray(); 'title' => fn () => $this->site()->title()->value(),
},
'site' => function (System $system) {
return $system->title();
},
'slugs' => function () {
return Str::$language;
},
'title' => function () {
return $this->site()->title()->value();
},
'translation' => function () { 'translation' => function () {
if ($user = $this->user()) { if ($user = $this->user()) {
$translationCode = $user->language(); $translationCode = $user->language();
@ -74,12 +44,8 @@ return [
return $this->kirby()->translation('en'); return $this->kirby()->translation('en');
} }
}, },
'kirbytext' => function () { 'kirbytext' => fn () => $this->kirby()->option('panel.kirbytext') ?? true,
return $this->kirby()->option('panel.kirbytext') ?? true; 'user' => fn () => $this->user(),
},
'user' => function () {
return $this->user();
},
'version' => function () { 'version' => function () {
$user = $this->user(); $user = $this->user();

View file

@ -7,21 +7,11 @@ use Kirby\Cms\Translation;
*/ */
return [ return [
'fields' => [ 'fields' => [
'author' => function (Translation $translation) { 'author' => fn (Translation $translation) => $translation->author(),
return $translation->author(); 'data' => fn (Translation $translation) => $translation->dataWithFallback(),
}, 'direction' => fn (Translation $translation) => $translation->direction(),
'data' => function (Translation $translation) { 'id' => fn (Translation $translation) => $translation->id(),
return $translation->dataWithFallback(); 'name' => fn (Translation $translation) => $translation->name(),
},
'direction' => function (Translation $translation) {
return $translation->direction();
},
'id' => function (Translation $translation) {
return $translation->id();
},
'name' => function (Translation $translation) {
return $translation->name();
},
], ],
'type' => 'Kirby\Cms\Translation', 'type' => 'Kirby\Cms\Translation',
'views' => [ 'views' => [

View file

@ -7,58 +7,24 @@ use Kirby\Form\Form;
* User * User
*/ */
return [ return [
'default' => function () { 'default' => fn () => $this->user(),
return $this->user();
},
'fields' => [ 'fields' => [
'avatar' => function (User $user) { 'avatar' => fn (User $user) => $user->avatar() ? $user->avatar()->crop(512) : null,
return $user->avatar() ? $user->avatar()->crop(512) : null; 'blueprint' => fn (User $user) => $user->blueprint(),
}, 'content' => fn (User $user) => Form::for($user)->values(),
'blueprint' => function (User $user) { 'email' => fn (User $user) => $user->email(),
return $user->blueprint(); 'files' => fn (User $user) => $user->files()->sorted(),
}, 'id' => fn (User $user) => $user->id(),
'content' => function (User $user) { 'language' => fn (User $user) => $user->language(),
return Form::for($user)->values(); 'name' => fn (User $user) => $user->name()->value(),
}, 'next' => fn (User $user) => $user->next(),
'email' => function (User $user) { 'options' => fn (User $user) => $user->panel()->options(),
return $user->email(); 'panelImage' => fn (User $user) => $user->panel()->image(),
}, 'permissions' => fn (User $user) => $user->role()->permissions()->toArray(),
'files' => function (User $user) { 'prev' => fn (User $user) => $user->prev(),
return $user->files()->sorted(); 'role' => fn (User $user) => $user->role(),
}, 'roles' => fn (User $user) => $user->roles(),
'id' => function (User $user) { 'username' => fn (User $user) => $user->username()
return $user->id();
},
'language' => function (User $user) {
return $user->language();
},
'name' => function (User $user) {
return $user->name()->value();
},
'next' => function (User $user) {
return $user->next();
},
'options' => function (User $user) {
return $user->panel()->options();
},
'panelImage' => function (User $user) {
return $user->panel()->image();
},
'permissions' => function (User $user) {
return $user->role()->permissions()->toArray();
},
'prev' => function (User $user) {
return $user->prev();
},
'role' => function (User $user) {
return $user->role();
},
'roles' => function (User $user) {
return $user->roles();
},
'username' => function (User $user) {
return $user->username();
}
], ],
'type' => 'Kirby\Cms\User', 'type' => 'Kirby\Cms\User',
'views' => [ 'views' => [

View file

@ -7,18 +7,10 @@ use Kirby\Cms\UserBlueprint;
*/ */
return [ return [
'fields' => [ 'fields' => [
'name' => function (UserBlueprint $blueprint) { 'name' => fn (UserBlueprint $blueprint) => $blueprint->name(),
return $blueprint->name(); 'options' => fn (UserBlueprint $blueprint) => $blueprint->options(),
}, 'tabs' => fn (UserBlueprint $blueprint) => $blueprint->tabs(),
'options' => function (UserBlueprint $blueprint) { 'title' => fn (UserBlueprint $blueprint) => $blueprint->title(),
return $blueprint->options();
},
'tabs' => function (UserBlueprint $blueprint) {
return $blueprint->tabs();
},
'title' => function (UserBlueprint $blueprint) {
return $blueprint->title();
},
], ],
'type' => 'Kirby\Cms\UserBlueprint', 'type' => 'Kirby\Cms\UserBlueprint',
'views' => [ 'views' => [

View file

@ -6,12 +6,10 @@ use Kirby\Panel\Panel;
return [ return [
'account' => [ 'account' => [
'pattern' => 'account', 'pattern' => 'account',
'action' => function () { 'action' => fn () => [
return [ 'component' => 'k-account-view',
'component' => 'k-account-view', 'props' => kirby()->user()->panel()->props(),
'props' => kirby()->user()->panel()->props(), ],
];
},
], ],
'account.file' => [ 'account.file' => [
'pattern' => 'account/files/(:any)', 'pattern' => 'account/files/(:any)',
@ -31,10 +29,6 @@ return [
], ],
'account.password' => [ 'account.password' => [
'pattern' => 'reset-password', 'pattern' => 'reset-password',
'action' => function () { 'action' => fn () => ['component' => 'k-reset-password-view']
return [
'component' => 'k-reset-password-view',
];
}
] ]
]; ];

View file

@ -32,9 +32,7 @@ return function ($kirby) {
'installation.fallback' => [ 'installation.fallback' => [
'pattern' => '(:all)', 'pattern' => '(:all)',
'auth' => false, 'auth' => false,
'action' => function () { 'action' => fn () => Panel::go('installation')
Panel::go('installation');
}
] ]
] ]
]; ];

View file

@ -11,14 +11,12 @@ return [
return [ return [
'component' => 'k-languages-view', 'component' => 'k-languages-view',
'props' => [ 'props' => [
'languages' => $kirby->languages()->values(function ($language) { 'languages' => $kirby->languages()->values(fn ($language) => [
return [ 'default' => $language->isDefault(),
'default' => $language->isDefault(), 'id' => $language->code(),
'id' => $language->code(), 'info' => Escape::html($language->code()),
'info' => Escape::html($language->code()), 'text' => Escape::html($language->name()),
'text' => Escape::html($language->name()), ])
];
})
] ]
]; ];
} }

View file

@ -200,16 +200,20 @@ return [
}, },
'submit' => function (string $id) { 'submit' => function (string $id) {
$page = Find::page($id); $page = Find::page($id);
$title = trim(get('title')); $title = trim(get('title', ''));
$slug = trim(get('slug')); $slug = trim(get('slug', ''));
// basic input validation before we move on // basic input validation before we move on
if (Str::length($title) === 0) { if (Str::length($title) === 0) {
throw new InvalidArgumentException(['key' => 'page.changeTitle.empty']); throw new InvalidArgumentException([
'key' => 'page.changeTitle.empty'
]);
} }
if (Str::length($slug) === 0) { if (Str::length($slug) === 0) {
throw new InvalidArgumentException(['key' => 'page.slug.invalid']); throw new InvalidArgumentException([
'key' => 'page.slug.invalid'
]);
} }
// nothing changed // nothing changed
@ -318,7 +322,7 @@ return [
]; ];
}, },
'submit' => function () { 'submit' => function () {
$title = trim(get('title')); $title = trim(get('title', ''));
if (Str::length($title) === 0) { if (Str::length($title) === 0) {
throw new InvalidArgumentException([ throw new InvalidArgumentException([

View file

@ -7,9 +7,7 @@ $files = require __DIR__ . '/../files/dropdowns.php';
return [ return [
'changes' => [ 'changes' => [
'pattern' => 'changes', 'pattern' => 'changes',
'options' => function () { 'options' => fn () => Dropdown::changes()
return Dropdown::changes();
}
], ],
'page' => [ 'page' => [
'pattern' => 'pages/(:any)', 'pattern' => 'pages/(:any)',

View file

@ -5,9 +5,7 @@ use Kirby\Cms\Find;
return [ return [
'page' => [ 'page' => [
'pattern' => 'pages/(:any)', 'pattern' => 'pages/(:any)',
'action' => function (string $path) { 'action' => fn (string $path) => Find::page($path)->panel()->view()
return Find::page($path)->panel()->view();
}
], ],
'page.file' => [ 'page.file' => [
'pattern' => 'pages/(:any)/files/(:any)', 'pattern' => 'pages/(:any)/files/(:any)',
@ -17,9 +15,7 @@ return [
], ],
'site' => [ 'site' => [
'pattern' => 'site', 'pattern' => 'site',
'action' => function () { 'action' => fn () => site()->panel()->view()
return site()->panel()->view();
}
], ],
'site.file' => [ 'site.file' => [
'pattern' => 'site/files/(:any)', 'pattern' => 'site/files/(:any)',

View file

@ -1,5 +1,6 @@
<?php <?php
use Kirby\Http\Server;
return [ return [
'system' => [ 'system' => [
@ -37,7 +38,7 @@ return [
'plugins' => $plugins, 'plugins' => $plugins,
'php' => phpversion(), 'php' => phpversion(),
'server' => $system->serverSoftware(), 'server' => $system->serverSoftware(),
'ssl' => Server::https(), 'https' => Server::https(),
'version' => $kirby->version(), 'version' => $kirby->version(),
] ]
]; ];

View file

@ -25,8 +25,8 @@ return [
'link' => false, 'link' => false,
'required' => true 'required' => true
]), ]),
'password' => Field::password(), 'password' => Field::password(),
'language' => Field::translation([ 'translation' => Field::translation([
'required' => true 'required' => true
]), ]),
'role' => Field::role([ 'role' => Field::role([
@ -35,11 +35,11 @@ return [
], ],
'submitButton' => t('create'), 'submitButton' => t('create'),
'value' => [ 'value' => [
'name' => '', 'name' => '',
'email' => '', 'email' => '',
'password' => '', 'password' => '',
'language' => $kirby->panelLanguage(), 'translation' => $kirby->panelLanguage(),
'role' => $kirby->user()->role()->name() 'role' => $kirby->user()->role()->name()
] ]
] ]
]; ];
@ -49,7 +49,7 @@ return [
'name' => get('name'), 'name' => get('name'),
'email' => get('email'), 'email' => get('email'),
'password' => get('password'), 'password' => get('password'),
'language' => get('language'), 'language' => get('translation'),
'role' => get('role') 'role' => get('role')
]); ]);
return [ return [

View file

@ -9,12 +9,10 @@ return [
'action' => function () { 'action' => function () {
$kirby = kirby(); $kirby = kirby();
$role = get('role'); $role = get('role');
$roles = $kirby->roles()->toArray(function ($role) { $roles = $kirby->roles()->toArray(fn ($role) => [
return [ 'id' => $role->id(),
'id' => $role->id(), 'title' => $role->title(),
'title' => $role->title(), ]);
];
});
return [ return [
'component' => 'k-users-view', 'component' => 'k-users-view',
@ -38,15 +36,13 @@ return [
]); ]);
return [ return [
'data' => $users->values(function ($user) { 'data' => $users->values(fn ($user) => [
return [ 'id' => $user->id(),
'id' => $user->id(), 'image' => $user->panel()->image(),
'image' => $user->panel()->image(), 'info' => Escape::html($user->role()->title()),
'info' => Escape::html($user->role()->title()), 'link' => $user->panel()->url(true),
'link' => $user->panel()->url(true), 'text' => Escape::html($user->username())
'text' => Escape::html($user->username()) ]),
];
}),
'pagination' => $users->pagination()->toArray() 'pagination' => $users->pagination()->toArray()
]; ];
}, },

View file

@ -28,9 +28,7 @@ return [
* @param string $url Relative or absolute URL * @param string $url Relative or absolute URL
* @param string|array $options An array of attributes for the link tag or a media attribute string * @param string|array $options An array of attributes for the link tag or a media attribute string
*/ */
'css' => function (App $kirby, string $url, $options = null): string { 'css' => fn (App $kirby, string $url, $options = null): string => $url,
return $url;
},
/** /**
@ -84,9 +82,10 @@ return [
* @param \Kirby\Cms\App $kirby Kirby instance * @param \Kirby\Cms\App $kirby Kirby instance
* @param \Kirby\Cms\File|\Kirby\Filesystem\Asset $file The file object * @param \Kirby\Cms\File|\Kirby\Filesystem\Asset $file The file object
* @param array $options All thumb options (width, height, crop, blur, grayscale) * @param array $options All thumb options (width, height, crop, blur, grayscale)
* @return \Kirby\Cms\File|\Kirby\Cms\FileVersion * @return \Kirby\Cms\File|\Kirby\Cms\FileVersion|\Kirby\Filesystem\Asset
*/ */
'file::version' => function (App $kirby, $file, array $options = []) { 'file::version' => function (App $kirby, $file, array $options = []) {
// if file is not resizable, return
if ($file->isResizable() === false) { if ($file->isResizable() === false) {
return $file; return $file;
} }
@ -96,14 +95,20 @@ return [
$template = $mediaRoot . '/{{ name }}{{ attributes }}.{{ extension }}'; $template = $mediaRoot . '/{{ name }}{{ attributes }}.{{ extension }}';
$thumbRoot = (new Filename($file->root(), $template, $options))->toString(); $thumbRoot = (new Filename($file->root(), $template, $options))->toString();
$thumbName = basename($thumbRoot); $thumbName = basename($thumbRoot);
$job = $mediaRoot . '/.jobs/' . $thumbName . '.json';
// check if the thumb already exists
if (file_exists($thumbRoot) === false) { if (file_exists($thumbRoot) === false) {
// if not, create job file
$job = $mediaRoot . '/.jobs/' . $thumbName . '.json';
try { try {
Data::write($job, array_merge($options, [ Data::write($job, array_merge($options, [
'filename' => $file->filename() 'filename' => $file->filename()
])); ]));
} catch (Throwable $e) { } catch (Throwable $e) {
// if thumb doesn't exist yet and job file cannot
// be created, return
return $file; return $file;
} }
} }
@ -123,9 +128,7 @@ return [
* @param string $url Relative or absolute URL * @param string $url Relative or absolute URL
* @param string|array $options An array of attributes for the link tag or a media attribute string * @param string|array $options An array of attributes for the link tag or a media attribute string
*/ */
'js' => function (App $kirby, string $url, $options = null): string { 'js' => fn (App $kirby, string $url, $options = null): string => $url,
return $url;
},
/** /**
* Add your own Markdown parser * Add your own Markdown parser
@ -133,13 +136,18 @@ return [
* @param \Kirby\Cms\App $kirby Kirby instance * @param \Kirby\Cms\App $kirby Kirby instance
* @param string $text Text to parse * @param string $text Text to parse
* @param array $options Markdown options * @param array $options Markdown options
* @param bool $inline Whether to wrap the text in `<p>` tags * @param bool $inline Whether to wrap the text in `<p>` tags (deprecated: set via $options['inline'] instead)
* @return string * @return string
* @todo add deprecation warning for $inline parameter in 3.7.0
* @todo remove $inline parameter in in 3.8.0
*/ */
'markdown' => function (App $kirby, string $text = null, array $options = [], bool $inline = false): string { 'markdown' => function (App $kirby, string $text = null, array $options = [], bool $inline = false): string {
static $markdown; static $markdown;
static $config; static $config;
// support for the deprecated fourth argument
$options['inline'] ??= $inline;
// if the config options have changed or the component is called for the first time, // if the config options have changed or the component is called for the first time,
// (re-)initialize the parser object // (re-)initialize the parser object
if ($config !== $options) { if ($config !== $options) {
@ -147,7 +155,7 @@ return [
$config = $options; $config = $options;
} }
return $markdown->parse($text, $inline); return $markdown->parse($text, $options['inline']);
}, },
/** /**
@ -340,7 +348,7 @@ return [
* Modify all URLs * Modify all URLs
* *
* @param \Kirby\Cms\App $kirby Kirby instance * @param \Kirby\Cms\App $kirby Kirby instance
* @param string $path URL path * @param string|null $path URL path
* @param array|string|null $options Array of options for the Uri class * @param array|string|null $options Array of options for the Uri class
* @return string * @return string
*/ */
@ -373,7 +381,10 @@ return [
} }
// keep relative urls // keep relative urls
if (substr($path, 0, 2) === './' || substr($path, 0, 3) === '../') { if (
$path !== null &&
(substr($path, 0, 2) === './' || substr($path, 0, 3) === '../')
) {
return $path; return $path;
} }

View file

@ -2,6 +2,7 @@
use Kirby\Exception\Exception; use Kirby\Exception\Exception;
use Kirby\Form\Field; use Kirby\Form\Field;
use Kirby\Toolkit\Date;
use Kirby\Toolkit\I18n; use Kirby\Toolkit\I18n;
use Kirby\Toolkit\Str; use Kirby\Toolkit\Str;
@ -20,12 +21,11 @@ return [
return $calendar; return $calendar;
}, },
/** /**
* Default date when a new page/file/user gets created * Default date when a new page/file/user gets created
*/ */
'default' => function (string $default = null) { 'default' => function (string $default = null): string {
return $default; return $this->toDatetime($default) ?? '';
}, },
/** /**
@ -46,42 +46,21 @@ return [
/** /**
* Latest date, which can be selected/saved (Y-m-d) * Latest date, which can be selected/saved (Y-m-d)
*/ */
'max' => function (string $max = null) { 'max' => function (string $max = null): ?string {
return $this->toDatetime($max); return Date::optional($max);
}, },
/** /**
* Earliest date, which can be selected/saved (Y-m-d) * Earliest date, which can be selected/saved (Y-m-d)
*/ */
'min' => function (string $min = null) { 'min' => function (string $min = null): ?string {
return $this->toDatetime($min); return Date::optional($min);
}, },
/** /**
* Round to the nearest: sub-options for `unit` (day) and `size` (1) * Round to the nearest: sub-options for `unit` (day) and `size` (1)
*/ */
'step' => function ($step = null) { 'step' => function ($step = null) {
$default = [ return $step;
'size' => 1,
'unit' => 'day'
];
if ($step === null) {
return $default;
}
if (is_array($step) === true) {
$step = array_merge($default, $step);
$step['unit'] = strtolower($step['unit']);
return $step;
}
if (is_int($step) === true) {
return array_merge($default, ['size' => $step]);
}
if (is_string($step) === true) {
return array_merge($default, ['unit' => strtolower($step)]);
}
}, },
/** /**
@ -95,12 +74,9 @@ return [
*/ */
'value' => function ($value = null) { 'value' => function ($value = null) {
return $value; return $value;
}, }
], ],
'computed' => [ 'computed' => [
'default' => function () {
return $this->toDatetime($this->default);
},
'display' => function () { 'display' => function () {
if ($this->display) { if ($this->display) {
return Str::upper($this->display); return Str::upper($this->display);
@ -120,57 +96,56 @@ return [
return $field->toArray(); return $field->toArray();
}, },
'step' => function () { 'step' => function () {
if ($this->time === false) { if ($this->time === false || empty($this->time['step']) === true) {
return $this->step; return Date::stepConfig($this->step, [
'size' => 1,
'unit' => 'day'
]);
} }
return $this->time['step']; return Date::stepConfig($this->time['step'], [
'size' => 5,
'unit' => 'minute'
]);
}, },
'value' => function () { 'value' => function (): string {
return $this->toDatetime($this->value); return $this->toDatetime($this->value) ?? '';
}, },
], ],
'validations' => [ 'validations' => [
'date', 'date',
'minMax' => function ($value) { 'minMax' => function ($value) {
$min = $this->min ? strtotime($this->min) : null; if (!$value = Date::optional($value)) {
$max = $this->max ? strtotime($this->max) : null; return true;
$value = strtotime($this->value()); }
$min = Date::optional($this->min);
$max = Date::optional($this->max);
$format = $this->time === false ? 'd.m.Y' : 'd.m.Y H:i'; $format = $this->time === false ? 'd.m.Y' : 'd.m.Y H:i';
$errors = [];
if ($value && $min && $value < $min) { if ($min && $max && $value->isBetween($min, $max) === false) {
$errors['min'] = $min; throw new Exception([
} 'key' => 'validation.date.between',
'data' => [
if ($value && $max && $value > $max) { 'min' => $min->format($format),
$errors['max'] = $max; 'max' => $min->format($format)
} ]
]);
if (empty($errors) === false) { } elseif ($min && $value->isMin($min) === false) {
if ($min && $max) { throw new Exception([
throw new Exception([ 'key' => 'validation.date.after',
'key' => 'validation.date.between', 'data' => [
'data' => [ 'date' => $min->format($format),
'min' => date($format, $min), ]
'max' => date($format, $max) ]);
] } elseif ($max && $value->isMax($max) === false) {
]); throw new Exception([
} elseif ($min) { 'key' => 'validation.date.before',
throw new Exception([ 'data' => [
'key' => 'validation.date.after', 'date' => $max->format($format),
'data' => [ ]
'date' => date($format, $min), ]);
]
]);
} else {
throw new Exception([
'key' => 'validation.date.before',
'data' => [
'date' => date($format, $max),
]
]);
}
} }
return true; return true;

View file

@ -11,7 +11,7 @@ return [
], ],
'computed' => [ 'computed' => [
'value' => function () { 'value' => function () {
return trim($this->value); return trim($this->value ?? '');
} }
] ]
]; ];

View file

@ -1,5 +1,7 @@
<?php <?php
use Kirby\Toolkit\Date;
return [ return [
'props' => [ 'props' => [
/** /**
@ -11,16 +13,21 @@ return [
], ],
'methods' => [ 'methods' => [
'toDatetime' => function ($value, string $format = 'Y-m-d H:i:s') { 'toDatetime' => function ($value, string $format = 'Y-m-d H:i:s') {
if ($timestamp = timestamp($value, $this->step)) { if ($date = Date::optional($value)) {
return date($format, $timestamp); if ($this->step) {
$step = Date::stepConfig($this->step);
$date->round($step['unit'], $step['size']);
}
return $date->format($format);
} }
return null; return null;
} }
], ],
'save' => function ($value) { 'save' => function ($value) {
if ($value !== null && $timestamp = strtotime($value)) { if ($date = Date::optional($value)) {
return date($this->format, $timestamp); return $date->format($this->format);
} }
return ''; return '';

View file

@ -27,7 +27,7 @@ return [
* Sets the default text when a new page/file/user is created * Sets the default text when a new page/file/user is created
*/ */
'default' => function (string $default = null) { 'default' => function (string $default = null) {
return trim($default); return trim($default ?? '');
}, },
/** /**
@ -81,7 +81,7 @@ return [
}, },
'value' => function (string $value = null) { 'value' => function (string $value = null) {
return trim($value); return trim($value ?? '');
} }
], ],
'api' => function () { 'api' => function () {

View file

@ -1,6 +1,7 @@
<?php <?php
use Kirby\Exception\Exception; use Kirby\Exception\Exception;
use Kirby\Toolkit\Date;
use Kirby\Toolkit\I18n; use Kirby\Toolkit\I18n;
return [ return [
@ -11,11 +12,10 @@ return [
*/ */
'placeholder' => null, 'placeholder' => null,
/** /**
* Sets the default time when a new page/file/user is created * Sets the default time when a new page/file/user is created
*/ */
'default' => function ($default = null) { 'default' => function ($default = null): ?string {
return $default; return $default;
}, },
@ -36,14 +36,14 @@ return [
/** /**
* Latest time, which can be selected/saved (H:i or H:i:s) * Latest time, which can be selected/saved (H:i or H:i:s)
*/ */
'max' => function (string $max = null) { 'max' => function (string $max = null): ?string {
return $max ? $this->toDatetime(date('Y-m-d ') . $max) : null; return Date::optional($max);
}, },
/** /**
* Earliest time, which can be selected/saved (H:i or H:i:s) * Earliest time, which can be selected/saved (H:i or H:i:s)
*/ */
'min' => function (string $min = null) { 'min' => function (string $min = null): ?string {
return $min ? $this->toDatetime(date('Y-m-d ') . $min) : null; return Date::optional($min);
}, },
/** /**
@ -57,92 +57,67 @@ return [
* Round to the nearest: sub-options for `unit` (minute) and `size` (5) * Round to the nearest: sub-options for `unit` (minute) and `size` (5)
*/ */
'step' => function ($step = null) { 'step' => function ($step = null) {
$default = [ return Date::stepConfig($step, [
'size' => 5, 'size' => 5,
'unit' => 'minute' 'unit' => 'minute',
]; ]);
if ($step === null) {
return $default;
}
if (is_array($step) === true) {
$step = array_merge($default, $step);
$step['unit'] = strtolower($step['unit']);
return $step;
}
if (is_int($step) === true) {
return array_merge($default, ['size' => $step]);
}
if (is_string($step) === true) {
return array_merge($default, ['unit' => strtolower($step)]);
}
}, },
'value' => function ($value = null) { 'value' => function ($value = null): ?string {
return $value; return $value;
} }
], ],
'computed' => [ 'computed' => [
'default' => function () {
return $this->toDatetime($this->default, 'H:i:s');
},
'display' => function () { 'display' => function () {
if ($this->display) { if ($this->display) {
return $this->display; return $this->display;
} }
return $this->notation === 24 ? 'HH:mm' : 'h:mm a'; return $this->notation === 24 ? 'HH:mm' : 'hh:mm a';
},
'default' => function (): string {
return $this->toDatetime($this->default, 'H:i:s') ?? '';
}, },
'format' => function () { 'format' => function () {
return $this->props['format'] ?? 'H:i:s'; return $this->props['format'] ?? 'H:i:s';
}, },
'value' => function () { 'value' => function (): ?string {
return $this->toDatetime($this->value, 'H:i:s'); return $this->toDatetime($this->value, 'H:i:s') ?? '';
} }
], ],
'validations' => [ 'validations' => [
'time', 'time',
'minMax' => function ($value) { 'minMax' => function ($value) {
$min = $this->min ? strtotime($this->min) : null; if (!$value = Date::optional($value)) {
$max = $this->max ? strtotime($this->max) : null; return true;
$value = strtotime($this->value()); }
$min = Date::optional($this->min);
$max = Date::optional($this->max);
$format = 'H:i:s'; $format = 'H:i:s';
$errors = [];
if ($value && $min && $value < $min) { if ($min && $max && $value->isBetween($min, $max) === false) {
$errors['min'] = $min; throw new Exception([
} 'key' => 'validation.time.between',
'data' => [
if ($value && $max && $value > $max) { 'min' => $min->format($format),
$errors['max'] = $max; 'max' => $min->format($format)
} ]
]);
if (empty($errors) === false) { } elseif ($min && $value->isMin($min) === false) {
if ($min && $max) { throw new Exception([
throw new Exception([ 'key' => 'validation.time.after',
'key' => 'validation.time.between', 'data' => [
'data' => [ 'time' => $min->format($format),
'min' => date($format, $min), ]
'max' => date($format, $max) ]);
] } elseif ($max && $value->isMax($max) === false) {
]); throw new Exception([
} elseif ($min) { 'key' => 'validation.time.before',
throw new Exception([ 'data' => [
'key' => 'validation.time.after', 'time' => $max->format($format),
'data' => [ ]
'time' => date($format, $min), ]);
]
]);
} else {
throw new Exception([
'key' => 'validation.time.before',
'data' => [
'time' => date($format, $max),
]
]);
}
} }
return true; return true;

View file

@ -29,7 +29,8 @@ return [
], ],
'computed' => [ 'computed' => [
'value' => function () { 'value' => function () {
return Sane::sanitize(trim($this->value), 'html'); $value = trim($this->value ?? '');
return Sane::sanitize($value, 'html');
} }
], ],
]; ];

View file

@ -8,6 +8,7 @@ use Kirby\Exception\InvalidArgumentException;
use Kirby\Filesystem\Asset; use Kirby\Filesystem\Asset;
use Kirby\Filesystem\F; use Kirby\Filesystem\F;
use Kirby\Http\Router; use Kirby\Http\Router;
use Kirby\Toolkit\Date;
use Kirby\Toolkit\Escape; use Kirby\Toolkit\Escape;
use Kirby\Toolkit\I18n; use Kirby\Toolkit\I18n;
use Kirby\Toolkit\Str; use Kirby\Toolkit\Str;
@ -98,10 +99,7 @@ function csrf(?string $check = null)
function css($url, $options = null): ?string function css($url, $options = null): ?string
{ {
if (is_array($url) === true) { if (is_array($url) === true) {
$links = array_map(function ($url) use ($options) { $links = A::map($url, fn ($url) => css($url, $options));
return css($url, $options);
}, $url);
return implode(PHP_EOL, $links); return implode(PHP_EOL, $links);
} }
@ -117,11 +115,18 @@ function css($url, $options = null): ?string
} }
} }
// only valid value for 'rel' is 'alternate stylesheet', if 'title' is given as well
if (
($options['rel'] ?? '') !== 'alternate stylesheet' ||
($options['title'] ?? '') === ''
) {
$options['rel'] = 'stylesheet';
}
$url = ($kirby->component('css'))($kirby, $url, $options); $url = ($kirby->component('css'))($kirby, $url, $options);
$url = Url::to($url); $url = Url::to($url);
$attr = array_merge((array)$options, [ $attr = array_merge((array)$options, [
'href' => $url, 'href' => $url
'rel' => 'stylesheet'
]); ]);
return '<link ' . attr($attr) . '>'; return '<link ' . attr($attr) . '>';
@ -373,10 +378,7 @@ function invalid(array $data = [], array $rules = [], array $messages = []): arr
function js($url, $options = null): ?string function js($url, $options = null): ?string
{ {
if (is_array($url) === true) { if (is_array($url) === true) {
$scripts = array_map(function ($url) use ($options) { $scripts = A::map($url, fn ($url) => js($url, $options));
return js($url, $options);
}, $url);
return implode(PHP_EOL, $scripts); return implode(PHP_EOL, $scripts);
} }
@ -533,11 +535,12 @@ function load(array $classmap, ?string $base = null)
* `$kirby->markdown($text)` * `$kirby->markdown($text)`
* *
* @param string|null $text * @param string|null $text
* @param array $options
* @return string * @return string
*/ */
function markdown(?string $text = null): string function markdown(?string $text = null, array $options = []): string
{ {
return App::instance()->markdown($text); return App::instance()->markdown($text, $options);
} }
/** /**
@ -584,7 +587,7 @@ function page(...$id)
*/ */
function pages(...$id) function pages(...$id)
{ {
if (count($id) === 1) { if (count($id) === 1 && is_array($id[0]) === false) {
// @codeCoverageIgnoreStart // @codeCoverageIgnoreStart
deprecated('Passing a single id to the `pages()` helper will return a Kirby\Cms\Pages collection with a single element instead of the single Kirby\Cms\Page object itself - starting in 3.7.0.'); deprecated('Passing a single id to the `pages()` helper will return a Kirby\Cms\Pages collection with a single element instead of the single Kirby\Cms\Page object itself - starting in 3.7.0.');
// @codeCoverageIgnoreEnd // @codeCoverageIgnoreEnd
@ -762,11 +765,12 @@ function svg($file)
* *
* @param string|array $key * @param string|array $key
* @param string|null $fallback * @param string|null $fallback
* @param string|null $locale
* @return array|string|null * @return array|string|null
*/ */
function t($key, string $fallback = null) function t($key, string $fallback = null, string $locale = null)
{ {
return I18n::translate($key, $fallback); return I18n::translate($key, $fallback, $locale);
} }
/** /**
@ -774,11 +778,13 @@ function t($key, string $fallback = null)
* *
* @param string $key * @param string $key
* @param int $count * @param int $count
* @param string|null $locale
* @param bool $formatNumber If set to `false`, the count is not formatted
* @return mixed * @return mixed
*/ */
function tc(string $key, int $count) function tc(string $key, int $count, string $locale = null, bool $formatNumber = true)
{ {
return I18n::translateCount($key, $count); return I18n::translateCount($key, $count, $locale, $formatNumber);
} }
/** /**
@ -791,60 +797,19 @@ function tc(string $key, int $count)
*/ */
function timestamp(?string $date = null, $step = null): ?int function timestamp(?string $date = null, $step = null): ?int
{ {
if (V::date($date) === false) { if ($date = Date::optional($date)) {
return null; if ($step !== null) {
} $step = Date::stepConfig($step, [
'unit' => 'minute',
$date = strtotime($date); 'size' => 1
]);
if ($step === null) { $date->round($step['unit'], $step['size']);
return $date;
}
// fallback for pre-3.5.0 usage
if (is_int($step) === true) {
$step = [
'unit' => 'minute',
'size' => $step
];
}
if (is_array($step) === false) {
return $date;
}
$parts = [
'second' => date('s', $date),
'minute' => date('i', $date),
'hour' => date('H', $date),
'day' => date('d', $date),
'month' => date('m', $date),
'year' => date('Y', $date),
];
$current = $parts[$step['unit']];
$nearest = round($current / $step['size']) * $step['size'];
$parts[$step['unit']] = $nearest;
foreach ($parts as $part => $value) {
if ($part === $step['unit']) {
break;
} }
$parts[$part] = 0; return $date->timestamp();
} }
$timestamp = strtotime( return null;
$parts['year'] . '-' .
str_pad($parts['month'], 2, 0, STR_PAD_LEFT) . '-' .
str_pad($parts['day'], 2, 0, STR_PAD_LEFT) . ' ' .
str_pad($parts['hour'], 2, 0, STR_PAD_LEFT) . ':' .
str_pad($parts['minute'], 2, 0, STR_PAD_LEFT) . ':' .
str_pad($parts['second'], 2, 0, STR_PAD_LEFT)
);
// on error, convert `false` into `null`
return $timestamp ?? null;
} }
/** /**

View file

@ -121,13 +121,14 @@ return function (App $app) {
return null; return null;
} }
$time = empty($field->value) === true ? strtotime($fallback) : $field->toTimestamp(); if (empty($field->value) === false) {
$time = $field->toTimestamp();
if ($format === null) { } else {
return $time; $time = strtotime($fallback);
} }
return ($app->option('date.handler', 'date'))($format, $time); $handler = $app->option('date.handler', 'date');
return Str::date($time, $format, $handler);
}, },
/** /**
@ -384,7 +385,7 @@ return function (App $app) {
// Obsolete elements, script tags, image maps and form elements have // Obsolete elements, script tags, image maps and form elements have
// been excluded for safety reasons and as they are most likely not // been excluded for safety reasons and as they are most likely not
// needed in most cases. // needed in most cases.
$field->value = strip_tags($field->value, '<b><i><small><abbr><cite><code><dfn><em><kbd><strong><samp><var><a><bdo><br><img><q><span><sub><sup>'); $field->value = strip_tags($field->value, Html::$inlineList);
return $field; return $field;
}, },
@ -392,13 +393,14 @@ return function (App $app) {
* Converts the field content from Markdown/Kirbytext to valid HTML * Converts the field content from Markdown/Kirbytext to valid HTML
* *
* @param \Kirby\Cms\Field $field * @param \Kirby\Cms\Field $field
* @param array $options
* @return \Kirby\Cms\Field * @return \Kirby\Cms\Field
*/ */
'kirbytext' => function (Field $field) use ($app) { 'kirbytext' => function (Field $field, array $options = []) use ($app) {
$field->value = $app->kirbytext($field->value, [ $field->value = $app->kirbytext($field->value, A::merge($options, [
'parent' => $field->parent(), 'parent' => $field->parent(),
'field' => $field 'field' => $field
]); ]));
return $field; return $field;
}, },
@ -409,13 +411,17 @@ return function (App $app) {
* @since 3.1.0 * @since 3.1.0
* *
* @param \Kirby\Cms\Field $field * @param \Kirby\Cms\Field $field
* @param array $options
* @return \Kirby\Cms\Field * @return \Kirby\Cms\Field
*/ */
'kirbytextinline' => function (Field $field) use ($app) { 'kirbytextinline' => function (Field $field, array $options = []) use ($app) {
$field->value = $app->kirbytext($field->value, [ $field->value = $app->kirbytext($field->value, A::merge($options, [
'parent' => $field->parent(), 'parent' => $field->parent(),
'field' => $field 'field' => $field,
], true); 'markdown' => [
'inline' => true
]
]));
return $field; return $field;
}, },
@ -450,10 +456,11 @@ return function (App $app) {
* Converts markdown to valid HTML * Converts markdown to valid HTML
* *
* @param \Kirby\Cms\Field $field * @param \Kirby\Cms\Field $field
* @param array $options
* @return \Kirby\Cms\Field * @return \Kirby\Cms\Field
*/ */
'markdown' => function (Field $field) use ($app) { 'markdown' => function (Field $field, array $options = []) use ($app) {
$field->value = $app->markdown($field->value); $field->value = $app->markdown($field->value, $options);
return $field; return $field;
}, },

View file

@ -298,7 +298,7 @@ return [
if ($isLocalVideo === true) { if ($isLocalVideo === true) {
// handles local video file // handles local video file
if ($tag->file = $tag->file($tag->value)) { if ($tag->file = $tag->file($tag->value)) {
$source = Html::tag('source', null, [ $source = Html::tag('source', '', [
'src' => $tag->file->url(), 'src' => $tag->file->url(),
'type' => $tag->file->mime() 'type' => $tag->file->mime()
]); ]);

View file

@ -17,7 +17,7 @@ class ParsedownExtra extends Parsedown
{ {
# ~ # ~
const version = '0.8.0-beta-1'; public const version = '0.8.0-beta-1';
# ~ # ~
@ -568,11 +568,11 @@ class ParsedownExtra extends Parsedown
# http://stackoverflow.com/q/1148928/200145 # http://stackoverflow.com/q/1148928/200145
libxml_use_internal_errors(true); libxml_use_internal_errors(true);
$DOMDocument = new DOMDocument; $DOMDocument = new DOMDocument();
# http://stackoverflow.com/q/11309194/200145 # http://stackoverflow.com/q/11309194/200145
$elementMarkup = mb_convert_encoding($elementMarkup, 'HTML-ENTITIES', 'UTF-8'); $elementMarkup = mb_convert_encoding($elementMarkup, 'HTML-ENTITIES', 'UTF-8');
# Ensure that saveHTML() is not remove new line characters. New lines will be split by this character. # Ensure that saveHTML() is not remove new line characters. New lines will be split by this character.
$DOMDocument->formatOutput = true; $DOMDocument->formatOutput = true;

View file

@ -17,7 +17,7 @@ class Parsedown
{ {
# ~ # ~
const version = '1.8.0-beta-7'; public const version = '1.8.0-beta-7';
# ~ # ~
@ -207,11 +207,9 @@ class Parsedown
$CurrentBlock = $Block; $CurrentBlock = $Block;
continue; continue;
} else { } elseif ($this->isBlockCompletable($CurrentBlock['type'])) {
if ($this->isBlockCompletable($CurrentBlock['type'])) { $methodName = 'block' . $CurrentBlock['type'] . 'Complete';
$methodName = 'block' . $CurrentBlock['type'] . 'Complete'; $CurrentBlock = $this->$methodName($CurrentBlock);
$CurrentBlock = $this->$methodName($CurrentBlock);
}
} }
} }
@ -1597,12 +1595,10 @@ class Parsedown
$markup .= $this->elements($Element['elements']); $markup .= $this->elements($Element['elements']);
} elseif (isset($Element['element'])) { } elseif (isset($Element['element'])) {
$markup .= $this->element($Element['element']); $markup .= $this->element($Element['element']);
} elseif (!$permitRawHtml) {
$markup .= self::escape($text, true);
} else { } else {
if (!$permitRawHtml) { $markup .= $text;
$markup .= self::escape($text, true);
} else {
$markup .= $text;
}
} }
$markup .= $hasName ? '</' . $Element['name'] . '>' : ''; $markup .= $hasName ? '</' . $Element['name'] . '>' : '';

File diff suppressed because it is too large Load diff

163
kirby/i18n/rules/iu.json Normal file
View file

@ -0,0 +1,163 @@
{
"ᐁ": "ai",
"ᐃ": "i",
"ᐄ": "ii",
"ᐅ": "u",
"ᐆ": "uu",
"ᐊ": "a",
"ᐋ": "aa",
"": "pai",
"ᐱ": "pi",
"ᐲ": "pii",
"": "pu",
"ᐴ": "puu",
"": "pa",
"ᐹ": "paa",
"": "tai",
"ᑎ": "ti",
"ᑏ": "tii",
"ᑐ": "tu",
"ᑑ": "tuu",
"ᑕ": "ta",
"ᑖ": "taa",
"ᕴ": "hai",
"ᕵ": "hi",
"ᕶ": "hii",
"ᕷ": "hu",
"ᕸ": "huu",
"ᕹ": "ha",
"ᕺ": "haa",
"ᒉ": "gai",
"ᒋ": "gi",
"ᒌ": "gii",
"": "gu",
"ᒎ": "guu",
"ᒐ": "ga",
"ᒑ": "gaa",
"ᒣ": "mai",
"ᒥ": "mi",
"ᒦ": "mii",
"ᒧ": "mu",
"ᒨ": "muu",
"": "ma",
"ᒫ": "maa",
"ᓀ": "nai",
"ᓂ": "ni",
"ᓃ": "nii",
"ᓄ": "nu",
"ᓅ": "nuu",
"ᓇ": "na",
"ᓈ": "naa",
"ᓭ": "sai",
"ᓯ": "si",
"ᓰ": "sii",
"ᓱ": "su",
"ᓲ": "suu",
"ᓴ": "sa",
"ᓵ": "saa",
"ᓓ": "lai",
"ᓕ": "li",
"ᓖ": "lii",
"ᓗ": "lu",
"ᓘ": "luu",
"ᓚ": "la",
"ᓛ": "laa",
"ᔦ": "jai",
"ᔨ": "ji",
"ᔩ": "jii",
"ᔪ": "ju",
"ᔫ": "juu",
"ᔭ": "ja",
"ᔮ": "jaa",
"ᕓ": "vai",
"ᕕ": "vi",
"ᕖ": "vii",
"ᕗ": "vu",
"ᕘ": "vuu",
"ᕙ": "va",
"ᕚ": "vaa",
"ᕃ": "rai",
"ᕆ": "ri",
"ᕇ": "rii",
"ᕈ": "ru",
"ᕉ": "ruu",
"ᕋ": "ra",
"ᕌ": "raa",
"ᖅᑫ": "qqai",
"ᖅᑭ": "qqi",
"ᖅᑮ": "qqii",
"ᖅᑯ": "qqu",
"ᖅᑰ": "qquu",
"ᖅᑲ": "qqa",
"ᖅᑳ": "qqaa",
"ᖅᒃ": "qq",
"ᙯ": "qai",
"ᕿ": "qi",
"ᖀ": "qii",
"ᖁ": "qu",
"ᖂ": "quu",
"ᖃ": "qa",
"ᖄ": "qaa",
"ᑫ": "kai",
"": "ki",
"ᑮ": "kii",
"": "ku",
"ᑰ": "kuu",
"": "ka",
"ᑳ": "kaa",
"ᙰ": "ngai",
"ᖏ": "ngi",
"ᖐ": "ngii",
"ᖑ": "ngu",
"ᖒ": "nguu",
"ᖓ": "nga",
"ᖔ": "ngaa",
"ᙱ": "nngi",
"ᙲ": "nngii",
"ᙳ": "nngu",
"ᙴ": "nnguu",
"ᙵ": "nnga",
"ᙶ": "nngaa",
"ᖠ": "lhi",
"ᖡ": "lhii",
"ᖢ": "lhu",
"ᖣ": "lhuu",
"ᖤ": "lha",
"ᖥ": "lhaa",
"ᑉ": "p",
"ᑦ": "t",
"ᒃ": "k",
"ᒡ": "g",
"ᒻ": "m",
"ᓐ": "n",
"ᔅ": "s",
"ᓪ": "l",
"ᔾ": "j",
"ᕝ": "v",
"ᕐ": "r",
"ᖅ": "q",
"ᖕ": "ng",
"ᖖ": "nng",
"ᖦ": "lh",
"": "b",
"": "h"
}

View file

@ -157,6 +157,8 @@
"error.template.default.notFound": "Стандартният шаблон не съществува", "error.template.default.notFound": "Стандартният шаблон не съществува",
"error.unexpected": "An unexpected error occurred! Enable debug mode for more info: https://getkirby.com/docs/reference/system/options/debug",
"error.user.changeEmail.permission": "Нямате права да промените имейла на този потребител \"{name}\"", "error.user.changeEmail.permission": "Нямате права да промените имейла на този потребител \"{name}\"",
"error.user.changeLanguage.permission": "Нямате права да промените езика за този потребител \"{name}\"", "error.user.changeLanguage.permission": "Нямате права да промените езика за този потребител \"{name}\"",
"error.user.changeName.permission": "Нямате права да промените името на този потребител \"{name}\"", "error.user.changeName.permission": "Нямате права да промените името на този потребител \"{name}\"",

View file

@ -157,6 +157,8 @@
"error.template.default.notFound": "La plantilla predeterminada no existeix", "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",
"error.user.changeEmail.permission": "No tens permís per canviar el correu electrònic per a l'usuari \"{name}\"", "error.user.changeEmail.permission": "No tens permís per canviar el correu electrònic per a l'usuari \"{name}\"",
"error.user.changeLanguage.permission": "No tens permís per canviar l'idioma de l'usuari \"{name}\"", "error.user.changeLanguage.permission": "No tens permís per canviar l'idioma de l'usuari \"{name}\"",
"error.user.changeName.permission": "No tens permís per canviar el nom de l'usuari \"{name}\"", "error.user.changeName.permission": "No tens permís per canviar el nom de l'usuari \"{name}\"",

View file

@ -9,7 +9,7 @@
"back": "Zpět", "back": "Zpět",
"cancel": "Zru\u0161it", "cancel": "Zru\u0161it",
"change": "Zm\u011bnit", "change": "Zm\u011bnit",
"close": "Zav\u0159it", "close": "Zavřít",
"confirm": "Ok", "confirm": "Ok",
"collapse": "Sbalit", "collapse": "Sbalit",
"collapse.all": "Sbalit vše", "collapse.all": "Sbalit vše",
@ -157,6 +157,8 @@
"error.template.default.notFound": "Výchozí šablona neexistuje", "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",
"error.user.changeEmail.permission": "Nemáte dovoleno měnit email uživatele \"{name}\"", "error.user.changeEmail.permission": "Nemáte dovoleno měnit email uživatele \"{name}\"",
"error.user.changeLanguage.permission": "Nemáte dovoleno změnit jazyk uživatele \"{name}\"", "error.user.changeLanguage.permission": "Nemáte dovoleno změnit jazyk uživatele \"{name}\"",
"error.user.changeName.permission": "Nemáte dovoleno změnit jméno uživatele \"{name}\"", "error.user.changeName.permission": "Nemáte dovoleno změnit jméno uživatele \"{name}\"",
@ -247,7 +249,7 @@
"field.blocks.image.caption": "Titulek", "field.blocks.image.caption": "Titulek",
"field.blocks.image.crop": "Oříznout", "field.blocks.image.crop": "Oříznout",
"field.blocks.image.link": "Odkaz", "field.blocks.image.link": "Odkaz",
"field.blocks.image.location": "Pozice", "field.blocks.image.location": "Umístění",
"field.blocks.image.name": "Obrázek", "field.blocks.image.name": "Obrázek",
"field.blocks.image.placeholder": "Vyberte obrázek", "field.blocks.image.placeholder": "Vyberte obrázek",
"field.blocks.image.ratio": "Poměr stran", "field.blocks.image.ratio": "Poměr stran",

View file

@ -157,6 +157,8 @@
"error.template.default.notFound": "Standardskabelonen eksisterer ikke", "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",
"error.user.changeEmail.permission": "Du har ikke tilladelse til at ændre emailen for brugeren \"{name}\"", "error.user.changeEmail.permission": "Du har ikke tilladelse til at ændre emailen for brugeren \"{name}\"",
"error.user.changeLanguage.permission": "Du har ikke tilladelse til at ændre sproget for brugeren \"{name}\"", "error.user.changeLanguage.permission": "Du har ikke tilladelse til at ændre sproget for brugeren \"{name}\"",
"error.user.changeName.permission": "Du har ikke tilladelse til at ændre navn på brugeren \"{name}\"", "error.user.changeName.permission": "Du har ikke tilladelse til at ændre navn på brugeren \"{name}\"",

View file

@ -88,7 +88,7 @@
"error.file.mime.missing": "Der Medientyp für \"{filename}\" konnte nicht erkannt werden", "error.file.mime.missing": "Der Medientyp für \"{filename}\" konnte nicht erkannt werden",
"error.file.minheight": "Die Bildhöhe muss mindestens {height} Pixel betragen", "error.file.minheight": "Die Bildhöhe muss mindestens {height} Pixel betragen",
"error.file.minsize": "Die Datei ist zu klein", "error.file.minsize": "Die Datei ist zu klein",
"error.file.minwidth": "Die Bildbreite muss mindestens {height} Pixel betragen", "error.file.minwidth": "Die Bildbreite muss mindestens {width} Pixel betragen",
"error.file.name.missing": "Bitte gib einen Dateinamen an", "error.file.name.missing": "Bitte gib einen Dateinamen an",
"error.file.notFound": "Die Datei \"{filename}\" konnte nicht gefunden werden", "error.file.notFound": "Die Datei \"{filename}\" konnte nicht gefunden werden",
"error.file.orientation": "Das Bildformat ist ungültig. Erwartetes Format: \"{orientation}\"", "error.file.orientation": "Das Bildformat ist ungültig. Erwartetes Format: \"{orientation}\"",
@ -157,6 +157,8 @@
"error.template.default.notFound": "Die \"Default\"-Vorlage existiert nicht", "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",
"error.user.changeEmail.permission": "Du kannst die E-Mailadresse für den Account \"{name}\" nicht ändern", "error.user.changeEmail.permission": "Du kannst die E-Mailadresse für den Account \"{name}\" nicht ändern",
"error.user.changeLanguage.permission": "Du kannst die Sprache für den Account \"{name}\" nicht ändern", "error.user.changeLanguage.permission": "Du kannst die Sprache für den Account \"{name}\" nicht ändern",
"error.user.changeName.permission": "Du kannst den Namen für den Account \"{name}\" nicht ändern", "error.user.changeName.permission": "Du kannst den Namen für den Account \"{name}\" nicht ändern",

View file

@ -157,6 +157,8 @@
"error.template.default.notFound": "Το προεπιλεγμένο πρότυπο δεν υπάρχει", "error.template.default.notFound": "Το προεπιλεγμένο πρότυπο δεν υπάρχει",
"error.unexpected": "An unexpected error occurred! Enable debug mode for more info: https://getkirby.com/docs/reference/system/options/debug",
"error.user.changeEmail.permission": "Δεν επιτρέπεται να αλλάξετε τη διεύθινση ηλεκτρονικού ταχυδρομείου για τον χρήστη \"{name}\"", "error.user.changeEmail.permission": "Δεν επιτρέπεται να αλλάξετε τη διεύθινση ηλεκτρονικού ταχυδρομείου για τον χρήστη \"{name}\"",
"error.user.changeLanguage.permission": "Δεν επιτρέπεται να αλλάξετε τη γλώσσα για τον χρήστη \"{name}\"", "error.user.changeLanguage.permission": "Δεν επιτρέπεται να αλλάξετε τη γλώσσα για τον χρήστη \"{name}\"",
"error.user.changeName.permission": "Δεν επιτρέπεται να αλλάξετε το όνομα του χρήστη \"{name}", "error.user.changeName.permission": "Δεν επιτρέπεται να αλλάξετε το όνομα του χρήστη \"{name}",

View file

@ -157,6 +157,8 @@
"error.template.default.notFound": "The default template does not exist", "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",
"error.user.changeEmail.permission": "You are not allowed to change the email for the user \"{name}\"", "error.user.changeEmail.permission": "You are not allowed to change the email for the user \"{name}\"",
"error.user.changeLanguage.permission": "You are not allowed to change the language for the user \"{name}\"", "error.user.changeLanguage.permission": "You are not allowed to change the language for the user \"{name}\"",
"error.user.changeName.permission": "You are not allowed to change the name for the user \"{name}\"", "error.user.changeName.permission": "You are not allowed to change the name for the user \"{name}\"",

View file

@ -157,6 +157,8 @@
"error.template.default.notFound": "La defaŭlta ŝablono ne ekzistas", "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",
"error.user.changeEmail.permission": "Vi ne rajtas ŝanĝi la retpoŝtadreson de la uzanto \"{name}\"", "error.user.changeEmail.permission": "Vi ne rajtas ŝanĝi la retpoŝtadreson de la uzanto \"{name}\"",
"error.user.changeLanguage.permission": "Vi ne rajtas ŝanĝi la lingvon de la uzanto \"{name}\"", "error.user.changeLanguage.permission": "Vi ne rajtas ŝanĝi la lingvon de la uzanto \"{name}\"",
"error.user.changeName.permission": "Vi ne rajtas ŝanĝi la nomon de la uzanto \"{name}\"", "error.user.changeName.permission": "Vi ne rajtas ŝanĝi la nomon de la uzanto \"{name}\"",
@ -503,7 +505,7 @@
"toolbar.button.ul": "Bula listo", "toolbar.button.ul": "Bula listo",
"translation.author": "Teamo Kirby", "translation.author": "Teamo Kirby",
"translation.direction": "demaldekstre", "translation.direction": "ltr",
"translation.name": "Esperanto", "translation.name": "Esperanto",
"translation.locale": "eo", "translation.locale": "eo",

View file

@ -1,20 +1,20 @@
{ {
"account.changeName": "Change your name", "account.changeName": "Cambiar nombre",
"account.delete": "Delete your account", "account.delete": "Eliminar cuenta",
"account.delete.confirm": "Do you really want to delete your account? You will be logged out immediately. Your account cannot be recovered.", "account.delete.confirm": "¿Realmente quieres eliminar tu cuenta? Tu sesión se cerrará inmediatamente. Tu cuenta no podrá ser recuperada. ",
"add": "Agregar", "add": "Agregar",
"author": "Author", "author": "Autor",
"avatar": "Foto de perfil", "avatar": "Foto de perfil",
"back": "Regresar", "back": "Regresar",
"cancel": "Cancelar", "cancel": "Cancelar",
"change": "Cambiar", "change": "Cambiar",
"close": "Cerrar", "close": "Cerrar",
"confirm": "De acuerdo", "confirm": "De acuerdo",
"collapse": "Collapse", "collapse": "Colapsar",
"collapse.all": "Collapse All", "collapse.all": "Colapsar todos",
"copy": "Copiar", "copy": "Copiar",
"copy.all": "Copy all", "copy.all": "Copiar todo",
"create": "Crear", "create": "Crear",
"date": "Fecha", "date": "Fecha",
@ -39,7 +39,7 @@
"dialog.users.empty": "No has seleccionado ningún usuario", "dialog.users.empty": "No has seleccionado ningún usuario",
"dimensions": "Dimensiones", "dimensions": "Dimensiones",
"disabled": "Desabilitado", "disabled": "Deshabilitado",
"discard": "Descartar", "discard": "Descartar",
"download": "Descargar", "download": "Descargar",
"duplicate": "Duplicar", "duplicate": "Duplicar",
@ -49,7 +49,7 @@
"email": "Correo Electrónico", "email": "Correo Electrónico",
"email.placeholder": "correo@ejemplo.com", "email.placeholder": "correo@ejemplo.com",
"environment": "Environment", "environment": "Ambiente",
"error.access.code": "Código inválido", "error.access.code": "Código inválido",
"error.access.login": "Ingreso inválido", "error.access.login": "Ingreso inválido",
@ -63,11 +63,11 @@
"error.blueprint.notFound": "El blueprint \"{name}\" no se pudo cargar.", "error.blueprint.notFound": "El blueprint \"{name}\" no se pudo cargar.",
"error.blocks.max.plural": "You must not add more than {max} blocks", "error.blocks.max.plural": "No debes añadir más de {max} bloques",
"error.blocks.max.singular": "You must not add more than one block", "error.blocks.max.singular": "No debes añadir más de un bloque",
"error.blocks.min.plural": "You must add at least {min} blocks", "error.blocks.min.plural": "Debes añadir al menos {min} bloques ",
"error.blocks.min.singular": "You must add at least one block", "error.blocks.min.singular": "Debes añadir al menos un bloque",
"error.blocks.validation": "There's an error in block {index}", "error.blocks.validation": "Hay un error en el bloque {index}",
"error.email.preset.notFound": "El preajuste de email \"{name}\" no se pudo encontrar.", "error.email.preset.notFound": "El preajuste de email \"{name}\" no se pudo encontrar.",
@ -102,7 +102,7 @@
"error.language.code": "Por favor introduce un código válido para el idioma", "error.language.code": "Por favor introduce un código válido para el idioma",
"error.language.duplicate": "El idioma ya existe", "error.language.duplicate": "El idioma ya existe",
"error.language.name": "Por favor introduce un nombre válido para el idioma", "error.language.name": "Por favor introduce un nombre válido para el idioma",
"error.language.notFound": "The language could not be found", "error.language.notFound": "No se pudo encontrar el idioma",
"error.layout.validation.block": "There's an error in block {blockIndex} in layout {layoutIndex}", "error.layout.validation.block": "There's an error in block {blockIndex} in layout {layoutIndex}",
"error.layout.validation.settings": "There's an error in layout {index} settings", "error.layout.validation.settings": "There's an error in layout {index} settings",
@ -111,7 +111,7 @@
"error.license.email": "Por favor ingresa un correo electrónico valido", "error.license.email": "Por favor ingresa un correo electrónico valido",
"error.license.verification": "La licencia no pude ser verificada", "error.license.verification": "La licencia no pude ser verificada",
"error.offline": "The Panel is currently offline", "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.permission": "No está permitido cambiar el apéndice de URL para \"{slug}\".",
"error.page.changeStatus.incomplete": "La página tiene errores y no puede ser publicada.", "error.page.changeStatus.incomplete": "La página tiene errores y no puede ser publicada.",
@ -157,6 +157,8 @@
"error.template.default.notFound": "La plantilla predeterminada no existe", "error.template.default.notFound": "La plantilla predeterminada no existe",
"error.unexpected": "An unexpected error occurred! Enable debug mode for more info: https://getkirby.com/docs/reference/system/options/debug",
"error.user.changeEmail.permission": "No tienes permiso para cambiar el email del usuario \"{name}\"", "error.user.changeEmail.permission": "No tienes permiso para cambiar el email del usuario \"{name}\"",
"error.user.changeLanguage.permission": "No tienes permiso para cambiar el idioma del usuario \"{name}\"", "error.user.changeLanguage.permission": "No tienes permiso para cambiar el idioma del usuario \"{name}\"",
"error.user.changeName.permission": "No tienes permiso para cambiar el nombre del usuario \"{name}\"", "error.user.changeName.permission": "No tienes permiso para cambiar el nombre del usuario \"{name}\"",
@ -176,7 +178,7 @@
"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.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\u00f1a", "error.user.password.notSame": "Por favor confirma la contrase\u00f1a",
"error.user.password.undefined": "El usuario no tiene contraseña", "error.user.password.undefined": "El usuario no tiene contraseña",
"error.user.password.wrong": "Wrong password", "error.user.password.wrong": "Contraseña incorrecta",
"error.user.role.invalid": "Por favor ingresa un rol valido", "error.user.role.invalid": "Por favor ingresa un rol valido",
"error.user.undefined": "El usuario no pudo ser encontrado", "error.user.undefined": "El usuario no pudo ser encontrado",
"error.user.update.permission": "No tienes permiso para actualizar al usuario \"{name}\"", "error.user.update.permission": "No tienes permiso para actualizar al usuario \"{name}\"",
@ -217,54 +219,54 @@
"error.validation.size": "El tamaño del valor debe ser \"{size}\"", "error.validation.size": "El tamaño del valor debe ser \"{size}\"",
"error.validation.startswith": "El valor debe comenzar con \"{start}\"", "error.validation.startswith": "El valor debe comenzar con \"{start}\"",
"error.validation.time": "Por favor ingresa una hora válida", "error.validation.time": "Por favor ingresa una hora válida",
"error.validation.time.after": "Please enter a time after {time}", "error.validation.time.after": "Por favor ingresa una fecha después de {time}",
"error.validation.time.before": "Please enter a time before {time}", "error.validation.time.before": "Por favor ingresa una fecha antes de {time}",
"error.validation.time.between": "Please enter a time between {min} and {max}", "error.validation.time.between": "Por favor ingresa un fecha entre {min} y {max}",
"error.validation.url": "Por favor ingresa un URL válido", "error.validation.url": "Por favor ingresa un URL válido",
"expand": "Expandir", "expand": "Expandir",
"expand.all": "Expandir todo", "expand.all": "Expandir todo",
"field.required": "Este campo es requerido", "field.required": "Este campo es requerido",
"field.blocks.changeType": "Change type", "field.blocks.changeType": "Cambiar tipo",
"field.blocks.code.name": "Código", "field.blocks.code.name": "Código",
"field.blocks.code.language": "Idioma", "field.blocks.code.language": "Idioma",
"field.blocks.code.placeholder": "Your code …", "field.blocks.code.placeholder": "Tu código...",
"field.blocks.delete.confirm": "Do you really want to delete this block?", "field.blocks.delete.confirm": "¿Seguro que quieres eliminar este bloque?",
"field.blocks.delete.confirm.all": "Do you really want to delete all blocks?", "field.blocks.delete.confirm.all": "¿Seguro que quieres eliminar todos los bloques?",
"field.blocks.delete.confirm.selected": "Do you really want to delete the selected blocks?", "field.blocks.delete.confirm.selected": "¿Seguro que quieres eliminar los bloques seleccionados?",
"field.blocks.empty": "No blocks yet", "field.blocks.empty": "No hay bloques aún",
"field.blocks.fieldsets.label": "Please select a block type …", "field.blocks.fieldsets.label": "Por favor selecciona un tipo de bloque...",
"field.blocks.fieldsets.paste": "Press <kbd>{{ shortcut }}</kbd> to paste/import blocks from your clipboard", "field.blocks.fieldsets.paste": "Presiona <kbd>{{ shortcut }}</kbd>para pegar/importar bloques en tu portapapeles ",
"field.blocks.gallery.name": "Gallery", "field.blocks.gallery.name": "Galería",
"field.blocks.gallery.images.empty": "No images yet", "field.blocks.gallery.images.empty": "No hay imágenes aún",
"field.blocks.gallery.images.label": "Images", "field.blocks.gallery.images.label": "Imágenes",
"field.blocks.heading.level": "Level", "field.blocks.heading.level": "Nivel",
"field.blocks.heading.name": "Heading", "field.blocks.heading.name": "Encabezado",
"field.blocks.heading.text": "Text", "field.blocks.heading.text": "Texto",
"field.blocks.heading.placeholder": "Heading …", "field.blocks.heading.placeholder": "Encabezado...",
"field.blocks.image.alt": "Alternative text", "field.blocks.image.alt": "Texto alternativo",
"field.blocks.image.caption": "Caption", "field.blocks.image.caption": "Leyenda",
"field.blocks.image.crop": "Crop", "field.blocks.image.crop": "Cortar",
"field.blocks.image.link": "Enlace", "field.blocks.image.link": "Enlace",
"field.blocks.image.location": "Location", "field.blocks.image.location": "Ubicación",
"field.blocks.image.name": "Imágen", "field.blocks.image.name": "Imágen",
"field.blocks.image.placeholder": "Select an image", "field.blocks.image.placeholder": "Selecciona una imagen",
"field.blocks.image.ratio": "Ratio", "field.blocks.image.ratio": "Proporción",
"field.blocks.image.url": "Image URL", "field.blocks.image.url": "URL de imágen",
"field.blocks.line.name": "Line", "field.blocks.line.name": "Linea",
"field.blocks.list.name": "List", "field.blocks.list.name": "Lista",
"field.blocks.markdown.name": "Markdown", "field.blocks.markdown.name": "Markdown",
"field.blocks.markdown.label": "Text", "field.blocks.markdown.label": "Texto",
"field.blocks.markdown.placeholder": "Markdown", "field.blocks.markdown.placeholder": "Markdown...",
"field.blocks.quote.name": "Quote", "field.blocks.quote.name": "Cita",
"field.blocks.quote.text.label": "Text", "field.blocks.quote.text.label": "Texto",
"field.blocks.quote.text.placeholder": "Quote …", "field.blocks.quote.text.placeholder": "Cita...",
"field.blocks.quote.citation.label": "Citation", "field.blocks.quote.citation.label": "Citation",
"field.blocks.quote.citation.placeholder": "by …", "field.blocks.quote.citation.placeholder": "Por ...",
"field.blocks.text.name": "Text", "field.blocks.text.name": "Texto",
"field.blocks.text.placeholder": "Text …", "field.blocks.text.placeholder": "Text …",
"field.blocks.video.caption": "Caption", "field.blocks.video.caption": "Leyenda",
"field.blocks.video.name": "Video", "field.blocks.video.name": "Video",
"field.blocks.video.placeholder": "Enter a video URL", "field.blocks.video.placeholder": "Enter a video URL",
"field.blocks.video.url.label": "Video-URL", "field.blocks.video.url.label": "Video-URL",

View file

@ -1,20 +1,20 @@
{ {
"account.changeName": "Change your name", "account.changeName": "Cambia tu nombre",
"account.delete": "Delete your account", "account.delete": "Borrar tu cuenta",
"account.delete.confirm": "Do you really want to delete your account? You will be logged out immediately. Your account cannot be recovered.", "account.delete.confirm": "¿Realmente quieres eliminar tu cuenta? Tu sesión se cerrará inmediatamente. La cuenta no podrá ser recuperada.",
"add": "Añadir", "add": "Añadir",
"author": "Author", "author": "Autor",
"avatar": "Foto de perfil", "avatar": "Foto de perfil",
"back": "Atrás", "back": "Atrás",
"cancel": "Cancelar", "cancel": "Cancelar",
"change": "Cambiar", "change": "Cambiar",
"close": "Cerrar", "close": "Cerrar",
"confirm": "Confirmar", "confirm": "Confirmar",
"collapse": "Collapse", "collapse": "Colapsar",
"collapse.all": "Collapse All", "collapse.all": "Colapsar todos",
"copy": "Copiar", "copy": "Copiar",
"copy.all": "Copy all", "copy.all": "Copiar todo",
"create": "Crear", "create": "Crear",
"date": "Fecha", "date": "Fecha",
@ -32,7 +32,7 @@
"debugging": "Debugging", "debugging": "Debugging",
"delete": "Borrar", "delete": "Borrar",
"delete.all": "Delete all", "delete.all": "Eliminar todos",
"dialog.files.empty": "No se ha seleccionado ningún archivo", "dialog.files.empty": "No se ha seleccionado ningún archivo",
"dialog.pages.empty": "No se ha seleccionado ninguna página", "dialog.pages.empty": "No se ha seleccionado ninguna página",
@ -49,12 +49,12 @@
"email": "Correo electrónico", "email": "Correo electrónico",
"email.placeholder": "correo@ejemplo.com", "email.placeholder": "correo@ejemplo.com",
"environment": "Environment", "environment": "Ambiente",
"error.access.code": "Invalid code", "error.access.code": "Código inválido",
"error.access.login": "Ingreso inválido", "error.access.login": "Ingreso inválido",
"error.access.panel": "No estás autorizado para acceder al panel", "error.access.panel": "No estás autorizado para acceder al panel",
"error.access.view": "You are not allowed to access this part of the panel", "error.access.view": "No tienes permiso para acceder a esta parte del panel",
"error.avatar.create.fail": "No se pudo subir la foto de perfil.", "error.avatar.create.fail": "No se pudo subir la foto de perfil.",
"error.avatar.delete.fail": "No se pudo borrar la foto de perfil", "error.avatar.delete.fail": "No se pudo borrar la foto de perfil",
@ -63,55 +63,55 @@
"error.blueprint.notFound": "El blueprint \"{name}\" no pudo ser cargado", "error.blueprint.notFound": "El blueprint \"{name}\" no pudo ser cargado",
"error.blocks.max.plural": "You must not add more than {max} blocks", "error.blocks.max.plural": "No debes añadir más de {max} bloques",
"error.blocks.max.singular": "You must not add more than one block", "error.blocks.max.singular": "No debes añadir más de un bloque",
"error.blocks.min.plural": "You must add at least {min} blocks", "error.blocks.min.plural": "Debes añadir al menos {min} bloques ",
"error.blocks.min.singular": "You must add at least one block", "error.blocks.min.singular": "Debes añadir al menos un bloque",
"error.blocks.validation": "There's an error in block {index}", "error.blocks.validation": "Hay un error en el bloque {index}",
"error.email.preset.notFound": "El preset del correo \"{name}\" no pudo ser encontrado", "error.email.preset.notFound": "El preset del correo \"{name}\" no pudo ser encontrado",
"error.field.converter.invalid": "Convertidor \"{converter}\" inválido", "error.field.converter.invalid": "Convertidor \"{converter}\" inválido",
"error.file.changeName.empty": "The name must not be empty", "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.changeName.permission": "No tienes permitido cambiar el nombre de \"{filename}\"",
"error.file.duplicate": "Ya existe un archivo con el nombre \"{filename}\"", "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.forbidden": "La extensión \"{extension}\" no está permitida",
"error.file.extension.invalid": "Invalid extension: {extension}", "error.file.extension.invalid": "Extensión inválida: {extension}",
"error.file.extension.missing": "Falta la extensión para \"{filename}\"", "error.file.extension.missing": "Falta la extensión para \"{filename}\"",
"error.file.maxheight": "The height of the image must not exceed {height} pixels", "error.file.maxheight": "La altura de la imagen no debe exceder {height} pixeles",
"error.file.maxsize": "The file is too large", "error.file.maxsize": "El archivo es muy grande",
"error.file.maxwidth": "The width of the image must not exceed {width} pixels", "error.file.maxwidth": "El ancho de la imagen no debe exceder {width} pixeles",
"error.file.mime.differs": "El archivo cargado debe ser del mismo tipo mime \"{mime}\"", "error.file.mime.differs": "El archivo cargado debe ser del mismo tipo mime \"{mime}\"",
"error.file.mime.forbidden": "Los medios tipo \"{mime}\" no están permitidos", "error.file.mime.forbidden": "Los medios tipo \"{mime}\" no están permitidos",
"error.file.mime.invalid": "Invalid mime type: {mime}", "error.file.mime.invalid": "Tipo invalido de mime: {mime}",
"error.file.mime.missing": "El tipo de medio para \"{filename}\" no pudo ser detectado", "error.file.mime.missing": "El tipo de medio para \"{filename}\" no pudo ser detectado",
"error.file.minheight": "The height of the image must be at least {height} pixels", "error.file.minheight": "La altura de la imagen debe ser de al menos {height} pixeles",
"error.file.minsize": "The file is too small", "error.file.minsize": "El archivo es muy pequeño",
"error.file.minwidth": "The width of the image must be at least {width} pixels", "error.file.minwidth": "El ancho de la imagen debe ser de al menos {width} pixeles",
"error.file.name.missing": "El nombre de archivo no debe estar vacío", "error.file.name.missing": "El nombre de archivo no debe estar vacío",
"error.file.notFound": "El archivo \"{filename}\" no pudo ser encontrado", "error.file.notFound": "El archivo \"{filename}\" no pudo ser encontrado",
"error.file.orientation": "The orientation of the image must be \"{orientation}\"", "error.file.orientation": "The orientation of the image must be \"{orientation}\"",
"error.file.type.forbidden": "No está permitido subir archivos {type}", "error.file.type.forbidden": "No está permitido subir archivos {type}",
"error.file.type.invalid": "Invalid file type: {type}", "error.file.type.invalid": "Tipo de archivo inválido: {type}",
"error.file.undefined": "El archivo no pudo ser encontrado", "error.file.undefined": "El archivo no pudo ser encontrado",
"error.form.incomplete": "Por favor, corrija todos los errores del formulario…", "error.form.incomplete": "Por favor, corrija todos los errores del formulario…",
"error.form.notSaved": "El formulario no pudo ser guardado", "error.form.notSaved": "El formulario no pudo ser guardado",
"error.language.code": "Please enter a valid code for the language", "error.language.code": "Por favor introduce un código válido para el idioma",
"error.language.duplicate": "The language already exists", "error.language.duplicate": "El idioma ya existe",
"error.language.name": "Please enter a valid name for the language", "error.language.name": "Por favor introduce un nombre válido para el idioma",
"error.language.notFound": "The language could not be found", "error.language.notFound": "No se pudo encontrar el idioma",
"error.layout.validation.block": "There's an error in block {blockIndex} in layout {layoutIndex}", "error.layout.validation.block": "There's an error in block {blockIndex} in layout {layoutIndex}",
"error.layout.validation.settings": "There's an error in layout {index} settings", "error.layout.validation.settings": "There's an error in layout {index} settings",
"error.license.format": "Please enter a valid license key", "error.license.format": "Por favor introduce una llave de licencia válida",
"error.license.email": "Por favor, introduce un correo electrónico válido", "error.license.email": "Por favor, introduce un correo electrónico válido",
"error.license.verification": "The license could not be verified", "error.license.verification": "La licencia no pude ser verificada",
"error.offline": "The Panel is currently offline", "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.permission": "No está permitido cambiar el apéndice de URL para \"{slug}\"",
"error.page.changeStatus.incomplete": "La página tiene errores y no puede ser publicada.", "error.page.changeStatus.incomplete": "La página tiene errores y no puede ser publicada.",
@ -157,13 +157,15 @@
"error.template.default.notFound": "La plantilla por defecto no existe", "error.template.default.notFound": "La plantilla por defecto no existe",
"error.unexpected": "An unexpected error occurred! Enable debug mode for more info: https://getkirby.com/docs/reference/system/options/debug",
"error.user.changeEmail.permission": "No tienes permitido cambiar el correo electrónico para el usuario \"{name}\"", "error.user.changeEmail.permission": "No tienes permitido cambiar el correo electrónico para el usuario \"{name}\"",
"error.user.changeLanguage.permission": "No tienes permitido cambiar el idioma para el usuario \"{name}\"", "error.user.changeLanguage.permission": "No tienes permitido cambiar el idioma para el usuario \"{name}\"",
"error.user.changeName.permission": "No tienes permitido cambiar el nombre del usuario \"{name}\"", "error.user.changeName.permission": "No tienes permitido cambiar el nombre del usuario \"{name}\"",
"error.user.changePassword.permission": "No tienes permitido cambiar la contraseña del usuario \"{name}\"", "error.user.changePassword.permission": "No tienes permitido cambiar la contraseña del usuario \"{name}\"",
"error.user.changeRole.lastAdmin": "El rol para el último administrador no puede ser cambiado", "error.user.changeRole.lastAdmin": "El rol para el último administrador no puede ser cambiado",
"error.user.changeRole.permission": "No tienes permitido cambiar el rol del usuario \"{name}\"", "error.user.changeRole.permission": "No tienes permitido cambiar el rol del usuario \"{name}\"",
"error.user.changeRole.toAdmin": "You are not allowed to promote someone to the admin role", "error.user.changeRole.toAdmin": "No tienes permitido promover a alguien al rol de admin",
"error.user.create.permission": "No tienes permiso para crear este usuario", "error.user.create.permission": "No tienes permiso para crear este usuario",
"error.user.delete": "El usuario \"{name}\" no puede ser eliminado", "error.user.delete": "El usuario \"{name}\" no puede ser eliminado",
"error.user.delete.lastAdmin": "El último administrador no puede ser eliminado", "error.user.delete.lastAdmin": "El último administrador no puede ser eliminado",
@ -176,7 +178,7 @@
"error.user.password.invalid": "Por favor introduce una contraseña válida. Las contraseñas deben tener al menos 8 caracteres de largo.", "error.user.password.invalid": "Por favor introduce una contraseña válida. Las contraseñas deben tener al menos 8 caracteres de largo.",
"error.user.password.notSame": "Las contraseñas no coinciden", "error.user.password.notSame": "Las contraseñas no coinciden",
"error.user.password.undefined": "El usuario no tiene contraseña", "error.user.password.undefined": "El usuario no tiene contraseña",
"error.user.password.wrong": "Wrong password", "error.user.password.wrong": "Contraseña incorrecta",
"error.user.role.invalid": "Por favor ingrese un rol válido", "error.user.role.invalid": "Por favor ingrese un rol válido",
"error.user.undefined": "El usuario no puede ser encontrado", "error.user.undefined": "El usuario no puede ser encontrado",
"error.user.update.permission": "No tienes permitido actualizar al usuario \"{name}\"", "error.user.update.permission": "No tienes permitido actualizar al usuario \"{name}\"",
@ -188,9 +190,9 @@
"error.validation.boolean": "Por favor confirme o rechace", "error.validation.boolean": "Por favor confirme o rechace",
"error.validation.contains": "Por favor ingrese un valor que contenga \"{needle}\"", "error.validation.contains": "Por favor ingrese un valor que contenga \"{needle}\"",
"error.validation.date": "Por favor introduzca una fecha valida", "error.validation.date": "Por favor introduzca una fecha valida",
"error.validation.date.after": "Please enter a date after {date}", "error.validation.date.after": "Por favor introduce una fecha posterior a {date}",
"error.validation.date.before": "Please enter a date before {date}", "error.validation.date.before": "Por favor introduce una fecha anterior a {date}",
"error.validation.date.between": "Please enter a date between {min} and {max}", "error.validation.date.between": "Por favor introduce un número entre {min} y {max}",
"error.validation.denied": "Por favor, rechace", "error.validation.denied": "Por favor, rechace",
"error.validation.different": "El valor no debe ser \"{other}\"", "error.validation.different": "El valor no debe ser \"{other}\"",
"error.validation.email": "Por favor, introduce un correo electrónico válido", "error.validation.email": "Por favor, introduce un correo electrónico válido",
@ -217,54 +219,54 @@
"error.validation.size": "El tamaño del valor debe ser \"{size}\"", "error.validation.size": "El tamaño del valor debe ser \"{size}\"",
"error.validation.startswith": "El valor debe comenzar con \"{start}\"", "error.validation.startswith": "El valor debe comenzar con \"{start}\"",
"error.validation.time": "Por favor ingrese una hora válida", "error.validation.time": "Por favor ingrese una hora válida",
"error.validation.time.after": "Please enter a time after {time}", "error.validation.time.after": "Por favor ingresa una fecha después de {time}",
"error.validation.time.before": "Please enter a time before {time}", "error.validation.time.before": "Por favor ingresa una fecha antes de {time}",
"error.validation.time.between": "Please enter a time between {min} and {max}", "error.validation.time.between": "Por favor ingresa un fecha entre {min} y {max}",
"error.validation.url": "Por favor introduzca un URL válido", "error.validation.url": "Por favor introduzca un URL válido",
"expand": "Expand", "expand": "Expandir",
"expand.all": "Expand All", "expand.all": "Expandir todo",
"field.required": "The field is required", "field.required": "Este campo es requerido",
"field.blocks.changeType": "Change type", "field.blocks.changeType": "Cambiar tipo",
"field.blocks.code.name": "Código", "field.blocks.code.name": "Código",
"field.blocks.code.language": "Idioma", "field.blocks.code.language": "Idioma",
"field.blocks.code.placeholder": "Your code …", "field.blocks.code.placeholder": "Tu código...",
"field.blocks.delete.confirm": "Do you really want to delete this block?", "field.blocks.delete.confirm": "¿Seguro que quieres eliminar este bloque?",
"field.blocks.delete.confirm.all": "Do you really want to delete all blocks?", "field.blocks.delete.confirm.all": "¿Seguro que quieres eliminar todos los bloques?",
"field.blocks.delete.confirm.selected": "Do you really want to delete the selected blocks?", "field.blocks.delete.confirm.selected": "¿Seguro que quieres eliminar los bloques seleccionados?",
"field.blocks.empty": "No blocks yet", "field.blocks.empty": "No hay bloques aún",
"field.blocks.fieldsets.label": "Please select a block type …", "field.blocks.fieldsets.label": "Por favor selecciona un tipo de bloque...",
"field.blocks.fieldsets.paste": "Press <kbd>{{ shortcut }}</kbd> to paste/import blocks from your clipboard", "field.blocks.fieldsets.paste": "Presiona <kbd>{{ shortcut }}</kbd>para pegar/importar bloques en tu portapapeles ",
"field.blocks.gallery.name": "Gallery", "field.blocks.gallery.name": "Galería",
"field.blocks.gallery.images.empty": "No images yet", "field.blocks.gallery.images.empty": "No hay imágenes aún",
"field.blocks.gallery.images.label": "Images", "field.blocks.gallery.images.label": "Imágenes",
"field.blocks.heading.level": "Level", "field.blocks.heading.level": "Nivel",
"field.blocks.heading.name": "Heading", "field.blocks.heading.name": "Encabezado",
"field.blocks.heading.text": "Text", "field.blocks.heading.text": "Texto",
"field.blocks.heading.placeholder": "Heading …", "field.blocks.heading.placeholder": "Encabezado...",
"field.blocks.image.alt": "Alternative text", "field.blocks.image.alt": "Texto alternativo",
"field.blocks.image.caption": "Caption", "field.blocks.image.caption": "Leyenda",
"field.blocks.image.crop": "Crop", "field.blocks.image.crop": "Cortar",
"field.blocks.image.link": "Enlace", "field.blocks.image.link": "Enlace",
"field.blocks.image.location": "Location", "field.blocks.image.location": "Ubicación",
"field.blocks.image.name": "Imágen", "field.blocks.image.name": "Imágen",
"field.blocks.image.placeholder": "Select an image", "field.blocks.image.placeholder": "Selecciona una imagen",
"field.blocks.image.ratio": "Ratio", "field.blocks.image.ratio": "Proporción",
"field.blocks.image.url": "Image URL", "field.blocks.image.url": "URL de imágen",
"field.blocks.line.name": "Line", "field.blocks.line.name": "Linea",
"field.blocks.list.name": "List", "field.blocks.list.name": "Lista",
"field.blocks.markdown.name": "Markdown", "field.blocks.markdown.name": "Markdown",
"field.blocks.markdown.label": "Text", "field.blocks.markdown.label": "Texto",
"field.blocks.markdown.placeholder": "Markdown", "field.blocks.markdown.placeholder": "Markdown...",
"field.blocks.quote.name": "Quote", "field.blocks.quote.name": "Cita",
"field.blocks.quote.text.label": "Text", "field.blocks.quote.text.label": "Texto",
"field.blocks.quote.text.placeholder": "Quote …", "field.blocks.quote.text.placeholder": "Cita...",
"field.blocks.quote.citation.label": "Citation", "field.blocks.quote.citation.label": "Citation",
"field.blocks.quote.citation.placeholder": "by …", "field.blocks.quote.citation.placeholder": "Por ...",
"field.blocks.text.name": "Text", "field.blocks.text.name": "Texto",
"field.blocks.text.placeholder": "Text …", "field.blocks.text.placeholder": "Text …",
"field.blocks.video.caption": "Caption", "field.blocks.video.caption": "Leyenda",
"field.blocks.video.name": "Video", "field.blocks.video.name": "Video",
"field.blocks.video.placeholder": "Enter a video URL", "field.blocks.video.placeholder": "Enter a video URL",
"field.blocks.video.url.label": "Video-URL", "field.blocks.video.url.label": "Video-URL",
@ -321,7 +323,7 @@
"language.direction.ltr": "De izquierda a derecha", "language.direction.ltr": "De izquierda a derecha",
"language.direction.rtl": "De derecha a izquierda", "language.direction.rtl": "De derecha a izquierda",
"language.locale": "PHP locale string", "language.locale": "PHP locale string",
"language.locale.warning": "You are using a custom locale set up. Please modify it in the language file in /site/languages", "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.name": "Nombre",
"language.updated": "El idioma ha sido actualizado", "language.updated": "El idioma ha sido actualizado",
@ -344,13 +346,13 @@
"loading": "Cargando", "loading": "Cargando",
"lock.unsaved": "Unsaved changes", "lock.unsaved": "Cambios sin guardar",
"lock.unsaved.empty": "There are no more unsaved changes", "lock.unsaved.empty": "No hay más cambios sin guardar",
"lock.isLocked": "Unsaved changes by <strong>{email}</strong>", "lock.isLocked": "Cambios sin guardar por <strong>{email}</strong>",
"lock.file.isLocked": "The file is currently being edited by {email} and cannot be changed.", "lock.file.isLocked": "El archivo está siendo actualmente editado por {email} y no puede ser cambiado.",
"lock.page.isLocked": "The page is currently being edited by {email} and cannot be changed.", "lock.page.isLocked": "La página está siendo actualmente editada por {email} y no puede ser cambiada.",
"lock.unlock": "Unlock", "lock.unlock": "Desbloquear",
"lock.isUnlocked": "Your unsaved changes have been overwritten by another user. You can download your changes to merge them manually.", "lock.isUnlocked": "Tus cambios sin guardar han sido sobrescritos por otro usuario. Puedes descargar los cambios y fusionarlos manualmente.",
"login": "Iniciar sesión", "login": "Iniciar sesión",
"login.code.label.login": "Login code", "login.code.label.login": "Login code",
@ -393,8 +395,8 @@
"name": "Nombre", "name": "Nombre",
"next": "Siguiente", "next": "Siguiente",
"no": "no", "no": "no",
"off": "off", "off": "Apagado",
"on": "on", "on": "Encendido",
"open": "Abrir", "open": "Abrir",
"open.newWindow": "Open in new window", "open.newWindow": "Open in new window",
"options": "Opciones", "options": "Opciones",
@ -417,8 +419,8 @@
"page.delete.confirm.title": "Introduzca el título de la página para confirmar", "page.delete.confirm.title": "Introduzca el título de la página para confirmar",
"page.draft.create": "Crear borrador", "page.draft.create": "Crear borrador",
"page.duplicate.appendix": "Copiar", "page.duplicate.appendix": "Copiar",
"page.duplicate.files": "Copy files", "page.duplicate.files": "Copiar archivos",
"page.duplicate.pages": "Copy pages", "page.duplicate.pages": "Copiar páginas",
"page.sort": "Change position", "page.sort": "Change position",
"page.status": "Estado", "page.status": "Estado",
"page.status.draft": "Borrador", "page.status.draft": "Borrador",
@ -451,13 +453,13 @@
"revert.confirm": "Do you really want to <strong>delete all unsaved changes</strong>?", "revert.confirm": "Do you really want to <strong>delete all unsaved changes</strong>?",
"role": "Rol", "role": "Rol",
"role.admin.description": "The admin has all rights", "role.admin.description": "El administrador tiene todos los derechos",
"role.admin.title": "Admin", "role.admin.title": "Administrador",
"role.all": "Todos", "role.all": "Todos",
"role.empty": "No hay usuarios con este rol", "role.empty": "No hay usuarios con este rol",
"role.description.placeholder": "Sin descripción", "role.description.placeholder": "Sin descripción",
"role.nobody.description": "This is a fallback role without any permissions", "role.nobody.description": "Este es un rol alternativo sin permisos",
"role.nobody.title": "Nobody", "role.nobody.title": "Nadie",
"save": "Guardar", "save": "Guardar",
"search": "Buscar", "search": "Buscar",
@ -465,7 +467,7 @@
"search.all": "Show all", "search.all": "Show all",
"search.results.none": "No results", "search.results.none": "No results",
"section.required": "The section is required", "section.required": "Esta sección es requerida",
"select": "Seleccionar", "select": "Seleccionar",
"settings": "Ajustes", "settings": "Ajustes",
@ -508,17 +510,17 @@
"translation.locale": "es_ES", "translation.locale": "es_ES",
"upload": "Subir", "upload": "Subir",
"upload.error.cantMove": "The uploaded file could not be moved", "upload.error.cantMove": "El archivo subido no puede ser movido",
"upload.error.cantWrite": "Failed to write file to disk", "upload.error.cantWrite": "Error al escribir el archivo en el disco",
"upload.error.default": "The file could not be uploaded", "upload.error.default": "El archivo no pudo ser subido",
"upload.error.extension": "File upload stopped by extension", "upload.error.extension": "Subida de archivo detenida por la extensión",
"upload.error.formSize": "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the form", "upload.error.formSize": "El archivo subido excede la directiva MAX_FILE_SIZE que fue especificada en el formulario",
"upload.error.iniPostSize": "The uploaded file exceeds the post_max_size directive in php.ini", "upload.error.iniPostSize": "El archivo subido excede la directiva post_max_size directive en php.ini",
"upload.error.iniSize": "The uploaded file exceeds the upload_max_filesize directive in php.ini", "upload.error.iniSize": "El archivo subido excede la directiva upload_max_filesize en php.ini",
"upload.error.noFile": "No file was uploaded", "upload.error.noFile": "Ningún archivo ha sido subido",
"upload.error.noFiles": "No files were uploaded", "upload.error.noFiles": "Ningún archivo ha sido subido",
"upload.error.partial": "The uploaded file was only partially uploaded", "upload.error.partial": "El archivo ha sido subido solo parcialmente",
"upload.error.tmpDir": "Missing a temporary folder", "upload.error.tmpDir": "No se encuentra la carpeta temporal",
"upload.errors": "Error", "upload.errors": "Error",
"upload.progress": "Cargando…", "upload.progress": "Cargando…",

View file

@ -157,6 +157,8 @@
"error.template.default.notFound": "قالب پیش فرض موجود نیست", "error.template.default.notFound": "قالب پیش فرض موجود نیست",
"error.unexpected": "An unexpected error occurred! Enable debug mode for more info: https://getkirby.com/docs/reference/system/options/debug",
"error.user.changeEmail.permission": "شما اجازه تغییر ایمیل کاربر «{name}» را ندارید", "error.user.changeEmail.permission": "شما اجازه تغییر ایمیل کاربر «{name}» را ندارید",
"error.user.changeLanguage.permission": "شما اجازه تغییر زبان برای کاربر «{name}» را ندارید", "error.user.changeLanguage.permission": "شما اجازه تغییر زبان برای کاربر «{name}» را ندارید",
"error.user.changeName.permission": "شما اجازه تنغییر نام کاربر «{name}» را ندارید", "error.user.changeName.permission": "شما اجازه تنغییر نام کاربر «{name}» را ندارید",

View file

@ -1,10 +1,10 @@
{ {
"account.changeName": "Change your name", "account.changeName": "Muuta nimesi",
"account.delete": "Delete your account", "account.delete": "Poista tilisi",
"account.delete.confirm": "Do you really want to delete your account? You will be logged out immediately. Your account cannot be recovered.", "account.delete.confirm": "Haluatko varmasti poistaa tilisi? Sinut kirjataan ulos välittömästi, eikä tiliäsi voi palauttaa.",
"add": "Lis\u00e4\u00e4", "add": "Lis\u00e4\u00e4",
"author": "Author", "author": "Tekijä",
"avatar": "Profiilikuva", "avatar": "Profiilikuva",
"back": "Takaisin", "back": "Takaisin",
"cancel": "Peruuta", "cancel": "Peruuta",
@ -14,7 +14,7 @@
"collapse": "Pienennä", "collapse": "Pienennä",
"collapse.all": "Pienennä kaikki", "collapse.all": "Pienennä kaikki",
"copy": "Kopioi", "copy": "Kopioi",
"copy.all": "Copy all", "copy.all": "Kopioi kaikki",
"create": "Luo", "create": "Luo",
"date": "Päivämäärä", "date": "Päivämäärä",
@ -49,7 +49,7 @@
"email": "S\u00e4hk\u00f6posti", "email": "S\u00e4hk\u00f6posti",
"email.placeholder": "nimi@osoite.fi", "email.placeholder": "nimi@osoite.fi",
"environment": "Environment", "environment": "Ympäristö",
"error.access.code": "Väärä koodi", "error.access.code": "Väärä koodi",
"error.access.login": "Kirjautumistiedot eivät kelpaa", "error.access.login": "Kirjautumistiedot eivät kelpaa",
@ -102,7 +102,7 @@
"error.language.code": "Anna kielen lyhenne", "error.language.code": "Anna kielen lyhenne",
"error.language.duplicate": "Kieli on jo olemassa", "error.language.duplicate": "Kieli on jo olemassa",
"error.language.name": "Anna kielen nimi", "error.language.name": "Anna kielen nimi",
"error.language.notFound": "The language could not be found", "error.language.notFound": "Kieltä ei löytynyt",
"error.layout.validation.block": "Lohkon {blockIndex} asetelmassa {layoutIndex} tapahtui virhe", "error.layout.validation.block": "Lohkon {blockIndex} asetelmassa {layoutIndex} tapahtui virhe",
"error.layout.validation.settings": "Virhe asetelman {index} asetuksissa", "error.layout.validation.settings": "Virhe asetelman {index} asetuksissa",
@ -111,7 +111,7 @@
"error.license.email": "Anna sähköpostiosoite", "error.license.email": "Anna sähköpostiosoite",
"error.license.verification": "Lisenssiä ei voitu vahvistaa", "error.license.verification": "Lisenssiä ei voitu vahvistaa",
"error.offline": "The Panel is currently offline", "error.offline": "Paneeli on offline-tilassa",
"error.page.changeSlug.permission": "Sinulla ei ole oikeutta muuttaa URL-liitettä sivulle \"{slug}\"", "error.page.changeSlug.permission": "Sinulla ei ole oikeutta muuttaa URL-liitettä sivulle \"{slug}\"",
"error.page.changeStatus.incomplete": "Sivulla on virheitä eikä sitä voitu julkaista", "error.page.changeStatus.incomplete": "Sivulla on virheitä eikä sitä voitu julkaista",
@ -157,6 +157,8 @@
"error.template.default.notFound": "Oletussivupohjaa ei ole määritetty", "error.template.default.notFound": "Oletussivupohjaa ei ole määritetty",
"error.unexpected": "An unexpected error occurred! Enable debug mode for more info: https://getkirby.com/docs/reference/system/options/debug",
"error.user.changeEmail.permission": "Sinulla ei ole oikeutta vaihtaa käyttäjän \"{name}\" sähköpostiosoitetta", "error.user.changeEmail.permission": "Sinulla ei ole oikeutta vaihtaa käyttäjän \"{name}\" sähköpostiosoitetta",
"error.user.changeLanguage.permission": "Sinulla ei ole oikeutta vaihtaa käyttäjän \"{name}\" kieltä", "error.user.changeLanguage.permission": "Sinulla ei ole oikeutta vaihtaa käyttäjän \"{name}\" kieltä",
"error.user.changeName.permission": "Sinulla ei ole oikeutta vaihtaa käyttäjän \"{name}\" nimeä", "error.user.changeName.permission": "Sinulla ei ole oikeutta vaihtaa käyttäjän \"{name}\" nimeä",
@ -235,7 +237,7 @@
"field.blocks.delete.confirm.selected": "Haluatko varmasti poistaa valitut lohkot?", "field.blocks.delete.confirm.selected": "Haluatko varmasti poistaa valitut lohkot?",
"field.blocks.empty": "Ei lohkoja", "field.blocks.empty": "Ei lohkoja",
"field.blocks.fieldsets.label": "Valitse lohkon tyyppi …", "field.blocks.fieldsets.label": "Valitse lohkon tyyppi …",
"field.blocks.fieldsets.paste": "Press <kbd>{{ shortcut }}</kbd> to paste/import blocks from your clipboard", "field.blocks.fieldsets.paste": "Paina <kbd>{{ shortcut }}</kbd> liittääksesi tai tuodaksesi lohkoja leikepöydältä",
"field.blocks.gallery.name": "Galleria", "field.blocks.gallery.name": "Galleria",
"field.blocks.gallery.images.empty": "Ei kuvia", "field.blocks.gallery.images.empty": "Ei kuvia",
"field.blocks.gallery.images.label": "Kuvat", "field.blocks.gallery.images.label": "Kuvat",
@ -282,7 +284,7 @@
"field.structure.empty": "Rivejä ei ole vielä lisätty", "field.structure.empty": "Rivejä ei ole vielä lisätty",
"field.users.empty": "Käyttäjiä ei ole vielä valittu", "field.users.empty": "Käyttäjiä ei ole vielä valittu",
"file.blueprint": "This file has no blueprint yet. You can define the setup in <strong>/site/blueprints/files/{blueprint}.yml</strong>", "file.blueprint": "Tällä tiedostolla ei ole vielä suunnitelmaa. Voit määrittää suunnitelman tiedostoon <strong>/site/blueprints/files/{blueprint}.yml</strong>",
"file.delete.confirm": "Haluatko varmasti poistaa tiedoston <br><strong>{filename}</strong>?", "file.delete.confirm": "Haluatko varmasti poistaa tiedoston <br><strong>{filename}</strong>?",
"file.sort": "Muuta järjestyspaikkaa", "file.sort": "Muuta järjestyspaikkaa",
@ -291,7 +293,7 @@
"hide": "Piilota", "hide": "Piilota",
"hour": "Tunti", "hour": "Tunti",
"import": "Import", "import": "Tuo",
"insert": "Lis\u00e4\u00e4", "insert": "Lis\u00e4\u00e4",
"insert.after": "Lisää eteen", "insert.after": "Lisää eteen",
"insert.before": "Lisää jälkeen", "insert.before": "Lisää jälkeen",
@ -405,7 +407,7 @@
"orientation.portrait": "Pystysuuntainen", "orientation.portrait": "Pystysuuntainen",
"orientation.square": "Neliskulmainen", "orientation.square": "Neliskulmainen",
"page.blueprint": "This page has no blueprint yet. You can define the setup in <strong>/site/blueprints/pages/{blueprint}.yml</strong>", "page.blueprint": "Tällä sivulla ei ole vielä suunnitelmaa. Voit määrittää suunnitelman tiedostoon <strong>/site/blueprints/pages/{blueprint}.yml</strong>",
"page.changeSlug": "Vaihda URL-osoite", "page.changeSlug": "Vaihda URL-osoite",
"page.changeSlug.fromTitle": "Luo nimen perusteella", "page.changeSlug.fromTitle": "Luo nimen perusteella",
"page.changeStatus": "Muuta tilaa", "page.changeStatus": "Muuta tilaa",
@ -437,10 +439,10 @@
"pagination.page": "Sivu", "pagination.page": "Sivu",
"password": "Salasana", "password": "Salasana",
"paste": "Paste", "paste": "Liitä",
"paste.after": "Paste after", "paste.after": "Liitä jälkeen",
"pixel": "Pikseli", "pixel": "Pikseli",
"plugins": "Plugins", "plugins": "Liitännäiset",
"prev": "Edellinen", "prev": "Edellinen",
"preview": "Esikatselu", "preview": "Esikatselu",
"remove": "Poista", "remove": "Poista",
@ -477,7 +479,7 @@
"template": "Sivupohja", "template": "Sivupohja",
"today": "Tänään", "today": "Tänään",
"server": "Server", "server": "Palvelin",
"site.blueprint": "Tällä sivustolla ei ole vielä suunnitelmaa. Voit määrittää suunnitelman tiedostoon <strong>/site/blueprints/site.yml</strong>", "site.blueprint": "Tällä sivustolla ei ole vielä suunnitelmaa. Voit määrittää suunnitelman tiedostoon <strong>/site/blueprints/site.yml</strong>",
@ -488,15 +490,15 @@
"toolbar.button.heading.1": "Otsikko 1", "toolbar.button.heading.1": "Otsikko 1",
"toolbar.button.heading.2": "Otsikko 2", "toolbar.button.heading.2": "Otsikko 2",
"toolbar.button.heading.3": "Otsikko 3", "toolbar.button.heading.3": "Otsikko 3",
"toolbar.button.heading.4": "Heading 4", "toolbar.button.heading.4": "Otsikko 4",
"toolbar.button.heading.5": "Heading 5", "toolbar.button.heading.5": "Otsikko 5",
"toolbar.button.heading.6": "Heading 6", "toolbar.button.heading.6": "Otsikko 6",
"toolbar.button.italic": "Kursivointi", "toolbar.button.italic": "Kursivointi",
"toolbar.button.file": "Tiedosto", "toolbar.button.file": "Tiedosto",
"toolbar.button.file.select": "Valitse tiedosto", "toolbar.button.file.select": "Valitse tiedosto",
"toolbar.button.file.upload": "Lähetä tiedosto", "toolbar.button.file.upload": "Lähetä tiedosto",
"toolbar.button.link": "Linkki", "toolbar.button.link": "Linkki",
"toolbar.button.paragraph": "Paragraph", "toolbar.button.paragraph": "Kappale",
"toolbar.button.strike": "Yliviivaus", "toolbar.button.strike": "Yliviivaus",
"toolbar.button.ol": "Järjestetty lista", "toolbar.button.ol": "Järjestetty lista",
"toolbar.button.underline": "Alaviiva", "toolbar.button.underline": "Alaviiva",
@ -526,7 +528,7 @@
"url.placeholder": "https://esimerkki.fi", "url.placeholder": "https://esimerkki.fi",
"user": "Käyttäjä", "user": "Käyttäjä",
"user.blueprint": "You can define additional sections and form fields for this user role in <strong>/site/blueprints/users/{blueprint}.yml</strong>", "user.blueprint": "Voit määrittää lisää osioita ja lomakekenttiä tälle käyttäjälle suunnitelmassa <strong>/site/blueprints/users/{blueprint}.yml</strong>",
"user.changeEmail": "Muuta sähköpostiosoite", "user.changeEmail": "Muuta sähköpostiosoite",
"user.changeLanguage": "Vaihda kieli", "user.changeLanguage": "Vaihda kieli",
"user.changeName": "Nimeä uudelleen", "user.changeName": "Nimeä uudelleen",
@ -548,7 +550,7 @@
"view.languages": "Kielet", "view.languages": "Kielet",
"view.resetPassword": "Aseta salasana", "view.resetPassword": "Aseta salasana",
"view.site": "Sivusto", "view.site": "Sivusto",
"view.system": "System", "view.system": "Järjestelmä",
"view.users": "K\u00e4ytt\u00e4j\u00e4t", "view.users": "K\u00e4ytt\u00e4j\u00e4t",
"welcome": "Tervetuloa", "welcome": "Tervetuloa",

View file

@ -157,6 +157,8 @@
"error.template.default.notFound": "Le modèle par défaut nexiste pas", "error.template.default.notFound": "Le modèle par défaut nexiste 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.user.changeEmail.permission": "Vous nêtes pas autorisé à modifier le courriel de lutilisateur « {name} »", "error.user.changeEmail.permission": "Vous nêtes pas autorisé à modifier le courriel de lutilisateur « {name} »",
"error.user.changeLanguage.permission": "Vous nêtes pas autorisé à changer la langue de lutilisateur « {name} »", "error.user.changeLanguage.permission": "Vous nêtes pas autorisé à changer la langue de lutilisateur « {name} »",
"error.user.changeName.permission": "Vous nêtes pas autorisé à modifier le nom de lutilisateur « {name} »", "error.user.changeName.permission": "Vous nêtes pas autorisé à modifier le nom de lutilisateur « {name} »",

View file

@ -1,20 +1,20 @@
{ {
"account.changeName": "Change your name", "account.changeName": "Név megváltoztatása",
"account.delete": "Delete your account", "account.delete": "Fiók törlése",
"account.delete.confirm": "Do you really want to delete your account? You will be logged out immediately. Your account cannot be recovered.", "account.delete.confirm": "Tényleg törölni szeretnéd a fiókodat? Azonnal kijelentkeztetünk és ez a folyamat visszavonhatatlan.",
"add": "Hozz\u00e1ad", "add": "Hozz\u00e1ad",
"author": "Author", "author": "Szerző",
"avatar": "Profilkép", "avatar": "Profilkép",
"back": "Vissza", "back": "Vissza",
"cancel": "M\u00e9gsem", "cancel": "M\u00e9gsem",
"change": "M\u00f3dos\u00edt\u00e1s", "change": "M\u00f3dos\u00edt\u00e1s",
"close": "Bez\u00e1r", "close": "Bez\u00e1r",
"confirm": "Mentés", "confirm": "Mentés",
"collapse": "Collapse", "collapse": "Bezárás",
"collapse.all": "Collapse All", "collapse.all": "Összes bezárása",
"copy": "Másol", "copy": "Másol",
"copy.all": "Copy all", "copy.all": "Összes másolása",
"create": "Létrehoz", "create": "Létrehoz",
"date": "Dátum", "date": "Dátum",
@ -29,17 +29,17 @@
"days.tue": "ke", "days.tue": "ke",
"days.wed": "sze", "days.wed": "sze",
"debugging": "Debugging", "debugging": "Hibakeresés",
"delete": "T\u00f6rl\u00e9s", "delete": "T\u00f6rl\u00e9s",
"delete.all": "Delete all", "delete.all": "Összes törlése",
"dialog.files.empty": "Nincsenek fájlok kiválasztva", "dialog.files.empty": "Nincsenek fájlok kiválasztva",
"dialog.pages.empty": "Nincsenek oldalak kiválasztva", "dialog.pages.empty": "Nincsenek oldalak kiválasztva",
"dialog.users.empty": "Nincsenek felhasználók kiválasztva", "dialog.users.empty": "Nincsenek felhasználók kiválasztva",
"dimensions": "Méretek", "dimensions": "Méretek",
"disabled": "Disabled", "disabled": "Inaktív",
"discard": "Visszavon\u00e1s", "discard": "Visszavon\u00e1s",
"download": "Letöltés", "download": "Letöltés",
"duplicate": "Másolat", "duplicate": "Másolat",
@ -49,12 +49,12 @@
"email": "Email", "email": "Email",
"email.placeholder": "mail@pelda.hu", "email.placeholder": "mail@pelda.hu",
"environment": "Environment", "environment": "Környezet",
"error.access.code": "Invalid code", "error.access.code": "Érvénytelen kód",
"error.access.login": "Érvénytelen bejelentkezés", "error.access.login": "Érvénytelen bejelentkezés",
"error.access.panel": "Nincs jogosultságod megnyitni a panelt", "error.access.panel": "Nincs jogosultságod megnyitni a panelt",
"error.access.view": "You are not allowed to access this part of the panel", "error.access.view": "Nincs hozzáférésed a panel ezen részéhez",
"error.avatar.create.fail": "A profilkép feltöltése nem sikerült", "error.avatar.create.fail": "A profilkép feltöltése nem sikerült",
"error.avatar.delete.fail": "A profilkép nem törölhető", "error.avatar.delete.fail": "A profilkép nem törölhető",
@ -63,37 +63,37 @@
"error.blueprint.notFound": "A \"{name}\" oldalsablon nem tölthető be", "error.blueprint.notFound": "A \"{name}\" oldalsablon nem tölthető be",
"error.blocks.max.plural": "You must not add more than {max} blocks", "error.blocks.max.plural": "Legfeljebb {max} blokk adható hozzá",
"error.blocks.max.singular": "You must not add more than one block", "error.blocks.max.singular": "Csak egyetlen blokk adható hozzá",
"error.blocks.min.plural": "You must add at least {min} blocks", "error.blocks.min.plural": "Legalább {min} blokkot hozzá kell adnod",
"error.blocks.min.singular": "You must add at least one block", "error.blocks.min.singular": "Legalább egy blokkot hozzá kell adnod",
"error.blocks.validation": "There's an error in block {index}", "error.blocks.validation": "Hiba van az alábbi blokkban: {index}",
"error.email.preset.notFound": "A \"{name}\" email-beállítás nem található", "error.email.preset.notFound": "A \"{name}\" email-beállítás nem található",
"error.field.converter.invalid": "Érvénytelen konverter: \"{converter}\"", "error.field.converter.invalid": "Érvénytelen konverter: \"{converter}\"",
"error.file.changeName.empty": "The name must not be empty", "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.changeName.permission": "Nincs jogosultságod megváltoztatni a \"{filename}\" fájl nevét",
"error.file.duplicate": "Már létezik \"{filename}\" nevű fájl", "error.file.duplicate": "Már létezik \"{filename}\" nevű fájl",
"error.file.extension.forbidden": "Tiltott kiterjeszt\u00e9s\u0171 f\u00e1jl", "error.file.extension.forbidden": "Tiltott kiterjeszt\u00e9s\u0171 f\u00e1jl",
"error.file.extension.invalid": "Invalid extension: {extension}", "error.file.extension.invalid": "Érvénytelen kiterjesztés: {extension}",
"error.file.extension.missing": "Kiterjeszt\u00e9s n\u00e9lk\u00fcli f\u00e1jl nem t\u00f6lthet\u0151 fel", "error.file.extension.missing": "Kiterjeszt\u00e9s n\u00e9lk\u00fcli f\u00e1jl nem t\u00f6lthet\u0151 fel",
"error.file.maxheight": "The height of the image must not exceed {height} pixels", "error.file.maxheight": "A kép nem lehet magasabb {height} pixelnél",
"error.file.maxsize": "The file is too large", "error.file.maxsize": "A fájl túl nagy",
"error.file.maxwidth": "The width of the image must not exceed {width} pixels", "error.file.maxwidth": "A kép nem lehet szélesebb {width} pixelnél",
"error.file.mime.differs": "A feltöltött fájlnak azonos \"{mime}\" típusúnak kell lennie", "error.file.mime.differs": "A feltöltött fájlnak azonos \"{mime}\" típusúnak kell lennie",
"error.file.mime.forbidden": "A \"{mime}\" típusú médiafájlok nem engedélyezettek", "error.file.mime.forbidden": "A \"{mime}\" típusú médiafájlok nem engedélyezettek",
"error.file.mime.invalid": "Invalid mime type: {mime}", "error.file.mime.invalid": "Érvénytelen mime-típus: {mime}",
"error.file.mime.missing": "A \"{filename}\" fájl típusa nem állapítható meg", "error.file.mime.missing": "A \"{filename}\" fájl típusa nem állapítható meg",
"error.file.minheight": "The height of the image must be at least {height} pixels", "error.file.minheight": "A képnek legalább {height} pixel magasnak kell lennie",
"error.file.minsize": "The file is too small", "error.file.minsize": "A fájl túl kicsi",
"error.file.minwidth": "The width of the image must be at least {width} pixels", "error.file.minwidth": "A képnek legalább {width} pixel szélesnek kell lennie",
"error.file.name.missing": "A fálj neve nem lehet üres", "error.file.name.missing": "A fálj neve nem lehet üres",
"error.file.notFound": "A \"{filename}\" fájl nem található", "error.file.notFound": "A \"{filename}\" fájl nem található",
"error.file.orientation": "The orientation of the image must be \"{orientation}\"", "error.file.orientation": "A képnek \"{orientation}\" tájolásúnak kell lennie",
"error.file.type.forbidden": "Nem tölthetsz fel \"{type}\" típusú fájlokat", "error.file.type.forbidden": "Nem tölthetsz fel \"{type}\" típusú fájlokat",
"error.file.type.invalid": "Invalid file type: {type}", "error.file.type.invalid": "Érvénytelen fájltípus: {type}",
"error.file.undefined": "A f\u00e1jl nem tal\u00e1lhat\u00f3", "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.incomplete": "Kérlek javítsd ki az összes hibát az űrlapon",
@ -102,16 +102,16 @@
"error.language.code": "Kérlek, add meg a nyelv érvényes kódját", "error.language.code": "Kérlek, add meg a nyelv érvényes kódját",
"error.language.duplicate": "A nyelv már létezik", "error.language.duplicate": "A nyelv már létezik",
"error.language.name": "Kérlek, add meg a nyelv érvényes nevét", "error.language.name": "Kérlek, add meg a nyelv érvényes nevét",
"error.language.notFound": "The language could not be found", "error.language.notFound": "A nyelv nem található",
"error.layout.validation.block": "There's an error in block {blockIndex} in layout {layoutIndex}", "error.layout.validation.block": "Hibát találtunk az alábbi blokkban: {blockIndex} az alábbi elrendezésben: {layoutIndex}",
"error.layout.validation.settings": "There's an error in layout {index} settings", "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.format": "Kérlek, add meg az évényes lincensz kulcsot",
"error.license.email": "Kérlek adj meg egy valós email-címet", "error.license.email": "Kérlek adj meg egy valós email-címet",
"error.license.verification": "A licensz nem ellenőrizhető", "error.license.verification": "A licensz nem ellenőrizhető",
"error.offline": "The Panel is currently offline", "error.offline": "A Panel jelenleg nem elérhető",
"error.page.changeSlug.permission": "Nem változtathatod meg az URL-előtagot: \"{slug}\"", "error.page.changeSlug.permission": "Nem változtathatod meg az URL-előtagot: \"{slug}\"",
"error.page.changeStatus.incomplete": "Az oldal hibákat tartalmaz és nem publikálható", "error.page.changeStatus.incomplete": "Az oldal hibákat tartalmaz és nem publikálható",
@ -131,8 +131,8 @@
"error.page.duplicate.permission": "Nincs engedélyed a(z) \"{slug}\" másolat keszítéséhez", "error.page.duplicate.permission": "Nincs engedélyed a(z) \"{slug}\" másolat keszítéséhez",
"error.page.notFound": "Az oldal nem tal\u00e1lhat\u00f3", "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.num.invalid": "Kérlek megfelelő oldalszámozást adj meg. Negatív szám itt nem használható.",
"error.page.slug.invalid": "Please enter a valid URL appendix", "error.page.slug.invalid": "Kérlek érvényes URL-kiterjesztést adj meg",
"error.page.slug.maxlength": "Slug length must be less than \"{length}\" characters", "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.sort.permission": "A(z) \"{slug}\" oldal nem illeszthető a sorrendbe",
"error.page.status.invalid": "Kérlek add meg a megfelelő oldalstátuszt", "error.page.status.invalid": "Kérlek add meg a megfelelő oldalstátuszt",
"error.page.undefined": "Az oldal nem tal\u00e1lhat\u00f3", "error.page.undefined": "Az oldal nem tal\u00e1lhat\u00f3",
@ -157,13 +157,15 @@
"error.template.default.notFound": "Az alapértelmezett sablon nem létezik", "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",
"error.user.changeEmail.permission": "Nincs jogosultságod megváltoztatni \"{name}\" felhasználó email-címét", "error.user.changeEmail.permission": "Nincs jogosultságod megváltoztatni \"{name}\" felhasználó email-címét",
"error.user.changeLanguage.permission": "Nincs jogosultságod megváltoztatni \"{name}\" felhasználó nyelvi beállításait", "error.user.changeLanguage.permission": "Nincs jogosultságod megváltoztatni \"{name}\" felhasználó nyelvi beállításait",
"error.user.changeName.permission": "Nincs jogosultságod megváltoztatni \"{name}\" felhasználó nevét", "error.user.changeName.permission": "Nincs jogosultságod megváltoztatni \"{name}\" felhasználó nevét",
"error.user.changePassword.permission": "Nincs jogosultságod megváltoztatni \"{name}\" felhasználó jelszavát", "error.user.changePassword.permission": "Nincs jogosultságod megváltoztatni \"{name}\" felhasználó jelszavát",
"error.user.changeRole.lastAdmin": "Az egyedüli adminisztrátor szerepkörét nem lehet megváltoztatni", "error.user.changeRole.lastAdmin": "Az egyedüli adminisztrátor szerepkörét nem lehet megváltoztatni",
"error.user.changeRole.permission": "Nincs jogosultságod megváltoztatni \"{name}\" felhasználó szerepkörét", "error.user.changeRole.permission": "Nincs jogosultságod megváltoztatni \"{name}\" felhasználó szerepkörét",
"error.user.changeRole.toAdmin": "You are not allowed to promote someone to the admin role", "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.create.permission": "Nincs jogosultságod létrehozni ezt a felhasználót",
"error.user.delete": "A felhaszn\u00e1l\u00f3 nem t\u00f6r\u00f6lhet\u0151", "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.lastAdmin": "Nem t\u00f6r\u00f6lheted az egyetlen adminisztr\u00e1tort",
@ -176,7 +178,7 @@
"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.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\u00e9rlek er\u0151s\u00edtsd meg a jelsz\u00f3t", "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.undefined": "A felhasználónak nincs jelszó megadva",
"error.user.password.wrong": "Wrong password", "error.user.password.wrong": "Hibás jelszó",
"error.user.role.invalid": "Kérlek adj meg egy megfelelő szerepkört", "error.user.role.invalid": "Kérlek adj meg egy megfelelő szerepkört",
"error.user.undefined": "A felhasználó nem található", "error.user.undefined": "A felhasználó nem található",
"error.user.update.permission": "Nincs jogosultságod frissíteni \"{name}\" felhasználó adatait", "error.user.update.permission": "Nincs jogosultságod frissíteni \"{name}\" felhasználó adatait",
@ -188,9 +190,9 @@
"error.validation.boolean": "Kérlek erősítsd meg vagy vesd el", "error.validation.boolean": "Kérlek erősítsd meg vagy vesd el",
"error.validation.contains": "Kérlek olyan értéket adj meg, amely tartalmazza ezt: \"{needle}\"", "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": "Kérlek megfelelő dátumot adj meg",
"error.validation.date.after": "Please enter a date after {date}", "error.validation.date.after": "Kérlek olyan dátumot adj meg, amely későbbi ennél: {date}",
"error.validation.date.before": "Please enter a date before {date}", "error.validation.date.before": "Kérlek olyan dátumot adj meg, amely korábbi ennél: {date}",
"error.validation.date.between": "Please enter a date between {min} and {max}", "error.validation.date.between": "Kérlek {min} és {max} közötti dátumot adj meg",
"error.validation.denied": "Kérlek vesd el", "error.validation.denied": "Kérlek vesd el",
"error.validation.different": "Az érték nem lehet \"{other}\"", "error.validation.different": "Az érték nem lehet \"{other}\"",
"error.validation.email": "Kérlek adj meg egy valós email-címet", "error.validation.email": "Kérlek adj meg egy valós email-címet",
@ -217,84 +219,84 @@
"error.validation.size": "Az értéknek az alábbi méretűnek kell lennie: \"{size}\"", "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.startswith": "Az értéknek ezzel kell kezdődnie: \"{start}\"",
"error.validation.time": "Kérlek megfelelő időt adj meg", "error.validation.time": "Kérlek megfelelő időt adj meg",
"error.validation.time.after": "Please enter a time after {time}", "error.validation.time.after": "Kérlek olyan időpontot adj meg, amely későbbi ennél: {time}",
"error.validation.time.before": "Please enter a time before {time}", "error.validation.time.before": "Kérlek olyan időpontot adj meg, amely korábbi ennél: {time}",
"error.validation.time.between": "Please enter a time between {min} and {max}", "error.validation.time.between": "Kérlek {min} és {max} közötti időpontot adj meg",
"error.validation.url": "Kérlek megfelelő URL-t adj meg", "error.validation.url": "Kérlek megfelelő URL-t adj meg",
"expand": "Expand", "expand": "Kinyitás",
"expand.all": "Expand All", "expand.all": "Összes kinyitása",
"field.required": "The field is required", "field.required": "Kötelező mező",
"field.blocks.changeType": "Change type", "field.blocks.changeType": "Típus megváltoztatása",
"field.blocks.code.name": "Kód", "field.blocks.code.name": "Kód",
"field.blocks.code.language": "Nyelv", "field.blocks.code.language": "Nyelv",
"field.blocks.code.placeholder": "Your code …", "field.blocks.code.placeholder": "A megjelenítendő kód …",
"field.blocks.delete.confirm": "Do you really want to delete this block?", "field.blocks.delete.confirm": "Tényleg törölni szeretnéd ezt a blokkot?",
"field.blocks.delete.confirm.all": "Do you really want to delete all blocks?", "field.blocks.delete.confirm.all": "Tényleg minden blokkot törölni szeretnél?",
"field.blocks.delete.confirm.selected": "Do you really want to delete the selected blocks?", "field.blocks.delete.confirm.selected": "Tényleg törölni szeretnéd a kijelölt blokkokat?",
"field.blocks.empty": "No blocks yet", "field.blocks.empty": "Még nincsenek blokkok",
"field.blocks.fieldsets.label": "Please select a block type …", "field.blocks.fieldsets.label": "Kérlek válassz blokktípust …",
"field.blocks.fieldsets.paste": "Press <kbd>{{ shortcut }}</kbd> to paste/import blocks from your clipboard", "field.blocks.fieldsets.paste": "Blokk beszúrásához a vágólapról használd a <kbd>{{ shortcut }}</kbd> billentyűkombinációt",
"field.blocks.gallery.name": "Gallery", "field.blocks.gallery.name": "Galéria",
"field.blocks.gallery.images.empty": "No images yet", "field.blocks.gallery.images.empty": "Még nincsenek képek",
"field.blocks.gallery.images.label": "Images", "field.blocks.gallery.images.label": "Képek",
"field.blocks.heading.level": "Level", "field.blocks.heading.level": "Szint",
"field.blocks.heading.name": "Heading", "field.blocks.heading.name": "Címsor",
"field.blocks.heading.text": "Text", "field.blocks.heading.text": "Szöveg",
"field.blocks.heading.placeholder": "Heading …", "field.blocks.heading.placeholder": "Címsor …",
"field.blocks.image.alt": "Alternative text", "field.blocks.image.alt": "Alternatív szöveg",
"field.blocks.image.caption": "Caption", "field.blocks.image.caption": "Képaláírás",
"field.blocks.image.crop": "Crop", "field.blocks.image.crop": "Körülvágás",
"field.blocks.image.link": "Link", "field.blocks.image.link": "Link",
"field.blocks.image.location": "Location", "field.blocks.image.location": "A kép helye",
"field.blocks.image.name": "Kép", "field.blocks.image.name": "Kép",
"field.blocks.image.placeholder": "Select an image", "field.blocks.image.placeholder": "Kép kiválasztása",
"field.blocks.image.ratio": "Ratio", "field.blocks.image.ratio": "Képarány",
"field.blocks.image.url": "Image URL", "field.blocks.image.url": "Kép URL-je",
"field.blocks.line.name": "Line", "field.blocks.line.name": "Vonal",
"field.blocks.list.name": "List", "field.blocks.list.name": "Lista",
"field.blocks.markdown.name": "Markdown", "field.blocks.markdown.name": "Markdown",
"field.blocks.markdown.label": "Text", "field.blocks.markdown.label": "Szöveg",
"field.blocks.markdown.placeholder": "Markdown …", "field.blocks.markdown.placeholder": "Markdown …",
"field.blocks.quote.name": "Quote", "field.blocks.quote.name": "Idézet",
"field.blocks.quote.text.label": "Text", "field.blocks.quote.text.label": "Szöveg",
"field.blocks.quote.text.placeholder": "Quote …", "field.blocks.quote.text.placeholder": "Idézet szövege …",
"field.blocks.quote.citation.label": "Citation", "field.blocks.quote.citation.label": "Idézet szerzője",
"field.blocks.quote.citation.placeholder": "by …", "field.blocks.quote.citation.placeholder": "Szerző …",
"field.blocks.text.name": "Text", "field.blocks.text.name": "Szöveg",
"field.blocks.text.placeholder": "Text …", "field.blocks.text.placeholder": "Szöveg …",
"field.blocks.video.caption": "Caption", "field.blocks.video.caption": "Képaláírás",
"field.blocks.video.name": "Video", "field.blocks.video.name": "Videó",
"field.blocks.video.placeholder": "Enter a video URL", "field.blocks.video.placeholder": "Videó URL-jének megadása",
"field.blocks.video.url.label": "Video-URL", "field.blocks.video.url.label": "Videó URL",
"field.blocks.video.url.placeholder": "https://youtube.com/?v=", "field.blocks.video.url.placeholder": "https://youtube.com/?v=",
"field.files.empty": "Nincs fálj kiválasztva", "field.files.empty": "Nincs fálj kiválasztva",
"field.layout.delete": "Delete layout", "field.layout.delete": "Elrendezés törlése",
"field.layout.delete.confirm": "Do you really want to delete this layout?", "field.layout.delete.confirm": "Tényleg törölni szeretnéd ezt az elrendezést?",
"field.layout.empty": "No rows yet", "field.layout.empty": "Még nincsenek sorok",
"field.layout.select": "Select a layout", "field.layout.select": "Válassz elrendezést",
"field.pages.empty": "Nincs oldal kiválasztva", "field.pages.empty": "Nincs oldal kiválasztva",
"field.structure.delete.confirm": "Biztos t\u00f6r\u00f6lni szeretn\u00e9d ezt a bejegyz\u00e9st?", "field.structure.delete.confirm": "Biztos t\u00f6r\u00f6lni szeretn\u00e9d ezt a bejegyz\u00e9st?",
"field.structure.empty": "Nincs m\u00e9g bejegyz\u00e9s", "field.structure.empty": "Nincs m\u00e9g bejegyz\u00e9s",
"field.users.empty": "Nincs felhasználó kiválasztva", "field.users.empty": "Nincs felhasználó kiválasztva",
"file.blueprint": "This file has no blueprint yet. You can define the setup in <strong>/site/blueprints/files/{blueprint}.yml</strong>", "file.blueprint": "Ehhez a fájlhoz még nem tartozik oldalsablon. Itt hozhatod létre: <strong>/site/blueprints/files/{blueprint}.yml</strong>",
"file.delete.confirm": "Biztos törölni akarod ezt a fájlt: <br><strong>{filename}</strong>?", "file.delete.confirm": "Biztos törölni akarod ezt a fájlt: <br><strong>{filename}</strong>?",
"file.sort": "Change position", "file.sort": "Sorrend megváltoztatása",
"files": "Fájlok", "files": "Fájlok",
"files.empty": "Még nincsenek fájlok", "files.empty": "Még nincsenek fájlok",
"hide": "Hide", "hide": "Elrejtés",
"hour": "Óra", "hour": "Óra",
"import": "Import", "import": "Importálás",
"insert": "Beilleszt", "insert": "Beilleszt",
"insert.after": "Insert after", "insert.after": "Beszúrás mögé",
"insert.before": "Insert before", "insert.before": "Beszúrás elé",
"install": "Telepítés", "install": "Telepítés",
"installation": "Telepítés", "installation": "Telepítés",
@ -321,7 +323,7 @@
"language.direction.ltr": "Balról jobbra", "language.direction.ltr": "Balról jobbra",
"language.direction.rtl": "Jobbról balra", "language.direction.rtl": "Jobbról balra",
"language.locale": "PHP locale sztring", "language.locale": "PHP locale sztring",
"language.locale.warning": "You are using a custom locale set up. Please modify it in the language file in /site/languages", "language.locale.warning": "Egyedi nyelvi készletet használsz. Kérlek módosítsd a nyelvhez tartozó fájlt az alábbi mappában: /site/languages",
"language.name": "Név", "language.name": "Név",
"language.updated": "A nyelv frissítve lett", "language.updated": "A nyelv frissítve lett",
@ -345,7 +347,7 @@
"loading": "Betöltés", "loading": "Betöltés",
"lock.unsaved": "Nem mentett változások", "lock.unsaved": "Nem mentett változások",
"lock.unsaved.empty": "There are no more unsaved changes", "lock.unsaved.empty": "Nincsenek nem mentett változások",
"lock.isLocked": "Nem mentett <strong>{email}</strong> változások", "lock.isLocked": "Nem mentett <strong>{email}</strong> változások",
"lock.file.isLocked": "A fájlt jelenleg {email} szerkeszti és nem módosítható.", "lock.file.isLocked": "A fájlt jelenleg {email} szerkeszti és nem módosítható.",
"lock.page.isLocked": "Az oldalt jelenleg {email} szerkeszti és nem módosítható.", "lock.page.isLocked": "Az oldalt jelenleg {email} szerkeszti és nem módosítható.",
@ -353,20 +355,20 @@
"lock.isUnlocked": "A nem mentett módosításokat egy másik felhasználó felülírta. A módosításokat manuálisan egyesítheted.", "lock.isUnlocked": "A nem mentett módosításokat egy másik felhasználó felülírta. A módosításokat manuálisan egyesítheted.",
"login": "Bejelentkezés", "login": "Bejelentkezés",
"login.code.label.login": "Login code", "login.code.label.login": "Bejelentkezéshez szükséges kód",
"login.code.label.password-reset": "Password reset code", "login.code.label.password-reset": "Jelszóvisszaállításhoz szükséges kód",
"login.code.placeholder.email": "000 000", "login.code.placeholder.email": "000 000",
"login.code.text.email": "If your email address is registered, the requested code was sent via email.", "login.code.text.email": "Amennyiben az email-címed létezik a rendszerben, a kódot oda küldjük el.",
"login.email.login.body": "Hi {user.nameOrEmail},\n\nYou recently requested a login code for the Panel of {site}.\nThe following login code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a login code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.", "login.email.login.body": "Helló {user.nameOrEmail},\n\nNemrégiben bejelentkezési kódot igényeltél a(z) {site} Paneljéhez.\nAz alábbi kód {timeout} percig lesz érvényes:\n\n{code}\n\nHa nem te igényelted a kódot, kérlek hagyd figyelmen kívül ezt az emailt, kérdések esetén pedig vedd fel a kapcsolatot az oldal Adminisztrátorával.\nBiztonsági okokból kérjük NE továbbítsd ezt az emailt.",
"login.email.login.subject": "Your login code", "login.email.login.subject": "Bejelentkezési kódod",
"login.email.password-reset.body": "Hi {user.nameOrEmail},\n\nYou recently requested a password reset code for the Panel of {site}.\nThe following password reset code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a password reset code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.", "login.email.password-reset.body": "Helló {user.nameOrEmail},\n\nNemrégiben jelszóvisszaállítási kódot igényeltél a(z) {site} Paneljéhez.\nAz alábbi jelszóvisszaállítási kód {timeout} percig lesz érvényes:\n\n{code}\n\nHa nem te igényelted a jelszóvisszaállítási kódot, kérlek hagyd figyelmen kívül ezt az emailt, kérdések esetén pedig vedd fel a kapcsolatot az oldal Adminisztrátorával.\nBiztonsági okokból kérjük NE továbbítsd ezt az emailt.",
"login.email.password-reset.subject": "Your password reset code", "login.email.password-reset.subject": "Jelszóvisszaállítási kódod",
"login.remember": "Maradjak bejelentkezve", "login.remember": "Maradjak bejelentkezve",
"login.reset": "Reset password", "login.reset": "Jelszó visszaállítása",
"login.toggleText.code.email": "Login via email", "login.toggleText.code.email": "Bejelentkezés emaillel",
"login.toggleText.code.email-password": "Login with password", "login.toggleText.code.email-password": "Bejelentkezés jelszóval",
"login.toggleText.password-reset.email": "Forgot your password?", "login.toggleText.password-reset.email": "Elfelejtetted a jelszavad?",
"login.toggleText.password-reset.email-password": "← Back to login", "login.toggleText.password-reset.email-password": "← Vissza a bejelentkezéshez",
"logout": "Kijelentkezés", "logout": "Kijelentkezés",
@ -392,20 +394,20 @@
"more": "Több", "more": "Több",
"name": "Név", "name": "Név",
"next": "Következő", "next": "Következő",
"no": "no", "no": "nem",
"off": "ki", "off": "ki",
"on": "be", "on": "be",
"open": "Megnyitás", "open": "Megnyitás",
"open.newWindow": "Open in new window", "open.newWindow": "Megnyitás új ablakban",
"options": "Beállítások", "options": "Beállítások",
"options.none": "No options", "options.none": "Nincsnek beállítások",
"orientation": "Tájolás", "orientation": "Tájolás",
"orientation.landscape": "Fekvő", "orientation.landscape": "Fekvő",
"orientation.portrait": "Álló", "orientation.portrait": "Álló",
"orientation.square": "Négyzetes", "orientation.square": "Négyzetes",
"page.blueprint": "This page has no blueprint yet. You can define the setup in <strong>/site/blueprints/pages/{blueprint}.yml</strong>", "page.blueprint": "Ehhez az oldalhoz még nem tartozik oldalsablon. Itt hozhatod létre: <strong>/site/blueprints/pages/{blueprint}.yml</strong>",
"page.changeSlug": "URL v\u00e1ltoztat\u00e1sa", "page.changeSlug": "URL v\u00e1ltoztat\u00e1sa",
"page.changeSlug.fromTitle": "L\u00e9trehoz\u00e1s c\u00edmb\u0151l", "page.changeSlug.fromTitle": "L\u00e9trehoz\u00e1s c\u00edmb\u0151l",
"page.changeStatus": "Állapot módosítása", "page.changeStatus": "Állapot módosítása",
@ -419,10 +421,10 @@
"page.duplicate.appendix": "Másol", "page.duplicate.appendix": "Másol",
"page.duplicate.files": "Fájlok másolása", "page.duplicate.files": "Fájlok másolása",
"page.duplicate.pages": "Oldalak másolása", "page.duplicate.pages": "Oldalak másolása",
"page.sort": "Change position", "page.sort": "Sorrend megváltoztatása",
"page.status": "Állapot", "page.status": "Állapot",
"page.status.draft": "Piszkozat", "page.status.draft": "Piszkozat",
"page.status.draft.description": "The page is in draft mode and only visible for logged in editors or via secret link", "page.status.draft.description": "Ez az oldal jelenleg piszkozat és csak bejelentkezett szerkesztők számára, vagy egy titkos linken keresztül érhető el",
"page.status.listed": "Publikus", "page.status.listed": "Publikus",
"page.status.listed.description": "Az oldal mindenki számára elérhető", "page.status.listed.description": "Az oldal mindenki számára elérhető",
"page.status.unlisted": "Nem listázott", "page.status.unlisted": "Nem listázott",
@ -437,18 +439,18 @@
"pagination.page": "Oldal", "pagination.page": "Oldal",
"password": "Jelsz\u00f3", "password": "Jelsz\u00f3",
"paste": "Paste", "paste": "Beillesztés",
"paste.after": "Paste after", "paste.after": "Beillesztés utána",
"pixel": "Pixel", "pixel": "Pixel",
"plugins": "Plugins", "plugins": "Pluginek",
"prev": "Előző", "prev": "Előző",
"preview": "Preview", "preview": "Előnézet",
"remove": "Eltávolítás", "remove": "Eltávolítás",
"rename": "Átnevezés", "rename": "Átnevezés",
"replace": "Cser\u00e9l", "replace": "Cser\u00e9l",
"retry": "Próbáld újra", "retry": "Próbáld újra",
"revert": "Visszavon\u00e1s", "revert": "Visszavon\u00e1s",
"revert.confirm": "Do you really want to <strong>delete all unsaved changes</strong>?", "revert.confirm": "Tényleg <strong>törölni szeretnél minden nem mentett változtatást</strong>?",
"role": "Szerepkör", "role": "Szerepkör",
"role.admin.description": "Az adminisztrátornak minden joga van", "role.admin.description": "Az adminisztrátornak minden joga van",
@ -461,15 +463,15 @@
"save": "Ment\u00e9s", "save": "Ment\u00e9s",
"search": "Keresés", "search": "Keresés",
"search.min": "Enter {min} characters to search", "search.min": "A kereséshez írj be minimum {min} karaktert",
"search.all": "Show all", "search.all": "Összes mutatása",
"search.results.none": "No results", "search.results.none": "Nincs találat",
"section.required": "The section is required", "section.required": "Ez a szakasz kötelező",
"select": "Kiválasztás", "select": "Kiválasztás",
"settings": "Beállítások", "settings": "Beállítások",
"show": "Show", "show": "Mutat",
"size": "Méret", "size": "Méret",
"slug": "URL n\u00e9v", "slug": "URL n\u00e9v",
"sort": "Rendezés", "sort": "Rendezés",
@ -477,29 +479,29 @@
"template": "Sablon", "template": "Sablon",
"today": "Ma", "today": "Ma",
"server": "Server", "server": "Szerver",
"site.blueprint": "The site has no blueprint yet. You can define the setup in <strong>/site/blueprints/site.yml</strong>", "site.blueprint": "Ehhez a weblaphoz még nem tartozik oldalsablon. Itt hozhatod létre: <strong>/site/blueprints/site.yml</strong>",
"toolbar.button.code": "Kód", "toolbar.button.code": "Kód",
"toolbar.button.bold": "F\u00e9lk\u00f6v\u00e9r sz\u00f6veg", "toolbar.button.bold": "F\u00e9lk\u00f6v\u00e9r sz\u00f6veg",
"toolbar.button.email": "Email", "toolbar.button.email": "Email",
"toolbar.button.headings": "Cím", "toolbar.button.headings": "Címsor",
"toolbar.button.heading.1": "Cím 1", "toolbar.button.heading.1": "Címsor 1",
"toolbar.button.heading.2": "Cím 2", "toolbar.button.heading.2": "Címsor 2",
"toolbar.button.heading.3": "Cím 3", "toolbar.button.heading.3": "Címsor 3",
"toolbar.button.heading.4": "Heading 4", "toolbar.button.heading.4": "Címsor 4",
"toolbar.button.heading.5": "Heading 5", "toolbar.button.heading.5": "Címsor 5",
"toolbar.button.heading.6": "Heading 6", "toolbar.button.heading.6": "Címsor 6",
"toolbar.button.italic": "Dőlt szöveg", "toolbar.button.italic": "Dőlt szöveg",
"toolbar.button.file": "Fájl", "toolbar.button.file": "Fájl",
"toolbar.button.file.select": "Válassz egy fájlt", "toolbar.button.file.select": "Válassz egy fájlt",
"toolbar.button.file.upload": "Fájl feltöltése", "toolbar.button.file.upload": "Fájl feltöltése",
"toolbar.button.link": "Link", "toolbar.button.link": "Link",
"toolbar.button.paragraph": "Paragraph", "toolbar.button.paragraph": "Bekezdés",
"toolbar.button.strike": "Strike-through", "toolbar.button.strike": "Áthúzott szöveg",
"toolbar.button.ol": "Rendezett lista", "toolbar.button.ol": "Rendezett lista",
"toolbar.button.underline": "Underline", "toolbar.button.underline": "Aláhúzott szöveg",
"toolbar.button.ul": "Rendezetlen lista", "toolbar.button.ul": "Rendezetlen lista",
"translation.author": "A Kirby csapata", "translation.author": "A Kirby csapata",
@ -508,17 +510,17 @@
"translation.locale": "hu_HU", "translation.locale": "hu_HU",
"upload": "Feltöltés", "upload": "Feltöltés",
"upload.error.cantMove": "The uploaded file could not be moved", "upload.error.cantMove": "A feltöltött fájlt nem sikerült áthelyezni",
"upload.error.cantWrite": "Failed to write file to disk", "upload.error.cantWrite": "Hiba a fájl lemezre írása közben",
"upload.error.default": "The file could not be uploaded", "upload.error.default": "A fájlt nem sikerült feltölteni",
"upload.error.extension": "File upload stopped by extension", "upload.error.extension": "A fájlfeltöltés egy kiterjesztés miatt megszakadt",
"upload.error.formSize": "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the form", "upload.error.formSize": "A feltöltendő fájl mérete nagyobb, mint az űrlap MAX_FILE_SIZE szabályában beállított érték",
"upload.error.iniPostSize": "The uploaded file exceeds the post_max_size directive in php.ini", "upload.error.iniPostSize": "A feltöltendő fájl mérete nagyobb, mint a php.ini post_max_size szabályában beállított érték",
"upload.error.iniSize": "The uploaded file exceeds the upload_max_filesize directive in php.ini", "upload.error.iniSize": "A feltöltendő fájl mérete nagyobb, mint a php.ini upload_max_filesize szabályában beállított érték",
"upload.error.noFile": "No file was uploaded", "upload.error.noFile": "Nem lett fájl feltöltve",
"upload.error.noFiles": "No files were uploaded", "upload.error.noFiles": "Nem lettek fájlok feltöltve",
"upload.error.partial": "The uploaded file was only partially uploaded", "upload.error.partial": "A fájl feltöltése csak részben sikerült",
"upload.error.tmpDir": "Missing a temporary folder", "upload.error.tmpDir": "Hiányzik egy átmeneti mappa",
"upload.errors": "Hiba", "upload.errors": "Hiba",
"upload.progress": "Feltöltés...", "upload.progress": "Feltöltés...",
@ -526,7 +528,7 @@
"url.placeholder": "https://pelda.hu", "url.placeholder": "https://pelda.hu",
"user": "Felhasználó", "user": "Felhasználó",
"user.blueprint": "You can define additional sections and form fields for this user role in <strong>/site/blueprints/users/{blueprint}.yml</strong>", "user.blueprint": "További szakaszokat és mezőket adhatsz meg ehhez a felhasználói szerepkörhöz itt: <strong>/site/blueprints/users/{blueprint}.yml</strong>",
"user.changeEmail": "Email módosítása", "user.changeEmail": "Email módosítása",
"user.changeLanguage": "Nyelv módosítása", "user.changeLanguage": "Nyelv módosítása",
"user.changeName": "Felhasználó átnevezése", "user.changeName": "Felhasználó átnevezése",
@ -546,12 +548,12 @@
"view.account": "Fi\u00f3kod", "view.account": "Fi\u00f3kod",
"view.installation": "Telep\u00edt\u00e9s", "view.installation": "Telep\u00edt\u00e9s",
"view.languages": "Nyelvek", "view.languages": "Nyelvek",
"view.resetPassword": "Reset password", "view.resetPassword": "Jelszó visszaállítása",
"view.site": "Weboldal", "view.site": "Weboldal",
"view.system": "System", "view.system": "Rendszer",
"view.users": "Felhaszn\u00e1l\u00f3k", "view.users": "Felhaszn\u00e1l\u00f3k",
"welcome": "Üdvözlünk", "welcome": "Üdvözlünk",
"year": "Év", "year": "Év",
"yes": "yes" "yes": "igen"
} }

View file

@ -157,6 +157,8 @@
"error.template.default.notFound": "Templat bawaan tidak ada", "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.user.changeEmail.permission": "Anda tidak diizinkan mengubah surel dari pengguna \"{name}\"", "error.user.changeEmail.permission": "Anda tidak diizinkan mengubah surel dari pengguna \"{name}\"",
"error.user.changeLanguage.permission": "Anda tidak diizinkan mengubah bahasa dari pengguna \"{name}\"", "error.user.changeLanguage.permission": "Anda tidak diizinkan mengubah bahasa dari pengguna \"{name}\"",
"error.user.changeName.permission": "Anda tidak diizinkan mengubah nama dari pengguna \"{name}\"", "error.user.changeName.permission": "Anda tidak diizinkan mengubah nama dari pengguna \"{name}\"",

View file

@ -67,7 +67,7 @@
"error.blocks.max.singular": "Ekki meira en einn bálkur", "error.blocks.max.singular": "Ekki meira en einn bálkur",
"error.blocks.min.plural": "Minnst {min}. bálka", "error.blocks.min.plural": "Minnst {min}. bálka",
"error.blocks.min.singular": "Allavegana einn bálkur takk", "error.blocks.min.singular": "Allavegana einn bálkur takk",
"error.blocks.validation": "Það er villa í bálk {index}", "error.blocks.validation": "Það er villa í bálki númer {index}. Klikkaðu á bálkinn og finndu villuna. Það er væntanlega rauðlitur rammi utan um villuna.",
"error.email.preset.notFound": "Netfangstillingarnar: \"{name}\" fundust ekki", "error.email.preset.notFound": "Netfangstillingarnar: \"{name}\" fundust ekki",
@ -109,14 +109,14 @@
"error.license.format": "Gildur leyfiskóði hér", "error.license.format": "Gildur leyfiskóði hér",
"error.license.email": "Almennilegt netfang hér", "error.license.email": "Almennilegt netfang hér",
"error.license.verification": "Ekki heppnaðist að staðfest leyfið", "error.license.verification": "Ekki heppnaðist að staðfesta leyfið",
"error.offline": "Stjórnborðið er óvirkt eins og stendur.", "error.offline": "Stjórnborðið er óvirkt eins og stendur.",
"error.page.changeSlug.permission": "Þú hefur ekkert leyfi til þess að breyta slóðarforskeytinu fyrir \"{slug}\"", "error.page.changeSlug.permission": "Þú hefur ekkert leyfi til þess að breyta slóðarforskeytinu fyrir \"{slug}\"",
"error.page.changeStatus.incomplete": "Það eru villur á síðunni og við getum ekki gefið hana út", "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.permission": "Stöðu síðunnar var ekki hægt að breyta",
"error.page.changeStatus.toDraft.invalid": "Síðunn \"{slug}\" er ekki hægt að breyta í uppkast", "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.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.changeTemplate.permission": "Þú hefur engan veginn leyfi til að breyta sniðmáti fyrir síðuna \"{slug}\"",
"error.page.changeTitle.empty": "Titillinn getur ekki verið óskilgreindur", "error.page.changeTitle.empty": "Titillinn getur ekki verið óskilgreindur",
@ -157,6 +157,8 @@
"error.template.default.notFound": "Ekkert sjálfgefið sniðmát fannst", "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",
"error.user.changeEmail.permission": "Þú mátt ekkert breyta netfangi notandans \"{name}\"", "error.user.changeEmail.permission": "Þú mátt ekkert breyta netfangi notandans \"{name}\"",
"error.user.changeLanguage.permission": "Þú hefur ekki leyfi til að breyta tungumáli notandans \"{name}\"", "error.user.changeLanguage.permission": "Þú hefur ekki leyfi til að breyta tungumáli notandans \"{name}\"",
"error.user.changeName.permission": "Þú mátt alls ekki breyta nafni notandans \"{name}\"", "error.user.changeName.permission": "Þú mátt alls ekki breyta nafni notandans \"{name}\"",
@ -201,7 +203,7 @@
"error.validation.ip": "Skráðu ákjósanlega IP tölu", "error.validation.ip": "Skráðu ákjósanlega IP tölu",
"error.validation.less": "Skráðu gildi lægra en {max}", "error.validation.less": "Skráðu gildi lægra en {max}",
"error.validation.match": "Gildið er ekki eftir væntingum", "error.validation.match": "Gildið er ekki eftir væntingum",
"error.validation.max": "Skráð gildi sem er ekki hærra en {max}", "error.validation.max": "Skráðu gildi sem er ekki hærra en {max}",
"error.validation.maxlength": "Veldu eitthvað styttra. (hámark {max} stafir)", "error.validation.maxlength": "Veldu eitthvað styttra. (hámark {max} stafir)",
"error.validation.maxwords": "Ekki skrá fleiri en {max}. orð", "error.validation.maxwords": "Ekki skrá fleiri en {max}. orð",
"error.validation.min": "Skráðu gildi ekki lægra en {min}", "error.validation.min": "Skráðu gildi ekki lægra en {min}",
@ -211,7 +213,7 @@
"error.validation.notcontains": "Skráðu eitthvað sem inniheldur ekki \"{needle}\"", "error.validation.notcontains": "Skráðu eitthvað sem inniheldur ekki \"{needle}\"",
"error.validation.notin": "Ekki skrá neitt af þessu: ({notIn})", "error.validation.notin": "Ekki skrá neitt af þessu: ({notIn})",
"error.validation.option": "Veldu ákjósanlegan kost", "error.validation.option": "Veldu ákjósanlegan kost",
"error.validation.num": "Skráðu ákjósanlega tölu", "error.validation.num": "Notaðu tölugildi",
"error.validation.required": "Skráðu eitthvað", "error.validation.required": "Skráðu eitthvað",
"error.validation.same": "Skráðu \"{other}\"", "error.validation.same": "Skráðu \"{other}\"",
"error.validation.size": "Gildið þarf að vera \"{size}\"", "error.validation.size": "Gildið þarf að vera \"{size}\"",
@ -235,7 +237,7 @@
"field.blocks.delete.confirm.selected": "Viltu virkilega eyða völdum bálkum?", "field.blocks.delete.confirm.selected": "Viltu virkilega eyða völdum bálkum?",
"field.blocks.empty": "Öngvir bálkar enn", "field.blocks.empty": "Öngvir bálkar enn",
"field.blocks.fieldsets.label": "Veldu bálkagerð …", "field.blocks.fieldsets.label": "Veldu bálkagerð …",
"field.blocks.fieldsets.paste": "Notaðu 1{{ shortcut }}1 flýtilyklaaðgerðina til að setja blokkina hér.", "field.blocks.fieldsets.paste": "Notaðu<kbd> {{ shortcut }}</kbd> flýtilyklaaðgerðina til að setja blokkina hér.",
"field.blocks.gallery.name": "Myndasafn", "field.blocks.gallery.name": "Myndasafn",
"field.blocks.gallery.images.empty": "Engar myndir enn", "field.blocks.gallery.images.empty": "Engar myndir enn",
"field.blocks.gallery.images.label": "Myndir", "field.blocks.gallery.images.label": "Myndir",
@ -356,7 +358,7 @@
"login.code.label.login": "Innskráningarkóði", "login.code.label.login": "Innskráningarkóði",
"login.code.label.password-reset": "Kóði fyrir endurstillingu lykilorðs", "login.code.label.password-reset": "Kóði fyrir endurstillingu lykilorðs",
"login.code.placeholder.email": "000 000", "login.code.placeholder.email": "000 000",
"login.code.text.email": "Ef netfangið (e. email) þitt er skráð þá bíður þín nýr tölvupóstur.", "login.code.text.email": "Ef netfangið þitt er skráð þá bíður þín nýr tölvupóstur.",
"login.email.login.body": "Já halló {user.nameOrEmail},\n\nNýlega baðstu um innskráningarkóða fyrir bakendan á sorli.is.\nEftirfarandi kóði er virkur í {timeout} mínútur:\n\n{code}\n\nEf þú óskaðir ekki eftir þessu þá hunsaðu þennan tölvupóst eða talaðu við vefstjóran ef þú vilt fræðast nánar.\nAf öryggisástæðum vinsamlegast áframsendu þennan tölvupóst ALLS EKKI.", "login.email.login.body": "Já halló {user.nameOrEmail},\n\nNýlega baðstu um innskráningarkóða fyrir bakendan á sorli.is.\nEftirfarandi kóði er virkur í {timeout} mínútur:\n\n{code}\n\nEf þú óskaðir ekki eftir þessu þá hunsaðu þennan tölvupóst eða talaðu við vefstjóran ef þú vilt fræðast nánar.\nAf öryggisástæðum vinsamlegast áframsendu þennan tölvupóst ALLS EKKI.",
"login.email.login.subject": "Innskráningarkóðinn þinn", "login.email.login.subject": "Innskráningarkóðinn þinn",
"login.email.password-reset.body": "Nei halló {user.nameOrEmail},\n\nNýverið baðstu um að lykilorði þínu væri endurstillt fyrir bakendan á sorli.is. \nEftirfarandi kóði er virkur í {timeout} mínútur:\n\n{code}\n\nEf þú óskaðir ekki eftir þessu þá hunsaðu þennan tölvupóst eða talaðu við vefstjóran ef þú vilt fræðast nánar.\nAf öryggisástæðum vinsamlegast áframsendu þennan tölvupóst ALLS EKKI.", "login.email.password-reset.body": "Nei halló {user.nameOrEmail},\n\nNýverið baðstu um að lykilorði þínu væri endurstillt fyrir bakendan á sorli.is. \nEftirfarandi kóði er virkur í {timeout} mínútur:\n\n{code}\n\nEf þú óskaðir ekki eftir þessu þá hunsaðu þennan tölvupóst eða talaðu við vefstjóran ef þú vilt fræðast nánar.\nAf öryggisástæðum vinsamlegast áframsendu þennan tölvupóst ALLS EKKI.",
@ -409,7 +411,7 @@
"page.changeSlug": "Breyta vefslóð", "page.changeSlug": "Breyta vefslóð",
"page.changeSlug.fromTitle": "Slóð af titli", "page.changeSlug.fromTitle": "Slóð af titli",
"page.changeStatus": "Breyta stöðu", "page.changeStatus": "Breyta stöðu",
"page.changeStatus.position": "Veldu ákjósanlega stöðu", "page.changeStatus.position": "Veldu ákjósanlega röðun",
"page.changeStatus.select": "Veldu nýja stöðu", "page.changeStatus.select": "Veldu nýja stöðu",
"page.changeTemplate": "Breyta sniðmáti", "page.changeTemplate": "Breyta sniðmáti",
"page.delete.confirm": "Viltu virkilega farga <strong>{title}</strong>?", "page.delete.confirm": "Viltu virkilega farga <strong>{title}</strong>?",
@ -504,7 +506,7 @@
"translation.author": "Kirby Teymið", "translation.author": "Kirby Teymið",
"translation.direction": "ltr", "translation.direction": "ltr",
"translation.name": "Íslenska A137", "translation.name": "Íslenska",
"translation.locale": "is_IS", "translation.locale": "is_IS",
"upload": "Hlaða inn", "upload": "Hlaða inn",
@ -523,7 +525,7 @@
"upload.progress": "Hleð inn…", "upload.progress": "Hleð inn…",
"url": "Slóð", "url": "Slóð",
"url.placeholder": "https://hvitur.is", "url.placeholder": "https://tildaem.is/",
"user": "Notandi", "user": "Notandi",
"user.blueprint": "Þér er óhætt að skilgreina fleiri svæði fyrir þetta notenda hlutverk í <strong>/site/blueprints/users/{role}.yml</strong>", "user.blueprint": "Þér er óhætt að skilgreina fleiri svæði fyrir þetta notenda hlutverk í <strong>/site/blueprints/users/{role}.yml</strong>",

View file

@ -88,7 +88,7 @@
"error.file.mime.missing": "Il MIME type per \"{filename}\" non può essere rilevato", "error.file.mime.missing": "Il MIME type per \"{filename}\" non può essere rilevato",
"error.file.minheight": "L'immagine dev'essere alta almeno {height} pixel", "error.file.minheight": "L'immagine dev'essere alta almeno {height} pixel",
"error.file.minsize": "Il file è troppo leggero", "error.file.minsize": "Il file è troppo leggero",
"error.file.minwidth": "L'immagine dev'essere larga almeno {height} pixel", "error.file.minwidth": "L'immagine dev'essere larga almeno {width} pixel",
"error.file.name.missing": "Il nome del file non può essere vuoto", "error.file.name.missing": "Il nome del file non può essere vuoto",
"error.file.notFound": "Il file non \u00e8 stato trovato", "error.file.notFound": "Il file non \u00e8 stato trovato",
"error.file.orientation": "L'imaggine dev'essere orientata in \"{orientation}\"", "error.file.orientation": "L'imaggine dev'essere orientata in \"{orientation}\"",
@ -157,6 +157,8 @@
"error.template.default.notFound": "Il template \"default\" non esiste", "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",
"error.user.changeEmail.permission": "Non ti è permesso modificare l'indirizzo email di \"{name}\"", "error.user.changeEmail.permission": "Non ti è permesso modificare l'indirizzo email di \"{name}\"",
"error.user.changeLanguage.permission": "Non ti è permesso modificare la lingua per l'utente \"{name}\"", "error.user.changeLanguage.permission": "Non ti è permesso modificare la lingua per l'utente \"{name}\"",
"error.user.changeName.permission": "Non ti è permesso modificare il nome dell'utente \"{name}\"", "error.user.changeName.permission": "Non ti è permesso modificare il nome dell'utente \"{name}\"",

View file

@ -6,7 +6,7 @@
"add": "\ucd94\uac00", "add": "\ucd94\uac00",
"author": "저자", "author": "저자",
"avatar": "프로필 이미지", "avatar": "프로필 이미지",
"back": "복귀", "back": "뒤로",
"cancel": "\ucde8\uc18c", "cancel": "\ucde8\uc18c",
"change": "\ubcc0\uacbd", "change": "\ubcc0\uacbd",
"close": "\ub2eb\uae30", "close": "\ub2eb\uae30",
@ -34,9 +34,9 @@
"delete": "\uc0ad\uc81c", "delete": "\uc0ad\uc81c",
"delete.all": "모두 삭제", "delete.all": "모두 삭제",
"dialog.files.empty": "선택 파일이 없습니다.", "dialog.files.empty": "선택 파일이 없습니다.",
"dialog.pages.empty": "선택 페이지가 없습니다.", "dialog.pages.empty": "선택 페이지가 없습니다.",
"dialog.users.empty": "선택 사용자가 없습니다.", "dialog.users.empty": "선택 사용자가 없습니다.",
"dimensions": "크기", "dimensions": "크기",
"disabled": "비활성화", "disabled": "비활성화",
@ -49,7 +49,7 @@
"email": "\uc774\uba54\uc77c \uc8fc\uc18c", "email": "\uc774\uba54\uc77c \uc8fc\uc18c",
"email.placeholder": "mail@example.com", "email.placeholder": "mail@example.com",
"environment": "환경", "environment": "구동 환경",
"error.access.code": "코드가 올바르지 않습니다.", "error.access.code": "코드가 올바르지 않습니다.",
"error.access.login": "로그인할 수 없습니다.", "error.access.login": "로그인할 수 없습니다.",
@ -157,6 +157,8 @@
"error.template.default.notFound": "기본 템플릿이 없습니다.", "error.template.default.notFound": "기본 템플릿이 없습니다.",
"error.unexpected": "오류가 발생했습니다. 디버그 모드를 활성화해 오류를 확인하세요. https://getkirby.com/docs/reference/system/options/debug",
"error.user.changeEmail.permission": "사용자({name})의 이메일 주소를 변경할 권한이 없습니다.", "error.user.changeEmail.permission": "사용자({name})의 이메일 주소를 변경할 권한이 없습니다.",
"error.user.changeLanguage.permission": "사용자({name})의 언어를 변경할 권한이 없습니다.", "error.user.changeLanguage.permission": "사용자({name})의 언어를 변경할 권한이 없습니다.",
"error.user.changeName.permission": "사용자명({name})을 변경할 권한이 없습니다.", "error.user.changeName.permission": "사용자명({name})을 변경할 권한이 없습니다.",
@ -194,7 +196,7 @@
"error.validation.denied": "취소하세요.", "error.validation.denied": "취소하세요.",
"error.validation.different": "{other}에 포함된 값은 입력할 수 없습니다.", "error.validation.different": "{other}에 포함된 값은 입력할 수 없습니다.",
"error.validation.email": "올바른 이메일 주소를 입력하세요.", "error.validation.email": "올바른 이메일 주소를 입력하세요.",
"error.validation.endswith": "값은 다음으로 끝나야 합니다: {end}", "error.validation.endswith": "값은 다음({end})으로 끝나야 합니다.",
"error.validation.filename": "올바른 파일명을 입력하세요.", "error.validation.filename": "올바른 파일명을 입력하세요.",
"error.validation.in": "{in} 중 하나를 입력하세요.", "error.validation.in": "{in} 중 하나를 입력하세요.",
"error.validation.integer": "올바른 정수를 입력하세요.", "error.validation.integer": "올바른 정수를 입력하세요.",
@ -215,7 +217,7 @@
"error.validation.required": "해당 항목을 확인하세요.", "error.validation.required": "해당 항목을 확인하세요.",
"error.validation.same": "이 값({other})을 입력하세요.", "error.validation.same": "이 값({other})을 입력하세요.",
"error.validation.size": "값의 크기({size})를 확인하세요. ", "error.validation.size": "값의 크기({size})를 확인하세요. ",
"error.validation.startswith": "값은 다음으로 시작해야 합니다: {start}", "error.validation.startswith": "값은 다음({start})으로 시작해야 합니다.",
"error.validation.time": "올바른 시각을 입력하세요.", "error.validation.time": "올바른 시각을 입력하세요.",
"error.validation.time.after": "{time} 이후 시각을 입력하세요.", "error.validation.time.after": "{time} 이후 시각을 입력하세요.",
"error.validation.time.before": "{time} 이전 시각을 입력하세요.", "error.validation.time.before": "{time} 이전 시각을 입력하세요.",
@ -274,7 +276,7 @@
"field.layout.delete": "레이아웃 삭제", "field.layout.delete": "레이아웃 삭제",
"field.layout.delete.confirm": "레이아웃을 삭제할까요?", "field.layout.delete.confirm": "레이아웃을 삭제할까요?",
"field.layout.empty": "레이아웃이 없습니다.", "field.layout.empty": "이 없습니다.",
"field.layout.select": "레이아웃 선택", "field.layout.select": "레이아웃 선택",
"field.pages.empty": "선택한 페이지가 없습니다.", "field.pages.empty": "선택한 페이지가 없습니다.",
@ -392,7 +394,7 @@
"more": "더 보기", "more": "더 보기",
"name": "이름", "name": "이름",
"next": "다음", "next": "다음",
"no": "", "no": "아니요",
"off": "끔", "off": "끔",
"on": "켬", "on": "켬",
"open": "열기", "open": "열기",
@ -482,7 +484,7 @@
"site.blueprint": "블루프린트(<strong>/site/blueprints/site.yml</strong>)를 설정하세요.", "site.blueprint": "블루프린트(<strong>/site/blueprints/site.yml</strong>)를 설정하세요.",
"toolbar.button.code": "코드", "toolbar.button.code": "코드",
"toolbar.button.bold": "강조 1", "toolbar.button.bold": "강조",
"toolbar.button.email": "이메일 주소", "toolbar.button.email": "이메일 주소",
"toolbar.button.headings": "제목", "toolbar.button.headings": "제목",
"toolbar.button.heading.1": "제목 1", "toolbar.button.heading.1": "제목 1",
@ -503,7 +505,7 @@
"toolbar.button.ul": "기호 목록", "toolbar.button.ul": "기호 목록",
"translation.author": "Kirby 팀", "translation.author": "Kirby 팀",
"translation.direction": "왼쪽에서 오른쪽", "translation.direction": "ltr",
"translation.name": "한국어", "translation.name": "한국어",
"translation.locale": "ko_KR", "translation.locale": "ko_KR",
@ -553,5 +555,5 @@
"welcome": "반갑습니다.", "welcome": "반갑습니다.",
"year": "년", "year": "년",
"yes": "아니요" "yes": ""
} }

View file

@ -157,6 +157,8 @@
"error.template.default.notFound": "Nėra šablono pagal nutylėjimą", "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",
"error.user.changeEmail.permission": "Neturite leidimo keisti vartotojo \"{name}\" el. paštą", "error.user.changeEmail.permission": "Neturite leidimo keisti vartotojo \"{name}\" el. paštą",
"error.user.changeLanguage.permission": "Neturite leidimo keisti vartotojo \"{name}\" kalbą", "error.user.changeLanguage.permission": "Neturite leidimo keisti vartotojo \"{name}\" kalbą",
"error.user.changeName.permission": "Neturite leidimo keisti vartotojo \"{name}\" vardą", "error.user.changeName.permission": "Neturite leidimo keisti vartotojo \"{name}\" vardą",

View file

@ -1,20 +1,20 @@
{ {
"account.changeName": "Change your name", "account.changeName": "Endre navnet ditt",
"account.delete": "Delete your account", "account.delete": "Slett kontoen din",
"account.delete.confirm": "Do you really want to delete your account? You will be logged out immediately. Your account cannot be recovered.", "account.delete.confirm": "Er du sikker på at du vil slette kontoen din? Du vil bli logget ut umiddelbart. Kontoen din kan ikke gjenopprettes.",
"add": "Legg til", "add": "Legg til",
"author": "Author", "author": "Forfatter",
"avatar": "Profilbilde", "avatar": "Profilbilde",
"back": "Tilbake", "back": "Tilbake",
"cancel": "Avbryt", "cancel": "Avbryt",
"change": "Endre", "change": "Endre",
"close": "Lukk", "close": "Lukk",
"confirm": "Lagre", "confirm": "Lagre",
"collapse": "Collapse", "collapse": "Skjul",
"collapse.all": "Collapse All", "collapse.all": "Skjule alle",
"copy": "Kopier", "copy": "Kopier",
"copy.all": "Copy all", "copy.all": "Kopier alle",
"create": "Opprett", "create": "Opprett",
"date": "Dato", "date": "Dato",
@ -29,89 +29,89 @@
"days.tue": "Tir", "days.tue": "Tir",
"days.wed": "Ons", "days.wed": "Ons",
"debugging": "Debugging", "debugging": "Feilsøker",
"delete": "Slett", "delete": "Slett",
"delete.all": "Delete all", "delete.all": "Slett alle",
"dialog.files.empty": "No files to select", "dialog.files.empty": "Ingen filer å velge",
"dialog.pages.empty": "No pages to select", "dialog.pages.empty": "Ingen sider å velge",
"dialog.users.empty": "No users to select", "dialog.users.empty": "Ingen brukere å velge",
"dimensions": "Dimensjoner", "dimensions": "Dimensjoner",
"disabled": "Disabled", "disabled": "Deaktivert",
"discard": "Forkast", "discard": "Forkast",
"download": "Download", "download": "Last ned",
"duplicate": "Duplicate", "duplicate": "Dupliser",
"edit": "Rediger", "edit": "Rediger",
"email": "Epost", "email": "Epost",
"email.placeholder": "epost@eksempel.no", "email.placeholder": "epost@eksempel.no",
"environment": "Environment", "environment": "Miljø",
"error.access.code": "Invalid code", "error.access.code": "Ugyldig kode",
"error.access.login": "Ugyldig innlogging", "error.access.login": "Ugyldig innlogging",
"error.access.panel": "Du har ikke tilgang til panelet", "error.access.panel": "Du har ikke tilgang til panelet",
"error.access.view": "You are not allowed to access this part of the panel", "error.access.view": "Du har ikke tilgang til denne delen av panelet",
"error.avatar.create.fail": "Profilbildet kunne ikke lastes opp", "error.avatar.create.fail": "Profilbildet kunne ikke lastes opp",
"error.avatar.delete.fail": "Profil bildet kunne ikke bli slette", "error.avatar.delete.fail": "Profilbildet kunne ikke slettes",
"error.avatar.dimensions.invalid": "Vennligst hold profilbildets bredde og høyde under 3000 piksler", "error.avatar.dimensions.invalid": "Vennligst hold profilbildets bredde og høyde under 3000 piksler",
"error.avatar.mime.forbidden": "Ugyldig MIME-type", "error.avatar.mime.forbidden": "Ugyldig MIME-type",
"error.blueprint.notFound": "Blueprint \"{name}\" kunne ikke lastes inn", "error.blueprint.notFound": "Blueprint \"{name}\" kunne ikke lastes inn",
"error.blocks.max.plural": "You must not add more than {max} blocks", "error.blocks.max.plural": "Du kan ikke legge til flere enn {max} blokker",
"error.blocks.max.singular": "You must not add more than one block", "error.blocks.max.singular": "Du kan ikke legge til mer enn en blokk",
"error.blocks.min.plural": "You must add at least {min} blocks", "error.blocks.min.plural": "Du må legge til minst {min} blokker",
"error.blocks.min.singular": "You must add at least one block", "error.blocks.min.singular": "Du må legge til minst en blokk",
"error.blocks.validation": "There's an error in block {index}", "error.blocks.validation": "Det er en feil i blokken {index}",
"error.email.preset.notFound": "E-postinnstillingen \"{name}\" ble ikke funnet", "error.email.preset.notFound": "E-postinnstillingen \"{name}\" ble ikke funnet",
"error.field.converter.invalid": "Ugyldig omformer \"{converter}\"", "error.field.converter.invalid": "Ugyldig omformer \"{converter}\"",
"error.file.changeName.empty": "The name must not be empty", "error.file.changeName.empty": "Navnet kan ikke være tomt",
"error.file.changeName.permission": "Du er ikke tillatt å endre navnet til \"{filename}\"", "error.file.changeName.permission": "Du har ikke rettighet til å endre navnet til \"{filename}\"",
"error.file.duplicate": "En fil med navnet \"{filename}\" eksisterer allerede", "error.file.duplicate": "En fil med navnet \"{filename}\" eksisterer allerede",
"error.file.extension.forbidden": "Ugyldig filtype", "error.file.extension.forbidden": "Ugyldig filtype",
"error.file.extension.invalid": "Invalid extension: {extension}", "error.file.extension.invalid": "Ugyldig utvidelse: {extension}",
"error.file.extension.missing": "Du kan ikke laste opp filer uten filtype", "error.file.extension.missing": "Du kan ikke laste opp filer uten filtype",
"error.file.maxheight": "The height of the image must not exceed {height} pixels", "error.file.maxheight": "Høyden til bildet kan ikke overgå {height} piksler",
"error.file.maxsize": "The file is too large", "error.file.maxsize": "Filen er for stor",
"error.file.maxwidth": "The width of the image must not exceed {width} pixels", "error.file.maxwidth": "Bredden til bildet kan ikke overgå {width} piksler",
"error.file.mime.differs": "Den opplastede filen må være av samme MIME-type \"{mime}\"", "error.file.mime.differs": "Den opplastede filen må være av samme MIME-type \"{mime}\"",
"error.file.mime.forbidden": "Mediatypen \"{mime}\" er ikke tillatt", "error.file.mime.forbidden": "Mediatypen \"{mime}\" er ikke tillatt",
"error.file.mime.invalid": "Invalid mime type: {mime}", "error.file.mime.invalid": "Ugyldig mediatype: {mime}",
"error.file.mime.missing": "Mediatypen for \"{filename}\" kan ikke gjenkjennes", "error.file.mime.missing": "Mediatypen for \"{filename}\" kan ikke gjenkjennes",
"error.file.minheight": "The height of the image must be at least {height} pixels", "error.file.minheight": "Høyden til bildet må være minst {height} piksler",
"error.file.minsize": "The file is too small", "error.file.minsize": "Filen er for liten",
"error.file.minwidth": "The width of the image must be at least {width} pixels", "error.file.minwidth": "Bredden til bildet må være minst {width} piksler",
"error.file.name.missing": "Filnavnet kan ikke være tomt", "error.file.name.missing": "Filnavnet kan ikke være tomt",
"error.file.notFound": "Filen kunne ikke bli funnet", "error.file.notFound": "Finner ikke filen",
"error.file.orientation": "The orientation of the image must be \"{orientation}\"", "error.file.orientation": "Bilderetningen må være \"{orientation}\"",
"error.file.type.forbidden": "Du har ikke lov til å laste opp filer av typen {type}", "error.file.type.forbidden": "Du har ikke lov til å laste opp filer av typen {type}",
"error.file.type.invalid": "Invalid file type: {type}", "error.file.type.invalid": "Ugyldig filtype: {type}",
"error.file.undefined": "Filen kunne ikke bli funnet", "error.file.undefined": "Finner ikke filen",
"error.form.incomplete": "Vennligst fiks alle feil…", "error.form.incomplete": "Vennligst fiks alle feil…",
"error.form.notSaved": "Skjemaet kunne ikke lagres", "error.form.notSaved": "Skjemaet kunne ikke lagres",
"error.language.code": "Please enter a valid code for the language", "error.language.code": "Vennligst skriv inn gyldig språkkode",
"error.language.duplicate": "The language already exists", "error.language.duplicate": "Språket eksisterer allerede",
"error.language.name": "Please enter a valid name for the language", "error.language.name": "Vennligst skriv inn et gyldig navn for språket",
"error.language.notFound": "The language could not be found", "error.language.notFound": "Finner ikke språket",
"error.layout.validation.block": "There's an error in block {blockIndex} in layout {layoutIndex}", "error.layout.validation.block": "Det er en feil i blokk {blockIndex} i layout {layoutIndex}",
"error.layout.validation.settings": "There's an error in layout {index} settings", "error.layout.validation.settings": "Det er en feil i layout {index} innstillinger",
"error.license.format": "Please enter a valid license key", "error.license.format": "Vennligst skriv inn gyldig lisensnøkkel",
"error.license.email": "Vennligst skriv inn en gyldig e-postadresse", "error.license.email": "Vennligst skriv inn en gyldig e-postadresse",
"error.license.verification": "The license could not be verified", "error.license.verification": "Lisensen kunne ikke verifiseres",
"error.offline": "The Panel is currently offline", "error.offline": "Panelet er i øyeblikket offline",
"error.page.changeSlug.permission": "Du kan ikke endre URLen for denne siden", "error.page.changeSlug.permission": "Du kan ikke endre URLen for denne siden",
"error.page.changeStatus.incomplete": "Siden har feil og kan ikke publiseres", "error.page.changeStatus.incomplete": "Siden har feil og kan ikke publiseres",
@ -125,28 +125,28 @@
"error.page.delete": "Siden \"{slug}\" kan ikke slettes", "error.page.delete": "Siden \"{slug}\" kan ikke slettes",
"error.page.delete.confirm": "Vennligst skriv inn sidens tittel for å bekrefte", "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.hasChildren": "Siden har undersider og kan derfor ikke slettes",
"error.page.delete.permission": "Du har ikke tilgang til å slette \"{slug}\"", "error.page.delete.permission": "Du har ikke til å slette \"{slug}\"",
"error.page.draft.duplicate": "Et sideutkast med URL-tillegget \"{slug}\" eksisterer allerede", "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": "En side med URL-tillegget \"{slug}\" eksisterer allerede",
"error.page.duplicate.permission": "You are not allowed to duplicate \"{slug}\"", "error.page.duplicate.permission": "Du har ikke tillatelse til å duplisere \"{slug}\"",
"error.page.notFound": "Siden \"{slug}\" ble ikke funnet", "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.num.invalid": "Vennligst skriv inn et gyldig sorteringsnummer. Tallet må ikke være negativt.",
"error.page.slug.invalid": "Please enter a valid URL appendix", "error.page.slug.invalid": "Vennligst skriv inn en gyldig URL endelse",
"error.page.slug.maxlength": "Slug length must be less than \"{length}\" characters", "error.page.slug.maxlength": "Slug lengden må være mindre enn \"{length}\" karakterer",
"error.page.sort.permission": "Siden \"{slug}\" kan ikke sorteres", "error.page.sort.permission": "Siden \"{slug}\" kan ikke sorteres",
"error.page.status.invalid": "Vennligst angi en gyldig sidestatus", "error.page.status.invalid": "Vennligst angi en gyldig sidestatus",
"error.page.undefined": "Siden kunne ikke bli funnet", "error.page.undefined": "Siden kunne ikke bli funnet",
"error.page.update.permission": "Du har ikke tilgang til å oppdatere \"{slug}\"", "error.page.update.permission": "Du har ikke tillatelse til å oppdatere \"{slug}\"",
"error.section.files.max.plural": "Det er ikke mulig å legge til mer enn {max} filer i seksjonen \"{section}\"", "error.section.files.max.plural": "Det er ikke mulig å legge til mer enn {max} filer i seksjonen \"{section}\"",
"error.section.files.max.singular": "Det er ikke mulig å legge til mer enn én fil i seksjonen \"{section}\"", "error.section.files.max.singular": "Det er ikke mulig å legge til mer enn én fil i seksjonen \"{section}\"",
"error.section.files.min.plural": "The \"{section}\" section requires at least {min} files", "error.section.files.min.plural": "Seksjonen \"{section}\" krever minst {min} filer",
"error.section.files.min.singular": "The \"{section}\" section requires at least one file", "error.section.files.min.singular": "Seksjonen \"{section}\" krever minst en fil",
"error.section.pages.max.plural": "Det er ikke mulig å legge til mer enn {max} sider i \"{section}\" seksjonen", "error.section.pages.max.plural": "Det er ikke mulig å legge til mer enn {max} sider i \"{section}\" seksjonen",
"error.section.pages.max.singular": "Det er ikke mulig å legge til mer enn én side i \"{section}\" seksjonen", "error.section.pages.max.singular": "Det er ikke mulig å legge til mer enn én side i \"{section}\" seksjonen",
"error.section.pages.min.plural": "The \"{section}\" section requires at least {min} pages", "error.section.pages.min.plural": "Seksjonen \"{section}\" krever minst {min} sider",
"error.section.pages.min.singular": "The \"{section}\" section requires at least one page", "error.section.pages.min.singular": "Seksjonen \"{section}\" krever minst en side",
"error.section.notLoaded": "Seksjonen \"{name}\" kunne ikke lastes inn", "error.section.notLoaded": "Seksjonen \"{name}\" kunne ikke lastes inn",
"error.section.type.invalid": "Seksjonstypen \"{type}\" er ikke gyldig", "error.section.type.invalid": "Seksjonstypen \"{type}\" er ikke gyldig",
@ -157,14 +157,16 @@
"error.template.default.notFound": "Standardmalen eksisterer ikke", "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",
"error.user.changeEmail.permission": "Du har ikke tillatelse til å endre e-post for brukeren \"{name}\"", "error.user.changeEmail.permission": "Du har ikke tillatelse til å endre e-post for brukeren \"{name}\"",
"error.user.changeLanguage.permission": "Du har ikke tillatelse til å endre språk for brukeren \"{name}\"", "error.user.changeLanguage.permission": "Du har ikke tillatelse til å endre språk for brukeren \"{name}\"",
"error.user.changeName.permission": "Du har ikke tillatelse til å endre navn for brukeren \"{name}\"", "error.user.changeName.permission": "Du har ikke tillatelse til å endre navn for brukeren \"{name}\"",
"error.user.changePassword.permission": "Du har ikke tillatelse til å endre passord for brukeren \"{name}\"", "error.user.changePassword.permission": "Du har ikke tillatelse til å endre passord for brukeren \"{name}\"",
"error.user.changeRole.lastAdmin": "Rollen for den siste administratoren kan ikke endres", "error.user.changeRole.lastAdmin": "Rollen for den siste administratoren kan ikke endres",
"error.user.changeRole.permission": "Du har ikke tillatelse til å endre rollen for brukeren \"{name}\"", "error.user.changeRole.permission": "Du har ikke tillatelse til å endre rollen for brukeren \"{name}\"",
"error.user.changeRole.toAdmin": "You are not allowed to promote someone to the admin role", "error.user.changeRole.toAdmin": "Du har ikke tillatelse til å endre noen til adminrolle",
"error.user.create.permission": "Du har ikke tilgang til å opprette denne brukeren", "error.user.create.permission": "Du har ikke tillatelse til å opprette denne brukeren",
"error.user.delete": "Denne brukeren kunne ikke bli slettet", "error.user.delete": "Denne brukeren kunne ikke bli slettet",
"error.user.delete.lastAdmin": "Siste administrator kan ikke slettes", "error.user.delete.lastAdmin": "Siste administrator kan ikke slettes",
"error.user.delete.lastUser": "Den siste brukeren kan ikke slettes", "error.user.delete.lastUser": "Den siste brukeren kan ikke slettes",
@ -176,7 +178,7 @@
"error.user.password.invalid": "Vennligst skriv inn et gyldig passord. Passordet må minst være 8 tegn langt.", "error.user.password.invalid": "Vennligst skriv inn et gyldig passord. Passordet må minst være 8 tegn langt.",
"error.user.password.notSame": "Vennligst bekreft passordet", "error.user.password.notSame": "Vennligst bekreft passordet",
"error.user.password.undefined": "Brukeren har ikke et passord", "error.user.password.undefined": "Brukeren har ikke et passord",
"error.user.password.wrong": "Wrong password", "error.user.password.wrong": "Feil passord",
"error.user.role.invalid": "Vennligst skriv inn en gyldig rolle", "error.user.role.invalid": "Vennligst skriv inn en gyldig rolle",
"error.user.undefined": "Brukeren kunne ikke bli funnet", "error.user.undefined": "Brukeren kunne ikke bli funnet",
"error.user.update.permission": "Du har ikke tillatelse til å oppdatere brukeren \"{name}\"", "error.user.update.permission": "Du har ikke tillatelse til å oppdatere brukeren \"{name}\"",
@ -188,9 +190,9 @@
"error.validation.boolean": "Vennligst bekreft eller avslå", "error.validation.boolean": "Vennligst bekreft eller avslå",
"error.validation.contains": "Vennligst skriv inn en verdi som inneholder \"{needle}\"", "error.validation.contains": "Vennligst skriv inn en verdi som inneholder \"{needle}\"",
"error.validation.date": "Vennligst skriv inn en gyldig dato", "error.validation.date": "Vennligst skriv inn en gyldig dato",
"error.validation.date.after": "Please enter a date after {date}", "error.validation.date.after": "Vennligst angi en dato etter {date}",
"error.validation.date.before": "Please enter a date before {date}", "error.validation.date.before": "Vennligst angi en dato før {date}",
"error.validation.date.between": "Please enter a date between {min} and {max}", "error.validation.date.between": "Vennligst angi en dato mellom {min} og {max}",
"error.validation.denied": "Vennligst avslå", "error.validation.denied": "Vennligst avslå",
"error.validation.different": "Verdien kan ikke være \"{other}\"", "error.validation.different": "Verdien kan ikke være \"{other}\"",
"error.validation.email": "Vennligst skriv inn en gyldig e-postadresse", "error.validation.email": "Vennligst skriv inn en gyldig e-postadresse",
@ -217,84 +219,84 @@
"error.validation.size": "Størrelsen på verdien må være \"{size}\"", "error.validation.size": "Størrelsen på verdien må være \"{size}\"",
"error.validation.startswith": "Verdien må starte med \"{start}\"", "error.validation.startswith": "Verdien må starte med \"{start}\"",
"error.validation.time": "Vennligst angi et gyldig tidspunkt", "error.validation.time": "Vennligst angi et gyldig tidspunkt",
"error.validation.time.after": "Please enter a time after {time}", "error.validation.time.after": "Vennligst angi et tidspunkt etter {time}",
"error.validation.time.before": "Please enter a time before {time}", "error.validation.time.before": "Vennligst angi et tidspunkt før {time}",
"error.validation.time.between": "Please enter a time between {min} and {max}", "error.validation.time.between": "Vennligst angi et tidspunkt mellom {min} og {max}",
"error.validation.url": "Vennligst skriv inn en gyldig URL", "error.validation.url": "Vennligst skriv inn en gyldig URL",
"expand": "Expand", "expand": "Utvid",
"expand.all": "Expand All", "expand.all": "Utvid alle",
"field.required": "The field is required", "field.required": "Feltet er påkrevd",
"field.blocks.changeType": "Change type", "field.blocks.changeType": "Endre type",
"field.blocks.code.name": "Kode", "field.blocks.code.name": "Kode",
"field.blocks.code.language": "Språk", "field.blocks.code.language": "Språk",
"field.blocks.code.placeholder": "Your code …", "field.blocks.code.placeholder": "Din kode…",
"field.blocks.delete.confirm": "Do you really want to delete this block?", "field.blocks.delete.confirm": "Er du sikker på at du vil slette denne blokken?",
"field.blocks.delete.confirm.all": "Do you really want to delete all blocks?", "field.blocks.delete.confirm.all": "Er du sikker på at du vil slette alle blokkene?",
"field.blocks.delete.confirm.selected": "Do you really want to delete the selected blocks?", "field.blocks.delete.confirm.selected": "Er du sikker på at du vil slette de valgte blokkene?",
"field.blocks.empty": "No blocks yet", "field.blocks.empty": "Ingen blokker enda",
"field.blocks.fieldsets.label": "Please select a block type …", "field.blocks.fieldsets.label": "Vennligst velg en blokktype…",
"field.blocks.fieldsets.paste": "Press <kbd>{{ shortcut }}</kbd> to paste/import blocks from your clipboard", "field.blocks.fieldsets.paste": "Trykk <kbd>{{ shortcut }}</kbd> for å lime/importere blokker fra din utklippstavle",
"field.blocks.gallery.name": "Gallery", "field.blocks.gallery.name": "Galleri",
"field.blocks.gallery.images.empty": "No images yet", "field.blocks.gallery.images.empty": "Ingen bilder enda",
"field.blocks.gallery.images.label": "Images", "field.blocks.gallery.images.label": "Bilder",
"field.blocks.heading.level": "Level", "field.blocks.heading.level": "Nivå",
"field.blocks.heading.name": "Heading", "field.blocks.heading.name": "Overskrift",
"field.blocks.heading.text": "Text", "field.blocks.heading.text": "Tekst",
"field.blocks.heading.placeholder": "Heading …", "field.blocks.heading.placeholder": "Overskrift…",
"field.blocks.image.alt": "Alternative text", "field.blocks.image.alt": "Alternativ tekst",
"field.blocks.image.caption": "Caption", "field.blocks.image.caption": "Caption",
"field.blocks.image.crop": "Crop", "field.blocks.image.crop": "Beskjær",
"field.blocks.image.link": "Adresse", "field.blocks.image.link": "Adresse",
"field.blocks.image.location": "Location", "field.blocks.image.location": "Plassering",
"field.blocks.image.name": "Bilde", "field.blocks.image.name": "Bilde",
"field.blocks.image.placeholder": "Select an image", "field.blocks.image.placeholder": "Velg et bilde",
"field.blocks.image.ratio": "Ratio", "field.blocks.image.ratio": "Ratio",
"field.blocks.image.url": "Image URL", "field.blocks.image.url": "Bilde URL",
"field.blocks.line.name": "Line", "field.blocks.line.name": "Linje",
"field.blocks.list.name": "List", "field.blocks.list.name": "Liste",
"field.blocks.markdown.name": "Markdown", "field.blocks.markdown.name": "Markdown",
"field.blocks.markdown.label": "Text", "field.blocks.markdown.label": "Tekst",
"field.blocks.markdown.placeholder": "Markdown …", "field.blocks.markdown.placeholder": "Markdown…",
"field.blocks.quote.name": "Quote", "field.blocks.quote.name": "Sitat",
"field.blocks.quote.text.label": "Text", "field.blocks.quote.text.label": "Tekst",
"field.blocks.quote.text.placeholder": "Quote …", "field.blocks.quote.text.placeholder": "Sitat…",
"field.blocks.quote.citation.label": "Citation", "field.blocks.quote.citation.label": "Kildehenvisning",
"field.blocks.quote.citation.placeholder": "by …", "field.blocks.quote.citation.placeholder": "av…",
"field.blocks.text.name": "Text", "field.blocks.text.name": "Tekst",
"field.blocks.text.placeholder": "Text …", "field.blocks.text.placeholder": "Tekst…",
"field.blocks.video.caption": "Caption", "field.blocks.video.caption": "Caption",
"field.blocks.video.name": "Video", "field.blocks.video.name": "Video",
"field.blocks.video.placeholder": "Enter a video URL", "field.blocks.video.placeholder": "Legg til en video URL",
"field.blocks.video.url.label": "Video-URL", "field.blocks.video.url.label": "Video-URL",
"field.blocks.video.url.placeholder": "https://youtube.com/?v=", "field.blocks.video.url.placeholder": "https://youtube.com/?v=",
"field.files.empty": "Ingen filer har blitt valgt", "field.files.empty": "Ingen filer har blitt valgt",
"field.layout.delete": "Delete layout", "field.layout.delete": "Slett layout",
"field.layout.delete.confirm": "Do you really want to delete this layout?", "field.layout.delete.confirm": "Er du sikker på at du vil slette denne layouten?",
"field.layout.empty": "No rows yet", "field.layout.empty": "Ingen rader enda",
"field.layout.select": "Select a layout", "field.layout.select": "Velg en layout",
"field.pages.empty": "Ingen side har blitt valgt", "field.pages.empty": "Ingen side har blitt valgt",
"field.structure.delete.confirm": "\u00d8nsker du virkelig \u00e5 slette denne oppf\u00f8ringen?", "field.structure.delete.confirm": "\u00d8nsker du virkelig \u00e5 slette denne oppf\u00f8ringen?",
"field.structure.empty": "Ingen oppf\u00f8ringer enda", "field.structure.empty": "Ingen oppf\u00f8ringer enda",
"field.users.empty": "Ingen bruker har blitt valgt", "field.users.empty": "Ingen bruker har blitt valgt",
"file.blueprint": "This file has no blueprint yet. You can define the setup in <strong>/site/blueprints/files/{blueprint}.yml</strong>", "file.blueprint": "Denne filen har ikke en blueprint enda. Du kan definere oppsettet i <strong>/site/blueprints/files/{blueprint}.yml</strong>",
"file.delete.confirm": "Vil du virkelig slette denne filen?", "file.delete.confirm": "Vil du virkelig slette denne filen?",
"file.sort": "Change position", "file.sort": "Endre plassering",
"files": "Filer", "files": "Filer",
"files.empty": "Ingen filer ennå", "files.empty": "Ingen filer ennå",
"hide": "Hide", "hide": "Skjul",
"hour": "Time", "hour": "Tid",
"import": "Import", "import": "Importer",
"insert": "Sett Inn", "insert": "Sett Inn",
"insert.after": "Insert after", "insert.after": "Sett inn etter",
"insert.before": "Insert before", "insert.before": "Sett inn før",
"install": "Installer", "install": "Installer",
"installation": "Installasjon", "installation": "Installasjon",
@ -321,7 +323,7 @@
"language.direction.ltr": "Venstre til høyre", "language.direction.ltr": "Venstre til høyre",
"language.direction.rtl": "Høyre til venstre", "language.direction.rtl": "Høyre til venstre",
"language.locale": "PHP locale streng", "language.locale": "PHP locale streng",
"language.locale.warning": "You are using a custom locale set up. Please modify it in the language file in /site/languages", "language.locale.warning": "Du bruker et egendefinert lokalt oppsett. Vennligst endre det i språkfilen i /site/languages",
"language.name": "Navn", "language.name": "Navn",
"language.updated": "Språk har blitt oppdatert", "language.updated": "Språk har blitt oppdatert",
@ -344,29 +346,29 @@
"loading": "Laster inn", "loading": "Laster inn",
"lock.unsaved": "Unsaved changes", "lock.unsaved": "Ulagrede endringer",
"lock.unsaved.empty": "There are no more unsaved changes", "lock.unsaved.empty": "Det er ingen flere ulagrede endringer",
"lock.isLocked": "Unsaved changes by <strong>{email}</strong>", "lock.isLocked": "Ulagrede endringer av <strong>{email}</strong>",
"lock.file.isLocked": "The file is currently being edited by {email} and cannot be changed.", "lock.file.isLocked": "Filen redigeres for øyeblikket av {email} og kan ikke endres.",
"lock.page.isLocked": "The page is currently being edited by {email} and cannot be changed.", "lock.page.isLocked": "Siden redigeres for øyeblikket av {email} og kan ikke endres.",
"lock.unlock": "Unlock", "lock.unlock": "Lås opp",
"lock.isUnlocked": "Your unsaved changes have been overwritten by another user. You can download your changes to merge them manually.", "lock.isUnlocked": "Dine ulagrede endringer har blitt overskrevet av en annen bruker. Du kan laste ned dine endringer for å sammenslå dem manuelt",
"login": "Logg Inn", "login": "Logg Inn",
"login.code.label.login": "Login code", "login.code.label.login": "Login kode",
"login.code.label.password-reset": "Password reset code", "login.code.label.password-reset": "Passord tilbakestillingskode",
"login.code.placeholder.email": "000 000", "login.code.placeholder.email": "000 000",
"login.code.text.email": "If your email address is registered, the requested code was sent via email.", "login.code.text.email": "Dersom din e-post er registrert vil den forespurte koden bli sendt via e-post.",
"login.email.login.body": "Hi {user.nameOrEmail},\n\nYou recently requested a login code for the Panel of {site}.\nThe following login code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a login code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.", "login.email.login.body": "Hei {user.nameOrEmail},\n\nDu ba nylig om en innloggingskode til panelet til {site}.\nFølgende innloggingskode vil være gyldig i {timeout} minutter:\n\n{code}\n\nDersom du ikke ba om en innloggingskode, vennligst ignorer denne e-posten eller kontakt din administrator hvis du har spørsmål.\nFor sikkerhets skyld, vennligst IKKE videresend denne e-posten.",
"login.email.login.subject": "Your login code", "login.email.login.subject": "Din innloggingskode",
"login.email.password-reset.body": "Hi {user.nameOrEmail},\n\nYou recently requested a password reset code for the Panel of {site}.\nThe following password reset code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a password reset code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.", "login.email.password-reset.body": "Hei {user.nameOrEmail},\n\nDu ba nylig om en tilbakestilling av passord til panelet til {site}.\nFølgende tilbakestillingskode vil være gyldig i {timeout} minutter:\n\n{code}\n\nDersom du ikke ba om en tilbakestillingskode, vennligst ignorer denne e-posten eller kontakt din administrator hvis du har spørsmål.\nFor sikkerhets skyld, vennligst IKKE videresend denne e-posten.",
"login.email.password-reset.subject": "Your password reset code", "login.email.password-reset.subject": "Din kode for tilbakestilling av passord",
"login.remember": "Hold meg innlogget", "login.remember": "Hold meg innlogget",
"login.reset": "Reset password", "login.reset": "Tilbakestill passord",
"login.toggleText.code.email": "Login via email", "login.toggleText.code.email": "Logg inn via e-post",
"login.toggleText.code.email-password": "Login with password", "login.toggleText.code.email-password": "Logg inn med passord",
"login.toggleText.password-reset.email": "Forgot your password?", "login.toggleText.password-reset.email": "Glemt passord?",
"login.toggleText.password-reset.email-password": "← Back to login", "login.toggleText.password-reset.email-password": "← Tilbake til innlogging",
"logout": "Logg ut", "logout": "Logg ut",
@ -392,20 +394,20 @@
"more": "Mer", "more": "Mer",
"name": "Navn", "name": "Navn",
"next": "Neste", "next": "Neste",
"no": "no", "no": "nei",
"off": "off", "off": "av",
"on": "on", "on": "",
"open": "Åpne", "open": "Åpne",
"open.newWindow": "Open in new window", "open.newWindow": "Åpne i nytt vindu",
"options": "Alternativer", "options": "Alternativer",
"options.none": "No options", "options.none": "Ingen alternativer",
"orientation": "Orientering", "orientation": "Orientering",
"orientation.landscape": "Landskap", "orientation.landscape": "Landskap",
"orientation.portrait": "Portrett", "orientation.portrait": "Portrett",
"orientation.square": "Kvadrat", "orientation.square": "Kvadrat",
"page.blueprint": "This page has no blueprint yet. You can define the setup in <strong>/site/blueprints/pages/{blueprint}.yml</strong>", "page.blueprint": "Denne siden har ikke en blueprint enda. Du kan definere oppsettet i <strong>/site/blueprints/pages/{blueprint}.yml</strong>",
"page.changeSlug": "Endre URL", "page.changeSlug": "Endre URL",
"page.changeSlug.fromTitle": "Opprett fra tittel", "page.changeSlug.fromTitle": "Opprett fra tittel",
"page.changeStatus": "Endre status", "page.changeStatus": "Endre status",
@ -417,12 +419,12 @@
"page.delete.confirm.title": "Skriv inn sidetittel for å bekrefte", "page.delete.confirm.title": "Skriv inn sidetittel for å bekrefte",
"page.draft.create": "Lag utkast", "page.draft.create": "Lag utkast",
"page.duplicate.appendix": "Kopier", "page.duplicate.appendix": "Kopier",
"page.duplicate.files": "Copy files", "page.duplicate.files": "Kopier filer",
"page.duplicate.pages": "Copy pages", "page.duplicate.pages": "Kopier sider",
"page.sort": "Change position", "page.sort": "Endre plassering",
"page.status": "Status", "page.status": "Status",
"page.status.draft": "Utkast", "page.status.draft": "Utkast",
"page.status.draft.description": "The page is in draft mode and only visible for logged in editors or via secret link", "page.status.draft.description": "Denne siden er i kladdmodus og er kun synlig for innloggede brukere eller via en hemmelig lenke.",
"page.status.listed": "Offentlig", "page.status.listed": "Offentlig",
"page.status.listed.description": "Siden er offentlig og synlig for alle", "page.status.listed.description": "Siden er offentlig og synlig for alle",
"page.status.unlisted": "Unotert", "page.status.unlisted": "Unotert",
@ -437,39 +439,39 @@
"pagination.page": "Side", "pagination.page": "Side",
"password": "Passord", "password": "Passord",
"paste": "Paste", "paste": "Lim inn",
"paste.after": "Paste after", "paste.after": "Lim inn etter",
"pixel": "Piksel", "pixel": "Piksel",
"plugins": "Plugins", "plugins": "Plugins",
"prev": "Forrige", "prev": "Forrige",
"preview": "Preview", "preview": "Forhåndsvisning",
"remove": "Fjern", "remove": "Fjern",
"rename": "Endre navn", "rename": "Endre navn",
"replace": "Erstatt", "replace": "Erstatt",
"retry": "Pr\u00f8v p\u00e5 nytt", "retry": "Pr\u00f8v p\u00e5 nytt",
"revert": "Forkast", "revert": "Forkast",
"revert.confirm": "Do you really want to <strong>delete all unsaved changes</strong>?", "revert.confirm": "Er du sikker på at vil <strong>slette alle ulagrede endringer</strong>?",
"role": "Rolle", "role": "Rolle",
"role.admin.description": "The admin has all rights", "role.admin.description": "Administrator har alle rettigheter",
"role.admin.title": "Admin", "role.admin.title": "Admin",
"role.all": "Alle", "role.all": "Alle",
"role.empty": "Det er ingen brukere med denne rollen", "role.empty": "Det er ingen brukere med denne rollen",
"role.description.placeholder": "Ingen beskrivelse", "role.description.placeholder": "Ingen beskrivelse",
"role.nobody.description": "This is a fallback role without any permissions", "role.nobody.description": "Dette er en fallback rolle uten noen rettigheter.",
"role.nobody.title": "Nobody", "role.nobody.title": "Ingen",
"save": "Lagre", "save": "Lagre",
"search": "Søk", "search": "Søk",
"search.min": "Enter {min} characters to search", "search.min": "Skriv inn {min} tegn for å søke",
"search.all": "Show all", "search.all": "Vis alle",
"search.results.none": "No results", "search.results.none": "Ingen resultater",
"section.required": "The section is required", "section.required": "Denne seksjonen er påkrevd",
"select": "Velg", "select": "Velg",
"settings": "Innstillinger", "settings": "Innstillinger",
"show": "Show", "show": "Vis",
"size": "Størrelse", "size": "Størrelse",
"slug": "URL-appendiks", "slug": "URL-appendiks",
"sort": "Sortere", "sort": "Sortere",
@ -479,27 +481,27 @@
"server": "Server", "server": "Server",
"site.blueprint": "The site has no blueprint yet. You can define the setup in <strong>/site/blueprints/site.yml</strong>", "site.blueprint": "Denne siden har ikke en blueprint enda. Du kan definere oppsettet i <strong>/site/blueprints/site.yml</strong>",
"toolbar.button.code": "Kode", "toolbar.button.code": "Kode",
"toolbar.button.bold": "Tykk tekst", "toolbar.button.bold": "Fet tekst",
"toolbar.button.email": "Epost", "toolbar.button.email": "Epost",
"toolbar.button.headings": "Overskrifter", "toolbar.button.headings": "Overskrifter",
"toolbar.button.heading.1": "Overskrift 1", "toolbar.button.heading.1": "Overskrift 1",
"toolbar.button.heading.2": "Overskrift 2", "toolbar.button.heading.2": "Overskrift 2",
"toolbar.button.heading.3": "Overskrift 3", "toolbar.button.heading.3": "Overskrift 3",
"toolbar.button.heading.4": "Heading 4", "toolbar.button.heading.4": "Overskrift 4",
"toolbar.button.heading.5": "Heading 5", "toolbar.button.heading.5": "Overskrift 5",
"toolbar.button.heading.6": "Heading 6", "toolbar.button.heading.6": "Overskrift 6",
"toolbar.button.italic": "Kursiv tekst", "toolbar.button.italic": "Kursiv tekst",
"toolbar.button.file": "Fil", "toolbar.button.file": "Fil",
"toolbar.button.file.select": "Select a file", "toolbar.button.file.select": "Velg en fil",
"toolbar.button.file.upload": "Upload a file", "toolbar.button.file.upload": "Last opp en fil",
"toolbar.button.link": "Adresse", "toolbar.button.link": "Adresse",
"toolbar.button.paragraph": "Paragraph", "toolbar.button.paragraph": "Avsnitt",
"toolbar.button.strike": "Strike-through", "toolbar.button.strike": "Gjennomstreking",
"toolbar.button.ol": "Ordnet liste", "toolbar.button.ol": "Ordnet liste",
"toolbar.button.underline": "Underline", "toolbar.button.underline": "Understrek",
"toolbar.button.ul": "Punktliste", "toolbar.button.ul": "Punktliste",
"translation.author": "Kirby Team", "translation.author": "Kirby Team",
@ -508,17 +510,17 @@
"translation.locale": "nb_NO", "translation.locale": "nb_NO",
"upload": "Last opp", "upload": "Last opp",
"upload.error.cantMove": "The uploaded file could not be moved", "upload.error.cantMove": "Den opplastede filen kunne ikke flyttes",
"upload.error.cantWrite": "Failed to write file to disk", "upload.error.cantWrite": "Kunne ikke skrive fil til disk",
"upload.error.default": "The file could not be uploaded", "upload.error.default": "Kunne ikke laste opp fil",
"upload.error.extension": "File upload stopped by extension", "upload.error.extension": "Filopplasting stoppet av en utvidelse",
"upload.error.formSize": "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the form", "upload.error.formSize": "Den opplastede filen overskrider MAX_FILE_SIZE direktivet som er spesifisert i skjemaet",
"upload.error.iniPostSize": "The uploaded file exceeds the post_max_size directive in php.ini", "upload.error.iniPostSize": "Den opplastede filen overskrider post_max_size direktivet i php.ini",
"upload.error.iniSize": "The uploaded file exceeds the upload_max_filesize directive in php.ini", "upload.error.iniSize": "Den opplastede filen overskrider upload_max_filesize direktivet i php.ini",
"upload.error.noFile": "No file was uploaded", "upload.error.noFile": "Ingen fil ble lastet opp",
"upload.error.noFiles": "No files were uploaded", "upload.error.noFiles": "Ingen filer ble lastet opp",
"upload.error.partial": "The uploaded file was only partially uploaded", "upload.error.partial": "Den opplastede filen ble bare delvis lastet opp",
"upload.error.tmpDir": "Missing a temporary folder", "upload.error.tmpDir": "Mangler en midlertidig mappe",
"upload.errors": "Feil", "upload.errors": "Feil",
"upload.progress": "Laster opp…", "upload.progress": "Laster opp…",
@ -526,7 +528,7 @@
"url.placeholder": "https://example.com", "url.placeholder": "https://example.com",
"user": "Bruker", "user": "Bruker",
"user.blueprint": "You can define additional sections and form fields for this user role in <strong>/site/blueprints/users/{blueprint}.yml</strong>", "user.blueprint": "Du kan definere flere seksjoner og skjemafelter for denne brukerrollen i <strong>/site/blueprints/users/{blueprint}.yml</strong>",
"user.changeEmail": "Endre e-post", "user.changeEmail": "Endre e-post",
"user.changeLanguage": "Endre språk", "user.changeLanguage": "Endre språk",
"user.changeName": "Angi nytt navn for denne brukeren", "user.changeName": "Angi nytt navn for denne brukeren",
@ -546,12 +548,12 @@
"view.account": "Din konto", "view.account": "Din konto",
"view.installation": "Installasjon", "view.installation": "Installasjon",
"view.languages": "Språk", "view.languages": "Språk",
"view.resetPassword": "Reset password", "view.resetPassword": "Tilbakestill passord",
"view.site": "Side", "view.site": "Side",
"view.system": "System", "view.system": "System",
"view.users": "Brukere", "view.users": "Brukere",
"welcome": "Velkommen", "welcome": "Velkommen",
"year": "År", "year": "År",
"yes": "yes" "yes": "ja"
} }

View file

@ -157,6 +157,8 @@
"error.template.default.notFound": "Het standaard template bestaat niet", "error.template.default.notFound": "Het standaard template bestaat niet",
"error.unexpected": "An unexpected error occurred! Enable debug mode for more info: https://getkirby.com/docs/reference/system/options/debug",
"error.user.changeEmail.permission": "Je hebt geen rechten om het e-mailadres van gebruiker \"{name}\" te wijzigen", "error.user.changeEmail.permission": "Je hebt geen rechten om het e-mailadres van gebruiker \"{name}\" te wijzigen",
"error.user.changeLanguage.permission": "Je hebt geen rechten om de taal voor gebruiker \"{name}\" te wijzigen", "error.user.changeLanguage.permission": "Je hebt geen rechten om de taal voor gebruiker \"{name}\" te wijzigen",
"error.user.changeName.permission": "Je hebt geen rechten om de naam van gebruiker \"{name}\" te wijzigen", "error.user.changeName.permission": "Je hebt geen rechten om de naam van gebruiker \"{name}\" te wijzigen",

View file

@ -1,10 +1,10 @@
{ {
"account.changeName": "Change your name", "account.changeName": "Zmień swoje imię",
"account.delete": "Delete your account", "account.delete": "Usuń swoje konto",
"account.delete.confirm": "Do you really want to delete your account? You will be logged out immediately. Your account cannot be recovered.", "account.delete.confirm": "Czy na pewno chcesz usunąć swoje konto? Zostaniesz natychmiast wylogowany. Twojego konta nie da się odzyskać.",
"add": "Dodaj", "add": "Dodaj",
"author": "Author", "author": "Autor",
"avatar": "Zdj\u0119cie profilowe", "avatar": "Zdj\u0119cie profilowe",
"back": "Wróć", "back": "Wróć",
"cancel": "Anuluj", "cancel": "Anuluj",
@ -14,7 +14,7 @@
"collapse": "Zwiń", "collapse": "Zwiń",
"collapse.all": "Zwiń wszystkie", "collapse.all": "Zwiń wszystkie",
"copy": "Kopiuj", "copy": "Kopiuj",
"copy.all": "Copy all", "copy.all": "Skopiuj wszystko",
"create": "Utwórz", "create": "Utwórz",
"date": "Data", "date": "Data",
@ -29,7 +29,7 @@
"days.tue": "Wt", "days.tue": "Wt",
"days.wed": "\u015ar", "days.wed": "\u015ar",
"debugging": "Debugging", "debugging": "Debugowanie",
"delete": "Usu\u0144", "delete": "Usu\u0144",
"delete.all": "Usuń wszystkie", "delete.all": "Usuń wszystkie",
@ -49,7 +49,7 @@
"email": "Email", "email": "Email",
"email.placeholder": "mail@example.com", "email.placeholder": "mail@example.com",
"environment": "Environment", "environment": "Środowisko",
"error.access.code": "Nieprawidłowy kod", "error.access.code": "Nieprawidłowy kod",
"error.access.login": "Nieprawidłowy login", "error.access.login": "Nieprawidłowy login",
@ -102,7 +102,7 @@
"error.language.code": "Wprowadź poprawny kod języka.", "error.language.code": "Wprowadź poprawny kod języka.",
"error.language.duplicate": "Język już istnieje.", "error.language.duplicate": "Język już istnieje.",
"error.language.name": "Wprowadź poprawną nazwę języka.", "error.language.name": "Wprowadź poprawną nazwę języka.",
"error.language.notFound": "The language could not be found", "error.language.notFound": "Język nie został odnaleziony",
"error.layout.validation.block": "W bloku {blockIndex} w układzie {layoutIndex} jest błąd", "error.layout.validation.block": "W bloku {blockIndex} w układzie {layoutIndex} jest błąd",
"error.layout.validation.settings": "W ustawieniach układu {index} jest błąd", "error.layout.validation.settings": "W ustawieniach układu {index} jest błąd",
@ -111,7 +111,7 @@
"error.license.email": "Wprowadź poprawny adres email", "error.license.email": "Wprowadź poprawny adres email",
"error.license.verification": "Nie udało się zweryfikować licencji", "error.license.verification": "Nie udało się zweryfikować licencji",
"error.offline": "The Panel is currently offline", "error.offline": "Panel jest obecnie offline",
"error.page.changeSlug.permission": "Nie możesz zmienić końcówki adresu URL w \"{slug}\"", "error.page.changeSlug.permission": "Nie możesz zmienić końcówki adresu URL w \"{slug}\"",
"error.page.changeStatus.incomplete": "Strona zawiera błędy i nie można jej opublikować", "error.page.changeStatus.incomplete": "Strona zawiera błędy i nie można jej opublikować",
@ -157,6 +157,8 @@
"error.template.default.notFound": "Domyślny szablon nie istnieje", "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",
"error.user.changeEmail.permission": "Nie masz uprawnień, by zmienić adres e-mail użytkownika \"{name}\"", "error.user.changeEmail.permission": "Nie masz uprawnień, by zmienić adres e-mail użytkownika \"{name}\"",
"error.user.changeLanguage.permission": "Nie masz uprawnień, by zmienić język użytkownika \"{name}\"", "error.user.changeLanguage.permission": "Nie masz uprawnień, by zmienić język użytkownika \"{name}\"",
"error.user.changeName.permission": "Nie masz uprawnień, by zmienić nazwę użytkownika \"{name}\"", "error.user.changeName.permission": "Nie masz uprawnień, by zmienić nazwę użytkownika \"{name}\"",
@ -235,7 +237,7 @@
"field.blocks.delete.confirm.selected": "Czy na pewno chcesz usunąć wszystkie wybrane 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.empty": "Nie ma jeszcze żadnych bloków",
"field.blocks.fieldsets.label": "Wybierz typ bloku …", "field.blocks.fieldsets.label": "Wybierz typ bloku …",
"field.blocks.fieldsets.paste": "Press <kbd>{{ shortcut }}</kbd> to paste/import blocks from your clipboard", "field.blocks.fieldsets.paste": "Wciśnij <kbd>{{ shortcut }}</kbd> by wkleić/zaimportować bloki ze schowka",
"field.blocks.gallery.name": "Galeria", "field.blocks.gallery.name": "Galeria",
"field.blocks.gallery.images.empty": "Nie ma jeszcze żadnych obrazków", "field.blocks.gallery.images.empty": "Nie ma jeszcze żadnych obrazków",
"field.blocks.gallery.images.label": "Obrazki", "field.blocks.gallery.images.label": "Obrazki",
@ -252,7 +254,7 @@
"field.blocks.image.placeholder": "Wybierz obrazek", "field.blocks.image.placeholder": "Wybierz obrazek",
"field.blocks.image.ratio": "Proporcje", "field.blocks.image.ratio": "Proporcje",
"field.blocks.image.url": "URL obrazka", "field.blocks.image.url": "URL obrazka",
"field.blocks.line.name": "Line", "field.blocks.line.name": "Linijka",
"field.blocks.list.name": "Lista", "field.blocks.list.name": "Lista",
"field.blocks.markdown.name": "Markdown", "field.blocks.markdown.name": "Markdown",
"field.blocks.markdown.label": "Tekst", "field.blocks.markdown.label": "Tekst",
@ -282,7 +284,7 @@
"field.structure.empty": "Nie ma jeszcze \u017cadnych wpis\u00f3w.", "field.structure.empty": "Nie ma jeszcze \u017cadnych wpis\u00f3w.",
"field.users.empty": "Nie wybrano jeszcze żadnych użytkowników", "field.users.empty": "Nie wybrano jeszcze żadnych użytkowników",
"file.blueprint": "This file has no blueprint yet. You can define the setup in <strong>/site/blueprints/files/{blueprint}.yml</strong>", "file.blueprint": "Ten plik nie ma jeszcze wzorca. Możesz go zdefiniować w <strong>/site/blueprints/files/{blueprint}.yml</strong>",
"file.delete.confirm": "Czy na pewno chcesz usunąć <br><strong>{filename}</strong>?", "file.delete.confirm": "Czy na pewno chcesz usunąć <br><strong>{filename}</strong>?",
"file.sort": "Zmień pozycję", "file.sort": "Zmień pozycję",
@ -291,7 +293,7 @@
"hide": "Ukryj", "hide": "Ukryj",
"hour": "Godzina", "hour": "Godzina",
"import": "Import", "import": "Importuj",
"insert": "Wstaw", "insert": "Wstaw",
"insert.after": "Wstaw po", "insert.after": "Wstaw po",
"insert.before": "Wstaw przed", "insert.before": "Wstaw przed",
@ -357,9 +359,9 @@
"login.code.label.password-reset": "Kod resetowania hasła", "login.code.label.password-reset": "Kod resetowania hasła",
"login.code.placeholder.email": "000 000", "login.code.placeholder.email": "000 000",
"login.code.text.email": "Jeśli Twój adres email jest zarejestrowany, żądany kod został wysłany na Twoją skrzynkę.", "login.code.text.email": "Jeśli Twój adres email jest zarejestrowany, żądany kod został wysłany na Twoją skrzynkę.",
"login.email.login.body": "Hi {user.nameOrEmail},\n\nYou recently requested a login code for the Panel of {site}.\nThe following login code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a login code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.", "login.email.login.body": "Cześć {user.nameOrEmail},\n\nNiedawno poprosiłaś/-eś o kod do zalogowania się do panelu strony {site}.\nPoniższy kod do zalogowania się będzie ważny przez {timeout} minut:\n\n{code}\n\nJeżeli nie zażądałaś/-eś kodu do logowania się, zignoruj tę wiadomość e-mail lub skontaktuj się z administratorem, jeśli masz pytania.\nZe względów bezpieczeństwa NIE przesyłaj dalej tego e-maila.",
"login.email.login.subject": "Twój kod logowania się", "login.email.login.subject": "Twój kod logowania się",
"login.email.password-reset.body": "Hi {user.nameOrEmail},\n\nYou recently requested a password reset code for the Panel of {site}.\nThe following password reset code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a password reset code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.", "login.email.password-reset.body": "Cześć {user.nameOrEmail},\n\nNiedawno poprosiłaś/-eś o kod resetowania hasła do panelu strony {site}.\nPoniższy kod resetowania hasła będzie ważny przez {timeout} minut:\n\n{code}\n\nJeżeli nie zażądałaś/-eś kodu resetowania hasła, zignoruj tę wiadomość e-mail lub skontaktuj się z administratorem, jeśli masz pytania. \nZe względów bezpieczeństwa NIE przesyłaj dalej tego e-maila. ",
"login.email.password-reset.subject": "Twój kod resetujący hasło", "login.email.password-reset.subject": "Twój kod resetujący hasło",
"login.remember": "Nie wylogowuj mnie", "login.remember": "Nie wylogowuj mnie",
"login.reset": "Zresetuj hasło", "login.reset": "Zresetuj hasło",
@ -405,7 +407,7 @@
"orientation.portrait": "Pionowa", "orientation.portrait": "Pionowa",
"orientation.square": "Kwadrat", "orientation.square": "Kwadrat",
"page.blueprint": "This page has no blueprint yet. You can define the setup in <strong>/site/blueprints/pages/{blueprint}.yml</strong>", "page.blueprint": "Ta strona nie ma jeszcze wzorca. Możesz go zdefiniować w <strong>/site/blueprints/pages/{blueprint}.yml</strong>",
"page.changeSlug": "Zmie\u0144 URL", "page.changeSlug": "Zmie\u0144 URL",
"page.changeSlug.fromTitle": "Utw\u00f3rz na podstawie tytu\u0142u", "page.changeSlug.fromTitle": "Utw\u00f3rz na podstawie tytu\u0142u",
"page.changeStatus": "Zmień status", "page.changeStatus": "Zmień status",
@ -437,10 +439,10 @@
"pagination.page": "Strona", "pagination.page": "Strona",
"password": "Has\u0142o", "password": "Has\u0142o",
"paste": "Paste", "paste": "Wklej",
"paste.after": "Paste after", "paste.after": "Wklej po",
"pixel": "Piksel", "pixel": "Piksel",
"plugins": "Plugins", "plugins": "Wtyczki",
"prev": "Poprzednie", "prev": "Poprzednie",
"preview": "Podgląd", "preview": "Podgląd",
"remove": "Usuń", "remove": "Usuń",
@ -477,7 +479,7 @@
"template": "Szablon", "template": "Szablon",
"today": "Dzisiaj", "today": "Dzisiaj",
"server": "Server", "server": "Serwer",
"site.blueprint": "Ta strona nie ma jeszcze wzorca. Możesz go zdefiniować w <strong>/site/blueprints/site.yml</strong>", "site.blueprint": "Ta strona nie ma jeszcze wzorca. Możesz go zdefiniować w <strong>/site/blueprints/site.yml</strong>",
@ -488,15 +490,15 @@
"toolbar.button.heading.1": "Nagłówek 1", "toolbar.button.heading.1": "Nagłówek 1",
"toolbar.button.heading.2": "Nagłówek 2", "toolbar.button.heading.2": "Nagłówek 2",
"toolbar.button.heading.3": "Nagłówek 3", "toolbar.button.heading.3": "Nagłówek 3",
"toolbar.button.heading.4": "Heading 4", "toolbar.button.heading.4": "Nagłówek 4",
"toolbar.button.heading.5": "Heading 5", "toolbar.button.heading.5": "Nagłówek 5",
"toolbar.button.heading.6": "Heading 6", "toolbar.button.heading.6": "Nagłówek 6",
"toolbar.button.italic": "Kursywa", "toolbar.button.italic": "Kursywa",
"toolbar.button.file": "Plik", "toolbar.button.file": "Plik",
"toolbar.button.file.select": "Wybierz plik", "toolbar.button.file.select": "Wybierz plik",
"toolbar.button.file.upload": "Prześlij plik", "toolbar.button.file.upload": "Prześlij plik",
"toolbar.button.link": "Link", "toolbar.button.link": "Link",
"toolbar.button.paragraph": "Paragraph", "toolbar.button.paragraph": "Akapit",
"toolbar.button.strike": "Przekreślenie", "toolbar.button.strike": "Przekreślenie",
"toolbar.button.ol": "Lista numerowana", "toolbar.button.ol": "Lista numerowana",
"toolbar.button.underline": "Podkreślenie", "toolbar.button.underline": "Podkreślenie",
@ -526,7 +528,7 @@
"url.placeholder": "https://example.com", "url.placeholder": "https://example.com",
"user": "Użytkownik", "user": "Użytkownik",
"user.blueprint": "You can define additional sections and form fields for this user role in <strong>/site/blueprints/users/{blueprint}.yml</strong>", "user.blueprint": "Możesz zdefiniować dodatkowe sekcje i pola dla użytkownika o takiej roli w <strong>/site/blueprints/users/{blueprint}.yml</strong>",
"user.changeEmail": "Zmień email", "user.changeEmail": "Zmień email",
"user.changeLanguage": "Zmień język", "user.changeLanguage": "Zmień język",
"user.changeName": "Zmień nazwę tego użytkownika", "user.changeName": "Zmień nazwę tego użytkownika",

View file

@ -157,6 +157,8 @@
"error.template.default.notFound": "O tema padrão não existe", "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.user.changeEmail.permission": "Você não tem permissão para alterar o email do usuário \"{name}\"", "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}\"", "error.user.changeLanguage.permission": "Você não tem permissão para alterar o idioma do usuário \"{name}\"",
"error.user.changeName.permission": "Você não tem permissão para alterar o nome do usuário \"{name}\"", "error.user.changeName.permission": "Você não tem permissão para alterar o nome do usuário \"{name}\"",

View file

@ -1,20 +1,20 @@
{ {
"account.changeName": "Change your name", "account.changeName": "Mudar seu nome",
"account.delete": "Delete your account", "account.delete": "Deletar sua conta",
"account.delete.confirm": "Do you really want to delete your account? You will be logged out immediately. Your account cannot be recovered.", "account.delete.confirm": "Deseja realmente deletar sua conta? Você sairá do site imediatamente. Sua conta não poderá ser recuperada. ",
"add": "Adicionar", "add": "Adicionar",
"author": "Author", "author": "Autor",
"avatar": "Foto do perfil", "avatar": "Foto do perfil",
"back": "Voltar", "back": "Voltar",
"cancel": "Cancelar", "cancel": "Cancelar",
"change": "Alterar", "change": "Alterar",
"close": "Fechar", "close": "Fechar",
"confirm": "Salvar", "confirm": "Salvar",
"collapse": "Collapse", "collapse": "Colapsar",
"collapse.all": "Collapse All", "collapse.all": "Colapsar todos",
"copy": "Copiar", "copy": "Copiar",
"copy.all": "Copy all", "copy.all": "Copiar todos",
"create": "Criar", "create": "Criar",
"date": "Data", "date": "Data",
@ -29,10 +29,10 @@
"days.tue": "Ter", "days.tue": "Ter",
"days.wed": "Qua", "days.wed": "Qua",
"debugging": "Debugging", "debugging": "Depuração ",
"delete": "Excluir", "delete": "Excluir",
"delete.all": "Delete all", "delete.all": "Deletar todos",
"dialog.files.empty": "Sem arquivos para selecionar", "dialog.files.empty": "Sem arquivos para selecionar",
"dialog.pages.empty": "Sem páginas para selecionar", "dialog.pages.empty": "Sem páginas para selecionar",
@ -49,9 +49,9 @@
"email": "Email", "email": "Email",
"email.placeholder": "mail@exemplo.pt", "email.placeholder": "mail@exemplo.pt",
"environment": "Environment", "environment": "Ambiente",
"error.access.code": "Invalid code", "error.access.code": "Código inválido",
"error.access.login": "Login inválido", "error.access.login": "Login inválido",
"error.access.panel": "Não tem permissões para aceder ao painel", "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",
@ -63,11 +63,11 @@
"error.blueprint.notFound": "O blueprint \"{name}\" não pode ser carregado", "error.blueprint.notFound": "O blueprint \"{name}\" não pode ser carregado",
"error.blocks.max.plural": "You must not add more than {max} blocks", "error.blocks.max.plural": "Você não deve adicionar mais do que {max} blocos",
"error.blocks.max.singular": "You must not add more than one block", "error.blocks.max.singular": "Você não deve adicionar mais do que um bloco",
"error.blocks.min.plural": "You must add at least {min} blocks", "error.blocks.min.plural": "Você deve adicionar pelo menos {min} blocos",
"error.blocks.min.singular": "You must add at least one block", "error.blocks.min.singular": "Você deve adicionar pelo menos um bloco",
"error.blocks.validation": "There's an error in block {index}", "error.blocks.validation": "Há um erro no bloco {index}",
"error.email.preset.notFound": "Preset de email \"{name}\" não encontrado", "error.email.preset.notFound": "Preset de email \"{name}\" não encontrado",
@ -77,7 +77,7 @@
"error.file.changeName.permission": "Não tem permissões para alterar o nome de \"{filename}\"", "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.duplicate": "Um arquivo com o nome \"{filename}\" já existe",
"error.file.extension.forbidden": "Extensão \"{extension}\" não permitida", "error.file.extension.forbidden": "Extensão \"{extension}\" não permitida",
"error.file.extension.invalid": "Invalid extension: {extension}", "error.file.extension.invalid": "Extensão inválida: {extension}",
"error.file.extension.missing": "Extensão de \"{filename}\" em falta", "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.maxheight": "A altura da imagem não deve exceder {height} pixels",
"error.file.maxsize": "O arquivo é muito grande", "error.file.maxsize": "O arquivo é muito grande",
@ -93,7 +93,7 @@
"error.file.notFound": "Arquivo \"{filename}\" não encontrado", "error.file.notFound": "Arquivo \"{filename}\" não encontrado",
"error.file.orientation": "A orientação da imagem deve ser \"{orientation}\"", "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.forbidden": "Não tem permissões para enviar arquivos {type}",
"error.file.type.invalid": "Invalid file type: {type}", "error.file.type.invalid": "Tipo inválido de arquivo: {type}",
"error.file.undefined": "Arquivo n\u00e3o encontrado", "error.file.undefined": "Arquivo n\u00e3o encontrado",
"error.form.incomplete": "Por favor, corrija os erros do formulário…", "error.form.incomplete": "Por favor, corrija os erros do formulário…",
@ -102,16 +102,16 @@
"error.language.code": "Insira um código de idioma válido", "error.language.code": "Insira um código de idioma válido",
"error.language.duplicate": "O idioma já existe", "error.language.duplicate": "O idioma já existe",
"error.language.name": "Insira um nome válido para o idioma", "error.language.name": "Insira um nome válido para o idioma",
"error.language.notFound": "The language could not be found", "error.language.notFound": "O idioma não foi encontrado",
"error.layout.validation.block": "There's an error in block {blockIndex} in layout {layoutIndex}", "error.layout.validation.block": "Há um erro no bloco {blockIndex} no layout {layoutIndex}",
"error.layout.validation.settings": "There's an error in layout {index} settings", "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.format": "Insira uma chave de licença válida",
"error.license.email": "Digite um endereço de email válido", "error.license.email": "Digite um endereço de email válido",
"error.license.verification": "Não foi possível verificar a licença", "error.license.verification": "Não foi possível verificar a licença",
"error.offline": "The Panel is currently offline", "error.offline": "O painel está offline no momento",
"error.page.changeSlug.permission": "Não tem permissões para alterar a URL de \"{slug}\"", "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.page.changeStatus.incomplete": "A página possui erros e não pode ser guardada",
@ -131,7 +131,7 @@
"error.page.duplicate.permission": "Não tem permissão para duplicar \"{slug}\"", "error.page.duplicate.permission": "Não tem permissão para duplicar \"{slug}\"",
"error.page.notFound": "Página\"{slug}\" não encontrada", "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.num.invalid": "Digite um número de ordenação válido. Este número não pode ser negativo.",
"error.page.slug.invalid": "Please enter a valid URL appendix", "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.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.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.status.invalid": "Por favor, defina um estado de página válido",
@ -157,6 +157,8 @@
"error.template.default.notFound": "O tema padrão não existe", "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.user.changeEmail.permission": "Não tem permissões para alterar o email do utilizador \"{name}\"", "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.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.changeName.permission": "Não tem permissões para alterar o nome do utilizador \"{name}\"",
@ -176,7 +178,7 @@
"error.user.password.invalid": "Digite uma palavra-passe válida. A sua palavra-passe deve ter pelo menos 8 caracteres.", "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.notSame": "As palavras-passe não combinam",
"error.user.password.undefined": "O utilizador não possui uma palavra-passe", "error.user.password.undefined": "O utilizador não possui uma palavra-passe",
"error.user.password.wrong": "Wrong password", "error.user.password.wrong": "Senha errada",
"error.user.role.invalid": "Digite uma função válida", "error.user.role.invalid": "Digite uma função válida",
"error.user.undefined": "Usuário não encontrado", "error.user.undefined": "Usuário não encontrado",
"error.user.update.permission": "Não tem permissões para atualizar o utilizador \"{name}\"", "error.user.update.permission": "Não tem permissões para atualizar o utilizador \"{name}\"",
@ -217,84 +219,84 @@
"error.validation.size": "O tamanho do valor deve ser \"{size}\"", "error.validation.size": "O tamanho do valor deve ser \"{size}\"",
"error.validation.startswith": "O valor deve começar com \"{start}\"", "error.validation.startswith": "O valor deve começar com \"{start}\"",
"error.validation.time": "Digite uma hora válida", "error.validation.time": "Digite uma hora válida",
"error.validation.time.after": "Please enter a time after {time}", "error.validation.time.after": "Por favor entre um horário depois de {time}",
"error.validation.time.before": "Please enter a time before {time}", "error.validation.time.before": "Por favor entre um horário antes de {time}",
"error.validation.time.between": "Please enter a time between {min} and {max}", "error.validation.time.between": "Por favor entre um horário entre {min} e {max}",
"error.validation.url": "Digite uma URL válida", "error.validation.url": "Digite uma URL válida",
"expand": "Expand", "expand": "Expandir",
"expand.all": "Expand All", "expand.all": "Expandir todos",
"field.required": "Este campo é necessário", "field.required": "Este campo é necessário",
"field.blocks.changeType": "Change type", "field.blocks.changeType": "Mudar tipo",
"field.blocks.code.name": "Código", "field.blocks.code.name": "Código",
"field.blocks.code.language": "Idioma", "field.blocks.code.language": "Idioma",
"field.blocks.code.placeholder": "Your code …", "field.blocks.code.placeholder": "Seu código …",
"field.blocks.delete.confirm": "Do you really want to delete this block?", "field.blocks.delete.confirm": "Deseja realmente deletar este bloco?",
"field.blocks.delete.confirm.all": "Do you really want to delete all blocks?", "field.blocks.delete.confirm.all": "Deseja realmente deletar todos os blocos?",
"field.blocks.delete.confirm.selected": "Do you really want to delete the selected blocks?", "field.blocks.delete.confirm.selected": "Deseja realmente deletar os blocos selecionados?",
"field.blocks.empty": "No blocks yet", "field.blocks.empty": "Nenhum bloco",
"field.blocks.fieldsets.label": "Please select a block type …", "field.blocks.fieldsets.label": "Por favor selecione um tipo de bloco …",
"field.blocks.fieldsets.paste": "Press <kbd>{{ shortcut }}</kbd> to paste/import blocks from your clipboard", "field.blocks.fieldsets.paste": "Digite <kbd>{{ shortcut }}</kbd> para colar/importar blocos da sua área de transferência ",
"field.blocks.gallery.name": "Gallery", "field.blocks.gallery.name": "Galeria",
"field.blocks.gallery.images.empty": "No images yet", "field.blocks.gallery.images.empty": "Nenhuma imagem",
"field.blocks.gallery.images.label": "Images", "field.blocks.gallery.images.label": "Imagens",
"field.blocks.heading.level": "Level", "field.blocks.heading.level": "Nível ",
"field.blocks.heading.name": "Heading", "field.blocks.heading.name": "Título ",
"field.blocks.heading.text": "Text", "field.blocks.heading.text": "Texto",
"field.blocks.heading.placeholder": "Heading …", "field.blocks.heading.placeholder": "Título …",
"field.blocks.image.alt": "Alternative text", "field.blocks.image.alt": "Texto alternativo",
"field.blocks.image.caption": "Caption", "field.blocks.image.caption": "Legenda",
"field.blocks.image.crop": "Crop", "field.blocks.image.crop": "Cortar",
"field.blocks.image.link": "Link", "field.blocks.image.link": "Link",
"field.blocks.image.location": "Location", "field.blocks.image.location": "Localização ",
"field.blocks.image.name": "Imagem", "field.blocks.image.name": "Imagem",
"field.blocks.image.placeholder": "Select an image", "field.blocks.image.placeholder": "Selecionar uma imagem",
"field.blocks.image.ratio": "Ratio", "field.blocks.image.ratio": "Proporção ",
"field.blocks.image.url": "Image URL", "field.blocks.image.url": "URL da imagem",
"field.blocks.line.name": "Line", "field.blocks.line.name": "Linha",
"field.blocks.list.name": "List", "field.blocks.list.name": "Lista",
"field.blocks.markdown.name": "Markdown", "field.blocks.markdown.name": "Markdown",
"field.blocks.markdown.label": "Text", "field.blocks.markdown.label": "Texto",
"field.blocks.markdown.placeholder": "Markdown …", "field.blocks.markdown.placeholder": "Markdown …",
"field.blocks.quote.name": "Quote", "field.blocks.quote.name": "Citação ",
"field.blocks.quote.text.label": "Text", "field.blocks.quote.text.label": "Texto",
"field.blocks.quote.text.placeholder": "Quote …", "field.blocks.quote.text.placeholder": "Citação …",
"field.blocks.quote.citation.label": "Citation", "field.blocks.quote.citation.label": "Citação ",
"field.blocks.quote.citation.placeholder": "by …", "field.blocks.quote.citation.placeholder": "de …",
"field.blocks.text.name": "Text", "field.blocks.text.name": "Texto",
"field.blocks.text.placeholder": "Text …", "field.blocks.text.placeholder": "Texto …",
"field.blocks.video.caption": "Caption", "field.blocks.video.caption": "Legenda",
"field.blocks.video.name": "Video", "field.blocks.video.name": "Vídeo ",
"field.blocks.video.placeholder": "Enter a video URL", "field.blocks.video.placeholder": "Entre uma URL de vídeo ",
"field.blocks.video.url.label": "Video-URL", "field.blocks.video.url.label": "URL-Vídeo",
"field.blocks.video.url.placeholder": "https://youtube.com/?v=", "field.blocks.video.url.placeholder": "https://youtube.com/?v=",
"field.files.empty": "Nenhum arquivo selecionado", "field.files.empty": "Nenhum arquivo selecionado",
"field.layout.delete": "Delete layout", "field.layout.delete": "Deletar layout",
"field.layout.delete.confirm": "Do you really want to delete this layout?", "field.layout.delete.confirm": "Deseja realmente deletar este layout?",
"field.layout.empty": "No rows yet", "field.layout.empty": "Nenhuma linha",
"field.layout.select": "Select a layout", "field.layout.select": "Selecionar um layout",
"field.pages.empty": "Nenhuma página selecionada", "field.pages.empty": "Nenhuma página selecionada",
"field.structure.delete.confirm": "Deseja realmente excluir este registro?", "field.structure.delete.confirm": "Deseja realmente excluir este registro?",
"field.structure.empty": "Nenhum registro", "field.structure.empty": "Nenhum registro",
"field.users.empty": "Nenhum utilizador selecionado", "field.users.empty": "Nenhum utilizador selecionado",
"file.blueprint": "This file has no blueprint yet. You can define the setup in <strong>/site/blueprints/files/{blueprint}.yml</strong>", "file.blueprint": "Este arquivo não tem planta. Você pode definir sua planta em <strong>/site/blueprints/files/{blueprint}.yml</strong>",
"file.delete.confirm": "Deseja realmente excluir <br> <strong>{filename}</strong>?", "file.delete.confirm": "Deseja realmente excluir <br> <strong>{filename}</strong>?",
"file.sort": "Change position", "file.sort": "Mudar posição",
"files": "Arquivos", "files": "Arquivos",
"files.empty": "Nenhum arquivo", "files.empty": "Nenhum arquivo",
"hide": "Hide", "hide": "Ocultar",
"hour": "Hora", "hour": "Hora",
"import": "Import", "import": "Importar",
"insert": "Inserir", "insert": "Inserir",
"insert.after": "Insert after", "insert.after": "Inserir após",
"insert.before": "Insert before", "insert.before": "Inserir antes",
"install": "Instalar", "install": "Instalar",
"installation": "Instalação", "installation": "Instalação",
@ -353,20 +355,20 @@
"lock.isUnlocked": "As suas alterações foram sobrepostas por outro utilizador. Pode descarregar as suas alterações e combiná-las manualmente.", "lock.isUnlocked": "As suas alterações foram sobrepostas por outro utilizador. Pode descarregar as suas alterações e combiná-las manualmente.",
"login": "Entrar", "login": "Entrar",
"login.code.label.login": "Login code", "login.code.label.login": "Código de acesso",
"login.code.label.password-reset": "Password reset code", "login.code.label.password-reset": "Código de redefinição de senha",
"login.code.placeholder.email": "000 000", "login.code.placeholder.email": "000 0000",
"login.code.text.email": "If your email address is registered, the requested code was sent via email.", "login.code.text.email": "Se seu endereço de email está registrado, o código requisitado será mandado por email.",
"login.email.login.body": "Hi {user.nameOrEmail},\n\nYou recently requested a login code for the Panel of {site}.\nThe following login code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a login code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.", "login.email.login.body": "Hi {user.nameOrEmail},\n\nYou recently requested a login code for the Panel of {site}.\nThe following login code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a login code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.",
"login.email.login.subject": "Your login code", "login.email.login.subject": "Seu código de acesso",
"login.email.password-reset.body": "Hi {user.nameOrEmail},\n\nYou recently requested a password reset code for the Panel of {site}.\nThe following password reset code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a password reset code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.", "login.email.password-reset.body": "Hi {user.nameOrEmail},\n\nYou recently requested a password reset code for the Panel of {site}.\nThe following password reset code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a password reset code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.",
"login.email.password-reset.subject": "Your password reset code", "login.email.password-reset.subject": "Seu código de redefinição de senha",
"login.remember": "Manter-me conectado", "login.remember": "Manter-me conectado",
"login.reset": "Reset password", "login.reset": "Redefinir senha",
"login.toggleText.code.email": "Login via email", "login.toggleText.code.email": "Entrar com email",
"login.toggleText.code.email-password": "Login with password", "login.toggleText.code.email-password": "Entrar com senha",
"login.toggleText.password-reset.email": "Forgot your password?", "login.toggleText.password-reset.email": "Esqueceu sua senha?",
"login.toggleText.password-reset.email-password": "← Back to login", "login.toggleText.password-reset.email-password": "← Voltar à entrada",
"logout": "Sair", "logout": "Sair",
@ -392,11 +394,11 @@
"more": "Mais", "more": "Mais",
"name": "Nome", "name": "Nome",
"next": "Próximo", "next": "Próximo",
"no": "no", "no": "não",
"off": "off", "off": "off",
"on": "on", "on": "on",
"open": "Abrir", "open": "Abrir",
"open.newWindow": "Open in new window", "open.newWindow": "Abrir em nova janela",
"options": "Opções", "options": "Opções",
"options.none": "Sem opções", "options.none": "Sem opções",
@ -405,7 +407,7 @@
"orientation.portrait": "Retrato", "orientation.portrait": "Retrato",
"orientation.square": "Quadrado", "orientation.square": "Quadrado",
"page.blueprint": "This page has no blueprint yet. You can define the setup in <strong>/site/blueprints/pages/{blueprint}.yml</strong>", "page.blueprint": "Esta página não tem planta. Você pode definir sua planta em <strong>/site/blueprints/pages/{blueprint}.yml</strong>",
"page.changeSlug": "Alterar URL", "page.changeSlug": "Alterar URL",
"page.changeSlug.fromTitle": "Criar a partir do t\u00edtulo", "page.changeSlug.fromTitle": "Criar a partir do t\u00edtulo",
"page.changeStatus": "Alterar estado", "page.changeStatus": "Alterar estado",
@ -419,7 +421,7 @@
"page.duplicate.appendix": "Copiar", "page.duplicate.appendix": "Copiar",
"page.duplicate.files": "Copiar arquivos", "page.duplicate.files": "Copiar arquivos",
"page.duplicate.pages": "Copiar páginas", "page.duplicate.pages": "Copiar páginas",
"page.sort": "Change position", "page.sort": "Mudar posição",
"page.status": "Estado", "page.status": "Estado",
"page.status.draft": "Rascunho", "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 somente para editores",
@ -437,12 +439,12 @@
"pagination.page": "Página", "pagination.page": "Página",
"password": "Palavra-passe", "password": "Palavra-passe",
"paste": "Paste", "paste": "Colar",
"paste.after": "Paste after", "paste.after": "Colar após",
"pixel": "Pixel", "pixel": "Pixel",
"plugins": "Plugins", "plugins": "Plugins",
"prev": "Anterior", "prev": "Anterior",
"preview": "Preview", "preview": "Visualizar",
"remove": "Remover", "remove": "Remover",
"rename": "Renomear", "rename": "Renomear",
"replace": "Substituir", "replace": "Substituir",
@ -469,7 +471,7 @@
"select": "Selecionar", "select": "Selecionar",
"settings": "Configurações", "settings": "Configurações",
"show": "Show", "show": "Mostrar",
"size": "Tamanho", "size": "Tamanho",
"slug": "URL", "slug": "URL",
"sort": "Ordenar", "sort": "Ordenar",
@ -477,9 +479,9 @@
"template": "Tema", "template": "Tema",
"today": "Hoje", "today": "Hoje",
"server": "Server", "server": "Servidor",
"site.blueprint": "The site has no blueprint yet. You can define the setup in <strong>/site/blueprints/site.yml</strong>", "site.blueprint": "Este site não tem planta. Você pode definir sua planta em <strong>/site/blueprints/site.yml</strong>",
"toolbar.button.code": "Código", "toolbar.button.code": "Código",
"toolbar.button.bold": "Negrito", "toolbar.button.bold": "Negrito",
@ -488,18 +490,18 @@
"toolbar.button.heading.1": "Título 1", "toolbar.button.heading.1": "Título 1",
"toolbar.button.heading.2": "Título 2", "toolbar.button.heading.2": "Título 2",
"toolbar.button.heading.3": "Título 3", "toolbar.button.heading.3": "Título 3",
"toolbar.button.heading.4": "Heading 4", "toolbar.button.heading.4": "Título 4",
"toolbar.button.heading.5": "Heading 5", "toolbar.button.heading.5": "Título 5",
"toolbar.button.heading.6": "Heading 6", "toolbar.button.heading.6": "Título 6",
"toolbar.button.italic": "Itálico", "toolbar.button.italic": "Itálico",
"toolbar.button.file": "Ficheiro", "toolbar.button.file": "Ficheiro",
"toolbar.button.file.select": "Selecione o arquivo", "toolbar.button.file.select": "Selecione o arquivo",
"toolbar.button.file.upload": "Carregue o arquivo", "toolbar.button.file.upload": "Carregue o arquivo",
"toolbar.button.link": "Link", "toolbar.button.link": "Link",
"toolbar.button.paragraph": "Paragraph", "toolbar.button.paragraph": "Parágrafo",
"toolbar.button.strike": "Strike-through", "toolbar.button.strike": "Riscado",
"toolbar.button.ol": "Lista ordenada", "toolbar.button.ol": "Lista ordenada",
"toolbar.button.underline": "Underline", "toolbar.button.underline": "Sublinhado",
"toolbar.button.ul": "Lista não-ordenada", "toolbar.button.ul": "Lista não-ordenada",
"translation.author": "Kirby Team", "translation.author": "Kirby Team",
@ -526,7 +528,7 @@
"url.placeholder": "https://exemplo.pt", "url.placeholder": "https://exemplo.pt",
"user": "Utilizador", "user": "Utilizador",
"user.blueprint": "You can define additional sections and form fields for this user role in <strong>/site/blueprints/users/{blueprint}.yml</strong>", "user.blueprint": "Você pode definir seções e campos de formulário adicionais para este papel de usuário em <strong>/site/blueprints/users/{blueprint}.yml</strong>",
"user.changeEmail": "Alterar email", "user.changeEmail": "Alterar email",
"user.changeLanguage": "Alterar idioma", "user.changeLanguage": "Alterar idioma",
"user.changeName": "Renomear este utilizador", "user.changeName": "Renomear este utilizador",
@ -546,12 +548,12 @@
"view.account": "A sua conta", "view.account": "A sua conta",
"view.installation": "Instala\u00e7\u00e3o", "view.installation": "Instala\u00e7\u00e3o",
"view.languages": "Idiomas", "view.languages": "Idiomas",
"view.resetPassword": "Reset password", "view.resetPassword": "Redefinir senha",
"view.site": "Site", "view.site": "Site",
"view.system": "System", "view.system": "Sistema",
"view.users": "Utilizadores", "view.users": "Utilizadores",
"welcome": "Bem-vindo", "welcome": "Bem-vindo",
"year": "Ano", "year": "Ano",
"yes": "yes" "yes": "sim"
} }

View file

@ -1,7 +1,7 @@
{ {
"account.changeName": "Change your name", "account.changeName": "Изменить имя",
"account.delete": "Delete your account", "account.delete": "Удалить аккаунт",
"account.delete.confirm": "Do you really want to delete your account? You will be logged out immediately. Your account cannot be recovered.", "account.delete.confirm": "Вы действительно хотите удалить свой аккаунт? Вы сразу покинете панель управления, а аккаунт нельзя будет восстановить.",
"add": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c", "add": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c",
"author": "Автор", "author": "Автор",
@ -74,7 +74,7 @@
"error.field.converter.invalid": "Неверный конвертер \"{converter}\"", "error.field.converter.invalid": "Неверный конвертер \"{converter}\"",
"error.file.changeName.empty": "Название не может быть пустым", "error.file.changeName.empty": "Название не может быть пустым",
"error.file.changeName.permission": "У вас нет права поменять название \"{filename}\"", "error.file.changeName.permission": "У вас нет права изменить название \"{filename}\"",
"error.file.duplicate": "Файл с названием \"{filename}\" уже есть", "error.file.duplicate": "Файл с названием \"{filename}\" уже есть",
"error.file.extension.forbidden": "Расширение файла \"{extension}\" неразрешено", "error.file.extension.forbidden": "Расширение файла \"{extension}\" неразрешено",
"error.file.extension.invalid": "Неверное разрешение: {extension}", "error.file.extension.invalid": "Неверное разрешение: {extension}",
@ -111,16 +111,16 @@
"error.license.email": "Пожалуйста, введите правильный Email", "error.license.email": "Пожалуйста, введите правильный Email",
"error.license.verification": "Лицензия не подтверждена", "error.license.verification": "Лицензия не подтверждена",
"error.offline": "The Panel is currently offline", "error.offline": "Панель управления не в сети",
"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.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.changeStatus.incomplete": "На странице есть ошибки и поэтому ее нельзя опубликовать", "error.page.changeStatus.incomplete": "На странице есть ошибки и поэтому ее нельзя опубликовать",
"error.page.changeStatus.permission": "Невозможно поменять статус для этой страницы", "error.page.changeStatus.permission": "Невозможно изменить статус для этой страницы",
"error.page.changeStatus.toDraft.invalid": "Невозможно конвертировать в черновик страницу \"{slug}\"", "error.page.changeStatus.toDraft.invalid": "Невозможно конвертировать в черновик страницу \"{slug}\"",
"error.page.changeTemplate.invalid": "Невозможно поменять шаблон страницы \"{slug}\"", "error.page.changeTemplate.invalid": "Невозможно изменить шаблон страницы \"{slug}\"",
"error.page.changeTemplate.permission": "У вас нет права поменять шаблон для \"{slug}\"", "error.page.changeTemplate.permission": "У вас нет права изменять шаблон для \"{slug}\"",
"error.page.changeTitle.empty": "Название не может быть пустым", "error.page.changeTitle.empty": "Название не может быть пустым",
"error.page.changeTitle.permission": "у вас нет права поменять название \"{slug}\"", "error.page.changeTitle.permission": "у вас нет права изменять название \"{slug}\"",
"error.page.create.permission": "У вас нет права создать \"{slug}\"", "error.page.create.permission": "У вас нет права создать \"{slug}\"",
"error.page.delete": "Невозможно удалить страницу \"{slug}\"", "error.page.delete": "Невозможно удалить страницу \"{slug}\"",
"error.page.delete.confirm": "Впишите название страницы чтобы подтвердить", "error.page.delete.confirm": "Впишите название страницы чтобы подтвердить",
@ -152,17 +152,19 @@
"error.section.type.invalid": "Тип секции {type} неверный", "error.section.type.invalid": "Тип секции {type} неверный",
"error.site.changeTitle.empty": "Название не может быть пустым", "error.site.changeTitle.empty": "Название не может быть пустым",
"error.site.changeTitle.permission": "У вас нет права поменять название сайта", "error.site.changeTitle.permission": "У вас нет права изменять название сайта",
"error.site.update.permission": "У вас нет права обновить сайт", "error.site.update.permission": "У вас нет права обновить сайт",
"error.template.default.notFound": "Нет шаблона по умолчанию", "error.template.default.notFound": "Нет шаблона по умолчанию",
"error.user.changeEmail.permission": "У вас нет права поменять эл. почту пользователя \"{name}\"", "error.unexpected": "Произошла непредвиденная ошибка! Включите режим отладки для получения дополнительной информации: https://getkirby.com/docs/reference/system/options/debug",
"error.user.changeLanguage.permission": "У вас нет права поменять язык для пользователя \"{name}\"",
"error.user.changeName.permission": "У вас нет права поменять имя пользователя \"{name}\"", "error.user.changeEmail.permission": "У вас нет права изменять Email пользователя \"{name}\"",
"error.user.changePassword.permission": "У вас нет права поменять пароль для пользователя \"{name}\"", "error.user.changeLanguage.permission": "У вас нет права изменять язык для пользователя \"{name}\"",
"error.user.changeRole.lastAdmin": "Роль единственного администратора нельзя поменять", "error.user.changeName.permission": "У вас нет права изменять имя пользователя \"{name}\"",
"error.user.changeRole.permission": "У вас нет права поменять поль для пользователя \"{name}\"", "error.user.changePassword.permission": "У вас нет права изменять пароль для пользователя \"{name}\"",
"error.user.changeRole.lastAdmin": "Роль единственного администратора нельзя изменить",
"error.user.changeRole.permission": "У вас нет права изменять роль пользователя \"{name}\"",
"error.user.changeRole.toAdmin": "У вас нет прав предоставить роль администратора", "error.user.changeRole.toAdmin": "У вас нет прав предоставить роль администратора",
"error.user.create.permission": "У вас нет права создать этого пользователя", "error.user.create.permission": "У вас нет права создать этого пользователя",
"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": "\u0410\u043a\u043a\u0430\u0443\u043d\u0442 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0443\u0434\u0430\u043b\u0435\u043d",
@ -411,7 +413,7 @@
"page.changeStatus": "Изменить статус", "page.changeStatus": "Изменить статус",
"page.changeStatus.position": "Пожалуйста, выберите позицию", "page.changeStatus.position": "Пожалуйста, выберите позицию",
"page.changeStatus.select": "Выбрать новый статус", "page.changeStatus.select": "Выбрать новый статус",
"page.changeTemplate": "Поменять шаблон", "page.changeTemplate": "Изменить шаблон",
"page.delete.confirm": "Вы точно хотите удалить страницу <strong>{title}</strong>?", "page.delete.confirm": "Вы точно хотите удалить страницу <strong>{title}</strong>?",
"page.delete.confirm.subpages": "<strong>У этой страницы есть внутренние страницы</strong>.<br>Все внутренние страницы так же будут удалены.", "page.delete.confirm.subpages": "<strong>У этой страницы есть внутренние страницы</strong>.<br>Все внутренние страницы так же будут удалены.",
"page.delete.confirm.title": "Напишите название страницы, чтобы подтвердить", "page.delete.confirm.title": "Напишите название страницы, чтобы подтвердить",
@ -527,13 +529,13 @@
"user": "Пользователь", "user": "Пользователь",
"user.blueprint": "Вы можете определить новые секции и поля разметки для пользователя в <strong>/site/blueprints/users/{blueprint}.yml</strong>", "user.blueprint": "Вы можете определить новые секции и поля разметки для пользователя в <strong>/site/blueprints/users/{blueprint}.yml</strong>",
"user.changeEmail": "Поменять Email", "user.changeEmail": "Изменить Email",
"user.changeLanguage": "Поменять язык", "user.changeLanguage": "Изменить язык",
"user.changeName": "Переназвать этого пользователя", "user.changeName": "Переназвать этого пользователя",
"user.changePassword": "Поменять пароль", "user.changePassword": "Изменить пароль",
"user.changePassword.new": "Новый пароль", "user.changePassword.new": "Новый пароль",
"user.changePassword.new.confirm": "Подтвердить новый пароль…", "user.changePassword.new.confirm": "Подтвердить новый пароль…",
"user.changeRole": "Поменять роль", "user.changeRole": "Изменить роль",
"user.changeRole.select": "Выбрать новую роль", "user.changeRole.select": "Выбрать новую роль",
"user.create": "Добавить нового пользователя", "user.create": "Добавить нового пользователя",
"user.delete": "Удалить этого пользователя", "user.delete": "Удалить этого пользователя",

View file

@ -157,6 +157,8 @@
"error.template.default.notFound": "Predvolená šablóna neexistuje", "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",
"error.user.changeEmail.permission": "Nemáte povolenie na zmenu e-mailu pre užívateľa \"{name}\"", "error.user.changeEmail.permission": "Nemáte povolenie na zmenu e-mailu pre užívateľa \"{name}\"",
"error.user.changeLanguage.permission": "Nemáte povolenie na zmenu jazyka pre užívateľa \"{name}\"", "error.user.changeLanguage.permission": "Nemáte povolenie na zmenu jazyka pre užívateľa \"{name}\"",
"error.user.changeName.permission": "Nemáte povolenie na zmenu mena pre užívateľa \"{name}\"", "error.user.changeName.permission": "Nemáte povolenie na zmenu mena pre užívateľa \"{name}\"",

View file

@ -1,10 +1,10 @@
{ {
"account.changeName": "Change your name", "account.changeName": "Ändra ditt namn",
"account.delete": "Delete your account", "account.delete": "Radera ditt konto",
"account.delete.confirm": "Do you really want to delete your account? You will be logged out immediately. Your account cannot be recovered.", "account.delete.confirm": "Vill du verkligen radera ditt konto? Du kommer att loggas ut omedelbart. Ditt konto kan inte återställas.",
"add": "L\u00e4gg till", "add": "L\u00e4gg till",
"author": "Author", "author": "Författare",
"avatar": "Profilbild", "avatar": "Profilbild",
"back": "Tillbaka", "back": "Tillbaka",
"cancel": "Avbryt", "cancel": "Avbryt",
@ -29,7 +29,7 @@
"days.tue": "Tis", "days.tue": "Tis",
"days.wed": "Ons", "days.wed": "Ons",
"debugging": "Debugging", "debugging": "Felsökning",
"delete": "Radera", "delete": "Radera",
"delete.all": "Radera allt", "delete.all": "Radera allt",
@ -49,7 +49,7 @@
"email": "E-postadress", "email": "E-postadress",
"email.placeholder": "namn@exempel.se", "email.placeholder": "namn@exempel.se",
"environment": "Environment", "environment": "Miljö",
"error.access.code": "Ogiltig kod", "error.access.code": "Ogiltig kod",
"error.access.login": "Ogiltig inloggning", "error.access.login": "Ogiltig inloggning",
@ -111,7 +111,7 @@
"error.license.email": "Ange en giltig e-postadress", "error.license.email": "Ange en giltig e-postadress",
"error.license.verification": "Licensen kunde inte verifieras", "error.license.verification": "Licensen kunde inte verifieras",
"error.offline": "The Panel is currently offline", "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.permission": "Du har inte behörighet att ändra URL-appendixen för \"{slug}\"",
"error.page.changeStatus.incomplete": "Sidan innehåller fel och kan inte publiceras", "error.page.changeStatus.incomplete": "Sidan innehåller fel och kan inte publiceras",
@ -157,6 +157,8 @@
"error.template.default.notFound": "Standardmallen existerar inte", "error.template.default.notFound": "Standardmallen existerar inte",
"error.unexpected": "An unexpected error occurred! Enable debug mode for more info: https://getkirby.com/docs/reference/system/options/debug",
"error.user.changeEmail.permission": "Du har inte behörighet att ändra e-postadressen för användaren \"{name}\"", "error.user.changeEmail.permission": "Du har inte behörighet att ändra e-postadressen för användaren \"{name}\"",
"error.user.changeLanguage.permission": "Du har inte behörighet att ändra språket för användaren \"{name}\"", "error.user.changeLanguage.permission": "Du har inte behörighet att ändra språket för användaren \"{name}\"",
"error.user.changeName.permission": "Du har inte behörighet att ändra namnet för användaren \"{name}\"", "error.user.changeName.permission": "Du har inte behörighet att ändra namnet för användaren \"{name}\"",
@ -440,7 +442,7 @@
"paste": "Klistra in", "paste": "Klistra in",
"paste.after": "Klistra in efter", "paste.after": "Klistra in efter",
"pixel": "Pixel", "pixel": "Pixel",
"plugins": "Plugins", "plugins": "Tillägg",
"prev": "Föregående", "prev": "Föregående",
"preview": "Förhandsgranska", "preview": "Förhandsgranska",
"remove": "Ta bort", "remove": "Ta bort",

View file

@ -157,6 +157,8 @@
"error.template.default.notFound": "Varsayılan şablon yok", "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",
"error.user.changeEmail.permission": "\"{name}\" kullanıcısı için e-postayı değiştiremezsiniz", "error.user.changeEmail.permission": "\"{name}\" kullanıcısı için e-postayı değiştiremezsiniz",
"error.user.changeLanguage.permission": "\"{name}\" kullanıcısının dilini değiştiremezsin", "error.user.changeLanguage.permission": "\"{name}\" kullanıcısının dilini değiştiremezsin",
"error.user.changeName.permission": "\"{name}\" kullanıcısının adını değiştiremezsiniz", "error.user.changeName.permission": "\"{name}\" kullanıcısının adını değiştiremezsiniz",

View file

@ -2,29 +2,21 @@ module.exports = {
extends: [ extends: [
"eslint:recommended", "eslint:recommended",
"plugin:cypress/recommended", "plugin:cypress/recommended",
"plugin:vue/recommended" "plugin:vue/recommended",
"prettier"
], ],
rules: { rules: {
"vue/component-definition-name-casing": "off",
"vue/require-default-prop": "off",
"vue/attributes-order": "error", "vue/attributes-order": "error",
"vue/require-prop-types": "error", "vue/component-definition-name-casing": "off",
"vue/max-attributes-per-line": [
"error",
{
"singleline": 3,
"multiline": {
"max": 1,
"allowFirstLine": false
}
}
],
"vue/html-closing-bracket-newline": [ "vue/html-closing-bracket-newline": [
"error", "error",
{ {
"singleline": "never", singleline: "never",
"multiline": "always" multiline: "always"
} }
] ],
"vue/multi-word-component-names": "off",
"vue/require-default-prop": "off",
"vue/require-prop-types": "error"
} }
} };

View file

@ -0,0 +1,3 @@
{
"trailingComma": "none"
}

File diff suppressed because one or more lines are too long

View file

@ -422,6 +422,12 @@
<symbol id="icon-mobile" viewBox="0 0 16 16"> <symbol id="icon-mobile" viewBox="0 0 16 16">
<path d="M12,0H4C2.897,0,2,0.897,2,2v12c0,1.103,0.897,2,2,2h8c1.103,0,2-0.897,2-2V2C14,0.897,13.103,0,12,0z M8,14 c-0.552,0-1-0.448-1-1s0.448-1,1-1s1,0.448,1,1S8.552,14,8,14z M12,10H4V2h8V10z" /> <path d="M12,0H4C2.897,0,2,0.897,2,2v12c0,1.103,0.897,2,2,2h8c1.103,0,2-0.897,2-2V2C14,0.897,13.103,0,12,0z M8,14 c-0.552,0-1-0.448-1-1s0.448-1,1-1s1,0.448,1,1S8.552,14,8,14z M12,10H4V2h8V10z" />
</symbol> </symbol>
<symbol id="icon-moon" viewBox="0 0 16 16">
<path d="M5.2,2C2.2,2.8,0,5.6,0,8.9C0,12.8,3.2,16,7.1,16c3.3,0,6-2.2,6.9-5.2C8.7,12.2,3.8,7.3,5.2,2z" />
<circle cx="10" cy="1" r="1" />
<circle cx="15" cy="7" r="1" />
<circle cx="10" cy="6" r="1" />
</symbol>
<symbol id="icon-open" viewBox="0 0 16 16"> <symbol id="icon-open" viewBox="0 0 16 16">
<path d="M8 7l-4 4h3v5h2v-5h3z" /> <path d="M8 7l-4 4h3v5h2v-5h3z" />
<path d="M0 1v12a1 1 0 0 0 1 1h4v-2H2V6h12v6h-3v2h4a1 1 0 0 0 1-1V1a1 1 0 0 0-1-1H1a1 1 0 0 0-1 1zm2 3V2h12v2H2z" /> <path d="M0 1v12a1 1 0 0 0 1 1h4v-2H2V6h12v6h-3v2h4a1 1 0 0 0 1-1V1a1 1 0 0 0-1-1H1a1 1 0 0 0-1 1zm2 3V2h12v2H2z" />

Before

Width:  |  Height:  |  Size: 57 KiB

After

Width:  |  Height:  |  Size: 57 KiB

Before After
Before After

File diff suppressed because one or more lines are too long

View file

@ -1,4 +1,3 @@
window.panel = window.panel || {}; window.panel = window.panel || {};
window.panel.plugins = { window.panel.plugins = {
components: {}, components: {},
@ -17,7 +16,7 @@ window.panel.plugin = function (plugin, parts) {
options = { template: options }; options = { template: options };
} }
window.panel.plugins["components"][`k-block-type-${name}`] = { window.panel.plugins.components[`k-block-type-${name}`] = {
extends: "k-block-type", extends: "k-block-type",
...options ...options
}; };
@ -25,35 +24,35 @@ window.panel.plugin = function (plugin, parts) {
// Components // Components
resolve(parts, "components", function (name, options) { resolve(parts, "components", function (name, options) {
window.panel.plugins["components"][name] = options; window.panel.plugins.components[name] = options;
}); });
// Fields // Fields
resolve(parts, "fields", function (name, options) { resolve(parts, "fields", function (name, options) {
window.panel.plugins["components"][`k-${name}-field`] = options; window.panel.plugins.components[`k-${name}-field`] = options;
}); });
// Icons // Icons
resolve(parts, "icons", function (name, options) { resolve(parts, "icons", function (name, options) {
window.panel.plugins["icons"][name] = options; window.panel.plugins.icons[name] = options;
}); });
// Sections // Sections
resolve(parts, "sections", function (name, options) { resolve(parts, "sections", function (name, options) {
window.panel.plugins["components"][`k-${name}-section`] = { window.panel.plugins.components[`k-${name}-section`] = {
...options, ...options,
mixins: ["section"].concat(options.mixins || []) mixins: ["section", ...(options.mixins || [])]
}; };
}); });
// Vue.use // `Vue.use`
resolve(parts, "use", function (name, options) { resolve(parts, "use", function (name, options) {
window.panel.plugins["use"].push(options); window.panel.plugins.use.push(options);
}); });
// created callback // Vue `created` callback
if (parts["created"]) { if (parts["created"]) {
window.panel.plugins["created"].push(parts["created"]); window.panel.plugins.created.push(parts["created"]);
} }
// Login // Login
@ -62,20 +61,15 @@ window.panel.plugin = function (plugin, parts) {
} }
// Third-party plugins // Third-party plugins
resolve(parts, "thirdParty", function(name, options) { resolve(parts, "thirdParty", function (name, options) {
window.panel.plugins["thirdParty"][name] = options; window.panel.plugins.thirdParty[name] = options;
}); });
}; };
function resolve(object, type, callback) { function resolve(object, type, callback) {
if (object[type]) { if (object[type]) {
for (const [name, options] of Object.entries(object[type])) {
if (Object.entries) { callback(name, options);
Object.entries(object[type]).forEach(function ([name, options]) {
callback(name, options);
});
} }
} }
} }

File diff suppressed because one or more lines are too long

View file

@ -1,3 +1,4 @@
/* eslint-env node */
import fs from "fs"; import fs from "fs";
import path from "path"; import path from "path";
import { defineConfig } from "vite"; import { defineConfig } from "vite";
@ -24,7 +25,7 @@ export default defineConfig(({ command }) => {
// Delete the flag file on any kind of exit // Delete the flag file on any kind of exit
for (const eventType of ["exit", "SIGINT", "uncaughtException"]) { for (const eventType of ["exit", "SIGINT", "uncaughtException"]) {
process.on(eventType, function(err) { process.on(eventType, function (err) {
if (fs.existsSync(runningPath) === true) { if (fs.existsSync(runningPath) === true) {
fs.unlinkSync(runningPath); fs.unlinkSync(runningPath);
} }
@ -54,7 +55,7 @@ export default defineConfig(({ command }) => {
minify: "terser", minify: "terser",
cssCodeSplit: false, cssCodeSplit: false,
rollupOptions: { rollupOptions: {
input: "/src/index.js", input: "./src/index.js",
output: { output: {
entryFileNames: "js/[name].js", entryFileNames: "js/[name].js",
chunkFileNames: "js/[name].js", chunkFileNames: "js/[name].js",
@ -63,7 +64,10 @@ export default defineConfig(({ command }) => {
} }
}, },
optimizeDeps: { optimizeDeps: {
entries: "src/**/*.{js,vue}" entries: "src/**/*.{js,vue}",
exclude: [
"vitest"
]
}, },
css: { css: {
postcss: { postcss: {
@ -94,6 +98,18 @@ export default defineConfig(({ command }) => {
"/media": proxy "/media": proxy
}, },
...custom ...custom
},
test: {
environment: "jsdom",
include: ["**/*.test.js"],
coverage: {
all: true,
exclude: ["**/*.e2e.js", "**/*.test.js"],
extension: ["js", "vue"],
src: "src",
reporter: ["text", "lcov"]
},
setupFiles: ["vitest.setup.js"]
} }
}; };
}); });

View file

@ -0,0 +1,4 @@
import Vue from "vue";
Vue.config.productionTip = false;
Vue.config.devtools = false;

View file

@ -1,12 +1,14 @@
<?php <?php
$root = dirname(__DIR__); $uri = urldecode(
parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH)
);
// https://yourdomain.com/media/super/nice.jpg // Emulate Apache's `mod_rewrite` functionality
if (file_exists($root . '/' . $_SERVER['SCRIPT_NAME'])) { if ($uri !== '/' && file_exists($_SERVER['DOCUMENT_ROOT'] . '/' . $uri)) {
return false; // serve the requested resource as-is. return false;
} }
$_SERVER['SCRIPT_NAME'] = str_replace($_SERVER['DOCUMENT_ROOT'], '', $index = $root . '/index.php'); $_SERVER['SCRIPT_NAME'] = '/index.php';
include $index; require $_SERVER['DOCUMENT_ROOT'] . '/' . $_SERVER['SCRIPT_NAME'];

View file

@ -22,7 +22,7 @@ use Throwable;
* @package Kirby Api * @package Kirby Api
* @author Bastian Allgeier <bastian@getkirby.com> * @author Bastian Allgeier <bastian@getkirby.com>
* @link https://getkirby.com * @link https://getkirby.com
* @copyright Bastian Allgeier GmbH * @copyright Bastian Allgeier
* @license https://getkirby.com/license * @license https://getkirby.com/license
*/ */
class Api class Api
@ -162,7 +162,7 @@ class Api
*/ */
public function call(string $path = null, string $method = 'GET', array $requestData = []) public function call(string $path = null, string $method = 'GET', array $requestData = [])
{ {
$path = rtrim($path, '/'); $path = rtrim($path ?? '', '/');
$this->setRequestMethod($method); $this->setRequestMethod($method);
$this->setRequestData($requestData); $this->setRequestData($requestData);
@ -181,7 +181,7 @@ class Api
// get the locale from the translation // get the locale from the translation
$translation = $user->kirby()->translation($language); $translation = $user->kirby()->translation($language);
$locale = ($translation !== null)? $translation->locale() : $language; $locale = ($translation !== null) ? $translation->locale() : $language;
// provide some variants as fallbacks to be // provide some variants as fallbacks to be
// compatible with as many systems as possible // compatible with as many systems as possible

View file

@ -14,7 +14,7 @@ use Kirby\Toolkit\Str;
* @package Kirby Api * @package Kirby Api
* @author Bastian Allgeier <bastian@getkirby.com> * @author Bastian Allgeier <bastian@getkirby.com>
* @link https://getkirby.com * @link https://getkirby.com
* @copyright Bastian Allgeier GmbH * @copyright Bastian Allgeier
* @license https://getkirby.com/license * @license https://getkirby.com/license
*/ */
class Collection class Collection

View file

@ -16,7 +16,7 @@ use Kirby\Toolkit\Str;
* @package Kirby Api * @package Kirby Api
* @author Bastian Allgeier <bastian@getkirby.com> * @author Bastian Allgeier <bastian@getkirby.com>
* @link https://getkirby.com * @link https://getkirby.com
* @copyright Bastian Allgeier GmbH * @copyright Bastian Allgeier
* @license https://getkirby.com/license * @license https://getkirby.com/license
*/ */
class Model class Model

View file

@ -10,7 +10,7 @@ use APCUIterator;
* @package Kirby Cache * @package Kirby Cache
* @author Bastian Allgeier <bastian@getkirby.com> * @author Bastian Allgeier <bastian@getkirby.com>
* @link https://getkirby.com * @link https://getkirby.com
* @copyright Bastian Allgeier GmbH * @copyright Bastian Allgeier
* @license https://opensource.org/licenses/MIT * @license https://opensource.org/licenses/MIT
*/ */
class ApcuCache extends Cache class ApcuCache extends Cache

View file

@ -11,7 +11,7 @@ namespace Kirby\Cache;
* @package Kirby Cache * @package Kirby Cache
* @author Bastian Allgeier <bastian@getkirby.com> * @author Bastian Allgeier <bastian@getkirby.com>
* @link https://getkirby.com * @link https://getkirby.com
* @copyright Bastian Allgeier GmbH * @copyright Bastian Allgeier
* @license https://opensource.org/licenses/MIT * @license https://opensource.org/licenses/MIT
*/ */
abstract class Cache abstract class Cache

View file

@ -13,7 +13,7 @@ use Kirby\Toolkit\Str;
* @package Kirby Cache * @package Kirby Cache
* @author Bastian Allgeier <bastian@getkirby.com> * @author Bastian Allgeier <bastian@getkirby.com>
* @link https://getkirby.com * @link https://getkirby.com
* @copyright Bastian Allgeier GmbH * @copyright Bastian Allgeier
* @license https://opensource.org/licenses/MIT * @license https://opensource.org/licenses/MIT
*/ */
class FileCache extends Cache class FileCache extends Cache

View file

@ -10,7 +10,7 @@ use Memcached as MemcachedExt;
* @package Kirby Cache * @package Kirby Cache
* @author Bastian Allgeier <bastian@getkirby.com> * @author Bastian Allgeier <bastian@getkirby.com>
* @link https://getkirby.com * @link https://getkirby.com
* @copyright Bastian Allgeier GmbH * @copyright Bastian Allgeier
* @license https://opensource.org/licenses/MIT * @license https://opensource.org/licenses/MIT
*/ */
class MemCached extends Cache class MemCached extends Cache

View file

@ -8,7 +8,7 @@ namespace Kirby\Cache;
* @package Kirby Cache * @package Kirby Cache
* @author Lukas Bestle <lukas@getkirby.com> * @author Lukas Bestle <lukas@getkirby.com>
* @link https://getkirby.com * @link https://getkirby.com
* @copyright Bastian Allgeier GmbH * @copyright Bastian Allgeier
* @license https://opensource.org/licenses/MIT * @license https://opensource.org/licenses/MIT
*/ */
class MemoryCache extends Cache class MemoryCache extends Cache

View file

@ -8,7 +8,7 @@ namespace Kirby\Cache;
* @package Kirby Cache * @package Kirby Cache
* @author Lukas Bestle <lukas@getkirby.com> * @author Lukas Bestle <lukas@getkirby.com>
* @link https://getkirby.com * @link https://getkirby.com
* @copyright Bastian Allgeier GmbH * @copyright Bastian Allgeier
* @license https://opensource.org/licenses/MIT * @license https://opensource.org/licenses/MIT
*/ */
class NullCache extends Cache class NullCache extends Cache

View file

@ -12,7 +12,7 @@ use Throwable;
* @package Kirby Cache * @package Kirby Cache
* @author Bastian Allgeier <bastian@getkirby.com> * @author Bastian Allgeier <bastian@getkirby.com>
* @link https://getkirby.com * @link https://getkirby.com
* @copyright Bastian Allgeier GmbH * @copyright Bastian Allgeier
* @license https://opensource.org/licenses/MIT * @license https://opensource.org/licenses/MIT
*/ */
class Value class Value

View file

@ -12,7 +12,7 @@ use Kirby\Form\Form;
* @package Kirby Cms * @package Kirby Cms
* @author Bastian Allgeier <bastian@getkirby.com> * @author Bastian Allgeier <bastian@getkirby.com>
* @link https://getkirby.com * @link https://getkirby.com
* @copyright Bastian Allgeier GmbH * @copyright Bastian Allgeier
* @license https://getkirby.com/license * @license https://getkirby.com/license
*/ */
class Api extends BaseApi class Api extends BaseApi

View file

@ -33,13 +33,11 @@ use Throwable;
* @package Kirby Cms * @package Kirby Cms
* @author Bastian Allgeier <bastian@getkirby.com> * @author Bastian Allgeier <bastian@getkirby.com>
* @link https://getkirby.com * @link https://getkirby.com
* @copyright Bastian Allgeier GmbH * @copyright Bastian Allgeier
* @license https://getkirby.com/license * @license https://getkirby.com/license
*/ */
class App class App
{ {
const CLASS_ALIAS = 'kirby';
use AppCaches; use AppCaches;
use AppErrors; use AppErrors;
use AppPlugins; use AppPlugins;
@ -47,6 +45,8 @@ class App
use AppUsers; use AppUsers;
use Properties; use Properties;
public const CLASS_ALIAS = 'kirby';
protected static $instance; protected static $instance;
protected static $version; protected static $version;
@ -56,6 +56,7 @@ class App
protected $collections; protected $collections;
protected $core; protected $core;
protected $defaultLanguage; protected $defaultLanguage;
protected $environment;
protected $language; protected $language;
protected $languages; protected $languages;
protected $locks; protected $locks;
@ -91,12 +92,17 @@ class App
// register all roots to be able to load stuff afterwards // register all roots to be able to load stuff afterwards
$this->bakeRoots($props['roots'] ?? []); $this->bakeRoots($props['roots'] ?? []);
// stuff from config and additional options try {
$this->optionsFromConfig(); // stuff from config and additional options
$this->optionsFromProps($props['options'] ?? []); $this->optionsFromConfig();
$this->optionsFromProps($props['options'] ?? []);
// register the Whoops error handler $this->optionsFromEnvironment();
$this->handleErrors(); } finally {
// register the Whoops error handler inside of a
// try-finally block to ensure it's still registered
// even if there is a problem loading the configurations
$this->handleErrors();
}
// set the path to make it available for the url bakery // set the path to make it available for the url bakery
$this->setPath($props['path'] ?? null); $this->setPath($props['path'] ?? null);
@ -282,11 +288,6 @@ class App
*/ */
protected function bakeUrls(array $urls = null) protected function bakeUrls(array $urls = null)
{ {
// inject the index URL from the config
if (isset($this->options['url']) === true) {
$urls['index'] = $this->options['url'];
}
$urls = array_merge($this->core->urls(), (array)$urls); $urls = array_merge($this->core->urls(), (array)$urls);
$this->urls = Ingredients::bake($urls); $this->urls = Ingredients::bake($urls);
return $this; return $this;
@ -330,6 +331,10 @@ class App
{ {
$router = $this->router(); $router = $this->router();
/**
* @todo Closures should not defined statically but
* for each instance to avoid this constant setting and unsetting
*/
$router::$beforeEach = function ($route, $path, $method) { $router::$beforeEach = function ($route, $path, $method) {
$this->trigger('route:before', compact('route', 'path', 'method')); $this->trigger('route:before', compact('route', 'path', 'method'));
}; };
@ -338,7 +343,12 @@ class App
return $this->apply('route:after', compact('route', 'path', 'method', 'result', 'final'), 'result'); return $this->apply('route:after', compact('route', 'path', 'method', 'result', 'final'), 'result');
}; };
return $router->call($path ?? $this->path(), $method ?? $this->request()->method()); $result = $router->call($path ?? $this->path(), $method ?? $this->request()->method());
$router::$beforeEach = null;
$router::$afterEach = null;
return $result;
} }
/** /**
@ -580,6 +590,17 @@ class App
return ($this->component('email'))($this, $props, $debug); return ($this->component('email'))($this, $props, $debug);
} }
/**
* Returns the environment object with access
* to the detected host, base url and dedicated options
*
* @return \Kirby\Cms\Environment
*/
public function environment()
{
return $this->environment;
}
/** /**
* Finds any file in the content directory * Finds any file in the content directory
* *
@ -762,10 +783,11 @@ class App
*/ */
public function kirbytags(string $text = null, array $data = []): string public function kirbytags(string $text = null, array $data = []): string
{ {
$data['kirby'] = $data['kirby'] ?? $this; $data['kirby'] ??= $this;
$data['site'] = $data['site'] ?? $data['kirby']->site(); $data['site'] ??= $data['kirby']->site();
$data['parent'] = $data['parent'] ?? $data['site']->page(); $data['parent'] ??= $data['site']->page();
$options = $this->options;
$options = $this->options;
$text = $this->apply('kirbytags:before', compact('text', 'data', 'options'), 'text'); $text = $this->apply('kirbytags:before', compact('text', 'data', 'options'), 'text');
$text = KirbyTags::parse($text, $data, $options); $text = KirbyTags::parse($text, $data, $options);
@ -780,14 +802,23 @@ class App
* @internal * @internal
* @param string|null $text * @param string|null $text
* @param array $data * @param array $data
* @param bool $inline * @param bool $inline (deprecated: use $data['markdown']['inline'] instead)
* @return string * @return string
* @todo add deprecation warning for $inline parameter in 3.7.0
* @todo rename $data parameter to $options in 3.7.0
* @todo remove $inline parameter in in 3.8.0
*/ */
public function kirbytext(string $text = null, array $data = [], bool $inline = false): string public function kirbytext(string $text = null, array $data = [], bool $inline = false): string
{ {
$options = A::merge([
'markdown' => [
'inline' => $inline
]
], $data);
$text = $this->apply('kirbytext:before', compact('text'), 'text'); $text = $this->apply('kirbytext:before', compact('text'), 'text');
$text = $this->kirbytags($text, $data); $text = $this->kirbytags($text, $options);
$text = $this->markdown($text, $inline); $text = $this->markdown($text, $options['markdown']);
if ($this->option('smartypants', false) !== false) { if ($this->option('smartypants', false) !== false) {
$text = $this->smartypants($text); $text = $this->smartypants($text);
@ -881,12 +912,34 @@ class App
* *
* @internal * @internal
* @param string|null $text * @param string|null $text
* @param bool $inline * @param bool|array $options
* @return string * @return string
* @todo rename $inline parameter to $options in 3.7.0
* @todo add deprecation warning for boolean $options in 3.7.0
* @todo remove boolean $options in in 3.8.0
*/ */
public function markdown(string $text = null, bool $inline = false): string public function markdown(string $text = null, $inline = null): string
{ {
return ($this->component('markdown'))($this, $text, $this->options['markdown'] ?? [], $inline); // TODO: remove after renaming parameter
$options = $inline;
// support for the old syntax to enable inline mode as second argument
if (is_bool($options) === true) {
$options = [
'inline' => $options
];
}
// merge global options with local options
$options = array_merge(
$this->options['markdown'] ?? [],
(array)$options
);
// TODO: deprecate passing the $inline parameter in 3.7.0
// TODO: remove passing the $inline parameter in 3.8.0
$inline = $options['inline'] ?? false;
return ($this->component('markdown'))($this, $text, $options, $inline);
} }
/** /**
@ -944,18 +997,30 @@ class App
*/ */
protected function optionsFromConfig(): array protected function optionsFromConfig(): array
{ {
$server = $this->server(); // create an empty config container
$root = $this->root('config');
Config::$data = []; Config::$data = [];
$main = F::load($root . '/config.php', []); // load the main config options
$host = F::load($root . '/config.' . basename($server->host()) . '.php', []); $root = $this->root('config');
$addr = F::load($root . '/config.' . basename($server->address()) . '.php', []); $options = F::load($root . '/config.php', []);
$config = Config::$data; // merge into one clean options array
return $this->options = array_replace_recursive(Config::$data, $options);
}
return $this->options = array_replace_recursive($config, $main, $host, $addr); /**
* Load all options for the current
* server environment
*
* @return array
*/
protected function optionsFromEnvironment(): array
{
// create the environment based on the URL setup
$this->environment = new Environment($this->root('config'), $this->options['url'] ?? null);
// merge into one clean options array
return $this->options = array_replace_recursive($this->options, $this->environment->options());
} }
/** /**
@ -966,7 +1031,10 @@ class App
*/ */
protected function optionsFromProps(array $options = []): array protected function optionsFromProps(array $options = []): array
{ {
return $this->options = array_replace_recursive($this->options, $options); return $this->options = array_replace_recursive(
$this->options,
$options
);
} }
/** /**
@ -1373,7 +1441,7 @@ class App
*/ */
public function server() public function server()
{ {
return $this->server = $this->server ?? new Server(); return $this->server ??= new Server();
} }
/** /**

View file

@ -11,7 +11,7 @@ use Kirby\Exception\InvalidArgumentException;
* @package Kirby Cms * @package Kirby Cms
* @author Bastian Allgeier <bastian@getkirby.com> * @author Bastian Allgeier <bastian@getkirby.com>
* @link https://getkirby.com * @link https://getkirby.com
* @copyright Bastian Allgeier GmbH * @copyright Bastian Allgeier
* @license https://getkirby.com/license * @license https://getkirby.com/license
*/ */
trait AppCaches trait AppCaches

Some files were not shown because too many files have changed in this diff Show more