This commit is contained in:
Bastian Allgeier
2020-07-07 12:40:13 +02:00
parent 5f025ac2c2
commit f79d2e960c
176 changed files with 10532 additions and 5343 deletions

View File

@@ -1,16 +1,3 @@
# Security Policy # Security Policy
## Supported Versions Please see the [Security Policy on the Kirby website](https://getkirby.com/security) for a list of the currently supported Kirby versions and of past security incidents as well as for information on how to report security vulnerabilities in the Kirby core or in the Panel.
| Version | Supported |
| ------- | ------------------ |
| 3.2.3+ | :white_check_mark: |
| 2.5.12+ | :white_check_mark: |
## Security Guide
Please follow our security guide to keep your Kirby installation safe: https://getkirby.com/docs/guide/security#reporting-security-issues
## Reporting a Vulnerability
If you have spotted a vulnerability in Kirby's core or the Panel, please make sure to let us know immediately. We take any report very seriously. You can always write us directly at support@getkirby.com. Please do not write to us publicly, e.g. in the forum.

83
kirby/assets/whoops.css Executable file
View File

@@ -0,0 +1,83 @@
body {
background: #efefef;
font: normal normal 400 12px/1.5 -apple-system, BlinkMacSystemFont, Segoe UI,
Roboto, Helvetica, Arial, sans-serif;
}
.left-panel {
background: transparent;
}
header {
background-color: #313740;
}
.exc-title-primary {
color: hsl(0, 71%, 55%);
}
.frame.active {
color: hsl(0, 71%, 55%);
box-shadow: inset -5px 0 0 0 #d16464;
}
.frame:not(.active):hover {
background: rgba(203, 215, 229, 0.5);
}
.rightButton {
color: #999;
box-shadow: inset 0 0 0 1px #777;
border-radius: 0;
}
.rightButton:hover {
box-shadow: inset 0 0 0 1px #555;
color: #777;
}
.details-heading {
color: #7e9abf;
font-weight: 500;
}
.frame-code {
background: #000;
}
pre.code-block,
code.code-block,
.frame-args.code-block,
.frame-args.code-block samp {
background: #16171a;
}
.linenums li.current {
background: transparent;
}
.linenums li.current.active {
background: rgba(209, 100, 100, 0.3);
}
pre .atv,
code .atv,
pre .str,
code .str {
color: #a7bd68;
}
pre .tag,
code .tag {
color: #d16464;
}
pre .kwd,
code .kwd {
color: #8abeb7;
}
pre .atn,
code .atn {
color: #de935f;
}

View File

@@ -2,9 +2,12 @@
/** /**
* Validate the PHP version to already * Validate the PHP version to already
* stop at older versions * stop at older or too recent versions
*/ */
if (version_compare(phpversion(), '7.1.0', '>=') === false) { if (
version_compare(PHP_VERSION, '7.2.0', '>=') === false ||
version_compare(PHP_VERSION, '7.5.0', '<') === false
) {
die(include __DIR__ . '/views/php.php'); die(include __DIR__ . '/views/php.php');
} }

3466
kirby/cacert.pem Executable file

File diff suppressed because it is too large Load Diff

View File

@@ -1,7 +1,7 @@
{ {
"name": "getkirby/cms", "name": "getkirby/cms",
"description": "The Kirby 3 core", "description": "The Kirby 3 core",
"version": "3.3.6", "version": "3.4.0",
"license": "proprietary", "license": "proprietary",
"keywords": ["kirby", "cms", "core"], "keywords": ["kirby", "cms", "core"],
"homepage": "https://getkirby.com", "homepage": "https://getkirby.com",
@@ -20,17 +20,17 @@
"source": "https://github.com/getkirby/kirby" "source": "https://github.com/getkirby/kirby"
}, },
"require": { "require": {
"php": ">=7.1.0", "php": ">=7.2.0 <7.5.0",
"ext-mbstring": "*", "ext-mbstring": "*",
"ext-ctype": "*", "ext-ctype": "*",
"getkirby/composer-installer": "^1.0", "getkirby/composer-installer": "^1.0",
"mustangostang/spyc": "0.6.2", "mustangostang/spyc": "0.6.3",
"michelf/php-smartypants": "1.8.1", "michelf/php-smartypants": "1.8.1",
"claviska/simpleimage": "3.3.3", "claviska/simpleimage": "3.3.4",
"phpmailer/phpmailer": "6.0.7", "phpmailer/phpmailer": "6.1.6",
"filp/whoops": "2.3.1", "filp/whoops": "2.7.2",
"true/punycode": "2.1.1", "true/punycode": "2.1.1",
"laminas/laminas-escaper": "2.6.0" "laminas/laminas-escaper": "2.6.1"
}, },
"autoload": { "autoload": {
"files": ["config/setup.php"], "files": ["config/setup.php"],
@@ -41,10 +41,11 @@
}, },
"scripts": { "scripts": {
"analyze": "phpstan analyse", "analyze": "phpstan analyse",
"test": "phpunit --stderr --coverage-html=tests/coverage",
"zip": "composer archive --format=zip --file=dist",
"build": "./scripts/build", "build": "./scripts/build",
"fix": "php-cs-fixer fix --config .php_cs" "fix": "php-cs-fixer fix --config .php_cs",
"post-update-cmd": "curl -o cacert.pem https://curl.haxx.se/ca/cacert.pem",
"test": "phpunit --stderr --coverage-html=tests/coverage",
"zip": "composer archive --format=zip --file=dist"
}, },
"config": { "config": {
"optimize-autoloader": true "optimize-autoloader": true

106
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": "957cce44d582e1e5af20616ff45b9c12", "content-hash": "8ec61411e7f3b3a717572d0847654a96",
"packages": [ "packages": [
{ {
"name": "claviska/simpleimage", "name": "claviska/simpleimage",
"version": "3.3.3", "version": "3.3.4",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/claviska/SimpleImage.git", "url": "https://github.com/claviska/SimpleImage.git",
"reference": "31ba5b8358e1663a2813e2ada7242fa8d97a96dc" "reference": "3786d80af8e6d05e5e42f0350e5e5da5b92041a0"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/claviska/SimpleImage/zipball/31ba5b8358e1663a2813e2ada7242fa8d97a96dc", "url": "https://api.github.com/repos/claviska/SimpleImage/zipball/3786d80af8e6d05e5e42f0350e5e5da5b92041a0",
"reference": "31ba5b8358e1663a2813e2ada7242fa8d97a96dc", "reference": "3786d80af8e6d05e5e42f0350e5e5da5b92041a0",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -43,20 +43,20 @@
} }
], ],
"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.",
"time": "2017-09-12T09:03:56+00:00" "time": "2019-09-26T01:22:02+00:00"
}, },
{ {
"name": "filp/whoops", "name": "filp/whoops",
"version": "2.3.1", "version": "2.7.2",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/filp/whoops.git", "url": "https://github.com/filp/whoops.git",
"reference": "bc0fd11bc455cc20ee4b5edabc63ebbf859324c7" "reference": "17d0d3f266c8f925ebd035cd36f83cf802b47d4a"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/filp/whoops/zipball/bc0fd11bc455cc20ee4b5edabc63ebbf859324c7", "url": "https://api.github.com/repos/filp/whoops/zipball/17d0d3f266c8f925ebd035cd36f83cf802b47d4a",
"reference": "bc0fd11bc455cc20ee4b5edabc63ebbf859324c7", "reference": "17d0d3f266c8f925ebd035cd36f83cf802b47d4a",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -65,8 +65,8 @@
}, },
"require-dev": { "require-dev": {
"mockery/mockery": "^0.9 || ^1.0", "mockery/mockery": "^0.9 || ^1.0",
"phpunit/phpunit": "^4.8.35 || ^5.7", "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0",
"symfony/var-dumper": "^2.6 || ^3.0 || ^4.0" "symfony/var-dumper": "^2.6 || ^3.0 || ^4.0 || ^5.0"
}, },
"suggest": { "suggest": {
"symfony/var-dumper": "Pretty print complex values better with var-dumper available", "symfony/var-dumper": "Pretty print complex values better with var-dumper available",
@@ -75,7 +75,7 @@
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-master": "2.2-dev" "dev-master": "2.6-dev"
} }
}, },
"autoload": { "autoload": {
@@ -104,7 +104,7 @@
"throwable", "throwable",
"whoops" "whoops"
], ],
"time": "2018-10-23T09:00:00+00:00" "time": "2020-05-05T12:28:07+00:00"
}, },
{ {
"name": "getkirby/composer-installer", "name": "getkirby/composer-installer",
@@ -146,16 +146,16 @@
}, },
{ {
"name": "laminas/laminas-escaper", "name": "laminas/laminas-escaper",
"version": "2.6.0", "version": "2.6.1",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/laminas/laminas-escaper.git", "url": "https://github.com/laminas/laminas-escaper.git",
"reference": "72d3a14647f6234cdd9386d6de821a98e539af91" "reference": "25f2a053eadfa92ddacb609dcbbc39362610da70"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/72d3a14647f6234cdd9386d6de821a98e539af91", "url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/25f2a053eadfa92ddacb609dcbbc39362610da70",
"reference": "72d3a14647f6234cdd9386d6de821a98e539af91", "reference": "25f2a053eadfa92ddacb609dcbbc39362610da70",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -191,20 +191,20 @@
"escaper", "escaper",
"laminas" "laminas"
], ],
"time": "2019-12-31T16:43:29+00:00" "time": "2019-12-31T16:43:30+00:00"
}, },
{ {
"name": "laminas/laminas-zendframework-bridge", "name": "laminas/laminas-zendframework-bridge",
"version": "1.0.3", "version": "1.0.4",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/laminas/laminas-zendframework-bridge.git", "url": "https://github.com/laminas/laminas-zendframework-bridge.git",
"reference": "bfbbdb6c998d50dbf69d2187cb78a5f1fa36e1e9" "reference": "fcd87520e4943d968557803919523772475e8ea3"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/laminas/laminas-zendframework-bridge/zipball/bfbbdb6c998d50dbf69d2187cb78a5f1fa36e1e9", "url": "https://api.github.com/repos/laminas/laminas-zendframework-bridge/zipball/fcd87520e4943d968557803919523772475e8ea3",
"reference": "bfbbdb6c998d50dbf69d2187cb78a5f1fa36e1e9", "reference": "fcd87520e4943d968557803919523772475e8ea3",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -243,7 +243,7 @@
"laminas", "laminas",
"zf" "zf"
], ],
"time": "2020-04-03T16:01:00+00:00" "time": "2020-05-20T16:45:56+00:00"
}, },
{ {
"name": "league/color-extractor", "name": "league/color-extractor",
@@ -351,16 +351,16 @@
}, },
{ {
"name": "mustangostang/spyc", "name": "mustangostang/spyc",
"version": "0.6.2", "version": "0.6.3",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/mustangostang/spyc.git", "url": "git@github.com:mustangostang/spyc.git",
"reference": "23c35ae854d835f2d7bcc3e3ad743d7e57a8c14d" "reference": "4627c838b16550b666d15aeae1e5289dd5b77da0"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/mustangostang/spyc/zipball/23c35ae854d835f2d7bcc3e3ad743d7e57a8c14d", "url": "https://api.github.com/repos/mustangostang/spyc/zipball/4627c838b16550b666d15aeae1e5289dd5b77da0",
"reference": "23c35ae854d835f2d7bcc3e3ad743d7e57a8c14d", "reference": "4627c838b16550b666d15aeae1e5289dd5b77da0",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -397,20 +397,20 @@
"yaml", "yaml",
"yml" "yml"
], ],
"time": "2017-02-24T16:06:33+00:00" "time": "2019-09-10T13:16:29+00:00"
}, },
{ {
"name": "phpmailer/phpmailer", "name": "phpmailer/phpmailer",
"version": "v6.0.7", "version": "v6.1.6",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/PHPMailer/PHPMailer.git", "url": "https://github.com/PHPMailer/PHPMailer.git",
"reference": "0c41a36d4508d470e376498c1c0c527aa36a2d59" "reference": "c2796cb1cb99d7717290b48c4e6f32cb6c60b7b3"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/0c41a36d4508d470e376498c1c0c527aa36a2d59", "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/c2796cb1cb99d7717290b48c4e6f32cb6c60b7b3",
"reference": "0c41a36d4508d470e376498c1c0c527aa36a2d59", "reference": "c2796cb1cb99d7717290b48c4e6f32cb6c60b7b3",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -419,13 +419,9 @@
"php": ">=5.5.0" "php": ">=5.5.0"
}, },
"require-dev": { "require-dev": {
"doctrine/annotations": "1.2.*", "doctrine/annotations": "^1.2",
"friendsofphp/php-cs-fixer": "^2.2", "friendsofphp/php-cs-fixer": "^2.2",
"phpdocumentor/phpdocumentor": "2.*", "phpunit/phpunit": "^4.8 || ^5.7"
"phpunit/phpunit": "^4.8 || ^5.7",
"zendframework/zend-eventmanager": "3.0.*",
"zendframework/zend-i18n": "2.7.3",
"zendframework/zend-serializer": "2.7.*"
}, },
"suggest": { "suggest": {
"ext-mbstring": "Needed to send email in multibyte encoding charset", "ext-mbstring": "Needed to send email in multibyte encoding charset",
@@ -443,17 +439,17 @@
}, },
"notification-url": "https://packagist.org/downloads/", "notification-url": "https://packagist.org/downloads/",
"license": [ "license": [
"LGPL-2.1" "LGPL-2.1-only"
], ],
"authors": [ "authors": [
{
"name": "Jim Jagielski",
"email": "jimjag@gmail.com"
},
{ {
"name": "Marcus Bointon", "name": "Marcus Bointon",
"email": "phpmailer@synchromedia.co.uk" "email": "phpmailer@synchromedia.co.uk"
}, },
{
"name": "Jim Jagielski",
"email": "jimjag@gmail.com"
},
{ {
"name": "Andy Prevost", "name": "Andy Prevost",
"email": "codeworxtech@users.sourceforge.net" "email": "codeworxtech@users.sourceforge.net"
@@ -463,7 +459,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",
"time": "2019-02-01T15:04:28+00:00" "time": "2020-05-27T12:24:03+00:00"
}, },
{ {
"name": "psr/log", "name": "psr/log",
@@ -514,16 +510,16 @@
}, },
{ {
"name": "symfony/polyfill-mbstring", "name": "symfony/polyfill-mbstring",
"version": "v1.15.0", "version": "v1.17.1",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git", "url": "https://github.com/symfony/polyfill-mbstring.git",
"reference": "81ffd3a9c6d707be22e3012b827de1c9775fc5ac" "reference": "7110338d81ce1cbc3e273136e4574663627037a7"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/81ffd3a9c6d707be22e3012b827de1c9775fc5ac", "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/7110338d81ce1cbc3e273136e4574663627037a7",
"reference": "81ffd3a9c6d707be22e3012b827de1c9775fc5ac", "reference": "7110338d81ce1cbc3e273136e4574663627037a7",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -535,7 +531,11 @@
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-master": "1.15-dev" "dev-master": "1.17-dev"
},
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
} }
}, },
"autoload": { "autoload": {
@@ -569,7 +569,7 @@
"portable", "portable",
"shim" "shim"
], ],
"time": "2020-03-09T19:04:49+00:00" "time": "2020-06-06T08:46:27+00:00"
}, },
{ {
"name": "true/punycode", "name": "true/punycode",
@@ -625,7 +625,7 @@
"prefer-stable": false, "prefer-stable": false,
"prefer-lowest": false, "prefer-lowest": false,
"platform": { "platform": {
"php": ">=7.1.0", "php": ">=7.2.0 <7.5.0",
"ext-mbstring": "*", "ext-mbstring": "*",
"ext-ctype": "*" "ext-ctype": "*"
}, },

View File

@@ -3,15 +3,16 @@
use Kirby\Exception\PermissionException; use Kirby\Exception\PermissionException;
return function () { return function () {
$auth = $this->kirby()->auth(); $auth = $this->kirby()->auth();
$allowImpersonation = $this->kirby()->option('api.allowImpersonation') ?? false;
// csrf token check // csrf token check
if ($auth->type() === 'session' && $auth->csrf() === false) { if ($auth->type($allowImpersonation) === 'session' && $auth->csrf() === false) {
throw new PermissionException('Unauthenticated'); throw new PermissionException('Unauthenticated');
} }
// get user from session or basic auth // get user from session or basic auth
if ($user = $auth->user()) { if ($user = $auth->user(null, $allowImpersonation)) {
if ($user->role()->permissions()->for('access', 'panel') === false) { if ($user->role()->permissions()->for('access', 'panel') === false) {
throw new PermissionException(['key' => 'access.panel']); throw new PermissionException(['key' => 'access.panel']);
} }

View File

@@ -71,7 +71,13 @@ return [
return $this->user(); return $this->user();
}, },
'version' => function () { 'version' => function () {
return $this->kirby()->version(); $user = $this->user();
if ($user && $user->role()->permissions()->for('access', 'settings') === true) {
return $this->kirby()->version();
} else {
return null;
}
} }
], ],
'type' => 'Kirby\Cms\System', 'type' => 'Kirby\Cms\System',

View File

@@ -50,6 +50,9 @@ return [
'role' => function (User $user) { 'role' => function (User $user) {
return $user->role(); return $user->role();
}, },
'roles' => function (User $user) {
return $user->roles();
},
'username' => function (User $user) { 'username' => function (User $user) {
return $user->username(); return $user->username();
} }

View File

@@ -103,5 +103,21 @@ return [
return $this->file($path, $filename)->changeName($this->requestBody('name')); return $this->file($path, $filename)->changeName($this->requestBody('name'));
} }
], ],
[
'pattern' => 'files/search',
'method' => 'GET|POST',
'action' => function () {
$files = $this
->site()
->index(true)
->filterBy('isReadable', true)
->files();
if ($this->requestMethod() === 'GET') {
return $files->search($this->requestQuery('q'));
} else {
return $files->query($this->requestBody());
}
}
],
]; ];

View File

@@ -119,6 +119,12 @@ return [
return $this->user($id)->changeRole($this->requestBody('role')); return $this->user($id)->changeRole($this->requestBody('role'));
} }
], ],
[
'pattern' => 'users/(:any)/roles',
'action' => function (string $id) {
return $this->user($id)->roles();
}
],
[ [
'pattern' => 'users/(:any)/sections/(:any)', 'pattern' => 'users/(:any)/sections/(:any)',
'method' => 'GET', 'method' => 'GET',

View File

@@ -1,17 +1,21 @@
<?php <?php
use Kirby\Cms\App; use Kirby\Cms\App;
use Kirby\Cms\Collection;
use Kirby\Cms\File; use Kirby\Cms\File;
use Kirby\Cms\Filename; use Kirby\Cms\Filename;
use Kirby\Cms\FileVersion; use Kirby\Cms\FileVersion;
use Kirby\Cms\Template; use Kirby\Cms\Template;
use Kirby\Data\Data; use Kirby\Data\Data;
use Kirby\Http\Server; use Kirby\Http\Server;
use Kirby\Http\Uri;
use Kirby\Http\Url;
use Kirby\Image\Darkroom; use Kirby\Image\Darkroom;
use Kirby\Text\Markdown; use Kirby\Text\Markdown;
use Kirby\Text\SmartyPants; use Kirby\Text\SmartyPants;
use Kirby\Toolkit\A; use Kirby\Toolkit\A;
use Kirby\Toolkit\F; use Kirby\Toolkit\F;
use Kirby\Toolkit\Str;
use Kirby\Toolkit\Tpl as Snippet; use Kirby\Toolkit\Tpl as Snippet;
return [ return [
@@ -134,6 +138,106 @@ return [
return $markdown->parse($text, $inline); return $markdown->parse($text, $inline);
}, },
/**
* Add your own search engine
*
* @param \Kirby\Cms\App $kirby Kirby instance
* @param \Kirby\Cms\Collection $collection Collection of searchable models
* @param string $query
* @param mixed $params
* @return \Kirby\Cms\Collection|bool
*/
'search' => function (App $kirby, Collection $collection, string $query = null, $params = []) {
if (empty(trim($query)) === true) {
return $collection->limit(0);
}
if (is_string($params) === true) {
$params = ['fields' => Str::split($params, '|')];
}
$defaults = [
'fields' => [],
'minlength' => 2,
'score' => [],
'words' => false,
];
$options = array_merge($defaults, $params);
$collection = clone $collection;
$searchwords = preg_replace('/(\s)/u', ',', $query);
$searchwords = Str::split($searchwords, ',', $options['minlength']);
$lowerQuery = mb_strtolower($query);
if (empty($options['stopwords']) === false) {
$searchwords = array_diff($searchwords, $options['stopwords']);
}
$searchwords = array_map(function ($value) use ($options) {
return $options['words'] ? '\b' . preg_quote($value) . '\b' : preg_quote($value);
}, $searchwords);
$preg = '!(' . implode('|', $searchwords) . ')!i';
$results = $collection->filter(function ($item) use ($query, $preg, $options, $lowerQuery) {
$data = $item->content()->toArray();
$keys = array_keys($data);
$keys[] = 'id';
if (is_a($item, 'Kirby\Cms\User') === true) {
$keys[] = 'name';
$keys[] = 'email';
$keys[] = 'role';
} elseif (is_a($item, 'Kirby\Cms\Page') === true) {
// apply the default score for pages
$options['score'] = array_merge([
'id' => 64,
'title' => 64,
], $options['score']);
}
if (empty($options['fields']) === false) {
$fields = array_map('strtolower', $options['fields']);
$keys = array_intersect($keys, $fields);
}
$item->searchHits = 0;
$item->searchScore = 0;
foreach ($keys as $key) {
$score = $options['score'][$key] ?? 1;
$value = $data[$key] ?? (string)$item->$key();
$lowerValue = mb_strtolower($value);
// check for exact matches
if ($lowerQuery == $lowerValue) {
$item->searchScore += 16 * $score;
$item->searchHits += 1;
// check for exact beginning matches
} elseif (Str::startsWith($lowerValue, $lowerQuery) === true) {
$item->searchScore += 8 * $score;
$item->searchHits += 1;
// check for exact query matches
} elseif ($matches = preg_match_all('!' . preg_quote($query) . '!i', $value, $r)) {
$item->searchScore += 2 * $score;
$item->searchHits += $matches;
}
// check for any match
if ($matches = preg_match_all($preg, $value, $r)) {
$item->searchHits += $matches;
$item->searchScore += $matches * $score;
}
}
return $item->searchHits > 0 ? true : false;
});
return $results->sortBy('searchScore', 'desc');
},
/** /**
* Add your own SmartyPants parser * Add your own SmartyPants parser
* *
@@ -221,12 +325,51 @@ return [
* *
* @param \Kirby\Cms\App $kirby Kirby instance * @param \Kirby\Cms\App $kirby Kirby instance
* @param string $path URL path * @param string $path URL path
* @param array|null $options Array of options for the Uri class * @param array|string|null $options Array of options for the Uri class
* @param Closure $originalHandler Callback function to the original URL handler with `$path` and `$options` as parameters * @param Closure $originalHandler Deprecated: Callback function to the original URL handler with `$path` and `$options` as parameters
* Use `$kirby->nativeComponent('url')` inside your URL component instead.
* @return string * @return string
*/ */
'url' => function (App $kirby, string $path = null, $options = [], Closure $originalHandler): string { 'url' => function (App $kirby, string $path = null, $options = null, Closure $originalHandler = null): string {
return $originalHandler($path, $options); $language = null;
// get language from simple string option
if (is_string($options) === true) {
$language = $options;
$options = null;
}
// get language from array
if (is_array($options) === true && isset($options['language']) === true) {
$language = $options['language'];
unset($options['language']);
}
// get a language url for the linked page, if the page can be found
if ($kirby->multilang() === true) {
$parts = Str::split($path, '#');
if ($page = page($parts[0] ?? null)) {
$path = $page->url($language);
if (isset($parts[1]) === true) {
$path .= '#' . $parts[1];
}
}
}
// keep relative urls
if (substr($path, 0, 2) === './' || substr($path, 0, 3) === '../') {
return $path;
}
$url = Url::makeAbsolute($path, $kirby->url());
if ($options === null) {
return $url;
}
return (new Uri($url, $options))->toString();
}, },
]; ];

View File

@@ -1,6 +1,6 @@
<?php <?php
use Kirby\Data\Yaml; use Kirby\Data\Data;
use Kirby\Toolkit\A; use Kirby\Toolkit\A;
return [ return [
@@ -78,7 +78,7 @@ return [
'toFiles' => function ($value = null) { 'toFiles' => function ($value = null) {
$files = []; $files = [];
foreach (Yaml::decode($value) as $id) { foreach (Data::decode($value, 'yaml') as $id) {
if (is_array($id) === true) { if (is_array($id) === true) {
$id = $id['id'] ?? null; $id = $id['id'] ?? null;
} }

View File

@@ -3,12 +3,10 @@
return [ return [
'extends' => 'tags', 'extends' => 'tags',
'props' => [ 'props' => [
/** /**
* Unset inherited props * Unset inherited props
*/ */
'accept' => null, 'accept' => null,
/** /**
* Custom icon to replace the arrow down. * Custom icon to replace the arrow down.
*/ */
@@ -17,8 +15,10 @@ return [
}, },
/** /**
* Enable/disable the search in the dropdown * Enable/disable the search in the dropdown
* Also limit displayed items (display: 20)
* and set minimum number of characters to search (min: 3)
*/ */
'search' => function (bool $search = true) { 'search' => function ($search = true) {
return $search; return $search;
}, },
/** /**

View File

@@ -1,6 +1,6 @@
<?php <?php
use Kirby\Data\Yaml; use Kirby\Data\Data;
use Kirby\Toolkit\A; use Kirby\Toolkit\A;
return [ return [
@@ -72,7 +72,7 @@ return [
$pages = []; $pages = [];
$kirby = kirby(); $kirby = kirby();
foreach (Yaml::decode($value) as $id) { foreach (Data::decode($value, 'yaml') as $id) {
if (is_array($id) === true) { if (is_array($id) === true) {
$id = $id['id'] ?? null; $id = $id['id'] ?? null;
} }

View File

@@ -1,7 +1,7 @@
<?php <?php
use Kirby\Cms\Form; use Kirby\Cms\Form;
use Kirby\Data\Yaml; use Kirby\Data\Data;
use Kirby\Toolkit\I18n; use Kirby\Toolkit\I18n;
return [ return [
@@ -24,6 +24,14 @@ return [
// be lowercase as well. // be lowercase as well.
return array_change_key_case($columns); return array_change_key_case($columns);
}, },
/**
* Toggles duplicating rows for the structure
*/
'duplicate' => function (bool $duplicate = true) {
return $duplicate;
},
/** /**
* The placeholder text if no items have been added yet * The placeholder text if no items have been added yet
*/ */
@@ -62,6 +70,12 @@ return [
'min' => function (int $min = null) { 'min' => function (int $min = null) {
return $min; return $min;
}, },
/**
* Toggles adding to the top or bottom of the list
*/
'prepend' => function (bool $prepend = null) {
return $prepend;
},
/** /**
* Toggles drag & drop sorting * Toggles drag & drop sorting
*/ */
@@ -131,7 +145,7 @@ return [
], ],
'methods' => [ 'methods' => [
'rows' => function ($value) { 'rows' => function ($value) {
$rows = Yaml::decode($value); $rows = Data::decode($value, 'yaml');
$value = []; $value = [];
foreach ($rows as $index => $row) { foreach ($rows as $index => $row) {

View File

@@ -1,6 +1,6 @@
<?php <?php
use Kirby\Data\Yaml; use Kirby\Data\Data;
use Kirby\Toolkit\A; use Kirby\Toolkit\A;
return [ return [
@@ -54,7 +54,7 @@ return [
$users = []; $users = [];
$kirby = kirby(); $kirby = kirby();
foreach (Yaml::decode($value) as $email) { foreach (Data::decode($value, 'yaml') as $email) {
if (is_array($email) === true) { if (is_array($email) === true) {
$email = $email['email'] ?? null; $email = $email['email'] ?? null;
} }

View File

@@ -223,11 +223,11 @@ function go(string $url = null, int $code = 302)
/** /**
* Shortcut for html() * Shortcut for html()
* *
* @param string $string unencoded text * @param string|null $string unencoded text
* @param bool $keepTags * @param bool $keepTags
* @return string * @return string
*/ */
function h(string $string = null, bool $keepTags = false) function h(?string $string, bool $keepTags = false)
{ {
return Html::encode($string, $keepTags); return Html::encode($string, $keepTags);
} }
@@ -235,11 +235,11 @@ function h(string $string = null, bool $keepTags = false)
/** /**
* Creates safe html by encoding special characters * Creates safe html by encoding special characters
* *
* @param string $string unencoded text * @param string|null $string unencoded text
* @param bool $keepTags * @param bool $keepTags
* @return string * @return string
*/ */
function html(string $string = null, bool $keepTags = false) function html(?string $string, bool $keepTags = false)
{ {
return Html::encode($string, $keepTags); return Html::encode($string, $keepTags);
} }

View File

@@ -2,14 +2,11 @@
use Kirby\Cms\App; use Kirby\Cms\App;
use Kirby\Cms\Field; use Kirby\Cms\Field;
use Kirby\Cms\File;
use Kirby\Cms\Files; use Kirby\Cms\Files;
use Kirby\Cms\Html; use Kirby\Cms\Html;
use Kirby\Cms\Page;
use Kirby\Cms\Structure; use Kirby\Cms\Structure;
use Kirby\Cms\Url; use Kirby\Cms\Url;
use Kirby\Data\Json; use Kirby\Data\Data;
use Kirby\Data\Yaml;
use Kirby\Exception\Exception; use Kirby\Exception\Exception;
use Kirby\Exception\InvalidArgumentException; use Kirby\Exception\InvalidArgumentException;
use Kirby\Toolkit\Str; use Kirby\Toolkit\Str;
@@ -67,9 +64,8 @@ return function (App $app) {
'toData' => function (Field $field, string $method = ',') { 'toData' => function (Field $field, string $method = ',') {
switch ($method) { switch ($method) {
case 'yaml': case 'yaml':
return Yaml::decode($field->value);
case 'json': case 'json':
return Json::decode($field->value); return Data::decode($field->value, $method);
default: default:
return $field->split($method); return $field->split($method);
} }
@@ -216,7 +212,7 @@ return function (App $app) {
*/ */
'toStructure' => function (Field $field) { 'toStructure' => function (Field $field) {
try { try {
return new Structure(Yaml::decode($field->value), $field->parent()); return new Structure(Data::decode($field->value, 'yaml'), $field->parent());
} catch (Exception $e) { } catch (Exception $e) {
if ($field->parent() === null) { if ($field->parent() === null) {
$message = 'Invalid structure data for "' . $field->key() . '" field'; $message = 'Invalid structure data for "' . $field->key() . '" field';
@@ -287,6 +283,17 @@ return function (App $app) {
// manipulators // manipulators
/**
* Applies the callback function to the field
* @since 3.4.0
*
* @param \Kirby\Cms\Field $field
* @param Closure $callback
*/
'callback' => function (Field $field, Closure $callback) {
return $callback($field);
},
/** /**
* Escapes the field value to be safely used in HTML * Escapes the field value to be safely used in HTML
* templates without the risk of XSS attacks * templates without the risk of XSS attacks
@@ -309,7 +316,7 @@ return function (App $app) {
* @param string $rep * @param string $rep
* @return \Kirby\Cms\Field * @return \Kirby\Cms\Field
*/ */
'excerpt' => function (Field $field, int $chars = 0, bool $strip = true, string $rep = '…') { 'excerpt' => function (Field $field, int $chars = 0, bool $strip = true, string $rep = ' …') {
$field->value = Str::excerpt($field->kirbytext()->value(), $chars, $strip, $rep); $field->value = Str::excerpt($field->kirbytext()->value(), $chars, $strip, $rep);
return $field; return $field;
}, },
@@ -326,14 +333,20 @@ return function (App $app) {
}, },
/** /**
* Converts all line breaks in the field content to `<br>` tags. * Strips all block-level HTML elements from the field value,
* it can be safely placed inside of other inline elements
* without the risk of breaking the HTML structure.
* @since 3.3.0 * @since 3.3.0
* *
* @param \Kirby\Cms\Field $field * @param \Kirby\Cms\Field $field
* @return \Kirby\Cms\Field * @return \Kirby\Cms\Field
*/ */
'nl2br' => function (Field $field) { 'inline' => function (Field $field) {
$field->value = nl2br($field->value, false); // List of valid inline elements taken from: https://developer.mozilla.org/de/docs/Web/HTML/Inline_elemente
// Obsolete elements, script tags, image maps and form elements have
// been excluded for safety reasons and as they are most likely not
// 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>');
return $field; return $field;
}, },
@@ -384,24 +397,6 @@ return function (App $app) {
return $field; return $field;
}, },
/**
* Strips all block-level HTML elements from the field value,
* it can be safely placed inside of other inline elements
* without the risk of breaking the HTML structure.
* @since 3.3.0
*
* @param \Kirby\Cms\Field $field
* @return \Kirby\Cms\Field
*/
'inline' => function (Field $field) {
// List of valid inline elements taken from: https://developer.mozilla.org/de/docs/Web/HTML/Inline_elemente
// Obsolete elements, script tags, image maps and form elements have
// been excluded for safety reasons and as they are most likely not
// 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>');
return $field;
},
/** /**
* Converts the field content to lowercase * Converts the field content to lowercase
* *
@@ -425,13 +420,55 @@ return function (App $app) {
}, },
/** /**
* Converts the field content to valid XML * Converts all line breaks in the field content to `<br>` tags.
* @since 3.3.0
* *
* @param \Kirby\Cms\Field $field * @param \Kirby\Cms\Field $field
* @return \Kirby\Cms\Field * @return \Kirby\Cms\Field
*/ */
'xml' => function (Field $field) { 'nl2br' => function (Field $field) {
$field->value = Xml::encode($field->value); $field->value = nl2br($field->value, false);
return $field;
},
/**
* Uses the field value as Kirby query
*
* @param \Kirby\Cms\Field $field
* @param string|null $expect
* @return mixed
*/
'query' => function (Field $field, string $expect = null) use ($app) {
if ($parent = $field->parent()) {
return $parent->query($field->value, $expect);
}
return Str::query($field->value, [
'kirby' => $app,
'site' => $app->site(),
'page' => $app->page()
]);
},
/**
* It parses any queries found in the field value.
*
* @param \Kirby\Cms\Field $field
* @param array $data
* @param string $fallback Fallback for tokens in the template that cannot be replaced
* @return \Kirby\Cms\Field
*/
'replace' => function (Field $field, array $data = [], string $fallback = '') use ($app) {
if ($parent = $field->parent()) {
$field->value = $field->parent()->toString($field->value, $data, $fallback);
} else {
$field->value = Str::template($field->value, array_replace([
'kirby' => $app,
'site' => $app->site(),
'page' => $app->page()
], $data), $fallback);
}
return $field; return $field;
}, },
@@ -475,7 +512,7 @@ return function (App $app) {
* Splits the field content into an array * Splits the field content into an array
* *
* @param \Kirby\Cms\Field $field * @param \Kirby\Cms\Field $field
* @return \Kirby\cms\Field * @return array
*/ */
'split' => function (Field $field, $separator = ',') { 'split' => function (Field $field, $separator = ',') {
return Str::split((string)$field->value, $separator); return Str::split((string)$field->value, $separator);
@@ -504,6 +541,17 @@ return function (App $app) {
return $field; return $field;
}, },
/**
* Converts the field content to valid XML
*
* @param \Kirby\Cms\Field $field
* @return \Kirby\Cms\Field
*/
'xml' => function (Field $field) {
$field->value = Xml::encode($field->value);
return $field;
},
// aliases // aliases
/** /**

View File

@@ -83,6 +83,9 @@ return [
'files' => function () { 'files' => function () {
$files = $this->parent->files()->template($this->template); $files = $this->parent->files()->template($this->template);
// filter out all protected files
$files = $files->filterBy('isReadable', true);
if ($this->sortBy) { if ($this->sortBy) {
$files = $files->sortBy(...$files::sortArgs($this->sortBy)); $files = $files->sortBy(...$files::sortArgs($this->sortBy));
} elseif ($this->sortable === true) { } elseif ($this->sortable === true) {
@@ -96,8 +99,9 @@ return [
// apply the default pagination // apply the default pagination
$files = $files->paginate([ $files = $files->paginate([
'page' => $this->page, 'page' => $this->page,
'limit' => $this->limit 'limit' => $this->limit,
'method' => 'none' // the page is manually provided
]); ]);
return $files; return $files;
@@ -219,6 +223,7 @@ return [
'errors' => $this->errors, 'errors' => $this->errors,
'options' => [ 'options' => [
'accept' => $this->accept, 'accept' => $this->accept,
'apiUrl' => $this->parent->apiUrl(true),
'empty' => $this->empty, 'empty' => $this->empty,
'headline' => $this->headline, 'headline' => $this->headline,
'help' => $this->help, 'help' => $this->help,

View File

@@ -17,10 +17,11 @@ return [
], ],
'props' => [ 'props' => [
/** /**
* Optional array of templates that should only be allowed to add. * Optional array of templates that should only be allowed to add
* or `false` to completely disable page creation
*/ */
'create' => function ($add = null) { 'create' => function ($create = null) {
return $add; return $create;
}, },
/** /**
* Enables/disables reverse sorting * Enables/disables reverse sorting
@@ -135,8 +136,9 @@ return [
// pagination // pagination
$pages = $pages->paginate([ $pages = $pages->paginate([
'page' => $this->page, 'page' => $this->page,
'limit' => $this->limit 'limit' => $this->limit,
'method' => 'none' // the page is manually provided
]); ]);
return $pages; return $pages;

View File

@@ -60,6 +60,7 @@
"ワ": "wa", "ワ": "wa",
"が": "ga", "が": "ga",
"ざ": "za", "ざ": "za",
"ザ": "za",
"だ": "da", "だ": "da",
"ば": "ba", "ば": "ba",
"ぱ": "pa", "ぱ": "pa",
@@ -111,6 +112,9 @@
"づ": "dzu", "づ": "dzu",
"ぶ": "bu", "ぶ": "bu",
"ぷ": "pu", "ぷ": "pu",
"プ": "pu",
"ズ": "zu",
"グ": "gu",
"え": "e", "え": "e",
"エ": "e", "エ": "e",
@@ -161,6 +165,8 @@
"ご": "go", "ご": "go",
"ぞ": "zo", "ぞ": "zo",
"ど": "do", "ど": "do",
"ド": "do",
"ぼ": "bo", "ぼ": "bo",
"ポ": "po",
"ぽ": "po" "ぽ": "po"
} }

View File

@@ -42,10 +42,8 @@
"error.avatar.create.fail": "Профилната снимка не може да се качи", "error.avatar.create.fail": "Профилната снимка не може да се качи",
"error.avatar.delete.fail": "Профилната снимка не може да бъде изтрита", "error.avatar.delete.fail": "Профилната снимка не може да бъде изтрита",
"error.avatar.dimensions.invalid": "error.avatar.dimensions.invalid": "Моля запазете ширината и височината на профилната снимка под 3000 пиксела",
"Моля запазете ширината и височината на профилната снимка под 3000 пиксела", "error.avatar.mime.forbidden": "Профилната снимка трябва да бъде в JPEG или PNG формат",
"error.avatar.mime.forbidden":
"Профилната снимка трябва да бъде в JPEG или PNG формат",
"error.blueprint.notFound": "Образецът \"{name}\" не може да бъде зареден", "error.blueprint.notFound": "Образецът \"{name}\" не може да бъде зареден",
@@ -54,22 +52,17 @@
"error.field.converter.invalid": "Невалиден конвертор \"{converter}\"", "error.field.converter.invalid": "Невалиден конвертор \"{converter}\"",
"error.file.changeName.empty": "The name must not be empty", "error.file.changeName.empty": "The name must not be empty",
"error.file.changeName.permission": "error.file.changeName.permission": "Не можете да смените името на \"{filename}\"",
"Не можете да смените името на \"{filename}\"",
"error.file.duplicate": "Файл с име \"{filename}\" вече съществува", "error.file.duplicate": "Файл с име \"{filename}\" вече съществува",
"error.file.extension.forbidden": "error.file.extension.forbidden": "Файловото разширение \"{extension}\" не е позволено",
айловото разширение \"{extension}\" не е позволено", "error.file.extension.missing": "Липсва файлово разширение за файла \"{filename}\"",
"error.file.extension.missing":
"Липсва файлово разширение за файла \"{filename}\"",
"error.file.maxheight": "The height of the image must not exceed {height} pixels", "error.file.maxheight": "The height of the image must not exceed {height} pixels",
"error.file.maxsize": "The file is too large", "error.file.maxsize": "The file is too large",
"error.file.maxwidth": "The width of the image must not exceed {width} pixels", "error.file.maxwidth": "The width of the image must not exceed {width} pixels",
"error.file.mime.differs": "error.file.mime.differs": "Каченият файл трябва да бъде от същия mime тип \"{mime}\"",
"Каченият файл трябва да бъде от същия mime тип \"{mime}\"",
"error.file.mime.forbidden": "The media type \"{mime}\" is not allowed", "error.file.mime.forbidden": "The media type \"{mime}\" is not allowed",
"error.file.mime.invalid": "Invalid mime type: {mime}", "error.file.mime.invalid": "Invalid mime type: {mime}",
"error.file.mime.missing": "error.file.mime.missing": "The media type for \"{filename}\" cannot be detected",
"The media type for \"{filename}\" cannot be detected",
"error.file.minheight": "The height of the image must be at least {height} pixels", "error.file.minheight": "The height of the image must be at least {height} pixels",
"error.file.minsize": "The file is too small", "error.file.minsize": "The file is too small",
"error.file.minwidth": "The width of the image must be at least {width} pixels", "error.file.minwidth": "The width of the image must be at least {width} pixels",
@@ -90,111 +83,77 @@
"error.license.email": "Моля въведете валиден email адрес", "error.license.email": "Моля въведете валиден email адрес",
"error.license.verification": "The license could not be verified", "error.license.verification": "The license could not be verified",
"error.page.changeSlug.permission": "error.page.changeSlug.permission": "Не можете да смените URL на \"{slug}\"",
"Не можете да смените URL на \"{slug}\"", "error.page.changeStatus.incomplete": "Страницата съдържа грешки и не може да бъде публикувана",
"error.page.changeStatus.incomplete": "error.page.changeStatus.permission": "Статусът на страницата не може да бъде променен",
"Страницата съдържа грешки и не може да бъде публикувана", "error.page.changeStatus.toDraft.invalid": "Страницата \"{slug}\" не може да бъде променена в чернова",
"error.page.changeStatus.permission": "error.page.changeTemplate.invalid": "Темплейтът за страница \"{slug}\" не може да бъде променен",
"Статусът на страницата не може да бъде променен", "error.page.changeTemplate.permission": "Нямате права за да промените шаблона за \"{slug}\"",
"error.page.changeStatus.toDraft.invalid":
"Страницата \"{slug}\" не може да бъде променена в чернова",
"error.page.changeTemplate.invalid":
"Темплейтът за страница \"{slug}\" не може да бъде променен",
"error.page.changeTemplate.permission":
"Нямате права за да промените шаблона за \"{slug}\"",
"error.page.changeTitle.empty": "Заглавието е задължително", "error.page.changeTitle.empty": "Заглавието е задължително",
"error.page.changeTitle.permission": "error.page.changeTitle.permission": "Не можете да промените заглавието на \"{slug}\"",
"Не можете да промените заглавието на \"{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": "Моля въведете името на страницата, за да потвърдите",
"error.page.delete.hasChildren": "error.page.delete.hasChildren": "Страницата има подстраници и не може да бъде изтрита",
"Страницата има подстраници и не може да бъде изтрита",
"error.page.delete.permission": "Не можете да изтриете \"{slug}\"", "error.page.delete.permission": "Не можете да изтриете \"{slug}\"",
"error.page.draft.duplicate": "error.page.draft.duplicate": "Вече съществува чернова с URL-добавка \"{slug}\"",
"Вече съществува чернова с URL-добавка \"{slug}\"", "error.page.duplicate": "Страница с URL-добавка \"{slug}\" вече съществува",
"error.page.duplicate":
"Страница с URL-добавка \"{slug}\" вече съществува",
"error.page.duplicate.permission": "You are not allowed to duplicate \"{slug}\"", "error.page.duplicate.permission": "You are not allowed to duplicate \"{slug}\"",
"error.page.notFound": "Страницата \"{slug}\" не може да бъде намерена", "error.page.notFound": "Страницата \"{slug}\" не може да бъде намерена",
"error.page.num.invalid": "error.page.num.invalid": "Моля въведете валидно число за сортиране. Числата не трябва да са негативни.",
"Моля въведете валидно число за сортиране. Числата не трябва да са негативни.",
"error.page.slug.invalid": "Моля въведете валиден URL префикс", "error.page.slug.invalid": "Моля въведете валиден URL префикс",
"error.page.sort.permission": "Страницата \"{slug}\" не може да бъде сортирана", "error.page.sort.permission": "Страницата \"{slug}\" не може да бъде сортирана",
"error.page.status.invalid": "Моля изберете валиден статус на страницата", "error.page.status.invalid": "Моля изберете валиден статус на страницата",
"error.page.undefined": "\u0421\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0442\u0430 \u043d\u0435 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0431\u044a\u0434\u0435 \u043d\u0430\u043c\u0435\u0440\u0435\u043d\u0430", "error.page.undefined": "\u0421\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0442\u0430 \u043d\u0435 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0431\u044a\u0434\u0435 \u043d\u0430\u043c\u0435\u0440\u0435\u043d\u0430",
"error.page.update.permission": "Не можете да обновите \"{slug}\"", "error.page.update.permission": "Не можете да обновите \"{slug}\"",
"error.section.files.max.plural": "error.section.files.max.plural": "Не можете да добавяте повече от {max} файлa в секция \"{section}\"",
"Не можете да добавяте повече от {max} файлa в секция \"{section}\"", "error.section.files.max.singular": "Не можете да добавяте повече от един файл в секция \"{section}\"",
"error.section.files.max.singular": "error.section.files.min.plural": "The \"{section}\" section requires at least {min} files",
"Не можете да добавяте повече от един файл в секция \"{section}\"", "error.section.files.min.singular": "The \"{section}\" section requires at least one file",
"error.section.files.min.plural":
"The \"{section}\" section requires at least {min} files",
"error.section.files.min.singular":
"The \"{section}\" section requires at least one file",
"error.section.pages.max.plural": "error.section.pages.max.plural": "Не можете да добавяте повече от {max} страници в секция \"{section}\"",
"Не можете да добавяте повече от {max} страници в секция \"{section}\"", "error.section.pages.max.singular": "Не можете да добавяте повече от една страница в секция \"{section}\"",
"error.section.pages.max.singular": "error.section.pages.min.plural": "The \"{section}\" section requires at least {min} pages",
"Не можете да добавяте повече от една страница в секция \"{section}\"", "error.section.pages.min.singular": "The \"{section}\" section requires at least one page",
"error.section.pages.min.plural":
"The \"{section}\" section requires at least {min} pages",
"error.section.pages.min.singular":
"The \"{section}\" section requires at least one page",
"error.section.notLoaded": "Секция \"{name}\" не може да бъде заредена", "error.section.notLoaded": "Секция \"{name}\" не може да бъде заредена",
"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": "error.user.changeEmail.permission": "Нямате права да промените имейла на този потребител \"{name}\"",
"Нямате права да промените имейла на този потребител \"{name}\"", "error.user.changeLanguage.permission": "Нямате права да промените езика за този потребител \"{name}\"",
"error.user.changeLanguage.permission": "error.user.changeName.permission": "Нямате права да промените името на този потребител \"{name}\"",
"Нямате права да промените езика за този потребител \"{name}\"", "error.user.changePassword.permission": "Нямате права да промените паролата за този потребител \"{name}\"",
"error.user.changeName.permission": "error.user.changeRole.lastAdmin": "Ролята на последния администратор не може да бъде променена",
"Нямате права да промените името на този потребител \"{name}\"", "error.user.changeRole.permission": "Нямате права да промените ролята на този потребител \"{name}\"",
"error.user.changePassword.permission": "error.user.changeRole.toAdmin": "You are not allowed to promote someone to the admin role",
"Нямате права да промените паролата за този потребител \"{name}\"",
"error.user.changeRole.lastAdmin":
"Ролята на последния администратор не може да бъде променена",
"error.user.changeRole.permission":
"Нямате права да промените ролята на този потребител \"{name}\"",
"error.user.changeRole.toAdmin":
"You are not allowed to promote someone to the admin role",
"error.user.create.permission": "Нямате права да създадете този потребител", "error.user.create.permission": "Нямате права да създадете този потребител",
"error.user.delete": "\u041f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u044f\u0442 \u043d\u0435 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0431\u044a\u0434\u0435 \u0438\u0437\u0442\u0440\u0438\u0442", "error.user.delete": "\u041f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u044f\u0442 \u043d\u0435 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0431\u044a\u0434\u0435 \u0438\u0437\u0442\u0440\u0438\u0442",
"error.user.delete.lastAdmin": "\u041d\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u0430 \u0438\u0437\u0442\u0440\u0438\u0435\u0442\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u044f \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440", "error.user.delete.lastAdmin": "\u041d\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u0430 \u0438\u0437\u0442\u0440\u0438\u0435\u0442\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u044f \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440",
"error.user.delete.lastUser": "Последният потребител не може да бъде изтрит", "error.user.delete.lastUser": "Последният потребител не може да бъде изтрит",
"error.user.delete.permission": "error.user.delete.permission": "\u041d\u0435 \u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u0435\u043d\u043e \u0434\u0430 \u0438\u0437\u0442\u0440\u0438\u0432\u0430\u0442\u0435 \u0442\u043e\u0437\u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b",
"\u041d\u0435 \u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u0435\u043d\u043e \u0434\u0430 \u0438\u0437\u0442\u0440\u0438\u0432\u0430\u0442\u0435 \u0442\u043e\u0437\u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b", "error.user.duplicate": "Потребител с имейл \"{email}\" вече съществува",
"error.user.duplicate":
"Потребител с имейл \"{email}\" вече съществува",
"error.user.email.invalid": "Моля въведете валиден email адрес", "error.user.email.invalid": "Моля въведете валиден email адрес",
"error.user.language.invalid": "Моля въведете валиден език", "error.user.language.invalid": "Моля въведете валиден език",
"error.user.notFound": "\u041f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u044f\u0442 \u043d\u0435 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0431\u044a\u0434\u0435 \u043d\u0430\u043c\u0435\u0440\u0435\u043d.", "error.user.notFound": "\u041f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u044f\u0442 \u043d\u0435 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0431\u044a\u0434\u0435 \u043d\u0430\u043c\u0435\u0440\u0435\u043d.",
"error.user.password.invalid": "error.user.password.invalid": "Моля въведете валидна парола. Тя трабва да съдържа поне 8 символа.",
"Моля въведете валидна парола. Тя трабва да съдържа поне 8 символа.",
"error.user.password.notSame": "\u041c\u043e\u043b\u044f, \u043f\u043e\u0442\u0432\u044a\u0440\u0434\u0435\u0442\u0435 \u043f\u0430\u0440\u043e\u043b\u0430\u0442\u0430", "error.user.password.notSame": "\u041c\u043e\u043b\u044f, \u043f\u043e\u0442\u0432\u044a\u0440\u0434\u0435\u0442\u0435 \u043f\u0430\u0440\u043e\u043b\u0430\u0442\u0430",
"error.user.password.undefined": "Потребителят няма парола", "error.user.password.undefined": "Потребителят няма парола",
"error.user.role.invalid": "Моля въведете валидна роля", "error.user.role.invalid": "Моля въведете валидна роля",
"error.user.update.permission": "error.user.update.permission": "Нямате права да обновите този потребител \"{name}\"",
"Нямате права да обновите този потребител \"{name}\"",
"error.validation.accepted": "Моля потвърдете", "error.validation.accepted": "Моля потвърдете",
"error.validation.alpha": "Моля въвдете символи измежду a-z", "error.validation.alpha": "Моля въвдете символи измежду a-z",
"error.validation.alphanum": "error.validation.alphanum": "Моля въвдете символи измежду a-z или цифри 0-9",
"Моля въвдете символи измежду a-z или цифри 0-9", "error.validation.between": "Моля въведете стойност между \"{min}\" и \"{max}\"",
"error.validation.between":
"Моля въведете стойност между \"{min}\" и \"{max}\"",
"error.validation.boolean": "Моля потвърдете или откажете", "error.validation.boolean": "Моля потвърдете или откажете",
"error.validation.contains": "error.validation.contains": "Моля въведете стойност, която съдържа \"{needle}\"",
"Моля въведете стойност, която съдържа \"{needle}\"",
"error.validation.date": "Моля въведете валидна дата", "error.validation.date": "Моля въведете валидна дата",
"error.validation.date.after": "Please enter a date after {date}", "error.validation.date.after": "Please enter a date after {date}",
"error.validation.date.before": "Please enter a date before {date}", "error.validation.date.before": "Please enter a date before {date}",
@@ -210,18 +169,14 @@
"error.validation.less": "Моля въведете стойност по-ниска от {max}", "error.validation.less": "Моля въведете стойност по-ниска от {max}",
"error.validation.match": "Стойността не съвпада с очаквания модел", "error.validation.match": "Стойността не съвпада с очаквания модел",
"error.validation.max": "Please enter a value equal to or lower than {max}", "error.validation.max": "Please enter a value equal to or lower than {max}",
"error.validation.maxlength": "error.validation.maxlength": "Моля въведете по-къса стойност. (макс. {max} символа)",
"Моля въведете по-къса стойност. (макс. {max} символа)",
"error.validation.maxwords": "Моля въведете не повече от {max} дума(и)", "error.validation.maxwords": "Моля въведете не повече от {max} дума(и)",
"error.validation.min": "Please enter a value equal to or greater than {min}", "error.validation.min": "Please enter a value equal to or greater than {min}",
"error.validation.minlength": "error.validation.minlength": "Моля въведете по-дълга стойност. (мин. {min} символа)",
"Моля въведете по-дълга стойност. (мин. {min} символа)",
"error.validation.minwords": "Моля въведете поне {min} дума(и).", "error.validation.minwords": "Моля въведете поне {min} дума(и).",
"error.validation.more": "Моля въведете стойност по-висока от {min}", "error.validation.more": "Моля въведете стойност по-висока от {min}",
"error.validation.notcontains": "error.validation.notcontains": "Моля въведете стойност, която не съдържа \"{needle}\"",
"Моля въведете стойност, която не съдържа \"{needle}\"", "error.validation.notin": "Моля не въвеждайте нито едно от следните: ({notIn})",
"error.validation.notin":
"Моля не въвеждайте нито едно от следните: ({notIn})",
"error.validation.option": "Моля изберете валидна опция", "error.validation.option": "Моля изберете валидна опция",
"error.validation.num": "Моля въведете валидно число", "error.validation.num": "Моля въведете валидно число",
"error.validation.required": "Моля въведете нещо", "error.validation.required": "Моля въведете нещо",
@@ -238,8 +193,7 @@
"field.structure.empty": "Все още няма статии", "field.structure.empty": "Все още няма статии",
"field.users.empty": "Все още не са избрани потребители", "field.users.empty": "Все още не са избрани потребители",
"file.delete.confirm": "file.delete.confirm": "Сигурни ли сте, че искате да изтриете <br><strong>{filename}</strong>?",
"Сигурни ли сте, че искате да изтриете <br><strong>{filename}</strong>?",
"files": "Файлове", "files": "Файлове",
"files.empty": "Няма файлове", "files.empty": "Няма файлове",
@@ -251,29 +205,22 @@
"installation": "Инсталация", "installation": "Инсталация",
"installation.completed": "The panel has been installed", "installation.completed": "The panel has been installed",
"installation.disabled": "The panel installer is disabled on public servers by default. Please run the installer on a local machine or enable it with the <code>panel.install</code> option.", "installation.disabled": "The panel installer is disabled on public servers by default. Please run the installer on a local machine or enable it with the <code>panel.install</code> option.",
"installation.issues.accounts": "installation.issues.accounts": "Папката <code>/site/accounts</code> не съществува или не позволява запис",
"Папката <code>/site/accounts</code> не съществува или не позволява запис", "installation.issues.content": "Папката <code>/content</code> и всички файлове в нея трябва да позволяват запис",
"installation.issues.content":
"Папката <code>/content</code> и всички файлове в нея трябва да позволяват запис",
"installation.issues.curl": "Изисква се <code>CURL</code> разширението", "installation.issues.curl": "Изисква се <code>CURL</code> разширението",
"installation.issues.headline": "Панелът не може да бъде инсталиран", "installation.issues.headline": "Панелът не може да бъде инсталиран",
"installation.issues.mbstring": "installation.issues.mbstring": "Изисква се разширението <code>MB String</code>",
"Изисква се разширението <code>MB String</code>", "installation.issues.media": "Папката <code>/media</code> не съществува или няма права за запис",
"installation.issues.media":
"Папката <code>/media</code> не съществува или няма права за запис",
"installation.issues.php": "Бъдете сигурни, че използвате <code>PHP 7+</code>", "installation.issues.php": "Бъдете сигурни, че използвате <code>PHP 7+</code>",
"installation.issues.server": "installation.issues.server": "Kirby изисква <code>Apache</code>, <code>Nginx</code> или <code>Caddy</code>",
"Kirby изисква <code>Apache</code>, <code>Nginx</code> или <code>Caddy</code>",
"installation.issues.sessions": "The <code>/site/sessions</code> folder does not exist or is not writable", "installation.issues.sessions": "The <code>/site/sessions</code> folder does not exist or is not writable",
"language": "\u0415\u0437\u0438\u043a", "language": "\u0415\u0437\u0438\u043a",
"language.code": "Код", "language.code": "Код",
"language.convert": "Направи по подразбиране", "language.convert": "Направи по подразбиране",
"language.convert.confirm": "language.convert.confirm": "<p>Сигурни ли сте, че искате да зададете <strong>{name}</strong> за език по подразбиране? Действието не може да бъде отменено.</p><p>В случай, че в <strong>{name}</strong> има непреведено съдържание, то части от сайта ви могат да останат празни.</p>",
"<p>Сигурни ли сте, че искате да зададете <strong>{name}</strong> за език по подразбиране? Действието не може да бъде отменено.</p><p>В случай, че в <strong>{name}</strong> има непреведено съдържание, то части от сайта ви могат да останат празни.</p>",
"language.create": "Добавете нов език", "language.create": "Добавете нов език",
"language.delete.confirm": "language.delete.confirm": "Сигурни ли сте, че искате да изтриете език <strong>{name}</strong>, включително всички негови преводи? Действието не може да бъде отменено!",
"Сигурни ли сте, че искате да изтриете език <strong>{name}</strong>, включително всички негови преводи? Действието не може да бъде отменено!",
"language.deleted": "Езикът беше изтрит", "language.deleted": "Езикът беше изтрит",
"language.direction": "Посока на четене", "language.direction": "Посока на четене",
"language.direction.ltr": "Отляво надясно", "language.direction.ltr": "Отляво надясно",
@@ -292,8 +239,7 @@
"license": "\u041b\u0438\u0446\u0435\u043d\u0437 \u0437\u0430 Kirby", "license": "\u041b\u0438\u0446\u0435\u043d\u0437 \u0437\u0430 Kirby",
"license.buy": "Купи лиценз", "license.buy": "Купи лиценз",
"license.register": "Регистрирай", "license.register": "Регистрирай",
"license.register.help": "license.register.help": "You received your license code after the purchase via email. Please copy and paste it to register.",
"You received your license code after the purchase via email. Please copy and paste it to register.",
"license.register.label": "Please enter your license code", "license.register.label": "Please enter your license code",
"license.register.success": "Thank you for supporting Kirby", "license.register.success": "Thank you for supporting Kirby",
"license.unregistered": "Това е нерегистрирана демо версия на Kirby", "license.unregistered": "Това е нерегистрирана демо версия на Kirby",
@@ -325,7 +271,7 @@
"months.april": "\u0410\u043f\u0440\u0438\u043b", "months.april": "\u0410\u043f\u0440\u0438\u043b",
"months.august": "\u0410\u0432\u0433\u0443\u0441\u0442", "months.august": "\u0410\u0432\u0433\u0443\u0441\u0442",
"months.december": "\u0414\u0435\u043a\u0435\u043c\u0432\u0440\u0438", "months.december": "\u0414\u0435\u043a\u0435\u043c\u0432\u0440\u0438",
"months.february": "\u0424\u0435\u0432\u0440\u0443\u0430\u0440\u0438", "months.february": "Февруари",
"months.january": "\u042f\u043d\u0443\u0430\u0440\u0438", "months.january": "\u042f\u043d\u0443\u0430\u0440\u0438",
"months.july": "\u042e\u043b\u0438", "months.july": "\u042e\u043b\u0438",
"months.june": "\u042e\u043d\u0438", "months.june": "\u042e\u043d\u0438",
@@ -354,10 +300,8 @@
"page.changeStatus.position": "Моля изберете позиция", "page.changeStatus.position": "Моля изберете позиция",
"page.changeStatus.select": "Изберете нов статус", "page.changeStatus.select": "Изберете нов статус",
"page.changeTemplate": "Промени шаблон", "page.changeTemplate": "Промени шаблон",
"page.delete.confirm": "page.delete.confirm": "Сигурни ли сте, че искате да изтриете <strong>{title}</strong>?",
"Сигурни ли сте, че искате да изтриете <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": "Въведи заглавие на страница за да потвърдиш",
"page.draft.create": "Създай чернова", "page.draft.create": "Създай чернова",
"page.duplicate.appendix": "Копирай", "page.duplicate.appendix": "Копирай",
@@ -365,8 +309,7 @@
"page.duplicate.pages": "Copy pages", "page.duplicate.pages": "Copy pages",
"page.status": "Status", "page.status": "Status",
"page.status.draft": "Чернова", "page.status.draft": "Чернова",
"page.status.draft.description": "page.status.draft.description": "The page is in draft mode and only visible for logged in editors or via secret link",
"Страницата е в режим на чернова и е видима само за оторизирани редактори",
"page.status.listed": "Публично", "page.status.listed": "Публично",
"page.status.listed.description": "Страницата е публична за всички", "page.status.listed.description": "Страницата е публична за всички",
"page.status.unlisted": "Скрит", "page.status.unlisted": "Скрит",
@@ -388,6 +331,7 @@
"replace": "\u0417\u0430\u043c\u0435\u0441\u0442\u0438", "replace": "\u0417\u0430\u043c\u0435\u0441\u0442\u0438",
"retry": "\u041e\u043f\u0438\u0442\u0430\u0439 \u043f\u0430\u043a", "retry": "\u041e\u043f\u0438\u0442\u0430\u0439 \u043f\u0430\u043a",
"revert": "\u041e\u0442\u043c\u0435\u043d\u0438", "revert": "\u041e\u0442\u043c\u0435\u043d\u0438",
"revert.confirm": "Do you really want to <strong>delete all unsaved changes</strong>?",
"role": "\u0420\u043e\u043b\u044f", "role": "\u0420\u043e\u043b\u044f",
"role.admin.description": "The admin has all rights", "role.admin.description": "The admin has all rights",
@@ -451,8 +395,7 @@
"url.placeholder": "https://example.com", "url.placeholder": "https://example.com",
"user": "Потребител", "user": "Потребител",
"user.blueprint": "user.blueprint": "Можете да дефинирате допълнителни секции и полета на форми за тази потребителска роля в <strong>/site/blueprints/users/{role}.yml</strong>",
"Можете да дефинирате допълнителни секции и полета на форми за тази потребителска роля в <strong>/site/blueprints/users/{role}.yml</strong>",
"user.changeEmail": "Промени email", "user.changeEmail": "Промени email",
"user.changeLanguage": "Промени език", "user.changeLanguage": "Промени език",
"user.changeName": "Преименувай този потребител", "user.changeName": "Преименувай този потребител",
@@ -463,8 +406,7 @@
"user.changeRole.select": "Изберете нова роля", "user.changeRole.select": "Изберете нова роля",
"user.create": "Добавете нов потребител", "user.create": "Добавете нов потребител",
"user.delete": "Изтрийте потребителя", "user.delete": "Изтрийте потребителя",
"user.delete.confirm": "user.delete.confirm": "Сигурни ли сте, че искате да изтриете <br><strong>{email}</strong>?",
"Сигурни ли сте, че искате да изтриете <br><strong>{email}</strong>?",
"users": "Потребители", "users": "Потребители",

View File

@@ -42,10 +42,8 @@
"error.avatar.create.fail": "No s'ha pogut carregar la imatge del perfil", "error.avatar.create.fail": "No s'ha pogut carregar la imatge del perfil",
"error.avatar.delete.fail": "La imatge del perfil no s'ha pogut eliminar", "error.avatar.delete.fail": "La imatge del perfil no s'ha pogut eliminar",
"error.avatar.dimensions.invalid": "error.avatar.dimensions.invalid": "Mantingueu l'amplada i l'alçada de la imatge de perfil de menys de 3000 píxels",
"Mantingueu l'amplada i l'alçada de la imatge de perfil de menys de 3000 píxels", "error.avatar.mime.forbidden": "La imatge del perfil ha de ser fitxers JPEG o PNG",
"error.avatar.mime.forbidden":
"La imatge del perfil ha de ser fitxers JPEG o PNG",
"error.blueprint.notFound": "No s'ha potgut carregar el blueprint \"{name}\"", "error.blueprint.notFound": "No s'ha potgut carregar el blueprint \"{name}\"",
@@ -54,22 +52,17 @@
"error.field.converter.invalid": "Convertidor no vàlid \"{converter}\"", "error.field.converter.invalid": "Convertidor no vàlid \"{converter}\"",
"error.file.changeName.empty": "El nom no pot estar buit", "error.file.changeName.empty": "El nom no pot estar buit",
"error.file.changeName.permission": "error.file.changeName.permission": "No tens permís per canviar el nom de \"{filename}\"",
"No tens permís per canviar el nom de \"{filename}\"",
"error.file.duplicate": "Ja existeix un fitxer amb el nom \"{filename}\"", "error.file.duplicate": "Ja existeix un fitxer amb el nom \"{filename}\"",
"error.file.extension.forbidden": "error.file.extension.forbidden": "L'extensió de l'arxiu \"{extension}\" no està permesa",
"L'extensió de l'arxiu \"{extension}\" no està permesa", "error.file.extension.missing": "Falta l'extensió de l'arxiu \"{filename}\"",
"error.file.extension.missing":
"Falta l'extensió de l'arxiu \"{filename}\"",
"error.file.maxheight": "L'alçada de la imatge no ha de ser superior a {height} píxels", "error.file.maxheight": "L'alçada de la imatge no ha de ser superior a {height} píxels",
"error.file.maxsize": "El fitxer és massa gran", "error.file.maxsize": "El fitxer és massa gran",
"error.file.maxwidth": "L'amplada de la imatge no ha de ser superior a {width} píxels", "error.file.maxwidth": "L'amplada de la imatge no ha de ser superior a {width} píxels",
"error.file.mime.differs": "error.file.mime.differs": "L'arxiu carregat ha ha de ser del mateix tipus de mime \"{mime}\"",
"L'arxiu carregat ha ha de ser del mateix tipus de mime \"{mime}\"",
"error.file.mime.forbidden": "El tipus de mitjà \"{mime}\" no està permès", "error.file.mime.forbidden": "El tipus de mitjà \"{mime}\" no està permès",
"error.file.mime.invalid": "Mime type no vàlid: {mime}", "error.file.mime.invalid": "Mime type no vàlid: {mime}",
"error.file.mime.missing": "error.file.mime.missing": "El tipus de suport per a \"{filename}\" no es pot detectar",
"El tipus de suport per a \"{filename}\" no es pot detectar",
"error.file.minheight": "L'alçada de la imatge ha de ser com a mínim de {height} píxels", "error.file.minheight": "L'alçada de la imatge ha de ser com a mínim de {height} píxels",
"error.file.minsize": "El fitxer és massa petit", "error.file.minsize": "El fitxer és massa petit",
"error.file.minwidth": "L'amplada de la imatge ha de ser com a mínim de {width} píxels", "error.file.minwidth": "L'amplada de la imatge ha de ser com a mínim de {width} píxels",
@@ -90,111 +83,77 @@
"error.license.email": "Si us plau, introdueix una adreça de correu electrònic vàlida", "error.license.email": "Si us plau, introdueix una adreça de correu electrònic vàlida",
"error.license.verification": "No sha pogut verificar la llicència", "error.license.verification": "No sha pogut verificar la llicència",
"error.page.changeSlug.permission": "error.page.changeSlug.permission": "No teniu permís per canviar l'apèndix d'URL per a \"{slug}\"",
"No teniu permís per canviar l'apèndix d'URL per a \"{slug}\"", "error.page.changeStatus.incomplete": "La pàgina té errors i no es pot publicar",
"error.page.changeStatus.incomplete": "error.page.changeStatus.permission": "No es pot canviar l'estat d'aquesta pàgina",
"La pàgina té errors i no es pot publicar", "error.page.changeStatus.toDraft.invalid": "La pàgina \"{slug}\" no es pot convertir en un esborrany",
"error.page.changeStatus.permission": "error.page.changeTemplate.invalid": "La plantilla per a la pàgina \"{slug}\" no es pot canviar",
"No es pot canviar l'estat d'aquesta pàgina", "error.page.changeTemplate.permission": "No tens permís per canviar la plantilla per \"{slug}\"",
"error.page.changeStatus.toDraft.invalid":
"La pàgina \"{slug}\" no es pot convertir en un esborrany",
"error.page.changeTemplate.invalid":
"La plantilla per a la pàgina \"{slug}\" no es pot canviar",
"error.page.changeTemplate.permission":
"No tens permís per canviar la plantilla per \"{slug}\"",
"error.page.changeTitle.empty": "El títol no pot estar buit", "error.page.changeTitle.empty": "El títol no pot estar buit",
"error.page.changeTitle.permission": "error.page.changeTitle.permission": "No tens permís per canviar el títol de \"{slug}\"",
"No tens permís per canviar el títol de \"{slug}\"",
"error.page.create.permission": "No tens permís per crear \"{slug}\"", "error.page.create.permission": "No tens permís per crear \"{slug}\"",
"error.page.delete": "La pàgina \"{slug}\" no es pot esborrar", "error.page.delete": "La pàgina \"{slug}\" no es pot esborrar",
"error.page.delete.confirm": "Si us plau, introdueix el títol de la pàgina per confirmar", "error.page.delete.confirm": "Si us plau, introdueix el títol de la pàgina per confirmar",
"error.page.delete.hasChildren": "error.page.delete.hasChildren": "La pàgina té subpàgines i no es pot esborrar",
"La pàgina té subpàgines i no es pot esborrar",
"error.page.delete.permission": "No tens permís per esborrar \"{slug}\"", "error.page.delete.permission": "No tens permís per esborrar \"{slug}\"",
"error.page.draft.duplicate": "error.page.draft.duplicate": "Ja existeix un esborrany de pàgina amb l'apèndix d'URL \"{slug}\"",
"Ja existeix un esborrany de pàgina amb l'apèndix d'URL \"{slug}\"", "error.page.duplicate": "Ja existeix una pàgina amb l'apèndix d'URL \"{slug}\"",
"error.page.duplicate":
"Ja existeix una pàgina amb l'apèndix d'URL \"{slug}\"",
"error.page.duplicate.permission": "No tens permís per duplicar \"{slug}\"", "error.page.duplicate.permission": "No tens permís per duplicar \"{slug}\"",
"error.page.notFound": "La pàgina \"{slug}\" no s'ha trobat", "error.page.notFound": "La pàgina \"{slug}\" no s'ha trobat",
"error.page.num.invalid": "error.page.num.invalid": "Si us plau, introdueix un número d 'ordenació vàlid. Els números no poden ser negatius.",
"Si us plau, introdueix un número d 'ordenació vàlid. Els números no poden ser negatius.",
"error.page.slug.invalid": "Introduïu un prefix d'URL vàlid", "error.page.slug.invalid": "Introduïu un prefix d'URL vàlid",
"error.page.sort.permission": "La pàgina \"{slug}\" no es pot ordenar", "error.page.sort.permission": "La pàgina \"{slug}\" no es pot ordenar",
"error.page.status.invalid": "Si us plau, estableix un estat de pàgina vàlid", "error.page.status.invalid": "Si us plau, estableix un estat de pàgina vàlid",
"error.page.undefined": "La p\u00e0gina no s'ha trobat", "error.page.undefined": "La p\u00e0gina no s'ha trobat",
"error.page.update.permission": "No tens permís per actualitzar \"{slug}\"", "error.page.update.permission": "No tens permís per actualitzar \"{slug}\"",
"error.section.files.max.plural": "error.section.files.max.plural": "No has d'afegir més de {max} fitxers a la secció \"{section}\"",
"No has d'afegir més de {max} fitxers a la secció \"{section}\"", "error.section.files.max.singular": "No podeu afegir més d'un fitxer a la secció \"{section}\"",
"error.section.files.max.singular": "error.section.files.min.plural": "La secció \"{section}\" requereix almenys {min} fitxer",
"No podeu afegir més d'un fitxer a la secció \"{section}\"", "error.section.files.min.singular": "La secció \"{section}\" requereix almenys un fitxer",
"error.section.files.min.plural":
"La secció \"{section}\" requereix almenys {min} fitxer",
"error.section.files.min.singular":
"La secció \"{section}\" requereix almenys un fitxer",
"error.section.pages.max.plural": "error.section.pages.max.plural": "No heu d'afegir més de {max} pàgines a la secció \"{section}\"",
"No heu d'afegir més de {max} pàgines a la secció \"{section}\"", "error.section.pages.max.singular": "No podeu afegir més d'una pàgina a la secció \"{section}\"",
"error.section.pages.max.singular": "error.section.pages.min.plural": "La secció \"{section}\" requereix almenys {min} pàgines",
"No podeu afegir més d'una pàgina a la secció \"{section}\"", "error.section.pages.min.singular": "La secció \"{section}\" requereix almenys una pàgina",
"error.section.pages.min.plural":
"La secció \"{section}\" requereix almenys {min} pàgines",
"error.section.pages.min.singular":
"La secció \"{section}\" requereix almenys una pàgina",
"error.section.notLoaded": "No s'ha pogut carregar la secció \"{name}\"", "error.section.notLoaded": "No s'ha pogut carregar la secció \"{name}\"",
"error.section.type.invalid": "La secció tipus \"{type}\" no és vàlida", "error.section.type.invalid": "La secció tipus \"{type}\" no és vàlida",
"error.site.changeTitle.empty": "El títol no pot estar buit", "error.site.changeTitle.empty": "El títol no pot estar buit",
"error.site.changeTitle.permission": "error.site.changeTitle.permission": "No tens permís per canviar el títol del lloc web",
"No tens permís per canviar el títol del lloc web",
"error.site.update.permission": "No tens permís per actualitzar el lloc web", "error.site.update.permission": "No tens permís per actualitzar el lloc web",
"error.template.default.notFound": "La plantilla predeterminada no existeix", "error.template.default.notFound": "La plantilla predeterminada no existeix",
"error.user.changeEmail.permission": "error.user.changeEmail.permission": "No tens permís per canviar el correu electrònic per a l'usuari \"{name}\"",
"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": "error.user.changeName.permission": "No tens permís per canviar el nom de l'usuari \"{name}\"",
"No tens permís per canviar l'idioma de l'usuari \"{name}\"", "error.user.changePassword.permission": "No tens permís per canviar la contrasenya de l'usuari \"{name}\"",
"error.user.changeName.permission": "error.user.changeRole.lastAdmin": "El rol del darrer administrador no es pot canviar",
"No tens permís per canviar el nom de l'usuari \"{name}\"", "error.user.changeRole.permission": "No tens permís per canviar el rol de l'usuari \"{name}\"",
"error.user.changePassword.permission": "error.user.changeRole.toAdmin": "No tens permís per promocionar algú al rol dadministrador",
"No tens permís per canviar la contrasenya de l'usuari \"{name}\"",
"error.user.changeRole.lastAdmin":
"El rol del darrer administrador no es pot canviar",
"error.user.changeRole.permission":
"No tens permís per canviar el rol de l'usuari \"{name}\"",
"error.user.changeRole.toAdmin":
"No tens permís per promocionar algú al rol dadministrador",
"error.user.create.permission": "No tens permís per crear aquest usuari", "error.user.create.permission": "No tens permís per crear aquest usuari",
"error.user.delete": "L'usuari \"{name}\" no es pot eliminar", "error.user.delete": "L'usuari \"{name}\" no es pot eliminar",
"error.user.delete.lastAdmin": "No es pot eliminar l'\u00faltim administrador", "error.user.delete.lastAdmin": "No es pot eliminar l'\u00faltim administrador",
"error.user.delete.lastUser": "El darrer usuari no es pot eliminar", "error.user.delete.lastUser": "El darrer usuari no es pot eliminar",
"error.user.delete.permission": "error.user.delete.permission": "No pots eliminar l'usuari \"{name}\"",
"No pots eliminar l'usuari \"{name}\"", "error.user.duplicate": "Ja existeix un usuari amb l'adreça electrònica \"{email}\"",
"error.user.duplicate":
"Ja existeix un usuari amb l'adreça electrònica \"{email}\"",
"error.user.email.invalid": "Si us plau, introdueix una adreça de correu electrònic vàlida", "error.user.email.invalid": "Si us plau, introdueix una adreça de correu electrònic vàlida",
"error.user.language.invalid": "Introduïu un idioma vàlid", "error.user.language.invalid": "Introduïu un idioma vàlid",
"error.user.notFound": "L'usuari \"{name}\" no s'ha trobat", "error.user.notFound": "L'usuari \"{name}\" no s'ha trobat",
"error.user.password.invalid": "error.user.password.invalid": "Introduïu una contrasenya vàlida. Les contrasenyes han de tenir com a mínim 8 caràcters.",
"Introduïu una contrasenya vàlida. Les contrasenyes han de tenir com a mínim 8 caràcters.",
"error.user.password.notSame": "Les contrasenyes no coincideixen", "error.user.password.notSame": "Les contrasenyes no coincideixen",
"error.user.password.undefined": "L'usuari no té una contrasenya", "error.user.password.undefined": "L'usuari no té una contrasenya",
"error.user.role.invalid": "Si us plau, introdueix un rol vàlid", "error.user.role.invalid": "Si us plau, introdueix un rol vàlid",
"error.user.update.permission": "error.user.update.permission": "No tens permís per actualitzar l'usuari \"{name}\"",
"No tens permís per actualitzar l'usuari \"{name}\"",
"error.validation.accepted": "Si us plau confirma", "error.validation.accepted": "Si us plau confirma",
"error.validation.alpha": "Si us plau, introdueix únicament caràcters entre a-z", "error.validation.alpha": "Si us plau, introdueix únicament caràcters entre a-z",
"error.validation.alphanum": "error.validation.alphanum": "Si us plau, introdueix únicament caràcters entre a-z o números de 0-9",
"Si us plau, introdueix únicament caràcters entre a-z o números de 0-9", "error.validation.between": "Introdueix un valor entre \"{min}\" i \"{max}\"",
"error.validation.between":
"Introdueix un valor entre \"{min}\" i \"{max}\"",
"error.validation.boolean": "Si us plau confirma o denega", "error.validation.boolean": "Si us plau confirma o denega",
"error.validation.contains": "error.validation.contains": "Si us plau, introduïu un valor que contingui \"{needle}\"",
"Si us plau, introduïu un valor que contingui \"{needle}\"",
"error.validation.date": "Si us plau, introdueix una data vàlida", "error.validation.date": "Si us plau, introdueix una data vàlida",
"error.validation.date.after": "Introdueix una data posterior {date}", "error.validation.date.after": "Introdueix una data posterior {date}",
"error.validation.date.before": "Introdueix una data anterior {date}", "error.validation.date.before": "Introdueix una data anterior {date}",
@@ -210,18 +169,14 @@
"error.validation.less": "Si us plau, introduïu un valor inferior a {max}", "error.validation.less": "Si us plau, introduïu un valor inferior a {max}",
"error.validation.match": "El valor no coincideix amb el patró esperat", "error.validation.match": "El valor no coincideix amb el patró esperat",
"error.validation.max": "Si us plau, introduïu un valor igual o inferior a {max}", "error.validation.max": "Si us plau, introduïu un valor igual o inferior a {max}",
"error.validation.maxlength": "error.validation.maxlength": "Si us plau, introduïu un valor més curt. (màxim {max} caràcters)",
"Si us plau, introduïu un valor més curt. (màxim {max} caràcters)",
"error.validation.maxwords": "Si us plau, introduïu no més de {max} paraula(es)", "error.validation.maxwords": "Si us plau, introduïu no més de {max} paraula(es)",
"error.validation.min": "Si us plau, introduïu un valor igual o superior a {min}", "error.validation.min": "Si us plau, introduïu un valor igual o superior a {min}",
"error.validation.minlength": "error.validation.minlength": "Si us plau, introduïu un valor més llarg. (min. {min} caràcters)",
"Si us plau, introduïu un valor més llarg. (min. {min} caràcters)",
"error.validation.minwords": "Si us plau, introduïu almenys {min} paraula(es)", "error.validation.minwords": "Si us plau, introduïu almenys {min} paraula(es)",
"error.validation.more": "Si us plau, introduïu un valor més gran que {min}", "error.validation.more": "Si us plau, introduïu un valor més gran que {min}",
"error.validation.notcontains": "error.validation.notcontains": "Introduïu un valor que no contingui \"{needle}\"",
"Introduïu un valor que no contingui \"{needle}\"", "error.validation.notin": "Si us plau, no introduïu cap d'aquests elements: ({notIn})",
"error.validation.notin":
"Si us plau, no introduïu cap d'aquests elements: ({notIn})",
"error.validation.option": "Si us plau, seleccioneu una opció vàlida", "error.validation.option": "Si us plau, seleccioneu una opció vàlida",
"error.validation.num": "Si us plau, introduïu un número vàlid", "error.validation.num": "Si us plau, introduïu un número vàlid",
"error.validation.required": "Si us plau, introduïu alguna cosa", "error.validation.required": "Si us plau, introduïu alguna cosa",
@@ -238,8 +193,7 @@
"field.structure.empty": "Encara no hi ha entrades.", "field.structure.empty": "Encara no hi ha entrades.",
"field.users.empty": "Encara no s'ha seleccionat cap usuari", "field.users.empty": "Encara no s'ha seleccionat cap usuari",
"file.delete.confirm": "file.delete.confirm": "Esteu segurs d'eliminar <br><strong>{filename}</strong>?",
"Esteu segurs d'eliminar <br><strong>{filename}</strong>?",
"files": "Arxius", "files": "Arxius",
"files.empty": "Encara no hi ha fitxers", "files.empty": "Encara no hi ha fitxers",
@@ -251,29 +205,22 @@
"installation": "Instal·lació", "installation": "Instal·lació",
"installation.completed": "S'ha instal·lat el panell", "installation.completed": "S'ha instal·lat el panell",
"installation.disabled": "L'instal·lador del panell està desactivat per defecte als servidors públics. Si us plau, executeu l'instal·lador en una màquina local o habiliteu-lo amb l'opció <code>panel.install</code>", "installation.disabled": "L'instal·lador del panell està desactivat per defecte als servidors públics. Si us plau, executeu l'instal·lador en una màquina local o habiliteu-lo amb l'opció <code>panel.install</code>",
"installation.issues.accounts": "installation.issues.accounts": "La carpeta <code>/site/accounts</code> no existeix o no es pot escriure",
"La carpeta <code>/site/accounts</code> no existeix o no es pot escriure", "installation.issues.content": "La carpeta <code>/content no existeix o no es pot escriure",
"installation.issues.content":
"La carpeta <code>/content no existeix o no es pot escriure",
"installation.issues.curl": "Es requereix l'extensió <code>CURL</code>", "installation.issues.curl": "Es requereix l'extensió <code>CURL</code>",
"installation.issues.headline": "El panell no es pot instal·lar", "installation.issues.headline": "El panell no es pot instal·lar",
"installation.issues.mbstring": "installation.issues.mbstring": "Es requereix l'extensió de <code>MB String</code>",
"Es requereix l'extensió de <code>MB String</code>", "installation.issues.media": "La carpeta <code>/media</code> no existeix o no es pot escriure",
"installation.issues.media":
"La carpeta <code>/media</code> no existeix o no es pot escriure",
"installation.issues.php": "Assegureu-vos d'utilitzar <code>PHP 7+</code>", "installation.issues.php": "Assegureu-vos d'utilitzar <code>PHP 7+</code>",
"installation.issues.server": "installation.issues.server": "Kirby requereix <code>Apache</code>, <code>Nginx</code> o <code>Caddy</code>",
"Kirby requereix <code>Apache</code>, <code>Nginx</code> o <code>Caddy</code>",
"installation.issues.sessions": "La carpeta <code>/site/sessions</code> no existeix o no es pot escriure", "installation.issues.sessions": "La carpeta <code>/site/sessions</code> no existeix o no es pot escriure",
"language": "Idioma", "language": "Idioma",
"language.code": "Codi", "language.code": "Codi",
"language.convert": "Fer per defecte", "language.convert": "Fer per defecte",
"language.convert.confirm": "language.convert.confirm": "<p>Segur que voleu convertir <strong>{name}</strong> a l'idioma predeterminat? Això no es pot desfer.</p> <p> Si <strong>{name}</strong> té contingut no traduït, ja no podreu tornar enrere i algunes parts del vostre lloc poden quedar buides.</p>",
"<p>Segur que voleu convertir <strong>{name}</strong> a l'idioma predeterminat? Això no es pot desfer.</p> <p> Si <strong>{name}</strong> té contingut no traduït, ja no podreu tornar enrere i algunes parts del vostre lloc poden quedar buides.</p>",
"language.create": "Afegir un nou idioma", "language.create": "Afegir un nou idioma",
"language.delete.confirm": "language.delete.confirm": "Segur que voleu eliminar l'idioma <strong>{name}</strong> incloent totes les traduccions? Això no es pot desfer!",
"Segur que voleu eliminar l'idioma <strong>{name}</strong> incloent totes les traduccions? Això no es pot desfer!",
"language.deleted": "S'ha suprimit l'idioma", "language.deleted": "S'ha suprimit l'idioma",
"language.direction": "Direcció de lectura", "language.direction": "Direcció de lectura",
"language.direction.ltr": "Esquerra a dreta", "language.direction.ltr": "Esquerra a dreta",
@@ -292,8 +239,7 @@
"license": "Llic\u00e8ncia Kirby", "license": "Llic\u00e8ncia Kirby",
"license.buy": "Comprar una llicència", "license.buy": "Comprar una llicència",
"license.register": "Registrar", "license.register": "Registrar",
"license.register.help": "license.register.help": "Heu rebut el codi de la vostra llicència després de la compra, per correu electrònic. Copieu-lo i enganxeu-lo per registrar-vos.",
"Heu rebut el codi de la vostra llicència després de la compra, per correu electrònic. Copieu-lo i enganxeu-lo per registrar-vos.",
"license.register.label": "Si us plau, introdueixi el seu codi de llicència", "license.register.label": "Si us plau, introdueixi el seu codi de llicència",
"license.register.success": "Gràcies per donar suport a Kirby", "license.register.success": "Gràcies per donar suport a Kirby",
"license.unregistered": "Aquesta és una demo no registrada de Kirby", "license.unregistered": "Aquesta és una demo no registrada de Kirby",
@@ -354,10 +300,8 @@
"page.changeStatus.position": "Si us plau, seleccioneu una posició", "page.changeStatus.position": "Si us plau, seleccioneu una posició",
"page.changeStatus.select": "Seleccioneu un nou estat", "page.changeStatus.select": "Seleccioneu un nou estat",
"page.changeTemplate": "Canviar la plantilla", "page.changeTemplate": "Canviar la plantilla",
"page.delete.confirm": "page.delete.confirm": "Segur que voleu eliminar <strong>{title}</strong>?",
"Segur que voleu eliminar <strong>{title}</strong>?", "page.delete.confirm.subpages": "<strong>Aquesta pàgina té subpàgines</strong>. <br>Totes les subpàgines també s'eliminaran.",
"page.delete.confirm.subpages":
"<strong>Aquesta pàgina té subpàgines</strong>. <br>Totes les subpàgines també s'eliminaran.",
"page.delete.confirm.title": "Introduïu el títol de la pàgina per confirmar", "page.delete.confirm.title": "Introduïu el títol de la pàgina per confirmar",
"page.draft.create": "Crear un esborrany", "page.draft.create": "Crear un esborrany",
"page.duplicate.appendix": "Copiar", "page.duplicate.appendix": "Copiar",
@@ -365,8 +309,7 @@
"page.duplicate.pages": "Copiar pàgines", "page.duplicate.pages": "Copiar pàgines",
"page.status": "Estat", "page.status": "Estat",
"page.status.draft": "Esborrany", "page.status.draft": "Esborrany",
"page.status.draft.description": "page.status.draft.description": "La pàgina està en mode d'esborrany i només és visible per als editors registrats o a través d'un enllaç secret",
"La pàgina està en mode d'esborrany i només és visible per als editors registrats",
"page.status.listed": "Públic", "page.status.listed": "Públic",
"page.status.listed.description": "La pàgina és pública per a tothom", "page.status.listed.description": "La pàgina és pública per a tothom",
"page.status.unlisted": "Sense classificar", "page.status.unlisted": "Sense classificar",
@@ -388,6 +331,7 @@
"replace": "Reempla\u00e7ar", "replace": "Reempla\u00e7ar",
"retry": "Reintentar", "retry": "Reintentar",
"revert": "Revertir", "revert": "Revertir",
"revert.confirm": "Segur que voleu eliminar <strong>tots els canvis pendents desar</strong>?",
"role": "Rol", "role": "Rol",
"role.admin.description": "Ladministrador té tots els permisos", "role.admin.description": "Ladministrador té tots els permisos",
@@ -451,8 +395,7 @@
"url.placeholder": "https://example.com", "url.placeholder": "https://example.com",
"user": "Usuari", "user": "Usuari",
"user.blueprint": "user.blueprint": "Podeu definir seccions addicionals i camps de formulari per a aquest rol d'usuari a <strong>/site/blueprints/users/{role}.yml</strong>",
"Podeu definir seccions addicionals i camps de formulari per a aquest rol d'usuari a <strong>/site/blueprints/users/{role}.yml</strong>",
"user.changeEmail": "Canviar e-mail", "user.changeEmail": "Canviar e-mail",
"user.changeLanguage": "Canviar idioma", "user.changeLanguage": "Canviar idioma",
"user.changeName": "Canviar el nom d'aquest usuari", "user.changeName": "Canviar el nom d'aquest usuari",
@@ -463,8 +406,7 @@
"user.changeRole.select": "Seleccionar un nou rol", "user.changeRole.select": "Seleccionar un nou rol",
"user.create": "Afegir un nou usuari", "user.create": "Afegir un nou usuari",
"user.delete": "Eliminar aquest usuari", "user.delete": "Eliminar aquest usuari",
"user.delete.confirm": "user.delete.confirm": "Segur que voleu eliminar <br> <strong>{email}</strong>?",
"Segur que voleu eliminar <br> <strong>{email}</strong>?",
"users": "Usuaris", "users": "Usuaris",

View File

@@ -42,10 +42,8 @@
"error.avatar.create.fail": "Nebylo možné nahrát profilový obrázek", "error.avatar.create.fail": "Nebylo možné nahrát profilový obrázek",
"error.avatar.delete.fail": "Nebylo mo\u017en\u00e9 smazat profilov\u00fd obr\u00e1zek", "error.avatar.delete.fail": "Nebylo mo\u017en\u00e9 smazat profilov\u00fd obr\u00e1zek",
"error.avatar.dimensions.invalid": "error.avatar.dimensions.invalid": "Šířka a výška obrázku musí být pod 3000 pixelů",
"Šířka a výška obrázku musí být pod 3000 pixelů", "error.avatar.mime.forbidden": "Profilový obrázek musí být ve formátu JPEG nebo PNG",
"error.avatar.mime.forbidden":
"Profilový obrázek musí být ve formátu JPEG nebo PNG",
"error.blueprint.notFound": "Nelze načíst blueprint \"{name}\" ", "error.blueprint.notFound": "Nelze načíst blueprint \"{name}\" ",
@@ -54,22 +52,17 @@
"error.field.converter.invalid": "Neplatný konvertor \"{converter}\"", "error.field.converter.invalid": "Neplatný konvertor \"{converter}\"",
"error.file.changeName.empty": "Toto jméno nesmí být prázdné", "error.file.changeName.empty": "Toto jméno nesmí být prázdné",
"error.file.changeName.permission": "error.file.changeName.permission": "Nemáte povoleno změnit jméno souboru \"{filename}\"",
"Nemáte povoleno změnit jméno souboru \"{filename}\"",
"error.file.duplicate": "Soubor s názvem \"{filename}\" již existuje", "error.file.duplicate": "Soubor s názvem \"{filename}\" již existuje",
"error.file.extension.forbidden": "error.file.extension.forbidden": "Přípona souboru \"{extension}\" není povolena",
"Přípona souboru \"{extension}\" není povolena", "error.file.extension.missing": "Nem\u016f\u017eete nahr\u00e1t soubor bez p\u0159\u00edpony",
"error.file.extension.missing":
"Nem\u016f\u017eete nahr\u00e1t soubor bez p\u0159\u00edpony",
"error.file.maxheight": "Výška obrázku nesmí přesáhnout {height} pixelů", "error.file.maxheight": "Výška obrázku nesmí přesáhnout {height} pixelů",
"error.file.maxsize": "Soubor je příliš velký", "error.file.maxsize": "Soubor je příliš velký",
"error.file.maxwidth": "Šířka obrázku nesmí přesáhnout {width} pixelů", "error.file.maxwidth": "Šířka obrázku nesmí přesáhnout {width} pixelů",
"error.file.mime.differs": "error.file.mime.differs": "Nahraný soubor musí být stejného typu \"{mime}\"",
"Nahraný soubor musí být stejného typu \"{mime}\"",
"error.file.mime.forbidden": "Soubor typu \"{mime}\" není povolený", "error.file.mime.forbidden": "Soubor typu \"{mime}\" není povolený",
"error.file.mime.invalid": "Neplatný MIME typ: {mime}", "error.file.mime.invalid": "Neplatný MIME typ: {mime}",
"error.file.mime.missing": "error.file.mime.missing": "Nelze rozeznat mime typ souboru \"{filename}\"",
"Nelze rozeznat mime typ souboru \"{filename}\"",
"error.file.minheight": "Výška obrázku musí být alespoň {height} pixelů", "error.file.minheight": "Výška obrázku musí být alespoň {height} pixelů",
"error.file.minsize": "Soubor je příliš malý", "error.file.minsize": "Soubor je příliš malý",
"error.file.minwidth": "Šířka obrázku musí být alespoň {width} pixelů", "error.file.minwidth": "Šířka obrázku musí být alespoň {width} pixelů",
@@ -90,111 +83,77 @@
"error.license.email": "Zadejte prosím platnou emailovou adresu", "error.license.email": "Zadejte prosím platnou emailovou adresu",
"error.license.verification": "Licenci nelze ověřit", "error.license.verification": "Licenci nelze ověřit",
"error.page.changeSlug.permission": "error.page.changeSlug.permission": "Nem\u016f\u017eete zm\u011bnit URL t\u00e9to str\u00e1nky",
"Nem\u016f\u017eete zm\u011bnit URL t\u00e9to str\u00e1nky", "error.page.changeStatus.incomplete": "Stránka obsahuje chyby a nemohla být zveřejněna",
"error.page.changeStatus.incomplete": "error.page.changeStatus.permission": "Status této stránky nelze změnit",
"Stránka obsahuje chyby a nemohla být zveřejněna", "error.page.changeStatus.toDraft.invalid": "Stránka \"{slug}\" nemůže být převedena na koncept",
"error.page.changeStatus.permission": "error.page.changeTemplate.invalid": "Šablonu stránky \"{slug}\" nelze změnit",
"Status této stránky nelze změnit", "error.page.changeTemplate.permission": "Nemáte dovoleno změnit šablonu stránky \"{slug}\"",
"error.page.changeStatus.toDraft.invalid":
"Stránka \"{slug}\" nemůže být převedena na koncept",
"error.page.changeTemplate.invalid":
"Šablonu stránky \"{slug}\" nelze změnit",
"error.page.changeTemplate.permission":
"Nemáte dovoleno změnit šablonu stránky \"{slug}\"",
"error.page.changeTitle.empty": "Titulek nesmí být prázdný", "error.page.changeTitle.empty": "Titulek nesmí být prázdný",
"error.page.changeTitle.permission": "error.page.changeTitle.permission": "Nemáte dovoleno změnit titulek stránky \"{slug}\"",
"Nemáte dovoleno změnit titulek stránky \"{slug}\"",
"error.page.create.permission": "Nemáte dovoleno vytvořit \"{slug}\"", "error.page.create.permission": "Nemáte dovoleno vytvořit \"{slug}\"",
"error.page.delete": "Stránku \"{slug}\" nelze vymazat", "error.page.delete": "Stránku \"{slug}\" nelze vymazat",
"error.page.delete.confirm": "Pro potvrzení prosím zadejte titulek stránky", "error.page.delete.confirm": "Pro potvrzení prosím zadejte titulek stránky",
"error.page.delete.hasChildren": "error.page.delete.hasChildren": "Stránka má podstránky, nemůže být vymazána",
"Stránka má podstránky, nemůže být vymazána",
"error.page.delete.permission": "Nemáte dovoleno odstranit \"{slug}\"", "error.page.delete.permission": "Nemáte dovoleno odstranit \"{slug}\"",
"error.page.draft.duplicate": "error.page.draft.duplicate": "Koncept stránky, který obsahuje v adrese URL \"{slug}\" již existuje ",
"Koncept stránky, který obsahuje v adrese URL \"{slug}\" již existuje ", "error.page.duplicate": "Stránka, která v adrese URL obsahuje \"{slug}\" již existuje",
"error.page.duplicate":
"Stránka, která v adrese URL obsahuje \"{slug}\" již existuje",
"error.page.duplicate.permission": "Nemáte dovoleno duplikovat \"{slug}\"", "error.page.duplicate.permission": "Nemáte dovoleno duplikovat \"{slug}\"",
"error.page.notFound": "Str\u00e1nku se nepoda\u0159ilo nal\u00e9zt.", "error.page.notFound": "Str\u00e1nku se nepoda\u0159ilo nal\u00e9zt.",
"error.page.num.invalid": "error.page.num.invalid": "Zadejte prosím platné pořadové číslo. Čísla nesmí být záporná.",
"Zadejte prosím platné pořadové číslo. Čísla nesmí být záporná.",
"error.page.slug.invalid": "Zadejte prosím platnou předponu URL", "error.page.slug.invalid": "Zadejte prosím platnou předponu URL",
"error.page.sort.permission": "Stránce \"{slug}\" nelze změnit pořadí", "error.page.sort.permission": "Stránce \"{slug}\" nelze změnit pořadí",
"error.page.status.invalid": "Nastavte prosím platný status stránky", "error.page.status.invalid": "Nastavte prosím platný status stránky",
"error.page.undefined": "Str\u00e1nku se nepoda\u0159ilo nal\u00e9zt.", "error.page.undefined": "Str\u00e1nku se nepoda\u0159ilo nal\u00e9zt.",
"error.page.update.permission": "Nemáte dovoleno upravit \"{slug}\"", "error.page.update.permission": "Nemáte dovoleno upravit \"{slug}\"",
"error.section.files.max.plural": "error.section.files.max.plural": "Sekce \"{section}\" nesmí obsahovat více jak {max} souborů",
"Sekce \"{section}\" nesmí obsahovat více jak {max} souborů", "error.section.files.max.singular": "Sekce \"{section}\" může obsahovat nejvýše jeden soubor",
"error.section.files.max.singular": "error.section.files.min.plural": "Sekce \"{section}\" vyžaduje nejméně {min} souborů",
"Sekce \"{section}\" může obsahovat nejvýše jeden soubor", "error.section.files.min.singular": "Sekce \"{section}\" vyžaduje alespoň jeden soubor",
"error.section.files.min.plural":
"Sekce \"{section}\" vyžaduje nejméně {min} souborů",
"error.section.files.min.singular":
"Sekce \"{section}\" vyžaduje alespoň jeden soubor",
"error.section.pages.max.plural": "error.section.pages.max.plural": "Sekce \"{section}\" nesmí obsahovat více jak {max} stránek",
"Sekce \"{section}\" nesmí obsahovat více jak {max} stránek", "error.section.pages.max.singular": "Sekce \"{section}\" může obsahovat nejvýše jednu stránku",
"error.section.pages.max.singular": "error.section.pages.min.plural": "Sekce \"{section}\" vyžaduje alespoň {min} stránek",
"Sekce \"{section}\" může obsahovat nejvýše jednu stránku", "error.section.pages.min.singular": "Sekce \"{section}\" vyžaduje alespoň jednu stránku",
"error.section.pages.min.plural":
"Sekce \"{section}\" vyžaduje alespoň {min} stránek",
"error.section.pages.min.singular":
"Sekce \"{section}\" vyžaduje alespoň jednu stránku",
"error.section.notLoaded": "Nelze načíst sekci \"{name}\"", "error.section.notLoaded": "Nelze načíst sekci \"{name}\"",
"error.section.type.invalid": "Typ sekce \"{type}\" není platný", "error.section.type.invalid": "Typ sekce \"{type}\" není platný",
"error.site.changeTitle.empty": "Titulek nesmí být prázdný", "error.site.changeTitle.empty": "Titulek nesmí být prázdný",
"error.site.changeTitle.permission": "error.site.changeTitle.permission": "Nemáte dovoleno změnit titulek stránky",
"Nemáte dovoleno změnit titulek stránky",
"error.site.update.permission": "Nemáte dovoleno upravit stránku", "error.site.update.permission": "Nemáte dovoleno upravit stránku",
"error.template.default.notFound": "Výchozí šablona neexistuje", "error.template.default.notFound": "Výchozí šablona neexistuje",
"error.user.changeEmail.permission": "error.user.changeEmail.permission": "Nemáte dovoleno měnit email uživatele \"{name}\"",
"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": "error.user.changeName.permission": "Nemáte dovoleno změnit jméno uživatele \"{name}\"",
"Nemáte dovoleno změnit jazyk uživatele \"{name}\"", "error.user.changePassword.permission": "Nemáte dovoleno změnit heslo uživatele \"{name}\"",
"error.user.changeName.permission": "error.user.changeRole.lastAdmin": "Role posledního administrátora nemůže být změněna",
"Nemáte dovoleno změnit jméno uživatele \"{name}\"", "error.user.changeRole.permission": "Nemáte dovoleno změnit roli uživatele \"{name}\"",
"error.user.changePassword.permission": "error.user.changeRole.toAdmin": "Nemáte dovoleno povýšit uživatele do role administrátora.",
"Nemáte dovoleno změnit heslo uživatele \"{name}\"",
"error.user.changeRole.lastAdmin":
"Role posledního administrátora nemůže být změněna",
"error.user.changeRole.permission":
"Nemáte dovoleno změnit roli uživatele \"{name}\"",
"error.user.changeRole.toAdmin":
"Nemáte dovoleno povýšit uživatele do role administrátora.",
"error.user.create.permission": "Nemáte dovoleno vytvořit tohoto uživatele", "error.user.create.permission": "Nemáte dovoleno vytvořit tohoto uživatele",
"error.user.delete": "U\u017eivatel nemohl b\u00fdt smaz\u00e1n", "error.user.delete": "U\u017eivatel nemohl b\u00fdt smaz\u00e1n",
"error.user.delete.lastAdmin": "Nem\u016f\u017eete smazat posledn\u00edho administr\u00e1tora", "error.user.delete.lastAdmin": "Nem\u016f\u017eete smazat posledn\u00edho administr\u00e1tora",
"error.user.delete.lastUser": "Poslední uživatel nemůže být smazán", "error.user.delete.lastUser": "Poslední uživatel nemůže být smazán",
"error.user.delete.permission": "error.user.delete.permission": "Nem\u00e1te dovoleno smazat tohoto u\u017eivatele",
"Nem\u00e1te dovoleno smazat tohoto u\u017eivatele", "error.user.duplicate": "Uživatel s emailovou adresou \"{email}\" již existuje",
"error.user.duplicate":
"Uživatel s emailovou adresou \"{email}\" již existuje",
"error.user.email.invalid": "Zadejte prosím platnou emailovou adresu", "error.user.email.invalid": "Zadejte prosím platnou emailovou adresu",
"error.user.language.invalid": "Zadejte prosím platný jazyk", "error.user.language.invalid": "Zadejte prosím platný jazyk",
"error.user.notFound": "U\u017eivatele se nepoda\u0159ilo nal\u00e9zt", "error.user.notFound": "U\u017eivatele se nepoda\u0159ilo nal\u00e9zt",
"error.user.password.invalid": "error.user.password.invalid": "Zadejte prosím platné heslo. Heslo musí být dlouhé alespoň 8 znaků.",
"Zadejte prosím platné heslo. Heslo musí být dlouhé alespoň 8 znaků.",
"error.user.password.notSame": "Pros\u00edm potvr\u010fte heslo", "error.user.password.notSame": "Pros\u00edm potvr\u010fte heslo",
"error.user.password.undefined": "Uživatel nemá nastavené heslo.", "error.user.password.undefined": "Uživatel nemá nastavené heslo.",
"error.user.role.invalid": "Zadejte prosím platnou roli", "error.user.role.invalid": "Zadejte prosím platnou roli",
"error.user.update.permission": "error.user.update.permission": "Nemáte dovoleno upravit uživatele \"{name}\"",
"Nemáte dovoleno upravit uživatele \"{name}\"",
"error.validation.accepted": "Potvrďte prosím", "error.validation.accepted": "Potvrďte prosím",
"error.validation.alpha": "Zadávejte prosím pouze znaky v rozmezí a-z", "error.validation.alpha": "Zadávejte prosím pouze znaky v rozmezí a-z",
"error.validation.alphanum": "error.validation.alphanum": "Zadávejte prosím pouze znaky v rozmezí a-z nebo čísla v rozmezí 0-9",
"Zadávejte prosím pouze znaky v rozmezí a-z nebo čísla v rozmezí 0-9", "error.validation.between": "Zadejte prosím hodnotu mez \"{min}\" a \"{max}\"",
"error.validation.between":
"Zadejte prosím hodnotu mez \"{min}\" a \"{max}\"",
"error.validation.boolean": "Potvrďte prosím, nebo odmítněte", "error.validation.boolean": "Potvrďte prosím, nebo odmítněte",
"error.validation.contains": "error.validation.contains": "Zadejte prosím hodnotu, která obsahuje \"{needle}\"",
"Zadejte prosím hodnotu, která obsahuje \"{needle}\"",
"error.validation.date": "Zadejte prosím platné datum", "error.validation.date": "Zadejte prosím platné datum",
"error.validation.date.after": "Zadejte prosím datum po {date}", "error.validation.date.after": "Zadejte prosím datum po {date}",
"error.validation.date.before": "Zadejte prosím datum před {date}", "error.validation.date.before": "Zadejte prosím datum před {date}",
@@ -210,18 +169,14 @@
"error.validation.less": "Zadejte prosím hodnotu menší než {max}", "error.validation.less": "Zadejte prosím hodnotu menší než {max}",
"error.validation.match": "Hodnota neodpovídá očekávanému vzoru", "error.validation.match": "Hodnota neodpovídá očekávanému vzoru",
"error.validation.max": "Zadejte prosím hodnotu rovnou, nebo menší než {max}", "error.validation.max": "Zadejte prosím hodnotu rovnou, nebo menší než {max}",
"error.validation.maxlength": "error.validation.maxlength": "Zadaná hodnota je příliš dlouhá. (Povoleno nejvýše {max} znaků)",
"Zadaná hodnota je příliš dlouhá. (Povoleno nejvýše {max} znaků)",
"error.validation.maxwords": "Nezadávejte prosím více jak {max} slov", "error.validation.maxwords": "Nezadávejte prosím více jak {max} slov",
"error.validation.min": "Zadejte prosím hodnotu rovnou, nebo větší než {min}", "error.validation.min": "Zadejte prosím hodnotu rovnou, nebo větší než {min}",
"error.validation.minlength": "error.validation.minlength": "Zadaná hodnota je příliš krátká. (Požadováno nejméně {min} znaků)",
"Zadaná hodnota je příliš krátká. (Požadováno nejméně {min} znaků)",
"error.validation.minwords": "Zadejte prosím alespoň {min} slov", "error.validation.minwords": "Zadejte prosím alespoň {min} slov",
"error.validation.more": "Zadejte prosím hodnotu větší než {min}", "error.validation.more": "Zadejte prosím hodnotu větší než {min}",
"error.validation.notcontains": "error.validation.notcontains": "Zadejte prosím hodnotu, která neobsahuje \"{needle}\"",
"Zadejte prosím hodnotu, která neobsahuje \"{needle}\"", "error.validation.notin": "Nezadávejte prosím žádnou z následujíích hodnot: ({notIn})",
"error.validation.notin":
"Nezadávejte prosím žádnou z následujíích hodnot: ({notIn})",
"error.validation.option": "Vyberte prosím platnou možnost", "error.validation.option": "Vyberte prosím platnou možnost",
"error.validation.num": "Zadejte prosím platné číslo", "error.validation.num": "Zadejte prosím platné číslo",
"error.validation.required": "Zadejte prosím jakoukoli hodnotu", "error.validation.required": "Zadejte prosím jakoukoli hodnotu",
@@ -238,8 +193,7 @@
"field.structure.empty": "Zat\u00edm nejsou \u017e\u00e1dn\u00e9 z\u00e1znamy.", "field.structure.empty": "Zat\u00edm nejsou \u017e\u00e1dn\u00e9 z\u00e1znamy.",
"field.users.empty": "Nebyli zatím vybráni žádní uživatelé", "field.users.empty": "Nebyli zatím vybráni žádní uživatelé",
"file.delete.confirm": "file.delete.confirm": "Opravdu chcete smazat tento soubor?",
"Opravdu chcete smazat tento soubor?",
"files": "Soubory", "files": "Soubory",
"files.empty": "Zatím žádné soubory", "files.empty": "Zatím žádné soubory",
@@ -251,29 +205,22 @@
"installation": "Instalace", "installation": "Instalace",
"installation.completed": "Panel byl nainstalován", "installation.completed": "Panel byl nainstalován",
"installation.disabled": "Instalátor panelu je ve výchozím nastavení na veřejných serverech zakázán. Spusťte prosím instalátor na lokálním počítači nebo jej povolte prostřednictvím <code>panel.install</code>.", "installation.disabled": "Instalátor panelu je ve výchozím nastavení na veřejných serverech zakázán. Spusťte prosím instalátor na lokálním počítači nebo jej povolte prostřednictvím <code>panel.install</code>.",
"installation.issues.accounts": "installation.issues.accounts": "\/site\/accounts nen\u00ed zapisovateln\u00e9",
"\/site\/accounts nen\u00ed zapisovateln\u00e9", "installation.issues.content": "Slo\u017eka content a v\u0161echny soubory a slo\u017eky v n\u00ed mus\u00ed b\u00fdt zapisovateln\u00e9.",
"installation.issues.content":
"Slo\u017eka content a v\u0161echny soubory a slo\u017eky v n\u00ed mus\u00ed b\u00fdt zapisovateln\u00e9.",
"installation.issues.curl": "Je vyžadováno rozšíření<code>CURL</code>", "installation.issues.curl": "Je vyžadováno rozšíření<code>CURL</code>",
"installation.issues.headline": "Panel nelze nainstalovat", "installation.issues.headline": "Panel nelze nainstalovat",
"installation.issues.mbstring": "installation.issues.mbstring": "Je vyžadováno rozšíření<code>MB String</code>",
"Je vyžadováno rozšíření<code>MB String</code>", "installation.issues.media": "Složka<code>/media</code> neexistuje, nebo nemá povolený zápis",
"installation.issues.media":
"Složka<code>/media</code> neexistuje, nebo nemá povolený zápis",
"installation.issues.php": "Ujistěte se, že používáte<code>PHP 7+</code>", "installation.issues.php": "Ujistěte se, že používáte<code>PHP 7+</code>",
"installation.issues.server": "installation.issues.server": "Kirby vyžaduje<code>Apache</code>, <code>Nginx</code> nebo<code>Caddy</code>",
"Kirby vyžaduje<code>Apache</code>, <code>Nginx</code> nebo<code>Caddy</code>",
"installation.issues.sessions": "Složka<code>/site/sessions</code> neexistuje, nebo nemá povolený zápis", "installation.issues.sessions": "Složka<code>/site/sessions</code> neexistuje, nebo nemá povolený zápis",
"language": "Jazyk", "language": "Jazyk",
"language.code": "Kód", "language.code": "Kód",
"language.convert": "Nastavte výchozí možnost", "language.convert": "Nastavte výchozí možnost",
"language.convert.confirm": "language.convert.confirm": "<p>Opravdu chcete převést<strong>{name}</strong> na výchozí jazyk? Tuto volbu nelze vzít zpátky.</p><p>Pokud <strong>{name}</strong> obsahuje nepřeložený text, nebude již k dispozici záložní varianta a části stránky mohou zůstat prázdné.</p>",
"<p>Opravdu chcete převést<strong>{name}</strong> na výchozí jazyk? Tuto volbu nelze vzít zpátky.</p><p>Pokud <strong>{name}</strong> obsahuje nepřeložený text, nebude již k dispozici záložní varianta a části stránky mohou zůstat prázdné.</p>",
"language.create": "Přidat nový jazyk", "language.create": "Přidat nový jazyk",
"language.delete.confirm": "language.delete.confirm": "Opravdu chcete smazat jazyk <strong>{name}</strong> včetně všech překladů? Tuto volbu nelze vzít zpátky!",
"Opravdu chcete smazat jazyk <strong>{name}</strong> včetně všech překladů? Tuto volbu nelze vzít zpátky!",
"language.deleted": "Jazyk byl smazán", "language.deleted": "Jazyk byl smazán",
"language.direction": "Směr čtení", "language.direction": "Směr čtení",
"language.direction.ltr": "Zleva doprava", "language.direction.ltr": "Zleva doprava",
@@ -292,8 +239,7 @@
"license": "Kirby licence", "license": "Kirby licence",
"license.buy": "Zakoupit licenci", "license.buy": "Zakoupit licenci",
"license.register": "Registrovat", "license.register": "Registrovat",
"license.register.help": "license.register.help": "Licenční kód jste po zakoupení obdrželi na email. Vložte prosím kód a zaregistrujte Vaší kopii.",
"Licenční kód jste po zakoupení obdrželi na email. Vložte prosím kód a zaregistrujte Vaší kopii.",
"license.register.label": "Zadejte prosím licenční kód", "license.register.label": "Zadejte prosím licenční kód",
"license.register.success": "Děkujeme Vám za podporu Kirby", "license.register.success": "Děkujeme Vám za podporu Kirby",
"license.unregistered": "Toto je neregistrovaná kopie Kirby", "license.unregistered": "Toto je neregistrovaná kopie Kirby",
@@ -325,7 +271,7 @@
"months.april": "Duben", "months.april": "Duben",
"months.august": "Srpen", "months.august": "Srpen",
"months.december": "Prosinec", "months.december": "Prosinec",
"months.february": "\u00danor", "months.february": "Únor",
"months.january": "Leden", "months.january": "Leden",
"months.july": "\u010cervenec", "months.july": "\u010cervenec",
"months.june": "\u010cerven", "months.june": "\u010cerven",
@@ -354,10 +300,8 @@
"page.changeStatus.position": "Vyberte prosím pozici", "page.changeStatus.position": "Vyberte prosím pozici",
"page.changeStatus.select": "Vybrat nový status", "page.changeStatus.select": "Vybrat nový status",
"page.changeTemplate": "Změnit šablonu", "page.changeTemplate": "Změnit šablonu",
"page.delete.confirm": "page.delete.confirm": "Opravdu chcete smazat tuto str\u00e1nku?",
"Opravdu chcete smazat tuto str\u00e1nku?", "page.delete.confirm.subpages": "<strong>Tato stránka má podstránky</strong>. <br>Všechny podstránky budou vymazány.",
"page.delete.confirm.subpages":
"<strong>Tato stránka má podstránky</strong>. <br>Všechny podstránky budou vymazány.",
"page.delete.confirm.title": "Pro potvrzení zadejte titulek stránky", "page.delete.confirm.title": "Pro potvrzení zadejte titulek stránky",
"page.draft.create": "Vytvořit koncept", "page.draft.create": "Vytvořit koncept",
"page.duplicate.appendix": "Kopírovat", "page.duplicate.appendix": "Kopírovat",
@@ -365,8 +309,7 @@
"page.duplicate.pages": "Kopírovat stránky", "page.duplicate.pages": "Kopírovat stránky",
"page.status": "Stav", "page.status": "Stav",
"page.status.draft": "Koncept", "page.status.draft": "Koncept",
"page.status.draft.description": "page.status.draft.description": "The page is in draft mode and only visible for logged in editors or via secret link",
"Stránka je ve stavu konceptu a je viditelná pouze pro přihlášené editory",
"page.status.listed": "Veřejná", "page.status.listed": "Veřejná",
"page.status.listed.description": "Stránka je zveřejněná pro všechny", "page.status.listed.description": "Stránka je zveřejněná pro všechny",
"page.status.unlisted": "Neveřejná", "page.status.unlisted": "Neveřejná",
@@ -388,6 +331,7 @@
"replace": "Nahradit", "replace": "Nahradit",
"retry": "Zkusit znovu", "retry": "Zkusit znovu",
"revert": "Zahodit", "revert": "Zahodit",
"revert.confirm": "Do you really want to <strong>delete all unsaved changes</strong>?",
"role": "Role", "role": "Role",
"role.admin.description": "Administrátor má všechna práva", "role.admin.description": "Administrátor má všechna práva",
@@ -451,8 +395,7 @@
"url.placeholder": "https://example.com", "url.placeholder": "https://example.com",
"user": "Uživatel", "user": "Uživatel",
"user.blueprint": "user.blueprint": "Pro tuto uživatelskou roli můžete definovat další sekce a pole v <strong>/site/blueprints/users/{role}.yml</strong>",
"Pro tuto uživatelskou roli můžete definovat další sekce a pole v <strong>/site/blueprints/users/{role}.yml</strong>",
"user.changeEmail": "Změnit email", "user.changeEmail": "Změnit email",
"user.changeLanguage": "Změnit jazyk", "user.changeLanguage": "Změnit jazyk",
"user.changeName": "Přejmenovat tohoto uživatele", "user.changeName": "Přejmenovat tohoto uživatele",
@@ -463,8 +406,7 @@
"user.changeRole.select": "Vybrat novou roli", "user.changeRole.select": "Vybrat novou roli",
"user.create": "Přidat nového uživatele", "user.create": "Přidat nového uživatele",
"user.delete": "Smazat tohoto uživatele", "user.delete": "Smazat tohoto uživatele",
"user.delete.confirm": "user.delete.confirm": "Opravdu chcete smazat tohoto u\u017eivatele?",
"Opravdu chcete smazat tohoto u\u017eivatele?",
"users": "Uživatelé", "users": "Uživatelé",

View File

@@ -42,10 +42,8 @@
"error.avatar.create.fail": "Profilbilledet kunne blev ikke uploadet ", "error.avatar.create.fail": "Profilbilledet kunne blev ikke uploadet ",
"error.avatar.delete.fail": "Profilbilledet kunne ikke slettes", "error.avatar.delete.fail": "Profilbilledet kunne ikke slettes",
"error.avatar.dimensions.invalid": "error.avatar.dimensions.invalid": "Hold venligst bredte og højde på billedet under 3000 pixels",
"Hold venligst bredte og højde på billedet under 3000 pixels", "error.avatar.mime.forbidden": "Uacceptabel fil-type",
"error.avatar.mime.forbidden":
"Uacceptabel fil-type",
"error.blueprint.notFound": "Blueprint \"{name}\" kunne ikke indlæses", "error.blueprint.notFound": "Blueprint \"{name}\" kunne ikke indlæses",
@@ -54,22 +52,17 @@
"error.field.converter.invalid": "Ugyldig converter \"{converter}\"", "error.field.converter.invalid": "Ugyldig converter \"{converter}\"",
"error.file.changeName.empty": "Navn kan ikke efterlades tomt", "error.file.changeName.empty": "Navn kan ikke efterlades tomt",
"error.file.changeName.permission": "error.file.changeName.permission": "Du har ikke tilladelse til at ændre navnet på filen \"{filename}\"",
"Du har ikke tilladelse til at ændre navnet på filen \"{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": "error.file.extension.forbidden": "Uacceptabel fil-endelse",
"Uacceptabel fil-endelse", "error.file.extension.missing": "Du kan ikke uploade filer uden fil-endelse",
"error.file.extension.missing":
"Du kan ikke uploade filer uden fil-endelse",
"error.file.maxheight": "Højden på billedet af billedet må ikke være større end {height} pixels", "error.file.maxheight": "Højden på billedet af billedet må ikke være større end {height} pixels",
"error.file.maxsize": "Filen er for stor", "error.file.maxsize": "Filen er for stor",
"error.file.maxwidth": "Bredden af billedet må ikke være større end {width} pixels", "error.file.maxwidth": "Bredden af billedet må ikke være større end {width} pixels",
"error.file.mime.differs": "error.file.mime.differs": "Den uploadede fil skal være af samme mime type \"{mime}\"",
"Den uploadede fil skal være af samme mime type \"{mime}\"",
"error.file.mime.forbidden": "Media typen \"{mime}\" er ikke tilladt", "error.file.mime.forbidden": "Media typen \"{mime}\" er ikke tilladt",
"error.file.mime.invalid": "Ugyldig mime type: {mime}", "error.file.mime.invalid": "Ugyldig mime type: {mime}",
"error.file.mime.missing": "error.file.mime.missing": "Media typen for \"{filename}\" kan ikke bestemmes",
"Media typen for \"{filename}\" kan ikke bestemmes",
"error.file.minheight": "Højden af billedet skal mindst være {height} pixels", "error.file.minheight": "Højden af billedet skal mindst være {height} pixels",
"error.file.minsize": "Filen er for lille", "error.file.minsize": "Filen er for lille",
"error.file.minwidth": "Bredden af billedet skal mindst være {width} pixels", "error.file.minwidth": "Bredden af billedet skal mindst være {width} pixels",
@@ -90,111 +83,77 @@
"error.license.email": "Indtast venligst en gyldig email adresse", "error.license.email": "Indtast venligst en gyldig email adresse",
"error.license.verification": "Licensen kunne ikke verificeres", "error.license.verification": "Licensen kunne ikke verificeres",
"error.page.changeSlug.permission": "error.page.changeSlug.permission": "Du kan ikke \u00e6ndre denne sides URL",
"Du kan ikke \u00e6ndre denne sides URL", "error.page.changeStatus.incomplete": "Siden indeholder fejl og kan derfor ikke udgives",
"error.page.changeStatus.incomplete": "error.page.changeStatus.permission": "Status for denne side kan ikke ændres",
"Siden indeholder fejl og kan derfor ikke udgives", "error.page.changeStatus.toDraft.invalid": "Siden \"{slug}\" kan ikke konverteres om til en kladde",
"error.page.changeStatus.permission": "error.page.changeTemplate.invalid": "Skabelonen for siden \"{slug}\" kan ikke ændres",
"Status for denne side kan ikke ændres", "error.page.changeTemplate.permission": "Du har ikke tilladelse til at ændre skabelonen for \"{slug}\"",
"error.page.changeStatus.toDraft.invalid":
"Siden \"{slug}\" kan ikke konverteres om til en kladde",
"error.page.changeTemplate.invalid":
"Skabelonen for siden \"{slug}\" kan ikke ændres",
"error.page.changeTemplate.permission":
"Du har ikke tilladelse til at ændre skabelonen for \"{slug}\"",
"error.page.changeTitle.empty": "Titlen kan ikke være tom", "error.page.changeTitle.empty": "Titlen kan ikke være tom",
"error.page.changeTitle.permission": "error.page.changeTitle.permission": "Du har ikke tilladelse til at ændre titlen for \"{slug}\"",
"Du har ikke tilladelse til at ændre titlen for \"{slug}\"",
"error.page.create.permission": "Du har ikke tilladelse til at oprette \"{slug}\"", "error.page.create.permission": "Du har ikke tilladelse til at oprette \"{slug}\"",
"error.page.delete": "Siden \"{slug}\" kan ikke slettes", "error.page.delete": "Siden \"{slug}\" kan ikke slettes",
"error.page.delete.confirm": "Indtast venligst sidens titel for at bekræfte", "error.page.delete.confirm": "Indtast venligst sidens titel for at bekræfte",
"error.page.delete.hasChildren": "error.page.delete.hasChildren": "Siden har unsersider og kan derfor ikke slettes",
"Siden har unsersider og kan derfor ikke slettes",
"error.page.delete.permission": "Du har ikke tilladelse til at slette \"{slug}\"", "error.page.delete.permission": "Du har ikke tilladelse til at slette \"{slug}\"",
"error.page.draft.duplicate": "error.page.draft.duplicate": "En sidekladde med URL-endelsen \"{slug}\" eksisterer allerede",
"En sidekladde med URL-endelsen \"{slug}\" eksisterer allerede", "error.page.duplicate": "En side med URL-endelsen \"{slug}\" eksisterer allerede",
"error.page.duplicate":
"En side med URL-endelsen \"{slug}\" eksisterer allerede",
"error.page.duplicate.permission": "Du har ikke mulighed for at duplikere \"{slug}\"", "error.page.duplicate.permission": "Du har ikke mulighed for at duplikere \"{slug}\"",
"error.page.notFound": "Siden kunne ikke findes", "error.page.notFound": "Siden kunne ikke findes",
"error.page.num.invalid": "error.page.num.invalid": "Indtast venligst et gyldigt sorteringsnummer. Nummeret kan ikke være negativt.",
"Indtast venligst et gyldigt sorteringsnummer. Nummeret kan ikke være negativt.",
"error.page.slug.invalid": "Indtast venligst en gyldig URL prefix", "error.page.slug.invalid": "Indtast venligst en gyldig URL prefix",
"error.page.sort.permission": "Siden \"{slug}\" kan ikke sorteres", "error.page.sort.permission": "Siden \"{slug}\" kan ikke sorteres",
"error.page.status.invalid": "Sæt venligst en gyldig status for siden", "error.page.status.invalid": "Sæt venligst en gyldig status for siden",
"error.page.undefined": "Siden kunne ikke findes", "error.page.undefined": "Siden kunne ikke findes",
"error.page.update.permission": "Du har ikke tilladelse til at opdatere \"{slug}\"", "error.page.update.permission": "Du har ikke tilladelse til at opdatere \"{slug}\"",
"error.section.files.max.plural": "error.section.files.max.plural": "Du kan ikk tilføje mere end {max} filer til \"{section}\" sektionen",
"Du kan ikk tilføje mere end {max} filer til \"{section}\" sektionen", "error.section.files.max.singular": "Du kan ikke tilføje mere end en fil til \"{section}\" sektionen",
"error.section.files.max.singular": "error.section.files.min.plural": "Sektionen \"{section}\" kræver mindst {min} filer",
"Du kan ikke tilføje mere end en fil til \"{section}\" sektionen", "error.section.files.min.singular": "Sektionen \"{section}\" kræver mindst en fil",
"error.section.files.min.plural":
"Sektionen \"{section}\" kræver mindst {min} filer",
"error.section.files.min.singular":
"Sektionen \"{section}\" kræver mindst en fil",
"error.section.pages.max.plural": "error.section.pages.max.plural": "Du kan ikke tilføje flere end {max} sider til \"{section}\" sektionen",
"Du kan ikke tilføje flere end {max} sider til \"{section}\" sektionen", "error.section.pages.max.singular": "Du kan ikke tilføje mere end een side til \"{section}\" sektionen",
"error.section.pages.max.singular": "error.section.pages.min.plural": "Sektionen \"{section}\" kræver mindst {min} sider",
"Du kan ikke tilføje mere end een side til \"{section}\" sektionen", "error.section.pages.min.singular": "Sektionen \"{section}\" kræver mindst en side",
"error.section.pages.min.plural":
"Sektionen \"{section}\" kræver mindst {min} sider",
"error.section.pages.min.singular":
"Sektionen \"{section}\" kræver mindst en side",
"error.section.notLoaded": "Sektionen \"{section}\" kunne ikke indlæses", "error.section.notLoaded": "Sektionen \"{section}\" kunne ikke indlæses",
"error.section.type.invalid": "Sektionstypen \"{type}\" er ikke gyldig", "error.section.type.invalid": "Sektionstypen \"{type}\" er ikke gyldig",
"error.site.changeTitle.empty": "Titlen kan ikke være tom", "error.site.changeTitle.empty": "Titlen kan ikke være tom",
"error.site.changeTitle.permission": "error.site.changeTitle.permission": "Du har ikke tilladelse til at ændre titlen på sitet",
"Du har ikke tilladelse til at ændre titlen på sitet",
"error.site.update.permission": "Du har ikke tilladelse til at opdatere sitet", "error.site.update.permission": "Du har ikke tilladelse til at opdatere sitet",
"error.template.default.notFound": "Standardskabelonen eksisterer ikke", "error.template.default.notFound": "Standardskabelonen eksisterer ikke",
"error.user.changeEmail.permission": "error.user.changeEmail.permission": "Du har ikke tilladelse til at ændre emailen for brugeren \"{name}\"",
"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": "error.user.changeName.permission": "Du har ikke tilladelse til at ændre navn på brugeren \"{name}\"",
"Du har ikke tilladelse til at ændre sproget for brugeren \"{name}\"", "error.user.changePassword.permission": "Du har ikke tilladelse til at ændre adgangskoden for brugeren \"{name}\"",
"error.user.changeName.permission": "error.user.changeRole.lastAdmin": "Rollen for den sidste admin kan ikke ændres",
"Du har ikke tilladelse til at ændre navn på brugeren \"{name}\"", "error.user.changeRole.permission": "Du har ikke tilladelse til at ændre rollen for brugeren \"{name}\"",
"error.user.changePassword.permission": "error.user.changeRole.toAdmin": "Du har ikke tilladelse til at tildele nogen admin rollen",
"Du har ikke tilladelse til at ændre adgangskoden for brugeren \"{name}\"",
"error.user.changeRole.lastAdmin":
"Rollen for den sidste admin kan ikke ændres",
"error.user.changeRole.permission":
"Du har ikke tilladelse til at ændre rollen for brugeren \"{name}\"",
"error.user.changeRole.toAdmin":
"Du har ikke tilladelse til at tildele nogen admin rollen",
"error.user.create.permission": "Du har ikke tilladelse til at oprette denne bruger", "error.user.create.permission": "Du har ikke tilladelse til at oprette denne bruger",
"error.user.delete": "Brugeren kunne ikke slettes", "error.user.delete": "Brugeren kunne ikke slettes",
"error.user.delete.lastAdmin": "Du kan ikke slette den sidste admin", "error.user.delete.lastAdmin": "Du kan ikke slette den sidste admin",
"error.user.delete.lastUser": "Den sidste bruger kan ikke slettes", "error.user.delete.lastUser": "Den sidste bruger kan ikke slettes",
"error.user.delete.permission": "error.user.delete.permission": "Du har ikke tilladelse til at slette denne bruger",
"Du har ikke tilladelse til at slette denne bruger", "error.user.duplicate": "En bruger med email adresse \"{email}\" eksisterer allerede",
"error.user.duplicate":
"En bruger med email adresse \"{email}\" eksisterer allerede",
"error.user.email.invalid": "Indtast venligst en gyldig email adresse", "error.user.email.invalid": "Indtast venligst en gyldig email adresse",
"error.user.language.invalid": "Indtast venligst et gyldigt sprog", "error.user.language.invalid": "Indtast venligst et gyldigt sprog",
"error.user.notFound": "Brugeren kunne ikke findes", "error.user.notFound": "Brugeren kunne ikke findes",
"error.user.password.invalid": "error.user.password.invalid": "Indtast venligst en gyldig adgangskode. Adgangskoder skal minimum være 8 tegn lange.",
"Indtast venligst en gyldig adgangskode. Adgangskoder skal minimum være 8 tegn lange.",
"error.user.password.notSame": "Bekr\u00e6ft venligst adgangskoden", "error.user.password.notSame": "Bekr\u00e6ft venligst adgangskoden",
"error.user.password.undefined": "Brugeren har ikke en adgangskode", "error.user.password.undefined": "Brugeren har ikke en adgangskode",
"error.user.role.invalid": "Indtast venligst en gyldig rolle", "error.user.role.invalid": "Indtast venligst en gyldig rolle",
"error.user.update.permission": "error.user.update.permission": "Du har ikke tilladelse til at opdatere brugeren \"{name}\"",
"Du har ikke tilladelse til at opdatere brugeren \"{name}\"",
"error.validation.accepted": "Bekræft venligst", "error.validation.accepted": "Bekræft venligst",
"error.validation.alpha": "Indtast venligst kun bogstaver imellem a-z", "error.validation.alpha": "Indtast venligst kun bogstaver imellem a-z",
"error.validation.alphanum": "error.validation.alphanum": "Indtast venligst kun bogstaver og tal imellem a-z eller 0-9",
"Indtast venligst kun bogstaver og tal imellem a-z eller 0-9", "error.validation.between": "Indtast venligst en værdi imellem \"{min}\" og \"{max}\"",
"error.validation.between":
"Indtast venligst en værdi imellem \"{min}\" og \"{max}\"",
"error.validation.boolean": "Venligst bekræft eller afvis", "error.validation.boolean": "Venligst bekræft eller afvis",
"error.validation.contains": "error.validation.contains": "Indtast venligst en værdi der indeholder \"{needle}\"",
"Indtast venligst en værdi der indeholder \"{needle}\"",
"error.validation.date": "Indtast venligst en gyldig dato", "error.validation.date": "Indtast venligst en gyldig dato",
"error.validation.date.after": "Indtast venligst en dato efter {date}", "error.validation.date.after": "Indtast venligst en dato efter {date}",
"error.validation.date.before": "Indtast venligst en dato før {date}", "error.validation.date.before": "Indtast venligst en dato før {date}",
@@ -210,18 +169,14 @@
"error.validation.less": "Indtast venligst en værdi mindre end {max}", "error.validation.less": "Indtast venligst en værdi mindre end {max}",
"error.validation.match": "Værdien matcher ikke det forventede mønster", "error.validation.match": "Værdien matcher ikke det forventede mønster",
"error.validation.max": "Indtast venligst en værdi lig med eller lavere end {max}", "error.validation.max": "Indtast venligst en værdi lig med eller lavere end {max}",
"error.validation.maxlength": "error.validation.maxlength": "Indtast venligst en kortere værdi. (maks. {max} karakterer)",
"Indtast venligst en kortere værdi. (maks. {max} karakterer)",
"error.validation.maxwords": "Indtast ikke flere end {max} ord", "error.validation.maxwords": "Indtast ikke flere end {max} ord",
"error.validation.min": "Indtast en værdi lig med eller højere end {min}", "error.validation.min": "Indtast en værdi lig med eller højere end {min}",
"error.validation.minlength": "error.validation.minlength": "Indtast venligst en længere værdi. (min. {min} karakterer)",
"Indtast venligst en længere værdi. (min. {min} karakterer)",
"error.validation.minwords": "Indtast venligst mindst {min} ord", "error.validation.minwords": "Indtast venligst mindst {min} ord",
"error.validation.more": "Indtast venligst en værdi større end {min}", "error.validation.more": "Indtast venligst en værdi større end {min}",
"error.validation.notcontains": "error.validation.notcontains": "Indtast venligst en værdi der ikke indeholder \"{needle}\"",
"Indtast venligst en værdi der ikke indeholder \"{needle}\"", "error.validation.notin": "Indtast venligst ikke nogen af følgende: ({notIn})",
"error.validation.notin":
"Indtast venligst ikke nogen af følgende: ({notIn})",
"error.validation.option": "Vælg venligst en gyldig mulighed", "error.validation.option": "Vælg venligst en gyldig mulighed",
"error.validation.num": "Indtast venligst et gyldigt nummer", "error.validation.num": "Indtast venligst et gyldigt nummer",
"error.validation.required": "Indtast venligst noget", "error.validation.required": "Indtast venligst noget",
@@ -238,8 +193,7 @@
"field.structure.empty": "Ingen indtastninger endnu.", "field.structure.empty": "Ingen indtastninger endnu.",
"field.users.empty": "Ingen brugere er valgt", "field.users.empty": "Ingen brugere er valgt",
"file.delete.confirm": "file.delete.confirm": "\u00d8nsker du virkelig at slette denne fil?",
"\u00d8nsker du virkelig at slette denne fil?",
"files": "Filer", "files": "Filer",
"files.empty": "Ingen filer endnu", "files.empty": "Ingen filer endnu",
@@ -251,29 +205,22 @@
"installation": "Installation", "installation": "Installation",
"installation.completed": "Panelet er blevet installeret", "installation.completed": "Panelet er blevet installeret",
"installation.disabled": "Panel installationen er deaktiveret på offentlige servere som standard. Kør venligst installationen på en lokal maskine eller aktiver det med panel.install <code>panel.install</code> muligheden.", "installation.disabled": "Panel installationen er deaktiveret på offentlige servere som standard. Kør venligst installationen på en lokal maskine eller aktiver det med panel.install <code>panel.install</code> muligheden.",
"installation.issues.accounts": "installation.issues.accounts": "\/site\/accounts er ikke skrivbar",
"\/site\/accounts er ikke skrivbar", "installation.issues.content": "Content mappen samt alle underliggende filer og mapper skal v\u00e6re skrivbare.",
"installation.issues.content":
"Content mappen samt alle underliggende filer og mapper skal v\u00e6re skrivbare.",
"installation.issues.curl": "<code>CURL</code> extension er påkrævet", "installation.issues.curl": "<code>CURL</code> extension er påkrævet",
"installation.issues.headline": "Panelet kan ikke installeres", "installation.issues.headline": "Panelet kan ikke installeres",
"installation.issues.mbstring": "installation.issues.mbstring": "<code>MB String</code> extension er påkrævet",
"<code>MB String</code> extension er påkrævet", "installation.issues.media": "<code>/media</code> mappen eksisterer ikke eller er ikke skrivbar",
"installation.issues.media":
"<code>/media</code> mappen eksisterer ikke eller er ikke skrivbar",
"installation.issues.php": "Sikre dig at der benyttes <code>PHP 7+</code>", "installation.issues.php": "Sikre dig at der benyttes <code>PHP 7+</code>",
"installation.issues.server": "installation.issues.server": "Kirby kræver <code>Apache</code>, <code>Nginx</code> eller <code>Caddy</code>",
"Kirby kræver <code>Apache</code>, <code>Nginx</code> eller <code>Caddy</code>",
"installation.issues.sessions": "/site/sessions mappen eksisterer ikke eller er ikke skrivbar", "installation.issues.sessions": "/site/sessions mappen eksisterer ikke eller er ikke skrivbar",
"language": "Sprog", "language": "Sprog",
"language.code": "Kode", "language.code": "Kode",
"language.convert": "Gør standard", "language.convert": "Gør standard",
"language.convert.confirm": "language.convert.confirm": "<p>Ønsker du virkelig at konvertere <strong>{name}</strong> til standardsproget? Dette kan ikke fortrydes.</p><p>Hvis <strong>{name}</strong> har uoversat indhold, vil der ikke længere være et gyldigt tilbagefald og dele af dit website vil måske fremstå tomt.</p>",
"<p>Ønsker du virkelig at konvertere <strong>{name}</strong> til standardsproget? Dette kan ikke fortrydes.</p><p>Hvis <strong>{name}</strong> har uoversat indhold, vil der ikke længere være et gyldigt tilbagefald og dele af dit website vil måske fremstå tomt.</p>",
"language.create": "Tilføj nyt sprog", "language.create": "Tilføj nyt sprog",
"language.delete.confirm": "language.delete.confirm": "Ønsker du virkelig at slette sproget <strong>{name}</strong> inklusiv alle oversættelser? Kan ikke fortrydes!",
"Ønsker du virkelig at slette sproget <strong>{name}</strong> inklusiv alle oversættelser? Kan ikke fortrydes!",
"language.deleted": "Sproget er blevet slettet", "language.deleted": "Sproget er blevet slettet",
"language.direction": "Læseretning", "language.direction": "Læseretning",
"language.direction.ltr": "Venstre mod højre", "language.direction.ltr": "Venstre mod højre",
@@ -292,8 +239,7 @@
"license": "Kirby licens", "license": "Kirby licens",
"license.buy": "Køb en licens", "license.buy": "Køb en licens",
"license.register": "Registrer", "license.register": "Registrer",
"license.register.help": "license.register.help": "Du modtog din licenskode efter købet via email. Venligst kopier og indsæt den for at registrere.",
"Du modtog din licenskode efter købet via email. Venligst kopier og indsæt den for at registrere.",
"license.register.label": "Indtast venligst din licenskode", "license.register.label": "Indtast venligst din licenskode",
"license.register.success": "Tak for din støtte af Kirby", "license.register.success": "Tak for din støtte af Kirby",
"license.unregistered": "Dette er en uregistreret demo af Kirby", "license.unregistered": "Dette er en uregistreret demo af Kirby",
@@ -354,10 +300,8 @@
"page.changeStatus.position": "Vælg venligst position", "page.changeStatus.position": "Vælg venligst position",
"page.changeStatus.select": "Vælg en ny status", "page.changeStatus.select": "Vælg en ny status",
"page.changeTemplate": "Skift skabelon", "page.changeTemplate": "Skift skabelon",
"page.delete.confirm": "page.delete.confirm": "\u00d8nsker du virkelig at slette denne side?",
"\u00d8nsker du virkelig at slette denne side?", "page.delete.confirm.subpages": "<strong>Denne side har undersider</strong>. <br>Alle undersider vil også blive slettet.",
"page.delete.confirm.subpages":
"<strong>Denne side har undersider</strong>. <br>Alle undersider vil også blive slettet.",
"page.delete.confirm.title": "Indtast sidens titel for at bekræfte", "page.delete.confirm.title": "Indtast sidens titel for at bekræfte",
"page.draft.create": "Opret kladde", "page.draft.create": "Opret kladde",
"page.duplicate.appendix": "Kopier", "page.duplicate.appendix": "Kopier",
@@ -365,8 +309,7 @@
"page.duplicate.pages": "Kopier sider", "page.duplicate.pages": "Kopier sider",
"page.status": "Status", "page.status": "Status",
"page.status.draft": "Kladde", "page.status.draft": "Kladde",
"page.status.draft.description": "page.status.draft.description": "The page is in draft mode and only visible for logged in editors or via secret link",
"Siden er i kladdetilstand og kun synlig for redaktører der er logget ind",
"page.status.listed": "Offentlig", "page.status.listed": "Offentlig",
"page.status.listed.description": "Siden er offentlig for enhver", "page.status.listed.description": "Siden er offentlig for enhver",
"page.status.unlisted": "Ulistede", "page.status.unlisted": "Ulistede",
@@ -388,6 +331,7 @@
"replace": "Erstat", "replace": "Erstat",
"retry": "Pr\u00f8v igen", "retry": "Pr\u00f8v igen",
"revert": "Kass\u00e9r", "revert": "Kass\u00e9r",
"revert.confirm": "Do you really want to <strong>delete all unsaved changes</strong>?",
"role": "Rolle", "role": "Rolle",
"role.admin.description": "Admin har alle rettigheder", "role.admin.description": "Admin har alle rettigheder",
@@ -451,8 +395,7 @@
"url.placeholder": "https://example.com", "url.placeholder": "https://example.com",
"user": "Bruger", "user": "Bruger",
"user.blueprint": "user.blueprint": "Du kan definere yderligere sektioner og formular felter for denne brugerrolle i <strong>/site/blueprints/users/{role}.yml</strong>",
"Du kan definere yderligere sektioner og formular felter for denne brugerrolle i <strong>/site/blueprints/users/{role}.yml</strong>",
"user.changeEmail": "Skift email", "user.changeEmail": "Skift email",
"user.changeLanguage": "Skift sprog", "user.changeLanguage": "Skift sprog",
"user.changeName": "Omdøb denne bruger", "user.changeName": "Omdøb denne bruger",
@@ -463,8 +406,7 @@
"user.changeRole.select": "Vælg en ny rolle", "user.changeRole.select": "Vælg en ny rolle",
"user.create": "Tilføj en ny bruger", "user.create": "Tilføj en ny bruger",
"user.delete": "Slet denne bruger", "user.delete": "Slet denne bruger",
"user.delete.confirm": "user.delete.confirm": "\u00d8nsker du virkelig at slette denne bruger?",
"\u00d8nsker du virkelig at slette denne bruger?",
"users": "Brugere", "users": "Brugere",

View File

@@ -31,7 +31,7 @@
"dialog.files.empty": "Keine verfügbaren Dateien", "dialog.files.empty": "Keine verfügbaren Dateien",
"dialog.pages.empty": "Keine verfügbaren Seiten", "dialog.pages.empty": "Keine verfügbaren Seiten",
"dialog.users.empty": "Keine verfügbaren Benutzer", "dialog.users.empty": "Keine verfügbaren Benutzer*innen",
"email": "E-Mail", "email": "E-Mail",
"email.placeholder": "mail@beispiel.de", "email.placeholder": "mail@beispiel.de",
@@ -42,10 +42,8 @@
"error.avatar.create.fail": "Das Profilbild konnte nicht hochgeladen werden", "error.avatar.create.fail": "Das Profilbild konnte nicht hochgeladen werden",
"error.avatar.delete.fail": "Das Profilbild konnte nicht gel\u00f6scht werden", "error.avatar.delete.fail": "Das Profilbild konnte nicht gel\u00f6scht werden",
"error.avatar.dimensions.invalid": "error.avatar.dimensions.invalid": "Bitte lade ein Profilbild hoch, das nicht breiter oder höher als 3000 Pixel ist.",
"Bitte lade ein Profilbild hoch, das nicht breiter oder höher als 3000 Pixel ist.", "error.avatar.mime.forbidden": "Das Profilbild muss vom Format JPEG oder PNG sein",
"error.avatar.mime.forbidden":
"Das Profilbild muss vom Format JPEG oder PNG sein",
"error.blueprint.notFound": "Das Blueprint \"{name}\" konnte nicht geladen werden.", "error.blueprint.notFound": "Das Blueprint \"{name}\" konnte nicht geladen werden.",
@@ -54,22 +52,17 @@
"error.field.converter.invalid": "Ungültiger Konverter: \"{converter}\"", "error.field.converter.invalid": "Ungültiger Konverter: \"{converter}\"",
"error.file.changeName.empty": "Bitte gib einen Namen an", "error.file.changeName.empty": "Bitte gib einen Namen an",
"error.file.changeName.permission": "error.file.changeName.permission": "Du darfst den Dateinamen von \"{filename}\" nicht ändern",
"Du darfst den Dateinamen von \"{filename}\" nicht ändern",
"error.file.duplicate": "Eine Datei mit dem Dateinamen \"{filename}\" besteht bereits", "error.file.duplicate": "Eine Datei mit dem Dateinamen \"{filename}\" besteht bereits",
"error.file.extension.forbidden": "error.file.extension.forbidden": "Verbotene Dateiendung \"{extension}\"",
"Verbotene Dateiendung \"{extension}\"", "error.file.extension.missing": "Du kannst keine Dateien ohne Dateiendung hochladen",
"error.file.extension.missing":
"Du kannst keine Dateien ohne Dateiendung hochladen",
"error.file.maxheight": "Die Bildhöhe darf {height} Pixel nicht überschreiten", "error.file.maxheight": "Die Bildhöhe darf {height} Pixel nicht überschreiten",
"error.file.maxsize": "Die Datei ist zu groß", "error.file.maxsize": "Die Datei ist zu groß",
"error.file.maxwidth": "Die Bildbreite darf {height} Pixel nicht überschreiten", "error.file.maxwidth": "Die Bildbreite darf {height} Pixel nicht überschreiten",
"error.file.mime.differs": "error.file.mime.differs": "Die Datei muss den Medientyp \"{mime}\" haben.",
"Die Datei muss den Medientyp \"{mime}\" haben.",
"error.file.mime.forbidden": "Der Medientyp \"{mime}\" ist nicht erlaubt", "error.file.mime.forbidden": "Der Medientyp \"{mime}\" ist nicht erlaubt",
"error.file.mime.invalid": "Ungültiger Dateityp: {mime}", "error.file.mime.invalid": "Ungültiger Dateityp: {mime}",
"error.file.mime.missing": "error.file.mime.missing": "Der Medientyp für \"{filename}\" konnte nicht erkannt werden",
"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 {height} Pixel betragen",
@@ -90,111 +83,77 @@
"error.license.email": "Bitte gib eine gültige E-Mailadresse an", "error.license.email": "Bitte gib eine gültige E-Mailadresse an",
"error.license.verification": "Die Lizenz konnte nicht verifiziert werden", "error.license.verification": "Die Lizenz konnte nicht verifiziert werden",
"error.page.changeSlug.permission": "error.page.changeSlug.permission": "Du darfst die URL der Seite \"{slug}\" nicht ändern",
"Du darfst die URL der Seite \"{slug}\" nicht ändern", "error.page.changeStatus.incomplete": "Die Seite ist nicht vollständig und kann daher nicht veröffentlicht werden",
"error.page.changeStatus.incomplete": "error.page.changeStatus.permission": "Der Status der Seite kann nicht geändert werden",
"Die Seite ist nicht vollständig und kann daher nicht veröffentlicht werden", "error.page.changeStatus.toDraft.invalid": "Die Seite \"{slug}\" kann nicht in einen Entwurf umgewandelt werden",
"error.page.changeStatus.permission": "error.page.changeTemplate.invalid": "Die Vorlage für die Seite \"{slug}\" kann nicht geändert werden",
"Der Status der Seite kann nicht geändert werden", "error.page.changeTemplate.permission": "Du kannst die Vorlage für die Seite \"{slug}\" nicht ändern",
"error.page.changeStatus.toDraft.invalid":
"Die Seite \"{slug}\" kann nicht in einen Entwurf umgewandelt werden",
"error.page.changeTemplate.invalid":
"Die Vorlage für die Seite \"{slug}\" kann nicht geändert werden",
"error.page.changeTemplate.permission":
"Du kannst die Vorlage für die Seite \"{slug}\" nicht ändern",
"error.page.changeTitle.empty": "Bitte gib einen Titel an", "error.page.changeTitle.empty": "Bitte gib einen Titel an",
"error.page.changeTitle.permission": "error.page.changeTitle.permission": "Du kannst den Titel für die Seite \"{slug}\" nicht ändern",
"Du kannst den Titel für die Seite \"{slug}\" nicht ändern",
"error.page.create.permission": "Du kannst die Seite \"{slug}\" nicht anlegen", "error.page.create.permission": "Du kannst die Seite \"{slug}\" nicht anlegen",
"error.page.delete": "Die Seite \"{slug}\" kann nicht gelöscht werden", "error.page.delete": "Die Seite \"{slug}\" kann nicht gelöscht werden",
"error.page.delete.confirm": "Bitte gib zur Bestätigung den Seitentitel ein", "error.page.delete.confirm": "Bitte gib zur Bestätigung den Seitentitel ein",
"error.page.delete.hasChildren": "error.page.delete.hasChildren": "Die Seite hat Unterseiten und kann nicht gelöscht werden",
"Die Seite hat Unterseiten und kann nicht gelöscht werden",
"error.page.delete.permission": "Du kannst die Seite \"{slug}\" nicht löschen", "error.page.delete.permission": "Du kannst die Seite \"{slug}\" nicht löschen",
"error.page.draft.duplicate": "error.page.draft.duplicate": "Ein Entwurf mit dem URL-Kürzel \"{slug}\" besteht bereits",
"Ein Entwurf mit dem URL-Kürzel \"{slug}\" besteht bereits", "error.page.duplicate": "Eine Seite mit dem URL-Kürzel \"{slug}\" besteht bereits",
"error.page.duplicate":
"Eine Seite mit dem URL-Kürzel \"{slug}\" besteht bereits",
"error.page.duplicate.permission": "Du kannst die Seite \"{slug}\" nicht duplizieren", "error.page.duplicate.permission": "Du kannst die Seite \"{slug}\" nicht duplizieren",
"error.page.notFound": "Die Seite \"{slug}\" konnte nicht gefunden werden", "error.page.notFound": "Die Seite \"{slug}\" konnte nicht gefunden werden",
"error.page.num.invalid": "error.page.num.invalid": "Bitte gib eine gültige Sortierungszahl an. Negative Zahlen sind nicht erlaubt.",
"Bitte gib eine gültige Sortierungszahl an. Negative Zahlen sind nicht erlaubt.",
"error.page.slug.invalid": "Bitte gib ein gültiges URL-Kürzel an", "error.page.slug.invalid": "Bitte gib ein gültiges URL-Kürzel an",
"error.page.sort.permission": "Die Seite \"{slug}\" kann nicht umsortiert werden", "error.page.sort.permission": "Die Seite \"{slug}\" kann nicht umsortiert werden",
"error.page.status.invalid": "Bitte gib einen gültigen Seitenstatus an", "error.page.status.invalid": "Bitte gib einen gültigen Seitenstatus an",
"error.page.undefined": "Die Seite konnte nicht gefunden werden", "error.page.undefined": "Die Seite konnte nicht gefunden werden",
"error.page.update.permission": "Du kannst die Seite \"{slug}\" nicht editieren", "error.page.update.permission": "Du kannst die Seite \"{slug}\" nicht editieren",
"error.section.files.max.plural": "error.section.files.max.plural": "Bitte füge nicht mehr als {max} Dateien zum Bereich \"{section}\" hinzu",
"Bitte füge nicht mehr als {max} Dateien zum Bereich \"{section}\" hinzu", "error.section.files.max.singular": "Bitte füge nicht mehr als eine Datei zum Bereich \"{section}\" hinzu",
"error.section.files.max.singular": "error.section.files.min.plural": "Der Bereich \"{section}\" benötigt mindestens {min} Dateien",
"Bitte füge nicht mehr als eine Datei zum Bereich \"{section}\" hinzu", "error.section.files.min.singular": "Der Bereich \"{section}\" benötigt mindestens eine Datei",
"error.section.files.min.plural":
"Der Bereich \"{section}\" benötigt mindestens {min} Dateien",
"error.section.files.min.singular":
"Der Bereich \"{section}\" benötigt mindestens eine Datei",
"error.section.pages.max.plural": "error.section.pages.max.plural": "Bitte füge nicht mehr als {max} Seiten zum Bereich \"{section}\" hinzu",
"Bitte füge nicht mehr als {max} Seiten zum Bereich \"{section}\" hinzu", "error.section.pages.max.singular": "Bitte füge nicht mehr als eine Seite zum Bereich \"{section}\" hinzu",
"error.section.pages.max.singular": "error.section.pages.min.plural": "Der Bereich \"{section}\" benötigt mindestens {min} Seiten",
"Bitte füge nicht mehr als eine Seite zum Bereich \"{section}\" hinzu", "error.section.pages.min.singular": "Der Bereich \"{section}\" benötigt mindestens eine Seite",
"error.section.pages.min.plural":
"Der Bereich \"{section}\" benötigt mindestens {min} Seiten",
"error.section.pages.min.singular":
"Der Bereich \"{section}\" benötigt mindestens eine Seite",
"error.section.notLoaded": "Der Bereich \"{name}\" konnte nicht geladen werden", "error.section.notLoaded": "Der Bereich \"{name}\" konnte nicht geladen werden",
"error.section.type.invalid": "Der Bereichstyp \"{type}\" ist nicht gültig", "error.section.type.invalid": "Der Bereichstyp \"{type}\" ist nicht gültig",
"error.site.changeTitle.empty": "Bitte gib einen Titel an", "error.site.changeTitle.empty": "Bitte gib einen Titel an",
"error.site.changeTitle.permission": "error.site.changeTitle.permission": "Du kannst den Titel der Seite nicht ändern",
"Du kannst den Titel der Seite nicht ändern",
"error.site.update.permission": "Du darfst die Seite nicht editieren", "error.site.update.permission": "Du darfst die Seite nicht editieren",
"error.template.default.notFound": "Die \"Default\"-Vorlage existiert nicht", "error.template.default.notFound": "Die \"Default\"-Vorlage existiert nicht",
"error.user.changeEmail.permission": "error.user.changeEmail.permission": "Du kannst die E-Mailadresse für den Benutzer \"{name}\" nicht ändern",
"Du kannst die E-Mailadresse für den Benutzer \"{name}\" nicht ändern", "error.user.changeLanguage.permission": "Du kannst die Sprache für den Benutzer \"{name}\" nicht ändern",
"error.user.changeLanguage.permission": "error.user.changeName.permission": "Du kannst den Namen für den Benutzer \"{name}\" nicht ändern",
"Du kannst die Sprache für den Benutzer \"{name}\" nicht ändern", "error.user.changePassword.permission": "Du kannst das Passwort für den Benutzer \"{name}\" nicht ändern",
"error.user.changeName.permission": "error.user.changeRole.lastAdmin": "Die Rolle des letzten Administrators kann nicht geändert werden",
"Du kannst den Namen für den Benutzer \"{name}\" nicht ändern", "error.user.changeRole.permission": "Du kannst die Rolle für den Benutzer \"{name}\" nicht ändern",
"error.user.changePassword.permission": "error.user.changeRole.toAdmin": "Du darfst die Admin Rolle nicht an andere Benutzer*innen vergeben",
"Du kannst das Passwort für den Benutzer \"{name}\" nicht ändern",
"error.user.changeRole.lastAdmin":
"Die Rolle des letzten Administrators kann nicht geändert werden",
"error.user.changeRole.permission":
"Du kannst die Rolle für den Benutzer \"{name}\" nicht ändern",
"error.user.changeRole.toAdmin":
"Du darfst die Admin Rolle nicht an andere Benutzer vergeben",
"error.user.create.permission": "Du kannst diesen Benutzer nicht anlegen", "error.user.create.permission": "Du kannst diesen Benutzer nicht anlegen",
"error.user.delete": "Der Benutzer \"{name}\" konnte nicht gelöscht werden", "error.user.delete": "Der Benutzer \"{name}\" konnte nicht gelöscht werden",
"error.user.delete.lastAdmin": "Du kannst den letzten Admin nicht l\u00f6schen", "error.user.delete.lastAdmin": "Du kannst den letzten Admin nicht l\u00f6schen",
"error.user.delete.lastUser": "Der letzte Benutzer kann nicht gelöscht werden", "error.user.delete.lastUser": "Der letzte Benutzer kann nicht gelöscht werden",
"error.user.delete.permission": "error.user.delete.permission": "Du darfst den Benutzer \"{name}\" nicht löschen",
"Du darfst den Benutzer \"{name}\" nicht löschen", "error.user.duplicate": "Ein Benutzer mit der E-Mailadresse \"{email}\" besteht bereits",
"error.user.duplicate":
"Ein Benutzer mit der E-Mailadresse \"{email}\" besteht bereits",
"error.user.email.invalid": "Bitte gib eine gültige E-Mailadresse an", "error.user.email.invalid": "Bitte gib eine gültige E-Mailadresse an",
"error.user.language.invalid": "Bitte gib eine gültige Sprache an", "error.user.language.invalid": "Bitte gib eine gültige Sprache an",
"error.user.notFound": "Der Benutzer \"{name}\" wurde nicht gefunden", "error.user.notFound": "Der Benutzer \"{name}\" wurde nicht gefunden",
"error.user.password.invalid": "error.user.password.invalid": "Bitte gib ein gültiges Passwort ein. Passwörter müssen mindestens 8 Zeichen lang sein.",
"Bitte gib ein gültiges Passwort ein. Passwörter müssen mindestens 8 Zeichen lang sein.",
"error.user.password.notSame": "Die Passwörter stimmen nicht überein", "error.user.password.notSame": "Die Passwörter stimmen nicht überein",
"error.user.password.undefined": "Der Benutzer hat kein Passwort", "error.user.password.undefined": "Der Benutzer hat kein Passwort",
"error.user.role.invalid": "Bitte gib eine gültige Rolle an", "error.user.role.invalid": "Bitte gib eine gültige Rolle an",
"error.user.update.permission": "error.user.update.permission": "Du darfst den den Benutzer \"{name}\" nicht editieren",
"Du darfst den den Benutzer \"{name}\" nicht editieren",
"error.validation.accepted": "Bitte bestätige", "error.validation.accepted": "Bitte bestätige",
"error.validation.alpha": "Bitte gib nur Zeichen zwischen A und Z ein", "error.validation.alpha": "Bitte gib nur Zeichen zwischen A und Z ein",
"error.validation.alphanum": "error.validation.alphanum": "Bitte gib nur Zeichen zwischen A und Z und Zahlen zwischen 0 und 9 ein",
"Bitte gib nur Zeichen zwischen A und Z und Zahlen zwischen 0 und 9 ein", "error.validation.between": "Bitte gib einen Wert zwischen \"{min}\" und \"{max}\" ein",
"error.validation.between":
"Bitte gib einen Wert zwischen \"{min}\" und \"{max}\" ein",
"error.validation.boolean": "Bitte bestätige oder lehne ab", "error.validation.boolean": "Bitte bestätige oder lehne ab",
"error.validation.contains": "error.validation.contains": "Bitte gib einen Wert ein, der \"{needle}\" enthält",
"Bitte gib einen Wert ein, der \"{needle}\" enthält",
"error.validation.date": "Bitte gib ein gültiges Datum ein", "error.validation.date": "Bitte gib ein gültiges Datum ein",
"error.validation.date.after": "Bitte gib ein Datum nach dem {date} ein", "error.validation.date.after": "Bitte gib ein Datum nach dem {date} ein",
"error.validation.date.before": "Bitte gib ein Datum vor dem {date} ein", "error.validation.date.before": "Bitte gib ein Datum vor dem {date} ein",
@@ -210,18 +169,14 @@
"error.validation.less": "Bitte gib einen Wert kleiner als {max} ein", "error.validation.less": "Bitte gib einen Wert kleiner als {max} ein",
"error.validation.match": "Der Wert entspricht nicht dem erwarteten Muster", "error.validation.match": "Der Wert entspricht nicht dem erwarteten Muster",
"error.validation.max": "Bitte gib einen Wert ein, der nicht größer als {max} ist", "error.validation.max": "Bitte gib einen Wert ein, der nicht größer als {max} ist",
"error.validation.maxlength": "error.validation.maxlength": "Bitte gib einen kürzeren Text ein (max. {max} Zeichen)",
"Bitte gib einen kürzeren Text ein (max. {max} Zeichen)",
"error.validation.maxwords": "Bitte nutze nicht mehr als {max} Wort(e)", "error.validation.maxwords": "Bitte nutze nicht mehr als {max} Wort(e)",
"error.validation.min": "Bitte gib einen Wert ein, der nicht kleiner als {min} ist", "error.validation.min": "Bitte gib einen Wert ein, der nicht kleiner als {min} ist",
"error.validation.minlength": "error.validation.minlength": "Bitte gib einen längeren Text ein. (min. {min} Zeichen)",
"Bitte gib einen längeren Text ein. (min. {min} Zeichen)",
"error.validation.minwords": "Bitte nutze mindestens {min} Wort(e)", "error.validation.minwords": "Bitte nutze mindestens {min} Wort(e)",
"error.validation.more": "Bitte gib einen größeren Wert als {min} ein", "error.validation.more": "Bitte gib einen größeren Wert als {min} ein",
"error.validation.notcontains": "error.validation.notcontains": "Bitte gib einen Wert ein, der nicht \"{needle}\" enthält",
"Bitte gib einen Wert ein, der nicht \"{needle}\" enthält", "error.validation.notin": "Bitte gib keinen der folgenden Werte ein: ({notIn})",
"error.validation.notin":
"Bitte gib keinen der folgenden Werte ein: ({notIn})",
"error.validation.option": "Bitte wähle eine gültige Option aus", "error.validation.option": "Bitte wähle eine gültige Option aus",
"error.validation.num": "Bitte gib eine gültige Zahl an", "error.validation.num": "Bitte gib eine gültige Zahl an",
"error.validation.required": "Bitte gib etwas ein", "error.validation.required": "Bitte gib etwas ein",
@@ -238,8 +193,7 @@
"field.structure.empty": "Es bestehen keine Eintr\u00e4ge.", "field.structure.empty": "Es bestehen keine Eintr\u00e4ge.",
"field.users.empty": "Keine Benutzer ausgewählt", "field.users.empty": "Keine Benutzer ausgewählt",
"file.delete.confirm": "file.delete.confirm": "Willst du die Datei <strong>{filename}</strong> <br>wirklich löschen?",
"Willst du die Datei <strong>{filename}</strong> <br>wirklich löschen?",
"files": "Dateien", "files": "Dateien",
"files.empty": "Keine Dateien", "files.empty": "Keine Dateien",
@@ -251,29 +205,22 @@
"installation": "Installation", "installation": "Installation",
"installation.completed": "Das Panel wurde installiert", "installation.completed": "Das Panel wurde installiert",
"installation.disabled": "Die Panel-Installation ist auf öffentlichen Servern automatisch deaktiviert. Bitte installiere das Panel auf einem lokalen Server oder aktiviere die Installation gezielt mit der <code>panel.install</code> Option. ", "installation.disabled": "Die Panel-Installation ist auf öffentlichen Servern automatisch deaktiviert. Bitte installiere das Panel auf einem lokalen Server oder aktiviere die Installation gezielt mit der <code>panel.install</code> Option. ",
"installation.issues.accounts": "installation.issues.accounts": "<code>/site/accounts</code> ist nicht beschreibbar",
"<code>/site/accounts</code> ist nicht beschreibbar", "installation.issues.content": "<code>/content</code> existiert nicht oder ist nicht beschreibbar",
"installation.issues.content":
"<code>/content</code> existiert nicht oder ist nicht beschreibbar",
"installation.issues.curl": "Die <code>CURL</code> Erweiterung wird benötigt", "installation.issues.curl": "Die <code>CURL</code> Erweiterung wird benötigt",
"installation.issues.headline": "Das Panel kann nicht installiert werden", "installation.issues.headline": "Das Panel kann nicht installiert werden",
"installation.issues.mbstring": "installation.issues.mbstring": "Die <code>MB String</code> Erweiterung wird benötigt",
"Die <code>MB String</code> Erweiterung wird benötigt", "installation.issues.media": "Der <code>/media</code> Ordner ist nicht beschreibbar",
"installation.issues.media":
"Der <code>/media</code> Ordner ist nicht beschreibbar",
"installation.issues.php": "Bitte verwende <code>PHP 7+</code>", "installation.issues.php": "Bitte verwende <code>PHP 7+</code>",
"installation.issues.server": "installation.issues.server": "Kirby benötigt <code>Apache</code>, <code>Nginx</code> or <code>Caddy</code>",
"Kirby benötigt <code>Apache</code>, <code>Nginx</code> or <code>Caddy</code>",
"installation.issues.sessions": "<code>/site/sessions</code> ist nicht beschreibbar", "installation.issues.sessions": "<code>/site/sessions</code> ist nicht beschreibbar",
"language": "Sprache", "language": "Sprache",
"language.code": "Code", "language.code": "Code",
"language.convert": "Als Standard auswählen", "language.convert": "Als Standard auswählen",
"language.convert.confirm": "language.convert.confirm": "<p>Willst du <strong>{name}</strong> wirklich in die Standardsprache umwandeln? Dieser Schritt kann nicht rückgängig gemacht werden.</p><p>Wenn <strong>{name}</strong> unübersetzte Felder hat, gibt es keine gültigen Standardwerte für diese Felder und Inhalte könnten verloren gehen.</p>",
"<p>Willst du <strong>{name}</strong> wirklich in die Standardsprache umwandeln? Dieser Schritt kann nicht rückgängig gemacht werden.</p><p>Wenn <strong>{name}</strong> unübersetzte Felder hat, gibt es keine gültigen Standardwerte für diese Felder und Inhalte könnten verloren gehen.</p>",
"language.create": "Neue Sprache anlegen", "language.create": "Neue Sprache anlegen",
"language.delete.confirm": "language.delete.confirm": "Willst du <strong>{name}</strong> inklusive aller Übersetzungen wirklich löschen? Dieser Schritt kann nicht rückgängig gemacht werden!",
"Willst du <strong>{name}</strong> inklusive aller Übersetzungen wirklich löschen? Dieser Schritt kann nicht rückgängig gemacht werden!",
"language.deleted": "Die Sprache wurde gelöscht", "language.deleted": "Die Sprache wurde gelöscht",
"language.direction": "Leserichtung", "language.direction": "Leserichtung",
"language.direction.ltr": "Von links nach rechts", "language.direction.ltr": "Von links nach rechts",
@@ -292,8 +239,7 @@
"license": "Lizenz", "license": "Lizenz",
"license.buy": "Kaufe eine Lizenz", "license.buy": "Kaufe eine Lizenz",
"license.register": "Registrieren", "license.register": "Registrieren",
"license.register.help": "license.register.help": "Den Lizenzcode findest du in der Bestätigungsmail zu deinem Kauf. Bitte kopiere und füge ihn ein, um Kirby zu registrieren.",
"Den Lizenzcode findest du in der Bestätigungsmail zu deinem Kauf. Bitte kopiere und füge ihn ein, um Kirby zu registrieren.",
"license.register.label": "Bitte gib deinen Lizenzcode ein", "license.register.label": "Bitte gib deinen Lizenzcode ein",
"license.register.success": "Vielen Dank für deine Unterstützung", "license.register.success": "Vielen Dank für deine Unterstützung",
"license.unregistered": "Dies ist eine unregistrierte Kirby-Demo", "license.unregistered": "Dies ist eine unregistrierte Kirby-Demo",
@@ -354,10 +300,8 @@
"page.changeStatus.position": "Bitte wähle eine Position aus", "page.changeStatus.position": "Bitte wähle eine Position aus",
"page.changeStatus.select": "Wähle einen neuen Status aus", "page.changeStatus.select": "Wähle einen neuen Status aus",
"page.changeTemplate": "Vorlage ändern", "page.changeTemplate": "Vorlage ändern",
"page.delete.confirm": "page.delete.confirm": "Willst du die Seite <strong>{title}</strong> wirklich löschen?",
"Willst du die Seite <strong>{title}</strong> wirklich löschen?", "page.delete.confirm.subpages": "<strong>Diese Seite hat Unterseiten</strong>. <br>Alle Unterseiten werden ebenfalls gelöscht.",
"page.delete.confirm.subpages":
"<strong>Diese Seite hat Unterseiten</strong>. <br>Alle Unterseiten werden ebenfalls gelöscht.",
"page.delete.confirm.title": "Gib zur Bestätigung den Seitentitel ein", "page.delete.confirm.title": "Gib zur Bestätigung den Seitentitel ein",
"page.draft.create": "Entwurf anlegen", "page.draft.create": "Entwurf anlegen",
"page.duplicate.appendix": "Kopie", "page.duplicate.appendix": "Kopie",
@@ -365,8 +309,7 @@
"page.duplicate.pages": "Seiten kopieren", "page.duplicate.pages": "Seiten kopieren",
"page.status": "Status", "page.status": "Status",
"page.status.draft": "Entwurf", "page.status.draft": "Entwurf",
"page.status.draft.description": "page.status.draft.description": "Die Seite ist im Entwurfsmodus und ist nur für angemeldete Benutzer*innen oder über den geheimen Link sichtbar",
"Die Seite ist im Entwurfsmodus und ist nur für angemeldete Benutzer sichtbar",
"page.status.listed": "Öffentlich", "page.status.listed": "Öffentlich",
"page.status.listed.description": "Die Seite ist öffentlich für alle Besucher", "page.status.listed.description": "Die Seite ist öffentlich für alle Besucher",
"page.status.unlisted": "Ungelistet", "page.status.unlisted": "Ungelistet",
@@ -388,10 +331,11 @@
"replace": "Ersetzen", "replace": "Ersetzen",
"retry": "Wiederholen", "retry": "Wiederholen",
"revert": "Verwerfen", "revert": "Verwerfen",
"revert.confirm": "Willst du wirklich alle ungespeicherten Änderungen verwerfen? ",
"role": "Rolle", "role": "Rolle",
"role.admin.description": "Administratoren haben alle Rechte", "role.admin.description": "Administrator*innen haben alle Rechte",
"role.admin.title": "Administrator", "role.admin.title": "Administrator*in",
"role.all": "Alle", "role.all": "Alle",
"role.empty": "Keine Benutzer mit dieser Rolle", "role.empty": "Keine Benutzer mit dieser Rolle",
"role.description.placeholder": "Keine Beschreibung", "role.description.placeholder": "Keine Beschreibung",
@@ -451,8 +395,7 @@
"url.placeholder": "https://beispiel.de", "url.placeholder": "https://beispiel.de",
"user": "Benutzer", "user": "Benutzer",
"user.blueprint": "user.blueprint": "Du kannst zusätzliche Felder und Bereiche für diese Benutzerrolle in <strong>/site/blueprints/users/{role}.yml</strong> anlegen",
"Du kannst zusätzliche Felder und Bereiche für diese Benutzerrolle in <strong>/site/blueprints/users/{role}.yml</strong> anlegen",
"user.changeEmail": "E-Mail ändern", "user.changeEmail": "E-Mail ändern",
"user.changeLanguage": "Sprache ändern", "user.changeLanguage": "Sprache ändern",
"user.changeName": "Benutzer umbenennen", "user.changeName": "Benutzer umbenennen",
@@ -463,8 +406,7 @@
"user.changeRole.select": "Neue Rolle auswählen", "user.changeRole.select": "Neue Rolle auswählen",
"user.create": "Neuen Benutzer anlegen", "user.create": "Neuen Benutzer anlegen",
"user.delete": "Benutzer löschen", "user.delete": "Benutzer löschen",
"user.delete.confirm": "user.delete.confirm": "Willst du den Benutzer <br><strong>{email}</strong> wirklich löschen?",
"Willst du den Benutzer <br><strong>{email}</strong> wirklich löschen?",
"users": "Benutzer", "users": "Benutzer",

View File

@@ -42,10 +42,8 @@
"error.avatar.create.fail": "Δεν ήταν δυνατή η μεταφόρτωση της εικόνας προφίλ", "error.avatar.create.fail": "Δεν ήταν δυνατή η μεταφόρτωση της εικόνας προφίλ",
"error.avatar.delete.fail": "Δεν ήταν δυνατή η διαγραφή της εικόνας προφίλ", "error.avatar.delete.fail": "Δεν ήταν δυνατή η διαγραφή της εικόνας προφίλ",
"error.avatar.dimensions.invalid": "error.avatar.dimensions.invalid": "Διατηρήστε το πλάτος και το ύψος της εικόνας προφίλ κάτω από 3000 εικονοστοιχεία",
"Διατηρήστε το πλάτος και το ύψος της εικόνας προφίλ κάτω από 3000 εικονοστοιχεία", "error.avatar.mime.forbidden": "\u039c\u03b7 \u03b1\u03c0\u03bf\u03b4\u03b5\u03ba\u03c4\u03cc\u03c2 \u03c4\u03cd\u03c0\u03bf\u03c2 \u03b1\u03c1\u03c7\u03b5\u03af\u03bf\u03c5",
"error.avatar.mime.forbidden":
"\u039c\u03b7 \u03b1\u03c0\u03bf\u03b4\u03b5\u03ba\u03c4\u03cc\u03c2 \u03c4\u03cd\u03c0\u03bf\u03c2 \u03b1\u03c1\u03c7\u03b5\u03af\u03bf\u03c5",
"error.blueprint.notFound": "Δεν ήταν δυνατή η φόρτωση του προσχεδίου \"{name}\"", "error.blueprint.notFound": "Δεν ήταν δυνατή η φόρτωση του προσχεδίου \"{name}\"",
@@ -54,22 +52,17 @@
"error.field.converter.invalid": "Μη έγκυρος μετατροπέας \"{converter}\"", "error.field.converter.invalid": "Μη έγκυρος μετατροπέας \"{converter}\"",
"error.file.changeName.empty": "The name must not be empty", "error.file.changeName.empty": "The name must not be empty",
"error.file.changeName.permission": "error.file.changeName.permission": "Δεν επιτρέπεται να αλλάξετε το όνομα του \"{filename}\"",
"Δεν επιτρέπεται να αλλάξετε το όνομα του \"{filename}\"",
"error.file.duplicate": "Ένα αρχείο με το όνομα \"{filename}\" υπάρχει ήδη", "error.file.duplicate": "Ένα αρχείο με το όνομα \"{filename}\" υπάρχει ήδη",
"error.file.extension.forbidden": "error.file.extension.forbidden": "\u039c\u03b7 \u03b1\u03c0\u03bf\u03b4\u03b5\u03ba\u03c4\u03ae \u03b5\u03c0\u03ad\u03ba\u03c4\u03b1\u03c3\u03b7 \u03b1\u03c1\u03c7\u03b5\u03af\u03bf\u03c5",
"\u039c\u03b7 \u03b1\u03c0\u03bf\u03b4\u03b5\u03ba\u03c4\u03ae \u03b5\u03c0\u03ad\u03ba\u03c4\u03b1\u03c3\u03b7 \u03b1\u03c1\u03c7\u03b5\u03af\u03bf\u03c5", "error.file.extension.missing": "Λείπει η επέκταση για το \"{filename}\"",
"error.file.extension.missing":
"Λείπει η επέκταση για το \"{filename}\"",
"error.file.maxheight": "The height of the image must not exceed {height} pixels", "error.file.maxheight": "The height of the image must not exceed {height} pixels",
"error.file.maxsize": "The file is too large", "error.file.maxsize": "The file is too large",
"error.file.maxwidth": "The width of the image must not exceed {width} pixels", "error.file.maxwidth": "The width of the image must not exceed {width} pixels",
"error.file.mime.differs": "error.file.mime.differs": "Το αρχείο πρέπει να είναι του ίδιου τύπου mime \"{mime}\"",
"Το αρχείο πρέπει να είναι του ίδιου τύπου mime \"{mime}\"",
"error.file.mime.forbidden": "Ο τύπος μέσου \"{mime}\" δεν επιτρέπεται", "error.file.mime.forbidden": "Ο τύπος μέσου \"{mime}\" δεν επιτρέπεται",
"error.file.mime.invalid": "Invalid mime type: {mime}", "error.file.mime.invalid": "Invalid mime type: {mime}",
"error.file.mime.missing": "error.file.mime.missing": "Δεν είναι δυνατό να εντοπιστεί ο τύπος μέσου για το \"{filename}\"",
"Δεν είναι δυνατό να εντοπιστεί ο τύπος μέσου για το \"{filename}\"",
"error.file.minheight": "The height of the image must be at least {height} pixels", "error.file.minheight": "The height of the image must be at least {height} pixels",
"error.file.minsize": "The file is too small", "error.file.minsize": "The file is too small",
"error.file.minwidth": "The width of the image must be at least {width} pixels", "error.file.minwidth": "The width of the image must be at least {width} pixels",
@@ -90,111 +83,77 @@
"error.license.email": "Παρακαλώ εισάγετε μια έγκυρη διεύθυνση ηλεκτρονικού ταχυδρομείου", "error.license.email": "Παρακαλώ εισάγετε μια έγκυρη διεύθυνση ηλεκτρονικού ταχυδρομείου",
"error.license.verification": "The license could not be verified", "error.license.verification": "The license could not be verified",
"error.page.changeSlug.permission": "error.page.changeSlug.permission": "Δεν επιτρέπεται να αλλάξετε το URL της σελίδας \"{slug}\"",
"Δεν επιτρέπεται να αλλάξετε το URL της σελίδας \"{slug}\"", "error.page.changeStatus.incomplete": "Δεν ήταν δυνατή η δημοσίευση της σελίδας καθώς περιέχει σφάλματα",
"error.page.changeStatus.incomplete": "error.page.changeStatus.permission": "Δεν είναι δυνατή η αλλαγή κατάστασης για αυτή τη σελίδα",
"Δεν ήταν δυνατή η δημοσίευση της σελίδας καθώς περιέχει σφάλματα", "error.page.changeStatus.toDraft.invalid": "Δεν είναι δυνατή η μετατροπή της σελίδας \"{slug}\" σε προσχέδιο",
"error.page.changeStatus.permission": "error.page.changeTemplate.invalid": "Δεν είναι δυνατή η αλλαγή προτύπου για τη σελίδα \"{slug}\"",
"Δεν είναι δυνατή η αλλαγή κατάστασης για αυτή τη σελίδα", "error.page.changeTemplate.permission": "Δεν επιτρέπεται να αλλάξετε το πρότυπο για τη σελίδα \"{slug}\"",
"error.page.changeStatus.toDraft.invalid":
"Δεν είναι δυνατή η μετατροπή της σελίδας \"{slug}\" σε προσχέδιο",
"error.page.changeTemplate.invalid":
"Δεν είναι δυνατή η αλλαγή προτύπου για τη σελίδα \"{slug}\"",
"error.page.changeTemplate.permission":
"Δεν επιτρέπεται να αλλάξετε το πρότυπο για τη σελίδα \"{slug}\"",
"error.page.changeTitle.empty": "Ο τίτλος δεν μπορεί να είναι κενός", "error.page.changeTitle.empty": "Ο τίτλος δεν μπορεί να είναι κενός",
"error.page.changeTitle.permission": "error.page.changeTitle.permission": "Δεν επιτρέπεται να αλλάξετε τον τίτλο για τη σελίδα \"{slug}\"",
"Δεν επιτρέπεται να αλλάξετε τον τίτλο για τη σελίδα \"{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": "Παρακαλώ εισάγετε τον τίτλο της σελίδας για επιβεβαίωση",
"error.page.delete.hasChildren": "error.page.delete.hasChildren": "Δεν είναι δυνατή η διαγραφή της σελίδας καθώς περιέχει υποσελίδες",
"Δεν είναι δυνατή η διαγραφή της σελίδας καθώς περιέχει υποσελίδες",
"error.page.delete.permission": "Δεν επιτρέπεται η διαγραφή της σελίδας \"{slug}\"", "error.page.delete.permission": "Δεν επιτρέπεται η διαγραφή της σελίδας \"{slug}\"",
"error.page.draft.duplicate": "error.page.draft.duplicate": "Υπάρχει ήδη ένα προσχέδιο σελίδας με την διεύθυνση URL \"{slug}\"",
"Υπάρχει ήδη ένα προσχέδιο σελίδας με την διεύθυνση URL \"{slug}\"", "error.page.duplicate": "Υπάρχει ήδη μια σελίδα με την διεύθυνση URL \"{slug}\"",
"error.page.duplicate":
"Υπάρχει ήδη μια σελίδα με την διεύθυνση URL \"{slug}\"",
"error.page.duplicate.permission": "You are not allowed to duplicate \"{slug}\"", "error.page.duplicate.permission": "You are not allowed to duplicate \"{slug}\"",
"error.page.notFound": "Δεν ήταν δυνατή η εύρεση της σελίδας \"{slug}\"", "error.page.notFound": "Δεν ήταν δυνατή η εύρεση της σελίδας \"{slug}\"",
"error.page.num.invalid": "error.page.num.invalid": "Παρακαλώ εισάγετε έναν έγκυρο αριθμό ταξινόμησης. Οι αριθμοί δεν μπορεί να είναι αρνητικοί.",
"Παρακαλώ εισάγετε έναν έγκυρο αριθμό ταξινόμησης. Οι αριθμοί δεν μπορεί να είναι αρνητικοί.",
"error.page.slug.invalid": "Παρακαλώ εισάγετε ένα έγκυρο πρόθεμα διεύθυνσης URL", "error.page.slug.invalid": "Παρακαλώ εισάγετε ένα έγκυρο πρόθεμα διεύθυνσης URL",
"error.page.sort.permission": "Δεν είναι δυνατή η ταξινόμηση της σελίδας \"{slug}\"", "error.page.sort.permission": "Δεν είναι δυνατή η ταξινόμηση της σελίδας \"{slug}\"",
"error.page.status.invalid": "Ορίστε μια έγκυρη κατάσταση σελίδας", "error.page.status.invalid": "Ορίστε μια έγκυρη κατάσταση σελίδας",
"error.page.undefined": "Δεν ήταν δυνατή η εύρεση της σελίδας", "error.page.undefined": "Δεν ήταν δυνατή η εύρεση της σελίδας",
"error.page.update.permission": "Δεν επιτρέπεται η ενημέρωση της σελίδας \"{slug}\"", "error.page.update.permission": "Δεν επιτρέπεται η ενημέρωση της σελίδας \"{slug}\"",
"error.section.files.max.plural": "error.section.files.max.plural": "Δεν πρέπει να προσθέσετε περισσότερα από {max} αρχεία στην ενότητα \"{section}\"",
"Δεν πρέπει να προσθέσετε περισσότερα από {max} αρχεία στην ενότητα \"{section}\"", "error.section.files.max.singular": "Δεν πρέπει να προσθέσετε περισσότερα από ένα αρχεία στην ενότητα \"{section}\"",
"error.section.files.max.singular": "error.section.files.min.plural": "The \"{section}\" section requires at least {min} files",
"Δεν πρέπει να προσθέσετε περισσότερα από ένα αρχεία στην ενότητα \"{section}\"", "error.section.files.min.singular": "The \"{section}\" section requires at least one file",
"error.section.files.min.plural":
"The \"{section}\" section requires at least {min} files",
"error.section.files.min.singular":
"The \"{section}\" section requires at least one file",
"error.section.pages.max.plural": "error.section.pages.max.plural": "Δεν μπορείτε να προσθέσετε περισσότερες από {max} σελίδες στην ενότητα \"{section}\"",
"Δεν μπορείτε να προσθέσετε περισσότερες από {max} σελίδες στην ενότητα \"{section}\"", "error.section.pages.max.singular": "Δεν μπορείτε να προσθέσετε περισσότερες από μία σελίδες στην ενότητα \"{section}\"",
"error.section.pages.max.singular": "error.section.pages.min.plural": "The \"{section}\" section requires at least {min} pages",
"Δεν μπορείτε να προσθέσετε περισσότερες από μία σελίδες στην ενότητα \"{section}\"", "error.section.pages.min.singular": "The \"{section}\" section requires at least one page",
"error.section.pages.min.plural":
"The \"{section}\" section requires at least {min} pages",
"error.section.pages.min.singular":
"The \"{section}\" section requires at least one page",
"error.section.notLoaded": "Δεν ήταν δυνατή η φόρτωση της ενότητας \"{name}\"", "error.section.notLoaded": "Δεν ήταν δυνατή η φόρτωση της ενότητας \"{name}\"",
"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": "error.user.changeEmail.permission": "Δεν επιτρέπεται να αλλάξετε τη διεύθινση ηλεκτρονικού ταχυδρομείου για τον χρήστη \"{name}\"",
"Δεν επιτρέπεται να αλλάξετε τη διεύθινση ηλεκτρονικού ταχυδρομείου για τον χρήστη \"{name}\"", "error.user.changeLanguage.permission": "Δεν επιτρέπεται να αλλάξετε τη γλώσσα για τον χρήστη \"{name}\"",
"error.user.changeLanguage.permission": "error.user.changeName.permission": "Δεν επιτρέπεται να αλλάξετε το όνομα του χρήστη \"{name}",
"Δεν επιτρέπεται να αλλάξετε τη γλώσσα για τον χρήστη \"{name}\"", "error.user.changePassword.permission": "Δεν επιτρέπεται να αλλάξετε τον κωδικό πρόσβασης για τον χρήστη \"{name}\"",
"error.user.changeName.permission": "error.user.changeRole.lastAdmin": "Ο ρόλος του τελευταίου διαχειριστή δεν μπορεί να αλλάξει",
"Δεν επιτρέπεται να αλλάξετε το όνομα του χρήστη \"{name}", "error.user.changeRole.permission": "Δεν επιτρέπεται να αλλάξετε το ρόλο του χρήστη \"{name}\"",
"error.user.changePassword.permission": "error.user.changeRole.toAdmin": "You are not allowed to promote someone to the admin role",
"Δεν επιτρέπεται να αλλάξετε τον κωδικό πρόσβασης για τον χρήστη \"{name}\"",
"error.user.changeRole.lastAdmin":
"Ο ρόλος του τελευταίου διαχειριστή δεν μπορεί να αλλάξει",
"error.user.changeRole.permission":
"Δεν επιτρέπεται να αλλάξετε το ρόλο του χρήστη \"{name}\"",
"error.user.changeRole.toAdmin":
"You are not allowed to promote someone to the admin role",
"error.user.create.permission": "Δεν επιτρέπεται η δημιουργία αυτού του χρήστη", "error.user.create.permission": "Δεν επιτρέπεται η δημιουργία αυτού του χρήστη",
"error.user.delete": "\u039f \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7\u03c2 \u03b4\u03b5\u03bd \u03bc\u03c0\u03bf\u03c1\u03bf\u03cd\u03c3\u03b5 \u03bd\u03b1 \u03b4\u03b9\u03b1\u03b3\u03c1\u03b1\u03c6\u03b5\u03af", "error.user.delete": "\u039f \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7\u03c2 \u03b4\u03b5\u03bd \u03bc\u03c0\u03bf\u03c1\u03bf\u03cd\u03c3\u03b5 \u03bd\u03b1 \u03b4\u03b9\u03b1\u03b3\u03c1\u03b1\u03c6\u03b5\u03af",
"error.user.delete.lastAdmin": "Δεν είναι δυνατή η διαγραφή του τελευταίου διαχειριστή", "error.user.delete.lastAdmin": "Δεν είναι δυνατή η διαγραφή του τελευταίου διαχειριστή",
"error.user.delete.lastUser": "Δεν είναι δυνατή η διαγραφή του τελευταίου χρήστη", "error.user.delete.lastUser": "Δεν είναι δυνατή η διαγραφή του τελευταίου χρήστη",
"error.user.delete.permission": "error.user.delete.permission": "Δεν επιτρέπεται να διαγράψετ τον χρήστη \"{name}\"",
"Δεν επιτρέπεται να διαγράψετ τον χρήστη \"{name}\"", "error.user.duplicate": "Ένας χρήστης με τη διεύθυνση ηλεκτρονικού ταχυδρομείου \"{email}\" υπάρχει ήδη",
"error.user.duplicate":
"Ένας χρήστης με τη διεύθυνση ηλεκτρονικού ταχυδρομείου \"{email}\" υπάρχει ήδη",
"error.user.email.invalid": "Παρακαλώ εισάγετε μια έγκυρη διεύθυνση ηλεκτρονικού ταχυδρομείου", "error.user.email.invalid": "Παρακαλώ εισάγετε μια έγκυρη διεύθυνση ηλεκτρονικού ταχυδρομείου",
"error.user.language.invalid": "Παρακαλώ εισαγάγετε μια έγκυρη γλώσσα", "error.user.language.invalid": "Παρακαλώ εισαγάγετε μια έγκυρη γλώσσα",
"error.user.notFound": "Δεν είναι δυνατή η εύρεση του χρήστη \"{name}\"", "error.user.notFound": "Δεν είναι δυνατή η εύρεση του χρήστη \"{name}\"",
"error.user.password.invalid": "error.user.password.invalid": "Παρακαλώ εισάγετε έναν έγκυρο κωδικό πρόσβασης. Οι κωδικοί πρόσβασης πρέπει να έχουν μήκος τουλάχιστον 8 χαρακτήρων.",
"Παρακαλώ εισάγετε έναν έγκυρο κωδικό πρόσβασης. Οι κωδικοί πρόσβασης πρέπει να έχουν μήκος τουλάχιστον 8 χαρακτήρων.",
"error.user.password.notSame": "\u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03bf\u03cd\u03bc\u03b5 \u03b5\u03c0\u03b9\u03b2\u03b5\u03b2\u03b1\u03b9\u03ce\u03c3\u03c4\u03b5 \u03c4\u03bf\u03bd \u039a\u03c9\u03b4\u03b9\u03ba\u03cc \u03a0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2", "error.user.password.notSame": "\u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03bf\u03cd\u03bc\u03b5 \u03b5\u03c0\u03b9\u03b2\u03b5\u03b2\u03b1\u03b9\u03ce\u03c3\u03c4\u03b5 \u03c4\u03bf\u03bd \u039a\u03c9\u03b4\u03b9\u03ba\u03cc \u03a0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2",
"error.user.password.undefined": "Ο χρήστης δεν έχει κωδικό πρόσβασης", "error.user.password.undefined": "Ο χρήστης δεν έχει κωδικό πρόσβασης",
"error.user.role.invalid": "Παρακαλώ εισαγάγετε έναν έγκυρο ρόλο", "error.user.role.invalid": "Παρακαλώ εισαγάγετε έναν έγκυρο ρόλο",
"error.user.update.permission": "error.user.update.permission": "Δεν επιτρέπεται η ενημέρωση του χρήστη \"{name}\"",
"Δεν επιτρέπεται η ενημέρωση του χρήστη \"{name}\"",
"error.validation.accepted": "Παρακαλώ επιβεβαιώστε", "error.validation.accepted": "Παρακαλώ επιβεβαιώστε",
"error.validation.alpha": "Παρακαλώ εισάγετε μόνο χαρακτήρες μεταξύ των a-z", "error.validation.alpha": "Παρακαλώ εισάγετε μόνο χαρακτήρες μεταξύ των a-z",
"error.validation.alphanum": "error.validation.alphanum": "Παρακαλώ εισάγετε μόνο χαρακτήρες μεταξύ των a-z ή αριθμούς απο το 0 έως το 9",
"Παρακαλώ εισάγετε μόνο χαρακτήρες μεταξύ των a-z ή αριθμούς απο το 0 έως το 9", "error.validation.between": "Παρακαλώ εισάγετε μια τιμή μεταξύ \"{min}\" και \"{max}\"",
"error.validation.between":
"Παρακαλώ εισάγετε μια τιμή μεταξύ \"{min}\" και \"{max}\"",
"error.validation.boolean": "Παρακαλώ επιβεβαιώστε ή αρνηθείτε", "error.validation.boolean": "Παρακαλώ επιβεβαιώστε ή αρνηθείτε",
"error.validation.contains": "error.validation.contains": "Παρακαλώ καταχωρίστε μια τιμή που περιέχει \"{needle}\"",
"Παρακαλώ καταχωρίστε μια τιμή που περιέχει \"{needle}\"",
"error.validation.date": "Παρακαλώ εισάγετε μία έγκυρη ημερομηνία", "error.validation.date": "Παρακαλώ εισάγετε μία έγκυρη ημερομηνία",
"error.validation.date.after": "Please enter a date after {date}", "error.validation.date.after": "Please enter a date after {date}",
"error.validation.date.before": "Please enter a date before {date}", "error.validation.date.before": "Please enter a date before {date}",
@@ -210,18 +169,14 @@
"error.validation.less": "Παρακαλώ εισάγετε μια τιμή μικρότερη από {max}", "error.validation.less": "Παρακαλώ εισάγετε μια τιμή μικρότερη από {max}",
"error.validation.match": "Η τιμή δεν ταιριάζει με το αναμενόμενο πρότυπο", "error.validation.match": "Η τιμή δεν ταιριάζει με το αναμενόμενο πρότυπο",
"error.validation.max": "Παρακαλώ εισάγετε μια τιμή ίση ή μικρότερη από {max}", "error.validation.max": "Παρακαλώ εισάγετε μια τιμή ίση ή μικρότερη από {max}",
"error.validation.maxlength": "error.validation.maxlength": "Παρακαλώ εισάγετε μια μικρότερη τιμή. (max. {max} χαρακτήρες)",
"Παρακαλώ εισάγετε μια μικρότερη τιμή. (max. {max} χαρακτήρες)",
"error.validation.maxwords": "Παρακαλώ εισάγετε το πολύ {max} λέξεις", "error.validation.maxwords": "Παρακαλώ εισάγετε το πολύ {max} λέξεις",
"error.validation.min": "Παρακαλώ εισάγετε μια τιμή ίση ή μεγαλύτερη από {min}", "error.validation.min": "Παρακαλώ εισάγετε μια τιμή ίση ή μεγαλύτερη από {min}",
"error.validation.minlength": "error.validation.minlength": "Παρακαλώ εισάγετε μεγαλύτερη τιμή. (τουλάχιστον {min} χαρακτήρες)",
"Παρακαλώ εισάγετε μεγαλύτερη τιμή. (τουλάχιστον {min} χαρακτήρες)",
"error.validation.minwords": "Παρακαλώ εισάγετε τουλάχιστον {min} λέξεις", "error.validation.minwords": "Παρακαλώ εισάγετε τουλάχιστον {min} λέξεις",
"error.validation.more": "Παρακαλώ εισάγετε τουλάχιστον {min} λέξεις", "error.validation.more": "Παρακαλώ εισάγετε τουλάχιστον {min} λέξεις",
"error.validation.notcontains": "error.validation.notcontains": "Παρακαλώ εισάγετε μια τιμή που δεν περιέχει \"{needle}\"",
"Παρακαλώ εισάγετε μια τιμή που δεν περιέχει \"{needle}\"", "error.validation.notin": "Παρακαλώ μην εισάγετε κανένα από τα παρακάτω: ({notIn})",
"error.validation.notin":
"Παρακαλώ μην εισάγετε κανένα από τα παρακάτω: ({notIn})",
"error.validation.option": "Παρακαλώ κάντε μια έγκυρη επιλογή", "error.validation.option": "Παρακαλώ κάντε μια έγκυρη επιλογή",
"error.validation.num": "Παρακαλώ εισάγετε έναν έγκυρο αριθμό", "error.validation.num": "Παρακαλώ εισάγετε έναν έγκυρο αριθμό",
"error.validation.required": "Παρακαλώ εισάγετε κάτι", "error.validation.required": "Παρακαλώ εισάγετε κάτι",
@@ -238,8 +193,7 @@
"field.structure.empty": "\u0394\u03b5\u03bd \u03c5\u03c0\u03ac\u03c1\u03c7\u03bf\u03c5\u03bd \u03b1\u03ba\u03cc\u03bc\u03b7 \u03ba\u03b1\u03c4\u03b1\u03c7\u03c9\u03c1\u03af\u03c3\u03b5\u03b9\u03c2.", "field.structure.empty": "\u0394\u03b5\u03bd \u03c5\u03c0\u03ac\u03c1\u03c7\u03bf\u03c5\u03bd \u03b1\u03ba\u03cc\u03bc\u03b7 \u03ba\u03b1\u03c4\u03b1\u03c7\u03c9\u03c1\u03af\u03c3\u03b5\u03b9\u03c2.",
"field.users.empty": "Δεν έχουν επιλεγεί ακόμη χρήστες", "field.users.empty": "Δεν έχουν επιλεγεί ακόμη χρήστες",
"file.delete.confirm": "file.delete.confirm": "\u0398\u03ad\u03bb\u03b5\u03c4\u03b5 \u03c3\u03af\u03b3\u03bf\u03c5\u03c1\u03b1 \u03bd\u03b1 \u03b4\u03b9\u03b1\u03b3\u03c1\u03ac\u03c8\u03b5\u03c4\u03b5 \u03b1\u03c5\u03c4\u03cc \u03c4\u03bf \u03b1\u03c1\u03c7\u03b5\u03af\u03bf;",
"\u0398\u03ad\u03bb\u03b5\u03c4\u03b5 \u03c3\u03af\u03b3\u03bf\u03c5\u03c1\u03b1 \u03bd\u03b1 \u03b4\u03b9\u03b1\u03b3\u03c1\u03ac\u03c8\u03b5\u03c4\u03b5 \u03b1\u03c5\u03c4\u03cc \u03c4\u03bf \u03b1\u03c1\u03c7\u03b5\u03af\u03bf;",
"files": "Αρχεία", "files": "Αρχεία",
"files.empty": "Δεν υπάρχουν ακόμα αρχεία", "files.empty": "Δεν υπάρχουν ακόμα αρχεία",
@@ -251,29 +205,22 @@
"installation": "Εγκατάσταση", "installation": "Εγκατάσταση",
"installation.completed": "Ο πίνακας ελέγχου έχει εγκατασταθεί", "installation.completed": "Ο πίνακας ελέγχου έχει εγκατασταθεί",
"installation.disabled": "Η εγκατάσταση του πίνακα ελέγχου είναι απενεργοποιημένη για δημόσιους διακομιστές από προεπιλογή. Εκτελέστε την εγκατάσταση σε ένα τοπικό μηχάνημα ή ενεργοποιήστε την με την επιλογή panel.install.", "installation.disabled": "Η εγκατάσταση του πίνακα ελέγχου είναι απενεργοποιημένη για δημόσιους διακομιστές από προεπιλογή. Εκτελέστε την εγκατάσταση σε ένα τοπικό μηχάνημα ή ενεργοποιήστε την με την επιλογή panel.install.",
"installation.issues.accounts": "installation.issues.accounts": "\u039f \u03c6\u03ac\u03ba\u03b5\u03bb\u03bf\u03c2 \/site\/accounts \u03b4\u03b5\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03b5\u03b3\u03b3\u03c1\u03ac\u03c8\u03b9\u03bc\u03bf\u03c2",
"\u039f \u03c6\u03ac\u03ba\u03b5\u03bb\u03bf\u03c2 \/site\/accounts \u03b4\u03b5\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03b5\u03b3\u03b3\u03c1\u03ac\u03c8\u03b9\u03bc\u03bf\u03c2", "installation.issues.content": "\u039f \u03c6\u03ac\u03ba\u03b5\u03bb\u03bf\u03c2 content \u03ba\u03b1\u03b9 \u03cc\u03bb\u03bf\u03b9 \u03bf\u03b9 \u03c5\u03c0\u03bf\u03c6\u03ac\u03ba\u03b5\u03bb\u03bf\u03b9 \u03c0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03b5\u03af\u03bd\u03b1\u03b9 \u03b5\u03b3\u03b3\u03c1\u03ac\u03c8\u03b9\u03bc\u03bf\u03b9.",
"installation.issues.content":
"\u039f \u03c6\u03ac\u03ba\u03b5\u03bb\u03bf\u03c2 content \u03ba\u03b1\u03b9 \u03cc\u03bb\u03bf\u03b9 \u03bf\u03b9 \u03c5\u03c0\u03bf\u03c6\u03ac\u03ba\u03b5\u03bb\u03bf\u03b9 \u03c0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03b5\u03af\u03bd\u03b1\u03b9 \u03b5\u03b3\u03b3\u03c1\u03ac\u03c8\u03b9\u03bc\u03bf\u03b9.",
"installation.issues.curl": "Απαιτείται η επέκταση <code>CURL</code>", "installation.issues.curl": "Απαιτείται η επέκταση <code>CURL</code>",
"installation.issues.headline": "Ο πίνακας ελέγχου δεν μπορεί να εγκατασταθεί", "installation.issues.headline": "Ο πίνακας ελέγχου δεν μπορεί να εγκατασταθεί",
"installation.issues.mbstring": "installation.issues.mbstring": "Απαιτείται η επέκταση <code>MB String</code> ",
"Απαιτείται η επέκταση <code>MB String</code> ", "installation.issues.media": "Ο φάκελος <code>/media</code> δεν υπάρχει ή δεν είναι εγγράψιμος",
"installation.issues.media":
"Ο φάκελος <code>/media</code> δεν υπάρχει ή δεν είναι εγγράψιμος",
"installation.issues.php": "Βεβαιωθείτε ότι χρησιμοποιήτε <code>PHP 7+</code>", "installation.issues.php": "Βεβαιωθείτε ότι χρησιμοποιήτε <code>PHP 7+</code>",
"installation.issues.server": "installation.issues.server": "To Kirby απαιτεί <code>Apache</code>, <code>Nginx</code> ή <code>Caddy</code>",
"To Kirby απαιτεί <code>Apache</code>, <code>Nginx</code> ή <code>Caddy</code>",
"installation.issues.sessions": "Ο φάκελος <code>/site/sessions</code> δεν υπάρχει ή δεν είναι εγγράψιμος", "installation.issues.sessions": "Ο φάκελος <code>/site/sessions</code> δεν υπάρχει ή δεν είναι εγγράψιμος",
"language": "\u0393\u03bb\u03ce\u03c3\u03c3\u03b1", "language": "\u0393\u03bb\u03ce\u03c3\u03c3\u03b1",
"language.code": "Κώδικας", "language.code": "Κώδικας",
"language.convert": "Χρήση ως προεπιλογή", "language.convert": "Χρήση ως προεπιλογή",
"language.convert.confirm": "language.convert.confirm": "<p>Θέλετε πραγματικά να μετατρέψετε τη <strong>{name}</strong> στην προεπιλεγμένη γλώσσα; Αυτό δεν μπορεί να ανακληθεί.</p><p>Αν το <strong>{name}</strong> χει μη μεταφρασμένο περιεχόμενο, δεν θα υπάρχει πλέον έγκυρη εναλλακτική λύση και τμήματα του ιστότοπού σας ενδέχεται να είναι κενά.</p>",
"<p>Θέλετε πραγματικά να μετατρέψετε τη <strong>{name}</strong> στην προεπιλεγμένη γλώσσα; Αυτό δεν μπορεί να ανακληθεί.</p><p>Αν το <strong>{name}</strong> χει μη μεταφρασμένο περιεχόμενο, δεν θα υπάρχει πλέον έγκυρη εναλλακτική λύση και τμήματα του ιστότοπού σας ενδέχεται να είναι κενά.</p>",
"language.create": "Προσθέστε μια νέα γλώσσα", "language.create": "Προσθέστε μια νέα γλώσσα",
"language.delete.confirm": "language.delete.confirm": "Θέλετε πραγματικά να διαγράψετε τη γλώσσα {name} συμπεριλαμβανομένων όλων των μεταφράσεων; Αυτό δεν μπορεί να αναιρεθεί!",
"Θέλετε πραγματικά να διαγράψετε τη γλώσσα {name} συμπεριλαμβανομένων όλων των μεταφράσεων; Αυτό δεν μπορεί να αναιρεθεί!",
"language.deleted": "Η γλώσσα έχει διαγραφεί", "language.deleted": "Η γλώσσα έχει διαγραφεί",
"language.direction": "Κατεύθυνση ανάγνωσης", "language.direction": "Κατεύθυνση ανάγνωσης",
"language.direction.ltr": "Αριστερά προς τα δεξιά", "language.direction.ltr": "Αριστερά προς τα δεξιά",
@@ -292,8 +239,7 @@
"license": "\u0386\u03b4\u03b5\u03b9\u03b1 \u03a7\u03c1\u03ae\u03c3\u03b7\u03c2 \u03c4\u03bf\u03c5 Kirby", "license": "\u0386\u03b4\u03b5\u03b9\u03b1 \u03a7\u03c1\u03ae\u03c3\u03b7\u03c2 \u03c4\u03bf\u03c5 Kirby",
"license.buy": "Αγοράστε μια άδεια", "license.buy": "Αγοράστε μια άδεια",
"license.register": "Εγγραφή", "license.register": "Εγγραφή",
"license.register.help": "license.register.help": "Έχετε λάβει τον κωδικό άδειας χρήσης μετά την αγορά μέσω ηλεκτρονικού ταχυδρομείου. Παρακαλώ αντιγράψτε και επικολλήστε τον για να εγγραφείτε.",
"Έχετε λάβει τον κωδικό άδειας χρήσης μετά την αγορά μέσω ηλεκτρονικού ταχυδρομείου. Παρακαλώ αντιγράψτε και επικολλήστε τον για να εγγραφείτε.",
"license.register.label": "Παρακαλώ εισαγάγετε τον κωδικό άδειας χρήσης", "license.register.label": "Παρακαλώ εισαγάγετε τον κωδικό άδειας χρήσης",
"license.register.success": "Σας ευχαριστούμε για την υποστήριξη του Kirby", "license.register.success": "Σας ευχαριστούμε για την υποστήριξη του Kirby",
"license.unregistered": "Αυτό είναι ένα μη καταχωρημένο demo του Kirby", "license.unregistered": "Αυτό είναι ένα μη καταχωρημένο demo του Kirby",
@@ -325,7 +271,7 @@
"months.april": "\u0391\u03c0\u03c1\u03af\u03bb\u03b9\u03bf\u03c2", "months.april": "\u0391\u03c0\u03c1\u03af\u03bb\u03b9\u03bf\u03c2",
"months.august": "\u0391\u03cd\u03b3\u03bf\u03c5\u03c3\u03c4\u03bf\u03c2", "months.august": "\u0391\u03cd\u03b3\u03bf\u03c5\u03c3\u03c4\u03bf\u03c2",
"months.december": "\u0394\u03b5\u03ba\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2", "months.december": "\u0394\u03b5\u03ba\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2",
"months.february": "\u03a6\u03b5\u03b2\u03c1\u03bf\u03c5\u03ac\u03c1\u03b9\u03bf\u03c2", "months.february": "Φεβρουάριος",
"months.january": "\u0399\u03b1\u03bd\u03bf\u03c5\u03ac\u03c1\u03b9\u03bf\u03c2", "months.january": "\u0399\u03b1\u03bd\u03bf\u03c5\u03ac\u03c1\u03b9\u03bf\u03c2",
"months.july": "\u0399\u03bf\u03cd\u03bb\u03b9\u03bf\u03c2", "months.july": "\u0399\u03bf\u03cd\u03bb\u03b9\u03bf\u03c2",
"months.june": "\u0399\u03bf\u03cd\u03bd\u03b9\u03bf\u03c2", "months.june": "\u0399\u03bf\u03cd\u03bd\u03b9\u03bf\u03c2",
@@ -354,10 +300,8 @@
"page.changeStatus.position": "Επιλέξτε μια θέση", "page.changeStatus.position": "Επιλέξτε μια θέση",
"page.changeStatus.select": "Επιλέξτε μια νέα κατάσταση", "page.changeStatus.select": "Επιλέξτε μια νέα κατάσταση",
"page.changeTemplate": "Αλλαγή προτύπου", "page.changeTemplate": "Αλλαγή προτύπου",
"page.delete.confirm": "page.delete.confirm": "\u0398\u03ad\u03bb\u03b5\u03c4\u03b5 \u03c3\u03af\u03b3\u03bf\u03c5\u03c1\u03b1 \u03bd\u03b1 \u03b4\u03b9\u03b1\u03b3\u03c1\u03ac\u03c8\u03b5\u03c4\u03b5 \u03b1\u03c5\u03c4\u03ae\u03bd \u03c4\u03b7 \u03c3\u03b5\u03bb\u03af\u03b4\u03b1;",
"\u0398\u03ad\u03bb\u03b5\u03c4\u03b5 \u03c3\u03af\u03b3\u03bf\u03c5\u03c1\u03b1 \u03bd\u03b1 \u03b4\u03b9\u03b1\u03b3\u03c1\u03ac\u03c8\u03b5\u03c4\u03b5 \u03b1\u03c5\u03c4\u03ae\u03bd \u03c4\u03b7 \u03c3\u03b5\u03bb\u03af\u03b4\u03b1;", "page.delete.confirm.subpages": "<strong>Αυτή η σελίδα έχει υποσελίδες</strong>. <br>Όλες οι υποσελίδες θα διαγραφούν επίσης.",
"page.delete.confirm.subpages":
"<strong>Αυτή η σελίδα έχει υποσελίδες</strong>. <br>Όλες οι υποσελίδες θα διαγραφούν επίσης.",
"page.delete.confirm.title": "Εισάγετε τον τίτλο της σελίδας για επιβεβαίωση", "page.delete.confirm.title": "Εισάγετε τον τίτλο της σελίδας για επιβεβαίωση",
"page.draft.create": "Δημιουργία προσχεδίου", "page.draft.create": "Δημιουργία προσχεδίου",
"page.duplicate.appendix": "Αντιγραφή", "page.duplicate.appendix": "Αντιγραφή",
@@ -365,8 +309,7 @@
"page.duplicate.pages": "Copy pages", "page.duplicate.pages": "Copy pages",
"page.status": "Kατάσταση", "page.status": "Kατάσταση",
"page.status.draft": "Προσχέδιο", "page.status.draft": "Προσχέδιο",
"page.status.draft.description": "page.status.draft.description": "The page is in draft mode and only visible for logged in editors or via secret link",
"Η σελίδα είναι σε κατάσταση προσχεδίου και είναι ορατή μόνο για συνδεδεμένους συντάκτες",
"page.status.listed": "Δημοσιευμένο", "page.status.listed": "Δημοσιευμένο",
"page.status.listed.description": "Αυτή η σελίδα είναι δημοσιευμένη για οποιονδήποτε", "page.status.listed.description": "Αυτή η σελίδα είναι δημοσιευμένη για οποιονδήποτε",
"page.status.unlisted": "Μη καταχωρημένο", "page.status.unlisted": "Μη καταχωρημένο",
@@ -388,6 +331,7 @@
"replace": "\u0391\u03bd\u03c4\u03b9\u03ba\u03b1\u03c4\u03ac\u03c3\u03c4\u03b1\u03c3\u03b7", "replace": "\u0391\u03bd\u03c4\u03b9\u03ba\u03b1\u03c4\u03ac\u03c3\u03c4\u03b1\u03c3\u03b7",
"retry": "\u0395\u03c0\u03b1\u03bd\u03ac\u03bb\u03b7\u03c8\u03b7", "retry": "\u0395\u03c0\u03b1\u03bd\u03ac\u03bb\u03b7\u03c8\u03b7",
"revert": "\u0391\u03b3\u03bd\u03cc\u03b7\u03c3\u03b7", "revert": "\u0391\u03b3\u03bd\u03cc\u03b7\u03c3\u03b7",
"revert.confirm": "Do you really want to <strong>delete all unsaved changes</strong>?",
"role": "\u03a1\u03cc\u03bb\u03bf\u03c2", "role": "\u03a1\u03cc\u03bb\u03bf\u03c2",
"role.admin.description": "The admin has all rights", "role.admin.description": "The admin has all rights",
@@ -451,8 +395,7 @@
"url.placeholder": "https://example.com", "url.placeholder": "https://example.com",
"user": "Χρήστης", "user": "Χρήστης",
"user.blueprint": "user.blueprint": "Μπορείτε να ορίσετε επιπλέον τμήματα και πεδία φόρμας για αυτόν τον ρόλο χρήστη στο <strong>/site/blueprints/users/{role}.yml</strong>",
"Μπορείτε να ορίσετε επιπλέον τμήματα και πεδία φόρμας για αυτόν τον ρόλο χρήστη στο <strong>/site/blueprints/users/{role}.yml</strong>",
"user.changeEmail": "Αλλαγή διεύθινσης ηλεκτρονικού ταχυδρομείου", "user.changeEmail": "Αλλαγή διεύθινσης ηλεκτρονικού ταχυδρομείου",
"user.changeLanguage": "Αλλαγή γλώσσας", "user.changeLanguage": "Αλλαγή γλώσσας",
"user.changeName": "Μετονομασία χρήστη", "user.changeName": "Μετονομασία χρήστη",
@@ -463,8 +406,7 @@
"user.changeRole.select": "Επιλογή νέου ρόλου", "user.changeRole.select": "Επιλογή νέου ρόλου",
"user.create": "Προσθήκη νέου χρήστη", "user.create": "Προσθήκη νέου χρήστη",
"user.delete": "Διαγραφή χρήστη", "user.delete": "Διαγραφή χρήστη",
"user.delete.confirm": "user.delete.confirm": "\u0398\u03ad\u03bb\u03b5\u03c4\u03b5 \u03c3\u03af\u03b3\u03bf\u03c5\u03c1\u03b1 \u03bd\u03b1 \u03b4\u03b9\u03b1\u03b3\u03c1\u03ac\u03c8\u03b5\u03c4\u03b5 \u03b1\u03c5\u03c4\u03cc\u03bd \u03c4\u03bf\u03bd \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7;",
"\u0398\u03ad\u03bb\u03b5\u03c4\u03b5 \u03c3\u03af\u03b3\u03bf\u03c5\u03c1\u03b1 \u03bd\u03b1 \u03b4\u03b9\u03b1\u03b3\u03c1\u03ac\u03c8\u03b5\u03c4\u03b5 \u03b1\u03c5\u03c4\u03cc\u03bd \u03c4\u03bf\u03bd \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7;",
"users": "Χρήστες", "users": "Χρήστες",

View File

@@ -42,10 +42,8 @@
"error.avatar.create.fail": "The profile picture could not be uploaded", "error.avatar.create.fail": "The profile picture could not be uploaded",
"error.avatar.delete.fail": "The profile picture could not be deleted", "error.avatar.delete.fail": "The profile picture could not be deleted",
"error.avatar.dimensions.invalid": "error.avatar.dimensions.invalid": "Please keep the width and height of the profile picture under 3000 pixels",
"Please keep the width and height of the profile picture under 3000 pixels", "error.avatar.mime.forbidden": "The profile picture must be JPEG or PNG files",
"error.avatar.mime.forbidden":
"The profile picture must be JPEG or PNG files",
"error.blueprint.notFound": "The blueprint \"{name}\" could not be loaded", "error.blueprint.notFound": "The blueprint \"{name}\" could not be loaded",
@@ -54,22 +52,17 @@
"error.field.converter.invalid": "Invalid converter \"{converter}\"", "error.field.converter.invalid": "Invalid converter \"{converter}\"",
"error.file.changeName.empty": "The name must not be empty", "error.file.changeName.empty": "The name must not be empty",
"error.file.changeName.permission": "error.file.changeName.permission": "You are not allowed to change the name of \"{filename}\"",
"You are not allowed to change the name of \"{filename}\"",
"error.file.duplicate": "A file with the name \"{filename}\" already exists", "error.file.duplicate": "A file with the name \"{filename}\" already exists",
"error.file.extension.forbidden": "error.file.extension.forbidden": "The extension \"{extension}\" is not allowed",
"The extension \"{extension}\" is not allowed", "error.file.extension.missing": "The extensions for \"{filename}\" is missing",
"error.file.extension.missing":
"The extensions for \"{filename}\" is missing",
"error.file.maxheight": "The height of the image must not exceed {height} pixels", "error.file.maxheight": "The height of the image must not exceed {height} pixels",
"error.file.maxsize": "The file is too large", "error.file.maxsize": "The file is too large",
"error.file.maxwidth": "The width of the image must not exceed {width} pixels", "error.file.maxwidth": "The width of the image must not exceed {width} pixels",
"error.file.mime.differs": "error.file.mime.differs": "The uploaded file must be of the same mime type \"{mime}\"",
"The uploaded file must be of the same mime type \"{mime}\"",
"error.file.mime.forbidden": "The media type \"{mime}\" is not allowed", "error.file.mime.forbidden": "The media type \"{mime}\" is not allowed",
"error.file.mime.invalid": "Invalid mime type: {mime}", "error.file.mime.invalid": "Invalid mime type: {mime}",
"error.file.mime.missing": "error.file.mime.missing": "The media type for \"{filename}\" cannot be detected",
"The media type for \"{filename}\" cannot be detected",
"error.file.minheight": "The height of the image must be at least {height} pixels", "error.file.minheight": "The height of the image must be at least {height} pixels",
"error.file.minsize": "The file is too small", "error.file.minsize": "The file is too small",
"error.file.minwidth": "The width of the image must be at least {width} pixels", "error.file.minwidth": "The width of the image must be at least {width} pixels",
@@ -90,111 +83,77 @@
"error.license.email": "Please enter a valid email address", "error.license.email": "Please enter a valid email address",
"error.license.verification": "The license could not be verified", "error.license.verification": "The license could not be verified",
"error.page.changeSlug.permission": "error.page.changeSlug.permission": "You are not allowed to change the URL appendix for \"{slug}\"",
"You are not allowed to change the URL appendix for \"{slug}\"", "error.page.changeStatus.incomplete": "The page has errors and cannot be published",
"error.page.changeStatus.incomplete": "error.page.changeStatus.permission": "The status for this page cannot be changed",
"The page has errors and cannot be published", "error.page.changeStatus.toDraft.invalid": "The page \"{slug}\" cannot be converted to a draft",
"error.page.changeStatus.permission": "error.page.changeTemplate.invalid": "The template for the page \"{slug}\" cannot be changed",
"The status for this page cannot be changed", "error.page.changeTemplate.permission": "You are not allowed to change the template for \"{slug}\"",
"error.page.changeStatus.toDraft.invalid":
"The page \"{slug}\" cannot be converted to a draft",
"error.page.changeTemplate.invalid":
"The template for the page \"{slug}\" cannot be changed",
"error.page.changeTemplate.permission":
"You are not allowed to change the template for \"{slug}\"",
"error.page.changeTitle.empty": "The title must not be empty", "error.page.changeTitle.empty": "The title must not be empty",
"error.page.changeTitle.permission": "error.page.changeTitle.permission": "You are not allowed to change the title for \"{slug}\"",
"You are not allowed to change the title for \"{slug}\"",
"error.page.create.permission": "You are not allowed to create \"{slug}\"", "error.page.create.permission": "You are not allowed to create \"{slug}\"",
"error.page.delete": "The page \"{slug}\" cannot be deleted", "error.page.delete": "The page \"{slug}\" cannot be deleted",
"error.page.delete.confirm": "Please enter the page title to confirm", "error.page.delete.confirm": "Please enter the page title to confirm",
"error.page.delete.hasChildren": "error.page.delete.hasChildren": "The page has subpages and cannot be deleted",
"The page has subpages and cannot be deleted",
"error.page.delete.permission": "You are not allowed to delete \"{slug}\"", "error.page.delete.permission": "You are not allowed to delete \"{slug}\"",
"error.page.draft.duplicate": "error.page.draft.duplicate": "A page draft with the URL appendix \"{slug}\" already exists",
"A page draft with the URL appendix \"{slug}\" already exists", "error.page.duplicate": "A page with the URL appendix \"{slug}\" already exists",
"error.page.duplicate":
"A page with the URL appendix \"{slug}\" already exists",
"error.page.duplicate.permission": "You are not allowed to duplicate \"{slug}\"", "error.page.duplicate.permission": "You are not allowed to duplicate \"{slug}\"",
"error.page.notFound": "The page \"{slug}\" cannot be found", "error.page.notFound": "The page \"{slug}\" cannot be found",
"error.page.num.invalid": "error.page.num.invalid": "Please enter a valid sorting number. Numbers must not be negative.",
"Please enter a valid sorting number. Numbers must not be negative.",
"error.page.slug.invalid": "Please enter a valid URL prefix", "error.page.slug.invalid": "Please enter a valid URL prefix",
"error.page.sort.permission": "The page \"{slug}\" cannot be sorted", "error.page.sort.permission": "The page \"{slug}\" cannot be sorted",
"error.page.status.invalid": "Please set a valid page status", "error.page.status.invalid": "Please set a valid page status",
"error.page.undefined": "The page cannot be found", "error.page.undefined": "The page cannot be found",
"error.page.update.permission": "You are not allowed to update \"{slug}\"", "error.page.update.permission": "You are not allowed to update \"{slug}\"",
"error.section.files.max.plural": "error.section.files.max.plural": "You must not add more than {max} files to the \"{section}\" section",
"You must not add more than {max} files to the \"{section}\" section", "error.section.files.max.singular": "You must not add more than one file to the \"{section}\" section",
"error.section.files.max.singular": "error.section.files.min.plural": "The \"{section}\" section requires at least {min} files",
"You must not add more than one file to the \"{section}\" section", "error.section.files.min.singular": "The \"{section}\" section requires at least one file",
"error.section.files.min.plural":
"The \"{section}\" section requires at least {min} files",
"error.section.files.min.singular":
"The \"{section}\" section requires at least one file",
"error.section.pages.max.plural": "error.section.pages.max.plural": "You must not add more than {max} pages to the \"{section}\" section",
"You must not add more than {max} pages to the \"{section}\" section", "error.section.pages.max.singular": "You must not add more than one page to the \"{section}\" section",
"error.section.pages.max.singular": "error.section.pages.min.plural": "The \"{section}\" section requires at least {min} pages",
"You must not add more than one page to the \"{section}\" section", "error.section.pages.min.singular": "The \"{section}\" section requires at least one page",
"error.section.pages.min.plural":
"The \"{section}\" section requires at least {min} pages",
"error.section.pages.min.singular":
"The \"{section}\" section requires at least one page",
"error.section.notLoaded": "The section \"{name}\" could not be loaded", "error.section.notLoaded": "The section \"{name}\" could not be loaded",
"error.section.type.invalid": "The section type \"{type}\" is not valid", "error.section.type.invalid": "The section type \"{type}\" is not valid",
"error.site.changeTitle.empty": "The title must not be empty", "error.site.changeTitle.empty": "The title must not be empty",
"error.site.changeTitle.permission": "error.site.changeTitle.permission": "You are not allowed to change the title of the site",
"You are not allowed to change the title of the site",
"error.site.update.permission": "You are not allowed to update the site", "error.site.update.permission": "You are not allowed to update the site",
"error.template.default.notFound": "The default template does not exist", "error.template.default.notFound": "The default template does not exist",
"error.user.changeEmail.permission": "error.user.changeEmail.permission": "You are not allowed to change the email for the user \"{name}\"",
"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": "error.user.changeName.permission": "You are not allowed to change the name for the user \"{name}\"",
"You are not allowed to change the language for the user \"{name}\"", "error.user.changePassword.permission": "You are not allowed to change the password for the user \"{name}\"",
"error.user.changeName.permission": "error.user.changeRole.lastAdmin": "The role for the last admin cannot be changed",
"You are not allowed to change the name for the user \"{name}\"", "error.user.changeRole.permission": "You are not allowed to change the role for the user \"{name}\"",
"error.user.changePassword.permission": "error.user.changeRole.toAdmin": "You are not allowed to promote someone to the admin role",
"You are not allowed to change the password for the user \"{name}\"",
"error.user.changeRole.lastAdmin":
"The role for the last admin cannot be changed",
"error.user.changeRole.permission":
"You are not allowed to change the role for the user \"{name}\"",
"error.user.changeRole.toAdmin":
"You are not allowed to promote someone to the admin role",
"error.user.create.permission": "You are not allowed to create this user", "error.user.create.permission": "You are not allowed to create this user",
"error.user.delete": "The user \"{name}\" cannot be deleted", "error.user.delete": "The user \"{name}\" cannot be deleted",
"error.user.delete.lastAdmin": "The last admin cannot be deleted", "error.user.delete.lastAdmin": "The last admin cannot be deleted",
"error.user.delete.lastUser": "The last user cannot be deleted", "error.user.delete.lastUser": "The last user cannot be deleted",
"error.user.delete.permission": "error.user.delete.permission": "You are not allowed to delete the user \"{name}\"",
"You are not allowed to delete the user \"{name}\"", "error.user.duplicate": "A user with the email address \"{email}\" already exists",
"error.user.duplicate":
"A user with the email address \"{email}\" already exists",
"error.user.email.invalid": "Please enter a valid email address", "error.user.email.invalid": "Please enter a valid email address",
"error.user.language.invalid": "Please enter a valid language", "error.user.language.invalid": "Please enter a valid language",
"error.user.notFound": "The user \"{name}\" cannot be found", "error.user.notFound": "The user \"{name}\" cannot be found",
"error.user.password.invalid": "error.user.password.invalid": "Please enter a valid password. Passwords must be at least 8 characters long.",
"Please enter a valid password. Passwords must be at least 8 characters long.",
"error.user.password.notSame": "The passwords do not match", "error.user.password.notSame": "The passwords do not match",
"error.user.password.undefined": "The user does not have a password", "error.user.password.undefined": "The user does not have a password",
"error.user.role.invalid": "Please enter a valid role", "error.user.role.invalid": "Please enter a valid role",
"error.user.update.permission": "error.user.update.permission": "You are not allowed to update the user \"{name}\"",
"You are not allowed to update the user \"{name}\"",
"error.validation.accepted": "Please confirm", "error.validation.accepted": "Please confirm",
"error.validation.alpha": "Please only enter characters between a-z", "error.validation.alpha": "Please only enter characters between a-z",
"error.validation.alphanum": "error.validation.alphanum": "Please only enter characters between a-z or numerals 0-9",
"Please only enter characters between a-z or numerals 0-9", "error.validation.between": "Please enter a value between \"{min}\" and \"{max}\"",
"error.validation.between":
"Please enter a value between \"{min}\" and \"{max}\"",
"error.validation.boolean": "Please confirm or deny", "error.validation.boolean": "Please confirm or deny",
"error.validation.contains": "error.validation.contains": "Please enter a value that contains \"{needle}\"",
"Please enter a value that contains \"{needle}\"",
"error.validation.date": "Please enter a valid date", "error.validation.date": "Please enter a valid date",
"error.validation.date.after": "Please enter a date after {date}", "error.validation.date.after": "Please enter a date after {date}",
"error.validation.date.before": "Please enter a date before {date}", "error.validation.date.before": "Please enter a date before {date}",
@@ -210,18 +169,14 @@
"error.validation.less": "Please enter a value lower than {max}", "error.validation.less": "Please enter a value lower than {max}",
"error.validation.match": "The value does not match the expected pattern", "error.validation.match": "The value does not match the expected pattern",
"error.validation.max": "Please enter a value equal to or lower than {max}", "error.validation.max": "Please enter a value equal to or lower than {max}",
"error.validation.maxlength": "error.validation.maxlength": "Please enter a shorter value. (max. {max} characters)",
"Please enter a shorter value. (max. {max} characters)",
"error.validation.maxwords": "Please enter no more than {max} word(s)", "error.validation.maxwords": "Please enter no more than {max} word(s)",
"error.validation.min": "Please enter a value equal to or greater than {min}", "error.validation.min": "Please enter a value equal to or greater than {min}",
"error.validation.minlength": "error.validation.minlength": "Please enter a longer value. (min. {min} characters)",
"Please enter a longer value. (min. {min} characters)",
"error.validation.minwords": "Please enter at least {min} word(s)", "error.validation.minwords": "Please enter at least {min} word(s)",
"error.validation.more": "Please enter a greater value than {min}", "error.validation.more": "Please enter a greater value than {min}",
"error.validation.notcontains": "error.validation.notcontains": "Please enter a value that does not contain \"{needle}\"",
"Please enter a value that does not contain \"{needle}\"", "error.validation.notin": "Please don't enter any of the following: ({notIn})",
"error.validation.notin":
"Please don't enter any of the following: ({notIn})",
"error.validation.option": "Please select a valid option", "error.validation.option": "Please select a valid option",
"error.validation.num": "Please enter a valid number", "error.validation.num": "Please enter a valid number",
"error.validation.required": "Please enter something", "error.validation.required": "Please enter something",
@@ -238,8 +193,7 @@
"field.structure.empty": "No entries yet", "field.structure.empty": "No entries yet",
"field.users.empty": "No users selected yet", "field.users.empty": "No users selected yet",
"file.delete.confirm": "file.delete.confirm": "Do you really want to delete <br><strong>{filename}</strong>?",
"Do you really want to delete <br><strong>{filename}</strong>?",
"files": "Files", "files": "Files",
"files.empty": "No files yet", "files.empty": "No files yet",
@@ -251,29 +205,22 @@
"installation": "Installation", "installation": "Installation",
"installation.completed": "The panel has been installed", "installation.completed": "The panel has been installed",
"installation.disabled": "The panel installer is disabled on public servers by default. Please run the installer on a local machine or enable it with the <code>panel.install</code> option.", "installation.disabled": "The panel installer is disabled on public servers by default. Please run the installer on a local machine or enable it with the <code>panel.install</code> option.",
"installation.issues.accounts": "installation.issues.accounts": "The <code>/site/accounts</code> folder does not exist or is not writable",
"The <code>/site/accounts</code> folder does not exist or is not writable", "installation.issues.content": "The <code>/content</code> folder does not exist or is not writable",
"installation.issues.content":
"The <code>/content</code> folder does not exist or is not writable",
"installation.issues.curl": "The <code>CURL</code> extension is required", "installation.issues.curl": "The <code>CURL</code> extension is required",
"installation.issues.headline": "The panel cannot be installed", "installation.issues.headline": "The panel cannot be installed",
"installation.issues.mbstring": "installation.issues.mbstring": "The <code>MB String</code> extension is required",
"The <code>MB String</code> extension is required", "installation.issues.media": "The <code>/media</code> folder does not exist or is not writable",
"installation.issues.media":
"The <code>/media</code> folder does not exist or is not writable",
"installation.issues.php": "Make sure to use <code>PHP 7+</code>", "installation.issues.php": "Make sure to use <code>PHP 7+</code>",
"installation.issues.server": "installation.issues.server": "Kirby requires <code>Apache</code>, <code>Nginx</code> or <code>Caddy</code>",
"Kirby requires <code>Apache</code>, <code>Nginx</code> or <code>Caddy</code>",
"installation.issues.sessions": "The <code>/site/sessions</code> folder does not exist or is not writable", "installation.issues.sessions": "The <code>/site/sessions</code> folder does not exist or is not writable",
"language": "Language", "language": "Language",
"language.code": "Code", "language.code": "Code",
"language.convert": "Make default", "language.convert": "Make default",
"language.convert.confirm": "language.convert.confirm": "<p>Do you really want to convert <strong>{name}</strong> to the default language? This cannot be undone.</p><p>If <strong>{name}</strong> has untranslated content, there will no longer be a valid fallback and parts of your site might be empty.</p>",
"<p>Do you really want to convert <strong>{name}</strong> to the default language? This cannot be undone.</p><p>If <strong>{name}</strong> has untranslated content, there will no longer be a valid fallback and parts of your site might be empty.</p>",
"language.create": "Add a new language", "language.create": "Add a new language",
"language.delete.confirm": "language.delete.confirm": "Do you really want to delete the language <strong>{name}</strong> including all translations? This cannot be undone!",
"Do you really want to delete the language <strong>{name}</strong> including all translations? This cannot be undone!",
"language.deleted": "The language has been deleted", "language.deleted": "The language has been deleted",
"language.direction": "Reading direction", "language.direction": "Reading direction",
"language.direction.ltr": "Left to right", "language.direction.ltr": "Left to right",
@@ -292,8 +239,7 @@
"license": "License", "license": "License",
"license.buy": "Buy a license", "license.buy": "Buy a license",
"license.register": "Register", "license.register": "Register",
"license.register.help": "license.register.help": "You received your license code after the purchase via email. Please copy and paste it to register.",
"You received your license code after the purchase via email. Please copy and paste it to register.",
"license.register.label": "Please enter your license code", "license.register.label": "Please enter your license code",
"license.register.success": "Thank you for supporting Kirby", "license.register.success": "Thank you for supporting Kirby",
"license.unregistered": "This is an unregistered demo of Kirby", "license.unregistered": "This is an unregistered demo of Kirby",
@@ -342,6 +288,7 @@
"on": "on", "on": "on",
"open": "Open", "open": "Open",
"options": "Options", "options": "Options",
"options.none": "No options",
"orientation": "Orientation", "orientation": "Orientation",
"orientation.landscape": "Landscape", "orientation.landscape": "Landscape",
@@ -354,10 +301,8 @@
"page.changeStatus.position": "Please select a position", "page.changeStatus.position": "Please select a position",
"page.changeStatus.select": "Select a new status", "page.changeStatus.select": "Select a new status",
"page.changeTemplate": "Change template", "page.changeTemplate": "Change template",
"page.delete.confirm": "page.delete.confirm": "Do you really want to delete <strong>{title}</strong>?",
"Do you really want to delete <strong>{title}</strong>?", "page.delete.confirm.subpages": "<strong>This page has subpages</strong>. <br>All subpages will be deleted as well.",
"page.delete.confirm.subpages":
"<strong>This page has subpages</strong>. <br>All subpages will be deleted as well.",
"page.delete.confirm.title": "Enter the page title to confirm", "page.delete.confirm.title": "Enter the page title to confirm",
"page.draft.create": "Create draft", "page.draft.create": "Create draft",
"page.duplicate.appendix": "Copy", "page.duplicate.appendix": "Copy",
@@ -365,8 +310,7 @@
"page.duplicate.pages": "Copy pages", "page.duplicate.pages": "Copy pages",
"page.status": "Status", "page.status": "Status",
"page.status.draft": "Draft", "page.status.draft": "Draft",
"page.status.draft.description": "page.status.draft.description": "The page is in draft mode and only visible for logged in editors or via secret link",
"The page is in draft mode and only visible for logged in editors",
"page.status.listed": "Public", "page.status.listed": "Public",
"page.status.listed.description": "The page is public for anyone", "page.status.listed.description": "The page is public for anyone",
"page.status.unlisted": "Unlisted", "page.status.unlisted": "Unlisted",
@@ -388,6 +332,7 @@
"replace": "Replace", "replace": "Replace",
"retry": "Try again", "retry": "Try again",
"revert": "Revert", "revert": "Revert",
"revert.confirm": "Do you really want to <strong>delete all unsaved changes</strong>?",
"role": "Role", "role": "Role",
"role.admin.description": "The admin has all rights", "role.admin.description": "The admin has all rights",
@@ -400,6 +345,9 @@
"save": "Save", "save": "Save",
"search": "Search", "search": "Search",
"search.min": "Enter {min} characters to search",
"search.all": "Show all",
"search.results.none": "No results",
"section.required": "The section is required", "section.required": "The section is required",
@@ -451,8 +399,7 @@
"url.placeholder": "https://example.com", "url.placeholder": "https://example.com",
"user": "User", "user": "User",
"user.blueprint": "user.blueprint": "You can define additional sections and form fields for this user role in <strong>/site/blueprints/users/{role}.yml</strong>",
"You can define additional sections and form fields for this user role in <strong>/site/blueprints/users/{role}.yml</strong>",
"user.changeEmail": "Change email", "user.changeEmail": "Change email",
"user.changeLanguage": "Change language", "user.changeLanguage": "Change language",
"user.changeName": "Rename this user", "user.changeName": "Rename this user",
@@ -463,8 +410,7 @@
"user.changeRole.select": "Select a new role", "user.changeRole.select": "Select a new role",
"user.create": "Add a new user", "user.create": "Add a new user",
"user.delete": "Delete this user", "user.delete": "Delete this user",
"user.delete.confirm": "user.delete.confirm": "Do you really want to delete <br><strong>{email}</strong>?",
"Do you really want to delete <br><strong>{email}</strong>?",
"users": "Users", "users": "Users",

View File

@@ -42,10 +42,8 @@
"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 eliminar la foto de perfil.", "error.avatar.delete.fail": "No se pudo eliminar la foto de perfil.",
"error.avatar.dimensions.invalid": "error.avatar.dimensions.invalid": "Por favor, mantén el ancho y la altura de la imagen de perfil por debajo de 3000 pixeles.",
"Por favor, mantén el ancho y la altura de la imagen de perfil por debajo de 3000 pixeles.", "error.avatar.mime.forbidden": "La foto de perfil debe de ser un archivo JPG o PNG.",
"error.avatar.mime.forbidden":
"La foto de perfil debe de ser un archivo JPG o PNG.",
"error.blueprint.notFound": "El blueprint \"{name}\" no se pudo cargar.", "error.blueprint.notFound": "El blueprint \"{name}\" no se pudo cargar.",
@@ -54,22 +52,17 @@
"error.field.converter.invalid": "Convertidor inválido \"{converter}\"", "error.field.converter.invalid": "Convertidor inválido \"{converter}\"",
"error.file.changeName.empty": "El nombre no debe estar vacío", "error.file.changeName.empty": "El nombre no debe estar vacío",
"error.file.changeName.permission": "error.file.changeName.permission": "No tienes permitido cambiar el nombre de \"{filename}\"",
"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": "error.file.extension.forbidden": "La extensión \"{extension}\" no está permitida.",
"La extensión \"{extension}\" no está permitida.", "error.file.extension.missing": "Falta la extensión para \"{filename}\".",
"error.file.extension.missing":
"Falta la extensión para \"{filename}\".",
"error.file.maxheight": "La altura de la imagen no debe exceder {height} pixeles", "error.file.maxheight": "La altura de la imagen no debe exceder {height} pixeles",
"error.file.maxsize": "El archivo es muy grande", "error.file.maxsize": "El archivo es muy grande",
"error.file.maxwidth": "El ancho de la imagen no debe exceder {width} pixeles", "error.file.maxwidth": "El ancho de la imagen no debe exceder {width} pixeles",
"error.file.mime.differs": "error.file.mime.differs": "El archivo cargado debe ser del mismo tipo mime \"{mime}\".",
"El archivo cargado debe ser del mismo tipo mime \"{mime}\".",
"error.file.mime.forbidden": "El tipo de medios \"{mime}\" no está permitido.", "error.file.mime.forbidden": "El tipo de medios \"{mime}\" no está permitido.",
"error.file.mime.invalid": "Tipo invalido de mime: {mime}", "error.file.mime.invalid": "Tipo invalido de mime: {mime}",
"error.file.mime.missing": "error.file.mime.missing": "No se puede detectar el tipo de medio para \"{filename}\".",
"No se puede detectar el tipo de medio para \"{filename}\".",
"error.file.minheight": "La altura de la imagen debe ser de al menos {height} pixeles", "error.file.minheight": "La altura de la imagen debe ser de al menos {height} pixeles",
"error.file.minsize": "El archivo es muy pequeño", "error.file.minsize": "El archivo es muy pequeño",
"error.file.minwidth": "El ancho de la imagen debe ser de al menos {width} pixeles", "error.file.minwidth": "El ancho de la imagen debe ser de al menos {width} pixeles",
@@ -90,111 +83,77 @@
"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.page.changeSlug.permission": "error.page.changeSlug.permission": "No está permitido cambiar el apéndice de URL para \"{slug}\".",
"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": "error.page.changeStatus.permission": "El estado de esta página no se puede cambiar.",
"La página tiene errores y no puede ser publicada.", "error.page.changeStatus.toDraft.invalid": "La página \"{slug}\" no se puede convertir en un borrador",
"error.page.changeStatus.permission": "error.page.changeTemplate.invalid": "La plantilla para la página \"{slug}\" no se puede cambiar",
"El estado de esta página no se puede cambiar.", "error.page.changeTemplate.permission": "No está permitido cambiar la plantilla para \"{slug}\"",
"error.page.changeStatus.toDraft.invalid":
"La página \"{slug}\" no se puede convertir en un borrador",
"error.page.changeTemplate.invalid":
"La plantilla para la página \"{slug}\" no se puede cambiar",
"error.page.changeTemplate.permission":
"No está permitido cambiar la plantilla para \"{slug}\"",
"error.page.changeTitle.empty": "El título no debe estar vacío.", "error.page.changeTitle.empty": "El título no debe estar vacío.",
"error.page.changeTitle.permission": "error.page.changeTitle.permission": "No tienes permiso para cambiar el título de \"{slug}\"",
"No tienes permiso para cambiar el título de \"{slug}\"",
"error.page.create.permission": "No tienes permiso para crear \"{slug}\"", "error.page.create.permission": "No tienes permiso para crear \"{slug}\"",
"error.page.delete": "La página \"{slug}\" no se puede eliminar", "error.page.delete": "La página \"{slug}\" no se puede eliminar",
"error.page.delete.confirm": "Por favor, introduce el título de la página para confirmar", "error.page.delete.confirm": "Por favor, introduce el título de la página para confirmar",
"error.page.delete.hasChildren": "error.page.delete.hasChildren": "La página tiene subpáginas y no se puede eliminar",
"La página tiene subpáginas y no se puede eliminar",
"error.page.delete.permission": "No tienes permiso para borrar \"{slug}\"", "error.page.delete.permission": "No tienes permiso para borrar \"{slug}\"",
"error.page.draft.duplicate": "error.page.draft.duplicate": "Ya existe un borrador de página con el apéndice de URL \"{slug}\"",
"Ya existe un borrador de página con el apéndice de URL \"{slug}\"", "error.page.duplicate": "Ya existe una página con el apéndice de URL \"{slug}\"",
"error.page.duplicate":
"Ya existe una página con el apéndice de URL \"{slug}\"",
"error.page.duplicate.permission": "No tienes permitido duplicar \"{slug}\"", "error.page.duplicate.permission": "No tienes permitido duplicar \"{slug}\"",
"error.page.notFound": "La página \"{slug}\" no se encuentra", "error.page.notFound": "La página \"{slug}\" no se encuentra",
"error.page.num.invalid": "error.page.num.invalid": "Por favor, introduce un número de posición válido. Los números no deben ser negativos.",
"Por favor, introduce un número de posición válido. Los números no deben ser negativos.",
"error.page.slug.invalid": "Por favor ingresa un prefijo de URL válido", "error.page.slug.invalid": "Por favor ingresa un prefijo de URL válido",
"error.page.sort.permission": "La página \"{slug}\" no se puede ordenar", "error.page.sort.permission": "La página \"{slug}\" no se puede ordenar",
"error.page.status.invalid": "Por favor, establece una estado de página válido", "error.page.status.invalid": "Por favor, establece una estado de página válido",
"error.page.undefined": "La p\u00e1gina no fue encontrada", "error.page.undefined": "La p\u00e1gina no fue encontrada",
"error.page.update.permission": "No tienes permiso para actualizar \"{slug}\"", "error.page.update.permission": "No tienes permiso para actualizar \"{slug}\"",
"error.section.files.max.plural": "error.section.files.max.plural": "No debes agregar más de {max} archivos a la sección \"{section}\"",
"No debes agregar más de {max} archivos a la sección \"{section}\"", "error.section.files.max.singular": "No debes agregar más de un archivo a la sección \"{section}\"",
"error.section.files.max.singular": "error.section.files.min.plural": "La sección \"{section}\" requiere al menos {min} archivos",
"No debes agregar más de un archivo a la sección \"{section}\"", "error.section.files.min.singular": "La sección \"{section}\" requiere al menos un archivo",
"error.section.files.min.plural":
"La sección \"{section}\" requiere al menos {min} archivos",
"error.section.files.min.singular":
"La sección \"{section}\" requiere al menos un archivo",
"error.section.pages.max.plural": "error.section.pages.max.plural": "No debes agregar más de {max} páginas a la sección \"{section}\"",
"No debes agregar más de {max} páginas a la sección \"{section}\"", "error.section.pages.max.singular": "No debes agregar más de una página a la sección \"{section}\"",
"error.section.pages.max.singular": "error.section.pages.min.plural": "La sección \"{section}\" requiere al menos {min} páginas",
"No debes agregar más de una página a la sección \"{section}\"", "error.section.pages.min.singular": "La sección \"{section}\" requiere al menos una página",
"error.section.pages.min.plural":
"La sección \"{section}\" requiere al menos {min} páginas",
"error.section.pages.min.singular":
"La sección \"{section}\" requiere al menos una página",
"error.section.notLoaded": "La sección \"{name}\" no se pudo cargar", "error.section.notLoaded": "La sección \"{name}\" no se pudo cargar",
"error.section.type.invalid": "La sección \"{type}\" no es valida", "error.section.type.invalid": "La sección \"{type}\" no es valida",
"error.site.changeTitle.empty": "El título no debe estar vacío.", "error.site.changeTitle.empty": "El título no debe estar vacío.",
"error.site.changeTitle.permission": "error.site.changeTitle.permission": "No tienes permiso para cambiar el título del sitio",
"No tienes permiso para cambiar el título del sitio",
"error.site.update.permission": "No tienes permiso de actualizar el sitio", "error.site.update.permission": "No tienes permiso de actualizar el sitio",
"error.template.default.notFound": "La plantilla predeterminada no existe", "error.template.default.notFound": "La plantilla predeterminada no existe",
"error.user.changeEmail.permission": "error.user.changeEmail.permission": "No tienes permiso para cambiar el email del usuario \"{name}\"",
"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": "error.user.changeName.permission": "No tienes permiso para cambiar el nombre del usuario \"{name}\"",
"No tienes permiso para cambiar el idioma del usuario \"{name}\"", "error.user.changePassword.permission": "No tienes permiso para cambiar la contraseña del usuario \"{name}\"",
"error.user.changeName.permission": "error.user.changeRole.lastAdmin": "El rol del último administrador no puede ser cambiado",
"No tienes permiso para cambiar el nombre del usuario \"{name}\"", "error.user.changeRole.permission": "No tienes permiso para cambiar el rol del usuario \"{name}\"",
"error.user.changePassword.permission": "error.user.changeRole.toAdmin": "No tienes permitido promover a alguien al rol de admin",
"No tienes permiso para cambiar la contraseña del usuario \"{name}\"",
"error.user.changeRole.lastAdmin":
"El rol del último administrador no puede ser cambiado",
"error.user.changeRole.permission":
"No tienes permiso para cambiar el rol del usuario \"{name}\"",
"error.user.changeRole.toAdmin":
"No tienes permitido promover a alguien al rol de admin",
"error.user.create.permission": "No tienes permiso de crear este usuario", "error.user.create.permission": "No tienes permiso de crear este usuario",
"error.user.delete": "El ususario no pudo ser eliminado", "error.user.delete": "El ususario no pudo ser eliminado",
"error.user.delete.lastAdmin": "Usted no puede borrar el \u00faltimo administrador", "error.user.delete.lastAdmin": "Usted no puede borrar el \u00faltimo administrador",
"error.user.delete.lastUser": "El último usuario no puede ser borrado", "error.user.delete.lastUser": "El último usuario no puede ser borrado",
"error.user.delete.permission": "error.user.delete.permission": "Usted no tiene permitido borrar este usuario",
"Usted no tiene permitido borrar este usuario", "error.user.duplicate": "Ya existe un usuario con el email \"{email}\"",
"error.user.duplicate":
"Ya existe un usuario con el email \"{email}\"",
"error.user.email.invalid": "Por favor ingresa un correo electrónico valido", "error.user.email.invalid": "Por favor ingresa un correo electrónico valido",
"error.user.language.invalid": "Por favor ingresa un idioma valido", "error.user.language.invalid": "Por favor ingresa un idioma valido",
"error.user.notFound": "El usuario no pudo ser encontrado", "error.user.notFound": "El usuario no pudo ser encontrado",
"error.user.password.invalid": "error.user.password.invalid": "Por favor ingresa una contraseña valida. Las contraseñas deben tener al menos 8 caracteres de largo.",
"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.role.invalid": "Por favor ingresa un rol valido", "error.user.role.invalid": "Por favor ingresa un rol valido",
"error.user.update.permission": "error.user.update.permission": "No tienes permiso para actualizar al usuario \"{name}\"",
"No tienes permiso para actualizar al usuario \"{name}\"",
"error.validation.accepted": "Por favor, confirma", "error.validation.accepted": "Por favor, confirma",
"error.validation.alpha": "Por favor ingrese solo caracteres entre a-z", "error.validation.alpha": "Por favor ingrese solo caracteres entre a-z",
"error.validation.alphanum": "error.validation.alphanum": "Por favor ingrese solo caracteres entre a-z o números entre 0-9",
"Por favor ingrese solo caracteres entre a-z o números entre 0-9", "error.validation.between": "Por favor ingrese valores entre \"{min}\" y \"{max}\"",
"error.validation.between":
"Por favor ingrese valores entre \"{min}\" y \"{max}\"",
"error.validation.boolean": "Por favor confirme o niegue", "error.validation.boolean": "Por favor confirme o niegue",
"error.validation.contains": "error.validation.contains": "Por favor ingrese valores que contengan \"{needle}\"",
"Por favor ingrese valores que contengan \"{needle}\"",
"error.validation.date": "Por favor ingresa una fecha válida", "error.validation.date": "Por favor ingresa una fecha válida",
"error.validation.date.after": "Por favor introduce una fecha posterior a {date}", "error.validation.date.after": "Por favor introduce una fecha posterior a {date}",
"error.validation.date.before": "Por favor introduce una fecha anterior a {date}", "error.validation.date.before": "Por favor introduce una fecha anterior a {date}",
@@ -210,18 +169,14 @@
"error.validation.less": "Por favor ingresa un valor menor a {max}", "error.validation.less": "Por favor ingresa un valor menor a {max}",
"error.validation.match": "El valor no coincide con el patrón esperado", "error.validation.match": "El valor no coincide con el patrón esperado",
"error.validation.max": "Por favor ingresa un valor menor o igual a {max}", "error.validation.max": "Por favor ingresa un valor menor o igual a {max}",
"error.validation.maxlength": "error.validation.maxlength": "Por favor ingresa un valor mas corto. (max. {max} caracteres)",
"Por favor ingresa un valor mas corto. (max. {max} caracteres)",
"error.validation.maxwords": "Por favor ingresa no mas de {max} palabra(s)", "error.validation.maxwords": "Por favor ingresa no mas de {max} palabra(s)",
"error.validation.min": "Por favor ingresa un valor mayor o igual a {min}", "error.validation.min": "Por favor ingresa un valor mayor o igual a {min}",
"error.validation.minlength": "error.validation.minlength": "Por favor ingresa un valor mas largo. (min. {min} caracteres)",
"Por favor ingresa un valor mas largo. (min. {min} caracteres)",
"error.validation.minwords": "Por favor ingresa al menos {min} palabra(s)", "error.validation.minwords": "Por favor ingresa al menos {min} palabra(s)",
"error.validation.more": "Por favor ingresa un valor mayor a {min}", "error.validation.more": "Por favor ingresa un valor mayor a {min}",
"error.validation.notcontains": "error.validation.notcontains": "Por favor ingresa un valor que no contenga \"{needle}\"",
"Por favor ingresa un valor que no contenga \"{needle}\"", "error.validation.notin": "Por favor no ingreses ninguno de las siguientes: ({notIn})",
"error.validation.notin":
"Por favor no ingreses ninguno de las siguientes: ({notIn})",
"error.validation.option": "Por favor selecciona una de las opciones válidas", "error.validation.option": "Por favor selecciona una de las opciones válidas",
"error.validation.num": "Por favor ingresa un numero válido", "error.validation.num": "Por favor ingresa un numero válido",
"error.validation.required": "Por favor ingresa algo", "error.validation.required": "Por favor ingresa algo",
@@ -238,8 +193,7 @@
"field.structure.empty": "A\u00fan no existen entradas.", "field.structure.empty": "A\u00fan no existen entradas.",
"field.users.empty": "Aún no ha seleccionado ningún usuario", "field.users.empty": "Aún no ha seleccionado ningún usuario",
"file.delete.confirm": "file.delete.confirm": "\u00bfEst\u00e1s seguro que deseas eliminar este archivo?",
"\u00bfEst\u00e1s seguro que deseas eliminar este archivo?",
"files": "Archivos", "files": "Archivos",
"files.empty": "Aún no existen archivos", "files.empty": "Aún no existen archivos",
@@ -251,29 +205,22 @@
"installation": "Instalación", "installation": "Instalación",
"installation.completed": "El panel ha sido instalado.", "installation.completed": "El panel ha sido instalado.",
"installation.disabled": "El instalador del panel está deshabilitado en servidores públicos por defecto. Ejecute el instalador en una máquina local o habilítelo con la opción panel.install.", "installation.disabled": "El instalador del panel está deshabilitado en servidores públicos por defecto. Ejecute el instalador en una máquina local o habilítelo con la opción panel.install.",
"installation.issues.accounts": "installation.issues.accounts": "La carpeta <code>/site/accounts</code> no existe o no posee permisos de escritura.",
"La carpeta <code>/site/accounts</code> no existe o no posee permisos de escritura.", "installation.issues.content": "La carpeta <code>/content</code> no existe o no posee permisos de escritura.",
"installation.issues.content":
"La carpeta <code>/content</code> no existe o no posee permisos de escritura.",
"installation.issues.curl": "Se requiere la extensión <code>CURL</code>.", "installation.issues.curl": "Se requiere la extensión <code>CURL</code>.",
"installation.issues.headline": "El panel no puede ser instalado.", "installation.issues.headline": "El panel no puede ser instalado.",
"installation.issues.mbstring": "installation.issues.mbstring": "Se requiere la extensión <code>MB String</code>.",
"Se requiere la extensión <code>MB String</code>.", "installation.issues.media": "La carpeta <code>/media</code> no existe o no posee permisos de escritura.",
"installation.issues.media":
"La carpeta <code>/media</code> no existe o no posee permisos de escritura.",
"installation.issues.php": "Asegurese de estar usando <code>PHP 7+</code>", "installation.issues.php": "Asegurese de estar usando <code>PHP 7+</code>",
"installation.issues.server": "installation.issues.server": "Kirby requiere <code>Apache</code>, <code>Nginx</code>, <code>Caddy</code>",
"Kirby requiere <code>Apache</code>, <code>Nginx</code>, <code>Caddy</code>",
"installation.issues.sessions": "La carpeta <code>/site/sessions</code> no existe o no posee permisos de escritura.", "installation.issues.sessions": "La carpeta <code>/site/sessions</code> no existe o no posee permisos de escritura.",
"language": "Idioma", "language": "Idioma",
"language.code": "Código", "language.code": "Código",
"language.convert": "Hacer por defecto", "language.convert": "Hacer por defecto",
"language.convert.confirm": "language.convert.confirm": "<p>Realmente deseas convertir <strong>{name}</strong> al idioma por defecto? Esta acción no se puede deshacer.</p><p>Si <strong>{name}</strong> tiene contenido sin traducir, no habrá vuelta atras y tu sitio puede quedar con partes sin contenido.</p>",
"<p>Realmente deseas convertir <strong>{name}</strong> al idioma por defecto? Esta acción no se puede deshacer.</p><p>Si <strong>{name}</strong> tiene contenido sin traducir, no habrá vuelta atras y tu sitio puede quedar con partes sin contenido.</p>",
"language.create": "Añadir nuevo idioma", "language.create": "Añadir nuevo idioma",
"language.delete.confirm": "language.delete.confirm": "<p> ",
"<p> ",
"language.deleted": "El idioma ha sido borrado", "language.deleted": "El idioma ha sido borrado",
"language.direction": "Dirección de lectura", "language.direction": "Dirección de lectura",
"language.direction.ltr": "De Izquierda a derecha", "language.direction.ltr": "De Izquierda a derecha",
@@ -292,8 +239,7 @@
"license": "Licencia", "license": "Licencia",
"license.buy": "Comprar una licencia", "license.buy": "Comprar una licencia",
"license.register": "Registrar", "license.register": "Registrar",
"license.register.help": "license.register.help": "Recibió su código de licencia después de la compra por correo electrónico. Por favor copie y pegue para registrarse.",
"Recibió su código de licencia después de la compra por correo electrónico. Por favor copie y pegue para registrarse.",
"license.register.label": "Por favor, ingresa tu código de licencia", "license.register.label": "Por favor, ingresa tu código de licencia",
"license.register.success": "Gracias por apoyar a Kirby", "license.register.success": "Gracias por apoyar a Kirby",
"license.unregistered": "Este es un demo no registrado de Kirby", "license.unregistered": "Este es un demo no registrado de Kirby",
@@ -354,10 +300,8 @@
"page.changeStatus.position": "Por favor selecciona una posición", "page.changeStatus.position": "Por favor selecciona una posición",
"page.changeStatus.select": "Selecciona un nuevo estado", "page.changeStatus.select": "Selecciona un nuevo estado",
"page.changeTemplate": "Cambiar plantilla", "page.changeTemplate": "Cambiar plantilla",
"page.delete.confirm": "page.delete.confirm": "¿Estás seguro que deseas eliminar <strong>{title}</strong>?",
"¿Estás seguro que deseas eliminar <strong>{title}</strong>?", "page.delete.confirm.subpages": "<strong>Esta página tiene subpáginas</strong>. <br>Todas las súbpaginas serán eliminadas también.",
"page.delete.confirm.subpages":
"<strong>Esta página tiene subpáginas</strong>. <br>Todas las súbpaginas serán eliminadas también.",
"page.delete.confirm.title": "Introduce el título de la página para confirmar", "page.delete.confirm.title": "Introduce 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",
@@ -365,8 +309,7 @@
"page.duplicate.pages": "Copiar páginas", "page.duplicate.pages": "Copiar páginas",
"page.status": "Estado", "page.status": "Estado",
"page.status.draft": "Borrador", "page.status.draft": "Borrador",
"page.status.draft.description": "page.status.draft.description": "The page is in draft mode and only visible for logged in editors or via secret link",
"La página está en modo de borrador y sólo es visible para los editores registrados",
"page.status.listed": "Pública", "page.status.listed": "Pública",
"page.status.listed.description": "La página es pública para cualquiera", "page.status.listed.description": "La página es pública para cualquiera",
"page.status.unlisted": "No publicada", "page.status.unlisted": "No publicada",
@@ -388,6 +331,7 @@
"replace": "Reemplazar", "replace": "Reemplazar",
"retry": "Reintentar", "retry": "Reintentar",
"revert": "Revertir", "revert": "Revertir",
"revert.confirm": "Do you really want to <strong>delete all unsaved changes</strong>?",
"role": "Rol", "role": "Rol",
"role.admin.description": "El administrador tiene todos los derechos", "role.admin.description": "El administrador tiene todos los derechos",
@@ -451,8 +395,7 @@
"url.placeholder": "https://ejemplo.com", "url.placeholder": "https://ejemplo.com",
"user": "Usuario", "user": "Usuario",
"user.blueprint": "user.blueprint": "Puedes definir secciones adicionales y campos de formulario para este rol de usuario en <strong>/site/blueprints/users/{role}.yml</strong>",
"Puedes definir secciones adicionales y campos de formulario para este rol de usuario en <strong>/site/blueprints/users/{role}.yml</strong>",
"user.changeEmail": "Cambiar correo electrónico", "user.changeEmail": "Cambiar correo electrónico",
"user.changeLanguage": "Cambiar idioma", "user.changeLanguage": "Cambiar idioma",
"user.changeName": "Renombrar este usuario", "user.changeName": "Renombrar este usuario",
@@ -463,8 +406,7 @@
"user.changeRole.select": "Selecciona un nuevo rol", "user.changeRole.select": "Selecciona un nuevo rol",
"user.create": "Agregar un nuevo usuario", "user.create": "Agregar un nuevo usuario",
"user.delete": "Eliminar este usuario", "user.delete": "Eliminar este usuario",
"user.delete.confirm": "user.delete.confirm": "¿Estás seguro que deseas eliminar <br><strong>{email}</strong>?",
"¿Estás seguro que deseas eliminar <br><strong>{email}</strong>?",
"users": "Usuarios", "users": "Usuarios",

View File

@@ -42,10 +42,8 @@
"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",
"error.avatar.dimensions.invalid": "error.avatar.dimensions.invalid": "Por favor, mantenga el ancho y la altura de la imagen de perfil debajo de 3000 píxeles",
"Por favor, mantenga el ancho y la altura de la imagen de perfil debajo de 3000 píxeles", "error.avatar.mime.forbidden": "La imagen del perfil debe ser JPEG o PNG.",
"error.avatar.mime.forbidden":
"La imagen del perfil debe ser JPEG o PNG.",
"error.blueprint.notFound": "El blueprint \"{name}\" no pudo ser cargado", "error.blueprint.notFound": "El blueprint \"{name}\" no pudo ser cargado",
@@ -54,22 +52,17 @@
"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": "The name must not be empty",
"error.file.changeName.permission": "error.file.changeName.permission": "No tienes permitido cambiar el nombre de \"{filename}\"",
"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": "error.file.extension.forbidden": "La extensión \"{extension}\" no está permitida",
"La extensión \"{extension}\" no está permitida", "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": "The height of the image must not exceed {height} pixels",
"error.file.maxsize": "The file is too large", "error.file.maxsize": "The file is too large",
"error.file.maxwidth": "The width of the image must not exceed {width} pixels", "error.file.maxwidth": "The width of the image must not exceed {width} pixels",
"error.file.mime.differs": "error.file.mime.differs": "El archivo cargado debe ser del mismo tipo mime \"{mime}\"",
"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": "Invalid mime type: {mime}",
"error.file.mime.missing": "error.file.mime.missing": "El tipo de medio para \"{filename}\" no pudo ser detectado",
"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": "The height of the image must be at least {height} pixels",
"error.file.minsize": "The file is too small", "error.file.minsize": "The file is too small",
"error.file.minwidth": "The width of the image must be at least {width} pixels", "error.file.minwidth": "The width of the image must be at least {width} pixels",
@@ -90,111 +83,77 @@
"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": "The license could not be verified",
"error.page.changeSlug.permission": "error.page.changeSlug.permission": "No está permitido cambiar el apéndice de URL para \"{slug}\"",
"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": "error.page.changeStatus.permission": "El estado de esta página no se puede cambiar",
"La página tiene errores y no puede ser publicada.", "error.page.changeStatus.toDraft.invalid": "La página \"{slug}\" no se puede convertir a borrador",
"error.page.changeStatus.permission": "error.page.changeTemplate.invalid": "La plantilla para la página \"{slug}\" no se puede cambiar",
"El estado de esta página no se puede cambiar", "error.page.changeTemplate.permission": "No tienes permitido cambiar la plantilla para \"{slug}\"",
"error.page.changeStatus.toDraft.invalid":
"La página \"{slug}\" no se puede convertir a borrador",
"error.page.changeTemplate.invalid":
"La plantilla para la página \"{slug}\" no se puede cambiar",
"error.page.changeTemplate.permission":
"No tienes permitido cambiar la plantilla para \"{slug}\"",
"error.page.changeTitle.empty": "El título no debe estar vacío.", "error.page.changeTitle.empty": "El título no debe estar vacío.",
"error.page.changeTitle.permission": "error.page.changeTitle.permission": "No tienes permitido cambiar el título por \"{slug}\"",
"No tienes permitido cambiar el título por \"{slug}\"",
"error.page.create.permission": "No tienes permitido crear \"{slug}\"", "error.page.create.permission": "No tienes permitido crear \"{slug}\"",
"error.page.delete": "La página \"{slug}\" no puede ser eliminada", "error.page.delete": "La página \"{slug}\" no puede ser eliminada",
"error.page.delete.confirm": "Por favor, introduzca el título de la página para confirmar", "error.page.delete.confirm": "Por favor, introduzca el título de la página para confirmar",
"error.page.delete.hasChildren": "error.page.delete.hasChildren": "La página tiene subpáginas y no se puede eliminar",
"La página tiene subpáginas y no se puede eliminar",
"error.page.delete.permission": "No tienes permiso de eliminar \"{slug}\"", "error.page.delete.permission": "No tienes permiso de eliminar \"{slug}\"",
"error.page.draft.duplicate": "error.page.draft.duplicate": "Un borrador de página con el apéndice de URL \"{slug}\" ya existe",
"Un borrador de página con el apéndice de URL \"{slug}\" ya existe", "error.page.duplicate": "Una página con el apéndice de URL. \"{slug}\" ya existe",
"error.page.duplicate":
"Una página con el apéndice de URL. \"{slug}\" ya existe",
"error.page.duplicate.permission": "You are not allowed to duplicate \"{slug}\"", "error.page.duplicate.permission": "You are not allowed to duplicate \"{slug}\"",
"error.page.notFound": "La página \"{slug}\" no puede ser encontrada", "error.page.notFound": "La página \"{slug}\" no puede ser encontrada",
"error.page.num.invalid": "error.page.num.invalid": "Por favor, introduzca un número válido. Estos no deben ser negativos.",
"Por favor, introduzca un número válido. Estos no deben ser negativos.",
"error.page.slug.invalid": "Por favor ingrese un prefijo de URL válido", "error.page.slug.invalid": "Por favor ingrese un prefijo de URL válido",
"error.page.sort.permission": "La página \"{slug}\" no se puede ordenar", "error.page.sort.permission": "La página \"{slug}\" no se puede ordenar",
"error.page.status.invalid": "Por favor, establezca un estado de página válido", "error.page.status.invalid": "Por favor, establezca un estado de página válido",
"error.page.undefined": "La página no se puede encontrar", "error.page.undefined": "La página no se puede encontrar",
"error.page.update.permission": "No tienes permitido actualizar \"{slug}\"", "error.page.update.permission": "No tienes permitido actualizar \"{slug}\"",
"error.section.files.max.plural": "error.section.files.max.plural": "No debes agregar más de {max} archivos a la sección \"{section}\"",
"No debes agregar más de {max} archivos a la sección \"{section}\"", "error.section.files.max.singular": "No debes agregar más de 1 archivo a la sección \"{section}\"",
"error.section.files.max.singular": "error.section.files.min.plural": "La sección \"{section}\" requiere al menos {min} archivos",
"No debes agregar más de 1 archivo a la sección \"{section}\"", "error.section.files.min.singular": "La sección \"{section}\" requiere al menos un archivo",
"error.section.files.min.plural":
"La sección \"{section}\" requiere al menos {min} archivos",
"error.section.files.min.singular":
"La sección \"{section}\" requiere al menos un archivo",
"error.section.pages.max.plural": "error.section.pages.max.plural": "No debe agregar más de {max} páginas a la sección \"{section}\"",
"No debe agregar más de {max} páginas a la sección \"{section}\"", "error.section.pages.max.singular": "No debe agregar más de una página a la sección \"{section}\"",
"error.section.pages.max.singular": "error.section.pages.min.plural": "La sección \"{section}\" requiere al menos {min} páginas",
"No debe agregar más de una página a la sección \"{section}\"", "error.section.pages.min.singular": "La sección \"{section}\" requiere al menos una página",
"error.section.pages.min.plural":
"La sección \"{section}\" requiere al menos {min} páginas",
"error.section.pages.min.singular":
"La sección \"{section}\" requiere al menos una página",
"error.section.notLoaded": "La sección \"{name}\" no pudo ser cargada", "error.section.notLoaded": "La sección \"{name}\" no pudo ser cargada",
"error.section.type.invalid": "El sección tipo \"{tipo}\" no es válido", "error.section.type.invalid": "El sección tipo \"{tipo}\" no es válido",
"error.site.changeTitle.empty": "El título no debe estar vacío.", "error.site.changeTitle.empty": "El título no debe estar vacío.",
"error.site.changeTitle.permission": "error.site.changeTitle.permission": "No está permitido cambiar el título del sitio",
"No está permitido cambiar el título del sitio",
"error.site.update.permission": "No tienes permitido actualizar el sitio", "error.site.update.permission": "No tienes permitido actualizar el sitio",
"error.template.default.notFound": "La plantilla por defecto no existe", "error.template.default.notFound": "La plantilla por defecto no existe",
"error.user.changeEmail.permission": "error.user.changeEmail.permission": "No tienes permitido cambiar el correo electrónico para el usuario \"{name}\"",
"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": "error.user.changeName.permission": "No tienes permitido cambiar el nombre del usuario \"{name}\"",
"No tienes permitido cambiar el idioma para el usuario \"{name}\"", "error.user.changePassword.permission": "No tienes permitido cambiar la contraseña del usuario \"{name}\"",
"error.user.changeName.permission": "error.user.changeRole.lastAdmin": "El rol para el último administrador no puede ser cambiado",
"No tienes permitido cambiar el nombre del usuario \"{name}\"", "error.user.changeRole.permission": "No tienes permitido cambiar el rol del usuario \"{name}\"",
"error.user.changePassword.permission": "error.user.changeRole.toAdmin": "You are not allowed to promote someone to the admin role",
"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.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.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",
"error.user.delete.lastUser": "El último usuario no puede ser eliminado", "error.user.delete.lastUser": "El último usuario no puede ser eliminado",
"error.user.delete.permission": "error.user.delete.permission": "No tienes permitido eliminar el usuario \"{name}\"",
"No tienes permitido eliminar el usuario \"{name}\"", "error.user.duplicate": "Un usuario con la dirección de correo electrónico \"{email}\" ya existe",
"error.user.duplicate":
"Un usuario con la dirección de correo electrónico \"{email}\" ya existe",
"error.user.email.invalid": "Por favor, introduce una dirección de correo electrónico válida", "error.user.email.invalid": "Por favor, introduce una dirección de correo electrónico válida",
"error.user.language.invalid": "Por favor ingrese un idioma válido", "error.user.language.invalid": "Por favor ingrese un idioma válido",
"error.user.notFound": "El usuario \"{name}\" no pudo ser encontrado", "error.user.notFound": "El usuario \"{name}\" no pudo ser encontrado",
"error.user.password.invalid": "error.user.password.invalid": "Por favor introduce una contraseña válida. Las contraseñas deben tener al menos 8 caracteres de largo.",
"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.role.invalid": "Por favor ingrese un rol válido", "error.user.role.invalid": "Por favor ingrese un rol válido",
"error.user.update.permission": "error.user.update.permission": "No tienes permitido actualizar al usuario \"{name}\"",
"No tienes permitido actualizar al usuario \"{name}\"",
"error.validation.accepted": "Por favor, confirma", "error.validation.accepted": "Por favor, confirma",
"error.validation.alpha": "Por favor solo ingresa caracteres entre a-z", "error.validation.alpha": "Por favor solo ingresa caracteres entre a-z",
"error.validation.alphanum": "error.validation.alphanum": "Por favor solo ingrese caracteres entre a-z o numerales 0-9",
"Por favor solo ingrese caracteres entre a-z o numerales 0-9", "error.validation.between": "Por favor, introduzca un valor entre \"{min}\" y \"{max}\"",
"error.validation.between":
"Por favor, introduzca un valor entre \"{min}\" y \"{max}\"",
"error.validation.boolean": "Por favor confirme o rechace", "error.validation.boolean": "Por favor confirme o rechace",
"error.validation.contains": "error.validation.contains": "Por favor ingrese un valor que contenga \"{needle}\"",
"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": "Please enter a date after {date}",
"error.validation.date.before": "Please enter a date before {date}", "error.validation.date.before": "Please enter a date before {date}",
@@ -210,18 +169,14 @@
"error.validation.less": "Por favor, introduzca un valor inferior a {max}", "error.validation.less": "Por favor, introduzca un valor inferior a {max}",
"error.validation.match": "El valor no coincide con el patrón esperado", "error.validation.match": "El valor no coincide con el patrón esperado",
"error.validation.max": "Por favor, introduzca un valor igual o inferior a {max}", "error.validation.max": "Por favor, introduzca un valor igual o inferior a {max}",
"error.validation.maxlength": "error.validation.maxlength": "Por favor, introduzca un valor más corto. (max. {max} caracteres)",
"Por favor, introduzca un valor más corto. (max. {max} caracteres)",
"error.validation.maxwords": "Por favor ingrese no más de {max} palabra(s)", "error.validation.maxwords": "Por favor ingrese no más de {max} palabra(s)",
"error.validation.min": "Por favor, introduzca un valor igual o mayor a {min}", "error.validation.min": "Por favor, introduzca un valor igual o mayor a {min}",
"error.validation.minlength": "error.validation.minlength": "Por favor, introduzca un valor más largo. (min. {min} caracteres)",
"Por favor, introduzca un valor más largo. (min. {min} caracteres)",
"error.validation.minwords": "Por favor ingrese al menos {min} palabra(s)", "error.validation.minwords": "Por favor ingrese al menos {min} palabra(s)",
"error.validation.more": "Por favor, introduzca un valor mayor a {min}", "error.validation.more": "Por favor, introduzca un valor mayor a {min}",
"error.validation.notcontains": "error.validation.notcontains": "Por favor ingrese un valor que no contenga \"{needle}\"",
"Por favor ingrese un valor que no contenga \"{needle}\"", "error.validation.notin": "Por favor, no ingrese ninguno de los siguientes: ({notIn})",
"error.validation.notin":
"Por favor, no ingrese ninguno de los siguientes: ({notIn})",
"error.validation.option": "Por favor seleccione una opción válida", "error.validation.option": "Por favor seleccione una opción válida",
"error.validation.num": "Por favor ingrese un número valido", "error.validation.num": "Por favor ingrese un número valido",
"error.validation.required": "Por favor ingrese algo", "error.validation.required": "Por favor ingrese algo",
@@ -238,8 +193,7 @@
"field.structure.empty": "Aún no hay entradas", "field.structure.empty": "Aún no hay entradas",
"field.users.empty": "Aún no hay usuarios seleccionados", "field.users.empty": "Aún no hay usuarios seleccionados",
"file.delete.confirm": "file.delete.confirm": "¿Realmente quieres eliminar <br><strong>{filename}</strong>?",
"¿Realmente quieres eliminar <br><strong>{filename}</strong>?",
"files": "Archivos", "files": "Archivos",
"files.empty": "Aún no hay archivos", "files.empty": "Aún no hay archivos",
@@ -251,29 +205,22 @@
"installation": "Instalación", "installation": "Instalación",
"installation.completed": "El panel ha sido instalado", "installation.completed": "El panel ha sido instalado",
"installation.disabled": "El instalador del panel está deshabilitado en servidores públicos por defecto. Ejecute el instalador en una máquina local o habilítelo con la opción <code>panel.install</code>.", "installation.disabled": "El instalador del panel está deshabilitado en servidores públicos por defecto. Ejecute el instalador en una máquina local o habilítelo con la opción <code>panel.install</code>.",
"installation.issues.accounts": "installation.issues.accounts": "La carpeta <code>/site/accounts</code> no existe o no se puede escribir",
"La carpeta <code>/site/accounts</code> no existe o no se puede escribir", "installation.issues.content": "La carpeta <code>/content</code> no existe o no se puede escribir",
"installation.issues.content":
"La carpeta <code>/content</code> no existe o no se puede escribir",
"installation.issues.curl": "La extensión <code>CURL</code> es requerida", "installation.issues.curl": "La extensión <code>CURL</code> es requerida",
"installation.issues.headline": "No se pudo instalar el panel", "installation.issues.headline": "No se pudo instalar el panel",
"installation.issues.mbstring": "installation.issues.mbstring": "La extension <code>MB String</code> es requerida",
"La extension <code>MB String</code> es requerida", "installation.issues.media": "La carpeta <code>/media</code> no existe o no se puede escribir",
"installation.issues.media":
"La carpeta <code>/media</code> no existe o no se puede escribir",
"installation.issues.php": "Asegúrate de usar <code>PHP 7+</code>", "installation.issues.php": "Asegúrate de usar <code>PHP 7+</code>",
"installation.issues.server": "installation.issues.server": "Kirby requiere <code>Apache</code>, <code>Nginx</code> o <code>Caddy</code>",
"Kirby requiere <code>Apache</code>, <code>Nginx</code> o <code>Caddy</code>",
"installation.issues.sessions": "La carpeta <code>/site/sessions</code> no existe o no se puede escribir", "installation.issues.sessions": "La carpeta <code>/site/sessions</code> no existe o no se puede escribir",
"language": "Idioma", "language": "Idioma",
"language.code": "Código", "language.code": "Código",
"language.convert": "Hacer por defecto", "language.convert": "Hacer por defecto",
"language.convert.confirm": "language.convert.confirm": "<p¿Realmente quieres convertir <strong>{name}</strong> al idioma por defecto? Esto no se puede deshacer.</p><p>Si <strong>{name}</strong> tiene contenido sin traducir, ya no habrá un respaldo válido y algunas partes de su sitio podrían estar vacías.</p>",
"<p¿Realmente quieres convertir <strong>{name}</strong> al idioma por defecto? Esto no se puede deshacer.</p><p>Si <strong>{name}</strong> tiene contenido sin traducir, ya no habrá un respaldo válido y algunas partes de su sitio podrían estar vacías.</p>",
"language.create": "Añadir un nuevo idioma", "language.create": "Añadir un nuevo idioma",
"language.delete.confirm": "language.delete.confirm": "¿De verdad quieres eliminar el idioma <strong>{name}</strong> incluyendo todas las traducciones? ¡Esto no se puede deshacer!",
"¿De verdad quieres eliminar el idioma <strong>{name}</strong> incluyendo todas las traducciones? ¡Esto no se puede deshacer!",
"language.deleted": "El idioma ha sido eliminado", "language.deleted": "El idioma ha sido eliminado",
"language.direction": "Leyendo dirección", "language.direction": "Leyendo dirección",
"language.direction.ltr": "De izquierda a derecha", "language.direction.ltr": "De izquierda a derecha",
@@ -292,8 +239,7 @@
"license": "Licencia", "license": "Licencia",
"license.buy": "Comprar una licencia", "license.buy": "Comprar una licencia",
"license.register": "Registro", "license.register": "Registro",
"license.register.help": "license.register.help": "Recibió su código de licencia después de la compra por correo electrónico. Por favor copie y pegue para registrarse.",
"Recibió su código de licencia después de la compra por correo electrónico. Por favor copie y pegue para registrarse.",
"license.register.label": "Por favor ingrese su código de licencia", "license.register.label": "Por favor ingrese su código de licencia",
"license.register.success": "Gracias por apoyar a Kirby", "license.register.success": "Gracias por apoyar a Kirby",
"license.unregistered": "Esta es una demo no registrada de Kirby", "license.unregistered": "Esta es una demo no registrada de Kirby",
@@ -354,10 +300,8 @@
"page.changeStatus.position": "Por favor seleccione una posición", "page.changeStatus.position": "Por favor seleccione una posición",
"page.changeStatus.select": "Seleccione un nuevo estado", "page.changeStatus.select": "Seleccione un nuevo estado",
"page.changeTemplate": "Cambiar plantilla", "page.changeTemplate": "Cambiar plantilla",
"page.delete.confirm": "page.delete.confirm": "¿Realmente quieres eliminar <strong>{title}</strong>?",
"¿Realmente quieres eliminar <strong>{title}</strong>?", "page.delete.confirm.subpages": "<strong>Esta página tiene subpáginas</strong>. <br>Todas las subpáginas también serán eliminadas.",
"page.delete.confirm.subpages":
"<strong>Esta página tiene subpáginas</strong>. <br>Todas las subpáginas también serán eliminadas.",
"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",
@@ -365,8 +309,7 @@
"page.duplicate.pages": "Copy pages", "page.duplicate.pages": "Copy pages",
"page.status": "Estado", "page.status": "Estado",
"page.status.draft": "Borrador", "page.status.draft": "Borrador",
"page.status.draft.description": "page.status.draft.description": "The page is in draft mode and only visible for logged in editors or via secret link",
"La página está en modo borrador y solo está visible para los editores registrados",
"page.status.listed": "Publica", "page.status.listed": "Publica",
"page.status.listed.description": "La página es pública para cualquiera", "page.status.listed.description": "La página es pública para cualquiera",
"page.status.unlisted": "Sin publicar", "page.status.unlisted": "Sin publicar",
@@ -388,6 +331,7 @@
"replace": "Remplazar", "replace": "Remplazar",
"retry": "Inténtalo de nuevo", "retry": "Inténtalo de nuevo",
"revert": "Revertir", "revert": "Revertir",
"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": "The admin has all rights",
@@ -451,8 +395,7 @@
"url.placeholder": "https://ejemplo.com", "url.placeholder": "https://ejemplo.com",
"user": "Usuario", "user": "Usuario",
"user.blueprint": "user.blueprint": "Puede definir secciones adicionales y campos de formulario para este rol de usuario en <strong>/site/blueprints/users/{role}.yml</strong>",
"Puede definir secciones adicionales y campos de formulario para este rol de usuario en <strong>/site/blueprints/users/{role}.yml</strong>",
"user.changeEmail": "Cambiar correo electrónico", "user.changeEmail": "Cambiar correo electrónico",
"user.changeLanguage": "Cambiar idioma", "user.changeLanguage": "Cambiar idioma",
"user.changeName": "Renombrar a este usuario", "user.changeName": "Renombrar a este usuario",
@@ -463,8 +406,7 @@
"user.changeRole.select": "Seleccione un nuevo rol", "user.changeRole.select": "Seleccione un nuevo rol",
"user.create": "Añadir un nuevo usuario", "user.create": "Añadir un nuevo usuario",
"user.delete": "Eliminar este usuario", "user.delete": "Eliminar este usuario",
"user.delete.confirm": "user.delete.confirm": "¿Realmente quieres eliminar <br><strong>{email}</strong>?",
"¿Realmente quieres eliminar <br><strong>{email}</strong>?",
"users": "Usuarios", "users": "Usuarios",

View File

@@ -42,10 +42,8 @@
"error.avatar.create.fail": "بارگزاری تصویر پروفایل موفق نبود", "error.avatar.create.fail": "بارگزاری تصویر پروفایل موفق نبود",
"error.avatar.delete.fail": "\u062a\u0635\u0648\u06cc\u0631 \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u0631\u0627 \u0646\u0645\u06cc\u062a\u0648\u0627\u0646 \u062d\u0630\u0641 \u06a9\u0631\u062f", "error.avatar.delete.fail": "\u062a\u0635\u0648\u06cc\u0631 \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u0631\u0627 \u0646\u0645\u06cc\u062a\u0648\u0627\u0646 \u062d\u0630\u0641 \u06a9\u0631\u062f",
"error.avatar.dimensions.invalid": "error.avatar.dimensions.invalid": "لطفا طول و عرض تصویر پروفایل را زیر 3000 پیکسل انتخاب کنید",
"لطفا طول و عرض تصویر پروفایل را زیر 3000 پیکسل انتخاب کنید", "error.avatar.mime.forbidden": "تصویر پروفایل باید از نوع JPEG یا PNG باشد",
"error.avatar.mime.forbidden":
"تصویر پروفایل باید از نوع JPEG یا PNG باشد",
"error.blueprint.notFound": "بلوپرینت با نام «{name}» قابل بارگذاری نیست", "error.blueprint.notFound": "بلوپرینت با نام «{name}» قابل بارگذاری نیست",
@@ -54,22 +52,17 @@
"error.field.converter.invalid": "مبدل «{converter}» نامعتبر است", "error.field.converter.invalid": "مبدل «{converter}» نامعتبر است",
"error.file.changeName.empty": "The name must not be empty", "error.file.changeName.empty": "The name must not be empty",
"error.file.changeName.permission": "error.file.changeName.permission": "شما اجازه تنغییر نام فایل «{filename}» را ندارید",
"شما اجازه تنغییر نام فایل «{filename}» را ندارید",
"error.file.duplicate": "فایلی هم نام با «{filename}» هم اکنون موجود است", "error.file.duplicate": "فایلی هم نام با «{filename}» هم اکنون موجود است",
"error.file.extension.forbidden": "error.file.extension.forbidden": "پسوند فایل «{extension}» غیرمجاز است",
"پسوند فایل «{extension}» غیرمجاز است", "error.file.extension.missing": "\u0634\u0645\u0627 \u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u0628\u062f\u0648\u0646 \u067e\u0633\u0648\u0646\u062f \u0631\u0627 \u0622\u067e\u0644\u0648\u062f \u06a9\u0646\u06cc\u062f",
"error.file.extension.missing":
"\u0634\u0645\u0627 \u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u0628\u062f\u0648\u0646 \u067e\u0633\u0648\u0646\u062f \u0631\u0627 \u0622\u067e\u0644\u0648\u062f \u06a9\u0646\u06cc\u062f",
"error.file.maxheight": "The height of the image must not exceed {height} pixels", "error.file.maxheight": "The height of the image must not exceed {height} pixels",
"error.file.maxsize": "The file is too large", "error.file.maxsize": "The file is too large",
"error.file.maxwidth": "The width of the image must not exceed {width} pixels", "error.file.maxwidth": "The width of the image must not exceed {width} pixels",
"error.file.mime.differs": "error.file.mime.differs": "فایل آپلود شده باید از همان نوع باشد «{mime}»",
"فایل آپلود شده باید از همان نوع باشد «{mime}»",
"error.file.mime.forbidden": "فرمت فایل «{mime}» غیرمجاز است", "error.file.mime.forbidden": "فرمت فایل «{mime}» غیرمجاز است",
"error.file.mime.invalid": "Invalid mime type: {mime}", "error.file.mime.invalid": "Invalid mime type: {mime}",
"error.file.mime.missing": "error.file.mime.missing": "فرمت فایل «{filename}» قابل شناسایی نیست",
"فرمت فایل «{filename}» قابل شناسایی نیست",
"error.file.minheight": "The height of the image must be at least {height} pixels", "error.file.minheight": "The height of the image must be at least {height} pixels",
"error.file.minsize": "The file is too small", "error.file.minsize": "The file is too small",
"error.file.minwidth": "The width of the image must be at least {width} pixels", "error.file.minwidth": "The width of the image must be at least {width} pixels",
@@ -90,111 +83,77 @@
"error.license.email": "لطفا ایمیل صحیحی وارد کنید", "error.license.email": "لطفا ایمیل صحیحی وارد کنید",
"error.license.verification": "The license could not be verified", "error.license.verification": "The license could not be verified",
"error.page.changeSlug.permission": "error.page.changeSlug.permission": "شما امکان تغییر پسوند Url صفحه «{slug}» را ندارید",
"شما امکان تغییر پسوند Url صفحه «{slug}» را ندارید", "error.page.changeStatus.incomplete": "صفحه حاوی خطا است و قابل انتشار نیست",
"error.page.changeStatus.incomplete": "error.page.changeStatus.permission": "وضعیت صفحه جاری قابل تغییر نیست",
"صفحه حاوی خطا است و قابل انتشار نیست", "error.page.changeStatus.toDraft.invalid": "صفحه «{slug}» قابل تبدیل به پیش نویس نیست",
"error.page.changeStatus.permission": "error.page.changeTemplate.invalid": "قالب صفحه «{slug}» قابل تغییر نیست",
"وضعیت صفحه جاری قابل تغییر نیست", "error.page.changeTemplate.permission": "شما اجازه تغییر قالب «{slug}» را ندارید",
"error.page.changeStatus.toDraft.invalid":
"صفحه «{slug}» قابل تبدیل به پیش نویس نیست",
"error.page.changeTemplate.invalid":
"قالب صفحه «{slug}» قابل تغییر نیست",
"error.page.changeTemplate.permission":
"شما اجازه تغییر قالب «{slug}» را ندارید",
"error.page.changeTitle.empty": "عنوان اجباری است", "error.page.changeTitle.empty": "عنوان اجباری است",
"error.page.changeTitle.permission": "error.page.changeTitle.permission": "شما اجازه تغییر عنوان «{slug}» را ندارید",
"شما اجازه تغییر عنوان «{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": "جهت ادامه عنوان صفحه را وارد کنید",
"error.page.delete.hasChildren": "error.page.delete.hasChildren": "این صفحه جاوی زیرصفحه است و نمی تواند حذف شود",
"این صفحه جاوی زیرصفحه است و نمی تواند حذف شود",
"error.page.delete.permission": "شما اجازه حذف «{slug}» را ندارید", "error.page.delete.permission": "شما اجازه حذف «{slug}» را ندارید",
"error.page.draft.duplicate": "error.page.draft.duplicate": "صفحه پیش‌نویسی با پسوند Url مشابه «{slug}» هم اکنون موجود است",
"صفحه پیش‌نویسی با پسوند Url مشابه «{slug}» هم اکنون موجود است", "error.page.duplicate": "صفحه‌ای با آدرس Url مشابه «{slug}» هم اکنون موجود است",
"error.page.duplicate":
"صفحه‌ای با آدرس Url مشابه «{slug}» هم اکنون موجود است",
"error.page.duplicate.permission": "You are not allowed to duplicate \"{slug}\"", "error.page.duplicate.permission": "You are not allowed to duplicate \"{slug}\"",
"error.page.notFound": "صفحه مورد نظر با آدرس «{slug}» پیدا نشد.", "error.page.notFound": "صفحه مورد نظر با آدرس «{slug}» پیدا نشد.",
"error.page.num.invalid": "error.page.num.invalid": "لطفا شماره ترتیب را بدرستی وارد نمایید. اعداد نباید منفی باشند.",
"لطفا شماره ترتیب را بدرستی وارد نمایید. اعداد نباید منفی باشند.",
"error.page.slug.invalid": "لطفا یک پیشوند Url صحیح وارد کنید", "error.page.slug.invalid": "لطفا یک پیشوند Url صحیح وارد کنید",
"error.page.sort.permission": "امکان مرتب‌سازی «{slug}» نیست", "error.page.sort.permission": "امکان مرتب‌سازی «{slug}» نیست",
"error.page.status.invalid": "لطفا وضعیت صحیحی برای صفحه انتخاب کنید", "error.page.status.invalid": "لطفا وضعیت صحیحی برای صفحه انتخاب کنید",
"error.page.undefined": "صفحه مورد نظر پیدا نشد", "error.page.undefined": "صفحه مورد نظر پیدا نشد",
"error.page.update.permission": "شما اجازه بروزرسانی «{slug}» را ندارید", "error.page.update.permission": "شما اجازه بروزرسانی «{slug}» را ندارید",
"error.section.files.max.plural": "error.section.files.max.plural": "نباید بیش از {max} فایل به بخش «{section}» اضافه کنید",
"نباید بیش از {max} فایل به بخش «{section}» اضافه کنید", "error.section.files.max.singular": "نباید بیش از یک فایل به بخش «{section}» اضافه کنید",
"error.section.files.max.singular": "error.section.files.min.plural": "The \"{section}\" section requires at least {min} files",
"نباید بیش از یک فایل به بخش «{section}» اضافه کنید", "error.section.files.min.singular": "The \"{section}\" section requires at least one file",
"error.section.files.min.plural":
"The \"{section}\" section requires at least {min} files",
"error.section.files.min.singular":
"The \"{section}\" section requires at least one file",
"error.section.pages.max.plural": "error.section.pages.max.plural": "نباید بیش از {max} صفحه به بخش «{section}» اضافه کنید",
"نباید بیش از {max} صفحه به بخش «{section}» اضافه کنید", "error.section.pages.max.singular": "نباید بیش از یک صفحه به بخش «{section}» اضافه کنید",
"error.section.pages.max.singular": "error.section.pages.min.plural": "The \"{section}\" section requires at least {min} pages",
"نباید بیش از یک صفحه به بخش «{section}» اضافه کنید", "error.section.pages.min.singular": "The \"{section}\" section requires at least one page",
"error.section.pages.min.plural":
"The \"{section}\" section requires at least {min} pages",
"error.section.pages.min.singular":
"The \"{section}\" section requires at least one page",
"error.section.notLoaded": "بخش «{name}» قابل بارکذاری نیست", "error.section.notLoaded": "بخش «{name}» قابل بارکذاری نیست",
"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": "error.user.changeEmail.permission": "شما اجازه تغییر ایمیل کاربر «{name}» را ندارید",
"شما اجازه تغییر ایمیل کاربر «{name}» را ندارید", "error.user.changeLanguage.permission": "شما اجازه تغییر زبان برای کاربر «{name}» را ندارید",
"error.user.changeLanguage.permission": "error.user.changeName.permission": "شما اجازه تنغییر نام کاربر «{name}» را ندارید",
"شما اجازه تغییر زبان برای کاربر «{name}» را ندارید", "error.user.changePassword.permission": "شما اجازه تغییر رمز عبور کاربر «{name}» را ندارید",
"error.user.changeName.permission": "error.user.changeRole.lastAdmin": "نقش آخرین مدیر سیستم قابل تغییر نیست",
"شما اجازه تنغییر نام کاربر «{name}» را ندارید", "error.user.changeRole.permission": "شما اجازه تغییر نقش کاربر «{name}» را ندارید",
"error.user.changePassword.permission": "error.user.changeRole.toAdmin": "You are not allowed to promote someone to the admin role",
"شما اجازه تغییر رمز عبور کاربر «{name}» را ندارید",
"error.user.changeRole.lastAdmin":
"نقش آخرین مدیر سیستم قابل تغییر نیست",
"error.user.changeRole.permission":
"شما اجازه تغییر نقش کاربر «{name}» را ندارید",
"error.user.changeRole.toAdmin":
"You are not allowed to promote someone to the admin role",
"error.user.create.permission": "شما اجازه ایجاد این کاربر را ندارید", "error.user.create.permission": "شما اجازه ایجاد این کاربر را ندارید",
"error.user.delete": "کاربر «{name}» نمی تواند حذف شود", "error.user.delete": "کاربر «{name}» نمی تواند حذف شود",
"error.user.delete.lastAdmin": "\u062d\u0630\u0641 \u0622\u062e\u0631\u06cc\u0646 \u0645\u062f\u06cc\u0631 \u0633\u06cc\u0633\u062a\u0645 \u0645\u0645\u06a9\u0646 \u0646\u06cc\u0633\u062a", "error.user.delete.lastAdmin": "\u062d\u0630\u0641 \u0622\u062e\u0631\u06cc\u0646 \u0645\u062f\u06cc\u0631 \u0633\u06cc\u0633\u062a\u0645 \u0645\u0645\u06a9\u0646 \u0646\u06cc\u0633\u062a",
"error.user.delete.lastUser": "حذف آخرین کاربر ممکن نیست", "error.user.delete.lastUser": "حذف آخرین کاربر ممکن نیست",
"error.user.delete.permission": "error.user.delete.permission": "شما اجازه حذف کاربر «{name}» را ندارید",
"شما اجازه حذف کاربر «{name}» را ندارید", "error.user.duplicate": "کاربری با ایمیل «{email}» هم اکنون موجود است",
"error.user.duplicate":
"کاربری با ایمیل «{email}» هم اکنون موجود است",
"error.user.email.invalid": "لطفا یک ایمیل معتبر وارد کنید", "error.user.email.invalid": "لطفا یک ایمیل معتبر وارد کنید",
"error.user.language.invalid": "لطفا زبان معتبری انتخاب کنید", "error.user.language.invalid": "لطفا زبان معتبری انتخاب کنید",
"error.user.notFound": "کاربر «{name}» پیدا نشد", "error.user.notFound": "کاربر «{name}» پیدا نشد",
"error.user.password.invalid": "error.user.password.invalid": "لطفا گذرواژه صحیحی با حداقل طول 8 حرف وارد کنید. ",
"لطفا گذرواژه صحیحی با حداقل طول 8 حرف وارد کنید. ",
"error.user.password.notSame": "\u0644\u0637\u0641\u0627 \u062a\u06a9\u0631\u0627\u0631 \u06af\u0630\u0631\u0648\u0627\u0698\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u0646\u0645\u0627\u06cc\u06cc\u062f", "error.user.password.notSame": "\u0644\u0637\u0641\u0627 \u062a\u06a9\u0631\u0627\u0631 \u06af\u0630\u0631\u0648\u0627\u0698\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u0646\u0645\u0627\u06cc\u06cc\u062f",
"error.user.password.undefined": "کاربر فاقد گذرواژه است", "error.user.password.undefined": "کاربر فاقد گذرواژه است",
"error.user.role.invalid": "لطفا نقش صحیحی وارد نمایید", "error.user.role.invalid": "لطفا نقش صحیحی وارد نمایید",
"error.user.update.permission": "error.user.update.permission": "شما اجازه بروزرسانی کاربر «{name}» را ندارید",
"شما اجازه بروزرسانی کاربر «{name}» را ندارید",
"error.validation.accepted": "لطفا تایید کنید", "error.validation.accepted": "لطفا تایید کنید",
"error.validation.alpha": "لطفا تنها از بین حروف a-z انتخاب کنید", "error.validation.alpha": "لطفا تنها از بین حروف a-z انتخاب کنید",
"error.validation.alphanum": "error.validation.alphanum": "لطفا تنها از بین حروف a-z و اعداد 0-9 انتخاب کنید",
"لطفا تنها از بین حروف a-z و اعداد 0-9 انتخاب کنید", "error.validation.between": "لطفا مقداری مابین «{min}» و «{max}» وارد کنید",
"error.validation.between":
"لطفا مقداری مابین «{min}» و «{max}» وارد کنید",
"error.validation.boolean": "لطفا تایید یا رد کنید", "error.validation.boolean": "لطفا تایید یا رد کنید",
"error.validation.contains": "error.validation.contains": "لطفا مقداری شامل «{needle}» وارد کنید",
"لطفا مقداری شامل «{needle}» وارد کنید",
"error.validation.date": "لطفا تاریخ معتبری وارد کنید", "error.validation.date": "لطفا تاریخ معتبری وارد کنید",
"error.validation.date.after": "Please enter a date after {date}", "error.validation.date.after": "Please enter a date after {date}",
"error.validation.date.before": "Please enter a date before {date}", "error.validation.date.before": "Please enter a date before {date}",
@@ -210,18 +169,14 @@
"error.validation.less": "لطفا مقداری کمتر از {max} وارد کنید", "error.validation.less": "لطفا مقداری کمتر از {max} وارد کنید",
"error.validation.match": "مقدار وارد شده با الگوی مورد نظر همخوانی ندارد", "error.validation.match": "مقدار وارد شده با الگوی مورد نظر همخوانی ندارد",
"error.validation.max": "لطفا مقداری کوچکتر یا مساوی {min} وارد کنید", "error.validation.max": "لطفا مقداری کوچکتر یا مساوی {min} وارد کنید",
"error.validation.maxlength": "error.validation.maxlength": "لطفا عبارت کوتاه‌تری وارد کنید. (حداکثر {max} حرف)",
"لطفا عبارت کوتاه‌تری وارد کنید. (حداکثر {max} حرف)",
"error.validation.maxwords": "لطفا بیش از {max} کلمه وارد نکنید", "error.validation.maxwords": "لطفا بیش از {max} کلمه وارد نکنید",
"error.validation.min": "لطفا مقداری بزرگتر یا مساوی با {min} وارد کنید", "error.validation.min": "لطفا مقداری بزرگتر یا مساوی با {min} وارد کنید",
"error.validation.minlength": "error.validation.minlength": "لطفا عبارتی طولانی‌تری وارد کنید. (حداقل {min} حرف)",
"لطفا عبارتی طولانی‌تری وارد کنید. (حداقل {min} حرف)",
"error.validation.minwords": "لطفا حداقل {min} کلمه وارد کنید", "error.validation.minwords": "لطفا حداقل {min} کلمه وارد کنید",
"error.validation.more": "لطفا مقداری بیش از {min} وارد کنید", "error.validation.more": "لطفا مقداری بیش از {min} وارد کنید",
"error.validation.notcontains": "error.validation.notcontains": "لطفا مقداری فاقد «{needle}» وارد کنید",
"لطفا مقداری فاقد «{needle}» وارد کنید", "error.validation.notin": "لطفا از مقادیر روبرو استفاده نکنید: ({notin})",
"error.validation.notin":
"لطفا از مقادیر روبرو استفاده نکنید: ({notin})",
"error.validation.option": "لطفا گزینه معتبری انتخاب کنید", "error.validation.option": "لطفا گزینه معتبری انتخاب کنید",
"error.validation.num": "لطفا عدد صحیحی وارد کنید", "error.validation.num": "لطفا عدد صحیحی وارد کنید",
"error.validation.required": "لطفا مقداری وارد کنید", "error.validation.required": "لطفا مقداری وارد کنید",
@@ -238,8 +193,7 @@
"field.structure.empty": "\u0645\u0648\u0631\u062f\u06cc \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0631\u062f.", "field.structure.empty": "\u0645\u0648\u0631\u062f\u06cc \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0631\u062f.",
"field.users.empty": "کاربری انتخاب نشده است", "field.users.empty": "کاربری انتخاب نشده است",
"file.delete.confirm": "file.delete.confirm": "آیا واقعا می خواهید این فایل را حذف کنید؟<br><strong>{filename}</strong>",
"آیا واقعا می خواهید این فایل را حذف کنید؟<br><strong>{filename}</strong>",
"files": "فایل‌ها", "files": "فایل‌ها",
"files.empty": "فایلی موجود نیست", "files.empty": "فایلی موجود نیست",
@@ -251,29 +205,22 @@
"installation": "نصب و راه اندازی", "installation": "نصب و راه اندازی",
"installation.completed": "پنل کاربری نصب شد", "installation.completed": "پنل کاربری نصب شد",
"installation.disabled": "نصب کننده پانل کاربری بصورت پیش‌فرض در سرورهای عمومی غیرفعال است. لطفا نصب را روی یک ماشین محلی اجرا کنید یا آن را با استفاده از <code>panel.install</code> فعال کنید.", "installation.disabled": "نصب کننده پانل کاربری بصورت پیش‌فرض در سرورهای عمومی غیرفعال است. لطفا نصب را روی یک ماشین محلی اجرا کنید یا آن را با استفاده از <code>panel.install</code> فعال کنید.",
"installation.issues.accounts": "installation.issues.accounts": "پوشه <code>/site/accounts</code> موجود نیست یا قابل نوشتن نیست.",
"پوشه <code>/site/accounts</code> موجود نیست یا قابل نوشتن نیست.", "installation.issues.content": "پوشه <code>/content</code> موجود نیست یا قابل نوشتن نیست",
"installation.issues.content":
"پوشه <code>/content</code> موجود نیست یا قابل نوشتن نیست",
"installation.issues.curl": "افزونه <code>CURL</code> مورد نیاز است", "installation.issues.curl": "افزونه <code>CURL</code> مورد نیاز است",
"installation.issues.headline": "نصب پانل کاربری ممکن نیست", "installation.issues.headline": "نصب پانل کاربری ممکن نیست",
"installation.issues.mbstring": "installation.issues.mbstring": "افزونه <code>MB String</code> مورد نیاز است",
"افزونه <code>MB String</code> مورد نیاز است", "installation.issues.media": "پوشه <code>/media</code> موجود نیست یا قابل نوشتن نیست",
"installation.issues.media":
"پوشه <code>/media</code> موجود نیست یا قابل نوشتن نیست",
"installation.issues.php": "لطفا از پی‌اچ‌پی 7 یا بالاتر استفاده کنید", "installation.issues.php": "لطفا از پی‌اچ‌پی 7 یا بالاتر استفاده کنید",
"installation.issues.server": "installation.issues.server": "کربی نیاز به <code>Apache</code>، <code>Nginx</code> یا <code>Caddy</code> دارد",
"کربی نیاز به <code>Apache</code>، <code>Nginx</code> یا <code>Caddy</code> دارد",
"installation.issues.sessions": "پوشه <code>/site/sessions</code> وجود ندارد یا قابل نوشتن نیست", "installation.issues.sessions": "پوشه <code>/site/sessions</code> وجود ندارد یا قابل نوشتن نیست",
"language": "\u0632\u0628\u0627\u0646", "language": "\u0632\u0628\u0627\u0646",
"language.code": "کد", "language.code": "کد",
"language.convert": "پیش‌فرض شود", "language.convert": "پیش‌فرض شود",
"language.convert.confirm": "language.convert.confirm": "<p>آیا واقعا میخواهید <strong>{name}</strong> را به زبان پیشفرض تبدیل کنید؟ این عمل برگشت ناپذیر است.</p> <p>اگر <strong>{name}</strong> دارای محتوای غیر ترجمه شده باشد، جایگزین معتبر دیگری نخواهد بود و ممکن است بخش‌هایی از سایت شما خالی باشد.</p>",
"<p>آیا واقعا میخواهید <strong>{name}</strong> را به زبان پیشفرض تبدیل کنید؟ این عمل برگشت ناپذیر است.</p> <p>اگر <strong>{name}</strong> دارای محتوای غیر ترجمه شده باشد، جایگزین معتبر دیگری نخواهد بود و ممکن است بخش‌هایی از سایت شما خالی باشد.</p>",
"language.create": "افزودن زبان جدید", "language.create": "افزودن زبان جدید",
"language.delete.confirm": "language.delete.confirm": "آیا واقعا میخواهید زبان </strong>{name}</strong> را به همراه تمام ترجمه‌ها حذف کنید؟ این عمل قابل بازگشت نخواهد بود!",
"آیا واقعا میخواهید زبان </strong>{name}</strong> را به همراه تمام ترجمه‌ها حذف کنید؟ این عمل قابل بازگشت نخواهد بود!",
"language.deleted": "زبان مورد نظر حذف شد", "language.deleted": "زبان مورد نظر حذف شد",
"language.direction": "rtl", "language.direction": "rtl",
"language.direction.ltr": "چپ به راست", "language.direction.ltr": "چپ به راست",
@@ -292,8 +239,7 @@
"license": "\u0645\u062c\u0648\u0632", "license": "\u0645\u062c\u0648\u0632",
"license.buy": "خرید مجوز", "license.buy": "خرید مجوز",
"license.register": "ثبت", "license.register": "ثبت",
"license.register.help": "license.register.help": "پس از خرید از طریق ایمیل، کد مجوز خود را دریافت کردید. لطفا برای ثبت‌نام آن را کپی و اینجا پیست کنید.",
"پس از خرید از طریق ایمیل، کد مجوز خود را دریافت کردید. لطفا برای ثبت‌نام آن را کپی و اینجا پیست کنید.",
"license.register.label": "لطفا کد مجوز خود را وارد کنید", "license.register.label": "لطفا کد مجوز خود را وارد کنید",
"license.register.success": "با تشکر از شما برای حمایت از کربی", "license.register.success": "با تشکر از شما برای حمایت از کربی",
"license.unregistered": "این یک نسخه آزمایشی ثبت نشده از کربی است", "license.unregistered": "این یک نسخه آزمایشی ثبت نشده از کربی است",
@@ -325,7 +271,7 @@
"months.april": "\u0622\u0648\u0631\u06cc\u0644", "months.april": "\u0622\u0648\u0631\u06cc\u0644",
"months.august": "\u0627\u0648\u062a", "months.august": "\u0627\u0648\u062a",
"months.december": "\u062f\u0633\u0627\u0645\u0628\u0631", "months.december": "\u062f\u0633\u0627\u0645\u0628\u0631",
"months.february": "\u0641\u0648\u0631\u06cc\u0647", "months.february": "فوریه",
"months.january": "\u0698\u0627\u0646\u0648\u06cc\u0647", "months.january": "\u0698\u0627\u0646\u0648\u06cc\u0647",
"months.july": "\u0698\u0648\u0626\u06cc\u0647", "months.july": "\u0698\u0648\u0626\u06cc\u0647",
"months.june": "\u0698\u0648\u0626\u0646", "months.june": "\u0698\u0648\u0626\u0646",
@@ -354,10 +300,8 @@
"page.changeStatus.position": "لطفا یک موقعیت را انتخاب کنید", "page.changeStatus.position": "لطفا یک موقعیت را انتخاب کنید",
"page.changeStatus.select": "یک وضعیت جدید را انتخاب کنید", "page.changeStatus.select": "یک وضعیت جدید را انتخاب کنید",
"page.changeTemplate": "تغییر قالب", "page.changeTemplate": "تغییر قالب",
"page.delete.confirm": "page.delete.confirm": "صفحه <strong>{title}</strong> حذف شود؟",
"صفحه <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": "جهت ادامه عنوان صفحه را وارد کنید",
"page.draft.create": "ایجاد پیش‌نویس", "page.draft.create": "ایجاد پیش‌نویس",
"page.duplicate.appendix": "کپی", "page.duplicate.appendix": "کپی",
@@ -365,8 +309,7 @@
"page.duplicate.pages": "Copy pages", "page.duplicate.pages": "Copy pages",
"page.status": "وضعیت", "page.status": "وضعیت",
"page.status.draft": "پیش‌نویس", "page.status.draft": "پیش‌نویس",
"page.status.draft.description": "page.status.draft.description": "The page is in draft mode and only visible for logged in editors or via secret link",
"این صفحه در حالت پیش‌نویس است و تنها برای ویرایشگران وارد شده قابل مشاهده است",
"page.status.listed": "عمومی", "page.status.listed": "عمومی",
"page.status.listed.description": "این صفحه برای عموم قابل مشاهده است", "page.status.listed.description": "این صفحه برای عموم قابل مشاهده است",
"page.status.unlisted": "فهرست نشده", "page.status.unlisted": "فهرست نشده",
@@ -388,6 +331,7 @@
"replace": "\u062c\u0627\u06cc\u06af\u0632\u06cc\u0646\u06cc", "replace": "\u062c\u0627\u06cc\u06af\u0632\u06cc\u0646\u06cc",
"retry": "\u062a\u0644\u0627\u0634 \u0645\u062c\u062f\u062f", "retry": "\u062a\u0644\u0627\u0634 \u0645\u062c\u062f\u062f",
"revert": "بازگرداندن تغییرات", "revert": "بازگرداندن تغییرات",
"revert.confirm": "Do you really want to <strong>delete all unsaved changes</strong>?",
"role": "\u0646\u0642\u0634", "role": "\u0646\u0642\u0634",
"role.admin.description": "The admin has all rights", "role.admin.description": "The admin has all rights",
@@ -451,8 +395,7 @@
"url.placeholder": "https://example.com", "url.placeholder": "https://example.com",
"user": "کاربر", "user": "کاربر",
"user.blueprint": "user.blueprint": "شما می توانید قسمت‌های اضافی و فیلدهای فرم را برای این نقش کاربر در <strong>/site/blueprints/users/{role}.yml</strong> تعریف کنید",
"شما می توانید قسمت‌های اضافی و فیلدهای فرم را برای این نقش کاربر در <strong>/site/blueprints/users/{role}.yml</strong> تعریف کنید",
"user.changeEmail": "تغییر ایمیل", "user.changeEmail": "تغییر ایمیل",
"user.changeLanguage": "تغییر زبان", "user.changeLanguage": "تغییر زبان",
"user.changeName": "تغییر نام این کاربر", "user.changeName": "تغییر نام این کاربر",
@@ -463,8 +406,7 @@
"user.changeRole.select": "یک نقش جدید را انتخاب کنید", "user.changeRole.select": "یک نقش جدید را انتخاب کنید",
"user.create": "افزودن کاربر جدید", "user.create": "افزودن کاربر جدید",
"user.delete": "حذف کاربر جاری", "user.delete": "حذف کاربر جاری",
"user.delete.confirm": "user.delete.confirm": "آیا واقعا میخواهید<strong> {email}</strong> را حذف کنید؟",
"آیا واقعا میخواهید<strong> {email}</strong> را حذف کنید؟",
"users": "کاربران", "users": "کاربران",

View File

@@ -42,10 +42,8 @@
"error.avatar.create.fail": "Profiilikuvaa ei voitu lähettää", "error.avatar.create.fail": "Profiilikuvaa ei voitu lähettää",
"error.avatar.delete.fail": "Profiilikuvaa ei voitu poistaa", "error.avatar.delete.fail": "Profiilikuvaa ei voitu poistaa",
"error.avatar.dimensions.invalid": "error.avatar.dimensions.invalid": "Profiilikuvan leveys ja korkeus voivat olla enintään 3000 pikseliä",
"Profiilikuvan leveys ja korkeus voivat olla enintään 3000 pikseliä", "error.avatar.mime.forbidden": "Profiilikuvan täytyy olla joko JPEG- tai PNG-formaatissa",
"error.avatar.mime.forbidden":
"Profiilikuvan täytyy olla joko JPEG- tai PNG-formaatissa",
"error.blueprint.notFound": "Kaavaa \"{name}\" ei voitu ladata", "error.blueprint.notFound": "Kaavaa \"{name}\" ei voitu ladata",
@@ -54,22 +52,17 @@
"error.field.converter.invalid": "Muunnin \"{converter}\" ei kelpaa", "error.field.converter.invalid": "Muunnin \"{converter}\" ei kelpaa",
"error.file.changeName.empty": "Nimi ei voi olla tyhjä", "error.file.changeName.empty": "Nimi ei voi olla tyhjä",
"error.file.changeName.permission": "error.file.changeName.permission": "Sinulla ei ole oikeutta muuttaa tiedoston \"{filename}\" nimeä",
"Sinulla ei ole oikeutta muuttaa tiedoston \"{filename}\" nimeä",
"error.file.duplicate": "Tiedosto nimellä \"{filename}\" on jo olemassa", "error.file.duplicate": "Tiedosto nimellä \"{filename}\" on jo olemassa",
"error.file.extension.forbidden": "error.file.extension.forbidden": "Tiedostopääte \"{extension}\" ei ole sallittu",
"Tiedostopääte \"{extension}\" ei ole sallittu", "error.file.extension.missing": "Tiedoston \"{filename}\" tiedostopääte puuttuu",
"error.file.extension.missing":
"Tiedoston \"{filename}\" tiedostopääte puuttuu",
"error.file.maxheight": "The height of the image must not exceed {height} pixels", "error.file.maxheight": "The height of the image must not exceed {height} pixels",
"error.file.maxsize": "The file is too large", "error.file.maxsize": "The file is too large",
"error.file.maxwidth": "The width of the image must not exceed {width} pixels", "error.file.maxwidth": "The width of the image must not exceed {width} pixels",
"error.file.mime.differs": "error.file.mime.differs": "Lähetetyllä tiedostolla täytyy olla sama mime-tyyppi \"{mime}\"",
"Lähetetyllä tiedostolla täytyy olla sama mime-tyyppi \"{mime}\"",
"error.file.mime.forbidden": "Median tyyppi \"{mime}\" ei ole sallittu", "error.file.mime.forbidden": "Median tyyppi \"{mime}\" ei ole sallittu",
"error.file.mime.invalid": "Invalid mime type: {mime}", "error.file.mime.invalid": "Invalid mime type: {mime}",
"error.file.mime.missing": "error.file.mime.missing": "Tiedoston \"{filename}\" mediatyyppiä ei voida tunnistaa",
"Tiedoston \"{filename}\" mediatyyppiä ei voida tunnistaa",
"error.file.minheight": "The height of the image must be at least {height} pixels", "error.file.minheight": "The height of the image must be at least {height} pixels",
"error.file.minsize": "The file is too small", "error.file.minsize": "The file is too small",
"error.file.minwidth": "The width of the image must be at least {width} pixels", "error.file.minwidth": "The width of the image must be at least {width} pixels",
@@ -90,111 +83,77 @@
"error.license.email": "Anna kelpaava sähköpostiosoite", "error.license.email": "Anna kelpaava sähköpostiosoite",
"error.license.verification": "Lisenssiä ei voitu vahvistaa", "error.license.verification": "Lisenssiä ei voitu vahvistaa",
"error.page.changeSlug.permission": "error.page.changeSlug.permission": "Sinulla ei ole oikeutta muuttaa URL-liitettä sivulle \"{slug}\"",
"Sinulla ei ole oikeutta muuttaa URL-liitettä sivulle \"{slug}\"", "error.page.changeStatus.incomplete": "Sivulla on virheitä eikä sitä voitu julkaista",
"error.page.changeStatus.incomplete": "error.page.changeStatus.permission": "Tämän sivun tilaa ei voi muuttaa",
"Sivulla on virheitä eikä sitä voitu julkaista", "error.page.changeStatus.toDraft.invalid": "Sivua \"{slug}\" ei voi muuttaa luonnokseksi",
"error.page.changeStatus.permission": "error.page.changeTemplate.invalid": "Sivun \"{slug}\" pohjaa ei voi muuttaa",
"Tämän sivun tilaa ei voi muuttaa", "error.page.changeTemplate.permission": "Sinulla ei ole oikeutta muuttaa sivun \"{slug}\" sivupohjaa",
"error.page.changeStatus.toDraft.invalid":
"Sivua \"{slug}\" ei voi muuttaa luonnokseksi",
"error.page.changeTemplate.invalid":
"Sivun \"{slug}\" pohjaa ei voi muuttaa",
"error.page.changeTemplate.permission":
"Sinulla ei ole oikeutta muuttaa sivun \"{slug}\" sivupohjaa",
"error.page.changeTitle.empty": "Nimi ei voi olla tyhjä", "error.page.changeTitle.empty": "Nimi ei voi olla tyhjä",
"error.page.changeTitle.permission": "error.page.changeTitle.permission": "Sinulla ei ole oikeutta muuttaa sivun \"{slug}\" nimeä",
"Sinulla ei ole oikeutta muuttaa sivun \"{slug}\" nimeä",
"error.page.create.permission": "Sinulla ei ole oikeutta luoda sivua \"{slug}\"", "error.page.create.permission": "Sinulla ei ole oikeutta luoda sivua \"{slug}\"",
"error.page.delete": "Sivua \"{slug}\" ei voi poistaa", "error.page.delete": "Sivua \"{slug}\" ei voi poistaa",
"error.page.delete.confirm": "Anna vahvistuksena sivun nimi", "error.page.delete.confirm": "Anna vahvistuksena sivun nimi",
"error.page.delete.hasChildren": "error.page.delete.hasChildren": "Sivu sisältää alasivuja eikä sitä voida poistaa",
"Sivu sisältää alasivuja eikä sitä voida poistaa",
"error.page.delete.permission": "Sinulla ei ole oikeutta poistaa sivua \"{slug}\"", "error.page.delete.permission": "Sinulla ei ole oikeutta poistaa sivua \"{slug}\"",
"error.page.draft.duplicate": "error.page.draft.duplicate": "Sivuluonnos URL-liitteellä \"{slug}\" on jo olemassa",
"Sivuluonnos URL-liitteellä \"{slug}\" on jo olemassa", "error.page.duplicate": "Sivu URL-liitteellä \"{slug}\" on jo olemassa",
"error.page.duplicate":
"Sivu URL-liitteellä \"{slug}\" on jo olemassa",
"error.page.duplicate.permission": "Sinulla ei ole oikeutta kahdentaa sivua \"{slug}\"", "error.page.duplicate.permission": "Sinulla ei ole oikeutta kahdentaa sivua \"{slug}\"",
"error.page.notFound": "Sivua \"{slug}\" ei löytynyt", "error.page.notFound": "Sivua \"{slug}\" ei löytynyt",
"error.page.num.invalid": "error.page.num.invalid": "Anna kelpaava järjestysnumero. Numero ei voi olla negatiivinen.",
"Anna kelpaava järjestysnumero. Numero ei voi olla negatiivinen.",
"error.page.slug.invalid": "Anna kelpaava URL-etuliite", "error.page.slug.invalid": "Anna kelpaava URL-etuliite",
"error.page.sort.permission": "Sivua \"{slug}\" ei voi järjestellä", "error.page.sort.permission": "Sivua \"{slug}\" ei voi järjestellä",
"error.page.status.invalid": "Aseta kelvollinen sivun tila", "error.page.status.invalid": "Aseta kelvollinen sivun tila",
"error.page.undefined": "Sivua ei l\u00f6ytynyt", "error.page.undefined": "Sivua ei l\u00f6ytynyt",
"error.page.update.permission": "Sinulla ei ole oikeutta päivittää sivua \"{slug}\"", "error.page.update.permission": "Sinulla ei ole oikeutta päivittää sivua \"{slug}\"",
"error.section.files.max.plural": "error.section.files.max.plural": "Et voi lisätä enemmän kuin {max} tiedostoa osioon \"{section}\"",
"Et voi lisätä enemmän kuin {max} tiedostoa osioon \"{section}\"", "error.section.files.max.singular": "Et voi lisätä enempää kuin yhden tiedoston osioon \"{section}\"",
"error.section.files.max.singular": "error.section.files.min.plural": "Osio \"{section}\" vaatii ainakin {min} tiedostoa",
"Et voi lisätä enempää kuin yhden tiedoston osioon \"{section}\"", "error.section.files.min.singular": "Osio \"{section}\" vaatii ainakin yhden sivun",
"error.section.files.min.plural":
"Osio \"{section}\" vaatii ainakin {min} tiedostoa",
"error.section.files.min.singular":
"Osio \"{section}\" vaatii ainakin yhden sivun",
"error.section.pages.max.plural": "error.section.pages.max.plural": "Et voi lisätä enemmän kuin {max} sivua osioon \"{section}\"",
"Et voi lisätä enemmän kuin {max} sivua osioon \"{section}\"", "error.section.pages.max.singular": "Et voi lisätä enempää kuin yhden sivun osioon \"{section}\"",
"error.section.pages.max.singular": "error.section.pages.min.plural": "Osio \"{section}\" vaatii ainakin {min} sivua",
"Et voi lisätä enempää kuin yhden sivun osioon \"{section}\"", "error.section.pages.min.singular": "Osio \"{section}\" vaatii ainakin yhden sivun",
"error.section.pages.min.plural":
"Osio \"{section}\" vaatii ainakin {min} sivua",
"error.section.pages.min.singular":
"Osio \"{section}\" vaatii ainakin yhden sivun",
"error.section.notLoaded": "Osiota \"{name}\" ei voitu ladata", "error.section.notLoaded": "Osiota \"{name}\" ei voitu ladata",
"error.section.type.invalid": "Osion tyyppi \"{type}\" ei ole kelvollinen", "error.section.type.invalid": "Osion tyyppi \"{type}\" ei ole kelvollinen",
"error.site.changeTitle.empty": "Nimi ei voi olla tyhjä", "error.site.changeTitle.empty": "Nimi ei voi olla tyhjä",
"error.site.changeTitle.permission": "error.site.changeTitle.permission": "Sinulla ei ole oikeutta päivittää sivuston nimeä",
"Sinulla ei ole oikeutta päivittää sivuston nimeä",
"error.site.update.permission": "Sinulla ei ole oikeutta päivittää sivuston tietoja", "error.site.update.permission": "Sinulla ei ole oikeutta päivittää sivuston tietoja",
"error.template.default.notFound": "Oletussivupohjaa ei ole määritetty", "error.template.default.notFound": "Oletussivupohjaa ei ole määritetty",
"error.user.changeEmail.permission": "error.user.changeEmail.permission": "Sinulla ei ole oikeutta vaihtaa käyttäjän \"{name}\" sähköpostiosoitetta",
"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": "error.user.changeName.permission": "Sinulla ei ole oikeutta vaihtaa käyttäjän \"{name}\" nimeä",
"Sinulla ei ole oikeutta vaihtaa käyttäjän \"{name}\" kieltä", "error.user.changePassword.permission": "Sinulla ei ole oikeutta vaihtaa käyttäjän \"{name}\" salasanaa",
"error.user.changeName.permission": "error.user.changeRole.lastAdmin": "Ainoan pääkäyttäjän roolia ei voi muuttaa",
"Sinulla ei ole oikeutta vaihtaa käyttäjän \"{name}\" nimeä", "error.user.changeRole.permission": "Sinulla ei ole oikeutta vaihtaa käyttäjän \"{name}\" käyttäjätasoa",
"error.user.changePassword.permission": "error.user.changeRole.toAdmin": "Sinulla ei ole oikeutta vaihtaa käyttäjätasoa pääkäyttäjäksi",
"Sinulla ei ole oikeutta vaihtaa käyttäjän \"{name}\" salasanaa",
"error.user.changeRole.lastAdmin":
"Ainoan pääkäyttäjän roolia ei voi muuttaa",
"error.user.changeRole.permission":
"Sinulla ei ole oikeutta vaihtaa käyttäjän \"{name}\" käyttäjätasoa",
"error.user.changeRole.toAdmin":
"Sinulla ei ole oikeutta vaihtaa käyttäjätasoa pääkäyttäjäksi",
"error.user.create.permission": "Sinulla ei ole oikeutta luoda tätä käyttäjää", "error.user.create.permission": "Sinulla ei ole oikeutta luoda tätä käyttäjää",
"error.user.delete": "Käyttäjää \"{name}\" ei voi poistaa", "error.user.delete": "Käyttäjää \"{name}\" ei voi poistaa",
"error.user.delete.lastAdmin": "Ainoaa pääkäyttäjää ei voi poistaa", "error.user.delete.lastAdmin": "Ainoaa pääkäyttäjää ei voi poistaa",
"error.user.delete.lastUser": "Ainoaa käyttäjää ei voi poistaa", "error.user.delete.lastUser": "Ainoaa käyttäjää ei voi poistaa",
"error.user.delete.permission": "error.user.delete.permission": "Sinulla ei ole oikeutta poistaa käyttäjää \"{name}\"",
"Sinulla ei ole oikeutta poistaa käyttäjää \"{name}\"", "error.user.duplicate": "Käyttäjä, jonka sähköpostiosoite on \"{name}\", on jo olemassa",
"error.user.duplicate":
"Käyttäjä, jonka sähköpostiosoite on \"{name}\", on jo olemassa",
"error.user.email.invalid": "Anna kelpaava sähköpostiosoite", "error.user.email.invalid": "Anna kelpaava sähköpostiosoite",
"error.user.language.invalid": "Anna kelpaava kieli", "error.user.language.invalid": "Anna kelpaava kieli",
"error.user.notFound": "K\u00e4ytt\u00e4j\u00e4\u00e4 ei l\u00f6ytynyt", "error.user.notFound": "K\u00e4ytt\u00e4j\u00e4\u00e4 ei l\u00f6ytynyt",
"error.user.password.invalid": "error.user.password.invalid": "Anna kelpaava salasana. Salasanan täytyy olla ainakin 8 merkkiä pitkä.",
"Anna kelpaava salasana. Salasanan täytyy olla ainakin 8 merkkiä pitkä.",
"error.user.password.notSame": "Salasanat eivät täsmää", "error.user.password.notSame": "Salasanat eivät täsmää",
"error.user.password.undefined": "Käyttäjällä ei ole salasanaa", "error.user.password.undefined": "Käyttäjällä ei ole salasanaa",
"error.user.role.invalid": "Anna kelpaava käyttäjätaso", "error.user.role.invalid": "Anna kelpaava käyttäjätaso",
"error.user.update.permission": "error.user.update.permission": "Sinulla ei ole oikeutta päivittää käyttäjää \"{name}\"",
"Sinulla ei ole oikeutta päivittää käyttäjää \"{name}\"",
"error.validation.accepted": "Ole hyvä ja vahvista", "error.validation.accepted": "Ole hyvä ja vahvista",
"error.validation.alpha": "Anna vain merkkejä väliltä a-z", "error.validation.alpha": "Anna vain merkkejä väliltä a-z",
"error.validation.alphanum": "error.validation.alphanum": "Anna vain merkkejä väliltä a-z tai/ja numeroita väliltä 0-9",
"Anna vain merkkejä väliltä a-z tai/ja numeroita väliltä 0-9", "error.validation.between": "Anna arvo väliltä \"{min}\" ja \"{max}\"",
"error.validation.between":
"Anna arvo väliltä \"{min}\" ja \"{max}\"",
"error.validation.boolean": "Vahvista tai peruuta", "error.validation.boolean": "Vahvista tai peruuta",
"error.validation.contains": "error.validation.contains": "Anna arvo joka sisältää \"{needle}\"",
"Anna arvo joka sisältää \"{needle}\"",
"error.validation.date": "Anna kelpaava päivämäärä", "error.validation.date": "Anna kelpaava päivämäärä",
"error.validation.date.after": "Anna päivämäärä {date} jälkeen", "error.validation.date.after": "Anna päivämäärä {date} jälkeen",
"error.validation.date.before": "Anna päivämäärä ennen {date}", "error.validation.date.before": "Anna päivämäärä ennen {date}",
@@ -210,18 +169,14 @@
"error.validation.less": "Anna arvo joka on pienempi kuin {max}", "error.validation.less": "Anna arvo joka on pienempi kuin {max}",
"error.validation.match": "Arvo ei vastaa vaadittua kaavaa", "error.validation.match": "Arvo ei vastaa vaadittua kaavaa",
"error.validation.max": "Anna arvo joka on enintään {max}", "error.validation.max": "Anna arvo joka on enintään {max}",
"error.validation.maxlength": "error.validation.maxlength": "Anna lyhyempi arvo. (enintään {max} merkkiä)",
"Anna lyhyempi arvo. (enintään {max} merkkiä)",
"error.validation.maxwords": "Anna korkeintaan {max} sana(a)", "error.validation.maxwords": "Anna korkeintaan {max} sana(a)",
"error.validation.min": "Anna arvo joka on vähintään {min}", "error.validation.min": "Anna arvo joka on vähintään {min}",
"error.validation.minlength": "error.validation.minlength": "Anna pidempi arvo. (vähintään {min} merkkiä)",
"Anna pidempi arvo. (vähintään {min} merkkiä)",
"error.validation.minwords": "Anna vähintään {min} sana(a)", "error.validation.minwords": "Anna vähintään {min} sana(a)",
"error.validation.more": "Anna suurempi arvo kuin {min}", "error.validation.more": "Anna suurempi arvo kuin {min}",
"error.validation.notcontains": "error.validation.notcontains": "Anna arvo joka ei sisällä \"{needle}\"",
"Anna arvo joka ei sisällä \"{needle}\"", "error.validation.notin": "Arvo ei voi sisältää mitään seuraavista: ({notIn})",
"error.validation.notin":
"Arvo ei voi sisältää mitään seuraavista: ({notIn})",
"error.validation.option": "Valitse kelpaava vaihtoehto", "error.validation.option": "Valitse kelpaava vaihtoehto",
"error.validation.num": "Anna kelpaava numero", "error.validation.num": "Anna kelpaava numero",
"error.validation.required": "Arvo ei voi olla tyhjä", "error.validation.required": "Arvo ei voi olla tyhjä",
@@ -238,8 +193,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.delete.confirm": "file.delete.confirm": "Haluatko varmasti poistaa tiedoston <br><strong>{filename}</strong>?",
"Haluatko varmasti poistaa tiedoston <br><strong>{filename}</strong>?",
"files": "Tiedostot", "files": "Tiedostot",
"files.empty": "Tiedostoja ei ole vielä lisätty", "files.empty": "Tiedostoja ei ole vielä lisätty",
@@ -251,29 +205,22 @@
"installation": "Asennus", "installation": "Asennus",
"installation.completed": "Paneeli on asennettu", "installation.completed": "Paneeli on asennettu",
"installation.disabled": "Paneelin asennus on oletuksena poissa käytöstä julkisilla palvelimilla. Aja asennus paikallisella koneella, tai ota paneeli käyttöön <code>panel.install</code>-optiolla.", "installation.disabled": "Paneelin asennus on oletuksena poissa käytöstä julkisilla palvelimilla. Aja asennus paikallisella koneella, tai ota paneeli käyttöön <code>panel.install</code>-optiolla.",
"installation.issues.accounts": "installation.issues.accounts": "<code>/site/accounts</code> -kansio ei ole olemassa tai siihen ei voi kirjoittaa",
"<code>/site/accounts</code> -kansio ei ole olemassa tai siihen ei voi kirjoittaa", "installation.issues.content": "<code>/content</code> -kansio ei ole olemassa tai siihen ei voi kirjoittaa",
"installation.issues.content":
"<code>/content</code> -kansio ei ole olemassa tai siihen ei voi kirjoittaa",
"installation.issues.curl": "<code>CURL</code>-laajennos on pakollinen", "installation.issues.curl": "<code>CURL</code>-laajennos on pakollinen",
"installation.issues.headline": "Paneelia ei voida asentaa", "installation.issues.headline": "Paneelia ei voida asentaa",
"installation.issues.mbstring": "installation.issues.mbstring": "<code>MB String</code>-laajennos on pakollinen",
"<code>MB String</code>-laajennos on pakollinen", "installation.issues.media": "<code>/media</code> -kansio ei ole olemassa tai siihen ei voi kirjoittaa",
"installation.issues.media":
"<code>/media</code> -kansio ei ole olemassa tai siihen ei voi kirjoittaa",
"installation.issues.php": "Varmista että <code>PHP 7+</code> on käytössä", "installation.issues.php": "Varmista että <code>PHP 7+</code> on käytössä",
"installation.issues.server": "installation.issues.server": "Kirby tarvitsee jonkun seuraavista: <code>Apache</code>, <code>Nginx</code> tai <code>Caddy</code>",
"Kirby tarvitsee jonkun seuraavista: <code>Apache</code>, <code>Nginx</code> tai <code>Caddy</code>",
"installation.issues.sessions": "<code>/site/sessions</code> -kansio ei ole olemassa tai siihen ei voi kirjoittaa", "installation.issues.sessions": "<code>/site/sessions</code> -kansio ei ole olemassa tai siihen ei voi kirjoittaa",
"language": "Kieli", "language": "Kieli",
"language.code": "Tunniste", "language.code": "Tunniste",
"language.convert": "Muuta oletukseksi", "language.convert": "Muuta oletukseksi",
"language.convert.confirm": "language.convert.confirm": "<p>Haluatko varmasti muuttaa kielen <strong>{name}</strong> oletuskieleksi? Tätä muutosta ei voi peruuttaa.</p><p>Jos<strong>{name}</strong> sisältää kääntämättömiä kohtia, varakäännöstä ei enää ole näille kohdille ja sivustosi saattaa olla osittain tyhjä.</p>",
"<p>Haluatko varmasti muuttaa kielen <strong>{name}</strong> oletuskieleksi? Tätä muutosta ei voi peruuttaa.</p><p>Jos<strong>{name}</strong> sisältää kääntämättömiä kohtia, varakäännöstä ei enää ole näille kohdille ja sivustosi saattaa olla osittain tyhjä.</p>",
"language.create": "Lisää uusi kieli", "language.create": "Lisää uusi kieli",
"language.delete.confirm": "language.delete.confirm": "Haluatko varmasti poistaa kielen <strong>{name}</strong>, mukaanlukien kaikki käännökset? Tätä toimintoa ei voi peruuttaa!",
"Haluatko varmasti poistaa kielen <strong>{name}</strong>, mukaanlukien kaikki käännökset? Tätä toimintoa ei voi peruuttaa!",
"language.deleted": "Kieli on poistettu", "language.deleted": "Kieli on poistettu",
"language.direction": "Lukusuunta", "language.direction": "Lukusuunta",
"language.direction.ltr": "Vasemmalta oikealle", "language.direction.ltr": "Vasemmalta oikealle",
@@ -292,8 +239,7 @@
"license": "Lisenssi", "license": "Lisenssi",
"license.buy": "Osta lisenssi", "license.buy": "Osta lisenssi",
"license.register": "Rekisteröi", "license.register": "Rekisteröi",
"license.register.help": "license.register.help": "Lisenssiavain on lähetetty oston jälkeen sähköpostiisi. Kopioi ja liitä avain tähän.",
"Lisenssiavain on lähetetty oston jälkeen sähköpostiisi. Kopioi ja liitä avain tähän.",
"license.register.label": "Anna lisenssiavain", "license.register.label": "Anna lisenssiavain",
"license.register.success": "Kiitos kun tuet Kirbyä", "license.register.success": "Kiitos kun tuet Kirbyä",
"license.unregistered": "Tämä on rekisteröimätön demo Kirbystä", "license.unregistered": "Tämä on rekisteröimätön demo Kirbystä",
@@ -354,10 +300,8 @@
"page.changeStatus.position": "Valitse järjestyspaikka", "page.changeStatus.position": "Valitse järjestyspaikka",
"page.changeStatus.select": "Valitse uusi tila", "page.changeStatus.select": "Valitse uusi tila",
"page.changeTemplate": "Vaihda sivupohja", "page.changeTemplate": "Vaihda sivupohja",
"page.delete.confirm": "page.delete.confirm": "Haluatko varmasti poistaa sivun <strong>{title}</strong>?",
"Haluatko varmasti poistaa sivun <strong>{title}</strong>?", "page.delete.confirm.subpages": "<strong>Tällä sivulla on alasivuja</strong>.<br>Myös kaikki alasivut poistetaan.",
"page.delete.confirm.subpages":
"<strong>Tällä sivulla on alasivuja</strong>.<br>Myös kaikki alasivut poistetaan.",
"page.delete.confirm.title": "Anna vahvistuksena sivun nimi", "page.delete.confirm.title": "Anna vahvistuksena sivun nimi",
"page.draft.create": "Uusi luonnos", "page.draft.create": "Uusi luonnos",
"page.duplicate.appendix": "Kopioi", "page.duplicate.appendix": "Kopioi",
@@ -365,8 +309,7 @@
"page.duplicate.pages": "Copy pages", "page.duplicate.pages": "Copy pages",
"page.status": "Tila", "page.status": "Tila",
"page.status.draft": "Luonnos", "page.status.draft": "Luonnos",
"page.status.draft.description": "page.status.draft.description": "The page is in draft mode and only visible for logged in editors or via secret link",
"Sivu on luonnostilassa ja näkyy vain kirjautuneille muokkaajille",
"page.status.listed": "Julkinen", "page.status.listed": "Julkinen",
"page.status.listed.description": "Sivu on julkinen kaikille", "page.status.listed.description": "Sivu on julkinen kaikille",
"page.status.unlisted": "Listaamaton", "page.status.unlisted": "Listaamaton",
@@ -388,6 +331,7 @@
"replace": "Korvaa", "replace": "Korvaa",
"retry": "Yrit\u00e4 uudelleen", "retry": "Yrit\u00e4 uudelleen",
"revert": "Palauta", "revert": "Palauta",
"revert.confirm": "Do you really want to <strong>delete all unsaved changes</strong>?",
"role": "K\u00e4ytt\u00e4j\u00e4taso", "role": "K\u00e4ytt\u00e4j\u00e4taso",
"role.admin.description": "Pääkäyttäjällä on kaikki oikeudet", "role.admin.description": "Pääkäyttäjällä on kaikki oikeudet",
@@ -451,8 +395,7 @@
"url.placeholder": "https://esimerkki.fi", "url.placeholder": "https://esimerkki.fi",
"user": "Käyttäjä", "user": "Käyttäjä",
"user.blueprint": "user.blueprint": "Voit määrittää lisää osioita ja lomakekenttiä tälle käyttäjälle kaavassa <strong>/site/blueprints/users/{role}.yml</strong>",
"Voit määrittää lisää osioita ja lomakekenttiä tälle käyttäjälle kaavassa <strong>/site/blueprints/users/{role}.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",
@@ -463,8 +406,7 @@
"user.changeRole.select": "Valitse uusi käyttäjätaso", "user.changeRole.select": "Valitse uusi käyttäjätaso",
"user.create": "Lisää uusi käyttäjä", "user.create": "Lisää uusi käyttäjä",
"user.delete": "Poista tämä käyttäjä", "user.delete": "Poista tämä käyttäjä",
"user.delete.confirm": "user.delete.confirm": "Haluatko varmsti poistaa käyttäjän <br><strong>{email}</strong>?",
"Haluatko varmsti poistaa käyttäjän <br><strong>{email}</strong>?",
"users": "Käyttäjät", "users": "Käyttäjät",

View File

@@ -42,10 +42,8 @@
"error.avatar.create.fail": "Limage du profil na pu être transférée", "error.avatar.create.fail": "Limage du profil na pu être transférée",
"error.avatar.delete.fail": "Limage du profil na pu être supprimée", "error.avatar.delete.fail": "Limage du profil na pu être supprimée",
"error.avatar.dimensions.invalid": "error.avatar.dimensions.invalid": "Veuillez choisir une image de profil de largeur et hauteur inférieures à 3000 pixels",
"Veuillez choisir une image de profil de largeur et hauteur inférieures à 3000 pixels", "error.avatar.mime.forbidden": "L'image du profil utilisateur doit être un fichier JPEG ou PNG",
"error.avatar.mime.forbidden":
"L'image du profil utilisateur doit être un fichier JPEG ou PNG",
"error.blueprint.notFound": "Le blueprint «&nbsp;{name}&nbsp;» na pu être chargé", "error.blueprint.notFound": "Le blueprint «&nbsp;{name}&nbsp;» na pu être chargé",
@@ -54,22 +52,17 @@
"error.field.converter.invalid": "Convertisseur «&nbsp;{converter}&nbsp;» incorrect", "error.field.converter.invalid": "Convertisseur «&nbsp;{converter}&nbsp;» incorrect",
"error.file.changeName.empty": "Le nom ne peut être vide", "error.file.changeName.empty": "Le nom ne peut être vide",
"error.file.changeName.permission": "error.file.changeName.permission": "Vous nêtes pas autorisé à modifier le nom de «&nbsp;{filename}&nbsp;»",
"Vous nêtes pas autorisé à modifier le nom de «&nbsp;{filename}&nbsp;»",
"error.file.duplicate": "Un fichier nommé «&nbsp;{filename}&nbsp;» existe déjà", "error.file.duplicate": "Un fichier nommé «&nbsp;{filename}&nbsp;» existe déjà",
"error.file.extension.forbidden": "error.file.extension.forbidden": "Lextension «&nbsp;{extension}&nbsp;» nest pas autorisée",
"Lextension «&nbsp;{extension}&nbsp;» nest pas autorisée", "error.file.extension.missing": "Lextension pour «&nbsp;{filename}&nbsp;» est manquante",
"error.file.extension.missing":
"Lextension pour «&nbsp;{filename}&nbsp;» est manquante",
"error.file.maxheight": "La hauteur de l'image ne doit pas excéder {height} pixels", "error.file.maxheight": "La hauteur de l'image ne doit pas excéder {height} pixels",
"error.file.maxsize": "Le fichier est trop volumineux", "error.file.maxsize": "Le fichier est trop volumineux",
"error.file.maxwidth": "La largeur de l'image ne doit pas excéder {width} pixels", "error.file.maxwidth": "La largeur de l'image ne doit pas excéder {width} pixels",
"error.file.mime.differs": "error.file.mime.differs": "Le fichier transféré doit être du même type de média «&nbsp;{mime}&nbsp;»",
"Le fichier transféré doit être du même type de média «&nbsp;{mime}&nbsp;»",
"error.file.mime.forbidden": "Le type de média «&nbsp;{mime}&nbsp;» nest pas autorisé", "error.file.mime.forbidden": "Le type de média «&nbsp;{mime}&nbsp;» nest pas autorisé",
"error.file.mime.invalid": "Type de média invalide : {mime}", "error.file.mime.invalid": "Type de média invalide : {mime}",
"error.file.mime.missing": "error.file.mime.missing": "Le type de média de «&nbsp;{filename}&nbsp;» na pu être détecté",
"Le type de média de «&nbsp;{filename}&nbsp;» na pu être détecté",
"error.file.minheight": "La hauteur de l'image doit être au moins {height} pixels", "error.file.minheight": "La hauteur de l'image doit être au moins {height} pixels",
"error.file.minsize": "Le fichier n'est pas assez volumineux", "error.file.minsize": "Le fichier n'est pas assez volumineux",
"error.file.minwidth": "La largeur de l'image doit être au moins {width} pixels", "error.file.minwidth": "La largeur de l'image doit être au moins {width} pixels",
@@ -90,111 +83,77 @@
"error.license.email": "Veuillez saisir un courriel valide", "error.license.email": "Veuillez saisir un courriel valide",
"error.license.verification": "La licence na pu être vérifiée", "error.license.verification": "La licence na pu être vérifiée",
"error.page.changeSlug.permission": "error.page.changeSlug.permission": "Vous nêtes pas autorisé à modifier lidentifiant dURL pour «&nbsp;{slug}&nbsp;»",
"Vous nêtes pas autorisé à modifier lidentifiant dURL pour «&nbsp;{slug}&nbsp;»", "error.page.changeStatus.incomplete": "La page comporte des erreurs et ne peut pas être publiée",
"error.page.changeStatus.incomplete": "error.page.changeStatus.permission": "Le statut de cette page ne peut être modifié",
"La page comporte des erreurs et ne peut pas être publiée", "error.page.changeStatus.toDraft.invalid": "La page «&nbsp;{slug}&nbsp;» ne peut être convertie en brouillon",
"error.page.changeStatus.permission": "error.page.changeTemplate.invalid": "Le modèle de la page «&nbsp;{slug}&nbsp;» ne peut être changé",
"Le statut de cette page ne peut être modifié", "error.page.changeTemplate.permission": "Vous nêtes pas autorisé à changer le modèle de «&nbsp;{slug}&nbsp;»",
"error.page.changeStatus.toDraft.invalid":
"La page «&nbsp;{slug}&nbsp;» ne peut être convertie en brouillon",
"error.page.changeTemplate.invalid":
"Le modèle de la page «&nbsp;{slug}&nbsp;» ne peut être changé",
"error.page.changeTemplate.permission":
"Vous nêtes pas autorisé à changer le modèle de «&nbsp;{slug}&nbsp;»",
"error.page.changeTitle.empty": "Le titre ne peut être vide", "error.page.changeTitle.empty": "Le titre ne peut être vide",
"error.page.changeTitle.permission": "error.page.changeTitle.permission": "Vous nêtes pas autorisé à modifier le titre de «&nbsp;{slug}&nbsp;»",
"Vous nêtes pas autorisé à modifier le titre de «&nbsp;{slug}&nbsp;»",
"error.page.create.permission": "Vous nêtes pas autorisé à créer «&nbsp;{slug}&nbsp;»", "error.page.create.permission": "Vous nêtes pas autorisé à créer «&nbsp;{slug}&nbsp;»",
"error.page.delete": "La page «&nbsp;{slug}&nbsp;» ne peut être supprimée", "error.page.delete": "La page «&nbsp;{slug}&nbsp;» ne peut être supprimée",
"error.page.delete.confirm": "Veuillez saisir le titre de la page pour confirmer", "error.page.delete.confirm": "Veuillez saisir le titre de la page pour confirmer",
"error.page.delete.hasChildren": "error.page.delete.hasChildren": "La page comporte des sous-pages et ne peut pas être supprimée",
"La page comporte des sous-pages et ne peut pas être supprimée",
"error.page.delete.permission": "Vous nêtes pas autorisé à supprimer «&nbsp;{slug}&nbsp;»", "error.page.delete.permission": "Vous nêtes pas autorisé à supprimer «&nbsp;{slug}&nbsp;»",
"error.page.draft.duplicate": "error.page.draft.duplicate": "Un brouillon avec lidentifiant dURL «&nbsp;{slug}&nbsp;» existe déjà",
"Un brouillon avec lidentifiant dURL «&nbsp;{slug}&nbsp;» existe déjà", "error.page.duplicate": "Une page avec lidentifiant dURL «&nbsp;{slug}&nbsp;» existe déjà",
"error.page.duplicate":
"Une page avec lidentifiant dURL «&nbsp;{slug}&nbsp;» existe déjà",
"error.page.duplicate.permission": "Vous n'êtes pas autorisé à dupliquer «&nbsp;{slug}&nbsp;»", "error.page.duplicate.permission": "Vous n'êtes pas autorisé à dupliquer «&nbsp;{slug}&nbsp;»",
"error.page.notFound": "La page «&nbsp;{slug}&nbsp;» na pu être trouvée", "error.page.notFound": "La page «&nbsp;{slug}&nbsp;» na pu être trouvée",
"error.page.num.invalid": "error.page.num.invalid": "Veuillez saisir un numéro de position valide. Les numéros ne doivent pas être négatifs.",
"Veuillez saisir un numéro de position valide. Les numéros ne doivent pas être négatifs.",
"error.page.slug.invalid": "Veuillez saisir un préfixe dURL valide", "error.page.slug.invalid": "Veuillez saisir un préfixe dURL valide",
"error.page.sort.permission": "La page «&nbsp;{slug}&nbsp;» ne peut être réordonnée", "error.page.sort.permission": "La page «&nbsp;{slug}&nbsp;» ne peut être réordonnée",
"error.page.status.invalid": "Veuillez choisir un statut de page valide", "error.page.status.invalid": "Veuillez choisir un statut de page valide",
"error.page.undefined": "La page na pu être trouvée", "error.page.undefined": "La page na pu être trouvée",
"error.page.update.permission": "Vous nêtes pas autorisé à modifier «&nbsp;{slug}&nbsp;»", "error.page.update.permission": "Vous nêtes pas autorisé à modifier «&nbsp;{slug}&nbsp;»",
"error.section.files.max.plural": "error.section.files.max.plural": "Vous ne pouvez ajouter plus de {max} fichier(s) à la section «&nbsp;{section}&nbsp;»",
"Vous ne pouvez ajouter plus de {max} fichier(s) à la section «&nbsp;{section}&nbsp;»", "error.section.files.max.singular": "Vous ne pouvez ajouter plus dun fichier à la section «&nbsp;{section}&nbsp;»",
"error.section.files.max.singular": "error.section.files.min.plural": "La section «&nbsp;{section}\"&nbsp;» requiert au moins {min} fichiers",
"Vous ne pouvez ajouter plus dun fichier à la section «&nbsp;{section}&nbsp;»", "error.section.files.min.singular": "La section «&nbsp;{section}\"&nbsp;» requiert au moins un fichier",
"error.section.files.min.plural":
"La section «&nbsp;{section}\"&nbsp;» requiert au moins {min} fichiers",
"error.section.files.min.singular":
"La section «&nbsp;{section}\"&nbsp;» requiert au moins un fichier",
"error.section.pages.max.plural": "error.section.pages.max.plural": "Vous ne pouvez ajouter plus de {max} pages à la section «&nbsp;{section}&nbsp;»",
"Vous ne pouvez ajouter plus de {max} pages à la section «&nbsp;{section}&nbsp;»", "error.section.pages.max.singular": "Vous ne pouvez ajouter plus dune page à la section «&nbsp;{section}&nbsp;»",
"error.section.pages.max.singular": "error.section.pages.min.plural": "La section «&nbsp;{section}\"&nbsp;» requiert au moins {min} pages",
"Vous ne pouvez ajouter plus dune page à la section «&nbsp;{section}&nbsp;»", "error.section.pages.min.singular": "La section «&nbsp;{section}\"&nbsp;» requiert au moins une page",
"error.section.pages.min.plural":
"La section «&nbsp;{section}\"&nbsp;» requiert au moins {min} pages",
"error.section.pages.min.singular":
"La section «&nbsp;{section}\"&nbsp;» requiert au moins une page",
"error.section.notLoaded": "La section «&nbsp;{name}&nbsp;» na pu être chargée", "error.section.notLoaded": "La section «&nbsp;{name}&nbsp;» na pu être chargée",
"error.section.type.invalid": "Le type de section «&nbsp;{type}&nbsp;» est incorrect", "error.section.type.invalid": "Le type de section «&nbsp;{type}&nbsp;» est incorrect",
"error.site.changeTitle.empty": "Le titre ne peut être vide", "error.site.changeTitle.empty": "Le titre ne peut être vide",
"error.site.changeTitle.permission": "error.site.changeTitle.permission": "Vous nêtes pas autorisé à modifier le titre du site",
"Vous nêtes pas autorisé à modifier le titre du site",
"error.site.update.permission": "Vous nêtes pas autorisé à modifier le contenu global du site", "error.site.update.permission": "Vous nêtes pas autorisé à modifier le contenu global du site",
"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.user.changeEmail.permission": "error.user.changeEmail.permission": "Vous nêtes pas autorisé à modifier le courriel de lutilisateur « {name} »",
"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": "error.user.changeName.permission": "Vous nêtes pas autorisé à modifier le nom de lutilisateur « {name} »",
"Vous nêtes pas autorisé à changer la langue de lutilisateur « {name} »", "error.user.changePassword.permission": "Vous nêtes pas autorisé à changer le mot de passe de lutilisateur « {name} »",
"error.user.changeName.permission": "error.user.changeRole.lastAdmin": "Le rôle du dernier administrateur ne peut être modifié",
"Vous nêtes pas autorisé à modifier le nom de lutilisateur « {name} »", "error.user.changeRole.permission": "Vous nêtes pas autorisé à changer le rôle de lutilisateur « {name} »",
"error.user.changePassword.permission": "error.user.changeRole.toAdmin": "Vous nêtes pas autorisé à attribuer le rôle dadministrateur aux utilisateurs",
"Vous nêtes pas autorisé à changer le mot de passe de lutilisateur « {name} »",
"error.user.changeRole.lastAdmin":
"Le rôle du dernier administrateur ne peut être modifié",
"error.user.changeRole.permission":
"Vous nêtes pas autorisé à changer le rôle de lutilisateur « {name} »",
"error.user.changeRole.toAdmin":
"Vous nêtes pas autorisé à attribuer le rôle dadministrateur aux utilisateurs",
"error.user.create.permission": "Vous nêtes pas autorisé à créer cet utilisateur", "error.user.create.permission": "Vous nêtes pas autorisé à créer cet utilisateur",
"error.user.delete": "Lutilisateur « {name} » ne peut être supprimé", "error.user.delete": "Lutilisateur « {name} » ne peut être supprimé",
"error.user.delete.lastAdmin": "Le dernier administrateur ne peut être supprimé", "error.user.delete.lastAdmin": "Le dernier administrateur ne peut être supprimé",
"error.user.delete.lastUser": "Le dernier utilisateur ne peut être supprimé", "error.user.delete.lastUser": "Le dernier utilisateur ne peut être supprimé",
"error.user.delete.permission": "error.user.delete.permission": "Vous nêtes pas autorisé à supprimer lutilisateur « {name} »",
"Vous nêtes pas autorisé à supprimer lutilisateur « {name} »", "error.user.duplicate": "Un utilisateur avec le courriel « {email} » existe déjà",
"error.user.duplicate":
"Un utilisateur avec le courriel « {email} » existe déjà",
"error.user.email.invalid": "Veuillez saisir un courriel valide", "error.user.email.invalid": "Veuillez saisir un courriel valide",
"error.user.language.invalid": "Veuillez saisir une langue valide", "error.user.language.invalid": "Veuillez saisir une langue valide",
"error.user.notFound": "Lutilisateur « {name} » na pu être trouvé", "error.user.notFound": "Lutilisateur « {name} » na pu être trouvé",
"error.user.password.invalid": "error.user.password.invalid": "Veuillez saisir un mot de passe valide. Les mots de passe doivent comporter au moins 8 caractères.",
"Veuillez saisir un mot de passe valide. Les mots de passe doivent comporter au moins 8 caractères.",
"error.user.password.notSame": "Les mots de passe ne sont pas identiques", "error.user.password.notSame": "Les mots de passe ne sont pas identiques",
"error.user.password.undefined": "Cet utilisateur na pas de mot de passe", "error.user.password.undefined": "Cet utilisateur na pas de mot de passe",
"error.user.role.invalid": "Veuillez saisir un rôle valide", "error.user.role.invalid": "Veuillez saisir un rôle valide",
"error.user.update.permission": "error.user.update.permission": "Vous nêtes pas autorisé à modifier lutilisateur « {name} »",
"Vous nêtes pas autorisé à modifier lutilisateur « {name} »",
"error.validation.accepted": "Veuillez confirmer", "error.validation.accepted": "Veuillez confirmer",
"error.validation.alpha": "Veuillez saisir uniquement des caractères alphabétiques minuscules", "error.validation.alpha": "Veuillez saisir uniquement des caractères alphabétiques minuscules",
"error.validation.alphanum": "error.validation.alphanum": "Veuillez ne saisir que des minuscules de a à z et des chiffres de 0 à 9",
"Veuillez ne saisir que des minuscules de a à z et des chiffres de 0 à 9", "error.validation.between": "Veuillez saisir une valeur entre «&nbsp;{min}&nbsp;» et «&nbsp;{max}&nbsp;»",
"error.validation.between":
"Veuillez saisir une valeur entre «&nbsp;{min}&nbsp;» et «&nbsp;{max}&nbsp;»",
"error.validation.boolean": "Veuillez confirmer ou refuser", "error.validation.boolean": "Veuillez confirmer ou refuser",
"error.validation.contains": "error.validation.contains": "Veuillez saisir une valeur contenant «&nbsp;{needle}&nbsp;»",
"Veuillez saisir une valeur contenant «&nbsp;{needle}&nbsp;»",
"error.validation.date": "Veuillez saisir une date valide", "error.validation.date": "Veuillez saisir une date valide",
"error.validation.date.after": "Veuillez saisir une date après {date}", "error.validation.date.after": "Veuillez saisir une date après {date}",
"error.validation.date.before": "Veuillez saisir une date avant {date}", "error.validation.date.before": "Veuillez saisir une date avant {date}",
@@ -210,18 +169,14 @@
"error.validation.less": "Veuillez saisir une valeur inférieure à {max}", "error.validation.less": "Veuillez saisir une valeur inférieure à {max}",
"error.validation.match": "La valeur ne correspond pas au modèle attendu", "error.validation.match": "La valeur ne correspond pas au modèle attendu",
"error.validation.max": "Veuillez saisir une valeur inférieure ou égale à {max}", "error.validation.max": "Veuillez saisir une valeur inférieure ou égale à {max}",
"error.validation.maxlength": "error.validation.maxlength": "Veuillez saisir une valeur plus courte (max. {max} caractères)",
"Veuillez saisir une valeur plus courte (max. {max} caractères)",
"error.validation.maxwords": "Veuillez ne pas saisir plus de {max} mot(s)", "error.validation.maxwords": "Veuillez ne pas saisir plus de {max} mot(s)",
"error.validation.min": "Veuillez saisir une valeur supérieure ou égale à {min}", "error.validation.min": "Veuillez saisir une valeur supérieure ou égale à {min}",
"error.validation.minlength": "error.validation.minlength": "Veuillez saisir une valeur plus longue (min. {min} caractères)",
"Veuillez saisir une valeur plus longue (min. {min} caractères)",
"error.validation.minwords": "Veuillez saisir au moins {min} mot(s)", "error.validation.minwords": "Veuillez saisir au moins {min} mot(s)",
"error.validation.more": "Veuillez saisir une valeur supérieure à {min}", "error.validation.more": "Veuillez saisir une valeur supérieure à {min}",
"error.validation.notcontains": "error.validation.notcontains": "Veuillez saisir une valeur ne contenant pas «&nbsp;{needle}&nbsp;»",
"Veuillez saisir une valeur ne contenant pas «&nbsp;{needle}&nbsp;»", "error.validation.notin": "Veuillez ne saisir aucun des éléments suivants: ({notIn})",
"error.validation.notin":
"Veuillez ne saisir aucun des éléments suivants: ({notIn})",
"error.validation.option": "Veuillez sélectionner une option valide", "error.validation.option": "Veuillez sélectionner une option valide",
"error.validation.num": "Veuillez saisir un nombre valide", "error.validation.num": "Veuillez saisir un nombre valide",
"error.validation.required": "Veuillez saisir quelque chose", "error.validation.required": "Veuillez saisir quelque chose",
@@ -238,8 +193,7 @@
"field.structure.empty": "Pas encore dentrée", "field.structure.empty": "Pas encore dentrée",
"field.users.empty": "Pas encore dutilisateur sélectionné", "field.users.empty": "Pas encore dutilisateur sélectionné",
"file.delete.confirm": "file.delete.confirm": "Voulez-vous vraiment supprimer <br><strong>{filename}</strong>&nbsp;?",
"Voulez-vous vraiment supprimer <br><strong>{filename}</strong>&nbsp;?",
"files": "Fichiers", "files": "Fichiers",
"files.empty": "Pas encore de fichier", "files.empty": "Pas encore de fichier",
@@ -251,29 +205,22 @@
"installation": "Installation", "installation": "Installation",
"installation.completed": "Le Panel a été installé", "installation.completed": "Le Panel a été installé",
"installation.disabled": "L'installation du Panel est désactivée par défaut sur les serveurs publics. Veuillez lancer l'installation sur un serveur local, ou activez-la avec l'option <code>panel.install</code>.", "installation.disabled": "L'installation du Panel est désactivée par défaut sur les serveurs publics. Veuillez lancer l'installation sur un serveur local, ou activez-la avec l'option <code>panel.install</code>.",
"installation.issues.accounts": "installation.issues.accounts": "Le dossier <code>/site/accounts</code> nexiste pas ou nest pas accessible en écriture",
"Le dossier <code>/site/accounts</code> nexiste pas ou nest pas accessible en écriture", "installation.issues.content": "Le dossier <code>/content</code> nexiste pas ou nest pas accessible en écriture",
"installation.issues.content":
"Le dossier <code>/content</code> nexiste pas ou nest pas accessible en écriture",
"installation.issues.curl": "Lextension <code>CURL</code> est requise", "installation.issues.curl": "Lextension <code>CURL</code> est requise",
"installation.issues.headline": "Le Panel ne peut être installé", "installation.issues.headline": "Le Panel ne peut être installé",
"installation.issues.mbstring": "installation.issues.mbstring": "Lextension <code>MB String</code> est requise",
"Lextension <code>MB String</code> est requise", "installation.issues.media": "Le dossier <code>/media</code> nexiste pas ou nest pas accessible en écriture",
"installation.issues.media":
"Le dossier <code>/media</code> nexiste pas ou nest pas accessible en écriture",
"installation.issues.php": "Veuillez utiliser <code>PHP 7+</code>", "installation.issues.php": "Veuillez utiliser <code>PHP 7+</code>",
"installation.issues.server": "installation.issues.server": "Kirby requiert <code>Apache</code>, <code>Nginx</code> ou <code>Caddy</code>",
"Kirby requiert <code>Apache</code>, <code>Nginx</code> ou <code>Caddy</code>",
"installation.issues.sessions": "Le dossier <code>/site/sessions</code> nexiste pas ou nest pas accessible en écriture", "installation.issues.sessions": "Le dossier <code>/site/sessions</code> nexiste pas ou nest pas accessible en écriture",
"language": "Langue", "language": "Langue",
"language.code": "Code", "language.code": "Code",
"language.convert": "Choisir comme langue par défaut", "language.convert": "Choisir comme langue par défaut",
"language.convert.confirm": "language.convert.confirm": "<p>Souhaitez-vous vraiment convertir <strong>{name}</strong> vers la langue par défaut&nbsp;? Cette action ne peut pas être annulée.</p><p>Si <strong>{name}</strong> a un contenu non traduit, il ny aura plus de solution de secours possible et certaines parties de votre site pourraient être vides.</p>",
"<p>Souhaitez-vous vraiment convertir <strong>{name}</strong> vers la langue par défaut&nbsp;? Cette action ne peut pas être annulée.</p><p>Si <strong>{name}</strong> a un contenu non traduit, il ny aura plus de solution de secours possible et certaines parties de votre site pourraient être vides.</p>",
"language.create": "Ajouter une nouvelle langue", "language.create": "Ajouter une nouvelle langue",
"language.delete.confirm": "language.delete.confirm": "Voulez-vous vraiment supprimer la langue <strong>{name}</strong>, ainsi que toutes ses traductions&nbsp;? Cette action ne peut être annulée&nbsp;!",
"Voulez-vous vraiment supprimer la langue <strong>{name}</strong>, ainsi que toutes ses traductions&nbsp;? Cette action ne peut être annulée&nbsp;!",
"language.deleted": "La langue a été supprimée", "language.deleted": "La langue a été supprimée",
"language.direction": "Sens de lecture", "language.direction": "Sens de lecture",
"language.direction.ltr": "De gauche à droite", "language.direction.ltr": "De gauche à droite",
@@ -292,8 +239,7 @@
"license": "Licence", "license": "Licence",
"license.buy": "Acheter une licence", "license.buy": "Acheter une licence",
"license.register": "Senregistrer", "license.register": "Senregistrer",
"license.register.help": "license.register.help": "Vous avez reçu votre numéro de licence par courriel après l'achat. Veuillez le copier et le coller ici pour l'enregistrer.",
"Vous avez reçu votre numéro de licence par courriel après l'achat. Veuillez le copier et le coller ici pour l'enregistrer.",
"license.register.label": "Veuillez saisir votre numéro de licence", "license.register.label": "Veuillez saisir votre numéro de licence",
"license.register.success": "Merci pour votre soutien à Kirby", "license.register.success": "Merci pour votre soutien à Kirby",
"license.unregistered": "Ceci est une démo non enregistrée de Kirby", "license.unregistered": "Ceci est une démo non enregistrée de Kirby",
@@ -354,10 +300,8 @@
"page.changeStatus.position": "Veuillez sélectionner une position", "page.changeStatus.position": "Veuillez sélectionner une position",
"page.changeStatus.select": "Sélectionner un nouveau statut", "page.changeStatus.select": "Sélectionner un nouveau statut",
"page.changeTemplate": "Changer de modèle", "page.changeTemplate": "Changer de modèle",
"page.delete.confirm": "page.delete.confirm": "Voulez-vous vraiment supprimer <strong>{title}</strong>&nbsp;?",
"Voulez-vous vraiment supprimer <strong>{title}</strong>&nbsp;?", "page.delete.confirm.subpages": "<strong>Cette page contient des sous-pages</strong>. <br>Toutes les sous-pages seront également supprimées.",
"page.delete.confirm.subpages":
"<strong>Cette page contient des sous-pages</strong>. <br>Toutes les sous-pages seront également supprimées.",
"page.delete.confirm.title": "Veuillez saisir le titre de la page pour confirmer", "page.delete.confirm.title": "Veuillez saisir le titre de la page pour confirmer",
"page.draft.create": "Créer un brouillon", "page.draft.create": "Créer un brouillon",
"page.duplicate.appendix": "Copier", "page.duplicate.appendix": "Copier",
@@ -365,8 +309,7 @@
"page.duplicate.pages": "Copier les pages", "page.duplicate.pages": "Copier les pages",
"page.status": "Statut", "page.status": "Statut",
"page.status.draft": "Brouillon", "page.status.draft": "Brouillon",
"page.status.draft.description": "page.status.draft.description": "Cette page est un brouillon et nest visible que pour les éditeurs connectés ou par un lien secret",
"La page est en mode brouillon et nest visible que par les éditeurs connectés",
"page.status.listed": "Public", "page.status.listed": "Public",
"page.status.listed.description": "La page est publique pour tout le monde", "page.status.listed.description": "La page est publique pour tout le monde",
"page.status.unlisted": "Non listé", "page.status.unlisted": "Non listé",
@@ -388,6 +331,7 @@
"replace": "Remplacer", "replace": "Remplacer",
"retry": "Essayer à nouveau", "retry": "Essayer à nouveau",
"revert": "Revenir", "revert": "Revenir",
"revert.confirm": "Voulez-vous vraiment <strong>supprimer toutes les modifications non-enregistrées</strong> ?",
"role": "Rôle", "role": "Rôle",
"role.admin.description": "Ladministrateur dispose de tous les droits", "role.admin.description": "Ladministrateur dispose de tous les droits",
@@ -451,8 +395,7 @@
"url.placeholder": "https://example.com", "url.placeholder": "https://example.com",
"user": "Utilisateur", "user": "Utilisateur",
"user.blueprint": "user.blueprint": "Vous pouvez définir des sections et des champs de formulaire supplémentaires pour ce rôle dutilisateur dans <strong>/site/blueprints/users/{role}.yml</strong>",
"Vous pouvez définir des sections et des champs de formulaire supplémentaires pour ce rôle dutilisateur dans <strong>/site/blueprints/users/{role}.yml</strong>",
"user.changeEmail": "Modifier le courriel", "user.changeEmail": "Modifier le courriel",
"user.changeLanguage": "Modifier la langue", "user.changeLanguage": "Modifier la langue",
"user.changeName": "Renommer cet utilisateur", "user.changeName": "Renommer cet utilisateur",
@@ -463,8 +406,7 @@
"user.changeRole.select": "Sélectionner un nouveau rôle", "user.changeRole.select": "Sélectionner un nouveau rôle",
"user.create": "Ajouter un nouvel utilisateur", "user.create": "Ajouter un nouvel utilisateur",
"user.delete": "Supprimer cet utilisateur", "user.delete": "Supprimer cet utilisateur",
"user.delete.confirm": "user.delete.confirm": "Voulez-vous vraiment supprimer <br><strong>{email}</strong>?",
"Voulez-vous vraiment supprimer <br><strong>{email}</strong>?",
"users": "Utilisateurs", "users": "Utilisateurs",

View File

@@ -42,10 +42,8 @@
"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ő",
"error.avatar.dimensions.invalid": "error.avatar.dimensions.invalid": "A profilkép maximális szélessége és magassága 3000 pixel lehet",
"A profilkép maximális szélessége és magassága 3000 pixel lehet", "error.avatar.mime.forbidden": "A profilkép formátuma csak JPEG vagy PNG lehet",
"error.avatar.mime.forbidden":
"A profilkép formátuma csak JPEG vagy PNG lehet",
"error.blueprint.notFound": "A \"{name}\" oldalsablon nem tölthető be", "error.blueprint.notFound": "A \"{name}\" oldalsablon nem tölthető be",
@@ -54,22 +52,17 @@
"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": "The name must not be empty",
"error.file.changeName.permission": "error.file.changeName.permission": "Nincs jogosultságod megváltoztatni a \"{filename}\" fájl nevét",
"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": "error.file.extension.forbidden": "Tiltott kiterjeszt\u00e9s\u0171 f\u00e1jl",
"Tiltott kiterjeszt\u00e9s\u0171 f\u00e1jl", "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": "The height of the image must not exceed {height} pixels",
"error.file.maxsize": "The file is too large", "error.file.maxsize": "The file is too large",
"error.file.maxwidth": "The width of the image must not exceed {width} pixels", "error.file.maxwidth": "The width of the image must not exceed {width} pixels",
"error.file.mime.differs": "error.file.mime.differs": "A feltöltött fájlnak azonos \"{mime}\" típusúnak kell lennie",
"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": "Invalid mime type: {mime}",
"error.file.mime.missing": "error.file.mime.missing": "A \"{filename}\" fájl típusa nem állapítható meg",
"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": "The height of the image must be at least {height} pixels",
"error.file.minsize": "The file is too small", "error.file.minsize": "The file is too small",
"error.file.minwidth": "The width of the image must be at least {width} pixels", "error.file.minwidth": "The width of the image must be at least {width} pixels",
@@ -90,111 +83,77 @@
"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.page.changeSlug.permission": "error.page.changeSlug.permission": "Nem változtathatod meg az URL-előtagot: \"{slug}\"",
"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": "error.page.changeStatus.permission": "Az oldal státusza nem változtatható meg",
"Az oldal hibákat tartalmaz és nem publikálható", "error.page.changeStatus.toDraft.invalid": "A(z) \"{slug}\" oldalt nem lehet piszkozattá alakítani",
"error.page.changeStatus.permission": "error.page.changeTemplate.invalid": "A \"{slug}\" oldal sablonját nem lehet megváltoztatni",
"Az oldal státusza nem változtatható meg", "error.page.changeTemplate.permission": "Nincs jogosultságod megváltoztatni a sablont ehhez: \"{slug}\"",
"error.page.changeStatus.toDraft.invalid":
"A(z) \"{slug}\" oldalt nem lehet piszkozattá alakítani",
"error.page.changeTemplate.invalid":
"A \"{slug}\" oldal sablonját nem lehet megváltoztatni",
"error.page.changeTemplate.permission":
"Nincs jogosultságod megváltoztatni a sablont ehhez: \"{slug}\"",
"error.page.changeTitle.empty": "A cím nem lehet üres", "error.page.changeTitle.empty": "A cím nem lehet üres",
"error.page.changeTitle.permission": "error.page.changeTitle.permission": "Nincs jogosultságod megváltoztatni a címet: \"{slug}\"",
"Nincs jogosultságod megváltoztatni a címet: \"{slug}\"",
"error.page.create.permission": "Nincs jogosultságod az oldal létrehozásához: \"{slug}\"", "error.page.create.permission": "Nincs jogosultságod az oldal létrehozásához: \"{slug}\"",
"error.page.delete": "A(z) \"{slug}\" oldal nem törölhető", "error.page.delete": "A(z) \"{slug}\" oldal nem törölhető",
"error.page.delete.confirm": "Megerősítéshez add meg az oldal címét", "error.page.delete.confirm": "Megerősítéshez add meg az oldal címét",
"error.page.delete.hasChildren": "error.page.delete.hasChildren": "Az oldalnak vannak aloldalai és nem törölhető",
"Az oldalnak vannak aloldalai és nem törölhető",
"error.page.delete.permission": "Nincs jogosultságod a(z) \"{slug}\" oldal törléséhez", "error.page.delete.permission": "Nincs jogosultságod a(z) \"{slug}\" oldal törléséhez",
"error.page.draft.duplicate": "error.page.draft.duplicate": "Van már egy másik oldal ezzel az URL-lel: \"{slug}\"",
"Van már egy másik oldal ezzel az URL-lel: \"{slug}\"", "error.page.duplicate": "Van már egy másik oldal ezzel az URL-lel: \"{slug}\"",
"error.page.duplicate":
"Van már egy másik oldal ezzel az URL-lel: \"{slug}\"",
"error.page.duplicate.permission": "Nincs engedélyed a(z) \"{slug}\" másolat keszítéséhez", "error.page.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": "error.page.num.invalid": "Kérlek megfelelő oldalszámozást adj meg. Negatív szám itt nem használható.",
"Kérlek megfelelő oldalszámozást adj meg. Negatív szám itt nem használható.",
"error.page.slug.invalid": "Kérlek megfelelő URL-előtagot adj meg", "error.page.slug.invalid": "Kérlek megfelelő URL-előtagot adj meg",
"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",
"error.page.update.permission": "Nincs jogosultságod a(z) \"{slug}\" oldal frissítéséhez", "error.page.update.permission": "Nincs jogosultságod a(z) \"{slug}\" oldal frissítéséhez",
"error.section.files.max.plural": "error.section.files.max.plural": "Maximum {max} fájlt adhatsz hozzá a(z) \"{section}\" szekcióhoz",
"Maximum {max} fájlt adhatsz hozzá a(z) \"{section}\" szekcióhoz", "error.section.files.max.singular": "Nem adhatsz hozzá egynél több fájlt a(z) \"{section}\" szekcióhoz",
"error.section.files.max.singular": "error.section.files.min.plural": "A \"{section}\" szakasz legalább {min} fájlt igényel",
"Nem adhatsz hozzá egynél több fájlt a(z) \"{section}\" szekcióhoz", "error.section.files.min.singular": "A \"{section}\" szakasz legalább egy fájlt igényel",
"error.section.files.min.plural":
"A \"{section}\" szakasz legalább {min} fájlt igényel",
"error.section.files.min.singular":
"A \"{section}\" szakasz legalább egy fájlt igényel",
"error.section.pages.max.plural": "error.section.pages.max.plural": "Maximum {max} oldalt adhatsz hozzá a(z) \"{section}\" szekcióhoz",
"Maximum {max} oldalt adhatsz hozzá a(z) \"{section}\" szekcióhoz", "error.section.pages.max.singular": "Nem adhatsz hozzá egynél több oldalt a(z) \"{section}\" szekcióhoz",
"error.section.pages.max.singular": "error.section.pages.min.plural": "A \"{section}\" szakasz legalább {min} oldalt igényel",
"Nem adhatsz hozzá egynél több oldalt a(z) \"{section}\" szekcióhoz", "error.section.pages.min.singular": "A \"{section}\" szakasz legalább egy oldalt igényel",
"error.section.pages.min.plural":
"A \"{section}\" szakasz legalább {min} oldalt igényel",
"error.section.pages.min.singular":
"A \"{section}\" szakasz legalább egy oldalt igényel",
"error.section.notLoaded": "A(z) \"{name}\" szekció nem tölthető be", "error.section.notLoaded": "A(z) \"{name}\" szekció nem tölthető be",
"error.section.type.invalid": "A szekció típusa (\"{type}\") nem megfelelő", "error.section.type.invalid": "A szekció típusa (\"{type}\") nem megfelelő",
"error.site.changeTitle.empty": "A cím nem lehet üres", "error.site.changeTitle.empty": "A cím nem lehet üres",
"error.site.changeTitle.permission": "error.site.changeTitle.permission": "Nincs jogosultságod megváltoztatni az honlap címét",
"Nincs jogosultságod megváltoztatni az honlap címét",
"error.site.update.permission": "Nincs jogosultságod frissíteni a honlapot", "error.site.update.permission": "Nincs jogosultságod frissíteni a honlapot",
"error.template.default.notFound": "Az alapértelmezett sablon nem létezik", "error.template.default.notFound": "Az alapértelmezett sablon nem létezik",
"error.user.changeEmail.permission": "error.user.changeEmail.permission": "Nincs jogosultságod megváltoztatni \"{name}\" felhasználó email-címét",
"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": "error.user.changeName.permission": "Nincs jogosultságod megváltoztatni \"{name}\" felhasználó nevét",
"Nincs jogosultságod megváltoztatni \"{name}\" felhasználó nyelvi beállításait", "error.user.changePassword.permission": "Nincs jogosultságod megváltoztatni \"{name}\" felhasználó jelszavát",
"error.user.changeName.permission": "error.user.changeRole.lastAdmin": "Az egyedüli adminisztrátor szerepkörét nem lehet megváltoztatni",
"Nincs jogosultságod megváltoztatni \"{name}\" felhasználó nevét", "error.user.changeRole.permission": "Nincs jogosultságod megváltoztatni \"{name}\" felhasználó szerepkörét",
"error.user.changePassword.permission": "error.user.changeRole.toAdmin": "You are not allowed to promote someone to the admin role",
"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.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.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",
"error.user.delete.lastUser": "Nem törölheted az egyetlen felhasználót", "error.user.delete.lastUser": "Nem törölheted az egyetlen felhasználót",
"error.user.delete.permission": "error.user.delete.permission": "Nincs jogosults\u00e1god t\u00f6r\u00f6lni ezt a felhaszn\u00e1l\u00f3t",
"Nincs jogosults\u00e1god t\u00f6r\u00f6lni ezt a felhaszn\u00e1l\u00f3t", "error.user.duplicate": "Már létezik felhasználó \"{email}\" email-címmel",
"error.user.duplicate":
"Már létezik felhasználó \"{email}\" email-címmel",
"error.user.email.invalid": "Kérlek adj meg egy valós email-címet", "error.user.email.invalid": "Kérlek adj meg egy valós email-címet",
"error.user.language.invalid": "Kérlek add meg a megfelelő nyelvi beállítást", "error.user.language.invalid": "Kérlek add meg a megfelelő nyelvi beállítást",
"error.user.notFound": "A felhaszn\u00e1l\u00f3 nem tal\u00e1lhat\u00f3", "error.user.notFound": "A felhaszn\u00e1l\u00f3 nem tal\u00e1lhat\u00f3",
"error.user.password.invalid": "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.",
"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.role.invalid": "Kérlek adj meg egy megfelelő szerepkört", "error.user.role.invalid": "Kérlek adj meg egy megfelelő szerepkört",
"error.user.update.permission": "error.user.update.permission": "Nincs jogosultságod frissíteni \"{name}\" felhasználó adatait",
"Nincs jogosultságod frissíteni \"{name}\" felhasználó adatait",
"error.validation.accepted": "Kérlek erősítsd meg", "error.validation.accepted": "Kérlek erősítsd meg",
"error.validation.alpha": "Kérlek csak kis betűket használj (a-z)", "error.validation.alpha": "Kérlek csak kis betűket használj (a-z)",
"error.validation.alphanum": "error.validation.alphanum": "Kérlek csak kis betűket és számjegyeket használj (a-z, 0-9)",
"Kérlek csak kis betűket és számjegyeket használj (a-z, 0-9)", "error.validation.between": "Kérlek egy \"{min}\" és \"{max}\" közötti értéket adj meg",
"error.validation.between":
"Kérlek egy \"{min}\" és \"{max}\" közötti értéket adj meg",
"error.validation.boolean": "Kérlek erősítsd meg vagy vesd el", "error.validation.boolean": "Kérlek erősítsd meg vagy vesd el",
"error.validation.contains": "error.validation.contains": "Kérlek olyan értéket adj meg, amely tartalmazza ezt: \"{needle}\"",
"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": "Please enter a date after {date}",
"error.validation.date.before": "Please enter a date before {date}", "error.validation.date.before": "Please enter a date before {date}",
@@ -210,18 +169,14 @@
"error.validation.less": "A megadott érték kevesebb legyen, mint {max}", "error.validation.less": "A megadott érték kevesebb legyen, mint {max}",
"error.validation.match": "A megadott érték nem felel meg az elvárt struktúrának", "error.validation.match": "A megadott érték nem felel meg az elvárt struktúrának",
"error.validation.max": "A megadott érték egyenlő vagy kevesebb legyen, mint {max}", "error.validation.max": "A megadott érték egyenlő vagy kevesebb legyen, mint {max}",
"error.validation.maxlength": "error.validation.maxlength": "Kérlek rövidebb értéket adj meg (legfeljebb {max} karakter)",
"Kérlek rövidebb értéket adj meg (legfeljebb {max} karakter)",
"error.validation.maxwords": "Kérlek ide legfeljebb {max} szót írj", "error.validation.maxwords": "Kérlek ide legfeljebb {max} szót írj",
"error.validation.min": "A megadott érték egyenlő vagy nagyobb legyen, mint {min}", "error.validation.min": "A megadott érték egyenlő vagy nagyobb legyen, mint {min}",
"error.validation.minlength": "error.validation.minlength": "Kérlek hosszabb értéket adj meg (legalább {min} karakter)",
"Kérlek hosszabb értéket adj meg (legalább {min} karakter)",
"error.validation.minwords": "Kérlek ide legalább {min} szót írj", "error.validation.minwords": "Kérlek ide legalább {min} szót írj",
"error.validation.more": "A megadott érték legyen nagyobb, mint {min} ", "error.validation.more": "A megadott érték legyen nagyobb, mint {min} ",
"error.validation.notcontains": "error.validation.notcontains": "Kérlek olyan értéket adj meg, amely nem tartalmazza ezt: \"{needle}\" ",
"Kérlek olyan értéket adj meg, amely nem tartalmazza ezt: \"{needle}\" ", "error.validation.notin": "Kérlek egyiket se használd az alábbiak közül: ({notIn})",
"error.validation.notin":
"Kérlek egyiket se használd az alábbiak közül: ({notIn})",
"error.validation.option": "Kérlek válassz egy megfelelő opciót", "error.validation.option": "Kérlek válassz egy megfelelő opciót",
"error.validation.num": "Kérlek adj meg egy megfelelő számot", "error.validation.num": "Kérlek adj meg egy megfelelő számot",
"error.validation.required": "Kérlek írj be valamit", "error.validation.required": "Kérlek írj be valamit",
@@ -238,8 +193,7 @@
"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.delete.confirm": "file.delete.confirm": "Biztos törölni akarod ezt a fájlt: <br><strong>{filename}</strong>?",
"Biztos törölni akarod ezt a fájlt: <br><strong>{filename}</strong>?",
"files": "Fájlok", "files": "Fájlok",
"files.empty": "Még nincsenek fájlok", "files.empty": "Még nincsenek fájlok",
@@ -251,29 +205,22 @@
"installation": "Telepítés", "installation": "Telepítés",
"installation.completed": "A panel sikeresen telepítve", "installation.completed": "A panel sikeresen telepítve",
"installation.disabled": "A panel telepítője alapértelmezés szerint le van tiltva a nyilvános szervereken. Kérlek, futtassd a telepítőt egy helyi gépen vagy engedélyezze a <code>panel.install</code> opcióval.", "installation.disabled": "A panel telepítője alapértelmezés szerint le van tiltva a nyilvános szervereken. Kérlek, futtassd a telepítőt egy helyi gépen vagy engedélyezze a <code>panel.install</code> opcióval.",
"installation.issues.accounts": "installation.issues.accounts": "A <code>/site/accounts</code> mappa nem létezik, vagy nem írható",
"A <code>/site/accounts</code> mappa nem létezik, vagy nem írható", "installation.issues.content": "A <code>/content</code> mappa nem létezik vagy nem írható",
"installation.issues.content":
"A <code>/content</code> mappa nem létezik vagy nem írható",
"installation.issues.curl": "A <code>CURL</code> bővítmény engedélyezése szükséges", "installation.issues.curl": "A <code>CURL</code> bővítmény engedélyezése szükséges",
"installation.issues.headline": "A panel telepítése sikertelen", "installation.issues.headline": "A panel telepítése sikertelen",
"installation.issues.mbstring": "installation.issues.mbstring": "Az <code>MB String</code> bővítmény engedélyezése szükséges",
"Az <code>MB String</code> bővítmény engedélyezése szükséges", "installation.issues.media": "A <code>/media</code> mappa nem létezik vagy nem írható",
"installation.issues.media":
"A <code>/media</code> mappa nem létezik vagy nem írható",
"installation.issues.php": "Bizonyosodj meg róla, hogy az általad használt PHP-verzió <code>PHP 7+</code>", "installation.issues.php": "Bizonyosodj meg róla, hogy az általad használt PHP-verzió <code>PHP 7+</code>",
"installation.issues.server": "installation.issues.server": "A Kirby az alábbi szervereken futtatható: <code>Apache</code>, <code>Nginx</code> vagy <code>Caddy</code>",
"A Kirby az alábbi szervereken futtatható: <code>Apache</code>, <code>Nginx</code> vagy <code>Caddy</code>",
"installation.issues.sessions": "A <code>/site/sessions</code> könyvtár nem létezik vagy nem írható", "installation.issues.sessions": "A <code>/site/sessions</code> könyvtár nem létezik vagy nem írható",
"language": "Nyelv", "language": "Nyelv",
"language.code": "Kód", "language.code": "Kód",
"language.convert": "Alapértelmezettnek jelölés", "language.convert": "Alapértelmezettnek jelölés",
"language.convert.confirm": "language.convert.confirm": "<p>Tényleg az alaőértelmezett nyelvre szeretnéd konvertálni ezt: <strong>{name}</strong>? Ez a művelet nem vonható vissza.</p><p>Ha<strong>{name}</strong> olyat is tartalmaz, amelynek nincs megfelelő fordítása, a honlapod egyes részei az új alapértelmezett nyelv hiányosságai miatt üresek maradhatnak.</p>",
"<p>Tényleg az alaőértelmezett nyelvre szeretnéd konvertálni ezt: <strong>{name}</strong>? Ez a művelet nem vonható vissza.</p><p>Ha<strong>{name}</strong> olyat is tartalmaz, amelynek nincs megfelelő fordítása, a honlapod egyes részei az új alapértelmezett nyelv hiányosságai miatt üresek maradhatnak.</p>",
"language.create": "Új nyelv hozzáadása", "language.create": "Új nyelv hozzáadása",
"language.delete.confirm": "language.delete.confirm": "Tényleg törölni szeretnéd a(z) <strong>{name}</strong> nyelvet, annak minden fordításával együtt? Ez a művelet nem vonható vissza!",
"Tényleg törölni szeretnéd a(z) <strong>{name}</strong> nyelvet, annak minden fordításával együtt? Ez a művelet nem vonható vissza!",
"language.deleted": "A nyelv törölve lett", "language.deleted": "A nyelv törölve lett",
"language.direction": "Olvasási irány", "language.direction": "Olvasási irány",
"language.direction.ltr": "Balról jobbra", "language.direction.ltr": "Balról jobbra",
@@ -292,8 +239,7 @@
"license": "Kirby licenc", "license": "Kirby licenc",
"license.buy": "Licenc vásárlása", "license.buy": "Licenc vásárlása",
"license.register": "Regisztráció", "license.register": "Regisztráció",
"license.register.help": "license.register.help": "A vásárlás után emailben küldjük el a licenc-kódot. Regisztrációhoz másold ide a kapott kódot.",
"A vásárlás után emailben küldjük el a licenc-kódot. Regisztrációhoz másold ide a kapott kódot.",
"license.register.label": "Kérlek írd be a licenc-kódot", "license.register.label": "Kérlek írd be a licenc-kódot",
"license.register.success": "Köszönjük, hogy támogatod a Kirby-t", "license.register.success": "Köszönjük, hogy támogatod a Kirby-t",
"license.unregistered": "Jelenleg a Kirby nem regisztrált próbaverzióját használod", "license.unregistered": "Jelenleg a Kirby nem regisztrált próbaverzióját használod",
@@ -325,7 +271,7 @@
"months.april": "\u00e1prilis", "months.april": "\u00e1prilis",
"months.august": "augusztus", "months.august": "augusztus",
"months.december": "december", "months.december": "december",
"months.february": "febru\u00e1r", "months.february": "február",
"months.january": "janu\u00e1r", "months.january": "janu\u00e1r",
"months.july": "j\u00falius", "months.july": "j\u00falius",
"months.june": "j\u00fanius", "months.june": "j\u00fanius",
@@ -354,10 +300,8 @@
"page.changeStatus.position": "Kérlek válaszd ki a pozíciót", "page.changeStatus.position": "Kérlek válaszd ki a pozíciót",
"page.changeStatus.select": "Új állapot kiválasztása", "page.changeStatus.select": "Új állapot kiválasztása",
"page.changeTemplate": "Sablon módosítása", "page.changeTemplate": "Sablon módosítása",
"page.delete.confirm": "page.delete.confirm": "Biztos vagy benne, hogy törlöd az alábbi oldalt: <strong>{title}</strong>?",
"Biztos vagy benne, hogy törlöd az alábbi oldalt: <strong>{title}</strong>?", "page.delete.confirm.subpages": "<strong>Ehhez az oldalhoz aloldalak tartoznak</strong>. <br>Az oldal törlésekor a hozzá tartozó aloldalak is törlődnek.",
"page.delete.confirm.subpages":
"<strong>Ehhez az oldalhoz aloldalak tartoznak</strong>. <br>Az oldal törlésekor a hozzá tartozó aloldalak is törlődnek.",
"page.delete.confirm.title": "Megerősítéshez add meg az oldal címét", "page.delete.confirm.title": "Megerősítéshez add meg az oldal címét",
"page.draft.create": "Piszkozat létrehozása", "page.draft.create": "Piszkozat létrehozása",
"page.duplicate.appendix": "Másol", "page.duplicate.appendix": "Másol",
@@ -365,8 +309,7 @@
"page.duplicate.pages": "Oldalak másolása", "page.duplicate.pages": "Oldalak másolása",
"page.status": "Állapot", "page.status": "Állapot",
"page.status.draft": "Piszkozat", "page.status.draft": "Piszkozat",
"page.status.draft.description": "page.status.draft.description": "The page is in draft mode and only visible for logged in editors or via secret link",
"Az oldal jelenleg piszkozat státuszban van és csak bejelentkezett szerkesztők számára látható",
"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",
@@ -388,6 +331,7 @@
"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>?",
"role": "Szerepkör", "role": "Szerepkör",
"role.admin.description": "Az adminisztrátornak minden joga van", "role.admin.description": "Az adminisztrátornak minden joga van",
@@ -451,8 +395,7 @@
"url.placeholder": "https://pelda.hu", "url.placeholder": "https://pelda.hu",
"user": "Felhasználó", "user": "Felhasználó",
"user.blueprint": "user.blueprint": "Ehhez a szerepkörhöz további szekciókat és mezőket vehetsz fel a <strong>/site/blueprints/users/{role}.yml</strong> fájlban",
"Ehhez a szerepkörhöz további szekciókat és mezőket vehetsz fel a <strong>/site/blueprints/users/{role}.yml</strong> fájlban",
"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",
@@ -463,8 +406,7 @@
"user.changeRole.select": "Új szerepkör kiválasztása", "user.changeRole.select": "Új szerepkör kiválasztása",
"user.create": "Új felhasználó hozzáadása", "user.create": "Új felhasználó hozzáadása",
"user.delete": "Felhasználó törlése", "user.delete": "Felhasználó törlése",
"user.delete.confirm": "user.delete.confirm": "Biztos törlöd ezt a felhasználót: <br><strong>{email}</strong>?",
"Biztos törlöd ezt a felhasználót: <br><strong>{email}</strong>?",
"users": "Felhasználók", "users": "Felhasználók",

View File

@@ -42,10 +42,8 @@
"error.avatar.create.fail": "Gambar profil tidak dapat diunggah", "error.avatar.create.fail": "Gambar profil tidak dapat diunggah",
"error.avatar.delete.fail": "Gambar profil tidak dapat dihapus", "error.avatar.delete.fail": "Gambar profil tidak dapat dihapus",
"error.avatar.dimensions.invalid": "error.avatar.dimensions.invalid": "Pastikan lebar dan tinggi gambar profil di bawah 3000 piksel",
"Pastikan lebar dan tinggi gambar profil di bawah 3000 piksel", "error.avatar.mime.forbidden": "Gambar profil harus berupa berkas JPEG atau PNG",
"error.avatar.mime.forbidden":
"Gambar profil harus berupa berkas JPEG atau PNG",
"error.blueprint.notFound": "Cetak biru \"{name}\" tidak dapat dimuat", "error.blueprint.notFound": "Cetak biru \"{name}\" tidak dapat dimuat",
@@ -54,28 +52,23 @@
"error.field.converter.invalid": "Konverter \"{converter}\" tidak valid", "error.field.converter.invalid": "Konverter \"{converter}\" tidak valid",
"error.file.changeName.empty": "Nama harus diisi", "error.file.changeName.empty": "Nama harus diisi",
"error.file.changeName.permission": "error.file.changeName.permission": "Anda tidak diizinkan mengubah nama berkas \"{filename}\"",
"Anda tidak diizinkan mengubah nama berkas \"{filename}\"",
"error.file.duplicate": "Berkas dengan nama \"{filename}\" sudah ada", "error.file.duplicate": "Berkas dengan nama \"{filename}\" sudah ada",
"error.file.extension.forbidden": "error.file.extension.forbidden": "Ekstensi \"{extension}\" tidak diizinkan",
"Ekstensi \"{extension}\" tidak diizinkan", "error.file.extension.missing": "Berkas \"{filename}\" harus memiliki ekstensi",
"error.file.extension.missing": "error.file.maxheight": "Tinggi gambar tidak boleh melebihi {height} piksel",
"Berkas \"{filename}\" harus memiliki ekstensi", "error.file.maxsize": "Berkas terlalu besar",
"error.file.maxheight": "The height of the image must not exceed {height} pixels", "error.file.maxwidth": "Lebar gambar tidak boleh melebihi {width} piksel",
"error.file.maxsize": "The file is too large", "error.file.mime.differs": "Berkas yang diunggah harus memiliki tipe mime sama \"{mime}\"",
"error.file.maxwidth": "The width of the image must not exceed {width} pixels",
"error.file.mime.differs":
"Berkas yang diunggah harus memiliki tipe mime sama \"{mime}\"",
"error.file.mime.forbidden": "Media dengan tipe mime \"{mime}\" tidak diizinkan", "error.file.mime.forbidden": "Media dengan tipe mime \"{mime}\" tidak diizinkan",
"error.file.mime.invalid": "Invalid mime type: {mime}", "error.file.mime.invalid": "Tipe mime tidak valid: {mime}",
"error.file.mime.missing": "error.file.mime.missing": "Tipe media untuk \"{filename}\" tidak dapat dideteksi",
"Tipe media untuk \"{filename}\" tidak dapat dideteksi", "error.file.minheight": "Tinggi gambar setidaknya {height} piksel",
"error.file.minheight": "The height of the image must be at least {height} pixels", "error.file.minsize": "Berkas terlalu kecil",
"error.file.minsize": "The file is too small", "error.file.minwidth": "Lebar gambar setidaknya {width} piksel",
"error.file.minwidth": "The width of the image must be at least {width} pixels",
"error.file.name.missing": "Nama berkas harus diisi", "error.file.name.missing": "Nama berkas harus diisi",
"error.file.notFound": "Berkas \"{filename}\" tidak dapat ditemukan", "error.file.notFound": "Berkas \"{filename}\" tidak dapat ditemukan",
"error.file.orientation": "The orientation of the image must be \"{orientation}\"", "error.file.orientation": "Orientasi gambar harus \"{orientation}\"",
"error.file.type.forbidden": "Anda tidak diizinkan mengunggah berkas dengan tipe {type}", "error.file.type.forbidden": "Anda tidak diizinkan mengunggah berkas dengan tipe {type}",
"error.file.undefined": "Berkas tidak dapat ditemukan", "error.file.undefined": "Berkas tidak dapat ditemukan",
@@ -90,111 +83,77 @@
"error.license.email": "Masukkan surel yang valid", "error.license.email": "Masukkan surel yang valid",
"error.license.verification": "Lisensi tidak dapat diverifikasi", "error.license.verification": "Lisensi tidak dapat diverifikasi",
"error.page.changeSlug.permission": "error.page.changeSlug.permission": "Anda tidak diizinkan mengubah akhiran URL untuk \"{slug}\"",
"Anda tidak diizinkan mengubah akhiran URL untuk \"{slug}\"", "error.page.changeStatus.incomplete": "Halaman memiliki kesalahan dan tidak dapat diterbitkan",
"error.page.changeStatus.incomplete": "error.page.changeStatus.permission": "Status halaman ini tidak dapat diubah",
"Halaman memiliki kesalahan dan tidak dapat diterbitkan", "error.page.changeStatus.toDraft.invalid": "Halaman \"{slug}\" tidak dapat dikonversi menjadi draf",
"error.page.changeStatus.permission": "error.page.changeTemplate.invalid": "Templat untuk halaman \"{slug}\" tidak dapat diubah",
"Status halaman ini tidak dapat diubah", "error.page.changeTemplate.permission": "Anda tidak diizinkan mengubah templat dari \"{slug}\"",
"error.page.changeStatus.toDraft.invalid":
"Halaman \"{slug}\" tidak dapat dikonversi menjadi draf",
"error.page.changeTemplate.invalid":
"Templat untuk halaman \"{slug}\" tidak dapat diubah",
"error.page.changeTemplate.permission":
"Anda tidak diizinkan mengubah templat dari \"{slug}\"",
"error.page.changeTitle.empty": "Judul harus diisi", "error.page.changeTitle.empty": "Judul harus diisi",
"error.page.changeTitle.permission": "error.page.changeTitle.permission": "Anda tidak diizinkan mengubah judul dari \"{slug}\"",
"Anda tidak diizinkan mengubah judul dari \"{slug}\"",
"error.page.create.permission": "Anda tidak diizinkan membuat \"{slug}\"", "error.page.create.permission": "Anda tidak diizinkan membuat \"{slug}\"",
"error.page.delete": "Halaman \"{slug}\" tidak dapat dihapus", "error.page.delete": "Halaman \"{slug}\" tidak dapat dihapus",
"error.page.delete.confirm": "Masukkan judul halaman untuk mengonfirmasi", "error.page.delete.confirm": "Masukkan judul halaman untuk mengonfirmasi",
"error.page.delete.hasChildren": "error.page.delete.hasChildren": "Halaman ini memiliki sub-halaman dan tidak dapat dihapus",
"Halaman ini memiliki sub-halaman dan tidak dapat dihapus",
"error.page.delete.permission": "Anda tidak diizinkan menghapus \"{slug}\"", "error.page.delete.permission": "Anda tidak diizinkan menghapus \"{slug}\"",
"error.page.draft.duplicate": "error.page.draft.duplicate": "Draf halaman dengan akhiran URL \"{slug}\" sudah ada",
"Draf halaman dengan akhiran URL \"{slug}\" sudah ada", "error.page.duplicate": "Halaman dengan akhiran URL \"{slug}\" sudah ada",
"error.page.duplicate":
"Halaman dengan akhiran URL \"{slug}\" sudah ada",
"error.page.duplicate.permission": "Anda tidak diizinkan menduplikasi \"{slug}\"", "error.page.duplicate.permission": "Anda tidak diizinkan menduplikasi \"{slug}\"",
"error.page.notFound": "Halaman \"{slug}\" tidak dapat ditemukan", "error.page.notFound": "Halaman \"{slug}\" tidak dapat ditemukan",
"error.page.num.invalid": "error.page.num.invalid": "Masukkan nomor urut yang valid. Nomor tidak boleh negatif.",
"Masukkan nomor urut yang valid. Nomor tidak boleh negatif.",
"error.page.slug.invalid": "Masukkan awalan URL yang valid", "error.page.slug.invalid": "Masukkan awalan URL yang valid",
"error.page.sort.permission": "Halaman \"{slug}\" tidak dapat diurutkan", "error.page.sort.permission": "Halaman \"{slug}\" tidak dapat diurutkan",
"error.page.status.invalid": "Atur status halaman yang valid", "error.page.status.invalid": "Atur status halaman yang valid",
"error.page.undefined": "Halaman tidak dapat ditemukan", "error.page.undefined": "Halaman tidak dapat ditemukan",
"error.page.update.permission": "Anda tidak diizinkan memperbaharui \"{slug}\"", "error.page.update.permission": "Anda tidak diizinkan memperbaharui \"{slug}\"",
"error.section.files.max.plural": "error.section.files.max.plural": "Anda hanya boleh menambahkan maksimal {max} berkas ke bagian \"{section}\"",
"Anda hanya boleh menambahkan maksimal {max} berkas ke bagian \"{section}\"", "error.section.files.max.singular": "Anda hanya boleh menambahkan satu berkas ke bagian \"{section}\"",
"error.section.files.max.singular": "error.section.files.min.plural": "Bagian \"{section}\" setidaknya memiliki {min} berkas",
"Anda hanya boleh menambahkan satu berkas ke bagian \"{section}\"", "error.section.files.min.singular": "Bagian \"{section}\" setidaknya memiliki satu berkas",
"error.section.files.min.plural":
"Bagian \"{section}\" setidaknya memiliki {min} berkas",
"error.section.files.min.singular":
"Bagian \"{section}\" setidaknya memiliki satu berkas",
"error.section.pages.max.plural": "error.section.pages.max.plural": "Anda hanya boleh menambahkan maksimal {max} halaman ke bagian \"{section}\"",
"Anda hanya boleh menambahkan maksimal {max} halaman ke bagian \"{section}\"", "error.section.pages.max.singular": "Anda hanya boleh menambahkan satu halaman ke bagian \"{section}\"",
"error.section.pages.max.singular": "error.section.pages.min.plural": "Bagian \"{section}\" setidaknya memiliki {min} halaman",
"Anda hanya boleh menambahkan satu halaman ke bagian \"{section}\"", "error.section.pages.min.singular": "Bagian \"{section}\" setidaknya memiliki satu halaman",
"error.section.pages.min.plural":
"Bagian \"{section}\" setidaknya memiliki {min} halaman",
"error.section.pages.min.singular":
"Bagian \"{section}\" setidaknya memiliki satu halaman",
"error.section.notLoaded": "Bagian \"{name}\" tidak dapat dimuat", "error.section.notLoaded": "Bagian \"{name}\" tidak dapat dimuat",
"error.section.type.invalid": "Tipe bagian \"{type}\" tidak valid", "error.section.type.invalid": "Tipe bagian \"{type}\" tidak valid",
"error.site.changeTitle.empty": "Judul harus diisi", "error.site.changeTitle.empty": "Judul harus diisi",
"error.site.changeTitle.permission": "error.site.changeTitle.permission": "Anda tidak diizinkan mengubah judul situs",
"Anda tidak diizinkan mengubah judul situs",
"error.site.update.permission": "Anda tidak diizinkan memperbaharui situs", "error.site.update.permission": "Anda tidak diizinkan memperbaharui situs",
"error.template.default.notFound": "Templat bawaan tidak ada", "error.template.default.notFound": "Templat bawaan tidak ada",
"error.user.changeEmail.permission": "error.user.changeEmail.permission": "Anda tidak diizinkan mengubah surel dari pengguna \"{name}\"",
"Anda tidak diizinkan mengubah surel dari pengguna \"{name}\"", "error.user.changeLanguage.permission": "Anda tidak diizinkan mengubah bahasa dari pengguna \"{name}\"",
"error.user.changeLanguage.permission": "error.user.changeName.permission": "Anda tidak diizinkan mengubah nama dari pengguna \"{name}\"",
"Anda tidak diizinkan mengubah bahasa dari pengguna \"{name}\"", "error.user.changePassword.permission": "Anda tidak diizinkan mengubah sandi dari pengguna \"{name}\"",
"error.user.changeName.permission": "error.user.changeRole.lastAdmin": "Peran dari admin satu-satunya tidak dapat diubah",
"Anda tidak diizinkan mengubah nama dari pengguna \"{name}\"", "error.user.changeRole.permission": "Anda tidak diizinkan mengubah peran dari pengguna \"{name}\"",
"error.user.changePassword.permission": "error.user.changeRole.toAdmin": "Anda tidak diizinkan mempromosikan seseorang menjadi admin",
"Anda tidak diizinkan mengubah sandi dari pengguna \"{name}\"",
"error.user.changeRole.lastAdmin":
"Peran dari admin satu-satunya tidak dapat diubah",
"error.user.changeRole.permission":
"Anda tidak diizinkan mengubah peran dari pengguna \"{name}\"",
"error.user.changeRole.toAdmin":
"Anda tidak diizinkan mempromosikan seseorang menjadi admin",
"error.user.create.permission": "Anda tidak diizinkan membuat pengguna ini", "error.user.create.permission": "Anda tidak diizinkan membuat pengguna ini",
"error.user.delete": "Pengguna \"{nama}\" tidak dapat dihapus", "error.user.delete": "Pengguna \"{nama}\" tidak dapat dihapus",
"error.user.delete.lastAdmin": "Admin satu-satunya tidak dapat dihapus", "error.user.delete.lastAdmin": "Admin satu-satunya tidak dapat dihapus",
"error.user.delete.lastUser": "Pengguna satu-satunya tidak dapat dihapus", "error.user.delete.lastUser": "Pengguna satu-satunya tidak dapat dihapus",
"error.user.delete.permission": "error.user.delete.permission": "Anda tidak diizinkan menghapus pengguna \"{name}\"",
"Anda tidak diizinkan menghapus pengguna \"{name}\"", "error.user.duplicate": "Pengguna dengan surel \"{email}\" sudah ada",
"error.user.duplicate":
"Pengguna dengan surel \"{email}\" sudah ada",
"error.user.email.invalid": "Masukkan surel yang valid", "error.user.email.invalid": "Masukkan surel yang valid",
"error.user.language.invalid": "Masukkan bahasa yang valid", "error.user.language.invalid": "Masukkan bahasa yang valid",
"error.user.notFound": "Pengguna \"{name}\" tidak dapat ditemukan", "error.user.notFound": "Pengguna \"{name}\" tidak dapat ditemukan",
"error.user.password.invalid": "error.user.password.invalid": "Masukkan sandi yang valid. Sandi setidaknya mengandung 8 karakter.",
"Masukkan sandi yang valid. Sandi setidaknya mengandung 8 karakter.",
"error.user.password.notSame": "Sandi tidak cocok", "error.user.password.notSame": "Sandi tidak cocok",
"error.user.password.undefined": "Pengguna tidak memiliki sandi", "error.user.password.undefined": "Pengguna tidak memiliki sandi",
"error.user.role.invalid": "Masukkan peran yang valid", "error.user.role.invalid": "Masukkan peran yang valid",
"error.user.update.permission": "error.user.update.permission": "Anda tidak diizinkan memperbaharui pengguna \"{name}\"",
"Anda tidak diizinkan memperbaharui pengguna \"{name}\"",
"error.validation.accepted": "Mohon konfirmasi", "error.validation.accepted": "Mohon konfirmasi",
"error.validation.alpha": "Masukkan hanya karakter a-z", "error.validation.alpha": "Masukkan hanya karakter a-z",
"error.validation.alphanum": "error.validation.alphanum": "Masukkan hanya karakter a-z atau 0-9",
"Masukkan hanya karakter a-z atau 0-9", "error.validation.between": "Masukkan nilai antara \"{min}\" dan \"{max}\"",
"error.validation.between":
"Masukkan nilai antara \"{min}\" dan \"{max}\"",
"error.validation.boolean": "Mohon konfirmasi atau tolak", "error.validation.boolean": "Mohon konfirmasi atau tolak",
"error.validation.contains": "error.validation.contains": "Masukkan nilai yang mengandung \"{needle}\"",
"Masukkan nilai yang mengandung \"{needle}\"",
"error.validation.date": "Masukkan tanggal yang valid", "error.validation.date": "Masukkan tanggal yang valid",
"error.validation.date.after": "Masukkan tanggal setelah {date}", "error.validation.date.after": "Masukkan tanggal setelah {date}",
"error.validation.date.before": "Masukkan tanggal sebelum {date}", "error.validation.date.before": "Masukkan tanggal sebelum {date}",
@@ -210,18 +169,14 @@
"error.validation.less": "Masukkan nilai kurang dari {max}", "error.validation.less": "Masukkan nilai kurang dari {max}",
"error.validation.match": "Nilai tidak cocok dengan pola yang semestinya", "error.validation.match": "Nilai tidak cocok dengan pola yang semestinya",
"error.validation.max": "Masukkan nilai yang sama dengan atau kurang dari {max}", "error.validation.max": "Masukkan nilai yang sama dengan atau kurang dari {max}",
"error.validation.maxlength": "error.validation.maxlength": "Masukkan nilai yang lebih pendek. (maksimal {max} karakter)",
"Masukkan nilai yang lebih pendek. (maksimal {max} karakter)",
"error.validation.maxwords": "Masukkan tidak lebih dari {max} kata", "error.validation.maxwords": "Masukkan tidak lebih dari {max} kata",
"error.validation.min": "Masukkan nilai yang sama dengan atau lebih dari {min}", "error.validation.min": "Masukkan nilai yang sama dengan atau lebih dari {min}",
"error.validation.minlength": "error.validation.minlength": "Masukkan nilai yang lebih panjang. (minimal {min} karakter)",
"Masukkan nilai yang lebih panjang. (minimal {min} karakter)",
"error.validation.minwords": "Masukkan setidaknya {min} kata", "error.validation.minwords": "Masukkan setidaknya {min} kata",
"error.validation.more": "Masukkan nilai yang lebih besar dari {min}", "error.validation.more": "Masukkan nilai yang lebih besar dari {min}",
"error.validation.notcontains": "error.validation.notcontains": "Masukkan nilai yang tidak mengandung \"{needle}\"",
"Masukkan nilai yang tidak mengandung \"{needle}\"", "error.validation.notin": "Jangan masukkan satupun: ({notIn})",
"error.validation.notin":
"Jangan masukkan satupun: ({notIn})",
"error.validation.option": "Pilih opsi yang valid", "error.validation.option": "Pilih opsi yang valid",
"error.validation.num": "Masukkan nomor yang valid", "error.validation.num": "Masukkan nomor yang valid",
"error.validation.required": "Masukkan sesuatu", "error.validation.required": "Masukkan sesuatu",
@@ -238,8 +193,7 @@
"field.structure.empty": "Belum ada entri", "field.structure.empty": "Belum ada entri",
"field.users.empty": "Belum ada pengguna yang dipilih", "field.users.empty": "Belum ada pengguna yang dipilih",
"file.delete.confirm": "file.delete.confirm": "Anda yakin menghapus <br> <strong>{filename}</strong>?",
"Anda yakin menghapus <br> <strong>{filename}</strong>?",
"files": "Berkas", "files": "Berkas",
"files.empty": "Belum ada berkas", "files.empty": "Belum ada berkas",
@@ -251,29 +205,22 @@
"installation": "Pemasangan", "installation": "Pemasangan",
"installation.completed": "Panel sudah dipasang", "installation.completed": "Panel sudah dipasang",
"installation.disabled": "Pemasang panel dimatikan di server publik secara bawaan. Mohon jalankan di server lokal atau ubah opsi <code>panel.install</code> untuk menjalankan di server saat ini.", "installation.disabled": "Pemasang panel dimatikan di server publik secara bawaan. Mohon jalankan di server lokal atau ubah opsi <code>panel.install</code> untuk menjalankan di server saat ini.",
"installation.issues.accounts": "installation.issues.accounts": "Folder <code>/site/accounts</code> tidak ada atau tidak dapat ditulis",
"Folder <code>/site/accounts</code> tidak ada atau tidak dapat ditulis", "installation.issues.content": "Folder <code>/content</code> tidak ada atau tidak dapat ditulis",
"installation.issues.content":
"Folder <code>/content</code> tidak ada atau tidak dapat ditulis",
"installation.issues.curl": "Ekstensi <code>CURL</code> diperlukan", "installation.issues.curl": "Ekstensi <code>CURL</code> diperlukan",
"installation.issues.headline": "Panel tidak dapat dipasang", "installation.issues.headline": "Panel tidak dapat dipasang",
"installation.issues.mbstring": "installation.issues.mbstring": "Ekstensi <code>MB String</code> diperlukan",
"Ekstensi <code>MB String</code> diperlukan", "installation.issues.media": "Folder <code>/media</code> tidak ada atau tidak dapat ditulis",
"installation.issues.media":
"Folder <code>/media</code> tidak ada atau tidak dapat ditulis",
"installation.issues.php": "Pastikan Anda menggunakan <code>PHP 7+</code>", "installation.issues.php": "Pastikan Anda menggunakan <code>PHP 7+</code>",
"installation.issues.server": "installation.issues.server": "Kirby memerlukan <code>Apache</code>, <code>Nginx</code>, atau <code>Caddy</code>",
"Kirby memerlukan <code>Apache</code>, <code>Nginx</code>, atau <code>Caddy</code>",
"installation.issues.sessions": "Folder <code>/site/sessions</code> tidak ada atau tidak dapat ditulis", "installation.issues.sessions": "Folder <code>/site/sessions</code> tidak ada atau tidak dapat ditulis",
"language": "Bahasa", "language": "Bahasa",
"language.code": "Kode", "language.code": "Kode",
"language.convert": "Atur sebagai bawaan", "language.convert": "Atur sebagai bawaan",
"language.convert.confirm": "language.convert.confirm": "<p>Anda yakin mengubah <strong>{name}</strong> menjadi bahasa bawaan? Ini tidak dapat dibatalkan.</p> <p>Jika <strong>{name}</strong> memiliki konten yang tidak diterjemahkan, tidak akan ada pengganti yang valid dan dapat menyebabkan beberapa bagian dari situs Anda menjadi kosong.</p>",
"<p>Anda yakin mengubah <strong>{name}</strong> menjadi bahasa bawaan? Ini tidak dapat dibatalkan.</p> <p>Jika <strong>{name}</strong> memiliki konten yang tidak diterjemahkan, tidak akan ada pengganti yang valid dan dapat menyebabkan beberapa bagian dari situs Anda menjadi kosong.</p>",
"language.create": "Tambah bahasa baru", "language.create": "Tambah bahasa baru",
"language.delete.confirm": "language.delete.confirm": "Anda yakin menghapus bahasa <strong>{name}</strong> termasuk semua terjemahannya? Ini tidak dapat dibatalkan!",
"Anda yakin menghapus bahasa <strong>{name}</strong> termasuk semua terjemahannya? Ini tidak dapat dibatalkan!",
"language.deleted": "Bahasa sudah dihapus", "language.deleted": "Bahasa sudah dihapus",
"language.direction": "Arah baca", "language.direction": "Arah baca",
"language.direction.ltr": "Kiri ke kanan", "language.direction.ltr": "Kiri ke kanan",
@@ -292,8 +239,7 @@
"license": "Lisensi Kirby", "license": "Lisensi Kirby",
"license.buy": "Beli lisensi", "license.buy": "Beli lisensi",
"license.register": "Daftar", "license.register": "Daftar",
"license.register.help": "license.register.help": "Anda menerima kode lisensi via surel setelah pembelian. Salin dan tempel kode tersebut untuk mendaftarkan.",
"Anda menerima kode lisensi via surel setelah pembelian. Salin dan tempel kode tersebut untuk mendaftarkan.",
"license.register.label": "Masukkan kode lisensi Anda", "license.register.label": "Masukkan kode lisensi Anda",
"license.register.success": "Terima kasih atas dukungan untuk Kirby", "license.register.success": "Terima kasih atas dukungan untuk Kirby",
"license.unregistered": "Ini adalah demo tidak diregistrasi dari Kirby", "license.unregistered": "Ini adalah demo tidak diregistrasi dari Kirby",
@@ -354,10 +300,8 @@
"page.changeStatus.position": "Pilih posisi", "page.changeStatus.position": "Pilih posisi",
"page.changeStatus.select": "Pilih status baru", "page.changeStatus.select": "Pilih status baru",
"page.changeTemplate": "Ubah templat", "page.changeTemplate": "Ubah templat",
"page.delete.confirm": "page.delete.confirm": "Anda yakin menghapus <strong>{title}</strong>?",
"Anda yakin menghapus <strong>{title}</strong>?", "page.delete.confirm.subpages": "<strong>Halaman ini memiliki sub-halaman</strong>. <br>Semua sub-halaman akan ikut dihapus.",
"page.delete.confirm.subpages":
"<strong>Halaman ini memiliki sub-halaman</strong>. <br>Semua sub-halaman akan ikut dihapus.",
"page.delete.confirm.title": "Masukkan judul halaman untuk mengonfirmasi", "page.delete.confirm.title": "Masukkan judul halaman untuk mengonfirmasi",
"page.draft.create": "Buat draf", "page.draft.create": "Buat draf",
"page.duplicate.appendix": "Salin", "page.duplicate.appendix": "Salin",
@@ -365,8 +309,7 @@
"page.duplicate.pages": "Salin halaman", "page.duplicate.pages": "Salin halaman",
"page.status": "Status", "page.status": "Status",
"page.status.draft": "Draf", "page.status.draft": "Draf",
"page.status.draft.description": "page.status.draft.description": "The page is in draft mode and only visible for logged in editors or via secret link",
"Halaman hanya terlihat untuk penyunting",
"page.status.listed": "Publik", "page.status.listed": "Publik",
"page.status.listed.description": "Halaman publik untuk siapapun", "page.status.listed.description": "Halaman publik untuk siapapun",
"page.status.unlisted": "Tidak tercantum", "page.status.unlisted": "Tidak tercantum",
@@ -388,6 +331,7 @@
"replace": "Ganti", "replace": "Ganti",
"retry": "Coba lagi", "retry": "Coba lagi",
"revert": "Kembalikan", "revert": "Kembalikan",
"revert.confirm": "Do you really want to <strong>delete all unsaved changes</strong>?",
"role": "Peran", "role": "Peran",
"role.admin.description": "Admin memiliki semua izin", "role.admin.description": "Admin memiliki semua izin",
@@ -451,8 +395,7 @@
"url.placeholder": "https://contoh.com", "url.placeholder": "https://contoh.com",
"user": "Pengguna", "user": "Pengguna",
"user.blueprint": "user.blueprint": "Anda dapat mendefinisikan bagian tambahan dan bidang formulir untuk peran pengguna ini di <strong>/site/blueprints/users/{role}.yml</strong>",
"Anda dapat mendefinisikan bagian tambahan dan bidang formulir untuk peran pengguna ini di <strong>/site/blueprints/users/{role}.yml</strong>",
"user.changeEmail": "Ubah surel", "user.changeEmail": "Ubah surel",
"user.changeLanguage": "Ubah bahasa", "user.changeLanguage": "Ubah bahasa",
"user.changeName": "Ubah nama pengguna ini", "user.changeName": "Ubah nama pengguna ini",
@@ -463,8 +406,7 @@
"user.changeRole.select": "Pilih peran baru", "user.changeRole.select": "Pilih peran baru",
"user.create": "Tambah pengguna baru", "user.create": "Tambah pengguna baru",
"user.delete": "Hapus pengguna ini", "user.delete": "Hapus pengguna ini",
"user.delete.confirm": "user.delete.confirm": "Anda yakin menghapus <br><strong>{email}</strong>?",
"Anda yakin menghapus <br><strong>{email}</strong>?",
"users": "Pengguna", "users": "Pengguna",

View File

@@ -42,10 +42,8 @@
"error.avatar.create.fail": "Non è stato possibile caricare l'immagine del profilo", "error.avatar.create.fail": "Non è stato possibile caricare l'immagine del profilo",
"error.avatar.delete.fail": "Non è stato possibile eliminare l'immagine del profilo", "error.avatar.delete.fail": "Non è stato possibile eliminare l'immagine del profilo",
"error.avatar.dimensions.invalid": "error.avatar.dimensions.invalid": "Per favore mantieni l'altezza e la larghezza dell'immagine del profilo inferiore ai 3000 pixel",
"Per favore mantieni l'altezza e la larghezza dell'immagine del profilo inferiore ai 3000 pixel", "error.avatar.mime.forbidden": "L'immagine del profilo dev'essere un file JPEG o PNG",
"error.avatar.mime.forbidden":
"L'immagine del profilo dev'essere un file JPEG o PNG",
"error.blueprint.notFound": "Non è stato possibile caricare il blueprint \"{name}\"", "error.blueprint.notFound": "Non è stato possibile caricare il blueprint \"{name}\"",
@@ -54,22 +52,17 @@
"error.field.converter.invalid": "Convertitore \"{converter}\" non valido", "error.field.converter.invalid": "Convertitore \"{converter}\" non valido",
"error.file.changeName.empty": "The name must not be empty", "error.file.changeName.empty": "The name must not be empty",
"error.file.changeName.permission": "error.file.changeName.permission": "Non ti è permesso modificare il nome di \"{filename}\"",
"Non ti è permesso modificare il nome di \"{filename}\"",
"error.file.duplicate": "Un file con il nome \"{filename}\" esiste già", "error.file.duplicate": "Un file con il nome \"{filename}\" esiste già",
"error.file.extension.forbidden": "error.file.extension.forbidden": "L'estensione \"{extension}\" non è consentita",
"L'estensione \"{extension}\" non è consentita", "error.file.extension.missing": "Il file \"{filename}\" non ha estensione",
"error.file.extension.missing":
"Il file \"{filename}\" non ha estensione",
"error.file.maxheight": "The height of the image must not exceed {height} pixels", "error.file.maxheight": "The height of the image must not exceed {height} pixels",
"error.file.maxsize": "The file is too large", "error.file.maxsize": "The file is too large",
"error.file.maxwidth": "The width of the image must not exceed {width} pixels", "error.file.maxwidth": "The width of the image must not exceed {width} pixels",
"error.file.mime.differs": "error.file.mime.differs": "Il file caricato dev'essere dello stesso MIME type \"{mime}\"",
"Il file caricato dev'essere dello stesso MIME type \"{mime}\"",
"error.file.mime.forbidden": "Il MIME type \"{mime}\" non è consentito", "error.file.mime.forbidden": "Il MIME type \"{mime}\" non è consentito",
"error.file.mime.invalid": "Invalid mime type: {mime}", "error.file.mime.invalid": "Invalid mime type: {mime}",
"error.file.mime.missing": "error.file.mime.missing": "Il MIME type per \"{filename}\" non può essere rilevato",
"Il MIME type per \"{filename}\" non può essere rilevato",
"error.file.minheight": "The height of the image must be at least {height} pixels", "error.file.minheight": "The height of the image must be at least {height} pixels",
"error.file.minsize": "The file is too small", "error.file.minsize": "The file is too small",
"error.file.minwidth": "The width of the image must be at least {width} pixels", "error.file.minwidth": "The width of the image must be at least {width} pixels",
@@ -90,111 +83,77 @@
"error.license.email": "Inserisci un indirizzo email valido", "error.license.email": "Inserisci un indirizzo email valido",
"error.license.verification": "Non è stato possibile verificare la licenza", "error.license.verification": "Non è stato possibile verificare la licenza",
"error.page.changeSlug.permission": "error.page.changeSlug.permission": "Non ti è permesso cambiare l'URL di \"{slug}\"",
"Non ti è permesso cambiare l'URL di \"{slug}\"", "error.page.changeStatus.incomplete": "La pagina contiene errori e non può essere pubblicata",
"error.page.changeStatus.incomplete": "error.page.changeStatus.permission": "Lo stato di questa pagina non può essere cambiato",
"La pagina contiene errori e non può essere pubblicata", "error.page.changeStatus.toDraft.invalid": "La pagina \"{slug}\" non può essere convertita in bozza",
"error.page.changeStatus.permission": "error.page.changeTemplate.invalid": "Il template della pagina \"{slug}\" non può essere cambiato",
"Lo stato di questa pagina non può essere cambiato", "error.page.changeTemplate.permission": "Non ti è permesso modificare il template di \"{slug}\"",
"error.page.changeStatus.toDraft.invalid":
"La pagina \"{slug}\" non può essere convertita in bozza",
"error.page.changeTemplate.invalid":
"Il template della pagina \"{slug}\" non può essere cambiato",
"error.page.changeTemplate.permission":
"Non ti è permesso modificare il template di \"{slug}\"",
"error.page.changeTitle.empty": "Il titolo non può essere vuoto", "error.page.changeTitle.empty": "Il titolo non può essere vuoto",
"error.page.changeTitle.permission": "error.page.changeTitle.permission": "Non ti è permesso modificare il titolo di \"{slug}\"",
"Non ti è permesso modificare il titolo di \"{slug}\"",
"error.page.create.permission": "Non ti è permesso creare \"{slug}\"", "error.page.create.permission": "Non ti è permesso creare \"{slug}\"",
"error.page.delete": "La pagina \"{slug}\" non può essere eliminata", "error.page.delete": "La pagina \"{slug}\" non può essere eliminata",
"error.page.delete.confirm": "Inserisci il titolo della pagina per confermare", "error.page.delete.confirm": "Inserisci il titolo della pagina per confermare",
"error.page.delete.hasChildren": "error.page.delete.hasChildren": "La pagina ha sottopagine e non può essere eliminata",
"La pagina ha sottopagine e non può essere eliminata",
"error.page.delete.permission": "Non ti è permesso eliminare \"{slug}\"", "error.page.delete.permission": "Non ti è permesso eliminare \"{slug}\"",
"error.page.draft.duplicate": "error.page.draft.duplicate": "Una bozza di pagina con l'URL \"{slug}\" esiste già",
"Una bozza di pagina con l'URL \"{slug}\" esiste già", "error.page.duplicate": "Una pagina con l'URL \"{slug}\" esiste già",
"error.page.duplicate":
"Una pagina con l'URL \"{slug}\" esiste già",
"error.page.duplicate.permission": "Non ti è permesso duplicare \"{slug}\"", "error.page.duplicate.permission": "Non ti è permesso duplicare \"{slug}\"",
"error.page.notFound": "La pagina \"{slug}\" non è stata trovata", "error.page.notFound": "La pagina \"{slug}\" non è stata trovata",
"error.page.num.invalid": "error.page.num.invalid": "Inserisci un numero di ordinamento valido. I numeri non devono essere negativi",
"Inserisci un numero di ordinamento valido. I numeri non devono essere negativi",
"error.page.slug.invalid": "Inserisci un prefisso URL valido", "error.page.slug.invalid": "Inserisci un prefisso URL valido",
"error.page.sort.permission": "La pagina \"{slug}\" non può essere ordinata", "error.page.sort.permission": "La pagina \"{slug}\" non può essere ordinata",
"error.page.status.invalid": "Imposta uno stato valido per la pagina", "error.page.status.invalid": "Imposta uno stato valido per la pagina",
"error.page.undefined": "La pagina non \u00e8 stata trovata", "error.page.undefined": "La pagina non \u00e8 stata trovata",
"error.page.update.permission": "Non ti è permesso modificare \"{slug}\"", "error.page.update.permission": "Non ti è permesso modificare \"{slug}\"",
"error.section.files.max.plural": "error.section.files.max.plural": "Non puoi aggiungere più di {max} file alla sezione \"{section}\"",
"Non puoi aggiungere più di {max} file alla sezione \"{section}\"", "error.section.files.max.singular": "Non puoi aggiungere più di un file alla sezione \"{section}\"",
"error.section.files.max.singular": "error.section.files.min.plural": "La sezione \"{section}\" richiede almeno {min} file",
"Non puoi aggiungere più di un file alla sezione \"{section}\"", "error.section.files.min.singular": "La sezione \"{section}\" richiede almeno un file",
"error.section.files.min.plural":
"La sezione \"{section}\" richiede almeno {min} file",
"error.section.files.min.singular":
"La sezione \"{section}\" richiede almeno un file",
"error.section.pages.max.plural": "error.section.pages.max.plural": "Non puoi aggiungere più di {max} pagine alla sezione \"{section}\"",
"Non puoi aggiungere più di {max} pagine alla sezione \"{section}\"", "error.section.pages.max.singular": "Non puoi aggiungere più di una pagina alla sezione \"{section}\"",
"error.section.pages.max.singular": "error.section.pages.min.plural": "La sezione \"{section}\" richiede almeno {min} pagine",
"Non puoi aggiungere più di una pagina alla sezione \"{section}\"", "error.section.pages.min.singular": "La sezione \"{section}\" richiede almeno una pagina",
"error.section.pages.min.plural":
"La sezione \"{section}\" richiede almeno {min} pagine",
"error.section.pages.min.singular":
"La sezione \"{section}\" richiede almeno una pagina",
"error.section.notLoaded": "Non è stato possibile caricare la sezione \"{name}\"", "error.section.notLoaded": "Non è stato possibile caricare la sezione \"{name}\"",
"error.section.type.invalid": "Il tipo di sezione \"{type}\" non è valido", "error.section.type.invalid": "Il tipo di sezione \"{type}\" non è valido",
"error.site.changeTitle.empty": "Il titolo non può essere vuoto", "error.site.changeTitle.empty": "Il titolo non può essere vuoto",
"error.site.changeTitle.permission": "error.site.changeTitle.permission": "Non ti è permesso modificare il titolo del sito",
"Non ti è permesso modificare il titolo del sito",
"error.site.update.permission": "Non ti è permesso modificare i contenuti globali del sito", "error.site.update.permission": "Non ti è permesso modificare i contenuti globali del sito",
"error.template.default.notFound": "Il template \"default\" non esiste", "error.template.default.notFound": "Il template \"default\" non esiste",
"error.user.changeEmail.permission": "error.user.changeEmail.permission": "Non ti è permesso modificare l'indirizzo email di \"{name}\"",
"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": "error.user.changeName.permission": "Non ti è permesso modificare il nome dell'utente \"{name}\"",
"Non ti è permesso modificare la lingua per l'utente \"{name}\"", "error.user.changePassword.permission": "Non ti è permesso modificare la password dell'utente \"{name}\"",
"error.user.changeName.permission": "error.user.changeRole.lastAdmin": "Il ruolo dell'ultimo amministratore non può esser cambiato",
"Non ti è permesso modificare il nome dell'utente \"{name}\"", "error.user.changeRole.permission": "Non ti è permesso modificare il ruolo dell'utente \"{name}\"",
"error.user.changePassword.permission": "error.user.changeRole.toAdmin": "You are not allowed to promote someone to the admin role",
"Non ti è permesso modificare la password dell'utente \"{name}\"",
"error.user.changeRole.lastAdmin":
"Il ruolo dell'ultimo amministratore non può esser cambiato",
"error.user.changeRole.permission":
"Non ti è permesso modificare il ruolo dell'utente \"{name}\"",
"error.user.changeRole.toAdmin":
"You are not allowed to promote someone to the admin role",
"error.user.create.permission": "Non ti è permesso creare questo utente", "error.user.create.permission": "Non ti è permesso creare questo utente",
"error.user.delete": "L'utente non pu\u00f2 essere eliminato", "error.user.delete": "L'utente non pu\u00f2 essere eliminato",
"error.user.delete.lastAdmin": "L'ultimo amministratore non può essere eliminato", "error.user.delete.lastAdmin": "L'ultimo amministratore non può essere eliminato",
"error.user.delete.lastUser": "L'ultimo utente non può essere eliminato", "error.user.delete.lastUser": "L'ultimo utente non può essere eliminato",
"error.user.delete.permission": "error.user.delete.permission": "Non ti \u00e8 permesso eliminare questo utente ",
"Non ti \u00e8 permesso eliminare questo utente ", "error.user.duplicate": "Esiste già un utente con l'indirizzo email \"{email}\"",
"error.user.duplicate":
"Esiste già un utente con l'indirizzo email \"{email}\"",
"error.user.email.invalid": "Inserisci un indirizzo email valido", "error.user.email.invalid": "Inserisci un indirizzo email valido",
"error.user.language.invalid": "Inserisci una lingua valida", "error.user.language.invalid": "Inserisci una lingua valida",
"error.user.notFound": "L'utente non \u00e8 stato trovato", "error.user.notFound": "L'utente non \u00e8 stato trovato",
"error.user.password.invalid": "error.user.password.invalid": "Per favore inserisci una password valida. Le password devono essere lunghe almeno 8 caratteri",
"Per favore inserisci una password valida. Le password devono essere lunghe almeno 8 caratteri",
"error.user.password.notSame": "Le password non corrispondono", "error.user.password.notSame": "Le password non corrispondono",
"error.user.password.undefined": "L'utente non ha una password", "error.user.password.undefined": "L'utente non ha una password",
"error.user.role.invalid": "Inserisci un ruolo valido", "error.user.role.invalid": "Inserisci un ruolo valido",
"error.user.update.permission": "error.user.update.permission": "Non ti è permesso aggiornare l'utente \"{name}\"",
"Non ti è permesso aggiornare l'utente \"{name}\"",
"error.validation.accepted": "Per favore conferma", "error.validation.accepted": "Per favore conferma",
"error.validation.alpha": "Puoi inserire solo caratteri tra a-z", "error.validation.alpha": "Puoi inserire solo caratteri tra a-z",
"error.validation.alphanum": "error.validation.alphanum": "Puoi inserire solo caratteri tra a-z e numeri 0-9",
"Puoi inserire solo caratteri tra a-z e numeri 0-9", "error.validation.between": "Inserisci un valore tra \"{min}\" e \"{max}\"",
"error.validation.between":
"Inserisci un valore tra \"{min}\" e \"{max}\"",
"error.validation.boolean": "Per favore conferma o nega", "error.validation.boolean": "Per favore conferma o nega",
"error.validation.contains": "error.validation.contains": "Inserisci un valore che contiene \"{needle}\"",
"Inserisci un valore che contiene \"{needle}\"",
"error.validation.date": "Inserisci una data valida", "error.validation.date": "Inserisci una data valida",
"error.validation.date.after": "Inserisci una data dopo il {date}", "error.validation.date.after": "Inserisci una data dopo il {date}",
"error.validation.date.before": "Inserisci una data prima del {date}", "error.validation.date.before": "Inserisci una data prima del {date}",
@@ -210,18 +169,14 @@
"error.validation.less": "Inserisci un valore inferiore a {max}", "error.validation.less": "Inserisci un valore inferiore a {max}",
"error.validation.match": "Il valore non corrisponde al pattern previsto", "error.validation.match": "Il valore non corrisponde al pattern previsto",
"error.validation.max": "Inserisci un valore inferiore o uguale a {max}", "error.validation.max": "Inserisci un valore inferiore o uguale a {max}",
"error.validation.maxlength": "error.validation.maxlength": "Inserisci un testo più corto. (max. {max} caratteri)",
"Inserisci un testo più corto. (max. {max} caratteri)",
"error.validation.maxwords": "Non inserire più di {max} parola/e", "error.validation.maxwords": "Non inserire più di {max} parola/e",
"error.validation.min": "Inserisci un valore superiore o uguale a {min}", "error.validation.min": "Inserisci un valore superiore o uguale a {min}",
"error.validation.minlength": "error.validation.minlength": "Inserisci un testo più lungo. (min. {min} caratteri)",
"Inserisci un testo più lungo. (min. {min} caratteri)",
"error.validation.minwords": "Inserisci almeno {min} parola/e", "error.validation.minwords": "Inserisci almeno {min} parola/e",
"error.validation.more": "Inserisci un valore superiore a {min}", "error.validation.more": "Inserisci un valore superiore a {min}",
"error.validation.notcontains": "error.validation.notcontains": "Inserisci un valore che non contenga \"{needle}\"",
"Inserisci un valore che non contenga \"{needle}\"", "error.validation.notin": "Non inserire nessuno dei valori seguenti: ({notIn})",
"error.validation.notin":
"Non inserire nessuno dei valori seguenti: ({notIn})",
"error.validation.option": "Seleziona un'opzione valida", "error.validation.option": "Seleziona un'opzione valida",
"error.validation.num": "Inserisci un numero valido", "error.validation.num": "Inserisci un numero valido",
"error.validation.required": "Inserisci qualcosa", "error.validation.required": "Inserisci qualcosa",
@@ -238,8 +193,7 @@
"field.structure.empty": "Non ci sono ancora elementi.", "field.structure.empty": "Non ci sono ancora elementi.",
"field.users.empty": "Nessun utente selezionato", "field.users.empty": "Nessun utente selezionato",
"file.delete.confirm": "file.delete.confirm": "Sei sicuro di voler eliminare questo file?",
"Sei sicuro di voler eliminare questo file?",
"files": "Files", "files": "Files",
"files.empty": "Nessun file caricato", "files.empty": "Nessun file caricato",
@@ -251,29 +205,22 @@
"installation": "Installazione", "installation": "Installazione",
"installation.completed": "Il pannello è stato installato", "installation.completed": "Il pannello è stato installato",
"installation.disabled": "L'installazione del pannello è disabilitata di default sui server pubblici. Esegui l'installazione in locale oppure abilitala usando l'opzione <code>panel.install</code>.", "installation.disabled": "L'installazione del pannello è disabilitata di default sui server pubblici. Esegui l'installazione in locale oppure abilitala usando l'opzione <code>panel.install</code>.",
"installation.issues.accounts": "installation.issues.accounts": "<code>/site/accounts</code> non esiste o non dispone dei permessi di scrittura",
"<code>/site/accounts</code> non esiste o non dispone dei permessi di scrittura", "installation.issues.content": "La cartella <code>/content</code> non esiste o non dispone dei permessi di scrittura",
"installation.issues.content":
"La cartella <code>/content</code> non esiste o non dispone dei permessi di scrittura",
"installation.issues.curl": "È necessaria l'estensione <code>CURL</code>", "installation.issues.curl": "È necessaria l'estensione <code>CURL</code>",
"installation.issues.headline": "Il pannello non può esser installato", "installation.issues.headline": "Il pannello non può esser installato",
"installation.issues.mbstring": "installation.issues.mbstring": "È necessaria l'estensione <code>MB String</code>",
"È necessaria l'estensione <code>MB String</code>", "installation.issues.media": "La cartella <code>/media</code> non esiste o non dispone dei permessi di scrittura",
"installation.issues.media":
"La cartella <code>/media</code> non esiste o non dispone dei permessi di scrittura",
"installation.issues.php": "Assicurati di utilizzare <code>PHP 7.1+</code>", "installation.issues.php": "Assicurati di utilizzare <code>PHP 7.1+</code>",
"installation.issues.server": "installation.issues.server": "Kirby necessita di <code>Apache</code>, <code>Nginx</code> o <code>Caddy</code>",
"Kirby necessita di <code>Apache</code>, <code>Nginx</code> o <code>Caddy</code>",
"installation.issues.sessions": "La cartella <code>/site/sessions</code>non esiste o non dispone dei permessi di scrittura", "installation.issues.sessions": "La cartella <code>/site/sessions</code>non esiste o non dispone dei permessi di scrittura",
"language": "Lingua", "language": "Lingua",
"language.code": "Codice", "language.code": "Codice",
"language.convert": "Imposta come predefinito", "language.convert": "Imposta come predefinito",
"language.convert.confirm": "language.convert.confirm": "<p>Sei sicuro di voler convertire <strong>{name}</strong> nella lingua predefinita? Questa operazione non può essere annullata. </p><p>Se <strong>{name}</strong> non contiene tutte le traduzioni, non ci sarà più una versione alternativa valida e parti del sito potrebbero rimanere vuote.</p>",
"<p>Sei sicuro di voler convertire <strong>{name}</strong> nella lingua predefinita? Questa operazione non può essere annullata. </p><p>Se <strong>{name}</strong> non contiene tutte le traduzioni, non ci sarà più una versione alternativa valida e parti del sito potrebbero rimanere vuote.</p>",
"language.create": "Aggiungi una nuova lingua", "language.create": "Aggiungi una nuova lingua",
"language.delete.confirm": "language.delete.confirm": "Sei sicuro di voler eliminare la lingua <strong>{name}</strong> con tutte le traduzioni? Non sarà possibile annullare!",
"Sei sicuro di voler eliminare la lingua <strong>{name}</strong> con tutte le traduzioni? Non sarà possibile annullare!",
"language.deleted": "La lingua è stata eliminata", "language.deleted": "La lingua è stata eliminata",
"language.direction": "Direzione di lettura", "language.direction": "Direzione di lettura",
"language.direction.ltr": "Sinistra a destra", "language.direction.ltr": "Sinistra a destra",
@@ -292,8 +239,7 @@
"license": "Licenza di Kirby", "license": "Licenza di Kirby",
"license.buy": "Acquista una licenza", "license.buy": "Acquista una licenza",
"license.register": "Registra", "license.register": "Registra",
"license.register.help": "license.register.help": "Hai ricevuto il codice di licenza tramite email dopo l'acquisto. Per favore inseriscilo per registrare Kirby.",
"Hai ricevuto il codice di licenza tramite email dopo l'acquisto. Per favore inseriscilo per registrare Kirby.",
"license.register.label": "Inserisci il codice di licenza", "license.register.label": "Inserisci il codice di licenza",
"license.register.success": "Ti ringraziamo per aver supportato Kirby", "license.register.success": "Ti ringraziamo per aver supportato Kirby",
"license.unregistered": "Questa è una versione demo di Kirby non registrata", "license.unregistered": "Questa è una versione demo di Kirby non registrata",
@@ -354,10 +300,8 @@
"page.changeStatus.position": "Scegli una posizione", "page.changeStatus.position": "Scegli una posizione",
"page.changeStatus.select": "Seleziona un nuovo stato", "page.changeStatus.select": "Seleziona un nuovo stato",
"page.changeTemplate": "Cambia template", "page.changeTemplate": "Cambia template",
"page.delete.confirm": "page.delete.confirm": "Sei sicuro di voler eliminare questa pagina?",
"Sei sicuro di voler eliminare questa pagina?", "page.delete.confirm.subpages": "<strong>Questa pagina ha sottopagine</strong>. <br>Anche tutte le sottopagine verranno eliminate.",
"page.delete.confirm.subpages":
"<strong>Questa pagina ha sottopagine</strong>. <br>Anche tutte le sottopagine verranno eliminate.",
"page.delete.confirm.title": "Inserisci il titolo della pagina per confermare", "page.delete.confirm.title": "Inserisci il titolo della pagina per confermare",
"page.draft.create": "Crea bozza", "page.draft.create": "Crea bozza",
"page.duplicate.appendix": "Copia", "page.duplicate.appendix": "Copia",
@@ -365,8 +309,7 @@
"page.duplicate.pages": "Copia pagine", "page.duplicate.pages": "Copia pagine",
"page.status": "Stato", "page.status": "Stato",
"page.status.draft": "Bozza", "page.status.draft": "Bozza",
"page.status.draft.description": "page.status.draft.description": "The page is in draft mode and only visible for logged in editors or via secret link",
"La pagina è in modalità bozza ed è visibile solo per editori registrati",
"page.status.listed": "Pubblico", "page.status.listed": "Pubblico",
"page.status.listed.description": "La pagina è pubblicata per tutti", "page.status.listed.description": "La pagina è pubblicata per tutti",
"page.status.unlisted": "Non in elenco", "page.status.unlisted": "Non in elenco",
@@ -388,6 +331,7 @@
"replace": "Sostituisci", "replace": "Sostituisci",
"retry": "Riprova", "retry": "Riprova",
"revert": "Abbandona", "revert": "Abbandona",
"revert.confirm": "Do you really want to <strong>delete all unsaved changes</strong>?",
"role": "Ruolo", "role": "Ruolo",
"role.admin.description": "L'amministratore ha tutti i permessi", "role.admin.description": "L'amministratore ha tutti i permessi",
@@ -451,8 +395,7 @@
"url.placeholder": "https://esempio.com", "url.placeholder": "https://esempio.com",
"user": "Utente", "user": "Utente",
"user.blueprint": "user.blueprint": "Puoi definire sezioni e campi del form aggiuntivi per questo ruolo in <strong>/site/blueprints/users/{role}.yml</strong>",
"Puoi definire sezioni e campi del form aggiuntivi per questo ruolo in <strong>/site/blueprints/users/{role}.yml</strong>",
"user.changeEmail": "Modifica email", "user.changeEmail": "Modifica email",
"user.changeLanguage": "Cambia lingua", "user.changeLanguage": "Cambia lingua",
"user.changeName": "Rinomina questo utente", "user.changeName": "Rinomina questo utente",
@@ -463,8 +406,7 @@
"user.changeRole.select": "Seleziona un nuovo ruolo", "user.changeRole.select": "Seleziona un nuovo ruolo",
"user.create": "Aggiungi nuovo utente", "user.create": "Aggiungi nuovo utente",
"user.delete": "Elimina questo utente", "user.delete": "Elimina questo utente",
"user.delete.confirm": "user.delete.confirm": "Sei sicuro di voler eliminare questo utente?",
"Sei sicuro di voler eliminare questo utente?",
"users": "Utenti", "users": "Utenti",

View File

@@ -42,10 +42,8 @@
"error.avatar.create.fail": "프로필 이미지를 업로드할 수 없습니다.", "error.avatar.create.fail": "프로필 이미지를 업로드할 수 없습니다.",
"error.avatar.delete.fail": "\ud504\ub85c\ud544 \uc774\ubbf8\uc9c0\ub97c \uc0ad\uc81c\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.", "error.avatar.delete.fail": "\ud504\ub85c\ud544 \uc774\ubbf8\uc9c0\ub97c \uc0ad\uc81c\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.",
"error.avatar.dimensions.invalid": "error.avatar.dimensions.invalid": "프로필 이미지의 너비와 높이를 3,000픽셀 이하로 설정하세요.",
"프로필 이미지의 너비와 높이를 3,000픽셀 이하로 설정하세요.", "error.avatar.mime.forbidden": "프로필 이미지의 확장자(JPG, JPEG, PNG)를 확인하세요.",
"error.avatar.mime.forbidden":
"프로필 이미지의 확장자(JPG, JPEG, PNG)를 확인하세요.",
"error.blueprint.notFound": "블루프린트({name})를 확인할 수 없습니다.", "error.blueprint.notFound": "블루프린트({name})를 확인할 수 없습니다.",
@@ -54,22 +52,17 @@
"error.field.converter.invalid": "컨버터({converter})가 올바르지 않습니다.", "error.field.converter.invalid": "컨버터({converter})가 올바르지 않습니다.",
"error.file.changeName.empty": "이름을 입력하세요.", "error.file.changeName.empty": "이름을 입력하세요.",
"error.file.changeName.permission": "error.file.changeName.permission": "파일명({filename})을 변경할 권한이 없습니다.",
"파일명({filename})을 변경할 권한이 없습니다.",
"error.file.duplicate": "파일명이 같은 파일({filename})이 있습니다.", "error.file.duplicate": "파일명이 같은 파일({filename})이 있습니다.",
"error.file.extension.forbidden": "error.file.extension.forbidden": "이 확장자({extension})는 업로드할 수 없습니다.",
"이 확장자({extension})는 업로드할 수 없습니다.", "error.file.extension.missing": "파일({filename})에 확장자가 없습니다.",
"error.file.extension.missing":
"파일({filename})에 확장자가 없습니다.",
"error.file.maxheight": "이미지의 높이는 {height}픽셀을 초과할 수 없습니다.", "error.file.maxheight": "이미지의 높이는 {height}픽셀을 초과할 수 없습니다.",
"error.file.maxsize": "파일이 너무 큽니다.", "error.file.maxsize": "파일이 너무 큽니다.",
"error.file.maxwidth": "이미지의 너비는 {width}픽셀을 초과할 수 없습니다.", "error.file.maxwidth": "이미지의 너비는 {width}픽셀을 초과할 수 없습니다.",
"error.file.mime.differs": "error.file.mime.differs": "기존 파일과 MIME 형식({mime})이 다릅니다.",
"기존 파일과 MIME 형식({mime})이 다릅니다.",
"error.file.mime.forbidden": "이 MIME 형식({mime})은 업로드할 수 없습니다.", "error.file.mime.forbidden": "이 MIME 형식({mime})은 업로드할 수 없습니다.",
"error.file.mime.invalid": "MIME 형식({mime})이 올바르지 않습니다.", "error.file.mime.invalid": "MIME 형식({mime})이 올바르지 않습니다.",
"error.file.mime.missing": "error.file.mime.missing": "파일({filename})의 형식을 확인할 수 없습니다.",
"파일({filename})의 형식을 확인할 수 없습니다.",
"error.file.minheight": "{height}픽셀 이상으로 이미지의 높이를 설정하세요.", "error.file.minheight": "{height}픽셀 이상으로 이미지의 높이를 설정하세요.",
"error.file.minsize": "파일이 너무 작습니다.", "error.file.minsize": "파일이 너무 작습니다.",
"error.file.minwidth": "{width}픽셀 이상으로 이미지의 너비를 설정하세요.", "error.file.minwidth": "{width}픽셀 이상으로 이미지의 너비를 설정하세요.",
@@ -90,111 +83,77 @@
"error.license.email": "올바른 이메일 주소를 입력하세요.", "error.license.email": "올바른 이메일 주소를 입력하세요.",
"error.license.verification": "라이선스 키가 올바르지 않습니다.", "error.license.verification": "라이선스 키가 올바르지 않습니다.",
"error.page.changeSlug.permission": "error.page.changeSlug.permission": "고유 주소({slug})를 변경할 권한이 없습니다.",
"고유 주소({slug})를 변경할 권한이 없습니다.", "error.page.changeStatus.incomplete": "페이지를 공개할 수 없습니다.",
"error.page.changeStatus.incomplete": "error.page.changeStatus.permission": "페이지의 상태를 변경할 수 없습니다.",
"페이지를 공개할 수 없습니다.", "error.page.changeStatus.toDraft.invalid": "페이지({slug})의 상태를 초안으로 변경할 수 없습니다.",
"error.page.changeStatus.permission": "error.page.changeTemplate.invalid": "페이지({slug})의 템플릿을 변경할 수 없습니다.",
"페이지의 상태를 변경할 없습니다.", "error.page.changeTemplate.permission": "페이지({slug})의 템플릿을 변경할 권한이 없습니다.",
"error.page.changeStatus.toDraft.invalid":
"페이지({slug})의 상태를 초안으로 변경할 수 없습니다.",
"error.page.changeTemplate.invalid":
"페이지({slug})의 템플릿을 변경할 수 없습니다.",
"error.page.changeTemplate.permission":
"페이지({slug})의 템플릿을 변경할 권한이 없습니다.",
"error.page.changeTitle.empty": "제목을 입력하세요.", "error.page.changeTitle.empty": "제목을 입력하세요.",
"error.page.changeTitle.permission": "error.page.changeTitle.permission": "페이지({slug})의 제목을 변경할 권한이 없습니다.",
"페이지({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": "페이지를 삭제하려면 페이지의 제목을 입력하세요.",
"error.page.delete.hasChildren": "error.page.delete.hasChildren": "하위 페이지가 있는 페이지는 삭제할 수 없습니다.",
"하위 페이지가 있는 페이지는 삭제할 수 없습니다.",
"error.page.delete.permission": "페이지({slug})를 삭제할 권한이 없습니다.", "error.page.delete.permission": "페이지({slug})를 삭제할 권한이 없습니다.",
"error.page.draft.duplicate": "error.page.draft.duplicate": "고유 주소({slug})가 같은 초안 페이지가 있습니다.",
"고유 주소({slug})가 같은 초안 페이지가 있습니다.", "error.page.duplicate": "고유 주소({slug})가 같은 페이지가 있습니다.",
"error.page.duplicate":
"고유 주소({slug})가 같은 페이지가 있습니다.",
"error.page.duplicate.permission": "페이지({slug})를 복제할 권한이 없습니다.", "error.page.duplicate.permission": "페이지({slug})를 복제할 권한이 없습니다.",
"error.page.notFound": "페이지({slug})가 없습니다.", "error.page.notFound": "페이지({slug})가 없습니다.",
"error.page.num.invalid": "error.page.num.invalid": "올바른 정수를 입력하세요.",
"올바른 정수를 입력하세요.",
"error.page.slug.invalid": "올바른 접두사를 입력하세요.", "error.page.slug.invalid": "올바른 접두사를 입력하세요.",
"error.page.sort.permission": "페이지({slug})를 정렬할 수 없습니다.", "error.page.sort.permission": "페이지({slug})를 정렬할 수 없습니다.",
"error.page.status.invalid": "올바른 상태를 설정하세요.", "error.page.status.invalid": "올바른 상태를 설정하세요.",
"error.page.undefined": "\ud398\uc774\uc9c0\uac00 \uc5c6\uc2b5\ub2c8\ub2e4.", "error.page.undefined": "\ud398\uc774\uc9c0\uac00 \uc5c6\uc2b5\ub2c8\ub2e4.",
"error.page.update.permission": "페이지({slug})를 변경할 권한이 없습니다.", "error.page.update.permission": "페이지({slug})를 변경할 권한이 없습니다.",
"error.section.files.max.plural": "error.section.files.max.plural": "이 섹션({section})에는 파일을 {max}개 이상 추가할 수 없습니다.",
"이 섹션({section})에는 파일을 {max}개 이상 추가할 수 없습니다.", "error.section.files.max.singular": "이 섹션({section})에는 파일을 하나 이상 추가할 수 없습니다.",
"error.section.files.max.singular": "error.section.files.min.plural": "이 섹션({section})에는 파일이 {min}개 이상 필요합니다.",
"이 섹션({section})에는 파일 하나 이상 추가할 수 없습니다.", "error.section.files.min.singular": "이 섹션({section})에는 파일 하나 이상 필요합니다.",
"error.section.files.min.plural":
"이 섹션({section})에는 파일이 {min}개 이상 필요합니다.",
"error.section.files.min.singular":
"이 섹션({section})에는 파일이 하나 이상 필요합니다.",
"error.section.pages.max.plural": "error.section.pages.max.plural": "이 섹션({section})에는 페이지를 {max}개 이상 추가할 수 없습니다.",
"이 섹션({section})에는 페이지를 {max}개 이상 추가할 수 없습니다.", "error.section.pages.max.singular": "이 섹션({section})에는 페이지를 하나 이상 추가할 수 없습니다.",
"error.section.pages.max.singular": "error.section.pages.min.plural": "이 섹션({section})에는 페이지가 {min}개 이상 필요합니다.",
"이 섹션({section})에는 페이지 하나 이상 추가할 수 없습니다.", "error.section.pages.min.singular": "이 섹션({section})에는 페이지 하나 이상 필요합니다.",
"error.section.pages.min.plural":
"이 섹션({section})에는 페이지가 {min}개 이상 필요합니다.",
"error.section.pages.min.singular":
"이 섹션({section})에는 페이지가 하나 이상 필요합니다.",
"error.section.notLoaded": "섹션({name})을 확인할 수 없습니다.", "error.section.notLoaded": "섹션({name})을 확인할 수 없습니다.",
"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": "error.user.changeEmail.permission": "사용자({name})의 이메일 주소를 변경할 권한이 없습니다.",
"사용자({name})의 이메일 주소를 변경할 권한이 없습니다.", "error.user.changeLanguage.permission": "사용자({name})의 언어를 변경할 권한이 없습니다.",
"error.user.changeLanguage.permission": "error.user.changeName.permission": "사용자명({name})을 변경할 권한이 없습니다.",
"사용자({name})의 언어를 변경할 권한이 없습니다.", "error.user.changePassword.permission": "사용자({name})의 암호를 변경할 권한이 없습니다.",
"error.user.changeName.permission": "error.user.changeRole.lastAdmin": "최종 관리자의 역할은 변경할 수 없습니다.",
"사용자({name})을 변경할 권한이 없습니다.", "error.user.changeRole.permission": "사용자({name})의 역할을 변경할 권한이 없습니다.",
"error.user.changePassword.permission": "error.user.changeRole.toAdmin": "다른 사용자를 관리자로 지정할 권한이 없습니다.",
"사용자({name})의 암호를 변경할 권한이 없습니다.",
"error.user.changeRole.lastAdmin":
"최종 관리자의 역할은 변경할 수 없습니다.",
"error.user.changeRole.permission":
"사용자({name})의 역할을 변경할 권한이 없습니다.",
"error.user.changeRole.toAdmin":
"다른 사용자를 관리자로 지정할 권한이 없습니다.",
"error.user.create.permission": "사용자를 등록할 권한이 없습니다.", "error.user.create.permission": "사용자를 등록할 권한이 없습니다.",
"error.user.delete": "사용자({name})를 삭제할 수 없습니다.", "error.user.delete": "사용자({name})를 삭제할 수 없습니다.",
"error.user.delete.lastAdmin": "\ucd5c\uc885 \uad00\ub9ac\uc790\ub294 \uc0ad\uc81c\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.", "error.user.delete.lastAdmin": "\ucd5c\uc885 \uad00\ub9ac\uc790\ub294 \uc0ad\uc81c\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.",
"error.user.delete.lastUser": "최종 사용자는 삭제할 수 없습니다.", "error.user.delete.lastUser": "최종 사용자는 삭제할 수 없습니다.",
"error.user.delete.permission": "error.user.delete.permission": "사용자({name})를 삭제할 권한이 없습니다.",
"사용자({name})를 삭제할 권한이 없습니다.", "error.user.duplicate": "이메일 주소({email})가 같은 사용자가 있습니다.",
"error.user.duplicate":
"이메일 주소({email})가 같은 사용자가 있습니다.",
"error.user.email.invalid": "올바른 이메일 주소를 입력하세요.", "error.user.email.invalid": "올바른 이메일 주소를 입력하세요.",
"error.user.language.invalid": "올바른 언어를 입력하세요.", "error.user.language.invalid": "올바른 언어를 입력하세요.",
"error.user.notFound": "사용자({name})가 없습니다.", "error.user.notFound": "사용자({name})가 없습니다.",
"error.user.password.invalid": "error.user.password.invalid": "암호를 8자 이상으로 설정하세요.",
"암호를 8자 이상으로 설정하세요.",
"error.user.password.notSame": "\uc554\ud638\ub97c \ud655\uc778\ud558\uc138\uc694.", "error.user.password.notSame": "\uc554\ud638\ub97c \ud655\uc778\ud558\uc138\uc694.",
"error.user.password.undefined": "암호가 설정되지 않았습니다.", "error.user.password.undefined": "암호가 설정되지 않았습니다.",
"error.user.role.invalid": "올바른 역할을 입력하세요.", "error.user.role.invalid": "올바른 역할을 입력하세요.",
"error.user.update.permission": "error.user.update.permission": "사용자({name})의 정보를 변경할 권한이 없습니다.",
"사용자({name})의 정보를 변경할 권한이 없습니다.",
"error.validation.accepted": "확인하세요.", "error.validation.accepted": "확인하세요.",
"error.validation.alpha": "로마자(a~z)만 입력할 수 있습니다.", "error.validation.alpha": "로마자(a~z)만 입력할 수 있습니다.",
"error.validation.alphanum": "error.validation.alphanum": "로마자(a~z) 또는 숫자(0~9)만 입력할 수 있습니다.",
"로마자(a~z) 또는 숫자(0~9)만 입력할 수 있습니다.", "error.validation.between": "{min}, {max} 사이의 값을 입력하세요.",
"error.validation.between":
"{min}, {max} 사이의 값을 입력하세요.",
"error.validation.boolean": "확인하거나 취소하세요.", "error.validation.boolean": "확인하거나 취소하세요.",
"error.validation.contains": "error.validation.contains": "다음을 포함한 값을 입력하세요: {needle}",
"다음을 포함한 값을 입력하세요: {needle}",
"error.validation.date": "올바른 날짜를 입력하세요.", "error.validation.date": "올바른 날짜를 입력하세요.",
"error.validation.date.after": "{date} 이후 날짜를 입력하세요.", "error.validation.date.after": "{date} 이후 날짜를 입력하세요.",
"error.validation.date.before": "{date} 이전 날짜를 입력하세요.", "error.validation.date.before": "{date} 이전 날짜를 입력하세요.",
@@ -210,18 +169,14 @@
"error.validation.less": "{max} 미만의 값을 입력하세요.", "error.validation.less": "{max} 미만의 값을 입력하세요.",
"error.validation.match": "입력한 값이 예상 패턴과 일치하지 않습니다.", "error.validation.match": "입력한 값이 예상 패턴과 일치하지 않습니다.",
"error.validation.max": "{max} 이하의 값을 입력하세요.", "error.validation.max": "{max} 이하의 값을 입력하세요.",
"error.validation.maxlength": "error.validation.maxlength": "{max}자 이하의 값을 입력하세요.",
"{max}자 이하의 값을 입력하세요.",
"error.validation.maxwords": "{max}자 이하를 입력하세요.", "error.validation.maxwords": "{max}자 이하를 입력하세요.",
"error.validation.min": "{min} 이상의 값을 입력하세요.", "error.validation.min": "{min} 이상의 값을 입력하세요.",
"error.validation.minlength": "error.validation.minlength": "{min}자 이상의 값을 입력하세요.",
"{min}자 이상의 값을 입력하세요.",
"error.validation.minwords": "{min}자 이상을 입력하세요.", "error.validation.minwords": "{min}자 이상을 입력하세요.",
"error.validation.more": "{min} 이상의 값을 입력하세요.", "error.validation.more": "{min} 이상의 값을 입력하세요.",
"error.validation.notcontains": "error.validation.notcontains": "{needle}에 포함된 값은 입력할 수 없습니다.",
"{needle}에 포함된 값은 입력할 수 없습니다.", "error.validation.notin": "{notIn}에 포함된 값은 입력할 수 없습니다.",
"error.validation.notin":
"{notIn}에 포함된 값은 입력할 수 없습니다.",
"error.validation.option": "올바른 옵션을 선택하세요.", "error.validation.option": "올바른 옵션을 선택하세요.",
"error.validation.num": "올바른 숫자를 입력하세요.", "error.validation.num": "올바른 숫자를 입력하세요.",
"error.validation.required": "아무거나 입력하세요.", "error.validation.required": "아무거나 입력하세요.",
@@ -238,8 +193,7 @@
"field.structure.empty": "항목이 없습니다.", "field.structure.empty": "항목이 없습니다.",
"field.users.empty": "선택한 사용자가 없습니다.", "field.users.empty": "선택한 사용자가 없습니다.",
"file.delete.confirm": "file.delete.confirm": "<strong>파일({filename})</strong>을 삭제할까요?",
"<strong>파일({filename})</strong>을 삭제할까요?",
"files": "파일", "files": "파일",
"files.empty": "파일이 없습니다.", "files.empty": "파일이 없습니다.",
@@ -251,29 +205,22 @@
"installation": "설치", "installation": "설치",
"installation.completed": "패널을 설치했습니다.", "installation.completed": "패널을 설치했습니다.",
"installation.disabled": "패널 설치 관리자는 로컬 서버에서 실행하거나 <code>panel.install</code> 옵션을 설정하세요.", "installation.disabled": "패널 설치 관리자는 로컬 서버에서 실행하거나 <code>panel.install</code> 옵션을 설정하세요.",
"installation.issues.accounts": "installation.issues.accounts": "폴더(<code>/site/accounts</code>)에 쓰기 권한이 없습니다.",
"폴더(<code>/site/accounts</code>)에 쓰기 권한이 없습니다.", "installation.issues.content": "폴더(<code>/content</code>)에 쓰기 권한이 없습니다.",
"installation.issues.content":
"폴더(<code>/content</code>)에 쓰기 권한이 없습니다.",
"installation.issues.curl": "<code>cURL</code> 확장 기능이 필요합니다.", "installation.issues.curl": "<code>cURL</code> 확장 기능이 필요합니다.",
"installation.issues.headline": "패널을 설치할 수 없습니다.", "installation.issues.headline": "패널을 설치할 수 없습니다.",
"installation.issues.mbstring": "installation.issues.mbstring": "<code>MB String</code> 확장 기능이 필요합니다.",
"<code>MB String</code> 확장 기능이 필요합니다.", "installation.issues.media": "폴더(<code>/media</code>)에 쓰기 권한이 없습니다.",
"installation.issues.media":
"폴더(<code>/media</code>)에 쓰기 권한이 없습니다.",
"installation.issues.php": "<code>PHP</code> 버전이 7 이상인지 확인하세요.", "installation.issues.php": "<code>PHP</code> 버전이 7 이상인지 확인하세요.",
"installation.issues.server": "installation.issues.server": "Kirby를 실행하려면 <code>Apache</code>, <code>Nginx</code>, 또는 <code>Caddy</code>가 필요합니다.",
"Kirby를 실행하려면 <code>Apache</code>, <code>Nginx</code>, 또는 <code>Caddy</code>가 필요합니다.",
"installation.issues.sessions": "폴더(<code>/site/sessions</code>)에 쓰기 권한이 없습니다.", "installation.issues.sessions": "폴더(<code>/site/sessions</code>)에 쓰기 권한이 없습니다.",
"language": "\uc5b8\uc5b4", "language": "\uc5b8\uc5b4",
"language.code": "언어 코드", "language.code": "언어 코드",
"language.convert": "기본 언어로 설정", "language.convert": "기본 언어로 설정",
"language.convert.confirm": "language.convert.confirm": "이 <strong>언어({name})</strong>를 기본 언어로 설정할까요? 설정한 뒤에는 복원할 수 없으며, 이 언어로 번역되지 않은 항목은 올바르게 표시되지 않을 수 있습니다.",
"이 <strong>언어({name})</strong>를 기본 언어로 설정할까요? 설정한 뒤에는 복원할 수 없으며, 이 언어로 번역되지 않은 항목은 올바르게 표시되지 않을 수 있습니다.",
"language.create": "새 언어 추가", "language.create": "새 언어 추가",
"language.delete.confirm": "language.delete.confirm": "<strong>언어({name})</strong>를 삭제할까요? 삭제한 뒤에는 복원할 수 없습니다.",
"<strong>언어({name})</strong>를 삭제할까요? 삭제한 뒤에는 복원할 수 없습니다.",
"language.deleted": "언어를 삭제했습니다.", "language.deleted": "언어를 삭제했습니다.",
"language.direction": "읽기 방향", "language.direction": "읽기 방향",
"language.direction.ltr": "왼쪽에서 오른쪽", "language.direction.ltr": "왼쪽에서 오른쪽",
@@ -292,8 +239,7 @@
"license": "라이선스", "license": "라이선스",
"license.buy": "라이선스 구매", "license.buy": "라이선스 구매",
"license.register": "등록", "license.register": "등록",
"license.register.help": "license.register.help": "이메일 주소로 라이선스 코드를 전송했습니다. Kirby를 등록하려면 라이선스 코드와 이메일 주소를 입력하세요.",
"이메일 주소로 라이선스 코드를 전송했습니다. Kirby를 등록하려면 라이선스 코드와 이메일 주소를 입력하세요.",
"license.register.label": "라이선스 코드를 입력하세요.", "license.register.label": "라이선스 코드를 입력하세요.",
"license.register.success": "Kirby를 구입해주셔서 감사합니다.", "license.register.success": "Kirby를 구입해주셔서 감사합니다.",
"license.unregistered": "Kirby가 등록되지 않았습니다.", "license.unregistered": "Kirby가 등록되지 않았습니다.",
@@ -325,7 +271,7 @@
"months.april": "4\uc6d4", "months.april": "4\uc6d4",
"months.august": "8\uc6d4", "months.august": "8\uc6d4",
"months.december": "12\uc6d4", "months.december": "12\uc6d4",
"months.february": "2\uc6d4", "months.february": "2",
"months.january": "1\uc6d4", "months.january": "1\uc6d4",
"months.july": "7\uc6d4", "months.july": "7\uc6d4",
"months.june": "6\uc6d4", "months.june": "6\uc6d4",
@@ -354,10 +300,8 @@
"page.changeStatus.position": "위치를 선택하세요.", "page.changeStatus.position": "위치를 선택하세요.",
"page.changeStatus.select": "새 상태 선택", "page.changeStatus.select": "새 상태 선택",
"page.changeTemplate": "템플릿 변경", "page.changeTemplate": "템플릿 변경",
"page.delete.confirm": "page.delete.confirm": "<strong>페이지({title})</strong>를 삭제할까요?",
"<strong>페이지({title})</strong>를 삭제할까요?", "page.delete.confirm.subpages": "<strong>페이지에 하위 페이지가 있습니다.</strong> 모든 하위 페이지가 삭제됩니다.",
"page.delete.confirm.subpages":
"<strong>페이지에 하위 페이지가 있습니다.</strong> 모든 하위 페이지가 삭제됩니다.",
"page.delete.confirm.title": "페이지 제목을 입력하세요.", "page.delete.confirm.title": "페이지 제목을 입력하세요.",
"page.draft.create": "초안 등록", "page.draft.create": "초안 등록",
"page.duplicate.appendix": "복사", "page.duplicate.appendix": "복사",
@@ -365,8 +309,7 @@
"page.duplicate.pages": "페이지 복사", "page.duplicate.pages": "페이지 복사",
"page.status": "상태", "page.status": "상태",
"page.status.draft": "초안", "page.status.draft": "초안",
"page.status.draft.description": "page.status.draft.description": "로그인한 사용자나 URL을 통해서만 읽을 수 있습니다.",
"로그인한 사용자만 읽을 수 있습니다.",
"page.status.listed": "공개", "page.status.listed": "공개",
"page.status.listed.description": "누구나 읽을 수 있습니다.", "page.status.listed.description": "누구나 읽을 수 있습니다.",
"page.status.unlisted": "비공개", "page.status.unlisted": "비공개",
@@ -388,6 +331,7 @@
"replace": "\uad50\uccb4", "replace": "\uad50\uccb4",
"retry": "\ub2e4\uc2dc \uc2dc\ub3c4", "retry": "\ub2e4\uc2dc \uc2dc\ub3c4",
"revert": "복원", "revert": "복원",
"revert.confirm": "<strong>저장되지 않은 내용</strong>을 삭제할까요?",
"role": "역할", "role": "역할",
"role.admin.description": "관리자는 모든 권한이 있습니다.", "role.admin.description": "관리자는 모든 권한이 있습니다.",
@@ -451,8 +395,7 @@
"url.placeholder": "https://example.com", "url.placeholder": "https://example.com",
"user": "사용자", "user": "사용자",
"user.blueprint": "user.blueprint": "파일(<strong>/site/blueprints/users/{role}.yml</strong>)에 섹션 및 폼 필드를 추가할 수 있습니다.",
"파일(<strong>/site/blueprints/users/{role}.yml</strong>)에 섹션 및 폼 필드를 추가할 수 있습니다.",
"user.changeEmail": "이메일 주소 변경", "user.changeEmail": "이메일 주소 변경",
"user.changeLanguage": "언어 변경", "user.changeLanguage": "언어 변경",
"user.changeName": "사용자명 변경", "user.changeName": "사용자명 변경",
@@ -463,8 +406,7 @@
"user.changeRole.select": "새 역할 선택", "user.changeRole.select": "새 역할 선택",
"user.create": "사용자 추가", "user.create": "사용자 추가",
"user.delete": "사용자 삭제", "user.delete": "사용자 삭제",
"user.delete.confirm": "user.delete.confirm": "<strong>사용자({email})</strong>를 삭제할까요?",
"<strong>사용자({email})</strong>를 삭제할까요?",
"users": "사용자", "users": "사용자",

View File

@@ -42,10 +42,8 @@
"error.avatar.create.fail": "Nepavyko įkelti profilio nuotraukos", "error.avatar.create.fail": "Nepavyko įkelti profilio nuotraukos",
"error.avatar.delete.fail": "Nepavyko pašalinti profilio nuotraukos", "error.avatar.delete.fail": "Nepavyko pašalinti profilio nuotraukos",
"error.avatar.dimensions.invalid": "error.avatar.dimensions.invalid": "Profilio nuotraukos plotis ar aukštis turėtų būti iki 3000 pikselių",
"Profilio nuotraukos plotis ar aukštis turėtų būti iki 3000 pikselių", "error.avatar.mime.forbidden": "Profilio nuotrauka turi būti JPEG arba PNG",
"error.avatar.mime.forbidden":
"Profilio nuotrauka turi būti JPEG arba PNG",
"error.blueprint.notFound": "Blueprint \"{name}\" negali būti užkrautas", "error.blueprint.notFound": "Blueprint \"{name}\" negali būti užkrautas",
@@ -54,22 +52,17 @@
"error.field.converter.invalid": "Neteisingas konverteris \"{converter}\"", "error.field.converter.invalid": "Neteisingas konverteris \"{converter}\"",
"error.file.changeName.empty": "Pavadinimas negali būti tuščias", "error.file.changeName.empty": "Pavadinimas negali būti tuščias",
"error.file.changeName.permission": "error.file.changeName.permission": "Neturite teisės pakeisti failo pavadinimo \"{filename}\"",
"Neturite teisės pakeisti failo pavadinimo \"{filename}\"",
"error.file.duplicate": "Failas su pavadinimu \"{filename}\" jau yra", "error.file.duplicate": "Failas su pavadinimu \"{filename}\" jau yra",
"error.file.extension.forbidden": "error.file.extension.forbidden": "Failo tipas (plėtinys) \"{extension}\" neleidžiamas",
"Failo tipas (plėtinys) \"{extension}\" neleidžiamas", "error.file.extension.missing": "Failui \"{filename}\" trūksta tipo (plėtinio)",
"error.file.extension.missing":
"Failui \"{filename}\" trūksta tipo (plėtinio)",
"error.file.maxheight": "Failo aukštis neturi viršyti {height} px", "error.file.maxheight": "Failo aukštis neturi viršyti {height} px",
"error.file.maxsize": "Failas per didelis", "error.file.maxsize": "Failas per didelis",
"error.file.maxwidth": "Failo plotis neturi viršyti {width} px", "error.file.maxwidth": "Failo plotis neturi viršyti {width} px",
"error.file.mime.differs": "error.file.mime.differs": "Įkėliamas failas turi būti tokio pat mime tipo \"{mime}\"",
"Įkėliamas failas turi būti tokio pat mime tipo \"{mime}\"",
"error.file.mime.forbidden": "Media tipas \"{mime}\" neleidžiamas", "error.file.mime.forbidden": "Media tipas \"{mime}\" neleidžiamas",
"error.file.mime.invalid": "Neteisingas mime tipas: {mime}", "error.file.mime.invalid": "Neteisingas mime tipas: {mime}",
"error.file.mime.missing": "error.file.mime.missing": "Failui \"{filename}\" nepavyko atpažinti media (mime) tipo",
"Failui \"{filename}\" nepavyko atpažinti media (mime) tipo",
"error.file.minheight": "Failo aukštis turi būti bent {height} px", "error.file.minheight": "Failo aukštis turi būti bent {height} px",
"error.file.minsize": "Failas per mažas", "error.file.minsize": "Failas per mažas",
"error.file.minwidth": "Failo plotis turi būti bent {width} px", "error.file.minwidth": "Failo plotis turi būti bent {width} px",
@@ -90,111 +83,77 @@
"error.license.email": "Prašome įrašyti teisingą el. pašto adresą", "error.license.email": "Prašome įrašyti teisingą el. pašto adresą",
"error.license.verification": "Nepavyko patikrinti licenzijos", "error.license.verification": "Nepavyko patikrinti licenzijos",
"error.page.changeSlug.permission": "error.page.changeSlug.permission": "Neturite teisės pakeisti \"{slug}\" URL",
"Neturite teisės pakeisti \"{slug}\" URL", "error.page.changeStatus.incomplete": "Puslapis turi klaidų ir negali būti paskelbtas",
"error.page.changeStatus.incomplete": "error.page.changeStatus.permission": "Šiam puslapiui negalima pakeisti statuso",
"Puslapis turi klaidų ir negali būti paskelbtas", "error.page.changeStatus.toDraft.invalid": "Puslapio \"{slug}\" negalima paversti juodraščiu",
"error.page.changeStatus.permission": "error.page.changeTemplate.invalid": "Šablono puslapiui \"{slug}\" negalima keisti",
"Šiam puslapiui negalima pakeisti statuso", "error.page.changeTemplate.permission": "Neturite leidimo keisti šabloną puslapiui \"{slug}\"",
"error.page.changeStatus.toDraft.invalid":
"Puslapio \"{slug}\" negalima paversti juodraščiu",
"error.page.changeTemplate.invalid":
"Šablono puslapiui \"{slug}\" negalima keisti",
"error.page.changeTemplate.permission":
"Neturite leidimo keisti šabloną puslapiui \"{slug}\"",
"error.page.changeTitle.empty": "Pavadinimas negali būti tuščias", "error.page.changeTitle.empty": "Pavadinimas negali būti tuščias",
"error.page.changeTitle.permission": "error.page.changeTitle.permission": "Neturite leidimo keisti pavadinimo puslapiui \"{slug}\"",
"Neturite leidimo keisti pavadinimo puslapiui \"{slug}\"",
"error.page.create.permission": "Neturite leidimo sukurti \"{slug}\"", "error.page.create.permission": "Neturite leidimo sukurti \"{slug}\"",
"error.page.delete": "Puslapio \"{slug}\" negalima pašalinti", "error.page.delete": "Puslapio \"{slug}\" negalima pašalinti",
"error.page.delete.confirm": "Įrašykite puslapio pavadinimą, tam kad patvirtintumėte", "error.page.delete.confirm": "Įrašykite puslapio pavadinimą, tam kad patvirtintumėte",
"error.page.delete.hasChildren": "error.page.delete.hasChildren": "Puslapis turi vidinių puslapių, dėl to negalima jo pašalinti",
"Puslapis turi vidinių puslapių, dėl to negalima jo pašalinti",
"error.page.delete.permission": "Neturite leidimo šalinti \"{slug}\"", "error.page.delete.permission": "Neturite leidimo šalinti \"{slug}\"",
"error.page.draft.duplicate": "error.page.draft.duplicate": "Puslapio juodraštis su URL pabaiga \"{slug}\" jau yra",
"Puslapio juodraštis su URL pabaiga \"{slug}\" jau yra", "error.page.duplicate": "Puslapis su URL pabaiga \"{slug}\" jau yra",
"error.page.duplicate":
"Puslapis su URL pabaiga \"{slug}\" jau yra",
"error.page.duplicate.permission": "Neturite leidimo dubliuoti \"{slug}\"", "error.page.duplicate.permission": "Neturite leidimo dubliuoti \"{slug}\"",
"error.page.notFound": "Puslapis \"{slug}\" nerastas", "error.page.notFound": "Puslapis \"{slug}\" nerastas",
"error.page.num.invalid": "error.page.num.invalid": "Įrašykite teisingą eiliškumo numerį. Numeris negali būti neigiamas.",
"Įrašykite teisingą eiliškumo numerį. Numeris negali būti neigiamas.",
"error.page.slug.invalid": "Įrašykite teisingą URL prefiksą", "error.page.slug.invalid": "Įrašykite teisingą URL prefiksą",
"error.page.sort.permission": "Puslapiui \"{slug}\" negalima pakeisti eiliškumo", "error.page.sort.permission": "Puslapiui \"{slug}\" negalima pakeisti eiliškumo",
"error.page.status.invalid": "Nustatykite teisingą puslapio statusą", "error.page.status.invalid": "Nustatykite teisingą puslapio statusą",
"error.page.undefined": "Puslapis nerastas", "error.page.undefined": "Puslapis nerastas",
"error.page.update.permission": "Neturite leidimo atnaujinti \"{slug}\"", "error.page.update.permission": "Neturite leidimo atnaujinti \"{slug}\"",
"error.section.files.max.plural": "error.section.files.max.plural": "Į sekciją \"{section}\" negalima pridėti daugiau nei {max} failų",
"Į sekciją \"{section}\" negalima pridėti daugiau nei {max} failų", "error.section.files.max.singular": "Į sekciją \"{section}\" negalima pridėti daugiau nei vieną failą",
"error.section.files.max.singular": "error.section.files.min.plural": "Sekcija \"{section}\" reikalauja bent {min} failų",
"Į sekciją \"{section}\" negalima pridėti daugiau nei vieną failą", "error.section.files.min.singular": "Sekcija \"{section}\" reikalauja bent vieno failo",
"error.section.files.min.plural":
"Sekcija \"{section}\" reikalauja bent {min} failų",
"error.section.files.min.singular":
"Sekcija \"{section}\" reikalauja bent vieno failo",
"error.section.pages.max.plural": "error.section.pages.max.plural": "Į sekciją \"{section}\" negalima pridėti daugiau nei {max} puslapių",
"Į sekciją \"{section}\" negalima pridėti daugiau nei {max} puslap", "error.section.pages.max.singular": "Į sekciją \"{section}\" negalima pridėti daugiau nei vieną puslapį",
"error.section.pages.max.singular": "error.section.pages.min.plural": "Sekcija \"{section}\" reikalauja bent {min} puslapių",
"Į sekciją \"{section}\" negalima pridėti daugiau nei vieną puslapį", "error.section.pages.min.singular": "Sekcija \"{section}\" reikalauja bent vieno puslapio",
"error.section.pages.min.plural":
"Sekcija \"{section}\" reikalauja bent {min} puslapių",
"error.section.pages.min.singular":
"Sekcija \"{section}\" reikalauja bent vieno puslapio",
"error.section.notLoaded": "Sekcija \"{name}\" negali būti užkrauta", "error.section.notLoaded": "Sekcija \"{name}\" negali būti užkrauta",
"error.section.type.invalid": "Sekcijos tipas \"{type}\" yra neteisingas", "error.section.type.invalid": "Sekcijos tipas \"{type}\" yra neteisingas",
"error.site.changeTitle.empty": "Pavadinimas negali būti tuščias", "error.site.changeTitle.empty": "Pavadinimas negali būti tuščias",
"error.site.changeTitle.permission": "error.site.changeTitle.permission": "Neturite leidimo keisti svetainės pavadinimo",
"Neturite leidimo keisti svetainės pavadinimo",
"error.site.update.permission": "Neturite leidimo atnaujinti svetainės", "error.site.update.permission": "Neturite leidimo atnaujinti svetainės",
"error.template.default.notFound": "Nėra šablono pagal nutylėjimą", "error.template.default.notFound": "Nėra šablono pagal nutylėjimą",
"error.user.changeEmail.permission": "error.user.changeEmail.permission": "Neturite leidimo keisti vartotojo \"{name}\" el. paštą",
"Neturite leidimo keisti vartotojo \"{name}\" el. paštą", "error.user.changeLanguage.permission": "Neturite leidimo keisti vartotojo \"{name}\" kalbą",
"error.user.changeLanguage.permission": "error.user.changeName.permission": "Neturite leidimo keisti vartotojo \"{name}\" vardą",
"Neturite leidimo keisti vartotojo \"{name}\" kalbą", "error.user.changePassword.permission": "Neturite leidimo keisti vartotojo \"{name}\" slaptažodį",
"error.user.changeName.permission": "error.user.changeRole.lastAdmin": "Vienintelio administratoriaus rolės negalima pakeisti",
"Neturite leidimo keisti vartotojo \"{name}\" vardą", "error.user.changeRole.permission": "Neturite leidimo pakeisti vartotojo \"{name}\" rolės",
"error.user.changePassword.permission": "error.user.changeRole.toAdmin": "Jūs neturite teisių suteikti administratoriaus rolę",
"Neturite leidimo keisti vartotojo \"{name}\" slaptažodį",
"error.user.changeRole.lastAdmin":
"Vienintelio administratoriaus rolės negalima pakeisti",
"error.user.changeRole.permission":
"Neturite leidimo pakeisti vartotojo \"{name}\" rolės",
"error.user.changeRole.toAdmin":
"Jūs neturite teisių suteikti administratoriaus rolę",
"error.user.create.permission": "Neturite leidimo sukurti šį vartotoją", "error.user.create.permission": "Neturite leidimo sukurti šį vartotoją",
"error.user.delete": "Vartotojo \"{name}\" negalima pašalinti", "error.user.delete": "Vartotojo \"{name}\" negalima pašalinti",
"error.user.delete.lastAdmin": "Vienintelio administratoriaus negalima pašalinti", "error.user.delete.lastAdmin": "Vienintelio administratoriaus negalima pašalinti",
"error.user.delete.lastUser": "Vienintelio vartotojo negalima pašalinti", "error.user.delete.lastUser": "Vienintelio vartotojo negalima pašalinti",
"error.user.delete.permission": "error.user.delete.permission": "Neturite leidimo pašalinti vartotoją \"{name}\"",
"Neturite leidimo pašalinti vartotoją \"{name}\"", "error.user.duplicate": "Vartotojas su el. paštu \"{email}\" jau yra",
"error.user.duplicate":
"Vartotojas su el. paštu \"{email}\" jau yra",
"error.user.email.invalid": "Įrašykite teisingą el. pašto adresą", "error.user.email.invalid": "Įrašykite teisingą el. pašto adresą",
"error.user.language.invalid": "Įrašykite teisingą kalbą", "error.user.language.invalid": "Įrašykite teisingą kalbą",
"error.user.notFound": "Vartotojas \"{name}\" nerastas", "error.user.notFound": "Vartotojas \"{name}\" nerastas",
"error.user.password.invalid": "error.user.password.invalid": "Prašome įrašyti galiojantį slaptažodį. Slaptažodį turi sudaryti bent 8 simboliai.",
"Prašome įrašyti galiojantį slaptažodį. Slaptažodį turi sudaryti bent 8 simboliai.",
"error.user.password.notSame": "Slaptažodžiai nesutampa", "error.user.password.notSame": "Slaptažodžiai nesutampa",
"error.user.password.undefined": "Vartotojas neturi slaptažodžio", "error.user.password.undefined": "Vartotojas neturi slaptažodžio",
"error.user.role.invalid": "Įrašykite teisingą rolę", "error.user.role.invalid": "Įrašykite teisingą rolę",
"error.user.update.permission": "error.user.update.permission": "Neturite teisės keisti vartotojo \"{name}\"",
"Neturite teisės keisti vartotojo \"{name}\"",
"error.validation.accepted": "Prašome patvirtinti", "error.validation.accepted": "Prašome patvirtinti",
"error.validation.alpha": "Prašome įrašyti tik raides a-z", "error.validation.alpha": "Prašome įrašyti tik raides a-z",
"error.validation.alphanum": "error.validation.alphanum": "Prašome įrašyti tik raides a-z arba skaičius 0-9",
"Prašome įrašyti tik raides a-z arba skaičius 0-9", "error.validation.between": "Prašome įrašyti reikšmę tarp \"{min}\" ir \"{max}\"",
"error.validation.between":
"Prašome įrašyti reikšmę tarp \"{min}\" ir \"{max}\"",
"error.validation.boolean": "Patvirtinkite arba atšaukite", "error.validation.boolean": "Patvirtinkite arba atšaukite",
"error.validation.contains": "error.validation.contains": "Prašome įrašyti reikšmę, kuri turėtų \"{needle}\"",
"Prašome įrašyti reikšmę, kuri turėtų \"{needle}\"",
"error.validation.date": "Prašome įrašyti korektišką datą", "error.validation.date": "Prašome įrašyti korektišką datą",
"error.validation.date.after": "Įrašykite datą nuo {date}", "error.validation.date.after": "Įrašykite datą nuo {date}",
"error.validation.date.before": "Įrašykite datą iki {date}", "error.validation.date.before": "Įrašykite datą iki {date}",
@@ -210,18 +169,14 @@
"error.validation.less": "Prašome įrašyti mažiau nei {max}", "error.validation.less": "Prašome įrašyti mažiau nei {max}",
"error.validation.match": "Reikšmė nesutampa su laukiamu šablonu", "error.validation.match": "Reikšmė nesutampa su laukiamu šablonu",
"error.validation.max": "Prašome įrašyti reikšmę lygią arba didesnę, nei {max}", "error.validation.max": "Prašome įrašyti reikšmę lygią arba didesnę, nei {max}",
"error.validation.maxlength": "error.validation.maxlength": "Prašome įrašyti trumpesnę reikšmę. (max. {max} characters)",
"Prašome įrašyti trumpesnę reikšmę. (max. {max} characters)",
"error.validation.maxwords": "Please enter no more than {max} word(s)", "error.validation.maxwords": "Please enter no more than {max} word(s)",
"error.validation.min": "Please enter a value equal to or greater than {min}", "error.validation.min": "Please enter a value equal to or greater than {min}",
"error.validation.minlength": "error.validation.minlength": "Prašome įrašyti ilgesnę reikšmę. (min. {min} characters)",
"Prašome įrašyti ilgesnę reikšmę. (min. {min} characters)",
"error.validation.minwords": "Prašome įrašyti bent {min} žodžius", "error.validation.minwords": "Prašome įrašyti bent {min} žodžius",
"error.validation.more": "Prašome įrašyti daugiau nei {min}", "error.validation.more": "Prašome įrašyti daugiau nei {min}",
"error.validation.notcontains": "error.validation.notcontains": "Prašome įrašyti reikšmę, kuri neturi \"{needle}\"",
"Prašome įrašyti reikšmę, kuri neturi \"{needle}\"", "error.validation.notin": "Prašome neįrašyti vieną iš šių: ({notIn})",
"error.validation.notin":
"Prašome neįrašyti vieną iš šių: ({notIn})",
"error.validation.option": "Prašome pasirinkti korektišką opciją", "error.validation.option": "Prašome pasirinkti korektišką opciją",
"error.validation.num": "Prašome įrašyti teisingą numerį", "error.validation.num": "Prašome įrašyti teisingą numerį",
"error.validation.required": "Prašome įrašyti ką nors", "error.validation.required": "Prašome įrašyti ką nors",
@@ -238,8 +193,7 @@
"field.structure.empty": "Dar nėra įrašų", "field.structure.empty": "Dar nėra įrašų",
"field.users.empty": "Dar nėra vartotojų", "field.users.empty": "Dar nėra vartotojų",
"file.delete.confirm": "file.delete.confirm": "Ar tikrai norite pašalinti <br><strong>{filename}</strong>?",
"Ar tikrai norite pašalinti <br><strong>{filename}</strong>?",
"files": "Failai", "files": "Failai",
"files.empty": "Įkelti", "files.empty": "Įkelti",
@@ -251,29 +205,22 @@
"installation": "Įdiegimas", "installation": "Įdiegimas",
"installation.completed": "Valdymo pultas įdiegtas", "installation.completed": "Valdymo pultas įdiegtas",
"installation.disabled": "Pagal nutylėjimą valdymo pulto įdiegimas viešuose serveriuose yra negalimas. Prašome įdiegti lokalioje aplinkoje arba įgalinkite jį su <code>panel.install</code> opcija.", "installation.disabled": "Pagal nutylėjimą valdymo pulto įdiegimas viešuose serveriuose yra negalimas. Prašome įdiegti lokalioje aplinkoje arba įgalinkite jį su <code>panel.install</code> opcija.",
"installation.issues.accounts": "installation.issues.accounts": "Katalogas <code>/site/accounts</code> neegzistuoja arba neturi įrašymo teisių",
"Katalogas <code>/site/accounts</code> neegzistuoja arba neturi įrašymo teisių", "installation.issues.content": "Katalogas <code>/content</code> neegzistuoja arba neturi įrašymo teisių",
"installation.issues.content":
"Katalogas <code>/content</code> neegzistuoja arba neturi įrašymo teisių",
"installation.issues.curl": "Plėtinys <code>CURL</code> yra privalomas", "installation.issues.curl": "Plėtinys <code>CURL</code> yra privalomas",
"installation.issues.headline": "Nepavyko įdiegti valdymo pulto", "installation.issues.headline": "Nepavyko įdiegti valdymo pulto",
"installation.issues.mbstring": "installation.issues.mbstring": "Plėtinys <code>MB String</code> yra privalomas",
"Plėtinys <code>MB String</code> yra privalomas", "installation.issues.media": "Katalogas <code>/media</code> neegzistuoja arba neturi įrašymo teisių",
"installation.issues.media":
"Katalogas <code>/media</code> neegzistuoja arba neturi įrašymo teisių",
"installation.issues.php": "Įsitikinkite, kad naudojama <code>PHP 7+</code>", "installation.issues.php": "Įsitikinkite, kad naudojama <code>PHP 7+</code>",
"installation.issues.server": "installation.issues.server": "Kirby reikalauja <code>Apache</code>, <code>Nginx</code> arba <code>Caddy</code>",
"Kirby reikalauja <code>Apache</code>, <code>Nginx</code> arba <code>Caddy</code>",
"installation.issues.sessions": "Katalogas <code>/site/sessions</code> neegzistuoja arba neturi įrašymo teisių", "installation.issues.sessions": "Katalogas <code>/site/sessions</code> neegzistuoja arba neturi įrašymo teisių",
"language": "Kalba", "language": "Kalba",
"language.code": "Kodas", "language.code": "Kodas",
"language.convert": "Padaryti pagrindinį", "language.convert": "Padaryti pagrindinį",
"language.convert.confirm": "language.convert.confirm": "<p>Do you really want to convert <strong>{name}</strong> to the default language? This cannot be undone.</p><p>If <strong>{name}</strong> has untranslated content, there will no longer be a valid fallback and parts of your site might be empty.</p>",
"<p>Do you really want to convert <strong>{name}</strong> to the default language? This cannot be undone.</p><p>If <strong>{name}</strong> has untranslated content, there will no longer be a valid fallback and parts of your site might be empty.</p>",
"language.create": "Pridėti naują kalbą", "language.create": "Pridėti naują kalbą",
"language.delete.confirm": "language.delete.confirm": "Ar tikrai norite pašalinti <strong>{name}</strong> kalbą, kartu su visais vertimais? Grąžinti nebus įmanoma! 🙀",
"Ar tikrai norite pašalinti <strong>{name}</strong> kalbą, kartu su visais vertimais? Grąžinti nebus įmanoma! 🙀",
"language.deleted": "Kalba pašalinta", "language.deleted": "Kalba pašalinta",
"language.direction": "Skaitymo kryptis", "language.direction": "Skaitymo kryptis",
"language.direction.ltr": "Iš kairės į dešinę", "language.direction.ltr": "Iš kairės į dešinę",
@@ -292,8 +239,7 @@
"license": "Licenzija", "license": "Licenzija",
"license.buy": "Pirkti licenziją", "license.buy": "Pirkti licenziją",
"license.register": "Registruoti", "license.register": "Registruoti",
"license.register.help": "license.register.help": "Licenzijos kodą gavote el. paštu po apmokėjimo. Prašome įterpti čia, kad sistema būtų užregistruota.",
"Licenzijos kodą gavote el. paštu po apmokėjimo. Prašome įterpti čia, kad sistema būtų užregistruota.",
"license.register.label": "Prašome įrašyti jūsų licenzijos kodą", "license.register.label": "Prašome įrašyti jūsų licenzijos kodą",
"license.register.success": "Ačiū, kad palaikote Kirby", "license.register.success": "Ačiū, kad palaikote Kirby",
"license.unregistered": "Tai neregistruota Kirby demo versija", "license.unregistered": "Tai neregistruota Kirby demo versija",
@@ -354,10 +300,8 @@
"page.changeStatus.position": "Pasirinkite poziciją", "page.changeStatus.position": "Pasirinkite poziciją",
"page.changeStatus.select": "Pasirinkite statusą", "page.changeStatus.select": "Pasirinkite statusą",
"page.changeTemplate": "Pakeisti šabloną", "page.changeTemplate": "Pakeisti šabloną",
"page.delete.confirm": "page.delete.confirm": "🙀 Ar tikrai norite pašalinti puslapį <strong>{title}</strong>?",
"🙀 Ar tikrai norite pašalinti puslapį <strong>{title}</strong>?", "page.delete.confirm.subpages": "<strong>Šis puslapis turi sub-puslapių</strong>. <br>Visi sub-puslapiai taip pat bus pašalinti.",
"page.delete.confirm.subpages":
"<strong>Šis puslapis turi sub-puslapių</strong>. <br>Visi sub-puslapiai taip pat bus pašalinti.",
"page.delete.confirm.title": "Įrašykite puslapio pavadinimą tam, kad patvirtinti", "page.delete.confirm.title": "Įrašykite puslapio pavadinimą tam, kad patvirtinti",
"page.draft.create": "Sukurti juodraštį", "page.draft.create": "Sukurti juodraštį",
"page.duplicate.appendix": "Kopijuoti", "page.duplicate.appendix": "Kopijuoti",
@@ -365,8 +309,7 @@
"page.duplicate.pages": "Kopijuoti puslapius", "page.duplicate.pages": "Kopijuoti puslapius",
"page.status": "Statusas", "page.status": "Statusas",
"page.status.draft": "Juodraštis", "page.status.draft": "Juodraštis",
"page.status.draft.description": "page.status.draft.description": "Šis puslapis yra juodraščio režime ir prieinamas tik redaktoriams arba per slaptą nuorodą",
"Puslapis nematomas viešai, bet matomas tik prisijungusiems administratoriams",
"page.status.listed": "Paskelbtas", "page.status.listed": "Paskelbtas",
"page.status.listed.description": "Matomas viešai visiems", "page.status.listed.description": "Matomas viešai visiems",
"page.status.unlisted": "Nerodomas", "page.status.unlisted": "Nerodomas",
@@ -388,6 +331,7 @@
"replace": "Apkeisti", "replace": "Apkeisti",
"retry": "Bandyti dar", "retry": "Bandyti dar",
"revert": "Grąžinti", "revert": "Grąžinti",
"revert.confirm": "Ar tikrai norite atšaukti <strong>visus neišsaugotus pakeitimus</strong>?",
"role": "Rolė", "role": "Rolė",
"role.admin.description": "Admin turi visas teises", "role.admin.description": "Admin turi visas teises",
@@ -451,8 +395,7 @@
"url.placeholder": "https://example.com", "url.placeholder": "https://example.com",
"user": "Vartotojas", "user": "Vartotojas",
"user.blueprint": "user.blueprint": "Galite nustatyti papildomas sekcijas ir formos laukelius šiai vartotojo rolei faile <strong>/site/blueprints/users/{role}.yml</strong>",
"Galite nustatyti papildomas sekcijas ir formos laukelius šiai vartotojo rolei faile <strong>/site/blueprints/users/{role}.yml</strong>",
"user.changeEmail": "Keisti el. paštą", "user.changeEmail": "Keisti el. paštą",
"user.changeLanguage": "Keisti kalbą", "user.changeLanguage": "Keisti kalbą",
"user.changeName": "Pervadinti vartotoją", "user.changeName": "Pervadinti vartotoją",
@@ -463,8 +406,7 @@
"user.changeRole.select": "Pasirinkti naują rolę", "user.changeRole.select": "Pasirinkti naują rolę",
"user.create": "Pridėti naują vartotoją", "user.create": "Pridėti naują vartotoją",
"user.delete": "Pašalinti šį vartotoją", "user.delete": "Pašalinti šį vartotoją",
"user.delete.confirm": "user.delete.confirm": "Ar tikrai norite pašalinti vartotoją <br><strong>{email}</strong>?",
"Ar tikrai norite pašalinti vartotoją <br><strong>{email}</strong>?",
"users": "Vartotojai", "users": "Vartotojai",

View File

@@ -42,10 +42,8 @@
"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": "Profil bildet kunne ikke bli slette",
"error.avatar.dimensions.invalid": "error.avatar.dimensions.invalid": "Vennligst hold profilbildets bredde og høyde under 3000 piksler",
"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",
@@ -54,22 +52,17 @@
"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": "The name must not be empty",
"error.file.changeName.permission": "error.file.changeName.permission": "Du er ikke tillatt å endre navnet til \"{filename}\"",
"Du er ikke tillatt å 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": "error.file.extension.forbidden": "Ugyldig filtype",
"Ugyldig filtype", "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": "The height of the image must not exceed {height} pixels",
"error.file.maxsize": "The file is too large", "error.file.maxsize": "The file is too large",
"error.file.maxwidth": "The width of the image must not exceed {width} pixels", "error.file.maxwidth": "The width of the image must not exceed {width} pixels",
"error.file.mime.differs": "error.file.mime.differs": "Den opplastede filen må være av samme MIME-type \"{mime}\"",
"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": "Invalid mime type: {mime}",
"error.file.mime.missing": "error.file.mime.missing": "Mediatypen for \"{filename}\" kan ikke gjenkjennes",
"Mediatypen for \"{filename}\" kan ikke gjenkjennes",
"error.file.minheight": "The height of the image must be at least {height} pixels", "error.file.minheight": "The height of the image must be at least {height} pixels",
"error.file.minsize": "The file is too small", "error.file.minsize": "The file is too small",
"error.file.minwidth": "The width of the image must be at least {width} pixels", "error.file.minwidth": "The width of the image must be at least {width} pixels",
@@ -90,111 +83,77 @@
"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": "The license could not be verified",
"error.page.changeSlug.permission": "error.page.changeSlug.permission": "Du kan ikke endre URLen for denne siden",
"Du kan ikke endre URLen for denne siden", "error.page.changeStatus.incomplete": "Siden har feil og kan ikke publiseres",
"error.page.changeStatus.incomplete": "error.page.changeStatus.permission": "Sidens status kan ikke endres",
"Siden har feil og kan ikke publiseres", "error.page.changeStatus.toDraft.invalid": "Siden \"{slug}\" kan ikke konverteres til et utkast",
"error.page.changeStatus.permission": "error.page.changeTemplate.invalid": "Malen for siden \"{slug}\" kan ikke endres",
"Sidens status kan ikke endres", "error.page.changeTemplate.permission": "Du har ikke tillatelse til å endre malen for \"{slug}\"",
"error.page.changeStatus.toDraft.invalid":
"Siden \"{slug}\" kan ikke konverteres til et utkast",
"error.page.changeTemplate.invalid":
"Malen for siden \"{slug}\" kan ikke endres",
"error.page.changeTemplate.permission":
"Du har ikke tillatelse til å endre malen for \"{slug}\"",
"error.page.changeTitle.empty": "Tittelen kan ikke være tom", "error.page.changeTitle.empty": "Tittelen kan ikke være tom",
"error.page.changeTitle.permission": "error.page.changeTitle.permission": "Du har ikke tillatelse til å endre tittelen for \"{slug}\"",
"Du har ikke tillatelse til å endre tittelen for \"{slug}\"",
"error.page.create.permission": "Du har ikke tillatelse til å opprette \"{slug}\"", "error.page.create.permission": "Du har ikke tillatelse til å opprette \"{slug}\"",
"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": "error.page.delete.hasChildren": "Siden har undersider og kan derfor ikke slettes",
"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 tilgang til å slette \"{slug}\"",
"error.page.draft.duplicate": "error.page.draft.duplicate": "Et sideutkast med URL-tillegget \"{slug}\" eksisterer allerede",
"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": "You are not allowed to duplicate \"{slug}\"",
"error.page.notFound": "Siden \"{slug}\" ble ikke funnet", "error.page.notFound": "Siden \"{slug}\" ble ikke funnet",
"error.page.num.invalid": "error.page.num.invalid": "Vennligst skriv inn et gyldig sorteringsnummer. Tallet må ikke være negativt.",
"Vennligst skriv inn et gyldig sorteringsnummer. Tallet må ikke være negativt.",
"error.page.slug.invalid": "Vennligst skriv inn en gyldig URL-prefiks", "error.page.slug.invalid": "Vennligst skriv inn en gyldig URL-prefiks",
"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 tilgang til å oppdatere \"{slug}\"",
"error.section.files.max.plural": "error.section.files.max.plural": "Det er ikke mulig å legge til mer enn {max} filer i seksjonen \"{section}\"",
"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": "error.section.files.min.plural": "The \"{section}\" section requires at least {min} files",
"Det er ikke mulig å legge til mer enn én fil i seksjonen \"{section}\"", "error.section.files.min.singular": "The \"{section}\" section requires at least one file",
"error.section.files.min.plural":
"The \"{section}\" section requires at least {min} files",
"error.section.files.min.singular":
"The \"{section}\" section requires at least one file",
"error.section.pages.max.plural": "error.section.pages.max.plural": "Det er ikke mulig å legge til mer enn {max} sider i \"{section}\" seksjonen",
"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": "error.section.pages.min.plural": "The \"{section}\" section requires at least {min} pages",
"Det er ikke mulig å legge til mer enn én side i \"{section}\" seksjonen", "error.section.pages.min.singular": "The \"{section}\" section requires at least one page",
"error.section.pages.min.plural":
"The \"{section}\" section requires at least {min} pages",
"error.section.pages.min.singular":
"The \"{section}\" section requires at least one page",
"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",
"error.site.changeTitle.empty": "Tittelen kan ikke være tom", "error.site.changeTitle.empty": "Tittelen kan ikke være tom",
"error.site.changeTitle.permission": "error.site.changeTitle.permission": "Du har ikke tillatelse til å endre tittel på siden",
"Du har ikke tillatelse til å endre tittel på siden",
"error.site.update.permission": "Du har ikke tillatelse til å oppdatere denne siden", "error.site.update.permission": "Du har ikke tillatelse til å oppdatere denne siden",
"error.template.default.notFound": "Standardmalen eksisterer ikke", "error.template.default.notFound": "Standardmalen eksisterer ikke",
"error.user.changeEmail.permission": "error.user.changeEmail.permission": "Du har ikke tillatelse til å endre e-post for brukeren \"{name}\"",
"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": "error.user.changeName.permission": "Du har ikke tillatelse til å endre navn for brukeren \"{name}\"",
"Du har ikke tillatelse til å endre språk for brukeren \"{name}\"", "error.user.changePassword.permission": "Du har ikke tillatelse til å endre passord for brukeren \"{name}\"",
"error.user.changeName.permission": "error.user.changeRole.lastAdmin": "Rollen for den siste administratoren kan ikke endres",
"Du har ikke tillatelse til å endre navn for brukeren \"{name}\"", "error.user.changeRole.permission": "Du har ikke tillatelse til å endre rollen for brukeren \"{name}\"",
"error.user.changePassword.permission": "error.user.changeRole.toAdmin": "You are not allowed to promote someone to the admin role",
"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.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.create.permission": "Du har ikke tilgang til å opprette denne brukeren", "error.user.create.permission": "Du har ikke tilgang 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",
"error.user.delete.permission": "error.user.delete.permission": "Du er ikke tillat \u00e5 slette denne brukeren",
"Du er ikke tillat \u00e5 slette denne brukeren", "error.user.duplicate": "En bruker med e-postadresse \"{email}\" eksisterer allerede",
"error.user.duplicate":
"En bruker med e-postadresse \"{email}\" eksisterer allerede",
"error.user.email.invalid": "Vennligst skriv inn en gyldig e-postadresse", "error.user.email.invalid": "Vennligst skriv inn en gyldig e-postadresse",
"error.user.language.invalid": "Vennligst skriv inn et gyldig språk", "error.user.language.invalid": "Vennligst skriv inn et gyldig språk",
"error.user.notFound": "Brukeren kunne ikke bli funnet", "error.user.notFound": "Brukeren kunne ikke bli funnet",
"error.user.password.invalid": "error.user.password.invalid": "Vennligst skriv inn et gyldig passord. Passordet må minst være 8 tegn langt.",
"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.role.invalid": "Vennligst skriv inn en gyldig rolle", "error.user.role.invalid": "Vennligst skriv inn en gyldig rolle",
"error.user.update.permission": "error.user.update.permission": "Du har ikke tillatelse til å oppdatere brukeren \"{name}\"",
"Du har ikke tillatelse til å oppdatere brukeren \"{name}\"",
"error.validation.accepted": "Vennligst bekreft", "error.validation.accepted": "Vennligst bekreft",
"error.validation.alpha": "Vennligst skriv kun tegn mellom a-z", "error.validation.alpha": "Vennligst skriv kun tegn mellom a-z",
"error.validation.alphanum": "error.validation.alphanum": "Vennligst skriv kun tegn mellom a-z eller tall mellom 0-9",
"Vennligst skriv kun tegn mellom a-z eller tall mellom 0-9", "error.validation.between": "Vennligst angi en verdi mellom \"{min}\" og \"{max}\"",
"error.validation.between":
"Vennligst angi en verdi mellom \"{min}\" og \"{max}\"",
"error.validation.boolean": "Vennligst bekreft eller avslå", "error.validation.boolean": "Vennligst bekreft eller avslå",
"error.validation.contains": "error.validation.contains": "Vennligst skriv inn en verdi som inneholder \"{needle}\"",
"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": "Please enter a date after {date}",
"error.validation.date.before": "Please enter a date before {date}", "error.validation.date.before": "Please enter a date before {date}",
@@ -210,18 +169,14 @@
"error.validation.less": "Vennligst angi en verdi lavere enn {max}", "error.validation.less": "Vennligst angi en verdi lavere enn {max}",
"error.validation.match": "Verdien samsvarer ikke med det forventede mønsteret", "error.validation.match": "Verdien samsvarer ikke med det forventede mønsteret",
"error.validation.max": "Vennligst angi en verdi lik eller lavere enn {max}", "error.validation.max": "Vennligst angi en verdi lik eller lavere enn {max}",
"error.validation.maxlength": "error.validation.maxlength": "Vennligst angi en kortere verdi. (maks. {max} tegn)",
"Vennligst angi en kortere verdi. (maks. {max} tegn)",
"error.validation.maxwords": "Vennligst ikke skriv inn mer enn {max} ord", "error.validation.maxwords": "Vennligst ikke skriv inn mer enn {max} ord",
"error.validation.min": "Vennligst angi en verdi lik eller større enn {min}", "error.validation.min": "Vennligst angi en verdi lik eller større enn {min}",
"error.validation.minlength": "error.validation.minlength": "Vennligst angi en lengre verdi. (minimum. {min} tegn)",
"Vennligst angi en lengre verdi. (minimum. {min} tegn)",
"error.validation.minwords": "Vennligst skriv inn minst {min} ord", "error.validation.minwords": "Vennligst skriv inn minst {min} ord",
"error.validation.more": "Vennligst angi en verdi større enn {min}", "error.validation.more": "Vennligst angi en verdi større enn {min}",
"error.validation.notcontains": "error.validation.notcontains": "Vennligst angi en verdi som ikke inneholder \"{needle}\"",
"Vennligst angi en verdi som ikke inneholder \"{needle}\"", "error.validation.notin": "Vennligst ikke angi noen av følgende:({notIn})",
"error.validation.notin":
"Vennligst ikke angi noen av følgende:({notIn})",
"error.validation.option": "Vennligst velg et gyldig alternativ", "error.validation.option": "Vennligst velg et gyldig alternativ",
"error.validation.num": "Vennligst angi et gyldig nummer", "error.validation.num": "Vennligst angi et gyldig nummer",
"error.validation.required": "Vennligst skriv inn noe", "error.validation.required": "Vennligst skriv inn noe",
@@ -238,8 +193,7 @@
"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.delete.confirm": "file.delete.confirm": "Vil du virkelig slette denne filen?",
"Vil du virkelig slette denne filen?",
"files": "Filer", "files": "Filer",
"files.empty": "Ingen filer ennå", "files.empty": "Ingen filer ennå",
@@ -251,29 +205,22 @@
"installation": "Installasjon", "installation": "Installasjon",
"installation.completed": "Panelet har blitt installert", "installation.completed": "Panelet har blitt installert",
"installation.disabled": "Installasjonsprogrammet for Panelet er deaktivert på offentlige servere som standard. Vennligst kjør installasjonsprogrammet på en lokal maskin eller aktiver den med <code>panel.install</code> innstillingen.", "installation.disabled": "Installasjonsprogrammet for Panelet er deaktivert på offentlige servere som standard. Vennligst kjør installasjonsprogrammet på en lokal maskin eller aktiver den med <code>panel.install</code> innstillingen.",
"installation.issues.accounts": "installation.issues.accounts": "\/site\/accounts er ikke skrivbar",
"\/site\/accounts er ikke skrivbar", "installation.issues.content": "Mappen content og alt av innhold m\u00e5 v\u00e6re skrivbar.",
"installation.issues.content":
"Mappen content og alt av innhold m\u00e5 v\u00e6re skrivbar.",
"installation.issues.curl": "Utvidelsen <code>CURL</code> er nødvendig", "installation.issues.curl": "Utvidelsen <code>CURL</code> er nødvendig",
"installation.issues.headline": "Panelet kan ikke installeres", "installation.issues.headline": "Panelet kan ikke installeres",
"installation.issues.mbstring": "installation.issues.mbstring": "Utvidelsen <code>MB String</code> er nødvendig",
"Utvidelsen <code>MB String</code> er nødvendig", "installation.issues.media": "Mappen <code>/media</code> eksisterer ikke eller er ikke skrivbar",
"installation.issues.media":
"Mappen <code>/media</code> eksisterer ikke eller er ikke skrivbar",
"installation.issues.php": "Pass på at du bruker <code>PHP 7+</code>", "installation.issues.php": "Pass på at du bruker <code>PHP 7+</code>",
"installation.issues.server": "installation.issues.server": "Kirby krever <code>Apache</code>, <code>Nginx</code> eller <code>Caddy</code>",
"Kirby krever <code>Apache</code>, <code>Nginx</code> eller <code>Caddy</code>",
"installation.issues.sessions": "Mappen <code>/site/sessions</code> eksisterer ikke eller er ikke skrivbar", "installation.issues.sessions": "Mappen <code>/site/sessions</code> eksisterer ikke eller er ikke skrivbar",
"language": "Spr\u00e5k", "language": "Spr\u00e5k",
"language.code": "Kode", "language.code": "Kode",
"language.convert": "Gjør til standard", "language.convert": "Gjør til standard",
"language.convert.confirm": "language.convert.confirm": "<p>Vil du virkelig konvertere <strong>{name}</strong> til standardspråk? Dette kan ikke angres. </p><p>Dersom <strong>{name}</strong> har innhold som ikke er oversatt, vil nettstedet mangle innhold å falle tilbake på. Dette kan resultere i at deler av nettstedet fremstår som tomt.</p>",
"<p>Vil du virkelig konvertere <strong>{name}</strong> til standardspråk? Dette kan ikke angres. </p><p>Dersom <strong>{name}</strong> har innhold som ikke er oversatt, vil nettstedet mangle innhold å falle tilbake på. Dette kan resultere i at deler av nettstedet fremstår som tomt.</p>",
"language.create": "Legg til språk", "language.create": "Legg til språk",
"language.delete.confirm": "language.delete.confirm": "Vil du virkelig slette språket <strong>{name}</strong> inkludert alle oversettelser? Dette kan ikke angres!",
"Vil du virkelig slette språket <strong>{name}</strong> inkludert alle oversettelser? Dette kan ikke angres!",
"language.deleted": "Språket har blitt slettet", "language.deleted": "Språket har blitt slettet",
"language.direction": "Leseretning", "language.direction": "Leseretning",
"language.direction.ltr": "Venstre til høyre", "language.direction.ltr": "Venstre til høyre",
@@ -292,8 +239,7 @@
"license": "Kirby lisens", "license": "Kirby lisens",
"license.buy": "Kjøp lisens", "license.buy": "Kjøp lisens",
"license.register": "Registrer", "license.register": "Registrer",
"license.register.help": "license.register.help": "Du skal ha mottatt din lisenskode for kjøpet via e-post. Vennligst kopier og lim inn denne for å registrere deg.",
"Du skal ha mottatt din lisenskode for kjøpet via e-post. Vennligst kopier og lim inn denne for å registrere deg.",
"license.register.label": "Vennligst skriv inn din lisenskode", "license.register.label": "Vennligst skriv inn din lisenskode",
"license.register.success": "Takk for at du støtter Kirby", "license.register.success": "Takk for at du støtter Kirby",
"license.unregistered": "Dette er en uregistrert demo av Kirby", "license.unregistered": "Dette er en uregistrert demo av Kirby",
@@ -354,10 +300,8 @@
"page.changeStatus.position": "Vennligst velg en posisjon", "page.changeStatus.position": "Vennligst velg en posisjon",
"page.changeStatus.select": "Velg ny status", "page.changeStatus.select": "Velg ny status",
"page.changeTemplate": "Endre mal", "page.changeTemplate": "Endre mal",
"page.delete.confirm": "page.delete.confirm": "Vil du virkelig slette denne siden?",
"Vil du virkelig slette denne siden?", "page.delete.confirm.subpages": "<strong>Denne siden har undersider</strong>. <br>Alle undersider vil også bli slettet.",
"page.delete.confirm.subpages":
"<strong>Denne siden har undersider</strong>. <br>Alle undersider vil også bli slettet.",
"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",
@@ -365,8 +309,7 @@
"page.duplicate.pages": "Copy pages", "page.duplicate.pages": "Copy pages",
"page.status": "Status", "page.status": "Status",
"page.status.draft": "Utkast", "page.status.draft": "Utkast",
"page.status.draft.description": "page.status.draft.description": "The page is in draft mode and only visible for logged in editors or via secret link",
"Siden er i utkastmodus og bare synlig for innloggede redaktører",
"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",
@@ -388,6 +331,7 @@
"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>?",
"role": "Rolle", "role": "Rolle",
"role.admin.description": "The admin has all rights", "role.admin.description": "The admin has all rights",
@@ -451,8 +395,7 @@
"url.placeholder": "https://example.com", "url.placeholder": "https://example.com",
"user": "Bruker", "user": "Bruker",
"user.blueprint": "user.blueprint": "Du kan definere flere seksjoner og skjemafelter for denne brukerrollen i <strong>/site/blueprints/users/{role}.yml</strong>",
"Du kan definere flere seksjoner og skjemafelter for denne brukerrollen i <strong>/site/blueprints/users/{role}.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",
@@ -463,8 +406,7 @@
"user.changeRole.select": "Velg en ny rolle", "user.changeRole.select": "Velg en ny rolle",
"user.create": "Legg til ny bruker", "user.create": "Legg til ny bruker",
"user.delete": "Slett denne brukeren", "user.delete": "Slett denne brukeren",
"user.delete.confirm": "user.delete.confirm": "Vil du virkelig slette denne konten?",
"Vil du virkelig slette denne konten?",
"users": "Brukere", "users": "Brukere",

View File

@@ -42,10 +42,8 @@
"error.avatar.create.fail": "De avatar kon niet worden geupload", "error.avatar.create.fail": "De avatar kon niet worden geupload",
"error.avatar.delete.fail": "De avatar kan niet worden verwijderd", "error.avatar.delete.fail": "De avatar kan niet worden verwijderd",
"error.avatar.dimensions.invalid": "error.avatar.dimensions.invalid": "Houd de breedte en hoogte van de avatar onder 3000 pixels",
"Houd de breedte en hoogte van de avatar onder 3000 pixels", "error.avatar.mime.forbidden": "De avatar moet een JPEG of PNG bestand zijn",
"error.avatar.mime.forbidden":
"De avatar moet een JPEG of PNG bestand zijn",
"error.blueprint.notFound": "De blueprint \"{name}\" kon niet geladen worden", "error.blueprint.notFound": "De blueprint \"{name}\" kon niet geladen worden",
@@ -54,22 +52,17 @@
"error.field.converter.invalid": "Ongeldige converter \"{converter}\"", "error.field.converter.invalid": "Ongeldige converter \"{converter}\"",
"error.file.changeName.empty": "De naam mag niet leeg zijn", "error.file.changeName.empty": "De naam mag niet leeg zijn",
"error.file.changeName.permission": "error.file.changeName.permission": "Je hebt geen rechten om de naam te wijzigen van \"{filename}\"",
"Je hebt geen rechten om de naam te wijzigen van \"{filename}\"",
"error.file.duplicate": "Er bestaat al een bestand met de naam \"{filename}\"", "error.file.duplicate": "Er bestaat al een bestand met de naam \"{filename}\"",
"error.file.extension.forbidden": "error.file.extension.forbidden": "Bestandsextensie \"{extension}\" is niet toegestaan",
"Bestandsextensie \"{extension}\" is niet toegestaan", "error.file.extension.missing": "Je kunt geen bestanden uploaden zonder bestandsextensie",
"error.file.extension.missing":
"Je kunt geen bestanden uploaden zonder bestandsextensie",
"error.file.maxheight": "The height of the image must not exceed {height} pixels", "error.file.maxheight": "The height of the image must not exceed {height} pixels",
"error.file.maxsize": "The file is too large", "error.file.maxsize": "The file is too large",
"error.file.maxwidth": "The width of the image must not exceed {width} pixels", "error.file.maxwidth": "The width of the image must not exceed {width} pixels",
"error.file.mime.differs": "error.file.mime.differs": "Het geüploade bestand moet van hetzelfde mime-type zijn: \"{mime}\"",
"Het geüploade bestand moet van hetzelfde mime-type zijn: \"{mime}\"",
"error.file.mime.forbidden": "Het type \"{mime}\" is niet toegestaan", "error.file.mime.forbidden": "Het type \"{mime}\" is niet toegestaan",
"error.file.mime.invalid": "Invalid mime type: {mime}", "error.file.mime.invalid": "Invalid mime type: {mime}",
"error.file.mime.missing": "error.file.mime.missing": "Het mediatype voor \"{filename}\" kan niet worden gedecteerd",
"Het mediatype voor \"{filename}\" kan niet worden gedecteerd",
"error.file.minheight": "The height of the image must be at least {height} pixels", "error.file.minheight": "The height of the image must be at least {height} pixels",
"error.file.minsize": "The file is too small", "error.file.minsize": "The file is too small",
"error.file.minwidth": "The width of the image must be at least {width} pixels", "error.file.minwidth": "The width of the image must be at least {width} pixels",
@@ -90,111 +83,77 @@
"error.license.email": "Gelieve een geldig emailadres in te voeren", "error.license.email": "Gelieve een geldig emailadres in te voeren",
"error.license.verification": "De licentie kon niet worden geverifieerd. ", "error.license.verification": "De licentie kon niet worden geverifieerd. ",
"error.page.changeSlug.permission": "error.page.changeSlug.permission": "Je kunt de URL van deze pagina niet wijzigen",
"Je kunt de URL van deze pagina niet wijzigen", "error.page.changeStatus.incomplete": "Deze pagina bevat fouten en kan niet worden gepubliceerd",
"error.page.changeStatus.incomplete": "error.page.changeStatus.permission": "De status van deze pagina kan niet worden gewijzigd",
"Deze pagina bevat fouten en kan niet worden gepubliceerd", "error.page.changeStatus.toDraft.invalid": "De pagina \"{slug}\" kan niet worden aangepast naar 'concept'",
"error.page.changeStatus.permission": "error.page.changeTemplate.invalid": "De template van deze pagina \"{slug}\" kan niet worden gewijzigd",
"De status van deze pagina kan niet worden gewijzigd", "error.page.changeTemplate.permission": "Je hebt geen rechten om het template te wijzigen van \"{slug}\"",
"error.page.changeStatus.toDraft.invalid":
"De pagina \"{slug}\" kan niet worden aangepast naar 'concept'",
"error.page.changeTemplate.invalid":
"De template van deze pagina \"{slug}\" kan niet worden gewijzigd",
"error.page.changeTemplate.permission":
"Je hebt geen rechten om het template te wijzigen van \"{slug}\"",
"error.page.changeTitle.empty": "De titel mag niet leeg zijn", "error.page.changeTitle.empty": "De titel mag niet leeg zijn",
"error.page.changeTitle.permission": "error.page.changeTitle.permission": "Je hebt geen rechten om de titel te wijzigen van \"{slug}\"",
"Je hebt geen rechten om de titel te wijzigen van \"{slug}\"",
"error.page.create.permission": "Je hebt geen rechten om \"{slug}\" aan te maken", "error.page.create.permission": "Je hebt geen rechten om \"{slug}\" aan te maken",
"error.page.delete": "De pagina \"{slug}\" kan niet worden verwijderd", "error.page.delete": "De pagina \"{slug}\" kan niet worden verwijderd",
"error.page.delete.confirm": "Voer de paginatitel in om te bevestigen", "error.page.delete.confirm": "Voer de paginatitel in om te bevestigen",
"error.page.delete.hasChildren": "error.page.delete.hasChildren": "Deze pagina heeft subpagina's en kan niet worden verwijderd",
"Deze pagina heeft subpagina's en kan niet worden verwijderd",
"error.page.delete.permission": "Je hebt geen rechten om \"{slug}\" te verwijderen", "error.page.delete.permission": "Je hebt geen rechten om \"{slug}\" te verwijderen",
"error.page.draft.duplicate": "error.page.draft.duplicate": "Er bestaat al een conceptpagina met de URL-appendix \"{slug}\"",
"Er bestaat al een conceptpagina met de URL-appendix \"{slug}\"", "error.page.duplicate": "Er bestaat al een pagina met de URL-appendix \"{slug}\"",
"error.page.duplicate":
"Er bestaat al een pagina met de URL-appendix \"{slug}\"",
"error.page.duplicate.permission": "Je bent niet gemachtigd om \"{slug}\" te dupliceren", "error.page.duplicate.permission": "Je bent niet gemachtigd om \"{slug}\" te dupliceren",
"error.page.notFound": "De pagina \"{slug}\" kan niet worden gevonden", "error.page.notFound": "De pagina \"{slug}\" kan niet worden gevonden",
"error.page.num.invalid": "error.page.num.invalid": "Vul een geldig sorteer-cijfer in. Het cijfer mag niet negatief zijn",
"Vul een geldig sorteer-cijfer in. Het cijfer mag niet negatief zijn",
"error.page.slug.invalid": "Vul een geldige URL-prefix in", "error.page.slug.invalid": "Vul een geldige URL-prefix in",
"error.page.sort.permission": "De pagina \"{slug}\" kan niet worden gesorteerd", "error.page.sort.permission": "De pagina \"{slug}\" kan niet worden gesorteerd",
"error.page.status.invalid": "Zorg voor een geldige paginastatus", "error.page.status.invalid": "Zorg voor een geldige paginastatus",
"error.page.undefined": "De pagina kan niet worden gevonden", "error.page.undefined": "De pagina kan niet worden gevonden",
"error.page.update.permission": "Je hebt geen rechten om \"{slug}\" te updaten", "error.page.update.permission": "Je hebt geen rechten om \"{slug}\" te updaten",
"error.section.files.max.plural": "error.section.files.max.plural": "Voeg niet meer dan {max} bestanden toe aan de zone \"{section}\"",
"Voeg niet meer dan {max} bestanden toe aan de zone \"{section}\"", "error.section.files.max.singular": "Je kunt niet meer dan 1 bestand toevoegen aan de zone \"{section}\"",
"error.section.files.max.singular": "error.section.files.min.plural": "De \"{section}\" sectie moet minimaal {min} bestanden bevatten.",
"Je kunt niet meer dan 1 bestand toevoegen aan de zone \"{section}\"", "error.section.files.min.singular": "De \"{section}\" sectie moet minimaal 1 bestand bevatten.",
"error.section.files.min.plural":
"De \"{section}\" sectie moet minimaal {min} bestanden bevatten.",
"error.section.files.min.singular":
"De \"{section}\" sectie moet minimaal 1 bestand bevatten.",
"error.section.pages.max.plural": "error.section.pages.max.plural": "Je kunt niet meer dan {max} pagina's toevoegen aan de zone \"{section}\"",
"Je kunt niet meer dan {max} pagina's toevoegen aan de zone \"{section}\"", "error.section.pages.max.singular": "Je kunt niet meer dan 1 pagina toevoegen aan de zone \"{section}\"",
"error.section.pages.max.singular": "error.section.pages.min.plural": "De \"{section}\" sectie moet minimaal {min} pagina's bevatten.",
"Je kunt niet meer dan 1 pagina toevoegen aan de zone \"{section}\"", "error.section.pages.min.singular": "De \"{section}\" sectie moet minimaal 1 pagina bevatten.",
"error.section.pages.min.plural":
"De \"{section}\" sectie moet minimaal {min} pagina's bevatten.",
"error.section.pages.min.singular":
"De \"{section}\" sectie moet minimaal 1 pagina bevatten.",
"error.section.notLoaded": "De zone \"{name}\" kan niet worden geladen", "error.section.notLoaded": "De zone \"{name}\" kan niet worden geladen",
"error.section.type.invalid": "Zone-type \"{type}\" is niet geldig", "error.section.type.invalid": "Zone-type \"{type}\" is niet geldig",
"error.site.changeTitle.empty": "De titel mag niet leeg zijn", "error.site.changeTitle.empty": "De titel mag niet leeg zijn",
"error.site.changeTitle.permission": "error.site.changeTitle.permission": "Je hebt geen rechten om de titel van de site te wijzigen",
"Je hebt geen rechten om de titel van de site te wijzigen",
"error.site.update.permission": "Je hebt geen rechten om de site te updaten", "error.site.update.permission": "Je hebt geen rechten om de site te updaten",
"error.template.default.notFound": "Het standaard template bestaat niet", "error.template.default.notFound": "Het standaard template bestaat niet",
"error.user.changeEmail.permission": "error.user.changeEmail.permission": "Je hebt geen rechten om het e-mailadres van gebruiker \"{name}\" te wijzigen",
"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": "error.user.changeName.permission": "Je hebt geen rechten om de naam van gebruiker \"{name}\" te wijzigen",
"Je hebt geen rechten om de taal voor gebruiker \"{name}\" te wijzigen", "error.user.changePassword.permission": "Je hebt geen rechten om het wachtwoord van gebruiker \"{name}\" te wijzigen",
"error.user.changeName.permission": "error.user.changeRole.lastAdmin": "De rol van de laatste beheerder kan niet worden gewijzigd",
"Je hebt geen rechten om de naam van gebruiker \"{name}\" te wijzigen", "error.user.changeRole.permission": "Je hebt geen rechten om de rol van gebruiker \"{name}\" te wijzigen",
"error.user.changePassword.permission": "error.user.changeRole.toAdmin": "Je hebt geen rechten om de rol van iemand te wijzigen naar admin",
"Je hebt geen rechten om het wachtwoord van gebruiker \"{name}\" te wijzigen",
"error.user.changeRole.lastAdmin":
"De rol van de laatste beheerder kan niet worden gewijzigd",
"error.user.changeRole.permission":
"Je hebt geen rechten om de rol van gebruiker \"{name}\" te wijzigen",
"error.user.changeRole.toAdmin":
"Je hebt geen rechten om de rol van iemand te wijzigen naar admin",
"error.user.create.permission": "Je hebt geen rechten om deze gebruiker aan te maken", "error.user.create.permission": "Je hebt geen rechten om deze gebruiker aan te maken",
"error.user.delete": "De gebruiker \"{name}\" kan niet worden verwijderd", "error.user.delete": "De gebruiker \"{name}\" kan niet worden verwijderd",
"error.user.delete.lastAdmin": "Je kan de laatste admin niet verwijderen", "error.user.delete.lastAdmin": "Je kan de laatste admin niet verwijderen",
"error.user.delete.lastUser": "De laatste gebruiker kan niet worden verwijderd", "error.user.delete.lastUser": "De laatste gebruiker kan niet worden verwijderd",
"error.user.delete.permission": "error.user.delete.permission": "Je hebt geen rechten om gebruiker \"{name}\" te verwijderen",
"Je hebt geen rechten om gebruiker \"{name}\" te verwijderen", "error.user.duplicate": "Er bestaat al een gebruiker met e-mailadres \"{email}\"",
"error.user.duplicate":
"Er bestaat al een gebruiker met e-mailadres \"{email}\"",
"error.user.email.invalid": "Gelieve een geldig emailadres in te voeren", "error.user.email.invalid": "Gelieve een geldig emailadres in te voeren",
"error.user.language.invalid": "Gelieve een geldige taal in te voeren", "error.user.language.invalid": "Gelieve een geldige taal in te voeren",
"error.user.notFound": "De gebruiker \"{name}\" kan niet worden gevonden", "error.user.notFound": "De gebruiker \"{name}\" kan niet worden gevonden",
"error.user.password.invalid": "error.user.password.invalid": "Gelieve een geldig wachtwoord in te voeren. Wachtwoorden moeten minstens 8 karakters lang zijn.",
"Gelieve een geldig wachtwoord in te voeren. Wachtwoorden moeten minstens 8 karakters lang zijn.",
"error.user.password.notSame": "De wachtwoorden komen niet overeen", "error.user.password.notSame": "De wachtwoorden komen niet overeen",
"error.user.password.undefined": "De gebruiker heeft geen wachtwoord", "error.user.password.undefined": "De gebruiker heeft geen wachtwoord",
"error.user.role.invalid": "Gelieve een geldige rol in te voeren", "error.user.role.invalid": "Gelieve een geldige rol in te voeren",
"error.user.update.permission": "error.user.update.permission": "Je hebt geen rechten om gebruiker \"{name}\" te updaten",
"Je hebt geen rechten om gebruiker \"{name}\" te updaten",
"error.validation.accepted": "Gelieve te bevestigen", "error.validation.accepted": "Gelieve te bevestigen",
"error.validation.alpha": "Vul alleen a-z karakters in", "error.validation.alpha": "Vul alleen a-z karakters in",
"error.validation.alphanum": "error.validation.alphanum": "Vul alleen a-z karakters of cijfers (0-9) in",
"Vul alleen a-z karakters of cijfers (0-9) in", "error.validation.between": "Vul een waarde tussen \"{min}\" en \"{max}\"",
"error.validation.between":
"Vul een waarde tussen \"{min}\" en \"{max}\"",
"error.validation.boolean": "Ga akkoord of weiger", "error.validation.boolean": "Ga akkoord of weiger",
"error.validation.contains": "error.validation.contains": "Vul een waarde in die \"{needle}\" bevat",
"Vul een waarde in die \"{needle}\" bevat",
"error.validation.date": "Vul een geldige datum in", "error.validation.date": "Vul een geldige datum in",
"error.validation.date.after": "Vul een datum in na {date}", "error.validation.date.after": "Vul een datum in na {date}",
"error.validation.date.before": "Vul een datum in voor {date}", "error.validation.date.before": "Vul een datum in voor {date}",
@@ -210,18 +169,14 @@
"error.validation.less": "Vul een waarde in lager dan {max}", "error.validation.less": "Vul een waarde in lager dan {max}",
"error.validation.match": "De invoer klopt niet met het verwachte patroon", "error.validation.match": "De invoer klopt niet met het verwachte patroon",
"error.validation.max": "Vul een waarde in die gelijk is aan of lager dan {max}", "error.validation.max": "Vul een waarde in die gelijk is aan of lager dan {max}",
"error.validation.maxlength": "error.validation.maxlength": "Gebruik minder karakters (maximaal {max} karakters)",
"Gebruik minder karakters (maximaal {max} karakters)",
"error.validation.maxwords": "Vul minder dan {max} woorden in", "error.validation.maxwords": "Vul minder dan {max} woorden in",
"error.validation.min": "Vul een waarde in die gelijk is aan of groter dan {min}", "error.validation.min": "Vul een waarde in die gelijk is aan of groter dan {min}",
"error.validation.minlength": "error.validation.minlength": "Gebruik meer karakters (minimaal {min} karakters)",
"Gebruik meer karakters (minimaal {min} karakters)",
"error.validation.minwords": "Vul minimaal {min} woorden in", "error.validation.minwords": "Vul minimaal {min} woorden in",
"error.validation.more": "Vul een grotere waarde in dan {min}", "error.validation.more": "Vul een grotere waarde in dan {min}",
"error.validation.notcontains": "error.validation.notcontains": "Zorg dat de invoer niet \"{needle}\" bevat",
"Zorg dat de invoer niet \"{needle}\" bevat", "error.validation.notin": "Vul de volgende dingen niet in: {{notIn}}",
"error.validation.notin":
"Vul de volgende dingen niet in: {{notIn}}",
"error.validation.option": "Selecteer een geldige optie", "error.validation.option": "Selecteer een geldige optie",
"error.validation.num": "Vul een geldig cijfer in", "error.validation.num": "Vul een geldig cijfer in",
"error.validation.required": "Vul iets in", "error.validation.required": "Vul iets in",
@@ -238,8 +193,7 @@
"field.structure.empty": "Nog geen items.", "field.structure.empty": "Nog geen items.",
"field.users.empty": "Nog geen gebruikers geselecteerd", "field.users.empty": "Nog geen gebruikers geselecteerd",
"file.delete.confirm": "file.delete.confirm": "Wil je dit bestand <br><strong>{filename}</strong> verwijderen?",
"Wil je dit bestand <br><strong>{filename}</strong> verwijderen?",
"files": "Bestanden", "files": "Bestanden",
"files.empty": "Nog geen bestanden", "files.empty": "Nog geen bestanden",
@@ -251,29 +205,22 @@
"installation": "Installatie", "installation": "Installatie",
"installation.completed": "Het Panel is geïnstalleerd", "installation.completed": "Het Panel is geïnstalleerd",
"installation.disabled": "Je kan geen Panel installatie uitvoeren op een openbare server. Voer het installatieprogramma uit op een lokale computer of schakel het in met de <code>panel.install</code> optie.", "installation.disabled": "Je kan geen Panel installatie uitvoeren op een openbare server. Voer het installatieprogramma uit op een lokale computer of schakel het in met de <code>panel.install</code> optie.",
"installation.issues.accounts": "installation.issues.accounts": "De map <code>/site/accounts</code> heeft geen schrijfrechten",
"De map <code>/site/accounts</code> heeft geen schrijfrechten", "installation.issues.content": "De map <code>/content</code> bestaat niet of heeft geen schrijfrechten",
"installation.issues.content":
"De map <code>/content</code> bestaat niet of heeft geen schrijfrechten",
"installation.issues.curl": "De <code>CURL</code>-extensie is vereist", "installation.issues.curl": "De <code>CURL</code>-extensie is vereist",
"installation.issues.headline": "Het Panel kan niet worden geïnstalleerd", "installation.issues.headline": "Het Panel kan niet worden geïnstalleerd",
"installation.issues.mbstring": "installation.issues.mbstring": "De <code>MB String</code> extensie is verplicht",
"De <code>MB String</code> extensie is verplicht", "installation.issues.media": "De map <code>/media</code>bestaat niet of heeft geen schrijfrechten",
"installation.issues.media":
"De map <code>/media</code>bestaat niet of heeft geen schrijfrechten",
"installation.issues.php": "Gebruik <code>PHP7+</code>", "installation.issues.php": "Gebruik <code>PHP7+</code>",
"installation.issues.server": "installation.issues.server": "Kirby vereist <code>Apache</code>, <code>Nginx</code>of <code>Caddy</code>",
"Kirby vereist <code>Apache</code>, <code>Nginx</code>of <code>Caddy</code>",
"installation.issues.sessions": "De map <code>/site/sessions</code> bestaat niet of heeft geen schrijfrechten", "installation.issues.sessions": "De map <code>/site/sessions</code> bestaat niet of heeft geen schrijfrechten",
"language": "Taal", "language": "Taal",
"language.code": "Code", "language.code": "Code",
"language.convert": "Maak standaard", "language.convert": "Maak standaard",
"language.convert.confirm": "language.convert.confirm": "<p>Weet je zeker dat je <strong>{name}</strong>wilt aanpassen naar de standaard taal? Dit kan niet ongedaan worden gemaakt</p><p>Als <strong>{name}</strong> nog niet vertaalde content heeft, is er geen content meer om op terug te vallen en zouden delen van je site leeg kunnen zijn.</p>",
"<p>Weet je zeker dat je <strong>{name}</strong>wilt aanpassen naar de standaard taal? Dit kan niet ongedaan worden gemaakt</p><p>Als <strong>{name}</strong> nog niet vertaalde content heeft, is er geen content meer om op terug te vallen en zouden delen van je site leeg kunnen zijn.</p>",
"language.create": "Nieuwe taal toevoegen", "language.create": "Nieuwe taal toevoegen",
"language.delete.confirm": "language.delete.confirm": "Weet je zeker dat je de taal <strong>{name}</strong> inclusief alle vertalingen wilt verwijderen? Je kunt dit niet ongedaan maken!",
"Weet je zeker dat je de taal <strong>{name}</strong> inclusief alle vertalingen wilt verwijderen? Je kunt dit niet ongedaan maken!",
"language.deleted": "De taal is verwijderd", "language.deleted": "De taal is verwijderd",
"language.direction": "Leesrichting", "language.direction": "Leesrichting",
"language.direction.ltr": "Links naar rechts", "language.direction.ltr": "Links naar rechts",
@@ -292,8 +239,7 @@
"license": "Licentie", "license": "Licentie",
"license.buy": "Koop een licentie", "license.buy": "Koop een licentie",
"license.register": "Registreren", "license.register": "Registreren",
"license.register.help": "license.register.help": "Je hebt de licentie via e-mail gekregen nadat je de aankoop hebt gedaan. Kopieer en plak de licentie om te registreren. ",
"Je hebt de licentie via e-mail gekregen nadat je de aankoop hebt gedaan. Kopieer en plak de licentie om te registreren. ",
"license.register.label": "Vul je licentie in", "license.register.label": "Vul je licentie in",
"license.register.success": "Bedankt dat je Kirby ondersteunt", "license.register.success": "Bedankt dat je Kirby ondersteunt",
"license.unregistered": "Dit is een niet geregistreerde demo van Kirby", "license.unregistered": "Dit is een niet geregistreerde demo van Kirby",
@@ -354,10 +300,8 @@
"page.changeStatus.position": "Selecteer een positie", "page.changeStatus.position": "Selecteer een positie",
"page.changeStatus.select": "Selecteer een nieuwe status", "page.changeStatus.select": "Selecteer een nieuwe status",
"page.changeTemplate": "Verander template", "page.changeTemplate": "Verander template",
"page.delete.confirm": "page.delete.confirm": "Weet je zeker dat je pagina <strong>{title}</strong> wilt verwijderen?",
"Weet je zeker dat je pagina <strong>{title}</strong> wilt verwijderen?", "page.delete.confirm.subpages": "<strong>Deze pagina heeft subpagina's</strong>. <br>Alle subpagina's worden ook verwijderd.",
"page.delete.confirm.subpages":
"<strong>Deze pagina heeft subpagina's</strong>. <br>Alle subpagina's worden ook verwijderd.",
"page.delete.confirm.title": "Voeg een paginatitel in om te bevestigen", "page.delete.confirm.title": "Voeg een paginatitel in om te bevestigen",
"page.draft.create": "Maak concept", "page.draft.create": "Maak concept",
"page.duplicate.appendix": "Kopiëren", "page.duplicate.appendix": "Kopiëren",
@@ -365,8 +309,7 @@
"page.duplicate.pages": "Kopieer pagina's", "page.duplicate.pages": "Kopieer pagina's",
"page.status": "Status", "page.status": "Status",
"page.status.draft": "Concept", "page.status.draft": "Concept",
"page.status.draft.description": "page.status.draft.description": "The page is in draft mode and only visible for logged in editors or via secret link",
"De pagina is in concept-modus en alleen zichtbaar voor ingelogde redacteuren",
"page.status.listed": "Openbaar", "page.status.listed": "Openbaar",
"page.status.listed.description": "Deze pagina is toegankelijk voor iedereen", "page.status.listed.description": "Deze pagina is toegankelijk voor iedereen",
"page.status.unlisted": "Niet gepubliceerd", "page.status.unlisted": "Niet gepubliceerd",
@@ -388,6 +331,7 @@
"replace": "Vervang", "replace": "Vervang",
"retry": "Probeer opnieuw", "retry": "Probeer opnieuw",
"revert": "Annuleren", "revert": "Annuleren",
"revert.confirm": "Do you really want to <strong>delete all unsaved changes</strong>?",
"role": "Rol", "role": "Rol",
"role.admin.description": "De admin heeft alle rechten", "role.admin.description": "De admin heeft alle rechten",
@@ -451,8 +395,7 @@
"url.placeholder": "https://voorbeeld.nl", "url.placeholder": "https://voorbeeld.nl",
"user": "Gebruiker", "user": "Gebruiker",
"user.blueprint": "user.blueprint": "Je kunt extra zones en formuliervelden voor deze rol toevoegen in <strong>/site/blueprints/users/{role}.yml</strong>",
"Je kunt extra zones en formuliervelden voor deze rol toevoegen in <strong>/site/blueprints/users/{role}.yml</strong>",
"user.changeEmail": "Email veranderen", "user.changeEmail": "Email veranderen",
"user.changeLanguage": "Taal veranderen", "user.changeLanguage": "Taal veranderen",
"user.changeName": "Gebruiker hernoemen", "user.changeName": "Gebruiker hernoemen",
@@ -463,8 +406,7 @@
"user.changeRole.select": "Kies een nieuwe rol", "user.changeRole.select": "Kies een nieuwe rol",
"user.create": "Voeg een nieuwe gebruiker toe", "user.create": "Voeg een nieuwe gebruiker toe",
"user.delete": "Verwijder deze gebruiker", "user.delete": "Verwijder deze gebruiker",
"user.delete.confirm": "user.delete.confirm": "Weet je zeker dat je <br><strong>{email}</strong>wil verwijderen?",
"Weet je zeker dat je <br><strong>{email}</strong>wil verwijderen?",
"users": "Gebruikers", "users": "Gebruikers",

View File

@@ -23,29 +23,27 @@
"delete": "Usu\u0144", "delete": "Usu\u0144",
"dimensions": "Wymiary", "dimensions": "Wymiary",
"disabled": "Disabled", "disabled": "Wyłączone",
"discard": "Odrzu\u0107", "discard": "Odrzu\u0107",
"download": "Pobierz", "download": "Pobierz",
"duplicate": "Zduplikuj", "duplicate": "Zduplikuj",
"edit": "Edytuj", "edit": "Edytuj",
"dialog.files.empty": "No files to select", "dialog.files.empty": "Brak plików do wyboru",
"dialog.pages.empty": "No pages to select", "dialog.pages.empty": "Brak stron do wyboru",
"dialog.users.empty": "No users to select", "dialog.users.empty": "Brak użytkowników do wyboru",
"email": "Email", "email": "Email",
"email.placeholder": "mail@example.com", "email.placeholder": "mail@example.com",
"error.access.login": "Nieprawidłowy login", "error.access.login": "Nieprawidłowy login",
"error.access.panel": "Nie masz uprawnień by dostać się do panelu", "error.access.panel": "Nie masz uprawnień by dostać się do panelu",
"error.access.view": "You are not allowed to access this part of the panel", "error.access.view": "Nie masz uprawnień, by dostać się do tej części panelu",
"error.avatar.create.fail": "Nie udało się załadować zdjęcia profilowego", "error.avatar.create.fail": "Nie udało się załadować zdjęcia profilowego",
"error.avatar.delete.fail": "Nie udało się usunąć zdjęcia profilowego", "error.avatar.delete.fail": "Nie udało się usunąć zdjęcia profilowego",
"error.avatar.dimensions.invalid": "error.avatar.dimensions.invalid": "Proszę zachować szerokość i wysokość zdjęcia profilowego poniżej 3000 pikseli",
"Proszę zachować szerokość i wysokość zdjęcia profilowego poniżej 3000 pikseli", "error.avatar.mime.forbidden": "Zdjęcie profilowe musi być plikiem JPEG lub PNG",
"error.avatar.mime.forbidden":
"Zdjęcie profilowe musi być plikiem JPEG lub PNG",
"error.blueprint.notFound": "Nie udało się załadować wzorca \"{name}\"", "error.blueprint.notFound": "Nie udało się załadować wzorca \"{name}\"",
@@ -53,152 +51,113 @@
"error.field.converter.invalid": "Nieprawidłowy konwerter \"{converter}\"", "error.field.converter.invalid": "Nieprawidłowy konwerter \"{converter}\"",
"error.file.changeName.empty": "The name must not be empty", "error.file.changeName.empty": "Imię nie może być puste",
"error.file.changeName.permission": "error.file.changeName.permission": "Nie masz uprawnień, by zmienić nazwę \"{filename}\"",
"Nie masz uprawnień, by zmienić nazwę \"{filename}\"",
"error.file.duplicate": "Istnieje już plik o nazwie \"{filename}\"", "error.file.duplicate": "Istnieje już plik o nazwie \"{filename}\"",
"error.file.extension.forbidden": "error.file.extension.forbidden": "Rozszerzenie \"{extension}\" jest niedozwolone",
"Rozszerzenie \"{extension}\" jest niedozwolone", "error.file.extension.missing": "Brak rozszerzenia pliku \"{filename}\"",
"error.file.extension.missing": "error.file.maxheight": "Wysokość obrazka nie może być większa niż {height} pikseli",
"Brak rozszerzenia pliku \"{filename}\"", "error.file.maxsize": "Plik jest za duży",
"error.file.maxheight": "The height of the image must not exceed {height} pixels", "error.file.maxwidth": "Szerokość obrazka nie może być większa niż {width} pikseli",
"error.file.maxsize": "The file is too large", "error.file.mime.differs": "Przesłany plik musi być tego samego typu mime \"{mime}\"",
"error.file.maxwidth": "The width of the image must not exceed {width} pixels",
"error.file.mime.differs":
"Przesłany plik musi być tego samego typu mime \"{mime}\"",
"error.file.mime.forbidden": "Typ multimediów \"{mime}\" jest niedozwolony", "error.file.mime.forbidden": "Typ multimediów \"{mime}\" jest niedozwolony",
"error.file.mime.invalid": "Invalid mime type: {mime}", "error.file.mime.invalid": "Nieprawidłowy typ MIME: {mime}",
"error.file.mime.missing": "error.file.mime.missing": "Nie można wykryć typu multimediów dla \"{filename}\"",
"Nie można wykryć typu multimediów dla \"{filename}\"", "error.file.minheight": "Wysokość obrazka musi wynosić co najmniej {height} pikseli",
"error.file.minheight": "The height of the image must be at least {height} pixels", "error.file.minsize": "Plik jest za mały",
"error.file.minsize": "The file is too small", "error.file.minwidth": "Szerokość obrazka musi wynosić co najmniej {width} pikseli",
"error.file.minwidth": "The width of the image must be at least {width} pixels",
"error.file.name.missing": "Nazwa pliku nie może być pusta", "error.file.name.missing": "Nazwa pliku nie może być pusta",
"error.file.notFound": "Nie można znaleźć pliku \"{filename}\"", "error.file.notFound": "Nie można znaleźć pliku \"{filename}\"",
"error.file.orientation": "The orientation of the image must be \"{orientation}\"", "error.file.orientation": "Orientacja obrazka musi b \"{orientation}\"",
"error.file.type.forbidden": "Nie możesz przesyłać plików {type}", "error.file.type.forbidden": "Nie możesz przesyłać plików {type}",
"error.file.undefined": "Nie można znaleźć pliku", "error.file.undefined": "Nie można znaleźć pliku",
"error.form.incomplete": "Popraw wszystkie błędy w formularzu…", "error.form.incomplete": "Popraw wszystkie błędy w formularzu…",
"error.form.notSaved": "Nie udało się zapisać formularza", "error.form.notSaved": "Nie udało się zapisać formularza",
"error.language.code": "Please enter a valid code for the language", "error.language.code": "Wprowadź poprawny kod języka.",
"error.language.duplicate": "The language already exists", "error.language.duplicate": "Język już istnieje.",
"error.language.name": "Please enter a valid name for the language", "error.language.name": "Wprowadź poprawną nazwę języka.",
"error.license.format": "Wprowadź poprawny klucz licencyjny", "error.license.format": "Wprowadź poprawny klucz licencyjny",
"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.page.changeSlug.permission": "error.page.changeSlug.permission": "Nie możesz zmienić końcówki adresu URL w \"{slug}\"",
"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": "error.page.changeStatus.permission": "Status tej strony nie może zostać zmieniony",
"Strona zawiera błędy i nie można jej opublikować", "error.page.changeStatus.toDraft.invalid": "Strony \"{slug}\" nie można przekonwertować na szkic",
"error.page.changeStatus.permission": "error.page.changeTemplate.invalid": "Nie można zmienić szablonu strony \"{slug}\"",
"Status tej strony nie może zostać zmieniony", "error.page.changeTemplate.permission": "Nie masz uprawnień, by zmienić szablon dla \"{slug}\"",
"error.page.changeStatus.toDraft.invalid":
"Strony \"{slug}\" nie można przekonwertować na szkic",
"error.page.changeTemplate.invalid":
"Nie można zmienić szablonu strony \"{slug}\"",
"error.page.changeTemplate.permission":
"Nie masz uprawnień, by zmienić szablon dla \"{slug}\"",
"error.page.changeTitle.empty": "Tytuł nie może być pusty", "error.page.changeTitle.empty": "Tytuł nie może być pusty",
"error.page.changeTitle.permission": "error.page.changeTitle.permission": "Nie masz uprawnień, by zmienić tytuł dla \"{slug}\"",
"Nie masz uprawnień, by zmienić tytuł dla \"{slug}\"",
"error.page.create.permission": "Nie masz uprawnień, by utworzyć \"{slug}\"", "error.page.create.permission": "Nie masz uprawnień, by utworzyć \"{slug}\"",
"error.page.delete": "Strony \"{slug}\" nie można usunąć", "error.page.delete": "Strony \"{slug}\" nie można usunąć",
"error.page.delete.confirm": "Wprowadź tytuł strony, aby potwierdzić", "error.page.delete.confirm": "Wprowadź tytuł strony, aby potwierdzić",
"error.page.delete.hasChildren": "error.page.delete.hasChildren": "Strona zawiera podstrony i nie można jej usunąć",
"Strona zawiera podstrony i nie można jej usunąć",
"error.page.delete.permission": "Nie masz uprawnień, by usunąć \"{slug}\"", "error.page.delete.permission": "Nie masz uprawnień, by usunąć \"{slug}\"",
"error.page.draft.duplicate": "error.page.draft.duplicate": "Istnieje już szkic z końcówką URL \"{slug}\"",
"Istnieje już szkic z końcówką URL \"{slug}\"", "error.page.duplicate": "Istnieje już strona z końcówką URL \"{slug}\"",
"error.page.duplicate":
"Istnieje już strona z końcówką URL \"{slug}\"",
"error.page.duplicate.permission": "Nie masz uprawnień, by zduplikować \"{slug}\"", "error.page.duplicate.permission": "Nie masz uprawnień, by zduplikować \"{slug}\"",
"error.page.notFound": "Nie można znaleźć strony \"{slug}\"", "error.page.notFound": "Nie można znaleźć strony \"{slug}\"",
"error.page.num.invalid": "error.page.num.invalid": "Wprowadź poprawny numer sortujący. Liczby nie mogą być ujemne.",
"Wprowadź poprawny numer sortujący. Liczby nie mogą być ujemne.",
"error.page.slug.invalid": "Wprowadź poprawną końcówkę adresu URL", "error.page.slug.invalid": "Wprowadź poprawną końcówkę adresu URL",
"error.page.sort.permission": "Nie można sortować strony \"{slug}\"", "error.page.sort.permission": "Nie można sortować strony \"{slug}\"",
"error.page.status.invalid": "Ustaw prawidłowy status strony", "error.page.status.invalid": "Ustaw prawidłowy status strony",
"error.page.undefined": "Nie udało się znaleźć strony", "error.page.undefined": "Nie udało się znaleźć strony",
"error.page.update.permission": "Nie masz uprawnień, by zaktualizować \"{slug}\"", "error.page.update.permission": "Nie masz uprawnień, by zaktualizować \"{slug}\"",
"error.section.files.max.plural": "error.section.files.max.plural": "Do sekcji \"{section}\" można dodać nie więcej niż {max} plików",
"Do sekcji \"{section}\" można dodać nie więcej niż {max} plików", "error.section.files.max.singular": "Do sekcji \"{section}\" można dodać tylko jeden plik",
"error.section.files.max.singular": "error.section.files.min.plural": "W sekcji \"{section}\" musi być co najmniej {min} pliki/-ów",
"Do sekcji \"{section}\" można dodać tylko jeden plik", "error.section.files.min.singular": "W sekcji \"{section}\" musi być co najmniej jeden plik",
"error.section.files.min.plural":
"The \"{section}\" section requires at least {min} files",
"error.section.files.min.singular":
"The \"{section}\" section requires at least one file",
"error.section.pages.max.plural": "error.section.pages.max.plural": "Do sekcji \"{section}\" można dodać nie więcej niż {max} stron",
"Do sekcji \"{section}\" można dodać nie więcej niż {max} stron", "error.section.pages.max.singular": "Do sekcji \"{section}\" można dodać tylko jedną stronę",
"error.section.pages.max.singular": "error.section.pages.min.plural": "W sekcji \"{section}\" musi być co najmniej {min} stron/-y",
"Do sekcji \"{section}\" można dodać tylko jedną stronę", "error.section.pages.min.singular": "W sekcji \"{section}\" musi być co najmniej jedna strona",
"error.section.pages.min.plural":
"The \"{section}\" section requires at least {min} pages",
"error.section.pages.min.singular":
"The \"{section}\" section requires at least one page",
"error.section.notLoaded": "Nie udało się załadować sekcji \"{name}\"", "error.section.notLoaded": "Nie udało się załadować sekcji \"{name}\"",
"error.section.type.invalid": "Typ sekcji \"{type}\" jest nieprawidłowy", "error.section.type.invalid": "Typ sekcji \"{type}\" jest nieprawidłowy",
"error.site.changeTitle.empty": "Tytuł nie może być pusty", "error.site.changeTitle.empty": "Tytuł nie może być pusty",
"error.site.changeTitle.permission": "error.site.changeTitle.permission": "Nie masz uprawnień, by zmienić tytuł strony",
"Nie masz uprawnień, by zmienić tytuł strony",
"error.site.update.permission": "Nie masz uprawnień, by zaktualizować stronę", "error.site.update.permission": "Nie masz uprawnień, by zaktualizować stronę",
"error.template.default.notFound": "Domyślny szablon nie istnieje", "error.template.default.notFound": "Domyślny szablon nie istnieje",
"error.user.changeEmail.permission": "error.user.changeEmail.permission": "Nie masz uprawnień, by zmienić adres e-mail użytkownika \"{name}\"",
"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": "error.user.changeName.permission": "Nie masz uprawnień, by zmienić nazwę użytkownika \"{name}\"",
"Nie masz uprawnień, by zmienić język użytkownika \"{name}\"", "error.user.changePassword.permission": "Nie masz uprawnień, by zmienić hasło użytkownika \"{name}\"",
"error.user.changeName.permission": "error.user.changeRole.lastAdmin": "Nie można zmienić roli ostatniego administratora",
"Nie masz uprawnień, by zmienić nazwę użytkownika \"{name}\"", "error.user.changeRole.permission": "Nie masz uprawnień, by zmienić rolę użytkownika \"{name}\"",
"error.user.changePassword.permission": "error.user.changeRole.toAdmin": "Nie masz uprawnień, by awansować kogoś do roli daministratora",
"Nie masz uprawnień, by zmienić hasło użytkownika \"{name}\"",
"error.user.changeRole.lastAdmin":
"Nie można zmienić roli ostatniego administratora",
"error.user.changeRole.permission":
"Nie masz uprawnień, by zmienić rolę użytkownika \"{name}\"",
"error.user.changeRole.toAdmin":
"You are not allowed to promote someone to the admin role",
"error.user.create.permission": "Nie masz uprawnień, by utworzyć tego użytkownika", "error.user.create.permission": "Nie masz uprawnień, by utworzyć tego użytkownika",
"error.user.delete": "Nie można usunąć użytkownika \"{name}\"", "error.user.delete": "Nie można usunąć użytkownika \"{name}\"",
"error.user.delete.lastAdmin": "Nie można usunąć ostatniego administratora", "error.user.delete.lastAdmin": "Nie można usunąć ostatniego administratora",
"error.user.delete.lastUser": "Nie można usunąć ostatniego użytkownika", "error.user.delete.lastUser": "Nie można usunąć ostatniego użytkownika",
"error.user.delete.permission": "error.user.delete.permission": "Nie masz uprawnień, by usunąć użytkownika \"{name}\"",
"Nie masz uprawnień, by usunąć użytkownika \"{name}\"", "error.user.duplicate": "Istnieje już użytkownik z adresem email \"{email}\"",
"error.user.duplicate":
"Istnieje już użytkownik z adresem email \"{email}\"",
"error.user.email.invalid": "Wprowadź poprawny adres email", "error.user.email.invalid": "Wprowadź poprawny adres email",
"error.user.language.invalid": "Proszę podać poprawny język", "error.user.language.invalid": "Proszę podać poprawny język",
"error.user.notFound": "Nie można znaleźć użytkownika \"{name}\"", "error.user.notFound": "Nie można znaleźć użytkownika \"{name}\"",
"error.user.password.invalid": "error.user.password.invalid": "Wprowadź prawidłowe hasło. Hasła muszą mieć co najmniej 8 znaków.",
"Wprowadź prawidłowe hasło. Hasła muszą mieć co najmniej 8 znaków.",
"error.user.password.notSame": "Hasła nie są takie same", "error.user.password.notSame": "Hasła nie są takie same",
"error.user.password.undefined": "Użytkownik nie ma hasła", "error.user.password.undefined": "Użytkownik nie ma hasła",
"error.user.role.invalid": "Wprowadź poprawną rolę", "error.user.role.invalid": "Wprowadź poprawną rolę",
"error.user.update.permission": "error.user.update.permission": "Nie masz uprawnień, by zaktualizować użytkownika \"{name}\"",
"Nie masz uprawnień, by zaktualizować użytkownika \"{name}\"",
"error.validation.accepted": "Proszę potwierdzić", "error.validation.accepted": "Proszę potwierdzić",
"error.validation.alpha": "Wprowadź tylko znaki między a-z", "error.validation.alpha": "Wprowadź tylko znaki między a-z",
"error.validation.alphanum": "error.validation.alphanum": "Wprowadź tylko znaki między a-z lub cyfry 0-9",
"Wprowadź tylko znaki między a-z lub cyfry 0-9", "error.validation.between": "Wprowadź wartość między \"{min}\" i \"{max}\"",
"error.validation.between":
"Wprowadź wartość między \"{min}\" i \"{max}\"",
"error.validation.boolean": "Potwierdź lub odmów", "error.validation.boolean": "Potwierdź lub odmów",
"error.validation.contains": "error.validation.contains": "Wprowadź wartość, która zawiera \"{needle}\"",
"Wprowadź wartość, która zawiera \"{needle}\"",
"error.validation.date": "Wprowadź poprawną datę", "error.validation.date": "Wprowadź poprawną datę",
"error.validation.date.after": "Please enter a date after {date}", "error.validation.date.after": "Wprowadź datę późniejszą niż {date}",
"error.validation.date.before": "Please enter a date before {date}", "error.validation.date.before": "Wprowadź datę wcześniejszą niż {date}",
"error.validation.date.between": "Please enter a date between {min} and {max}", "error.validation.date.between": "Wprowadź datę między {min} a {max}",
"error.validation.denied": "Proszę odmówić", "error.validation.denied": "Proszę odmówić",
"error.validation.different": "Wartością nie może być \"{other}\"", "error.validation.different": "Wartością nie może być \"{other}\"",
"error.validation.email": "Wprowadź poprawny adres email", "error.validation.email": "Wprowadź poprawny adres email",
@@ -210,18 +169,14 @@
"error.validation.less": "Wprowadź wartość mniejszą niż {max}", "error.validation.less": "Wprowadź wartość mniejszą niż {max}",
"error.validation.match": "Wartość nie jest zgodna z oczekiwanym wzorcem", "error.validation.match": "Wartość nie jest zgodna z oczekiwanym wzorcem",
"error.validation.max": "Wprowadź wartość równą lub mniejszą niż {max}", "error.validation.max": "Wprowadź wartość równą lub mniejszą niż {max}",
"error.validation.maxlength": "error.validation.maxlength": "Wprowadź krótszą wartość. (maks. {max} znaków)",
"Wprowadź krótszą wartość. (maks. {max} znaków)",
"error.validation.maxwords": "Wprowadź nie więcej niż {max} słowa/słów", "error.validation.maxwords": "Wprowadź nie więcej niż {max} słowa/słów",
"error.validation.min": "Wprowadź wartość równą lub większą niż {min}", "error.validation.min": "Wprowadź wartość równą lub większą niż {min}",
"error.validation.minlength": "error.validation.minlength": "Wprowadź dłuższą wartość. (min. {min} znaków)",
"Wprowadź dłuższą wartość. (min. {min} znaków)",
"error.validation.minwords": "Wprowadź co najmniej {min} słowa/słów", "error.validation.minwords": "Wprowadź co najmniej {min} słowa/słów",
"error.validation.more": "Wprowadź wartość większą niż {min}", "error.validation.more": "Wprowadź wartość większą niż {min}",
"error.validation.notcontains": "error.validation.notcontains": "Wprowadź wartość, która nie zawiera \"{needle}\"",
"Wprowadź wartość, która nie zawiera \"{needle}\"", "error.validation.notin": "Nie wprowadzaj żadnego z następujących ({notIn})",
"error.validation.notin":
"Nie wprowadzaj żadnego z następujących ({notIn})",
"error.validation.option": "Wybierz poprawną opcję", "error.validation.option": "Wybierz poprawną opcję",
"error.validation.num": "Wprowadź poprawny numer", "error.validation.num": "Wprowadź poprawny numer",
"error.validation.required": "Wpisz coś", "error.validation.required": "Wpisz coś",
@@ -231,15 +186,14 @@
"error.validation.time": "Wprowadź poprawny czas", "error.validation.time": "Wprowadź poprawny czas",
"error.validation.url": "Wprowadź poprawny adres URL", "error.validation.url": "Wprowadź poprawny adres URL",
"field.required": "The field is required", "field.required": "Pole jest wymagane",
"field.files.empty": "Nie wybrano jeszcze żadnych plików", "field.files.empty": "Nie wybrano jeszcze żadnych plików",
"field.pages.empty": "Nie wybrano jeszcze żadnych stron", "field.pages.empty": "Nie wybrano jeszcze żadnych stron",
"field.structure.delete.confirm": "Czy na pewno chcesz usunąć ten wiersz?", "field.structure.delete.confirm": "Czy na pewno chcesz usunąć ten wiersz?",
"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.delete.confirm": "file.delete.confirm": "Czy na pewno chcesz usunąć <br><strong>{filename}</strong>?",
"Czy na pewno chcesz usunąć <br><strong>{filename}</strong>?",
"files": "Pliki", "files": "Pliki",
"files.empty": "Nie ma jeszcze żadnych plików", "files.empty": "Nie ma jeszcze żadnych plików",
@@ -251,35 +205,28 @@
"installation": "Instalacja", "installation": "Instalacja",
"installation.completed": "Panel został zainstalowany", "installation.completed": "Panel został zainstalowany",
"installation.disabled": "Instalator panelu jest domyślnie wyłączony na serwerach publicznych. Uruchom instalator na komputerze lokalnym lub włącz go za pomocą opcji <code>panel.install</code>.", "installation.disabled": "Instalator panelu jest domyślnie wyłączony na serwerach publicznych. Uruchom instalator na komputerze lokalnym lub włącz go za pomocą opcji <code>panel.install</code>.",
"installation.issues.accounts": "installation.issues.accounts": "Folder <code>/site/accounts</code> nie istnieje lub nie ma uprawnień do zapisu",
"Folder <code>/site/accounts</code> nie istnieje lub nie ma uprawnień do zapisu", "installation.issues.content": "Folder <code>/content</code> nie istnieje lub nie ma uprawnień do zapisu",
"installation.issues.content":
"Folder <code>/content</code> nie istnieje lub nie ma uprawnień do zapisu",
"installation.issues.curl": "Wymagane jest rozszerzenie <code>CURL</code>", "installation.issues.curl": "Wymagane jest rozszerzenie <code>CURL</code>",
"installation.issues.headline": "Nie można zainstalować panelu", "installation.issues.headline": "Nie można zainstalować panelu",
"installation.issues.mbstring": "installation.issues.mbstring": "Wymagane jest rozszerzenie <code>MB String</code>",
"Wymagane jest rozszerzenie <code>MB String</code>", "installation.issues.media": "Folder <code>/media</code> nie istnieje lub nie ma uprawnień do zapisu",
"installation.issues.media":
"Folder <code>/media</code> nie istnieje lub nie ma uprawnień do zapisu",
"installation.issues.php": "Upewnij się, że używasz <code>PHP 7+</code>", "installation.issues.php": "Upewnij się, że używasz <code>PHP 7+</code>",
"installation.issues.server": "installation.issues.server": "Kirby wymaga <code>Apache</code>, <code>Nginx</code> lub <code>Caddy</code>",
"Kirby wymaga <code>Apache</code>, <code>Nginx</code> lub <code>Caddy</code>",
"installation.issues.sessions": "Folder <code>/site/sessions</code> nie istnieje lub nie ma uprawnień do zapisu", "installation.issues.sessions": "Folder <code>/site/sessions</code> nie istnieje lub nie ma uprawnień do zapisu",
"language": "J\u0119zyk", "language": "J\u0119zyk",
"language.code": "Kod", "language.code": "Kod",
"language.convert": "Ustaw jako domyślny", "language.convert": "Ustaw jako domyślny",
"language.convert.confirm": "language.convert.confirm": "<p>Czy na pewno chcesz zmienić domyślny język na <strong>{name}</strong>? Nie można tego cofnąć.</p><p>Jeżeli brakuje tłumaczenia jakichś treści na <strong>{name}</strong>, nie będzie ich czym zastąpić i części witryny mogą być puste.</p>",
"<p>Czy na pewno chcesz zmienić domyślny język na <strong>{name}</strong>? Nie można tego cofnąć.</p><p>Jeżeli brakuje tłumaczenia jakichś treści na <strong>{name}</strong>, nie będzie ich czym zastąpić i części witryny mogą być puste.</p>",
"language.create": "Dodaj nowy język", "language.create": "Dodaj nowy język",
"language.delete.confirm": "language.delete.confirm": "Czy na pewno chcesz usunąć język <strong>{name}</strong> i wszystkie tłumaczenia? Tego nie da się cofnąć!",
"Czy na pewno chcesz usunąć język <strong>{name}</strong> i wszystkie tłumaczenia? Tego nie da się cofnąć!",
"language.deleted": "Język został usunięty", "language.deleted": "Język został usunięty",
"language.direction": "Kierunek czytania", "language.direction": "Kierunek czytania",
"language.direction.ltr": "Od lewej do prawej", "language.direction.ltr": "Od lewej do prawej",
"language.direction.rtl": "Od prawej do lewej", "language.direction.rtl": "Od prawej do lewej",
"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": "Używasz niestandardowej konfiguracji ustawień regionalnych. Zmodyfikuj to w pliku języka w /site/langugaes",
"language.name": "Nazwa", "language.name": "Nazwa",
"language.updated": "Język został zaktualizowany", "language.updated": "Język został zaktualizowany",
@@ -292,8 +239,7 @@
"license": "Licencja", "license": "Licencja",
"license.buy": "Kup licencję", "license.buy": "Kup licencję",
"license.register": "Zarejestruj", "license.register": "Zarejestruj",
"license.register.help": "license.register.help": "Po zakupieniu licencji otrzymałaś/-eś mailem klucz. Skopiuj go i wklej tutaj, aby dokonać rejestracji.",
"Po zakupieniu licencji otrzymałaś/-eś mailem klucz. Skopiuj go i wklej tutaj, aby dokonać rejestracji.",
"license.register.label": "Wprowadź swój kod licencji", "license.register.label": "Wprowadź swój kod licencji",
"license.register.success": "Dziękujemy za wspieranie Kirby", "license.register.success": "Dziękujemy za wspieranie Kirby",
"license.unregistered": "To jest niezarejestrowana wersja demonstracyjna Kirby", "license.unregistered": "To jest niezarejestrowana wersja demonstracyjna Kirby",
@@ -304,12 +250,12 @@
"loading": "Ładuję", "loading": "Ładuję",
"lock.unsaved": "Niezapisane zmiany", "lock.unsaved": "Niezapisane zmiany",
"lock.unsaved.empty": "There are no more unsaved changes", "lock.unsaved.empty": "Nie ma już żadnych niezapisanych zmian",
"lock.isLocked": "Niezapisane zmiany autorstwa <strong>{email}</strong>", "lock.isLocked": "Niezapisane zmiany autorstwa <strong>{email}</strong>",
"lock.file.isLocked": "The file is currently being edited by {email} and cannot be changed.", "lock.file.isLocked": "Plik jest aktualnie edytowany przez {email} i nie może zostać zmieniony.",
"lock.page.isLocked": "The page is currently being edited by {email} and cannot be changed.", "lock.page.isLocked": "Strona jest aktualnie edytowana przez {email} i nie może zostać zmieniona.",
"lock.unlock": "Unlock", "lock.unlock": "Odblokuj",
"lock.isUnlocked": "Your unsaved changes have been overwritten by another user. You can download your changes to merge them manually.", "lock.isUnlocked": "Twoje niezapisane zmiany zostały nadpisane przez innego użytkownika. Możesz pobrać swoje zmiany, by scalić je ręcznie.",
"login": "Zaloguj", "login": "Zaloguj",
"login.remember": "Nie wylogowuj mnie", "login.remember": "Nie wylogowuj mnie",
@@ -338,8 +284,8 @@
"more": "Więcej", "more": "Więcej",
"name": "Nazwa", "name": "Nazwa",
"next": "Następne", "next": "Następne",
"off": "off", "off": "wyłączone",
"on": "on", "on": "włączone",
"open": "Otwórz", "open": "Otwórz",
"options": "Opcje", "options": "Opcje",
@@ -354,19 +300,16 @@
"page.changeStatus.position": "Wybierz pozycję", "page.changeStatus.position": "Wybierz pozycję",
"page.changeStatus.select": "Wybierz nowy status", "page.changeStatus.select": "Wybierz nowy status",
"page.changeTemplate": "Zmień szablon", "page.changeTemplate": "Zmień szablon",
"page.delete.confirm": "page.delete.confirm": "Czy na pewno chcesz usunąć <strong>{title}</strong>?",
"Czy na pewno chcesz usunąć <strong>{title}</strong>?", "page.delete.confirm.subpages": "<strong>Ta strona zawiera podstrony</strong>. <br>Wszystkie podstrony również zostaną usunięte.",
"page.delete.confirm.subpages":
"<strong>Ta strona zawiera podstrony</strong>. <br>Wszystkie podstrony również zostaną usunięte.",
"page.delete.confirm.title": "Wprowadź tytuł strony, aby potwierdzić", "page.delete.confirm.title": "Wprowadź tytuł strony, aby potwierdzić",
"page.draft.create": "Utwórz szkic", "page.draft.create": "Utwórz szkic",
"page.duplicate.appendix": "Kopiuj", "page.duplicate.appendix": "Kopiuj",
"page.duplicate.files": "Copy files", "page.duplicate.files": "Kopiuj pliki",
"page.duplicate.pages": "Copy pages", "page.duplicate.pages": "Kopiuj strony",
"page.status": "Status", "page.status": "Status",
"page.status.draft": "Szkic", "page.status.draft": "Szkic",
"page.status.draft.description": "page.status.draft.description": "Strona jest w trybie roboczym i widoczna tylko dla zalogowanych redaktorów lub pod sekretnym linkiem",
"Strona jest w trybie roboczym i widoczna tylko dla zalogowanych redaktorów",
"page.status.listed": "Opublikowana", "page.status.listed": "Opublikowana",
"page.status.listed.description": "Strona jest opublikowana i widoczna dla każdego", "page.status.listed.description": "Strona jest opublikowana i widoczna dla każdego",
"page.status.unlisted": "Nie katalogowana", "page.status.unlisted": "Nie katalogowana",
@@ -388,20 +331,21 @@
"replace": "Zamie\u0144", "replace": "Zamie\u0144",
"retry": "Pon\u00f3w pr\u00f3b\u0119", "retry": "Pon\u00f3w pr\u00f3b\u0119",
"revert": "Odrzu\u0107", "revert": "Odrzu\u0107",
"revert.confirm": "Czy na pewno chcesz <strong>usunąć wszystkie niezapisane zmiany</strong>?",
"role": "Rola", "role": "Rola",
"role.admin.description": "The admin has all rights", "role.admin.description": "Administrator posiada wszystkie uprawnienia",
"role.admin.title": "Admin", "role.admin.title": "Administrator",
"role.all": "Wszystkie", "role.all": "Wszystkie",
"role.empty": "Nie ma użytkowników z tą rolą", "role.empty": "Nie ma użytkowników z tą rolą",
"role.description.placeholder": "Brak opisu", "role.description.placeholder": "Brak opisu",
"role.nobody.description": "This is a fallback role without any permissions", "role.nobody.description": "To jest rola zastępcza bez żadnych uprawnień",
"role.nobody.title": "Nobody", "role.nobody.title": "Nikt",
"save": "Zapisz", "save": "Zapisz",
"search": "Szukaj", "search": "Szukaj",
"section.required": "The section is required", "section.required": "Sekcja jest wymagana",
"select": "Wybierz", "select": "Wybierz",
"settings": "Ustawienia", "settings": "Ustawienia",
@@ -421,8 +365,8 @@
"toolbar.button.heading.3": "Nagłówek 3", "toolbar.button.heading.3": "Nagłówek 3",
"toolbar.button.italic": "Kursywa", "toolbar.button.italic": "Kursywa",
"toolbar.button.file": "Plik", "toolbar.button.file": "Plik",
"toolbar.button.file.select": "Select a file", "toolbar.button.file.select": "Wybierz plik",
"toolbar.button.file.upload": "Upload a file", "toolbar.button.file.upload": "Prześlij plik",
"toolbar.button.link": "Link", "toolbar.button.link": "Link",
"toolbar.button.ol": "Lista numerowana", "toolbar.button.ol": "Lista numerowana",
"toolbar.button.ul": "Lista wypunktowana", "toolbar.button.ul": "Lista wypunktowana",
@@ -433,17 +377,17 @@
"translation.locale": "pl_PL", "translation.locale": "pl_PL",
"upload": "Prześlij", "upload": "Prześlij",
"upload.error.cantMove": "The uploaded file could not be moved", "upload.error.cantMove": "Przesłany plik nie mógł być przeniesiony",
"upload.error.cantWrite": "Failed to write file to disk", "upload.error.cantWrite": "Nie udało się zapisać pliku na dysku",
"upload.error.default": "The file could not be uploaded", "upload.error.default": "Nie udało się przesłać pliku",
"upload.error.extension": "File upload stopped by extension", "upload.error.extension": "Przesyłanie pliku zostało zastopowane przez rozszerzenie",
"upload.error.formSize": "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the form", "upload.error.formSize": "Przesłany plik przekracza dyrektywę MAX_FILE_SIZE określoną w formularzu",
"upload.error.iniPostSize": "The uploaded file exceeds the post_max_size directive in php.ini", "upload.error.iniPostSize": "Przesłany plik przekracza dyrektywę post_max_size określoną w php.ini",
"upload.error.iniSize": "The uploaded file exceeds the upload_max_filesize directive in php.ini", "upload.error.iniSize": "Przesłany plik przekracza dyrektywę upload_max_filesize określoną w php.ini",
"upload.error.noFile": "No file was uploaded", "upload.error.noFile": "Nie został przesłany żaden plik",
"upload.error.noFiles": "No files were uploaded", "upload.error.noFiles": "Nie zostały przesłane żadne pliki",
"upload.error.partial": "The uploaded file was only partially uploaded", "upload.error.partial": "Została przesłana tylko część przesyłanego pliku",
"upload.error.tmpDir": "Missing a temporary folder", "upload.error.tmpDir": "Brak tymczasowego folderu",
"upload.errors": "Błąd", "upload.errors": "Błąd",
"upload.progress": "Przesyłanie…", "upload.progress": "Przesyłanie…",
@@ -451,8 +395,7 @@
"url.placeholder": "https://example.com", "url.placeholder": "https://example.com",
"user": "Użytkownik", "user": "Użytkownik",
"user.blueprint": "user.blueprint": "Możesz zdefiniować dodatkowe sekcje i pola formularza dla tej roli użytkownika w <strong>/site/blueprints/users/{role}.yml</strong>",
"Możesz zdefiniować dodatkowe sekcje i pola formularza dla tej roli użytkownika w <strong>/site/blueprints/users/{role}.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",
@@ -463,8 +406,7 @@
"user.changeRole.select": "Wybierz nową rolę", "user.changeRole.select": "Wybierz nową rolę",
"user.create": "Dodaj nowego użytkownika", "user.create": "Dodaj nowego użytkownika",
"user.delete": "Usuń tego użytkownika", "user.delete": "Usuń tego użytkownika",
"user.delete.confirm": "user.delete.confirm": "Czy na pewno chcesz usunąć <br><strong>{email}</strong>?",
"Czy na pewno chcesz usunąć <br><strong>{email}</strong>?",
"users": "Użytkownicy", "users": "Użytkownicy",

View File

@@ -42,10 +42,8 @@
"error.avatar.create.fail": "A foto de perfil não pôde ser enviada", "error.avatar.create.fail": "A foto de perfil não pôde ser enviada",
"error.avatar.delete.fail": "A foto do perfil não pôde ser deletada", "error.avatar.delete.fail": "A foto do perfil não pôde ser deletada",
"error.avatar.dimensions.invalid": "error.avatar.dimensions.invalid": "Por favor, use uma foto de perfil com largura e altura menores que 3000 pixels",
"Por favor, use uma foto de perfil com largura e altura menores que 3000 pixels", "error.avatar.mime.forbidden": "A foto de perfil deve ser um arquivo JPEG ou PNG",
"error.avatar.mime.forbidden":
"A foto de perfil deve ser um arquivo JPEG ou PNG",
"error.blueprint.notFound": "O blueprint \"{name}\" não pôde ser carregado", "error.blueprint.notFound": "O blueprint \"{name}\" não pôde ser carregado",
@@ -54,22 +52,17 @@
"error.field.converter.invalid": "Conversor \"{converter}\" inválido", "error.field.converter.invalid": "Conversor \"{converter}\" inválido",
"error.file.changeName.empty": "The name must not be empty", "error.file.changeName.empty": "The name must not be empty",
"error.file.changeName.permission": "error.file.changeName.permission": "Você não tem permissão para alterar o nome de \"{filename}\"",
"Você não tem permissão 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": "error.file.extension.forbidden": "Extensão \"{extension}\" não permitida",
"Extensão \"{extension}\" não permitida", "error.file.extension.missing": "Extensão de \"{filename}\" em falta",
"error.file.extension.missing":
"Extensão de \"{filename}\" em falta",
"error.file.maxheight": "The height of the image must not exceed {height} pixels", "error.file.maxheight": "The height of the image must not exceed {height} pixels",
"error.file.maxsize": "The file is too large", "error.file.maxsize": "The file is too large",
"error.file.maxwidth": "The width of the image must not exceed {width} pixels", "error.file.maxwidth": "The width of the image must not exceed {width} pixels",
"error.file.mime.differs": "error.file.mime.differs": "O arquivo enviado precisa ser do tipo \"{mime}\"",
"O arquivo enviado precisa ser do tipo \"{mime}\"",
"error.file.mime.forbidden": "Tipo de mídia \"{mime}\" não permitido", "error.file.mime.forbidden": "Tipo de mídia \"{mime}\" não permitido",
"error.file.mime.invalid": "Invalid mime type: {mime}", "error.file.mime.invalid": "Invalid mime type: {mime}",
"error.file.mime.missing": "error.file.mime.missing": "Tipo de mídia de \"{filename}\" não detectado",
"Tipo de mídia de \"{filename}\" não detectado",
"error.file.minheight": "The height of the image must be at least {height} pixels", "error.file.minheight": "The height of the image must be at least {height} pixels",
"error.file.minsize": "The file is too small", "error.file.minsize": "The file is too small",
"error.file.minwidth": "The width of the image must be at least {width} pixels", "error.file.minwidth": "The width of the image must be at least {width} pixels",
@@ -90,111 +83,77 @@
"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": "The license could not be verified", "error.license.verification": "The license could not be verified",
"error.page.changeSlug.permission": "error.page.changeSlug.permission": "Você não tem permissão para alterar a URL de \"{slug}\"",
"Você não tem permissão para alterar a URL de \"{slug}\"", "error.page.changeStatus.incomplete": "A página possui erros e não pode ser salva",
"error.page.changeStatus.incomplete": "error.page.changeStatus.permission": "O estado desta página não pode ser alterado",
"A página possui erros e não pode ser salva", "error.page.changeStatus.toDraft.invalid": "A página \"{slug}\" não pode ser convertida para rascunho",
"error.page.changeStatus.permission": "error.page.changeTemplate.invalid": "O tema da página \"{slug}\" não pode ser alterado",
"O estado desta página não pode ser alterado", "error.page.changeTemplate.permission": "Você não tem permissão para alterar o tema de \"{slug}\"",
"error.page.changeStatus.toDraft.invalid":
"A página \"{slug}\" não pode ser convertida para rascunho",
"error.page.changeTemplate.invalid":
"O tema da página \"{slug}\" não pode ser alterado",
"error.page.changeTemplate.permission":
"Você não tem permissão para alterar o tema de \"{slug}\"",
"error.page.changeTitle.empty": "O título não pode ficar em branco", "error.page.changeTitle.empty": "O título não pode ficar em branco",
"error.page.changeTitle.permission": "error.page.changeTitle.permission": "Você não tem permissão para alterar o título de \"{slug}\"",
"Você não tem permissão para alterar o título de \"{slug}\"",
"error.page.create.permission": "Você não tem permissão para criar \"{slug}\"", "error.page.create.permission": "Você não tem permissão para criar \"{slug}\"",
"error.page.delete": "A página \"{slug}\" não pode ser excluída", "error.page.delete": "A página \"{slug}\" não pode ser excluída",
"error.page.delete.confirm": "Por favor, digite o título da página para confirmar", "error.page.delete.confirm": "Por favor, digite o título da página para confirmar",
"error.page.delete.hasChildren": "error.page.delete.hasChildren": "A página possui subpáginas e não pode ser excluída",
"A página possui subpáginas e não pode ser excluída",
"error.page.delete.permission": "Você não tem permissão para excluir \"{slug}\"", "error.page.delete.permission": "Você não tem permissão para excluir \"{slug}\"",
"error.page.draft.duplicate": "error.page.draft.duplicate": "Um rascunho de página com a URL \"{slug}\" já existe",
"Um rascunho de página com a URL \"{slug}\" já existe", "error.page.duplicate": "Uma página com a URL \"{slug}\" já existe",
"error.page.duplicate":
"Uma página com a URL \"{slug}\" já existe",
"error.page.duplicate.permission": "You are not allowed to duplicate \"{slug}\"", "error.page.duplicate.permission": "You are not allowed to duplicate \"{slug}\"",
"error.page.notFound": "Página\"{slug}\" não encontrada", "error.page.notFound": "Página\"{slug}\" não encontrada",
"error.page.num.invalid": "error.page.num.invalid": "Digite um número de ordenação válido. Este número não pode ser negativo.",
"Digite um número de ordenação válido. Este número não pode ser negativo.",
"error.page.slug.invalid": "Por favor, digite uma URL válida", "error.page.slug.invalid": "Por favor, digite uma URL válida",
"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",
"error.page.undefined": "P\u00e1gina n\u00e3o encontrada", "error.page.undefined": "P\u00e1gina n\u00e3o encontrada",
"error.page.update.permission": "Você não tem permissão para atualizar \"{slug}\"", "error.page.update.permission": "Você não tem permissão para atualizar \"{slug}\"",
"error.section.files.max.plural": "error.section.files.max.plural": "Você não pode adicionar mais do que {max} arquivos à seção \"{section}\"",
"Você não pode adicionar mais do que {max} arquivos à seção \"{section}\"", "error.section.files.max.singular": "Você não pode adicionar mais do que um arquivo à seção \"{section}\"",
"error.section.files.max.singular": "error.section.files.min.plural": "The \"{section}\" section requires at least {min} files",
"Você não pode adicionar mais do que um arquivo à seção \"{section}\"", "error.section.files.min.singular": "The \"{section}\" section requires at least one file",
"error.section.files.min.plural":
"The \"{section}\" section requires at least {min} files",
"error.section.files.min.singular":
"The \"{section}\" section requires at least one file",
"error.section.pages.max.plural": "error.section.pages.max.plural": "Você não pode adicionar mais do que {max} página à seção \"{section}\"",
"Você não pode adicionar mais do que {max} página à seção \"{section}\"", "error.section.pages.max.singular": "Você não pode adicionar mais do que uma página à seção \"{section}\"",
"error.section.pages.max.singular": "error.section.pages.min.plural": "The \"{section}\" section requires at least {min} pages",
"Você não pode adicionar mais do que uma página à seção \"{section}\"", "error.section.pages.min.singular": "The \"{section}\" section requires at least one page",
"error.section.pages.min.plural":
"The \"{section}\" section requires at least {min} pages",
"error.section.pages.min.singular":
"The \"{section}\" section requires at least one page",
"error.section.notLoaded": "A seção \"{name}\" não pôde ser carregada", "error.section.notLoaded": "A seção \"{name}\" não pôde ser carregada",
"error.section.type.invalid": "O tipo da seção \"{type}\" não é válido", "error.section.type.invalid": "O tipo da seção \"{type}\" não é válido",
"error.site.changeTitle.empty": "O título não pode ficar em branco", "error.site.changeTitle.empty": "O título não pode ficar em branco",
"error.site.changeTitle.permission": "error.site.changeTitle.permission": "Você não tem permissão para alterar o título do site",
"Você não tem permissão para alterar o título do site",
"error.site.update.permission": "Você não tem permissão para atualizar o site", "error.site.update.permission": "Você não tem permissão para atualizar o site",
"error.template.default.notFound": "O tema padrão não existe", "error.template.default.notFound": "O tema padrão não existe",
"error.user.changeEmail.permission": "error.user.changeEmail.permission": "Você não tem permissão para alterar o email do usuário \"{name}\"",
"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": "error.user.changeName.permission": "Você não tem permissão para alterar o nome do usuário \"{name}\"",
"Você não tem permissão para alterar o idioma do usuário \"{name}\"", "error.user.changePassword.permission": "Você não tem permissão para alterar a senha do usuário \"{name}\"",
"error.user.changeName.permission": "error.user.changeRole.lastAdmin": "O papel do último administrador não pode ser alterado",
"Você não tem permissão para alterar o nome do usuário \"{name}\"", "error.user.changeRole.permission": "Você não tem permissão para alterar o papel do usuário \"{name}\"",
"error.user.changePassword.permission": "error.user.changeRole.toAdmin": "You are not allowed to promote someone to the admin role",
"Você não tem permissão para alterar a senha do usuário \"{name}\"",
"error.user.changeRole.lastAdmin":
"O papel do último administrador não pode ser alterado",
"error.user.changeRole.permission":
"Você não tem permissão para alterar o papel do usuário \"{name}\"",
"error.user.changeRole.toAdmin":
"You are not allowed to promote someone to the admin role",
"error.user.create.permission": "Você não tem permissão para criar este usuário", "error.user.create.permission": "Você não tem permissão para criar este usuário",
"error.user.delete": "O usuário \"{name}\" não pode ser excluído", "error.user.delete": "O usuário \"{name}\" não pode ser excluído",
"error.user.delete.lastAdmin": "O último administrador não pode ser excluído", "error.user.delete.lastAdmin": "O último administrador não pode ser excluído",
"error.user.delete.lastUser": "O último usuário não pode ser excluído", "error.user.delete.lastUser": "O último usuário não pode ser excluído",
"error.user.delete.permission": "error.user.delete.permission": "Você não tem permissão para excluir o usuário \"{name}\"",
"Você não tem permissão para excluir o usuário \"{name}\"", "error.user.duplicate": "Um usuário com o email \"{email}\" já existe",
"error.user.duplicate":
"Um usuário com o email \"{email}\" já existe",
"error.user.email.invalid": "Digite um endereço de email válido", "error.user.email.invalid": "Digite um endereço de email válido",
"error.user.language.invalid": "Digite um idioma válido", "error.user.language.invalid": "Digite um idioma válido",
"error.user.notFound": "Usuário \"{name}\" não encontrado", "error.user.notFound": "Usuário \"{name}\" não encontrado",
"error.user.password.invalid": "error.user.password.invalid": "Digite uma senha válida. Sua senha deve ter pelo menos 8 caracteres.",
"Digite uma senha válida. Sua senha deve ter pelo menos 8 caracteres.",
"error.user.password.notSame": "As senhas não combinam", "error.user.password.notSame": "As senhas não combinam",
"error.user.password.undefined": "O usuário não possui uma senha", "error.user.password.undefined": "O usuário não possui uma senha",
"error.user.role.invalid": "Digite um papel válido", "error.user.role.invalid": "Digite um papel válido",
"error.user.update.permission": "error.user.update.permission": "Você não tem permissão para atualizar o usuário \"{name}\"",
"Você não tem permissão para atualizar o usuário \"{name}\"",
"error.validation.accepted": "Por favor, confirme", "error.validation.accepted": "Por favor, confirme",
"error.validation.alpha": "Por favor, use apenas caracteres entre a-z", "error.validation.alpha": "Por favor, use apenas caracteres entre a-z",
"error.validation.alphanum": "error.validation.alphanum": "Por favor, use apenas caracteres entre a-z ou 0-9",
"Por favor, use apenas caracteres entre a-z ou 0-9", "error.validation.between": "Digite um valor entre \"{min}\" e \"{max}\"",
"error.validation.between":
"Digite um valor entre \"{min}\" e \"{max}\"",
"error.validation.boolean": "Por favor, confirme ou rejeite", "error.validation.boolean": "Por favor, confirme ou rejeite",
"error.validation.contains": "error.validation.contains": "Digite um valor que contenha \"{needle}\"",
"Digite um valor que contenha \"{needle}\"",
"error.validation.date": "Escolha uma data válida", "error.validation.date": "Escolha uma data válida",
"error.validation.date.after": "Please enter a date after {date}", "error.validation.date.after": "Please enter a date after {date}",
"error.validation.date.before": "Please enter a date before {date}", "error.validation.date.before": "Please enter a date before {date}",
@@ -210,18 +169,14 @@
"error.validation.less": "Digite um valor menor que {max}", "error.validation.less": "Digite um valor menor que {max}",
"error.validation.match": "O valor não combina com o padrão esperado", "error.validation.match": "O valor não combina com o padrão esperado",
"error.validation.max": "Digite um valor igual ou menor que {max}", "error.validation.max": "Digite um valor igual ou menor que {max}",
"error.validation.maxlength": "error.validation.maxlength": "Digite um valor curto. (no máximo {max} caracteres)",
"Digite um valor curto. (no máximo {max} caracteres)",
"error.validation.maxwords": "Digite menos que {max} palavra(s)", "error.validation.maxwords": "Digite menos que {max} palavra(s)",
"error.validation.min": "Digite um valor igual ou maior que {min}", "error.validation.min": "Digite um valor igual ou maior que {min}",
"error.validation.minlength": "error.validation.minlength": "Digite um valor maior. (no mínimo {min} caracteres)",
"Digite um valor maior. (no mínimo {min} caracteres)",
"error.validation.minwords": "Digite ao menos {min} palavra(s)", "error.validation.minwords": "Digite ao menos {min} palavra(s)",
"error.validation.more": "Digite um valor maior que {min}", "error.validation.more": "Digite um valor maior que {min}",
"error.validation.notcontains": "error.validation.notcontains": "Digite um valor que não contenha \"{needle}\"",
"Digite um valor que não contenha \"{needle}\"", "error.validation.notin": "Não digite nenhum destes valores: ({notIn})",
"error.validation.notin":
"Não digite nenhum destes valores: ({notIn})",
"error.validation.option": "Escolha uma opção válida", "error.validation.option": "Escolha uma opção válida",
"error.validation.num": "Digite um número válido", "error.validation.num": "Digite um número válido",
"error.validation.required": "Digite algo", "error.validation.required": "Digite algo",
@@ -238,8 +193,7 @@
"field.structure.empty": "Nenhum registro", "field.structure.empty": "Nenhum registro",
"field.users.empty": "Nenhum usuário selecionado", "field.users.empty": "Nenhum usuário selecionado",
"file.delete.confirm": "file.delete.confirm": "Deseja realmente excluir <br> <strong>{filename}</strong>?",
"Deseja realmente excluir <br> <strong>{filename}</strong>?",
"files": "Arquivos", "files": "Arquivos",
"files.empty": "Nenhum arquivo", "files.empty": "Nenhum arquivo",
@@ -251,29 +205,22 @@
"installation": "Instalação", "installation": "Instalação",
"installation.completed": "Painel instalado com sucesso", "installation.completed": "Painel instalado com sucesso",
"installation.disabled": "O instalador do painel está desabilitado em servidores públicos por padrão. Por favor, execute o instalador em uma máquina local ou habilite a opção <code>panel.install</code>.", "installation.disabled": "O instalador do painel está desabilitado em servidores públicos por padrão. Por favor, execute o instalador em uma máquina local ou habilite a opção <code>panel.install</code>.",
"installation.issues.accounts": "installation.issues.accounts": "A pasta <code>/site/accounts</code> não existe ou não possui permissão de escrita",
"A pasta <code>/site/accounts</code> não existe ou não possui permissão de escrita", "installation.issues.content": "A pasta <code>/content</code> não existe ou não possui permissão de escrita",
"installation.issues.content":
"A pasta <code>/content</code> não existe ou não possui permissão de escrita",
"installation.issues.curl": "A extensão <code>CURL</code> é necessária", "installation.issues.curl": "A extensão <code>CURL</code> é necessária",
"installation.issues.headline": "O painel não pôde ser instalado", "installation.issues.headline": "O painel não pôde ser instalado",
"installation.issues.mbstring": "installation.issues.mbstring": "A extensão <code>MB String</code> é necessária",
"A extensão <code>MB String</code> é necessária", "installation.issues.media": "A pasta <code>/media</code> não existe ou não possui permissão de escrita",
"installation.issues.media":
"A pasta <code>/media</code> não existe ou não possui permissão de escrita",
"installation.issues.php": "Certifique-se que você está usando o <code>PHP 7+</code>", "installation.issues.php": "Certifique-se que você está usando o <code>PHP 7+</code>",
"installation.issues.server": "installation.issues.server": "Kirby necessita do <code>Apache</code>, <code>Nginx</code> ou <code>Caddy</code>",
"Kirby necessita do <code>Apache</code>, <code>Nginx</code> ou <code>Caddy</code>",
"installation.issues.sessions": "A pasta <code>/site/sessions</code> não existe ou não possui permissão de escrita", "installation.issues.sessions": "A pasta <code>/site/sessions</code> não existe ou não possui permissão de escrita",
"language": "Idioma", "language": "Idioma",
"language.code": "Código", "language.code": "Código",
"language.convert": "Tornar padrão", "language.convert": "Tornar padrão",
"language.convert.confirm": "language.convert.confirm": "<p>Deseja realmente converter <strong>{name}</strong> para o idioma padrão? Esta ação não poderá ser revertida.</p><p>Se <strong>{name}</strong> tiver conteúdo não traduzido, partes do seu site poderão ficar sem conteúdo.</p>",
"<p>Deseja realmente converter <strong>{name}</strong> para o idioma padrão? Esta ação não poderá ser revertida.</p><p>Se <strong>{name}</strong> tiver conteúdo não traduzido, partes do seu site poderão ficar sem conteúdo.</p>",
"language.create": "Adicionar novo idioma", "language.create": "Adicionar novo idioma",
"language.delete.confirm": "language.delete.confirm": "Deseja realmente excluir o idioma <strong>{name}</strong> incluíndo todas as traduções. Esta ação não poderá ser revertida!",
"Deseja realmente excluir o idioma <strong>{name}</strong> incluíndo todas as traduções. Esta ação não poderá ser revertida!",
"language.deleted": "Idioma excluído", "language.deleted": "Idioma excluído",
"language.direction": "Direção de leitura", "language.direction": "Direção de leitura",
"language.direction.ltr": "Esquerda para direita", "language.direction.ltr": "Esquerda para direita",
@@ -292,8 +239,7 @@
"license": "Licen\u00e7a do Kirby ", "license": "Licen\u00e7a do Kirby ",
"license.buy": "Comprar licença", "license.buy": "Comprar licença",
"license.register": "Registrar", "license.register": "Registrar",
"license.register.help": "license.register.help": "Você recebeu o código da sua licença por email após a compra. Por favor, copie e cole-a para completar o registro.",
"Você recebeu o código da sua licença por email após a compra. Por favor, copie e cole-a para completar o registro.",
"license.register.label": "Por favor, digite o código da sua licença", "license.register.label": "Por favor, digite o código da sua licença",
"license.register.success": "Obrigado por apoiar o Kirby", "license.register.success": "Obrigado por apoiar o Kirby",
"license.unregistered": "Esta é uma demonstração não registrada do Kirby", "license.unregistered": "Esta é uma demonstração não registrada do Kirby",
@@ -354,10 +300,8 @@
"page.changeStatus.position": "Selecione uma posição", "page.changeStatus.position": "Selecione uma posição",
"page.changeStatus.select": "Selecione um novo estado", "page.changeStatus.select": "Selecione um novo estado",
"page.changeTemplate": "Alterar tema", "page.changeTemplate": "Alterar tema",
"page.delete.confirm": "page.delete.confirm": "Deseja realmente excluir <strong>{title}</strong>?",
"Deseja realmente excluir <strong>{title}</strong>?", "page.delete.confirm.subpages": "<strong>Esta página possui subpáginas</strong>. <br>Todas as subpáginas serão excluídas também.",
"page.delete.confirm.subpages":
"<strong>Esta página possui subpáginas</strong>. <br>Todas as subpáginas serão excluídas também.",
"page.delete.confirm.title": "Digite o título da página para confirmar", "page.delete.confirm.title": "Digite o título da página para confirmar",
"page.draft.create": "Criar rascunho", "page.draft.create": "Criar rascunho",
"page.duplicate.appendix": "Copiar", "page.duplicate.appendix": "Copiar",
@@ -365,8 +309,7 @@
"page.duplicate.pages": "Copy pages", "page.duplicate.pages": "Copy pages",
"page.status": "Estado", "page.status": "Estado",
"page.status.draft": "Rascunho", "page.status.draft": "Rascunho",
"page.status.draft.description": "page.status.draft.description": "The page is in draft mode and only visible for logged in editors or via secret link",
"A página em modo de rascunho é visível somente para editores",
"page.status.listed": "Pública", "page.status.listed": "Pública",
"page.status.listed.description": "A página pública é visível para todos", "page.status.listed.description": "A página pública é visível para todos",
"page.status.unlisted": "Não listadas", "page.status.unlisted": "Não listadas",
@@ -388,6 +331,7 @@
"replace": "Substituir", "replace": "Substituir",
"retry": "Tentar novamente", "retry": "Tentar novamente",
"revert": "Descartar", "revert": "Descartar",
"revert.confirm": "Do you really want to <strong>delete all unsaved changes</strong>?",
"role": "Papel", "role": "Papel",
"role.admin.description": "The admin has all rights", "role.admin.description": "The admin has all rights",
@@ -451,8 +395,7 @@
"url.placeholder": "https://exemplo.com", "url.placeholder": "https://exemplo.com",
"user": "Usuário", "user": "Usuário",
"user.blueprint": "user.blueprint": "Você pode definir seções e campos de formulário adicionais para este papel de usuário em <strong>/site/blueprints/users/{role}.yml</strong>",
"Você pode definir seções e campos de formulário adicionais para este papel de usuário em <strong>/site/blueprints/users/{role}.yml</strong>",
"user.changeEmail": "Alterar email", "user.changeEmail": "Alterar email",
"user.changeLanguage": "Alterar idioma", "user.changeLanguage": "Alterar idioma",
"user.changeName": "Renomear usuário", "user.changeName": "Renomear usuário",
@@ -463,8 +406,7 @@
"user.changeRole.select": "Selecione um novo papel", "user.changeRole.select": "Selecione um novo papel",
"user.create": "Adicionar novo usuário", "user.create": "Adicionar novo usuário",
"user.delete": "Excluir este usuário", "user.delete": "Excluir este usuário",
"user.delete.confirm": "user.delete.confirm": "Deseja realmente excluir <br><strong>{email}</strong>?",
"Deseja realmente excluir <br><strong>{email}</strong>?",
"users": "Usuários", "users": "Usuários",

View File

@@ -23,29 +23,27 @@
"delete": "Excluir", "delete": "Excluir",
"dimensions": "Dimensões", "dimensions": "Dimensões",
"disabled": "Disabled", "disabled": "Inativo",
"discard": "Descartar", "discard": "Descartar",
"download": "Download", "download": "Descarregar",
"duplicate": "Duplicate", "duplicate": "Duplicar",
"edit": "Editar", "edit": "Editar",
"dialog.files.empty": "No files to select", "dialog.files.empty": "Sem arquivos para selecionar",
"dialog.pages.empty": "No pages to select", "dialog.pages.empty": "Sem páginas para selecionar",
"dialog.users.empty": "No users to select", "dialog.users.empty": "Sem utilizadores para selecionar",
"email": "Email", "email": "Email",
"email.placeholder": "mail@exemplo.pt", "email.placeholder": "mail@exemplo.pt",
"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": "You are not allowed to access this part of the panel", "error.access.view": "Não tem permissões para aceder a esta área do Painel",
"error.avatar.create.fail": "A foto de perfil não foi enviada", "error.avatar.create.fail": "A foto de perfil não foi enviada",
"error.avatar.delete.fail": "A foto do perfil não foi deletada", "error.avatar.delete.fail": "A foto do perfil não foi excluída",
"error.avatar.dimensions.invalid": "error.avatar.dimensions.invalid": "Por favor, use uma foto de perfil com largura e altura menores que 3000 pixels",
"Por favor, use uma foto de perfil com largura e altura menores que 3000 pixels", "error.avatar.mime.forbidden": "A foto de perfil deve ser um arquivo JPEG ou PNG",
"error.avatar.mime.forbidden":
"A foto de perfil deve ser um arquivo JPEG ou PNG",
"error.blueprint.notFound": "O blueprint \"{name}\" não pode ser carregado", "error.blueprint.notFound": "O blueprint \"{name}\" não pode ser carregado",
@@ -53,152 +51,113 @@
"error.field.converter.invalid": "Conversor \"{converter}\" inválido", "error.field.converter.invalid": "Conversor \"{converter}\" inválido",
"error.file.changeName.empty": "The name must not be empty", "error.file.changeName.empty": "O nome não pode ficar em branco",
"error.file.changeName.permission": "error.file.changeName.permission": "Não tem permissões para alterar o nome de \"{filename}\"",
"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": "error.file.extension.forbidden": "Extensão \"{extension}\" não permitida",
"Extensão \"{extension}\" não permitida", "error.file.extension.missing": "Extensão de \"{filename}\" em falta",
"error.file.extension.missing": "error.file.maxheight": "A altura da imagem não deve exceder {height} pixels",
"Extensão de \"{filename}\" em falta", "error.file.maxsize": "O arquivo é muito grande",
"error.file.maxheight": "The height of the image must not exceed {height} pixels", "error.file.maxwidth": "A largura da imagem não deve exceder {width} pixels",
"error.file.maxsize": "The file is too large", "error.file.mime.differs": "O arquivo enviado precisa ser do tipo \"{mime}\"",
"error.file.maxwidth": "The width of the image must not exceed {width} pixels",
"error.file.mime.differs":
"O arquivo enviado precisa ser do tipo \"{mime}\"",
"error.file.mime.forbidden": "Tipo de mídia \"{mime}\" não permitido", "error.file.mime.forbidden": "Tipo de mídia \"{mime}\" não permitido",
"error.file.mime.invalid": "Invalid mime type: {mime}", "error.file.mime.invalid": "Tipo de mídia inválido: {mime}",
"error.file.mime.missing": "error.file.mime.missing": "Tipo de mídia de \"{filename}\" não detectado",
"Tipo de mídia de \"{filename}\" não detectado", "error.file.minheight": "A altura da imagem deve ser pelo menos {height} pixels",
"error.file.minheight": "The height of the image must be at least {height} pixels", "error.file.minsize": "O ficheiro é muito pequeno",
"error.file.minsize": "The file is too small", "error.file.minwidth": "A largura da imagem deve ser pelo menos {width} pixels",
"error.file.minwidth": "The width of the image must be at least {width} pixels",
"error.file.name.missing": "O nome do arquivo não pode ficar em branco", "error.file.name.missing": "O nome do arquivo não pode ficar em branco",
"error.file.notFound": "Arquivo \"{filename}\" não encontrado", "error.file.notFound": "Arquivo \"{filename}\" não encontrado",
"error.file.orientation": "The orientation of the image must be \"{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.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…",
"error.form.notSaved": "O formulário não foi guardado", "error.form.notSaved": "O formulário não foi guardado",
"error.language.code": "Please enter a valid code for the language", "error.language.code": "Insira um código de idioma válido",
"error.language.duplicate": "The language already exists", "error.language.duplicate": "O idioma já existe",
"error.language.name": "Please enter a valid name for the language", "error.language.name": "Insira um nome válido para o idioma",
"error.license.format": "Please enter a valid license key", "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": "The license could not be verified", "error.license.verification": "Não foi possível verificar a licença",
"error.page.changeSlug.permission": "error.page.changeSlug.permission": "Não tem permissões para alterar a URL de \"{slug}\"",
"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": "error.page.changeStatus.permission": "O estado desta página não pode ser alterado",
"A página possui erros e não pode ser guardada", "error.page.changeStatus.toDraft.invalid": "A página \"{slug}\" não pode ser convertida para rascunho",
"error.page.changeStatus.permission": "error.page.changeTemplate.invalid": "O tema da página \"{slug}\" não pode ser alterado",
"O estado desta página não pode ser alterado", "error.page.changeTemplate.permission": "Não tem permissões para alterar o tema de \"{slug}\"",
"error.page.changeStatus.toDraft.invalid":
"A página \"{slug}\" não pode ser convertida para rascunho",
"error.page.changeTemplate.invalid":
"O tema da página \"{slug}\" não pode ser alterado",
"error.page.changeTemplate.permission":
"Não tem permissões para alterar o tema de \"{slug}\"",
"error.page.changeTitle.empty": "O título não pode ficar em branco", "error.page.changeTitle.empty": "O título não pode ficar em branco",
"error.page.changeTitle.permission": "error.page.changeTitle.permission": "Não tem permissões para alterar o título de \"{slug}\"",
"Não tem permissões para alterar o título de \"{slug}\"",
"error.page.create.permission": "Não tem permissões para criar \"{slug}\"", "error.page.create.permission": "Não tem permissões para criar \"{slug}\"",
"error.page.delete": "A página \"{slug}\" não pode ser excluída", "error.page.delete": "A página \"{slug}\" não pode ser excluída",
"error.page.delete.confirm": "Por favor, digite o título da página para confirmar", "error.page.delete.confirm": "Por favor, digite o título da página para confirmar",
"error.page.delete.hasChildren": "error.page.delete.hasChildren": "A página possui subpáginas e não pode ser excluída",
"A página possui subpáginas e não pode ser excluída",
"error.page.delete.permission": "Não tem permissões para excluir \"{slug}\"", "error.page.delete.permission": "Não tem permissões para excluir \"{slug}\"",
"error.page.draft.duplicate": "error.page.draft.duplicate": "Um rascunho de página com a URL \"{slug}\" já existe",
"Um rascunho de página com a URL \"{slug}\" já existe", "error.page.duplicate": "Uma página com a URL \"{slug}\" já existe",
"error.page.duplicate": "error.page.duplicate.permission": "Não tem permissão para duplicar \"{slug}\"",
"Uma página com a URL \"{slug}\" já existe",
"error.page.duplicate.permission": "You are not allowed to duplicate \"{slug}\"",
"error.page.notFound": "Página\"{slug}\" não encontrada", "error.page.notFound": "Página\"{slug}\" não encontrada",
"error.page.num.invalid": "error.page.num.invalid": "Digite um número de ordenação válido. Este número não pode ser negativo.",
"Digite um número de ordenação válido. Este número não pode ser negativo.", "error.page.slug.invalid": "Por favor, digite um prefixo de URL válido",
"error.page.slug.invalid": "Por favor, digite uma URL válida",
"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",
"error.page.undefined": "P\u00e1gina n\u00e3o encontrada", "error.page.undefined": "P\u00e1gina n\u00e3o encontrada",
"error.page.update.permission": "Não tem permissões para atualizar \"{slug}\"", "error.page.update.permission": "Não tem permissões para atualizar \"{slug}\"",
"error.section.files.max.plural": "error.section.files.max.plural": "Não pode adicionar mais do que {max} arquivos à seção \"{section}\"",
"Não pode adicionar mais do que {max} arquivos à seção \"{section}\"", "error.section.files.max.singular": "Não pode adicionar mais do que um arquivo à seção \"{section}\"",
"error.section.files.max.singular": "error.section.files.min.plural": "A secção \"{section}\" requer no mínimo {min} arquivos",
"Não pode adicionar mais do que um arquivo à seção \"{section}\"", "error.section.files.min.singular": "A secção \"{section}\" requer no mínimo um arquivo",
"error.section.files.min.plural":
"The \"{section}\" section requires at least {min} files",
"error.section.files.min.singular":
"The \"{section}\" section requires at least one file",
"error.section.pages.max.plural": "error.section.pages.max.plural": "Não pode adicionar mais do que {max} página à seção \"{section}\"",
"Não pode adicionar mais do que {max} página à seção \"{section}\"", "error.section.pages.max.singular": "Não pode adicionar mais do que uma página à seção \"{section}\"",
"error.section.pages.max.singular": "error.section.pages.min.plural": "A secção \"{section}\" requer no mínimo {min} páginas",
"Não pode adicionar mais do que uma página à seção \"{section}\"", "error.section.pages.min.singular": "A secção \"{section}\" requer no mínimo uma página",
"error.section.pages.min.plural":
"The \"{section}\" section requires at least {min} pages",
"error.section.pages.min.singular":
"The \"{section}\" section requires at least one page",
"error.section.notLoaded": "A seção \"{name}\" não pôde ser carregada", "error.section.notLoaded": "A seção \"{name}\" não pôde ser carregada",
"error.section.type.invalid": "O tipo da seção \"{type}\" não é válido", "error.section.type.invalid": "O tipo da seção \"{type}\" não é válido",
"error.site.changeTitle.empty": "O título não pode ficar em branco", "error.site.changeTitle.empty": "O título não pode ficar em branco",
"error.site.changeTitle.permission": "error.site.changeTitle.permission": "Não tem permissões para alterar o título do site",
"Não tem permissões para alterar o título do site",
"error.site.update.permission": "Não tem permissões para atualizar o site", "error.site.update.permission": "Não tem permissões para atualizar o site",
"error.template.default.notFound": "O tema padrão não existe", "error.template.default.notFound": "O tema padrão não existe",
"error.user.changeEmail.permission": "error.user.changeEmail.permission": "Não tem permissões para alterar o email do utilizador \"{name}\"",
"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": "error.user.changeName.permission": "Não tem permissões para alterar o nome do utilizador \"{name}\"",
"Não tem permissões para alterar o idioma do utilizador \"{name}\"", "error.user.changePassword.permission": "Não tem permissões para alterar a palavra-passe do utilizador \"{name}\"",
"error.user.changeName.permission": "error.user.changeRole.lastAdmin": "A função do último administrador não pode ser alterado",
"Não tem permissões para alterar o nome do utilizador \"{name}\"", "error.user.changeRole.permission": "Não tem permissões para alterar a função do utilizador \"{name}\"",
"error.user.changePassword.permission": "error.user.changeRole.toAdmin": "Não tem permissões para promover utilizadores à função de administrador",
"Não tem permissões para alterar a palavra-passe do utilizador \"{name}\"",
"error.user.changeRole.lastAdmin":
"A função do último administrador não pode ser alterado",
"error.user.changeRole.permission":
"Não tem permissões para alterar a função do utilizador \"{name}\"",
"error.user.changeRole.toAdmin":
"You are not allowed to promote someone to the admin role",
"error.user.create.permission": "Não tem permissões para criar este utilizador", "error.user.create.permission": "Não tem permissões para criar este utilizador",
"error.user.delete": "O utilizador \"{name}\" não pode ser excluído", "error.user.delete": "O utilizador \"{name}\" não pode ser excluído",
"error.user.delete.lastAdmin": "O último administrador não pode ser excluído", "error.user.delete.lastAdmin": "O último administrador não pode ser excluído",
"error.user.delete.lastUser": "O último utilizador não pode ser excluído", "error.user.delete.lastUser": "O último utilizador não pode ser excluído",
"error.user.delete.permission": "error.user.delete.permission": "Não tem permissões para excluir o utilizador \"{name}\"",
"Não tem permissões para excluir o utilizador \"{name}\"", "error.user.duplicate": "Um utilizador com o email \"{email}\" já existe",
"error.user.duplicate":
"Um utilizador com o email \"{email}\" já existe",
"error.user.email.invalid": "Digite um endereço de email válido", "error.user.email.invalid": "Digite um endereço de email válido",
"error.user.language.invalid": "Digite um idioma válido", "error.user.language.invalid": "Digite um idioma válido",
"error.user.notFound": "Utilizador \"{name}\" não encontrado", "error.user.notFound": "Utilizador \"{name}\" não encontrado",
"error.user.password.invalid": "error.user.password.invalid": "Digite uma palavra-passe válida. A sua palavra-passe deve ter pelo menos 8 caracteres.",
"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.role.invalid": "Digite uma função válida", "error.user.role.invalid": "Digite uma função válida",
"error.user.update.permission": "error.user.update.permission": "Não tem permissões para atualizar o utilizador \"{name}\"",
"Não tem permissões para atualizar o utilizador \"{name}\"",
"error.validation.accepted": "Por favor, confirme", "error.validation.accepted": "Por favor, confirme",
"error.validation.alpha": "Por favor, use apenas caracteres entre a-z", "error.validation.alpha": "Por favor, use apenas caracteres entre a-z",
"error.validation.alphanum": "error.validation.alphanum": "Por favor, use apenas caracteres entre a-z ou 0-9",
"Por favor, use apenas caracteres entre a-z ou 0-9", "error.validation.between": "Digite um valor entre \"{min}\" e \"{max}\"",
"error.validation.between":
"Digite um valor entre \"{min}\" e \"{max}\"",
"error.validation.boolean": "Por favor, confirme ou rejeite", "error.validation.boolean": "Por favor, confirme ou rejeite",
"error.validation.contains": "error.validation.contains": "Digite um valor que contenha \"{needle}\"",
"Digite um valor que contenha \"{needle}\"",
"error.validation.date": "Escolha uma data válida", "error.validation.date": "Escolha uma data válida",
"error.validation.date.after": "Please enter a date after {date}", "error.validation.date.after": "Escolha uma data posterior a {date}",
"error.validation.date.before": "Please enter a date before {date}", "error.validation.date.before": "Escolha uma data anterior a {date}",
"error.validation.date.between": "Please enter a date between {min} and {max}", "error.validation.date.between": "Escolha uma data compreendida entre {min} e {max}",
"error.validation.denied": "Por favor, cancele", "error.validation.denied": "Por favor, cancele",
"error.validation.different": "O valor deve ser diferente de \"{other}\"", "error.validation.different": "O valor deve ser diferente de \"{other}\"",
"error.validation.email": "Digite um endereço de email válido", "error.validation.email": "Digite um endereço de email válido",
@@ -210,18 +169,14 @@
"error.validation.less": "Digite um valor menor que {max}", "error.validation.less": "Digite um valor menor que {max}",
"error.validation.match": "O valor não combina com o padrão esperado", "error.validation.match": "O valor não combina com o padrão esperado",
"error.validation.max": "Digite um valor igual ou menor que {max}", "error.validation.max": "Digite um valor igual ou menor que {max}",
"error.validation.maxlength": "error.validation.maxlength": "Digite um valor curto. (no máximo {max} caracteres)",
"Digite um valor curto. (no máximo {max} caracteres)",
"error.validation.maxwords": "Digite menos que {max} palavra(s)", "error.validation.maxwords": "Digite menos que {max} palavra(s)",
"error.validation.min": "Digite um valor igual ou maior que {min}", "error.validation.min": "Digite um valor igual ou maior que {min}",
"error.validation.minlength": "error.validation.minlength": "Digite um valor maior. (no mínimo {min} caracteres)",
"Digite um valor maior. (no mínimo {min} caracteres)",
"error.validation.minwords": "Digite ao menos {min} palavra(s)", "error.validation.minwords": "Digite ao menos {min} palavra(s)",
"error.validation.more": "Digite um valor maior que {min}", "error.validation.more": "Digite um valor maior que {min}",
"error.validation.notcontains": "error.validation.notcontains": "Digite um valor que não contenha \"{needle}\"",
"Digite um valor que não contenha \"{needle}\"", "error.validation.notin": "Não digite nenhum destes valores: ({notIn})",
"error.validation.notin":
"Não digite nenhum destes valores: ({notIn})",
"error.validation.option": "Escolha uma opção válida", "error.validation.option": "Escolha uma opção válida",
"error.validation.num": "Digite um número válido", "error.validation.num": "Digite um número válido",
"error.validation.required": "Digite algo", "error.validation.required": "Digite algo",
@@ -231,15 +186,14 @@
"error.validation.time": "Digite uma hora válida", "error.validation.time": "Digite uma hora válida",
"error.validation.url": "Digite uma URL válida", "error.validation.url": "Digite uma URL válida",
"field.required": "The field is required", "field.required": "Este campo é necessário",
"field.files.empty": "Nenhum arquivo selecionado", "field.files.empty": "Nenhum arquivo selecionado",
"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.delete.confirm": "file.delete.confirm": "Deseja realmente excluir <br> <strong>{filename}</strong>?",
"Deseja realmente excluir <br> <strong>{filename}</strong>?",
"files": "Arquivos", "files": "Arquivos",
"files.empty": "Nenhum arquivo", "files.empty": "Nenhum arquivo",
@@ -251,35 +205,28 @@
"installation": "Instalação", "installation": "Instalação",
"installation.completed": "Painel instalado com sucesso", "installation.completed": "Painel instalado com sucesso",
"installation.disabled": "Por padrão, o instalador do painel está desabilitado em servidores públicos. Por favor, execute o instalador numa máquina local ou habilite a opção <code>panel.install</code>.", "installation.disabled": "Por padrão, o instalador do painel está desabilitado em servidores públicos. Por favor, execute o instalador numa máquina local ou habilite a opção <code>panel.install</code>.",
"installation.issues.accounts": "installation.issues.accounts": "A pasta <code>/site/accounts</code> não existe ou não possui permissão de escrita",
"A pasta <code>/site/accounts</code> não existe ou não possui permissão de escrita", "installation.issues.content": "A pasta <code>/content</code> não existe ou não possui permissão de escrita",
"installation.issues.content":
"A pasta <code>/content</code> não existe ou não possui permissão de escrita",
"installation.issues.curl": "A extensão <code>CURL</code> é necessária", "installation.issues.curl": "A extensão <code>CURL</code> é necessária",
"installation.issues.headline": "O painel não pôde ser instalado", "installation.issues.headline": "O painel não pôde ser instalado",
"installation.issues.mbstring": "installation.issues.mbstring": "A extensão <code>MB String</code> é necessária",
"A extensão <code>MB String</code> é necessária", "installation.issues.media": "A pasta <code>/media</code> não existe ou não possui permissão de escrita",
"installation.issues.media":
"A pasta <code>/media</code> não existe ou não possui permissão de escrita",
"installation.issues.php": "Certifique-se que está a usar o <code>PHP 7+</code>", "installation.issues.php": "Certifique-se que está a usar o <code>PHP 7+</code>",
"installation.issues.server": "installation.issues.server": "O Kirby necessita do <code>Apache</code>, <code>Nginx</code> ou <code>Caddy</code>",
"O Kirby necessita do <code>Apache</code>, <code>Nginx</code> ou <code>Caddy</code>",
"installation.issues.sessions": "A pasta <code>/site/sessions</code> não existe ou não possui permissão de escrita", "installation.issues.sessions": "A pasta <code>/site/sessions</code> não existe ou não possui permissão de escrita",
"language": "Idioma", "language": "Idioma",
"language.code": "Código", "language.code": "Código",
"language.convert": "Tornar padrão", "language.convert": "Tornar padrão",
"language.convert.confirm": "language.convert.confirm": "<p>Deseja realmente converter <strong>{name}</strong> para o idioma padrão? Esta ação não poderá ser revertida.</p><p>Se <strong>{name}</strong> tiver conteúdo não traduzido, partes do seu site poderão ficar sem conteúdo.</p>",
"<p>Deseja realmente converter <strong>{name}</strong> para o idioma padrão? Esta ação não poderá ser revertida.</p><p>Se <strong>{name}</strong> tiver conteúdo não traduzido, partes do seu site poderão ficar sem conteúdo.</p>",
"language.create": "Adicionar novo idioma", "language.create": "Adicionar novo idioma",
"language.delete.confirm": "language.delete.confirm": "Deseja realmente excluir o idioma <strong>{name}</strong> incluíndo todas as traduções? Esta ação não poderá ser revertida!",
"Deseja realmente excluir o idioma <strong>{name}</strong> incluíndo todas as traduções? Esta ação não poderá ser revertida!",
"language.deleted": "Idioma excluído", "language.deleted": "Idioma excluído",
"language.direction": "Direção de leitura", "language.direction": "Direção de leitura",
"language.direction.ltr": "Esquerda para direita", "language.direction.ltr": "Esquerda para direita",
"language.direction.rtl": "Direita para esquerda", "language.direction.rtl": "Direita para esquerda",
"language.locale": "String de localização do PHP", "language.locale": "String de localização do PHP",
"language.locale.warning": "You are using a custom locale set up. Please modify it in the language file in /site/languages", "language.locale.warning": "Está a usar configurações de localização personalizadas. Corrija as mesmas no ficheiro /site/languages",
"language.name": "Nome", "language.name": "Nome",
"language.updated": "Idioma atualizado", "language.updated": "Idioma atualizado",
@@ -292,8 +239,7 @@
"license": "Licen\u00e7a do Kirby ", "license": "Licen\u00e7a do Kirby ",
"license.buy": "Comprar uma licença", "license.buy": "Comprar uma licença",
"license.register": "Registrar", "license.register": "Registrar",
"license.register.help": "license.register.help": "Recebeu o código da sua licença por email após a compra. Por favor, copie e cole-o para completar o registro.",
"Recebeu o código da sua licença por email após a compra. Por favor, copie e cole-o para completar o registro.",
"license.register.label": "Por favor, digite o código da sua licença", "license.register.label": "Por favor, digite o código da sua licença",
"license.register.success": "Obrigado por apoiar o Kirby", "license.register.success": "Obrigado por apoiar o Kirby",
"license.unregistered": "Esta é uma demonstração não registrada do Kirby", "license.unregistered": "Esta é uma demonstração não registrada do Kirby",
@@ -303,13 +249,13 @@
"loading": "A carregar", "loading": "A carregar",
"lock.unsaved": "Unsaved changes", "lock.unsaved": "Alterações por guardar",
"lock.unsaved.empty": "There are no more unsaved changes", "lock.unsaved.empty": "Não existem alterações por guardar",
"lock.isLocked": "Unsaved changes by <strong>{email}</strong>", "lock.isLocked": "Alterações por guardar de <strong>{email}</strong>",
"lock.file.isLocked": "The file is currently being edited by {email} and cannot be changed.", "lock.file.isLocked": "O arquivo está a ser editado por {email} e não pode ser alterado.",
"lock.page.isLocked": "The page is currently being edited by {email} and cannot be changed.", "lock.page.isLocked": "A página está a ser editada por {email} e não pode ser alterada.",
"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": "As suas alterações foram sobrepostas por outro utilizador. Pode descarregar as suas alterações e combiná-las manualmente.",
"login": "Entrar", "login": "Entrar",
"login.remember": "Manter-me conectado", "login.remember": "Manter-me conectado",
@@ -354,19 +300,16 @@
"page.changeStatus.position": "Selecione uma posição", "page.changeStatus.position": "Selecione uma posição",
"page.changeStatus.select": "Selecione um novo estado", "page.changeStatus.select": "Selecione um novo estado",
"page.changeTemplate": "Alterar tema", "page.changeTemplate": "Alterar tema",
"page.delete.confirm": "page.delete.confirm": "Deseja realmente excluir <strong>{title}</strong>?",
"Deseja realmente excluir <strong>{title}</strong>?", "page.delete.confirm.subpages": "<strong>Esta página possui subpáginas</strong>. <br>Todas as subpáginas serão excluídas também.",
"page.delete.confirm.subpages":
"<strong>Esta página possui subpáginas</strong>. <br>Todas as subpáginas serão excluídas também.",
"page.delete.confirm.title": "Digite o título da página para confirmar", "page.delete.confirm.title": "Digite o título da página para confirmar",
"page.draft.create": "Criar rascunho", "page.draft.create": "Criar rascunho",
"page.duplicate.appendix": "Copiar", "page.duplicate.appendix": "Copiar",
"page.duplicate.files": "Copy files", "page.duplicate.files": "Copiar arquivos",
"page.duplicate.pages": "Copy pages", "page.duplicate.pages": "Copiar páginas",
"page.status": "Estado", "page.status": "Estado",
"page.status.draft": "Rascunho", "page.status.draft": "Rascunho",
"page.status.draft.description": "page.status.draft.description": "A página está em modo de rascunho e é visível somente para editores",
"A página está em modo de rascunho e é visível somente para editores",
"page.status.listed": "Pública", "page.status.listed": "Pública",
"page.status.listed.description": "A página é pública para todos", "page.status.listed.description": "A página é pública para todos",
"page.status.unlisted": "Não listadas", "page.status.unlisted": "Não listadas",
@@ -388,20 +331,21 @@
"replace": "Substituir", "replace": "Substituir",
"retry": "Tentar novamente", "retry": "Tentar novamente",
"revert": "Descartar", "revert": "Descartar",
"revert.confirm": "Tem a certeza que pretende <strong>eliminar todas as alterações por guardar</strong>?",
"role": "Função", "role": "Função",
"role.admin.description": "The admin has all rights", "role.admin.description": "O administrador tem todas as permissões.",
"role.admin.title": "Admin", "role.admin.title": "Administrador",
"role.all": "Todos", "role.all": "Todos",
"role.empty": "Não há utilizadores com esta função", "role.empty": "Não há utilizadores com esta função",
"role.description.placeholder": "Sem descrição", "role.description.placeholder": "Sem descrição",
"role.nobody.description": "This is a fallback role without any permissions", "role.nobody.description": "Esta é uma função de salvaguarda sem permissões.",
"role.nobody.title": "Nobody", "role.nobody.title": "Ninguém",
"save": "Salvar", "save": "Salvar",
"search": "Buscar", "search": "Buscar",
"section.required": "The section is required", "section.required": "Esta seção é necessária",
"select": "Selecionar", "select": "Selecionar",
"settings": "Configurações", "settings": "Configurações",
@@ -421,8 +365,8 @@
"toolbar.button.heading.3": "Título 3", "toolbar.button.heading.3": "Título 3",
"toolbar.button.italic": "Itálico", "toolbar.button.italic": "Itálico",
"toolbar.button.file": "Ficheiro", "toolbar.button.file": "Ficheiro",
"toolbar.button.file.select": "Select a file", "toolbar.button.file.select": "Selecione o arquivo",
"toolbar.button.file.upload": "Upload a file", "toolbar.button.file.upload": "Carregue o arquivo",
"toolbar.button.link": "Link", "toolbar.button.link": "Link",
"toolbar.button.ol": "Lista ordenada", "toolbar.button.ol": "Lista ordenada",
"toolbar.button.ul": "Lista não-ordenada", "toolbar.button.ul": "Lista não-ordenada",
@@ -433,17 +377,17 @@
"translation.locale": "pt_PT", "translation.locale": "pt_PT",
"upload": "Enviar", "upload": "Enviar",
"upload.error.cantMove": "The uploaded file could not be moved", "upload.error.cantMove": "Não foi possível mover o arquivo carregado",
"upload.error.cantWrite": "Failed to write file to disk", "upload.error.cantWrite": "Não foi possível guardar o arquivo no sistema de ficheiros.",
"upload.error.default": "The file could not be uploaded", "upload.error.default": "Não foi possível carregar o arquivo",
"upload.error.extension": "File upload stopped by extension", "upload.error.extension": "A extensão do arquivo não permite o carregamento",
"upload.error.formSize": "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the form", "upload.error.formSize": "O arquivo excede o tamanho MAX_FILE_SIZE",
"upload.error.iniPostSize": "The uploaded file exceeds the post_max_size directive in php.ini", "upload.error.iniPostSize": "O arquivo excede o tamanho post_max_size",
"upload.error.iniSize": "The uploaded file exceeds the upload_max_filesize directive in php.ini", "upload.error.iniSize": "O arquivo carregado excede a definição upload_max_filesize do php.ini",
"upload.error.noFile": "No file was uploaded", "upload.error.noFile": "Nenhum arquivo carregado",
"upload.error.noFiles": "No files were uploaded", "upload.error.noFiles": "Nenhuns arquivos carregados",
"upload.error.partial": "The uploaded file was only partially uploaded", "upload.error.partial": "O arquivo foi parcialmente carregado",
"upload.error.tmpDir": "Missing a temporary folder", "upload.error.tmpDir": "Pasta temporária em falta",
"upload.errors": "Erro", "upload.errors": "Erro",
"upload.progress": "A enviar…", "upload.progress": "A enviar…",
@@ -451,8 +395,7 @@
"url.placeholder": "https://exemplo.pt", "url.placeholder": "https://exemplo.pt",
"user": "Utilizador", "user": "Utilizador",
"user.blueprint": "user.blueprint": "Pode definir seções e campos de formulário adicionais para esta função de utilizador em <strong>/site/blueprints/users/{role}.yml</strong>",
"Pode definir seções e campos de formulário adicionais para esta função de utilizador em <strong>/site/blueprints/users/{role}.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",
@@ -463,8 +406,7 @@
"user.changeRole.select": "Selecione uma nova função", "user.changeRole.select": "Selecione uma nova função",
"user.create": "Adicionar novo utilizador", "user.create": "Adicionar novo utilizador",
"user.delete": "Excluir este utilizador", "user.delete": "Excluir este utilizador",
"user.delete.confirm": "user.delete.confirm": "Deseja realmente excluir <br><strong>{email}</strong>?",
"Deseja realmente excluir <br><strong>{email}</strong>?",
"users": "Utilizadores", "users": "Utilizadores",

View File

@@ -5,7 +5,7 @@
"cancel": "\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c", "cancel": "\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c",
"change": "\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c", "change": "\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c",
"close": "\u0417\u0430\u043a\u0440\u044b\u0442\u044c", "close": "\u0417\u0430\u043a\u0440\u044b\u0442\u044c",
"confirm": "Сохранить", "confirm": "Ок",
"copy": "Скопировать", "copy": "Скопировать",
"create": "Создать", "create": "Создать",
@@ -34,7 +34,7 @@
"dialog.users.empty": "Нет пользователей для выбора", "dialog.users.empty": "Нет пользователей для выбора",
"email": "Эл. почта", "email": "Эл. почта",
"email.placeholder": "pochta@domen.com", "email.placeholder": "mail@example.com",
"error.access.login": "Неправильный логин", "error.access.login": "Неправильный логин",
"error.access.panel": "У вас нет права доступа к панели", "error.access.panel": "У вас нет права доступа к панели",
@@ -42,10 +42,8 @@
"error.avatar.create.fail": "Не удалось загрузить фотографию профиля", "error.avatar.create.fail": "Не удалось загрузить фотографию профиля",
"error.avatar.delete.fail": "\u0410\u0432\u0430\u0442\u0430\u0440 (\u0444\u043e\u0442\u043e) \u043a \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0443 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0443\u0434\u0430\u043b\u0435\u043d", "error.avatar.delete.fail": "\u0410\u0432\u0430\u0442\u0430\u0440 (\u0444\u043e\u0442\u043e) \u043a \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0443 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0443\u0434\u0430\u043b\u0435\u043d",
"error.avatar.dimensions.invalid": "error.avatar.dimensions.invalid": "Пожалуйста, сделайте чтобы ширина или высота фотографии была меньше 3000 пикселей",
"Пожалуйста, сделайте чтобы ширина или высота фотографии была меньше 3000 пикселей", "error.avatar.mime.forbidden": "Фотография профиля должна быть JPEG или PNG",
"error.avatar.mime.forbidden":
"Фотография профиля должна быть JPEG или PNG",
"error.blueprint.notFound": "Не удалось загрузить blueprint \"{name}\"", "error.blueprint.notFound": "Не удалось загрузить blueprint \"{name}\"",
@@ -54,22 +52,17 @@
"error.field.converter.invalid": "Неверный конвертер \"{converter}\"", "error.field.converter.invalid": "Неверный конвертер \"{converter}\"",
"error.file.changeName.empty": "Название не может быть пустым", "error.file.changeName.empty": "Название не может быть пустым",
"error.file.changeName.permission": "error.file.changeName.permission": "У вас нет права поменять название \"{filename}\"",
"У вас нет права поменять название \"{filename}\"",
"error.file.duplicate": "Файл с названием \"{filename}\" уже есть", "error.file.duplicate": "Файл с названием \"{filename}\" уже есть",
"error.file.extension.forbidden": "error.file.extension.forbidden": "Расширение файла \"{extension}\" неразрешено",
"Расширение файла \"{extension}\" неразрешено", "error.file.extension.missing": айлу \"{filename}\" не хватает расширения",
"error.file.extension.missing":
"Файлу \"{filename}\" не хватает расширения",
"error.file.maxheight": "Высота картинки не должна превышать {height} px", "error.file.maxheight": "Высота картинки не должна превышать {height} px",
"error.file.maxsize": "Файл слишком большой", "error.file.maxsize": "Файл слишком большой",
"error.file.maxwidth": "Ширина картинки не должна превышать {width} px", "error.file.maxwidth": "Ширина картинки не должна превышать {width} px",
"error.file.mime.differs": "error.file.mime.differs": "Загруженный файл должен быть того же mime типа: \"{mime}\"",
"Загруженный файл должен быть того же mime типа: \"{mime}\"",
"error.file.mime.forbidden": "Тип медиа \"{mime}\" не допустим", "error.file.mime.forbidden": "Тип медиа \"{mime}\" не допустим",
"error.file.mime.invalid": "Неверный тип mime: {mime}", "error.file.mime.invalid": "Неверный тип mime: {mime}",
"error.file.mime.missing": "error.file.mime.missing": "Не удалось определить тип медиа для файла \"{filename}\"",
"Не удалось определить тип медиа для файла \"{filename}\"",
"error.file.minheight": "Высота файла должна быть хотя бы {height} px", "error.file.minheight": "Высота файла должна быть хотя бы {height} px",
"error.file.minsize": "Файл слишком маленький", "error.file.minsize": "Файл слишком маленький",
"error.file.minwidth": "Ширина файла должна быть хотя бы {width} px", "error.file.minwidth": "Ширина файла должна быть хотя бы {width} px",
@@ -90,146 +83,108 @@
"error.license.email": "Пожалуйста, введите правильный адрес эл. почты", "error.license.email": "Пожалуйста, введите правильный адрес эл. почты",
"error.license.verification": "Лицензия не подтверждена", "error.license.verification": "Лицензия не подтверждена",
"error.page.changeSlug.permission": "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",
"\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.toDraft.invalid": "Невозможно конвертировать в черновик страницу \"{slug}\"",
"error.page.changeStatus.permission": "error.page.changeTemplate.invalid": "Невозможно поменять шаблон страницы \"{slug}\"",
"Невозможно поменять статус для этой страницы", "error.page.changeTemplate.permission": "У вас нет права поменять шаблон для \"{slug}\"",
"error.page.changeStatus.toDraft.invalid":
"Невозможно конвертировать в черновик страницу \"{slug}\"",
"error.page.changeTemplate.invalid":
"Невозможно поменять шаблон страницы \"{slug}\"",
"error.page.changeTemplate.permission":
"У вас нет права поменять шаблон для \"{slug}\"",
"error.page.changeTitle.empty": "Название не может быть пустым", "error.page.changeTitle.empty": "Название не может быть пустым",
"error.page.changeTitle.permission": "error.page.changeTitle.permission": "у вас нет права поменять название \"{slug}\"",
"у вас нет права поменять название \"{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": "Впишите название страницы чтобы подтвердить",
"error.page.delete.hasChildren": "error.page.delete.hasChildren": "У страницы есть внутренние страницы, поэтому ее невозможно удалить",
"У страницы есть внутренние страницы, поэтому ее невозможно удалить",
"error.page.delete.permission": "У вас нет права удалить \"{slug}\"", "error.page.delete.permission": "У вас нет права удалить \"{slug}\"",
"error.page.draft.duplicate": "error.page.draft.duplicate": "Черновик страницы с аппендиксом URL \"{slug}\" уже есть",
"Черновик страницы с аппендиксом URL \"{slug}\" уже есть", "error.page.duplicate": "Страница с аппендиксом URL \"{slug}\" уже есть",
"error.page.duplicate":
"Страница с аппендиксом URL \"{slug}\" уже есть",
"error.page.duplicate.permission": "У вас нет права дублировать \"{slug}\"", "error.page.duplicate.permission": "У вас нет права дублировать \"{slug}\"",
"error.page.notFound": "\u0421\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u0430", "error.page.notFound": "\u0421\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u0430",
"error.page.num.invalid": "error.page.num.invalid": "Пожалуйста, впишите правильное число сортировки. Число не может быть отрицательным.",
"Пожалуйста, впишите правильное число сортировки. Число не может быть отрицательным.",
"error.page.slug.invalid": "Пожалуйста, впишите правильный префикс URL", "error.page.slug.invalid": "Пожалуйста, впишите правильный префикс URL",
"error.page.sort.permission": "Невозможно сортировать страницу \"{slug}\"", "error.page.sort.permission": "Невозможно сортировать страницу \"{slug}\"",
"error.page.status.invalid": "Пожалуйста, установите верный статус страницы", "error.page.status.invalid": "Пожалуйста, установите верный статус страницы",
"error.page.undefined": "\u0421\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u0430", "error.page.undefined": "\u0421\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u0430",
"error.page.update.permission": "У вас нет права обновить \"{slug}\"", "error.page.update.permission": "У вас нет права обновить \"{slug}\"",
"error.section.files.max.plural": "error.section.files.max.plural": "Нельзя добавить больше чем {max} файлов в секции \"{section}\"",
"Нельзя добавить больше чем {max} файлов в секции \"{section}\"", "error.section.files.max.singular": "Можно добавить не больше 1 файла в секции \"{section}\"",
"error.section.files.max.singular": "error.section.files.min.plural": "Секция \"{section}\" требует хотя бы {min} файлов",
"Можно добавить не больше 1 файла в секции \"{section}\"", "error.section.files.min.singular": "Секция \"{section}\" требует хотя бы 1 файл",
"error.section.files.min.plural":
"Секция \"{section}\" требует хотя бы {min} файлов",
"error.section.files.min.singular":
"Секция \"{section}\" требует хотя бы 1 файл",
"error.section.pages.max.plural": "error.section.pages.max.plural": "Можно добавить не больше {max} страниц в секции \"{section}\"",
"Можно добавить не больше {max} страниц в секции \"{section}\"", "error.section.pages.max.singular": "Нельзя добавить больше чем 1 страницу в секции \"{section}\"",
"error.section.pages.max.singular": "error.section.pages.min.plural": "Секция \"{section}\" требует хотя бы {min} страниц",
"Нельзя добавить больше чем 1 страницу в секции \"{section}\"", "error.section.pages.min.singular": "Секция \"{section}\" требует хотя бы одну страницу",
"error.section.pages.min.plural":
"Секция \"{section}\" требует хотя бы {min} страниц",
"error.section.pages.min.singular":
"Секция \"{section}\" требует хотя бы одну страницу",
"error.section.notLoaded": "Секция \"{name}\" не может быть загружена", "error.section.notLoaded": "Секция \"{name}\" не может быть загружена",
"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": "error.user.changeEmail.permission": "У вас нет права поменять эл. почту пользователя \"{name}\"",
"У вас нет права поменять эл. почту пользователя \"{name}\"", "error.user.changeLanguage.permission": "У вас нет права поменять язык для пользователя \"{name}\"",
"error.user.changeLanguage.permission": "error.user.changeName.permission": "У вас нет права поменять имя пользователя \"{name}\"",
"У вас нет права поменять язык для пользователя \"{name}\"", "error.user.changePassword.permission": "У вас нет права поменять пароль для пользователя \"{name}\"",
"error.user.changeName.permission": "error.user.changeRole.lastAdmin": "Роль единственного администратора нельзя поменять",
"У вас нет права поменять имя пользователя \"{name}\"", "error.user.changeRole.permission": "У вас нет права поменять поль для пользователя \"{name}\"",
"error.user.changePassword.permission": "error.user.changeRole.toAdmin": "У вас нет прав предоставить роль администратора",
"У вас нет права поменять пароль для пользователя \"{name}\"",
"error.user.changeRole.lastAdmin":
"Роль единственного администратора нельзя поменять",
"error.user.changeRole.permission":
"У вас нет права поменять поль для пользователя \"{name}\"",
"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",
"error.user.delete.lastAdmin": "\u0412\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430", "error.user.delete.lastAdmin": "\u0412\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430",
"error.user.delete.lastUser": "Нельзя удалить единственного пользователя", "error.user.delete.lastUser": "Нельзя удалить единственного пользователя",
"error.user.delete.permission": "error.user.delete.permission": "У вас нет права удалить пользователя \"{name}\"",
"У вас нет права удалить пользователя \"{name}\"", "error.user.duplicate": "Пользователь с эл. почтой \"{email}\" уже есть",
"error.user.duplicate":
"Пользователь с эл. почтой \"{email}\" уже есть",
"error.user.email.invalid": "Пожалуйста, введите правильный адрес эл. почты", "error.user.email.invalid": "Пожалуйста, введите правильный адрес эл. почты",
"error.user.language.invalid": "Впишите правильный язык", "error.user.language.invalid": "Введите правильный язык",
"error.user.notFound": "\u0410\u043a\u043a\u0430\u0443\u043d\u0442 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d", "error.user.notFound": "\u0410\u043a\u043a\u0430\u0443\u043d\u0442 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d",
"error.user.password.invalid": "error.user.password.invalid": "Пожалуйста, введите правильный пароль. Он должен состоять минимум из 8 символов.",
"Пожалуйста, впишите правильный пароль. Он должен быть минимум из 8 символов.",
"error.user.password.notSame": "\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u0435 \u043f\u0430\u0440\u043e\u043b\u044c", "error.user.password.notSame": "\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u0435 \u043f\u0430\u0440\u043e\u043b\u044c",
"error.user.password.undefined": "У пользователя нет пароля", "error.user.password.undefined": "У пользователя нет пароля",
"error.user.role.invalid": "Впишите правильную роль", "error.user.role.invalid": "Введите правильную роль",
"error.user.update.permission": "error.user.update.permission": "У вас нет права обновить пользователя \"{name}\"",
"У вас нет права обновить пользователя \"{name}\"",
"error.validation.accepted": "Пожалуйста, подтвердите", "error.validation.accepted": "Пожалуйста, подтвердите",
"error.validation.alpha": "Пожалуйста, впишите только буквы a-z", "error.validation.alpha": "Пожалуйста, введите только буквы a-z",
"error.validation.alphanum": "error.validation.alphanum": "Пожалуйста, введите только буквы a-z или числа 0-9",
"Пожалуйста, впишите только буквы a-z или числа 0-9", "error.validation.between": "Пожалуйста, введите значение от \"{min}\" до \"{max}\"",
"error.validation.between":
"Пожалуйста, впишите значение от \"{min}\" до \"{max}\"",
"error.validation.boolean": "Пожалуйста, подтвердите или отмените", "error.validation.boolean": "Пожалуйста, подтвердите или отмените",
"error.validation.contains": "error.validation.contains": "Пожалуйста, впишите значение, которое содержит \"{needle}\"",
"Пожалуйста, впишите значение, которое содержит \"{needle}\"", "error.validation.date": "Пожалуйста, укажите правильную дату",
"error.validation.date": "Пожалуйста, впишите правильную дату", "error.validation.date.after": "Пожалуйста, укажите дату после {date}",
"error.validation.date.after": "Пожалуйста, впишите дату после {date}", "error.validation.date.before": "Пожалуйста, укажите дату до {date}",
"error.validation.date.before": "Пожалуйста, впишите дату до {date}", "error.validation.date.between": "Пожалуйста, укажите дату между {min} и {max}",
"error.validation.date.between": "Пожалуйста, впишите дату между {min} и {max}",
"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": "Пожалуйста, введите правильное целое число",
"error.validation.ip": "Пожалуйста, впишите правильный IP адрес", "error.validation.ip": "Пожалуйста, введите правильный IP адрес",
"error.validation.less": "Пожалуйста, впишите значение меньше чем {max}", "error.validation.less": "Пожалуйста, введите значение меньше чем {max}",
"error.validation.match": "Значение не соответствует ожидаемому шаблону", "error.validation.match": "Значение не соответствует ожидаемому шаблону",
"error.validation.max": "Пожалуйста, впишите значение равное или больше чем {max}", "error.validation.max": "Пожалуйста, введите значение равное или больше чем {max}",
"error.validation.maxlength": "error.validation.maxlength": "Пожалуйста, введите значение короче (макс. {max} символов)",
"Пожалуйста, впишите значение короче (макс. {max} символов)", "error.validation.maxwords": "Пожалуйста, введите не более {max} слов ",
"error.validation.maxwords": "Пожалуйста, впишите не более {max} слов ", "error.validation.min": "Пожалуйста, введите значение равное или больше чем {min}",
"error.validation.min": "Пожалуйста, впишите значение равное или больше чем {min}", "error.validation.minlength": "Пожалуйста, введите значение длиннее (мин. {min} символов)",
"error.validation.minlength": "error.validation.minwords": "Пожалуйста, введите хотя бы {min} слов",
"Пожалуйста, впишите значение длиннее (мин. {min} символов)", "error.validation.more": "Пожалуйста, введите значение больше, чем {min}",
"error.validation.minwords": "Пожалуйста, впишите хотя бы {min} слов", "error.validation.notcontains": "Пожалуйста, введите значение, которое не содержит \"{needle}\"",
"error.validation.more": "Пожалуйста, впишите значение больше, чем {min}", "error.validation.notin": "Пожалуйста, не вписывайте одно из: ({notIn})",
"error.validation.notcontains":
"Пожалуйста, впишите значение, которое не содержит \"{needle}\"",
"error.validation.notin":
"Пожалуйста, не вписывайте одно из: ({notIn})",
"error.validation.option": "Пожалуйста, выберите правильную опцию ", "error.validation.option": "Пожалуйста, выберите правильную опцию ",
"error.validation.num": "Пожалуйста, впишите правильный номер", "error.validation.num": "Пожалуйста, введите правильный номер",
"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.url": "Пожалуйста, впишите правильный URL", "error.validation.url": "Пожалуйста, введите правильный URL",
"field.required": "Поле обязательно", "field.required": "Поле обязательно",
"field.files.empty": "Еще не выбраны файлы", "field.files.empty": "Еще не выбраны файлы",
@@ -238,8 +193,7 @@
"field.structure.empty": "Еще нет записей", "field.structure.empty": "Еще нет записей",
"field.users.empty": "Еще нет пользователей", "field.users.empty": "Еще нет пользователей",
"file.delete.confirm": "file.delete.confirm": "Вы точно хотите удалить файл <br><strong>{filename}</strong>?",
"Вы точно хотите удалить файл?",
"files": "Файлы", "files": "Файлы",
"files.empty": "Еще нет файлов", "files.empty": "Еще нет файлов",
@@ -251,29 +205,22 @@
"installation": "Установка", "installation": "Установка",
"installation.completed": "Панель установлена", "installation.completed": "Панель установлена",
"installation.disabled": "Установка панели по умолчанию отключена на общедоступных серверах. Пожалуйста запустите установку на локальном сервере или включите такую возможность с помощью опции <code>panel.install</code>", "installation.disabled": "Установка панели по умолчанию отключена на общедоступных серверах. Пожалуйста запустите установку на локальном сервере или включите такую возможность с помощью опции <code>panel.install</code>",
"installation.issues.accounts": "installation.issues.accounts": "Каталог <code>/site/accounts</code> не существует или не имеет прав записи",
"Каталог <code>/site/accounts</code> не существует или не имеет прав записи", "installation.issues.content": "Каталог <code>/content</code> не существует или не имеет прав записи",
"installation.issues.content":
"Каталог <code>/content</code> не существует или не имеет прав записи",
"installation.issues.curl": "Расширение <code>CURL</code> необходимо", "installation.issues.curl": "Расширение <code>CURL</code> необходимо",
"installation.issues.headline": "Не удалось установить панель", "installation.issues.headline": "Не удалось установить панель",
"installation.issues.mbstring": "installation.issues.mbstring": "Расширение <code>MB String</code> необходимо",
"Расширение <code>MB String</code> необходимо", "installation.issues.media": "Каталог <code>/media</code> не существует или нет прав записи",
"installation.issues.media":
"Каталог <code>/media</code> не существует или нет прав записи",
"installation.issues.php": "Убедитесь, что используется <code>PHP 7+</code>", "installation.issues.php": "Убедитесь, что используется <code>PHP 7+</code>",
"installation.issues.server": "installation.issues.server": "Kirby требует <code>Apache</code>, <code>Nginx</code> или <code>Caddy</code> ",
"Kirby требует <code>Apache</code>, <code>Nginx</code> или <code>Caddy</code> ",
"installation.issues.sessions": "Каталог <code>/site/sessions</code> не существует или нет прав записи", "installation.issues.sessions": "Каталог <code>/site/sessions</code> не существует или нет прав записи",
"language": "\u042f\u0437\u044b\u043a", "language": "\u042f\u0437\u044b\u043a",
"language.code": "Код", "language.code": "Код",
"language.convert": "Установить по умолчанию", "language.convert": "Установить по умолчанию",
"language.convert.confirm": "language.convert.confirm": "<p>Вы точно хотите конвертировать <strong>{name}</strong> в главный язык? Это нельзя будет отменить.</p><p>Если <strong>{name}</strong> имеет непереведенный контент, то больше не будет верного каскада и части вашего сайта могут быть пустыми.</p>",
"<p>Вы точно хотите конвертировать <strong>{name}</strong> в главный язык? Это нельзя будет отменить.</p><p>Если <strong>{name}</strong> имеет непереведенный контент, то больше не будет верного каскада и части вашего сайта могут быть пустыми.</p>",
"language.create": "Добавить новый язык", "language.create": "Добавить новый язык",
"language.delete.confirm": "language.delete.confirm": "Вы точно хотите удалить <strong>{name}</strong> язык, включая все переводы? Это нельзя будет вернуть.",
"Вы точно хотите удалить <strong>{name}</strong> язык, включая все переводы? Это нельзя будет вернуть.",
"language.deleted": "Язык удален", "language.deleted": "Язык удален",
"language.direction": "Направление чтения", "language.direction": "Направление чтения",
"language.direction.ltr": "Слева направо", "language.direction.ltr": "Слева направо",
@@ -292,8 +239,7 @@
"license": "\u041b\u0438\u0446\u0435\u043d\u0437\u0438\u044f Kirby", "license": "\u041b\u0438\u0446\u0435\u043d\u0437\u0438\u044f Kirby",
"license.buy": "Купить лицензию", "license.buy": "Купить лицензию",
"license.register": "Зарегистрировать", "license.register": "Зарегистрировать",
"license.register.help": "license.register.help": "После покупки вы получили по эл. почте код лицензии. Пожалуйста скопируйте и вставьте сюда чтобы зарегистрировать.",
"После покупки вы получили по эл. почте код лицензии. Пожалуйста скопируйте и вставьте сюда чтобы зарегистрировать.",
"license.register.label": "Пожалуйста вставьте код лицензии", "license.register.label": "Пожалуйста вставьте код лицензии",
"license.register.success": "Спасибо за поддержку Kirby", "license.register.success": "Спасибо за поддержку Kirby",
"license.unregistered": "Это незарегистрированная версия Kirby", "license.unregistered": "Это незарегистрированная версия Kirby",
@@ -325,7 +271,7 @@
"months.april": "\u0410\u043f\u0440\u0435\u043b\u044c", "months.april": "\u0410\u043f\u0440\u0435\u043b\u044c",
"months.august": "\u0410\u0432\u0433\u0443\u0441\u0442", "months.august": "\u0410\u0432\u0433\u0443\u0441\u0442",
"months.december": "\u0414\u0435\u043a\u0430\u0431\u0440\u044c", "months.december": "\u0414\u0435\u043a\u0430\u0431\u0440\u044c",
"months.february": "\u0424\u0435\u0432\u0440\u0430\u043b\u044c", "months.february": "Февраль",
"months.january": "\u042f\u043d\u0432\u0430\u0440\u044c", "months.january": "\u042f\u043d\u0432\u0430\u0440\u044c",
"months.july": "\u0418\u044e\u043b\u044c", "months.july": "\u0418\u044e\u043b\u044c",
"months.june": "\u0418\u044e\u043d\u044c", "months.june": "\u0418\u044e\u043d\u044c",
@@ -354,10 +300,8 @@
"page.changeStatus.position": "Пожалуйста, выберите позицию", "page.changeStatus.position": "Пожалуйста, выберите позицию",
"page.changeStatus.select": "Выбрать новый статус", "page.changeStatus.select": "Выбрать новый статус",
"page.changeTemplate": "Поменять шаблон", "page.changeTemplate": "Поменять шаблон",
"page.delete.confirm": "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": "Напишите название страницы, чтобы подтвердить",
"page.draft.create": "Создать черновик", "page.draft.create": "Создать черновик",
"page.duplicate.appendix": "Скопировать", "page.duplicate.appendix": "Скопировать",
@@ -365,8 +309,7 @@
"page.duplicate.pages": "Копировать страницы", "page.duplicate.pages": "Копировать страницы",
"page.status": "Статус", "page.status": "Статус",
"page.status.draft": "Черновик", "page.status.draft": "Черновик",
"page.status.draft.description": "page.status.draft.description": "Страница находится в черновом режиме и видна только зарегистрированным пользователям или по секретной ссылке",
"Страница в режиме черновика и видна только для авторизированных редакторов",
"page.status.listed": "Опубликована", "page.status.listed": "Опубликована",
"page.status.listed.description": "Страница доступна для всех посетителей", "page.status.listed.description": "Страница доступна для всех посетителей",
"page.status.unlisted": "Скрыта", "page.status.unlisted": "Скрыта",
@@ -388,10 +331,11 @@
"replace": "\u0417\u0430\u043c\u0435\u043d\u0438\u0442\u044c", "replace": "\u0417\u0430\u043c\u0435\u043d\u0438\u0442\u044c",
"retry": "\u041f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c", "retry": "\u041f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c",
"revert": "\u0421\u0431\u0440\u043e\u0441", "revert": "\u0421\u0431\u0440\u043e\u0441",
"revert.confirm": "Вы действительно хотите <strong>удалить все несохраненные изменения</strong>?",
"role": "\u0420\u043e\u043b\u044c", "role": "\u0420\u043e\u043b\u044c",
"role.admin.description": "Admin имеет все права", "role.admin.description": "Администратор имеет все права",
"role.admin.title": "Admin", "role.admin.title": "Администратор",
"role.all": "Все", "role.all": "Все",
"role.empty": "Нет пользователей с такой ролью", "role.empty": "Нет пользователей с такой ролью",
"role.description.placeholder": "Без описания", "role.description.placeholder": "Без описания",
@@ -414,12 +358,12 @@
"toolbar.button.code": "Код", "toolbar.button.code": "Код",
"toolbar.button.bold": "\u0416\u0438\u0440\u043d\u044b\u0439 \u0448\u0440\u0438\u0444\u0442", "toolbar.button.bold": "\u0416\u0438\u0440\u043d\u044b\u0439 \u0448\u0440\u0438\u0444\u0442",
"toolbar.button.email": "\u042d\u043b.\u043f\u043e\u0447\u0442\u0430", "toolbar.button.email": "Эл. почта",
"toolbar.button.headings": "Заголовки", "toolbar.button.headings": "Заголовки",
"toolbar.button.heading.1": "Заголовок 1", "toolbar.button.heading.1": "Заголовок 1",
"toolbar.button.heading.2": "Заголовок 2", "toolbar.button.heading.2": "Заголовок 2",
"toolbar.button.heading.3": "Заголовок 3", "toolbar.button.heading.3": "Заголовок 3",
"toolbar.button.italic": "\u041d\u0430\u043a\u043b\u043e\u043d\u043d\u044b\u0439 \u0448\u0440\u0438\u0444\u0442", "toolbar.button.italic": "Курсив",
"toolbar.button.file": "Файл", "toolbar.button.file": "Файл",
"toolbar.button.file.select": "Выбрать файл", "toolbar.button.file.select": "Выбрать файл",
"toolbar.button.file.upload": "Закачать файл", "toolbar.button.file.upload": "Закачать файл",
@@ -427,7 +371,7 @@
"toolbar.button.ol": "Нумерованный список", "toolbar.button.ol": "Нумерованный список",
"toolbar.button.ul": "Маркированный список", "toolbar.button.ul": "Маркированный список",
"translation.author": "Команда Кирби", "translation.author": "Команда Kirby",
"translation.direction": "ltr", "translation.direction": "ltr",
"translation.name": "Русский (Russian)", "translation.name": "Русский (Russian)",
"translation.locale": "ru_RU", "translation.locale": "ru_RU",
@@ -447,24 +391,22 @@
"upload.errors": "Ошибка", "upload.errors": "Ошибка",
"upload.progress": "Закачивается...", "upload.progress": "Закачивается...",
"url": "Url", "url": "URL",
"url.placeholder": "https://example.com", "url.placeholder": "https://example.com",
"user": "Пользователь", "user": "Пользователь",
"user.blueprint": "user.blueprint": "Вы можете определить новые секции и поля формы для этой роли пользователя в <strong>/site/blueprints/users/{role}.yml</strong>",
"Вы можете определить новые секции и поля формы для этой роли пользователя в <strong>/site/blueprints/users/{role}.yml</strong>",
"user.changeEmail": "Поменять эл. почту", "user.changeEmail": "Поменять эл. почту",
"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": "Удалить этого пользователя",
"user.delete.confirm": "user.delete.confirm": "Вы действительно хотите аккаунт <br><strong>{email}</strong>?",
"\u0412\u044b \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0430\u043a\u043a\u0430\u0443\u043d\u0442?",
"users": "Пользователи", "users": "Пользователи",

View File

@@ -42,10 +42,8 @@
"error.avatar.create.fail": "Profilový obrázok sa nepodarilo nahrať", "error.avatar.create.fail": "Profilový obrázok sa nepodarilo nahrať",
"error.avatar.delete.fail": "Profilový obrázok sa nepodarilo zmazať", "error.avatar.delete.fail": "Profilový obrázok sa nepodarilo zmazať",
"error.avatar.dimensions.invalid": "error.avatar.dimensions.invalid": "Prosím, dodržte, aby šírka a výška profilového obrázka bola menšia ako 3000 pixelov.",
"Prosím, dodržte, aby šírka a výška profilového obrázka bola menšia ako 3000 pixelov.", "error.avatar.mime.forbidden": "Profilový obrázok musí byť súbor JPEG alebo PNG.",
"error.avatar.mime.forbidden":
"Profilový obrázok musí byť súbor JPEG alebo PNG.",
"error.blueprint.notFound": "Blueprint \"{name}\" sa nepodarilo načítať", "error.blueprint.notFound": "Blueprint \"{name}\" sa nepodarilo načítať",
@@ -54,22 +52,17 @@
"error.field.converter.invalid": "Neplatný converter \"{converter}\"", "error.field.converter.invalid": "Neplatný converter \"{converter}\"",
"error.file.changeName.empty": "The name must not be empty", "error.file.changeName.empty": "The name must not be empty",
"error.file.changeName.permission": "error.file.changeName.permission": "Nemáte povolenie na zmenu názvu pre \"{filename}\"",
"Nemáte povolenie na zmenu názvu pre \"{filename}\"",
"error.file.duplicate": "Súbor s názvom \"{filename}\" už existuje", "error.file.duplicate": "Súbor s názvom \"{filename}\" už existuje",
"error.file.extension.forbidden": "error.file.extension.forbidden": "Prípona \"{extension}\" nie je povolená",
"Prípona \"{extension}\" nie je povolená", "error.file.extension.missing": "Prípona pre \"{filename}\" chýba",
"error.file.extension.missing":
"Prípona pre \"{filename}\" chýba",
"error.file.maxheight": "The height of the image must not exceed {height} pixels", "error.file.maxheight": "The height of the image must not exceed {height} pixels",
"error.file.maxsize": "The file is too large", "error.file.maxsize": "The file is too large",
"error.file.maxwidth": "The width of the image must not exceed {width} pixels", "error.file.maxwidth": "The width of the image must not exceed {width} pixels",
"error.file.mime.differs": "error.file.mime.differs": "MIME typ nahratého súboru msa musí zhodovať s \"{mime}\"",
"MIME typ nahratého súboru msa musí zhodovať s \"{mime}\"",
"error.file.mime.forbidden": "Typ média \"{mime}\" nie je povolený", "error.file.mime.forbidden": "Typ média \"{mime}\" nie je povolený",
"error.file.mime.invalid": "Invalid mime type: {mime}", "error.file.mime.invalid": "Invalid mime type: {mime}",
"error.file.mime.missing": "error.file.mime.missing": "Typ média pre \"{filename}\" sa nepodarilo zistiť",
"Typ média pre \"{filename}\" sa nepodarilo zistiť",
"error.file.minheight": "The height of the image must be at least {height} pixels", "error.file.minheight": "The height of the image must be at least {height} pixels",
"error.file.minsize": "The file is too small", "error.file.minsize": "The file is too small",
"error.file.minwidth": "The width of the image must be at least {width} pixels", "error.file.minwidth": "The width of the image must be at least {width} pixels",
@@ -90,111 +83,77 @@
"error.license.email": "Prosím, zadajte platnú e-mailovú adresu", "error.license.email": "Prosím, zadajte platnú e-mailovú adresu",
"error.license.verification": "The license could not be verified", "error.license.verification": "The license could not be verified",
"error.page.changeSlug.permission": "error.page.changeSlug.permission": "Nemáte povolenie na zmenu URL príponu pre \"{slug}\"",
"Nemáte povolenie na zmenu URL príponu pre \"{slug}\"", "error.page.changeStatus.incomplete": "Stránka obsahuje chyby a nemôže byť zverejnená",
"error.page.changeStatus.incomplete": "error.page.changeStatus.permission": "Status tejto stránky nemôže byť zmenený",
"Stránka obsahuje chyby a nemôže byť zverejnená", "error.page.changeStatus.toDraft.invalid": "Stránka \"{slug}\" nemôže byť zmenená na koncept.",
"error.page.changeStatus.permission": "error.page.changeTemplate.invalid": "Šablónu pre stránku \"{slug}\" nie je možné zmeniť",
"Status tejto stránky nemôže byť zmenený", "error.page.changeTemplate.permission": "Nemáte povolenie na zmenu šablóny pre \"{slug}\"",
"error.page.changeStatus.toDraft.invalid":
"Stránka \"{slug}\" nemôže byť zmenená na koncept.",
"error.page.changeTemplate.invalid":
"Šablónu pre stránku \"{slug}\" nie je možné zmeniť",
"error.page.changeTemplate.permission":
"Nemáte povolenie na zmenu šablóny pre \"{slug}\"",
"error.page.changeTitle.empty": "Titulok nemôže byť prázdny", "error.page.changeTitle.empty": "Titulok nemôže byť prázdny",
"error.page.changeTitle.permission": "error.page.changeTitle.permission": "Nemáte povolenie na zmenu titulku pre \"{slug}\"",
"Nemáte povolenie na zmenu titulku pre \"{slug}\"",
"error.page.create.permission": "Nemáte povolenie na vytvorenie \"{slug}\"", "error.page.create.permission": "Nemáte povolenie na vytvorenie \"{slug}\"",
"error.page.delete": "Stránku \"{slug}\" nie je možné vymazať", "error.page.delete": "Stránku \"{slug}\" nie je možné vymazať",
"error.page.delete.confirm": "Prosím, zadajte titulok stránky pre potvrdenie", "error.page.delete.confirm": "Prosím, zadajte titulok stránky pre potvrdenie",
"error.page.delete.hasChildren": "error.page.delete.hasChildren": "Táto stránka obsahuje podstránky a nemôže byť zmazaná",
"Táto stránka obsahuje podstránky a nemôže byť zmazaná",
"error.page.delete.permission": "Nemáte povolenie na zmazanie stránky \"{slug}\"", "error.page.delete.permission": "Nemáte povolenie na zmazanie stránky \"{slug}\"",
"error.page.draft.duplicate": "error.page.draft.duplicate": "Koncept stránky s URL appendix-om \"{slug}\" už existuje",
"Koncept stránky s URL appendix-om \"{slug}\" už existuje", "error.page.duplicate": "Stránka s URL appendix-om \"{slug}\" už existuje",
"error.page.duplicate":
"Stránka s URL appendix-om \"{slug}\" už existuje",
"error.page.duplicate.permission": "You are not allowed to duplicate \"{slug}\"", "error.page.duplicate.permission": "You are not allowed to duplicate \"{slug}\"",
"error.page.notFound": "Stránku \"{slug}\" nie je možné nájsť", "error.page.notFound": "Stránku \"{slug}\" nie je možné nájsť",
"error.page.num.invalid": "error.page.num.invalid": "Prosím, zadajte platné číslo pre radenie. Čísla nemôžu byť záporné.",
"Prosím, zadajte platné číslo pre radenie. Čísla nemôžu byť záporné.",
"error.page.slug.invalid": "Prosím, zadajte platný URL prefix.", "error.page.slug.invalid": "Prosím, zadajte platný URL prefix.",
"error.page.sort.permission": "Stránku \"{slug}\" nie je možné preradiť.", "error.page.sort.permission": "Stránku \"{slug}\" nie je možné preradiť.",
"error.page.status.invalid": "Prosím, nastavte platnú status pre stránku", "error.page.status.invalid": "Prosím, nastavte platnú status pre stránku",
"error.page.undefined": "Stránku nie je možné nájsť", "error.page.undefined": "Stránku nie je možné nájsť",
"error.page.update.permission": "Nemáte povolenie na aktualizáciu \"{slug}\"", "error.page.update.permission": "Nemáte povolenie na aktualizáciu \"{slug}\"",
"error.section.files.max.plural": "error.section.files.max.plural": "Nemôžete pridať viac ako {max} súbory/ov do sekcie \"{section}\"",
"Nemôžete pridať viac ako {max} súbory/ov do sekcie \"{section}\"", "error.section.files.max.singular": "Nemôžete pridať viac ako 1 súbor do sekcie \"{section}\"",
"error.section.files.max.singular": "error.section.files.min.plural": "The \"{section}\" section requires at least {min} files",
"Nemôžete pridať viac ako 1 súbor do sekcie \"{section}\"", "error.section.files.min.singular": "The \"{section}\" section requires at least one file",
"error.section.files.min.plural":
"The \"{section}\" section requires at least {min} files",
"error.section.files.min.singular":
"The \"{section}\" section requires at least one file",
"error.section.pages.max.plural": "error.section.pages.max.plural": "Nemôžete pridať viac ako {max} stránky/ok do sekcie \"{section}\"",
"Nemôžete pridať viac ako {max} stránky/ok do sekcie \"{section}\"", "error.section.pages.max.singular": "Nemôžete pridať viac ako 1 stránku do sekcie \"{section}\"",
"error.section.pages.max.singular": "error.section.pages.min.plural": "The \"{section}\" section requires at least {min} pages",
"Nemôžete pridať viac ako 1 stránku do sekcie \"{section}\"", "error.section.pages.min.singular": "The \"{section}\" section requires at least one page",
"error.section.pages.min.plural":
"The \"{section}\" section requires at least {min} pages",
"error.section.pages.min.singular":
"The \"{section}\" section requires at least one page",
"error.section.notLoaded": "Sekciu \"{name}\" sa nepodarilo nahrať", "error.section.notLoaded": "Sekciu \"{name}\" sa nepodarilo nahrať",
"error.section.type.invalid": "Typ sekcie \"{type}\" nie je platný", "error.section.type.invalid": "Typ sekcie \"{type}\" nie je platný",
"error.site.changeTitle.empty": "Titulok nemôže byť prázdny", "error.site.changeTitle.empty": "Titulok nemôže byť prázdny",
"error.site.changeTitle.permission": "error.site.changeTitle.permission": "Nemáte povolenie na zmenu titulku pre portál",
"Nemáte povolenie na zmenu titulku pre portál",
"error.site.update.permission": "Nemáte povolenie na aktualizovanie portálu", "error.site.update.permission": "Nemáte povolenie na aktualizovanie portálu",
"error.template.default.notFound": "Predvolená šablóna neexistuje", "error.template.default.notFound": "Predvolená šablóna neexistuje",
"error.user.changeEmail.permission": "error.user.changeEmail.permission": "Nemáte povolenie na zmenu e-mailu pre užívateľa \"{name}\"",
"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": "error.user.changeName.permission": "Nemáte povolenie na zmenu mena pre užívateľa \"{name}\"",
"Nemáte povolenie na zmenu jazyka pre užívateľa \"{name}\"", "error.user.changePassword.permission": "Nemáte povolenie na zmenu hesla pre užívateľa \"{name}\"",
"error.user.changeName.permission": "error.user.changeRole.lastAdmin": "Rolu pre posledného administrátora nie je možné zmeniť",
"Nemáte povolenie na zmenu mena pre užívateľa \"{name}\"", "error.user.changeRole.permission": "Nemáte povolenie na zmenu role pre užívateľa \"{name}\"",
"error.user.changePassword.permission": "error.user.changeRole.toAdmin": "You are not allowed to promote someone to the admin role",
"Nemáte povolenie na zmenu hesla pre užívateľa \"{name}\"",
"error.user.changeRole.lastAdmin":
"Rolu pre posledného administrátora nie je možné zmeniť",
"error.user.changeRole.permission":
"Nemáte povolenie na zmenu role pre užívateľa \"{name}\"",
"error.user.changeRole.toAdmin":
"You are not allowed to promote someone to the admin role",
"error.user.create.permission": "Nemáte povolenie na vytvorenie tohto užívateľa", "error.user.create.permission": "Nemáte povolenie na vytvorenie tohto užívateľa",
"error.user.delete": "Užívateľa \"{name}\" nie je možné zmazať", "error.user.delete": "Užívateľa \"{name}\" nie je možné zmazať",
"error.user.delete.lastAdmin": "Posledného administrátora nie je možné zmazať", "error.user.delete.lastAdmin": "Posledného administrátora nie je možné zmazať",
"error.user.delete.lastUser": "Posledného užívateľa nie je možné zmazať", "error.user.delete.lastUser": "Posledného užívateľa nie je možné zmazať",
"error.user.delete.permission": "error.user.delete.permission": "Nemáte povolenie na zmazanie užívateľa \"{name}\"",
"Nemáte povolenie na zmazanie užívateľa \"{name}\"", "error.user.duplicate": "Užívateľ s e-mailovou adresou \"{email}\" už existuje",
"error.user.duplicate":
"Užívateľ s e-mailovou adresou \"{email}\" už existuje",
"error.user.email.invalid": "Prosím, zadajte platnú e-mailovú adresu", "error.user.email.invalid": "Prosím, zadajte platnú e-mailovú adresu",
"error.user.language.invalid": "Prosím, zadajte platný jazyk", "error.user.language.invalid": "Prosím, zadajte platný jazyk",
"error.user.notFound": "Užívateľa \"{name}\" nie je možné nájsť", "error.user.notFound": "Užívateľa \"{name}\" nie je možné nájsť",
"error.user.password.invalid": "error.user.password.invalid": "Prosím, zadajte platné heslo. Dĺžka hesla musí byť aspoň 8 znakov.",
"Prosím, zadajte platné heslo. Dĺžka hesla musí byť aspoň 8 znakov.",
"error.user.password.notSame": "Heslá nie sú rovnaké", "error.user.password.notSame": "Heslá nie sú rovnaké",
"error.user.password.undefined": "Užívateľ nemá heslo", "error.user.password.undefined": "Užívateľ nemá heslo",
"error.user.role.invalid": "Prosím, zadajte platnú rolu", "error.user.role.invalid": "Prosím, zadajte platnú rolu",
"error.user.update.permission": "error.user.update.permission": "Nemáte povolenie na aktualizáciu užívateľa \"{name}\"",
"Nemáte povolenie na aktualizáciu užívateľa \"{name}\"",
"error.validation.accepted": "Prosím, potvrďte", "error.validation.accepted": "Prosím, potvrďte",
"error.validation.alpha": "Prosím, zadajte len znaky z hlások a-z", "error.validation.alpha": "Prosím, zadajte len znaky z hlások a-z",
"error.validation.alphanum": "error.validation.alphanum": "Prosím, zadajte len znaky z hlások a-z a čísloviek 0-9",
"Prosím, zadajte len znaky z hlások a-z a čísloviek 0-9", "error.validation.between": "Prosím, zadajte hodnotu od \"{min}\" do \"{max}\"",
"error.validation.between":
"Prosím, zadajte hodnotu od \"{min}\" do \"{max}\"",
"error.validation.boolean": "Prosím, potvrďte alebo odmietnite", "error.validation.boolean": "Prosím, potvrďte alebo odmietnite",
"error.validation.contains": "error.validation.contains": "Prosím, zadajte hodnotu, ktorá obsahuje \"{needle}\"",
"Prosím, zadajte hodnotu, ktorá obsahuje \"{needle}\"",
"error.validation.date": "Prosím, zadajte platný dátum", "error.validation.date": "Prosím, zadajte platný dátum",
"error.validation.date.after": "Please enter a date after {date}", "error.validation.date.after": "Please enter a date after {date}",
"error.validation.date.before": "Please enter a date before {date}", "error.validation.date.before": "Please enter a date before {date}",
@@ -210,18 +169,14 @@
"error.validation.less": "Prosím, zadajte hodnotu menšiu ako {max}", "error.validation.less": "Prosím, zadajte hodnotu menšiu ako {max}",
"error.validation.match": "Hodnota nezodpovedá očakávanému vzoru", "error.validation.match": "Hodnota nezodpovedá očakávanému vzoru",
"error.validation.max": "Prosím, zadajte hodnotu rovnú alebo menšiu ako {max}", "error.validation.max": "Prosím, zadajte hodnotu rovnú alebo menšiu ako {max}",
"error.validation.maxlength": "error.validation.maxlength": "Prosím, zadajte kratšiu hodnotu. (max. {max} charaktery/ov)",
"Prosím, zadajte kratšiu hodnotu. (max. {max} charaktery/ov)",
"error.validation.maxwords": "Prosím, nezadávajte viac ako {max} slovo/á/ov", "error.validation.maxwords": "Prosím, nezadávajte viac ako {max} slovo/á/ov",
"error.validation.min": "Prosím, zadajte hodnotu rovnú alebo väčšiu ako {min}", "error.validation.min": "Prosím, zadajte hodnotu rovnú alebo väčšiu ako {min}",
"error.validation.minlength": "error.validation.minlength": "Prosím, zadajte dlhšiu hodnotu. (min. {min} charaktery/ov)",
"Prosím, zadajte dlhšiu hodnotu. (min. {min} charaktery/ov)",
"error.validation.minwords": "Prosím, zadajte aspoň {min} slovo/á/ov", "error.validation.minwords": "Prosím, zadajte aspoň {min} slovo/á/ov",
"error.validation.more": "Prosím zadajte hodnotu väčšiu ako {min}", "error.validation.more": "Prosím zadajte hodnotu väčšiu ako {min}",
"error.validation.notcontains": "error.validation.notcontains": "Prosím, zadajte hodnotu, ktorá neobsahuje \"{needle}\"",
"Prosím, zadajte hodnotu, ktorá neobsahuje \"{needle}\"", "error.validation.notin": "Prosím, nezadávajte ani jedno z nasledujúcich: ({notIn})",
"error.validation.notin":
"Prosím, nezadávajte ani jedno z nasledujúcich: ({notIn})",
"error.validation.option": "Prosím, zadajte platnú voľbu", "error.validation.option": "Prosím, zadajte platnú voľbu",
"error.validation.num": "Prosím, zadajte platné číslo", "error.validation.num": "Prosím, zadajte platné číslo",
"error.validation.required": "Prosím, zadajte niečo", "error.validation.required": "Prosím, zadajte niečo",
@@ -238,8 +193,7 @@
"field.structure.empty": "Zatiaľ žiadne údaje", "field.structure.empty": "Zatiaľ žiadne údaje",
"field.users.empty": "Žiadni užívatelia zatiaľ neboli zvolení", "field.users.empty": "Žiadni užívatelia zatiaľ neboli zvolení",
"file.delete.confirm": "file.delete.confirm": "Ste si istý, že chcete zmazať <br><strong>{filename}</strong>?",
"Ste si istý, že chcete zmazať <br><strong>{filename}</strong>?",
"files": "Súbory", "files": "Súbory",
"files.empty": "Zatiaľ žiadne súbory", "files.empty": "Zatiaľ žiadne súbory",
@@ -251,29 +205,22 @@
"installation": "Inštalácia", "installation": "Inštalácia",
"installation.completed": "Panel bol nainštalovaný", "installation.completed": "Panel bol nainštalovaný",
"installation.disabled": "Inštalácia Panelu na verejných serveroch je štandardne zablokovaná. Prosím, spustite inštaláciu na lokálnom serveri alebo aktivujte voľbu <code>panel.install</code>.", "installation.disabled": "Inštalácia Panelu na verejných serveroch je štandardne zablokovaná. Prosím, spustite inštaláciu na lokálnom serveri alebo aktivujte voľbu <code>panel.install</code>.",
"installation.issues.accounts": "installation.issues.accounts": "Priečinok <code>/site/accounts</code> neexistuje alebo nie je nastavený ako zapisovateľný",
"Priečinok <code>/site/accounts</code> neexistuje alebo nie je nastavený ako zapisovateľný", "installation.issues.content": "Priečinok <code>/content</code> neexistuje alebo nie je nastavený ako zapisovateľný",
"installation.issues.content":
"Priečinok <code>/content</code> neexistuje alebo nie je nastavený ako zapisovateľný",
"installation.issues.curl": "<code>CURL</code> rozšírenie je povinné", "installation.issues.curl": "<code>CURL</code> rozšírenie je povinné",
"installation.issues.headline": "Panel nie je možné naištalovať", "installation.issues.headline": "Panel nie je možné naištalovať",
"installation.issues.mbstring": "installation.issues.mbstring": "<code>MB String</code> rozšírenie je povinné",
"<code>MB String</code> rozšírenie je povinné", "installation.issues.media": "Priečinok <code>/media</code> neexistuje alebo nie je nastavený ako zapisovateľný",
"installation.issues.media":
"Priečinok <code>/media</code> neexistuje alebo nie je nastavený ako zapisovateľný",
"installation.issues.php": "Uistite sa, že používate <code>PHP 7+</code>", "installation.issues.php": "Uistite sa, že používate <code>PHP 7+</code>",
"installation.issues.server": "installation.issues.server": "Kirby vyžaduje <code>Apache</code>, <code>Nginx</code> alebo <code>Caddy</code>",
"Kirby vyžaduje <code>Apache</code>, <code>Nginx</code> alebo <code>Caddy</code>",
"installation.issues.sessions": "Priečinok <code>/site/sessions</code> neexistuje alebo nie je nastavený ako zapisovateľný", "installation.issues.sessions": "Priečinok <code>/site/sessions</code> neexistuje alebo nie je nastavený ako zapisovateľný",
"language": "Jazyk", "language": "Jazyk",
"language.code": "Kód", "language.code": "Kód",
"language.convert": "Nastaviť ako predvolené", "language.convert": "Nastaviť ako predvolené",
"language.convert.confirm": "language.convert.confirm": "<p>Ste si istý, že chcete nastaviť <strong>{name}</strong> ako predvolený jazyk? Túto akciu nie je možné zvrátiť.</p><p>Ak <strong>{name}</strong> obsahuje nepreložený obsah, tak pre tento obsah nebude fungovať platné volanie a niektoré časti vašich stránok zostanú prázdne.</p>",
"<p>Ste si istý, že chcete nastaviť <strong>{name}</strong> ako predvolený jazyk? Túto akciu nie je možné zvrátiť.</p><p>Ak <strong>{name}</strong> obsahuje nepreložený obsah, tak pre tento obsah nebude fungovať platné volanie a niektoré časti vašich stránok zostanú prázdne.</p>",
"language.create": "Pridať nový jazyk", "language.create": "Pridať nový jazyk",
"language.delete.confirm": "language.delete.confirm": "Ste si istý, že chcete zmazať jazyk <strong>{name}</strong> vrátane všetkých prekladov? Túto akciu nie je možné zvrátiť.",
"Ste si istý, že chcete zmazať jazyk <strong>{name}</strong> vrátane všetkých prekladov? Túto akciu nie je možné zvrátiť.",
"language.deleted": "Jazyk bol zmazaný", "language.deleted": "Jazyk bol zmazaný",
"language.direction": "Smer čítania", "language.direction": "Smer čítania",
"language.direction.ltr": "Zľava doprava", "language.direction.ltr": "Zľava doprava",
@@ -292,8 +239,7 @@
"license": "Licencia", "license": "Licencia",
"license.buy": "Zakúpiť licenciu", "license.buy": "Zakúpiť licenciu",
"license.register": "Registrovať", "license.register": "Registrovať",
"license.register.help": "license.register.help": "Licenčný kód vám bol doručený e-mailom po úspešnom nákupe. Prosím, skopírujte a prilepte ho na uskutočnenie registrácie.",
"Licenčný kód vám bol doručený e-mailom po úspešnom nákupe. Prosím, skopírujte a prilepte ho na uskutočnenie registrácie.",
"license.register.label": "Prosím, zadajte váš licenčný kód", "license.register.label": "Prosím, zadajte váš licenčný kód",
"license.register.success": "Ďakujeme za vašu podporu Kirby", "license.register.success": "Ďakujeme za vašu podporu Kirby",
"license.unregistered": "Toto je neregistrované demo Kirby", "license.unregistered": "Toto je neregistrované demo Kirby",
@@ -354,10 +300,8 @@
"page.changeStatus.position": "Prosím, zmeňte pozíciu", "page.changeStatus.position": "Prosím, zmeňte pozíciu",
"page.changeStatus.select": "Zvoľte nový status", "page.changeStatus.select": "Zvoľte nový status",
"page.changeTemplate": "Zmeniť šablónu", "page.changeTemplate": "Zmeniť šablónu",
"page.delete.confirm": "page.delete.confirm": "Ste si istý, že chcete zmazať <strong>{title}</strong>?",
"Ste si istý, že chcete zmazať <strong>{title}</strong>?", "page.delete.confirm.subpages": "<strong>Táto stránka obsahuje podstránky</strong>. <br>Všetky podstránky budú taktiež zmazané.",
"page.delete.confirm.subpages":
"<strong>Táto stránka obsahuje podstránky</strong>. <br>Všetky podstránky budú taktiež zmazané.",
"page.delete.confirm.title": "Pre potvrdenie zadajte titulok stránky", "page.delete.confirm.title": "Pre potvrdenie zadajte titulok stránky",
"page.draft.create": "Vytvoriť koncept", "page.draft.create": "Vytvoriť koncept",
"page.duplicate.appendix": "Kopírovať", "page.duplicate.appendix": "Kopírovať",
@@ -365,8 +309,7 @@
"page.duplicate.pages": "Copy pages", "page.duplicate.pages": "Copy pages",
"page.status": "Status", "page.status": "Status",
"page.status.draft": "Koncept", "page.status.draft": "Koncept",
"page.status.draft.description": "page.status.draft.description": "The page is in draft mode and only visible for logged in editors or via secret link",
"Stránka je koncept móde a je viditeľná len pre prihlásených užívateľov",
"page.status.listed": "Verejné", "page.status.listed": "Verejné",
"page.status.listed.description": "Stránka je prístupná pre všetkých", "page.status.listed.description": "Stránka je prístupná pre všetkých",
"page.status.unlisted": "Skryté", "page.status.unlisted": "Skryté",
@@ -388,6 +331,7 @@
"replace": "Nahradiť", "replace": "Nahradiť",
"retry": "Skúsiť ešte raz", "retry": "Skúsiť ešte raz",
"revert": "Vrátiť späť", "revert": "Vrátiť späť",
"revert.confirm": "Do you really want to <strong>delete all unsaved changes</strong>?",
"role": "Rola", "role": "Rola",
"role.admin.description": "The admin has all rights", "role.admin.description": "The admin has all rights",
@@ -451,8 +395,7 @@
"url.placeholder": "https://example.com", "url.placeholder": "https://example.com",
"user": "Užívateľ", "user": "Užívateľ",
"user.blueprint": "user.blueprint": "Ďalšie sekcie a formulárové polia pre túto užívateľskú rolu môžete definovať v rámci <strong>/site/blueprints/users/{role}.yml</strong>",
"Ďalšie sekcie a formulárové polia pre túto užívateľskú rolu môžete definovať v rámci <strong>/site/blueprints/users/{role}.yml</strong>",
"user.changeEmail": "Zmeniť e-mail", "user.changeEmail": "Zmeniť e-mail",
"user.changeLanguage": "Zmeniť jazyk", "user.changeLanguage": "Zmeniť jazyk",
"user.changeName": "Premenovať tohto užívateľa", "user.changeName": "Premenovať tohto užívateľa",
@@ -463,8 +406,7 @@
"user.changeRole.select": "Zvoliť novú rolu", "user.changeRole.select": "Zvoliť novú rolu",
"user.create": "Pridať nového užívateľa", "user.create": "Pridať nového užívateľa",
"user.delete": "Zmazať tohto užívateľa", "user.delete": "Zmazať tohto užívateľa",
"user.delete.confirm": "user.delete.confirm": "Ste si istý, že chcete zmazať <br><strong>{email}</strong>?",
"Ste si istý, že chcete zmazať <br><strong>{email}</strong>?",
"users": "Užívatelia", "users": "Užívatelia",

View File

@@ -42,10 +42,8 @@
"error.avatar.create.fail": "Profilbilden kunde inte laddas upp", "error.avatar.create.fail": "Profilbilden kunde inte laddas upp",
"error.avatar.delete.fail": "Profilbilden kunde inte raderas", "error.avatar.delete.fail": "Profilbilden kunde inte raderas",
"error.avatar.dimensions.invalid": "error.avatar.dimensions.invalid": "Se till att profilbildens bredd och höjd är mindre än 3000 pixlar",
"Se till att profilbildens bredd och höjd är mindre än 3000 pixlar", "error.avatar.mime.forbidden": "Profilbilden måste vara i formatet JPEG eller PNG",
"error.avatar.mime.forbidden":
"Profilbilden måste vara i formatet JPEG eller PNG",
"error.blueprint.notFound": "Blueprint \"{name}\" kunde inte laddas", "error.blueprint.notFound": "Blueprint \"{name}\" kunde inte laddas",
@@ -54,22 +52,17 @@
"error.field.converter.invalid": "Ogiltig omvandlare \"{converter}\"", "error.field.converter.invalid": "Ogiltig omvandlare \"{converter}\"",
"error.file.changeName.empty": "Namnet får inte vara tomt", "error.file.changeName.empty": "Namnet får inte vara tomt",
"error.file.changeName.permission": "error.file.changeName.permission": "Du har inte behörighet att ändra namnet på \"{filename}\"",
"Du har inte behörighet att ändra namnet på \"{filename}\"",
"error.file.duplicate": "En fil med namnet \"{filename}\" existerar redan", "error.file.duplicate": "En fil med namnet \"{filename}\" existerar redan",
"error.file.extension.forbidden": "error.file.extension.forbidden": "Filändelsen \"{extension}\" är inte tillåten",
"Filändelsen \"{extension}\" är inte tillåten", "error.file.extension.missing": "Filen \"{filename}\" saknar filändelse",
"error.file.extension.missing":
"Filen \"{filename}\" saknar filändelse",
"error.file.maxheight": "Bildens höjd får inte överstiga {height} pixlar", "error.file.maxheight": "Bildens höjd får inte överstiga {height} pixlar",
"error.file.maxsize": "Filen är för stor", "error.file.maxsize": "Filen är för stor",
"error.file.maxwidth": "Bildens bredd får inte överstiga {width} pixlar", "error.file.maxwidth": "Bildens bredd får inte överstiga {width} pixlar",
"error.file.mime.differs": "error.file.mime.differs": "Den uppladdade filen måste vara av samma mime-typ \"{mime}\"",
"Den uppladdade filen måste vara av samma mime-typ \"{mime}\"",
"error.file.mime.forbidden": "Mediatypen \"{mime}\" är inte tillåten", "error.file.mime.forbidden": "Mediatypen \"{mime}\" är inte tillåten",
"error.file.mime.invalid": "Ogiltig mime-typ: {mime}", "error.file.mime.invalid": "Ogiltig mime-typ: {mime}",
"error.file.mime.missing": "error.file.mime.missing": "Mediatypen för \"{filename}\" kan inte detekteras",
"Mediatypen för \"{filename}\" kan inte detekteras",
"error.file.minheight": "Bildens höjd måste vara minst {height} pixlar", "error.file.minheight": "Bildens höjd måste vara minst {height} pixlar",
"error.file.minsize": "Filen är för liten", "error.file.minsize": "Filen är för liten",
"error.file.minwidth": "Bildens bredd måste vara minst {width} pixlar", "error.file.minwidth": "Bildens bredd måste vara minst {width} pixlar",
@@ -90,111 +83,77 @@
"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.page.changeSlug.permission": "error.page.changeSlug.permission": "Du har inte behörighet att ändra URL-appendixen för \"{slug}\"",
"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": "error.page.changeStatus.permission": "Statusen för denna sida kan inte ändras",
"Sidan innehåller fel och kan inte publiceras", "error.page.changeStatus.toDraft.invalid": "Statusen för sidan \"{slug}\" kan inte ändras till utkast",
"error.page.changeStatus.permission": "error.page.changeTemplate.invalid": "Mallen för sidan \"{slug}\" kan inte ändras",
"Statusen för denna sida kan inte ändras", "error.page.changeTemplate.permission": "Du har inte behörighet att ändra mallen för \"{slug}\"",
"error.page.changeStatus.toDraft.invalid":
"Statusen för sidan \"{slug}\" kan inte ändras till utkast",
"error.page.changeTemplate.invalid":
"Mallen för sidan \"{slug}\" kan inte ändras",
"error.page.changeTemplate.permission":
"Du har inte behörighet att ändra mallen för \"{slug}\"",
"error.page.changeTitle.empty": "Titeln får inte vara tom", "error.page.changeTitle.empty": "Titeln får inte vara tom",
"error.page.changeTitle.permission": "error.page.changeTitle.permission": "Du har inte behörighet att ändra titeln för \"{slug}\"",
"Du har inte behörighet att ändra titeln för \"{slug}\"",
"error.page.create.permission": "Du har inte behörighet att skapa \"{slug}\"", "error.page.create.permission": "Du har inte behörighet att skapa \"{slug}\"",
"error.page.delete": "Sidan \"{slug}\" kan inte raderas", "error.page.delete": "Sidan \"{slug}\" kan inte raderas",
"error.page.delete.confirm": "Fyll i sidans titel för att bekräfta", "error.page.delete.confirm": "Fyll i sidans titel för att bekräfta",
"error.page.delete.hasChildren": "error.page.delete.hasChildren": "Sidan har undersidor och kan inte raderas",
"Sidan har undersidor och kan inte raderas",
"error.page.delete.permission": "Du har inte behörighet att radera \"{slug}\"", "error.page.delete.permission": "Du har inte behörighet att radera \"{slug}\"",
"error.page.draft.duplicate": "error.page.draft.duplicate": "Ett utkast med URL-appendixen \"{slug}\" existerar redan",
"Ett utkast med URL-appendixen \"{slug}\" existerar redan", "error.page.duplicate": "En sida med URL-appendixen \"{slug}\" existerar redan",
"error.page.duplicate":
"En sida med URL-appendixen \"{slug}\" existerar redan",
"error.page.duplicate.permission": "Du har inte behörighet att duplicera \"{slug}\"", "error.page.duplicate.permission": "Du har inte behörighet att duplicera \"{slug}\"",
"error.page.notFound": "Sidan \"{slug}\" kan inte hittas", "error.page.notFound": "Sidan \"{slug}\" kan inte hittas",
"error.page.num.invalid": "error.page.num.invalid": "Ange ett giltigt nummer för sortering. Numret får inte vara negativt.",
"Ange ett giltigt nummer för sortering. Numret får inte vara negativt.",
"error.page.slug.invalid": "Ange ett giltigt URL-prefix", "error.page.slug.invalid": "Ange ett giltigt URL-prefix",
"error.page.sort.permission": "Sidan \"{slug}\" kan inte sorteras", "error.page.sort.permission": "Sidan \"{slug}\" kan inte sorteras",
"error.page.status.invalid": "Sätt en giltig status för sidan", "error.page.status.invalid": "Sätt en giltig status för sidan",
"error.page.undefined": "Sidan kan inte hittas", "error.page.undefined": "Sidan kan inte hittas",
"error.page.update.permission": "Du har inte behörighet att uppdatera \"{slug}\"", "error.page.update.permission": "Du har inte behörighet att uppdatera \"{slug}\"",
"error.section.files.max.plural": "error.section.files.max.plural": "Du får inte lägga till mer än {max} filer till sektionen \"{section}\"",
"Du får inte lägga till mer än {max} filer till sektionen \"{section}\"", "error.section.files.max.singular": "Du får inte lägga till mer än en fil i sektionen \"{section}\"",
"error.section.files.max.singular": "error.section.files.min.plural": "Sektionen \"{section}\" kräver minst {min} filer",
"Du får inte lägga till mer än en fil i sektionen \"{section}\"", "error.section.files.min.singular": "Sektionen \"{section}\" kräver minst en fil",
"error.section.files.min.plural":
"Sektionen \"{section}\" kräver minst {min} filer",
"error.section.files.min.singular":
"Sektionen \"{section}\" kräver minst en fil",
"error.section.pages.max.plural": "error.section.pages.max.plural": "Du får inte lägga till mer än {max} sidor till sektionen \"{section}\"",
"Du får inte lägga till mer än {max} sidor till sektionen \"{section}\"", "error.section.pages.max.singular": "Du får inte lägga till mer än en sida i sektionen \"{section}\"",
"error.section.pages.max.singular": "error.section.pages.min.plural": "Sektionen \"{section}\" kräver minst {min} sidor",
"Du får inte lägga till mer än en sida i sektionen \"{section}\"", "error.section.pages.min.singular": "Sektionen \"{section}\" kräver minst en sida",
"error.section.pages.min.plural":
"Sektionen \"{section}\" kräver minst {min} sidor",
"error.section.pages.min.singular":
"Sektionen \"{section}\" kräver minst en sida",
"error.section.notLoaded": "Sektionen \"{name}\" kunde inte laddas", "error.section.notLoaded": "Sektionen \"{name}\" kunde inte laddas",
"error.section.type.invalid": "Sektionstypen \"{type}\" är inte giltig", "error.section.type.invalid": "Sektionstypen \"{type}\" är inte giltig",
"error.site.changeTitle.empty": "Titeln får inte vara tom", "error.site.changeTitle.empty": "Titeln får inte vara tom",
"error.site.changeTitle.permission": "error.site.changeTitle.permission": "Du har inte behörighet att ändra titeln på webbplatsen",
"Du har inte behörighet att ändra titeln på webbplatsen",
"error.site.update.permission": "Du har inte behörighet att uppdatera webbplatsen", "error.site.update.permission": "Du har inte behörighet att uppdatera webbplatsen",
"error.template.default.notFound": "Standardmallen existerar inte", "error.template.default.notFound": "Standardmallen existerar inte",
"error.user.changeEmail.permission": "error.user.changeEmail.permission": "Du har inte behörighet att ändra e-postadressen för användaren \"{name}\"",
"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": "error.user.changeName.permission": "Du har inte behörighet att ändra namnet för användaren \"{name}\"",
"Du har inte behörighet att ändra språket för användaren \"{name}\"", "error.user.changePassword.permission": "Du har inte behörighet att ändra lösenordet för användaren \"{name}\"",
"error.user.changeName.permission": "error.user.changeRole.lastAdmin": "Rollen för den återstående adminanvändaren kan inte ändras",
"Du har inte behörighet att ändra namnet för användaren \"{name}\"", "error.user.changeRole.permission": "Du har inte behörighet att ändra rollen för användaren \"{name}\"",
"error.user.changePassword.permission": "error.user.changeRole.toAdmin": "Du har inte behörighet att ge någon en administratörsroll",
"Du har inte behörighet att ändra lösenordet för användaren \"{name}\"",
"error.user.changeRole.lastAdmin":
"Rollen för den återstående adminanvändaren kan inte ändras",
"error.user.changeRole.permission":
"Du har inte behörighet att ändra rollen för användaren \"{name}\"",
"error.user.changeRole.toAdmin":
"Du har inte behörighet att ge någon en administratörsroll",
"error.user.create.permission": "Du har inte behörighet att skapa denna användare", "error.user.create.permission": "Du har inte behörighet att skapa denna användare",
"error.user.delete": "Användaren kan inte raderas", "error.user.delete": "Användaren kan inte raderas",
"error.user.delete.lastAdmin": "Den återstående administratören kan inte raderas", "error.user.delete.lastAdmin": "Den återstående administratören kan inte raderas",
"error.user.delete.lastUser": "Den återstående användaren kan inte raderas", "error.user.delete.lastUser": "Den återstående användaren kan inte raderas",
"error.user.delete.permission": "error.user.delete.permission": "Du har inte behörighet att radera användaren \"{name}\"",
"Du har inte behörighet att radera användaren \"{name}\"", "error.user.duplicate": "En användare med e-postadressen \"{email}\" finns redan",
"error.user.duplicate":
"En användare med e-postadressen \"{email}\" finns redan",
"error.user.email.invalid": "Ange en giltig e-postadress", "error.user.email.invalid": "Ange en giltig e-postadress",
"error.user.language.invalid": "Ange ett giltigt språk", "error.user.language.invalid": "Ange ett giltigt språk",
"error.user.notFound": "Användaren \"{name}\" kan ej hittas", "error.user.notFound": "Användaren \"{name}\" kan ej hittas",
"error.user.password.invalid": "error.user.password.invalid": "Ange ett giltigt lösenord. Lösenordet måste vara minst 8 tecken långt.",
"Ange ett giltigt lösenord. Lösenordet måste vara minst 8 tecken långt.",
"error.user.password.notSame": "Lösenorden matchar inte", "error.user.password.notSame": "Lösenorden matchar inte",
"error.user.password.undefined": "Användaren har inget lösenord", "error.user.password.undefined": "Användaren har inget lösenord",
"error.user.role.invalid": "Ange en giltig roll", "error.user.role.invalid": "Ange en giltig roll",
"error.user.update.permission": "error.user.update.permission": "Du har inte behörighet att uppdatera användaren \"{name}\"",
"Du har inte behörighet att uppdatera användaren \"{name}\"",
"error.validation.accepted": "Vänligen bekräfta", "error.validation.accepted": "Vänligen bekräfta",
"error.validation.alpha": "Ange endast tecken mellan a-z", "error.validation.alpha": "Ange endast tecken mellan a-z",
"error.validation.alphanum": "error.validation.alphanum": "Ange endast tecken mellan a-z eller siffror 0-9",
"Ange endast tecken mellan a-z eller siffror 0-9", "error.validation.between": "Ange ett värde mellan \"{min}\" och \"{max}\"",
"error.validation.between":
"Ange ett värde mellan \"{min}\" och \"{max}\"",
"error.validation.boolean": "Bekräfta eller neka", "error.validation.boolean": "Bekräfta eller neka",
"error.validation.contains": "error.validation.contains": "Ange ett värde som innehåller \"{needle}\"",
"Ange ett värde som innehåller \"{needle}\"",
"error.validation.date": "Ange ett giltigt datum", "error.validation.date": "Ange ett giltigt datum",
"error.validation.date.after": "Ange ett datum efter {date}", "error.validation.date.after": "Ange ett datum efter {date}",
"error.validation.date.before": "Ange ett datum före {date}", "error.validation.date.before": "Ange ett datum före {date}",
@@ -210,18 +169,14 @@
"error.validation.less": "Ange ett värde lägre än {max}", "error.validation.less": "Ange ett värde lägre än {max}",
"error.validation.match": "Värdet matchar inte det förväntade mönstret", "error.validation.match": "Värdet matchar inte det förväntade mönstret",
"error.validation.max": "Ange ett värde som är lika med eller lägre än {max}", "error.validation.max": "Ange ett värde som är lika med eller lägre än {max}",
"error.validation.maxlength": "error.validation.maxlength": "Ange ett kortare värde. (max {max} tecken)",
"Ange ett kortare värde. (max {max} tecken)",
"error.validation.maxwords": "Ange inte mer än {max} ord", "error.validation.maxwords": "Ange inte mer än {max} ord",
"error.validation.min": "Ange ett värde som är lika med eller större än {min}", "error.validation.min": "Ange ett värde som är lika med eller större än {min}",
"error.validation.minlength": "error.validation.minlength": "Ange ett längre värde. (minst {min} tecken)",
"Ange ett längre värde. (minst {min} tecken)",
"error.validation.minwords": "Ange minst {min} ord", "error.validation.minwords": "Ange minst {min} ord",
"error.validation.more": "Ange ett större värde än {min}", "error.validation.more": "Ange ett större värde än {min}",
"error.validation.notcontains": "error.validation.notcontains": "Ange ett värde som inte innehåller \"{needle}\"",
"Ange ett värde som inte innehåller \"{needle}\"", "error.validation.notin": "Ange inte något av följande: ({notIn})",
"error.validation.notin":
"Ange inte något av följande: ({notIn})",
"error.validation.option": "Välj ett giltigt alternativ", "error.validation.option": "Välj ett giltigt alternativ",
"error.validation.num": "Ange ett giltigt nummer", "error.validation.num": "Ange ett giltigt nummer",
"error.validation.required": "Ange någonting", "error.validation.required": "Ange någonting",
@@ -238,8 +193,7 @@
"field.structure.empty": "Inga poster än", "field.structure.empty": "Inga poster än",
"field.users.empty": "Inga användare valda än", "field.users.empty": "Inga användare valda än",
"file.delete.confirm": "file.delete.confirm": "Vill du verkligen radera <br><strong>{filename}</strong>?",
"Vill du verkligen radera <br><strong>{filename}</strong>?",
"files": "Filer", "files": "Filer",
"files.empty": "Inga filer än", "files.empty": "Inga filer än",
@@ -251,29 +205,22 @@
"installation": "Installation", "installation": "Installation",
"installation.completed": "Panelen har installerats", "installation.completed": "Panelen har installerats",
"installation.disabled": "Installeraren för panelen är som standard inaktiverad på offentliga servrar. Kör installeraren på en lokal maskin eller aktivera den med alternativet <code>panel.install</code>.", "installation.disabled": "Installeraren för panelen är som standard inaktiverad på offentliga servrar. Kör installeraren på en lokal maskin eller aktivera den med alternativet <code>panel.install</code>.",
"installation.issues.accounts": "installation.issues.accounts": "Mappen <code>/site/accounts</code> finns inte eller är inte skrivbar",
"Mappen <code>/site/accounts</code> finns inte eller är inte skrivbar", "installation.issues.content": "Mappen <code>/content</code> finns inte eller är inte skrivbar",
"installation.issues.content":
"Mappen <code>/content</code> finns inte eller är inte skrivbar",
"installation.issues.curl": "Tillägget <code>CURL</code> krävs", "installation.issues.curl": "Tillägget <code>CURL</code> krävs",
"installation.issues.headline": "Panelen kan inte installeras", "installation.issues.headline": "Panelen kan inte installeras",
"installation.issues.mbstring": "installation.issues.mbstring": "Tillägget <code>MB String</code> krävs",
"Tillägget <code>MB String</code> krävs", "installation.issues.media": "Mappen <code>/media</code> finns inte eller är inte skrivbar",
"installation.issues.media":
"Mappen <code>/media</code> finns inte eller är inte skrivbar",
"installation.issues.php": "Se till att du använder <code>PHP 7+</code>", "installation.issues.php": "Se till att du använder <code>PHP 7+</code>",
"installation.issues.server": "installation.issues.server": "Kirby kräver <code>Apache</code>, <code>Nginx</code> eller <code>Caddy</code>",
"Kirby kräver <code>Apache</code>, <code>Nginx</code> eller <code>Caddy</code>",
"installation.issues.sessions": "Mappen <code>/site/sessions</code> finns inte eller är inte skrivbar", "installation.issues.sessions": "Mappen <code>/site/sessions</code> finns inte eller är inte skrivbar",
"language": "Spr\u00e5k", "language": "Spr\u00e5k",
"language.code": "Kod", "language.code": "Kod",
"language.convert": "Ange som standard", "language.convert": "Ange som standard",
"language.convert.confirm": "language.convert.confirm": "<p>Vill du verkligen göra <strong>{name}</strong> till standardspråket? Detta kan inte ångras.</p><p>Om <strong>{name}</strong> har oöversatt innehåll, kommer det inte längre finnas en alternativ översättning och delar av sajten kommer kanske att vara tom.</p>",
"<p>Vill du verkligen göra <strong>{name}</strong> till standardspråket? Detta kan inte ångras.</p><p>Om <strong>{name}</strong> har oöversatt innehåll, kommer det inte längre finnas en alternativ översättning och delar av sajten kommer kanske att vara tom.</p>",
"language.create": "Lägg till ett nytt språk", "language.create": "Lägg till ett nytt språk",
"language.delete.confirm": "language.delete.confirm": "Vill du verkligen radera språket <strong>{name}</strong> inklusive alla översättningar? Detta kan inte ångras!",
"Vill du verkligen radera språket <strong>{name}</strong> inklusive alla översättningar? Detta kan inte ångras!",
"language.deleted": "Språket har raderats", "language.deleted": "Språket har raderats",
"language.direction": "Läsriktning", "language.direction": "Läsriktning",
"language.direction.ltr": "Vänster till höger", "language.direction.ltr": "Vänster till höger",
@@ -292,8 +239,7 @@
"license": "Licens", "license": "Licens",
"license.buy": "Köp en licens", "license.buy": "Köp en licens",
"license.register": "Registrera", "license.register": "Registrera",
"license.register.help": "license.register.help": "Du fick din licenskod via e-post efter inköpet. Kopiera och klistra in den för att registrera licensen.",
"Du fick din licenskod via e-post efter inköpet. Kopiera och klistra in den för att registrera licensen.",
"license.register.label": "Ange din licenskod", "license.register.label": "Ange din licenskod",
"license.register.success": "Tack för att du stödjer Kirby", "license.register.success": "Tack för att du stödjer Kirby",
"license.unregistered": "Detta är en oregistrerad demo av Kirby", "license.unregistered": "Detta är en oregistrerad demo av Kirby",
@@ -354,10 +300,8 @@
"page.changeStatus.position": "Välj en ny position", "page.changeStatus.position": "Välj en ny position",
"page.changeStatus.select": "Välj en ny status", "page.changeStatus.select": "Välj en ny status",
"page.changeTemplate": "Ändra mall", "page.changeTemplate": "Ändra mall",
"page.delete.confirm": "page.delete.confirm": "Vill du verkligen radera <strong>{title}</strong>?",
"Vill du verkligen radera <strong>{title}</strong>?", "page.delete.confirm.subpages": "<strong>Denna sida har undersidor.</strong> <br>Alla undersidor kommer också att raderas.",
"page.delete.confirm.subpages":
"<strong>Denna sida har undersidor.</strong> <br>Alla undersidor kommer också att raderas.",
"page.delete.confirm.title": "Fyll i sidans titel för att bekräfta", "page.delete.confirm.title": "Fyll i sidans titel för att bekräfta",
"page.draft.create": "Skapa utkast", "page.draft.create": "Skapa utkast",
"page.duplicate.appendix": "Kopiera", "page.duplicate.appendix": "Kopiera",
@@ -365,8 +309,7 @@
"page.duplicate.pages": "Kopiera sidor", "page.duplicate.pages": "Kopiera sidor",
"page.status": "Status", "page.status": "Status",
"page.status.draft": "Utkast", "page.status.draft": "Utkast",
"page.status.draft.description": "page.status.draft.description": "Sidan är ett utkast och endast synlig för inloggade redaktörer eller via en hemlig länk",
"Sidan är ett utkast och endast synlig för inloggade redaktörer",
"page.status.listed": "Publik", "page.status.listed": "Publik",
"page.status.listed.description": "Sidan är publik för vem som helst", "page.status.listed.description": "Sidan är publik för vem som helst",
"page.status.unlisted": "Olistad", "page.status.unlisted": "Olistad",
@@ -388,6 +331,7 @@
"replace": "Ersätt", "replace": "Ersätt",
"retry": "F\u00f6rs\u00f6k igen", "retry": "F\u00f6rs\u00f6k igen",
"revert": "Återgå", "revert": "Återgå",
"revert.confirm": "Vill du verkligen <strong>radera alla osparade ändringar</strong>?",
"role": "Roll", "role": "Roll",
"role.admin.description": "Administratören har alla behörigheter", "role.admin.description": "Administratören har alla behörigheter",
@@ -451,8 +395,7 @@
"url.placeholder": "https://exempel.se", "url.placeholder": "https://exempel.se",
"user": "Användare", "user": "Användare",
"user.blueprint": "user.blueprint": "Du kan ange ytterligare sektioner och fält för denna användarroll i <strong>/site/blueprints/users/{role}.yml</strong>",
"Du kan ange ytterligare sektioner och fält för denna användarroll i <strong>/site/blueprints/users/{role}.yml</strong>",
"user.changeEmail": "Ändra e-postadress", "user.changeEmail": "Ändra e-postadress",
"user.changeLanguage": "Ändra språk", "user.changeLanguage": "Ändra språk",
"user.changeName": "Byt namn på denna användare", "user.changeName": "Byt namn på denna användare",
@@ -463,8 +406,7 @@
"user.changeRole.select": "Välj en ny roll", "user.changeRole.select": "Välj en ny roll",
"user.create": "Lägg till en ny användare", "user.create": "Lägg till en ny användare",
"user.delete": "Radera denna användare", "user.delete": "Radera denna användare",
"user.delete.confirm": "user.delete.confirm": "Vill du verkligen radera <br><strong>{email}</strong>?",
"Vill du verkligen radera <br><strong>{email}</strong>?",
"users": "Användare", "users": "Användare",

View File

@@ -37,15 +37,13 @@
"email.placeholder": "eposta@ornek.com", "email.placeholder": "eposta@ornek.com",
"error.access.login": "Geçersiz giriş", "error.access.login": "Geçersiz giriş",
"error.access.panel": "Panele erişim izniniz yok", "error.access.panel": "Panel'e erişim izniniz yok",
"error.access.view": "Panelin bu bölümüne erişemezsiniz", "error.access.view": "Panel'in bu bölümüne erişim izniniz yok",
"error.avatar.create.fail": "Profil resmi yüklenemedi", "error.avatar.create.fail": "Profil resmi yüklenemedi",
"error.avatar.delete.fail": "Profil resmi silinemedi", "error.avatar.delete.fail": "Profil resmi silinemedi",
"error.avatar.dimensions.invalid": "error.avatar.dimensions.invalid": "Lütfen profil resminin genişliğini ve yüksekliğini 3000 pikselin altında tutun",
"Lütfen profil resminin genişliğini ve yüksekliğini 3000 pikselin altında tutun", "error.avatar.mime.forbidden": "Profil resmi JPEG veya PNG dosyaları olmalıdır",
"error.avatar.mime.forbidden":
"Profil resmi JPEG veya PNG dosyaları olmalıdır",
"error.blueprint.notFound": "\"{name}\" adlı plan yüklenemedi", "error.blueprint.notFound": "\"{name}\" adlı plan yüklenemedi",
@@ -54,22 +52,17 @@
"error.field.converter.invalid": "Geçersiz dönüştürücü \"{converter}\"", "error.field.converter.invalid": "Geçersiz dönüştürücü \"{converter}\"",
"error.file.changeName.empty": "İsim boş olmamalıdır", "error.file.changeName.empty": "İsim boş olmamalıdır",
"error.file.changeName.permission": "error.file.changeName.permission": "\"{filename}\" adını değiştiremezsiniz",
"\"{filename}\" adını değiştiremezsiniz",
"error.file.duplicate": "\"{filename}\" isimli bir dosya zaten var", "error.file.duplicate": "\"{filename}\" isimli bir dosya zaten var",
"error.file.extension.forbidden": "error.file.extension.forbidden": "\"{extension}\" dosya uzantısına izin verilmiyor",
"\"{extension}\" dosya uzantısına izin verilmiyor", "error.file.extension.missing": "\"{filename}\" dosyasının uzantısı yok",
"error.file.extension.missing":
"\"{filename}\" dosyasının uzantısı yok",
"error.file.maxheight": "Resmin yüksekliği {height} pikselden büyük olmamalıdır", "error.file.maxheight": "Resmin yüksekliği {height} pikselden büyük olmamalıdır",
"error.file.maxsize": "Dosya çok büyük", "error.file.maxsize": "Dosya çok büyük",
"error.file.maxwidth": "Resmin genişliği {width} pikselden büyük olmamalıdır", "error.file.maxwidth": "Resmin genişliği {width} pikselden büyük olmamalıdır",
"error.file.mime.differs": "error.file.mime.differs": "Yüklenen dosya aynı dosya türü \"{mime}\" olmalıdır",
"Yüklenen dosya aynı dosya türü \"{mime}\" olmalıdır",
"error.file.mime.forbidden": "\"{mime}\" medya türüne izin verilmiyor", "error.file.mime.forbidden": "\"{mime}\" medya türüne izin verilmiyor",
"error.file.mime.invalid": "Geçersiz medya türü: {mime}", "error.file.mime.invalid": "Geçersiz medya türü: {mime}",
"error.file.mime.missing": "error.file.mime.missing": "\"{filename}\" için medya türü tespit edilemiyor",
"\"{filename}\" için medya türü tespit edilemiyor",
"error.file.minheight": "Resmin yüksekliği en az {height} piksel olmalıdır", "error.file.minheight": "Resmin yüksekliği en az {height} piksel olmalıdır",
"error.file.minsize": "Dosya çok küçük", "error.file.minsize": "Dosya çok küçük",
"error.file.minwidth": "Resmin genişliği en az {width} piksel olmalıdır", "error.file.minwidth": "Resmin genişliği en az {width} piksel olmalıdır",
@@ -90,111 +83,77 @@
"error.license.email": "Lütfen geçerli bir e-posta adresi girin", "error.license.email": "Lütfen geçerli bir e-posta adresi girin",
"error.license.verification": "Lisans doğrulanamadı", "error.license.verification": "Lisans doğrulanamadı",
"error.page.changeSlug.permission": "error.page.changeSlug.permission": "\"{slug}\" uzantısına sahip bu sayfanın adresini değiştirilemez",
"\"{slug}\" uzantısına sahip bu sayfanın adresini değiştirilemez", "error.page.changeStatus.incomplete": "Sayfada hatalar var ve yayınlanamadı",
"error.page.changeStatus.incomplete": "error.page.changeStatus.permission": "Bu sayfanın durumu değiştirilemez",
"Sayfada hatalar var ve yayınlanamadı", "error.page.changeStatus.toDraft.invalid": "\"{slug}\" sayfası bir taslak haline dönüştürülemiyor",
"error.page.changeStatus.permission": "error.page.changeTemplate.invalid": "\"{slug}\" sayfası için şablon değiştirilemiyor",
"Bu sayfanın durumu değiştirilemez", "error.page.changeTemplate.permission": "\"{slug}\" için şablonu değiştiremezsiniz",
"error.page.changeStatus.toDraft.invalid":
"\"{slug}\" sayfası bir taslak haline dönüştürülemiyor",
"error.page.changeTemplate.invalid":
"\"{slug}\" sayfası için şablon değiştirilemiyor",
"error.page.changeTemplate.permission":
"\"{slug}\" için şablonu değiştiremezsiniz",
"error.page.changeTitle.empty": "Başlık boş bırakılamaz", "error.page.changeTitle.empty": "Başlık boş bırakılamaz",
"error.page.changeTitle.permission": "error.page.changeTitle.permission": "\"{slug}\" için başlığı değiştiremezsiniz",
"\"{slug}\" için başlığı değiştiremezsiniz",
"error.page.create.permission": "\"{slug}\" oluşturmanıza izin verilmiyor", "error.page.create.permission": "\"{slug}\" oluşturmanıza izin verilmiyor",
"error.page.delete": "\"{slug}\" sayfası silinemedi", "error.page.delete": "\"{slug}\" sayfası silinemedi",
"error.page.delete.confirm": "Onaylamak için sayfa başlığını girin", "error.page.delete.confirm": "Onaylamak için sayfa başlığını girin",
"error.page.delete.hasChildren": "error.page.delete.hasChildren": "Sayfada alt sayfalar var ve silinemiyor",
"Sayfada alt sayfalar var ve silinemiyor",
"error.page.delete.permission": "\"{slug}\" öğesini silmenize izin verilmiyor", "error.page.delete.permission": "\"{slug}\" öğesini silmenize izin verilmiyor",
"error.page.draft.duplicate": "error.page.draft.duplicate": "\"{slug}\" adres eki olan bir sayfa taslağı zaten mevcut",
"\"{slug}\" adres eki olan bir sayfa taslağı zaten mevcut", "error.page.duplicate": "\"{slug}\" adres eki içeren bir sayfa zaten mevcut",
"error.page.duplicate":
"\"{slug}\" adres eki içeren bir sayfa zaten mevcut",
"error.page.duplicate.permission": "\"{slug}\" öğesini çoğaltmanıza izin verilmiyor", "error.page.duplicate.permission": "\"{slug}\" öğesini çoğaltmanıza izin verilmiyor",
"error.page.notFound": "\"{slug}\" uzantısındaki sayfa bulunamadı", "error.page.notFound": "\"{slug}\" uzantısındaki sayfa bulunamadı",
"error.page.num.invalid": "error.page.num.invalid": "Lütfen geçerli bir sıralama numarası girin. Sayılar negatif olmamalıdır.",
"Lütfen geçerli bir sıralama numarası girin. Sayılar negatif olmamalıdır.",
"error.page.slug.invalid": "Lütfen geçerli bir adres öneki girin", "error.page.slug.invalid": "Lütfen geçerli bir adres öneki girin",
"error.page.sort.permission": "\"{slug}\" sayfası sıralanamıyor", "error.page.sort.permission": "\"{slug}\" sayfası sıralanamıyor",
"error.page.status.invalid": "Lütfen geçerli bir sayfa durumu ayarlayın", "error.page.status.invalid": "Lütfen geçerli bir sayfa durumu ayarlayın",
"error.page.undefined": "Sayfa bulunamad\u0131", "error.page.undefined": "Sayfa bulunamad\u0131",
"error.page.update.permission": "\"{slug}\" güncellemesine izin verilmiyor", "error.page.update.permission": "\"{slug}\" güncellemesine izin verilmiyor",
"error.section.files.max.plural": "error.section.files.max.plural": "\"{section}\" bölümüne {max} dosyadan daha fazlasını eklememelisiniz",
"\"{section}\" bölümüne {max} dosyadan daha fazlasını eklememelisiniz", "error.section.files.max.singular": "\"{section}\" bölümüne birden fazla dosya eklememelisiniz",
"error.section.files.max.singular": "error.section.files.min.plural": "\"{section}\" bölümü en az {min} dosya gerektiriyor",
"\"{section}\" bölümüne birden fazla dosya eklememelisiniz", "error.section.files.min.singular": "\"{section}\" bölümü en az bir dosya gerektiriyor",
"error.section.files.min.plural":
"\"{section}\" bölümü en az {min} dosya gerektiriyor",
"error.section.files.min.singular":
"\"{section}\" bölümü en az bir dosya gerektiriyor",
"error.section.pages.max.plural": "error.section.pages.max.plural": "\"{section}\" bölümüne maksimum {max} sayfadan fazla ekleyemezsiniz",
"\"{section}\" bölümüne maksimum {max} sayfadan fazla ekleyemezsiniz", "error.section.pages.max.singular": "\"{section}\" bölümüne birden fazla sayfa ekleyemezsiniz",
"error.section.pages.max.singular": "error.section.pages.min.plural": "\"{section}\" bölümü en az {min} sayfa gerektiriyor",
"\"{section}\" bölümüne birden fazla sayfa ekleyemezsiniz", "error.section.pages.min.singular": "\"{section}\" bölümü en az bir sayfa gerektiriyor",
"error.section.pages.min.plural":
"\"{section}\" bölümü en az {min} sayfa gerektiriyor",
"error.section.pages.min.singular":
"\"{section}\" bölümü en az bir sayfa gerektiriyor",
"error.section.notLoaded": "\"{name}\" bölümü yüklenemedi", "error.section.notLoaded": "\"{name}\" bölümü yüklenemedi",
"error.section.type.invalid": "\"{type}\" tipi geçerli değil", "error.section.type.invalid": "\"{type}\" tipi geçerli değil",
"error.site.changeTitle.empty": "Başlık boş bırakılamaz", "error.site.changeTitle.empty": "Başlık boş bırakılamaz",
"error.site.changeTitle.permission": "error.site.changeTitle.permission": "Sitenin başlığını değiştiremezsin",
"Sitenin başlığını değiştiremezsin",
"error.site.update.permission": "Siteyi güncellemenize izin verilmiyor", "error.site.update.permission": "Siteyi güncellemenize izin verilmiyor",
"error.template.default.notFound": "Varsayılan şablon yok", "error.template.default.notFound": "Varsayılan şablon yok",
"error.user.changeEmail.permission": "error.user.changeEmail.permission": "\"{name}\" kullanıcısı için e-postayı değiştiremezsiniz",
"\"{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": "error.user.changeName.permission": "\"{name}\" kullanıcısının adını değiştiremezsiniz",
"\"{name}\" kullanıcısının dilini değiştiremezsin", "error.user.changePassword.permission": "\"{name}\" kullanıcısının şifresini değiştiremezsiniz",
"error.user.changeName.permission": "error.user.changeRole.lastAdmin": "Son yöneticinin rolü değiştirilemez",
"\"{name}\" kullanıcısının adını değiştiremezsiniz", "error.user.changeRole.permission": "\"{name}\" kullanıcısının rolünü değiştiremezsin",
"error.user.changePassword.permission": "error.user.changeRole.toAdmin": "Birini yönetici rolüne tanıtmanıza izin verilmiyor",
"\"{name}\" kullanıcısının şifresini değiştiremezsiniz",
"error.user.changeRole.lastAdmin":
"Son yöneticinin rolü değiştirilemez",
"error.user.changeRole.permission":
"\"{name}\" kullanıcısının rolünü değiştiremezsin",
"error.user.changeRole.toAdmin":
"Birini yönetici rolüne tanıtmanıza izin verilmiyor",
"error.user.create.permission": "Bu kullanıcıyı oluşturmanıza izin verilmiyor", "error.user.create.permission": "Bu kullanıcıyı oluşturmanıza izin verilmiyor",
"error.user.delete": "\"{name}\" kullanıcısı silinemedi", "error.user.delete": "\"{name}\" kullanıcısı silinemedi",
"error.user.delete.lastAdmin": "Son y\u00f6netici kullan\u0131c\u0131y\u0131 silemezsiniz", "error.user.delete.lastAdmin": "Son y\u00f6netici kullan\u0131c\u0131y\u0131 silemezsiniz",
"error.user.delete.lastUser": "Son kullanıcı silinemez", "error.user.delete.lastUser": "Son kullanıcı silinemez",
"error.user.delete.permission": "error.user.delete.permission": "\"{name}\" kullanıcısını silme yetkiniz yok",
"\"{name}\" kullanıcısını silme yetkiniz yok", "error.user.duplicate": "\"{email}\" e-posta adresine sahip bir kullanıcı zaten var",
"error.user.duplicate":
"\"{email}\" e-posta adresine sahip bir kullanıcı zaten var",
"error.user.email.invalid": "Lütfen geçerli bir e-posta adresi girin", "error.user.email.invalid": "Lütfen geçerli bir e-posta adresi girin",
"error.user.language.invalid": "Lütfen geçerli bir dil girin", "error.user.language.invalid": "Lütfen geçerli bir dil girin",
"error.user.notFound": "\"{name}\" kullanıcısı bulunamadı", "error.user.notFound": "\"{name}\" kullanıcısı bulunamadı",
"error.user.password.invalid": "error.user.password.invalid": "Lütfen geçerli bir şifre giriniz. Şifreler en az 8 karakter uzunluğunda olmalıdır.",
"Lütfen geçerli bir şifre giriniz. Şifreler en az 8 karakter uzunluğunda olmalıdır.",
"error.user.password.notSame": "L\u00fctfen \u015fifreyi do\u011frulay\u0131n", "error.user.password.notSame": "L\u00fctfen \u015fifreyi do\u011frulay\u0131n",
"error.user.password.undefined": "Bu kullanıcının şifresi yok", "error.user.password.undefined": "Bu kullanıcının şifresi yok",
"error.user.role.invalid": "Lütfen geçerli bir rol girin", "error.user.role.invalid": "Lütfen geçerli bir rol girin",
"error.user.update.permission": "error.user.update.permission": "\"{name}\" kullanıcısını güncellemenize izin verilmiyor",
"\"{name}\" kullanıcısını güncellemenize izin verilmiyor",
"error.validation.accepted": "Lütfen onaylayın", "error.validation.accepted": "Lütfen onaylayın",
"error.validation.alpha": "Lütfen sadece a-z arasındaki karakterleri girin", "error.validation.alpha": "Lütfen sadece a-z arasındaki karakterleri girin",
"error.validation.alphanum": "error.validation.alphanum": "Lütfen sadece a-z veya 0-9 arasındaki rakamları girin",
"Lütfen sadece a-z veya 0-9 arasındaki rakamları girin", "error.validation.between": "Lütfen \"{min}\" ile \"{max}\" arasında bir değer girin",
"error.validation.between":
"Lütfen \"{min}\" ile \"{max}\" arasında bir değer girin",
"error.validation.boolean": "Lütfen onaylayın veya reddedin", "error.validation.boolean": "Lütfen onaylayın veya reddedin",
"error.validation.contains": "error.validation.contains": "Lütfen \"{needle}\" içeren bir değer girin",
"Lütfen \"{needle}\" içeren bir değer girin",
"error.validation.date": "Lütfen geçerli bir tarih girin", "error.validation.date": "Lütfen geçerli bir tarih girin",
"error.validation.date.after": "Lütfen {date} tarihinden sonra bir tarih girin", "error.validation.date.after": "Lütfen {date} tarihinden sonra bir tarih girin",
"error.validation.date.before": "Lütfen {date} tarihinden önce bir tarih girin", "error.validation.date.before": "Lütfen {date} tarihinden önce bir tarih girin",
@@ -210,18 +169,14 @@
"error.validation.less": "Lütfen {max} 'dan daha düşük bir değer girin", "error.validation.less": "Lütfen {max} 'dan daha düşük bir değer girin",
"error.validation.match": "Değer beklenen modelle eşleşmiyor", "error.validation.match": "Değer beklenen modelle eşleşmiyor",
"error.validation.max": "Lütfen {max} 'a eşit veya daha küçük bir değer girin", "error.validation.max": "Lütfen {max} 'a eşit veya daha küçük bir değer girin",
"error.validation.maxlength": "error.validation.maxlength": "Lütfen daha kısa bir değer girin. (maks. {max} karakter)",
"Lütfen daha kısa bir değer girin. (maks. {max} karakter)",
"error.validation.maxwords": "Lütfen en fazla {max} kelime(ler) girin", "error.validation.maxwords": "Lütfen en fazla {max} kelime(ler) girin",
"error.validation.min": "Lütfen {min} ile eşit veya daha büyük bir değer girin", "error.validation.min": "Lütfen {min} ile eşit veya daha büyük bir değer girin",
"error.validation.minlength": "error.validation.minlength": "Lütfen daha uzun bir değer girin. (min. {min} karakter)",
"Lütfen daha uzun bir değer girin. (min. {min} karakter)",
"error.validation.minwords": "Lütfen en az {min} kelime(ler) girin", "error.validation.minwords": "Lütfen en az {min} kelime(ler) girin",
"error.validation.more": "Lütfen {min} değerinden daha büyük bir değer girin", "error.validation.more": "Lütfen {min} değerinden daha büyük bir değer girin",
"error.validation.notcontains": "error.validation.notcontains": "Lütfen \"{needle}\" içermeyen bir değer girin",
"Lütfen \"{needle}\" içermeyen bir değer girin", "error.validation.notin": "Lütfen bunlardan herhangi birini girmeyin: ({notIn})",
"error.validation.notin":
"Lütfen bunlardan herhangi birini girmeyin: ({notIn})",
"error.validation.option": "Lütfen geçerli bir seçenek girin", "error.validation.option": "Lütfen geçerli bir seçenek girin",
"error.validation.num": "Lütfen geçerli bir sayı girin", "error.validation.num": "Lütfen geçerli bir sayı girin",
"error.validation.required": "Lütfen birşeyler girin", "error.validation.required": "Lütfen birşeyler girin",
@@ -238,8 +193,7 @@
"field.structure.empty": "Hen\u00fcz bir girdi yok", "field.structure.empty": "Hen\u00fcz bir girdi yok",
"field.users.empty": "Henüz kullanıcı seçilmedi", "field.users.empty": "Henüz kullanıcı seçilmedi",
"file.delete.confirm": "file.delete.confirm": "<strong>{filename}</strong> dosyasını silmek istediğinizden emin misiniz?",
"<strong>{filename}</strong> dosyasını silmek istediğinizden emin misiniz?",
"files": "Dosyalar", "files": "Dosyalar",
"files.empty": "Henüz dosya yok", "files.empty": "Henüz dosya yok",
@@ -251,29 +205,22 @@
"installation": "Kurulum", "installation": "Kurulum",
"installation.completed": "Panel kuruldu", "installation.completed": "Panel kuruldu",
"installation.disabled": "Panel yükleyici, herkese açık sunucularda varsayılan olarak devre dışıdır. Lütfen yükleyiciyi yerel bir makinede çalıştırın veya <code>panel.install</code> seçeneğiyle etkinleştirin.", "installation.disabled": "Panel yükleyici, herkese açık sunucularda varsayılan olarak devre dışıdır. Lütfen yükleyiciyi yerel bir makinede çalıştırın veya <code>panel.install</code> seçeneğiyle etkinleştirin.",
"installation.issues.accounts": "installation.issues.accounts": "<code>/site/accounts</code> klasörü yok yada yazılabilir değil",
"<code>/site/accounts</code> klasörü yok yada yazılabilir değil", "installation.issues.content": "<code>/content</code> klasörü yok yada yazılabilir değil",
"installation.issues.content":
"<code>/content</code> klasörü yok yada yazılabilir değil",
"installation.issues.curl": "<code>CURL</code> eklentisi gerekli", "installation.issues.curl": "<code>CURL</code> eklentisi gerekli",
"installation.issues.headline": "Panel kurulamadı", "installation.issues.headline": "Panel kurulamadı",
"installation.issues.mbstring": "installation.issues.mbstring": "<code>MB String</code> eklentisi gerekli",
"<code>MB String</code> eklentisi gerekli", "installation.issues.media": "<code>/media</code> klasörü yok yada yazılamaz",
"installation.issues.media":
"<code>/media</code> klasörü yok yada yazılamaz",
"installation.issues.php": "<code>PHP 7+</code> kullandığınızdan emin olun. ", "installation.issues.php": "<code>PHP 7+</code> kullandığınızdan emin olun. ",
"installation.issues.server": "installation.issues.server": "Kirby <code>Apache</code>, <code>Nginx</code> or <code>Caddy</code> gerektirir",
"Kirby <code>Apache</code>, <code>Nginx</code> or <code>Caddy</code> gerektirir",
"installation.issues.sessions": "<code>/site/sessions</code> klasörü mevcut değil veya yazılabilir değil", "installation.issues.sessions": "<code>/site/sessions</code> klasörü mevcut değil veya yazılabilir değil",
"language": "Dil", "language": "Dil",
"language.code": "Kod", "language.code": "Kod",
"language.convert": "Varsayılan yap", "language.convert": "Varsayılan yap",
"language.convert.confirm": "language.convert.confirm": "<p><strong>{name}</strong>'i varsayılan dile dönüştürmek istiyor musunuz? Bu geri alınamaz.</p> <p><strong>{name}</strong> çevrilmemiş içeriğe sahipse, artık geçerli bir geri dönüş olmaz ve sitenizin bazı bölümleri boş olabilir.</p>",
"<p><strong>{name}</strong>'i varsayılan dile dönüştürmek istiyor musunuz? Bu geri alınamaz.</p> <p><strong>{name}</strong> çevrilmemiş içeriğe sahipse, artık geçerli bir geri dönüş olmaz ve sitenizin bazı bölümleri boş olabilir.</p>",
"language.create": "Yeni bir dil ekle", "language.create": "Yeni bir dil ekle",
"language.delete.confirm": "language.delete.confirm": "Tüm çevirileri içeren <strong>{name}</strong> dilini gerçekten silmek istiyor musunuz? Bu geri alınamaz!",
"Tüm çevirileri içeren <strong>{name}</strong> dilini gerçekten silmek istiyor musunuz? Bu geri alınamaz!",
"language.deleted": "Dil silindi", "language.deleted": "Dil silindi",
"language.direction": "Okuma yönü", "language.direction": "Okuma yönü",
"language.direction.ltr": "Soldan sağa", "language.direction.ltr": "Soldan sağa",
@@ -292,8 +239,7 @@
"license": "Lisans", "license": "Lisans",
"license.buy": "Bir lisans satın al", "license.buy": "Bir lisans satın al",
"license.register": "Kayıt Ol", "license.register": "Kayıt Ol",
"license.register.help": "license.register.help": "Satın alma işleminden sonra e-posta yoluyla lisans kodunuzu aldınız. Lütfen kayıt olmak için kodu kopyalayıp yapıştırın.",
"Satın alma işleminden sonra e-posta yoluyla lisans kodunuzu aldınız. Lütfen kayıt olmak için kodu kopyalayıp yapıştırın.",
"license.register.label": "Lütfen lisans kodunu giriniz", "license.register.label": "Lütfen lisans kodunu giriniz",
"license.register.success": "Kirby'yi desteklediğiniz için teşekkürler", "license.register.success": "Kirby'yi desteklediğiniz için teşekkürler",
"license.unregistered": "Bu Kirby'nin kayıtsız bir demosu", "license.unregistered": "Bu Kirby'nin kayıtsız bir demosu",
@@ -325,7 +271,7 @@
"months.april": "Nisan", "months.april": "Nisan",
"months.august": "A\u011fustos", "months.august": "A\u011fustos",
"months.december": "Aral\u0131k", "months.december": "Aral\u0131k",
"months.february": "\u015eubat", "months.february": "Şubat",
"months.january": "Ocak", "months.january": "Ocak",
"months.july": "Temmuz", "months.july": "Temmuz",
"months.june": "Haziran", "months.june": "Haziran",
@@ -354,10 +300,8 @@
"page.changeStatus.position": "Lütfen bir pozisyon seçin", "page.changeStatus.position": "Lütfen bir pozisyon seçin",
"page.changeStatus.select": "Yeni bir durum seçin", "page.changeStatus.select": "Yeni bir durum seçin",
"page.changeTemplate": "Şablonu değiştir", "page.changeTemplate": "Şablonu değiştir",
"page.delete.confirm": "page.delete.confirm": "<strong>{title}</strong> sayfasını silmek istediğinizden emin misiniz?",
"<strong>{title}</strong> sayfasını silmek istediğinizden emin misiniz?", "page.delete.confirm.subpages": "<strong>Bu sayfada alt sayfalar var</strong>. <br>Tüm alt sayfalar da silinecek.",
"page.delete.confirm.subpages":
"<strong>Bu sayfada alt sayfalar var</strong>. <br>Tüm alt sayfalar da silinecek.",
"page.delete.confirm.title": "Onaylamak için sayfa başlığını girin", "page.delete.confirm.title": "Onaylamak için sayfa başlığını girin",
"page.draft.create": "Taslak oluştur", "page.draft.create": "Taslak oluştur",
"page.duplicate.appendix": "Kopya", "page.duplicate.appendix": "Kopya",
@@ -365,8 +309,7 @@
"page.duplicate.pages": "Sayfaları kopyala", "page.duplicate.pages": "Sayfaları kopyala",
"page.status": "Durum", "page.status": "Durum",
"page.status.draft": "Taslak", "page.status.draft": "Taslak",
"page.status.draft.description": "page.status.draft.description": "Sayfa taslak halinde ve yalnızca oturum açmış editörler için veya gizli bağlantı üzerinden görülebilir",
"Sayfa taslak modunda ve sadece giriş yapılan düzenleyiciler için görünür durumda",
"page.status.listed": "Herkese Açık", "page.status.listed": "Herkese Açık",
"page.status.listed.description": "Bu sayfa herkese açık", "page.status.listed.description": "Bu sayfa herkese açık",
"page.status.unlisted": "Liste Dışı", "page.status.unlisted": "Liste Dışı",
@@ -388,6 +331,7 @@
"replace": "De\u011fi\u015ftir", "replace": "De\u011fi\u015ftir",
"retry": "Tekrar Dene", "retry": "Tekrar Dene",
"revert": "Vazge\u00e7", "revert": "Vazge\u00e7",
"revert.confirm": "Gerçekten <strong>kaydedilmemiş tüm değişiklikleri silmek</strong> istiyor musunuz?",
"role": "Rol", "role": "Rol",
"role.admin.description": "Yönetici tüm haklara sahiptir", "role.admin.description": "Yönetici tüm haklara sahiptir",
@@ -451,8 +395,7 @@
"url.placeholder": "https://ornek.com", "url.placeholder": "https://ornek.com",
"user": "Kullanıcı", "user": "Kullanıcı",
"user.blueprint": "user.blueprint": "Bu kullanıcı rolü için <strong>/site/blueprints/users/{role}.yml</strong> içinde ek bölümler ve form alanları tanımlayabilirsiniz",
"Bu kullanıcı rolü için <strong>/site/blueprints/users/{role}.yml</strong> içinde ek bölümler ve form alanları tanımlayabilirsiniz",
"user.changeEmail": "E-postayı değiştir", "user.changeEmail": "E-postayı değiştir",
"user.changeLanguage": "Dili değiştir", "user.changeLanguage": "Dili değiştir",
"user.changeName": "Kullanıcıyı yeniden adlandır", "user.changeName": "Kullanıcıyı yeniden adlandır",
@@ -463,8 +406,7 @@
"user.changeRole.select": "Yeni bir rol seçin", "user.changeRole.select": "Yeni bir rol seçin",
"user.create": "Yeni bir kullanıcı ekle", "user.create": "Yeni bir kullanıcı ekle",
"user.delete": "Bu kullanıcıyı sil", "user.delete": "Bu kullanıcıyı sil",
"user.delete.confirm": "user.delete.confirm": "<strong>{email}</strong> kullanıcısını silmek istediğinizden emin misiniz?",
"<strong>{email}</strong> kullanıcısını silmek istediğinizden emin misiniz?",
"users": "Kullanıcılar", "users": "Kullanıcılar",

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -9,6 +9,7 @@ window.panel.plugins = {
routes: [], routes: [],
use: [], use: [],
views: {}, views: {},
thirdParty: {}
}; };
window.panel.plugin = function (plugin, parts) { window.panel.plugin = function (plugin, parts) {
@@ -52,6 +53,11 @@ window.panel.plugin = function (plugin, parts) {
window.panel.plugins.login = parts.login; window.panel.plugins.login = parts.login;
} }
// Third-party plugins
resolve(parts, "thirdParty", function(name, options) {
window.panel.plugins["thirdParty"][name] = options;
});
}; };
function resolve(object, type, callback) { function resolve(object, type, callback) {

File diff suppressed because one or more lines are too long

View File

@@ -293,6 +293,24 @@ class Api
return isset($this->data[$key]) === true; return isset($this->data[$key]) === true;
} }
/**
* Matches an object with an array item
* based on the `type` field
*
* @param array models or collections
* @param mixed $object
*
* @return string key of match
*/
protected function match(array $array, $object = null)
{
foreach ($array as $definition => $model) {
if (is_a($object, $model['type']) === true) {
return $definition;
}
}
}
/** /**
* Returns an API model instance by name * Returns an API model instance by name
* *
@@ -302,8 +320,15 @@ class Api
* *
* @throws \Kirby\Exception\NotFoundException If no model for `$name` exists * @throws \Kirby\Exception\NotFoundException If no model for `$name` exists
*/ */
public function model(string $name, $object = null) public function model(string $name = null, $object = null)
{ {
// Try to auto-match object with API models
if ($name === null) {
if ($model = $this->match($this->models, $object)) {
$name = $model;
}
}
if (isset($this->models[$name]) === false) { if (isset($this->models[$name]) === false) {
throw new NotFoundException(sprintf('The model "%s" does not exist', $name)); throw new NotFoundException(sprintf('The model "%s" does not exist', $name));
} }
@@ -420,29 +445,15 @@ class Api
return $object; return $object;
} }
$className = strtolower(get_class($object)); if ($model = $this->match($this->models, $object)) {
$lastDash = strrpos($className, '\\'); return $this->model($model, $object);
if ($lastDash !== false) {
$className = substr($className, $lastDash + 1);
} }
if (isset($this->models[$className]) === true) { if ($collection = $this->match($this->collections, $object)) {
return $this->model($className, $object); return $this->collection($collection, $object);
} }
if (isset($this->collections[$className]) === true) { throw new NotFoundException(sprintf('The object "%s" cannot be resolved', get_class($object)));
return $this->collection($className, $object);
}
// now models deeply by checking for the actual type
foreach ($this->models as $modelClass => $model) {
if (is_a($object, $model['type']) === true) {
return $this->model($modelClass, $object);
}
}
throw new NotFoundException(sprintf('The object "%s" cannot be resolved', $className));
} }
/** /**

View File

@@ -29,7 +29,7 @@ class Collection
{ {
$this->api = $api; $this->api = $api;
$this->data = $data; $this->data = $data;
$this->model = $schema['model']; $this->model = $schema['model'] ?? null;
$this->view = $schema['view'] ?? null; $this->view = $schema['view'] ?? null;
if ($data === null) { if ($data === null) {
@@ -40,7 +40,10 @@ class Collection
$this->data = $schema['default']->call($this->api); $this->data = $schema['default']->call($this->api);
} }
if (isset($schema['type']) === true && is_a($this->data, $schema['type']) === false) { if (
isset($schema['type']) === true &&
is_a($this->data, $schema['type']) === false
) {
throw new Exception('Invalid collection type'); throw new Exception('Invalid collection type');
} }
} }

View File

@@ -48,7 +48,10 @@ class Model
$this->data = $schema['default']->call($this->api); $this->data = $schema['default']->call($this->api);
} }
if (isset($schema['type']) === true && is_a($this->data, $schema['type']) === false) { if (
isset($schema['type']) === true &&
is_a($this->data, $schema['type']) === false
) {
throw new Exception(sprintf('Invalid model type "%s" expected: "%s"', get_class($this->data), $schema['type'])); throw new Exception(sprintf('Invalid model type "%s" expected: "%s"', get_class($this->data), $schema['type']));
} }
} }
@@ -130,7 +133,10 @@ class Model
$value = $this->api->resolve($value); $value = $this->api->resolve($value);
} }
if (is_a($value, 'Kirby\Api\Collection') === true || is_a($value, 'Kirby\Api\Model') === true) { if (
is_a($value, 'Kirby\Api\Collection') === true ||
is_a($value, 'Kirby\Api\Model') === true
) {
$selection = $select[$key]; $selection = $select[$key];
if ($subview = $selection['view']) { if ($subview = $selection['view']) {

View File

@@ -39,7 +39,8 @@ class Api extends BaseApi
$this->kirby->setCurrentLanguage($this->language()); $this->kirby->setCurrentLanguage($this->language());
if ($user = $this->kirby->user()) { $allowImpersonation = $this->kirby()->option('api.allowImpersonation', false);
if ($user = $this->kirby->user(null, $allowImpersonation)) {
$this->kirby->setCurrentTranslation($user->language()); $this->kirby->setCurrentTranslation($user->language());
} }
@@ -95,8 +96,9 @@ class Api extends BaseApi
public function file(string $path = null, string $filename) public function file(string $path = null, string $filename)
{ {
$filename = urldecode($filename); $filename = urldecode($filename);
$file = $this->parent($path)->file($filename);
if ($file = $this->parent($path)->file($filename)) { if ($file && $file->isReadable() === true) {
return $file; return $file;
} }
@@ -136,7 +138,7 @@ class Api extends BaseApi
$model = $kirby->site(); $model = $kirby->site();
break; break;
case 'account': case 'account':
$model = $kirby->user(); $model = $kirby->user(null, $kirby->option('api.allowImpersonation', false));
break; break;
case 'page': case 'page':
$id = str_replace(['+', ' '], '/', basename($path)); $id = str_replace(['+', ' '], '/', basename($path));
@@ -192,7 +194,7 @@ class Api extends BaseApi
$id = str_replace('+', '/', $id); $id = str_replace('+', '/', $id);
$page = $this->kirby->page($id); $page = $this->kirby->page($id);
if ($page && $page->isReadable()) { if ($page && $page->isReadable() === true) {
return $page; return $page;
} }
@@ -242,7 +244,7 @@ class Api extends BaseApi
{ {
// get the authenticated user // get the authenticated user
if ($id === null) { if ($id === null) {
return $this->kirby->auth()->user(); return $this->kirby->auth()->user(null, $this->kirby()->option('api.allowImpersonation', false));
} }
// get a specific user by id // get a specific user by id

View File

@@ -6,6 +6,7 @@ use Kirby\Data\Data;
use Kirby\Email\PHPMailer as Emailer; use Kirby\Email\PHPMailer as Emailer;
use Kirby\Exception\ErrorPageException; use Kirby\Exception\ErrorPageException;
use Kirby\Exception\InvalidArgumentException; use Kirby\Exception\InvalidArgumentException;
use Kirby\Exception\LogicException;
use Kirby\Exception\NotFoundException; use Kirby\Exception\NotFoundException;
use Kirby\Http\Request; use Kirby\Http\Request;
use Kirby\Http\Router; use Kirby\Http\Router;
@@ -18,6 +19,7 @@ use Kirby\Toolkit\Controller;
use Kirby\Toolkit\Dir; use Kirby\Toolkit\Dir;
use Kirby\Toolkit\F; use Kirby\Toolkit\F;
use Kirby\Toolkit\Properties; use Kirby\Toolkit\Properties;
use Throwable;
/** /**
* The `$kirby` object is the app instance of * The `$kirby` object is the app instance of
@@ -44,7 +46,6 @@ class App
use Properties; use Properties;
protected static $instance; protected static $instance;
protected static $root;
protected static $version; protected static $version;
public $data = []; public $data = [];
@@ -74,6 +75,14 @@ class App
protected $users; protected $users;
protected $visitor; protected $visitor;
/**
* List of options that shouldn't be converted
* to a tree structure by dot syntax
*
* @var array
*/
public static $nestIgnoreOptions = ['hooks'];
/** /**
* Creates a new App instance * Creates a new App instance
* *
@@ -81,9 +90,6 @@ class App
*/ */
public function __construct(array $props = []) public function __construct(array $props = [])
{ {
// the kirby folder directory
static::$root = dirname(__DIR__, 2);
// 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'] ?? []);
@@ -91,6 +97,9 @@ class App
$this->optionsFromConfig(); $this->optionsFromConfig();
$this->optionsFromProps($props['options'] ?? []); $this->optionsFromProps($props['options'] ?? []);
// register the Whoops error handler
$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);
@@ -118,20 +127,22 @@ class App
$this->extensionsFromSystem(); $this->extensionsFromSystem();
$this->extensionsFromProps($props); $this->extensionsFromProps($props);
$this->extensionsFromPlugins(); $this->extensionsFromPlugins();
$this->extensionsFromOptions();
$this->extensionsFromFolders(); $this->extensionsFromFolders();
// bake the options for the first time
$this->bakeOptions();
// register the extensions from the normalized options
$this->extensionsFromOptions();
// trigger hook for use in plugins // trigger hook for use in plugins
$this->trigger('system.loadPlugins:after'); $this->trigger('system.loadPlugins:after');
// handle those damn errors
$this->handleErrors();
// execute a ready callback from the config // execute a ready callback from the config
$this->optionsFromReadyCallback(); $this->optionsFromReadyCallback();
// bake config // bake the options again with those from the ready callback
Config::$data = $this->options; $this->bakeOptions();
} }
/** /**
@@ -164,7 +175,7 @@ class App
return $this->api; return $this->api;
} }
$root = static::$root . '/config/api'; $root = $this->root('kirby') . '/config/api';
$extensions = $this->extensions['api'] ?? []; $extensions = $this->extensions['api'] ?? [];
$routes = (include $root . '/routes.php')($this); $routes = (include $root . '/routes.php')($this);
@@ -182,37 +193,54 @@ class App
} }
/** /**
* Applies a hook to the given value; * Applies a hook to the given value
* the value that gets modified by the hooks
* is always the last argument
* *
* @internal * @internal
* @param string $name Hook name * @param string $name Full event name
* @param mixed ...$args Arguments to pass to the hooks * @param array $args Associative array of named event arguments
* @param string $modify Key in $args that is modified by the hooks
* @param \Kirby\Cms\Event|null $originalEvent Event object (internal use)
* @return mixed Resulting value as modified by the hooks * @return mixed Resulting value as modified by the hooks
*/ */
public function apply(string $name, ...$args) public function apply(string $name, array $args, string $modify, ?Event $originalEvent = null)
{ {
// split up args into "passive" args and the value $event = $originalEvent ?? new Event($name, $args);
$value = array_pop($args);
if ($functions = $this->extension('hooks', $name)) { if ($functions = $this->extension('hooks', $name)) {
foreach ($functions as $function) { foreach ($functions as $function) {
// re-assemble args
$hookArgs = $args;
$hookArgs[] = $value;
// bind the App object to the hook // bind the App object to the hook
$newValue = $function->call($this, ...$hookArgs); $newValue = $event->call($this, $function);
// update value if one was returned // update value if one was returned
if ($newValue !== null) { if ($newValue !== null) {
$value = $newValue; $event->updateArgument($modify, $newValue);
} }
} }
} }
return $value; // apply wildcard hooks if available
$nameWildcards = $event->nameWildcards();
if ($originalEvent === null && count($nameWildcards) > 0) {
foreach ($nameWildcards as $nameWildcard) {
// the $event object is passed by reference
// and will be modified down the chain
$this->apply($nameWildcard, $event->arguments(), $modify, $event);
}
}
return $event->argument($modify);
}
/**
* Normalizes and globally sets the configured options
*
* @return self
*/
protected function bakeOptions()
{
$this->options = A::nest($this->options, static::$nestIgnoreOptions);
Config::$data = $this->options;
return $this;
} }
/** /**
@@ -223,7 +251,7 @@ class App
*/ */
protected function bakeRoots(array $roots = null) protected function bakeRoots(array $roots = null)
{ {
$roots = array_merge(require static::$root . '/config/roots.php', (array)$roots); $roots = array_merge(require dirname(__DIR__, 2) . '/config/roots.php', (array)$roots);
$this->roots = Ingredients::bake($roots); $this->roots = Ingredients::bake($roots);
return $this; return $this;
} }
@@ -241,7 +269,7 @@ class App
$urls['index'] = $this->options['url']; $urls['index'] = $this->options['url'];
} }
$urls = array_merge(require static::$root . '/config/urls.php', (array)$urls); $urls = array_merge(require $this->root('kirby') . '/config/urls.php', (array)$urls);
$this->urls = Ingredients::bake($urls); $this->urls = Ingredients::bake($urls);
return $this; return $this;
} }
@@ -285,11 +313,11 @@ class App
$router = $this->router(); $router = $this->router();
$router::$beforeEach = function ($route, $path, $method) { $router::$beforeEach = function ($route, $path, $method) {
$this->trigger('route:before', $route, $path, $method); $this->trigger('route:before', compact('route', 'path', 'method'));
}; };
$router::$afterEach = function ($route, $path, $method, $result) { $router::$afterEach = function ($route, $path, $method, $result, $final) {
return $this->apply('route:after', $route, $path, $method, $result); return $this->apply('route:after', compact('route', 'path', 'method', 'result', 'final'), 'result');
}; };
return $router->call($path ?? $this->path(), $method ?? $this->request()->method()); return $router->call($path ?? $this->path(), $method ?? $this->request()->method());
@@ -357,6 +385,31 @@ class App
return $this->options['content']['ignore'] ?? Dir::$ignore; return $this->options['content']['ignore'] ?? Dir::$ignore;
} }
/**
* Generates a non-guessable token based on model
* data and a configured salt
*
* @param mixed $model Object to pass to the salt callback if configured
* @param string $value Model data to include in the generated token
* @return string
*/
public function contentToken($model, string $value): string
{
if (method_exists($model, 'root') === true) {
$default = $model->root();
} else {
$default = $this->root('content');
}
$salt = $this->option('content.salt', $default);
if (is_a($salt, 'Closure') === true) {
$salt = $salt($model);
}
return hash_hmac('sha1', $value, $salt);
}
/** /**
* Calls a page controller by name * Calls a page controller by name
* and with the given arguments * and with the given arguments
@@ -524,12 +577,17 @@ class App
* Returns the current App instance * Returns the current App instance
* *
* @param \Kirby\Cms\App $instance * @param \Kirby\Cms\App $instance
* @return self * @param bool $lazy If `true`, the instance is only returned if already existing
* @return self|null
*/ */
public static function instance(self $instance = null) public static function instance(self $instance = null, bool $lazy = false)
{ {
if ($instance === null) { if ($instance === null) {
return static::$instance ?? new static(); if ($lazy === true) {
return static::$instance;
} else {
return static::$instance ?? new static();
}
} }
return static::$instance = $instance; return static::$instance = $instance;
@@ -659,7 +717,7 @@ class App
$data['site'] = $data['site'] ?? $data['kirby']->site(); $data['site'] = $data['site'] ?? $data['kirby']->site();
$data['parent'] = $data['parent'] ?? $data['site']->page(); $data['parent'] = $data['parent'] ?? $data['site']->page();
return KirbyTags::parse($text, $data, $this->options, $this->extensions['hooks']); return KirbyTags::parse($text, $data, $this->options, $this);
} }
/** /**
@@ -673,7 +731,7 @@ class App
*/ */
public function kirbytext(string $text = null, array $data = [], bool $inline = false): string public function kirbytext(string $text = null, array $data = [], bool $inline = false): string
{ {
$text = $this->apply('kirbytext:before', $text); $text = $this->apply('kirbytext:before', compact('text'), 'text');
$text = $this->kirbytags($text, $data); $text = $this->kirbytags($text, $data);
$text = $this->markdown($text, $inline); $text = $this->markdown($text, $inline);
@@ -681,7 +739,7 @@ class App
$text = $this->smartypants($text); $text = $this->smartypants($text);
} }
$text = $this->apply('kirbytext:after', $text); $text = $this->apply('kirbytext:after', compact('text'), 'text');
return $text; return $text;
} }
@@ -859,6 +917,27 @@ class App
// inject all last-minute options recursively // inject all last-minute options recursively
$this->options = array_replace_recursive($this->options, $options); $this->options = array_replace_recursive($this->options, $options);
// update the system with changed options
if (
isset($options['debug']) === true ||
isset($options['whoops']) === true ||
isset($options['editor']) === true
) {
$this->handleErrors();
}
if (isset($options['debug']) === true) {
$this->api = null;
}
if (isset($options['home']) === true || isset($options['error']) === true) {
$this->site = null;
}
if (isset($options['slugs']) === true) {
$this->i18n();
}
} }
return $this->options; return $this->options;
@@ -1091,7 +1170,7 @@ class App
} }
$registry = $this->extensions('routes'); $registry = $this->extensions('routes');
$system = (include static::$root . '/config/routes.php')($this); $system = (include $this->root('kirby') . '/config/routes.php')($this);
$routes = array_merge($system['before'], $registry, $system['after']); $routes = array_merge($system['before'], $registry, $system['after']);
return $this->routes = $routes; return $this->routes = $routes;
@@ -1312,12 +1391,15 @@ class App
* Trigger a hook by name * Trigger a hook by name
* *
* @internal * @internal
* @param string $name * @param string $name Full event name
* @param mixed ...$arguments * @param array $args Associative array of named event arguments
* @param \Kirby\Cms\Event|null $originalEvent Event object (internal use)
* @return void * @return void
*/ */
public function trigger(string $name, ...$arguments) public function trigger(string $name, array $args = [], ?Event $originalEvent = null)
{ {
$event = $originalEvent ?? new Event($name, $args);
if ($functions = $this->extension('hooks', $name)) { if ($functions = $this->extension('hooks', $name)) {
static $level = 0; static $level = 0;
static $triggered = []; static $triggered = [];
@@ -1332,7 +1414,7 @@ class App
$triggered[$name][] = $function; $triggered[$name][] = $function;
// bind the App object to the hook // bind the App object to the hook
$function->call($this, ...$arguments); $event->call($this, $function);
} }
$level--; $level--;
@@ -1341,6 +1423,14 @@ class App
$triggered = []; $triggered = [];
} }
} }
// trigger wildcard hooks if available
$nameWildcards = $event->nameWildcards();
if ($originalEvent === null && count($nameWildcards) > 0) {
foreach ($nameWildcards as $nameWildcard) {
$this->trigger($nameWildcard, $args, $event);
}
}
} }
/** /**
@@ -1372,7 +1462,11 @@ class App
*/ */
public static function version(): ?string public static function version(): ?string
{ {
return static::$version = static::$version ?? Data::read(static::$root . '/composer.json')['version'] ?? null; try {
return static::$version = static::$version ?? Data::read(dirname(__DIR__, 2) . '/composer.json')['version'] ?? null;
} catch (Throwable $e) {
throw new LogicException('The Kirby version cannot be detected. The composer.json is probably missing or not readable.');
}
} }
/** /**

View File

@@ -10,7 +10,7 @@ use Whoops\Handler\PrettyPageHandler;
use Whoops\Run as Whoops; use Whoops\Run as Whoops;
/** /**
* AppErrors * PHP error handling using the Whoops library
* *
* @package Kirby Cms * @package Kirby Cms
* @author Bastian Allgeier <bastian@getkirby.com> * @author Bastian Allgeier <bastian@getkirby.com>
@@ -20,14 +20,30 @@ use Whoops\Run as Whoops;
*/ */
trait AppErrors trait AppErrors
{ {
/**
* Whoops instance cache
*
* @var \Whoops\Run
*/
protected $whoops;
/**
* Registers the PHP error handler for CLI usage
*
* @return void
*/
protected function handleCliErrors(): void protected function handleCliErrors(): void
{ {
$whoops = new Whoops(); $this->setWhoopsHandler(new PlainTextHandler());
$whoops->pushHandler(new PlainTextHandler());
$whoops->register();
} }
protected function handleErrors() /**
* Registers the PHP error handler
* based on the environment
*
* @return void
*/
protected function handleErrors(): void
{ {
if ($this->request()->cli() === true) { if ($this->request()->cli() === true) {
$this->handleCliErrors(); $this->handleCliErrors();
@@ -42,21 +58,25 @@ trait AppErrors
$this->handleHtmlErrors(); $this->handleHtmlErrors();
} }
protected function handleHtmlErrors() /**
* Registers the PHP error handler for HTML output
*
* @return void
*/
protected function handleHtmlErrors(): void
{ {
$whoops = new Whoops(); $handler = null;
if ($this->option('debug') === true) { if ($this->option('debug') === true) {
if ($this->option('whoops', true) === true) { if ($this->option('whoops', true) === true) {
$handler = new PrettyPageHandler(); $handler = new PrettyPageHandler();
$handler->setPageTitle('Kirby CMS Debugger'); $handler->setPageTitle('Kirby CMS Debugger');
$handler->setResourcesPath(dirname(__DIR__, 2) . '/assets');
$handler->addCustomCss('whoops.css');
if ($editor = $this->option('editor')) { if ($editor = $this->option('editor')) {
$handler->setEditor($editor); $handler->setEditor($editor);
} }
$whoops->pushHandler($handler);
$whoops->register();
} }
} else { } else {
$handler = new CallbackHandler(function ($exception, $inspector, $run) { $handler = new CallbackHandler(function ($exception, $inspector, $run) {
@@ -65,20 +85,27 @@ trait AppErrors
if (is_a($fatal, 'Closure') === true) { if (is_a($fatal, 'Closure') === true) {
echo $fatal($this); echo $fatal($this);
} else { } else {
include static::$root . '/views/fatal.php'; include $this->root('kirby') . '/views/fatal.php';
} }
return Handler::QUIT; return Handler::QUIT;
}); });
}
$whoops->pushHandler($handler); if ($handler !== null) {
$whoops->register(); $this->setWhoopsHandler($handler);
} else {
$this->unsetWhoopsHandler();
} }
} }
protected function handleJsonErrors() /**
* Registers the PHP error handler for JSON output
*
* @return void
*/
protected function handleJsonErrors(): void
{ {
$whoops = new Whoops();
$handler = new CallbackHandler(function ($exception, $inspector, $run) { $handler = new CallbackHandler(function ($exception, $inspector, $run) {
if (is_a($exception, 'Kirby\Exception\Exception') === true) { if (is_a($exception, 'Kirby\Exception\Exception') === true) {
$httpCode = $exception->getHttpCode(); $httpCode = $exception->getHttpCode();
@@ -112,7 +139,46 @@ trait AppErrors
return Handler::QUIT; return Handler::QUIT;
}); });
$this->setWhoopsHandler($handler);
}
/**
* Enables Whoops with the specified handler
*
* @param Callable|\Whoops\Handler\HandlerInterface $handler
* @return void
*/
protected function setWhoopsHandler($handler): void
{
$whoops = $this->whoops();
$whoops->clearHandlers();
$whoops->pushHandler($handler); $whoops->pushHandler($handler);
$whoops->register(); $whoops->register(); // will only do something if not already registered
}
/**
* Clears the Whoops handlers and disables Whoops
*
* @return void
*/
protected function unsetWhoopsHandler(): void
{
$whoops = $this->whoops();
$whoops->clearHandlers();
$whoops->unregister(); // will only do something if currently registered
}
/**
* Returns the Whoops error handler instance
*
* @return \Whoops\Run
*/
protected function whoops()
{
if ($this->whoops !== null) {
return $this->whoops;
}
return $this->whoops = new Whoops();
} }
} }

View File

@@ -7,7 +7,7 @@ use Kirby\Exception\DuplicateException;
use Kirby\Form\Field as FormField; use Kirby\Form\Field as FormField;
use Kirby\Text\KirbyTag; use Kirby\Text\KirbyTag;
use Kirby\Toolkit\A; use Kirby\Toolkit\A;
use Kirby\Toolkit\Collection; use Kirby\Toolkit\Collection as ToolkitCollection;
use Kirby\Toolkit\Dir; use Kirby\Toolkit\Dir;
use Kirby\Toolkit\F; use Kirby\Toolkit\F;
use Kirby\Toolkit\V; use Kirby\Toolkit\V;
@@ -30,6 +30,13 @@ trait AppPlugins
*/ */
protected static $plugins = []; protected static $plugins = [];
/**
* Cache for system extensions
*
* @var array
*/
protected static $systemExtensions = null;
/** /**
* The extension registry * The extension registry
* *
@@ -47,6 +54,7 @@ trait AppPlugins
'components' => [], 'components' => [],
'controllers' => [], 'controllers' => [],
'collectionFilters' => [], 'collectionFilters' => [],
'collectionMethods' => [],
'fieldMethods' => [], 'fieldMethods' => [],
'fileMethods' => [], 'fileMethods' => [],
'filesMethods' => [], 'filesMethods' => [],
@@ -56,12 +64,14 @@ trait AppPlugins
'pageMethods' => [], 'pageMethods' => [],
'pagesMethods' => [], 'pagesMethods' => [],
'pageModels' => [], 'pageModels' => [],
'permissions' => [],
'routes' => [], 'routes' => [],
'sections' => [], 'sections' => [],
'siteMethods' => [], 'siteMethods' => [],
'snippets' => [], 'snippets' => [],
'tags' => [], 'tags' => [],
'templates' => [], 'templates' => [],
'thirdParty' => [],
'translations' => [], 'translations' => [],
'userMethods' => [], 'userMethods' => [],
'userModels' => [], 'userModels' => [],
@@ -69,13 +79,6 @@ trait AppPlugins
'validators' => [] 'validators' => []
]; ];
/**
* Cache for system extensions
*
* @var array
*/
protected static $systemExtensions = null;
/** /**
* Flag when plugins have been loaded * Flag when plugins have been loaded
* to not load them again * to not load them again
@@ -152,7 +155,18 @@ trait AppPlugins
*/ */
protected function extendCollectionFilters(array $filters): array protected function extendCollectionFilters(array $filters): array
{ {
return $this->extensions['collectionFilters'] = Collection::$filters = array_merge(Collection::$filters, $filters); return $this->extensions['collectionFilters'] = ToolkitCollection::$filters = array_merge(ToolkitCollection::$filters, $filters);
}
/**
* Registers additional collection methods
*
* @param array $methods
* @return array
*/
protected function extendCollectionMethods(array $methods): array
{
return $this->extensions['collectionMethods'] = Collection::$methods = array_merge(Collection::$methods, $methods);
} }
/** /**
@@ -287,6 +301,10 @@ trait AppPlugins
$options = $prefixed; $options = $prefixed;
} }
// register each option in the nesting blacklist;
// this prevents Kirby from nesting the array keys inside each option
static::$nestIgnoreOptions = array_merge(static::$nestIgnoreOptions, array_keys($options));
return $this->extensions['options'] = $this->options = A::merge($options, $this->options, A::MERGE_REPLACE); return $this->extensions['options'] = $this->options = A::merge($options, $this->options, A::MERGE_REPLACE);
} }
@@ -334,6 +352,22 @@ trait AppPlugins
return $this->extensions['pages'] = array_merge($this->extensions['pages'], $pages); return $this->extensions['pages'] = array_merge($this->extensions['pages'], $pages);
} }
/**
* Registers additional permissions
*
* @param array $permissions
* @param \Kirby\Cms\Plugin|null $plugin
* @return array
*/
protected function extendPermissions(array $permissions, Plugin $plugin = null): array
{
if ($plugin !== null) {
$permissions = [$plugin->prefix() => $permissions];
}
return $this->extensions['permissions'] = Permissions::$extendedActions = array_merge(Permissions::$extendedActions, $permissions);
}
/** /**
* Registers additional routes * Registers additional routes
* *
@@ -426,6 +460,20 @@ trait AppPlugins
return $this->extensions['translations'] = array_replace_recursive($this->extensions['translations'], $translations); return $this->extensions['translations'] = array_replace_recursive($this->extensions['translations'], $translations);
} }
/**
* Add third party extensions to the registry
* so they can be used as plugins for plugins
* for example.
*
* @param string $type
* @param array $extensions
* @return array
*/
protected function extendThirdParty(array $extensions): array
{
return $this->extensions['thirdParty'] = array_replace_recursive($this->extensions['thirdParty'], $extensions);
}
/** /**
* Registers additional user methods * Registers additional user methods
* *
@@ -514,7 +562,7 @@ trait AppPlugins
$class = str_replace(['.', '-', '_'], '', $name) . 'Page'; $class = str_replace(['.', '-', '_'], '', $name) . 'Page';
// load the model class // load the model class
include_once $model; F::loadOnce($model);
if (class_exists($class) === true) { if (class_exists($class) === true) {
$models[$name] = $class; $models[$name] = $class;
@@ -577,16 +625,18 @@ trait AppPlugins
*/ */
protected function extensionsFromSystem() protected function extensionsFromSystem()
{ {
$root = $this->root('kirby');
// load static extensions only once // load static extensions only once
if (static::$systemExtensions === null) { if (static::$systemExtensions === null) {
// Form Field Mixins // Form Field Mixins
FormField::$mixins['filepicker'] = include static::$root . '/config/fields/mixins/filepicker.php'; FormField::$mixins['filepicker'] = include $root . '/config/fields/mixins/filepicker.php';
FormField::$mixins['min'] = include static::$root . '/config/fields/mixins/min.php'; FormField::$mixins['min'] = include $root . '/config/fields/mixins/min.php';
FormField::$mixins['options'] = include static::$root . '/config/fields/mixins/options.php'; FormField::$mixins['options'] = include $root . '/config/fields/mixins/options.php';
FormField::$mixins['pagepicker'] = include static::$root . '/config/fields/mixins/pagepicker.php'; FormField::$mixins['pagepicker'] = include $root . '/config/fields/mixins/pagepicker.php';
FormField::$mixins['picker'] = include static::$root . '/config/fields/mixins/picker.php'; FormField::$mixins['picker'] = include $root . '/config/fields/mixins/picker.php';
FormField::$mixins['upload'] = include static::$root . '/config/fields/mixins/upload.php'; FormField::$mixins['upload'] = include $root . '/config/fields/mixins/upload.php';
FormField::$mixins['userpicker'] = include static::$root . '/config/fields/mixins/userpicker.php'; FormField::$mixins['userpicker'] = include $root . '/config/fields/mixins/userpicker.php';
// Tag Aliases // Tag Aliases
KirbyTag::$aliases = [ KirbyTag::$aliases = [
@@ -612,32 +662,32 @@ trait AppPlugins
]; ];
// blueprint presets // blueprint presets
PageBlueprint::$presets['pages'] = include static::$root . '/config/presets/pages.php'; PageBlueprint::$presets['pages'] = include $root . '/config/presets/pages.php';
PageBlueprint::$presets['page'] = include static::$root . '/config/presets/page.php'; PageBlueprint::$presets['page'] = include $root . '/config/presets/page.php';
PageBlueprint::$presets['files'] = include static::$root . '/config/presets/files.php'; PageBlueprint::$presets['files'] = include $root . '/config/presets/files.php';
// section mixins // section mixins
Section::$mixins['empty'] = include static::$root . '/config/sections/mixins/empty.php'; Section::$mixins['empty'] = include $root . '/config/sections/mixins/empty.php';
Section::$mixins['headline'] = include static::$root . '/config/sections/mixins/headline.php'; Section::$mixins['headline'] = include $root . '/config/sections/mixins/headline.php';
Section::$mixins['help'] = include static::$root . '/config/sections/mixins/help.php'; Section::$mixins['help'] = include $root . '/config/sections/mixins/help.php';
Section::$mixins['layout'] = include static::$root . '/config/sections/mixins/layout.php'; Section::$mixins['layout'] = include $root . '/config/sections/mixins/layout.php';
Section::$mixins['max'] = include static::$root . '/config/sections/mixins/max.php'; Section::$mixins['max'] = include $root . '/config/sections/mixins/max.php';
Section::$mixins['min'] = include static::$root . '/config/sections/mixins/min.php'; Section::$mixins['min'] = include $root . '/config/sections/mixins/min.php';
Section::$mixins['pagination'] = include static::$root . '/config/sections/mixins/pagination.php'; Section::$mixins['pagination'] = include $root . '/config/sections/mixins/pagination.php';
Section::$mixins['parent'] = include static::$root . '/config/sections/mixins/parent.php'; Section::$mixins['parent'] = include $root . '/config/sections/mixins/parent.php';
// section types // section types
Section::$types['info'] = include static::$root . '/config/sections/info.php'; Section::$types['info'] = include $root . '/config/sections/info.php';
Section::$types['pages'] = include static::$root . '/config/sections/pages.php'; Section::$types['pages'] = include $root . '/config/sections/pages.php';
Section::$types['files'] = include static::$root . '/config/sections/files.php'; Section::$types['files'] = include $root . '/config/sections/files.php';
Section::$types['fields'] = include static::$root . '/config/sections/fields.php'; Section::$types['fields'] = include $root . '/config/sections/fields.php';
static::$systemExtensions = [ static::$systemExtensions = [
'components' => include static::$root . '/config/components.php', 'components' => include $root . '/config/components.php',
'blueprints' => include static::$root . '/config/blueprints.php', 'blueprints' => include $root . '/config/blueprints.php',
'fields' => include static::$root . '/config/fields.php', 'fields' => include $root . '/config/fields.php',
'fieldMethods' => include static::$root . '/config/methods.php', 'fieldMethods' => include $root . '/config/methods.php',
'tags' => include static::$root . '/config/tags.php' 'tags' => include $root . '/config/tags.php'
]; ];
} }
@@ -656,6 +706,18 @@ trait AppPlugins
$this->extendTags(static::$systemExtensions['tags']); $this->extendTags(static::$systemExtensions['tags']);
} }
/**
* Returns the native implementation
* of a core component
*
* @param string $component
* @return \Closure | false
*/
public function nativeComponent(string $component)
{
return static::$systemExtensions['components'][$component] ?? false;
}
/** /**
* Kirby plugin factory and getter * Kirby plugin factory and getter
* *
@@ -733,7 +795,7 @@ trait AppPlugins
continue; continue;
} }
include_once $entry; F::loadOnce($entry);
$loaded[] = $dir; $loaded[] = $dir;
} }

View File

@@ -2,6 +2,7 @@
namespace Kirby\Cms; namespace Kirby\Cms;
use Closure;
use Throwable; use Throwable;
/** /**
@@ -36,12 +37,34 @@ trait AppUsers
/** /**
* Become any existing user * Become any existing user
* *
* @param string|null $who * @param string|null $who User ID or email address
* @return \Kirby\Cms\User|null * @param Closure|null $callback Optional action function that will be run with
* the permissions of the impersonated user; the
* impersonation will be reset afterwards
* @return mixed If called without callback: User that was impersonated;
* if called with callback: Return value from the callback
*/ */
public function impersonate(string $who = null) public function impersonate(?string $who = null, ?Closure $callback = null)
{ {
return $this->auth()->impersonate($who); $auth = $this->auth();
$userBefore = $auth->currentUserFromImpersonation();
$userAfter = $auth->impersonate($who);
if ($callback === null) {
return $userAfter;
}
try {
// bind the App object to the callback
return $callback->call($this, $userAfter);
} catch (Throwable $e) {
throw $e;
} finally {
// ensure that the impersonation is *always* reset
// to the original value, even if an error occurred
$auth->impersonate($userBefore !== null ? $userBefore->id() : null);
}
} }
/** /**
@@ -77,20 +100,23 @@ trait AppUsers
* Returns a specific user by id * Returns a specific user by id
* or the current user if no id is given * or the current user if no id is given
* *
* @param string $id * @param string|null $id
* @param bool $allowImpersonation If set to false, only the actually
* logged in user will be returned
* (when `$id` is passed as `null`)
* @return \Kirby\Cms\User|null * @return \Kirby\Cms\User|null
*/ */
public function user(string $id = null) public function user(?string $id = null, bool $allowImpersonation = true)
{ {
if ($id !== null) { if ($id !== null) {
return $this->users()->find($id); return $this->users()->find($id);
} }
if (is_string($this->user) === true) { if ($allowImpersonation === true && is_string($this->user) === true) {
return $this->auth()->impersonate($this->user); return $this->auth()->impersonate($this->user);
} else { } else {
try { try {
return $this->auth()->user(); return $this->auth()->user(null, $allowImpersonation);
} catch (Throwable $e) { } catch (Throwable $e) {
return null; return null;
} }

View File

@@ -85,6 +85,16 @@ class Auth
return $this->validatePassword($auth->username(), $auth->password()); return $this->validatePassword($auth->username(), $auth->password());
} }
/**
* Returns the currently impersonated user
*
* @return \Kirby\Cms\User|null
*/
public function currentUserFromImpersonation()
{
return $this->impersonate;
}
/** /**
* Returns the logged in user by checking * Returns the logged in user by checking
* the current session and finding a valid * the current session and finding a valid
@@ -124,10 +134,10 @@ class Auth
/** /**
* Become any existing user * Become any existing user
* *
* @param string|null $who * @param string|null $who User ID or email address
* @return \Kirby\Cms\User|null * @return \Kirby\Cms\User|null
*/ */
public function impersonate(string $who = null) public function impersonate(?string $who = null)
{ {
switch ($who) { switch ($who) {
case null: case null:
@@ -416,16 +426,19 @@ class Auth
/** /**
* Returns the current authentication type * Returns the current authentication type
* *
* @param bool $allowImpersonation If set to false, 'impersonate' won't
* be returned as authentication type
* even if an impersonation is active
* @return string * @return string
*/ */
public function type(): string public function type(bool $allowImpersonation = true): string
{ {
$basicAuth = $this->kirby->option('api.basicAuth', false); $basicAuth = $this->kirby->option('api.basicAuth', false);
$auth = $this->kirby->request()->auth(); $auth = $this->kirby->request()->auth();
if ($basicAuth === true && $auth && $auth->type() === 'basic') { if ($basicAuth === true && $auth && $auth->type() === 'basic') {
return 'basic'; return 'basic';
} elseif ($this->impersonate !== null) { } elseif ($allowImpersonation === true && $this->impersonate !== null) {
return 'impersonate'; return 'impersonate';
} else { } else {
return 'session'; return 'session';
@@ -436,13 +449,15 @@ class Auth
* Validates the currently logged in user * Validates the currently logged in user
* *
* @param \Kirby\Session\Session|array|null $session * @param \Kirby\Session\Session|array|null $session
* @param bool $allowImpersonation If set to false, only the actually
* logged in user will be returned
* @return \Kirby\Cms\User * @return \Kirby\Cms\User
* *
* @throws \Throwable If an authentication error occured * @throws \Throwable If an authentication error occured
*/ */
public function user($session = null) public function user($session = null, bool $allowImpersonation = true)
{ {
if ($this->impersonate !== null) { if ($allowImpersonation === true && $this->impersonate !== null) {
return $this->impersonate; return $this->impersonate;
} }

View File

@@ -45,7 +45,7 @@ class Collection extends BaseCollection
public function __call(string $key, $arguments) public function __call(string $key, $arguments)
{ {
// collection methods // collection methods
if ($this->hasMethod($key)) { if ($this->hasMethod($key) === true) {
return $this->callMethod($key, $arguments); return $this->callMethod($key, $arguments);
} }
} }

View File

@@ -4,6 +4,7 @@ namespace Kirby\Cms;
use Kirby\Exception\NotFoundException; use Kirby\Exception\NotFoundException;
use Kirby\Toolkit\Controller; use Kirby\Toolkit\Controller;
use Kirby\Toolkit\F;
/** /**
* Manages and loads all collections * Manages and loads all collections
@@ -119,8 +120,8 @@ class Collections
// first check for collection file // first check for collection file
$file = $kirby->root('collections') . '/' . $name . '.php'; $file = $kirby->root('collections') . '/' . $name . '.php';
if (file_exists($file)) { if (is_file($file) === true) {
$collection = require $file; $collection = F::load($file);
if (is_a($collection, 'Closure')) { if (is_a($collection, 'Closure')) {
return $collection; return $collection;

View File

@@ -257,6 +257,10 @@ class Content
public function update(array $content = null, bool $overwrite = false) public function update(array $content = null, bool $overwrite = false)
{ {
$this->data = $overwrite === true ? (array)$content : array_merge($this->data, (array)$content); $this->data = $overwrite === true ? (array)$content : array_merge($this->data, (array)$content);
// clear cache of Field objects
$this->fields = [];
return $this; return $this;
} }
} }

View File

@@ -2,7 +2,7 @@
namespace Kirby\Cms; namespace Kirby\Cms;
use Kirby\Data\Yaml; use Kirby\Data\Data;
use Kirby\Exception\Exception; use Kirby\Exception\Exception;
use Kirby\Toolkit\F; use Kirby\Toolkit\F;
@@ -108,7 +108,7 @@ class ContentLocks
// always read the whole file // always read the whole file
rewind($handle); rewind($handle);
$string = fread($handle, $filesize); $string = fread($handle, $filesize);
$data = Yaml::decode($string); $data = Data::decode($string, 'yaml');
} }
} }
@@ -207,7 +207,7 @@ class ContentLocks
return F::remove($file); return F::remove($file);
} }
$yaml = Yaml::encode($this->data[$file]); $yaml = Data::encode($this->data[$file], 'yaml');
// delete all file contents first // delete all file contents first
if (rewind($handle) !== true || ftruncate($handle, 0) !== true) { if (rewind($handle) !== true || ftruncate($handle, 0) !== true) {

288
kirby/src/Cms/Event.php Executable file
View File

@@ -0,0 +1,288 @@
<?php
namespace Kirby\Cms;
use Closure;
use Kirby\Exception\InvalidArgumentException;
use Kirby\Toolkit\Controller;
/**
* The Event object is created whenever the `$kirby->trigger()`
* or `$kirby->apply()` methods are called. It collects all
* event information and handles calling the individual hooks.
*
* @package Kirby Cms
* @author Lukas Bestle <lukas@getkirby.com>,
* Ahmet Bora
* @link https://getkirby.com
* @copyright Bastian Allgeier GmbH
* @license https://getkirby.com/license
*/
class Event
{
/**
* The full event name
* (e.g. `page.create:after`)
*
* @var string
*/
protected $name;
/**
* The event type
* (e.g. `page` in `page.create:after`)
*
* @var string
*/
protected $type;
/**
* The event action
* (e.g. `create` in `page.create:after`)
*
* @var string|null
*/
protected $action;
/**
* The event state
* (e.g. `after` in `page.create:after`)
*
* @var string|null
*/
protected $state;
/**
* The event arguments
*
* @var array
*/
protected $arguments = [];
/**
* Class constructor
*
* @param string $name Full event name
* @param array $arguments Associative array of named event arguments
*/
public function __construct(string $name, array $arguments = [])
{
// split the event name into `$type.$action:$state`
// $action and $state are optional;
// if there is more than one dot, $type will be greedy
$regex = '/^(?<type>.+?)(?:\.(?<action>[^.]*?))?(?:\:(?<state>.*))?$/';
preg_match($regex, $name, $matches, PREG_UNMATCHED_AS_NULL);
$this->name = $name;
$this->type = $matches['type'];
$this->action = $matches['action'] ?? null;
$this->state = $matches['state'] ?? null;
$this->arguments = $arguments;
}
/**
* Magic caller for event arguments
*
* @param string $method
* @param array $arguments
* @return mixed
*/
public function __call(string $method, array $arguments = [])
{
return $this->argument($method);
}
/**
* Improved `var_dump` output
*
* @return array
*/
public function __debugInfo(): array
{
return $this->toArray();
}
/**
* Makes it possible to simply echo
* or stringify the entire object
*
* @return string
*/
public function __toString(): string
{
return $this->toString();
}
/**
* Returns the action of the event (e.g. `create`)
* or `null` if the event name does not include an action
*
* @return string|null
*/
public function action(): ?string
{
return $this->action;
}
/**
* Returns a specific event argument
*
* @param string $name
* @return mixed
*/
public function argument(string $name)
{
if (isset($this->arguments[$name]) === true) {
return $this->arguments[$name];
}
return null;
}
/**
* Returns the arguments of the event
*
* @return array
*/
public function arguments(): array
{
return $this->arguments;
}
/**
* Calls a hook with the event data and returns
* the hook's return value
*
* @param object|null $bind Optional object to bind to the hook function
* @param \Closure $hook
* @return mixed
*/
public function call($bind = null, Closure $hook)
{
// collect the list of possible hook arguments
$data = $this->arguments();
$data['event'] = $this;
// magically call the hook with the arguments it requested
$hook = new Controller($hook);
return $hook->call($bind, $data);
}
/**
* Returns the full name of the event
*
* @return string
*/
public function name(): string
{
return $this->name;
}
/**
* Returns the full list of possible wildcard
* event names based on the current event name
*
* @return array
*/
public function nameWildcards(): array
{
// if the event is already a wildcard event, no further variation is possible
if ($this->type === '*' || $this->action === '*' || $this->state === '*') {
return [];
}
if ($this->action !== null && $this->state !== null) {
// full $type.$action:$state event
return [
$this->type . '.*:' . $this->state,
$this->type . '.' . $this->action . ':*',
$this->type . '.*:*',
'*.' . $this->action . ':' . $this->state,
'*.' . $this->action . ':*',
'*:' . $this->state,
'*'
];
} elseif ($this->state !== null) {
// event without action: $type:$state
return [
$this->type . ':*',
'*:' . $this->state,
'*'
];
} elseif ($this->action !== null) {
// event without state: $type.$action
return [
$this->type . '.*',
'*.' . $this->action,
'*'
];
} else {
// event with a simple name
return ['*'];
}
}
/**
* Returns the state of the event (e.g. `after`)
*
* @return string|null
*/
public function state(): ?string
{
return $this->state;
}
/**
* Returns the event data as array
*
* @return array
*/
public function toArray(): array
{
return [
'name' => $this->name,
'arguments' => $this->arguments
];
}
/**
* Returns the event name as string
*
* @return string
*/
public function toString(): string
{
return $this->name;
}
/**
* Returns the type of the event (e.g. `page`)
*
* @return string
*/
public function type(): string
{
return $this->type;
}
/**
* Updates a given argument with a new value
*
* @internal
* @param string $name
* @param mixed $value
* @return void
*/
public function updateArgument(string $name, $value): void
{
if (array_key_exists($name, $this->arguments) !== true) {
throw new InvalidArgumentException('The argument ' . $name . ' does not exist');
}
$this->arguments[$name] = $value;
}
}

View File

@@ -326,14 +326,32 @@ class File extends ModelWithContent
} }
/** /**
* Create a unique media hash * Check if the file can be read by the current user
*
* @return bool
*/
public function isReadable(): bool
{
static $readable = [];
$template = $this->template();
if (isset($readable[$template]) === true) {
return $readable[$template];
}
return $readable[$template] = $this->permissions()->can('read');
}
/**
* Creates a unique media hash
* *
* @internal * @internal
* @return string * @return string
*/ */
public function mediaHash(): string public function mediaHash(): string
{ {
return crc32($this->filename()) . '-' . $this->modifiedFile(); return $this->mediaToken() . '-' . $this->modifiedFile();
} }
/** /**
@@ -347,6 +365,18 @@ class File extends ModelWithContent
return $this->parent()->mediaRoot() . '/' . $this->mediaHash() . '/' . $this->filename(); return $this->parent()->mediaRoot() . '/' . $this->mediaHash() . '/' . $this->filename();
} }
/**
* Creates a non-guessable token string for this file
*
* @internal
* @return string
*/
public function mediaToken(): string
{
$token = $this->kirby()->contentToken($this, $this->id());
return substr($token, 0, 10);
}
/** /**
* Returns the absolute Url to the file in the public media folder * Returns the absolute Url to the file in the public media folder
* *
@@ -375,12 +405,13 @@ class File extends ModelWithContent
* *
* @param string $format * @param string $format
* @param string|null $handler date or strftime * @param string|null $handler date or strftime
* @param string|null $languageCode
* @return mixed * @return mixed
*/ */
public function modified(string $format = null, string $handler = null) public function modified(string $format = null, string $handler = null, string $languageCode = null)
{ {
$file = $this->modifiedFile(); $file = $this->modifiedFile();
$content = $this->modifiedContent(); $content = $this->modifiedContent($languageCode);
$modified = max($file, $content); $modified = max($file, $content);
if (is_null($format) === true) { if (is_null($format) === true) {
@@ -396,11 +427,12 @@ class File extends ModelWithContent
* Timestamp of the last modification * Timestamp of the last modification
* of the content file * of the content file
* *
* @param string|null $languageCode
* @return int * @return int
*/ */
protected function modifiedContent(): int protected function modifiedContent(string $languageCode = null): int
{ {
return F::modified($this->contentFile()); return F::modified($this->contentFile($languageCode));
} }
/** /**

View File

@@ -38,7 +38,7 @@ trait FileActions
return $this; return $this;
} }
return $this->commit('changeName', [$this, $name], function ($oldFile, $name) { return $this->commit('changeName', ['file' => $this, 'name' => $name], function ($oldFile, $name) {
$newFile = $oldFile->clone([ $newFile = $oldFile->clone([
'filename' => $name . '.' . $oldFile->extension(), 'filename' => $name . '.' . $oldFile->extension(),
]); ]);
@@ -87,7 +87,7 @@ trait FileActions
*/ */
public function changeSort(int $sort) public function changeSort(int $sort)
{ {
return $this->commit('changeSort', [$this, $sort], function ($file, $sort) { return $this->commit('changeSort', ['file' => $this, 'position' => $sort], function ($file, $sort) {
return $file->save(['sort' => $sort]); return $file->save(['sort' => $sort]);
}); });
} }
@@ -108,13 +108,24 @@ trait FileActions
*/ */
protected function commit(string $action, array $arguments, Closure $callback) protected function commit(string $action, array $arguments, Closure $callback)
{ {
$old = $this->hardcopy(); $old = $this->hardcopy();
$kirby = $this->kirby(); $kirby = $this->kirby();
$argumentValues = array_values($arguments);
$this->rules()->$action(...$argumentValues);
$kirby->trigger('file.' . $action . ':before', $arguments);
$result = $callback(...$argumentValues);
if ($action === 'create') {
$argumentsAfter = ['file' => $result];
} elseif ($action === 'delete') {
$argumentsAfter = ['status' => $result, 'file' => $old];
} else {
$argumentsAfter = ['newFile' => $result, 'oldFile' => $old];
}
$kirby->trigger('file.' . $action . ':after', $argumentsAfter);
$this->rules()->$action(...$arguments);
$kirby->trigger('file.' . $action . ':before', ...$arguments);
$result = $callback(...$arguments);
$kirby->trigger('file.' . $action . ':after', $result, $old);
$kirby->cache('pages')->flush(); $kirby->cache('pages')->flush();
return $result; return $result;
} }
@@ -175,7 +186,7 @@ trait FileActions
$file = $file->clone(['content' => $form->strings(true)]); $file = $file->clone(['content' => $form->strings(true)]);
// run the hook // run the hook
return $file->commit('create', [$file, $upload], function ($file, $upload) { return $file->commit('create', compact('file', 'upload'), function ($file, $upload) {
// delete all public versions // delete all public versions
$file->unpublish(); $file->unpublish();
@@ -211,7 +222,7 @@ trait FileActions
*/ */
public function delete(): bool public function delete(): bool
{ {
return $this->commit('delete', [$this], function ($file) { return $this->commit('delete', ['file' => $this], function ($file) {
// remove all versions in the media folder // remove all versions in the media folder
$file->unpublish(); $file->unpublish();
@@ -243,7 +254,7 @@ trait FileActions
*/ */
public function publish() public function publish()
{ {
Media::publish($this->root(), $this->mediaRoot()); Media::publish($this, $this->mediaRoot());
return $this; return $this;
} }
@@ -273,7 +284,7 @@ trait FileActions
*/ */
public function replace(string $source) public function replace(string $source)
{ {
return $this->commit('replace', [$this, new Image($source)], function ($file, $upload) { return $this->commit('replace', ['file' => $this, 'upload' => new Image($source)], function ($file, $upload) {
// delete all public versions // delete all public versions
$file->unpublish(); $file->unpublish();
@@ -295,7 +306,7 @@ trait FileActions
*/ */
public function unpublish() public function unpublish()
{ {
Media::unpublish($this->parent()->mediaRoot(), $this->filename()); Media::unpublish($this->parent()->mediaRoot(), $this);
return $this; return $this;
} }
} }

View File

@@ -26,6 +26,7 @@ class FileBlueprint extends Blueprint
'changeName' => null, 'changeName' => null,
'create' => null, 'create' => null,
'delete' => null, 'delete' => null,
'read' => null,
'replace' => null, 'replace' => null,
'update' => null, 'update' => null,
] ]

View File

@@ -298,6 +298,6 @@ class Filename
'name' => $this->name(), 'name' => $this->name(),
'attributes' => $this->attributesToString('-'), 'attributes' => $this->attributesToString('-'),
'extension' => $this->extension() 'extension' => $this->extension()
]); ], '');
} }
} }

View File

@@ -55,7 +55,7 @@ class Files extends Collection
* Sort all given files by the * Sort all given files by the
* order in the array * order in the array
* *
* @param array $files List of filenames * @param array $files List of file ids
* @param int $offset Sorting offset * @param int $offset Sorting offset
* @return self * @return self
*/ */

View File

@@ -126,7 +126,7 @@ trait HasChildren
* Finds one or multiple children by id * Finds one or multiple children by id
* *
* @param string ...$arguments * @param string ...$arguments
* @return \Kirby\Cms\Page|\Kirby\Cms\Pages * @return \Kirby\Cms\Page|\Kirby\Cms\Pages|null
*/ */
public function find(...$arguments) public function find(...$arguments)
{ {

View File

@@ -2,6 +2,8 @@
namespace Kirby\Cms; namespace Kirby\Cms;
use Kirby\Exception\BadMethodCallException;
/** /**
* HasMethods * HasMethods
* *
@@ -31,7 +33,13 @@ trait HasMethods
*/ */
public function callMethod(string $method, array $args = []) public function callMethod(string $method, array $args = [])
{ {
return static::$methods[$method]->call($this, ...$args); $closure = $this->getMethod($method);
if ($closure === null) {
throw new BadMethodCallException('The method ' . $method . ' does not exist');
}
return $closure->call($this, ...$args);
} }
/** /**
@@ -43,6 +51,29 @@ trait HasMethods
*/ */
public function hasMethod(string $method): bool public function hasMethod(string $method): bool
{ {
return isset(static::$methods[$method]) === true; return $this->getMethod($method) !== null;
}
/**
* Returns a registered method by name, either from
* the current class or from a parent class ordered by
* inheritance order (top to bottom)
*
* @param string $method
* @return Closure|null
*/
protected function getMethod(string $method)
{
if (isset(static::$methods[$method]) === true) {
return static::$methods[$method];
}
foreach (class_parents($this) as $parent) {
if (isset($parent::$methods[$method]) === true) {
return $parent::$methods[$method];
}
}
return null;
} }
} }

View File

@@ -25,32 +25,19 @@ class KirbyTags extends \Kirby\Text\KirbyTags
* @param string $text * @param string $text
* @param array $data * @param array $data
* @param array $options * @param array $options
* @param array $hooks * @param \Kirby\Cms\App $app
* @return string * @return string
*/ */
public static function parse(string $text = null, array $data = [], array $options = [], array $hooks = []): string public static function parse(string $text = null, array $data = [], array $options = [], ?App $app = null): string
{ {
$text = static::hooks($hooks['kirbytags:before'] ?? [], $text, $data, $options); if ($app !== null) {
$text = $app->apply('kirbytags:before', compact('text', 'data', 'options'), 'text');
}
$text = parent::parse($text, $data, $options); $text = parent::parse($text, $data, $options);
$text = static::hooks($hooks['kirbytags:after'] ?? [], $text, $data, $options);
return $text; if ($app !== null) {
} $text = $app->apply('kirbytags:after', compact('text', 'data', 'options'), 'text');
/**
* Runs the given hooks and returns the
* modified text
*
* @param array $hooks
* @param string $text
* @param array $data
* @param array $options
* @return string|null
*/
protected static function hooks(array $hooks, string $text = null, array $data, array $options): ?string
{
foreach ($hooks as $hook) {
$text = $hook->call($data['kirby'], $text, $data, $options);
} }
return $text; return $text;

View File

@@ -94,7 +94,7 @@ class Languages extends Collection
$files = glob(App::instance()->root('languages') . '/*.php'); $files = glob(App::instance()->root('languages') . '/*.php');
foreach ($files as $file) { foreach ($files as $file) {
$props = include $file; $props = F::load($file);
if (is_array($props) === true) { if (is_array($props) === true) {
// inject the language code from the filename if it does not exist // inject the language code from the filename if it does not exist

View File

@@ -5,6 +5,7 @@ namespace Kirby\Cms;
use Kirby\Data\Data; use Kirby\Data\Data;
use Kirby\Toolkit\Dir; use Kirby\Toolkit\Dir;
use Kirby\Toolkit\F; use Kirby\Toolkit\F;
use Kirby\Toolkit\Str;
use Throwable; use Throwable;
/** /**
@@ -41,9 +42,15 @@ class Media
// this should work for all original files // this should work for all original files
if ($file = $model->file($filename)) { if ($file = $model->file($filename)) {
// the media hash is outdated. redirect to the correct url // check if the request contained an outdated media hash
if ($file->mediaHash() !== $hash) { if ($file->mediaHash() !== $hash) {
return Response::redirect($file->mediaUrl(), 307); // if at least the token was correct, redirect
if (Str::startsWith($hash, $file->mediaToken() . '-') === true) {
return Response::redirect($file->mediaUrl(), 307);
} else {
// don't leak the correct token
return new Response('Not Found', 'text/plain', 404);
}
} }
// send the file to the browser // send the file to the browser
@@ -57,18 +64,18 @@ class Media
/** /**
* Copy the file to the final media folder location * Copy the file to the final media folder location
* *
* @param string $src * @param \Kirby\Cms\File $file
* @param string $dest * @param string $dest
* @return bool * @return bool
*/ */
public static function publish(string $src, string $dest): bool public static function publish(File $file, string $dest): bool
{ {
$filename = basename($src); $src = $file->root();
$version = dirname($dest); $version = dirname($dest);
$directory = dirname($version); $directory = dirname($version);
// unpublish all files except stuff in the version folder // unpublish all files except stuff in the version folder
Media::unpublish($directory, $filename, $version); Media::unpublish($directory, $file, $version);
// copy/overwrite the file to the dest folder // copy/overwrite the file to the dest folder
return F::copy($src, $dest, true); return F::copy($src, $dest, true);
@@ -125,21 +132,25 @@ class Media
} }
/** /**
* Deletes all versions of the given filename * Deletes all versions of the given file
* within the parent directory * within the parent directory
* *
* @param string $directory * @param string $directory
* @param string $filename * @param \Kirby\Cms\File $file
* @param string $ignore * @param string $ignore
* @return bool * @return bool
*/ */
public static function unpublish(string $directory, string $filename, string $ignore = null): bool public static function unpublish(string $directory, File $file, string $ignore = null): bool
{ {
if (is_dir($directory) === false) { if (is_dir($directory) === false) {
return true; return true;
} }
$versions = glob($directory . '/' . crc32($filename) . '*', GLOB_ONLYDIR); // get both old and new versions (pre and post Kirby 3.4.0)
$versions = array_merge(
glob($directory . '/' . crc32($file->filename()) . '-*', GLOB_ONLYDIR),
glob($directory . '/' . $file->mediaToken() . '-*', GLOB_ONLYDIR)
);
// delete all versions of the file // delete all versions of the file
foreach ($versions as $version) { foreach ($versions as $version) {

View File

@@ -334,6 +334,11 @@ abstract class ModelWithContent extends Model
} }
if (is_string($settings) === true) { if (is_string($settings) === true) {
// use defined icon in blueprint
if ($settings === 'icon') {
return [];
}
$settings = [ $settings = [
'query' => $settings 'query' => $settings
]; ];
@@ -448,11 +453,15 @@ abstract class ModelWithContent extends Model
return null; return null;
} }
$result = Str::query($query, [ try {
'kirby' => $this->kirby(), $result = Str::query($query, [
'site' => is_a($this, 'Kirby\Cms\Site') ? $this : $this->site(), 'kirby' => $this->kirby(),
static::CLASS_ALIAS => $this 'site' => is_a($this, 'Kirby\Cms\Site') ? $this : $this->site(),
]); static::CLASS_ALIAS => $this
]);
} catch (Throwable $e) {
return null;
}
if ($expect !== null && is_a($result, $expect) !== true) { if ($expect !== null && is_a($result, $expect) !== true) {
return null; return null;
@@ -611,19 +620,21 @@ abstract class ModelWithContent extends Model
* String template builder * String template builder
* *
* @param string|null $template * @param string|null $template
* @param array $data
* @param string $fallback Fallback for tokens in the template that cannot be replaced
* @return string * @return string
*/ */
public function toString(string $template = null): string public function toString(string $template = null, array $data = [], string $fallback = ''): string
{ {
if ($template === null) { if ($template === null) {
return $this->id(); return $this->id();
} }
$result = Str::template($template, [ $result = Str::template($template, array_replace([
'kirby' => $this->kirby(), 'kirby' => $this->kirby(),
'site' => is_a($this, 'Kirby\Cms\Site') ? $this : $this->site(), 'site' => is_a($this, 'Kirby\Cms\Site') ? $this : $this->site(),
static::CLASS_ALIAS => $this static::CLASS_ALIAS => $this
]); ], $data), $fallback);
return $result; return $result;
} }
@@ -691,7 +702,8 @@ abstract class ModelWithContent extends Model
} }
} }
return $this->commit('update', [$this, $form->data(), $form->strings(), $languageCode], function ($model, $values, $strings, $languageCode) { $arguments = [static::CLASS_ALIAS => $this, 'values' => $form->data(), 'strings' => $form->strings(), 'languageCode' => $languageCode];
return $this->commit('update', $arguments, function ($model, $values, $strings, $languageCode) {
// save updated values // save updated values
$model = $model->save($strings, $languageCode, true); $model = $model->save($strings, $languageCode, true);

View File

@@ -3,6 +3,7 @@
namespace Kirby\Cms; namespace Kirby\Cms;
use Kirby\Exception\Exception; use Kirby\Exception\Exception;
use Kirby\Exception\InvalidArgumentException;
use Kirby\Exception\NotFoundException; use Kirby\Exception\NotFoundException;
use Kirby\Http\Uri; use Kirby\Http\Uri;
use Kirby\Toolkit\A; use Kirby\Toolkit\A;
@@ -344,7 +345,31 @@ class Page extends ModelWithContent
]); ]);
// call the template controller if there's one. // call the template controller if there's one.
return array_merge($kirby->controller($this->template()->name(), $data, $contentType), $data); $controllerData = $kirby->controller($this->template()->name(), $data, $contentType);
// merge controller data with original data safely
if (empty($controllerData) === false) {
$classes = [
'kirby' => 'Kirby\Cms\App',
'site' => 'Kirby\Cms\Site',
'pages' => 'Kirby\Cms\Pages',
'page' => 'Kirby\Cms\Page'
];
foreach ($controllerData as $key => $value) {
if (array_key_exists($key, $classes) === true) {
if (is_a($value, $classes[$key]) === true) {
$data[$key] = $value;
} else {
throw new InvalidArgumentException('The returned variable "' . $key . '" from the controller "' . $this->template()->name() . '" is not of the required type "' . $classes[$key] . '"');
}
} else {
$data[$key] = $value;
}
}
}
return $data;
} }
/** /**
@@ -453,6 +478,20 @@ class Page extends ModelWithContent
return new static($props); return new static($props);
} }
/**
* Redirects to this page,
* wrapper for the `go()` helper
*
* @since 3.4.0
*
* @param array $options Options for `Kirby\Http\Uri` to create URL parts
* @param int $code HTTP status code
*/
public function go(array $options = [], int $code = 302)
{
go($this->url($options), $code);
}
/** /**
* Checks if the intended template * Checks if the intended template
* for the page exists. * for the page exists.
@@ -889,11 +928,16 @@ class Page extends ModelWithContent
* *
* @param string $format * @param string $format
* @param string|null $handler * @param string|null $handler
* @param string|null $languageCode
* @return int|string * @return int|string
*/ */
public function modified(string $format = null, string $handler = null) public function modified(string $format = null, string $handler = null, string $languageCode = null)
{ {
return F::modified($this->contentFile(), $format, $handler ?? $this->kirby()->option('date.handler', 'date')); return F::modified(
$this->contentFile($languageCode),
$format,
$handler ?? $this->kirby()->option('date.handler', 'date')
);
} }
/** /**
@@ -1448,7 +1492,7 @@ class Page extends ModelWithContent
*/ */
protected function token(): string protected function token(): string
{ {
return sha1($this->id() . $this->template()); return $this->kirby()->contentToken($this, $this->id() . $this->template());
} }
/** /**

View File

@@ -42,7 +42,7 @@ trait PageActions
return $this; return $this;
} }
return $this->commit('changeNum', [$this, $num], function ($oldPage, $num) { return $this->commit('changeNum', ['page' => $this, 'num' => $num], function ($oldPage, $num) {
$newPage = $oldPage->clone([ $newPage = $oldPage->clone([
'num' => $num, 'num' => $num,
'dirname' => null, 'dirname' => null,
@@ -97,7 +97,8 @@ trait PageActions
return $this; return $this;
} }
return $this->commit('changeSlug', [$this, $slug, $languageCode = null], function ($oldPage, $slug) { $arguments = ['page' => $this, 'slug' => $slug, 'languageCode' => null];
return $this->commit('changeSlug', $arguments, function ($oldPage, $slug) {
$newPage = $oldPage->clone([ $newPage = $oldPage->clone([
'slug' => $slug, 'slug' => $slug,
'dirname' => null, 'dirname' => null,
@@ -151,7 +152,8 @@ trait PageActions
throw new InvalidArgumentException('Use the changeSlug method to change the slug for the default language'); throw new InvalidArgumentException('Use the changeSlug method to change the slug for the default language');
} }
return $this->commit('changeSlug', [$this, $slug, $languageCode], function ($page, $slug, $languageCode) { $arguments = ['page' => $this, 'slug' => $slug, 'languageCode' => $languageCode];
return $this->commit('changeSlug', $arguments, function ($page, $slug, $languageCode) {
// remove the slug if it's the same as the folder name // remove the slug if it's the same as the folder name
if ($slug === $page->uid()) { if ($slug === $page->uid()) {
$slug = null; $slug = null;
@@ -185,7 +187,8 @@ trait PageActions
protected function changeStatusToDraft() protected function changeStatusToDraft()
{ {
$page = $this->commit('changeStatus', [$this, 'draft', null], function ($page) { $arguments = ['page' => $this, 'status' => 'draft', 'position' => null];
$page = $this->commit('changeStatus', $arguments, function ($page) {
return $page->unpublish(); return $page->unpublish();
}); });
@@ -206,7 +209,8 @@ trait PageActions
return $this; return $this;
} }
$page = $this->commit('changeStatus', [$this, 'listed', $num], function ($page, $status, $position) { $arguments = ['page' => $this, 'status' => 'listed', 'position' => $num];
$page = $this->commit('changeStatus', $arguments, function ($page, $status, $position) {
return $page->publish()->changeNum($position); return $page->publish()->changeNum($position);
}); });
@@ -226,7 +230,8 @@ trait PageActions
return $this; return $this;
} }
$page = $this->commit('changeStatus', [$this, 'unlisted', null], function ($page) { $arguments = ['page' => $this, 'status' => 'unlisted', 'position' => null];
$page = $this->commit('changeStatus', $arguments, function ($page) {
return $page->publish()->changeNum(null); return $page->publish()->changeNum(null);
}); });
@@ -243,11 +248,11 @@ trait PageActions
*/ */
public function changeTemplate(string $template) public function changeTemplate(string $template)
{ {
if ($template === $this->template()->name()) { if ($template === $this->intendedTemplate()->name()) {
return $this; return $this;
} }
return $this->commit('changeTemplate', [$this, $template], function ($oldPage, $template) { return $this->commit('changeTemplate', ['page' => $this, 'template' => $template], function ($oldPage, $template) {
if ($this->kirby()->multilang() === true) { if ($this->kirby()->multilang() === true) {
$newPage = $this->clone([ $newPage = $this->clone([
'template' => $template 'template' => $template
@@ -290,7 +295,8 @@ trait PageActions
*/ */
public function changeTitle(string $title, string $languageCode = null) public function changeTitle(string $title, string $languageCode = null)
{ {
return $this->commit('changeTitle', [$this, $title, $languageCode], function ($page, $title, $languageCode) { $arguments = ['page' => $this, 'title' => $title, 'languageCode' => $languageCode];
return $this->commit('changeTitle', $arguments, function ($page, $title, $languageCode) {
return $page->save(['title' => $title], $languageCode); return $page->save(['title' => $title], $languageCode);
}); });
} }
@@ -311,13 +317,27 @@ trait PageActions
*/ */
protected function commit(string $action, array $arguments, Closure $callback) protected function commit(string $action, array $arguments, Closure $callback)
{ {
$old = $this->hardcopy(); $old = $this->hardcopy();
$kirby = $this->kirby();
$argumentValues = array_values($arguments);
$this->rules()->$action(...$arguments); $this->rules()->$action(...$argumentValues);
$this->kirby()->trigger('page.' . $action . ':before', ...$arguments); $kirby->trigger('page.' . $action . ':before', $arguments);
$result = $callback(...$arguments);
$this->kirby()->trigger('page.' . $action . ':after', $result, $old); $result = $callback(...$argumentValues);
$this->kirby()->cache('pages')->flush();
if ($action === 'create') {
$argumentsAfter = ['page' => $result];
} elseif ($action === 'duplicate') {
$argumentsAfter = ['duplicatePage' => $result];
} elseif ($action === 'delete') {
$argumentsAfter = ['status' => $result, 'page' => $old];
} else {
$argumentsAfter = ['newPage' => $result, 'oldPage' => $old];
}
$kirby->trigger('page.' . $action . ':after', $argumentsAfter);
$kirby->cache('pages')->flush();
return $result; return $result;
} }
@@ -356,7 +376,9 @@ trait PageActions
'slug' => $slug, 'slug' => $slug,
]); ]);
$ignore = []; $ignore = [
$this->kirby()->locks()->file($this)
];
// don't copy files // don't copy files
if ($files === false) { if ($files === false) {
@@ -375,7 +397,7 @@ trait PageActions
// remove all translated slugs // remove all translated slugs
if ($this->kirby()->multilang() === true) { if ($this->kirby()->multilang() === true) {
foreach ($this->kirby()->languages() as $language) { foreach ($this->kirby()->languages() as $language) {
if ($language->isDefault() === false) { if ($language->isDefault() === false && $copy->translation($language)->exists() === true) {
$copy = $copy->save(['slug' => null], $language->code()); $copy = $copy->save(['slug' => null], $language->code());
} }
} }
@@ -416,7 +438,7 @@ trait PageActions
$page = $page->clone(['content' => $form->strings(true)]); $page = $page->clone(['content' => $form->strings(true)]);
// run the hooks and creation action // run the hooks and creation action
$page = $page->commit('create', [$page, $props], function ($page, $props) { $page = $page->commit('create', ['page' => $page, 'input' => $props], function ($page, $props) {
// always create pages in the default language // always create pages in the default language
if ($page->kirby()->multilang() === true) { if ($page->kirby()->multilang() === true) {
@@ -461,7 +483,8 @@ trait PageActions
'site' => $this->site(), 'site' => $this->site(),
]); ]);
return static::create($props); $modelClass = Page::$models[$props['template']] ?? Page::class;
return $modelClass::create($props);
} }
/** /**
@@ -520,7 +543,7 @@ trait PageActions
'kirby' => $app, 'kirby' => $app,
'page' => $app->page($this->id()), 'page' => $app->page($this->id()),
'site' => $app->site(), 'site' => $app->site(),
]); ], '');
return (int)$template; return (int)$template;
} }
@@ -534,7 +557,7 @@ trait PageActions
*/ */
public function delete(bool $force = false): bool public function delete(bool $force = false): bool
{ {
return $this->commit('delete', [$this, $force], function ($page, $force) { return $this->commit('delete', ['page' => $this, 'force' => $force], function ($page, $force) {
// delete all files individually // delete all files individually
foreach ($page->files() as $file) { foreach ($page->files() as $file) {
@@ -591,7 +614,8 @@ trait PageActions
// create the slug for the duplicate // create the slug for the duplicate
$slug = Str::slug($slug ?? $this->slug() . '-copy'); $slug = Str::slug($slug ?? $this->slug() . '-copy');
return $this->commit('duplicate', [$this, $slug, $options], function ($page, $slug, $options) { $arguments = ['originalPage' => $this, 'input' => $slug, 'options' => $options];
return $this->commit('duplicate', $arguments, function ($page, $slug, $options) {
return $this->copy([ return $this->copy([
'parent' => $this->parent(), 'parent' => $this->parent(),
'slug' => $slug, 'slug' => $slug,

View File

@@ -238,11 +238,11 @@ class Pages extends Collection
public function findByIdRecursive(string $id, string $startAt = null, bool $multiLang = false) public function findByIdRecursive(string $id, string $startAt = null, bool $multiLang = false)
{ {
$path = explode('/', $id); $path = explode('/', $id);
$collection = $this;
$item = null; $item = null;
$query = $startAt; $query = $startAt;
foreach ($path as $key) { foreach ($path as $key) {
$collection = $item ? $item->children() : $this;
$query = ltrim($query . '/' . $key, '/'); $query = ltrim($query . '/' . $key, '/');
$item = $collection->get($query) ?? null; $item = $collection->get($query) ?? null;
@@ -253,8 +253,6 @@ class Pages extends Collection
if ($item === null) { if ($item === null) {
return null; return null;
} }
$collection = $item->children();
} }
return $item; return $item;
@@ -340,9 +338,12 @@ class Pages extends Collection
foreach ($this->data as $pageKey => $page) { foreach ($this->data as $pageKey => $page) {
$this->index->data[$pageKey] = $page; $this->index->data[$pageKey] = $page;
$index = $page->index($drafts);
foreach ($page->index($drafts) as $childKey => $child) { if ($index) {
$this->index->data[$childKey] = $child; foreach ($index as $childKey => $child) {
$this->index->data[$childKey] = $child;
}
} }
} }

View File

@@ -23,7 +23,7 @@ use Kirby\Toolkit\Pagination as BasePagination;
class Pagination extends BasePagination class Pagination extends BasePagination
{ {
/** /**
* Pagination method (param or query) * Pagination method (param, query, none)
* *
* @var string * @var string
*/ */
@@ -82,7 +82,7 @@ class Pagination extends BasePagination
if ($params['method'] === 'query') { if ($params['method'] === 'query') {
$params['page'] = $params['page'] ?? $params['url']->query()->get($params['variable']); $params['page'] = $params['page'] ?? $params['url']->query()->get($params['variable']);
} else { } elseif ($params['method'] === 'param') {
$params['page'] = $params['page'] ?? $params['url']->params()->get($params['variable']); $params['page'] = $params['page'] ?? $params['url']->params()->get($params['variable']);
} }
@@ -153,8 +153,10 @@ class Pagination extends BasePagination
if ($this->method === 'query') { if ($this->method === 'query') {
$url->query->$variable = $pageValue; $url->query->$variable = $pageValue;
} else { } elseif ($this->method === 'param') {
$url->params->$variable = $pageValue; $url->params->$variable = $pageValue;
} else {
return null;
} }
return $url->toString(); return $url->toString();

View File

@@ -89,7 +89,7 @@ class Panel
go($kirby->url('index') . '/' . $kirby->path()); go($kirby->url('index') . '/' . $kirby->path());
} }
} catch (Throwable $e) { } catch (Throwable $e) {
die('The panel assets cannot be installed properly. Please check permissions of your media folder.'); die('The Panel assets cannot be installed properly. ' . $e->getMessage());
} }
// get the uri object for the panel url // get the uri object for the panel url

View File

@@ -17,6 +17,8 @@ use Kirby\Exception\InvalidArgumentException;
*/ */
class Permissions class Permissions
{ {
public static $extendedActions = [];
protected $actions = [ protected $actions = [
'access' => [ 'access' => [
'panel' => true, 'panel' => true,
@@ -28,6 +30,7 @@ class Permissions
'changeName' => true, 'changeName' => true,
'create' => true, 'create' => true,
'delete' => true, 'delete' => true,
'read' => true,
'replace' => true, 'replace' => true,
'update' => true 'update' => true
], ],
@@ -75,6 +78,15 @@ class Permissions
public function __construct($settings = []) public function __construct($settings = [])
{ {
// dynamically register the extended actions
foreach (static::$extendedActions as $key => $actions) {
if (isset($this->actions[$key]) === true) {
throw new InvalidArgumentException('The action ' . $key . ' is already a core action');
}
$this->actions[$key] = $actions;
}
if (is_array($settings) === true) { if (is_array($settings) === true) {
return $this->setCategories($settings); return $this->setCategories($settings);
} }

View File

@@ -2,8 +2,6 @@
namespace Kirby\Cms; namespace Kirby\Cms;
use Kirby\Toolkit\Str;
/** /**
* The Search class extracts the * The Search class extracts the
* search logic from collections, to * search logic from collections, to
@@ -31,100 +29,15 @@ class Search
/** /**
* Native search method to search for anything within the collection * Native search method to search for anything within the collection
* *
* @param Collection $collection * @param \Kirby\Cms\Collection $collection
* @param string $query * @param string $query
* @param mixed $params * @param mixed $params
* @return \Kirby\Cms\Collection|bool
*/ */
public static function collection(Collection $collection, string $query = null, $params = []) public static function collection(Collection $collection, string $query = null, $params = [])
{ {
if (empty(trim($query)) === true) { $kirby = App::instance();
return $collection->limit(0); return $kirby->component('search')($kirby, $collection, $query, $params);
}
if (is_string($params) === true) {
$params = ['fields' => Str::split($params, '|')];
}
$defaults = [
'fields' => [],
'minlength' => 2,
'score' => [],
'words' => false,
];
$options = array_merge($defaults, $params);
$collection = clone $collection;
$searchwords = preg_replace('/(\s)/u', ',', $query);
$searchwords = Str::split($searchwords, ',', $options['minlength']);
$lowerQuery = mb_strtolower($query);
if (empty($options['stopwords']) === false) {
$searchwords = array_diff($searchwords, $options['stopwords']);
}
$searchwords = array_map(function ($value) use ($options) {
return $options['words'] ? '\b' . preg_quote($value) . '\b' : preg_quote($value);
}, $searchwords);
$preg = '!(' . implode('|', $searchwords) . ')!i';
$results = $collection->filter(function ($item) use ($query, $preg, $options, $lowerQuery) {
$data = $item->content()->toArray();
$keys = array_keys($data);
$keys[] = 'id';
if (is_a($item, 'Kirby\Cms\User') === true) {
$keys[] = 'name';
$keys[] = 'email';
$keys[] = 'role';
} elseif (is_a($item, 'Kirby\Cms\Page') === true) {
// apply the default score for pages
$options['score'] = array_merge([
'id' => 64,
'title' => 64,
], $options['score']);
}
if (empty($options['fields']) === false) {
$fields = array_map('strtolower', $options['fields']);
$keys = array_intersect($keys, $fields);
}
$item->searchHits = 0;
$item->searchScore = 0;
foreach ($keys as $key) {
$score = $options['score'][$key] ?? 1;
$value = $data[$key] ?? (string)$item->$key();
$lowerValue = mb_strtolower($value);
// check for exact matches
if ($lowerQuery == $lowerValue) {
$item->searchScore += 16 * $score;
$item->searchHits += 1;
// check for exact beginning matches
} elseif (Str::startsWith($lowerValue, $lowerQuery) === true) {
$item->searchScore += 8 * $score;
$item->searchHits += 1;
// check for exact query matches
} elseif ($matches = preg_match_all('!' . preg_quote($query) . '!i', $value, $r)) {
$item->searchScore += 2 * $score;
$item->searchHits += $matches;
}
// check for any match
if ($matches = preg_match_all($preg, $value, $r)) {
$item->searchHits += $matches;
$item->searchScore += $matches * $score;
}
}
return $item->searchHits > 0 ? true : false;
});
return $results->sortBy('searchScore', 'desc');
} }
/** /**

View File

@@ -31,13 +31,17 @@ trait SiteActions
*/ */
protected function commit(string $action, array $arguments, Closure $callback) protected function commit(string $action, array $arguments, Closure $callback)
{ {
$old = $this->hardcopy(); $old = $this->hardcopy();
$kirby = $this->kirby(); $kirby = $this->kirby();
$argumentValues = array_values($arguments);
$this->rules()->$action(...$argumentValues);
$kirby->trigger('site.' . $action . ':before', $arguments);
$result = $callback(...$argumentValues);
$kirby->trigger('site.' . $action . ':after', ['newSite' => $result, 'oldSite' => $old]);
$this->rules()->$action(...$arguments);
$kirby->trigger('site.' . $action . ':before', ...$arguments);
$result = $callback(...$arguments);
$kirby->trigger('site.' . $action . ':after', $result, $old);
$kirby->cache('pages')->flush(); $kirby->cache('pages')->flush();
return $result; return $result;
} }
@@ -51,7 +55,8 @@ trait SiteActions
*/ */
public function changeTitle(string $title, string $languageCode = null) public function changeTitle(string $title, string $languageCode = null)
{ {
return $this->commit('changeTitle', [$this, $title, $languageCode], function ($site, $title, $languageCode) { $arguments = ['site' => $this, 'title' => $title, 'languageCode' => $languageCode];
return $this->commit('changeTitle', $arguments, function ($site, $title, $languageCode) {
return $site->save(['title' => $title], $languageCode); return $site->save(['title' => $title], $languageCode);
}); });
} }

View File

@@ -9,6 +9,7 @@ use Kirby\Exception\PermissionException;
use Kirby\Http\Remote; use Kirby\Http\Remote;
use Kirby\Http\Uri; use Kirby\Http\Uri;
use Kirby\Http\Url; use Kirby\Http\Url;
use Kirby\Toolkit\A;
use Kirby\Toolkit\Dir; use Kirby\Toolkit\Dir;
use Kirby\Toolkit\F; use Kirby\Toolkit\F;
use Kirby\Toolkit\Str; use Kirby\Toolkit\Str;
@@ -281,7 +282,9 @@ class System
* Loads the license file and returns * Loads the license file and returns
* the license information if available * the license information if available
* *
* @return string|false * @return string|bool License key or `false` if the current user has
* permissions for access.settings, otherwise just a
* boolean that tells whether a valid license is active
*/ */
public function license() public function license()
{ {
@@ -326,7 +329,14 @@ class System
return false; return false;
} }
return $license['license']; // only return the actual license key if the
// current user has appropriate permissions
$user = $this->app->user();
if ($user && $user->role()->permissions()->for('access', 'settings') === true) {
return $license['license'];
} else {
return true;
}
} }
/** /**
@@ -422,13 +432,17 @@ class System
*/ */
public function server(): bool public function server(): bool
{ {
$servers = [ if ($servers = $this->app->option('servers')) {
'apache', $servers = A::wrap($servers);
'caddy', } else {
'litespeed', $servers = [
'nginx', 'apache',
'php' 'caddy',
]; 'litespeed',
'nginx',
'php'
];
}
$software = $_SERVER['SERVER_SOFTWARE'] ?? null; $software = $_SERVER['SERVER_SOFTWARE'] ?? null;

View File

@@ -3,7 +3,6 @@
namespace Kirby\Cms; namespace Kirby\Cms;
use Kirby\Http\Url as BaseUrl; use Kirby\Http\Url as BaseUrl;
use Kirby\Toolkit\Str;
/** /**
* The `Url` class extends the * The `Url` class extends the
@@ -61,36 +60,10 @@ class Url extends BaseUrl
*/ */
public static function to(string $path = null, $options = null): string public static function to(string $path = null, $options = null): string
{ {
$kirby = App::instance(); $kirby = App::instance();
$language = null;
// get language from simple string option return $kirby->component('url')($kirby, $path, $options, function (string $path = null, $options = null) use ($kirby) {
if (is_string($options) === true) { return $kirby->nativeComponent('url')($kirby, $path, $options);
$language = $options;
$options = null;
}
// get language from array
if (is_array($options) === true && isset($options['language']) === true) {
$language = $options['language'];
unset($options['language']);
}
// get a language url for the linked page, if the page can be found
if ($kirby->multilang() === true) {
$parts = Str::split($path, '#');
if ($page = page($parts[0] ?? null)) {
$path = $page->url($language);
if (isset($parts[1]) === true) {
$path .= '#' . $parts[1];
}
}
}
return $kirby->component('url')($kirby, $path, $options, function (string $path = null, $options = null) {
return parent::to($path, $options);
}); });
} }
} }

View File

@@ -426,13 +426,13 @@ class User extends ModelWithContent
$session = $this->sessionFromOptions($session); $session = $this->sessionFromOptions($session);
$kirby->trigger('user.login:before', $this, $session); $kirby->trigger('user.login:before', ['user' => $this, 'session' => $session]);
$session->regenerateToken(); // privilege change $session->regenerateToken(); // privilege change
$session->data()->set('user.id', $this->id()); $session->data()->set('user.id', $this->id());
$this->kirby()->auth()->setUser($this); $this->kirby()->auth()->setUser($this);
$kirby->trigger('user.login:after', $this, $session); $kirby->trigger('user.login:after', ['user' => $this, 'session' => $session]);
} }
/** /**
@@ -446,7 +446,7 @@ class User extends ModelWithContent
$kirby = $this->kirby(); $kirby = $this->kirby();
$session = $this->sessionFromOptions($session); $session = $this->sessionFromOptions($session);
$kirby->trigger('user.logout:before', $this, $session); $kirby->trigger('user.logout:before', ['user' => $this, 'session' => $session]);
// remove the user from the session for future requests // remove the user from the session for future requests
$session->data()->remove('user.id'); $session->data()->remove('user.id');
@@ -458,12 +458,12 @@ class User extends ModelWithContent
// session is now empty, we might as well destroy it // session is now empty, we might as well destroy it
$session->destroy(); $session->destroy();
$kirby->trigger('user.logout:after', $this, null); $kirby->trigger('user.logout:after', ['user' => $this, 'session' => null]);
} else { } else {
// privilege change // privilege change
$session->regenerateToken(); $session->regenerateToken();
$kirby->trigger('user.logout:after', $this, $session); $kirby->trigger('user.logout:after', ['user' => $this, 'session' => $session]);
} }
} }
@@ -515,11 +515,12 @@ class User extends ModelWithContent
* *
* @param string $format * @param string $format
* @param string|null $handler * @param string|null $handler
* @param string|null $languageCode
* @return int|string * @return int|string
*/ */
public function modified(string $format = 'U', string $handler = null) public function modified(string $format = 'U', string $handler = null, string $languageCode = null)
{ {
$modifiedContent = F::modified($this->contentFile()); $modifiedContent = F::modified($this->contentFile($languageCode));
$modifiedIndex = F::modified($this->root() . '/index.php'); $modifiedIndex = F::modified($this->root() . '/index.php');
$modifiedTotal = max([$modifiedContent, $modifiedIndex]); $modifiedTotal = max([$modifiedContent, $modifiedIndex]);
$handler = $handler ?? $this->kirby()->option('date.handler', 'date'); $handler = $handler ?? $this->kirby()->option('date.handler', 'date');
@@ -682,6 +683,41 @@ class User extends ModelWithContent
return $this->role = Role::nobody(); return $this->role = Role::nobody();
} }
/**
* Returns all available roles
* for this user, that can be selected
* by the authenticated user
*
* @return \Kirby\Cms\Roles
*/
public function roles()
{
$kirby = $this->kirby();
$roles = $kirby->roles();
// a collection with just the one role of the user
$myRole = $roles->filterBy('id', $this->role()->id());
// if there's an authenticated user …
if ($user = $kirby->user()) {
// admin users can select pretty much any role
if ($user->isAdmin() === true) {
// except if the user is the last admin
if ($this->isLastAdmin() === true) {
// in which case they have to stay admin
return $myRole;
}
// return all roles for mighty admins
return $roles;
}
}
// any other user can only keep their role
return $myRole;
}
/** /**
* The absolute path to the user directory * The absolute path to the user directory
* *
@@ -844,15 +880,17 @@ class User extends ModelWithContent
* String template builder * String template builder
* *
* @param string|null $template * @param string|null $template
* @param array|null $data
* @param string $fallback Fallback for tokens in the template that cannot be replaced
* @return string * @return string
*/ */
public function toString(string $template = null): string public function toString(string $template = null, array $data = [], string $fallback = ''): string
{ {
if ($template === null) { if ($template === null) {
$template = $this->email(); $template = $this->email();
} }
return parent::toString($template); return parent::toString($template, $data);
} }
/** /**

View File

@@ -29,7 +29,7 @@ trait UserActions
*/ */
public function changeEmail(string $email) public function changeEmail(string $email)
{ {
return $this->commit('changeEmail', [$this, $email], function ($user, $email) { return $this->commit('changeEmail', ['user' => $this, 'email' => $email], function ($user, $email) {
$user = $user->clone([ $user = $user->clone([
'email' => $email 'email' => $email
]); ]);
@@ -50,7 +50,7 @@ trait UserActions
*/ */
public function changeLanguage(string $language) public function changeLanguage(string $language)
{ {
return $this->commit('changeLanguage', [$this, $language], function ($user, $language) { return $this->commit('changeLanguage', ['user' => $this, 'language' => $language], function ($user, $language) {
$user = $user->clone([ $user = $user->clone([
'language' => $language, 'language' => $language,
]); ]);
@@ -71,7 +71,7 @@ trait UserActions
*/ */
public function changeName(string $name) public function changeName(string $name)
{ {
return $this->commit('changeName', [$this, $name], function ($user, $name) { return $this->commit('changeName', ['user' => $this, 'name' => $name], function ($user, $name) {
$user = $user->clone([ $user = $user->clone([
'name' => $name 'name' => $name
]); ]);
@@ -92,7 +92,7 @@ trait UserActions
*/ */
public function changePassword(string $password) public function changePassword(string $password)
{ {
return $this->commit('changePassword', [$this, $password], function ($user, $password) { return $this->commit('changePassword', ['user' => $this, 'password' => $password], function ($user, $password) {
$user = $user->clone([ $user = $user->clone([
'password' => $password = User::hashPassword($password) 'password' => $password = User::hashPassword($password)
]); ]);
@@ -111,7 +111,7 @@ trait UserActions
*/ */
public function changeRole(string $role) public function changeRole(string $role)
{ {
return $this->commit('changeRole', [$this, $role], function ($user, $role) { return $this->commit('changeRole', ['user' => $this, 'role' => $role], function ($user, $role) {
$user = $user->clone([ $user = $user->clone([
'role' => $role, 'role' => $role,
]); ]);
@@ -144,13 +144,25 @@ trait UserActions
throw new PermissionException('The Kirby user cannot be changed'); throw new PermissionException('The Kirby user cannot be changed');
} }
$old = $this->hardcopy(); $old = $this->hardcopy();
$kirby = $this->kirby();
$argumentValues = array_values($arguments);
$this->rules()->$action(...$arguments); $this->rules()->$action(...$argumentValues);
$this->kirby()->trigger('user.' . $action . ':before', ...$arguments); $kirby->trigger('user.' . $action . ':before', $arguments);
$result = $callback(...$arguments);
$this->kirby()->trigger('user.' . $action . ':after', $result, $old); $result = $callback(...$argumentValues);
$this->kirby()->cache('pages')->flush();
if ($action === 'create') {
$argumentsAfter = ['user' => $result];
} elseif ($action === 'delete') {
$argumentsAfter = ['status' => $result, 'user' => $old];
} else {
$argumentsAfter = ['newUser' => $result, 'oldUser' => $old];
}
$kirby->trigger('user.' . $action . ':after', $argumentsAfter);
$kirby->cache('pages')->flush();
return $result; return $result;
} }
@@ -181,7 +193,7 @@ trait UserActions
$user = $user->clone(['content' => $form->strings(true)]); $user = $user->clone(['content' => $form->strings(true)]);
// run the hook // run the hook
return $user->commit('create', [$user, $props], function ($user, $props) { return $user->commit('create', ['user' => $user, 'input' => $props], function ($user, $props) {
$user->writeCredentials([ $user->writeCredentials([
'email' => $user->email(), 'email' => $user->email(),
'language' => $user->language(), 'language' => $user->language(),
@@ -231,7 +243,7 @@ trait UserActions
*/ */
public function delete(): bool public function delete(): bool
{ {
return $this->commit('delete', [$this], function ($user) { return $this->commit('delete', ['user' => $this], function ($user) {
if ($user->exists() === false) { if ($user->exists() === false) {
return true; return true;
} }
@@ -258,8 +270,10 @@ trait UserActions
*/ */
protected function readCredentials(): array protected function readCredentials(): array
{ {
if (file_exists($this->root() . '/index.php') === true) { $path = $this->root() . '/index.php';
$credentials = require $this->root() . '/index.php';
if (is_file($path) === true) {
$credentials = F::load($path);
return is_array($credentials) === false ? [] : $credentials; return is_array($credentials) === false ? [] : $credentials;
} else { } else {

View File

@@ -25,17 +25,7 @@ class UserPermissions extends ModelPermissions
protected function canChangeRole(): bool protected function canChangeRole(): bool
{ {
// only one role, makes no sense to change it return $this->model->roles()->count() > 1;
if ($this->user->kirby()->roles()->count() < 2) {
return false;
}
// users who are not admins cannot change their own role
if ($this->user->is($this->model) === true && $this->user->isAdmin() === false) {
return false;
}
return $this->model->isLastAdmin() !== true;
} }
protected function canCreate(): bool protected function canCreate(): bool

View File

@@ -3,6 +3,7 @@
namespace Kirby\Cms; namespace Kirby\Cms;
use Kirby\Toolkit\Dir; use Kirby\Toolkit\Dir;
use Kirby\Toolkit\F;
use Kirby\Toolkit\Str; use Kirby\Toolkit\Str;
/** /**
@@ -109,8 +110,9 @@ class Users extends Collection
} }
// get role information // get role information
if (file_exists($root . '/' . $userDirectory . '/index.php') === true) { $path = $root . '/' . $userDirectory . '/index.php';
$credentials = require $root . '/' . $userDirectory . '/index.php'; if (is_file($path) === true) {
$credentials = F::load($path);
} }
// create user model based on role // create user model based on role

View File

@@ -2,13 +2,13 @@
namespace Kirby\Data; namespace Kirby\Data;
use Exception; use Kirby\Exception\Exception;
use Kirby\Toolkit\F; use Kirby\Toolkit\F;
/** /**
* The `Data` class provides readers and * The `Data` class provides readers and
* writers for data. The class comes with * writers for data. The class comes with
* four handlers for `json`, `php`, `txt` * handlers for `json`, `php`, `txt`, `xml`
* and `yaml` encoded data, but can be * and `yaml` encoded data, but can be
* extended and customized. * extended and customized.
* *
@@ -32,6 +32,7 @@ class Data
public static $aliases = [ public static $aliases = [
'md' => 'txt', 'md' => 'txt',
'mdown' => 'txt', 'mdown' => 'txt',
'rss' => 'xml',
'yml' => 'yaml', 'yml' => 'yaml',
]; ];
@@ -44,6 +45,7 @@ class Data
'json' => 'Kirby\Data\Json', 'json' => 'Kirby\Data\Json',
'php' => 'Kirby\Data\PHP', 'php' => 'Kirby\Data\PHP',
'txt' => 'Kirby\Data\Txt', 'txt' => 'Kirby\Data\Txt',
'xml' => 'Kirby\Data\Xml',
'yaml' => 'Kirby\Data\Yaml', 'yaml' => 'Kirby\Data\Yaml',
]; ];
@@ -73,23 +75,23 @@ class Data
/** /**
* Decodes data with the specified handler * Decodes data with the specified handler
* *
* @param string $data * @param mixed $string
* @param string $type * @param string $type
* @return array * @return array
*/ */
public static function decode(string $data = null, string $type): array public static function decode($string = null, string $type): array
{ {
return static::handler($type)->decode($data); return static::handler($type)->decode($string);
} }
/** /**
* Encodes data with the specified handler * Encodes data with the specified handler
* *
* @param array $data * @param mixed $data
* @param string $type * @param string $type
* @return string * @return string
*/ */
public static function encode(array $data = null, string $type): string public static function encode($data = null, string $type): string
{ {
return static::handler($type)->encode($data); return static::handler($type)->encode($data);
} }
@@ -114,11 +116,11 @@ class Data
* the extension if not specified * the extension if not specified
* *
* @param string $file * @param string $file
* @param array $data * @param mixed $data
* @param string $type * @param string $type
* @return bool * @return bool
*/ */
public static function write(string $file = null, array $data = [], string $type = null): bool public static function write(string $file = null, $data = [], string $type = null): bool
{ {
return static::handler($type ?? F::extension($file))->write($file, $data); return static::handler($type ?? F::extension($file))->write($file, $data);
} }

View File

@@ -2,7 +2,7 @@
namespace Kirby\Data; namespace Kirby\Data;
use Exception; use Kirby\Exception\Exception;
use Kirby\Toolkit\F; use Kirby\Toolkit\F;
/** /**
@@ -23,7 +23,7 @@ abstract class Handler
* *
* Needs to throw an Exception if the file can't be parsed. * Needs to throw an Exception if the file can't be parsed.
* *
* @param string $string * @param mixed $string
* @return array * @return array
*/ */
abstract public static function decode($string): array; abstract public static function decode($string): array;
@@ -55,10 +55,10 @@ abstract class Handler
* Writes data to a file * Writes data to a file
* *
* @param string $file * @param string $file
* @param array $data * @param mixed $data
* @return bool * @return bool
*/ */
public static function write(string $file = null, array $data = []): bool public static function write(string $file = null, $data = []): bool
{ {
return F::write($file, static::encode($data)); return F::write($file, static::encode($data));
} }

View File

@@ -2,7 +2,7 @@
namespace Kirby\Data; namespace Kirby\Data;
use Exception; use Kirby\Exception\InvalidArgumentException;
/** /**
* Simple Wrapper around json_encode and json_decode * Simple Wrapper around json_encode and json_decode
@@ -29,17 +29,29 @@ class Json extends Handler
/** /**
* Parses an encoded JSON string and returns a multi-dimensional array * Parses an encoded JSON string and returns a multi-dimensional array
* *
* @param string $json * @param mixed $string
* @return array * @return array
*/ */
public static function decode($json): array public static function decode($string): array
{ {
$result = json_decode($json, true); if ($string === null) {
return [];
}
if (is_array($string) === true) {
return $string;
}
if (is_string($string) === false) {
throw new InvalidArgumentException('Invalid JSON data; please pass a string');
}
$result = json_decode($string, true);
if (is_array($result) === true) { if (is_array($result) === true) {
return $result; return $result;
} else { } else {
throw new Exception('JSON string is invalid'); throw new InvalidArgumentException('JSON string is invalid');
} }
} }
} }

View File

@@ -2,7 +2,8 @@
namespace Kirby\Data; namespace Kirby\Data;
use Exception; use Kirby\Exception\BadMethodCallException;
use Kirby\Exception\Exception;
use Kirby\Toolkit\F; use Kirby\Toolkit\F;
/** /**
@@ -23,7 +24,7 @@ class PHP extends Handler
* @param string $indent For internal use only * @param string $indent For internal use only
* @return string * @return string
*/ */
public static function encode($data, $indent = ''): string public static function encode($data, string $indent = ''): string
{ {
switch (gettype($data)) { switch (gettype($data)) {
case 'array': case 'array':
@@ -46,14 +47,14 @@ class PHP extends Handler
} }
/** /**
* PHP arrays don't have to be decoded * PHP strings shouldn't be decoded manually
* *
* @param array $array * @param mixed $array
* @return array * @return array
*/ */
public static function decode($array): array public static function decode($array): array
{ {
return $array; throw new BadMethodCallException('The PHP::decode() method is not implemented');
} }
/** /**
@@ -68,17 +69,17 @@ class PHP extends Handler
throw new Exception('The file "' . $file . '" does not exist'); throw new Exception('The file "' . $file . '" does not exist');
} }
return (array)(include $file); return (array)F::load($file, []);
} }
/** /**
* Creates a PHP file with the given data * Creates a PHP file with the given data
* *
* @param string $file * @param string $file
* @param array $data * @param mixed $data
* @return bool * @return bool
*/ */
public static function write(string $file = null, array $data = []): bool public static function write(string $file = null, $data = []): bool
{ {
$php = static::encode($data); $php = static::encode($data);
$php = "<?php\n\nreturn $php;"; $php = "<?php\n\nreturn $php;";

View File

@@ -2,6 +2,8 @@
namespace Kirby\Data; namespace Kirby\Data;
use Kirby\Exception\InvalidArgumentException;
use Kirby\Toolkit\A;
use Kirby\Toolkit\Str; use Kirby\Toolkit\Str;
/** /**
@@ -25,7 +27,7 @@ class Txt extends Handler
{ {
$result = []; $result = [];
foreach ((array)$data as $key => $value) { foreach (A::wrap($data) as $key => $value) {
if (empty($key) === true || $value === null) { if (empty($key) === true || $value === null) {
continue; continue;
} }
@@ -48,7 +50,7 @@ class Txt extends Handler
{ {
// avoid problems with arrays // avoid problems with arrays
if (is_array($value) === true) { if (is_array($value) === true) {
$value = Yaml::encode($value); $value = Data::encode($value, 'yaml');
// avoid problems with localized floats // avoid problems with localized floats
} elseif (is_float($value) === true) { } elseif (is_float($value) === true) {
$value = Str::float($value); $value = Str::float($value);
@@ -86,11 +88,23 @@ class Txt extends Handler
/** /**
* Parses a Kirby txt string and returns a multi-dimensional array * Parses a Kirby txt string and returns a multi-dimensional array
* *
* @param string $string * @param mixed $string
* @return array * @return array
*/ */
public static function decode($string): array public static function decode($string): array
{ {
if ($string === null) {
return [];
}
if (is_array($string) === true) {
return $string;
}
if (is_string($string) === false) {
throw new InvalidArgumentException('Invalid TXT data; please pass a string');
}
// remove BOM // remove BOM
$string = str_replace("\xEF\xBB\xBF", '', $string); $string = str_replace("\xEF\xBB\xBF", '', $string);
// explode all fields by the line separator // explode all fields by the line separator

64
kirby/src/Data/Xml.php Executable file
View File

@@ -0,0 +1,64 @@
<?php
namespace Kirby\Data;
use Kirby\Exception\InvalidArgumentException;
use Kirby\Toolkit\Xml as XmlConverter;
/**
* Simple Wrapper around the XML parser of the Toolkit
*
* @package Kirby Data
* @author Lukas Bestle <lukas@getkirby.com>
* @link https://getkirby.com
* @copyright Bastian Allgeier GmbH
* @license https://opensource.org/licenses/MIT
*/
class Xml extends Handler
{
/**
* Converts an array to an encoded XML string
*
* @param mixed $data
* @return string
*/
public static function encode($data): string
{
return XmlConverter::create($data, 'data');
}
/**
* Parses an encoded XML string and returns a multi-dimensional array
*
* @param mixed $string
* @return array
*/
public static function decode($string): array
{
if ($string === null) {
return [];
}
if (is_array($string) === true) {
return $string;
}
if (is_string($string) === false) {
throw new InvalidArgumentException('Invalid XML data; please pass a string');
}
$result = XmlConverter::parse($string);
if (is_array($result) === true) {
// remove the root's name if it is the default <data> to ensure that
// the decoded data is the same as the input to the encode() method
if ($result['@name'] === 'data') {
unset($result['@name']);
}
return $result;
} else {
throw new InvalidArgumentException('XML string is invalid');
}
}
}

View File

@@ -2,7 +2,7 @@
namespace Kirby\Data; namespace Kirby\Data;
use Exception; use Kirby\Exception\InvalidArgumentException;
use Spyc; use Spyc;
/** /**
@@ -42,29 +42,33 @@ class Yaml extends Handler
/** /**
* Parses an encoded YAML string and returns a multi-dimensional array * Parses an encoded YAML string and returns a multi-dimensional array
* *
* @param string $yaml * @param mixed $string
* @return array * @return array
*/ */
public static function decode($yaml): array public static function decode($string): array
{ {
if ($yaml === null) { if ($string === null) {
return []; return [];
} }
if (is_array($yaml) === true) { if (is_array($string) === true) {
return $yaml; return $string;
}
if (is_string($string) === false) {
throw new InvalidArgumentException('Invalid YAML data; please pass a string');
} }
// remove BOM // remove BOM
$yaml = str_replace("\xEF\xBB\xBF", '', $yaml); $string = str_replace("\xEF\xBB\xBF", '', $string);
$result = Spyc::YAMLLoadString($yaml); $result = Spyc::YAMLLoadString($string);
if (is_array($result)) { if (is_array($result)) {
return $result; return $result;
} else { } else {
// apparently Spyc always returns an array, even for invalid YAML syntax // apparently Spyc always returns an array, even for invalid YAML syntax
// so this Exception should currently never be thrown // so this Exception should currently never be thrown
throw new Exception('YAML string is invalid'); // @codeCoverageIgnore throw new InvalidArgumentException('The YAML data cannot be parsed'); // @codeCoverageIgnore
} }
} }
} }

View File

@@ -2,6 +2,7 @@
namespace Kirby\Database; namespace Kirby\Database;
use Closure;
use Exception; use Exception;
use Kirby\Exception\InvalidArgumentException; use Kirby\Exception\InvalidArgumentException;
use Kirby\Toolkit\A; use Kirby\Toolkit\A;
@@ -230,7 +231,7 @@ class Database
} }
/** /**
* Sets the exception mode for the next query * Sets the exception mode
* *
* @param bool $fail * @param bool $fail
* @return \Kirby\Database\Database * @return \Kirby\Database\Database
@@ -369,7 +370,7 @@ class Database
$this->statement->execute($bindings); $this->statement->execute($bindings);
$this->affected = $this->statement->rowCount(); $this->affected = $this->statement->rowCount();
$this->lastId = $this->connection->lastInsertId(); $this->lastId = Str::startsWith($query, 'insert ', true) ? $this->connection->lastInsertId() : null;
$this->lastError = null; $this->lastError = null;
// store the final sql to add it to the trace later // store the final sql to add it to the trace later
@@ -395,9 +396,6 @@ class Database
'error' => $this->lastError 'error' => $this->lastError
]); ]);
// reset some stuff
$this->fail = false;
// return true or false on success or failure // return true or false on success or failure
return $this->lastError === null; return $this->lastError === null;
} }
@@ -426,7 +424,11 @@ class Database
} }
// define the default flag for the fetch method // define the default flag for the fetch method
$flags = $options['fetch'] === 'array' ? PDO::FETCH_ASSOC : PDO::FETCH_CLASS|PDO::FETCH_PROPS_LATE; if ($options['fetch'] instanceof Closure || $options['fetch'] === 'array') {
$flags = PDO::FETCH_ASSOC;
} else {
$flags = PDO::FETCH_CLASS|PDO::FETCH_PROPS_LATE;
}
// add optional flags // add optional flags
if (empty($options['flag']) === false) { if (empty($options['flag']) === false) {
@@ -434,7 +436,7 @@ class Database
} }
// set the fetch mode // set the fetch mode
if ($options['fetch'] === 'array') { if ($options['fetch'] instanceof Closure || $options['fetch'] === 'array') {
$this->statement->setFetchMode($flags); $this->statement->setFetchMode($flags);
} else { } else {
$this->statement->setFetchMode($flags, $options['fetch']); $this->statement->setFetchMode($flags, $options['fetch']);
@@ -443,6 +445,13 @@ class Database
// fetch that stuff // fetch that stuff
$results = $this->statement->{$options['method']}(); $results = $this->statement->{$options['method']}();
// apply the fetch closure to all results if given
if ($options['fetch'] instanceof Closure) {
foreach ($results as $key => $result) {
$results[$key] = $options['fetch']($result, $key);
}
}
if ($options['iterator'] === 'array') { if ($options['iterator'] === 'array') {
return $this->lastResult = $results; return $this->lastResult = $results;
} }
@@ -559,6 +568,11 @@ class Database
} }
} }
// update cache
if (in_array($table, $this->tableWhitelist) !== true) {
$this->tableWhitelist[] = $table;
}
return true; return true;
} }
@@ -571,7 +585,17 @@ class Database
public function dropTable($table): bool public function dropTable($table): bool
{ {
$sql = $this->sql()->dropTable($table); $sql = $this->sql()->dropTable($table);
return $this->execute($sql['query'], $sql['bindings']); if ($this->execute($sql['query'], $sql['bindings']) !== true) {
return false;
}
// update cache
$key = array_search($this->tableWhitelist, $table);
if ($key !== false) {
unset($this->tableWhitelist[$key]);
}
return true;
} }
/** /**

View File

@@ -2,7 +2,7 @@
namespace Kirby\Database; namespace Kirby\Database;
use InvalidArgumentException; use Kirby\Exception\InvalidArgumentException;
use Kirby\Toolkit\Config; use Kirby\Toolkit\Config;
/** /**
@@ -16,8 +16,6 @@ use Kirby\Toolkit\Config;
*/ */
class Db class Db
{ {
const ERROR_UNKNOWN_METHOD = 0;
/** /**
* Query shortcuts * Query shortcuts
* *
@@ -35,10 +33,11 @@ class Db
/** /**
* (Re)connect the database * (Re)connect the database
* *
* @param array $params Pass [] to use the default params from the config * @param array|null $params Pass `[]` to use the default params from the config,
* don't pass any argument to get the current connection
* @return \Kirby\Database\Database * @return \Kirby\Database\Database
*/ */
public static function connect(array $params = null) public static function connect(?array $params = null)
{ {
if ($params === null && static::$connection !== null) { if ($params === null && static::$connection !== null) {
return static::$connection; return static::$connection;
@@ -46,14 +45,15 @@ class Db
// try to connect with the default // try to connect with the default
// connection settings if no params are set // connection settings if no params are set
$params = $params ?? [ $defaults = [
'type' => Config::get('db.type', 'mysql'), 'type' => Config::get('db.type', 'mysql'),
'host' => Config::get('db.host', 'localhost'), 'host' => Config::get('db.host', 'localhost'),
'user' => Config::get('db.user', 'root'), 'user' => Config::get('db.user', 'root'),
'password' => Config::get('db.password', ''), 'password' => Config::get('db.password', ''),
'database' => Config::get('db.database', ''), 'database' => Config::get('db.database', ''),
'prefix' => Config::get('db.prefix', ''), 'prefix' => Config::get('db.prefix', '')
]; ];
$params = $params ?? $defaults;
return static::$connection = new Database($params); return static::$connection = new Database($params);
} }
@@ -61,7 +61,7 @@ class Db
/** /**
* Returns the current database connection * Returns the current database connection
* *
* @return \Kirby\Database\Database * @return \Kirby\Database\Database|null
*/ */
public static function connection() public static function connection()
{ {
@@ -69,7 +69,7 @@ class Db
} }
/** /**
* Sets the current table, which should be queried. Returns a * Sets the current table which should be queried. Returns a
* Query object, which can be used to build a full query for * Query object, which can be used to build a full query for
* that table. * that table.
* *
@@ -83,7 +83,7 @@ class Db
} }
/** /**
* Executes a raw sql query which expects a set of results * Executes a raw SQL query which expects a set of results
* *
* @param string $query * @param string $query
* @param array $bindings * @param array $bindings
@@ -97,21 +97,22 @@ class Db
} }
/** /**
* Executes a raw sql query which expects no set of results (i.e. update, insert, delete) * Executes a raw SQL query which expects no set of results (i.e. update, insert, delete)
* *
* @param string $query * @param string $query
* @param array $bindings * @param array $bindings
* @return mixed * @return bool
*/ */
public static function execute(string $query, array $bindings = []) public static function execute(string $query, array $bindings = []): bool
{ {
$db = static::connect(); $db = static::connect();
return $db->execute($query, $bindings); return $db->execute($query, $bindings);
} }
/** /**
* Magic calls for other static db methods, * Magic calls for other static Db methods are
* which are redircted to the database class if available * redirected to either a predefined query or
* the respective method of the Database object
* *
* @param string $method * @param string $method
* @param mixed $arguments * @param mixed $arguments
@@ -123,20 +124,21 @@ class Db
return static::$queries[$method](...$arguments); return static::$queries[$method](...$arguments);
} }
if (is_callable([static::$connection, $method]) === true) { if (static::$connection !== null && method_exists(static::$connection, $method) === true) {
return call_user_func_array([static::$connection, $method], $arguments); return call_user_func_array([static::$connection, $method], $arguments);
} }
throw new InvalidArgumentException('Invalid static Db method: ' . $method, static::ERROR_UNKNOWN_METHOD); throw new InvalidArgumentException('Invalid static Db method: ' . $method);
} }
} }
/** /**
* Shortcut for select clauses * Shortcut for SELECT clauses
* @codeCoverageIgnore
* *
* @param string $table The name of the table, which should be queried * @param string $table The name of the table which should be queried
* @param mixed $columns Either a string with columns or an array of column names * @param mixed $columns Either a string with columns or an array of column names
* @param mixed $where The where clause. Can be a string or an array * @param mixed $where The WHERE clause; can be a string or an array
* @param string $order * @param string $order
* @param int $offset * @param int $offset
* @param int $limit * @param int $limit
@@ -148,10 +150,11 @@ Db::$queries['select'] = function (string $table, $columns = '*', $where = null,
/** /**
* Shortcut for selecting a single row in a table * Shortcut for selecting a single row in a table
* @codeCoverageIgnore
* *
* @param string $table The name of the table, which should be queried * @param string $table The name of the table which should be queried
* @param mixed $columns Either a string with columns or an array of column names * @param mixed $columns Either a string with columns or an array of column names
* @param mixed $where The where clause. Can be a string or an array * @param mixed $where The WHERE clause; can be a string or an array
* @param string $order * @param string $order
* @param int $offset * @param int $offset
* @param int $limit * @param int $limit
@@ -163,10 +166,11 @@ Db::$queries['first'] = Db::$queries['row'] = Db::$queries['one'] = function (st
/** /**
* Returns only values from a single column * Returns only values from a single column
* @codeCoverageIgnore
* *
* @param string $table The name of the table, which should be queried * @param string $table The name of the table which should be queried
* @param string $column The name of the column to select from * @param string $column The name of the column to select from
* @param mixed $where The where clause. Can be a string or an array * @param mixed $where The WHERE clause; can be a string or an array
* @param string $order * @param string $order
* @param int $offset * @param int $offset
* @param int $limit * @param int $limit
@@ -178,93 +182,101 @@ Db::$queries['column'] = function (string $table, string $column, $where = null,
/** /**
* Shortcut for inserting a new row into a table * Shortcut for inserting a new row into a table
* @codeCoverageIgnore
* *
* @param string $table The name of the table, which should be queried * @param string $table The name of the table which should be queried
* @param array $values An array of values, which should be inserted * @param array $values An array of values which should be inserted
* @return bool * @return int ID of the inserted row
*/ */
Db::$queries['insert'] = function (string $table, array $values) { Db::$queries['insert'] = function (string $table, array $values): int {
return Db::table($table)->insert($values); return Db::table($table)->insert($values);
}; };
/** /**
* Shortcut for updating a row in a table * Shortcut for updating a row in a table
* @codeCoverageIgnore
* *
* @param string $table The name of the table, which should be queried * @param string $table The name of the table which should be queried
* @param array $values An array of values, which should be inserted * @param array $values An array of values which should be inserted
* @param mixed $where An optional where clause * @param mixed $where An optional WHERE clause
* @return bool * @return bool
*/ */
Db::$queries['update'] = function (string $table, array $values, $where = null) { Db::$queries['update'] = function (string $table, array $values, $where = null): bool {
return Db::table($table)->where($where)->update($values); return Db::table($table)->where($where)->update($values);
}; };
/** /**
* Shortcut for deleting rows in a table * Shortcut for deleting rows in a table
* @codeCoverageIgnore
* *
* @param string $table The name of the table, which should be queried * @param string $table The name of the table which should be queried
* @param mixed $where An optional where clause * @param mixed $where An optional WHERE clause
* @return bool * @return bool
*/ */
Db::$queries['delete'] = function (string $table, $where = null) { Db::$queries['delete'] = function (string $table, $where = null): bool {
return Db::table($table)->where($where)->delete(); return Db::table($table)->where($where)->delete();
}; };
/** /**
* Shortcut for counting rows in a table * Shortcut for counting rows in a table
* @codeCoverageIgnore
* *
* @param string $table The name of the table, which should be queried * @param string $table The name of the table which should be queried
* @param mixed $where An optional where clause * @param mixed $where An optional WHERE clause
* @return int * @return int
*/ */
Db::$queries['count'] = function (string $table, $where = null) { Db::$queries['count'] = function (string $table, $where = null): int {
return Db::table($table)->where($where)->count(); return Db::table($table)->where($where)->count();
}; };
/** /**
* Shortcut for calculating the minimum value in a column * Shortcut for calculating the minimum value in a column
* @codeCoverageIgnore
* *
* @param string $table The name of the table, which should be queried * @param string $table The name of the table which should be queried
* @param string $column The name of the column of which the minimum should be calculated * @param string $column The name of the column of which the minimum should be calculated
* @param mixed $where An optional where clause * @param mixed $where An optional WHERE clause
* @return mixed * @return float
*/ */
Db::$queries['min'] = function (string $table, string $column, $where = null) { Db::$queries['min'] = function (string $table, string $column, $where = null): float {
return Db::table($table)->where($where)->min($column); return Db::table($table)->where($where)->min($column);
}; };
/** /**
* Shortcut for calculating the maximum value in a column * Shortcut for calculating the maximum value in a column
* @codeCoverageIgnore
* *
* @param string $table The name of the table, which should be queried * @param string $table The name of the table which should be queried
* @param string $column The name of the column of which the maximum should be calculated * @param string $column The name of the column of which the maximum should be calculated
* @param mixed $where An optional where clause * @param mixed $where An optional WHERE clause
* @return mixed * @return float
*/ */
Db::$queries['max'] = function (string $table, string $column, $where = null) { Db::$queries['max'] = function (string $table, string $column, $where = null): float {
return Db::table($table)->where($where)->max($column); return Db::table($table)->where($where)->max($column);
}; };
/** /**
* Shortcut for calculating the average value in a column * Shortcut for calculating the average value in a column
* @codeCoverageIgnore
* *
* @param string $table The name of the table, which should be queried * @param string $table The name of the table which should be queried
* @param string $column The name of the column of which the average should be calculated * @param string $column The name of the column of which the average should be calculated
* @param mixed $where An optional where clause * @param mixed $where An optional WHERE clause
* @return mixed * @return float
*/ */
Db::$queries['avg'] = function (string $table, string $column, $where = null) { Db::$queries['avg'] = function (string $table, string $column, $where = null): float {
return Db::table($table)->where($where)->avg($column); return Db::table($table)->where($where)->avg($column);
}; };
/** /**
* Shortcut for calculating the sum of all values in a column * Shortcut for calculating the sum of all values in a column
* @codeCoverageIgnore
* *
* @param string $table The name of the table, which should be queried * @param string $table The name of the table which should be queried
* @param string $column The name of the column of which the sum should be calculated * @param string $column The name of the column of which the sum should be calculated
* @param mixed $where An optional where clause * @param mixed $where An optional WHERE clause
* @return mixed * @return float
*/ */
Db::$queries['sum'] = function (string $table, string $column, $where = null) { Db::$queries['sum'] = function (string $table, string $column, $where = null): float {
return Db::table($table)->where($where)->sum($column); return Db::table($table)->where($where)->sum($column);
}; };

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