Upgrade to 3.6.0

This commit is contained in:
Bastian Allgeier
2021-11-16 14:53:37 +01:00
parent 7388fa4d24
commit 92b7a330fa
318 changed files with 20017 additions and 6878 deletions

View File

@@ -5,7 +5,7 @@
* stop at older or too recent versions * stop at older or too recent versions
*/ */
if ( if (
version_compare(PHP_VERSION, '7.3.0', '>=') === false || version_compare(PHP_VERSION, '7.4.0', '>=') === false ||
version_compare(PHP_VERSION, '8.1.0', '<') === false version_compare(PHP_VERSION, '8.1.0', '<') === false
) { ) {
die(include __DIR__ . '/views/php.php'); die(include __DIR__ . '/views/php.php');

View File

@@ -8,7 +8,7 @@
"core" "core"
], ],
"homepage": "https://getkirby.com", "homepage": "https://getkirby.com",
"version": "3.5.8", "version": "3.6.0",
"license": "proprietary", "license": "proprietary",
"authors": [ "authors": [
{ {
@@ -18,16 +18,17 @@
} }
], ],
"require": { "require": {
"php": ">=7.3.0 <8.1.0", "php": ">=7.4.0 <8.1.0",
"ext-ctype": "*", "ext-ctype": "*",
"ext-mbstring": "*", "ext-mbstring": "*",
"claviska/simpleimage": "3.6.3", "claviska/simpleimage": "3.6.3",
"filp/whoops": "2.12.1", "filp/whoops": "2.14.4",
"getkirby/composer-installer": "^1.2.0", "getkirby/composer-installer": "^1.2.1",
"laminas/laminas-escaper": "2.7.0", "laminas/laminas-escaper": "2.9.0",
"michelf/php-smartypants": "1.8.1", "michelf/php-smartypants": "1.8.1",
"mustangostang/spyc": "0.6.3", "mustangostang/spyc": "0.6.3",
"phpmailer/phpmailer": "6.5.0", "phpmailer/phpmailer": "6.5.1",
"psr/log": "1.1.4",
"true/punycode": "2.1.1" "true/punycode": "2.1.1"
}, },
"config": { "config": {
@@ -73,5 +74,6 @@
"issues": "https://github.com/getkirby/kirby/issues", "issues": "https://github.com/getkirby/kirby/issues",
"forum": "https://forum.getkirby.com", "forum": "https://forum.getkirby.com",
"source": "https://github.com/getkirby/kirby" "source": "https://github.com/getkirby/kirby"
} },
"_comment": "TODO: psr/log is not used by Kirby; drop pinned version when Kirby no longer supports PHP 7"
} }

129
kirby/composer.lock generated
View File

@@ -4,7 +4,7 @@
"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": "039b76eb24f9d5016bc5284c5b366718", "content-hash": "8712d96f826f859411fec3cce4f16e63",
"packages": [ "packages": [
{ {
"name": "claviska/simpleimage", "name": "claviska/simpleimage",
@@ -57,21 +57,21 @@
}, },
{ {
"name": "filp/whoops", "name": "filp/whoops",
"version": "2.12.1", "version": "2.14.4",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/filp/whoops.git", "url": "https://github.com/filp/whoops.git",
"reference": "c13c0be93cff50f88bbd70827d993026821914dd" "reference": "f056f1fe935d9ed86e698905a957334029899895"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/filp/whoops/zipball/c13c0be93cff50f88bbd70827d993026821914dd", "url": "https://api.github.com/repos/filp/whoops/zipball/f056f1fe935d9ed86e698905a957334029899895",
"reference": "c13c0be93cff50f88bbd70827d993026821914dd", "reference": "f056f1fe935d9ed86e698905a957334029899895",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": "^5.5.9 || ^7.0 || ^8.0", "php": "^5.5.9 || ^7.0 || ^8.0",
"psr/log": "^1.0.1" "psr/log": "^1.0.1 || ^2.0 || ^3.0"
}, },
"require-dev": { "require-dev": {
"mockery/mockery": "^0.9 || ^1.0", "mockery/mockery": "^0.9 || ^1.0",
@@ -116,7 +116,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/filp/whoops/issues", "issues": "https://github.com/filp/whoops/issues",
"source": "https://github.com/filp/whoops/tree/2.12.1" "source": "https://github.com/filp/whoops/tree/2.14.4"
}, },
"funding": [ "funding": [
{ {
@@ -124,7 +124,7 @@
"type": "github" "type": "github"
} }
], ],
"time": "2021-04-25T12:00:00+00:00" "time": "2021-10-03T12:00:00+00:00"
}, },
{ {
"name": "getkirby/composer-installer", "name": "getkirby/composer-installer",
@@ -175,27 +175,26 @@
}, },
{ {
"name": "laminas/laminas-escaper", "name": "laminas/laminas-escaper",
"version": "2.7.0", "version": "2.9.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/laminas/laminas-escaper.git", "url": "https://github.com/laminas/laminas-escaper.git",
"reference": "5e04bc5ae5990b17159d79d331055e2c645e5cc5" "reference": "891ad70986729e20ed2e86355fcf93c9dc238a5f"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/5e04bc5ae5990b17159d79d331055e2c645e5cc5", "url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/891ad70986729e20ed2e86355fcf93c9dc238a5f",
"reference": "5e04bc5ae5990b17159d79d331055e2c645e5cc5", "reference": "891ad70986729e20ed2e86355fcf93c9dc238a5f",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"laminas/laminas-zendframework-bridge": "^1.0", "php": "^7.3 || ~8.0.0 || ~8.1.0"
"php": "^7.3 || ~8.0.0"
}, },
"replace": { "conflict": {
"zendframework/zend-escaper": "^2.6.1" "zendframework/zend-escaper": "*"
}, },
"require-dev": { "require-dev": {
"laminas/laminas-coding-standard": "~1.0.0", "laminas/laminas-coding-standard": "~2.3.0",
"phpunit/phpunit": "^9.3", "phpunit/phpunit": "^9.3",
"psalm/plugin-phpunit": "^0.12.2", "psalm/plugin-phpunit": "^0.12.2",
"vimeo/psalm": "^3.16" "vimeo/psalm": "^3.16"
@@ -234,69 +233,7 @@
"type": "community_bridge" "type": "community_bridge"
} }
], ],
"time": "2020-11-17T21:26:43+00:00" "time": "2021-09-02T17:10:53+00:00"
},
{
"name": "laminas/laminas-zendframework-bridge",
"version": "1.3.0",
"source": {
"type": "git",
"url": "https://github.com/laminas/laminas-zendframework-bridge.git",
"reference": "13af2502d9bb6f7d33be2de4b51fb68c6cdb476e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/laminas/laminas-zendframework-bridge/zipball/13af2502d9bb6f7d33be2de4b51fb68c6cdb476e",
"reference": "13af2502d9bb6f7d33be2de4b51fb68c6cdb476e",
"shasum": ""
},
"require": {
"php": "^7.3 || ^8.0"
},
"require-dev": {
"phpunit/phpunit": "^5.7 || ^6.5 || ^7.5 || ^8.1 || ^9.3",
"psalm/plugin-phpunit": "^0.15.1",
"squizlabs/php_codesniffer": "^3.5",
"vimeo/psalm": "^4.6"
},
"type": "library",
"extra": {
"laminas": {
"module": "Laminas\\ZendFrameworkBridge"
}
},
"autoload": {
"files": [
"src/autoload.php"
],
"psr-4": {
"Laminas\\ZendFrameworkBridge\\": "src//"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
"description": "Alias legacy ZF class names to Laminas Project equivalents.",
"keywords": [
"ZendFramework",
"autoloading",
"laminas",
"zf"
],
"support": {
"forum": "https://discourse.laminas.dev/",
"issues": "https://github.com/laminas/laminas-zendframework-bridge/issues",
"rss": "https://github.com/laminas/laminas-zendframework-bridge/releases.atom",
"source": "https://github.com/laminas/laminas-zendframework-bridge"
},
"funding": [
{
"url": "https://funding.communitybridge.org/projects/laminas-project",
"type": "community_bridge"
}
],
"time": "2021-06-24T12:49:22+00:00"
}, },
{ {
"name": "league/color-extractor", "name": "league/color-extractor",
@@ -462,16 +399,16 @@
}, },
{ {
"name": "phpmailer/phpmailer", "name": "phpmailer/phpmailer",
"version": "v6.5.0", "version": "v6.5.1",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/PHPMailer/PHPMailer.git", "url": "https://github.com/PHPMailer/PHPMailer.git",
"reference": "a5b5c43e50b7fba655f793ad27303cd74c57363c" "reference": "dd803df5ad7492e1b40637f7ebd258fee5ca7355"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/a5b5c43e50b7fba655f793ad27303cd74c57363c", "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/dd803df5ad7492e1b40637f7ebd258fee5ca7355",
"reference": "a5b5c43e50b7fba655f793ad27303cd74c57363c", "reference": "dd803df5ad7492e1b40637f7ebd258fee5ca7355",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -483,10 +420,12 @@
"require-dev": { "require-dev": {
"dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0",
"doctrine/annotations": "^1.2", "doctrine/annotations": "^1.2",
"php-parallel-lint/php-console-highlighter": "^0.5.0",
"php-parallel-lint/php-parallel-lint": "^1.3",
"phpcompatibility/php-compatibility": "^9.3.5", "phpcompatibility/php-compatibility": "^9.3.5",
"roave/security-advisories": "dev-latest", "roave/security-advisories": "dev-latest",
"squizlabs/php_codesniffer": "^3.5.6", "squizlabs/php_codesniffer": "^3.6.0",
"yoast/phpunit-polyfills": "^0.2.0" "yoast/phpunit-polyfills": "^1.0.0"
}, },
"suggest": { "suggest": {
"ext-mbstring": "Needed to send email in multibyte encoding charset or decode encoded addresses", "ext-mbstring": "Needed to send email in multibyte encoding charset or decode encoded addresses",
@@ -526,7 +465,7 @@
"description": "PHPMailer is a full-featured email creation and transfer class for PHP", "description": "PHPMailer is a full-featured email creation and transfer class for PHP",
"support": { "support": {
"issues": "https://github.com/PHPMailer/PHPMailer/issues", "issues": "https://github.com/PHPMailer/PHPMailer/issues",
"source": "https://github.com/PHPMailer/PHPMailer/tree/v6.5.0" "source": "https://github.com/PHPMailer/PHPMailer/tree/v6.5.1"
}, },
"funding": [ "funding": [
{ {
@@ -534,7 +473,7 @@
"type": "github" "type": "github"
} }
], ],
"time": "2021-06-16T14:33:43+00:00" "time": "2021-08-18T09:14:16+00:00"
}, },
{ {
"name": "psr/log", "name": "psr/log",
@@ -588,16 +527,16 @@
}, },
{ {
"name": "symfony/polyfill-mbstring", "name": "symfony/polyfill-mbstring",
"version": "v1.23.0", "version": "v1.23.1",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git", "url": "https://github.com/symfony/polyfill-mbstring.git",
"reference": "2df51500adbaebdc4c38dea4c89a2e131c45c8a1" "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/2df51500adbaebdc4c38dea4c89a2e131c45c8a1", "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9174a3d80210dca8daa7f31fec659150bbeabfc6",
"reference": "2df51500adbaebdc4c38dea4c89a2e131c45c8a1", "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -648,7 +587,7 @@
"shim" "shim"
], ],
"support": { "support": {
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.23.0" "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.23.1"
}, },
"funding": [ "funding": [
{ {
@@ -664,7 +603,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2021-05-27T09:27:20+00:00" "time": "2021-05-27T12:26:48+00:00"
}, },
{ {
"name": "true/punycode", "name": "true/punycode",
@@ -724,7 +663,7 @@
"prefer-stable": false, "prefer-stable": false,
"prefer-lowest": false, "prefer-lowest": false,
"platform": { "platform": {
"php": ">=7.3.0 <8.1.0", "php": ">=7.4.0 <8.1.0",
"ext-ctype": "*", "ext-ctype": "*",
"ext-mbstring": "*" "ext-mbstring": "*"
}, },

View File

@@ -1,14 +1,12 @@
<?php <?php
// @codeCoverageIgnoreStart
return [ return [
// cms classes // cms classes
'asset' => 'Kirby\Cms\Asset',
'collection' => 'Kirby\Cms\Collection', 'collection' => 'Kirby\Cms\Collection',
'dir' => 'Kirby\Cms\Dir',
'field' => 'Kirby\Cms\Field', 'field' => 'Kirby\Cms\Field',
'file' => 'Kirby\Cms\File', 'file' => 'Kirby\Cms\File',
'files' => 'Kirby\Cms\Files', 'files' => 'Kirby\Cms\Files',
'find' => 'Kirby\Cms\Find',
'html' => 'Kirby\Cms\Html', 'html' => 'Kirby\Cms\Html',
'kirby' => 'Kirby\Cms\App', 'kirby' => 'Kirby\Cms\App',
'page' => 'Kirby\Cms\Page', 'page' => 'Kirby\Cms\Page',
@@ -17,6 +15,7 @@ return [
'r' => 'Kirby\Cms\R', 'r' => 'Kirby\Cms\R',
'response' => 'Kirby\Cms\Response', 'response' => 'Kirby\Cms\Response',
's' => 'Kirby\Cms\S', 's' => 'Kirby\Cms\S',
'sane' => 'Kirby\Sane\Sane',
'site' => 'Kirby\Cms\Site', 'site' => 'Kirby\Cms\Site',
'structure' => 'Kirby\Cms\Structure', 'structure' => 'Kirby\Cms\Structure',
'url' => 'Kirby\Cms\Url', 'url' => 'Kirby\Cms\Url',
@@ -29,6 +28,12 @@ return [
'json' => 'Kirby\Data\Json', 'json' => 'Kirby\Data\Json',
'yaml' => 'Kirby\Data\Yaml', 'yaml' => 'Kirby\Data\Yaml',
// file classes
'asset' => 'Kirby\Filesystem\Asset',
'dir' => 'Kirby\Filesystem\Dir',
'f' => 'Kirby\Filesystem\F',
'mime' => 'Kirby\Filesystem\Mime',
// data classes // data classes
'database' => 'Kirby\Database\Database', 'database' => 'Kirby\Database\Database',
'db' => 'Kirby\Database\Db', 'db' => 'Kirby\Database\Db',
@@ -45,18 +50,31 @@ return [
// image classes // image classes
'dimensions' => 'Kirby\Image\Dimensions', 'dimensions' => 'Kirby\Image\Dimensions',
// panel classes
'panel' => 'Kirby\Panel\Panel',
// toolkit classes // toolkit classes
'a' => 'Kirby\Toolkit\A', 'a' => 'Kirby\Toolkit\A',
'c' => 'Kirby\Toolkit\Config', 'c' => 'Kirby\Toolkit\Config',
'config' => 'Kirby\Toolkit\Config', 'config' => 'Kirby\Toolkit\Config',
'escape' => 'Kirby\Toolkit\Escape', 'escape' => 'Kirby\Toolkit\Escape',
'f' => 'Kirby\Toolkit\F',
'i18n' => 'Kirby\Toolkit\I18n', 'i18n' => 'Kirby\Toolkit\I18n',
'mime' => 'Kirby\Toolkit\Mime',
'obj' => 'Kirby\Toolkit\Obj', 'obj' => 'Kirby\Toolkit\Obj',
'str' => 'Kirby\Toolkit\Str', 'str' => 'Kirby\Toolkit\Str',
'tpl' => 'Kirby\Toolkit\Tpl', 'tpl' => 'Kirby\Toolkit\Tpl',
'v' => 'Kirby\Toolkit\V', 'v' => 'Kirby\Toolkit\V',
'xml' => 'Kirby\Toolkit\Xml' 'xml' => 'Kirby\Toolkit\Xml',
// TODO: remove in 4.0.0
'kirby\cms\asset' => 'Kirby\Filesystem\Asset',
'kirby\cms\dir' => 'Kirby\Filesystem\Dir',
'kirby\cms\filename' => 'Kirby\Filesystem\Filename',
'kirby\cms\filefoundation' => 'Kirby\Filesystem\IsFile',
'kirby\cms\form' => 'Kirby\Form\Form',
'kirby\cms\kirbytag' => 'Kirby\Text\KirbyTag',
'kirby\cms\kirbytags' => 'Kirby\Text\KirbyTags',
'kirby\toolkit\dir' => 'Kirby\Filesystem\Dir',
'kirby\toolkit\f' => 'Kirby\Filesystem\F',
'kirby\toolkit\file' => 'Kirby\Filesystem\File',
'kirby\toolkit\mime' => 'Kirby\Filesystem\Mime',
]; ];
// @codeCoverageIgnoreEnd

View File

@@ -7,7 +7,10 @@ return function () {
$allowImpersonation = $this->kirby()->option('api.allowImpersonation') ?? false; $allowImpersonation = $this->kirby()->option('api.allowImpersonation') ?? false;
// csrf token check // csrf token check
if ($auth->type($allowImpersonation) === 'session' && $auth->csrf() === false) { if (
$auth->type($allowImpersonation) === 'session' &&
$auth->csrf() === false
) {
throw new PermissionException('Unauthenticated'); throw new PermissionException('Unauthenticated');
} }

View File

@@ -1,7 +1,7 @@
<?php <?php
use Kirby\Cms\File; use Kirby\Cms\File;
use Kirby\Cms\Form; use Kirby\Form\Form;
/** /**
* File * File
@@ -18,7 +18,7 @@ return [
return $file->dimensions()->toArray(); return $file->dimensions()->toArray();
}, },
'dragText' => function (File $file) { 'dragText' => function (File $file) {
return $file->dragText(); return $file->panel()->dragText();
}, },
'exists' => function (File $file) { 'exists' => function (File $file) {
return $file->exists(); return $file->exists();
@@ -33,7 +33,7 @@ return [
return $file->id(); return $file->id();
}, },
'link' => function (File $file) { 'link' => function (File $file) {
return $file->panelUrl(true); return $file->panel()->url(true);
}, },
'mime' => function (File $file) { 'mime' => function (File $file) {
return $file->mime(); return $file->mime();
@@ -48,7 +48,7 @@ return [
return $file->next(); return $file->next();
}, },
'nextWithTemplate' => function (File $file) { 'nextWithTemplate' => function (File $file) {
$files = $file->templateSiblings()->sort('sort', 'asc', 'filename', 'asc'); $files = $file->templateSiblings()->sorted();
$index = $files->indexOf($file); $index = $files->indexOf($file);
return $files->nth($index + 1); return $files->nth($index + 1);
@@ -57,22 +57,26 @@ return [
return $file->niceSize(); return $file->niceSize();
}, },
'options' => function (File $file) { 'options' => function (File $file) {
return $file->panelOptions(); return $file->panel()->options();
}, },
'panelIcon' => function (File $file) { 'panelIcon' => function (File $file) {
return $file->panelIcon(); // TODO: remove in 3.7.0
// @codeCoverageIgnoreStart
deprecated('The API field file.panelIcon has been deprecated and will be removed in 3.7.0. Use file.panelImage instead');
return $file->panel()->image();
// @codeCoverageIgnoreEnd
}, },
'panelImage' => function (File $file) { 'panelImage' => function (File $file) {
return $file->panelImage(); return $file->panel()->image();
}, },
'panelUrl' => function (File $file) { 'panelUrl' => function (File $file) {
return $file->panelUrl(true); return $file->panel()->url(true);
}, },
'prev' => function (File $file) { 'prev' => function (File $file) {
return $file->prev(); return $file->prev();
}, },
'prevWithTemplate' => function (File $file) { 'prevWithTemplate' => function (File $file) {
$files = $file->templateSiblings()->sort('sort', 'asc', 'filename', 'asc'); $files = $file->templateSiblings()->sorted();
$index = $files->indexOf($file); $index = $files->indexOf($file);
return $files->nth($index - 1); return $files->nth($index - 1);
@@ -106,7 +110,7 @@ return [
return $file->type(); return $file->type();
}, },
'url' => function (File $file) { 'url' => function (File $file) {
return $file->url(true); return $file->url();
}, },
], ],
'type' => 'Kirby\Cms\File', 'type' => 'Kirby\Cms\File',

View File

@@ -41,7 +41,7 @@ return [
return $file->type(); return $file->type();
}, },
'url' => function (FileVersion $file) { 'url' => function (FileVersion $file) {
return $file->url(true); return $file->url();
}, },
], ],
'type' => 'Kirby\Cms\FileVersion', 'type' => 'Kirby\Cms\FileVersion',

View File

@@ -1,7 +1,7 @@
<?php <?php
use Kirby\Cms\Form;
use Kirby\Cms\Page; use Kirby\Cms\Page;
use Kirby\Form\Form;
/** /**
* Page * Page
@@ -27,7 +27,7 @@ return [
return $page->errors(); return $page->errors();
}, },
'files' => function (Page $page) { 'files' => function (Page $page) {
return $page->files()->sort('sort', 'asc', 'filename', 'asc'); return $page->files()->sorted();
}, },
'hasChildren' => function (Page $page) { 'hasChildren' => function (Page $page) {
return $page->hasChildren(); return $page->hasChildren();
@@ -44,6 +44,12 @@ return [
'isSortable' => function (Page $page) { 'isSortable' => function (Page $page) {
return $page->isSortable(); return $page->isSortable();
}, },
/**
* @deprecated 3.6.0
* @todo Throw deprecated warning in 3.7.0
* @todo Remove in 3.8.0
* @codeCoverageIgnore
*/
'next' => function (Page $page) { 'next' => function (Page $page) {
return $page return $page
->nextAll() ->nextAll()
@@ -56,13 +62,18 @@ return [
return $page->num(); return $page->num();
}, },
'options' => function (Page $page) { 'options' => function (Page $page) {
return $page->panelOptions(['preview']); return $page->panel()->options(['preview']);
}, },
/**
* @todo Remove in 3.7.0
* @codeCoverageIgnore
*/
'panelIcon' => function (Page $page) { 'panelIcon' => function (Page $page) {
return $page->panelIcon(); deprecated('The API field page.panelIcon has been deprecated and will be removed in 3.7.0. Use page.panelImage instead');
return $page->panel()->image();
}, },
'panelImage' => function (Page $page) { 'panelImage' => function (Page $page) {
return $page->panelImage(); return $page->panel()->image();
}, },
'parent' => function (Page $page) { 'parent' => function (Page $page) {
return $page->parent(); return $page->parent();
@@ -70,6 +81,12 @@ return [
'parents' => function (Page $page) { 'parents' => function (Page $page) {
return $page->parents()->flip(); return $page->parents()->flip();
}, },
/**
* @deprecated 3.6.0
* @todo Throw deprecated warning in 3.7.0
* @todo Remove in 3.8.0
* @codeCoverageIgnore
*/
'prev' => function (Page $page) { 'prev' => function (Page $page) {
return $page return $page
->prevAll() ->prevAll()

View File

@@ -1,7 +1,7 @@
<?php <?php
use Kirby\Cms\Form;
use Kirby\Cms\Site; use Kirby\Cms\Site;
use Kirby\Form\Form;
/** /**
* Site * Site
@@ -24,7 +24,7 @@ return [
return $site->drafts(); return $site->drafts();
}, },
'files' => function (Site $site) { 'files' => function (Site $site) {
return $site->files()->sort('sort', 'asc', 'filename', 'asc'); return $site->files()->sorted();
}, },
'options' => function (Site $site) { 'options' => function (Site $site) {
return $site->permissions()->toArray(); return $site->permissions()->toArray();

View File

@@ -52,12 +52,8 @@ return [
'requirements' => function (System $system) { 'requirements' => function (System $system) {
return $system->toArray(); return $system->toArray();
}, },
'site' => function () { 'site' => function (System $system) {
try { return $system->title();
return $this->site()->blueprint()->title();
} catch (Throwable $e) {
return $this->site()->title()->value();
}
}, },
'slugs' => function () { 'slugs' => function () {
return Str::$language; return Str::$language;
@@ -87,7 +83,7 @@ return [
'version' => function () { 'version' => function () {
$user = $this->user(); $user = $this->user();
if ($user && $user->role()->permissions()->for('access', 'settings') === true) { if ($user && $user->role()->permissions()->for('access', 'system') === true) {
return $this->kirby()->version(); return $this->kirby()->version();
} else { } else {
return null; return null;

View File

@@ -1,7 +1,7 @@
<?php <?php
use Kirby\Cms\Form;
use Kirby\Cms\User; use Kirby\Cms\User;
use Kirby\Form\Form;
/** /**
* User * User
@@ -24,7 +24,7 @@ return [
return $user->email(); return $user->email();
}, },
'files' => function (User $user) { 'files' => function (User $user) {
return $user->files()->sort('sort', 'asc', 'filename', 'asc'); return $user->files()->sorted();
}, },
'id' => function (User $user) { 'id' => function (User $user) {
return $user->id(); return $user->id();
@@ -39,7 +39,10 @@ return [
return $user->next(); return $user->next();
}, },
'options' => function (User $user) { 'options' => function (User $user) {
return $user->panelOptions(); return $user->panel()->options();
},
'panelImage' => function (User $user) {
return $user->panel()->image();
}, },
'permissions' => function (User $user) { 'permissions' => function (User $user) {
return $user->role()->permissions()->toArray(); return $user->role()->permissions()->toArray();

View File

@@ -1,12 +1,15 @@
<?php <?php
// routing pattern to match all models with files
$pattern = '(account|pages/[^/]+|site|users/[^/]+)';
/** /**
* Files Routes * Files Routes
*/ */
return [ return [
[ [
'pattern' => '(:all)/files/(:any)/sections/(:any)', 'pattern' => $pattern . '/files/(:any)/sections/(:any)',
'method' => 'GET', 'method' => 'GET',
'action' => function (string $path, string $filename, string $sectionName) { 'action' => function (string $path, string $filename, string $sectionName) {
if ($section = $this->file($path, $filename)->blueprint()->section($sectionName)) { if ($section = $this->file($path, $filename)->blueprint()->section($sectionName)) {
@@ -15,7 +18,7 @@ return [
} }
], ],
[ [
'pattern' => '(:all)/files/(:any)/fields/(:any)/(:all?)', 'pattern' => $pattern . '/files/(:any)/fields/(:any)/(:all?)',
'method' => 'ALL', 'method' => 'ALL',
'action' => function (string $parent, string $filename, string $fieldName, string $path = null) { 'action' => function (string $parent, string $filename, string $fieldName, string $path = null) {
if ($file = $this->file($parent, $filename)) { if ($file = $this->file($parent, $filename)) {
@@ -24,27 +27,33 @@ return [
} }
], ],
[ [
'pattern' => '(:all)/files', 'pattern' => $pattern . '/files',
'method' => 'GET', 'method' => 'GET',
'action' => function (string $path) { 'action' => function (string $path) {
return $this->parent($path)->files()->sort('sort', 'asc', 'filename', 'asc'); return $this->parent($path)->files()->sorted();
} }
], ],
[ [
'pattern' => '(:all)/files', 'pattern' => $pattern . '/files',
'method' => 'POST', 'method' => 'POST',
'action' => function (string $path) { 'action' => function (string $path) {
// move_uploaded_file() not working with unit test
// @codeCoverageIgnoreStart
return $this->upload(function ($source, $filename) use ($path) { return $this->upload(function ($source, $filename) use ($path) {
return $this->parent($path)->createFile([ return $this->parent($path)->createFile([
'content' => [
'sort' => $this->requestBody('sort')
],
'source' => $source, 'source' => $source,
'template' => $this->requestBody('template'), 'template' => $this->requestBody('template'),
'filename' => $filename 'filename' => $filename
]); ]);
}); });
// @codeCoverageIgnoreEnd
} }
], ],
[ [
'pattern' => '(:all)/files/search', 'pattern' => $pattern . '/files/search',
'method' => 'GET|POST', 'method' => 'GET|POST',
'action' => function (string $path) { 'action' => function (string $path) {
$files = $this->parent($path)->files(); $files = $this->parent($path)->files();
@@ -57,7 +66,7 @@ return [
} }
], ],
[ [
'pattern' => '(:all)/files/sort', 'pattern' => $pattern . '/files/sort',
'method' => 'PATCH', 'method' => 'PATCH',
'action' => function (string $path) { 'action' => function (string $path) {
return $this->parent($path)->files()->changeSort( return $this->parent($path)->files()->changeSort(
@@ -67,21 +76,21 @@ return [
} }
], ],
[ [
'pattern' => '(:all)/files/(:any)', 'pattern' => $pattern . '/files/(:any)',
'method' => 'GET', 'method' => 'GET',
'action' => function (string $path, string $filename) { 'action' => function (string $path, string $filename) {
return $this->file($path, $filename); return $this->file($path, $filename);
} }
], ],
[ [
'pattern' => '(:all)/files/(:any)', 'pattern' => $pattern . '/files/(:any)',
'method' => 'PATCH', 'method' => 'PATCH',
'action' => function (string $path, string $filename) { 'action' => function (string $path, string $filename) {
return $this->file($path, $filename)->update($this->requestBody(), $this->language(), true); return $this->file($path, $filename)->update($this->requestBody(), $this->language(), true);
} }
], ],
[ [
'pattern' => '(:all)/files/(:any)', 'pattern' => $pattern . '/files/(:any)',
'method' => 'POST', 'method' => 'POST',
'action' => function (string $path, string $filename) { 'action' => function (string $path, string $filename) {
return $this->upload(function ($source) use ($path, $filename) { return $this->upload(function ($source) use ($path, $filename) {
@@ -90,14 +99,14 @@ return [
} }
], ],
[ [
'pattern' => '(:all)/files/(:any)', 'pattern' => $pattern . '/files/(:any)',
'method' => 'DELETE', 'method' => 'DELETE',
'action' => function (string $path, string $filename) { 'action' => function (string $path, string $filename) {
return $this->file($path, $filename)->delete(); return $this->file($path, $filename)->delete();
} }
], ],
[ [
'pattern' => '(:all)/files/(:any)/name', 'pattern' => $pattern . '/files/(:any)/name',
'method' => 'PATCH', 'method' => 'PATCH',
'action' => function (string $path, string $filename) { 'action' => function (string $path, string $filename) {
return $this->file($path, $filename)->changeName($this->requestBody('name')); return $this->file($path, $filename)->changeName($this->requestBody('name'));

View File

@@ -1,6 +1,5 @@
<?php <?php
use Kirby\Exception\Exception;
/** /**
* Content Lock Routes * Content Lock Routes
@@ -9,7 +8,13 @@ return [
[ [
'pattern' => '(:all)/lock', 'pattern' => '(:all)/lock',
'method' => 'GET', 'method' => 'GET',
/**
* @deprecated 3.6.0
* @todo Remove in 3.7.0
*/
'action' => function (string $path) { 'action' => function (string $path) {
deprecated('The `GET (:all)/lock` API endpoint has been deprecated and will be removed in 3.7.0');
if ($lock = $this->parent($path)->lock()) { if ($lock = $this->parent($path)->lock()) {
return [ return [
'supported' => true, 'supported' => true,
@@ -30,11 +35,6 @@ return [
if ($lock = $this->parent($path)->lock()) { if ($lock = $this->parent($path)->lock()) {
return $lock->create(); return $lock->create();
} }
throw new Exception([
'key' => 'lock.notImplemented',
'httpCode' => 501
]);
} }
], ],
[ [
@@ -44,17 +44,19 @@ return [
if ($lock = $this->parent($path)->lock()) { if ($lock = $this->parent($path)->lock()) {
return $lock->remove(); return $lock->remove();
} }
throw new Exception([
'key' => 'lock.notImplemented',
'httpCode' => 501
]);
} }
], ],
[ [
'pattern' => '(:all)/unlock', 'pattern' => '(:all)/unlock',
'method' => 'GET', 'method' => 'GET',
/**
* @deprecated 3.6.0
* @todo Remove in 3.7.0
*/
'action' => function (string $path) { 'action' => function (string $path) {
deprecated('The `GET (:all)/unlock` API endpoint has been deprecated and will be removed in 3.7.0');
if ($lock = $this->parent($path)->lock()) { if ($lock = $this->parent($path)->lock()) {
return [ return [
'supported' => true, 'supported' => true,
@@ -75,11 +77,6 @@ return [
if ($lock = $this->parent($path)->lock()) { if ($lock = $this->parent($path)->lock()) {
return $lock->unlock(); return $lock->unlock();
} }
throw new Exception([
'key' => 'lock.notImplemented',
'httpCode' => 501
]);
} }
], ],
[ [
@@ -89,11 +86,6 @@ return [
if ($lock = $this->parent($path)->lock()) { if ($lock = $this->parent($path)->lock()) {
return $lock->resolve(); return $lock->resolve();
} }
throw new Exception([
'key' => 'lock.notImplemented',
'httpCode' => 501
]);
} }
], ],
]; ];

View File

@@ -38,12 +38,17 @@ return [
'pages/(:any)/blueprints', 'pages/(:any)/blueprints',
/** /**
* @deprecated * @deprecated
* @todo remove in 3.6.0 * @todo remove in 3.7.0
*/ */
'pages/(:any)/children/blueprints', 'pages/(:any)/children/blueprints',
], ],
'method' => 'GET', 'method' => 'GET',
'action' => function (string $id) { 'action' => function (string $id) {
// @codeCoverageIgnoreStart
if ($this->route->pattern() === 'pages/([a-zA-Z0-9\.\-_%= \+\@\(\)]+)/children/blueprints') {
deprecated('`GET pages/(:any)/children/blueprints` API endpoint has been deprecated and will be removed in 3.7.0. Use `GET pages/(:any)/blueprints` instead');
}
// @codeCoverageIgnoreEnd
return $this->page($id)->blueprints($this->requestQuery('section')); return $this->page($id)->blueprints($this->requestQuery('section'));
} }
], ],

View File

@@ -51,12 +51,17 @@ return [
'site/blueprints', 'site/blueprints',
/** /**
* @deprecated * @deprecated
* @todo remove in 3.6.0 * @todo remove in 3.7.0
*/ */
'site/children/blueprints', 'site/children/blueprints',
], ],
'method' => 'GET', 'method' => 'GET',
'action' => function () { 'action' => function () {
// @codeCoverageIgnoreStart
if ($this->route->pattern() === 'site/children/blueprints') {
deprecated('`GET site/children/blueprints` API endpoint has been deprecated and will be removed in 3.7.0. Use `GET site/blueprints` instead.');
}
// @codeCoverageIgnoreEnd
return $this->site()->blueprints($this->requestQuery('section')); return $this->site()->blueprints($this->requestQuery('section'));
} }
], ],

View File

@@ -1,12 +1,11 @@
<?php <?php
use Kirby\Toolkit\F; use Kirby\Filesystem\F;
/** /**
* User Routes * User Routes
*/ */
return [ return [
[ [
'pattern' => 'users', 'pattern' => 'users',
'method' => 'GET', 'method' => 'GET',
@@ -33,35 +32,51 @@ return [
} }
], ],
[ [
'pattern' => 'users/(:any)', 'pattern' => [
'(account)',
'users/(:any)',
],
'method' => 'GET', 'method' => 'GET',
'action' => function (string $id) { 'action' => function (string $id) {
return $this->user($id); return $this->user($id);
} }
], ],
[ [
'pattern' => 'users/(:any)', 'pattern' => [
'(account)',
'users/(:any)',
],
'method' => 'PATCH', 'method' => 'PATCH',
'action' => function (string $id) { 'action' => function (string $id) {
return $this->user($id)->update($this->requestBody(), $this->language(), true); return $this->user($id)->update($this->requestBody(), $this->language(), true);
} }
], ],
[ [
'pattern' => 'users/(:any)', 'pattern' => [
'(account)',
'users/(:any)',
],
'method' => 'DELETE', 'method' => 'DELETE',
'action' => function (string $id) { 'action' => function (string $id) {
return $this->user($id)->delete(); return $this->user($id)->delete();
} }
], ],
[ [
'pattern' => 'users/(:any)/avatar', 'pattern' => [
'(account)/avatar',
'users/(:any)/avatar',
],
'method' => 'GET', 'method' => 'GET',
'action' => function (string $id) { 'action' => function (string $id) {
return $this->user($id)->avatar(); return $this->user($id)->avatar();
} }
], ],
// @codeCoverageIgnoreStart
[ [
'pattern' => 'users/(:any)/avatar', 'pattern' => [
'(account)/avatar',
'users/(:any)/avatar',
],
'method' => 'POST', 'method' => 'POST',
'action' => function (string $id) { 'action' => function (string $id) {
if ($avatar = $this->user($id)->avatar()) { if ($avatar = $this->user($id)->avatar()) {
@@ -77,79 +92,101 @@ return [
}, $single = true); }, $single = true);
} }
], ],
// @codeCoverageIgnoreEnd
[ [
'pattern' => 'users/(:any)/avatar', 'pattern' => [
'(account)/avatar',
'users/(:any)/avatar',
],
'method' => 'DELETE', 'method' => 'DELETE',
'action' => function (string $id) { 'action' => function (string $id) {
return $this->user($id)->avatar()->delete(); return $this->user($id)->avatar()->delete();
} }
], ],
[ [
'pattern' => 'users/(:any)/blueprint', 'pattern' => [
'(account)/blueprint',
'users/(:any)/blueprint',
],
'method' => 'GET', 'method' => 'GET',
'action' => function (string $id) { 'action' => function (string $id) {
return $this->user($id)->blueprint(); return $this->user($id)->blueprint();
} }
], ],
[ [
'pattern' => 'users/(:any)/blueprints', 'pattern' => [
'(account)/blueprints',
'users/(:any)/blueprints',
],
'method' => 'GET', 'method' => 'GET',
'action' => function (string $id) { 'action' => function (string $id) {
return $this->user($id)->blueprints($this->requestQuery('section')); return $this->user($id)->blueprints($this->requestQuery('section'));
} }
], ],
[ [
'pattern' => 'users/(:any)/email', 'pattern' => [
'(account)/email',
'users/(:any)/email',
],
'method' => 'PATCH', 'method' => 'PATCH',
'action' => function (string $id) { 'action' => function (string $id) {
return $this->user($id)->changeEmail($this->requestBody('email')); return $this->user($id)->changeEmail($this->requestBody('email'));
} }
], ],
[ [
'pattern' => 'users/(:any)/fields/(:any)/(:all?)', 'pattern' => [
'method' => 'ALL', '(account)/language',
'action' => function (string $id, string $fieldName, string $path = null) { 'users/(:any)/language',
if ($user = $this->user($id)) {
return $this->fieldApi($user, $fieldName, $path);
}
}
], ],
[
'pattern' => 'users/(:any)/language',
'method' => 'PATCH', 'method' => 'PATCH',
'action' => function (string $id) { 'action' => function (string $id) {
return $this->user($id)->changeLanguage($this->requestBody('language')); return $this->user($id)->changeLanguage($this->requestBody('language'));
} }
], ],
[ [
'pattern' => 'users/(:any)/name', 'pattern' => [
'(account)/name',
'users/(:any)/name',
],
'method' => 'PATCH', 'method' => 'PATCH',
'action' => function (string $id) { 'action' => function (string $id) {
return $this->user($id)->changeName($this->requestBody('name')); return $this->user($id)->changeName($this->requestBody('name'));
} }
], ],
[ [
'pattern' => 'users/(:any)/password', 'pattern' => [
'(account)/password',
'users/(:any)/password',
],
'method' => 'PATCH', 'method' => 'PATCH',
'action' => function (string $id) { 'action' => function (string $id) {
return $this->user($id)->changePassword($this->requestBody('password')); return $this->user($id)->changePassword($this->requestBody('password'));
} }
], ],
[ [
'pattern' => 'users/(:any)/role', 'pattern' => [
'(account)/role',
'users/(:any)/role',
],
'method' => 'PATCH', 'method' => 'PATCH',
'action' => function (string $id) { 'action' => function (string $id) {
return $this->user($id)->changeRole($this->requestBody('role')); return $this->user($id)->changeRole($this->requestBody('role'));
} }
], ],
[ [
'pattern' => 'users/(:any)/roles', 'pattern' => [
'(account)/roles',
'users/(:any)/roles',
],
'action' => function (string $id) { 'action' => function (string $id) {
return $this->user($id)->roles(); return $this->user($id)->roles();
} }
], ],
[ [
'pattern' => 'users/(:any)/sections/(:any)', 'pattern' => [
'(account)/sections/(:any)',
'users/(:any)/sections/(:any)',
],
'method' => 'GET', 'method' => 'GET',
'action' => function (string $id, string $sectionName) { 'action' => function (string $id, string $sectionName) {
if ($section = $this->user($id)->blueprint()->section($sectionName)) { if ($section = $this->user($id)->blueprint()->section($sectionName)) {
@@ -157,4 +194,14 @@ return [
} }
} }
], ],
[
'pattern' => [
'(account)/fields/(:any)/(:all?)',
'users/(:any)/fields/(:any)/(:all?)',
],
'method' => 'ALL',
'action' => function (string $id, string $fieldName, string $path = null) {
return $this->fieldApi($this->user($id), $fieldName, $path);
}
],
]; ];

12
kirby/config/areas/account.php Executable file
View File

@@ -0,0 +1,12 @@
<?php
return function () {
return [
'icon' => 'account',
'label' => t('view.account'),
'search' => 'users',
'dialogs' => require __DIR__ . '/account/dialogs.php',
'dropdowns' => require __DIR__ . '/account/dropdowns.php',
'views' => require __DIR__ . '/account/views.php'
];
};

View File

@@ -0,0 +1,70 @@
<?php
$dialogs = require __DIR__ . '/../users/dialogs.php';
return [
// change email
'account.changeEmail' => [
'pattern' => '(account)/changeEmail',
'load' => $dialogs['user.changeEmail']['load'],
'submit' => $dialogs['user.changeEmail']['submit'],
],
// change language
'account.changeLanguage' => [
'pattern' => '(account)/changeLanguage',
'load' => $dialogs['user.changeLanguage']['load'],
'submit' => $dialogs['user.changeLanguage']['submit'],
],
// change name
'account.changeName' => [
'pattern' => '(account)/changeName',
'load' => $dialogs['user.changeName']['load'],
'submit' => $dialogs['user.changeName']['submit'],
],
// change password
'account.changePassword' => [
'pattern' => '(account)/changePassword',
'load' => $dialogs['user.changePassword']['load'],
'submit' => $dialogs['user.changePassword']['submit'],
],
// change role
'account.changeRole' => [
'pattern' => '(account)/changeRole',
'load' => $dialogs['user.changeRole']['load'],
'submit' => $dialogs['user.changeRole']['submit'],
],
// delete
'account.delete' => [
'pattern' => '(account)/delete',
'load' => $dialogs['user.delete']['load'],
'submit' => $dialogs['user.delete']['submit'],
],
// change file name
'account.file.changeName' => [
'pattern' => '(account)/files/(:any)/changeName',
'load' => $dialogs['user.file.changeName']['load'],
'submit' => $dialogs['user.file.changeName']['submit'],
],
// change file sort
'account.file.changeSort' => [
'pattern' => '(account)/files/(:any)/changeSort',
'load' => $dialogs['user.file.changeSort']['load'],
'submit' => $dialogs['user.file.changeSort']['submit'],
],
// delete
'account.file.delete' => [
'pattern' => '(account)/files/(:any)/delete',
'load' => $dialogs['user.file.delete']['load'],
'submit' => $dialogs['user.file.delete']['submit'],
],
];

View File

@@ -0,0 +1,14 @@
<?php
$dropdowns = require __DIR__ . '/../users/dropdowns.php';
return [
'account' => [
'pattern' => '(account)',
'options' => $dropdowns['user']['options']
],
'account.file' => [
'pattern' => '(account)/files/(:any)',
'options' => $dropdowns['user.file']['options']
],
];

View File

@@ -0,0 +1,40 @@
<?php
use Kirby\Cms\Find;
use Kirby\Panel\Panel;
return [
'account' => [
'pattern' => 'account',
'action' => function () {
return [
'component' => 'k-account-view',
'props' => kirby()->user()->panel()->props(),
];
},
],
'account.file' => [
'pattern' => 'account/files/(:any)',
'action' => function (string $filename) {
return Find::file('account', $filename)->panel()->view();
}
],
'account.logout' => [
'pattern' => 'logout',
'auth' => false,
'action' => function () {
if ($user = kirby()->user()) {
$user->logout();
}
Panel::go('login');
},
],
'account.password' => [
'pattern' => 'reset-password',
'action' => function () {
return [
'component' => 'k-reset-password-view',
];
}
]
];

View File

@@ -0,0 +1,131 @@
<?php
use Kirby\Cms\Find;
use Kirby\Panel\Field;
use Kirby\Panel\Panel;
use Kirby\Toolkit\Escape;
/**
* Shared file dialogs
* They are included in the site and
* users area to create dialogs there.
* The array keys are replaced by
* the appropriate routes in the areas.
*/
return [
'changeName' => [
'load' => function (string $path, string $filename) {
$file = Find::file($path, $filename);
return [
'component' => 'k-form-dialog',
'props' => [
'fields' => [
'name' => [
'label' => t('name'),
'type' => 'slug',
'required' => true,
'icon' => 'title',
'allow' => '@._-',
'after' => '.' . $file->extension(),
'preselect' => true
]
],
'submitButton' => t('rename'),
'value' => [
'name' => $file->name(),
]
]
];
},
'submit' => function (string $path, string $filename) {
$file = Find::file($path, $filename);
$renamed = $file->changeName(get('name'));
$oldUrl = $file->panel()->url(true);
$newUrl = $renamed->panel()->url(true);
$response = [
'event' => 'file.changeName',
'dispatch' => [
'content/move' => [
$oldUrl,
$newUrl
]
],
];
// check for a necessary redirect after the filename has changed
if (Panel::referrer() === $oldUrl && $oldUrl !== $newUrl) {
$response['redirect'] = $newUrl;
}
return $response;
}
],
'changeSort' => [
'load' => function (string $path, string $filename) {
$file = Find::file($path, $filename);
return [
'component' => 'k-form-dialog',
'props' => [
'fields' => [
'position' => Field::filePosition($file)
],
'submitButton' => t('change'),
'value' => [
'position' => $file->sort()->isEmpty() ? $file->siblings(false)->count() + 1 : $file->sort()->toInt(),
]
]
];
},
'submit' => function (string $path, string $filename) {
$file = Find::file($path, $filename);
$files = $file->siblings()->sorted();
$ids = $files->keys();
$newIndex = (int)(get('position')) - 1;
$oldIndex = $files->indexOf($file);
array_splice($ids, $oldIndex, 1);
array_splice($ids, $newIndex, 0, $file->id());
$files->changeSort($ids);
return [
'event' => 'file.sort',
];
}
],
'delete' => [
'load' => function (string $path, string $filename) {
$file = Find::file($path, $filename);
return [
'component' => 'k-remove-dialog',
'props' => [
'text' => tt('file.delete.confirm', [
'filename' => Escape::html($file->filename())
]),
]
];
},
'submit' => function (string $path, string $filename) {
$file = Find::file($path, $filename);
$redirect = false;
$referrer = Panel::referrer();
$url = $file->panel()->url(true);
$file->delete();
// redirect to the parent model URL
// if the dialog has been opened in the file view
if ($referrer === $url) {
$redirect = $file->parent()->panel()->url(true);
}
return [
'event' => 'file.delete',
'dispatch' => ['content/remove' => [$url]],
'redirect' => $redirect
];
}
],
];

View File

@@ -0,0 +1,9 @@
<?php
use Kirby\Cms\Find;
return [
'file' => function (string $parent, string $filename) {
return Find::file($parent, $filename)->panel()->dropdown();
}
];

View File

@@ -0,0 +1,41 @@
<?php
use Kirby\Panel\Panel;
return function ($kirby) {
return [
'icon' => 'settings',
'label' => t('view.installation'),
'views' => [
'installation' => [
'pattern' => 'installation',
'auth' => false,
'action' => function () use ($kirby) {
$system = $kirby->system();
return [
'component' => 'k-installation-view',
'props' => [
'isInstallable' => $system->isInstallable(),
'isInstalled' => $system->isInstalled(),
'isOk' => $system->isOk(),
'requirements' => $system->status(),
'translations' => $kirby->translations()->values(function ($translation) {
return [
'text' => $translation->name(),
'value' => $translation->code(),
];
}),
]
];
}
],
'installation.fallback' => [
'pattern' => '(:all)',
'auth' => false,
'action' => function () {
Panel::go('installation');
}
]
]
];
};

View File

@@ -0,0 +1,11 @@
<?php
return function ($kirby) {
return [
'icon' => 'globe',
'label' => t('view.languages'),
'menu' => true,
'dialogs' => require __DIR__ . '/languages/dialogs.php',
'views' => require __DIR__ . '/languages/views.php'
];
};

View File

@@ -0,0 +1,149 @@
<?php
use Kirby\Cms\Find;
use Kirby\Panel\Field;
use Kirby\Toolkit\A;
use Kirby\Toolkit\Escape;
$languageDialogFields = [
'name' => [
'label' => t('language.name'),
'type' => 'text',
'required' => true,
'icon' => 'title'
],
'code' => [
'label' => t('language.code'),
'type' => 'text',
'required' => true,
'counter' => false,
'icon' => 'globe',
'width' => '1/2'
],
'direction' => [
'label' => t('language.direction'),
'type' => 'select',
'required' => true,
'empty' => false,
'options' => [
['value' => 'ltr', 'text' => t('language.direction.ltr')],
['value' => 'rtl', 'text' => t('language.direction.rtl')]
],
'width' => '1/2'
],
'locale' => [
'label' => t('language.locale'),
'type' => 'text',
],
];
return [
// create language
'language.create' => [
'pattern' => 'languages/create',
'load' => function () use ($languageDialogFields) {
return [
'component' => 'k-language-dialog',
'props' => [
'fields' => $languageDialogFields,
'submitButton' => t('language.create'),
'value' => [
'code' => '',
'direction' => 'ltr',
'locale' => '',
'name' => '',
]
]
];
},
'submit' => function () {
kirby()->languages()->create([
'code' => get('code'),
'direction' => get('direction'),
'locale' => get('locale'),
'name' => get('name'),
]);
return [
'event' => 'language.create'
];
}
],
// delete language
'language.delete' => [
'pattern' => 'languages/(:any)/delete',
'load' => function (string $id) {
$language = Find::language($id);
return [
'component' => 'k-remove-dialog',
'props' => [
'text' => tt('language.delete.confirm', [
'name' => Escape::html($language->name())
])
]
];
},
'submit' => function (string $id) {
Find::language($id)->delete();
return [
'event' => 'language.delete',
];
}
],
// update language
'language.update' => [
'pattern' => 'languages/(:any)/update',
'load' => function (string $id) use ($languageDialogFields) {
$language = Find::language($id);
$fields = $languageDialogFields;
$locale = $language->locale();
// use the first locale key if there's only one
if (count($locale) === 1) {
$locale = A::first($locale);
}
// the code of an existing language cannot be changed
$fields['code']['disabled'] = true;
// if the locale settings is more complex than just a
// single string, the text field won't do it anymore.
// Changes can only be made in the language file and
// we display a warning box instead.
if (is_array($locale) === true) {
$fields['locale'] = [
'label' => $fields['locale']['label'],
'type' => 'info',
'text' => t('language.locale.warning')
];
}
return [
'component' => 'k-language-dialog',
'props' => [
'fields' => $fields,
'submitButton' => t('save'),
'value' => [
'code' => $language->code(),
'direction' => $language->direction(),
'locale' => $locale,
'name' => $language->name(),
'rules' => $language->rules(),
]
]
];
},
'submit' => function (string $id) {
$language = Find::language($id)->update([
'direction' => get('direction'),
'locale' => get('locale'),
'name' => get('name'),
]);
return [
'event' => 'language.update'
];
}
],
];

View File

@@ -0,0 +1,26 @@
<?php
use Kirby\Toolkit\Escape;
return [
'languages' => [
'pattern' => 'languages',
'action' => function () {
$kirby = kirby();
return [
'component' => 'k-languages-view',
'props' => [
'languages' => $kirby->languages()->values(function ($language) {
return [
'default' => $language->isDefault(),
'id' => $language->code(),
'info' => Escape::html($language->code()),
'text' => Escape::html($language->name()),
];
})
]
];
}
],
];

43
kirby/config/areas/login.php Executable file
View File

@@ -0,0 +1,43 @@
<?php
use Kirby\Panel\Panel;
return function ($kirby) {
return [
'icon' => 'user',
'label' => t('login'),
'views' => [
'login' => [
'pattern' => 'login',
'auth' => false,
'action' => function () use ($kirby) {
$system = $kirby->system();
$status = $kirby->auth()->status();
return [
'component' => 'k-login-view',
'props' => [
'methods' => array_keys($system->loginMethods()),
'pending' => [
'email' => $status->email(),
'challenge' => $status->challenge()
]
],
];
}
],
'login.fallback' => [
'pattern' => '(:all)',
'auth' => false,
'action' => function ($path) use ($kirby) {
/**
* Store the current path in the session
* Once the user is logged in, the path will
* be used to redirect to that view again
*/
$kirby->session()->set('panel.path', $path);
Panel::go('login');
}
]
]
];
};

17
kirby/config/areas/site.php Executable file
View File

@@ -0,0 +1,17 @@
<?php
return function ($kirby) {
return [
'breadcrumbLabel' => function () use ($kirby) {
return $kirby->site()->title()->or(t('view.site'))->toString();
},
'icon' => 'home',
'label' => $kirby->site()->blueprint()->title() ?? t('view.site'),
'menu' => true,
'dialogs' => require __DIR__ . '/site/dialogs.php',
'dropdowns' => require __DIR__ . '/site/dropdowns.php',
'searches' => require __DIR__ . '/site/searches.php',
'views' => require __DIR__ . '/site/views.php',
];
};

View File

@@ -0,0 +1,547 @@
<?php
use Kirby\Cms\Find;
use Kirby\Exception\Exception;
use Kirby\Exception\InvalidArgumentException;
use Kirby\Exception\PermissionException;
use Kirby\Panel\Field;
use Kirby\Panel\Panel;
use Kirby\Toolkit\Str;
$files = require __DIR__ . '/../files/dialogs.php';
return [
// change page position
'page.changeSort' => [
'pattern' => 'pages/(:any)/changeSort',
'load' => function (string $id) {
$page = Find::page($id);
$position = null;
if ($page->blueprint()->num() !== 'default') {
throw new PermissionException([
'key' => 'page.sort.permission',
'data' => [
'slug' => $page->slug()
]
]);
}
return [
'component' => 'k-form-dialog',
'props' => [
'fields' => [
'position' => Field::pagePosition($page),
],
'submitButton' => t('change'),
'value' => [
'position' => $page->panel()->position()
]
]
];
},
'submit' => function (string $id) {
Find::page($id)->changeStatus('listed', get('position'));
return [
'event' => 'page.sort',
];
}
],
// change page status
'page.changeStatus' => [
'pattern' => 'pages/(:any)/changeStatus',
'load' => function (string $id) {
$page = Find::page($id);
$blueprint = $page->blueprint();
$status = $page->status();
$states = [];
$position = null;
foreach ($blueprint->status() as $key => $state) {
$states[] = [
'value' => $key,
'text' => $state['label'],
'info' => $state['text'],
];
}
if ($status === 'draft') {
$errors = $page->errors();
// switch to the error dialog if there are
// errors and the draft cannot be published
if (count($errors) > 0) {
return [
'component' => 'k-error-dialog',
'props' => [
'message' => t('error.page.changeStatus.incomplete'),
'details' => $errors,
]
];
}
}
$fields = [
'status' => [
'label' => t('page.changeStatus.select'),
'type' => 'radio',
'required' => true,
'options' => $states
]
];
if ($blueprint->num() === 'default') {
$fields['position'] = Field::pagePosition($page, [
'when' => [
'status' => 'listed'
]
]);
$position = $page->panel()->position();
}
return [
'component' => 'k-form-dialog',
'props' => [
'fields' => $fields,
'submitButton' => t('change'),
'value' => [
'status' => $status,
'position' => $position
]
]
];
},
'submit' => function (string $id) {
Find::page($id)->changeStatus(get('status'), get('position'));
return [
'event' => 'page.changeStatus',
];
}
],
// change template
'page.changeTemplate' => [
'pattern' => 'pages/(:any)/changeTemplate',
'load' => function (string $id) {
$page = Find::page($id);
$blueprints = $page->blueprints();
if (count($blueprints) <= 1) {
throw new Exception([
'key' => 'page.changeTemplate.invalid',
'data' => [
'slug' => $id
]
]);
}
return [
'component' => 'k-form-dialog',
'props' => [
'fields' => [
'template' => Field::template($blueprints, [
'required' => true
])
],
'submitButton' => t('change'),
'value' => [
'template' => $page->intendedTemplate()->name()
]
]
];
},
'submit' => function (string $id) {
Find::page($id)->changeTemplate(get('template'));
return [
'event' => 'page.changeTemplate',
];
}
],
// change title
'page.changeTitle' => [
'pattern' => 'pages/(:any)/changeTitle',
'load' => function (string $id) {
$page = Find::page($id);
$permissions = $page->permissions();
$select = get('select', 'title');
return [
'component' => 'k-form-dialog',
'props' => [
'fields' => [
'title' => Field::title([
'required' => true,
'preselect' => $select === 'title',
'disabled' => $permissions->can('changeTitle') === false
]),
'slug' => Field::slug([
'required' => true,
'preselect' => $select === 'slug',
'path' => $page->parent() ? '/' . $page->parent()->id() . '/' : '/',
'disabled' => $permissions->can('changeSlug') === false,
'wizard' => [
'text' => t('page.changeSlug.fromTitle'),
'field' => 'title'
]
])
],
'autofocus' => false,
'submitButton' => t('change'),
'value' => [
'title' => $page->title()->value(),
'slug' => $page->slug(),
]
]
];
},
'submit' => function (string $id) {
$page = Find::page($id);
$title = trim(get('title'));
$slug = trim(get('slug'));
// basic input validation before we move on
if (Str::length($title) === 0) {
throw new InvalidArgumentException(['key' => 'page.changeTitle.empty']);
}
if (Str::length($slug) === 0) {
throw new InvalidArgumentException(['key' => 'page.slug.invalid']);
}
// nothing changed
if ($page->title()->value() === $title && $page->slug() === $slug) {
return true;
}
// prepare the response
$response = [
'event' => []
];
// the page title changed
if ($page->title()->value() !== $title) {
$page->changeTitle($title);
$response['event'][] = 'page.changeTitle';
}
// the slug changed
if ($page->slug() !== $slug) {
$newPage = $page->changeSlug($slug);
$response['event'][] = 'page.changeSlug';
$response['dispatch'] = [
'content/move' => [
$oldUrl = $page->panel()->url(true),
$newUrl = $newPage->panel()->url(true)
]
];
// check for a necessary redirect after the slug has changed
if (Panel::referrer() === $oldUrl && $oldUrl !== $newUrl) {
$response['redirect'] = $newUrl;
}
}
return $response;
}
],
// create a new page
'page.create' => [
'pattern' => 'pages/create',
'load' => function () {
// the parent model for the new page
$parent = get('parent', 'site');
// the view on which the add button is located
// this is important to find the right section
// and provide the correct templates for the new page
$view = get('view', $parent);
// templates will be fetched depending on the
// section settings in the blueprint
$section = get('section');
// this is the parent model
$model = Find::parent($parent);
// this is the view model
// i.e. site if the add button is on
// the dashboard
$view = Find::parent($view);
// available blueprints/templates for the new page
// are always loaded depending on the matching section
// in the view model blueprint
$blueprints = $view->blueprints($section);
// the pre-selected template
$template = $blueprints[0]['name'] ?? $blueprints[0]['value'] ?? null;
$fields = [
'parent' => Field::hidden(),
'title' => Field::title([
'required' => true,
'preselect' => true
]),
'slug' => Field::slug([
'required' => true,
'sync' => 'title',
'path' => empty($model->id()) === false ? '/' . $model->id() . '/' : '/'
]),
'template' => Field::hidden()
];
// only show template field if > 1 templates available
// or when in debug mode
if (count($blueprints) > 1 || option('debug') === true) {
$fields['template'] = Field::template($blueprints, [
'required' => true
]);
}
return [
'component' => 'k-form-dialog',
'props' => [
'fields' => $fields,
'submitButton' => t('page.draft.create'),
'value' => [
'parent' => $parent,
'slug' => '',
'template' => $template,
'title' => '',
]
]
];
},
'submit' => function () {
$title = trim(get('title'));
if (Str::length($title) === 0) {
throw new InvalidArgumentException([
'key' => 'page.changeTitle.empty'
]);
}
$page = Find::parent(get('parent', 'site'))->createChild([
'content' => ['title' => $title],
'slug' => get('slug'),
'template' => get('template'),
]);
return [
'event' => 'page.create',
'redirect' => $page->panel()->url(true)
];
}
],
// delete page
'page.delete' => [
'pattern' => 'pages/(:any)/delete',
'load' => function (string $id) {
$page = Find::page($id);
$text = tt('page.delete.confirm', [
'title' => Escape::html($page->title()->value())
]);
if ($page->childrenAndDrafts()->count() > 0) {
return [
'component' => 'k-form-dialog',
'props' => [
'fields' => [
'info' => [
'type' => 'info',
'theme' => 'negative',
'text' => t('page.delete.confirm.subpages')
],
'check' => [
'label' => t('page.delete.confirm.title'),
'type' => 'text',
'counter' => false
]
],
'size' => 'medium',
'submitButton' => t('delete'),
'text' => $text,
'theme' => 'negative',
]
];
}
return [
'component' => 'k-remove-dialog',
'props' => [
'text' => $text
]
];
},
'submit' => function (string $id) {
$page = Find::page($id);
$redirect = false;
$referrer = Panel::referrer();
$url = $page->panel()->url(true);
if ($page->childrenAndDrafts()->count() > 0 && get('check') !== $page->title()->value()) {
throw new InvalidArgumentException(['key' => 'page.delete.confirm']);
}
$page->delete(true);
// redirect to the parent model URL
// if the dialog has been opened in the page view
if ($referrer === $url) {
$redirect = $page->parentModel()->panel()->url(true);
}
return [
'event' => 'page.delete',
'dispatch' => ['content/remove' => [$url]],
'redirect' => $redirect
];
}
],
// duplicate page
'page.duplicate' => [
'pattern' => 'pages/(:any)/duplicate',
'load' => function (string $id) {
$page = Find::page($id);
$hasChildren = $page->hasChildren();
$hasFiles = $page->hasFiles();
$toggleWidth = '1/' . count(array_filter([$hasChildren, $hasFiles]));
$fields = [
'title' => Field::title([
'required' => true
]),
'slug' => Field::slug([
'required' => true,
'path' => $page->parent() ? '/' . $page->parent()->id() . '/' : '/',
'wizard' => [
'text' => t('page.changeSlug.fromTitle'),
'field' => 'title'
]
])
];
if ($hasFiles === true) {
$fields['files'] = [
'label' => t('page.duplicate.files'),
'type' => 'toggle',
'required' => true,
'width' => $toggleWidth
];
}
if ($hasChildren === true) {
$fields['children'] = [
'label' => t('page.duplicate.pages'),
'type' => 'toggle',
'required' => true,
'width' => $toggleWidth
];
}
return [
'component' => 'k-form-dialog',
'props' => [
'fields' => $fields,
'submitButton' => t('duplicate'),
'value' => [
'children' => false,
'files' => false,
'slug' => $page->slug() . '-' . Str::slug(t('page.duplicate.appendix')),
'title' => $page->title() . ' ' . t('page.duplicate.appendix')
]
]
];
},
'submit' => function (string $id) {
$newPage = Find::page($id)->duplicate(get('slug'), [
'children' => (bool)get('children'),
'files' => (bool)get('files'),
'title' => (string)get('title'),
]);
return [
'event' => 'page.duplicate',
'redirect' => $newPage->panel()->url(true)
];
}
],
// change filename
'page.file.changeName' => [
'pattern' => '(pages/.*?)/files/(:any)/changeName',
'load' => $files['changeName']['load'],
'submit' => $files['changeName']['submit'],
],
// change sort
'page.file.changeSort' => [
'pattern' => '(pages/.*?)/files/(:any)/changeSort',
'load' => $files['changeSort']['load'],
'submit' => $files['changeSort']['submit'],
],
// delete
'page.file.delete' => [
'pattern' => '(pages/.*?)/files/(:any)/delete',
'load' => $files['delete']['load'],
'submit' => $files['delete']['submit'],
],
// change site title
'site.changeTitle' => [
'pattern' => 'site/changeTitle',
'load' => function () {
return [
'component' => 'k-form-dialog',
'props' => [
'fields' => [
'title' => Field::title([
'required' => true,
'preselect' => true
])
],
'submitButton' => t('rename'),
'value' => [
'title' => site()->title()->value()
]
]
];
},
'submit' => function () {
site()->changeTitle(get('title'));
return [
'event' => 'site.changeTitle',
];
}
],
// change filename
'site.file.changeName' => [
'pattern' => '(site)/files/(:any)/changeName',
'load' => $files['changeName']['load'],
'submit' => $files['changeName']['submit'],
],
// change sort
'site.file.changeSort' => [
'pattern' => '(site)/files/(:any)/changeSort',
'load' => $files['changeSort']['load'],
'submit' => $files['changeSort']['submit'],
],
// delete
'site.file.delete' => [
'pattern' => '(site)/files/(:any)/delete',
'load' => $files['delete']['load'],
'submit' => $files['delete']['submit'],
],
];

View File

@@ -0,0 +1,28 @@
<?php
use Kirby\Panel\Dropdown;
$files = require __DIR__ . '/../files/dropdowns.php';
return [
'changes' => [
'pattern' => 'changes',
'options' => function () {
return Dropdown::changes();
}
],
'page' => [
'pattern' => 'pages/(:any)',
'options' => function (string $path) {
return Find::page($path)->panel()->dropdown();
}
],
'page.file' => [
'pattern' => '(pages/.*?)/files/(:any)',
'options' => $files['file']
],
'site.file' => [
'pattern' => '(site)/files/(:any)',
'options' => $files['file']
]
];

View File

@@ -0,0 +1,55 @@
<?php
use Kirby\Toolkit\Escape;
return [
'pages' => [
'label' => t('pages'),
'icon' => 'page',
'query' => function (string $query = null) {
$pages = site()
->index(true)
->search($query)
->filter('isReadable', true)
->limit(10);
$results = [];
foreach ($pages as $page) {
$results[] = [
'image' => $page->panel()->image(),
'text' => Escape::html($page->title()->value()),
'link' => $page->panel()->url(true),
'info' => Escape::html($page->id())
];
}
return $results;
}
],
'files' => [
'label' => t('files'),
'icon' => 'image',
'query' => function (string $query = null) {
$files = site()
->index(true)
->filter('isReadable', true)
->files()
->search($query)
->limit(10);
$results = [];
foreach ($files as $file) {
$results[] = [
'image' => $file->panel()->image(),
'text' => Escape::html($file->filename()),
'link' => $file->panel()->url(true),
'info' => Escape::html($file->id())
];
}
return $results;
}
]
];

View File

@@ -0,0 +1,30 @@
<?php
use Kirby\Cms\Find;
return [
'page' => [
'pattern' => 'pages/(:any)',
'action' => function (string $path) {
return Find::page($path)->panel()->view();
}
],
'page.file' => [
'pattern' => 'pages/(:any)/files/(:any)',
'action' => function (string $id, string $filename) {
return Find::file('pages/' . $id, $filename)->panel()->view();
}
],
'site' => [
'pattern' => 'site',
'action' => function () {
return site()->panel()->view();
}
],
'site.file' => [
'pattern' => 'site/files/(:any)',
'action' => function (string $filename) {
return Find::file('site', $filename)->panel()->view();
}
],
];

11
kirby/config/areas/system.php Executable file
View File

@@ -0,0 +1,11 @@
<?php
return function ($kirby) {
return [
'icon' => 'settings',
'label' => t('view.system'),
'menu' => true,
'dialogs' => require __DIR__ . '/system/dialogs.php',
'views' => require __DIR__ . '/system/views.php'
];
};

View File

@@ -0,0 +1,43 @@
<?php
use Kirby\Panel\Field;
return [
// license registration
'registration' => [
'load' => function () {
return [
'component' => 'k-form-dialog',
'props' => [
'fields' => [
'license' => [
'label' => t('license.register.label'),
'type' => 'text',
'required' => true,
'counter' => false,
'placeholder' => 'K3-',
'help' => t('license.register.help')
],
'email' => Field::email([
'required' => true
])
],
'submitButton' => t('license.register'),
'value' => [
'license' => null,
'email' => null
]
]
];
},
'submit' => function () {
// @codeCoverageIgnoreStart
kirby()->system()->register(get('license'), get('email'));
return [
'event' => 'system.register',
'message' => t('license.register.success')
];
// @codeCoverageIgnoreEnd
}
],
];

View File

@@ -0,0 +1,46 @@
<?php
return [
'system' => [
'pattern' => 'system',
'action' => function () {
$kirby = kirby();
$system = $kirby->system();
$license = $system->license();
// @codeCoverageIgnoreStart
if ($license === true) {
// valid license, but user is not admin
$license = 'Kirby 3';
} elseif ($license === false) {
// no valid license
$license = null;
}
// @codeCoverageIgnoreEnd
$plugins = $system->plugins()->values(function ($plugin) {
return [
'author' => $plugin->authorsNames(),
'license' => $plugin->license(),
'link' => $plugin->link(),
'name' => $plugin->name(),
'version' => $plugin->version(),
];
});
return [
'component' => 'k-system-view',
'props' => [
'debug' => $kirby->option('debug', false),
'license' => $license,
'plugins' => $plugins,
'php' => phpversion(),
'server' => $system->serverSoftware(),
'ssl' => Server::https(),
'version' => $kirby->version(),
]
];
}
],
];

14
kirby/config/areas/users.php Executable file
View File

@@ -0,0 +1,14 @@
<?php
return function ($kirby) {
return [
'icon' => 'users',
'label' => t('view.users'),
'search' => 'users',
'menu' => true,
'dialogs' => require __DIR__ . '/users/dialogs.php',
'dropdowns' => require __DIR__ . '/users/dropdowns.php',
'searches' => require __DIR__ . '/users/searches.php',
'views' => require __DIR__ . '/users/views.php'
];
};

View File

@@ -0,0 +1,295 @@
<?php
use Kirby\Cms\Find;
use Kirby\Cms\UserRules;
use Kirby\Exception\InvalidArgumentException;
use Kirby\Panel\Field;
use Kirby\Panel\Panel;
use Kirby\Toolkit\Escape;
$files = require __DIR__ . '/../files/dialogs.php';
return [
// create
'user.create' => [
'pattern' => 'users/create',
'load' => function () {
$kirby = kirby();
return [
'component' => 'k-form-dialog',
'props' => [
'fields' => [
'name' => Field::username(),
'email' => Field::email([
'link' => false,
'required' => true
]),
'password' => Field::password(),
'language' => Field::translation([
'required' => true
]),
'role' => Field::role([
'required' => true
])
],
'submitButton' => t('create'),
'value' => [
'name' => '',
'email' => '',
'password' => '',
'language' => $kirby->panelLanguage(),
'role' => $kirby->user()->role()->name()
]
]
];
},
'submit' => function () {
kirby()->users()->create([
'name' => get('name'),
'email' => get('email'),
'password' => get('password'),
'language' => get('language'),
'role' => get('role')
]);
return [
'event' => 'user.create'
];
}
],
// change email
'user.changeEmail' => [
'pattern' => 'users/(:any)/changeEmail',
'load' => function (string $id) {
$user = Find::user($id);
return [
'component' => 'k-form-dialog',
'props' => [
'fields' => [
'email' => [
'label' => t('email'),
'required' => true,
'type' => 'email',
'preselect' => true
]
],
'submitButton' => t('change'),
'value' => [
'email' => $user->email()
]
]
];
},
'submit' => function (string $id) {
Find::user($id)->changeEmail(get('email'));
return [
'event' => 'user.changeEmail'
];
}
],
// change language
'user.changeLanguage' => [
'pattern' => 'users/(:any)/changeLanguage',
'load' => function (string $id) {
$user = Find::user($id);
return [
'component' => 'k-form-dialog',
'props' => [
'fields' => [
'translation' => Field::translation(['required' => true])
],
'submitButton' => t('change'),
'value' => [
'translation' => $user->language()
]
]
];
},
'submit' => function (string $id) {
Find::user($id)->changeLanguage(get('translation'));
return [
'event' => 'user.changeLanguage',
'reload' => [
'globals' => '$translation'
]
];
}
],
// change name
'user.changeName' => [
'pattern' => 'users/(:any)/changeName',
'load' => function (string $id) {
$user = Find::user($id);
return [
'component' => 'k-form-dialog',
'props' => [
'fields' => [
'name' => Field::username([
'preselect' => true
])
],
'submitButton' => t('rename'),
'value' => [
'name' => $user->name()->value()
]
]
];
},
'submit' => function (string $id) {
Find::user($id)->changeName(get('name'));
return [
'event' => 'user.changeName'
];
}
],
// change password
'user.changePassword' => [
'pattern' => 'users/(:any)/changePassword',
'load' => function (string $id) {
$user = Find::user($id);
return [
'component' => 'k-form-dialog',
'props' => [
'fields' => [
'password' => Field::password([
'label' => t('user.changePassword.new'),
]),
'passwordConfirmation' => Field::password([
'label' => t('user.changePassword.new.confirm'),
])
],
'submitButton' => t('change'),
]
];
},
'submit' => function (string $id) {
$user = Find::user($id);
$password = get('password');
$passwordConfirmation = get('passwordConfirmation');
// validate the password
UserRules::validPassword($user, $password ?? '');
// compare passwords
if ($password !== $passwordConfirmation) {
throw new InvalidArgumentException([
'key' => 'user.password.notSame'
]);
}
// change password if everything's fine
$user->changePassword($password);
return [
'event' => 'user.changePassword'
];
}
],
// change role
'user.changeRole' => [
'pattern' => 'users/(:any)/changeRole',
'load' => function (string $id) {
$user = Find::user($id);
return [
'component' => 'k-form-dialog',
'props' => [
'fields' => [
'role' => Field::role([
'label' => t('user.changeRole.select'),
'required' => true,
])
],
'submitButton' => t('user.changeRole'),
'value' => [
'role' => $user->role()->name()
]
]
];
},
'submit' => function (string $id) {
$user = Find::user($id)->changeRole(get('role'));
return [
'event' => 'user.changeRole',
'user' => $user->toArray()
];
}
],
// delete
'user.delete' => [
'pattern' => 'users/(:any)/delete',
'load' => function (string $id) {
$user = Find::user($id);
$i18nPrefix = $user->isLoggedIn() ? 'account' : 'user';
return [
'component' => 'k-remove-dialog',
'props' => [
'text' => tt($i18nPrefix . '.delete.confirm', [
'email' => Escape::html($user->email())
])
]
];
},
'submit' => function (string $id) {
$user = Find::user($id);
$redirect = false;
$referrer = Panel::referrer();
$url = $user->panel()->url(true);
$user->delete();
// redirect to the users view
// if the dialog has been opened in the user view
if ($referrer === $url) {
$redirect = '/users';
}
// logout the user if they deleted themselves
if ($user->isLoggedIn()) {
$redirect = '/logout';
}
return [
'event' => 'user.delete',
'dispatch' => ['content/remove' => [$url]],
'redirect' => $redirect
];
}
],
// change file name
'user.file.changeName' => [
'pattern' => '(users/.*?)/files/(:any)/changeName',
'load' => $files['changeName']['load'],
'submit' => $files['changeName']['submit'],
],
// change file sort
'user.file.changeSort' => [
'pattern' => '(users/.*?)/files/(:any)/changeSort',
'load' => $files['changeSort']['load'],
'submit' => $files['changeSort']['submit'],
],
// delete file
'user.file.delete' => [
'pattern' => '(users/.*?)/files/(:any)/delete',
'load' => $files['delete']['load'],
'submit' => $files['delete']['submit'],
]
];

View File

@@ -0,0 +1,18 @@
<?php
use Kirby\Cms\Find;
$files = require __DIR__ . '/../files/dropdowns.php';
return [
'user' => [
'pattern' => 'users/(:any)',
'options' => function (string $id) {
return Find::user($id)->panel()->dropdown();
}
],
'user.file' => [
'pattern' => '(users/.*?)/files/(:any)',
'options' => $files['file']
]
];

View File

@@ -0,0 +1,25 @@
<?php
use Kirby\Toolkit\Escape;
return [
'users' => [
'label' => t('users'),
'icon' => 'users',
'query' => function (string $query = null) {
$users = kirby()->users()->search($query)->limit(10);
$results = [];
foreach ($users as $user) {
$results[] = [
'image' => $user->panel()->image(),
'text' => Escape::html($user->username()),
'link' => $user->panel()->url(true),
'info' => Escape::html($user->role()->title())
];
}
return $results;
}
]
];

View File

@@ -0,0 +1,69 @@
<?php
use Kirby\Cms\Find;
use Kirby\Toolkit\Escape;
return [
'users' => [
'pattern' => 'users',
'action' => function () {
$kirby = kirby();
$role = get('role');
$roles = $kirby->roles()->toArray(function ($role) {
return [
'id' => $role->id(),
'title' => $role->title(),
];
});
return [
'component' => 'k-users-view',
'props' => [
'role' => function () use ($kirby, $roles, $role) {
if ($role) {
return $roles[$role] ?? null;
}
},
'roles' => array_values($roles),
'users' => function () use ($kirby, $role) {
$users = $kirby->users();
if (empty($role) === false) {
$users = $users->role($role);
}
$users = $users->paginate([
'limit' => 20,
'page' => get('page')
]);
return [
'data' => $users->values(function ($user) {
return [
'id' => $user->id(),
'image' => $user->panel()->image(),
'info' => Escape::html($user->role()->title()),
'link' => $user->panel()->url(true),
'text' => Escape::html($user->username())
];
}),
'pagination' => $users->pagination()->toArray()
];
},
]
];
}
],
'user' => [
'pattern' => 'users/(:any)',
'action' => function (string $id) {
return Find::user($id)->panel()->view();
}
],
'user.file' => [
'pattern' => 'users/(:any)/files/(:any)',
'action' => function (string $id, string $filename) {
return Find::file('users/' . $id, $filename)->panel()->view();
}
],
];

View File

@@ -0,0 +1 @@
<hr />

View File

@@ -0,0 +1,4 @@
name: field.blocks.line.name
icon: divider
preview: line
wysiwyg: true

View File

@@ -1,7 +1,7 @@
<?php /** @var \Kirby\Cms\Block $block */ ?> <?php /** @var \Kirby\Cms\Block $block */ ?>
<?php if ($block->url()->isNotEmpty()): ?> <?php if ($video = video($block->url())): ?>
<figure> <figure>
<?= video($block->url()) ?> <?= $video ?>
<?php if ($block->caption()->isNotEmpty()): ?> <?php if ($block->caption()->isNotEmpty()): ?>
<figcaption><?= $block->caption() ?></figcaption> <figcaption><?= $block->caption() ?></figcaption>
<?php endif ?> <?php endif ?>

View File

@@ -1,26 +0,0 @@
<?php
$blocksRoot = __DIR__ . '/blocks';
return [
// blocks
'blocks/code' => $blocksRoot . '/code/code.yml',
'blocks/gallery' => $blocksRoot . '/gallery/gallery.yml',
'blocks/heading' => $blocksRoot . '/heading/heading.yml',
'blocks/image' => $blocksRoot . '/image/image.yml',
'blocks/list' => $blocksRoot . '/list/list.yml',
'blocks/markdown' => $blocksRoot . '/markdown/markdown.yml',
'blocks/quote' => $blocksRoot . '/quote/quote.yml',
'blocks/table' => $blocksRoot . '/table/table.yml',
'blocks/text' => $blocksRoot . '/text/text.yml',
'blocks/video' => $blocksRoot . '/video/video.yml',
// file blueprints
'files/default' => __DIR__ . '/blueprints/files/default.yml',
// page blueprints
'pages/default' => __DIR__ . '/blueprints/pages/default.yml',
// site blueprints
'site' => __DIR__ . '/blueprints/site.yml'
];

View File

@@ -5,7 +5,6 @@ fields:
level: level:
type: select type: select
width: 1/2 width: 1/2
default: 1
empty: false empty: false
default: "2" default: "2"
options: options:

View File

@@ -3,10 +3,12 @@
use Kirby\Cms\App; use Kirby\Cms\App;
use Kirby\Cms\Collection; use Kirby\Cms\Collection;
use Kirby\Cms\File; use Kirby\Cms\File;
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\Email\PHPMailer as Emailer;
use Kirby\Filesystem\F;
use Kirby\Filesystem\Filename;
use Kirby\Http\Server; use Kirby\Http\Server;
use Kirby\Http\Uri; use Kirby\Http\Uri;
use Kirby\Http\Url; use Kirby\Http\Url;
@@ -14,7 +16,6 @@ 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\Str; use Kirby\Toolkit\Str;
use Kirby\Toolkit\Tpl as Snippet; use Kirby\Toolkit\Tpl as Snippet;
@@ -55,6 +56,17 @@ return [
return $output; return $output;
}, },
/**
* Add your own email provider
*
* @param \Kirby\Cms\App $kirby Kirby instance
* @param array $props
* @param bool $debug
*/
'email' => function (App $kirby, array $props = [], bool $debug = false) {
return new Emailer($props, $debug);
},
/** /**
* Modify URLs for file objects * Modify URLs for file objects
* *
@@ -70,7 +82,7 @@ return [
* Adapt file characteristics * Adapt file characteristics
* *
* @param \Kirby\Cms\App $kirby Kirby instance * @param \Kirby\Cms\App $kirby Kirby instance
* @param \Kirby\Cms\File|\Kirby\Cms\FileModifications $file The file object * @param \Kirby\Cms\File|\Kirby\Filesystem\Asset $file The file object
* @param array $options All thumb options (width, height, crop, blur, grayscale) * @param array $options All thumb options (width, height, crop, blur, grayscale)
* @return \Kirby\Cms\File|\Kirby\Cms\FileVersion * @return \Kirby\Cms\File|\Kirby\Cms\FileVersion
*/ */
@@ -233,7 +245,7 @@ return [
} }
} }
return $item->searchHits > 0 ? true : false; return $item->searchHits > 0;
}); });
return $results->sort('searchScore', 'desc'); return $results->sort('searchScore', 'desc');
@@ -305,15 +317,18 @@ return [
* Add your own thumb generator * Add your own thumb generator
* *
* @param \Kirby\Cms\App $kirby Kirby instance * @param \Kirby\Cms\App $kirby Kirby instance
* @param string $src The root of the original file * @param string $src Root of the original file
* @param string $template The template for the root to the desired destination * @param string $dst Template string for the root to the desired destination
* @param array $options All thumb options that should be applied: `width`, `height`, `crop`, `blur`, `grayscale` * @param array $options All thumb options that should be applied: `width`, `height`, `crop`, `blur`, `grayscale`
* @return string * @return string
*/ */
'thumb' => function (App $kirby, string $src, string $template, array $options): string { 'thumb' => function (App $kirby, string $src, string $dst, array $options): string {
$darkroom = Darkroom::factory(option('thumbs.driver', 'gd'), option('thumbs', [])); $darkroom = Darkroom::factory(
option('thumbs.driver', 'gd'),
option('thumbs', [])
);
$options = $darkroom->preprocess($src, $options); $options = $darkroom->preprocess($src, $options);
$root = (new Filename($src, $template, $options))->toString(); $root = (new Filename($src, $dst, $options))->toString();
F::copy($src, $root, true); F::copy($src, $root, true);
$darkroom->process($root, $options); $darkroom->process($root, $options);
@@ -327,13 +342,9 @@ 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|string|null $options Array of options for the Uri class * @param array|string|null $options Array of options for the Uri class
* @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
*
* @todo Remove $originalHandler parameter in 3.6.0
*/ */
'url' => function (App $kirby, string $path = null, $options = null, Closure $originalHandler = null): string { 'url' => function (App $kirby, string $path = null, $options = null): string {
$language = null; $language = null;
// get language from simple string option // get language from simple string option

View File

@@ -1,32 +0,0 @@
<?php
return [
'blocks' => 'Kirby\Form\Field\BlocksField',
'checkboxes' => __DIR__ . '/fields/checkboxes.php',
'date' => __DIR__ . '/fields/date.php',
'email' => __DIR__ . '/fields/email.php',
'files' => __DIR__ . '/fields/files.php',
'gap' => __DIR__ . '/fields/gap.php',
'headline' => __DIR__ . '/fields/headline.php',
'hidden' => __DIR__ . '/fields/hidden.php',
'info' => __DIR__ . '/fields/info.php',
'layout' => 'Kirby\Form\Field\LayoutField',
'line' => __DIR__ . '/fields/line.php',
'list' => __DIR__ . '/fields/list.php',
'multiselect' => __DIR__ . '/fields/multiselect.php',
'number' => __DIR__ . '/fields/number.php',
'pages' => __DIR__ . '/fields/pages.php',
'radio' => __DIR__ . '/fields/radio.php',
'range' => __DIR__ . '/fields/range.php',
'select' => __DIR__ . '/fields/select.php',
'structure' => __DIR__ . '/fields/structure.php',
'tags' => __DIR__ . '/fields/tags.php',
'tel' => __DIR__ . '/fields/tel.php',
'text' => __DIR__ . '/fields/text.php',
'textarea' => __DIR__ . '/fields/textarea.php',
'time' => __DIR__ . '/fields/time.php',
'toggle' => __DIR__ . '/fields/toggle.php',
'url' => __DIR__ . '/fields/url.php',
'users' => __DIR__ . '/fields/users.php',
'writer' => __DIR__ . '/fields/writer.php'
];

View File

@@ -5,9 +5,10 @@ use Kirby\Toolkit\A;
return [ return [
'mixins' => [ 'mixins' => [
'picker',
'filepicker', 'filepicker',
'layout',
'min', 'min',
'picker',
'upload' 'upload'
], ],
'props' => [ 'props' => [
@@ -27,20 +28,6 @@ return [
return $default; return $default;
}, },
/**
* Changes the layout of the selected files. Available layouts: `list`, `cards`
*/
'layout' => function (string $layout = 'list') {
return $layout;
},
/**
* Layout size for cards: `tiny`, `small`, `medium`, `large` or `huge`
*/
'size' => function (string $size = 'auto') {
return $size;
},
'value' => function ($value = null) { 'value' => function ($value = null) {
return $value; return $value;
} }
@@ -68,9 +55,10 @@ return [
], ],
'methods' => [ 'methods' => [
'fileResponse' => function ($file) { 'fileResponse' => function ($file) {
return $file->panelPickerData([ return $file->panel()->pickerData([
'image' => $this->image, 'image' => $this->image,
'info' => $this->info ?? false, 'info' => $this->info ?? false,
'layout' => $this->layout,
'model' => $this->model(), 'model' => $this->model(),
'text' => $this->text, 'text' => $this->text,
]); ]);
@@ -101,6 +89,7 @@ return [
return $field->filepicker([ return $field->filepicker([
'image' => $field->image(), 'image' => $field->image(),
'info' => $field->info(), 'info' => $field->info(),
'layout' => $field->layout(),
'limit' => $field->limit(), 'limit' => $field->limit(),
'page' => $this->requestQuery('page'), 'page' => $this->requestQuery('page'),
'query' => $field->query(), 'query' => $field->query(),
@@ -116,14 +105,18 @@ return [
$field = $this->field(); $field = $this->field();
$uploads = $field->uploads(); $uploads = $field->uploads();
// move_uploaded_file() not working with unit test
// @codeCoverageIgnoreStart
return $field->upload($this, $uploads, function ($file, $parent) use ($field) { return $field->upload($this, $uploads, function ($file, $parent) use ($field) {
return $file->panelPickerData([ return $file->panel()->pickerData([
'image' => $field->image(), 'image' => $field->image(),
'info' => $field->info(), 'info' => $field->info(),
'layout' => $field->layout(),
'model' => $field->model(), 'model' => $field->model(),
'text' => $field->text(), 'text' => $field->text(),
]); ]);
}); });
// @codeCoverageIgnoreEnd
} }
] ]
]; ];

View File

@@ -34,7 +34,7 @@ return [
'computed' => [ 'computed' => [
'text' => function () { 'text' => function () {
if ($text = $this->text) { if ($text = $this->text) {
$text = $this->model()->toString($text); $text = $this->model()->toSafeString($text);
$text = $this->kirby()->kirbytext($text); $text = $this->kirby()->kirbytext($text);
return $text; return $text;
} }

View File

@@ -0,0 +1,21 @@
<?php
return [
'props' => [
/**
* Changes the layout of the selected entries.
* Available layouts: `list`, `cardlets`, `cards`
*/
'layout' => function (string $layout = 'list') {
$layouts = ['list', 'cardlets', 'cards'];
return in_array($layout, $layouts) ? $layout : 'list';
},
/**
* Layout size for cards: `tiny`, `small`, `medium`, `large` or `huge`
*/
'size' => function (string $size = 'auto') {
return $size;
},
]
];

View File

@@ -27,6 +27,7 @@ return [
if ($template) { if ($template) {
$file = new File([ $file = new File([
'filename' => 'tmp', 'filename' => 'tmp',
'parent' => $this->model(),
'template' => $template 'template' => $template
]); ]);

View File

@@ -4,7 +4,12 @@ use Kirby\Data\Data;
use Kirby\Toolkit\A; use Kirby\Toolkit\A;
return [ return [
'mixins' => ['min', 'pagepicker', 'picker'], 'mixins' => [
'layout',
'min',
'pagepicker',
'picker',
],
'props' => [ 'props' => [
/** /**
* Unset inherited props * Unset inherited props
@@ -22,13 +27,6 @@ return [
return $this->toPages($default); return $this->toPages($default);
}, },
/**
* Changes the layout of the selected files. Available layouts: `list`, `cards`
*/
'layout' => function (string $layout = 'list') {
return $layout;
},
/** /**
* Optional query to select a specific set of pages * Optional query to select a specific set of pages
*/ */
@@ -36,13 +34,6 @@ return [
return $query; return $query;
}, },
/**
* Layout size for cards: `tiny`, `small`, `medium`, `large` or `huge`
*/
'size' => function (string $size = 'auto') {
return $size;
},
/** /**
* Optionally include subpages of pages * Optionally include subpages of pages
*/ */
@@ -62,9 +53,10 @@ return [
], ],
'methods' => [ 'methods' => [
'pageResponse' => function ($page) { 'pageResponse' => function ($page) {
return $page->panelPickerData([ return $page->panel()->pickerData([
'image' => $this->image, 'image' => $this->image,
'info' => $this->info, 'info' => $this->info,
'layout' => $this->layout,
'text' => $this->text, 'text' => $this->text,
]); ]);
}, },
@@ -95,6 +87,7 @@ return [
return $field->pagepicker([ return $field->pagepicker([
'image' => $field->image(), 'image' => $field->image(),
'info' => $field->info(), 'info' => $field->info(),
'layout' => $field->layout(),
'limit' => $field->limit(), 'limit' => $field->limit(),
'page' => $this->requestQuery('page'), 'page' => $this->requestQuery('page'),
'parent' => $this->requestQuery('parent'), 'parent' => $this->requestQuery('parent'),

55
kirby/config/fields/slug.php Executable file
View File

@@ -0,0 +1,55 @@
<?php
return [
'extends' => 'text',
'props' => [
/**
* Unset inherited props
*/
'converter' => null,
'counter' => null,
'spellcheck' => null,
/**
* Set of characters allowed in the slug
*/
'allow' => function (string $allow = '') {
return $allow;
},
/**
* Changes the link icon
*/
'icon' => function (string $icon = 'url') {
return $icon;
},
/**
* Set prefix for the help text
*/
'path' => function (string $path = null) {
return $path;
},
/**
* Name of another field that should be used to
* automatically update this field's value
*/
'sync' => function (string $sync = null) {
return $sync;
},
/**
* Set to object with keys `field` and `text` to add
* button to generate from another field
*/
'wizard' => function ($wizard = false) {
return $wizard;
}
],
'validations' => [
'minlength',
'maxlength'
],
];

View File

@@ -1,7 +1,7 @@
<?php <?php
use Kirby\Cms\Form;
use Kirby\Data\Data; use Kirby\Data\Data;
use Kirby\Form\Form;
use Kirby\Toolkit\I18n; use Kirby\Toolkit\I18n;
return [ return [

View File

@@ -109,7 +109,7 @@ return [
return [ return [
'filename' => $file->filename(), 'filename' => $file->filename(),
'dragText' => $file->dragText('auto', $absolute), 'dragText' => $file->panel()->dragText('auto', $absolute),
]; ];
}); });
} }

View File

@@ -1,6 +1,7 @@
<?php <?php
use Kirby\Exception\InvalidArgumentException; use Kirby\Exception\InvalidArgumentException;
use Kirby\Toolkit\A;
use Kirby\Toolkit\I18n; use Kirby\Toolkit\I18n;
return [ return [
@@ -20,19 +21,25 @@ return [
* Sets the text next to the toggle. The text can be a string or an array of two options. The first one is the negative text and the second one the positive. The text will automatically switch when the toggle is triggered. * Sets the text next to the toggle. The text can be a string or an array of two options. The first one is the negative text and the second one the positive. The text will automatically switch when the toggle is triggered.
*/ */
'text' => function ($value = null) { 'text' => function ($value = null) {
$model = $this->model();
if (is_array($value) === true) { if (is_array($value) === true) {
if (A::isAssociative($value) === true) { if (A::isAssociative($value) === true) {
return I18n::translate($value, $value); return $model->toSafeString(I18n::translate($value, $value));
} }
foreach ($value as $key => $val) { foreach ($value as $key => $val) {
$value[$key] = I18n::translate($val, $val); $value[$key] = $model->toSafeString(I18n::translate($val, $val));
} }
return $value; return $value;
} }
return I18n::translate($value, $value); if (empty($value) === false) {
return $model->toSafeString(I18n::translate($value, $value));
}
return $value;
}, },
], ],
'computed' => [ 'computed' => [

View File

@@ -4,7 +4,12 @@ use Kirby\Data\Data;
use Kirby\Toolkit\A; use Kirby\Toolkit\A;
return [ return [
'mixins' => ['min', 'picker', 'userpicker'], 'mixins' => [
'layout',
'min',
'picker',
'userpicker'
],
'props' => [ 'props' => [
/** /**
* Unset inherited props * Unset inherited props
@@ -44,9 +49,10 @@ return [
], ],
'methods' => [ 'methods' => [
'userResponse' => function ($user) { 'userResponse' => function ($user) {
return $user->panelPickerData([ return $user->panel()->pickerData([
'info' => $this->info, 'info' => $this->info,
'image' => $this->image, 'image' => $this->image,
'layout' => $this->layout,
'text' => $this->text, 'text' => $this->text,
]); ]);
}, },
@@ -77,6 +83,7 @@ return [
return $field->userpicker([ return $field->userpicker([
'image' => $field->image(), 'image' => $field->image(),
'info' => $field->info(), 'info' => $field->info(),
'layout' => $field->layout(),
'limit' => $field->limit(), 'limit' => $field->limit(),
'page' => $this->requestQuery('page'), 'page' => $this->requestQuery('page'),
'query' => $field->query(), 'query' => $field->query(),

View File

@@ -1,6 +1,6 @@
<?php <?php
use Kirby\Sane\Html; use Kirby\Sane\Sane;
return [ return [
'props' => [ 'props' => [
@@ -13,14 +13,14 @@ return [
return $inline; return $inline;
}, },
/** /**
* Sets the allowed HTML formats. Available formats: `bold`, `italic`, `underline`, `strike`, `code`, `link`. Activate them all by passing `true`. Deactivate them all by passing `false` * Sets the allowed HTML formats. Available formats: `bold`, `italic`, `underline`, `strike`, `code`, `link`, `email`. Activate them all by passing `true`. Deactivate them all by passing `false`
* @param array|bool $marks * @param array|bool $marks
*/ */
'marks' => function ($marks = true) { 'marks' => function ($marks = true) {
return $marks; return $marks;
}, },
/** /**
* Sets the allowed nodes. Available nodes: `bulletList`, `orderedList`, `heading`, `horizontalRule`, `listItem`. Activate/deactivate them all by passing `true`/`false`. Default nodes are `heading`, `bulletList`, `orderedList`. * Sets the allowed nodes. Available nodes: `paragraph`, `heading`, `bulletList`, `orderedList`. Activate/deactivate them all by passing `true`/`false`. Default nodes are `paragraph`, `heading`, `bulletList`, `orderedList`.
* @param array|bool|null $nodes * @param array|bool|null $nodes
*/ */
'nodes' => function ($nodes = null) { 'nodes' => function ($nodes = null) {
@@ -29,7 +29,7 @@ return [
], ],
'computed' => [ 'computed' => [
'value' => function () { 'value' => function () {
return Html::sanitize(trim($this->value)); return Sane::sanitize(trim($this->value), 'html');
} }
], ],
]; ];

View File

@@ -1,13 +1,14 @@
<?php <?php
use Kirby\Cms\App; use Kirby\Cms\App;
use Kirby\Cms\Asset;
use Kirby\Cms\Html; use Kirby\Cms\Html;
use Kirby\Cms\Response; use Kirby\Cms\Response;
use Kirby\Cms\Url; use Kirby\Cms\Url;
use Kirby\Exception\InvalidArgumentException; use Kirby\Exception\InvalidArgumentException;
use Kirby\Filesystem\Asset;
use Kirby\Filesystem\F;
use Kirby\Http\Router;
use Kirby\Toolkit\Escape; use Kirby\Toolkit\Escape;
use Kirby\Toolkit\F;
use Kirby\Toolkit\I18n; use Kirby\Toolkit\I18n;
use Kirby\Toolkit\Str; use Kirby\Toolkit\Str;
use Kirby\Toolkit\V; use Kirby\Toolkit\V;
@@ -16,7 +17,7 @@ use Kirby\Toolkit\V;
* Helper to create an asset object * Helper to create an asset object
* *
* @param string $path * @param string $path
* @return \Kirby\Cms\Asset * @return \Kirby\Filesystem\Asset
*/ */
function asset(string $path) function asset(string $path)
{ {
@@ -26,12 +27,12 @@ function asset(string $path)
/** /**
* Generates a list of HTML attributes * Generates a list of HTML attributes
* *
* @param array $attr A list of attributes as key/value array * @param array|null $attr A list of attributes as key/value array
* @param string $before An optional string that will be prepended if the result is not empty * @param string|null $before An optional string that will be prepended if the result is not empty
* @param string $after An optional string that will be appended if the result is not empty * @param string|null $after An optional string that will be appended if the result is not empty
* @return string * @return string|null
*/ */
function attr(array $attr = null, $before = null, $after = null) function attr(?array $attr = null, ?string $before = null, ?string $after = null): ?string
{ {
if ($attrs = Html::attr($attr)) { if ($attrs = Html::attr($attr)) {
return $before . $attrs . $after; return $before . $attrs . $after;
@@ -54,28 +55,33 @@ function collection(string $name)
/** /**
* Checks / returns a CSRF token * Checks / returns a CSRF token
* *
* @param string $check Pass a token here to compare it to the one in the session * @param string|null $check Pass a token here to compare it to the one in the session
* @return string|bool Either the token or a boolean check result * @return string|bool Either the token or a boolean check result
*/ */
function csrf(string $check = null) function csrf(?string $check = null)
{ {
$session = App::instance()->session(); $session = App::instance()->session();
// check explicitly if there have been no arguments at all;
// checking for null introduces a security issue because null could come
// from user input or bugs in the calling code!
if (func_num_args() === 0) {
// no arguments, generate/return a token // no arguments, generate/return a token
// (check explicitly if there have been no arguments at all;
// checking for null introduces a security issue because null could come
// from user input or bugs in the calling code!)
if (func_num_args() === 0) {
$token = $session->get('kirby.csrf'); $token = $session->get('kirby.csrf');
if (is_string($token) !== true) { if (is_string($token) !== true) {
$token = bin2hex(random_bytes(32)); $token = bin2hex(random_bytes(32));
$session->set('kirby.csrf', $token); $session->set('kirby.csrf', $token);
} }
return $token; return $token;
} elseif (is_string($check) === true && is_string($session->get('kirby.csrf')) === true) { }
// argument has been passed, check the token // argument has been passed, check the token
if (
is_string($check) === true &&
is_string($session->get('kirby.csrf')) === true
) {
return hash_equals($session->get('kirby.csrf'), $check) === true; return hash_equals($session->get('kirby.csrf'), $check) === true;
} }
@@ -174,7 +180,7 @@ if (function_exists('e') === false) {
* @param string $context Location of output (`html`, `attr`, `js`, `css`, `url` or `xml`) * @param string $context Location of output (`html`, `attr`, `js`, `css`, `url` or `xml`)
* @return string Escaped data * @return string Escaped data
*/ */
function esc($string, $context = 'html') function esc(string $string, string $context = 'html'): string
{ {
if (method_exists('Kirby\Toolkit\Escape', $context) === true) { if (method_exists('Kirby\Toolkit\Escape', $context) === true) {
return Escape::$context($string); return Escape::$context($string);
@@ -200,10 +206,10 @@ function get($key = null, $default = null)
* Embeds a Github Gist * Embeds a Github Gist
* *
* @param string $url * @param string $url
* @param string $file * @param string|null $file
* @return string * @return string
*/ */
function gist(string $url, string $file = null): string function gist(string $url, ?string $file = null): string
{ {
return kirbytag([ return kirbytag([
'gist' => $url, 'gist' => $url,
@@ -255,10 +261,10 @@ function html(?string $string, bool $keepTags = false)
* Example: * Example:
* <?= image('some/page/myimage.jpg') ?> * <?= image('some/page/myimage.jpg') ?>
* *
* @param string $path * @param string|null $path
* @return \Kirby\Cms\File|null * @return \Kirby\Cms\File|null
*/ */
function image(string $path = null) function image(?string $path = null)
{ {
if ($path === null) { if ($path === null) {
return page()->image(); return page()->image();
@@ -296,9 +302,9 @@ function image(string $path = null)
* @param array $data * @param array $data
* @param array $rules * @param array $rules
* @param array $messages * @param array $messages
* @return false|array * @return array
*/ */
function invalid(array $data = [], array $rules = [], array $messages = []) function invalid(array $data = [], array $rules = [], array $messages = []): array
{ {
$errors = []; $errors = [];
@@ -407,12 +413,12 @@ function kirby()
* Makes it possible to use any defined Kirbytag as standalone function * Makes it possible to use any defined Kirbytag as standalone function
* *
* @param string|array $type * @param string|array $type
* @param string $value * @param string|null $value
* @param array $attr * @param array $attr
* @param array $data * @param array $data
* @return string * @return string
*/ */
function kirbytag($type, string $value = null, array $attr = [], array $data = []): string function kirbytag($type, ?string $value = null, array $attr = [], array $data = []): string
{ {
if (is_array($type) === true) { if (is_array($type) === true) {
$kirbytag = $type; $kirbytag = $type;
@@ -434,11 +440,11 @@ function kirbytag($type, string $value = null, array $attr = [], array $data = [
* Parses KirbyTags in the given string. Shortcut * Parses KirbyTags in the given string. Shortcut
* for `$kirby->kirbytags($text, $data)` * for `$kirby->kirbytags($text, $data)`
* *
* @param string $text * @param string|null $text
* @param array $data * @param array $data
* @return string * @return string
*/ */
function kirbytags(string $text = null, array $data = []): string function kirbytags(?string $text = null, array $data = []): string
{ {
return App::instance()->kirbytags($text, $data); return App::instance()->kirbytags($text, $data);
} }
@@ -447,11 +453,11 @@ function kirbytags(string $text = null, array $data = []): string
* Parses KirbyTags and Markdown in the * Parses KirbyTags and Markdown in the
* given string. Shortcut for `$kirby->kirbytext()` * given string. Shortcut for `$kirby->kirbytext()`
* *
* @param string $text * @param string|null $text
* @param array $data * @param array $data
* @return string * @return string
*/ */
function kirbytext(string $text = null, array $data = []): string function kirbytext(?string $text = null, array $data = []): string
{ {
return App::instance()->kirbytext($text, $data); return App::instance()->kirbytext($text, $data);
} }
@@ -461,11 +467,11 @@ function kirbytext(string $text = null, array $data = []): string
* given string. * given string.
* @since 3.1.0 * @since 3.1.0
* *
* @param string $text * @param string|null $text
* @param array $data * @param array $data
* @return string * @return string
*/ */
function kirbytextinline(string $text = null, array $data = []): string function kirbytextinline(?string $text = null, array $data = []): string
{ {
return App::instance()->kirbytext($text, $data, true); return App::instance()->kirbytext($text, $data, true);
} }
@@ -473,11 +479,11 @@ function kirbytextinline(string $text = null, array $data = []): string
/** /**
* Shortcut for `kirbytext()` helper * Shortcut for `kirbytext()` helper
* *
* @param string $text * @param string|null $text
* @param array $data * @param array $data
* @return string * @return string
*/ */
function kt(string $text = null, array $data = []): string function kt(?string $text = null, array $data = []): string
{ {
return kirbytext($text, $data); return kirbytext($text, $data);
} }
@@ -486,11 +492,11 @@ function kt(string $text = null, array $data = []): string
* Shortcut for `kirbytextinline()` helper * Shortcut for `kirbytextinline()` helper
* @since 3.1.0 * @since 3.1.0
* *
* @param string $text * @param string|null $text
* @param array $data * @param array $data
* @return string * @return string
*/ */
function kti(string $text = null, array $data = []): string function kti(?string $text = null, array $data = []): string
{ {
return kirbytextinline($text, $data); return kirbytextinline($text, $data);
} }
@@ -499,10 +505,10 @@ function kti(string $text = null, array $data = []): string
* A super simple class autoloader * A super simple class autoloader
* *
* @param array $classmap * @param array $classmap
* @param string $base * @param string|null $base
* @return void * @return void
*/ */
function load(array $classmap, string $base = null) function load(array $classmap, ?string $base = null)
{ {
// convert all classnames to lowercase // convert all classnames to lowercase
$classmap = array_change_key_case($classmap); $classmap = array_change_key_case($classmap);
@@ -526,10 +532,10 @@ function load(array $classmap, string $base = null)
* Parses markdown in the given string. Shortcut for * Parses markdown in the given string. Shortcut for
* `$kirby->markdown($text)` * `$kirby->markdown($text)`
* *
* @param string $text * @param string|null $text
* @return string * @return string
*/ */
function markdown(string $text = null): string function markdown(?string $text = null): string
{ {
return App::instance()->markdown($text); return App::instance()->markdown($text);
} }
@@ -551,7 +557,8 @@ function option(string $key, $default = null)
* id or the current page when no id is specified * id or the current page when no id is specified
* *
* @param string|array ...$id * @param string|array ...$id
* @return \Kirby\Cms\Page|null * @return \Kirby\Cms\Page|\Kirby\Cms\Pages|null
* @todo reduce to one parameter in 3.7.0 (also change return and return type)
*/ */
function page(...$id) function page(...$id)
{ {
@@ -559,6 +566,12 @@ function page(...$id)
return App::instance()->site()->page(); return App::instance()->site()->page();
} }
if (count($id) > 1) {
// @codeCoverageIgnoreStart
deprecated('Passing multiple parameters to the `page()` helper has been deprecated. Please use the `pages()` helper instead.');
// @codeCoverageIgnoreEnd
}
return App::instance()->site()->find(...$id); return App::instance()->site()->find(...$id);
} }
@@ -566,10 +579,17 @@ function page(...$id)
* Helper to build page collections * Helper to build page collections
* *
* @param string|array ...$id * @param string|array ...$id
* @return \Kirby\Cms\Pages * @return \Kirby\Cms\Page|\Kirby\Cms\Pages|null
* @todo return only Pages|null in 3.7.0, wrap in Pages for single passed id
*/ */
function pages(...$id) function pages(...$id)
{ {
if (count($id) === 1) {
// @codeCoverageIgnoreStart
deprecated('Passing a single id to the `pages()` helper will return a Kirby\Cms\Pages collection with a single element instead of the single Kirby\Cms\Page object itself - starting in 3.7.0.');
// @codeCoverageIgnoreEnd
}
return App::instance()->site()->find(...$id); return App::instance()->site()->find(...$id);
} }
@@ -577,10 +597,10 @@ function pages(...$id)
* Returns a single param from the URL * Returns a single param from the URL
* *
* @param string $key * @param string $key
* @param string $fallback * @param string|null $fallback
* @return string|null * @return string|null
*/ */
function param(string $key, string $fallback = null): ?string function param(string $key, ?string $fallback = null): ?string
{ {
return App::instance()->request()->url()->params()->$key ?? $fallback; return App::instance()->request()->url()->params()->$key ?? $fallback;
} }
@@ -608,6 +628,22 @@ function r($condition, $value, $alternative = null)
return $condition ? $value : $alternative; return $condition ? $value : $alternative;
} }
/**
* Creates a micro-router and executes
* the routing action immediately
* @since 3.6.0
*
* @param string|null $path
* @param string $method
* @param array $routes
* @param \Closure|null $callback
* @return mixed
*/
function router(?string $path = null, string $method = 'GET', array $routes = [], ?Closure $callback = null)
{
return (new Router($routes))->call($path, $method, $callback);
}
/** /**
* Returns the current site object * Returns the current site object
* *
@@ -623,6 +659,7 @@ function site()
* *
* @param mixed $value * @param mixed $value
* @return int * @return int
* @throws \Kirby\Exception\InvalidArgumentException
*/ */
function size($value): int function size($value): int
{ {
@@ -655,10 +692,10 @@ function size($value): int
* Enhances the given string with * Enhances the given string with
* smartypants. Shortcut for `$kirby->smartypants($text)` * smartypants. Shortcut for `$kirby->smartypants($text)`
* *
* @param string $text * @param string|null $text
* @return string * @return string
*/ */
function smartypants(string $text = null): string function smartypants(?string $text = null): string
{ {
return App::instance()->smartypants($text); return App::instance()->smartypants($text);
} }
@@ -725,7 +762,7 @@ function svg($file)
* *
* @param string|array $key * @param string|array $key
* @param string|null $fallback * @param string|null $fallback
* @return mixed * @return array|string|null
*/ */
function t($key, string $fallback = null) function t($key, string $fallback = null)
{ {
@@ -735,11 +772,11 @@ function t($key, string $fallback = null)
/** /**
* Translates a count * Translates a count
* *
* @param string|array $key * @param string $key
* @param int $count * @param int $count
* @return mixed * @return mixed
*/ */
function tc($key, int $count) function tc(string $key, int $count)
{ {
return I18n::translateCount($key, $count); return I18n::translateCount($key, $count);
} }
@@ -748,11 +785,11 @@ function tc($key, int $count)
* Rounds the minutes of the given date * Rounds the minutes of the given date
* by the defined step * by the defined step
* *
* @param string $date * @param string|null $date
* @param int $step array of `unit` and `size` to round to nearest * @param int|array|null $step array of `unit` and `size` to round to nearest
* @return int|null * @return int|null
*/ */
function timestamp(string $date = null, $step = null): ?int function timestamp(?string $date = null, $step = null): ?int
{ {
if (V::date($date) === false) { if (V::date($date) === false) {
return null; return null;
@@ -807,7 +844,7 @@ function timestamp(string $date = null, $step = null): ?int
); );
// on error, convert `false` into `null` // on error, convert `false` into `null`
return $timestamp ? $timestamp : null; return $timestamp ?? null;
} }
/** /**
@@ -815,12 +852,12 @@ function timestamp(string $date = null, $step = null): ?int
* placeholders in the text * placeholders in the text
* *
* @param string $key * @param string $key
* @param string $fallback * @param string|array|null $fallback
* @param array $replace * @param array|null $replace
* @param string $locale * @param string|null $locale
* @return string * @return string
*/ */
function tt(string $key, $fallback = null, array $replace = null, string $locale = null) function tt(string $key, $fallback = null, ?array $replace = null, ?string $locale = null)
{ {
return I18n::template($key, $fallback, $replace, $locale); return I18n::template($key, $fallback, $replace, $locale);
} }
@@ -829,12 +866,12 @@ function tt(string $key, $fallback = null, array $replace = null, string $locale
* Builds a Twitter link * Builds a Twitter link
* *
* @param string $username * @param string $username
* @param string $text * @param string|null $text
* @param string $title * @param string|null $title
* @param string $class * @param string|null $class
* @return string * @return string
*/ */
function twitter(string $username, string $text = null, string $title = null, string $class = null): string function twitter(string $username, ?string $text = null, ?string $title = null, ?string $class = null): string
{ {
return kirbytag([ return kirbytag([
'twitter' => $username, 'twitter' => $username,
@@ -847,11 +884,11 @@ function twitter(string $username, string $text = null, string $title = null, st
/** /**
* Shortcut for url() * Shortcut for url()
* *
* @param string $path * @param string|null $path
* @param array|string|null $options * @param array|string|null $options
* @return string * @return string
*/ */
function u(string $path = null, $options = null): string function u(?string $path = null, $options = null): string
{ {
return Url::to($path, $options); return Url::to($path, $options);
} }
@@ -859,11 +896,11 @@ function u(string $path = null, $options = null): string
/** /**
* Builds an absolute URL for a given path * Builds an absolute URL for a given path
* *
* @param string $path * @param string|null $path
* @param array|string|null $options * @param array|string|null $options
* @return string * @return string
*/ */
function url(string $path = null, $options = null): string function url(?string $path = null, $options = null): string
{ {
return Url::to($path, $options); return Url::to($path, $options);
} }
@@ -906,9 +943,9 @@ function uuid(): string
* @param string $url * @param string $url
* @param array $options * @param array $options
* @param array $attr * @param array $attr
* @return string * @return string|null
*/ */
function video(string $url, array $options = [], array $attr = []): string function video(string $url, array $options = [], array $attr = []): ?string
{ {
return Html::video($url, $options, $attr); return Html::video($url, $options, $attr);
} }
@@ -919,9 +956,9 @@ function video(string $url, array $options = [], array $attr = []): string
* @param string $url * @param string $url
* @param array $options * @param array $options
* @param array $attr * @param array $attr
* @return string * @return string|null
*/ */
function vimeo(string $url, array $options = [], array $attr = []): string function vimeo(string $url, array $options = [], array $attr = []): ?string
{ {
return Html::vimeo($url, $options, $attr); return Html::vimeo($url, $options, $attr);
} }
@@ -945,9 +982,9 @@ function widont(string $string = null): string
* @param string $url * @param string $url
* @param array $options * @param array $options
* @param array $attr * @param array $attr
* @return string * @return string|null
*/ */
function youtube(string $url, array $options = [], array $attr = []): string function youtube(string $url, array $options = [], array $attr = []): ?string
{ {
return Html::youtube($url, $options, $attr); return Html::youtube($url, $options, $attr);
} }

View File

@@ -366,7 +366,7 @@ return function (App $app) {
* @return \Kirby\Cms\Field * @return \Kirby\Cms\Field
*/ */
'html' => function (Field $field) { 'html' => function (Field $field) {
$field->value = htmlentities($field->value, ENT_COMPAT, 'utf-8'); $field->value = Html::encode($field->value);
return $field; return $field;
}, },
@@ -498,13 +498,14 @@ return function (App $app) {
*/ */
'replace' => function (Field $field, array $data = [], string $fallback = '') use ($app) { 'replace' => function (Field $field, array $data = [], string $fallback = '') use ($app) {
if ($parent = $field->parent()) { if ($parent = $field->parent()) {
$field->value = $field->parent()->toString($field->value, $data, $fallback); // never pass `null` as the $template to avoid the fallback to the model ID
$field->value = $parent->toString($field->value ?? '', $data, $fallback);
} else { } else {
$field->value = Str::template($field->value, array_replace([ $field->value = Str::template($field->value, array_replace([
'kirby' => $app, 'kirby' => $app,
'site' => $app->site(), 'site' => $app->site(),
'page' => $app->page() 'page' => $app->page()
], $data), $fallback); ], $data), ['fallback' => $fallback]);
} }
return $field; return $field;

View File

@@ -1,93 +0,0 @@
<?php
return [
// kirby
'kirby' => function (array $roots) {
return realpath(__DIR__ . '/../');
},
// i18n
'i18n' => function (array $roots) {
return $roots['kirby'] . '/i18n';
},
'i18n:translations' => function (array $roots) {
return $roots['i18n'] . '/translations';
},
'i18n:rules' => function (array $roots) {
return $roots['i18n'] . '/rules';
},
// index
'index' => function (array $roots) {
return realpath(__DIR__ . '/../../');
},
// assets
'assets' => function (array $roots) {
return $roots['index'] . '/assets';
},
// content
'content' => function (array $roots) {
return $roots['index'] . '/content';
},
// media
'media' => function (array $roots) {
return $roots['index'] . '/media';
},
// panel
'panel' => function (array $roots) {
return $roots['kirby'] . '/panel';
},
// site
'site' => function (array $roots) {
return $roots['index'] . '/site';
},
'accounts' => function (array $roots) {
return $roots['site'] . '/accounts';
},
'blueprints' => function (array $roots) {
return $roots['site'] . '/blueprints';
},
'cache' => function (array $roots) {
return $roots['site'] . '/cache';
},
'collections' => function (array $roots) {
return $roots['site'] . '/collections';
},
'config' => function (array $roots) {
return $roots['site'] . '/config';
},
'controllers' => function (array $roots) {
return $roots['site'] . '/controllers';
},
'languages' => function (array $roots) {
return $roots['site'] . '/languages';
},
'logs' => function (array $roots) {
return $roots['site'] . '/logs';
},
'models' => function (array $roots) {
return $roots['site'] . '/models';
},
'plugins' => function (array $roots) {
return $roots['site'] . '/plugins';
},
'sessions' => function (array $roots) {
return $roots['site'] . '/sessions';
},
'snippets' => function (array $roots) {
return $roots['site'] . '/snippets';
},
'templates' => function (array $roots) {
return $roots['site'] . '/templates';
},
// blueprints
'roles' => function (array $roots) {
return $roots['blueprints'] . '/users';
},
];

View File

@@ -2,9 +2,9 @@
use Kirby\Cms\LanguageRoutes; use Kirby\Cms\LanguageRoutes;
use Kirby\Cms\Media; use Kirby\Cms\Media;
use Kirby\Cms\Panel;
use Kirby\Cms\PanelPlugins;
use Kirby\Cms\PluginAssets; use Kirby\Cms\PluginAssets;
use Kirby\Panel\Panel;
use Kirby\Panel\Plugins;
use Kirby\Toolkit\Str; use Kirby\Toolkit\Str;
return function ($kirby) { return function ($kirby) {
@@ -50,7 +50,7 @@ return function ($kirby) {
'pattern' => $media . '/plugins/index.(css|js)', 'pattern' => $media . '/plugins/index.(css|js)',
'env' => 'media', 'env' => 'media',
'action' => function (string $type) use ($kirby) { 'action' => function (string $type) use ($kirby) {
$plugins = new PanelPlugins(); $plugins = new Plugins();
return $kirby return $kirby
->response() ->response()
@@ -65,17 +65,6 @@ return function ($kirby) {
return PluginAssets::resolve($provider . '/' . $pluginName, $filename . '.' . $extension); return PluginAssets::resolve($provider . '/' . $pluginName, $filename . '.' . $extension);
} }
], ],
[
'pattern' => $panel . '/(:all?)',
'env' => 'panel',
'action' => function () use ($kirby) {
if ($kirby->option('panel') === false) {
return null;
}
return Panel::render($kirby);
}
],
[ [
'pattern' => $media . '/pages/(:all)/(:any)/(:any)', 'pattern' => $media . '/pages/(:all)/(:any)/(:any)',
'env' => 'media', 'env' => 'media',
@@ -103,7 +92,15 @@ return function ($kirby) {
'action' => function ($path, $hash, $filename) { 'action' => function ($path, $hash, $filename) {
return Media::thumb($path, $hash, $filename); return Media::thumb($path, $hash, $filename);
} }
] ],
[
'pattern' => $panel . '/(:all?)',
'method' => 'ALL',
'env' => 'panel',
'action' => function ($path = null) {
return Panel::router($path);
}
],
]; ];
// Multi-language setup // Multi-language setup

View File

@@ -1,6 +1,6 @@
<?php <?php
use Kirby\Cms\Form; use Kirby\Form\Form;
return [ return [
'props' => [ 'props' => [

View File

@@ -1,7 +1,6 @@
<?php <?php
use Kirby\Cms\File; use Kirby\Cms\File;
use Kirby\Toolkit\Escape;
use Kirby\Toolkit\I18n; use Kirby\Toolkit\I18n;
return [ return [
@@ -29,7 +28,7 @@ return [
return $image ?? []; return $image ?? [];
}, },
/** /**
* Optional info text setup. Info text is shown on the right (lists) or below (cards) the filename. * Optional info text setup. Info text is shown on the right (lists, cardlets) or below (cards) the filename.
*/ */
'info' => function ($info = null) { 'info' => function ($info = null) {
return I18n::translate($info, $info); return I18n::translate($info, $info);
@@ -70,6 +69,7 @@ return [
if ($this->template) { if ($this->template) {
$file = new File([ $file = new File([
'filename' => 'tmp', 'filename' => 'tmp',
'parent' => $this->model(),
'template' => $this->template 'template' => $this->template
]); ]);
@@ -90,7 +90,7 @@ return [
if ($this->sortBy) { if ($this->sortBy) {
$files = $files->sort(...$files::sortArgs($this->sortBy)); $files = $files->sort(...$files::sortArgs($this->sortBy));
} else { } else {
$files = $files->sort('sort', 'asc', 'filename', 'asc'); $files = $files->sorted();
} }
// flip // flip
@@ -115,27 +115,20 @@ return [
$dragTextAbsolute = $this->model->is($this->parent) === false; $dragTextAbsolute = $this->model->is($this->parent) === false;
foreach ($this->files as $file) { foreach ($this->files as $file) {
$image = $file->panelImage($this->image); $panel = $file->panel();
// escape the default text
// TODO: no longer needed in 3.6
$text = $file->toString($this->text);
if ($this->text === '{{ file.filename }}') {
$text = Escape::html($text);
}
$data[] = [ $data[] = [
'dragText' => $file->dragText('auto', $dragTextAbsolute), 'dragText' => $panel->dragText('auto', $dragTextAbsolute),
'extension' => $file->extension(), 'extension' => $file->extension(),
'filename' => $file->filename(), 'filename' => $file->filename(),
'id' => $file->id(), 'id' => $file->id(),
'icon' => $file->panelIcon($image), 'image' => $panel->image($this->image, $this->layout),
'image' => $image, 'info' => $file->toSafeString($this->info ?? false),
'info' => $file->toString($this->info ?? false), 'link' => $panel->url(true),
'link' => $file->panelUrl(true),
'mime' => $file->mime(), 'mime' => $file->mime(),
'parent' => $file->parent()->panelPath(), 'parent' => $file->parent()->panel()->path(),
'text' => $text, 'template' => $file->template(),
'text' => $file->toSafeString($this->text),
'url' => $file->url(), 'url' => $file->url(),
]; ];
} }
@@ -174,8 +167,8 @@ return [
]; ];
}, },
'link' => function () { 'link' => function () {
$modelLink = $this->model->panelUrl(true); $modelLink = $this->model->panel()->url(true);
$parentLink = $this->parent->panelUrl(true); $parentLink = $this->parent->panel()->url(true);
if ($modelLink !== $parentLink) { if ($modelLink !== $parentLink) {
return $parentLink; return $parentLink;
@@ -222,6 +215,7 @@ return [
'max' => $max, 'max' => $max,
'api' => $this->parent->apiUrl(true) . '/files', 'api' => $this->parent->apiUrl(true) . '/files',
'attributes' => array_filter([ 'attributes' => array_filter([
'sort' => $this->sortable === true ? $total + 1 : null,
'template' => $template 'template' => $template
]) ])
]; ];

View File

@@ -17,7 +17,7 @@ return [
'computed' => [ 'computed' => [
'text' => function () { 'text' => function () {
if ($this->text) { if ($this->text) {
$text = $this->model()->toString($this->text); $text = $this->model()->toSafeString($this->text);
$text = $this->kirby()->kirbytext($text); $text = $this->kirby()->kirbytext($text);
return $text; return $text;
} }
@@ -25,11 +25,9 @@ return [
], ],
'toArray' => function () { 'toArray' => function () {
return [ return [
'options' => [
'headline' => $this->headline, 'headline' => $this->headline,
'text' => $this->text, 'text' => $this->text,
'theme' => $this->theme 'theme' => $this->theme
]
]; ];
} }
]; ];

View File

@@ -14,7 +14,7 @@ return [
'computed' => [ 'computed' => [
'empty' => function () { 'empty' => function () {
if ($this->empty) { if ($this->empty) {
return $this->model()->toString($this->empty); return $this->model()->toSafeString($this->empty);
} }
} }
] ]

View File

@@ -14,7 +14,7 @@ return [
'computed' => [ 'computed' => [
'help' => function () { 'help' => function () {
if ($this->help) { if ($this->help) {
$help = $this->model()->toString($this->help); $help = $this->model()->toSafeString($this->help);
$help = $this->kirby()->kirbytext($help); $help = $this->kirby()->kirbytext($help);
return $help; return $help;
} }

View File

@@ -3,10 +3,12 @@
return [ return [
'props' => [ 'props' => [
/** /**
* Section layout. Available layout methods: `list`, `cards`. * Section layout.
* Available layout methods: `list`, `cardlets`, `cards`.
*/ */
'layout' => function (string $layout = 'list') { 'layout' => function (string $layout = 'list') {
return $layout === 'cards' ? 'cards' : 'list'; $layouts = ['list', 'cardlets', 'cards'];
return in_array($layout, $layouts) ? $layout : 'list';
} }
] ]
]; ];

View File

@@ -1,8 +1,8 @@
<?php <?php
use Kirby\Cms\Blueprint; use Kirby\Cms\Blueprint;
use Kirby\Exception\InvalidArgumentException;
use Kirby\Toolkit\A; use Kirby\Toolkit\A;
use Kirby\Toolkit\Escape;
use Kirby\Toolkit\I18n; use Kirby\Toolkit\I18n;
return [ return [
@@ -89,7 +89,13 @@ return [
], ],
'computed' => [ 'computed' => [
'parent' => function () { 'parent' => function () {
return $this->parentModel(); $parent = $this->parentModel();
if (is_a($parent, 'Kirby\Cms\Site') === false && is_a($parent, 'Kirby\Cms\Page') === false) {
throw new InvalidArgumentException('The parent is invalid. You must choose the site or a page as parent.');
}
return $parent;
}, },
'pages' => function () { 'pages' => function () {
switch ($this->status) { switch ($this->status) {
@@ -151,32 +157,25 @@ return [
$data = []; $data = [];
foreach ($this->pages as $item) { foreach ($this->pages as $item) {
$panel = $item->panel();
$permissions = $item->permissions(); $permissions = $item->permissions();
$image = $item->panelImage($this->image);
// escape the default text
// TODO: no longer needed in 3.6
$text = $item->toString($this->text);
if ($this->text === '{{ page.title }}') {
$text = Escape::html($text);
}
$data[] = [ $data[] = [
'dragText' => $panel->dragText(),
'id' => $item->id(), 'id' => $item->id(),
'dragText' => $item->dragText(), 'image' => $panel->image($this->image, $this->layout),
'text' => $text, 'info' => $item->toSafeString($this->info ?? false),
'info' => $item->toString($this->info ?? false), 'link' => $panel->url(true),
'parent' => $item->parentId(), 'parent' => $item->parentId(),
'icon' => $item->panelIcon($image),
'image' => $image,
'link' => $item->panelUrl(true),
'status' => $item->status(),
'permissions' => [ 'permissions' => [
'sort' => $permissions->can('sort'), 'sort' => $permissions->can('sort'),
'changeSlug' => $permissions->can('changeSlug'), 'changeSlug' => $permissions->can('changeSlug'),
'changeStatus' => $permissions->can('changeStatus'), 'changeStatus' => $permissions->can('changeStatus'),
'changeTitle' => $permissions->can('changeTitle') 'changeTitle' => $permissions->can('changeTitle'),
] ],
'status' => $item->status(),
'template' => $item->intendedTemplate()->name(),
'text' => $item->toSafeString($this->text),
]; ];
} }
@@ -226,8 +225,8 @@ return [
return true; return true;
}, },
'link' => function () { 'link' => function () {
$modelLink = $this->model->panelUrl(true); $modelLink = $this->model->panel()->url(true);
$parentLink = $this->parent->panelUrl(true); $parentLink = $this->parent->panel()->url(true);
if ($modelLink !== $parentLink) { if ($modelLink !== $parentLink) {
return $parentLink; return $parentLink;

View File

@@ -1,17 +0,0 @@
<?php
$blocksRoot = __DIR__ . '/blocks';
return [
// blocks
'blocks/code' => $blocksRoot . '/code/code.php',
'blocks/gallery' => $blocksRoot . '/gallery/gallery.php',
'blocks/heading' => $blocksRoot . '/heading/heading.php',
'blocks/image' => $blocksRoot . '/image/image.php',
'blocks/list' => $blocksRoot . '/list/list.php',
'blocks/markdown' => $blocksRoot . '/markdown/markdown.php',
'blocks/quote' => $blocksRoot . '/quote/quote.php',
'blocks/table' => $blocksRoot . '/table/table.php',
'blocks/text' => $blocksRoot . '/text/text.php',
'blocks/video' => $blocksRoot . '/video/video.php',
];

View File

@@ -2,8 +2,6 @@
use Kirby\Cms\Html; use Kirby\Cms\Html;
use Kirby\Cms\Url; use Kirby\Cms\Url;
use Kirby\Text\KirbyTag;
use Kirby\Toolkit\F;
use Kirby\Toolkit\Str; use Kirby\Toolkit\Str;
/** /**
@@ -252,29 +250,6 @@ return [
'width', 'width',
], ],
'html' => function ($tag) { 'html' => function ($tag) {
// all available video tag attributes
$availableAttrs = KirbyTag::$types[$tag->type]['attr'];
// global video tag options
$attrs = $tag->kirby()->option('kirbytext.video', []);
$options = $attrs['options'] ?? [];
// removes options from attributes
if (isset($attrs['options']) === true) {
unset($attrs['options']);
}
// injects default values from global options
// applies only defined attributes to safely update tag props
foreach ($attrs as $key => $value) {
if (
in_array($key, $availableAttrs) === true &&
(isset($tag->{$key}) === false || $tag->{$key} === null)
) {
$tag->{$key} = $value;
}
}
// checks and gets if poster is local file // checks and gets if poster is local file
if ( if (
empty($tag->poster) === false && empty($tag->poster) === false &&
@@ -286,26 +261,41 @@ return [
} }
} }
// converts tag attributes to supported formats (listed below) to output correct html // checks video is local or provider(remote)
// booleans: autoplay, controls, loop, muted $isLocalVideo = (
// strings : height, poster, preload, width Str::startsWith($tag->value, 'http://') !== true &&
// for ex : `autoplay` will not work if `false` is a `string` instead of a `boolean` Str::startsWith($tag->value, 'https://') !== true
);
$isProviderVideo = (
$isLocalVideo === false &&
(
Str::contains($tag->value, 'youtu', true) === true ||
Str::contains($tag->value, 'vimeo', true) === true
)
);
// default attributes for local and remote videos
$attrs = [ $attrs = [
'autoplay' => $autoplay = Str::toType($tag->autoplay, 'bool'),
'controls' => Str::toType($tag->controls ?? true, 'bool'),
'height' => $tag->height, 'height' => $tag->height,
'loop' => Str::toType($tag->loop, 'bool'),
'muted' => Str::toType($tag->muted ?? $autoplay, 'bool'),
'poster' => $tag->poster,
'preload' => $tag->preload,
'width' => $tag->width 'width' => $tag->width
]; ];
// don't use attributes that iframe doesn't support
if ($isProviderVideo === false) {
// converts tag attributes to supported formats (listed below) to output correct html
// booleans: autoplay, controls, loop, muted
// strings : poster, preload
// for ex : `autoplay` will not work if `false` is a `string` instead of a `boolean`
$attrs['autoplay'] = $autoplay = Str::toType($tag->autoplay, 'bool');
$attrs['controls'] = Str::toType($tag->controls ?? true, 'bool');
$attrs['loop'] = Str::toType($tag->loop, 'bool');
$attrs['muted'] = Str::toType($tag->muted ?? $autoplay, 'bool');
$attrs['poster'] = $tag->poster;
$attrs['preload'] = $tag->preload;
}
// handles local and remote video file // handles local and remote video file
if ( if ($isLocalVideo === true) {
Str::startsWith($tag->value, 'http://') !== true &&
Str::startsWith($tag->value, 'https://') !== true
) {
// handles local video file // handles local video file
if ($tag->file = $tag->file($tag->value)) { if ($tag->file = $tag->file($tag->value)) {
$source = Html::tag('source', null, [ $source = Html::tag('source', null, [
@@ -315,32 +305,11 @@ return [
$video = Html::tag('video', [$source], $attrs); $video = Html::tag('video', [$source], $attrs);
} }
} else { } else {
// firstly handles supported video providers as youtube, vimeo, etc
try {
$video = Html::video( $video = Html::video(
$tag->value, $tag->value,
$options, $tag->kirby()->option('kirbytext.video.options', []),
// providers only support width and height attributes $attrs
[
'height' => $tag->height,
'width' => $tag->width
]
); );
} catch (Exception $e) {
// if not one of the supported video providers
// it checks if there is a valid remote video file
$extension = F::extension($tag->value);
$type = F::extensionToType($extension);
$mime = F::extensionToMime($extension);
if ($type === 'video') {
$source = Html::tag('source', null, [
'src' => $tag->value,
'type' => $mime
]);
$video = Html::tag('video', [$source], $attrs);
}
}
} }
return Html::figure([$video ?? ''], $tag->caption, [ return Html::figure([$video ?? ''], $tag->caption, [

View File

@@ -1,8 +0,0 @@
<?php
// @codeCoverageIgnoreStart
return [
'emails/auth/login' => __DIR__ . '/templates/emails/auth/login.php',
'emails/auth/password-reset' => __DIR__ . '/templates/emails/auth/password-reset.php'
];
// @codeCoverageIgnoreEnd

View File

@@ -1,8 +1,16 @@
<?php <?php
use Kirby\Toolkit\I18n;
/** /**
* @var \Kirby\Cms\User $user * @var \Kirby\Cms\User $user
* @var string $site
* @var string $code * @var string $code
* @var int $timeout * @var int $timeout
*/ */
echo I18n::template('login.email.login.body', null, compact('user', 'code', 'timeout'), $user->language()); echo I18n::template(
'login.email.login.body',
null,
compact('user', 'site', 'code', 'timeout'),
$user->language()
);

View File

@@ -1,8 +1,16 @@
<?php <?php
use Kirby\Toolkit\I18n;
/** /**
* @var \Kirby\Cms\User $user * @var \Kirby\Cms\User $user
* @var string $site
* @var string $code * @var string $code
* @var int $timeout * @var int $timeout
*/ */
echo I18n::template('login.email.password-reset.body', null, compact('user', 'code', 'timeout'), $user->language()); echo I18n::template(
'login.email.password-reset.body',
null,
compact('user', 'site', 'code', 'timeout'),
$user->language()
);

View File

@@ -1,33 +0,0 @@
<?php
use Kirby\Cms\Url;
return [
'index' => function () {
return Url::index();
},
'base' => function (array $urls) {
return rtrim($urls['index'], '/');
},
'current' => function (array $urls) {
$path = trim($this->path(), '/');
if (empty($path) === true) {
return $urls['index'];
} else {
return $urls['base'] . '/' . $path;
}
},
'assets' => function (array $urls) {
return $urls['base'] . '/assets';
},
'api' => function (array $urls) {
return $urls['base'] . '/' . ($this->options['api']['slug'] ?? 'api');
},
'media' => function (array $urls) {
return $urls['base'] . '/media';
},
'panel' => function (array $urls) {
return $urls['base'] . '/' . ($this->options['panel']['slug'] ?? 'panel');
}
];

22
kirby/i18n/rules/is_IS.json Executable file
View File

@@ -0,0 +1,22 @@
{
"Æ": "Ae",
"æ": "ae",
"Ö": "O",
"ö": "o",
"Þ": "Th",
"þ": "th",
"Ð": "D",
"ð": "d",
"Á": "A",
"á": "a",
"É": "E",
"é": "e",
"Í": "I",
"í": "i",
"Ó": "O",
"ó": "o",
"Ú": "U",
"ú": "u",
"Ý": "Y",
"ý": "y"
}

View File

@@ -1,5 +1,10 @@
{ {
"account.changeName": "Change your name",
"account.delete": "Delete your account",
"account.delete.confirm": "Do you really want to delete your account? You will be logged out immediately. Your account cannot be recovered.",
"add": "\u0414\u043e\u0431\u0430\u0432\u0438", "add": "\u0414\u043e\u0431\u0430\u0432\u0438",
"author": "Author",
"avatar": "Профилна снимка", "avatar": "Профилна снимка",
"back": "Назад", "back": "Назад",
"cancel": "\u041e\u0442\u043a\u0430\u0436\u0438", "cancel": "\u041e\u0442\u043a\u0430\u0436\u0438",
@@ -9,6 +14,7 @@
"collapse": "Collapse", "collapse": "Collapse",
"collapse.all": "Collapse All", "collapse.all": "Collapse All",
"copy": "Копирай", "copy": "Копирай",
"copy.all": "Copy all",
"create": "Създай", "create": "Създай",
"date": "Дата", "date": "Дата",
@@ -23,24 +29,28 @@
"days.tue": "\u0412\u0442", "days.tue": "\u0412\u0442",
"days.wed": "\u0421\u0440", "days.wed": "\u0421\u0440",
"debugging": "Debugging",
"delete": "\u0418\u0437\u0442\u0440\u0438\u0439", "delete": "\u0418\u0437\u0442\u0440\u0438\u0439",
"delete.all": "Delete all", "delete.all": "Delete all",
"dimensions": "Размери",
"disabled": "Disabled",
"discard": "\u041e\u0442\u043c\u0435\u043d\u0438",
"download": "Download",
"duplicate": "Duplicate",
"edit": "\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u0439",
"expand": "Expand",
"expand.all": "Expand All",
"dialog.files.empty": "No files to select", "dialog.files.empty": "No files to select",
"dialog.pages.empty": "No pages to select", "dialog.pages.empty": "No pages to select",
"dialog.users.empty": "No users to select", "dialog.users.empty": "No users to select",
"dimensions": "Размери",
"disabled": "Disabled",
"discard": "\u041e\u0442\u043c\u0435\u043d\u0438",
"download": "Download",
"duplicate": "Duplicate",
"edit": "\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u0439",
"email": "Email", "email": "Email",
"email.placeholder": "mail@example.com", "email.placeholder": "mail@example.com",
"environment": "Environment",
"error.access.code": "Invalid code", "error.access.code": "Invalid code",
"error.access.login": "Invalid login", "error.access.login": "Invalid login",
"error.access.panel": "Нямате права за достъп до панела", "error.access.panel": "Нямате права за достъп до панела",
@@ -92,6 +102,7 @@
"error.language.code": "Please enter a valid code for the language", "error.language.code": "Please enter a valid code for the language",
"error.language.duplicate": "The language already exists", "error.language.duplicate": "The language already exists",
"error.language.name": "Please enter a valid name for the language", "error.language.name": "Please enter a valid name for the language",
"error.language.notFound": "The language could not be found",
"error.layout.validation.block": "There's an error in block {blockIndex} in layout {layoutIndex}", "error.layout.validation.block": "There's an error in block {blockIndex} in layout {layoutIndex}",
"error.layout.validation.settings": "There's an error in layout {index} settings", "error.layout.validation.settings": "There's an error in layout {index} settings",
@@ -100,6 +111,8 @@
"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.offline": "The Panel is currently offline",
"error.page.changeSlug.permission": "Не можете да смените URL на \"{slug}\"", "error.page.changeSlug.permission": "Не можете да смените URL на \"{slug}\"",
"error.page.changeStatus.incomplete": "Страницата съдържа грешки и не може да бъде публикувана", "error.page.changeStatus.incomplete": "Страницата съдържа грешки и не може да бъде публикувана",
"error.page.changeStatus.permission": "Статусът на страницата не може да бъде променен", "error.page.changeStatus.permission": "Статусът на страницата не може да бъде променен",
@@ -165,6 +178,7 @@
"error.user.password.undefined": "Потребителят няма парола", "error.user.password.undefined": "Потребителят няма парола",
"error.user.password.wrong": "Wrong password", "error.user.password.wrong": "Wrong password",
"error.user.role.invalid": "Моля въведете валидна роля", "error.user.role.invalid": "Моля въведете валидна роля",
"error.user.undefined": "Потребителят не може да бъде намерен.",
"error.user.update.permission": "Нямате права да обновите този потребител \"{name}\"", "error.user.update.permission": "Нямате права да обновите този потребител \"{name}\"",
"error.validation.accepted": "Моля потвърдете", "error.validation.accepted": "Моля потвърдете",
@@ -208,6 +222,9 @@
"error.validation.time.between": "Please enter a time between {min} and {max}", "error.validation.time.between": "Please enter a time between {min} and {max}",
"error.validation.url": "Моля въведете валиден URL", "error.validation.url": "Моля въведете валиден URL",
"expand": "Expand",
"expand.all": "Expand All",
"field.required": "The field is required", "field.required": "The field is required",
"field.blocks.changeType": "Change type", "field.blocks.changeType": "Change type",
"field.blocks.code.name": "Код", "field.blocks.code.name": "Код",
@@ -218,6 +235,7 @@
"field.blocks.delete.confirm.selected": "Do you really want to delete the selected blocks?", "field.blocks.delete.confirm.selected": "Do you really want to delete the selected blocks?",
"field.blocks.empty": "No blocks yet", "field.blocks.empty": "No blocks yet",
"field.blocks.fieldsets.label": "Please select a block type …", "field.blocks.fieldsets.label": "Please select a block type …",
"field.blocks.fieldsets.paste": "Press <kbd>{{ shortcut }}</kbd> to paste/import blocks from your clipboard",
"field.blocks.gallery.name": "Gallery", "field.blocks.gallery.name": "Gallery",
"field.blocks.gallery.images.empty": "No images yet", "field.blocks.gallery.images.empty": "No images yet",
"field.blocks.gallery.images.label": "Images", "field.blocks.gallery.images.label": "Images",
@@ -234,6 +252,7 @@
"field.blocks.image.placeholder": "Select an image", "field.blocks.image.placeholder": "Select an image",
"field.blocks.image.ratio": "Ratio", "field.blocks.image.ratio": "Ratio",
"field.blocks.image.url": "Image URL", "field.blocks.image.url": "Image URL",
"field.blocks.line.name": "Line",
"field.blocks.list.name": "List", "field.blocks.list.name": "List",
"field.blocks.markdown.name": "Markdown", "field.blocks.markdown.name": "Markdown",
"field.blocks.markdown.label": "Text", "field.blocks.markdown.label": "Text",
@@ -263,7 +282,7 @@
"field.structure.empty": "Все още няма статии", "field.structure.empty": "Все още няма статии",
"field.users.empty": "Все още не са избрани потребители", "field.users.empty": "Все още не са избрани потребители",
"file.blueprint": "This file has no blueprint yet. You can define the setup in <strong>/site/blueprints/{template}.yml</strong>", "file.blueprint": "This file has no blueprint yet. You can define the setup in <strong>/site/blueprints/files/{blueprint}.yml</strong>",
"file.delete.confirm": "Сигурни ли сте, че искате да изтриете <br><strong>{filename}</strong>?", "file.delete.confirm": "Сигурни ли сте, че искате да изтриете <br><strong>{filename}</strong>?",
"file.sort": "Change position", "file.sort": "Change position",
@@ -272,6 +291,7 @@
"hide": "Hide", "hide": "Hide",
"hour": "Hour", "hour": "Hour",
"import": "Import",
"insert": "\u0412\u043c\u044a\u043a\u043d\u0438", "insert": "\u0412\u043c\u044a\u043a\u043d\u0438",
"insert.after": "Insert after", "insert.after": "Insert after",
"insert.before": "Insert before", "insert.before": "Insert before",
@@ -337,9 +357,9 @@
"login.code.label.password-reset": "Password reset code", "login.code.label.password-reset": "Password reset code",
"login.code.placeholder.email": "000 000", "login.code.placeholder.email": "000 000",
"login.code.text.email": "If your email address is registered, the requested code was sent via email.", "login.code.text.email": "If your email address is registered, the requested code was sent via email.",
"login.email.login.body": "Hi {user.nameOrEmail},\n\nYou recently requested a login code for the Kirby Panel.\nThe following login code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a login code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.", "login.email.login.body": "Hi {user.nameOrEmail},\n\nYou recently requested a login code for the Panel of {site}.\nThe following login code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a login code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.",
"login.email.login.subject": "Your login code", "login.email.login.subject": "Your login code",
"login.email.password-reset.body": "Hi {user.nameOrEmail},\n\nYou recently requested a password reset code for the Kirby Panel.\nThe following password reset code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a password reset code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.", "login.email.password-reset.body": "Hi {user.nameOrEmail},\n\nYou recently requested a password reset code for the Panel of {site}.\nThe following password reset code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a password reset code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.",
"login.email.password-reset.subject": "Your password reset code", "login.email.password-reset.subject": "Your password reset code",
"login.remember": "Keep me logged in", "login.remember": "Keep me logged in",
"login.reset": "Reset password", "login.reset": "Reset password",
@@ -385,7 +405,7 @@
"orientation.portrait": "Портрет", "orientation.portrait": "Портрет",
"orientation.square": "Квадрат", "orientation.square": "Квадрат",
"page.blueprint": "This page has no blueprint yet. You can define the setup in <strong>/site/blueprints/{template}.yml</strong>", "page.blueprint": "This page has no blueprint yet. You can define the setup in <strong>/site/blueprints/pages/{blueprint}.yml</strong>",
"page.changeSlug": "\u041f\u0440\u043e\u043c\u0435\u043d\u0438 URL", "page.changeSlug": "\u041f\u0440\u043e\u043c\u0435\u043d\u0438 URL",
"page.changeSlug.fromTitle": "\u0421\u044a\u0437\u0434\u0430\u0439\u0442\u0435 \u043e\u0442 \u0437\u0430\u0433\u043b\u0430\u0432\u0438\u0435\u0442\u043e", "page.changeSlug.fromTitle": "\u0421\u044a\u0437\u0434\u0430\u0439\u0442\u0435 \u043e\u0442 \u0437\u0430\u0433\u043b\u0430\u0432\u0438\u0435\u0442\u043e",
"page.changeStatus": "Промени статус", "page.changeStatus": "Промени статус",
@@ -417,7 +437,10 @@
"pagination.page": "Страница", "pagination.page": "Страница",
"password": "\u041f\u0430\u0440\u043e\u043b\u0430", "password": "\u041f\u0430\u0440\u043e\u043b\u0430",
"paste": "Paste",
"paste.after": "Paste after",
"pixel": "Пиксел", "pixel": "Пиксел",
"plugins": "Plugins",
"prev": "Previous", "prev": "Previous",
"preview": "Preview", "preview": "Preview",
"remove": "Премахни", "remove": "Премахни",
@@ -454,6 +477,8 @@
"template": "Образец", "template": "Образец",
"today": "Днес", "today": "Днес",
"server": "Server",
"site.blueprint": "The site has no blueprint yet. You can define the setup in <strong>/site/blueprints/site.yml</strong>", "site.blueprint": "The site has no blueprint yet. You can define the setup in <strong>/site/blueprints/site.yml</strong>",
"toolbar.button.code": "Код", "toolbar.button.code": "Код",
@@ -463,11 +488,15 @@
"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.heading.4": "Heading 4",
"toolbar.button.heading.5": "Heading 5",
"toolbar.button.heading.6": "Heading 6",
"toolbar.button.italic": "\u041d\u0430\u043a\u043b\u043e\u043d\u0435\u043d \u0448\u0440\u0438\u0444\u0442", "toolbar.button.italic": "\u041d\u0430\u043a\u043b\u043e\u043d\u0435\u043d \u0448\u0440\u0438\u0444\u0442",
"toolbar.button.file": "Файл", "toolbar.button.file": "Файл",
"toolbar.button.file.select": "Select a file", "toolbar.button.file.select": "Select a file",
"toolbar.button.file.upload": "Upload a file", "toolbar.button.file.upload": "Upload a file",
"toolbar.button.link": "\u0412\u0440\u044a\u0437\u043a\u0430", "toolbar.button.link": "\u0412\u0440\u044a\u0437\u043a\u0430",
"toolbar.button.paragraph": "Paragraph",
"toolbar.button.strike": "Strike-through", "toolbar.button.strike": "Strike-through",
"toolbar.button.ol": "Подреден списък", "toolbar.button.ol": "Подреден списък",
"toolbar.button.underline": "Underline", "toolbar.button.underline": "Underline",
@@ -497,7 +526,7 @@
"url.placeholder": "https://example.com", "url.placeholder": "https://example.com",
"user": "Потребител", "user": "Потребител",
"user.blueprint": "Можете да дефинирате допълнителни секции и полета на форми за тази потребителска роля в <strong>/site/blueprints/users/{role}.yml</strong>", "user.blueprint": "You can define additional sections and form fields for this user role in <strong>/site/blueprints/users/{blueprint}.yml</strong>",
"user.changeEmail": "Промени email", "user.changeEmail": "Промени email",
"user.changeLanguage": "Промени език", "user.changeLanguage": "Промени език",
"user.changeName": "Преименувай този потребител", "user.changeName": "Преименувай този потребител",
@@ -516,9 +545,10 @@
"view.account": "\u0412\u0430\u0448\u0438\u044f \u0430\u043a\u0430\u0443\u043d\u0442", "view.account": "\u0412\u0430\u0448\u0438\u044f \u0430\u043a\u0430\u0443\u043d\u0442",
"view.installation": "\u0418\u043d\u0441\u0442\u0430\u043b\u0430\u0446\u0438\u044f", "view.installation": "\u0418\u043d\u0441\u0442\u0430\u043b\u0430\u0446\u0438\u044f",
"view.languages": "Езици",
"view.resetPassword": "Reset password", "view.resetPassword": "Reset password",
"view.settings": "Настройки",
"view.site": "Сайт", "view.site": "Сайт",
"view.system": "System",
"view.users": "\u041f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u0438", "view.users": "\u041f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u0438",
"welcome": "Добре дошли", "welcome": "Добре дошли",

View File

@@ -1,5 +1,10 @@
{ {
"account.changeName": "Change your name",
"account.delete": "Delete your account",
"account.delete.confirm": "Do you really want to delete your account? You will be logged out immediately. Your account cannot be recovered.",
"add": "Afegir", "add": "Afegir",
"author": "Author",
"avatar": "Imatge del perfil", "avatar": "Imatge del perfil",
"back": "Tornar", "back": "Tornar",
"cancel": "Cancel\u00b7lar", "cancel": "Cancel\u00b7lar",
@@ -9,6 +14,7 @@
"collapse": "Col·lapsar", "collapse": "Col·lapsar",
"collapse.all": "Col·lapsar tot", "collapse.all": "Col·lapsar tot",
"copy": "Copiar", "copy": "Copiar",
"copy.all": "Copy all",
"create": "Crear", "create": "Crear",
"date": "Data", "date": "Data",
@@ -23,24 +29,28 @@
"days.tue": "dt.", "days.tue": "dt.",
"days.wed": "dc.", "days.wed": "dc.",
"debugging": "Debugging",
"delete": "Eliminar", "delete": "Eliminar",
"delete.all": "Eliminar tot", "delete.all": "Eliminar tot",
"dimensions": "Dimensions",
"disabled": "Desactivat",
"discard": "Descartar",
"download": "Descarregar",
"duplicate": "Duplicar",
"edit": "Editar",
"expand": "Expandir",
"expand.all": "Expandir tot",
"dialog.files.empty": "No hi ha cap fitxer per seleccionar", "dialog.files.empty": "No hi ha cap fitxer per seleccionar",
"dialog.pages.empty": "No hi ha cap pàgina per seleccionar", "dialog.pages.empty": "No hi ha cap pàgina per seleccionar",
"dialog.users.empty": "No hi ha cap usuari per seleccionar", "dialog.users.empty": "No hi ha cap usuari per seleccionar",
"dimensions": "Dimensions",
"disabled": "Desactivat",
"discard": "Descartar",
"download": "Descarregar",
"duplicate": "Duplicar",
"edit": "Editar",
"email": "Email", "email": "Email",
"email.placeholder": "mail@exemple.com", "email.placeholder": "mail@exemple.com",
"environment": "Environment",
"error.access.code": "Codi invàlid", "error.access.code": "Codi invàlid",
"error.access.login": "Inici de sessió no vàlid", "error.access.login": "Inici de sessió no vàlid",
"error.access.panel": "No tens permís per accedir al panell", "error.access.panel": "No tens permís per accedir al panell",
@@ -92,6 +102,7 @@
"error.language.code": "Introdueix un codi vàlid per a lidioma", "error.language.code": "Introdueix un codi vàlid per a lidioma",
"error.language.duplicate": "L'idioma ja existeix", "error.language.duplicate": "L'idioma ja existeix",
"error.language.name": "Introdueix un nom vàlid per a l'idioma", "error.language.name": "Introdueix un nom vàlid per a l'idioma",
"error.language.notFound": "The language could not be found",
"error.layout.validation.block": "There's an error in block {blockIndex} in layout {layoutIndex}", "error.layout.validation.block": "There's an error in block {blockIndex} in layout {layoutIndex}",
"error.layout.validation.settings": "There's an error in layout {index} settings", "error.layout.validation.settings": "There's an error in layout {index} settings",
@@ -100,6 +111,8 @@
"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.offline": "The Panel is currently offline",
"error.page.changeSlug.permission": "No teniu permís per canviar l'apèndix d'URL per a \"{slug}\"", "error.page.changeSlug.permission": "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": "La pàgina té errors i no es pot publicar",
"error.page.changeStatus.permission": "No es pot canviar l'estat d'aquesta pàgina", "error.page.changeStatus.permission": "No es pot canviar l'estat d'aquesta pàgina",
@@ -165,6 +178,7 @@
"error.user.password.undefined": "L'usuari no té una contrasenya", "error.user.password.undefined": "L'usuari no té una contrasenya",
"error.user.password.wrong": "Wrong password", "error.user.password.wrong": "Wrong password",
"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.undefined": "L'usuari no s'ha trobat",
"error.user.update.permission": "No tens permís per actualitzar l'usuari \"{name}\"", "error.user.update.permission": "No tens permís per actualitzar l'usuari \"{name}\"",
"error.validation.accepted": "Si us plau confirma", "error.validation.accepted": "Si us plau confirma",
@@ -208,6 +222,9 @@
"error.validation.time.between": "Please enter a time between {min} and {max}", "error.validation.time.between": "Please enter a time between {min} and {max}",
"error.validation.url": "Si us plau, introduïu una URL vàlida", "error.validation.url": "Si us plau, introduïu una URL vàlida",
"expand": "Expandir",
"expand.all": "Expandir tot",
"field.required": "El camp és obligatori", "field.required": "El camp és obligatori",
"field.blocks.changeType": "Change type", "field.blocks.changeType": "Change type",
"field.blocks.code.name": "Codi", "field.blocks.code.name": "Codi",
@@ -218,6 +235,7 @@
"field.blocks.delete.confirm.selected": "Do you really want to delete the selected blocks?", "field.blocks.delete.confirm.selected": "Do you really want to delete the selected blocks?",
"field.blocks.empty": "No blocks yet", "field.blocks.empty": "No blocks yet",
"field.blocks.fieldsets.label": "Please select a block type …", "field.blocks.fieldsets.label": "Please select a block type …",
"field.blocks.fieldsets.paste": "Press <kbd>{{ shortcut }}</kbd> to paste/import blocks from your clipboard",
"field.blocks.gallery.name": "Gallery", "field.blocks.gallery.name": "Gallery",
"field.blocks.gallery.images.empty": "No images yet", "field.blocks.gallery.images.empty": "No images yet",
"field.blocks.gallery.images.label": "Images", "field.blocks.gallery.images.label": "Images",
@@ -234,6 +252,7 @@
"field.blocks.image.placeholder": "Select an image", "field.blocks.image.placeholder": "Select an image",
"field.blocks.image.ratio": "Ratio", "field.blocks.image.ratio": "Ratio",
"field.blocks.image.url": "Image URL", "field.blocks.image.url": "Image URL",
"field.blocks.line.name": "Line",
"field.blocks.list.name": "List", "field.blocks.list.name": "List",
"field.blocks.markdown.name": "Markdown", "field.blocks.markdown.name": "Markdown",
"field.blocks.markdown.label": "Text", "field.blocks.markdown.label": "Text",
@@ -263,7 +282,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.blueprint": "This file has no blueprint yet. You can define the setup in <strong>/site/blueprints/{template}.yml</strong>", "file.blueprint": "This file has no blueprint yet. You can define the setup in <strong>/site/blueprints/files/{blueprint}.yml</strong>",
"file.delete.confirm": "Esteu segurs d'eliminar <br><strong>{filename}</strong>?", "file.delete.confirm": "Esteu segurs d'eliminar <br><strong>{filename}</strong>?",
"file.sort": "Change position", "file.sort": "Change position",
@@ -272,6 +291,7 @@
"hide": "Hide", "hide": "Hide",
"hour": "Hora", "hour": "Hora",
"import": "Import",
"insert": "Insertar", "insert": "Insertar",
"insert.after": "Insert after", "insert.after": "Insert after",
"insert.before": "Insert before", "insert.before": "Insert before",
@@ -337,9 +357,9 @@
"login.code.label.password-reset": "Password reset code", "login.code.label.password-reset": "Password reset code",
"login.code.placeholder.email": "000 000", "login.code.placeholder.email": "000 000",
"login.code.text.email": "If your email address is registered, the requested code was sent via email.", "login.code.text.email": "If your email address is registered, the requested code was sent via email.",
"login.email.login.body": "Hi {user.nameOrEmail},\n\nYou recently requested a login code for the Kirby Panel.\nThe following login code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a login code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.", "login.email.login.body": "Hi {user.nameOrEmail},\n\nYou recently requested a login code for the Panel of {site}.\nThe following login code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a login code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.",
"login.email.login.subject": "Your login code", "login.email.login.subject": "Your login code",
"login.email.password-reset.body": "Hi {user.nameOrEmail},\n\nYou recently requested a password reset code for the Kirby Panel.\nThe following password reset code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a password reset code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.", "login.email.password-reset.body": "Hi {user.nameOrEmail},\n\nYou recently requested a password reset code for the Panel of {site}.\nThe following password reset code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a password reset code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.",
"login.email.password-reset.subject": "Your password reset code", "login.email.password-reset.subject": "Your password reset code",
"login.remember": "Manten-me connectat", "login.remember": "Manten-me connectat",
"login.reset": "Reset password", "login.reset": "Reset password",
@@ -385,7 +405,7 @@
"orientation.portrait": "Vertical", "orientation.portrait": "Vertical",
"orientation.square": "Quadrat", "orientation.square": "Quadrat",
"page.blueprint": "This page has no blueprint yet. You can define the setup in <strong>/site/blueprints/{template}.yml</strong>", "page.blueprint": "This page has no blueprint yet. You can define the setup in <strong>/site/blueprints/pages/{blueprint}.yml</strong>",
"page.changeSlug": "Canviar URL", "page.changeSlug": "Canviar URL",
"page.changeSlug.fromTitle": "Crear a partir del t\u00edtol", "page.changeSlug.fromTitle": "Crear a partir del t\u00edtol",
"page.changeStatus": "Canviar l'estat", "page.changeStatus": "Canviar l'estat",
@@ -417,7 +437,10 @@
"pagination.page": "Pàgina", "pagination.page": "Pàgina",
"password": "Contrasenya", "password": "Contrasenya",
"paste": "Paste",
"paste.after": "Paste after",
"pixel": "Pixel", "pixel": "Pixel",
"plugins": "Plugins",
"prev": "Anterior", "prev": "Anterior",
"preview": "Preview", "preview": "Preview",
"remove": "Eliminar", "remove": "Eliminar",
@@ -454,6 +477,8 @@
"template": "Plantilla", "template": "Plantilla",
"today": "Avui", "today": "Avui",
"server": "Server",
"site.blueprint": "The site has no blueprint yet. You can define the setup in <strong>/site/blueprints/site.yml</strong>", "site.blueprint": "The site has no blueprint yet. You can define the setup in <strong>/site/blueprints/site.yml</strong>",
"toolbar.button.code": "Codi", "toolbar.button.code": "Codi",
@@ -463,11 +488,15 @@
"toolbar.button.heading.1": "Encapçalament 1", "toolbar.button.heading.1": "Encapçalament 1",
"toolbar.button.heading.2": "Encapçalament 2", "toolbar.button.heading.2": "Encapçalament 2",
"toolbar.button.heading.3": "Encapçalament 3", "toolbar.button.heading.3": "Encapçalament 3",
"toolbar.button.heading.4": "Heading 4",
"toolbar.button.heading.5": "Heading 5",
"toolbar.button.heading.6": "Heading 6",
"toolbar.button.italic": "Cursiva", "toolbar.button.italic": "Cursiva",
"toolbar.button.file": "Arxiu", "toolbar.button.file": "Arxiu",
"toolbar.button.file.select": "Selecciona un fitxer", "toolbar.button.file.select": "Selecciona un fitxer",
"toolbar.button.file.upload": "Carrega un fitxer", "toolbar.button.file.upload": "Carrega un fitxer",
"toolbar.button.link": "Enlla\u00e7", "toolbar.button.link": "Enlla\u00e7",
"toolbar.button.paragraph": "Paragraph",
"toolbar.button.strike": "Strike-through", "toolbar.button.strike": "Strike-through",
"toolbar.button.ol": "Llista ordenada", "toolbar.button.ol": "Llista ordenada",
"toolbar.button.underline": "Underline", "toolbar.button.underline": "Underline",
@@ -497,7 +526,7 @@
"url.placeholder": "https://example.com", "url.placeholder": "https://example.com",
"user": "Usuari", "user": "Usuari",
"user.blueprint": "Podeu definir seccions addicionals i camps de formulari per a aquest rol d'usuari a <strong>/site/blueprints/users/{role}.yml</strong>", "user.blueprint": "You can define additional sections and form fields for this user role in <strong>/site/blueprints/users/{blueprint}.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",
@@ -516,9 +545,10 @@
"view.account": "La teva compta", "view.account": "La teva compta",
"view.installation": "Instal·lació", "view.installation": "Instal·lació",
"view.languages": "Idiomes",
"view.resetPassword": "Reset password", "view.resetPassword": "Reset password",
"view.settings": "Configuració",
"view.site": "Lloc web", "view.site": "Lloc web",
"view.system": "System",
"view.users": "Usuaris", "view.users": "Usuaris",
"welcome": "Benvinguda", "welcome": "Benvinguda",

View File

@@ -1,5 +1,10 @@
{ {
"account.changeName": "Přejmenovat",
"account.delete": "Smazat účet",
"account.delete.confirm": "Opravdu chcete smazat svůj účet? Budete okamžitě odhlášeni. Účet nemůže být zpětně obnoven.",
"add": "P\u0159idat", "add": "P\u0159idat",
"author": "Autor",
"avatar": "Profilov\u00fd obr\u00e1zek", "avatar": "Profilov\u00fd obr\u00e1zek",
"back": "Zpět", "back": "Zpět",
"cancel": "Zru\u0161it", "cancel": "Zru\u0161it",
@@ -9,6 +14,7 @@
"collapse": "Sbalit", "collapse": "Sbalit",
"collapse.all": "Sbalit vše", "collapse.all": "Sbalit vše",
"copy": "Kopírovat", "copy": "Kopírovat",
"copy.all": "Kopírovat vše",
"create": "Vytvořit", "create": "Vytvořit",
"date": "Datum", "date": "Datum",
@@ -23,24 +29,28 @@
"days.tue": "\u00fat", "days.tue": "\u00fat",
"days.wed": "st", "days.wed": "st",
"debugging": "Ladění",
"delete": "Smazat", "delete": "Smazat",
"delete.all": "Smazat vše", "delete.all": "Smazat vše",
"dimensions": "Rozměry",
"disabled": "Zakázáno",
"discard": "Zahodit",
"download": "Stáhnout",
"duplicate": "Duplikovat",
"edit": "Upravit",
"expand": "Rozbalit",
"expand.all": "Rozbalit vše",
"dialog.files.empty": "Žádné soubory k výběru", "dialog.files.empty": "Žádné soubory k výběru",
"dialog.pages.empty": "Žádné stránky k výběru", "dialog.pages.empty": "Žádné stránky k výběru",
"dialog.users.empty": "Žádní uživatelé k výběru", "dialog.users.empty": "Žádní uživatelé k výběru",
"dimensions": "Rozměry",
"disabled": "Zakázáno",
"discard": "Zahodit",
"download": "Stáhnout",
"duplicate": "Duplikovat",
"edit": "Upravit",
"email": "Email", "email": "Email",
"email.placeholder": "mail@example.com", "email.placeholder": "mail@example.com",
"environment": "Prostředí",
"error.access.code": "Neplatný kód", "error.access.code": "Neplatný kód",
"error.access.login": "Neplatné přihlášení", "error.access.login": "Neplatné přihlášení",
"error.access.panel": "Nemáte oprávnění k přihlášení do panelu", "error.access.panel": "Nemáte oprávnění k přihlášení do panelu",
@@ -92,6 +102,7 @@
"error.language.code": "Zadejte prosím platný kód jazyka", "error.language.code": "Zadejte prosím platný kód jazyka",
"error.language.duplicate": "Jazyk již existuje", "error.language.duplicate": "Jazyk již existuje",
"error.language.name": "Zadejte prosím platné jméno jazyka", "error.language.name": "Zadejte prosím platné jméno jazyka",
"error.language.notFound": "Jazyk nebyl nalezen",
"error.layout.validation.block": "Chyba v bloku {blockIndex} v rozvržení {layoutIndex}", "error.layout.validation.block": "Chyba v bloku {blockIndex} v rozvržení {layoutIndex}",
"error.layout.validation.settings": "Chyba v nastavení rozvržení {index}", "error.layout.validation.settings": "Chyba v nastavení rozvržení {index}",
@@ -100,6 +111,8 @@
"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.offline": "Panel je v současnosti off-line",
"error.page.changeSlug.permission": "Nem\u016f\u017eete zm\u011bnit URL t\u00e9to str\u00e1nky", "error.page.changeSlug.permission": "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": "Stránka obsahuje chyby a nemohla být zveřejněna",
"error.page.changeStatus.permission": "Status této stránky nelze změnit", "error.page.changeStatus.permission": "Status této stránky nelze změnit",
@@ -165,6 +178,7 @@
"error.user.password.undefined": "Uživatel nemá nastavené heslo.", "error.user.password.undefined": "Uživatel nemá nastavené heslo.",
"error.user.password.wrong": "Špatné heslo", "error.user.password.wrong": "Špatné heslo",
"error.user.role.invalid": "Zadejte prosím platnou roli", "error.user.role.invalid": "Zadejte prosím platnou roli",
"error.user.undefined": "Uživatele se nepodařilo nalézt",
"error.user.update.permission": "Nemáte dovoleno upravit uživatele \"{name}\"", "error.user.update.permission": "Nemáte dovoleno upravit uživatele \"{name}\"",
"error.validation.accepted": "Potvrďte prosím", "error.validation.accepted": "Potvrďte prosím",
@@ -208,6 +222,9 @@
"error.validation.time.between": "Zadejte prosím čas v rozmezí od {min} do {max}", "error.validation.time.between": "Zadejte prosím čas v rozmezí od {min} do {max}",
"error.validation.url": "Zadejte prosím platnou adresu URL", "error.validation.url": "Zadejte prosím platnou adresu URL",
"expand": "Rozbalit",
"expand.all": "Rozbalit vše",
"field.required": "Pole musí být vyplněno.", "field.required": "Pole musí být vyplněno.",
"field.blocks.changeType": "Změnit typ", "field.blocks.changeType": "Změnit typ",
"field.blocks.code.name": "Kód", "field.blocks.code.name": "Kód",
@@ -218,6 +235,7 @@
"field.blocks.delete.confirm.selected": "Opravdu chcete smazat vybrané bloky?", "field.blocks.delete.confirm.selected": "Opravdu chcete smazat vybrané bloky?",
"field.blocks.empty": "Zatím žádné bloky", "field.blocks.empty": "Zatím žádné bloky",
"field.blocks.fieldsets.label": "Vyberte prosím typ bloku …", "field.blocks.fieldsets.label": "Vyberte prosím typ bloku …",
"field.blocks.fieldsets.paste": "Stiskněte<kbd>{{ shortcut }}</kbd> pro vložení/import bloků z Vaší schránky",
"field.blocks.gallery.name": "Galerie", "field.blocks.gallery.name": "Galerie",
"field.blocks.gallery.images.empty": "Zatím žádné obrázky", "field.blocks.gallery.images.empty": "Zatím žádné obrázky",
"field.blocks.gallery.images.label": "Obrázky", "field.blocks.gallery.images.label": "Obrázky",
@@ -234,6 +252,7 @@
"field.blocks.image.placeholder": "Vyberte obrázek", "field.blocks.image.placeholder": "Vyberte obrázek",
"field.blocks.image.ratio": "Poměr stran", "field.blocks.image.ratio": "Poměr stran",
"field.blocks.image.url": "URL obrázku", "field.blocks.image.url": "URL obrázku",
"field.blocks.line.name": "Čára",
"field.blocks.list.name": "Seznam", "field.blocks.list.name": "Seznam",
"field.blocks.markdown.name": "Markdown", "field.blocks.markdown.name": "Markdown",
"field.blocks.markdown.label": "Text", "field.blocks.markdown.label": "Text",
@@ -263,7 +282,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.blueprint": "Tento typ souboru nemá blueprint. Blueprint můžete definovat v <strong>/site/blueprints/{template}.yml</strong>", "file.blueprint": "Tento typ souboru nemá blueprint. Blueprint můžete definovat v <strong>/site/blueprints/files/{blueprint}.yml</strong>",
"file.delete.confirm": "Opravdu chcete smazat tento soubor?", "file.delete.confirm": "Opravdu chcete smazat tento soubor?",
"file.sort": "Změnit pozici", "file.sort": "Změnit pozici",
@@ -272,6 +291,7 @@
"hide": "Skrýt", "hide": "Skrýt",
"hour": "Hodina", "hour": "Hodina",
"import": "Import",
"insert": "Vlo\u017eit", "insert": "Vlo\u017eit",
"insert.after": "Vložit za", "insert.after": "Vložit za",
"insert.before": "Vložit před", "insert.before": "Vložit před",
@@ -337,9 +357,9 @@
"login.code.label.password-reset": "Kód pro resetování hesla", "login.code.label.password-reset": "Kód pro resetování hesla",
"login.code.placeholder.email": "000 000", "login.code.placeholder.email": "000 000",
"login.code.text.email": "Vaše e-mailová adresa byla zaregistrována, kód byl odeslán do Vaší e-mailové schránky.", "login.code.text.email": "Vaše e-mailová adresa byla zaregistrována, kód byl odeslán do Vaší e-mailové schránky.",
"login.email.login.body": "Ahoj {user.nameOrEmail},\n\nV nedávné době jsi zažádal(a) o kód pro přihlášení do Kirby Panelu.\nNásledující kód pro přihlášení je platný {timeout} minut:\n\n{code}\n\nPokud jsi o kód pro přihlášení nežádal(a), tuto zprávu prosím ignoruj a v případě dotazů prosím kontaktuj svého administrátora.\nZ bezpečnostních důvodů prosím tuto zprávu nepřeposílej.", "login.email.login.body": "Ahoj {user.nameOrEmail},\n\nV nedávné době jsi zažádal(a) o kód pro přihlášení do Kirby Panelu na stránce {site}.\nNásledující kód pro přihlášení je platný {timeout} minut:\n\n{code}\n\nPokud jsi o kód pro přihlášení nežádal(a), tuto zprávu prosím ignoruj a v případě dotazů prosím kontaktuj svého administrátora.\nZ bezpečnostních důvodů prosím tuto zprávu nepřeposílej nikomu dalšímu.",
"login.email.login.subject": "Váš kód pro přihlášení", "login.email.login.subject": "Váš kód pro přihlášení",
"login.email.password-reset.body": "Ahoj {user.nameOrEmail},\n\nV nedávné době jsi zažádal(a) o kód pro přihlášení do Kirby Panelu.\nNásledující kód pro přihlášení je platný {timeout} minut:\n\n{code}\n\nPokud jsi o kód pro přihlášení nežádal(a), tuto zprávu prosím ignoruj a v případě dotazů prosím kontaktuj svého administrátora.\nZ bezpečnostních důvodů prosím tuto zprávu nepřeposílej.", "login.email.password-reset.body": "Ahoj {user.nameOrEmail},\n\nV nedávné době jsi zažádal(a) o kód pro resetování hesla do Kirby Panelu na stránce {site}.\nNásledující kód pro resetování hesla je platný {timeout} minut:\n\n{code}\n\nPokud jsi o kód pro resetování hesla nežádal(a), tuto zprávu prosím ignoruj a v případě dotazů prosím kontaktuj svého administrátora.\nZ bezpečnostních důvodů prosím tuto zprávu nepřeposílej nikomu dalšímu.",
"login.email.password-reset.subject": "Váš kód pro resetování hesla", "login.email.password-reset.subject": "Váš kód pro resetování hesla",
"login.remember": "Zůstat přihlášen", "login.remember": "Zůstat přihlášen",
"login.reset": "Resetovat heslo", "login.reset": "Resetovat heslo",
@@ -385,7 +405,7 @@
"orientation.portrait": "Na výšku", "orientation.portrait": "Na výšku",
"orientation.square": "Čtverec", "orientation.square": "Čtverec",
"page.blueprint": "Tento typ stránky nemá blueprint. Blueprint můžete definovat v <strong>/site/blueprints/{template}.yml</strong>", "page.blueprint": "Tento typ stránky nemá blueprint. Blueprint můžete definovat v <strong>/site/blueprints/pages/{blueprint}.yml</strong>",
"page.changeSlug": "Zm\u011bnit URL", "page.changeSlug": "Zm\u011bnit URL",
"page.changeSlug.fromTitle": "Vytvo\u0159it z n\u00e1zvu", "page.changeSlug.fromTitle": "Vytvo\u0159it z n\u00e1zvu",
"page.changeStatus": "Změnit status", "page.changeStatus": "Změnit status",
@@ -417,7 +437,10 @@
"pagination.page": "Stránka", "pagination.page": "Stránka",
"password": "Heslo", "password": "Heslo",
"paste": "Vložit",
"paste.after": "Vložit za",
"pixel": "Pixel", "pixel": "Pixel",
"plugins": "Doplňky",
"prev": "Předchozí", "prev": "Předchozí",
"preview": "Náhled", "preview": "Náhled",
"remove": "Odstranit", "remove": "Odstranit",
@@ -454,6 +477,8 @@
"template": "\u0160ablona", "template": "\u0160ablona",
"today": "Dnes", "today": "Dnes",
"server": "Server",
"site.blueprint": "Hlavní panel nemá blueprint. Blueprint můžete definovat v <strong>/site/blueprints/site.yml</strong>", "site.blueprint": "Hlavní panel nemá blueprint. Blueprint můžete definovat v <strong>/site/blueprints/site.yml</strong>",
"toolbar.button.code": "Kód", "toolbar.button.code": "Kód",
@@ -463,11 +488,15 @@
"toolbar.button.heading.1": "Nadpis 1", "toolbar.button.heading.1": "Nadpis 1",
"toolbar.button.heading.2": "Nadpis 2", "toolbar.button.heading.2": "Nadpis 2",
"toolbar.button.heading.3": "Nadpis 3", "toolbar.button.heading.3": "Nadpis 3",
"toolbar.button.heading.4": "Nadpis 4",
"toolbar.button.heading.5": "Nadpis 5",
"toolbar.button.heading.6": "Nadpis 6",
"toolbar.button.italic": "Kurz\u00edva", "toolbar.button.italic": "Kurz\u00edva",
"toolbar.button.file": "Soubor", "toolbar.button.file": "Soubor",
"toolbar.button.file.select": "Vyberte soubor", "toolbar.button.file.select": "Vyberte soubor",
"toolbar.button.file.upload": "Nahrajte soubor", "toolbar.button.file.upload": "Nahrajte soubor",
"toolbar.button.link": "Odkaz", "toolbar.button.link": "Odkaz",
"toolbar.button.paragraph": "Odstavec",
"toolbar.button.strike": "Přeškrtnutí", "toolbar.button.strike": "Přeškrtnutí",
"toolbar.button.ol": "Číslovaný seznam", "toolbar.button.ol": "Číslovaný seznam",
"toolbar.button.underline": "Podtržení", "toolbar.button.underline": "Podtržení",
@@ -497,7 +526,7 @@
"url.placeholder": "https://example.com", "url.placeholder": "https://example.com",
"user": "Uživatel", "user": "Uživatel",
"user.blueprint": "Pro tuto uživatelskou roli můžete definovat další sekce a pole v <strong>/site/blueprints/users/{role}.yml</strong>", "user.blueprint": "Pro tuto uživatelskou roli můžete definovat další sekce a pole v <strong>/site/blueprints/users/{blueprint}.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",
@@ -516,9 +545,10 @@
"view.account": "V\u00e1\u0161 \u00fa\u010det", "view.account": "V\u00e1\u0161 \u00fa\u010det",
"view.installation": "Instalace", "view.installation": "Instalace",
"view.languages": "Jazyky",
"view.resetPassword": "Resetovat heslo", "view.resetPassword": "Resetovat heslo",
"view.settings": "Nastavení",
"view.site": "Stránka", "view.site": "Stránka",
"view.system": "Systém",
"view.users": "U\u017eivatel\u00e9", "view.users": "U\u017eivatel\u00e9",
"welcome": "Vítejte", "welcome": "Vítejte",

View File

@@ -1,5 +1,10 @@
{ {
"account.changeName": "Ændre dit navn",
"account.delete": "Slet din konto",
"account.delete.confirm": "Ønsker du virkelig at slette din konto? Du vil blive logget ud med det samme. Din konto kan ikke gendannes.",
"add": "Ny", "add": "Ny",
"author": "Forfatter",
"avatar": "Profilbillede", "avatar": "Profilbillede",
"back": "Tilbage", "back": "Tilbage",
"cancel": "Annuller", "cancel": "Annuller",
@@ -9,6 +14,7 @@
"collapse": "Fold sammen", "collapse": "Fold sammen",
"collapse.all": "Fold alle sammen", "collapse.all": "Fold alle sammen",
"copy": "Kopier", "copy": "Kopier",
"copy.all": "Kopier alle",
"create": "Opret", "create": "Opret",
"date": "Dato", "date": "Dato",
@@ -23,24 +29,28 @@
"days.tue": "Tir", "days.tue": "Tir",
"days.wed": "Ons", "days.wed": "Ons",
"debugging": "Fejlfinding",
"delete": "Slet", "delete": "Slet",
"delete.all": "Slet alle", "delete.all": "Slet alle",
"dimensions": "Dimensioner",
"disabled": "Deaktiveret",
"discard": "Kass\u00e9r",
"download": "Download",
"duplicate": "Dupliker",
"edit": "Rediger",
"expand": "Fold ud",
"expand.all": "Fold alle ud",
"dialog.files.empty": "Ingen filer kan vælges", "dialog.files.empty": "Ingen filer kan vælges",
"dialog.pages.empty": "Ingen sider kan vælges", "dialog.pages.empty": "Ingen sider kan vælges",
"dialog.users.empty": "Ingen brugere kan vælges", "dialog.users.empty": "Ingen brugere kan vælges",
"dimensions": "Dimensioner",
"disabled": "Deaktiveret",
"discard": "Kass\u00e9r",
"download": "Download",
"duplicate": "Dupliker",
"edit": "Rediger",
"email": "Email", "email": "Email",
"email.placeholder": "mail@eksempel.dk", "email.placeholder": "mail@eksempel.dk",
"environment": "Miljø",
"error.access.code": "Ugyldig kode", "error.access.code": "Ugyldig kode",
"error.access.login": "Ugyldigt log ind", "error.access.login": "Ugyldigt log ind",
"error.access.panel": "Du har ikke adgang til panelet", "error.access.panel": "Du har ikke adgang til panelet",
@@ -92,6 +102,7 @@
"error.language.code": "Indtast venligst en gyldig kode for sproget", "error.language.code": "Indtast venligst en gyldig kode for sproget",
"error.language.duplicate": "Sproget eksisterer allerede", "error.language.duplicate": "Sproget eksisterer allerede",
"error.language.name": "Indtast venligst et gyldigt navn for sproget", "error.language.name": "Indtast venligst et gyldigt navn for sproget",
"error.language.notFound": "Sproget fandtes ikke",
"error.layout.validation.block": "Der er fejl i blok {blockIndex} i layout {layoutIndex}", "error.layout.validation.block": "Der er fejl i blok {blockIndex} i layout {layoutIndex}",
"error.layout.validation.settings": "Der er fejl i layout {index} indstillinger", "error.layout.validation.settings": "Der er fejl i layout {index} indstillinger",
@@ -100,6 +111,8 @@
"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.offline": "Panelet er i øjeblikket offline",
"error.page.changeSlug.permission": "Du kan ikke ændre URL-endelse for \"{slug}\"", "error.page.changeSlug.permission": "Du kan ikke ændre URL-endelse for \"{slug}\"",
"error.page.changeStatus.incomplete": "Siden indeholder fejl og kan derfor ikke udgives", "error.page.changeStatus.incomplete": "Siden indeholder fejl og kan derfor ikke udgives",
"error.page.changeStatus.permission": "Status for denne side kan ikke ændres", "error.page.changeStatus.permission": "Status for denne side kan ikke ændres",
@@ -118,7 +131,7 @@
"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": "Indtast venligst et gyldigt sorteringsnummer. Nummeret kan ikke være negativt.", "error.page.num.invalid": "Indtast venligst et gyldigt sorteringsnummer. Nummeret kan ikke være negativt.",
"error.page.slug.invalid": "Please enter a valid URL appendix", "error.page.slug.invalid": "Indtast venligst et gyldigt URL appendix",
"error.page.slug.maxlength": "Navnet skal være kortere end \"{length}\" tegn", "error.page.slug.maxlength": "Navnet skal være kortere end \"{length}\" tegn",
"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",
@@ -163,8 +176,9 @@
"error.user.password.invalid": "Indtast venligst en gyldig adgangskode. Adgangskoder skal minimum være 8 tegn lange.", "error.user.password.invalid": "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.password.wrong": "Wrong password", "error.user.password.wrong": "Forkert adgangskode",
"error.user.role.invalid": "Indtast venligst en gyldig rolle", "error.user.role.invalid": "Indtast venligst en gyldig rolle",
"error.user.undefined": "Brugeren kunne ikke findes",
"error.user.update.permission": "Du har ikke tilladelse til at opdatere brugeren \"{name}\"", "error.user.update.permission": "Du har ikke tilladelse til at opdatere brugeren \"{name}\"",
"error.validation.accepted": "Bekræft venligst", "error.validation.accepted": "Bekræft venligst",
@@ -208,6 +222,9 @@
"error.validation.time.between": "Indtast venligst et tidspunkt imellem {min} og {max}", "error.validation.time.between": "Indtast venligst et tidspunkt imellem {min} og {max}",
"error.validation.url": "Indtast venligst en gyldig URL", "error.validation.url": "Indtast venligst en gyldig URL",
"expand": "Fold ud",
"expand.all": "Fold alle ud",
"field.required": "Feltet er påkrævet", "field.required": "Feltet er påkrævet",
"field.blocks.changeType": "Skift type", "field.blocks.changeType": "Skift type",
"field.blocks.code.name": "Kode", "field.blocks.code.name": "Kode",
@@ -218,6 +235,7 @@
"field.blocks.delete.confirm.selected": "Ønsker du virkelig at slette de valgte blokke?", "field.blocks.delete.confirm.selected": "Ønsker du virkelig at slette de valgte blokke?",
"field.blocks.empty": "Ingen blokke endnu", "field.blocks.empty": "Ingen blokke endnu",
"field.blocks.fieldsets.label": "Vælg venligst en blok type", "field.blocks.fieldsets.label": "Vælg venligst en blok type",
"field.blocks.fieldsets.paste": "Tryk <kbd>{{ shortcut }}</kbd> for at indsætte/importere blokke fra dit udklipsholder",
"field.blocks.gallery.name": "Galleri", "field.blocks.gallery.name": "Galleri",
"field.blocks.gallery.images.empty": "Ingen billeder endnu", "field.blocks.gallery.images.empty": "Ingen billeder endnu",
"field.blocks.gallery.images.label": "Billeder", "field.blocks.gallery.images.label": "Billeder",
@@ -234,6 +252,7 @@
"field.blocks.image.placeholder": "Vælg et billede", "field.blocks.image.placeholder": "Vælg et billede",
"field.blocks.image.ratio": "Størrelsesforhold", "field.blocks.image.ratio": "Størrelsesforhold",
"field.blocks.image.url": "Billede URL", "field.blocks.image.url": "Billede URL",
"field.blocks.line.name": "Linje",
"field.blocks.list.name": "Liste", "field.blocks.list.name": "Liste",
"field.blocks.markdown.name": "Markdown", "field.blocks.markdown.name": "Markdown",
"field.blocks.markdown.label": "Tekst", "field.blocks.markdown.label": "Tekst",
@@ -263,7 +282,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.blueprint": "Denne fil har intet blueprint endnu. Du kan definere opsætningen i <strong>/site/blueprints/{template}.yml</strong>", "file.blueprint": "Denne fil har intet blueprint endnu. Du kan definere opsætningen i <strong>/site/blueprints/files/{blueprint}.yml</strong>",
"file.delete.confirm": "\u00d8nsker du virkelig at slette denne fil?", "file.delete.confirm": "\u00d8nsker du virkelig at slette denne fil?",
"file.sort": "Skift position", "file.sort": "Skift position",
@@ -272,6 +291,7 @@
"hide": "Skjul", "hide": "Skjul",
"hour": "Time", "hour": "Time",
"import": "Importer",
"insert": "Inds\u00e6t", "insert": "Inds\u00e6t",
"insert.after": "Indsæt efter", "insert.after": "Indsæt efter",
"insert.before": "Indsæt før", "insert.before": "Indsæt før",
@@ -337,9 +357,9 @@
"login.code.label.password-reset": "Sikkerhedskode", "login.code.label.password-reset": "Sikkerhedskode",
"login.code.placeholder.email": "000 000", "login.code.placeholder.email": "000 000",
"login.code.text.email": "Hvis din email adresse er registreret er en sikkerhedskode blevet sendt via email.", "login.code.text.email": "Hvis din email adresse er registreret er en sikkerhedskode blevet sendt via email.",
"login.email.login.body": "Hej {user.nameOrEmail},\n\nDu har for nyligt anmodet om en log ind kode til Kirby Panel.\nFølgende log ind kode vil være gyldig i {timeout} minutter:\n\n{code}\n\nHvis du ikke har anmodet om en log ind kode, kan du blot ignorere denne email eller kontakte din administrator hvis du har spørgsmål.\nAf sikkerhedsmæssige årsager, bør du IKKE videresende denne email.", "login.email.login.body": "Hej {user.nameOrEmail},\n\nDu har for nyligt anmodet om en log ind kode til panelet af {site}.\nFølgende log ind kode vil være gyldig i {timeout} minutter:\n\n{code}\n\nHvis du ikke har anmodet om en log ind kode, kan du blot ignorere denne email eller kontakte din administrator hvis du har spørgsmål.\nAf sikkerhedsmæssige årsager, bør du IKKE videresende denne email.",
"login.email.login.subject": "Din log ind kode", "login.email.login.subject": "Din log ind kode",
"login.email.password-reset.body": "Hej {user.nameOrEmail},\n\nDu har for nyligt anmodet om kode til nulstilling af adgangskode til Kirby Panel.\nFølgende kode til nulstilling af adgangskode vil være gyldig i {timeout} minutter:\n\n{code}\n\nHvis du ikke har anmodet om kode til nulstilling af adgangskode, kan du blot ignorere denne email eller kontakte din administrator hvis du har spørgsmål.\nAf sikkerhedsmæssige årsager, bør du IKKE videresende denne email.", "login.email.password-reset.body": "Hej {user.nameOrEmail},\n\nDu har for nyligt anmodet om kode til nulstilling af adgangskode til panelet af {site}.\nFølgende kode til nulstilling af adgangskode vil være gyldig i {timeout} minutter:\n\n{code}\n\nHvis du ikke har anmodet om kode til nulstilling af adgangskode, kan du blot ignorere denne email eller kontakte din administrator hvis du har spørgsmål.\nAf sikkerhedsmæssige årsager, bør du IKKE videresende denne email.",
"login.email.password-reset.subject": "Din kode til nulstilling af adgangskode", "login.email.password-reset.subject": "Din kode til nulstilling af adgangskode",
"login.remember": "Forbliv logget ind", "login.remember": "Forbliv logget ind",
"login.reset": "Nulstil adgangskode", "login.reset": "Nulstil adgangskode",
@@ -372,11 +392,11 @@
"more": "Mere", "more": "Mere",
"name": "Navn", "name": "Navn",
"next": "Næste", "next": "Næste",
"no": "no", "no": "nej",
"off": "Sluk", "off": "Sluk",
"on": "Tænd", "on": "Tænd",
"open": "Åben", "open": "Åben",
"open.newWindow": "Open in new window", "open.newWindow": "Åben i et nyt vindue",
"options": "Indstillinger", "options": "Indstillinger",
"options.none": "Ingen muligheder", "options.none": "Ingen muligheder",
@@ -385,7 +405,7 @@
"orientation.portrait": "Portræt", "orientation.portrait": "Portræt",
"orientation.square": "Kvadrat", "orientation.square": "Kvadrat",
"page.blueprint": "Denne side har intet blueprint endnu. Du kan definere opsætningen i <strong>/site/blueprints/{template}.yml</strong>", "page.blueprint": "Denne side har intet blueprint endnu. Du kan definere opsætningen i <strong>/site/blueprints/pages/{blueprint}.yml</strong>",
"page.changeSlug": "\u00c6ndre URL", "page.changeSlug": "\u00c6ndre URL",
"page.changeSlug.fromTitle": "Generer udfra titel", "page.changeSlug.fromTitle": "Generer udfra titel",
"page.changeStatus": "Skift status", "page.changeStatus": "Skift status",
@@ -417,7 +437,10 @@
"pagination.page": "Side", "pagination.page": "Side",
"password": "Adgangskode", "password": "Adgangskode",
"paste": "Indsæt",
"paste.after": "Indsæt efter",
"pixel": "Pixel", "pixel": "Pixel",
"plugins": "Plugins",
"prev": "Forrige", "prev": "Forrige",
"preview": "Forhåndsvisning", "preview": "Forhåndsvisning",
"remove": "Fjern", "remove": "Fjern",
@@ -454,6 +477,8 @@
"template": "Skabelon", "template": "Skabelon",
"today": "Idag", "today": "Idag",
"server": "Server",
"site.blueprint": "Sitet har intet blueprint endnu. Du kan definere opsætningen i <strong>/site/blueprints/site.yml</strong>", "site.blueprint": "Sitet har intet blueprint endnu. Du kan definere opsætningen i <strong>/site/blueprints/site.yml</strong>",
"toolbar.button.code": "Kode", "toolbar.button.code": "Kode",
@@ -463,14 +488,18 @@
"toolbar.button.heading.1": "Overskrift 1", "toolbar.button.heading.1": "Overskrift 1",
"toolbar.button.heading.2": "Overskrift 2", "toolbar.button.heading.2": "Overskrift 2",
"toolbar.button.heading.3": "Overskrift 3", "toolbar.button.heading.3": "Overskrift 3",
"toolbar.button.heading.4": "Overskrift 4",
"toolbar.button.heading.5": "Overskrift 5",
"toolbar.button.heading.6": "Overskrift 6",
"toolbar.button.italic": "Kursiv tekst", "toolbar.button.italic": "Kursiv tekst",
"toolbar.button.file": "Fil", "toolbar.button.file": "Fil",
"toolbar.button.file.select": "Vælg en fil", "toolbar.button.file.select": "Vælg en fil",
"toolbar.button.file.upload": "Upload en fil", "toolbar.button.file.upload": "Upload en fil",
"toolbar.button.link": "Link", "toolbar.button.link": "Link",
"toolbar.button.strike": "Strike-through", "toolbar.button.paragraph": "Afsnit",
"toolbar.button.strike": "Gennemstreg",
"toolbar.button.ol": "Ordnet liste", "toolbar.button.ol": "Ordnet liste",
"toolbar.button.underline": "Underline", "toolbar.button.underline": "Understreg",
"toolbar.button.ul": "Punktliste", "toolbar.button.ul": "Punktliste",
"translation.author": "Kirby Team", "translation.author": "Kirby Team",
@@ -497,7 +526,7 @@
"url.placeholder": "https://example.com", "url.placeholder": "https://example.com",
"user": "Bruger", "user": "Bruger",
"user.blueprint": "Du kan definere yderligere sektioner og formular felter for denne brugerrolle i <strong>/site/blueprints/users/{role}.yml</strong>", "user.blueprint": "Du kan definere yderligere sektioner og formular felter for denne brugerrolle i <strong>/site/blueprints/users/{blueprint}.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",
@@ -516,12 +545,13 @@
"view.account": "Din konto", "view.account": "Din konto",
"view.installation": "Installation", "view.installation": "Installation",
"view.languages": "Sprog",
"view.resetPassword": "Nulstil adgangskode", "view.resetPassword": "Nulstil adgangskode",
"view.settings": "Indstillinger",
"view.site": "Website", "view.site": "Website",
"view.system": "System",
"view.users": "Brugere", "view.users": "Brugere",
"welcome": "Velkommen", "welcome": "Velkommen",
"year": "År", "year": "År",
"yes": "yes" "yes": "ja"
} }

View File

@@ -1,5 +1,10 @@
{ {
"account.changeName": "Deinen Namen ändern",
"account.delete": "Deinen Account löschen",
"account.delete.confirm": "Willst du deinen Account wirklich löschen? Du wirst sofort danach abgemeldet. Dein Account kann nicht wieder hergestellt werden. ",
"add": "Hinzuf\u00fcgen", "add": "Hinzuf\u00fcgen",
"author": "Autor",
"avatar": "Profilbild", "avatar": "Profilbild",
"back": "Zurück", "back": "Zurück",
"cancel": "Abbrechen", "cancel": "Abbrechen",
@@ -9,6 +14,7 @@
"collapse": "Zusammenklappen", "collapse": "Zusammenklappen",
"collapse.all": "Alle zusammenklappen", "collapse.all": "Alle zusammenklappen",
"copy": "Kopieren", "copy": "Kopieren",
"copy.all": "Alle kopieren",
"create": "Erstellen", "create": "Erstellen",
"date": "Datum", "date": "Datum",
@@ -23,24 +29,28 @@
"days.tue": "Di", "days.tue": "Di",
"days.wed": "Mi", "days.wed": "Mi",
"debugging": "Debugging",
"delete": "L\u00f6schen", "delete": "L\u00f6schen",
"delete.all": "Alle löschen", "delete.all": "Alle löschen",
"dimensions": "Maße",
"disabled": "Gesperrt",
"discard": "Verwerfen",
"download": "Download",
"duplicate": "Duplizieren",
"edit": "Bearbeiten",
"expand": "Aufklappen",
"expand.all": "Alle aufklappen",
"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 Accounts", "dialog.users.empty": "Keine verfügbaren Accounts",
"dimensions": "Maße",
"disabled": "Gesperrt",
"discard": "Verwerfen",
"download": "Download",
"duplicate": "Duplizieren",
"edit": "Bearbeiten",
"email": "E-Mail", "email": "E-Mail",
"email.placeholder": "mail@beispiel.de", "email.placeholder": "mail@beispiel.de",
"environment": "Umgebung",
"error.access.code": "Ungültiger Code", "error.access.code": "Ungültiger Code",
"error.access.login": "Ungültige Zugangsdaten", "error.access.login": "Ungültige Zugangsdaten",
"error.access.panel": "Du hast keinen Zugang zum Panel", "error.access.panel": "Du hast keinen Zugang zum Panel",
@@ -92,6 +102,7 @@
"error.language.code": "Bitte gib einen gültigen Code für die Sprache an", "error.language.code": "Bitte gib einen gültigen Code für die Sprache an",
"error.language.duplicate": "Die Sprache besteht bereits", "error.language.duplicate": "Die Sprache besteht bereits",
"error.language.name": "Bitte gib einen gültigen Namen für die Sprache an", "error.language.name": "Bitte gib einen gültigen Namen für die Sprache an",
"error.language.notFound": "Die Sprache konnte nicht gefunden werden",
"error.layout.validation.block": "Fehler in Block {blockIndex} in Layout {layoutIndex}", "error.layout.validation.block": "Fehler in Block {blockIndex} in Layout {layoutIndex}",
"error.layout.validation.settings": "Fehler in den Einstellungen von Layout {index}", "error.layout.validation.settings": "Fehler in den Einstellungen von Layout {index}",
@@ -100,6 +111,8 @@
"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.offline": "Das Panel ist zur Zeit offline",
"error.page.changeSlug.permission": "Du darfst die URL der Seite \"{slug}\" nicht ändern", "error.page.changeSlug.permission": "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": "Die Seite ist nicht vollständig und kann daher nicht veröffentlicht werden",
"error.page.changeStatus.permission": "Der Status der Seite kann nicht geändert werden", "error.page.changeStatus.permission": "Der Status der Seite kann nicht geändert werden",
@@ -165,6 +178,7 @@
"error.user.password.undefined": "Der Account hat kein Passwort", "error.user.password.undefined": "Der Account hat kein Passwort",
"error.user.password.wrong": "Falsches Passwort", "error.user.password.wrong": "Falsches 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.undefined": "Der Benutzer wurde nicht gefunden",
"error.user.update.permission": "Du darfst den den Account \"{name}\" nicht bearbeiten", "error.user.update.permission": "Du darfst den den Account \"{name}\" nicht bearbeiten",
"error.validation.accepted": "Bitte bestätige", "error.validation.accepted": "Bitte bestätige",
@@ -208,6 +222,9 @@
"error.validation.time.between": "Bitte gib eine Zeit zwischen {min} und {max} ein", "error.validation.time.between": "Bitte gib eine Zeit zwischen {min} und {max} ein",
"error.validation.url": "Bitte gib eine gültige URL ein", "error.validation.url": "Bitte gib eine gültige URL ein",
"expand": "Aufklappen",
"expand.all": "Alle aufklappen",
"field.required": "Das Feld ist Pflicht", "field.required": "Das Feld ist Pflicht",
"field.blocks.changeType": "Blocktyp ändern", "field.blocks.changeType": "Blocktyp ändern",
"field.blocks.code.name": "Code", "field.blocks.code.name": "Code",
@@ -218,6 +235,7 @@
"field.blocks.delete.confirm.selected": "Willst du wirklich die ausgewählten Blöcke löschen?", "field.blocks.delete.confirm.selected": "Willst du wirklich die ausgewählten Blöcke löschen?",
"field.blocks.empty": "Keine Blöcke", "field.blocks.empty": "Keine Blöcke",
"field.blocks.fieldsets.label": "Bitte wähle einen Blocktyp aus …", "field.blocks.fieldsets.label": "Bitte wähle einen Blocktyp aus …",
"field.blocks.fieldsets.paste": "Drücke <kbd>{{ shortcut }}</kbd> um Blöcke aus der Zwischenablage zu importieren",
"field.blocks.gallery.name": "Galerie", "field.blocks.gallery.name": "Galerie",
"field.blocks.gallery.images.empty": "Keine Bilder", "field.blocks.gallery.images.empty": "Keine Bilder",
"field.blocks.gallery.images.label": "Bilder", "field.blocks.gallery.images.label": "Bilder",
@@ -234,6 +252,7 @@
"field.blocks.image.placeholder": "Bild auswählen", "field.blocks.image.placeholder": "Bild auswählen",
"field.blocks.image.ratio": "Seitenverhältnis", "field.blocks.image.ratio": "Seitenverhältnis",
"field.blocks.image.url": "Bild URL", "field.blocks.image.url": "Bild URL",
"field.blocks.line.name": "Linie",
"field.blocks.list.name": "Liste", "field.blocks.list.name": "Liste",
"field.blocks.markdown.name": "Markdown", "field.blocks.markdown.name": "Markdown",
"field.blocks.markdown.label": "Text", "field.blocks.markdown.label": "Text",
@@ -263,7 +282,7 @@
"field.structure.empty": "Es bestehen keine Eintr\u00e4ge.", "field.structure.empty": "Es bestehen keine Eintr\u00e4ge.",
"field.users.empty": "Keine Accounts ausgewählt", "field.users.empty": "Keine Accounts ausgewählt",
"file.blueprint": "Du kannst zusätzliche Felder und Bereiche für diese Datei in <strong>/site/blueprints/{template}.yml</strong> anlegen", "file.blueprint": "Du kannst zusätzliche Felder und Bereiche für diese Datei in <strong>/site/blueprints/files/{blueprint}.yml</strong> anlegen",
"file.delete.confirm": "Willst du die Datei <strong>{filename}</strong> <br>wirklich löschen?", "file.delete.confirm": "Willst du die Datei <strong>{filename}</strong> <br>wirklich löschen?",
"file.sort": "Position ändern", "file.sort": "Position ändern",
@@ -272,6 +291,7 @@
"hide": "Verbergen", "hide": "Verbergen",
"hour": "Stunde", "hour": "Stunde",
"import": "Importieren",
"insert": "Einf\u00fcgen", "insert": "Einf\u00fcgen",
"insert.after": "Danach einfügen", "insert.after": "Danach einfügen",
"insert.before": "Davor einfügen", "insert.before": "Davor einfügen",
@@ -337,9 +357,9 @@
"login.code.label.password-reset": "Anmeldecode", "login.code.label.password-reset": "Anmeldecode",
"login.code.placeholder.email": "000 000", "login.code.placeholder.email": "000 000",
"login.code.text.email": "Wenn deine E-Mail-Adresse registriert ist, wurde der angeforderte Code per E-Mail versendet.", "login.code.text.email": "Wenn deine E-Mail-Adresse registriert ist, wurde der angeforderte Code per E-Mail versendet.",
"login.email.login.body": "Hallo {user.nameOrEmail},\n\ndu hast gerade einen Anmeldecode für das Kirby Panel angefordert.\nDer folgende Anmeldecode ist für die nächsten {timeout} Minuten gültig:\n\n{code}\n\nWenn du keinen Anmeldecode angefordert hast, ignoriere bitte diese E-Mail oder kontaktiere bei Fragen deinen Administrator.\nBitte leite diese E-Mail aus Sicherheitsgründen NICHT weiter.", "login.email.login.body": "Hallo {user.nameOrEmail},\n\ndu hast gerade einen Anmeldecode für das Kirby Panel von {site} angefordert.\n\nDer folgende Anmeldecode ist für die nächsten {timeout} Minuten gültig:\n\n{code}\n\nWenn du keinen Anmeldecode angefordert hast, ignoriere bitte diese E-Mail oder kontaktiere bei Fragen deinen Administrator.\nBitte leite diese E-Mail aus Sicherheitsgründen NICHT weiter.",
"login.email.login.subject": "Dein Anmeldecode", "login.email.login.subject": "Dein Anmeldecode",
"login.email.password-reset.body": "Hallo {user.nameOrEmail},\n\ndu hast gerade einen Anmeldecode für das Kirby Panel angefordert.\nDer folgende Anmeldecode ist für die nächsten {timeout} Minuten gültig:\n\n{code}\n\nWenn du keinen Anmeldecode angefordert hast, ignoriere bitte diese E-Mail oder kontaktiere bei Fragen deinen Administrator.\nBitte leite diese E-Mail aus Sicherheitsgründen NICHT weiter.", "login.email.password-reset.body": "Hallo {user.nameOrEmail},\n\ndu hast gerade einen Anmeldecode für das Kirby Panel von {site} angefordert.\n\nDer folgende Anmeldecode ist für die nächsten {timeout} Minuten gültig:\n\n{code}\n\nWenn du keinen Anmeldecode angefordert hast, ignoriere bitte diese E-Mail oder kontaktiere bei Fragen deinen Administrator.\nBitte leite diese E-Mail aus Sicherheitsgründen NICHT weiter.",
"login.email.password-reset.subject": "Dein Anmeldecode", "login.email.password-reset.subject": "Dein Anmeldecode",
"login.remember": "Angemeldet bleiben", "login.remember": "Angemeldet bleiben",
"login.reset": "Passwort zurücksetzen", "login.reset": "Passwort zurücksetzen",
@@ -385,7 +405,7 @@
"orientation.portrait": "Hochformat", "orientation.portrait": "Hochformat",
"orientation.square": "Quadratisch", "orientation.square": "Quadratisch",
"page.blueprint": "Du kannst zusätzliche Felder und Bereiche für diese Seite in <strong>/site/blueprints/{template}.yml</strong> anlegen", "page.blueprint": "Du kannst zusätzliche Felder und Bereiche für diese Seite in <strong>/site/blueprints/pages/{blueprint}.yml</strong> anlegen",
"page.changeSlug": "URL \u00e4ndern", "page.changeSlug": "URL \u00e4ndern",
"page.changeSlug.fromTitle": "Aus Titel erzeugen", "page.changeSlug.fromTitle": "Aus Titel erzeugen",
"page.changeStatus": "Status ändern", "page.changeStatus": "Status ändern",
@@ -417,7 +437,10 @@
"pagination.page": "Seite", "pagination.page": "Seite",
"password": "Passwort", "password": "Passwort",
"paste": "Einfügen",
"paste.after": "Danach einfügen",
"pixel": "Pixel", "pixel": "Pixel",
"plugins": "Plugins",
"prev": "Vorheriger Eintrag", "prev": "Vorheriger Eintrag",
"preview": "Vorschau", "preview": "Vorschau",
"remove": "Entfernen", "remove": "Entfernen",
@@ -454,6 +477,8 @@
"template": "Vorlage", "template": "Vorlage",
"today": "Heute", "today": "Heute",
"server": "Server",
"site.blueprint": "Du kannst zusätzliche Felder und Bereiche für die Seite in <strong>/site/blueprints/site.yml</strong> anlegen", "site.blueprint": "Du kannst zusätzliche Felder und Bereiche für die Seite in <strong>/site/blueprints/site.yml</strong> anlegen",
"toolbar.button.code": "Code", "toolbar.button.code": "Code",
@@ -463,11 +488,15 @@
"toolbar.button.heading.1": "Überschrift 1", "toolbar.button.heading.1": "Überschrift 1",
"toolbar.button.heading.2": "Überschrift 2", "toolbar.button.heading.2": "Überschrift 2",
"toolbar.button.heading.3": "Überschrift 3", "toolbar.button.heading.3": "Überschrift 3",
"toolbar.button.heading.4": "Überschrift 4",
"toolbar.button.heading.5": "Überschrift 5",
"toolbar.button.heading.6": "Überschrift 6",
"toolbar.button.italic": "Kursiver Text", "toolbar.button.italic": "Kursiver Text",
"toolbar.button.file": "Datei", "toolbar.button.file": "Datei",
"toolbar.button.file.select": "Datei auswählen", "toolbar.button.file.select": "Datei auswählen",
"toolbar.button.file.upload": "Datei hochladen", "toolbar.button.file.upload": "Datei hochladen",
"toolbar.button.link": "Link", "toolbar.button.link": "Link",
"toolbar.button.paragraph": "Absatz",
"toolbar.button.strike": "Durchgestrichen", "toolbar.button.strike": "Durchgestrichen",
"toolbar.button.ol": "Geordnete Liste", "toolbar.button.ol": "Geordnete Liste",
"toolbar.button.underline": "Unterstrichen", "toolbar.button.underline": "Unterstrichen",
@@ -497,7 +526,7 @@
"url.placeholder": "https://beispiel.de", "url.placeholder": "https://beispiel.de",
"user": "Account", "user": "Account",
"user.blueprint": "Du kannst zusätzliche Felder und Bereiche für diese Rolle in <strong>/site/blueprints/users/{role}.yml</strong> anlegen", "user.blueprint": "Du kannst zusätzliche Felder und Bereiche für diese Rolle in <strong>/site/blueprints/users/{blueprint}.yml</strong> anlegen",
"user.changeEmail": "E-Mail ändern", "user.changeEmail": "E-Mail ändern",
"user.changeLanguage": "Sprache ändern", "user.changeLanguage": "Sprache ändern",
"user.changeName": "Account umbenennen", "user.changeName": "Account umbenennen",
@@ -516,9 +545,10 @@
"view.account": "Dein Account", "view.account": "Dein Account",
"view.installation": "Installation", "view.installation": "Installation",
"view.languages": "Sprachen",
"view.resetPassword": "Passwort zurücksetzen", "view.resetPassword": "Passwort zurücksetzen",
"view.settings": "Einstellungen",
"view.site": "Seite", "view.site": "Seite",
"view.system": "System",
"view.users": "Accounts", "view.users": "Accounts",
"welcome": "Willkommen", "welcome": "Willkommen",

View File

@@ -1,5 +1,10 @@
{ {
"account.changeName": "Change your name",
"account.delete": "Delete your account",
"account.delete.confirm": "Do you really want to delete your account? You will be logged out immediately. Your account cannot be recovered.",
"add": "\u03a0\u03c1\u03bf\u03c3\u03b8\u03ae\u03ba\u03b7", "add": "\u03a0\u03c1\u03bf\u03c3\u03b8\u03ae\u03ba\u03b7",
"author": "Author",
"avatar": "\u0395\u03b9\u03ba\u03cc\u03bd\u03b1 \u03c0\u03c1\u03bf\u03c6\u03af\u03bb", "avatar": "\u0395\u03b9\u03ba\u03cc\u03bd\u03b1 \u03c0\u03c1\u03bf\u03c6\u03af\u03bb",
"back": "Πίσω", "back": "Πίσω",
"cancel": "\u0391\u03ba\u03cd\u03c1\u03c9\u03c3\u03b7", "cancel": "\u0391\u03ba\u03cd\u03c1\u03c9\u03c3\u03b7",
@@ -9,6 +14,7 @@
"collapse": "Collapse", "collapse": "Collapse",
"collapse.all": "Collapse All", "collapse.all": "Collapse All",
"copy": "Αντιγραφή", "copy": "Αντιγραφή",
"copy.all": "Copy all",
"create": "Δημιουργία", "create": "Δημιουργία",
"date": "Ημερομηνία", "date": "Ημερομηνία",
@@ -23,24 +29,28 @@
"days.tue": "\u03a4\u03c1\u03af", "days.tue": "\u03a4\u03c1\u03af",
"days.wed": "\u03a4\u03b5\u03c4", "days.wed": "\u03a4\u03b5\u03c4",
"debugging": "Debugging",
"delete": "\u0394\u03b9\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae", "delete": "\u0394\u03b9\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae",
"delete.all": "Delete all", "delete.all": "Delete all",
"dimensions": "Διαστάσεις",
"disabled": "Disabled",
"discard": "Απόρριψη",
"download": "Λήψη",
"duplicate": "Αντίγραφο",
"edit": "\u0395\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1",
"expand": "Expand",
"expand.all": "Expand All",
"dialog.files.empty": "No files to select", "dialog.files.empty": "No files to select",
"dialog.pages.empty": "No pages to select", "dialog.pages.empty": "No pages to select",
"dialog.users.empty": "No users to select", "dialog.users.empty": "No users to select",
"dimensions": "Διαστάσεις",
"disabled": "Disabled",
"discard": "Απόρριψη",
"download": "Λήψη",
"duplicate": "Αντίγραφο",
"edit": "\u0395\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1",
"email": "Διεύθυνση ηλεκτρονικού ταχυδρομείου", "email": "Διεύθυνση ηλεκτρονικού ταχυδρομείου",
"email.placeholder": "mail@example.com", "email.placeholder": "mail@example.com",
"environment": "Environment",
"error.access.code": "Mη έγκυρος κωδικός", "error.access.code": "Mη έγκυρος κωδικός",
"error.access.login": "Mη έγκυρη σύνδεση", "error.access.login": "Mη έγκυρη σύνδεση",
"error.access.panel": "Δεν επιτρέπεται η πρόσβαση στον πίνακα ελέγχου", "error.access.panel": "Δεν επιτρέπεται η πρόσβαση στον πίνακα ελέγχου",
@@ -92,6 +102,7 @@
"error.language.code": "Please enter a valid code for the language", "error.language.code": "Please enter a valid code for the language",
"error.language.duplicate": "The language already exists", "error.language.duplicate": "The language already exists",
"error.language.name": "Please enter a valid name for the language", "error.language.name": "Please enter a valid name for the language",
"error.language.notFound": "The language could not be found",
"error.layout.validation.block": "There's an error in block {blockIndex} in layout {layoutIndex}", "error.layout.validation.block": "There's an error in block {blockIndex} in layout {layoutIndex}",
"error.layout.validation.settings": "There's an error in layout {index} settings", "error.layout.validation.settings": "There's an error in layout {index} settings",
@@ -100,6 +111,8 @@
"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.offline": "The Panel is currently offline",
"error.page.changeSlug.permission": "Δεν επιτρέπεται να αλλάξετε το URL της σελίδας \"{slug}\"", "error.page.changeSlug.permission": "Δεν επιτρέπεται να αλλάξετε το URL της σελίδας \"{slug}\"",
"error.page.changeStatus.incomplete": "Δεν ήταν δυνατή η δημοσίευση της σελίδας καθώς περιέχει σφάλματα", "error.page.changeStatus.incomplete": "Δεν ήταν δυνατή η δημοσίευση της σελίδας καθώς περιέχει σφάλματα",
"error.page.changeStatus.permission": "Δεν είναι δυνατή η αλλαγή κατάστασης για αυτή τη σελίδα", "error.page.changeStatus.permission": "Δεν είναι δυνατή η αλλαγή κατάστασης για αυτή τη σελίδα",
@@ -165,6 +178,7 @@
"error.user.password.undefined": "Ο χρήστης δεν έχει κωδικό πρόσβασης", "error.user.password.undefined": "Ο χρήστης δεν έχει κωδικό πρόσβασης",
"error.user.password.wrong": "Wrong password", "error.user.password.wrong": "Wrong password",
"error.user.role.invalid": "Παρακαλώ εισαγάγετε έναν έγκυρο ρόλο", "error.user.role.invalid": "Παρακαλώ εισαγάγετε έναν έγκυρο ρόλο",
"error.user.undefined": "Δεν είναι δυνατή η εύρεση του χρήστη",
"error.user.update.permission": "Δεν επιτρέπεται η ενημέρωση του χρήστη \"{name}\"", "error.user.update.permission": "Δεν επιτρέπεται η ενημέρωση του χρήστη \"{name}\"",
"error.validation.accepted": "Παρακαλώ επιβεβαιώστε", "error.validation.accepted": "Παρακαλώ επιβεβαιώστε",
@@ -208,6 +222,9 @@
"error.validation.time.between": "Please enter a time between {min} and {max}", "error.validation.time.between": "Please enter a time between {min} and {max}",
"error.validation.url": "Παρακαλώ εισάγετε μια έγκυρη διεύθυνση URL", "error.validation.url": "Παρακαλώ εισάγετε μια έγκυρη διεύθυνση URL",
"expand": "Expand",
"expand.all": "Expand All",
"field.required": "The field is required", "field.required": "The field is required",
"field.blocks.changeType": "Change type", "field.blocks.changeType": "Change type",
"field.blocks.code.name": "Κώδικας", "field.blocks.code.name": "Κώδικας",
@@ -218,6 +235,7 @@
"field.blocks.delete.confirm.selected": "Do you really want to delete the selected blocks?", "field.blocks.delete.confirm.selected": "Do you really want to delete the selected blocks?",
"field.blocks.empty": "No blocks yet", "field.blocks.empty": "No blocks yet",
"field.blocks.fieldsets.label": "Please select a block type …", "field.blocks.fieldsets.label": "Please select a block type …",
"field.blocks.fieldsets.paste": "Press <kbd>{{ shortcut }}</kbd> to paste/import blocks from your clipboard",
"field.blocks.gallery.name": "Gallery", "field.blocks.gallery.name": "Gallery",
"field.blocks.gallery.images.empty": "No images yet", "field.blocks.gallery.images.empty": "No images yet",
"field.blocks.gallery.images.label": "Images", "field.blocks.gallery.images.label": "Images",
@@ -234,6 +252,7 @@
"field.blocks.image.placeholder": "Select an image", "field.blocks.image.placeholder": "Select an image",
"field.blocks.image.ratio": "Ratio", "field.blocks.image.ratio": "Ratio",
"field.blocks.image.url": "Image URL", "field.blocks.image.url": "Image URL",
"field.blocks.line.name": "Line",
"field.blocks.list.name": "List", "field.blocks.list.name": "List",
"field.blocks.markdown.name": "Markdown", "field.blocks.markdown.name": "Markdown",
"field.blocks.markdown.label": "Text", "field.blocks.markdown.label": "Text",
@@ -263,7 +282,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.blueprint": "This file has no blueprint yet. You can define the setup in <strong>/site/blueprints/{template}.yml</strong>", "file.blueprint": "This file has no blueprint yet. You can define the setup in <strong>/site/blueprints/files/{blueprint}.yml</strong>",
"file.delete.confirm": "\u0398\u03ad\u03bb\u03b5\u03c4\u03b5 \u03c3\u03af\u03b3\u03bf\u03c5\u03c1\u03b1 \u03bd\u03b1 \u03b4\u03b9\u03b1\u03b3\u03c1\u03ac\u03c8\u03b5\u03c4\u03b5 \u03b1\u03c5\u03c4\u03cc \u03c4\u03bf \u03b1\u03c1\u03c7\u03b5\u03af\u03bf;", "file.delete.confirm": "\u0398\u03ad\u03bb\u03b5\u03c4\u03b5 \u03c3\u03af\u03b3\u03bf\u03c5\u03c1\u03b1 \u03bd\u03b1 \u03b4\u03b9\u03b1\u03b3\u03c1\u03ac\u03c8\u03b5\u03c4\u03b5 \u03b1\u03c5\u03c4\u03cc \u03c4\u03bf \u03b1\u03c1\u03c7\u03b5\u03af\u03bf;",
"file.sort": "Change position", "file.sort": "Change position",
@@ -272,6 +291,7 @@
"hide": "Hide", "hide": "Hide",
"hour": "Ώρα", "hour": "Ώρα",
"import": "Import",
"insert": "\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae", "insert": "\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae",
"insert.after": "Insert after", "insert.after": "Insert after",
"insert.before": "Insert before", "insert.before": "Insert before",
@@ -337,9 +357,9 @@
"login.code.label.password-reset": "Password reset code", "login.code.label.password-reset": "Password reset code",
"login.code.placeholder.email": "000 000", "login.code.placeholder.email": "000 000",
"login.code.text.email": "If your email address is registered, the requested code was sent via email.", "login.code.text.email": "If your email address is registered, the requested code was sent via email.",
"login.email.login.body": "Hi {user.nameOrEmail},\n\nYou recently requested a login code for the Kirby Panel.\nThe following login code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a login code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.", "login.email.login.body": "Hi {user.nameOrEmail},\n\nYou recently requested a login code for the Panel of {site}.\nThe following login code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a login code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.",
"login.email.login.subject": "Your login code", "login.email.login.subject": "Your login code",
"login.email.password-reset.body": "Hi {user.nameOrEmail},\n\nYou recently requested a password reset code for the Kirby Panel.\nThe following password reset code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a password reset code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.", "login.email.password-reset.body": "Hi {user.nameOrEmail},\n\nYou recently requested a password reset code for the Panel of {site}.\nThe following password reset code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a password reset code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.",
"login.email.password-reset.subject": "Your password reset code", "login.email.password-reset.subject": "Your password reset code",
"login.remember": "Κρατήστε με συνδεδεμένο", "login.remember": "Κρατήστε με συνδεδεμένο",
"login.reset": "Reset password", "login.reset": "Reset password",
@@ -385,7 +405,7 @@
"orientation.portrait": "Κάθετος", "orientation.portrait": "Κάθετος",
"orientation.square": "Τετράγωνος", "orientation.square": "Τετράγωνος",
"page.blueprint": "This page has no blueprint yet. You can define the setup in <strong>/site/blueprints/{template}.yml</strong>", "page.blueprint": "This page has no blueprint yet. You can define the setup in <strong>/site/blueprints/pages/{blueprint}.yml</strong>",
"page.changeSlug": "\u0391\u03bb\u03bb\u03b1\u03b3\u03ae URL", "page.changeSlug": "\u0391\u03bb\u03bb\u03b1\u03b3\u03ae URL",
"page.changeSlug.fromTitle": "\u0394\u03b7\u03bc\u03b9\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 \u03b1\u03c0\u03cc \u03c4\u03bf\u03bd \u03c4\u03af\u03c4\u03bb\u03bf", "page.changeSlug.fromTitle": "\u0394\u03b7\u03bc\u03b9\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 \u03b1\u03c0\u03cc \u03c4\u03bf\u03bd \u03c4\u03af\u03c4\u03bb\u03bf",
"page.changeStatus": "Αλλαγή κατάστασης", "page.changeStatus": "Αλλαγή κατάστασης",
@@ -417,7 +437,10 @@
"pagination.page": "Σελίδα", "pagination.page": "Σελίδα",
"password": "\u039a\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03a0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2", "password": "\u039a\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03a0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2",
"paste": "Paste",
"paste.after": "Paste after",
"pixel": "Εικονοστοιχέιο", "pixel": "Εικονοστοιχέιο",
"plugins": "Plugins",
"prev": "Προηγούμενο", "prev": "Προηγούμενο",
"preview": "Preview", "preview": "Preview",
"remove": "Αφαίρεση", "remove": "Αφαίρεση",
@@ -454,6 +477,8 @@
"template": "\u03a0\u03c1\u03cc\u03c4\u03c5\u03c0\u03bf", "template": "\u03a0\u03c1\u03cc\u03c4\u03c5\u03c0\u03bf",
"today": "Σήμερα", "today": "Σήμερα",
"server": "Server",
"site.blueprint": "The site has no blueprint yet. You can define the setup in <strong>/site/blueprints/site.yml</strong>", "site.blueprint": "The site has no blueprint yet. You can define the setup in <strong>/site/blueprints/site.yml</strong>",
"toolbar.button.code": "Κώδικας", "toolbar.button.code": "Κώδικας",
@@ -463,11 +488,15 @@
"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.heading.4": "Heading 4",
"toolbar.button.heading.5": "Heading 5",
"toolbar.button.heading.6": "Heading 6",
"toolbar.button.italic": "\u03a0\u03bb\u03ac\u03b3\u03b9\u03b1 \u03b3\u03c1\u03b1\u03c6\u03ae", "toolbar.button.italic": "\u03a0\u03bb\u03ac\u03b3\u03b9\u03b1 \u03b3\u03c1\u03b1\u03c6\u03ae",
"toolbar.button.file": "Αρχείο", "toolbar.button.file": "Αρχείο",
"toolbar.button.file.select": "Select a file", "toolbar.button.file.select": "Select a file",
"toolbar.button.file.upload": "Upload a file", "toolbar.button.file.upload": "Upload a file",
"toolbar.button.link": "\u03a3\u03cd\u03bd\u03b4\u03b5\u03c3\u03bc\u03bf\u03c2", "toolbar.button.link": "\u03a3\u03cd\u03bd\u03b4\u03b5\u03c3\u03bc\u03bf\u03c2",
"toolbar.button.paragraph": "Paragraph",
"toolbar.button.strike": "Strike-through", "toolbar.button.strike": "Strike-through",
"toolbar.button.ol": "Ταξινομημένη λίστα", "toolbar.button.ol": "Ταξινομημένη λίστα",
"toolbar.button.underline": "Underline", "toolbar.button.underline": "Underline",
@@ -497,7 +526,7 @@
"url.placeholder": "https://example.com", "url.placeholder": "https://example.com",
"user": "Χρήστης", "user": "Χρήστης",
"user.blueprint": "Μπορείτε να ορίσετε επιπλέον τμήματα και πεδία φόρμας για αυτόν τον ρόλο χρήστη στο <strong>/site/blueprints/users/{role}.yml</strong>", "user.blueprint": "You can define additional sections and form fields for this user role in <strong>/site/blueprints/users/{blueprint}.yml</strong>",
"user.changeEmail": "Αλλαγή διεύθινσης ηλεκτρονικού ταχυδρομείου", "user.changeEmail": "Αλλαγή διεύθινσης ηλεκτρονικού ταχυδρομείου",
"user.changeLanguage": "Αλλαγή γλώσσας", "user.changeLanguage": "Αλλαγή γλώσσας",
"user.changeName": "Μετονομασία χρήστη", "user.changeName": "Μετονομασία χρήστη",
@@ -516,9 +545,10 @@
"view.account": "\u039f \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03cc\u03c2 \u03c3\u03b1\u03c2", "view.account": "\u039f \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03cc\u03c2 \u03c3\u03b1\u03c2",
"view.installation": "\u0395\u03b3\u03ba\u03b1\u03c4\u03ac\u03c3\u03c4\u03b1\u03c3\u03b7", "view.installation": "\u0395\u03b3\u03ba\u03b1\u03c4\u03ac\u03c3\u03c4\u03b1\u03c3\u03b7",
"view.languages": "Γλώσσες",
"view.resetPassword": "Reset password", "view.resetPassword": "Reset password",
"view.settings": "Ρυθμίσεις",
"view.site": "Iστοσελίδα", "view.site": "Iστοσελίδα",
"view.system": "System",
"view.users": "\u03a7\u03c1\u03ae\u03c3\u03c4\u03b5\u03c2", "view.users": "\u03a7\u03c1\u03ae\u03c3\u03c4\u03b5\u03c2",
"welcome": "Καλώς ήρθατε", "welcome": "Καλώς ήρθατε",

View File

@@ -1,5 +1,10 @@
{ {
"account.changeName": "Change your name",
"account.delete": "Delete your account",
"account.delete.confirm": "Do you really want to delete your account? You will be logged out immediately. Your account cannot be recovered.",
"add": "Add", "add": "Add",
"author": "Author",
"avatar": "Profile picture", "avatar": "Profile picture",
"back": "Back", "back": "Back",
"cancel": "Cancel", "cancel": "Cancel",
@@ -9,6 +14,7 @@
"collapse": "Collapse", "collapse": "Collapse",
"collapse.all": "Collapse All", "collapse.all": "Collapse All",
"copy": "Copy", "copy": "Copy",
"copy.all": "Copy all",
"create": "Create", "create": "Create",
"date": "Date", "date": "Date",
@@ -23,24 +29,28 @@
"days.tue": "Tue", "days.tue": "Tue",
"days.wed": "Wed", "days.wed": "Wed",
"debugging": "Debugging",
"delete": "Delete", "delete": "Delete",
"delete.all": "Delete all", "delete.all": "Delete all",
"dimensions": "Dimensions",
"disabled": "Disabled",
"discard": "Discard",
"download": "Download",
"duplicate": "Duplicate",
"edit": "Edit",
"expand": "Expand",
"expand.all": "Expand All",
"dialog.files.empty": "No files to select", "dialog.files.empty": "No files to select",
"dialog.pages.empty": "No pages to select", "dialog.pages.empty": "No pages to select",
"dialog.users.empty": "No users to select", "dialog.users.empty": "No users to select",
"dimensions": "Dimensions",
"disabled": "Disabled",
"discard": "Discard",
"download": "Download",
"duplicate": "Duplicate",
"edit": "Edit",
"email": "Email", "email": "Email",
"email.placeholder": "mail@example.com", "email.placeholder": "mail@example.com",
"environment": "Environment",
"error.access.code": "Invalid code", "error.access.code": "Invalid code",
"error.access.login": "Invalid login", "error.access.login": "Invalid login",
"error.access.panel": "You are not allowed to access the panel", "error.access.panel": "You are not allowed to access the panel",
@@ -92,6 +102,7 @@
"error.language.code": "Please enter a valid code for the language", "error.language.code": "Please enter a valid code for the language",
"error.language.duplicate": "The language already exists", "error.language.duplicate": "The language already exists",
"error.language.name": "Please enter a valid name for the language", "error.language.name": "Please enter a valid name for the language",
"error.language.notFound": "The language could not be found",
"error.layout.validation.block": "There's an error in block {blockIndex} in layout {layoutIndex}", "error.layout.validation.block": "There's an error in block {blockIndex} in layout {layoutIndex}",
"error.layout.validation.settings": "There's an error in layout {index} settings", "error.layout.validation.settings": "There's an error in layout {index} settings",
@@ -100,6 +111,8 @@
"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.offline": "The Panel is currently offline",
"error.page.changeSlug.permission": "You are not allowed to change the URL appendix for \"{slug}\"", "error.page.changeSlug.permission": "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": "The page has errors and cannot be published",
"error.page.changeStatus.permission": "The status for this page cannot be changed", "error.page.changeStatus.permission": "The status for this page cannot be changed",
@@ -165,6 +178,7 @@
"error.user.password.undefined": "The user does not have a password", "error.user.password.undefined": "The user does not have a password",
"error.user.password.wrong": "Wrong password", "error.user.password.wrong": "Wrong password",
"error.user.role.invalid": "Please enter a valid role", "error.user.role.invalid": "Please enter a valid role",
"error.user.undefined": "The user cannot be found",
"error.user.update.permission": "You are not allowed to update the user \"{name}\"", "error.user.update.permission": "You are not allowed to update the user \"{name}\"",
"error.validation.accepted": "Please confirm", "error.validation.accepted": "Please confirm",
@@ -208,6 +222,9 @@
"error.validation.time.between": "Please enter a time between {min} and {max}", "error.validation.time.between": "Please enter a time between {min} and {max}",
"error.validation.url": "Please enter a valid URL", "error.validation.url": "Please enter a valid URL",
"expand": "Expand",
"expand.all": "Expand All",
"field.required": "The field is required", "field.required": "The field is required",
"field.blocks.changeType": "Change type", "field.blocks.changeType": "Change type",
"field.blocks.code.name": "Code", "field.blocks.code.name": "Code",
@@ -218,6 +235,7 @@
"field.blocks.delete.confirm.selected": "Do you really want to delete the selected blocks?", "field.blocks.delete.confirm.selected": "Do you really want to delete the selected blocks?",
"field.blocks.empty": "No blocks yet", "field.blocks.empty": "No blocks yet",
"field.blocks.fieldsets.label": "Please select a block type …", "field.blocks.fieldsets.label": "Please select a block type …",
"field.blocks.fieldsets.paste": "Press <kbd>{{ shortcut }}</kbd> to paste/import blocks from your clipboard",
"field.blocks.gallery.name": "Gallery", "field.blocks.gallery.name": "Gallery",
"field.blocks.gallery.images.empty": "No images yet", "field.blocks.gallery.images.empty": "No images yet",
"field.blocks.gallery.images.label": "Images", "field.blocks.gallery.images.label": "Images",
@@ -234,6 +252,7 @@
"field.blocks.image.placeholder": "Select an image", "field.blocks.image.placeholder": "Select an image",
"field.blocks.image.ratio": "Ratio", "field.blocks.image.ratio": "Ratio",
"field.blocks.image.url": "Image URL", "field.blocks.image.url": "Image URL",
"field.blocks.line.name": "Line",
"field.blocks.list.name": "List", "field.blocks.list.name": "List",
"field.blocks.markdown.name": "Markdown", "field.blocks.markdown.name": "Markdown",
"field.blocks.markdown.label": "Text", "field.blocks.markdown.label": "Text",
@@ -263,7 +282,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.blueprint": "This file has no blueprint yet. You can define the setup in <strong>/site/blueprints/{template}.yml</strong>", "file.blueprint": "This file has no blueprint yet. You can define the setup in <strong>/site/blueprints/files/{blueprint}.yml</strong>",
"file.delete.confirm": "Do you really want to delete <br><strong>{filename}</strong>?", "file.delete.confirm": "Do you really want to delete <br><strong>{filename}</strong>?",
"file.sort": "Change position", "file.sort": "Change position",
@@ -272,6 +291,7 @@
"hide": "Hide", "hide": "Hide",
"hour": "Hour", "hour": "Hour",
"import": "Import",
"insert": "Insert", "insert": "Insert",
"insert.after": "Insert after", "insert.after": "Insert after",
"insert.before": "Insert before", "insert.before": "Insert before",
@@ -337,9 +357,9 @@
"login.code.label.password-reset": "Password reset code", "login.code.label.password-reset": "Password reset code",
"login.code.placeholder.email": "000 000", "login.code.placeholder.email": "000 000",
"login.code.text.email": "If your email address is registered, the requested code was sent via email.", "login.code.text.email": "If your email address is registered, the requested code was sent via email.",
"login.email.login.body": "Hi {user.nameOrEmail},\n\nYou recently requested a login code for the Kirby Panel.\nThe following login code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a login code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.", "login.email.login.body": "Hi {user.nameOrEmail},\n\nYou recently requested a login code for the Panel of {site}.\nThe following login code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a login code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.",
"login.email.login.subject": "Your login code", "login.email.login.subject": "Your login code",
"login.email.password-reset.body": "Hi {user.nameOrEmail},\n\nYou recently requested a password reset code for the Kirby Panel.\nThe following password reset code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a password reset code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.", "login.email.password-reset.body": "Hi {user.nameOrEmail},\n\nYou recently requested a password reset code for the Panel of {site}.\nThe following password reset code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a password reset code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.",
"login.email.password-reset.subject": "Your password reset code", "login.email.password-reset.subject": "Your password reset code",
"login.remember": "Keep me logged in", "login.remember": "Keep me logged in",
"login.reset": "Reset password", "login.reset": "Reset password",
@@ -385,7 +405,7 @@
"orientation.portrait": "Portrait", "orientation.portrait": "Portrait",
"orientation.square": "Square", "orientation.square": "Square",
"page.blueprint": "This page has no blueprint yet. You can define the setup in <strong>/site/blueprints/{template}.yml</strong>", "page.blueprint": "This page has no blueprint yet. You can define the setup in <strong>/site/blueprints/pages/{blueprint}.yml</strong>",
"page.changeSlug": "Change URL", "page.changeSlug": "Change URL",
"page.changeSlug.fromTitle": "Create from title", "page.changeSlug.fromTitle": "Create from title",
"page.changeStatus": "Change status", "page.changeStatus": "Change status",
@@ -417,7 +437,10 @@
"pagination.page": "Page", "pagination.page": "Page",
"password": "Password", "password": "Password",
"paste": "Paste",
"paste.after": "Paste after",
"pixel": "Pixel", "pixel": "Pixel",
"plugins": "Plugins",
"prev": "Previous", "prev": "Previous",
"preview": "Preview", "preview": "Preview",
"remove": "Remove", "remove": "Remove",
@@ -454,6 +477,8 @@
"template": "Template", "template": "Template",
"today": "Today", "today": "Today",
"server": "Server",
"site.blueprint": "The site has no blueprint yet. You can define the setup in <strong>/site/blueprints/site.yml</strong>", "site.blueprint": "The site has no blueprint yet. You can define the setup in <strong>/site/blueprints/site.yml</strong>",
"toolbar.button.code": "Code", "toolbar.button.code": "Code",
@@ -463,11 +488,15 @@
"toolbar.button.heading.1": "Heading 1", "toolbar.button.heading.1": "Heading 1",
"toolbar.button.heading.2": "Heading 2", "toolbar.button.heading.2": "Heading 2",
"toolbar.button.heading.3": "Heading 3", "toolbar.button.heading.3": "Heading 3",
"toolbar.button.heading.4": "Heading 4",
"toolbar.button.heading.5": "Heading 5",
"toolbar.button.heading.6": "Heading 6",
"toolbar.button.italic": "Italic", "toolbar.button.italic": "Italic",
"toolbar.button.file": "File", "toolbar.button.file": "File",
"toolbar.button.file.select": "Select a file", "toolbar.button.file.select": "Select a file",
"toolbar.button.file.upload": "Upload a file", "toolbar.button.file.upload": "Upload a file",
"toolbar.button.link": "Link", "toolbar.button.link": "Link",
"toolbar.button.paragraph": "Paragraph",
"toolbar.button.strike": "Strike-through", "toolbar.button.strike": "Strike-through",
"toolbar.button.ol": "Ordered list", "toolbar.button.ol": "Ordered list",
"toolbar.button.underline": "Underline", "toolbar.button.underline": "Underline",
@@ -497,7 +526,7 @@
"url.placeholder": "https://example.com", "url.placeholder": "https://example.com",
"user": "User", "user": "User",
"user.blueprint": "You can define additional sections and form fields for this user role in <strong>/site/blueprints/users/{role}.yml</strong>", "user.blueprint": "You can define additional sections and form fields for this user role in <strong>/site/blueprints/users/{blueprint}.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",
@@ -516,9 +545,10 @@
"view.account": "Your account", "view.account": "Your account",
"view.installation": "Installation", "view.installation": "Installation",
"view.languages": "Languages",
"view.resetPassword": "Reset password", "view.resetPassword": "Reset password",
"view.settings": "Settings",
"view.site": "Site", "view.site": "Site",
"view.system": "System",
"view.users": "Users", "view.users": "Users",
"welcome": "Welcome", "welcome": "Welcome",

557
kirby/i18n/translations/eo.json Executable file
View File

@@ -0,0 +1,557 @@
{
"account.changeName": "Ŝanĝi vian nomon",
"account.delete": "Forigi vian konton",
"account.delete.confirm": "Ĉu vi certe deziras forigi vian konton? Vi estos tuj elsalutita. Ne eblos malforigi vian konton.",
"add": "Aldoni",
"author": "Aŭtoro",
"avatar": "Profilbildo",
"back": "Reen",
"cancel": "Nuligi",
"change": "Ŝanĝi",
"close": "Fermi",
"confirm": "Bone",
"collapse": "Fermi",
"collapse.all": "Fermi ĉiujn",
"copy": "Kopii",
"copy.all": "Kopii ĉiujn",
"create": "Krei",
"date": "Dato",
"date.select": "Elekti daton",
"day": "Tago",
"days.fri": "Ven",
"days.mon": "Lun",
"days.sat": "Sab",
"days.sun": "Dim",
"days.thu": "Ĵaŭ",
"days.tue": "Mar",
"days.wed": "Mer",
"debugging": "Sencimigado",
"delete": "Forigi",
"delete.all": "Forigi ĉiujn",
"dialog.files.empty": "Neniu dosiero por elekti",
"dialog.pages.empty": "Neniu paĝo por elekti",
"dialog.users.empty": "Neniu uzanto por elekti",
"dimensions": "Dimensioj",
"disabled": "Malebligita",
"discard": "Forĵeti",
"download": "Elŝuti",
"duplicate": "Duobligi",
"edit": "Modifi",
"email": "Retpoŝto",
"email.placeholder": "retpoŝto@ekzemplo.com",
"environment": "Medio",
"error.access.code": "Nevalida kodo",
"error.access.login": "Nevalida ensaluto",
"error.access.panel": "Vi ne rajtas eniri la administran panelon",
"error.access.view": "Vi ne rajtas eniri ĉi tiun areon de la panelo",
"error.avatar.create.fail": "La profilbildo ne povis esti alŝutita",
"error.avatar.delete.fail": "La profilbildo ne povis esti forigita",
"error.avatar.dimensions.invalid": "Bonvolu certigi ke la profilbildo ne estas pli ol 3000 bilderojn larĝa kaj alta",
"error.avatar.mime.forbidden": "La profilbildo devas esti dosiero en dosierformo aŭ JPEG aŭ PNG",
"error.blueprint.notFound": "La plano \"{name}\" ne povis esti ŝargita",
"error.blocks.max.plural": "Oni devas ne aldoni pli ol {max} blokoj",
"error.blocks.max.singular": "Vi devas ne aldoni pli ol unu bloko",
"error.blocks.min.plural": "Oni devas aldoni almenaŭ {min} blokojn",
"error.blocks.min.singular": "Oni devas aldoni almenaŭ unu blokon",
"error.blocks.validation": "Estas eraro en bloko {index}",
"error.email.preset.notFound": "La retpoŝta antaŭagordo \"{name}\" ne estas trovebla",
"error.field.converter.invalid": "Nevalida konvertilo \"{converter}\"",
"error.file.changeName.empty": "La nomo ne rajtas esti malplena",
"error.file.changeName.permission": "Vi ne rajtas ŝanĝi la nomon de \"{filename}\"",
"error.file.duplicate": "Jam ekzistas dosiero nomita \"{filename}\"",
"error.file.extension.forbidden": "La dosiersufikso \"{extension}\" ne estas permesita",
"error.file.extension.invalid": "Nevalida dosiersufikso: {extension}",
"error.file.extension.missing": "Mankas la dosiersufiksoj por \"{filename}\"",
"error.file.maxheight": "La bildo ne povas esti pli ol {height} bilderojn alta ",
"error.file.maxsize": "La dosiero estas tro granda",
"error.file.maxwidth": "La bildo ne povas esti pli oll {width} bilderojn larĝa",
"error.file.mime.differs": "La alŝutata dosiero devas havi la saman MIME-tipon \"{mime}\"",
"error.file.mime.forbidden": "La MIME-tipo \"{mime}\" ne povas esti uzata ĉi tie",
"error.file.mime.invalid": "Nevalida MIME-tipo: {mime}",
"error.file.mime.missing": "La MIME-tipo for \"{filename}\" ne estas detektebla",
"error.file.minheight": "La bildo devas esti almenaŭ {height} bilderojn alta",
"error.file.minsize": "La dosiero estas tro malgranda",
"error.file.minwidth": "La bildo devas esti almenaŭ {width} bilderojn larĝa",
"error.file.name.missing": "La dosiernomo ne rajtas esti malplena",
"error.file.notFound": "La dosiero \"{filename}\" ne troveblas",
"error.file.orientation": "La orientiĝo de la bildo devas esti \"{orientation}\"",
"error.file.type.forbidden": "Vi ne rajtas alŝuti dosiertipon {type}",
"error.file.type.invalid": "Nevalida dosiertipo: {type}",
"error.file.undefined": "La dosiero ne troveblas",
"error.form.incomplete": "Bonvolu korekti ĉiujn erarojn en formularo...",
"error.form.notSaved": "Ne eblis konservi la formularon",
"error.language.code": "Bonvolu entajpi validan kodon por la lingvo",
"error.language.duplicate": "La lingvo jam ekzistas",
"error.language.name": "Bonvolu entajpi validan nomon por la lingvo",
"error.language.notFound": "La lingvo ne troveblas",
"error.layout.validation.block": "Estas eraro en bloko {blockIndex}, en blokaranĝo {layoutIndex}",
"error.layout.validation.settings": "Estas eraro en la agordoj de blokaranĝo {index}",
"error.license.format": "Bonvolu entajpi validan kodon de permisilo",
"error.license.email": "Bonvolu entajpi validan retpoŝtadreson",
"error.license.verification": "Ne eblis kontroli la permisilon",
"error.offline": "La panelo estas ĉi-momente nekonektita",
"error.page.changeSlug.permission": "Vi ne rajtas ŝanĝi la URL-nomon de \"{slug}\"",
"error.page.changeStatus.incomplete": "La paĝo havas erarojn, kaj tiel ne povas esti publikigita",
"error.page.changeStatus.permission": "La paĝstato ne estas ŝanĝebla",
"error.page.changeStatus.toDraft.invalid": "Ne eblas konverti la paĝon \"{slug}\" al malneto",
"error.page.changeTemplate.invalid": "Ne eblas ŝanĝi la ŝablonon de la paĝo \"{slug}\"",
"error.page.changeTemplate.permission": "Vi ne rajtas ŝanĝi la ŝablonon de \"{slug}\"",
"error.page.changeTitle.empty": "La titolo ne rajtas esti malplena",
"error.page.changeTitle.permission": "Vi ne rajtas ŝanĝi la titolon de \"{slug}\"",
"error.page.create.permission": "Vi ne rajtas krei \"{slug}\"",
"error.page.delete": "Ne eblas forigi la paĝon \"{slug}\"",
"error.page.delete.confirm": "Bonvolu entajpi la titolon de la paĝo for konfirmi",
"error.page.delete.hasChildren": "Ne eblas forigi la paĝon ĉar ĝi havas subpaĝojn",
"error.page.delete.permission": "Vi ne rajtas forigi \"{slug}\"",
"error.page.draft.duplicate": "Malneto uzanta la URL-nomon \"{slug}\" jam ekzistas",
"error.page.duplicate": "Paĝo uzanta la URL-nomon \"{slug}\" jam ekzistas",
"error.page.duplicate.permission": "Vi ne rajtas duobligi \"{slug}\"",
"error.page.notFound": "La paĝo \"{slug}\" ne troveblas",
"error.page.num.invalid": "Bonvolu entajpi validan ord-numeron. Numeroj devas esti pozitivaj.",
"error.page.slug.invalid": "Bonvolu entajpi validan URL-nomon",
"error.page.slug.maxlength": "URL-nomo devas esti malpli ol \"{length}\" literojn longa",
"error.page.sort.permission": "Ne eblas ordigi la paĝon \"{slug}\" ",
"error.page.status.invalid": "Bonvolu elekti validan paĝstaton",
"error.page.undefined": "La paĝo ne estas trovebla",
"error.page.update.permission": "Vi ne rajtas ĝisdatigi \"{slug}\"",
"error.section.files.max.plural": "Vi devas aldoni maksimume {max} dosierojn al sekcio \"{section}\"",
"error.section.files.max.singular": "Vi devas aldoni maksimume unu dosieron al sekcio \"{section}\"",
"error.section.files.min.plural": "La sekcio \"{section}\" bezonas almenaŭ {min} dosierojn",
"error.section.files.min.singular": "La sekcio \"{section}\" bezonas almenaŭ unu dosieron",
"error.section.pages.max.plural": "Vi devas aldoni maksimume {max} paĝojn al sekcio \"{section}\"",
"error.section.pages.max.singular": "Vi devas aldoni maksimume unu paĝon al sekcio \"{section}\"",
"error.section.pages.min.plural": "La sekcio \"{section}\" bezonas almenaŭ {min} paĝojn",
"error.section.pages.min.singular": "La sekcio \"{section}\" bezonas almenaŭ unu paĝon",
"error.section.notLoaded": "Ne eblis ŝarĝi la sekcion \"{section}\"",
"error.section.type.invalid": "La sekcia tipo \"{type}\" ne estas valida",
"error.site.changeTitle.empty": "La titolo ne rajtas esti malplena",
"error.site.changeTitle.permission": "Vi ne rajtas ŝanĝi la titolon de la retejo",
"error.site.update.permission": "Vi ne rajtas ĝisdatigi la retejon",
"error.template.default.notFound": "La defaŭlta ŝablono ne ekzistas",
"error.user.changeEmail.permission": "Vi ne rajtas ŝanĝi la retpoŝtadreson de la uzanto \"{name}\"",
"error.user.changeLanguage.permission": "Vi ne rajtas ŝanĝi la lingvon de la uzanto \"{name}\"",
"error.user.changeName.permission": "Vi ne rajtas ŝanĝi la nomon de la uzanto \"{name}\"",
"error.user.changePassword.permission": "Vi ne rajtas ŝanĝi la pasvorton de la uzanto \"{name}\"",
"error.user.changeRole.lastAdmin": "Ne eblas ŝanĝi la rolon de la lasta administranto",
"error.user.changeRole.permission": "Vi ne rajtas ŝanĝi la rolon de la uzanto \"{name}\"",
"error.user.changeRole.toAdmin": "Vi ne rajtas promocii uzanton al rolo 'administranto'",
"error.user.create.permission": "Vi ne rajtas krei ĉi-tiun uzanton",
"error.user.delete": "Ne eblas forigi uzanton \"{name}\"",
"error.user.delete.lastAdmin": "Ne eblas forigi la lastan administranton",
"error.user.delete.lastUser": "Ne eblas forigi la lastan uzanton",
"error.user.delete.permission": "Vi ne rajtas forigi la uzanton \"{name}\"",
"error.user.duplicate": "Jam ekzistas uzanto kies retpoŝtadreso estas \"{email}\"",
"error.user.email.invalid": "Bonvolu entajpi validan retpoŝtadreson",
"error.user.language.invalid": "Bonvolu entajpi validan lingvon",
"error.user.notFound": "La uzanto \"{name}\" ne troveblas",
"error.user.password.invalid": "Bonvolu entajpi validan pasvorton. Pasvortoj devas esti almenaŭ 8 literojn longaj.",
"error.user.password.notSame": "La pasvortoj ne estas kongruantaj",
"error.user.password.undefined": "La uzanto ne havas pasvorton",
"error.user.password.wrong": "Malĝusta pasvorto",
"error.user.role.invalid": "Bonvolu entajpi validan rolon",
"error.user.undefined": "La uzanto ne troveblas",
"error.user.update.permission": "Vi ne rajtas ĝisdatigi la uzanton \"{name}\"",
"error.validation.accepted": "Bonvolu konfirmi",
"error.validation.alpha": "Bonvolu entajpi nur literojn inter a-z",
"error.validation.alphanum": "Bonvolu entajpi nur aŭ literojn inter a-z aũ numerojn inter 0-9",
"error.validation.between": "Bonvolu entajpi valoron inter \"{min}\" kaj \"{max}\"",
"error.validation.boolean": "Bonvolu konfirmi aŭ malkonfirmi",
"error.validation.contains": "Bonvolu entajpi valoron kiu enhavas \"{needle}\"",
"error.validation.date": "Bonvolu entajpi validan daton",
"error.validation.date.after": "Bonvolu entajpi daton post {date}",
"error.validation.date.before": "Bonvolu entajpi daton antaũ {date}",
"error.validation.date.between": "Bonvolu entajpi daton inter {min} kaj {max}",
"error.validation.denied": "Bonvolu malkonfirmi",
"error.validation.different": "La valoro ne rajtas esti \"{other}\"",
"error.validation.email": "Bonvolu entajpi validan retpoŝtadreson",
"error.validation.endswith": "La valoro devas finiĝi per \"{end}\"",
"error.validation.filename": "Bonvolu entajpi validan dosiernomon",
"error.validation.in": "Bonvolu entajpi unu el la sekvaj: ({in})",
"error.validation.integer": "Bonvolu entajpi validan entjeron",
"error.validation.ip": "Bonvolu entajpi validan IP-adreson",
"error.validation.less": "Bonvolu entajpi valoron malpli ol {max}",
"error.validation.match": "La valoro ne kongruas al la atendata ŝablono",
"error.validation.max": "Bonvolu entajpi valoron egalan al aũ malpli ol {max}",
"error.validation.maxlength": "Bonvolu entajpi pli mallongan valoron (maksimume {max} literojn)",
"error.validation.maxwords": "Bonvolu entajpi maksimume {max} vorto(j)n",
"error.validation.min": "Bonvolu entajpi valoron egalan al aŭ pli granda ol {min}",
"error.validation.minlength": "Bonvolu entajpi pli longan valoron (minimume {min} literojn)",
"error.validation.minwords": "Bonvolu entajpi almenaŭ {min} vorto(j)n",
"error.validation.more": "Bonvolu entajpi valoron pli grandan ol {min}",
"error.validation.notcontains": "Bonvolu entajpi valoron kiu ne enhavas \"{needle}\"",
"error.validation.notin": "Bonvolu entajpi neniu ajn el la sekvaj: ({notin})",
"error.validation.option": "Bonvolu fari validan elekton",
"error.validation.num": "Bonvolu entajpi validan numeron",
"error.validation.required": "Bonvolu entajpi ion",
"error.validation.same": "Bonvolu entajpi \"{other}\"",
"error.validation.size": "La grando de la valoro devas esti \"{size}\"",
"error.validation.startswith": "La valoro devas komenciĝi per \"{start}\"",
"error.validation.time": "Bonvolu entajpi validan horaron",
"error.validation.time.after": "Bonvolu entajpi horaron post {time}",
"error.validation.time.before": "Bonvolu entajpi horaron antaŭ {time}",
"error.validation.time.between": "Bonvolu entajpi horaron inter {min} kaj {max}",
"error.validation.url": "Bonvolu entajpi validan URL",
"expand": "Etendi",
"expand.all": "Etendi ĉiujn",
"field.required": "La kampo ne rajtas esti malplena",
"field.blocks.changeType": "Ŝanĝi tipon",
"field.blocks.code.name": "Kodo",
"field.blocks.code.language": "Lingvo",
"field.blocks.code.placeholder": "Via kodo ...",
"field.blocks.delete.confirm": "Ĉu vi certe volas forigi ĉi tiun blokon?",
"field.blocks.delete.confirm.all": "Ĉu vi certe volas forigi ĉiujn blokojn?",
"field.blocks.delete.confirm.selected": "Ĉu vi certe volas forigi la elektitajn blokojn?",
"field.blocks.empty": "Ankoraŭ neniu bloko",
"field.blocks.fieldsets.label": "Bonvolu elekti tipon de bloko ...",
"field.blocks.fieldsets.paste": "Premu <kbd>{{ shortcut }}</kbd>por alglui/importi blokojn el via tondujo",
"field.blocks.gallery.name": "Galerio",
"field.blocks.gallery.images.empty": "Ankoraŭ neniu bildo",
"field.blocks.gallery.images.label": "Bildoj",
"field.blocks.heading.level": "Nivelo",
"field.blocks.heading.name": "Titolo",
"field.blocks.heading.text": "Teksto",
"field.blocks.heading.placeholder": "Titolo ...",
"field.blocks.image.alt": "Alternativa titolo",
"field.blocks.image.caption": "Apudskribo",
"field.blocks.image.crop": "Stuci",
"field.blocks.image.link": "Ligilo",
"field.blocks.image.location": "Loko",
"field.blocks.image.name": "Bildo",
"field.blocks.image.placeholder": "Elekti bildon",
"field.blocks.image.ratio": "Proporcio",
"field.blocks.image.url": "URL de la bildo",
"field.blocks.line.name": "Linio",
"field.blocks.list.name": "Listo",
"field.blocks.markdown.name": "Markdown",
"field.blocks.markdown.label": "Teksto",
"field.blocks.markdown.placeholder": "Markdown ...",
"field.blocks.quote.name": "Citaĵo",
"field.blocks.quote.text.label": "Teksto",
"field.blocks.quote.text.placeholder": "Citaĵo ...",
"field.blocks.quote.citation.label": "Citaĵo",
"field.blocks.quote.citation.placeholder": "de ...",
"field.blocks.text.name": "Teksto",
"field.blocks.text.placeholder": "Teksto ...",
"field.blocks.video.caption": "Apudskribo",
"field.blocks.video.name": "Videâjo",
"field.blocks.video.placeholder": "Entajpi URL de videaĵo",
"field.blocks.video.url.label": "Video-URL",
"field.blocks.video.url.placeholder": "https://youtube.com/?v=",
"field.files.empty": "Ankoraŭ neniu dosiero elektita",
"field.layout.delete": "Forigi blokaranĝo",
"field.layout.delete.confirm": "Ĉu vi certe volas forigi ĉi tiun blokaranĝon?",
"field.layout.empty": "Ankoraŭ neniu vico",
"field.layout.select": "Elekti blokaranĝon",
"field.pages.empty": "Ankoraŭ neniu paĝo elektita",
"field.structure.delete.confirm": "Ĉu vi certe volas forigi ĉi tiun vicon?",
"field.structure.empty": "Ankoraŭ neniu enigo",
"field.users.empty": "Ankoraŭ neniu uzanto elektita",
"file.blueprint": "Ĉi tiu dosiero ankoraŭ havas neniun planon. Vi povas difini planon ĉe <strong>/site/blueprints/files/{blueprint}.yml</strong>",
"file.delete.confirm": "Ĉu vi certe vollas forigi <br><strong>{filename}</strong>?",
"file.sort": "Ŝanĝi ordon",
"files": "Dosieroj",
"files.empty": "Ankoraŭ neniu dosiero",
"hide": "Kaŝi",
"hour": "Horo",
"import": "Importi",
"insert": "Enmeti",
"insert.after": "Enmeti post",
"insert.before": "Enmeti antaŭ",
"install": "Instali",
"installation": "Instalado",
"installation.completed": "La panelo estas instalita",
"installation.disabled": "La instalilo de la panelo estas norme malebligita en publikaj serviloj. Bonvolu uzi la instalilon en via loka komputilo, aŭ ebligu ĝin per la opcio <code>panel.install</code>",
"installation.issues.accounts": "La dosierujo <code>/site/accounts</code> ne ekzistas, aŭ ne estas skribebla",
"installation.issues.content": "La dosierujo <code>/content</code> ne ekzistas, aŭ ne estas skribebla",
"installation.issues.curl": "La kromprogramo <code>CURL</code> estas deviga",
"installation.issues.headline": "Ne eblas instali la panelon",
"installation.issues.mbstring": "La kromprogramo <code>MB String</code> estas deviga",
"installation.issues.media": "La dosierujo <code>/media</code> ne ekzistas, aũ ne estas skribebla",
"installation.issues.php": "Nepre uzu <code>PHP 7+</code>",
"installation.issues.server": "Kirby bezonas <code>Apache</code>, <code>Nginx</code> aŭ <code>Caddy</code>",
"installation.issues.sessions": "La dosierujo <code>/site/sessions</code> ne ekzistas, aŭ ne estas skribebla",
"language": "Lingvo",
"language.code": "Kodo",
"language.convert": "Farigi defaŭlton",
"language.convert.confirm": "<p>Ĉu vi certe volas konverti <strong>{name}</strong> al la defaŭlta lingvo? Ĉi tion vi ne povos malfari.</p> <p>Se <strong>{name}</strong> havas netradukitan enhavon, tiuj tekstoj nun ne havos defaŭlton, kaj simple ne aperos en via retejo.</p>",
"language.create": "Aldoni novan lingvon",
"language.delete.confirm": "Ĉu vi certe volas forigi la lingvon <strong>{name}</strong>, inkluzive de ĉiuj tradukoj? Vi ne povos malfari tion!",
"language.deleted": "La lingvo estas forigita",
"language.direction": "Direkto de leĝado",
"language.direction.ltr": "Dekstren",
"language.direction.rtl": "Maldesktren",
"language.locale": "Lokaĵaro de PHP",
"language.locale.warning": "Vi uzas tajloritan agordon de lokaĵaro. Bonvolu ŝanĝi viajn agordojn laŭmende en la lingva dosiero ĉe /site/languages",
"language.name": "Nomo",
"language.updated": "La lingvo estas ĝisdatigita",
"languages": "Lingvoj",
"languages.default": "Defaŭlta lingvo",
"languages.empty": "Ankoraũ estas neniu lingvo",
"languages.secondary": "Kromlingvoj",
"languages.secondary.empty": "Ankoraŭ estas neniu kromlingvoj",
"license": "Permisilo",
"license.buy": "Aĉeti permisilon",
"license.register": "Registriĝi",
"license.register.help": "Vi ricevis vian kodon de permisilo retpoŝte, post aĉeti ĝin. Bonvolu kopii kaj alglui ĝin por registriĝi.",
"license.register.label": "Bonvolu entajpi vian kodon de permisilo",
"license.register.success": "Dankon pro subteni Kirby",
"license.unregistered": "Ĉi tiu estas neregistrita kopio de Kirby",
"link": "Ligilo",
"link.text": "Ligila teksto",
"loading": "Ŝargante",
"lock.unsaved": "Nekonservitaj ŝanĝoj",
"lock.unsaved.empty": "Ĉiuj ŝanĝoj estas nun konservitaj",
"lock.isLocked": "Nekonservitaj ŝanĝoj de <strong>{email}</strong>",
"lock.file.isLocked": "La dosiero estas ĉi-momente redaktata de {email}, kaj tial ne povas esti ŝanĝita",
"lock.page.isLocked": "La paĝo estas ĉi-momente redaktata de {email}, kaj tial ne povas esti ŝanĝita",
"lock.unlock": "Malŝlosi",
"lock.isUnlocked": "Viaj nekonservitaj ŝanĝoj estas ŝanĝitaj de alia uzanto. Vi povas elŝuti dosieron kun viaj ŝanĝoj por permane kunfandi ilin.",
"login": "Ensaluti",
"login.code.label.login": "Ensaluta kodo",
"login.code.label.password-reset": "Kodo por restarigi pasvorton",
"login.code.placeholder.email": "000 000",
"login.code.text.email": "Se via retpoŝtadreso estas enregistrita, via kodo estis sendita retpoŝte",
"login.email.login.body": "Saluton {user.nameOrEmail},\n\nVi petis ensalutan kodon por la panelo de la retejo {site}.\nLa sekvanta kodo validos dum {timeout} minutoj:\n\n{code}\n\nSe vi ne petis ensalutan kodon, bonvolu ignori ĉi tiun mesaĝon, aŭ kontaktu vian sistem-administranton se vi havas demandojn.\nPro sekureco, bonvolu NE plusendi ĉi tiun mesaĝon.",
"login.email.login.subject": "Via ensaluta kodo",
"login.email.password-reset.body": "Saluton {user.nameOrEmail},\n\nVi petis kodon por restarigi vian pasvorton por la panelo de la retejo {site}.\nLa sekvanta kodo validos dum {timeout} minutoj:\n\n{code}\n\nSe vi ne petis kodon por restarigi vian pasvorton, bonvolu ignori ĉi tiun mesaĝon, aŭ kontaktu vian sistem-administranton se vi havas demandojn.\nPro sekureco, bonvolu NE plusendi ĉi tiun mesaĝon.",
"login.email.password-reset.subject": "Kodo por restarigi pasvorton",
"login.remember": "Daŭre tenu min ensalutita",
"login.reset": "Restarigi pasvorton",
"login.toggleText.code.email": "Ensaluti retpoŝte",
"login.toggleText.code.email-password": "Ensaluti per pasvorto",
"login.toggleText.password-reset.email": "Ĉu vi forgesis vian pasvorton?",
"login.toggleText.password-reset.email-password": "← Reen al ensaluto",
"logout": "Elsaluti",
"menu": "Menuo",
"meridiem": "atm/ptm",
"mime": "Tipo de aŭdvidaĵo",
"minutes": "Minutoj",
"month": "Monato",
"months.april": "aprilo",
"months.august": "aŭgusto",
"months.december": "decembro",
"months.february": "februaro",
"months.january": "januaro",
"months.july": "julio",
"months.june": "junio",
"months.march": "marto",
"months.may": "majo",
"months.november": "novembro",
"months.october": "oktobro",
"months.september": "septembro",
"more": "Pli",
"name": "Nomo",
"next": "Sekve",
"no": "ne",
"off": "ne",
"on": "jes",
"open": "Malfermi",
"open.newWindow": "Malfermi novan fenestron",
"options": "Opcioj",
"options.none": "Neniu opcio",
"orientation": "Orientiĝo",
"orientation.landscape": "Horizontala",
"orientation.portrait": "Vertikala",
"orientation.square": "Kvadrata",
"page.blueprint": "Ĉi tiu paĝo ankoraŭ ne havas planon. Vi povas difini planon ĉe <strong>/site/blueprints/pages/{blueprint}.yml</strong>",
"page.changeSlug": "Ŝanĝi URL",
"page.changeSlug.fromTitle": "Krei el titolo",
"page.changeStatus": "Ŝanĝi staton",
"page.changeStatus.position": "Bonvolu elekti ordon",
"page.changeStatus.select": "Elekti novan staton",
"page.changeTemplate": "Ŝanĝi ŝablonon",
"page.delete.confirm": "Ĉu vi certe volas forigi <strong>{title}</strong>?",
"page.delete.confirm.subpages": "<strong>Ĉi tiu paĝo havas subpaĝojn</strong>. <br>Ĉiuj subpaĝoj estos ankaŭ forigitaj.",
"page.delete.confirm.title": "Entajpu la titolon de la paĝo por konfirmi",
"page.draft.create": "Krei malneton",
"page.duplicate.appendix": "Kopii",
"page.duplicate.files": "Kopii dosierojn",
"page.duplicate.pages": "Kopii paĝojn",
"page.sort": "Ŝanĝi ordon",
"page.status": "Stato",
"page.status.draft": "Malneto",
"page.status.draft.description": "La paĝo estas malneto, kaj nur atingebla de ensalutitaj redaktantoj, aŭ per sekreta ligilo",
"page.status.listed": "Publika",
"page.status.listed.description": "La paĝo estas publika por ĉiuj ajn",
"page.status.unlisted": "Nelistata",
"page.status.unlisted.description": "La paĝo estas atingebla nur per URL",
"pages": "Paĝoj",
"pages.empty": "Ankoraŭ neniu paĝo",
"pages.status.draft": "Malnetoj",
"pages.status.listed": "Publikigita",
"pages.status.unlisted": "Nelistata",
"pagination.page": "Paĝo",
"password": "Pasvorto",
"paste": "Alglui",
"paste.after": "Alglui post",
"pixel": "Pikselo",
"plugins": "Kromprogramoj",
"prev": "Antaŭe",
"preview": "Antaŭrigardi",
"remove": "Forigi",
"rename": "Ŝanĝi nomon",
"replace": "Anstataŭi",
"retry": "Provi denove",
"revert": "Malfari",
"revert.confirm": "Ĉu vi certe volas <strong>forigi ĉiujn nekonservitajn ŝanĝojn</strong>?",
"role": "Rolo",
"role.admin.description": "La administranto havas ĉiujn rajtojn",
"role.admin.title": "Administranto",
"role.all": "Ĉiuj",
"role.empty": "Neniu uzanto havas ĉi tiun rolon",
"role.description.placeholder": "Neniu priskribo",
"role.nobody.description": "Ĉi tiu estas retrodefaŭlta rolo sen permesoj",
"role.nobody.title": "Neniu",
"save": "Konservi",
"search": "Serĉi",
"search.min": "Entajpu {min} literojn por serĉi",
"search.all": "Montri ĉiujn",
"search.results.none": "Neniu rezulto",
"section.required": "La sekcio estas deviga",
"select": "Elekti",
"settings": "Agordoj",
"show": "Montri",
"size": "Grando",
"slug": "URL-nomo",
"sort": "Ordigi",
"title": "Titolo",
"template": "Ŝablono",
"today": "Hodiaŭ",
"server": "Servilo",
"site.blueprint": "La retejo ankoraŭ ne havas planon. Vi povas difini planon ĉe <strong>/site/blueprints/site.yml</strong>",
"toolbar.button.code": "Kodo",
"toolbar.button.bold": "Grasa",
"toolbar.button.email": "Retpoŝto",
"toolbar.button.headings": "Titoloj",
"toolbar.button.heading.1": "Titolo 1",
"toolbar.button.heading.2": "Titolo 2",
"toolbar.button.heading.3": "Titolo 3",
"toolbar.button.heading.4": "Titolo 4",
"toolbar.button.heading.5": "Titolo 5",
"toolbar.button.heading.6": "Titolo 6",
"toolbar.button.italic": "Kursiva",
"toolbar.button.file": "Dosiero",
"toolbar.button.file.select": "Elekti dosieron",
"toolbar.button.file.upload": "Alŝuti dosieron",
"toolbar.button.link": "Ligilo",
"toolbar.button.paragraph": "Paragrafo",
"toolbar.button.strike": "Trastrekita",
"toolbar.button.ol": "Numerita listo",
"toolbar.button.underline": "Substrekita",
"toolbar.button.ul": "Bula listo",
"translation.author": "Teamo Kirby",
"translation.direction": "demaldekstre",
"translation.name": "Esperanto",
"translation.locale": "eo",
"upload": "Alŝuti",
"upload.error.cantMove": "Ne eblis movi la alŝutita dosiero",
"upload.error.cantWrite": "Ne eblis registri la dosieron en la diskon",
"upload.error.default": "Ne eblis alŝuti la dosieron",
"upload.error.extension": "Alŝutado haltita pro la dosiersufikso",
"upload.error.formSize": "La alŝutita dosiero estas pli granda ol la direktivo MAX_FILE_SIZE indikata en la formularo",
"upload.error.iniPostSize": "La alŝutita dosiero estas pli granda ol la direktivo post_max_size de php.ini",
"upload.error.iniSize": "La alŝutita dosiero estas pli granda ol la direktivo upload_max_filesize de php.ini",
"upload.error.noFile": "Neniu dosiero alŝutita",
"upload.error.noFiles": "Neniuj dosieroj alŝutitaj",
"upload.error.partial": "La dosiero estis nur parte alŝutita",
"upload.error.tmpDir": "Mankas provizora dosierujo",
"upload.errors": "Eraro",
"upload.progress": "Alŝutante...",
"url": "URL",
"url.placeholder": "https://ekzemplo.com",
"user": "Uzanto",
"user.blueprint": "Vi povas difini pluajn sekciojn kaj kampojn de formularo por ĉi tiu rolo de uzanto ĉe <strong>/site/blueprints/users/{blueprint}.yml</strong>",
"user.changeEmail": "Ŝanĝi retpoŝtadreson",
"user.changeLanguage": "Ŝanĝi lingvon",
"user.changeName": "Ŝangi la nomon de la uzanto",
"user.changePassword": "Ŝanĝi pasvorton",
"user.changePassword.new": "Nova pasvorto",
"user.changePassword.new.confirm": "Konfirmi la novan pasvorton...",
"user.changeRole": "Ŝanĝi rolon",
"user.changeRole.select": "Elekti novan rolon",
"user.create": "Aldoni novan uzanton",
"user.delete": "Forigi ĉi tiun uzanton",
"user.delete.confirm": "Ĉu vi certe volas forigi <br><strong>{email}</strong>?",
"users": "Uzantoj",
"version": "Versio",
"view.account": "Via konto",
"view.installation": "Instalado",
"view.languages": "Lingvoj",
"view.resetPassword": "Restarigi pasvorton",
"view.site": "Retejo",
"view.system": "Sistemo",
"view.users": "Uzantoj",
"welcome": "Bonvenon",
"year": "Jaro",
"yes": "jes"
}

View File

@@ -1,5 +1,10 @@
{ {
"account.changeName": "Change your name",
"account.delete": "Delete your account",
"account.delete.confirm": "Do you really want to delete your account? You will be logged out immediately. Your account cannot be recovered.",
"add": "Agregar", "add": "Agregar",
"author": "Author",
"avatar": "Foto de perfil", "avatar": "Foto de perfil",
"back": "Regresar", "back": "Regresar",
"cancel": "Cancelar", "cancel": "Cancelar",
@@ -9,6 +14,7 @@
"collapse": "Collapse", "collapse": "Collapse",
"collapse.all": "Collapse All", "collapse.all": "Collapse All",
"copy": "Copiar", "copy": "Copiar",
"copy.all": "Copy all",
"create": "Crear", "create": "Crear",
"date": "Fecha", "date": "Fecha",
@@ -23,24 +29,28 @@
"days.tue": "Mar", "days.tue": "Mar",
"days.wed": "Mi\u00e9", "days.wed": "Mi\u00e9",
"debugging": "Debugging",
"delete": "Eliminar", "delete": "Eliminar",
"delete.all": "Eliminar todos", "delete.all": "Eliminar todos",
"dimensions": "Dimensiones",
"disabled": "Desabilitado",
"discard": "Descartar",
"download": "Descargar",
"duplicate": "Duplicar",
"edit": "Editar",
"expand": "Expandir",
"expand.all": "Expandir todo",
"dialog.files.empty": "No has seleccionado ningún archivo", "dialog.files.empty": "No has seleccionado ningún archivo",
"dialog.pages.empty": "No has seleccionado ninguna página", "dialog.pages.empty": "No has seleccionado ninguna página",
"dialog.users.empty": "No has seleccionado ningún usuario", "dialog.users.empty": "No has seleccionado ningún usuario",
"dimensions": "Dimensiones",
"disabled": "Desabilitado",
"discard": "Descartar",
"download": "Descargar",
"duplicate": "Duplicar",
"edit": "Editar",
"email": "Correo Electrónico", "email": "Correo Electrónico",
"email.placeholder": "correo@ejemplo.com", "email.placeholder": "correo@ejemplo.com",
"environment": "Environment",
"error.access.code": "Código inválido", "error.access.code": "Código inválido",
"error.access.login": "Ingreso inválido", "error.access.login": "Ingreso inválido",
"error.access.panel": "No tienes permitido acceder al panel", "error.access.panel": "No tienes permitido acceder al panel",
@@ -92,6 +102,7 @@
"error.language.code": "Por favor introduce un código válido para el idioma", "error.language.code": "Por favor introduce un código válido para el idioma",
"error.language.duplicate": "El idioma ya existe", "error.language.duplicate": "El idioma ya existe",
"error.language.name": "Por favor introduce un nombre válido para el idioma", "error.language.name": "Por favor introduce un nombre válido para el idioma",
"error.language.notFound": "The language could not be found",
"error.layout.validation.block": "There's an error in block {blockIndex} in layout {layoutIndex}", "error.layout.validation.block": "There's an error in block {blockIndex} in layout {layoutIndex}",
"error.layout.validation.settings": "There's an error in layout {index} settings", "error.layout.validation.settings": "There's an error in layout {index} settings",
@@ -100,6 +111,8 @@
"error.license.email": "Por favor ingresa un correo electrónico valido", "error.license.email": "Por favor ingresa un correo electrónico valido",
"error.license.verification": "La licencia no pude ser verificada", "error.license.verification": "La licencia no pude ser verificada",
"error.offline": "The Panel is currently offline",
"error.page.changeSlug.permission": "No está permitido cambiar el apéndice de URL para \"{slug}\".", "error.page.changeSlug.permission": "No está permitido cambiar el apéndice de URL para \"{slug}\".",
"error.page.changeStatus.incomplete": "La página tiene errores y no puede ser publicada.", "error.page.changeStatus.incomplete": "La página tiene errores y no puede ser publicada.",
"error.page.changeStatus.permission": "El estado de esta página no se puede cambiar.", "error.page.changeStatus.permission": "El estado de esta página no se puede cambiar.",
@@ -165,6 +178,7 @@
"error.user.password.undefined": "El usuario no tiene contraseña", "error.user.password.undefined": "El usuario no tiene contraseña",
"error.user.password.wrong": "Wrong password", "error.user.password.wrong": "Wrong password",
"error.user.role.invalid": "Por favor ingresa un rol valido", "error.user.role.invalid": "Por favor ingresa un rol valido",
"error.user.undefined": "El usuario no pudo ser encontrado",
"error.user.update.permission": "No tienes permiso para actualizar al usuario \"{name}\"", "error.user.update.permission": "No tienes permiso para actualizar al usuario \"{name}\"",
"error.validation.accepted": "Por favor, confirma", "error.validation.accepted": "Por favor, confirma",
@@ -208,6 +222,9 @@
"error.validation.time.between": "Please enter a time between {min} and {max}", "error.validation.time.between": "Please enter a time between {min} and {max}",
"error.validation.url": "Por favor ingresa un URL válido", "error.validation.url": "Por favor ingresa un URL válido",
"expand": "Expandir",
"expand.all": "Expandir todo",
"field.required": "Este campo es requerido", "field.required": "Este campo es requerido",
"field.blocks.changeType": "Change type", "field.blocks.changeType": "Change type",
"field.blocks.code.name": "Código", "field.blocks.code.name": "Código",
@@ -218,6 +235,7 @@
"field.blocks.delete.confirm.selected": "Do you really want to delete the selected blocks?", "field.blocks.delete.confirm.selected": "Do you really want to delete the selected blocks?",
"field.blocks.empty": "No blocks yet", "field.blocks.empty": "No blocks yet",
"field.blocks.fieldsets.label": "Please select a block type …", "field.blocks.fieldsets.label": "Please select a block type …",
"field.blocks.fieldsets.paste": "Press <kbd>{{ shortcut }}</kbd> to paste/import blocks from your clipboard",
"field.blocks.gallery.name": "Gallery", "field.blocks.gallery.name": "Gallery",
"field.blocks.gallery.images.empty": "No images yet", "field.blocks.gallery.images.empty": "No images yet",
"field.blocks.gallery.images.label": "Images", "field.blocks.gallery.images.label": "Images",
@@ -234,6 +252,7 @@
"field.blocks.image.placeholder": "Select an image", "field.blocks.image.placeholder": "Select an image",
"field.blocks.image.ratio": "Ratio", "field.blocks.image.ratio": "Ratio",
"field.blocks.image.url": "Image URL", "field.blocks.image.url": "Image URL",
"field.blocks.line.name": "Line",
"field.blocks.list.name": "List", "field.blocks.list.name": "List",
"field.blocks.markdown.name": "Markdown", "field.blocks.markdown.name": "Markdown",
"field.blocks.markdown.label": "Text", "field.blocks.markdown.label": "Text",
@@ -263,7 +282,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.blueprint": "This file has no blueprint yet. You can define the setup in <strong>/site/blueprints/{template}.yml</strong>", "file.blueprint": "This file has no blueprint yet. You can define the setup in <strong>/site/blueprints/files/{blueprint}.yml</strong>",
"file.delete.confirm": "\u00bfEst\u00e1s seguro que deseas eliminar este archivo?", "file.delete.confirm": "\u00bfEst\u00e1s seguro que deseas eliminar este archivo?",
"file.sort": "Change position", "file.sort": "Change position",
@@ -272,6 +291,7 @@
"hide": "Hide", "hide": "Hide",
"hour": "Hora", "hour": "Hora",
"import": "Import",
"insert": "Insertar", "insert": "Insertar",
"insert.after": "Insert after", "insert.after": "Insert after",
"insert.before": "Insert before", "insert.before": "Insert before",
@@ -337,9 +357,9 @@
"login.code.label.password-reset": "Password reset code", "login.code.label.password-reset": "Password reset code",
"login.code.placeholder.email": "000 000", "login.code.placeholder.email": "000 000",
"login.code.text.email": "If your email address is registered, the requested code was sent via email.", "login.code.text.email": "If your email address is registered, the requested code was sent via email.",
"login.email.login.body": "Hi {user.nameOrEmail},\n\nYou recently requested a login code for the Kirby Panel.\nThe following login code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a login code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.", "login.email.login.body": "Hi {user.nameOrEmail},\n\nYou recently requested a login code for the Panel of {site}.\nThe following login code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a login code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.",
"login.email.login.subject": "Your login code", "login.email.login.subject": "Your login code",
"login.email.password-reset.body": "Hi {user.nameOrEmail},\n\nYou recently requested a password reset code for the Kirby Panel.\nThe following password reset code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a password reset code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.", "login.email.password-reset.body": "Hi {user.nameOrEmail},\n\nYou recently requested a password reset code for the Panel of {site}.\nThe following password reset code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a password reset code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.",
"login.email.password-reset.subject": "Your password reset code", "login.email.password-reset.subject": "Your password reset code",
"login.remember": "Mantener mi sesión iniciada", "login.remember": "Mantener mi sesión iniciada",
"login.reset": "Reset password", "login.reset": "Reset password",
@@ -385,7 +405,7 @@
"orientation.portrait": "Retrato", "orientation.portrait": "Retrato",
"orientation.square": "Diapositiva", "orientation.square": "Diapositiva",
"page.blueprint": "This page has no blueprint yet. You can define the setup in <strong>/site/blueprints/{template}.yml</strong>", "page.blueprint": "This page has no blueprint yet. You can define the setup in <strong>/site/blueprints/pages/{blueprint}.yml</strong>",
"page.changeSlug": "Cambiar URL", "page.changeSlug": "Cambiar URL",
"page.changeSlug.fromTitle": "Crear a partir del t\u00edtulo", "page.changeSlug.fromTitle": "Crear a partir del t\u00edtulo",
"page.changeStatus": "Cambiar estado", "page.changeStatus": "Cambiar estado",
@@ -417,7 +437,10 @@
"pagination.page": "Página", "pagination.page": "Página",
"password": "Contrase\u00f1a", "password": "Contrase\u00f1a",
"paste": "Paste",
"paste.after": "Paste after",
"pixel": "Pixel", "pixel": "Pixel",
"plugins": "Plugins",
"prev": "Anterior", "prev": "Anterior",
"preview": "Preview", "preview": "Preview",
"remove": "Eliminar", "remove": "Eliminar",
@@ -454,6 +477,8 @@
"template": "Plantilla", "template": "Plantilla",
"today": "Hoy", "today": "Hoy",
"server": "Server",
"site.blueprint": "The site has no blueprint yet. You can define the setup in <strong>/site/blueprints/site.yml</strong>", "site.blueprint": "The site has no blueprint yet. You can define the setup in <strong>/site/blueprints/site.yml</strong>",
"toolbar.button.code": "Código", "toolbar.button.code": "Código",
@@ -463,11 +488,15 @@
"toolbar.button.heading.1": "Encabezado 1", "toolbar.button.heading.1": "Encabezado 1",
"toolbar.button.heading.2": "Encabezado 2", "toolbar.button.heading.2": "Encabezado 2",
"toolbar.button.heading.3": "Encabezado 3", "toolbar.button.heading.3": "Encabezado 3",
"toolbar.button.heading.4": "Heading 4",
"toolbar.button.heading.5": "Heading 5",
"toolbar.button.heading.6": "Heading 6",
"toolbar.button.italic": "Texto en It\u00e1licas", "toolbar.button.italic": "Texto en It\u00e1licas",
"toolbar.button.file": "Archivo", "toolbar.button.file": "Archivo",
"toolbar.button.file.select": "Selecciona un archivo", "toolbar.button.file.select": "Selecciona un archivo",
"toolbar.button.file.upload": "Sube un archivo", "toolbar.button.file.upload": "Sube un archivo",
"toolbar.button.link": "Enlace", "toolbar.button.link": "Enlace",
"toolbar.button.paragraph": "Paragraph",
"toolbar.button.strike": "Strike-through", "toolbar.button.strike": "Strike-through",
"toolbar.button.ol": "Lista en orden", "toolbar.button.ol": "Lista en orden",
"toolbar.button.underline": "Underline", "toolbar.button.underline": "Underline",
@@ -497,7 +526,7 @@
"url.placeholder": "https://ejemplo.com", "url.placeholder": "https://ejemplo.com",
"user": "Usuario", "user": "Usuario",
"user.blueprint": "Puedes definir secciones adicionales y campos de formulario para este rol de usuario en <strong>/site/blueprints/users/{role}.yml</strong>", "user.blueprint": "You can define additional sections and form fields for this user role in <strong>/site/blueprints/users/{blueprint}.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",
@@ -516,9 +545,10 @@
"view.account": "Tu cuenta", "view.account": "Tu cuenta",
"view.installation": "Instalaci\u00f3n", "view.installation": "Instalaci\u00f3n",
"view.languages": "Idiomas",
"view.resetPassword": "Reset password", "view.resetPassword": "Reset password",
"view.settings": "Ajustes",
"view.site": "Sitio", "view.site": "Sitio",
"view.system": "System",
"view.users": "Usuarios", "view.users": "Usuarios",
"welcome": "Bienvenido", "welcome": "Bienvenido",

View File

@@ -1,5 +1,10 @@
{ {
"account.changeName": "Change your name",
"account.delete": "Delete your account",
"account.delete.confirm": "Do you really want to delete your account? You will be logged out immediately. Your account cannot be recovered.",
"add": "Añadir", "add": "Añadir",
"author": "Author",
"avatar": "Foto de perfil", "avatar": "Foto de perfil",
"back": "Atrás", "back": "Atrás",
"cancel": "Cancelar", "cancel": "Cancelar",
@@ -9,6 +14,7 @@
"collapse": "Collapse", "collapse": "Collapse",
"collapse.all": "Collapse All", "collapse.all": "Collapse All",
"copy": "Copiar", "copy": "Copiar",
"copy.all": "Copy all",
"create": "Crear", "create": "Crear",
"date": "Fecha", "date": "Fecha",
@@ -23,24 +29,28 @@
"days.tue": "Ma", "days.tue": "Ma",
"days.wed": "Mi", "days.wed": "Mi",
"debugging": "Debugging",
"delete": "Borrar", "delete": "Borrar",
"delete.all": "Delete all", "delete.all": "Delete all",
"dimensions": "Dimensiones",
"disabled": "Desabilitado",
"discard": "Descartar",
"download": "Descargar",
"duplicate": "Duplicar",
"edit": "Editar",
"expand": "Expand",
"expand.all": "Expand All",
"dialog.files.empty": "No se ha seleccionado ningún archivo", "dialog.files.empty": "No se ha seleccionado ningún archivo",
"dialog.pages.empty": "No se ha seleccionado ninguna página", "dialog.pages.empty": "No se ha seleccionado ninguna página",
"dialog.users.empty": "No se ha seleccionado ningún usuario", "dialog.users.empty": "No se ha seleccionado ningún usuario",
"dimensions": "Dimensiones",
"disabled": "Desabilitado",
"discard": "Descartar",
"download": "Descargar",
"duplicate": "Duplicar",
"edit": "Editar",
"email": "Correo electrónico", "email": "Correo electrónico",
"email.placeholder": "correo@ejemplo.com", "email.placeholder": "correo@ejemplo.com",
"environment": "Environment",
"error.access.code": "Invalid code", "error.access.code": "Invalid code",
"error.access.login": "Ingreso inválido", "error.access.login": "Ingreso inválido",
"error.access.panel": "No estás autorizado para acceder al panel", "error.access.panel": "No estás autorizado para acceder al panel",
@@ -92,6 +102,7 @@
"error.language.code": "Please enter a valid code for the language", "error.language.code": "Please enter a valid code for the language",
"error.language.duplicate": "The language already exists", "error.language.duplicate": "The language already exists",
"error.language.name": "Please enter a valid name for the language", "error.language.name": "Please enter a valid name for the language",
"error.language.notFound": "The language could not be found",
"error.layout.validation.block": "There's an error in block {blockIndex} in layout {layoutIndex}", "error.layout.validation.block": "There's an error in block {blockIndex} in layout {layoutIndex}",
"error.layout.validation.settings": "There's an error in layout {index} settings", "error.layout.validation.settings": "There's an error in layout {index} settings",
@@ -100,6 +111,8 @@
"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.offline": "The Panel is currently offline",
"error.page.changeSlug.permission": "No está permitido cambiar el apéndice de URL para \"{slug}\"", "error.page.changeSlug.permission": "No está permitido cambiar el apéndice de URL para \"{slug}\"",
"error.page.changeStatus.incomplete": "La página tiene errores y no puede ser publicada.", "error.page.changeStatus.incomplete": "La página tiene errores y no puede ser publicada.",
"error.page.changeStatus.permission": "El estado de esta página no se puede cambiar", "error.page.changeStatus.permission": "El estado de esta página no se puede cambiar",
@@ -165,6 +178,7 @@
"error.user.password.undefined": "El usuario no tiene contraseña", "error.user.password.undefined": "El usuario no tiene contraseña",
"error.user.password.wrong": "Wrong password", "error.user.password.wrong": "Wrong password",
"error.user.role.invalid": "Por favor ingrese un rol válido", "error.user.role.invalid": "Por favor ingrese un rol válido",
"error.user.undefined": "El usuario no puede ser encontrado",
"error.user.update.permission": "No tienes permitido actualizar al usuario \"{name}\"", "error.user.update.permission": "No tienes permitido actualizar al usuario \"{name}\"",
"error.validation.accepted": "Por favor, confirma", "error.validation.accepted": "Por favor, confirma",
@@ -208,6 +222,9 @@
"error.validation.time.between": "Please enter a time between {min} and {max}", "error.validation.time.between": "Please enter a time between {min} and {max}",
"error.validation.url": "Por favor introduzca un URL válido", "error.validation.url": "Por favor introduzca un URL válido",
"expand": "Expand",
"expand.all": "Expand All",
"field.required": "The field is required", "field.required": "The field is required",
"field.blocks.changeType": "Change type", "field.blocks.changeType": "Change type",
"field.blocks.code.name": "Código", "field.blocks.code.name": "Código",
@@ -218,6 +235,7 @@
"field.blocks.delete.confirm.selected": "Do you really want to delete the selected blocks?", "field.blocks.delete.confirm.selected": "Do you really want to delete the selected blocks?",
"field.blocks.empty": "No blocks yet", "field.blocks.empty": "No blocks yet",
"field.blocks.fieldsets.label": "Please select a block type …", "field.blocks.fieldsets.label": "Please select a block type …",
"field.blocks.fieldsets.paste": "Press <kbd>{{ shortcut }}</kbd> to paste/import blocks from your clipboard",
"field.blocks.gallery.name": "Gallery", "field.blocks.gallery.name": "Gallery",
"field.blocks.gallery.images.empty": "No images yet", "field.blocks.gallery.images.empty": "No images yet",
"field.blocks.gallery.images.label": "Images", "field.blocks.gallery.images.label": "Images",
@@ -234,6 +252,7 @@
"field.blocks.image.placeholder": "Select an image", "field.blocks.image.placeholder": "Select an image",
"field.blocks.image.ratio": "Ratio", "field.blocks.image.ratio": "Ratio",
"field.blocks.image.url": "Image URL", "field.blocks.image.url": "Image URL",
"field.blocks.line.name": "Line",
"field.blocks.list.name": "List", "field.blocks.list.name": "List",
"field.blocks.markdown.name": "Markdown", "field.blocks.markdown.name": "Markdown",
"field.blocks.markdown.label": "Text", "field.blocks.markdown.label": "Text",
@@ -263,7 +282,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.blueprint": "This file has no blueprint yet. You can define the setup in <strong>/site/blueprints/{template}.yml</strong>", "file.blueprint": "This file has no blueprint yet. You can define the setup in <strong>/site/blueprints/files/{blueprint}.yml</strong>",
"file.delete.confirm": "¿Realmente quieres eliminar <br><strong>{filename}</strong>?", "file.delete.confirm": "¿Realmente quieres eliminar <br><strong>{filename}</strong>?",
"file.sort": "Change position", "file.sort": "Change position",
@@ -272,6 +291,7 @@
"hide": "Hide", "hide": "Hide",
"hour": "Hora", "hour": "Hora",
"import": "Import",
"insert": "Insertar", "insert": "Insertar",
"insert.after": "Insert after", "insert.after": "Insert after",
"insert.before": "Insert before", "insert.before": "Insert before",
@@ -337,9 +357,9 @@
"login.code.label.password-reset": "Password reset code", "login.code.label.password-reset": "Password reset code",
"login.code.placeholder.email": "000 000", "login.code.placeholder.email": "000 000",
"login.code.text.email": "If your email address is registered, the requested code was sent via email.", "login.code.text.email": "If your email address is registered, the requested code was sent via email.",
"login.email.login.body": "Hi {user.nameOrEmail},\n\nYou recently requested a login code for the Kirby Panel.\nThe following login code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a login code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.", "login.email.login.body": "Hi {user.nameOrEmail},\n\nYou recently requested a login code for the Panel of {site}.\nThe following login code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a login code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.",
"login.email.login.subject": "Your login code", "login.email.login.subject": "Your login code",
"login.email.password-reset.body": "Hi {user.nameOrEmail},\n\nYou recently requested a password reset code for the Kirby Panel.\nThe following password reset code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a password reset code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.", "login.email.password-reset.body": "Hi {user.nameOrEmail},\n\nYou recently requested a password reset code for the Panel of {site}.\nThe following password reset code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a password reset code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.",
"login.email.password-reset.subject": "Your password reset code", "login.email.password-reset.subject": "Your password reset code",
"login.remember": "Mantener sesión iniciada", "login.remember": "Mantener sesión iniciada",
"login.reset": "Reset password", "login.reset": "Reset password",
@@ -385,7 +405,7 @@
"orientation.portrait": "Retrato", "orientation.portrait": "Retrato",
"orientation.square": "Cuadrado", "orientation.square": "Cuadrado",
"page.blueprint": "This page has no blueprint yet. You can define the setup in <strong>/site/blueprints/{template}.yml</strong>", "page.blueprint": "This page has no blueprint yet. You can define the setup in <strong>/site/blueprints/pages/{blueprint}.yml</strong>",
"page.changeSlug": "Cambiar URL", "page.changeSlug": "Cambiar URL",
"page.changeSlug.fromTitle": "Crear en base al título", "page.changeSlug.fromTitle": "Crear en base al título",
"page.changeStatus": "Cambiar estado", "page.changeStatus": "Cambiar estado",
@@ -417,7 +437,10 @@
"pagination.page": "Página", "pagination.page": "Página",
"password": "Contraseña", "password": "Contraseña",
"paste": "Paste",
"paste.after": "Paste after",
"pixel": "Pixel", "pixel": "Pixel",
"plugins": "Plugins",
"prev": "Anterior", "prev": "Anterior",
"preview": "Preview", "preview": "Preview",
"remove": "Eliminar", "remove": "Eliminar",
@@ -454,6 +477,8 @@
"template": "Plantilla", "template": "Plantilla",
"today": "Hoy", "today": "Hoy",
"server": "Server",
"site.blueprint": "The site has no blueprint yet. You can define the setup in <strong>/site/blueprints/site.yml</strong>", "site.blueprint": "The site has no blueprint yet. You can define the setup in <strong>/site/blueprints/site.yml</strong>",
"toolbar.button.code": "Código", "toolbar.button.code": "Código",
@@ -463,11 +488,15 @@
"toolbar.button.heading.1": "Encabezado 1", "toolbar.button.heading.1": "Encabezado 1",
"toolbar.button.heading.2": "Encabezado 2", "toolbar.button.heading.2": "Encabezado 2",
"toolbar.button.heading.3": "Encabezado 3", "toolbar.button.heading.3": "Encabezado 3",
"toolbar.button.heading.4": "Heading 4",
"toolbar.button.heading.5": "Heading 5",
"toolbar.button.heading.6": "Heading 6",
"toolbar.button.italic": "Italica", "toolbar.button.italic": "Italica",
"toolbar.button.file": "Archivo", "toolbar.button.file": "Archivo",
"toolbar.button.file.select": "Seleccione un archivo", "toolbar.button.file.select": "Seleccione un archivo",
"toolbar.button.file.upload": "Sube un archivo", "toolbar.button.file.upload": "Sube un archivo",
"toolbar.button.link": "Enlace", "toolbar.button.link": "Enlace",
"toolbar.button.paragraph": "Paragraph",
"toolbar.button.strike": "Strike-through", "toolbar.button.strike": "Strike-through",
"toolbar.button.ol": "Lista ordenada", "toolbar.button.ol": "Lista ordenada",
"toolbar.button.underline": "Underline", "toolbar.button.underline": "Underline",
@@ -497,7 +526,7 @@
"url.placeholder": "https://ejemplo.com", "url.placeholder": "https://ejemplo.com",
"user": "Usuario", "user": "Usuario",
"user.blueprint": "Puede definir secciones adicionales y campos de formulario para este rol de usuario en <strong>/site/blueprints/users/{role}.yml</strong>", "user.blueprint": "You can define additional sections and form fields for this user role in <strong>/site/blueprints/users/{blueprint}.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",
@@ -516,9 +545,10 @@
"view.account": "Su cuenta", "view.account": "Su cuenta",
"view.installation": "Instalación", "view.installation": "Instalación",
"view.languages": "Idiomas",
"view.resetPassword": "Reset password", "view.resetPassword": "Reset password",
"view.settings": "Ajustes",
"view.site": "Sitio", "view.site": "Sitio",
"view.system": "System",
"view.users": "Usuarios", "view.users": "Usuarios",
"welcome": "Bienvenido(a)", "welcome": "Bienvenido(a)",

View File

@@ -1,5 +1,10 @@
{ {
"account.changeName": "Change your name",
"account.delete": "Delete your account",
"account.delete.confirm": "Do you really want to delete your account? You will be logged out immediately. Your account cannot be recovered.",
"add": "\u0627\u0641\u0632\u0648\u062f\u0646", "add": "\u0627\u0641\u0632\u0648\u062f\u0646",
"author": "Author",
"avatar": "\u062a\u0635\u0648\u06cc\u0631 \u067e\u0631\u0648\u0641\u0627\u06cc\u0644", "avatar": "\u062a\u0635\u0648\u06cc\u0631 \u067e\u0631\u0648\u0641\u0627\u06cc\u0644",
"back": "بازگشت", "back": "بازگشت",
"cancel": "\u0627\u0646\u0635\u0631\u0627\u0641", "cancel": "\u0627\u0646\u0635\u0631\u0627\u0641",
@@ -9,6 +14,7 @@
"collapse": "Collapse", "collapse": "Collapse",
"collapse.all": "Collapse All", "collapse.all": "Collapse All",
"copy": "کپی", "copy": "کپی",
"copy.all": "Copy all",
"create": "ایجاد", "create": "ایجاد",
"date": "تاریخ", "date": "تاریخ",
@@ -23,24 +29,28 @@
"days.tue": "\u0633\u0647 \u0634\u0646\u0628\u0647", "days.tue": "\u0633\u0647 \u0634\u0646\u0628\u0647",
"days.wed": "\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647", "days.wed": "\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647",
"debugging": "Debugging",
"delete": "\u062d\u0630\u0641", "delete": "\u062d\u0630\u0641",
"delete.all": "Delete all", "delete.all": "Delete all",
"dimensions": "ابعاد",
"disabled": "Disabled",
"discard": "\u0627\u0646\u0635\u0631\u0627\u0641",
"download": "Download",
"duplicate": "Duplicate",
"edit": "\u0648\u06cc\u0631\u0627\u06cc\u0634",
"expand": "Expand",
"expand.all": "Expand All",
"dialog.files.empty": "No files to select", "dialog.files.empty": "No files to select",
"dialog.pages.empty": "No pages to select", "dialog.pages.empty": "No pages to select",
"dialog.users.empty": "No users to select", "dialog.users.empty": "No users to select",
"dimensions": "ابعاد",
"disabled": "Disabled",
"discard": "\u0627\u0646\u0635\u0631\u0627\u0641",
"download": "Download",
"duplicate": "Duplicate",
"edit": "\u0648\u06cc\u0631\u0627\u06cc\u0634",
"email": "\u067e\u0633\u062a \u0627\u0644\u06a9\u062a\u0631\u0648\u0646\u06cc\u06a9", "email": "\u067e\u0633\u062a \u0627\u0644\u06a9\u062a\u0631\u0648\u0646\u06cc\u06a9",
"email.placeholder": "mail@example.com", "email.placeholder": "mail@example.com",
"environment": "Environment",
"error.access.code": "Invalid code", "error.access.code": "Invalid code",
"error.access.login": "اطلاعات ورودی نامعتبر است", "error.access.login": "اطلاعات ورودی نامعتبر است",
"error.access.panel": "شما اجازه دسترسی به پانل را ندارید", "error.access.panel": "شما اجازه دسترسی به پانل را ندارید",
@@ -92,6 +102,7 @@
"error.language.code": "Please enter a valid code for the language", "error.language.code": "Please enter a valid code for the language",
"error.language.duplicate": "The language already exists", "error.language.duplicate": "The language already exists",
"error.language.name": "Please enter a valid name for the language", "error.language.name": "Please enter a valid name for the language",
"error.language.notFound": "The language could not be found",
"error.layout.validation.block": "There's an error in block {blockIndex} in layout {layoutIndex}", "error.layout.validation.block": "There's an error in block {blockIndex} in layout {layoutIndex}",
"error.layout.validation.settings": "There's an error in layout {index} settings", "error.layout.validation.settings": "There's an error in layout {index} settings",
@@ -100,6 +111,8 @@
"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.offline": "The Panel is currently offline",
"error.page.changeSlug.permission": "شما امکان تغییر پسوند Url صفحه «{slug}» را ندارید", "error.page.changeSlug.permission": "شما امکان تغییر پسوند Url صفحه «{slug}» را ندارید",
"error.page.changeStatus.incomplete": "صفحه حاوی خطا است و قابل انتشار نیست", "error.page.changeStatus.incomplete": "صفحه حاوی خطا است و قابل انتشار نیست",
"error.page.changeStatus.permission": "وضعیت صفحه جاری قابل تغییر نیست", "error.page.changeStatus.permission": "وضعیت صفحه جاری قابل تغییر نیست",
@@ -165,6 +178,7 @@
"error.user.password.undefined": "کاربر فاقد گذرواژه است", "error.user.password.undefined": "کاربر فاقد گذرواژه است",
"error.user.password.wrong": "Wrong password", "error.user.password.wrong": "Wrong password",
"error.user.role.invalid": "لطفا نقش صحیحی وارد نمایید", "error.user.role.invalid": "لطفا نقش صحیحی وارد نمایید",
"error.user.undefined": "کاربر مورد نظر پیدا نشد",
"error.user.update.permission": "شما اجازه بروزرسانی کاربر «{name}» را ندارید", "error.user.update.permission": "شما اجازه بروزرسانی کاربر «{name}» را ندارید",
"error.validation.accepted": "لطفا تایید کنید", "error.validation.accepted": "لطفا تایید کنید",
@@ -208,6 +222,9 @@
"error.validation.time.between": "Please enter a time between {min} and {max}", "error.validation.time.between": "Please enter a time between {min} and {max}",
"error.validation.url": "لطفا آدرس URL صحیح وارد کنید", "error.validation.url": "لطفا آدرس URL صحیح وارد کنید",
"expand": "Expand",
"expand.all": "Expand All",
"field.required": "The field is required", "field.required": "The field is required",
"field.blocks.changeType": "Change type", "field.blocks.changeType": "Change type",
"field.blocks.code.name": "کد", "field.blocks.code.name": "کد",
@@ -218,6 +235,7 @@
"field.blocks.delete.confirm.selected": "Do you really want to delete the selected blocks?", "field.blocks.delete.confirm.selected": "Do you really want to delete the selected blocks?",
"field.blocks.empty": "No blocks yet", "field.blocks.empty": "No blocks yet",
"field.blocks.fieldsets.label": "Please select a block type …", "field.blocks.fieldsets.label": "Please select a block type …",
"field.blocks.fieldsets.paste": "Press <kbd>{{ shortcut }}</kbd> to paste/import blocks from your clipboard",
"field.blocks.gallery.name": "Gallery", "field.blocks.gallery.name": "Gallery",
"field.blocks.gallery.images.empty": "No images yet", "field.blocks.gallery.images.empty": "No images yet",
"field.blocks.gallery.images.label": "Images", "field.blocks.gallery.images.label": "Images",
@@ -234,6 +252,7 @@
"field.blocks.image.placeholder": "Select an image", "field.blocks.image.placeholder": "Select an image",
"field.blocks.image.ratio": "Ratio", "field.blocks.image.ratio": "Ratio",
"field.blocks.image.url": "Image URL", "field.blocks.image.url": "Image URL",
"field.blocks.line.name": "Line",
"field.blocks.list.name": "List", "field.blocks.list.name": "List",
"field.blocks.markdown.name": "Markdown", "field.blocks.markdown.name": "Markdown",
"field.blocks.markdown.label": "Text", "field.blocks.markdown.label": "Text",
@@ -263,7 +282,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.blueprint": "This file has no blueprint yet. You can define the setup in <strong>/site/blueprints/{template}.yml</strong>", "file.blueprint": "This file has no blueprint yet. You can define the setup in <strong>/site/blueprints/files/{blueprint}.yml</strong>",
"file.delete.confirm": "آیا واقعا می خواهید این فایل را حذف کنید؟<br><strong>{filename}</strong>", "file.delete.confirm": "آیا واقعا می خواهید این فایل را حذف کنید؟<br><strong>{filename}</strong>",
"file.sort": "Change position", "file.sort": "Change position",
@@ -272,6 +291,7 @@
"hide": "Hide", "hide": "Hide",
"hour": "ساعت", "hour": "ساعت",
"import": "Import",
"insert": "\u062f\u0631\u062c", "insert": "\u062f\u0631\u062c",
"insert.after": "Insert after", "insert.after": "Insert after",
"insert.before": "Insert before", "insert.before": "Insert before",
@@ -337,9 +357,9 @@
"login.code.label.password-reset": "Password reset code", "login.code.label.password-reset": "Password reset code",
"login.code.placeholder.email": "000 000", "login.code.placeholder.email": "000 000",
"login.code.text.email": "If your email address is registered, the requested code was sent via email.", "login.code.text.email": "If your email address is registered, the requested code was sent via email.",
"login.email.login.body": "Hi {user.nameOrEmail},\n\nYou recently requested a login code for the Kirby Panel.\nThe following login code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a login code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.", "login.email.login.body": "Hi {user.nameOrEmail},\n\nYou recently requested a login code for the Panel of {site}.\nThe following login code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a login code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.",
"login.email.login.subject": "Your login code", "login.email.login.subject": "Your login code",
"login.email.password-reset.body": "Hi {user.nameOrEmail},\n\nYou recently requested a password reset code for the Kirby Panel.\nThe following password reset code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a password reset code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.", "login.email.password-reset.body": "Hi {user.nameOrEmail},\n\nYou recently requested a password reset code for the Panel of {site}.\nThe following password reset code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a password reset code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.",
"login.email.password-reset.subject": "Your password reset code", "login.email.password-reset.subject": "Your password reset code",
"login.remember": "مرا به خاطر بسپار", "login.remember": "مرا به خاطر بسپار",
"login.reset": "Reset password", "login.reset": "Reset password",
@@ -385,7 +405,7 @@
"orientation.portrait": "عمودی", "orientation.portrait": "عمودی",
"orientation.square": "مربع", "orientation.square": "مربع",
"page.blueprint": "This page has no blueprint yet. You can define the setup in <strong>/site/blueprints/{template}.yml</strong>", "page.blueprint": "This page has no blueprint yet. You can define the setup in <strong>/site/blueprints/pages/{blueprint}.yml</strong>",
"page.changeSlug": "تغییر Url صفحه", "page.changeSlug": "تغییر Url صفحه",
"page.changeSlug.fromTitle": "\u0627\u06cc\u062c\u0627\u062f \u0627\u0632 \u0631\u0648\u06cc \u0639\u0646\u0648\u0627\u0646", "page.changeSlug.fromTitle": "\u0627\u06cc\u062c\u0627\u062f \u0627\u0632 \u0631\u0648\u06cc \u0639\u0646\u0648\u0627\u0646",
"page.changeStatus": "تغییر وضعیت", "page.changeStatus": "تغییر وضعیت",
@@ -417,7 +437,10 @@
"pagination.page": "صفحه", "pagination.page": "صفحه",
"password": "\u06af\u0630\u0631\u0648\u0627\u0698\u0647", "password": "\u06af\u0630\u0631\u0648\u0627\u0698\u0647",
"paste": "Paste",
"paste.after": "Paste after",
"pixel": "پیکسل", "pixel": "پیکسل",
"plugins": "Plugins",
"prev": "قبلی", "prev": "قبلی",
"preview": "Preview", "preview": "Preview",
"remove": "حذف", "remove": "حذف",
@@ -454,6 +477,8 @@
"template": "\u0642\u0627\u0644\u0628 \u0635\u0641\u062d\u0647", "template": "\u0642\u0627\u0644\u0628 \u0635\u0641\u062d\u0647",
"today": "امروز", "today": "امروز",
"server": "Server",
"site.blueprint": "The site has no blueprint yet. You can define the setup in <strong>/site/blueprints/site.yml</strong>", "site.blueprint": "The site has no blueprint yet. You can define the setup in <strong>/site/blueprints/site.yml</strong>",
"toolbar.button.code": "کد", "toolbar.button.code": "کد",
@@ -463,11 +488,15 @@
"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.heading.4": "Heading 4",
"toolbar.button.heading.5": "Heading 5",
"toolbar.button.heading.6": "Heading 6",
"toolbar.button.italic": "\u0645\u062a\u0646 \u0627\u0631\u06cc\u0628", "toolbar.button.italic": "\u0645\u062a\u0646 \u0627\u0631\u06cc\u0628",
"toolbar.button.file": "فایل", "toolbar.button.file": "فایل",
"toolbar.button.file.select": "Select a file", "toolbar.button.file.select": "Select a file",
"toolbar.button.file.upload": "Upload a file", "toolbar.button.file.upload": "Upload a file",
"toolbar.button.link": "\u067e\u06cc\u0648\u0646\u062f", "toolbar.button.link": "\u067e\u06cc\u0648\u0646\u062f",
"toolbar.button.paragraph": "Paragraph",
"toolbar.button.strike": "Strike-through", "toolbar.button.strike": "Strike-through",
"toolbar.button.ol": "لیست مرتب", "toolbar.button.ol": "لیست مرتب",
"toolbar.button.underline": "Underline", "toolbar.button.underline": "Underline",
@@ -497,7 +526,7 @@
"url.placeholder": "https://example.com", "url.placeholder": "https://example.com",
"user": "کاربر", "user": "کاربر",
"user.blueprint": "شما می توانید قسمت‌های اضافی و فیلدهای فرم را برای این نقش کاربر در <strong>/site/blueprints/users/{role}.yml</strong> تعریف کنید", "user.blueprint": "You can define additional sections and form fields for this user role in <strong>/site/blueprints/users/{blueprint}.yml</strong>",
"user.changeEmail": "تغییر ایمیل", "user.changeEmail": "تغییر ایمیل",
"user.changeLanguage": "تغییر زبان", "user.changeLanguage": "تغییر زبان",
"user.changeName": "تغییر نام این کاربر", "user.changeName": "تغییر نام این کاربر",
@@ -516,9 +545,10 @@
"view.account": "حساب کاربری شما", "view.account": "حساب کاربری شما",
"view.installation": "\u0646\u0635\u0628 \u0648 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc", "view.installation": "\u0646\u0635\u0628 \u0648 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc",
"view.languages": "زبان‌ها",
"view.resetPassword": "Reset password", "view.resetPassword": "Reset password",
"view.settings": "تنظیمات",
"view.site": "سایت", "view.site": "سایت",
"view.system": "System",
"view.users": "\u06a9\u0627\u0631\u0628\u0631\u0627\u0646", "view.users": "\u06a9\u0627\u0631\u0628\u0631\u0627\u0646",
"welcome": "خوش آمدید", "welcome": "خوش آمدید",

View File

@@ -1,14 +1,20 @@
{ {
"account.changeName": "Change your name",
"account.delete": "Delete your account",
"account.delete.confirm": "Do you really want to delete your account? You will be logged out immediately. Your account cannot be recovered.",
"add": "Lis\u00e4\u00e4", "add": "Lis\u00e4\u00e4",
"author": "Author",
"avatar": "Profiilikuva", "avatar": "Profiilikuva",
"back": "Takaisin", "back": "Takaisin",
"cancel": "Peruuta", "cancel": "Peruuta",
"change": "Muuta", "change": "Muuta",
"close": "Sulje", "close": "Sulje",
"confirm": "Ok", "confirm": "Ok",
"collapse": "Collapse", "collapse": "Pienennä",
"collapse.all": "Collapse All", "collapse.all": "Pienennä kaikki",
"copy": "Kopioi", "copy": "Kopioi",
"copy.all": "Copy all",
"create": "Luo", "create": "Luo",
"date": "Päivämäärä", "date": "Päivämäärä",
@@ -23,25 +29,29 @@
"days.tue": "Ti", "days.tue": "Ti",
"days.wed": "Ke", "days.wed": "Ke",
"debugging": "Debugging",
"delete": "Poista", "delete": "Poista",
"delete.all": "Delete all", "delete.all": "Poista kaikki",
"dimensions": "Mitat",
"disabled": "Disabled",
"discard": "Hylkää",
"download": "Lataa",
"duplicate": "Kahdenna",
"edit": "Muokkaa",
"expand": "Expand",
"expand.all": "Expand All",
"dialog.files.empty": "Ei valittavissa olevia tiedostoja", "dialog.files.empty": "Ei valittavissa olevia tiedostoja",
"dialog.pages.empty": "Ei valittavissa olevia sivuja", "dialog.pages.empty": "Ei valittavissa olevia sivuja",
"dialog.users.empty": "Ei valittavissa olevia käyttäjiä", "dialog.users.empty": "Ei valittavissa olevia käyttäjiä",
"dimensions": "Mitat",
"disabled": "Pois käytöstä",
"discard": "Hylkää",
"download": "Lataa",
"duplicate": "Kahdenna",
"edit": "Muokkaa",
"email": "S\u00e4hk\u00f6posti", "email": "S\u00e4hk\u00f6posti",
"email.placeholder": "nimi@osoite.fi", "email.placeholder": "nimi@osoite.fi",
"error.access.code": "Invalid code", "environment": "Environment",
"error.access.code": "Väärä koodi",
"error.access.login": "Kirjautumistiedot eivät kelpaa", "error.access.login": "Kirjautumistiedot eivät kelpaa",
"error.access.panel": "Sinulla ei ole oikeutta käyttää paneelia", "error.access.panel": "Sinulla ei ole oikeutta käyttää paneelia",
"error.access.view": "Sinulla ei ole oikeutta käyttää tätä osaa paneelista", "error.access.view": "Sinulla ei ole oikeutta käyttää tätä osaa paneelista",
@@ -51,13 +61,13 @@
"error.avatar.dimensions.invalid": "Profiilikuvan leveys ja korkeus voivat olla enintään 3000 pikseliä", "error.avatar.dimensions.invalid": "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": "Suunnitelmaa \"{name}\" ei voitu ladata",
"error.blocks.max.plural": "You must not add more than {max} blocks", "error.blocks.max.plural": "Voit lisätä enintään {max} lohkoa",
"error.blocks.max.singular": "You must not add more than one block", "error.blocks.max.singular": "Voit lisätä enintään yhden lohkon",
"error.blocks.min.plural": "You must add at least {min} blocks", "error.blocks.min.plural": "Lisää vähintään {min} lohkoa",
"error.blocks.min.singular": "You must add at least one block", "error.blocks.min.singular": "Lisää vähintään yksi lohko",
"error.blocks.validation": "There's an error in block {index}", "error.blocks.validation": "Virhe lohkossa {index}",
"error.email.preset.notFound": "Nimellä \"{name}\" ja kyseisellä verkkotunnuksella ei löydy sähköpostiosoitetta", "error.email.preset.notFound": "Nimellä \"{name}\" ja kyseisellä verkkotunnuksella ei löydy sähköpostiosoitetta",
@@ -65,41 +75,44 @@
"error.file.changeName.empty": "Nimi ei voi olla tyhjä", "error.file.changeName.empty": "Nimi ei voi olla tyhjä",
"error.file.changeName.permission": "Sinulla ei ole oikeutta muuttaa tiedoston \"{filename}\" nimeä", "error.file.changeName.permission": "Sinulla ei ole oikeutta muuttaa tiedoston \"{filename}\" nimeä",
"error.file.duplicate": "Tiedosto nimellä \"{filename}\" on jo olemassa", "error.file.duplicate": "Tiedosto nimeltä \"{filename}\" on jo olemassa",
"error.file.extension.forbidden": "Tiedostopääte \"{extension}\" ei ole sallittu", "error.file.extension.forbidden": "Tiedostopääte \"{extension}\" ei ole sallittu",
"error.file.extension.invalid": "Invalid extension: {extension}", "error.file.extension.invalid": "Pääte {extension} ei kelpaa",
"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": "Kuvan korkeus ei voi ylittää {height} pikseliä",
"error.file.maxsize": "The file is too large", "error.file.maxsize": "Tiedosto on liian suuri",
"error.file.maxwidth": "The width of the image must not exceed {width} pixels", "error.file.maxwidth": "Kuvan leveys ei voi ylittää {width} pikseliä",
"error.file.mime.differs": "Lähetetyllä tiedostolla täytyy olla sama mime-tyyppi \"{mime}\"", "error.file.mime.differs": "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": "Mime-tyyppi {mime} ei kelpaa",
"error.file.mime.missing": "Tiedoston \"{filename}\" mediatyyppiä ei voida tunnistaa", "error.file.mime.missing": "Tiedoston \"{filename}\" mediatyyppiä ei voida tunnistaa",
"error.file.minheight": "The height of the image must be at least {height} pixels", "error.file.minheight": "Kuvan korkeus täytyy olla vähintään {height} pikseliä",
"error.file.minsize": "The file is too small", "error.file.minsize": "Tiedosto on liian pieni",
"error.file.minwidth": "The width of the image must be at least {width} pixels", "error.file.minwidth": "Kuvan leveys täytyy olla vähintään {width} pikseliä",
"error.file.name.missing": "Tiedostonimi ei voi olla tyhjä", "error.file.name.missing": "Tiedostonimi ei voi olla tyhjä",
"error.file.notFound": "Tiedostoa \"{filename}\" ei löytynyt", "error.file.notFound": "Tiedostoa \"{filename}\" ei löytynyt",
"error.file.orientation": "The orientation of the image must be \"{orientation}\"", "error.file.orientation": "Kuvan suuntaus täytyy olla \"{orientation}\"",
"error.file.type.forbidden": "Sinulla ei ole oikeutta lähettää tiedostoja joiden tyyppi on {type}", "error.file.type.forbidden": "Sinulla ei ole oikeutta lähettää tiedostoja joiden tyyppi on {type}",
"error.file.type.invalid": "Invalid file type: {type}", "error.file.type.invalid": "Tiedostotyyppi {type} ei kelpaa",
"error.file.undefined": "Tiedostoa ei l\u00f6ytynyt", "error.file.undefined": "Tiedostoa ei l\u00f6ytynyt",
"error.form.incomplete": "Korjaa kaikki lomakkeen virheet...", "error.form.incomplete": "Korjaa kaikki lomakkeen virheet",
"error.form.notSaved": "Lomaketta ei voitu tallentaa", "error.form.notSaved": "Lomaketta ei voitu tallentaa",
"error.language.code": "Anna kielen lyhenne", "error.language.code": "Anna kielen lyhenne",
"error.language.duplicate": "Kieli on jo olemassa", "error.language.duplicate": "Kieli on jo olemassa",
"error.language.name": "Anna kielen nimi", "error.language.name": "Anna kielen nimi",
"error.language.notFound": "The language could not be found",
"error.layout.validation.block": "There's an error in block {blockIndex} in layout {layoutIndex}", "error.layout.validation.block": "Lohkon {blockIndex} asetelmassa {layoutIndex} tapahtui virhe",
"error.layout.validation.settings": "There's an error in layout {index} settings", "error.layout.validation.settings": "Virhe asetelman {index} asetuksissa",
"error.license.format": "Anna lisenssiavain", "error.license.format": "Anna lisenssiavain",
"error.license.email": "Anna kelpaava sähköpostiosoite", "error.license.email": "Anna sähköpostiosoite",
"error.license.verification": "Lisenssiä ei voitu vahvistaa", "error.license.verification": "Lisenssiä ei voitu vahvistaa",
"error.offline": "The Panel is currently offline",
"error.page.changeSlug.permission": "Sinulla ei ole oikeutta muuttaa URL-liitettä sivulle \"{slug}\"", "error.page.changeSlug.permission": "Sinulla ei ole oikeutta muuttaa URL-liitettä sivulle \"{slug}\"",
"error.page.changeStatus.incomplete": "Sivulla on virheitä eikä sitä voitu julkaista", "error.page.changeStatus.incomplete": "Sivulla on virheitä eikä sitä voitu julkaista",
"error.page.changeStatus.permission": "Tämän sivun tilaa ei voi muuttaa", "error.page.changeStatus.permission": "Tämän sivun tilaa ei voi muuttaa",
@@ -118,8 +131,8 @@
"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": "Anna kelpaava järjestysnumero. Numero ei voi olla negatiivinen.", "error.page.num.invalid": "Anna kelpaava järjestysnumero. Numero ei voi olla negatiivinen.",
"error.page.slug.invalid": "Please enter a valid URL appendix", "error.page.slug.invalid": "Anna kelpaava URL-liite",
"error.page.slug.maxlength": "Slug length must be less than \"{length}\" characters", "error.page.slug.maxlength": "URL-liite täytyy olla vähemmän kuin \"{length}\" merkkiä pitkä",
"error.page.sort.permission": "Sivua \"{slug}\" ei voi järjestellä", "error.page.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",
@@ -163,8 +176,9 @@
"error.user.password.invalid": "Anna kelpaava salasana. Salasanan täytyy olla ainakin 8 merkkiä pitkä.", "error.user.password.invalid": "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.password.wrong": "Wrong password", "error.user.password.wrong": "Väärä salasana",
"error.user.role.invalid": "Anna kelpaava käyttäjätaso", "error.user.role.invalid": "Anna kelpaava käyttäjätaso",
"error.user.undefined": "Käyttäjää ei löytynyt",
"error.user.update.permission": "Sinulla ei ole oikeutta päivittää käyttäjää \"{name}\"", "error.user.update.permission": "Sinulla ei ole oikeutta päivittää käyttäjää \"{name}\"",
"error.validation.accepted": "Ole hyvä ja vahvista", "error.validation.accepted": "Ole hyvä ja vahvista",
@@ -203,78 +217,84 @@
"error.validation.size": "Arvon koko täytyy olla \"{size}\"", "error.validation.size": "Arvon koko täytyy olla \"{size}\"",
"error.validation.startswith": "Arvon alkuosa täytyy olla \"{start}\"", "error.validation.startswith": "Arvon alkuosa täytyy olla \"{start}\"",
"error.validation.time": "Anna kelpaava aika", "error.validation.time": "Anna kelpaava aika",
"error.validation.time.after": "Please enter a time after {time}", "error.validation.time.after": "Anna myöhempi aika kuin {time}",
"error.validation.time.before": "Please enter a time before {time}", "error.validation.time.before": "Anna aiempi aika kuin {time}",
"error.validation.time.between": "Please enter a time between {min} and {max}", "error.validation.time.between": "Anna aika väliltä {min} ja {max}",
"error.validation.url": "Anna kelpaava URL", "error.validation.url": "Anna kelpaava URL",
"expand": "Laajenna",
"expand.all": "Laajenna kaikki",
"field.required": "Kenttä on pakollinen", "field.required": "Kenttä on pakollinen",
"field.blocks.changeType": "Change type", "field.blocks.changeType": "Vaihda tyyppiä",
"field.blocks.code.name": "Koodi", "field.blocks.code.name": "Koodi",
"field.blocks.code.language": "Kieli", "field.blocks.code.language": "Kieli",
"field.blocks.code.placeholder": "Your code …", "field.blocks.code.placeholder": "Koodisi …",
"field.blocks.delete.confirm": "Do you really want to delete this block?", "field.blocks.delete.confirm": "Haluatko varmasti poistaa tämän lohkon?",
"field.blocks.delete.confirm.all": "Do you really want to delete all blocks?", "field.blocks.delete.confirm.all": "Haluatko varmasti poistaa kaikki lohkot?",
"field.blocks.delete.confirm.selected": "Do you really want to delete the selected blocks?", "field.blocks.delete.confirm.selected": "Haluatko varmasti poistaa valitut lohkot?",
"field.blocks.empty": "No blocks yet", "field.blocks.empty": "Ei lohkoja",
"field.blocks.fieldsets.label": "Please select a block type …", "field.blocks.fieldsets.label": "Valitse lohkon tyyppi …",
"field.blocks.gallery.name": "Gallery", "field.blocks.fieldsets.paste": "Press <kbd>{{ shortcut }}</kbd> to paste/import blocks from your clipboard",
"field.blocks.gallery.images.empty": "No images yet", "field.blocks.gallery.name": "Galleria",
"field.blocks.gallery.images.label": "Images", "field.blocks.gallery.images.empty": "Ei kuvia",
"field.blocks.heading.level": "Level", "field.blocks.gallery.images.label": "Kuvat",
"field.blocks.heading.name": "Heading", "field.blocks.heading.level": "Taso",
"field.blocks.heading.text": "Text", "field.blocks.heading.name": "Otsikko",
"field.blocks.heading.placeholder": "Heading …", "field.blocks.heading.text": "Teksti",
"field.blocks.image.alt": "Alternative text", "field.blocks.heading.placeholder": "Otsikko …",
"field.blocks.image.caption": "Caption", "field.blocks.image.alt": "Vaihtoehtoinen teksti",
"field.blocks.image.crop": "Crop", "field.blocks.image.caption": "Kuvateksti",
"field.blocks.image.crop": "Rajaa",
"field.blocks.image.link": "Linkki", "field.blocks.image.link": "Linkki",
"field.blocks.image.location": "Location", "field.blocks.image.location": "Sijainti",
"field.blocks.image.name": "Kuva", "field.blocks.image.name": "Kuva",
"field.blocks.image.placeholder": "Select an image", "field.blocks.image.placeholder": "Valitse kuva",
"field.blocks.image.ratio": "Ratio", "field.blocks.image.ratio": "Kuvasuhde",
"field.blocks.image.url": "Image URL", "field.blocks.image.url": "Kuvan URL",
"field.blocks.list.name": "List", "field.blocks.line.name": "Line",
"field.blocks.list.name": "Lista",
"field.blocks.markdown.name": "Markdown", "field.blocks.markdown.name": "Markdown",
"field.blocks.markdown.label": "Text", "field.blocks.markdown.label": "Teksti",
"field.blocks.markdown.placeholder": "Markdown …", "field.blocks.markdown.placeholder": "Markdown …",
"field.blocks.quote.name": "Quote", "field.blocks.quote.name": "Lainaus",
"field.blocks.quote.text.label": "Text", "field.blocks.quote.text.label": "Teksti",
"field.blocks.quote.text.placeholder": "Quote …", "field.blocks.quote.text.placeholder": "Lainaus …",
"field.blocks.quote.citation.label": "Citation", "field.blocks.quote.citation.label": "Sitaatti",
"field.blocks.quote.citation.placeholder": "by …", "field.blocks.quote.citation.placeholder": "Lähde …",
"field.blocks.text.name": "Text", "field.blocks.text.name": "Teksti",
"field.blocks.text.placeholder": "Text …", "field.blocks.text.placeholder": "Teksti …",
"field.blocks.video.caption": "Caption", "field.blocks.video.caption": "Videon teksti",
"field.blocks.video.name": "Video", "field.blocks.video.name": "Video",
"field.blocks.video.placeholder": "Enter a video URL", "field.blocks.video.placeholder": "Anna videon URL",
"field.blocks.video.url.label": "Video-URL", "field.blocks.video.url.label": "Videon URL",
"field.blocks.video.url.placeholder": "https://youtube.com/?v=", "field.blocks.video.url.placeholder": "https://youtube.com/?v=",
"field.files.empty": "Tiedostoja ei ole vielä valittu", "field.files.empty": "Tiedostoja ei ole vielä valittu",
"field.layout.delete": "Delete layout", "field.layout.delete": "Poista asettelu",
"field.layout.delete.confirm": "Do you really want to delete this layout?", "field.layout.delete.confirm": "Halutako varmasti poistaa tämän asettelun?",
"field.layout.empty": "No rows yet", "field.layout.empty": "Ei rivejä",
"field.layout.select": "Select a layout", "field.layout.select": "Valitse asettelu",
"field.pages.empty": " Sivuja ei ole vielä valittu", "field.pages.empty": " Sivuja ei ole vielä valittu",
"field.structure.delete.confirm": "Haluatko varmasti poistaa tämän rivin?", "field.structure.delete.confirm": "Haluatko varmasti poistaa tämän rivin?",
"field.structure.empty": "Rivejä ei ole vielä lisätty", "field.structure.empty": "Rivejä ei ole vielä lisätty",
"field.users.empty": "Käyttäjiä ei ole vielä valittu", "field.users.empty": "Käyttäjiä ei ole vielä valittu",
"file.blueprint": "This file has no blueprint yet. You can define the setup in <strong>/site/blueprints/{template}.yml</strong>", "file.blueprint": "This file has no blueprint yet. You can define the setup in <strong>/site/blueprints/files/{blueprint}.yml</strong>",
"file.delete.confirm": "Haluatko varmasti poistaa tiedoston <br><strong>{filename}</strong>?", "file.delete.confirm": "Haluatko varmasti poistaa tiedoston <br><strong>{filename}</strong>?",
"file.sort": "Change position", "file.sort": "Muuta järjestyspaikkaa",
"files": "Tiedostot", "files": "Tiedostot",
"files.empty": "Tiedostoja ei ole vielä lisätty", "files.empty": "Tiedostoja ei ole vielä lisätty",
"hide": "Hide", "hide": "Piilota",
"hour": "Tunti", "hour": "Tunti",
"import": "Import",
"insert": "Lis\u00e4\u00e4", "insert": "Lis\u00e4\u00e4",
"insert.after": "Insert after", "insert.after": "Lisää eteen",
"insert.before": "Insert before", "insert.before": "Lisää jälkeen",
"install": "Asenna", "install": "Asenna",
"installation": "Asennus", "installation": "Asennus",
@@ -300,8 +320,8 @@
"language.direction": "Lukusuunta", "language.direction": "Lukusuunta",
"language.direction.ltr": "Vasemmalta oikealle", "language.direction.ltr": "Vasemmalta oikealle",
"language.direction.rtl": "Oikealta vasemmalle", "language.direction.rtl": "Oikealta vasemmalle",
"language.locale": "PHP-lokaalin tunniste", "language.locale": "PHP-aluemäärityksen tunniste",
"language.locale.warning": "You are using a custom locale set up. Please modify it in the language file in /site/languages", "language.locale.warning": "Käytät mukautettua aluemääritystä. Muokkaa sitä kielitiedostossa /site/languages",
"language.name": "Nimi", "language.name": "Nimi",
"language.updated": "Kieli on päivitetty", "language.updated": "Kieli on päivitetty",
@@ -325,28 +345,28 @@
"loading": "Ladataan", "loading": "Ladataan",
"lock.unsaved": "Tallentamattomia muutoksia", "lock.unsaved": "Tallentamattomia muutoksia",
"lock.unsaved.empty": "There are no more unsaved changes", "lock.unsaved.empty": "Ei enempää tallentamattomia muutoksia ",
"lock.isLocked": "Käyttäjällä <strong>{email}</strong> on tallentamattomia muutoksia", "lock.isLocked": "Käyttäjällä <strong>{email}</strong> on tallentamattomia muutoksia",
"lock.file.isLocked": "The file is currently being edited by {email} and cannot be changed.", "lock.file.isLocked": "Tiedostoa ei voi muokata juuri nyt, sillä {email} on muokkaamassa tiedostoa.",
"lock.page.isLocked": "The page is currently being edited by {email} and cannot be changed.", "lock.page.isLocked": "Sivua ei voi muokata juuri nyt, sillä {email} on muokkaamassa sivua.",
"lock.unlock": "Vapauta", "lock.unlock": "Vapauta",
"lock.isUnlocked": "Your unsaved changes have been overwritten by another user. You can download your changes to merge them manually.", "lock.isUnlocked": "Toinen käyttäjä ylikirjoitti tallentamattomat muutoksesi. Voit ladata tekemäsi muutokset ja lisätä ne käsin.",
"login": "Kirjaudu", "login": "Kirjaudu",
"login.code.label.login": "Login code", "login.code.label.login": "Kirjautumiskoodi",
"login.code.label.password-reset": "Password reset code", "login.code.label.password-reset": "Salasanan asetuskoodi",
"login.code.placeholder.email": "000 000", "login.code.placeholder.email": "000 000",
"login.code.text.email": "If your email address is registered, the requested code was sent via email.", "login.code.text.email": "Jos sähköpostiosoitteesi on rekisteröity, tilaamasi koodi lähetetään tähän osoitteeseen.",
"login.email.login.body": "Hi {user.nameOrEmail},\n\nYou recently requested a login code for the Kirby Panel.\nThe following login code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a login code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.", "login.email.login.body": "Hi {user.nameOrEmail},\n\nYou recently requested a login code for the Panel of {site}.\nThe following login code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a login code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.",
"login.email.login.subject": "Your login code", "login.email.login.subject": "Kirjautumiskoodisi",
"login.email.password-reset.body": "Hi {user.nameOrEmail},\n\nYou recently requested a password reset code for the Kirby Panel.\nThe following password reset code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a password reset code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.", "login.email.password-reset.body": "Hi {user.nameOrEmail},\n\nYou recently requested a password reset code for the Panel of {site}.\nThe following password reset code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a password reset code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.",
"login.email.password-reset.subject": "Your password reset code", "login.email.password-reset.subject": "Salasanan asetuskoodisi",
"login.remember": "Pidä minut kirjautuneena", "login.remember": "Pidä minut kirjautuneena",
"login.reset": "Reset password", "login.reset": "Aseta salasana",
"login.toggleText.code.email": "Login via email", "login.toggleText.code.email": "Kirjaudu sähköpostiosoitteella",
"login.toggleText.code.email-password": "Login with password", "login.toggleText.code.email-password": "Kirjaudu salasanalla",
"login.toggleText.password-reset.email": "Forgot your password?", "login.toggleText.password-reset.email": "Unohditko salasanasi?",
"login.toggleText.password-reset.email-password": "← Back to login", "login.toggleText.password-reset.email-password": "← Takaisin kirjautumiseen",
"logout": "Kirjaudu ulos", "logout": "Kirjaudu ulos",
@@ -372,20 +392,20 @@
"more": "Lisää", "more": "Lisää",
"name": "Nimi", "name": "Nimi",
"next": "Seuraava", "next": "Seuraava",
"no": "no", "no": "ei",
"off": "off", "off": "Pois käytöstä",
"on": "on", "on": "Käytössä",
"open": "Avaa", "open": "Avaa",
"open.newWindow": "Open in new window", "open.newWindow": "Avaa uudessa ikkunassa",
"options": "Asetukset", "options": "Asetukset",
"options.none": "No options", "options.none": "Ei valintoja",
"orientation": "Suunta", "orientation": "Suunta",
"orientation.landscape": "Vaakasuuntainen", "orientation.landscape": "Vaakasuuntainen",
"orientation.portrait": "Pystysuuntainen", "orientation.portrait": "Pystysuuntainen",
"orientation.square": "Neliskulmainen", "orientation.square": "Neliskulmainen",
"page.blueprint": "This page has no blueprint yet. You can define the setup in <strong>/site/blueprints/{template}.yml</strong>", "page.blueprint": "This page has no blueprint yet. You can define the setup in <strong>/site/blueprints/pages/{blueprint}.yml</strong>",
"page.changeSlug": "Vaihda URL-osoite", "page.changeSlug": "Vaihda URL-osoite",
"page.changeSlug.fromTitle": "Luo nimen perusteella", "page.changeSlug.fromTitle": "Luo nimen perusteella",
"page.changeStatus": "Muuta tilaa", "page.changeStatus": "Muuta tilaa",
@@ -397,12 +417,12 @@
"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",
"page.duplicate.files": "Copy files", "page.duplicate.files": "Kopioi tiedostot",
"page.duplicate.pages": "Copy pages", "page.duplicate.pages": "Kopioi sivut",
"page.sort": "Change position", "page.sort": "Muuta järjestyspaikkaa",
"page.status": "Tila", "page.status": "Tila",
"page.status.draft": "Luonnos", "page.status.draft": "Luonnos",
"page.status.draft.description": "The page is in draft mode and only visible for logged in editors or via secret link", "page.status.draft.description": "Sivu on luonnostilassa ja näkyvissä vain kirjautuneille editoijille tai yksityisen linkin kautta",
"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",
@@ -417,15 +437,18 @@
"pagination.page": "Sivu", "pagination.page": "Sivu",
"password": "Salasana", "password": "Salasana",
"paste": "Paste",
"paste.after": "Paste after",
"pixel": "Pikseli", "pixel": "Pikseli",
"plugins": "Plugins",
"prev": "Edellinen", "prev": "Edellinen",
"preview": "Preview", "preview": "Esikatselu",
"remove": "Poista", "remove": "Poista",
"rename": "Nimeä uudelleen", "rename": "Nimeä uudelleen",
"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>?", "revert.confirm": "Haluatko varmasti <strong>poistaa kaikki tallentamattomat muutokset</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",
@@ -433,20 +456,20 @@
"role.all": "Kaikki", "role.all": "Kaikki",
"role.empty": "Tällä käyttäjätasolla ei ole yhtään käyttäjää", "role.empty": "Tällä käyttäjätasolla ei ole yhtään käyttäjää",
"role.description.placeholder": "Ei kuvausta", "role.description.placeholder": "Ei kuvausta",
"role.nobody.description": "This is a fallback role without any permissions", "role.nobody.description": "Tämä on vararooli, jolla ei ole mitään oikeuksia",
"role.nobody.title": "Nobody", "role.nobody.title": "Tuntematon",
"save": "Tallenna", "save": "Tallenna",
"search": "Haku", "search": "Haku",
"search.min": "Enter {min} characters to search", "search.min": "Anna vähintään {min} merkkiä hakua varten",
"search.all": "Show all", "search.all": "Näytä kaikki",
"search.results.none": "No results", "search.results.none": "Ei tuloksia",
"section.required": "Osio on pakollinen", "section.required": "Osio on pakollinen",
"select": "Valitse", "select": "Valitse",
"settings": "Asetukset", "settings": "Asetukset",
"show": "Show", "show": "Näytä",
"size": "Koko", "size": "Koko",
"slug": "URL-tunniste", "slug": "URL-tunniste",
"sort": "Järjestele", "sort": "Järjestele",
@@ -454,7 +477,9 @@
"template": "Sivupohja", "template": "Sivupohja",
"today": "Tänään", "today": "Tänään",
"site.blueprint": "The site has no blueprint yet. You can define the setup in <strong>/site/blueprints/site.yml</strong>", "server": "Server",
"site.blueprint": "Tällä sivustolla ei ole vielä suunnitelmaa. Voit määrittää suunnitelman tiedostoon <strong>/site/blueprints/site.yml</strong>",
"toolbar.button.code": "Koodi", "toolbar.button.code": "Koodi",
"toolbar.button.bold": "Lihavointi", "toolbar.button.bold": "Lihavointi",
@@ -463,14 +488,18 @@
"toolbar.button.heading.1": "Otsikko 1", "toolbar.button.heading.1": "Otsikko 1",
"toolbar.button.heading.2": "Otsikko 2", "toolbar.button.heading.2": "Otsikko 2",
"toolbar.button.heading.3": "Otsikko 3", "toolbar.button.heading.3": "Otsikko 3",
"toolbar.button.heading.4": "Heading 4",
"toolbar.button.heading.5": "Heading 5",
"toolbar.button.heading.6": "Heading 6",
"toolbar.button.italic": "Kursivointi", "toolbar.button.italic": "Kursivointi",
"toolbar.button.file": "Tiedosto", "toolbar.button.file": "Tiedosto",
"toolbar.button.file.select": "Valitse tiedosto", "toolbar.button.file.select": "Valitse tiedosto",
"toolbar.button.file.upload": "Lähetä tiedosto", "toolbar.button.file.upload": "Lähetä tiedosto",
"toolbar.button.link": "Linkki", "toolbar.button.link": "Linkki",
"toolbar.button.strike": "Strike-through", "toolbar.button.paragraph": "Paragraph",
"toolbar.button.strike": "Yliviivaus",
"toolbar.button.ol": "Järjestetty lista", "toolbar.button.ol": "Järjestetty lista",
"toolbar.button.underline": "Underline", "toolbar.button.underline": "Alaviiva",
"toolbar.button.ul": "Järjestämätön lista", "toolbar.button.ul": "Järjestämätön lista",
"translation.author": "Kirby-tiimi", "translation.author": "Kirby-tiimi",
@@ -482,14 +511,14 @@
"upload.error.cantMove": "Lähetettyä tiedostoa ei voitu siirtää", "upload.error.cantMove": "Lähetettyä tiedostoa ei voitu siirtää",
"upload.error.cantWrite": "Tiedoston kirjoitus levylle epäonnistui", "upload.error.cantWrite": "Tiedoston kirjoitus levylle epäonnistui",
"upload.error.default": "Tiedostoa ei voitu lähettää", "upload.error.default": "Tiedostoa ei voitu lähettää",
"upload.error.extension": "File upload stopped by extension", "upload.error.extension": "Tiedostoa ei lähetetty tiedostopäätteen takia",
"upload.error.formSize": "Lähetetyn tiedoston koko ylittää lomakkeen sallitun ylärajan MAX_FILE_SIZE", "upload.error.formSize": "Lähetetyn tiedoston koko ylittää lomakkeen sallitun ylärajan MAX_FILE_SIZE",
"upload.error.iniPostSize": "Lähetetyn tiedoston koko ylittää sallitun ylärajan post_max_size asetustiedostossa php.ini", "upload.error.iniPostSize": "Lähetetyn tiedoston koko ylittää sallitun ylärajan post_max_size asetustiedostossa php.ini",
"upload.error.iniSize": "Lähetetyn tiedoston koko ylittää sallitun ylärajan upload_max_filesize asetustiedostossa php.ini", "upload.error.iniSize": "Lähetetyn tiedoston koko ylittää sallitun ylärajan upload_max_filesize asetustiedostossa php.ini",
"upload.error.noFile": "Tiedostoa ei lähetetty", "upload.error.noFile": "Tiedostoa ei lähetetty",
"upload.error.noFiles": "Tiedostoja ei lähetetty", "upload.error.noFiles": "Tiedostoja ei lähetetty",
"upload.error.partial": "The uploaded file was only partially uploaded", "upload.error.partial": "Tiedoston lähetys onnistui vain osittain",
"upload.error.tmpDir": "Missing a temporary folder", "upload.error.tmpDir": "Väliaikainen hakemisto puuttuu",
"upload.errors": "Virhe", "upload.errors": "Virhe",
"upload.progress": "Lähetetään...", "upload.progress": "Lähetetään...",
@@ -497,7 +526,7 @@
"url.placeholder": "https://esimerkki.fi", "url.placeholder": "https://esimerkki.fi",
"user": "Käyttäjä", "user": "Käyttäjä",
"user.blueprint": "Voit määrittää lisää osioita ja lomakekenttiä tälle käyttäjälle kaavassa <strong>/site/blueprints/users/{role}.yml</strong>", "user.blueprint": "You can define additional sections and form fields for this user role in <strong>/site/blueprints/users/{blueprint}.yml</strong>",
"user.changeEmail": "Muuta sähköpostiosoite", "user.changeEmail": "Muuta sähköpostiosoite",
"user.changeLanguage": "Vaihda kieli", "user.changeLanguage": "Vaihda kieli",
"user.changeName": "Nimeä uudelleen", "user.changeName": "Nimeä uudelleen",
@@ -516,12 +545,13 @@
"view.account": "Oma käyttäjätili", "view.account": "Oma käyttäjätili",
"view.installation": "Asennus", "view.installation": "Asennus",
"view.resetPassword": "Reset password", "view.languages": "Kielet",
"view.settings": "Asetukset", "view.resetPassword": "Aseta salasana",
"view.site": "Sivusto", "view.site": "Sivusto",
"view.system": "System",
"view.users": "K\u00e4ytt\u00e4j\u00e4t", "view.users": "K\u00e4ytt\u00e4j\u00e4t",
"welcome": "Tervetuloa", "welcome": "Tervetuloa",
"year": "Vuosi", "year": "Vuosi",
"yes": "yes" "yes": "kyllä"
} }

View File

@@ -1,5 +1,10 @@
{ {
"account.changeName": "Modifier votre nom",
"account.delete": "Supprimer votre compte",
"account.delete.confirm": "Voulez-vous vraiment supprimer votre compte ? Vous serez déconnecté immédiatement. Votre compte ne pourra pas être récupéré.",
"add": "Ajouter", "add": "Ajouter",
"author": "Auteur",
"avatar": "Image du profil", "avatar": "Image du profil",
"back": "Retour", "back": "Retour",
"cancel": "Annuler", "cancel": "Annuler",
@@ -9,6 +14,7 @@
"collapse": "Replier", "collapse": "Replier",
"collapse.all": "Tout replier", "collapse.all": "Tout replier",
"copy": "Copier", "copy": "Copier",
"copy.all": "Tout copier",
"create": "Créer", "create": "Créer",
"date": "Date", "date": "Date",
@@ -23,24 +29,28 @@
"days.tue": "Mar", "days.tue": "Mar",
"days.wed": "Mer", "days.wed": "Mer",
"debugging": "Débogage",
"delete": "Supprimer", "delete": "Supprimer",
"delete.all": "Tout supprimer", "delete.all": "Tout supprimer",
"dimensions": "Dimensions",
"disabled": "Désactivé",
"discard": "Supprimer",
"download": "Télécharger",
"duplicate": "Dupliquer",
"edit": "Éditer",
"expand": "Déplier",
"expand.all": "Tout déplier",
"dialog.files.empty": "Aucun fichier à sélectionner", "dialog.files.empty": "Aucun fichier à sélectionner",
"dialog.pages.empty": "Aucune page à sélectionner", "dialog.pages.empty": "Aucune page à sélectionner",
"dialog.users.empty": "Aucun utilisateur à sélectionner", "dialog.users.empty": "Aucun utilisateur à sélectionner",
"dimensions": "Dimensions",
"disabled": "Désactivé",
"discard": "Supprimer",
"download": "Télécharger",
"duplicate": "Dupliquer",
"edit": "Éditer",
"email": "Courriel", "email": "Courriel",
"email.placeholder": "mail@example.com", "email.placeholder": "mail@example.com",
"environment": "Environnement",
"error.access.code": "Code incorrect", "error.access.code": "Code incorrect",
"error.access.login": "Identifiant incorrect", "error.access.login": "Identifiant incorrect",
"error.access.panel": "Vous nêtes pas autorisé à accéder au Panel", "error.access.panel": "Vous nêtes pas autorisé à accéder au Panel",
@@ -92,6 +102,7 @@
"error.language.code": "Veuillez saisir un code valide pour cette langue", "error.language.code": "Veuillez saisir un code valide pour cette langue",
"error.language.duplicate": "Cette langue existe déjà", "error.language.duplicate": "Cette langue existe déjà",
"error.language.name": "Veuillez saisir un nom valide pour cette langue", "error.language.name": "Veuillez saisir un nom valide pour cette langue",
"error.language.notFound": "La langue na pu être trouvée",
"error.layout.validation.block": "Il y a une erreur dans le block {blockIndex} de la disposition {layoutIndex}", "error.layout.validation.block": "Il y a une erreur dans le block {blockIndex} de la disposition {layoutIndex}",
"error.layout.validation.settings": "Il y a une erreur dans les paramètres de la disposition {index}", "error.layout.validation.settings": "Il y a une erreur dans les paramètres de la disposition {index}",
@@ -100,6 +111,8 @@
"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.offline": "Le Panel est actuellement hors ligne",
"error.page.changeSlug.permission": "Vous nêtes pas autorisé à modifier lidentifiant dURL pour «&nbsp;{slug}&nbsp;»", "error.page.changeSlug.permission": "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": "La page comporte des erreurs et ne peut pas être publiée",
"error.page.changeStatus.permission": "Le statut de cette page ne peut être modifié", "error.page.changeStatus.permission": "Le statut de cette page ne peut être modifié",
@@ -165,6 +178,7 @@
"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.password.wrong": "Mot de passe incorrect", "error.user.password.wrong": "Mot de passe incorrect",
"error.user.role.invalid": "Veuillez saisir un rôle valide", "error.user.role.invalid": "Veuillez saisir un rôle valide",
"error.user.undefined": "Lutilisateur na pu être trouvé",
"error.user.update.permission": "Vous nêtes pas autorisé à modifier lutilisateur « {name} »", "error.user.update.permission": "Vous nêtes pas autorisé à modifier lutilisateur « {name} »",
"error.validation.accepted": "Veuillez confirmer", "error.validation.accepted": "Veuillez confirmer",
@@ -208,6 +222,9 @@
"error.validation.time.between": "Veuillez entrer une heure entre {min} et {max}", "error.validation.time.between": "Veuillez entrer une heure entre {min} et {max}",
"error.validation.url": "Veuillez saisir une URL valide", "error.validation.url": "Veuillez saisir une URL valide",
"expand": "Déplier",
"expand.all": "Tout déplier",
"field.required": "Le champ est obligatoire", "field.required": "Le champ est obligatoire",
"field.blocks.changeType": "Changer le type", "field.blocks.changeType": "Changer le type",
"field.blocks.code.name": "Code", "field.blocks.code.name": "Code",
@@ -218,6 +235,7 @@
"field.blocks.delete.confirm.selected": "Voulez-vous vraiment supprimer les blocs sélectionnés ?", "field.blocks.delete.confirm.selected": "Voulez-vous vraiment supprimer les blocs sélectionnés ?",
"field.blocks.empty": "Pas encore de blocs", "field.blocks.empty": "Pas encore de blocs",
"field.blocks.fieldsets.label": "Veuillez sélectionner un type de bloc…", "field.blocks.fieldsets.label": "Veuillez sélectionner un type de bloc…",
"field.blocks.fieldsets.paste": "Presser <kbd>{{ shortcut }}</kbd> pour coller/importer des blocks depuis votre presse-papier",
"field.blocks.gallery.name": "Galerie", "field.blocks.gallery.name": "Galerie",
"field.blocks.gallery.images.empty": "Pas encore dimages", "field.blocks.gallery.images.empty": "Pas encore dimages",
"field.blocks.gallery.images.label": "Images", "field.blocks.gallery.images.label": "Images",
@@ -234,6 +252,7 @@
"field.blocks.image.placeholder": "Sélectionnez une image", "field.blocks.image.placeholder": "Sélectionnez une image",
"field.blocks.image.ratio": "Proportions", "field.blocks.image.ratio": "Proportions",
"field.blocks.image.url": "URL de l'image", "field.blocks.image.url": "URL de l'image",
"field.blocks.line.name": "Ligne",
"field.blocks.list.name": "Liste", "field.blocks.list.name": "Liste",
"field.blocks.markdown.name": "Markdown", "field.blocks.markdown.name": "Markdown",
"field.blocks.markdown.label": "Texte", "field.blocks.markdown.label": "Texte",
@@ -263,7 +282,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.blueprint": "Ce fichier na pas encore de blueprint. Vous pouvez en définir les paramètres dans <strong>/site/blueprints/{template}.yml</strong>", "file.blueprint": "Ce fichier na pas encore de blueprint. Vous pouvez en définir les paramètres dans <strong>/site/blueprints/files/{blueprint}.yml</strong>",
"file.delete.confirm": "Voulez-vous vraiment supprimer <br><strong>{filename}</strong>&nbsp;?", "file.delete.confirm": "Voulez-vous vraiment supprimer <br><strong>{filename}</strong>&nbsp;?",
"file.sort": "Modifier la position", "file.sort": "Modifier la position",
@@ -272,6 +291,7 @@
"hide": "Masquer", "hide": "Masquer",
"hour": "Heure", "hour": "Heure",
"import": "Importer",
"insert": "Insérer", "insert": "Insérer",
"insert.after": "Insérer après", "insert.after": "Insérer après",
"insert.before": "Insérer avant", "insert.before": "Insérer avant",
@@ -337,9 +357,9 @@
"login.code.label.password-reset": "Code de réinitialisation du mot de passe", "login.code.label.password-reset": "Code de réinitialisation du mot de passe",
"login.code.placeholder.email": "000 000", "login.code.placeholder.email": "000 000",
"login.code.text.email": "Si votre adresse de courriel est enregistrée, le code demandé vous sera envoyé par courriel.", "login.code.text.email": "Si votre adresse de courriel est enregistrée, le code demandé vous sera envoyé par courriel.",
"login.email.login.body": "Bonjour {user.nameOrEmail},\n\nVous avez demandé récemment un code de connexion pour le Panel de Kirby.\nLe code suivant sera valide pendant {timeout} minutes:\n\n{code}\n\nSi vous navez pas demandé de code de connexion, veuillez ignorer cet email ou contacter ladministrateur si vous avez des questions.\nPar sécurité, ne faites PAS suivre cet email.", "login.email.login.body": "Bonjour {user.nameOrEmail},\n\nVous avez récemment demandé un code de connexion pour le Panel de {site}.\nLe codede connexion suivant sera valide pendant {timeout} minutes :\n\n{code}\n\nSi vous navez pas demandé de codede connexion, veuillez ignorer cet email ou contacter votre administrateur si vous avez des questions.\nPar sécurité, merci de ne PAS faire suivre cet email.",
"login.email.login.subject": "Votre code de connexion", "login.email.login.subject": "Votre code de connexion",
"login.email.password-reset.body": "Bonjour {user.nameOrEmail},\n\nVous avez demandé récemment un code de connexion pour le Panel de Kirby.\nLe code suivant sera valide pendant {timeout} minutes:\n\n{code}\n\nSi vous navez pas demandé de code de connexion, veuillez ignorer ce courriel ou contacter ladministrateur si vous avez des questions.\nPar sécurité, ne faites PAS suivre ce courriel.", "login.email.password-reset.body": "Bonjour {user.nameOrEmail},\n\nVous avez récemment demandé un code de réinitialisation de mot de passe pour le Panel de {site}.\nLe code de réinitialisation de mot de passe suivant sera valide pendant {timeout} minutes :\n\n{code}\n\nSi vous navez pas demandé de code de réinitialisation de mot de passe, veuillez ignorer cet email ou contacter votre administrateur si vous avez des questions.\nPar sécurité, merci de ne PAS faire suivre cet email.",
"login.email.password-reset.subject": "Votre code de réinitialisation du mot de passe", "login.email.password-reset.subject": "Votre code de réinitialisation du mot de passe",
"login.remember": "Rester connecté", "login.remember": "Rester connecté",
"login.reset": "Réinitialiser le mot de passe", "login.reset": "Réinitialiser le mot de passe",
@@ -385,7 +405,7 @@
"orientation.portrait": "Portrait", "orientation.portrait": "Portrait",
"orientation.square": "Carré", "orientation.square": "Carré",
"page.blueprint": "Cette page na pas encore de blueprint. Vous pouvez en définir les paramètres dans <strong>/site/blueprints/{template}.yml</strong>", "page.blueprint": "Cette page na pas encore de blueprint. Vous pouvez en définir les paramètres dans <strong>/site/blueprints/pages/{blueprint}.yml</strong>",
"page.changeSlug": "Modifier lURL", "page.changeSlug": "Modifier lURL",
"page.changeSlug.fromTitle": "Créer à partir du titre", "page.changeSlug.fromTitle": "Créer à partir du titre",
"page.changeStatus": "Changer le statut", "page.changeStatus": "Changer le statut",
@@ -417,7 +437,10 @@
"pagination.page": "Page", "pagination.page": "Page",
"password": "Mot de passe", "password": "Mot de passe",
"paste": "Coller",
"paste.after": "Coller après",
"pixel": "Pixel", "pixel": "Pixel",
"plugins": "Plugins",
"prev": "Précédent", "prev": "Précédent",
"preview": "Prévisualiser", "preview": "Prévisualiser",
"remove": "Supprimer", "remove": "Supprimer",
@@ -454,6 +477,8 @@
"template": "Modèle", "template": "Modèle",
"today": "Aujourdhui", "today": "Aujourdhui",
"server": "Serveur",
"site.blueprint": "Ce site na pas encore de blueprint. Vous pouvez en définir les paramètres dans <strong>/site/blueprints/site.yml</strong>", "site.blueprint": "Ce site na pas encore de blueprint. Vous pouvez en définir les paramètres dans <strong>/site/blueprints/site.yml</strong>",
"toolbar.button.code": "Code", "toolbar.button.code": "Code",
@@ -463,11 +488,15 @@
"toolbar.button.heading.1": "Titre 1", "toolbar.button.heading.1": "Titre 1",
"toolbar.button.heading.2": "Titre 2", "toolbar.button.heading.2": "Titre 2",
"toolbar.button.heading.3": "Titre 3", "toolbar.button.heading.3": "Titre 3",
"toolbar.button.heading.4": "Titre 4",
"toolbar.button.heading.5": "Titre 5",
"toolbar.button.heading.6": "Titre 6",
"toolbar.button.italic": "Italique", "toolbar.button.italic": "Italique",
"toolbar.button.file": "Fichier", "toolbar.button.file": "Fichier",
"toolbar.button.file.select": "Sélectionner un fichier", "toolbar.button.file.select": "Sélectionner un fichier",
"toolbar.button.file.upload": "Transférer un fichier", "toolbar.button.file.upload": "Transférer un fichier",
"toolbar.button.link": "Lien", "toolbar.button.link": "Lien",
"toolbar.button.paragraph": "Paragraphe",
"toolbar.button.strike": "Barré", "toolbar.button.strike": "Barré",
"toolbar.button.ol": "Liste ordonnée", "toolbar.button.ol": "Liste ordonnée",
"toolbar.button.underline": "Souligné", "toolbar.button.underline": "Souligné",
@@ -497,7 +526,7 @@
"url.placeholder": "https://example.com", "url.placeholder": "https://example.com",
"user": "Utilisateur", "user": "Utilisateur",
"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>", "user.blueprint": "Vous pouvez définir de nouvelles sections et champs de formulaires pour ce rôle d'utilisateur dans <strong>/site/blueprints/users/{blueprint}.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",
@@ -516,9 +545,10 @@
"view.account": "Votre compte", "view.account": "Votre compte",
"view.installation": "Installation", "view.installation": "Installation",
"view.languages": "Langages",
"view.resetPassword": "Réinitialiser le mot de passe", "view.resetPassword": "Réinitialiser le mot de passe",
"view.settings": "Paramètres",
"view.site": "Site", "view.site": "Site",
"view.system": "Système",
"view.users": "Utilisateurs", "view.users": "Utilisateurs",
"welcome": "Bienvenue", "welcome": "Bienvenue",

View File

@@ -1,5 +1,10 @@
{ {
"account.changeName": "Change your name",
"account.delete": "Delete your account",
"account.delete.confirm": "Do you really want to delete your account? You will be logged out immediately. Your account cannot be recovered.",
"add": "Hozz\u00e1ad", "add": "Hozz\u00e1ad",
"author": "Author",
"avatar": "Profilkép", "avatar": "Profilkép",
"back": "Vissza", "back": "Vissza",
"cancel": "M\u00e9gsem", "cancel": "M\u00e9gsem",
@@ -9,6 +14,7 @@
"collapse": "Collapse", "collapse": "Collapse",
"collapse.all": "Collapse All", "collapse.all": "Collapse All",
"copy": "Másol", "copy": "Másol",
"copy.all": "Copy all",
"create": "Létrehoz", "create": "Létrehoz",
"date": "Dátum", "date": "Dátum",
@@ -23,24 +29,28 @@
"days.tue": "ke", "days.tue": "ke",
"days.wed": "sze", "days.wed": "sze",
"debugging": "Debugging",
"delete": "T\u00f6rl\u00e9s", "delete": "T\u00f6rl\u00e9s",
"delete.all": "Delete all", "delete.all": "Delete all",
"dimensions": "Méretek",
"disabled": "Disabled",
"discard": "Visszavon\u00e1s",
"download": "Letöltés",
"duplicate": "Másolat",
"edit": "Aloldal szerkeszt\u00e9se",
"expand": "Expand",
"expand.all": "Expand All",
"dialog.files.empty": "Nincsenek fájlok kiválasztva", "dialog.files.empty": "Nincsenek fájlok kiválasztva",
"dialog.pages.empty": "Nincsenek oldalak kiválasztva", "dialog.pages.empty": "Nincsenek oldalak kiválasztva",
"dialog.users.empty": "Nincsenek felhasználók kiválasztva", "dialog.users.empty": "Nincsenek felhasználók kiválasztva",
"dimensions": "Méretek",
"disabled": "Disabled",
"discard": "Visszavon\u00e1s",
"download": "Letöltés",
"duplicate": "Másolat",
"edit": "Aloldal szerkeszt\u00e9se",
"email": "Email", "email": "Email",
"email.placeholder": "mail@pelda.hu", "email.placeholder": "mail@pelda.hu",
"environment": "Environment",
"error.access.code": "Invalid code", "error.access.code": "Invalid code",
"error.access.login": "Érvénytelen bejelentkezés", "error.access.login": "Érvénytelen bejelentkezés",
"error.access.panel": "Nincs jogosultságod megnyitni a panelt", "error.access.panel": "Nincs jogosultságod megnyitni a panelt",
@@ -92,6 +102,7 @@
"error.language.code": "Kérlek, add meg a nyelv érvényes kódját", "error.language.code": "Kérlek, add meg a nyelv érvényes kódját",
"error.language.duplicate": "A nyelv már létezik", "error.language.duplicate": "A nyelv már létezik",
"error.language.name": "Kérlek, add meg a nyelv érvényes nevét", "error.language.name": "Kérlek, add meg a nyelv érvényes nevét",
"error.language.notFound": "The language could not be found",
"error.layout.validation.block": "There's an error in block {blockIndex} in layout {layoutIndex}", "error.layout.validation.block": "There's an error in block {blockIndex} in layout {layoutIndex}",
"error.layout.validation.settings": "There's an error in layout {index} settings", "error.layout.validation.settings": "There's an error in layout {index} settings",
@@ -100,6 +111,8 @@
"error.license.email": "Kérlek adj meg egy valós email-címet", "error.license.email": "Kérlek adj meg egy valós email-címet",
"error.license.verification": "A licensz nem ellenőrizhető", "error.license.verification": "A licensz nem ellenőrizhető",
"error.offline": "The Panel is currently offline",
"error.page.changeSlug.permission": "Nem változtathatod meg az URL-előtagot: \"{slug}\"", "error.page.changeSlug.permission": "Nem változtathatod meg az URL-előtagot: \"{slug}\"",
"error.page.changeStatus.incomplete": "Az oldal hibákat tartalmaz és nem publikálható", "error.page.changeStatus.incomplete": "Az oldal hibákat tartalmaz és nem publikálható",
"error.page.changeStatus.permission": "Az oldal státusza nem változtatható meg", "error.page.changeStatus.permission": "Az oldal státusza nem változtatható meg",
@@ -165,6 +178,7 @@
"error.user.password.undefined": "A felhasználónak nincs jelszó megadva", "error.user.password.undefined": "A felhasználónak nincs jelszó megadva",
"error.user.password.wrong": "Wrong password", "error.user.password.wrong": "Wrong password",
"error.user.role.invalid": "Kérlek adj meg egy megfelelő szerepkört", "error.user.role.invalid": "Kérlek adj meg egy megfelelő szerepkört",
"error.user.undefined": "A felhasználó nem található",
"error.user.update.permission": "Nincs jogosultságod frissíteni \"{name}\" felhasználó adatait", "error.user.update.permission": "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",
@@ -208,6 +222,9 @@
"error.validation.time.between": "Please enter a time between {min} and {max}", "error.validation.time.between": "Please enter a time between {min} and {max}",
"error.validation.url": "Kérlek megfelelő URL-t adj meg", "error.validation.url": "Kérlek megfelelő URL-t adj meg",
"expand": "Expand",
"expand.all": "Expand All",
"field.required": "The field is required", "field.required": "The field is required",
"field.blocks.changeType": "Change type", "field.blocks.changeType": "Change type",
"field.blocks.code.name": "Kód", "field.blocks.code.name": "Kód",
@@ -218,6 +235,7 @@
"field.blocks.delete.confirm.selected": "Do you really want to delete the selected blocks?", "field.blocks.delete.confirm.selected": "Do you really want to delete the selected blocks?",
"field.blocks.empty": "No blocks yet", "field.blocks.empty": "No blocks yet",
"field.blocks.fieldsets.label": "Please select a block type …", "field.blocks.fieldsets.label": "Please select a block type …",
"field.blocks.fieldsets.paste": "Press <kbd>{{ shortcut }}</kbd> to paste/import blocks from your clipboard",
"field.blocks.gallery.name": "Gallery", "field.blocks.gallery.name": "Gallery",
"field.blocks.gallery.images.empty": "No images yet", "field.blocks.gallery.images.empty": "No images yet",
"field.blocks.gallery.images.label": "Images", "field.blocks.gallery.images.label": "Images",
@@ -234,6 +252,7 @@
"field.blocks.image.placeholder": "Select an image", "field.blocks.image.placeholder": "Select an image",
"field.blocks.image.ratio": "Ratio", "field.blocks.image.ratio": "Ratio",
"field.blocks.image.url": "Image URL", "field.blocks.image.url": "Image URL",
"field.blocks.line.name": "Line",
"field.blocks.list.name": "List", "field.blocks.list.name": "List",
"field.blocks.markdown.name": "Markdown", "field.blocks.markdown.name": "Markdown",
"field.blocks.markdown.label": "Text", "field.blocks.markdown.label": "Text",
@@ -263,7 +282,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.blueprint": "This file has no blueprint yet. You can define the setup in <strong>/site/blueprints/{template}.yml</strong>", "file.blueprint": "This file has no blueprint yet. You can define the setup in <strong>/site/blueprints/files/{blueprint}.yml</strong>",
"file.delete.confirm": "Biztos törölni akarod ezt a fájlt: <br><strong>{filename}</strong>?", "file.delete.confirm": "Biztos törölni akarod ezt a fájlt: <br><strong>{filename}</strong>?",
"file.sort": "Change position", "file.sort": "Change position",
@@ -272,6 +291,7 @@
"hide": "Hide", "hide": "Hide",
"hour": "Óra", "hour": "Óra",
"import": "Import",
"insert": "Beilleszt", "insert": "Beilleszt",
"insert.after": "Insert after", "insert.after": "Insert after",
"insert.before": "Insert before", "insert.before": "Insert before",
@@ -337,9 +357,9 @@
"login.code.label.password-reset": "Password reset code", "login.code.label.password-reset": "Password reset code",
"login.code.placeholder.email": "000 000", "login.code.placeholder.email": "000 000",
"login.code.text.email": "If your email address is registered, the requested code was sent via email.", "login.code.text.email": "If your email address is registered, the requested code was sent via email.",
"login.email.login.body": "Hi {user.nameOrEmail},\n\nYou recently requested a login code for the Kirby Panel.\nThe following login code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a login code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.", "login.email.login.body": "Hi {user.nameOrEmail},\n\nYou recently requested a login code for the Panel of {site}.\nThe following login code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a login code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.",
"login.email.login.subject": "Your login code", "login.email.login.subject": "Your login code",
"login.email.password-reset.body": "Hi {user.nameOrEmail},\n\nYou recently requested a password reset code for the Kirby Panel.\nThe following password reset code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a password reset code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.", "login.email.password-reset.body": "Hi {user.nameOrEmail},\n\nYou recently requested a password reset code for the Panel of {site}.\nThe following password reset code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a password reset code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.",
"login.email.password-reset.subject": "Your password reset code", "login.email.password-reset.subject": "Your password reset code",
"login.remember": "Maradjak bejelentkezve", "login.remember": "Maradjak bejelentkezve",
"login.reset": "Reset password", "login.reset": "Reset password",
@@ -385,7 +405,7 @@
"orientation.portrait": "Álló", "orientation.portrait": "Álló",
"orientation.square": "Négyzetes", "orientation.square": "Négyzetes",
"page.blueprint": "This page has no blueprint yet. You can define the setup in <strong>/site/blueprints/{template}.yml</strong>", "page.blueprint": "This page has no blueprint yet. You can define the setup in <strong>/site/blueprints/pages/{blueprint}.yml</strong>",
"page.changeSlug": "URL v\u00e1ltoztat\u00e1sa", "page.changeSlug": "URL v\u00e1ltoztat\u00e1sa",
"page.changeSlug.fromTitle": "L\u00e9trehoz\u00e1s c\u00edmb\u0151l", "page.changeSlug.fromTitle": "L\u00e9trehoz\u00e1s c\u00edmb\u0151l",
"page.changeStatus": "Állapot módosítása", "page.changeStatus": "Állapot módosítása",
@@ -417,7 +437,10 @@
"pagination.page": "Oldal", "pagination.page": "Oldal",
"password": "Jelsz\u00f3", "password": "Jelsz\u00f3",
"paste": "Paste",
"paste.after": "Paste after",
"pixel": "Pixel", "pixel": "Pixel",
"plugins": "Plugins",
"prev": "Előző", "prev": "Előző",
"preview": "Preview", "preview": "Preview",
"remove": "Eltávolítás", "remove": "Eltávolítás",
@@ -454,6 +477,8 @@
"template": "Sablon", "template": "Sablon",
"today": "Ma", "today": "Ma",
"server": "Server",
"site.blueprint": "The site has no blueprint yet. You can define the setup in <strong>/site/blueprints/site.yml</strong>", "site.blueprint": "The site has no blueprint yet. You can define the setup in <strong>/site/blueprints/site.yml</strong>",
"toolbar.button.code": "Kód", "toolbar.button.code": "Kód",
@@ -463,11 +488,15 @@
"toolbar.button.heading.1": "Cím 1", "toolbar.button.heading.1": "Cím 1",
"toolbar.button.heading.2": "Cím 2", "toolbar.button.heading.2": "Cím 2",
"toolbar.button.heading.3": "Cím 3", "toolbar.button.heading.3": "Cím 3",
"toolbar.button.heading.4": "Heading 4",
"toolbar.button.heading.5": "Heading 5",
"toolbar.button.heading.6": "Heading 6",
"toolbar.button.italic": "Dőlt szöveg", "toolbar.button.italic": "Dőlt szöveg",
"toolbar.button.file": "Fájl", "toolbar.button.file": "Fájl",
"toolbar.button.file.select": "Válassz egy fájlt", "toolbar.button.file.select": "Válassz egy fájlt",
"toolbar.button.file.upload": "Fájl feltöltése", "toolbar.button.file.upload": "Fájl feltöltése",
"toolbar.button.link": "Link", "toolbar.button.link": "Link",
"toolbar.button.paragraph": "Paragraph",
"toolbar.button.strike": "Strike-through", "toolbar.button.strike": "Strike-through",
"toolbar.button.ol": "Rendezett lista", "toolbar.button.ol": "Rendezett lista",
"toolbar.button.underline": "Underline", "toolbar.button.underline": "Underline",
@@ -497,7 +526,7 @@
"url.placeholder": "https://pelda.hu", "url.placeholder": "https://pelda.hu",
"user": "Felhasználó", "user": "Felhasználó",
"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", "user.blueprint": "You can define additional sections and form fields for this user role in <strong>/site/blueprints/users/{blueprint}.yml</strong>",
"user.changeEmail": "Email módosítása", "user.changeEmail": "Email módosítása",
"user.changeLanguage": "Nyelv módosítása", "user.changeLanguage": "Nyelv módosítása",
"user.changeName": "Felhasználó átnevezése", "user.changeName": "Felhasználó átnevezése",
@@ -516,9 +545,10 @@
"view.account": "Fi\u00f3kod", "view.account": "Fi\u00f3kod",
"view.installation": "Telep\u00edt\u00e9s", "view.installation": "Telep\u00edt\u00e9s",
"view.languages": "Nyelvek",
"view.resetPassword": "Reset password", "view.resetPassword": "Reset password",
"view.settings": "Beállítások",
"view.site": "Weboldal", "view.site": "Weboldal",
"view.system": "System",
"view.users": "Felhaszn\u00e1l\u00f3k", "view.users": "Felhaszn\u00e1l\u00f3k",
"welcome": "Üdvözlünk", "welcome": "Üdvözlünk",

View File

@@ -1,5 +1,10 @@
{ {
"account.changeName": "Change your name",
"account.delete": "Delete your account",
"account.delete.confirm": "Do you really want to delete your account? You will be logged out immediately. Your account cannot be recovered.",
"add": "Tambah", "add": "Tambah",
"author": "Author",
"avatar": "Gambar profil", "avatar": "Gambar profil",
"back": "Kembali", "back": "Kembali",
"cancel": "Batal", "cancel": "Batal",
@@ -9,6 +14,7 @@
"collapse": "Lipat", "collapse": "Lipat",
"collapse.all": "Lipat Semua", "collapse.all": "Lipat Semua",
"copy": "Salin", "copy": "Salin",
"copy.all": "Copy all",
"create": "Buat", "create": "Buat",
"date": "Tanggal", "date": "Tanggal",
@@ -23,24 +29,28 @@
"days.tue": "Sel", "days.tue": "Sel",
"days.wed": "Rab", "days.wed": "Rab",
"debugging": "Debugging",
"delete": "Hapus", "delete": "Hapus",
"delete.all": "Hapus semua", "delete.all": "Hapus semua",
"dimensions": "Dimensi",
"disabled": "Dimatikan",
"discard": "Buang",
"download": "Unduh",
"duplicate": "Duplikasi",
"edit": "Sunting",
"expand": "Luaskan",
"expand.all": "Luaskan Semua",
"dialog.files.empty": "Tidak ada berkas untuk dipilih", "dialog.files.empty": "Tidak ada berkas untuk dipilih",
"dialog.pages.empty": "Tidak ada halaman untuk dipilih", "dialog.pages.empty": "Tidak ada halaman untuk dipilih",
"dialog.users.empty": "Tidak ada pengguna untuk dipilih", "dialog.users.empty": "Tidak ada pengguna untuk dipilih",
"dimensions": "Dimensi",
"disabled": "Dimatikan",
"discard": "Buang",
"download": "Unduh",
"duplicate": "Duplikasi",
"edit": "Sunting",
"email": "Surel", "email": "Surel",
"email.placeholder": "surel@contoh.com", "email.placeholder": "surel@contoh.com",
"environment": "Environment",
"error.access.code": "Kode tidak valid", "error.access.code": "Kode tidak valid",
"error.access.login": "Upaya masuk tidak valid", "error.access.login": "Upaya masuk tidak valid",
"error.access.panel": "Anda tidak diizinkan mengakses panel", "error.access.panel": "Anda tidak diizinkan mengakses panel",
@@ -92,6 +102,7 @@
"error.language.code": "Masukkan kode bahasa yang valid", "error.language.code": "Masukkan kode bahasa yang valid",
"error.language.duplicate": "Bahasa sudah ada", "error.language.duplicate": "Bahasa sudah ada",
"error.language.name": "Masukkan nama bahasa yang valid", "error.language.name": "Masukkan nama bahasa yang valid",
"error.language.notFound": "The language could not be found",
"error.layout.validation.block": "Ada kesalahan di blok {blockIndex} di tata letak {layoutIndex}", "error.layout.validation.block": "Ada kesalahan di blok {blockIndex} di tata letak {layoutIndex}",
"error.layout.validation.settings": "Ada kesalahan di pengaturan tata letak {index}", "error.layout.validation.settings": "Ada kesalahan di pengaturan tata letak {index}",
@@ -100,6 +111,8 @@
"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.offline": "The Panel is currently offline",
"error.page.changeSlug.permission": "Anda tidak diizinkan mengubah akhiran URL untuk \"{slug}\"", "error.page.changeSlug.permission": "Anda tidak diizinkan mengubah akhiran URL untuk \"{slug}\"",
"error.page.changeStatus.incomplete": "Halaman memiliki kesalahan dan tidak dapat diterbitkan", "error.page.changeStatus.incomplete": "Halaman memiliki kesalahan dan tidak dapat diterbitkan",
"error.page.changeStatus.permission": "Status halaman ini tidak dapat diubah", "error.page.changeStatus.permission": "Status halaman ini tidak dapat diubah",
@@ -165,6 +178,7 @@
"error.user.password.undefined": "Pengguna tidak memiliki sandi", "error.user.password.undefined": "Pengguna tidak memiliki sandi",
"error.user.password.wrong": "Kata sandi salah", "error.user.password.wrong": "Kata sandi salah",
"error.user.role.invalid": "Masukkan peran yang valid", "error.user.role.invalid": "Masukkan peran yang valid",
"error.user.undefined": "Pengguna tidak dapat ditemukan",
"error.user.update.permission": "Anda tidak diizinkan memperbaharui pengguna \"{name}\"", "error.user.update.permission": "Anda tidak diizinkan memperbaharui pengguna \"{name}\"",
"error.validation.accepted": "Mohon konfirmasi", "error.validation.accepted": "Mohon konfirmasi",
@@ -208,6 +222,9 @@
"error.validation.time.between": "Masukkan waktu antara {min} dan {max}", "error.validation.time.between": "Masukkan waktu antara {min} dan {max}",
"error.validation.url": "Masukkan URL yang valid", "error.validation.url": "Masukkan URL yang valid",
"expand": "Luaskan",
"expand.all": "Luaskan Semua",
"field.required": "Bidang ini wajib", "field.required": "Bidang ini wajib",
"field.blocks.changeType": "Ubah tipe", "field.blocks.changeType": "Ubah tipe",
"field.blocks.code.name": "Kode", "field.blocks.code.name": "Kode",
@@ -218,6 +235,7 @@
"field.blocks.delete.confirm.selected": "Anda yakin menghapus blok yang dipilih?", "field.blocks.delete.confirm.selected": "Anda yakin menghapus blok yang dipilih?",
"field.blocks.empty": "Belum ada blok", "field.blocks.empty": "Belum ada blok",
"field.blocks.fieldsets.label": "Pilih tipe blok …", "field.blocks.fieldsets.label": "Pilih tipe blok …",
"field.blocks.fieldsets.paste": "Press <kbd>{{ shortcut }}</kbd> to paste/import blocks from your clipboard",
"field.blocks.gallery.name": "Galeri", "field.blocks.gallery.name": "Galeri",
"field.blocks.gallery.images.empty": "Belum ada gambar", "field.blocks.gallery.images.empty": "Belum ada gambar",
"field.blocks.gallery.images.label": "Gambar", "field.blocks.gallery.images.label": "Gambar",
@@ -234,6 +252,7 @@
"field.blocks.image.placeholder": "Pilih gambar", "field.blocks.image.placeholder": "Pilih gambar",
"field.blocks.image.ratio": "Rasio", "field.blocks.image.ratio": "Rasio",
"field.blocks.image.url": "URL Gambar", "field.blocks.image.url": "URL Gambar",
"field.blocks.line.name": "Line",
"field.blocks.list.name": "Daftar", "field.blocks.list.name": "Daftar",
"field.blocks.markdown.name": "Markdown", "field.blocks.markdown.name": "Markdown",
"field.blocks.markdown.label": "Teks", "field.blocks.markdown.label": "Teks",
@@ -263,7 +282,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.blueprint": "Berkas ini belum memiliki cetak biru. Anda dapat mendefinisikannya di <strong>/site/blueprints/{template}.yml</strong>", "file.blueprint": "This file has no blueprint yet. You can define the setup in <strong>/site/blueprints/files/{blueprint}.yml</strong>",
"file.delete.confirm": "Anda yakin menghapus <br> <strong>{filename}</strong>?", "file.delete.confirm": "Anda yakin menghapus <br> <strong>{filename}</strong>?",
"file.sort": "Ubah posisi", "file.sort": "Ubah posisi",
@@ -272,6 +291,7 @@
"hide": "Sembunyikan", "hide": "Sembunyikan",
"hour": "Jam", "hour": "Jam",
"import": "Import",
"insert": "Sisipkan", "insert": "Sisipkan",
"insert.after": "Sisipkan setelah", "insert.after": "Sisipkan setelah",
"insert.before": "Sisipkan sebelum", "insert.before": "Sisipkan sebelum",
@@ -337,9 +357,9 @@
"login.code.label.password-reset": "Kode atur ulang sandi", "login.code.label.password-reset": "Kode atur ulang sandi",
"login.code.placeholder.email": "000 000", "login.code.placeholder.email": "000 000",
"login.code.text.email": "Jika alamat surel terdaftar, kode yang diminta dikirim via surel", "login.code.text.email": "Jika alamat surel terdaftar, kode yang diminta dikirim via surel",
"login.email.login.body": "Hai {user.nameOrEmail},\n\nAnda baru saja meminta kode masuk untuk Kirby Panel.\nKode masuk berikut valid selama {timeout} menit:\n\n{code}\n\nJika Anda tidak meminta kode masuk, abaikan surel ini atau hubungi admin apabila ada yang ingin ditanyakan.\nUntuk alasan keamanan, JANGAN teruskan surel ini.", "login.email.login.body": "Hi {user.nameOrEmail},\n\nYou recently requested a login code for the Panel of {site}.\nThe following login code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a login code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.",
"login.email.login.subject": "Kode masuk Anda", "login.email.login.subject": "Kode masuk Anda",
"login.email.password-reset.body": "Hai {user.nameOrEmail},\n\nAnda baru saja meminta kode atur ulang sandi untuk Kirby Panel.\nKode atur ulang sandi berikut valid selama {timeout} menit:\n\n{code}\n\nJika Anda tidak meminta kode atur ulang sandi, abaikan surel ini atau hubungi admin apabila ada yang ingin ditanyakan.\nUntuk alasan keamanan, JANGAN teruskan surel ini.", "login.email.password-reset.body": "Hi {user.nameOrEmail},\n\nYou recently requested a password reset code for the Panel of {site}.\nThe following password reset code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a password reset code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.",
"login.email.password-reset.subject": "Kode atur ulang sandi Anda", "login.email.password-reset.subject": "Kode atur ulang sandi Anda",
"login.remember": "Biarkan tetap masuk", "login.remember": "Biarkan tetap masuk",
"login.reset": "Atur ulang sandi", "login.reset": "Atur ulang sandi",
@@ -385,7 +405,7 @@
"orientation.portrait": "Tegak", "orientation.portrait": "Tegak",
"orientation.square": "Persegi", "orientation.square": "Persegi",
"page.blueprint": "Halaman ini belum memiliki cetak biru. Anda dapat mendefinisikannya di <strong>/site/blueprints/{template}.yml</strong>", "page.blueprint": "This page has no blueprint yet. You can define the setup in <strong>/site/blueprints/pages/{blueprint}.yml</strong>",
"page.changeSlug": "Ubah URL", "page.changeSlug": "Ubah URL",
"page.changeSlug.fromTitle": "Buat dari judul", "page.changeSlug.fromTitle": "Buat dari judul",
"page.changeStatus": "Ubah status", "page.changeStatus": "Ubah status",
@@ -417,7 +437,10 @@
"pagination.page": "Halaman", "pagination.page": "Halaman",
"password": "Sandi", "password": "Sandi",
"paste": "Paste",
"paste.after": "Paste after",
"pixel": "Piksel", "pixel": "Piksel",
"plugins": "Plugins",
"prev": "Sebelumnya", "prev": "Sebelumnya",
"preview": "Pratinjau", "preview": "Pratinjau",
"remove": "Hapus", "remove": "Hapus",
@@ -454,6 +477,8 @@
"template": "Templat", "template": "Templat",
"today": "Hari ini", "today": "Hari ini",
"server": "Server",
"site.blueprint": "Situs ini belum memiliki cetak biru. Anda dapat mendefinisikannya di <strong>/site/blueprints/site.yml</strong>", "site.blueprint": "Situs ini belum memiliki cetak biru. Anda dapat mendefinisikannya di <strong>/site/blueprints/site.yml</strong>",
"toolbar.button.code": "Kode", "toolbar.button.code": "Kode",
@@ -463,11 +488,15 @@
"toolbar.button.heading.1": "Penajukan 1", "toolbar.button.heading.1": "Penajukan 1",
"toolbar.button.heading.2": "Penajukan 2", "toolbar.button.heading.2": "Penajukan 2",
"toolbar.button.heading.3": "Penajukan 3", "toolbar.button.heading.3": "Penajukan 3",
"toolbar.button.heading.4": "Heading 4",
"toolbar.button.heading.5": "Heading 5",
"toolbar.button.heading.6": "Heading 6",
"toolbar.button.italic": "Miring", "toolbar.button.italic": "Miring",
"toolbar.button.file": "Berkas", "toolbar.button.file": "Berkas",
"toolbar.button.file.select": "Pilih berkas", "toolbar.button.file.select": "Pilih berkas",
"toolbar.button.file.upload": "Unggah berkas", "toolbar.button.file.upload": "Unggah berkas",
"toolbar.button.link": "Tautan", "toolbar.button.link": "Tautan",
"toolbar.button.paragraph": "Paragraph",
"toolbar.button.strike": "Coret", "toolbar.button.strike": "Coret",
"toolbar.button.ol": "Daftar berurut", "toolbar.button.ol": "Daftar berurut",
"toolbar.button.underline": "Garis bawah", "toolbar.button.underline": "Garis bawah",
@@ -497,7 +526,7 @@
"url.placeholder": "https://contoh.com", "url.placeholder": "https://contoh.com",
"user": "Pengguna", "user": "Pengguna",
"user.blueprint": "Anda dapat mendefinisikan bagian tambahan dan bidang formulir untuk peran pengguna ini di <strong>/site/blueprints/users/{role}.yml</strong>", "user.blueprint": "You can define additional sections and form fields for this user role in <strong>/site/blueprints/users/{blueprint}.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",
@@ -516,9 +545,10 @@
"view.account": "Akun Anda", "view.account": "Akun Anda",
"view.installation": "Pemasangan", "view.installation": "Pemasangan",
"view.languages": "Bahasa",
"view.resetPassword": "Atur ulang sandi", "view.resetPassword": "Atur ulang sandi",
"view.settings": "Pengaturan",
"view.site": "Situs", "view.site": "Situs",
"view.system": "System",
"view.users": "Pengguna", "view.users": "Pengguna",
"welcome": "Selamat datang", "welcome": "Selamat datang",

View File

@@ -0,0 +1,557 @@
{
"account.changeName": "Breyta nafninu þínu",
"account.delete": "Eyða reikningnum þínum",
"account.delete.confirm": "Ertu alveg viss um að þú viljir endanlega eyða reikningnum þínum? Þú munt verða útskráð/ur án tafar. Ómögulegt verður að endurheimta reikninginn þinn.",
"add": "Bæta við",
"author": "Höfundur",
"avatar": "Prófíl mynd",
"back": "Til baka",
"cancel": "Hætta við",
"change": "Breyta",
"close": "Loka",
"confirm": "Ok",
"collapse": "Collapse",
"collapse.all": "Collapse All",
"copy": "Afrita",
"copy.all": "Afrita allt",
"create": "Stofna",
"date": "Dagsetning",
"date.select": "Veldu dagsetningu",
"day": "Dagur",
"days.fri": "Fös",
"days.mon": "Mán",
"days.sat": "Lau",
"days.sun": "Sun",
"days.thu": "Fim",
"days.tue": "Þri",
"days.wed": "Mið",
"debugging": "Aflúsun",
"delete": "Eyða",
"delete.all": "Eyða hreint öllu",
"dialog.files.empty": "Engar skrár til að velja úr",
"dialog.pages.empty": "Engar síður til að velja úr",
"dialog.users.empty": "Engir notendur til að velja úr",
"dimensions": "Rýmd",
"disabled": "Óvirkt",
"discard": "Hunsa",
"download": "Hlaða niður",
"duplicate": "Klóna",
"edit": "Breyta",
"email": "Netfang",
"email.placeholder": "nafn@netfang.is",
"environment": "Umhverfi",
"error.access.code": "Ógildur kóði",
"error.access.login": "Ógild innskráning",
"error.access.panel": "Þú hefur ekkert leyfi til að nota panelinn",
"error.access.view": "Þú hefur ekkert leyfi til að nota þennan hluta panelsins",
"error.avatar.create.fail": "Það gekk ekki að hlaða inn prófílmyndinni",
"error.avatar.delete.fail": "Ekki tókst að eyða prófílmyndinni",
"error.avatar.dimensions.invalid": "Vinsamlegast hafðu myndina ekki breiðari né hærri en 3000 punkta",
"error.avatar.mime.forbidden": "Snið myndarinnar þarf að vera af gerðinni JPEG eða PNG",
"error.blueprint.notFound": "Ekki tókst að hlaða bláprentið: \"{name}\". Reyndu aftur?",
"error.blocks.max.plural": "Ekki fleiri en {max} bálka",
"error.blocks.max.singular": "Ekki meira en einn bálkur",
"error.blocks.min.plural": "Minnst {min}. bálka",
"error.blocks.min.singular": "Allavegana einn bálkur takk",
"error.blocks.validation": "Það er villa í bálk {index}",
"error.email.preset.notFound": "Netfangstillingarnar: \"{name}\" fundust ekki",
"error.field.converter.invalid": "Ógildur umbreytari \"{converter}\"",
"error.file.changeName.empty": "Nafn skal fylla út",
"error.file.changeName.permission": "Þú mátt ekkert breyta nafninu á skránni \"{filename}\"",
"error.file.duplicate": "Skrá með nafninu \"{filename}\" er nú þegar til",
"error.file.extension.forbidden": "Skrárendingin \"{extension}\" er ekki leyfð",
"error.file.extension.invalid": "Óleyfilegt skrársnið hér: {extension}",
"error.file.extension.missing": "Skrárendinguna fyrir \"{filename}\" vantar",
"error.file.maxheight": "Hæð myndarinnar má ekki vera meiri en {height} punktar",
"error.file.maxsize": "Skráinn er alltof stór",
"error.file.maxwidth": "Breydd myndarinnar má alls ekki vera meiri en {width} punktar",
"error.file.mime.differs": "Upphlaðna skráin þarf að vera sömu tegundar: \"{mime}\"",
"error.file.mime.forbidden": "Gagnasniðið \"{mime}\" er ekki leyft hér",
"error.file.mime.invalid": "Ógyllt gagnasnið: {mime}",
"error.file.mime.missing": "Gagnasnið skránnar \"{filename}\" er óþekkt",
"error.file.minheight": "Hæð myndarinnar þarf að vera minnst {height} punktar",
"error.file.minsize": "Skráin er of smá",
"error.file.minwidth": "Breidd myndarinnar þarf að vera minnst {width} punktar",
"error.file.name.missing": "Skrárnafnið má ekki skilja eftir tómt",
"error.file.notFound": "Skráin \"{filename}\" fannst ekki",
"error.file.orientation": "Snið myndarinnar þarf að vera \"{orientation}\"",
"error.file.type.forbidden": "Þú mátt ekkert hlaða inn {type} skrám",
"error.file.type.invalid": "Ógild skrártegund: {type}",
"error.file.undefined": "Skráin fannst ekki",
"error.form.incomplete": "Vinsamlegast lagfærðu villurnar í forminu…",
"error.form.notSaved": "Ekki tókst að vista upplýsingar úr forminu",
"error.language.code": "Gófúslega settu inn gildan kóða fyrir tungumál",
"error.language.duplicate": "Þetta tungumál er nú þegar skráð",
"error.language.name": "Gott og gyllt nafn fyrir tungumálið",
"error.language.notFound": "Tungumálið fannst ekkert",
"error.layout.validation.block": "Það er villa í bálki {blockIndex} í rammanum {layoutIndex}",
"error.layout.validation.settings": "Hér er villa í sitllingum fyrir ramman {index}",
"error.license.format": "Gildur leyfiskóði hér",
"error.license.email": "Almennilegt netfang hér",
"error.license.verification": "Ekki heppnaðist að staðfest leyfið",
"error.offline": "Stjórnborðið er óvirkt eins og stendur.",
"error.page.changeSlug.permission": "Þú hefur ekkert leyfi til þess að breyta slóðarforskeytinu fyrir \"{slug}\"",
"error.page.changeStatus.incomplete": "Það eru villur á síðunni og við getum ekki gefið hana út",
"error.page.changeStatus.permission": "Stöðu síðunnar var ekki hægt að breyta",
"error.page.changeStatus.toDraft.invalid": "Síðunn \"{slug}\" er ekki hægt að breyta í uppkast",
"error.page.changeTemplate.invalid": "Sniðmáti fyrir síðuna \"{slug}\" er ekki hægt að breyta",
"error.page.changeTemplate.permission": "Þú hefur engan veginn leyfi til að breyta sniðmáti fyrir síðuna \"{slug}\"",
"error.page.changeTitle.empty": "Titillinn getur ekki verið óskilgreindur",
"error.page.changeTitle.permission": "Þú mátt ekki breyta titlinum fyrir \"{slug}\"",
"error.page.create.permission": "Þú hefur ekki leyfi til að stofna \"{slug}\"",
"error.page.delete": "Síðunni \"{slug}\" er ekki hægt að eyða",
"error.page.delete.confirm": "Ritaðu titil síðunnar til að staðfesta",
"error.page.delete.hasChildren": "Síðan hefur undirsíður og er því ekki hægt að eyða",
"error.page.delete.permission": "Þú mátt ekkert eyða \"{slug}\"",
"error.page.draft.duplicate": "Uppkast með slóðinni \"{slug}\" er þegar til",
"error.page.duplicate": "Síða með slóðinni \"{slug}\" er þegar til",
"error.page.duplicate.permission": "Þú mátt ekki klóna \"{slug}\"",
"error.page.notFound": "Síðan \"{slug}\" fannst ekkert",
"error.page.num.invalid": "Veldu ákjósanlega raðtölu. Neikvæðar tölur bannaðar.",
"error.page.slug.invalid": "Veldu ákjósanlega vefslóð",
"error.page.slug.maxlength": "Vefslóð þarf að vera a.m.k. \"{length}\" stafir",
"error.page.sort.permission": "Ekki reyndist unnt að raða síðunni \"{slug}\"",
"error.page.status.invalid": "Ákjósanlega síðustöðu takk",
"error.page.undefined": "Síðan fannst ekkert",
"error.page.update.permission": "Þú mátt ekkert uppfæra síðuna \"{slug}\"",
"error.section.files.max.plural": "Ekki fleiri en {max} skrár í \"{section}\" svæðið",
"error.section.files.max.singular": "Aðeins ein skrá í \"{section}\" svæðið",
"error.section.files.min.plural": "\"{section}\" svæðið krefst a.m.k. {min} skrá sem innihalds",
"error.section.files.min.singular": "\"{section}\" þarf minnst eina skrá til að það virki",
"error.section.pages.max.plural": "Alls ekki fleiri en {max} síður í \"{section}\" svæðið",
"error.section.pages.max.singular": "Ekki fleiri en ein síða í \"{section}\" svæðið",
"error.section.pages.min.plural": "\"{section}\" svæðið krefst a.m.k {min}. síðna",
"error.section.pages.min.singular": "\"{section}\" krefst a.m.k. einnar síðu",
"error.section.notLoaded": "Svæðið \"{name}\" var því miður ekki hægt að sækja",
"error.section.type.invalid": "Svæðiðsgerðin \"{type}\" er því miður ekki gild",
"error.site.changeTitle.empty": "Ekki skilja titilinn eftir tóman",
"error.site.changeTitle.permission": "Þú mátt ekkert breyta titil vefsvæðisins",
"error.site.update.permission": "Þú mátt ekkert uppfæra vefsvæðið",
"error.template.default.notFound": "Ekkert sjálfgefið sniðmát fannst",
"error.user.changeEmail.permission": "Þú mátt ekkert breyta netfangi notandans \"{name}\"",
"error.user.changeLanguage.permission": "Þú hefur ekki leyfi til að breyta tungumáli notandans \"{name}\"",
"error.user.changeName.permission": "Þú mátt alls ekki breyta nafni notandans \"{name}\"",
"error.user.changePassword.permission": "Þér er harðbannað að breyta lykilorði notandans \"{name}\"",
"error.user.changeRole.lastAdmin": "Þetta er síðasti stjórinn og því má ekki breyta hlutverki",
"error.user.changeRole.permission": "Þú hefur ekki leyfi til að breyta hlutverki fyrir notandan \"{name}\"",
"error.user.changeRole.toAdmin": "Þú hefur ekkert leyfi til að gera notendur að stjórum",
"error.user.create.permission": "Þú mátt ekki stofna þennan notanda",
"error.user.delete": "Ekki reyndist unnt að eyða notandanum \"{name}\"",
"error.user.delete.lastAdmin": "Síðasta stjóranum er ekki hægt að eyða",
"error.user.delete.lastUser": "Síðasta notandanum er ekki hægt að eyða",
"error.user.delete.permission": "Þú mátt ekkert eyða notandanum \"{name}\"",
"error.user.duplicate": "Nú þegar finnst notandi með þetta netfang: \"{email}\"",
"error.user.email.invalid": "Vinsamlegast ákjósanlegt netfang",
"error.user.language.invalid": "Vinsamlegast ákjósanlegt tungumál",
"error.user.notFound": "Þessi notandi; \"{name}\" fannst ekki",
"error.user.password.invalid": "Veldu ákjósanlegt lykilorð. Minnst 8 stafa langt.",
"error.user.password.notSame": "Lykilorðin stemma ekki",
"error.user.password.undefined": "Þessi notandi hefur ekki lykilorð",
"error.user.password.wrong": "Rangt lykilorð",
"error.user.role.invalid": "Veldu ákjósanlegt hlutverk",
"error.user.undefined": "Notandinn fannst ekkert",
"error.user.update.permission": "Þú mátt ekkert breyta notandanum \"{name}\"",
"error.validation.accepted": "Staðfestu",
"error.validation.alpha": "Aðeins stafir úr Enska stafrófinu, a-z",
"error.validation.alphanum": "Aðeins stafir úr Enska stafrófinu, a-z eða tölustafir 0-9",
"error.validation.between": "Gildi milli \"{min}\" og \"{max}\"",
"error.validation.boolean": "Staðfestu eða hafnaðu þessu",
"error.validation.contains": "Settu inni gildi er inniheldur \"{needle}\"",
"error.validation.date": "Ákjósanlega dagsetningu",
"error.validation.date.after": "Dagsetningu eftir {date}",
"error.validation.date.before": "Dagsetningu fyrir {date}",
"error.validation.date.between": "Dagsetningu milli {min} og {max}",
"error.validation.denied": "Hafnaðu",
"error.validation.different": "Gildið má ekki vera \"{other}\"",
"error.validation.email": "Ákjósanlegt netfang",
"error.validation.endswith": "Gildið verður að enda á \"{end}\"",
"error.validation.filename": "Ákjósanlegt skrárnafn",
"error.validation.in": "Vinsamlegast skráðu eitt af eftirfarandi: ({in})",
"error.validation.integer": "Skráðu heiltölu",
"error.validation.ip": "Skráðu ákjósanlega IP tölu",
"error.validation.less": "Skráðu gildi lægra en {max}",
"error.validation.match": "Gildið er ekki eftir væntingum",
"error.validation.max": "Skráð gildi sem er ekki hærra en {max}",
"error.validation.maxlength": "Veldu eitthvað styttra. (hámark {max} stafir)",
"error.validation.maxwords": "Ekki skrá fleiri en {max}. orð",
"error.validation.min": "Skráðu gildi ekki lægra en {min}",
"error.validation.minlength": "Hafðu þetta lengra en {min}. stafi",
"error.validation.minwords": "Lágmark {min}. orð",
"error.validation.more": "Eitthvað hærra en {min}",
"error.validation.notcontains": "Skráðu eitthvað sem inniheldur ekki \"{needle}\"",
"error.validation.notin": "Ekki skrá neitt af þessu: ({notIn})",
"error.validation.option": "Veldu ákjósanlegan kost",
"error.validation.num": "Skráðu ákjósanlega tölu",
"error.validation.required": "Skráðu eitthvað",
"error.validation.same": "Skráðu \"{other}\"",
"error.validation.size": "Gildið þarf að vera \"{size}\"",
"error.validation.startswith": "Þetta þarf að byrja á \"{start}\"",
"error.validation.time": "Ákjósanlegur tími",
"error.validation.time.after": "Veldu tíma eftir {time}",
"error.validation.time.before": "Veldu tíma fyrir{time}",
"error.validation.time.between": "Veldu tíma milli {min} og {max}",
"error.validation.url": "Ákjósanleg vefslóð",
"expand": "Þenja út",
"expand.all": "Þenja allt út",
"field.required": "Þetta svið er nauðsynlegt",
"field.blocks.changeType": "Breyta um bálkagerð",
"field.blocks.code.name": "Kóði",
"field.blocks.code.language": "Tungumal",
"field.blocks.code.placeholder": "Kóðinn þinn …",
"field.blocks.delete.confirm": "Ætlarðu virkilega að eyða þessum bálk?",
"field.blocks.delete.confirm.all": "Ertu nú alveg viss um að þú viljir eyða öllum þessum bálkum?",
"field.blocks.delete.confirm.selected": "Viltu virkilega eyða völdum bálkum?",
"field.blocks.empty": "Öngvir bálkar enn",
"field.blocks.fieldsets.label": "Veldu bálkagerð …",
"field.blocks.fieldsets.paste": "Notaðu 1{{ shortcut }}1 flýtilyklaaðgerðina til að setja blokkina hér.",
"field.blocks.gallery.name": "Myndasafn",
"field.blocks.gallery.images.empty": "Engar myndir enn",
"field.blocks.gallery.images.label": "Myndir",
"field.blocks.heading.level": "Stig",
"field.blocks.heading.name": "Fyrirsögn",
"field.blocks.heading.text": "Texti/Prósi",
"field.blocks.heading.placeholder": "Fyrirsögn …",
"field.blocks.image.alt": "ALT texti",
"field.blocks.image.caption": "Myndartexti",
"field.blocks.image.crop": "Kroppa",
"field.blocks.image.link": "Tengill",
"field.blocks.image.location": "Staðsetning",
"field.blocks.image.name": "Mynd",
"field.blocks.image.placeholder": "Veldu mynd",
"field.blocks.image.ratio": "Hlutfall",
"field.blocks.image.url": "Slóð myndar",
"field.blocks.line.name": "Lína",
"field.blocks.list.name": "Listi",
"field.blocks.markdown.name": "Markdown",
"field.blocks.markdown.label": "Texti",
"field.blocks.markdown.placeholder": "Markdown …",
"field.blocks.quote.name": "Tilvitnun",
"field.blocks.quote.text.label": "Innihald tilvitnunar",
"field.blocks.quote.text.placeholder": "Þessi tilvitnun …",
"field.blocks.quote.citation.label": "Heimild",
"field.blocks.quote.citation.placeholder": "eftir …",
"field.blocks.text.name": "Prósi",
"field.blocks.text.placeholder": "Þessi prósi …",
"field.blocks.video.caption": "Myndskeiðstexti",
"field.blocks.video.name": "Myndskeið",
"field.blocks.video.placeholder": "Vefslóð myndskeiðs (URL)",
"field.blocks.video.url.label": "Vefslóð",
"field.blocks.video.url.placeholder": "https://youtube.com/?v=",
"field.files.empty": "Engar skrár valdar ennþá",
"field.layout.delete": "Eyða ramma",
"field.layout.delete.confirm": "Ætlarðu virkilega að eyða þessum ramma?",
"field.layout.empty": "Nei. Engir rammar enn.",
"field.layout.select": "Veldu rammategund",
"field.pages.empty": "Engar síður valdar ennþá",
"field.structure.delete.confirm": "Viltu virkilega eyða þessari röð?",
"field.structure.empty": "Engar færslur enn",
"field.users.empty": "Engir notendur valdir enn",
"file.blueprint": "Þessi skrá hefur ekki skipan (e. blueprint) ennþá. Þú mátt skilgreina skipanina í <strong>/site/blueprints/{template}.yml</strong>",
"file.delete.confirm": "Ætlarðu virkilega að eyða <br><strong>{filename}</strong>?",
"file.sort": "Breyta röðun",
"files": "Skrár",
"files.empty": "Engar skrár enn",
"hide": "Fela",
"hour": "Klukkustund",
"import": "Hlaða inn",
"insert": "Setja inn",
"insert.after": "Setja eftir",
"insert.before": "Setja fyrir",
"install": "Setja upp",
"installation": "Uppsettning",
"installation.completed": "Panellinn er uppsettur",
"installation.disabled": "Paneluppsetning er sjálfgefið óvirk á vefþjónum á Veraldarvefnum. Reyndu frekar að setja Panelinn upp í lokuðu umhverfi eða virkjaðu <code>panel.install</code> möguleikan.",
"installation.issues.accounts": "<code>/site/accounts</code> mappan er annaðhvort ekki til eða er ekki skrifanleg.",
"installation.issues.content": "<code>/content</code> mappan er annaðhvort ekki til eða er ekki skrifanleg",
"installation.issues.curl": "<code>CURL</code> viðbótin er hér bráðnauðsynleg",
"installation.issues.headline": "Uppsetning Panelsins mistókst hrapalega",
"installation.issues.mbstring": "<code>MB String</code> er hér bráðnauðsynleg",
"installation.issues.media": "<code>/media</code> mappan er annaðhvort ekki til eða er ekki skrifanleg",
"installation.issues.php": "Notaðu <code>PHP 7+</code>",
"installation.issues.server": "Kirby krefst <code>Apache</code>, <code>Nginx</code> eða <code>Caddy</code>",
"installation.issues.sessions": "<code>/site/sessions</code> mappan er annaðhvort ekki til eða er ekki skrifanleg",
"language": "Tungumál",
"language.code": "Kóði",
"language.convert": "Gera sjálfgefið",
"language.convert.confirm": "<p>Ertu viss um að þú viljir breyta <strong>{name}</strong> í sjálfgefið (lesist aðal) tungumál? Þessu verður ekki viðsnúið.</p><p>Ef <strong>{name}</strong> hefur innihald sem ekki hefur verið þýtt, þá verða engir möguleikar til þrautarvara og hluti vefsins gæti birtst tómur.</p>",
"language.create": "Bættu við nýju tungumáli",
"language.delete.confirm": "Ertu nú viss um að þú viljir eyða <strong>{name}</strong> og öllum tilheyrandi þýðingum? Þetta verður ekki tekið til baka!",
"language.deleted": "Tungumálinu hefur verið eytt",
"language.direction": "Lestursátt (hægri, vinstri)",
"language.direction.ltr": "Vinstra til hægri",
"language.direction.rtl": "Hægra til vinstri",
"language.locale": "PHP locale strengur",
"language.locale.warning": "Þú ert að nota sérsniðna locale uppsetningu. Vinsamlegast breyttu tungumálaskránni á slóðinni /site/languages",
"language.name": "Nafn tungumáls",
"language.updated": "Tungumálið hefur verið uppfært",
"languages": "Tungumál",
"languages.default": "Aðal tungumál",
"languages.empty": "Það eru engin frekari tungumál skilgreind enn",
"languages.secondary": "Auka tungumál",
"languages.secondary.empty": "Það eru engin auka tungumál skilgreind enn",
"license": "Leyfi",
"license.buy": "Kaupa leyfi",
"license.register": "Skr\u00E1 Kirby",
"license.register.help": "Þú fékkst sendan tölvupóst með leyfiskóðanum þegar þú keyptir leyfi. Vinsamlegast afritaðu hann og settu hann hingað til að skrá þig.",
"license.register.label": "Vinsamlegast settu inn leyfiskóðan",
"license.register.success": "Þakka þér fyrir að velja Kirby",
"license.unregistered": "Þetta er óskráð prufueintak af Kirby",
"link": "Tengill",
"link.text": "Tengilstexti",
"loading": "Hleð",
"lock.unsaved": "Óvistað breytingar",
"lock.unsaved.empty": "Það eru öngvar óvistaðar breytingar",
"lock.isLocked": "Óvistaðar breytingar frá <strong>{email}</strong>",
"lock.file.isLocked": "{email} er að vinna í skránni og þú breytir henni ekki á meðan.",
"lock.page.isLocked": "{email} er að vinna í síðunni og þú breytir henni ekki á meðan.",
"lock.unlock": "Aflæsa",
"lock.isUnlocked": "Þær breytingar sem þú gerðir hafa verið yfirskrifaðar af öðrum notanda. Þú getur sótt þær breytingar og splæst þeim saman við þínar breytingar. Handvirkt.",
"login": "Innskrá",
"login.code.label.login": "Innskráningarkóði",
"login.code.label.password-reset": "Kóði fyrir endurstillingu lykilorðs",
"login.code.placeholder.email": "000 000",
"login.code.text.email": "Ef netfangið (e. email) þitt er skráð þá bíður þín nýr tölvupóstur.",
"login.email.login.body": "Já halló {user.nameOrEmail},\n\nNýlega baðstu um innskráningarkóða fyrir bakendan á sorli.is.\nEftirfarandi kóði er virkur í {timeout} mínútur:\n\n{code}\n\nEf þú óskaðir ekki eftir þessu þá hunsaðu þennan tölvupóst eða talaðu við vefstjóran ef þú vilt fræðast nánar.\nAf öryggisástæðum vinsamlegast áframsendu þennan tölvupóst ALLS EKKI.",
"login.email.login.subject": "Innskráningarkóðinn þinn",
"login.email.password-reset.body": "Nei halló {user.nameOrEmail},\n\nNýverið baðstu um að lykilorði þínu væri endurstillt fyrir bakendan á sorli.is. \nEftirfarandi kóði er virkur í {timeout} mínútur:\n\n{code}\n\nEf þú óskaðir ekki eftir þessu þá hunsaðu þennan tölvupóst eða talaðu við vefstjóran ef þú vilt fræðast nánar.\nAf öryggisástæðum vinsamlegast áframsendu þennan tölvupóst ALLS EKKI.",
"login.email.password-reset.subject": "Kóðinn þinn fyrir endurstillingu lykilorðs",
"login.remember": "Vista innskráningu",
"login.reset": "Endurheimta lykilorð takk",
"login.toggleText.code.email": "Innskrá með netfangi",
"login.toggleText.code.email-password": "Innskrá með lykilorði",
"login.toggleText.password-reset.email": "Mannstu ekki lykilorðið?",
"login.toggleText.password-reset.email-password": "← Aftur í innskráningu",
"logout": "Útskrá",
"menu": "Valmynd",
"meridiem": "AM/PM",
"mime": "Miðilsgerð",
"minutes": "Mínútur",
"month": "Mánuður",
"months.april": "Apríl",
"months.august": "Ágúst",
"months.december": "Desember",
"months.february": "Febrúar",
"months.january": "Janúar",
"months.july": "Júlí",
"months.june": "Júní",
"months.march": "Mars",
"months.may": "Maí",
"months.november": "Nóvember",
"months.october": "Október",
"months.september": "September",
"more": "Meira",
"name": "Nafn",
"next": "Næst",
"no": "nei",
"off": "Af",
"on": "Á",
"open": "Opna",
"open.newWindow": "Opna í nýjum glugga",
"options": "Valmöguleikar",
"options.none": "Engir valmöguleikar",
"orientation": "Snúningur",
"orientation.landscape": "Langsnið",
"orientation.portrait": "Skammsnið",
"orientation.square": "Ferningur",
"page.blueprint": "Þessi síða hefur ekki skipan (e. blueprint) ennþá. Þú mátt skilgreina skipanina í <strong>/site/blueprints/{template}.yml</strong>",
"page.changeSlug": "Breyta vefslóð",
"page.changeSlug.fromTitle": "Slóð af titli",
"page.changeStatus": "Breyta stöðu",
"page.changeStatus.position": "Veldu ákjósanlega stöðu",
"page.changeStatus.select": "Veldu nýja stöðu",
"page.changeTemplate": "Breyta sniðmáti",
"page.delete.confirm": "Viltu virkilega farga <strong>{title}</strong>?",
"page.delete.confirm.subpages": "<strong>Þessi síða hefur undirsíður</strong>. <br>Þeim mun verða fargað líka.",
"page.delete.confirm.title": "Skráðu síðutitilinn til staðfestingar",
"page.draft.create": "Stofna uppkast",
"page.duplicate.appendix": "Afrita",
"page.duplicate.files": "Afrita skrár",
"page.duplicate.pages": "Afrita síður",
"page.sort": "Breyta röðun",
"page.status": "Staða",
"page.status.draft": "Uppkast",
"page.status.draft.description": "Þessi síða er uppkast og er aðeins sýnileg höfundum og stjórum eða gegnum falinn tengil.",
"page.status.listed": "Útgefin og listuð",
"page.status.listed.description": "Síðan er aðgengileg öllum og sýnleg í leiðarkerfi vefsins",
"page.status.unlisted": "Útgefin",
"page.status.unlisted.description": "Síðan er aðgengileg öllum en þó ekki sýnileg í leiðarkerfi vefsins",
"pages": "Síður",
"pages.empty": "Engar síður enn",
"pages.status.draft": "Uppköst",
"pages.status.listed": "Útgefnar og listaðar",
"pages.status.unlisted": "Útgefnar",
"pagination.page": "Síða",
"password": "Lykilorð",
"paste": "Líma",
"paste.after": "Líma eftir",
"pixel": "Punkta",
"plugins": "Viðbætur",
"prev": "Fyrri",
"preview": "Forskoða",
"remove": "Fjarlægja",
"rename": "Endurnefna",
"replace": "Setja í stað",
"retry": "Reyndu aftur",
"revert": "Taka upp fyrri siði",
"revert.confirm": "Viltu virkilega <strong>eyða öllum óvistuðum breytingum</strong>?",
"role": "Hlutverk",
"role.admin.description": "Stjórinn hefur öll réttindi",
"role.admin.title": "Stjóri",
"role.all": "Öll",
"role.empty": "Það eru engir notendur með þetta hlutverk",
"role.description.placeholder": "Engin lýsing",
"role.nobody.description": "Þetta hlutverk er til þrautarvara en hefur engin réttindi",
"role.nobody.title": "Enginn",
"save": "Vista",
"search": "Leita",
"search.min": "Lágmark {min} stafir til að leita",
"search.all": "Sýna allt",
"search.results.none": "Engar niðurstöður",
"section.required": "Þetta svæði er nauðsynlegt",
"select": "Velja",
"settings": "Stillingar",
"show": "Sýna",
"size": "Stærð",
"slug": "Slögg",
"sort": "Raða",
"title": "Titill",
"template": "Sniðmát",
"today": "Núna",
"server": "Vefþjónn",
"site.blueprint": "Þessi vefur hefur ekki skipan (e. blueprint) ennþá. Þú mátt skilgreina skipanina í <strong>/site/blueprints/site.yml</strong>",
"toolbar.button.code": "Kóðasnið",
"toolbar.button.bold": "Feitletrun",
"toolbar.button.email": "Netfang",
"toolbar.button.headings": "Fyrirsagnir",
"toolbar.button.heading.1": "Fyrirsögn 1",
"toolbar.button.heading.2": "Fyrirsögn 2",
"toolbar.button.heading.3": "Fyrirsögn 3",
"toolbar.button.heading.4": "Fyrirsögn 4",
"toolbar.button.heading.5": "Fyrirsögn 5",
"toolbar.button.heading.6": "Fyrirsögn 6",
"toolbar.button.italic": "Skáletrun",
"toolbar.button.file": "Skrár",
"toolbar.button.file.select": "Veldu skrá",
"toolbar.button.file.upload": "Hlaða inn skrá",
"toolbar.button.link": "Tengill",
"toolbar.button.paragraph": "Efnisgrein",
"toolbar.button.strike": "Gegnumstrika",
"toolbar.button.ol": "Raðaður listi",
"toolbar.button.underline": "Undirstrika",
"toolbar.button.ul": "Áherslumerktur listi",
"translation.author": "Kirby Teymið",
"translation.direction": "ltr",
"translation.name": "Íslenska A137",
"translation.locale": "is_IS",
"upload": "Hlaða inn",
"upload.error.cantMove": "Innhlöðnu skránni var ekki haggað",
"upload.error.cantWrite": "Það mistókst að skrifa skránna í geymslu",
"upload.error.default": "Ekki heppnaðist að hlaða inn skránni",
"upload.error.extension": "Innhleðsla stöðvuð vegna skrárendingar",
"upload.error.formSize": "Innhlaðna skráin er stærri en MAX_FILE_SIZE leyfilegt er.",
"upload.error.iniPostSize": "Innhlaðna skráin er stærri en því sem nemur í post_max_size stillingunni í php.ini",
"upload.error.iniSize": "Innhlaðna skráin er stærri en því sem nemur í upload_max_filesize stillingunni í php.ini",
"upload.error.noFile": "Engri skrá far hlaðið inn",
"upload.error.noFiles": "Engum skrám var hlaðið inn",
"upload.error.partial": "Innhlöðnu skránni var aðeins sótt að hluta",
"upload.error.tmpDir": "Vantar skruggumöppu",
"upload.errors": "Villa",
"upload.progress": "Hleð inn…",
"url": "Slóð",
"url.placeholder": "https://hvitur.is",
"user": "Notandi",
"user.blueprint": "Þér er óhætt að skilgreina fleiri svæði fyrir þetta notenda hlutverk í <strong>/site/blueprints/users/{role}.yml</strong>",
"user.changeEmail": "Breyta netfangi",
"user.changeLanguage": "Breyta tungumáli",
"user.changeName": "Endurnefna þennan notanda",
"user.changePassword": "Breyta lykilorð",
"user.changePassword.new": "Nýtt lykilorð",
"user.changePassword.new.confirm": "Staðfestu nýtt lykilorð…",
"user.changeRole": "Breyta hlutverki",
"user.changeRole.select": "Veldu nýtt hlutverk",
"user.create": "Bæta við nýjum notenda",
"user.delete": "Farga þessum notenda",
"user.delete.confirm": "Viltu virkilega eyða <br><strong>{email}</strong>?",
"users": "Notendur",
"version": "Útgáfa",
"view.account": "Notandareikningurinn þinn",
"view.installation": "Uppsetning",
"view.languages": "Tungumál",
"view.resetPassword": "Endurstilla lykilorð",
"view.site": "Vefsvæðið",
"view.system": "Kerfi",
"view.users": "Notendur",
"welcome": "Komið þér fagnandi",
"year": "Ár",
"yes": "já"
}

View File

@@ -1,5 +1,10 @@
{ {
"account.changeName": "Cambia il tuo nome",
"account.delete": "Elimina l'account",
"account.delete.confirm": "Vuoi davvero eliminare il tuo account? Verrai disconnesso immediatamente. Il tuo account non potrà essere recuperato.",
"add": "Aggiungi", "add": "Aggiungi",
"author": "Autore",
"avatar": "Immagine del profilo", "avatar": "Immagine del profilo",
"back": "Indietro", "back": "Indietro",
"cancel": "Annulla", "cancel": "Annulla",
@@ -9,6 +14,7 @@
"collapse": "Comprimi", "collapse": "Comprimi",
"collapse.all": "Comprimi tutto", "collapse.all": "Comprimi tutto",
"copy": "Copia", "copy": "Copia",
"copy.all": "Copia tutto",
"create": "Crea", "create": "Crea",
"date": "Data", "date": "Data",
@@ -23,24 +29,28 @@
"days.tue": "Ma", "days.tue": "Ma",
"days.wed": "Me", "days.wed": "Me",
"debugging": "Debugging",
"delete": "Elimina", "delete": "Elimina",
"delete.all": "Elimina tutti", "delete.all": "Elimina tutti",
"dimensions": "Dimensioni",
"disabled": "Disabilitato",
"discard": "Abbandona",
"download": "Scarica",
"duplicate": "Duplica",
"edit": "Modifica",
"expand": "Espandi",
"expand.all": "Espandi tutto",
"dialog.files.empty": "Nessun file selezionabile", "dialog.files.empty": "Nessun file selezionabile",
"dialog.pages.empty": "Nessuna pagina selezionabile", "dialog.pages.empty": "Nessuna pagina selezionabile",
"dialog.users.empty": "Nessuno user selezionabile", "dialog.users.empty": "Nessuno user selezionabile",
"dimensions": "Dimensioni",
"disabled": "Disabilitato",
"discard": "Abbandona",
"download": "Scarica",
"duplicate": "Duplica",
"edit": "Modifica",
"email": "Email", "email": "Email",
"email.placeholder": "mail@esempio.com", "email.placeholder": "mail@esempio.com",
"environment": "Ambiente",
"error.access.code": "Codice non valido", "error.access.code": "Codice non valido",
"error.access.login": "Login Invalido", "error.access.login": "Login Invalido",
"error.access.panel": "Non ti è permesso accedere al pannello", "error.access.panel": "Non ti è permesso accedere al pannello",
@@ -67,7 +77,7 @@
"error.file.changeName.permission": "Non ti è permesso modificare il nome di \"{filename}\"", "error.file.changeName.permission": "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": "L'estensione \"{extension}\" non è consentita", "error.file.extension.forbidden": "L'estensione \"{extension}\" non è consentita",
"error.file.extension.invalid": "Invalid extension: {extension}", "error.file.extension.invalid": "Estensione non valida: {extension}",
"error.file.extension.missing": "Il file \"{filename}\" non ha estensione", "error.file.extension.missing": "Il file \"{filename}\" non ha estensione",
"error.file.maxheight": "L'immagine non dev'essere più alta di {height} pixel", "error.file.maxheight": "L'immagine non dev'essere più alta di {height} pixel",
"error.file.maxsize": "Il file è troppo pesante", "error.file.maxsize": "Il file è troppo pesante",
@@ -83,7 +93,7 @@
"error.file.notFound": "Il file non \u00e8 stato trovato", "error.file.notFound": "Il file non \u00e8 stato trovato",
"error.file.orientation": "L'imaggine dev'essere orientata in \"{orientation}\"", "error.file.orientation": "L'imaggine dev'essere orientata in \"{orientation}\"",
"error.file.type.forbidden": "Non ti è permesso caricare file {type}", "error.file.type.forbidden": "Non ti è permesso caricare file {type}",
"error.file.type.invalid": "Invalid file type: {type}", "error.file.type.invalid": "Tipo di file non valido: {type}",
"error.file.undefined": "Il file non \u00e8 stato trovato", "error.file.undefined": "Il file non \u00e8 stato trovato",
"error.form.incomplete": "Correggi tutti gli errori nel form...", "error.form.incomplete": "Correggi tutti gli errori nel form...",
@@ -92,14 +102,17 @@
"error.language.code": "Inserisci un codice valido per la lingua", "error.language.code": "Inserisci un codice valido per la lingua",
"error.language.duplicate": "La lingua esiste già", "error.language.duplicate": "La lingua esiste già",
"error.language.name": "Inserisci un nome valido per la lingua", "error.language.name": "Inserisci un nome valido per la lingua",
"error.language.notFound": "La lingua non è stata trovata",
"error.layout.validation.block": "There's an error in block {blockIndex} in layout {layoutIndex}", "error.layout.validation.block": "C'è un errore nel blocco {blockIndex} nel layout {layoutIndex}",
"error.layout.validation.settings": "There's an error in layout {index} settings", "error.layout.validation.settings": "C'è un errore nelle impostazioni del layout {index}",
"error.license.format": "Inserisci un codice di licenza valido", "error.license.format": "Inserisci un codice di licenza valido",
"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.offline": "Il pannello di controllo è attualmente offline",
"error.page.changeSlug.permission": "Non ti è permesso cambiare l'URL di \"{slug}\"", "error.page.changeSlug.permission": "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": "La pagina contiene errori e non può essere pubblicata",
"error.page.changeStatus.permission": "Lo stato di questa pagina non può essere cambiato", "error.page.changeStatus.permission": "Lo stato di questa pagina non può essere cambiato",
@@ -118,7 +131,7 @@
"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": "Inserisci un numero di ordinamento valido. I numeri non devono essere negativi", "error.page.num.invalid": "Inserisci un numero di ordinamento valido. I numeri non devono essere negativi",
"error.page.slug.invalid": "Please enter a valid URL appendix", "error.page.slug.invalid": "Per favore inserisci un suffisso valido per l'URL",
"error.page.slug.maxlength": "Lo \"slug\" dev'essere più corto di \"{length}\" caratteri", "error.page.slug.maxlength": "Lo \"slug\" dev'essere più corto di \"{length}\" caratteri",
"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",
@@ -163,8 +176,9 @@
"error.user.password.invalid": "Per favore inserisci una password valida. Le password devono essere lunghe almeno 8 caratteri", "error.user.password.invalid": "Per favore inserisci una password valida. Le password devono essere lunghe almeno 8 caratteri",
"error.user.password.notSame": "Le password non corrispondono", "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.password.wrong": "Wrong password", "error.user.password.wrong": "Password sbagliata",
"error.user.role.invalid": "Inserisci un ruolo valido", "error.user.role.invalid": "Inserisci un ruolo valido",
"error.user.undefined": "L'utente non è stato trovato",
"error.user.update.permission": "Non ti è permesso aggiornare l'utente \"{name}\"", "error.user.update.permission": "Non ti è permesso aggiornare l'utente \"{name}\"",
"error.validation.accepted": "Per favore conferma", "error.validation.accepted": "Per favore conferma",
@@ -208,6 +222,9 @@
"error.validation.time.between": "Inserisci un orario tra le {min} e le {max}", "error.validation.time.between": "Inserisci un orario tra le {min} e le {max}",
"error.validation.url": "Inserisci un URL valido", "error.validation.url": "Inserisci un URL valido",
"expand": "Espandi",
"expand.all": "Espandi tutto",
"field.required": "Il campo è obbligatorio", "field.required": "Il campo è obbligatorio",
"field.blocks.changeType": "Cambia tipo", "field.blocks.changeType": "Cambia tipo",
"field.blocks.code.name": "Codice", "field.blocks.code.name": "Codice",
@@ -218,6 +235,7 @@
"field.blocks.delete.confirm.selected": "Vuoi veramente eliminare i blocchi selezionati?", "field.blocks.delete.confirm.selected": "Vuoi veramente eliminare i blocchi selezionati?",
"field.blocks.empty": "Nessun blocco inserito", "field.blocks.empty": "Nessun blocco inserito",
"field.blocks.fieldsets.label": "Seleziona il tipo di blocco …", "field.blocks.fieldsets.label": "Seleziona il tipo di blocco …",
"field.blocks.fieldsets.paste": "Premi <kbd>{{ shortcut }}</kbd> per incollare/importare i blocchi dagli appunti",
"field.blocks.gallery.name": "Galleria", "field.blocks.gallery.name": "Galleria",
"field.blocks.gallery.images.empty": "Nessuna immagine inserita", "field.blocks.gallery.images.empty": "Nessuna immagine inserita",
"field.blocks.gallery.images.label": "Immagini", "field.blocks.gallery.images.label": "Immagini",
@@ -233,7 +251,8 @@
"field.blocks.image.name": "Immagine", "field.blocks.image.name": "Immagine",
"field.blocks.image.placeholder": "Seleziona un'immagine", "field.blocks.image.placeholder": "Seleziona un'immagine",
"field.blocks.image.ratio": "Rapporto", "field.blocks.image.ratio": "Rapporto",
"field.blocks.image.url": "Image URL", "field.blocks.image.url": "URL immagine",
"field.blocks.line.name": "Linea",
"field.blocks.list.name": "Lista", "field.blocks.list.name": "Lista",
"field.blocks.markdown.name": "Markdown", "field.blocks.markdown.name": "Markdown",
"field.blocks.markdown.label": "Testo", "field.blocks.markdown.label": "Testo",
@@ -263,7 +282,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.blueprint": "Questo file non ha ancora un \"blueprint\". Puoi impostarne uno in <strong>/site/blueprints/{template}.yml</strong>", "file.blueprint": "Questo file non ha ancora un blueprint. Puoi definire la sua configurazione in <strong>/site/blueprints/files/{blueprint}.yml</strong>",
"file.delete.confirm": "Sei sicuro di voler eliminare questo file?", "file.delete.confirm": "Sei sicuro di voler eliminare questo file?",
"file.sort": "Cambia posizione", "file.sort": "Cambia posizione",
@@ -272,6 +291,7 @@
"hide": "Nascondi", "hide": "Nascondi",
"hour": "Ora", "hour": "Ora",
"import": "Importa",
"insert": "Inserisci", "insert": "Inserisci",
"insert.after": "Inserisci dopo", "insert.after": "Inserisci dopo",
"insert.before": "Inserisci prima", "insert.before": "Inserisci prima",
@@ -337,9 +357,9 @@
"login.code.label.password-reset": "Codice per reimpostare la password", "login.code.label.password-reset": "Codice per reimpostare la password",
"login.code.placeholder.email": "000 000", "login.code.placeholder.email": "000 000",
"login.code.text.email": "Qualora il tuo indirizzo email fosse registrato, il codice richiesto è stato inviato tramite email.", "login.code.text.email": "Qualora il tuo indirizzo email fosse registrato, il codice richiesto è stato inviato tramite email.",
"login.email.login.body": "Ciao {user.nameOrEmail},\n\nHai recentemente richiesto un codice di accesso per il pannello Kirby.\nIl seguente codice sarà valido per {timeout} minuti:\n\n{code}\n\nSe non hai richiesto un codice di accesso, per favore ignora questa email o contatta il tuo amministratore se hai domande. \nPer motivi di sicurezza, per favore NON inoltrare questa email.", "login.email.login.body": "Ciao {user.nameOrEmail},\n\nHai recentemente richiesto un codice di login per il pannello di controllo di {site}.\nIl seguente codice di login sarà valido per {timeout} minuti:\n\n{code}\n\nSe non hai richiesto un codice di login, per favore ignora questa mail o contatta il tuo amministratore in caso di domande.\nPer sicurezza, per favore NON inoltrare questa email.",
"login.email.login.subject": "Il tuo codice di accesso", "login.email.login.subject": "Il tuo codice di accesso",
"login.email.password-reset.body": "Ciao {user.nameOrEmail},\n\nHai recentemente richiesto un codice per reimpostare la tua password per il pannello Kirby.\nIl seguente codice sarà valido per {timeout} minuti:\n\n{code}\n\nSe non hai richiesto questo codice, per favore ignora questa email o contatta il tuo amministratore se hai domande. \nPer motivi di sicurezza, per favore NON inoltrare questa email.", "login.email.password-reset.body": "Ciao {user.nameOrEmail},\n\nHai recentemente richiesto di resettare la password per il pannello di controllo di {site}.\nIl seguente codice di reset della password sarà valido per {timeout} minuti:\n\n{code}\n\nSe non hai richiesto di resettare la password per favore ignora questa email o contatta il tuo amministratore in caso di domande.\nPer sicurezza, per favore NON inoltrare questa email.",
"login.email.password-reset.subject": "Il tuo codice di reimpostazione della password", "login.email.password-reset.subject": "Il tuo codice di reimpostazione della password",
"login.remember": "Resta collegato", "login.remember": "Resta collegato",
"login.reset": "Reimposta la password", "login.reset": "Reimposta la password",
@@ -376,7 +396,7 @@
"off": "off", "off": "off",
"on": "on", "on": "on",
"open": "Apri", "open": "Apri",
"open.newWindow": "Open in new window", "open.newWindow": "Apri in una finestra nuova",
"options": "Opzioni", "options": "Opzioni",
"options.none": "Nessuna opzione", "options.none": "Nessuna opzione",
@@ -385,7 +405,7 @@
"orientation.portrait": "Verticale", "orientation.portrait": "Verticale",
"orientation.square": "Quadrato", "orientation.square": "Quadrato",
"page.blueprint": "Questa pagina non ha ancora un \"blueprint\". Puoi impostarne uno in <strong>/site/blueprints/{template}.yml</strong>", "page.blueprint": "Questa pagina non ha ancora un blueprint. Puoi definire la sua configurazione in <strong>/site/blueprints/pages/{blueprint}.yml</strong>",
"page.changeSlug": "Modifica URL", "page.changeSlug": "Modifica URL",
"page.changeSlug.fromTitle": "Crea in base al titolo", "page.changeSlug.fromTitle": "Crea in base al titolo",
"page.changeStatus": "Cambia stato", "page.changeStatus": "Cambia stato",
@@ -417,7 +437,10 @@
"pagination.page": "Pagina", "pagination.page": "Pagina",
"password": "Password", "password": "Password",
"paste": "Incolla",
"paste.after": "Incolla dopo",
"pixel": "Pixel", "pixel": "Pixel",
"plugins": "Plugins",
"prev": "Precedente", "prev": "Precedente",
"preview": "Anteprima", "preview": "Anteprima",
"remove": "Rimuovi", "remove": "Rimuovi",
@@ -454,6 +477,8 @@
"template": "Template", "template": "Template",
"today": "Oggi", "today": "Oggi",
"server": "Server",
"site.blueprint": "Il sito non ha ancora un \"blueprint\". Puoi impostarne uno in <strong>/site/blueprints/site.yml</strong>", "site.blueprint": "Il sito non ha ancora un \"blueprint\". Puoi impostarne uno in <strong>/site/blueprints/site.yml</strong>",
"toolbar.button.code": "Codice", "toolbar.button.code": "Codice",
@@ -463,14 +488,18 @@
"toolbar.button.heading.1": "Titolo 1", "toolbar.button.heading.1": "Titolo 1",
"toolbar.button.heading.2": "Titolo 2", "toolbar.button.heading.2": "Titolo 2",
"toolbar.button.heading.3": "Titolo 3", "toolbar.button.heading.3": "Titolo 3",
"toolbar.button.heading.4": "Titolo 4",
"toolbar.button.heading.5": "Titolo 5",
"toolbar.button.heading.6": "Titolo 6",
"toolbar.button.italic": "Corsivo", "toolbar.button.italic": "Corsivo",
"toolbar.button.file": "File", "toolbar.button.file": "File",
"toolbar.button.file.select": "Seleziona un file", "toolbar.button.file.select": "Seleziona un file",
"toolbar.button.file.upload": "Carica un file", "toolbar.button.file.upload": "Carica un file",
"toolbar.button.link": "Link", "toolbar.button.link": "Link",
"toolbar.button.strike": "Strike-through", "toolbar.button.paragraph": "Paragrafo",
"toolbar.button.strike": "Barrato",
"toolbar.button.ol": "Elenco numerato", "toolbar.button.ol": "Elenco numerato",
"toolbar.button.underline": "Underline", "toolbar.button.underline": "Sottolinea",
"toolbar.button.ul": "Elenco puntato", "toolbar.button.ul": "Elenco puntato",
"translation.author": "Kirby Team, Roman Steiner, Manu Moreale", "translation.author": "Kirby Team, Roman Steiner, Manu Moreale",
@@ -497,7 +526,7 @@
"url.placeholder": "https://esempio.com", "url.placeholder": "https://esempio.com",
"user": "Utente", "user": "Utente",
"user.blueprint": "Puoi definire sezioni e campi del form aggiuntivi per questo ruolo in <strong>/site/blueprints/users/{role}.yml</strong>", "user.blueprint": "Puoi definire ulteriori sezioni e campi del form aggiuntivi per questo ruolo in <strong>/site/blueprints/users/{blueprint}.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",
@@ -516,12 +545,13 @@
"view.account": "Il tuo account", "view.account": "Il tuo account",
"view.installation": "Installazione", "view.installation": "Installazione",
"view.languages": "Lingue",
"view.resetPassword": "Reimposta la password", "view.resetPassword": "Reimposta la password",
"view.settings": "Impostazioni",
"view.site": "Sito", "view.site": "Sito",
"view.system": "Sistema",
"view.users": "Utenti", "view.users": "Utenti",
"welcome": "Benvenuto", "welcome": "Benvenuto",
"year": "Anno", "year": "Anno",
"yes": "yes" "yes": "sì"
} }

View File

@@ -1,6 +1,11 @@
{ {
"account.changeName": "이름 변경",
"account.delete": "계정 삭제",
"account.delete.confirm": "계정을 삭제할까요? 계정을 삭제한 뒤에는 복구할 수 없습니다.",
"add": "\ucd94\uac00", "add": "\ucd94\uac00",
"avatar": "\ud504\ub85c\ud544 \uc774\ubbf8\uc9c0", "author": "저자",
"avatar": "프로필 이미지",
"back": "복귀", "back": "복귀",
"cancel": "\ucde8\uc18c", "cancel": "\ucde8\uc18c",
"change": "\ubcc0\uacbd", "change": "\ubcc0\uacbd",
@@ -9,6 +14,7 @@
"collapse": "접기", "collapse": "접기",
"collapse.all": "모두 접기", "collapse.all": "모두 접기",
"copy": "복사", "copy": "복사",
"copy.all": "모두 복사",
"create": "등록", "create": "등록",
"date": "날짜", "date": "날짜",
@@ -23,24 +29,28 @@
"days.tue": "\ud654", "days.tue": "\ud654",
"days.wed": "\uc218", "days.wed": "\uc218",
"debugging": "디버깅",
"delete": "\uc0ad\uc81c", "delete": "\uc0ad\uc81c",
"delete.all": "모두 삭제", "delete.all": "모두 삭제",
"dimensions": "크기",
"disabled": "비활성화",
"discard": "무시",
"download": "다운로드",
"duplicate": "복제",
"edit": "\ud3b8\uc9d1",
"expand": "열기",
"expand.all": "모두 열기",
"dialog.files.empty": "선택한 파일이 없습니다.", "dialog.files.empty": "선택한 파일이 없습니다.",
"dialog.pages.empty": "선택한 페이지가 없습니다.", "dialog.pages.empty": "선택한 페이지가 없습니다.",
"dialog.users.empty": "선택한 사용자가 없습니다.", "dialog.users.empty": "선택한 사용자가 없습니다.",
"dimensions": "크기",
"disabled": "비활성화",
"discard": "무시",
"download": "다운로드",
"duplicate": "복제",
"edit": "\ud3b8\uc9d1",
"email": "\uc774\uba54\uc77c \uc8fc\uc18c", "email": "\uc774\uba54\uc77c \uc8fc\uc18c",
"email.placeholder": "mail@example.com", "email.placeholder": "mail@example.com",
"environment": "환경",
"error.access.code": "코드가 올바르지 않습니다.", "error.access.code": "코드가 올바르지 않습니다.",
"error.access.login": "로그인할 수 없습니다.", "error.access.login": "로그인할 수 없습니다.",
"error.access.panel": "패널에 접근할 권한이 없습니다.", "error.access.panel": "패널에 접근할 권한이 없습니다.",
@@ -76,7 +86,7 @@
"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": "파일({filename})의 MIME 형식을 확인할 수 없습니다.", "error.file.mime.missing": "파일({filename})의 MIME 형식을 확인할 수 없습니다.",
"error.file.minheight": "{height}픽셀 이상으로 이미지의 높이를 설정하세요.", "error.file.minheight": "이미지의 높이를 {height}픽셀 이상으로 설정하세요.",
"error.file.minsize": "파일이 너무 작습니다.", "error.file.minsize": "파일이 너무 작습니다.",
"error.file.minwidth": "이미지의 너비를 {width}픽셀 이상으로 설정하세요.", "error.file.minwidth": "이미지의 너비를 {width}픽셀 이상으로 설정하세요.",
"error.file.name.missing": "파일명을 입력하세요.", "error.file.name.missing": "파일명을 입력하세요.",
@@ -92,6 +102,7 @@
"error.language.code": "올바른 언어 코드를 입력하세요.", "error.language.code": "올바른 언어 코드를 입력하세요.",
"error.language.duplicate": "이미 등록한 언어입니다.", "error.language.duplicate": "이미 등록한 언어입니다.",
"error.language.name": "올바른 언어명을 입력하세요.", "error.language.name": "올바른 언어명을 입력하세요.",
"error.language.notFound": "언어를 찾을 수 없습니다.",
"error.layout.validation.block": "레이아웃({layoutIndex})의 블록({blockIndex})을 확인하세요.", "error.layout.validation.block": "레이아웃({layoutIndex})의 블록({blockIndex})을 확인하세요.",
"error.layout.validation.settings": "레이아웃({index})의 옵션을 확인하세요.", "error.layout.validation.settings": "레이아웃({index})의 옵션을 확인하세요.",
@@ -100,6 +111,8 @@
"error.license.email": "올바른 이메일 주소를 입력하세요.", "error.license.email": "올바른 이메일 주소를 입력하세요.",
"error.license.verification": "라이선스 키가 올바르지 않습니다.", "error.license.verification": "라이선스 키가 올바르지 않습니다.",
"error.offline": "패널이 오프라인 상태입니다.",
"error.page.changeSlug.permission": "고유 주소({slug})를 변경할 권한이 없습니다.", "error.page.changeSlug.permission": "고유 주소({slug})를 변경할 권한이 없습니다.",
"error.page.changeStatus.incomplete": "페이지를 공개할 수 없습니다.", "error.page.changeStatus.incomplete": "페이지를 공개할 수 없습니다.",
"error.page.changeStatus.permission": "페이지의 상태를 변경할 수 없습니다.", "error.page.changeStatus.permission": "페이지의 상태를 변경할 수 없습니다.",
@@ -119,7 +132,7 @@
"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.slug.maxlength": "{length}자 이하로 고유 주소를 입력하세요.", "error.page.slug.maxlength": "고유 주소를 {length}자 이하로 입력하세요.",
"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.",
@@ -165,6 +178,7 @@
"error.user.password.undefined": "암호가 설정되지 않았습니다.", "error.user.password.undefined": "암호가 설정되지 않았습니다.",
"error.user.password.wrong": "암호가 올바르지 않습니다.", "error.user.password.wrong": "암호가 올바르지 않습니다.",
"error.user.role.invalid": "올바른 역할을 지정하세요.", "error.user.role.invalid": "올바른 역할을 지정하세요.",
"error.user.undefined": "사용자가 없습니다.",
"error.user.update.permission": "사용자({name})의 정보를 변경할 권한이 없습니다.", "error.user.update.permission": "사용자({name})의 정보를 변경할 권한이 없습니다.",
"error.validation.accepted": "확인하세요.", "error.validation.accepted": "확인하세요.",
@@ -208,6 +222,9 @@
"error.validation.time.between": "{min}, {max} 사이의 시각을 입력하세요.", "error.validation.time.between": "{min}, {max} 사이의 시각을 입력하세요.",
"error.validation.url": "올바른 URL을 입력하세요.", "error.validation.url": "올바른 URL을 입력하세요.",
"expand": "열기",
"expand.all": "모두 열기",
"field.required": "필드를 채우세요.", "field.required": "필드를 채우세요.",
"field.blocks.changeType": "유형 변경", "field.blocks.changeType": "유형 변경",
"field.blocks.code.name": "코드", "field.blocks.code.name": "코드",
@@ -218,6 +235,7 @@
"field.blocks.delete.confirm.selected": "선택한 블록을 삭제할까요?", "field.blocks.delete.confirm.selected": "선택한 블록을 삭제할까요?",
"field.blocks.empty": "블록이 없습니다.", "field.blocks.empty": "블록이 없습니다.",
"field.blocks.fieldsets.label": "블록의 유형을 선택하세요.", "field.blocks.fieldsets.label": "블록의 유형을 선택하세요.",
"field.blocks.fieldsets.paste": "단축키(<kbd>{{ shortcut }}</kbd>)로 클립보드에서 블록을 가져올 수 있습니다.",
"field.blocks.gallery.name": "갤러리", "field.blocks.gallery.name": "갤러리",
"field.blocks.gallery.images.empty": "이미지가 없습니다.", "field.blocks.gallery.images.empty": "이미지가 없습니다.",
"field.blocks.gallery.images.label": "이미지", "field.blocks.gallery.images.label": "이미지",
@@ -234,6 +252,7 @@
"field.blocks.image.placeholder": "이미지 선택", "field.blocks.image.placeholder": "이미지 선택",
"field.blocks.image.ratio": "비율", "field.blocks.image.ratio": "비율",
"field.blocks.image.url": "이미지 URL", "field.blocks.image.url": "이미지 URL",
"field.blocks.line.name": "가로줄",
"field.blocks.list.name": "목록", "field.blocks.list.name": "목록",
"field.blocks.markdown.name": "마크다운", "field.blocks.markdown.name": "마크다운",
"field.blocks.markdown.label": "마크다운", "field.blocks.markdown.label": "마크다운",
@@ -263,7 +282,7 @@
"field.structure.empty": "항목이 없습니다.", "field.structure.empty": "항목이 없습니다.",
"field.users.empty": "선택한 사용자가 없습니다.", "field.users.empty": "선택한 사용자가 없습니다.",
"file.blueprint": "블루프린트(<strong>/site/blueprints/{template}.yml</strong>)를 설정하세요.", "file.blueprint": "블루프린트(<strong>/site/blueprints/files/{blueprint}.yml</strong>)를 설정하세요.",
"file.delete.confirm": "파일(<strong>{filename}</strong>)을 삭제할까요?", "file.delete.confirm": "파일(<strong>{filename}</strong>)을 삭제할까요?",
"file.sort": "순서 변경", "file.sort": "순서 변경",
@@ -272,6 +291,7 @@
"hide": "숨기기", "hide": "숨기기",
"hour": "시", "hour": "시",
"import": "가져오기",
"insert": "\uc0bd\uc785", "insert": "\uc0bd\uc785",
"insert.after": "뒤에 삽입", "insert.after": "뒤에 삽입",
"insert.before": "앞에 삽입", "insert.before": "앞에 삽입",
@@ -337,9 +357,9 @@
"login.code.label.password-reset": "암호 초기화 코드", "login.code.label.password-reset": "암호 초기화 코드",
"login.code.placeholder.email": "000 000", "login.code.placeholder.email": "000 000",
"login.code.text.email": "입력한 이메일 주소로 코드를 전송했습니다.", "login.code.text.email": "입력한 이메일 주소로 코드를 전송했습니다.",
"login.email.login.body": "{user.nameOrEmail} 님,\n\nKirby 패널에서 요청한 로그인 코드는 다음과 같습니다. 로그인 코드는 {timeout}분 동안 유효합니다.\n\n{code}\n\n로그인 코드를 요청한 적이 없다면, 이 이메일을 무시하거나 관리자에게 문의하세요. 보안을 위해 이 이메일은 다른 사람과 공유하지 마세요.", "login.email.login.body": "{user.nameOrEmail} 님,\n\n{site} 패널에서 요청한 로그인 코드는 다음과 같습니다. 로그인 코드는 {timeout}분 동안 유효합니다.\n\n{code}\n\n로그인 코드를 요청한 적이 없다면, 이 이메일을 무시하거나 관리자에게 문의하세요. 보안을 위해 이 이메일은 다른 사람과 공유하지 마세요.",
"login.email.login.subject": "로그인 코드", "login.email.login.subject": "로그인 코드",
"login.email.password-reset.body": "{user.nameOrEmail} 님,\n\nKirby 패널에서 요청한 로그인 코드는 다음과 같습니다. 로그인 코드는 {timeout}분 동안 유효합니다.\n\n{code}\n\n로그인 코드를 요청한 적이 없다면, 이 이메일을 무시하거나 관리자에게 문의하세요. 보안을 위해 이 이메일은 다른 사람과 공유하지 마세요.", "login.email.password-reset.body": "{user.nameOrEmail} 님,\n\n{site} 패널에서 요청한 암호 초기화 코드는 다음과 같습니다. 암호 초기화 코드는 {timeout}분 동안 유효합니다.\n\n{code}\n\n암호 초기화 코드를 요청한 적이 없다면, 이 이메일을 무시하거나 관리자에게 문의하세요. 보안을 위해 이 이메일은 다른 사람과 공유하지 마세요.",
"login.email.password-reset.subject": "암호 초기화 코드", "login.email.password-reset.subject": "암호 초기화 코드",
"login.remember": "로그인 유지", "login.remember": "로그인 유지",
"login.reset": "암호 초기화", "login.reset": "암호 초기화",
@@ -372,11 +392,11 @@
"more": "더 보기", "more": "더 보기",
"name": "이름", "name": "이름",
"next": "다음", "next": "다음",
"no": "no", "no": "",
"off": "끔", "off": "끔",
"on": "켬", "on": "켬",
"open": "열기", "open": "열기",
"open.newWindow": "Open in new window", "open.newWindow": "새 창에서 열기",
"options": "옵션", "options": "옵션",
"options.none": "옵션이 없습니다.", "options.none": "옵션이 없습니다.",
@@ -385,7 +405,7 @@
"orientation.portrait": "세로로 긴 사각형", "orientation.portrait": "세로로 긴 사각형",
"orientation.square": "정사각형", "orientation.square": "정사각형",
"page.blueprint": "블루프린트(<strong>/site/blueprints/{template}.yml</strong>)를 설정하세요.", "page.blueprint": "블루프린트(<strong>/site/blueprints/pages/{blueprint}.yml</strong>)를 설정하세요.",
"page.changeSlug": "고유 주소 변경", "page.changeSlug": "고유 주소 변경",
"page.changeSlug.fromTitle": "제목에서 가져오기", "page.changeSlug.fromTitle": "제목에서 가져오기",
"page.changeStatus": "상태 변경", "page.changeStatus": "상태 변경",
@@ -417,7 +437,10 @@
"pagination.page": "페이지", "pagination.page": "페이지",
"password": "\uc554\ud638", "password": "\uc554\ud638",
"paste": "붙여넣기",
"paste.after": "뒤로 붙여넣기",
"pixel": "픽셀", "pixel": "픽셀",
"plugins": "플러그인",
"prev": "이전", "prev": "이전",
"preview": "미리 보기", "preview": "미리 보기",
"remove": "삭제", "remove": "삭제",
@@ -454,6 +477,8 @@
"template": "\ud15c\ud50c\ub9bf", "template": "\ud15c\ud50c\ub9bf",
"today": "오늘", "today": "오늘",
"server": "서버",
"site.blueprint": "블루프린트(<strong>/site/blueprints/site.yml</strong>)를 설정하세요.", "site.blueprint": "블루프린트(<strong>/site/blueprints/site.yml</strong>)를 설정하세요.",
"toolbar.button.code": "코드", "toolbar.button.code": "코드",
@@ -463,18 +488,22 @@
"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.heading.4": "제목 4",
"toolbar.button.heading.5": "제목 5",
"toolbar.button.heading.6": "제목 6",
"toolbar.button.italic": "강조 2", "toolbar.button.italic": "강조 2",
"toolbar.button.file": "파일", "toolbar.button.file": "파일",
"toolbar.button.file.select": "파일 선택", "toolbar.button.file.select": "파일 선택",
"toolbar.button.file.upload": "파일 업로드", "toolbar.button.file.upload": "파일 업로드",
"toolbar.button.link": "링크", "toolbar.button.link": "링크",
"toolbar.button.strike": "Strike-through", "toolbar.button.paragraph": "문단",
"toolbar.button.strike": "취소선",
"toolbar.button.ol": "숫자 목록", "toolbar.button.ol": "숫자 목록",
"toolbar.button.underline": "Underline", "toolbar.button.underline": "밑줄",
"toolbar.button.ul": "기호 목록", "toolbar.button.ul": "기호 목록",
"translation.author": "Kirby 팀", "translation.author": "Kirby 팀",
"translation.direction": "LTR", "translation.direction": "왼쪽에서 오른쪽",
"translation.name": "한국어", "translation.name": "한국어",
"translation.locale": "ko_KR", "translation.locale": "ko_KR",
@@ -497,7 +526,7 @@
"url.placeholder": "https://example.com", "url.placeholder": "https://example.com",
"user": "사용자", "user": "사용자",
"user.blueprint": "블루프린트(<strong>/site/blueprints/users/{role}.yml</strong>)에 섹션과 필드를 추가할 수 있습니다.", "user.blueprint": "블루프린트(<strong>/site/blueprints/users/{blueprint}.yml</strong>)에 섹션과 필드를 추가할 수 있습니다.",
"user.changeEmail": "이메일 주소 변경", "user.changeEmail": "이메일 주소 변경",
"user.changeLanguage": "언어 변경", "user.changeLanguage": "언어 변경",
"user.changeName": "사용자명 변경", "user.changeName": "사용자명 변경",
@@ -516,12 +545,13 @@
"view.account": "계정", "view.account": "계정",
"view.installation": "\uc124\uce58", "view.installation": "\uc124\uce58",
"view.languages": "언어",
"view.resetPassword": "암호 초기화", "view.resetPassword": "암호 초기화",
"view.settings": "설정",
"view.site": "사이트", "view.site": "사이트",
"view.system": "시스템",
"view.users": "\uc0ac\uc6a9\uc790", "view.users": "\uc0ac\uc6a9\uc790",
"welcome": "반갑습니다.", "welcome": "반갑습니다.",
"year": "년", "year": "년",
"yes": "yes" "yes": "아니요"
} }

View File

@@ -1,5 +1,10 @@
{ {
"account.changeName": "Change your name",
"account.delete": "Delete your account",
"account.delete.confirm": "Do you really want to delete your account? You will be logged out immediately. Your account cannot be recovered.",
"add": "Pridėti", "add": "Pridėti",
"author": "Author",
"avatar": "Profilio nuotrauka", "avatar": "Profilio nuotrauka",
"back": "Atgal", "back": "Atgal",
"cancel": "Atšaukti", "cancel": "Atšaukti",
@@ -9,6 +14,7 @@
"collapse": "Sutraukti", "collapse": "Sutraukti",
"collapse.all": "Sutraukti viską", "collapse.all": "Sutraukti viską",
"copy": "Kopijuoti", "copy": "Kopijuoti",
"copy.all": "Kopijuoti visus",
"create": "Sukurti", "create": "Sukurti",
"date": "Data", "date": "Data",
@@ -23,24 +29,28 @@
"days.tue": "Ant", "days.tue": "Ant",
"days.wed": "Tre", "days.wed": "Tre",
"debugging": "Debugging",
"delete": "Pašalinti", "delete": "Pašalinti",
"delete.all": "Pašalinti viską", "delete.all": "Pašalinti viską",
"dimensions": "Išmatavimai",
"disabled": "Išjungta",
"discard": "Atšaukti",
"download": "Parsisiųsti",
"duplicate": "Kopijuoti",
"edit": "Redaguoti",
"expand": "Išskleisti",
"expand.all": "Išskleisti viską",
"dialog.files.empty": "Nėra failų pasirinkimui", "dialog.files.empty": "Nėra failų pasirinkimui",
"dialog.pages.empty": "Nėra puslapių pasirinkimui", "dialog.pages.empty": "Nėra puslapių pasirinkimui",
"dialog.users.empty": "Nėra vartotojų pasirinkimui", "dialog.users.empty": "Nėra vartotojų pasirinkimui",
"dimensions": "Išmatavimai",
"disabled": "Išjungta",
"discard": "Atšaukti",
"download": "Parsisiųsti",
"duplicate": "Dublikuoti",
"edit": "Redaguoti",
"email": "El. paštas", "email": "El. paštas",
"email.placeholder": "mail@example.com", "email.placeholder": "mail@example.com",
"environment": "Environment",
"error.access.code": "Neteisinas kodas", "error.access.code": "Neteisinas kodas",
"error.access.login": "Neteisingas prisijungimo vardas", "error.access.login": "Neteisingas prisijungimo vardas",
"error.access.panel": "Neturite teisės prisijungti prie valdymo pulto", "error.access.panel": "Neturite teisės prisijungti prie valdymo pulto",
@@ -92,6 +102,7 @@
"error.language.code": "Prašome įrašyti teisingą kalbos kodą", "error.language.code": "Prašome įrašyti teisingą kalbos kodą",
"error.language.duplicate": "Tokia kalba jau yra", "error.language.duplicate": "Tokia kalba jau yra",
"error.language.name": "Prašome įrašyti teisingą kalbos pavadinimą", "error.language.name": "Prašome įrašyti teisingą kalbos pavadinimą",
"error.language.notFound": "Nepavyko rasti šios kalbos",
"error.layout.validation.block": "Yra klaida bloke {blockIndex} išdėstyme {layoutIndex}", "error.layout.validation.block": "Yra klaida bloke {blockIndex} išdėstyme {layoutIndex}",
"error.layout.validation.settings": "Yra klaida išdėstymo {index} nustatymuose", "error.layout.validation.settings": "Yra klaida išdėstymo {index} nustatymuose",
@@ -100,6 +111,8 @@
"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.offline": "The Panel is currently offline",
"error.page.changeSlug.permission": "Neturite teisės pakeisti \"{slug}\" URL", "error.page.changeSlug.permission": "Neturite teisės pakeisti \"{slug}\" URL",
"error.page.changeStatus.incomplete": "Puslapis turi klaidų ir negali būti paskelbtas", "error.page.changeStatus.incomplete": "Puslapis turi klaidų ir negali būti paskelbtas",
"error.page.changeStatus.permission": "Šiam puslapiui negalima pakeisti statuso", "error.page.changeStatus.permission": "Šiam puslapiui negalima pakeisti statuso",
@@ -118,7 +131,7 @@
"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": "Įrašykite teisingą eiliškumo numerį. Numeris negali būti neigiamas.", "error.page.num.invalid": "Įrašykite teisingą eiliškumo numerį. Numeris negali būti neigiamas.",
"error.page.slug.invalid": "Please enter a valid URL appendix", "error.page.slug.invalid": "Įrašykite teisingą URL priedą",
"error.page.slug.maxlength": "url adreso maksimalus simbolių kiekis: \"{length}\"", "error.page.slug.maxlength": "url adreso maksimalus simbolių kiekis: \"{length}\"",
"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ą",
@@ -163,8 +176,9 @@
"error.user.password.invalid": "Prašome įrašyti galiojantį slaptažodį. Slaptažodį turi sudaryti bent 8 simboliai.", "error.user.password.invalid": "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.password.wrong": "Wrong password", "error.user.password.wrong": "Neteisingas slaptažodis",
"error.user.role.invalid": "Įrašykite teisingą rolę", "error.user.role.invalid": "Įrašykite teisingą rolę",
"error.user.undefined": "Vartotojas nerastas",
"error.user.update.permission": "Neturite teisės keisti vartotojo \"{name}\"", "error.user.update.permission": "Neturite teisės keisti vartotojo \"{name}\"",
"error.validation.accepted": "Prašome patvirtinti", "error.validation.accepted": "Prašome patvirtinti",
@@ -208,6 +222,9 @@
"error.validation.time.between": "Įrašykite laiką tarp {min} ir {max}", "error.validation.time.between": "Įrašykite laiką tarp {min} ir {max}",
"error.validation.url": "Prašome įrašyti teisingą URL", "error.validation.url": "Prašome įrašyti teisingą URL",
"expand": "Išskleisti",
"expand.all": "Išskleisti viską",
"field.required": "Laukas privalomas", "field.required": "Laukas privalomas",
"field.blocks.changeType": "Pakeisti tipą", "field.blocks.changeType": "Pakeisti tipą",
"field.blocks.code.name": "Kodas", "field.blocks.code.name": "Kodas",
@@ -218,6 +235,7 @@
"field.blocks.delete.confirm.selected": "Ar tikrai norite pašalinti pasirinktus blokus?", "field.blocks.delete.confirm.selected": "Ar tikrai norite pašalinti pasirinktus blokus?",
"field.blocks.empty": "Dar nėra blokų", "field.blocks.empty": "Dar nėra blokų",
"field.blocks.fieldsets.label": "Pasirinkite bloko tipą ...", "field.blocks.fieldsets.label": "Pasirinkite bloko tipą ...",
"field.blocks.fieldsets.paste": "Spauskite <kbd>{{ shortcut }}</kbd> įterpti/importuoti nukopijuotus blokus",
"field.blocks.gallery.name": "Galerija", "field.blocks.gallery.name": "Galerija",
"field.blocks.gallery.images.empty": "Dar nėra nuotraukų", "field.blocks.gallery.images.empty": "Dar nėra nuotraukų",
"field.blocks.gallery.images.label": "Nuotraukos", "field.blocks.gallery.images.label": "Nuotraukos",
@@ -234,6 +252,7 @@
"field.blocks.image.placeholder": "Pasirinkite nuotrauką", "field.blocks.image.placeholder": "Pasirinkite nuotrauką",
"field.blocks.image.ratio": "Proporcijos", "field.blocks.image.ratio": "Proporcijos",
"field.blocks.image.url": "Nuotraukos URL", "field.blocks.image.url": "Nuotraukos URL",
"field.blocks.line.name": "Linija",
"field.blocks.list.name": "Sąrašas", "field.blocks.list.name": "Sąrašas",
"field.blocks.markdown.name": "Markdown", "field.blocks.markdown.name": "Markdown",
"field.blocks.markdown.label": "Tekstas", "field.blocks.markdown.label": "Tekstas",
@@ -263,7 +282,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.blueprint": "Šis failas dar neturi blueprint. Jūs galite nustatyti jį <strong>/site/blueprints/{template}.yml</strong>", "file.blueprint": "Šis failas dar neturi blueprint. Galite nustatyti jį per <strong>/site/blueprints/files/{blueprint}.yml</strong>",
"file.delete.confirm": "Ar tikrai norite pašalinti <br><strong>{filename}</strong>?", "file.delete.confirm": "Ar tikrai norite pašalinti <br><strong>{filename}</strong>?",
"file.sort": "Pakeisti poziciją", "file.sort": "Pakeisti poziciją",
@@ -272,6 +291,7 @@
"hide": "Paslėpti", "hide": "Paslėpti",
"hour": "Valanda", "hour": "Valanda",
"import": "Importuoti",
"insert": "Įterpti", "insert": "Įterpti",
"insert.after": "Įterpti po", "insert.after": "Įterpti po",
"insert.before": "Įterpti prieš", "insert.before": "Įterpti prieš",
@@ -337,9 +357,9 @@
"login.code.label.password-reset": "Slaptažodžio atstatymo kodas", "login.code.label.password-reset": "Slaptažodžio atstatymo kodas",
"login.code.placeholder.email": "000 000", "login.code.placeholder.email": "000 000",
"login.code.text.email": "Jei jūsų el. paštas yra užregistruotas, užklaistas kodas buvo išsiųstas el. paštu.", "login.code.text.email": "Jei jūsų el. paštas yra užregistruotas, užklaistas kodas buvo išsiųstas el. paštu.",
"login.email.login.body": "Sveiki, {user.nameOrEmail},\n\nJūs ką tik užklausėte prisijungimo kodą svetainės valdymui.\nŠis kodas galios {timeout} minučių:\n\n{code}\n\nJei neprašėte šio kodo, galite ignoruoti šį laišką arba kreiptis į administratorių dėl patikslinimo.\nDėl saugumo, prašome nepersiųsti šio laiško kitiems.", "login.email.login.body": "Sveiki, {user.nameOrEmail},\n\nNeseniai užklausėte prisijungimo kodo svetainėje {site}.\nŠis kodas galios {timeout} min.:\n\n{code}\n\nJei neprašėte šio kodo, tiesiog ignoruokite, arba susisiekite su administratoriumi.\nDėl saugumo, prašome NEPERSIŲSTI šio laiško.",
"login.email.login.subject": "Jūsų prisijungimo kodas", "login.email.login.subject": "Jūsų prisijungimo kodas",
"login.email.password-reset.body": "Sveiki, {user.nameOrEmail},\n\njūs ką tik užklausėte slaptažodžio atstatymo kodą svetainės valdymui .\nŠis kodas galios {timeout} minučių:\n\n{code}\n\nJei neprašėte šio kodo, galite ignoruoti šį laišką arba kreiptis į administratorių dėl patikslinimo.\nDėl saugumo, prašome nepersiųsti šio laiško kitiems.", "login.email.password-reset.body": "Sveiki, {user.nameOrEmail},\n\nNeseniai užklausėte naujo slaptažodžio kūrimo kodo svetainėje {site}.\nŠis kodas galios {timeout} min.:\n\n{code}\n\nJei neprašėte šio kodo, tiesiog ignoruokite, arba susisiekite su administratoriumi.\nDėl saugumo, prašome NEPERSIŲSTI šio laiško",
"login.email.password-reset.subject": "Jūsų slaptažodžio atstatymo kodas ", "login.email.password-reset.subject": "Jūsų slaptažodžio atstatymo kodas ",
"login.remember": "Likti prisijungus", "login.remember": "Likti prisijungus",
"login.reset": "Sukurti naują slaptažodį", "login.reset": "Sukurti naują slaptažodį",
@@ -372,11 +392,11 @@
"more": "Daugiau", "more": "Daugiau",
"name": "Pavadinimas", "name": "Pavadinimas",
"next": "Toliau", "next": "Toliau",
"no": "no", "no": "ne",
"off": "off", "off": "ne",
"on": "on", "on": "taip",
"open": "Atidaryti", "open": "Atidaryti",
"open.newWindow": "Open in new window", "open.newWindow": "Atidaryti naujame lange",
"options": "Pasirinkimai", "options": "Pasirinkimai",
"options.none": "Nėra pasirinkimų", "options.none": "Nėra pasirinkimų",
@@ -385,7 +405,7 @@
"orientation.portrait": "Portretas", "orientation.portrait": "Portretas",
"orientation.square": "Kvadratas", "orientation.square": "Kvadratas",
"page.blueprint": "Šis puslapis dar neturi blueprint. Jūs galite nustatyti <strong>/site/blueprints/{template}.yml</strong>", "page.blueprint": "Šis puslapis dar neturi blueprint. Galite nustatyti per <strong>/site/blueprints/pages/{blueprint}.yml</strong>",
"page.changeSlug": "Pakeisti URL", "page.changeSlug": "Pakeisti URL",
"page.changeSlug.fromTitle": "Sukurti URL pagal pavadinimą", "page.changeSlug.fromTitle": "Sukurti URL pagal pavadinimą",
"page.changeStatus": "Pakeisti statusą", "page.changeStatus": "Pakeisti statusą",
@@ -417,7 +437,10 @@
"pagination.page": "Puslapis", "pagination.page": "Puslapis",
"password": "Slaptažodis", "password": "Slaptažodis",
"paste": "Įterpti",
"paste.after": "Įterpti po",
"pixel": "Pikselis", "pixel": "Pikselis",
"plugins": "Plugins",
"prev": "Ankstesnis", "prev": "Ankstesnis",
"preview": "Peržiūra", "preview": "Peržiūra",
"remove": "Pašalinti", "remove": "Pašalinti",
@@ -454,6 +477,8 @@
"template": "Puslapio šablonas", "template": "Puslapio šablonas",
"today": "Šiandien", "today": "Šiandien",
"server": "Server",
"site.blueprint": "Svetainė neturi blueprint. Jūs galite nustatyti jį <strong>/site/blueprints/site.yml</strong>", "site.blueprint": "Svetainė neturi blueprint. Jūs galite nustatyti jį <strong>/site/blueprints/site.yml</strong>",
"toolbar.button.code": "Kodas", "toolbar.button.code": "Kodas",
@@ -463,14 +488,18 @@
"toolbar.button.heading.1": "Heading 1", "toolbar.button.heading.1": "Heading 1",
"toolbar.button.heading.2": "Heading 2", "toolbar.button.heading.2": "Heading 2",
"toolbar.button.heading.3": "Heading 3", "toolbar.button.heading.3": "Heading 3",
"toolbar.button.heading.4": "Antrašte 4",
"toolbar.button.heading.5": "Antrašte 5",
"toolbar.button.heading.6": "Antrašte 6",
"toolbar.button.italic": "Italic", "toolbar.button.italic": "Italic",
"toolbar.button.file": "Failas", "toolbar.button.file": "Failas",
"toolbar.button.file.select": "Pasirinkite failą", "toolbar.button.file.select": "Pasirinkite failą",
"toolbar.button.file.upload": "Įkelti failą", "toolbar.button.file.upload": "Įkelti failą",
"toolbar.button.link": "Nuoroda", "toolbar.button.link": "Nuoroda",
"toolbar.button.strike": "Strike-through", "toolbar.button.paragraph": "Paragrafas",
"toolbar.button.strike": "Perbraukimas",
"toolbar.button.ol": "Sąrašas su skaičiais", "toolbar.button.ol": "Sąrašas su skaičiais",
"toolbar.button.underline": "Underline", "toolbar.button.underline": "Pabraukimas",
"toolbar.button.ul": "Sąrašas su taškais", "toolbar.button.ul": "Sąrašas su taškais",
"translation.author": "Roman U", "translation.author": "Roman U",
@@ -497,7 +526,7 @@
"url.placeholder": "https://example.com", "url.placeholder": "https://example.com",
"user": "Vartotojas", "user": "Vartotojas",
"user.blueprint": "Galite nustatyti papildomas sekcijas ir formos laukelius šiai vartotojo rolei faile <strong>/site/blueprints/users/{role}.yml</strong>", "user.blueprint": "Galite nustatyti papildomas sekcijas ir formos laukelius šiam vartotojui per <strong>/site/blueprints/users/{blueprint}.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ą",
@@ -516,12 +545,13 @@
"view.account": "Jūsų paskyra", "view.account": "Jūsų paskyra",
"view.installation": "Installation", "view.installation": "Installation",
"view.languages": "Kalbos",
"view.resetPassword": "Sukurti naują slaptažodį", "view.resetPassword": "Sukurti naują slaptažodį",
"view.settings": "Nustatymai",
"view.site": "Svetainė", "view.site": "Svetainė",
"view.system": "System",
"view.users": "Vartotojai", "view.users": "Vartotojai",
"welcome": "Sveiki", "welcome": "Sveiki",
"year": "Metai", "year": "Metai",
"yes": "yes" "yes": "taip"
} }

View File

@@ -1,5 +1,10 @@
{ {
"account.changeName": "Change your name",
"account.delete": "Delete your account",
"account.delete.confirm": "Do you really want to delete your account? You will be logged out immediately. Your account cannot be recovered.",
"add": "Legg til", "add": "Legg til",
"author": "Author",
"avatar": "Profilbilde", "avatar": "Profilbilde",
"back": "Tilbake", "back": "Tilbake",
"cancel": "Avbryt", "cancel": "Avbryt",
@@ -9,6 +14,7 @@
"collapse": "Collapse", "collapse": "Collapse",
"collapse.all": "Collapse All", "collapse.all": "Collapse All",
"copy": "Kopier", "copy": "Kopier",
"copy.all": "Copy all",
"create": "Opprett", "create": "Opprett",
"date": "Dato", "date": "Dato",
@@ -23,24 +29,28 @@
"days.tue": "Tir", "days.tue": "Tir",
"days.wed": "Ons", "days.wed": "Ons",
"debugging": "Debugging",
"delete": "Slett", "delete": "Slett",
"delete.all": "Delete all", "delete.all": "Delete all",
"dimensions": "Dimensjoner",
"disabled": "Disabled",
"discard": "Forkast",
"download": "Download",
"duplicate": "Duplicate",
"edit": "Rediger",
"expand": "Expand",
"expand.all": "Expand All",
"dialog.files.empty": "No files to select", "dialog.files.empty": "No files to select",
"dialog.pages.empty": "No pages to select", "dialog.pages.empty": "No pages to select",
"dialog.users.empty": "No users to select", "dialog.users.empty": "No users to select",
"dimensions": "Dimensjoner",
"disabled": "Disabled",
"discard": "Forkast",
"download": "Download",
"duplicate": "Duplicate",
"edit": "Rediger",
"email": "Epost", "email": "Epost",
"email.placeholder": "epost@eksempel.no", "email.placeholder": "epost@eksempel.no",
"environment": "Environment",
"error.access.code": "Invalid code", "error.access.code": "Invalid code",
"error.access.login": "Ugyldig innlogging", "error.access.login": "Ugyldig innlogging",
"error.access.panel": "Du har ikke tilgang til panelet", "error.access.panel": "Du har ikke tilgang til panelet",
@@ -92,6 +102,7 @@
"error.language.code": "Please enter a valid code for the language", "error.language.code": "Please enter a valid code for the language",
"error.language.duplicate": "The language already exists", "error.language.duplicate": "The language already exists",
"error.language.name": "Please enter a valid name for the language", "error.language.name": "Please enter a valid name for the language",
"error.language.notFound": "The language could not be found",
"error.layout.validation.block": "There's an error in block {blockIndex} in layout {layoutIndex}", "error.layout.validation.block": "There's an error in block {blockIndex} in layout {layoutIndex}",
"error.layout.validation.settings": "There's an error in layout {index} settings", "error.layout.validation.settings": "There's an error in layout {index} settings",
@@ -100,6 +111,8 @@
"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.offline": "The Panel is currently offline",
"error.page.changeSlug.permission": "Du kan ikke endre URLen for denne siden", "error.page.changeSlug.permission": "Du kan ikke endre URLen for denne siden",
"error.page.changeStatus.incomplete": "Siden har feil og kan ikke publiseres", "error.page.changeStatus.incomplete": "Siden har feil og kan ikke publiseres",
"error.page.changeStatus.permission": "Sidens status kan ikke endres", "error.page.changeStatus.permission": "Sidens status kan ikke endres",
@@ -165,6 +178,7 @@
"error.user.password.undefined": "Brukeren har ikke et passord", "error.user.password.undefined": "Brukeren har ikke et passord",
"error.user.password.wrong": "Wrong password", "error.user.password.wrong": "Wrong password",
"error.user.role.invalid": "Vennligst skriv inn en gyldig rolle", "error.user.role.invalid": "Vennligst skriv inn en gyldig rolle",
"error.user.undefined": "Brukeren kunne ikke bli funnet",
"error.user.update.permission": "Du har ikke tillatelse til å oppdatere brukeren \"{name}\"", "error.user.update.permission": "Du har ikke tillatelse til å oppdatere brukeren \"{name}\"",
"error.validation.accepted": "Vennligst bekreft", "error.validation.accepted": "Vennligst bekreft",
@@ -208,6 +222,9 @@
"error.validation.time.between": "Please enter a time between {min} and {max}", "error.validation.time.between": "Please enter a time between {min} and {max}",
"error.validation.url": "Vennligst skriv inn en gyldig URL", "error.validation.url": "Vennligst skriv inn en gyldig URL",
"expand": "Expand",
"expand.all": "Expand All",
"field.required": "The field is required", "field.required": "The field is required",
"field.blocks.changeType": "Change type", "field.blocks.changeType": "Change type",
"field.blocks.code.name": "Kode", "field.blocks.code.name": "Kode",
@@ -218,6 +235,7 @@
"field.blocks.delete.confirm.selected": "Do you really want to delete the selected blocks?", "field.blocks.delete.confirm.selected": "Do you really want to delete the selected blocks?",
"field.blocks.empty": "No blocks yet", "field.blocks.empty": "No blocks yet",
"field.blocks.fieldsets.label": "Please select a block type …", "field.blocks.fieldsets.label": "Please select a block type …",
"field.blocks.fieldsets.paste": "Press <kbd>{{ shortcut }}</kbd> to paste/import blocks from your clipboard",
"field.blocks.gallery.name": "Gallery", "field.blocks.gallery.name": "Gallery",
"field.blocks.gallery.images.empty": "No images yet", "field.blocks.gallery.images.empty": "No images yet",
"field.blocks.gallery.images.label": "Images", "field.blocks.gallery.images.label": "Images",
@@ -234,6 +252,7 @@
"field.blocks.image.placeholder": "Select an image", "field.blocks.image.placeholder": "Select an image",
"field.blocks.image.ratio": "Ratio", "field.blocks.image.ratio": "Ratio",
"field.blocks.image.url": "Image URL", "field.blocks.image.url": "Image URL",
"field.blocks.line.name": "Line",
"field.blocks.list.name": "List", "field.blocks.list.name": "List",
"field.blocks.markdown.name": "Markdown", "field.blocks.markdown.name": "Markdown",
"field.blocks.markdown.label": "Text", "field.blocks.markdown.label": "Text",
@@ -263,7 +282,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.blueprint": "This file has no blueprint yet. You can define the setup in <strong>/site/blueprints/{template}.yml</strong>", "file.blueprint": "This file has no blueprint yet. You can define the setup in <strong>/site/blueprints/files/{blueprint}.yml</strong>",
"file.delete.confirm": "Vil du virkelig slette denne filen?", "file.delete.confirm": "Vil du virkelig slette denne filen?",
"file.sort": "Change position", "file.sort": "Change position",
@@ -272,6 +291,7 @@
"hide": "Hide", "hide": "Hide",
"hour": "Time", "hour": "Time",
"import": "Import",
"insert": "Sett Inn", "insert": "Sett Inn",
"insert.after": "Insert after", "insert.after": "Insert after",
"insert.before": "Insert before", "insert.before": "Insert before",
@@ -337,9 +357,9 @@
"login.code.label.password-reset": "Password reset code", "login.code.label.password-reset": "Password reset code",
"login.code.placeholder.email": "000 000", "login.code.placeholder.email": "000 000",
"login.code.text.email": "If your email address is registered, the requested code was sent via email.", "login.code.text.email": "If your email address is registered, the requested code was sent via email.",
"login.email.login.body": "Hi {user.nameOrEmail},\n\nYou recently requested a login code for the Kirby Panel.\nThe following login code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a login code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.", "login.email.login.body": "Hi {user.nameOrEmail},\n\nYou recently requested a login code for the Panel of {site}.\nThe following login code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a login code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.",
"login.email.login.subject": "Your login code", "login.email.login.subject": "Your login code",
"login.email.password-reset.body": "Hi {user.nameOrEmail},\n\nYou recently requested a password reset code for the Kirby Panel.\nThe following password reset code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a password reset code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.", "login.email.password-reset.body": "Hi {user.nameOrEmail},\n\nYou recently requested a password reset code for the Panel of {site}.\nThe following password reset code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a password reset code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.",
"login.email.password-reset.subject": "Your password reset code", "login.email.password-reset.subject": "Your password reset code",
"login.remember": "Hold meg innlogget", "login.remember": "Hold meg innlogget",
"login.reset": "Reset password", "login.reset": "Reset password",
@@ -385,7 +405,7 @@
"orientation.portrait": "Portrett", "orientation.portrait": "Portrett",
"orientation.square": "Kvadrat", "orientation.square": "Kvadrat",
"page.blueprint": "This page has no blueprint yet. You can define the setup in <strong>/site/blueprints/{template}.yml</strong>", "page.blueprint": "This page has no blueprint yet. You can define the setup in <strong>/site/blueprints/pages/{blueprint}.yml</strong>",
"page.changeSlug": "Endre URL", "page.changeSlug": "Endre URL",
"page.changeSlug.fromTitle": "Opprett fra tittel", "page.changeSlug.fromTitle": "Opprett fra tittel",
"page.changeStatus": "Endre status", "page.changeStatus": "Endre status",
@@ -417,7 +437,10 @@
"pagination.page": "Side", "pagination.page": "Side",
"password": "Passord", "password": "Passord",
"paste": "Paste",
"paste.after": "Paste after",
"pixel": "Piksel", "pixel": "Piksel",
"plugins": "Plugins",
"prev": "Forrige", "prev": "Forrige",
"preview": "Preview", "preview": "Preview",
"remove": "Fjern", "remove": "Fjern",
@@ -454,6 +477,8 @@
"template": "Mal", "template": "Mal",
"today": "I dag", "today": "I dag",
"server": "Server",
"site.blueprint": "The site has no blueprint yet. You can define the setup in <strong>/site/blueprints/site.yml</strong>", "site.blueprint": "The site has no blueprint yet. You can define the setup in <strong>/site/blueprints/site.yml</strong>",
"toolbar.button.code": "Kode", "toolbar.button.code": "Kode",
@@ -463,11 +488,15 @@
"toolbar.button.heading.1": "Overskrift 1", "toolbar.button.heading.1": "Overskrift 1",
"toolbar.button.heading.2": "Overskrift 2", "toolbar.button.heading.2": "Overskrift 2",
"toolbar.button.heading.3": "Overskrift 3", "toolbar.button.heading.3": "Overskrift 3",
"toolbar.button.heading.4": "Heading 4",
"toolbar.button.heading.5": "Heading 5",
"toolbar.button.heading.6": "Heading 6",
"toolbar.button.italic": "Kursiv tekst", "toolbar.button.italic": "Kursiv tekst",
"toolbar.button.file": "Fil", "toolbar.button.file": "Fil",
"toolbar.button.file.select": "Select a file", "toolbar.button.file.select": "Select a file",
"toolbar.button.file.upload": "Upload a file", "toolbar.button.file.upload": "Upload a file",
"toolbar.button.link": "Adresse", "toolbar.button.link": "Adresse",
"toolbar.button.paragraph": "Paragraph",
"toolbar.button.strike": "Strike-through", "toolbar.button.strike": "Strike-through",
"toolbar.button.ol": "Ordnet liste", "toolbar.button.ol": "Ordnet liste",
"toolbar.button.underline": "Underline", "toolbar.button.underline": "Underline",
@@ -497,7 +526,7 @@
"url.placeholder": "https://example.com", "url.placeholder": "https://example.com",
"user": "Bruker", "user": "Bruker",
"user.blueprint": "Du kan definere flere seksjoner og skjemafelter for denne brukerrollen i <strong>/site/blueprints/users/{role}.yml</strong>", "user.blueprint": "You can define additional sections and form fields for this user role in <strong>/site/blueprints/users/{blueprint}.yml</strong>",
"user.changeEmail": "Endre e-post", "user.changeEmail": "Endre e-post",
"user.changeLanguage": "Endre språk", "user.changeLanguage": "Endre språk",
"user.changeName": "Angi nytt navn for denne brukeren", "user.changeName": "Angi nytt navn for denne brukeren",
@@ -516,9 +545,10 @@
"view.account": "Din konto", "view.account": "Din konto",
"view.installation": "Installasjon", "view.installation": "Installasjon",
"view.languages": "Språk",
"view.resetPassword": "Reset password", "view.resetPassword": "Reset password",
"view.settings": "Innstillinger",
"view.site": "Side", "view.site": "Side",
"view.system": "System",
"view.users": "Brukere", "view.users": "Brukere",
"welcome": "Velkommen", "welcome": "Velkommen",

View File

@@ -1,5 +1,10 @@
{ {
"account.changeName": "Wijzig je naam",
"account.delete": "Verwijder je account",
"account.delete.confirm": "Wil je echt je account verwijderen? Je wordt direct uitgelogd. Uw account kan niet worden hersteld.",
"add": "Voeg toe", "add": "Voeg toe",
"author": "Auteur",
"avatar": "Avatar", "avatar": "Avatar",
"back": "Terug", "back": "Terug",
"cancel": "Annuleren", "cancel": "Annuleren",
@@ -9,6 +14,7 @@
"collapse": "Sluit", "collapse": "Sluit",
"collapse.all": "Sluit alles", "collapse.all": "Sluit alles",
"copy": "Kopiëren", "copy": "Kopiëren",
"copy.all": "Kopieer alles",
"create": "Aanmaken", "create": "Aanmaken",
"date": "Datum", "date": "Datum",
@@ -23,24 +29,28 @@
"days.tue": "Di", "days.tue": "Di",
"days.wed": "Wo", "days.wed": "Wo",
"debugging": "Foutopsporing",
"delete": "Verwijderen", "delete": "Verwijderen",
"delete.all": "Verwijder alles", "delete.all": "Verwijder alles",
"dimensions": "Dimensies",
"disabled": "Uitgeschakeld",
"discard": "Annuleren",
"download": "Download",
"duplicate": "Dupliceren",
"edit": "Wijzig",
"expand": "Open",
"expand.all": "Open alles",
"dialog.files.empty": "Geen bestanden om te selecteren", "dialog.files.empty": "Geen bestanden om te selecteren",
"dialog.pages.empty": "Geen pagina's om te selecteren", "dialog.pages.empty": "Geen pagina's om te selecteren",
"dialog.users.empty": "Geen gebruikers om te selecteren", "dialog.users.empty": "Geen gebruikers om te selecteren",
"dimensions": "Dimensies",
"disabled": "Uitgeschakeld",
"discard": "Annuleren",
"download": "Download",
"duplicate": "Dupliceren",
"edit": "Wijzig",
"email": "E-mailadres", "email": "E-mailadres",
"email.placeholder": "mail@voorbeeld.nl", "email.placeholder": "mail@voorbeeld.nl",
"environment": "Omgeving",
"error.access.code": "Ongeldige code", "error.access.code": "Ongeldige code",
"error.access.login": "Ongeldige login", "error.access.login": "Ongeldige login",
"error.access.panel": "Je hebt geen toegang tot het Panel", "error.access.panel": "Je hebt geen toegang tot het Panel",
@@ -92,6 +102,7 @@
"error.language.code": "Vul een geldige code voor deze taal in", "error.language.code": "Vul een geldige code voor deze taal in",
"error.language.duplicate": "De taal bestaat al", "error.language.duplicate": "De taal bestaat al",
"error.language.name": "Vul een geldige naam voor deze taal in", "error.language.name": "Vul een geldige naam voor deze taal in",
"error.language.notFound": "De taal kan niet worden gevonden",
"error.layout.validation.block": "Er is een fout gevonden in blok {blockIndex} in ontwerp {layoutIndex}", "error.layout.validation.block": "Er is een fout gevonden in blok {blockIndex} in ontwerp {layoutIndex}",
"error.layout.validation.settings": "Er is een fout gevonden in de instellingen van ontwerp {index} ", "error.layout.validation.settings": "Er is een fout gevonden in de instellingen van ontwerp {index} ",
@@ -100,6 +111,8 @@
"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.offline": "Het Panel is momenteel offline",
"error.page.changeSlug.permission": "Je kunt de URL van deze pagina niet wijzigen", "error.page.changeSlug.permission": "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": "Deze pagina bevat fouten en kan niet worden gepubliceerd",
"error.page.changeStatus.permission": "De status van deze pagina kan niet worden gewijzigd", "error.page.changeStatus.permission": "De status van deze pagina kan niet worden gewijzigd",
@@ -118,7 +131,7 @@
"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": "Vul een geldig sorteer-cijfer in. Het cijfer mag niet negatief zijn", "error.page.num.invalid": "Vul een geldig sorteer-cijfer in. Het cijfer mag niet negatief zijn",
"error.page.slug.invalid": "Please enter a valid URL appendix", "error.page.slug.invalid": "Vul een geldig URL-achtervoegsel in",
"error.page.slug.maxlength": "Slug lengte moet minder dan \"{length}\" tekens bevatten", "error.page.slug.maxlength": "Slug lengte moet minder dan \"{length}\" tekens bevatten",
"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",
@@ -163,8 +176,9 @@
"error.user.password.invalid": "Gelieve een geldig wachtwoord in te voeren. Wachtwoorden moeten minstens 8 karakters lang zijn.", "error.user.password.invalid": "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.password.wrong": "Wrong password", "error.user.password.wrong": "Fout 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.undefined": "De gebruiker kan niet worden gevonden",
"error.user.update.permission": "Je hebt geen rechten om gebruiker \"{name}\" te updaten", "error.user.update.permission": "Je hebt geen rechten om gebruiker \"{name}\" te updaten",
"error.validation.accepted": "Gelieve te bevestigen", "error.validation.accepted": "Gelieve te bevestigen",
@@ -208,6 +222,9 @@
"error.validation.time.between": "Voer een tijd in tussen {min} en {max}", "error.validation.time.between": "Voer een tijd in tussen {min} en {max}",
"error.validation.url": "Vul een geldige URL in", "error.validation.url": "Vul een geldige URL in",
"expand": "Open",
"expand.all": "Open alles",
"field.required": "Dit veld is verplicht", "field.required": "Dit veld is verplicht",
"field.blocks.changeType": "Wijzig type", "field.blocks.changeType": "Wijzig type",
"field.blocks.code.name": "Code", "field.blocks.code.name": "Code",
@@ -218,6 +235,7 @@
"field.blocks.delete.confirm.selected": "Wil je de geselecteerde blokken echt verwijderen?", "field.blocks.delete.confirm.selected": "Wil je de geselecteerde blokken echt verwijderen?",
"field.blocks.empty": "Nog geen blokken", "field.blocks.empty": "Nog geen blokken",
"field.blocks.fieldsets.label": "Selecteer een bloktype ...", "field.blocks.fieldsets.label": "Selecteer een bloktype ...",
"field.blocks.fieldsets.paste": "Druk op <kbd>{{ shortcut }}</kbd> om blokken van je klembord te plakken/importeren",
"field.blocks.gallery.name": "Galerij", "field.blocks.gallery.name": "Galerij",
"field.blocks.gallery.images.empty": "Nog geen afbeeldingen", "field.blocks.gallery.images.empty": "Nog geen afbeeldingen",
"field.blocks.gallery.images.label": "Afbeeldingen", "field.blocks.gallery.images.label": "Afbeeldingen",
@@ -234,6 +252,7 @@
"field.blocks.image.placeholder": "Selecteer een afbeelding", "field.blocks.image.placeholder": "Selecteer een afbeelding",
"field.blocks.image.ratio": "Verhouding", "field.blocks.image.ratio": "Verhouding",
"field.blocks.image.url": "Afbeeldings-URL", "field.blocks.image.url": "Afbeeldings-URL",
"field.blocks.line.name": "Lijn",
"field.blocks.list.name": "Lijst", "field.blocks.list.name": "Lijst",
"field.blocks.markdown.name": "Markdown", "field.blocks.markdown.name": "Markdown",
"field.blocks.markdown.label": "Tekst", "field.blocks.markdown.label": "Tekst",
@@ -263,7 +282,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.blueprint": "Dit bestand heeft nog geen ontwerp. Je kan het ontwerp hier plaatsen <strong>/site/blueprints/{template}.yml</strong>", "file.blueprint": "Dit bestand heeft nog geen blauwdruk. U kunt de instellingen definiëren in <strong>/site/blueprints/files/{blueprint}.yml</strong>",
"file.delete.confirm": "Wil je dit bestand <br><strong>{filename}</strong> verwijderen?", "file.delete.confirm": "Wil je dit bestand <br><strong>{filename}</strong> verwijderen?",
"file.sort": "Verander positie", "file.sort": "Verander positie",
@@ -272,6 +291,7 @@
"hide": "Verberg", "hide": "Verberg",
"hour": "Uur", "hour": "Uur",
"import": "Importeer",
"insert": "Toevoegen", "insert": "Toevoegen",
"insert.after": "Voeg toe na", "insert.after": "Voeg toe na",
"insert.before": "Voeg toe voor", "insert.before": "Voeg toe voor",
@@ -337,9 +357,9 @@
"login.code.label.password-reset": "Wachtwoord herstel code", "login.code.label.password-reset": "Wachtwoord herstel code",
"login.code.placeholder.email": "000 000", "login.code.placeholder.email": "000 000",
"login.code.text.email": "Als uw e-mailadres geregistreerd is, werd de gevraagde code per e-mail verzonden.", "login.code.text.email": "Als uw e-mailadres geregistreerd is, werd de gevraagde code per e-mail verzonden.",
"login.email.login.body": "Hallo {user.nameOrEmail},\n\nU heeft onlangs een inlogcode aangevraagd voor het Kirby Panel.\nDe volgende inlogcode is geldig voor {timeout} minuten:\n\n{code}\n\nIndien u geen inlogcode heeft aangevraagd, negeer dan alstublieft deze email of neem contact op met uw beheerder indien u vragen heeft.\nVoor de veiligheid, gelieve deze email NIET door te sturen.", "login.email.login.body": "Hallo {user.nameOrEmail},\n\nJe hebt onlangs een inlogcode aangevraagd voor het Panel van {site}.\nDe volgende inlogcode is {timeout} minuten geldig:\n\n{code}\n\nAls je geen inlogcode hebt aangevraagd, mag je deze mail negeren of neem je contact op met uw beheerder.\nOm veiligheidsredenen verzoeken wij deze e-mail NIET door te sturen.",
"login.email.login.subject": "Jouw log in code", "login.email.login.subject": "Jouw log in code",
"login.email.password-reset.body": "Hallo {user.nameOrEmail},\n\nU heeft onlangs een wachtwoord reset code aangevraagd voor het Kirby Panel.\nDe volgende wachtwoord reset code is geldig voor {timeout} minuten:\n\n{code}\n\nAls u geen wachtwoord reset code heeft aangevraagd, negeer deze e-mail dan alstublieft of neem contact op met uw beheerder als u vragen heeft.\nVoor de veiligheid, gelieve deze email NIET door te sturen.", "login.email.password-reset.body": "Hallo {user.nameOrEmail},\n\nJe hebt onlangs een paswoord herstel code aangevraagd voor het Panel van {site}.\nDe volgende paswoord herstel code is {timeout} minuten geldig:\n\n{code}\n\nAls je geen paswoord herstel code hebt aangevraagd, mag je deze mail negeren of neem je contact op met uw beheerder.\nOm veiligheidsredenen verzoeken wij deze e-mail NIET door te sturen.",
"login.email.password-reset.subject": "Jouw wachtwoord herstel code", "login.email.password-reset.subject": "Jouw wachtwoord herstel code",
"login.remember": "Houd mij ingelogd", "login.remember": "Houd mij ingelogd",
"login.reset": "Wachtwoord herstellen", "login.reset": "Wachtwoord herstellen",
@@ -372,11 +392,11 @@
"more": "Meer", "more": "Meer",
"name": "Naam", "name": "Naam",
"next": "Volgende", "next": "Volgende",
"no": "no", "no": "nee",
"off": "uit", "off": "uit",
"on": "aan", "on": "aan",
"open": "Open", "open": "Open",
"open.newWindow": "Open in new window", "open.newWindow": "Openen in een nieuw scherm",
"options": "Opties", "options": "Opties",
"options.none": "Geen opties beschikbaar", "options.none": "Geen opties beschikbaar",
@@ -385,7 +405,7 @@
"orientation.portrait": "Staand", "orientation.portrait": "Staand",
"orientation.square": "Vierkant", "orientation.square": "Vierkant",
"page.blueprint": "Deze pagina heeft nog geen ontwerp. Je kan het ontwerp hier plaatsten <strong>/site/blueprints/{template}.yml</strong>", "page.blueprint": "Deze pagina heeft nog geen blauwdruk. Je kan de instellingen definiëren in <strong>/site/blueprints/pages/{blueprint}.yml</strong>",
"page.changeSlug": "Verander URL", "page.changeSlug": "Verander URL",
"page.changeSlug.fromTitle": "Aanmaken op basis van titel", "page.changeSlug.fromTitle": "Aanmaken op basis van titel",
"page.changeStatus": "Wijzig status", "page.changeStatus": "Wijzig status",
@@ -417,7 +437,10 @@
"pagination.page": "Pagina", "pagination.page": "Pagina",
"password": "Wachtwoord", "password": "Wachtwoord",
"paste": "Plak",
"paste.after": "Plak achter",
"pixel": "Pixel", "pixel": "Pixel",
"plugins": "Plugins",
"prev": "Vorige", "prev": "Vorige",
"preview": "Voorbeeld", "preview": "Voorbeeld",
"remove": "Verwijder", "remove": "Verwijder",
@@ -454,6 +477,8 @@
"template": "Template", "template": "Template",
"today": "Vandaag", "today": "Vandaag",
"server": "Server",
"site.blueprint": "Deze website heeft nog geen ontwerp. Je kan het ontwerp hier plaatsen<strong>/site/blueprints/site.yml</strong>", "site.blueprint": "Deze website heeft nog geen ontwerp. Je kan het ontwerp hier plaatsen<strong>/site/blueprints/site.yml</strong>",
"toolbar.button.code": "Code", "toolbar.button.code": "Code",
@@ -463,14 +488,18 @@
"toolbar.button.heading.1": "Koptekst 1", "toolbar.button.heading.1": "Koptekst 1",
"toolbar.button.heading.2": "Koptekst 2", "toolbar.button.heading.2": "Koptekst 2",
"toolbar.button.heading.3": "Koptekst 3", "toolbar.button.heading.3": "Koptekst 3",
"toolbar.button.heading.4": "Hoofding 4",
"toolbar.button.heading.5": "Hoofding 5",
"toolbar.button.heading.6": "Hoofding 6",
"toolbar.button.italic": "Cursieve tekst", "toolbar.button.italic": "Cursieve tekst",
"toolbar.button.file": "Bestand", "toolbar.button.file": "Bestand",
"toolbar.button.file.select": "Selecteer een bestand", "toolbar.button.file.select": "Selecteer een bestand",
"toolbar.button.file.upload": "Upload bestand", "toolbar.button.file.upload": "Upload bestand",
"toolbar.button.link": "Link", "toolbar.button.link": "Link",
"toolbar.button.strike": "Strike-through", "toolbar.button.paragraph": "Paragraaf",
"toolbar.button.strike": "Doorstreept",
"toolbar.button.ol": "Genummerde lijst", "toolbar.button.ol": "Genummerde lijst",
"toolbar.button.underline": "Underline", "toolbar.button.underline": "Onderlijn",
"toolbar.button.ul": "Opsomming", "toolbar.button.ul": "Opsomming",
"translation.author": "Het team van Kirby", "translation.author": "Het team van Kirby",
@@ -497,7 +526,7 @@
"url.placeholder": "https://voorbeeld.nl", "url.placeholder": "https://voorbeeld.nl",
"user": "Gebruiker", "user": "Gebruiker",
"user.blueprint": "Je kunt extra zones en formuliervelden voor deze rol toevoegen in <strong>/site/blueprints/users/{role}.yml</strong>", "user.blueprint": "Je kan aanvullende secties en formuliervelden voor deze gebruikersrol definiëren in <strong>/site/blueprints/users/{blueprint}.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",
@@ -516,12 +545,13 @@
"view.account": "Jouw account", "view.account": "Jouw account",
"view.installation": "Installatie", "view.installation": "Installatie",
"view.languages": "Talen",
"view.resetPassword": "Wachtwoord herstellen", "view.resetPassword": "Wachtwoord herstellen",
"view.settings": "Opties",
"view.site": "Site", "view.site": "Site",
"view.system": "Systeem",
"view.users": "Gebruikers", "view.users": "Gebruikers",
"welcome": "Welkom", "welcome": "Welkom",
"year": "Jaar", "year": "Jaar",
"yes": "yes" "yes": "ja"
} }

View File

@@ -1,5 +1,10 @@
{ {
"account.changeName": "Change your name",
"account.delete": "Delete your account",
"account.delete.confirm": "Do you really want to delete your account? You will be logged out immediately. Your account cannot be recovered.",
"add": "Dodaj", "add": "Dodaj",
"author": "Author",
"avatar": "Zdj\u0119cie profilowe", "avatar": "Zdj\u0119cie profilowe",
"back": "Wróć", "back": "Wróć",
"cancel": "Anuluj", "cancel": "Anuluj",
@@ -9,6 +14,7 @@
"collapse": "Zwiń", "collapse": "Zwiń",
"collapse.all": "Zwiń wszystkie", "collapse.all": "Zwiń wszystkie",
"copy": "Kopiuj", "copy": "Kopiuj",
"copy.all": "Copy all",
"create": "Utwórz", "create": "Utwórz",
"date": "Data", "date": "Data",
@@ -23,24 +29,28 @@
"days.tue": "Wt", "days.tue": "Wt",
"days.wed": "\u015ar", "days.wed": "\u015ar",
"debugging": "Debugging",
"delete": "Usu\u0144", "delete": "Usu\u0144",
"delete.all": "Usuń wszystkie", "delete.all": "Usuń wszystkie",
"dimensions": "Wymiary",
"disabled": "Wyłączone",
"discard": "Odrzu\u0107",
"download": "Pobierz",
"duplicate": "Zduplikuj",
"edit": "Edytuj",
"expand": "Rozwiń",
"expand.all": "Rozwiń wszystkie",
"dialog.files.empty": "Brak plików do wyboru", "dialog.files.empty": "Brak plików do wyboru",
"dialog.pages.empty": "Brak stron do wyboru", "dialog.pages.empty": "Brak stron do wyboru",
"dialog.users.empty": "Brak użytkowników do wyboru", "dialog.users.empty": "Brak użytkowników do wyboru",
"dimensions": "Wymiary",
"disabled": "Wyłączone",
"discard": "Odrzu\u0107",
"download": "Pobierz",
"duplicate": "Zduplikuj",
"edit": "Edytuj",
"email": "Email", "email": "Email",
"email.placeholder": "mail@example.com", "email.placeholder": "mail@example.com",
"environment": "Environment",
"error.access.code": "Nieprawidłowy kod", "error.access.code": "Nieprawidłowy kod",
"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",
@@ -92,6 +102,7 @@
"error.language.code": "Wprowadź poprawny kod języka.", "error.language.code": "Wprowadź poprawny kod języka.",
"error.language.duplicate": "Język już istnieje.", "error.language.duplicate": "Język już istnieje.",
"error.language.name": "Wprowadź poprawną nazwę języka.", "error.language.name": "Wprowadź poprawną nazwę języka.",
"error.language.notFound": "The language could not be found",
"error.layout.validation.block": "W bloku {blockIndex} w układzie {layoutIndex} jest błąd", "error.layout.validation.block": "W bloku {blockIndex} w układzie {layoutIndex} jest błąd",
"error.layout.validation.settings": "W ustawieniach układu {index} jest błąd", "error.layout.validation.settings": "W ustawieniach układu {index} jest błąd",
@@ -100,6 +111,8 @@
"error.license.email": "Wprowadź poprawny adres email", "error.license.email": "Wprowadź poprawny adres email",
"error.license.verification": "Nie udało się zweryfikować licencji", "error.license.verification": "Nie udało się zweryfikować licencji",
"error.offline": "The Panel is currently offline",
"error.page.changeSlug.permission": "Nie możesz zmienić końcówki adresu URL w \"{slug}\"", "error.page.changeSlug.permission": "Nie możesz zmienić końcówki adresu URL w \"{slug}\"",
"error.page.changeStatus.incomplete": "Strona zawiera błędy i nie można jej opublikować", "error.page.changeStatus.incomplete": "Strona zawiera błędy i nie można jej opublikować",
"error.page.changeStatus.permission": "Status tej strony nie może zostać zmieniony", "error.page.changeStatus.permission": "Status tej strony nie może zostać zmieniony",
@@ -165,6 +178,7 @@
"error.user.password.undefined": "Użytkownik nie ma hasła", "error.user.password.undefined": "Użytkownik nie ma hasła",
"error.user.password.wrong": "Nieprawidłowe hasło", "error.user.password.wrong": "Nieprawidłowe hasło",
"error.user.role.invalid": "Wprowadź poprawną rolę", "error.user.role.invalid": "Wprowadź poprawną rolę",
"error.user.undefined": "Nie można znaleźć użytkownika",
"error.user.update.permission": "Nie masz uprawnień, by zaktualizować użytkownika \"{name}\"", "error.user.update.permission": "Nie masz uprawnień, by zaktualizować użytkownika \"{name}\"",
"error.validation.accepted": "Proszę potwierdzić", "error.validation.accepted": "Proszę potwierdzić",
@@ -208,6 +222,9 @@
"error.validation.time.between": "Wprowadź czas między {min} a {max}", "error.validation.time.between": "Wprowadź czas między {min} a {max}",
"error.validation.url": "Wprowadź poprawny adres URL", "error.validation.url": "Wprowadź poprawny adres URL",
"expand": "Rozwiń",
"expand.all": "Rozwiń wszystkie",
"field.required": "Pole jest wymagane", "field.required": "Pole jest wymagane",
"field.blocks.changeType": "Zmień typ", "field.blocks.changeType": "Zmień typ",
"field.blocks.code.name": "Kod", "field.blocks.code.name": "Kod",
@@ -218,6 +235,7 @@
"field.blocks.delete.confirm.selected": "Czy na pewno chcesz usunąć wszystkie wybrane bloki?", "field.blocks.delete.confirm.selected": "Czy na pewno chcesz usunąć wszystkie wybrane bloki?",
"field.blocks.empty": "Nie ma jeszcze żadnych bloków", "field.blocks.empty": "Nie ma jeszcze żadnych bloków",
"field.blocks.fieldsets.label": "Wybierz typ bloku …", "field.blocks.fieldsets.label": "Wybierz typ bloku …",
"field.blocks.fieldsets.paste": "Press <kbd>{{ shortcut }}</kbd> to paste/import blocks from your clipboard",
"field.blocks.gallery.name": "Galeria", "field.blocks.gallery.name": "Galeria",
"field.blocks.gallery.images.empty": "Nie ma jeszcze żadnych obrazków", "field.blocks.gallery.images.empty": "Nie ma jeszcze żadnych obrazków",
"field.blocks.gallery.images.label": "Obrazki", "field.blocks.gallery.images.label": "Obrazki",
@@ -234,6 +252,7 @@
"field.blocks.image.placeholder": "Wybierz obrazek", "field.blocks.image.placeholder": "Wybierz obrazek",
"field.blocks.image.ratio": "Proporcje", "field.blocks.image.ratio": "Proporcje",
"field.blocks.image.url": "URL obrazka", "field.blocks.image.url": "URL obrazka",
"field.blocks.line.name": "Line",
"field.blocks.list.name": "Lista", "field.blocks.list.name": "Lista",
"field.blocks.markdown.name": "Markdown", "field.blocks.markdown.name": "Markdown",
"field.blocks.markdown.label": "Tekst", "field.blocks.markdown.label": "Tekst",
@@ -263,7 +282,7 @@
"field.structure.empty": "Nie ma jeszcze \u017cadnych wpis\u00f3w.", "field.structure.empty": "Nie ma jeszcze \u017cadnych wpis\u00f3w.",
"field.users.empty": "Nie wybrano jeszcze żadnych użytkowników", "field.users.empty": "Nie wybrano jeszcze żadnych użytkowników",
"file.blueprint": "Ten plik nie ma jeszcze wzorca. Możesz go zdefiniować w <strong>/site/blueprints/{template}.yml</strong>", "file.blueprint": "This file has no blueprint yet. You can define the setup in <strong>/site/blueprints/files/{blueprint}.yml</strong>",
"file.delete.confirm": "Czy na pewno chcesz usunąć <br><strong>{filename}</strong>?", "file.delete.confirm": "Czy na pewno chcesz usunąć <br><strong>{filename}</strong>?",
"file.sort": "Zmień pozycję", "file.sort": "Zmień pozycję",
@@ -272,6 +291,7 @@
"hide": "Ukryj", "hide": "Ukryj",
"hour": "Godzina", "hour": "Godzina",
"import": "Import",
"insert": "Wstaw", "insert": "Wstaw",
"insert.after": "Wstaw po", "insert.after": "Wstaw po",
"insert.before": "Wstaw przed", "insert.before": "Wstaw przed",
@@ -337,9 +357,9 @@
"login.code.label.password-reset": "Kod resetowania hasła", "login.code.label.password-reset": "Kod resetowania hasła",
"login.code.placeholder.email": "000 000", "login.code.placeholder.email": "000 000",
"login.code.text.email": "Jeśli Twój adres email jest zarejestrowany, żądany kod został wysłany na Twoją skrzynkę.", "login.code.text.email": "Jeśli Twój adres email jest zarejestrowany, żądany kod został wysłany na Twoją skrzynkę.",
"login.email.login.body": "Witaj {user.nameOrEmail},\n\nNiedawno poprosiłeś/-aś o kod logowania do panelu Kirby.\nPoniższy kod resetowania hasła będzie ważny przez {timeout} minut:\n\n{code}\n\nJeżeli nie zażądałeś/-aś kodu logowania, zignoruj tę wiadomość e-mail lub skontaktuj się z administratorem, jeśli masz pytania.\nZe względów bezpieczeństwa NIE przesyłaj dalej tego emaila. ", "login.email.login.body": "Hi {user.nameOrEmail},\n\nYou recently requested a login code for the Panel of {site}.\nThe following login code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a login code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.",
"login.email.login.subject": "Twój kod logowania się", "login.email.login.subject": "Twój kod logowania się",
"login.email.password-reset.body": "Witaj {user.nameOrEmail},\n\nNiedawno poprosiłeś/-aś o kod resetowania hasła do panelu Kirby.\nPoniższy kod resetowania hasła będzie ważny przez {timeout} minut:\n\n{code}\n\nJeżeli nie zażądałeś/-aś kodu resetowania hasła, zignoruj tę wiadomość email lub skontaktuj się z administratorem, jeśli masz pytania.\nZe względów bezpieczeństwa NIE przesyłaj dalej tego emaila.", "login.email.password-reset.body": "Hi {user.nameOrEmail},\n\nYou recently requested a password reset code for the Panel of {site}.\nThe following password reset code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a password reset code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.",
"login.email.password-reset.subject": "Twój kod resetujący hasło", "login.email.password-reset.subject": "Twój kod resetujący hasło",
"login.remember": "Nie wylogowuj mnie", "login.remember": "Nie wylogowuj mnie",
"login.reset": "Zresetuj hasło", "login.reset": "Zresetuj hasło",
@@ -385,7 +405,7 @@
"orientation.portrait": "Pionowa", "orientation.portrait": "Pionowa",
"orientation.square": "Kwadrat", "orientation.square": "Kwadrat",
"page.blueprint": "Ta strona nie ma jeszcze wzorca. Możesz go zdefiniować w <strong>/site/blueprints/{template}.yml</strong>", "page.blueprint": "This page has no blueprint yet. You can define the setup in <strong>/site/blueprints/pages/{blueprint}.yml</strong>",
"page.changeSlug": "Zmie\u0144 URL", "page.changeSlug": "Zmie\u0144 URL",
"page.changeSlug.fromTitle": "Utw\u00f3rz na podstawie tytu\u0142u", "page.changeSlug.fromTitle": "Utw\u00f3rz na podstawie tytu\u0142u",
"page.changeStatus": "Zmień status", "page.changeStatus": "Zmień status",
@@ -417,7 +437,10 @@
"pagination.page": "Strona", "pagination.page": "Strona",
"password": "Has\u0142o", "password": "Has\u0142o",
"paste": "Paste",
"paste.after": "Paste after",
"pixel": "Piksel", "pixel": "Piksel",
"plugins": "Plugins",
"prev": "Poprzednie", "prev": "Poprzednie",
"preview": "Podgląd", "preview": "Podgląd",
"remove": "Usuń", "remove": "Usuń",
@@ -454,6 +477,8 @@
"template": "Szablon", "template": "Szablon",
"today": "Dzisiaj", "today": "Dzisiaj",
"server": "Server",
"site.blueprint": "Ta strona nie ma jeszcze wzorca. Możesz go zdefiniować w <strong>/site/blueprints/site.yml</strong>", "site.blueprint": "Ta strona nie ma jeszcze wzorca. Możesz go zdefiniować w <strong>/site/blueprints/site.yml</strong>",
"toolbar.button.code": "Kod", "toolbar.button.code": "Kod",
@@ -463,11 +488,15 @@
"toolbar.button.heading.1": "Nagłówek 1", "toolbar.button.heading.1": "Nagłówek 1",
"toolbar.button.heading.2": "Nagłówek 2", "toolbar.button.heading.2": "Nagłówek 2",
"toolbar.button.heading.3": "Nagłówek 3", "toolbar.button.heading.3": "Nagłówek 3",
"toolbar.button.heading.4": "Heading 4",
"toolbar.button.heading.5": "Heading 5",
"toolbar.button.heading.6": "Heading 6",
"toolbar.button.italic": "Kursywa", "toolbar.button.italic": "Kursywa",
"toolbar.button.file": "Plik", "toolbar.button.file": "Plik",
"toolbar.button.file.select": "Wybierz plik", "toolbar.button.file.select": "Wybierz plik",
"toolbar.button.file.upload": "Prześlij plik", "toolbar.button.file.upload": "Prześlij plik",
"toolbar.button.link": "Link", "toolbar.button.link": "Link",
"toolbar.button.paragraph": "Paragraph",
"toolbar.button.strike": "Przekreślenie", "toolbar.button.strike": "Przekreślenie",
"toolbar.button.ol": "Lista numerowana", "toolbar.button.ol": "Lista numerowana",
"toolbar.button.underline": "Podkreślenie", "toolbar.button.underline": "Podkreślenie",
@@ -497,7 +526,7 @@
"url.placeholder": "https://example.com", "url.placeholder": "https://example.com",
"user": "Użytkownik", "user": "Użytkownik",
"user.blueprint": "Możesz zdefiniować dodatkowe sekcje i pola formularza dla tej roli użytkownika w <strong>/site/blueprints/users/{role}.yml</strong>", "user.blueprint": "You can define additional sections and form fields for this user role in <strong>/site/blueprints/users/{blueprint}.yml</strong>",
"user.changeEmail": "Zmień email", "user.changeEmail": "Zmień email",
"user.changeLanguage": "Zmień język", "user.changeLanguage": "Zmień język",
"user.changeName": "Zmień nazwę tego użytkownika", "user.changeName": "Zmień nazwę tego użytkownika",
@@ -516,9 +545,10 @@
"view.account": "Twoje konto", "view.account": "Twoje konto",
"view.installation": "Instalacja", "view.installation": "Instalacja",
"view.languages": "Języki",
"view.resetPassword": "Zresetuj hasło", "view.resetPassword": "Zresetuj hasło",
"view.settings": "Ustawienia",
"view.site": "Strona", "view.site": "Strona",
"view.system": "System",
"view.users": "U\u017cytkownicy", "view.users": "U\u017cytkownicy",
"welcome": "Witaj", "welcome": "Witaj",

View File

@@ -1,14 +1,20 @@
{ {
"account.changeName": "Mudar seu nome",
"account.delete": "Deletar sua conta",
"account.delete.confirm": "Deseja realmente deletar sua conta? Você sairá do site imediatamente. Sua conta não poderá ser recuperada. ",
"add": "Adicionar", "add": "Adicionar",
"author": "Autor",
"avatar": "Foto do perfil", "avatar": "Foto do perfil",
"back": "Voltar", "back": "Voltar",
"cancel": "Cancelar", "cancel": "Cancelar",
"change": "Alterar", "change": "Alterar",
"close": "Fechar", "close": "Fechar",
"confirm": "Salvar", "confirm": "Salvar",
"collapse": "Collapse", "collapse": "Colapsar",
"collapse.all": "Collapse All", "collapse.all": "Colapsar todos",
"copy": "Copiar", "copy": "Copiar",
"copy.all": "Copiar todos",
"create": "Criar", "create": "Criar",
"date": "Data", "date": "Data",
@@ -23,84 +29,91 @@
"days.tue": "Ter", "days.tue": "Ter",
"days.wed": "Qua", "days.wed": "Qua",
"delete": "Excluir", "debugging": "Depuração ",
"delete.all": "Delete all",
"dimensions": "Dimensões",
"disabled": "Disabled",
"discard": "Descartar",
"download": "Download",
"duplicate": "Duplicate",
"edit": "Editar",
"expand": "Expand",
"expand.all": "Expand All",
"dialog.files.empty": "No files to select", "delete": "Deletar",
"dialog.pages.empty": "No pages to select", "delete.all": "Deletar todos",
"dialog.users.empty": "No users to select",
"dialog.files.empty": "Nenhum arquivo para selecionar",
"dialog.pages.empty": "Nenhuma página para selecionar",
"dialog.users.empty": "Nenhum usuário para selecionar",
"dimensions": "Dimensões",
"disabled": "Desativado",
"discard": "Descartar",
"download": "Baixar",
"duplicate": "Duplicar",
"edit": "Editar",
"email": "Email", "email": "Email",
"email.placeholder": "mail@exemplo.com", "email.placeholder": "mail@exemplo.com",
"error.access.code": "Invalid code", "environment": "Ambiente",
"error.access.login": "Login inválido",
"error.access.code": "Código inválido",
"error.access.login": "Código de acesso inválido",
"error.access.panel": "Você não tem permissão para acessar o painel", "error.access.panel": "Você não tem permissão para acessar o painel",
"error.access.view": "You are not allowed to access this part of the panel", "error.access.view": "Você não tem permissão para acessar esta parte do painel",
"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 de perfil não pôde ser deletada",
"error.avatar.dimensions.invalid": "Por favor, use uma foto de perfil com largura e altura menores que 3000 pixels", "error.avatar.dimensions.invalid": "Por favor, use uma foto de perfil com largura e altura menores que 3000 pixels",
"error.avatar.mime.forbidden": "A foto de perfil deve ser um arquivo JPEG ou PNG", "error.avatar.mime.forbidden": "A foto de perfil deve ser um arquivo JPEG ou PNG",
"error.blueprint.notFound": "O blueprint \"{name}\" não pôde ser carregado", "error.blueprint.notFound": "A planta \"{name}\" não pôde ser carregada",
"error.blocks.max.plural": "You must not add more than {max} blocks", "error.blocks.max.plural": "Você não deve adicionar mais do que {max} blocos",
"error.blocks.max.singular": "You must not add more than one block", "error.blocks.max.singular": "Você não deve adicionar mais do que um bloco",
"error.blocks.min.plural": "You must add at least {min} blocks", "error.blocks.min.plural": "Você deve adicionar pelo menos {min} blocos",
"error.blocks.min.singular": "You must add at least one block", "error.blocks.min.singular": "Você deve adicionar pelo menos um bloco",
"error.blocks.validation": "There's an error in block {index}", "error.blocks.validation": "Há um erro no bloco {index}",
"error.email.preset.notFound": "Preset de email \"{name}\" não encontrado", "error.email.preset.notFound": "Pré-configuração de email \"{name}\" não foi encontrada",
"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 deve ficar em branco",
"error.file.changeName.permission": "Você não tem permissão para alterar o nome de \"{filename}\"", "error.file.changeName.permission": "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": "Extensão \"{extension}\" não permitida", "error.file.extension.forbidden": "Extensão \"{extension}\" não permitida",
"error.file.extension.invalid": "Invalid extension: {extension}", "error.file.extension.invalid": "Extensão inválida: {extension}",
"error.file.extension.missing": "Extensão de \"{filename}\" em falta", "error.file.extension.missing": "Extensão de \"{filename}\" em falta",
"error.file.maxheight": "The height of the image must not exceed {height} pixels", "error.file.maxheight": "A altura da imagem não pode exceder {height} pixels",
"error.file.maxsize": "The file is too large", "error.file.maxsize": "O arquivo é grande demais",
"error.file.maxwidth": "The width of the image must not exceed {width} pixels", "error.file.maxwidth": "A largura da imagem não pode exceder {width} pixels",
"error.file.mime.differs": "O arquivo enviado precisa ser do tipo \"{mime}\"", "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 mime inválido: {mime}",
"error.file.mime.missing": "Tipo de mídia de \"{filename}\" não detectado", "error.file.mime.missing": "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": "A altura da imagem deve ser pelo menos {height} pixels",
"error.file.minsize": "The file is too small", "error.file.minsize": "O arquivo é pequeno demais",
"error.file.minwidth": "The width of the image must be at least {width} pixels", "error.file.minwidth": "A largura da imagem deve ser pelo menos {width} pixels",
"error.file.name.missing": "O nome do arquivo não pode ficar em branco", "error.file.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": "Você não tem permissão para enviar arquivos {type}", "error.file.type.forbidden": "Você não tem permissão para enviar arquivos {type}",
"error.file.type.invalid": "Invalid file type: {type}", "error.file.type.invalid": "Tipo inválido de arquivo: {type}",
"error.file.undefined": "Arquivo n\u00e3o encontrado", "error.file.undefined": "Arquivo n\u00e3o encontrado",
"error.form.incomplete": "Por favor, corrija os erros do formulário…", "error.form.incomplete": "Por favor, corrija os erros do formulário…",
"error.form.notSaved": "O formulário não pôde ser salvo", "error.form.notSaved": "O formulário não pôde ser salvo",
"error.language.code": "Please enter a valid code for the language", "error.language.code": "Por favor entre um código válido para o idioma",
"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": "Por favor entre um nome válido para o idioma",
"error.language.notFound": "O idioma não foi encontrado",
"error.layout.validation.block": "There's an error in block {blockIndex} in layout {layoutIndex}", "error.layout.validation.block": "Há um erro no bloco {blockIndex} no layout {layoutIndex}",
"error.layout.validation.settings": "There's an error in layout {index} settings", "error.layout.validation.settings": "Há um erro na configuração do layout {index}",
"error.license.format": "Please enter a valid license key", "error.license.format": "Por favor entre uma chave de licensa 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": "A licensa não pôde ser verificada",
"error.page.changeSlug.permission": "Você não tem permissão para alterar a URL de \"{slug}\"", "error.offline": "O painel está offline no momento",
"error.page.changeSlug.permission": "Você não tem permissão para alterar o anexo de URL de \"{slug}\"",
"error.page.changeStatus.incomplete": "A página possui erros e não pode ser salva", "error.page.changeStatus.incomplete": "A página possui erros e não pode ser salva",
"error.page.changeStatus.permission": "O estado desta página não pode ser alterado", "error.page.changeStatus.permission": "O estado desta página não pode ser alterado",
"error.page.changeStatus.toDraft.invalid": "A página \"{slug}\" não pode ser convertida para rascunho", "error.page.changeStatus.toDraft.invalid": "A página \"{slug}\" não pode ser convertida para rascunho",
@@ -109,17 +122,17 @@
"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": "Você não tem permissão para alterar o título de \"{slug}\"", "error.page.changeTitle.permission": "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 deletada",
"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": "A página possui subpáginas e não pode ser excluída", "error.page.delete.hasChildren": "A página possui subpáginas e não pode ser deletada",
"error.page.delete.permission": "Você não tem permissão para excluir \"{slug}\"", "error.page.delete.permission": "Você não tem permissão para deletar \"{slug}\"",
"error.page.draft.duplicate": "Um rascunho de página com a URL \"{slug}\" já existe", "error.page.draft.duplicate": "Uma página rascunho com um anexo de URL \"{slug}\" já existe",
"error.page.duplicate": "Uma página com a URL \"{slug}\" já existe", "error.page.duplicate": "Uma página com o anexo de URL \"{slug}\" já existe",
"error.page.duplicate.permission": "You are not allowed to duplicate \"{slug}\"", "error.page.duplicate.permission": "Você não tem permissão para duplicar “{slug}",
"error.page.notFound": "Página\"{slug}\" não encontrada", "error.page.notFound": "Página \"{slug}\" não encontrada",
"error.page.num.invalid": "Digite um número de ordenação válido. Este número não pode ser negativo.", "error.page.num.invalid": "Digite um número de ordenação válido. Este número não pode ser negativo.",
"error.page.slug.invalid": "Please enter a valid URL appendix", "error.page.slug.invalid": "Por favor entre um anexo de URL válido ",
"error.page.slug.maxlength": "Slug length must be less than \"{length}\" characters", "error.page.slug.maxlength": "O slug deve ter menos de “{length} caracteres",
"error.page.sort.permission": "A página \"{slug}\" não pode ser ordenada", "error.page.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",
@@ -127,13 +140,13 @@
"error.section.files.max.plural": "Você não pode adicionar mais do que {max} arquivos à seção \"{section}\"", "error.section.files.max.plural": "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": "Você não pode adicionar mais do que um arquivo à seção \"{section}\"",
"error.section.files.min.plural": "The \"{section}\" section requires at least {min} files", "error.section.files.min.plural": "A seção “{section}” precisa ter pelo menos {min} arquivos",
"error.section.files.min.singular": "The \"{section}\" section requires at least one file", "error.section.files.min.singular": "A seção “{section}” precisa ter pelo menos um arquivo",
"error.section.pages.max.plural": "Você não pode adicionar mais do que {max} página à seção \"{section}\"", "error.section.pages.max.plural": "Você não pode adicionar mais do que {max} páginas à 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": "Você não pode adicionar mais do que uma página à seção \"{section}\"",
"error.section.pages.min.plural": "The \"{section}\" section requires at least {min} pages", "error.section.pages.min.plural": "A seção “{section}” precisa ter pelo menos {min} páginas ",
"error.section.pages.min.singular": "The \"{section}\" section requires at least one page", "error.section.pages.min.singular": "A seção “{section}” precisa ter pelo menos uma página ",
"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",
@@ -150,12 +163,12 @@
"error.user.changePassword.permission": "Você não tem permissão para alterar a senha do usuário \"{name}\"", "error.user.changePassword.permission": "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.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.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.changeRole.toAdmin": "Você não tem permissão para promover usuários ao papel de administrador ",
"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 deletado",
"error.user.delete.lastAdmin": "O último administrador não pode ser excluído", "error.user.delete.lastAdmin": "O último administrador não pode ser deletado",
"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 deletado",
"error.user.delete.permission": "Você não tem permissão para excluir o usuário \"{name}\"", "error.user.delete.permission": "Você não tem permissão para deletar 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",
@@ -163,8 +176,9 @@
"error.user.password.invalid": "Digite uma senha válida. Sua senha deve ter pelo menos 8 caracteres.", "error.user.password.invalid": "Digite uma senha válida. Sua senha deve ter pelo menos 8 caracteres.",
"error.user.password.notSame": "As senhas não combinam", "error.user.password.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.password.wrong": "Wrong password", "error.user.password.wrong": "Senha errada",
"error.user.role.invalid": "Digite um papel válido", "error.user.role.invalid": "Digite um papel válido",
"error.user.undefined": "Usuário não encontrado",
"error.user.update.permission": "Você não tem permissão para atualizar o usuário \"{name}\"", "error.user.update.permission": "Você não tem permissão para atualizar o usuário \"{name}\"",
"error.validation.accepted": "Por favor, confirme", "error.validation.accepted": "Por favor, confirme",
@@ -174,9 +188,9 @@
"error.validation.boolean": "Por favor, confirme ou rejeite", "error.validation.boolean": "Por favor, confirme ou rejeite",
"error.validation.contains": "Digite um valor que contenha \"{needle}\"", "error.validation.contains": "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": "Por favor entre uma data depois de {date}",
"error.validation.date.before": "Please enter a date before {date}", "error.validation.date.before": "Por favor entre uma data antes de {date}",
"error.validation.date.between": "Please enter a date between {min} and {max}", "error.validation.date.between": "Por favor entre uma data 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",
@@ -202,79 +216,85 @@
"error.validation.same": "Por favor, digite \"{other}\"", "error.validation.same": "Por favor, digite \"{other}\"",
"error.validation.size": "O tamanho do valor deve ser \"{size}\"", "error.validation.size": "O tamanho do valor deve ser \"{size}\"",
"error.validation.startswith": "O valor deve começar com \"{start}\"", "error.validation.startswith": "O valor deve começar com \"{start}\"",
"error.validation.time": "Digite uma hora válida", "error.validation.time": "Digite um horário válido",
"error.validation.time.after": "Please enter a time after {time}", "error.validation.time.after": "Por favor entre um horário depois de {time}",
"error.validation.time.before": "Please enter a time before {time}", "error.validation.time.before": "Por favor entre um horário antes de {time}",
"error.validation.time.between": "Please enter a time between {min} and {max}", "error.validation.time.between": "Por favor entre um horário entre {min} e {max}",
"error.validation.url": "Digite uma URL válida", "error.validation.url": "Digite uma URL válida",
"field.required": "The field is required", "expand": "Expandir",
"field.blocks.changeType": "Change type", "expand.all": "Expandir todos",
"field.required": "Este campo é obrigatório ",
"field.blocks.changeType": "Mudar tipo",
"field.blocks.code.name": "Código", "field.blocks.code.name": "Código",
"field.blocks.code.language": "Idioma", "field.blocks.code.language": "Idioma",
"field.blocks.code.placeholder": "Your code …", "field.blocks.code.placeholder": "Seu código …",
"field.blocks.delete.confirm": "Do you really want to delete this block?", "field.blocks.delete.confirm": "Deseja realmente deletar este bloco?",
"field.blocks.delete.confirm.all": "Do you really want to delete all blocks?", "field.blocks.delete.confirm.all": "Deseja realmente deletar todos os blocos?",
"field.blocks.delete.confirm.selected": "Do you really want to delete the selected blocks?", "field.blocks.delete.confirm.selected": "Deseja realmente deletar os blocos selecionados?",
"field.blocks.empty": "No blocks yet", "field.blocks.empty": "Nenhum bloco",
"field.blocks.fieldsets.label": "Please select a block type …", "field.blocks.fieldsets.label": "Por favor selecione um tipo de bloco …",
"field.blocks.gallery.name": "Gallery", "field.blocks.fieldsets.paste": "Digite <kbd>{{ shortcut }}</kbd> para colar/importar blocos da sua área de transferência ",
"field.blocks.gallery.images.empty": "No images yet", "field.blocks.gallery.name": "Galeria",
"field.blocks.gallery.images.label": "Images", "field.blocks.gallery.images.empty": "Nenhuma imagem",
"field.blocks.heading.level": "Level", "field.blocks.gallery.images.label": "Imagens",
"field.blocks.heading.name": "Heading", "field.blocks.heading.level": "Nível ",
"field.blocks.heading.text": "Text", "field.blocks.heading.name": "Título ",
"field.blocks.heading.placeholder": "Heading …", "field.blocks.heading.text": "Texto",
"field.blocks.image.alt": "Alternative text", "field.blocks.heading.placeholder": "Título …",
"field.blocks.image.caption": "Caption", "field.blocks.image.alt": "Texto alternativo",
"field.blocks.image.crop": "Crop", "field.blocks.image.caption": "Legenda",
"field.blocks.image.crop": "Cortar",
"field.blocks.image.link": "Link", "field.blocks.image.link": "Link",
"field.blocks.image.location": "Location", "field.blocks.image.location": "Localização ",
"field.blocks.image.name": "Imagem", "field.blocks.image.name": "Imagem",
"field.blocks.image.placeholder": "Select an image", "field.blocks.image.placeholder": "Selecionar uma imagem",
"field.blocks.image.ratio": "Ratio", "field.blocks.image.ratio": "Proporção ",
"field.blocks.image.url": "Image URL", "field.blocks.image.url": "URL da imagem",
"field.blocks.list.name": "List", "field.blocks.line.name": "Linha",
"field.blocks.list.name": "Lista",
"field.blocks.markdown.name": "Markdown", "field.blocks.markdown.name": "Markdown",
"field.blocks.markdown.label": "Text", "field.blocks.markdown.label": "Texto",
"field.blocks.markdown.placeholder": "Markdown …", "field.blocks.markdown.placeholder": "Markdown …",
"field.blocks.quote.name": "Quote", "field.blocks.quote.name": "Citação ",
"field.blocks.quote.text.label": "Text", "field.blocks.quote.text.label": "Texto",
"field.blocks.quote.text.placeholder": "Quote …", "field.blocks.quote.text.placeholder": "Citação …",
"field.blocks.quote.citation.label": "Citation", "field.blocks.quote.citation.label": "Citação ",
"field.blocks.quote.citation.placeholder": "by …", "field.blocks.quote.citation.placeholder": "de …",
"field.blocks.text.name": "Text", "field.blocks.text.name": "Texto",
"field.blocks.text.placeholder": "Text …", "field.blocks.text.placeholder": "Texto …",
"field.blocks.video.caption": "Caption", "field.blocks.video.caption": "Legenda",
"field.blocks.video.name": "Video", "field.blocks.video.name": "Vídeo ",
"field.blocks.video.placeholder": "Enter a video URL", "field.blocks.video.placeholder": "Entre uma URL de vídeo ",
"field.blocks.video.url.label": "Video-URL", "field.blocks.video.url.label": "URL-Vídeo",
"field.blocks.video.url.placeholder": "https://youtube.com/?v=", "field.blocks.video.url.placeholder": "https://youtube.com/?v=",
"field.files.empty": "Nenhum arquivo selecionado", "field.files.empty": "Nenhum arquivo selecionado",
"field.layout.delete": "Delete layout", "field.layout.delete": "Deletar layout",
"field.layout.delete.confirm": "Do you really want to delete this layout?", "field.layout.delete.confirm": "Deseja realmente deletar este layout?",
"field.layout.empty": "No rows yet", "field.layout.empty": "Nenhuma linha",
"field.layout.select": "Select a layout", "field.layout.select": "Selecionar um layout",
"field.pages.empty": "Nenhuma página selecionada", "field.pages.empty": "Nenhuma página selecionada",
"field.structure.delete.confirm": "Deseja realmente excluir este registro?", "field.structure.delete.confirm": "Deseja realmente deletar esta linha?",
"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.blueprint": "This file has no blueprint yet. You can define the setup in <strong>/site/blueprints/{template}.yml</strong>", "file.blueprint": "Este arquivo não tem planta. Você pode definir sua planta em <strong>/site/blueprints/files/{blueprint}.yml</strong>",
"file.delete.confirm": "Deseja realmente excluir <br> <strong>{filename}</strong>?", "file.delete.confirm": "Deseja realmente deletar <br> <strong>{filename}</strong>?",
"file.sort": "Change position", "file.sort": "Mudar posição",
"files": "Arquivos", "files": "Arquivos",
"files.empty": "Nenhum arquivo", "files.empty": "Nenhum arquivo",
"hide": "Hide", "hide": "Ocultar",
"hour": "Hora", "hour": "Hora",
"import": "Importar",
"insert": "Inserir", "insert": "Inserir",
"insert.after": "Insert after", "insert.after": "Inserir após",
"insert.before": "Insert before", "insert.before": "Inserir antes",
"install": "Instalar", "install": "Instalar",
"installation": "Instalação", "installation": "Instalação",
@@ -295,13 +315,13 @@
"language.convert": "Tornar padrão", "language.convert": "Tornar padrão",
"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>", "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>",
"language.create": "Adicionar novo idioma", "language.create": "Adicionar novo idioma",
"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!", "language.delete.confirm": "Deseja realmente deletar 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 deletado",
"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": "Você está usando uma configuração de local customizada. Por favor modifique a configuração no arquivo do idioma em /site/languages",
"language.name": "Nome", "language.name": "Nome",
"language.updated": "Idioma atualizado", "language.updated": "Idioma atualizado",
@@ -314,39 +334,39 @@
"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": "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.help": "Você recebeu o código da sua licença por email ao efetuar sua compra. Por favor, copie e cole o código para completar seu 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 cópia de demonstração não registrada do Kirby",
"link": "Link", "link": "Link",
"link.text": "Texto do link", "link.text": "Texto do link",
"loading": "Carregando", "loading": "Carregando",
"lock.unsaved": "Unsaved changes", "lock.unsaved": "Mudanças não salvas",
"lock.unsaved.empty": "There are no more unsaved changes", "lock.unsaved.empty": "Não há mais mudanças não salvas",
"lock.isLocked": "Unsaved changes by <strong>{email}</strong>", "lock.isLocked": "Mudanças não salvas por <strong>{email}</strong>",
"lock.file.isLocked": "The file is currently being edited by {email} and cannot be changed.", "lock.file.isLocked": "Este arquivo está sendo editado no momento por {email}, e não pode ser mudado",
"lock.page.isLocked": "The page is currently being edited by {email} and cannot be changed.", "lock.page.isLocked": "Esta página está sendo editada no momento por {email}, e não pode ser mudada",
"lock.unlock": "Unlock", "lock.unlock": "Destrancar",
"lock.isUnlocked": "Your unsaved changes have been overwritten by another user. You can download your changes to merge them manually.", "lock.isUnlocked": "Suas mudanças não salvas foram alteradas por outro usuário, e serão perdidas. Você pode baixar um arquivo com suas mudanças, para depois fundi-las manualmente. ",
"login": "Entrar", "login": "Entrar",
"login.code.label.login": "Login code", "login.code.label.login": "Código de acesso",
"login.code.label.password-reset": "Password reset code", "login.code.label.password-reset": "Código de redefinição de senha",
"login.code.placeholder.email": "000 000", "login.code.placeholder.email": "000 0000",
"login.code.text.email": "If your email address is registered, the requested code was sent via email.", "login.code.text.email": "Se seu endereço de email está registrado, o código requisitado será mandado por email.",
"login.email.login.body": "Hi {user.nameOrEmail},\n\nYou recently requested a login code for the Kirby Panel.\nThe following login code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a login code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.", "login.email.login.body": "Oi, {user.nameOrEmail},\n\nVocê recentemente pediu um código de acesso ao painel administrativo do site {site}.\nO seguinte código será válido por {timeout} minutos:\n\n{code}\n\nSe você não pediu este código de acesso, por favor ignore esta mensagem, ou contate seu Administrador de Sistemas se você tiver dúvidas.\nPor questões de segurança, por favor NÃO compartilhe esta mensagem.",
"login.email.login.subject": "Your login code", "login.email.login.subject": "Seu código de acesso",
"login.email.password-reset.body": "Hi {user.nameOrEmail},\n\nYou recently requested a password reset code for the Kirby Panel.\nThe following password reset code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a password reset code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.", "login.email.password-reset.body": "Oi, {user.nameOrEmail},\n\nVocê recentemente pediu um código de redefinição de senha, para o painel administrativo do site {site}.\nO seguinte código de redefinição de senha será válido por {timeout} minutos:\n\n{code}\n\nSe você não pediu este código, por favor ignore esta mensagem, ou contate seu Administrador de Sistemas se você tiver dúvidas.\nPor questões de segurança, por favor NÃO compartilhe esta mensagem.",
"login.email.password-reset.subject": "Your password reset code", "login.email.password-reset.subject": "Seu código de redefinição de senha",
"login.remember": "Manter-me conectado", "login.remember": "Manter-me conectado",
"login.reset": "Reset password", "login.reset": "Redefinir senha",
"login.toggleText.code.email": "Login via email", "login.toggleText.code.email": "Entrar com email",
"login.toggleText.code.email-password": "Login with password", "login.toggleText.code.email-password": "Entrar com senha",
"login.toggleText.password-reset.email": "Forgot your password?", "login.toggleText.password-reset.email": "Esqueceu sua senha?",
"login.toggleText.password-reset.email-password": "← Back to login", "login.toggleText.password-reset.email-password": "← Voltar à entrada",
"logout": "Sair", "logout": "Sair",
@@ -372,37 +392,37 @@
"more": "Mais", "more": "Mais",
"name": "Nome", "name": "Nome",
"next": "Próximo", "next": "Próximo",
"no": "no", "no": "não",
"off": "off", "off": "não",
"on": "on", "on": "sim",
"open": "Abrir", "open": "Abrir",
"open.newWindow": "Open in new window", "open.newWindow": "Abrir em nova janela",
"options": "Opções", "options": "Opções",
"options.none": "No options", "options.none": "Nenhuma opção",
"orientation": "Orientação", "orientation": "Orientação",
"orientation.landscape": "Paisagem", "orientation.landscape": "Paisagem",
"orientation.portrait": "Retrato", "orientation.portrait": "Retrato",
"orientation.square": "Quadrado", "orientation.square": "Quadrado",
"page.blueprint": "This page has no blueprint yet. You can define the setup in <strong>/site/blueprints/{template}.yml</strong>", "page.blueprint": "Esta página não tem planta. Você pode definir sua planta em <strong>/site/blueprints/pages/{blueprint}.yml</strong>",
"page.changeSlug": "Alterar URL", "page.changeSlug": "Alterar URL",
"page.changeSlug.fromTitle": "Criar a partir do t\u00edtulo", "page.changeSlug.fromTitle": "Criar a partir do t\u00edtulo",
"page.changeStatus": "Alterar estado", "page.changeStatus": "Alterar estado",
"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": "Deseja realmente excluir <strong>{title}</strong>?", "page.delete.confirm": "Deseja realmente deletar <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.sort": "Change position", "page.sort": "Mudar posição",
"page.status": "Estado", "page.status": "Estado",
"page.status.draft": "Rascunho", "page.status.draft": "Rascunho",
"page.status.draft.description": "The page is in draft mode and only visible for logged in editors or via secret link", "page.status.draft.description": "A página é um rascunho, e visível somente por editores logados, ou através de um link secreto.",
"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",
@@ -417,44 +437,49 @@
"pagination.page": "Página", "pagination.page": "Página",
"password": "Senha", "password": "Senha",
"paste": "Colar",
"paste.after": "Colar após",
"pixel": "Pixel", "pixel": "Pixel",
"plugins": "Plugins",
"prev": "Anterior", "prev": "Anterior",
"preview": "Preview", "preview": "Visualizar",
"remove": "Remover", "remove": "Remover",
"rename": "Renomear", "rename": "Renomear",
"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>?", "revert.confirm": "Deseja realmente <strong>deletar todas as mudanças não salvas</strong>?",
"role": "Papel", "role": "Papel",
"role.admin.description": "The admin has all rights", "role.admin.description": "O administrador tem todos os direitos",
"role.admin.title": "Admin", "role.admin.title": "Administrador",
"role.all": "Todos", "role.all": "Todos",
"role.empty": "Não há usuários com este papel", "role.empty": "Não há usuários com este papel",
"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": "Este é um papel atribuído por padrão, sem nenhuma permissão",
"role.nobody.title": "Nobody", "role.nobody.title": "Ninguém",
"save": "Salvar", "save": "Salvar",
"search": "Buscar", "search": "Buscar",
"search.min": "Enter {min} characters to search", "search.min": "Digite {min} caracteres para fazer uma busca",
"search.all": "Show all", "search.all": "Mostrar todos",
"search.results.none": "No results", "search.results.none": "Nenhum resultado",
"section.required": "The section is required", "section.required": "Esta seção é obrigatória",
"select": "Selecionar", "select": "Selecionar",
"settings": "Configurações", "settings": "Configurações",
"show": "Show", "show": "Mostrar",
"size": "Tamanho", "size": "Tamanho",
"slug": "URL", "slug": "Anexo de URL",
"sort": "Ordenar", "sort": "Ordenar",
"title": "Título", "title": "Título",
"template": "Tema", "template": "Tema",
"today": "Hoje", "today": "Hoje",
"site.blueprint": "The site has no blueprint yet. You can define the setup in <strong>/site/blueprints/site.yml</strong>", "server": "Servidor",
"site.blueprint": "Este site não tem planta. Você pode definir sua planta em <strong>/site/blueprints/site.yml</strong>",
"toolbar.button.code": "Código", "toolbar.button.code": "Código",
"toolbar.button.bold": "Negrito", "toolbar.button.bold": "Negrito",
@@ -463,41 +488,45 @@
"toolbar.button.heading.1": "Título 1", "toolbar.button.heading.1": "Título 1",
"toolbar.button.heading.2": "Título 2", "toolbar.button.heading.2": "Título 2",
"toolbar.button.heading.3": "Título 3", "toolbar.button.heading.3": "Título 3",
"toolbar.button.heading.4": "Título 4",
"toolbar.button.heading.5": "Título 5",
"toolbar.button.heading.6": "Título 6",
"toolbar.button.italic": "Itálico", "toolbar.button.italic": "Itálico",
"toolbar.button.file": "Arquivo", "toolbar.button.file": "Arquivo",
"toolbar.button.file.select": "Select a file", "toolbar.button.file.select": "Selecionar arquivo",
"toolbar.button.file.upload": "Upload a file", "toolbar.button.file.upload": "Carregar arquivo",
"toolbar.button.link": "Link", "toolbar.button.link": "Link",
"toolbar.button.strike": "Strike-through", "toolbar.button.paragraph": "Parágrafo",
"toolbar.button.strike": "Riscado",
"toolbar.button.ol": "Lista ordenada", "toolbar.button.ol": "Lista ordenada",
"toolbar.button.underline": "Underline", "toolbar.button.underline": "Sublinhado",
"toolbar.button.ul": "Lista não-ordenada", "toolbar.button.ul": "Lista não-ordenada",
"translation.author": "Kirby Team", "translation.author": "Time Kirby",
"translation.direction": "ltr", "translation.direction": "ltr",
"translation.name": "Português (Brasileiro)", "translation.name": "Português do Brasil",
"translation.locale": "pt_BR", "translation.locale": "pt_BR",
"upload": "Enviar", "upload": "Enviar",
"upload.error.cantMove": "The uploaded file could not be moved", "upload.error.cantMove": "O arquivo carregado não pôde ser movido",
"upload.error.cantWrite": "Failed to write file to disk", "upload.error.cantWrite": "Falha ao escrever o arquivo no disco",
"upload.error.default": "The file could not be uploaded", "upload.error.default": "O arquivo não pode ser carregado",
"upload.error.extension": "File upload stopped by extension", "upload.error.extension": "O carregamento do arquivo foi interrompido por causa da extensão",
"upload.error.formSize": "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the form", "upload.error.formSize": "O arquivo carregado excede a diretiva de MAX_FILE_SIZE especificada no formulário",
"upload.error.iniPostSize": "The uploaded file exceeds the post_max_size directive in php.ini", "upload.error.iniPostSize": "O arquivo carregado excede a diretiva post_max_size do php.ini",
"upload.error.iniSize": "The uploaded file exceeds the upload_max_filesize directive in php.ini", "upload.error.iniSize": "O arquivo carregado excede a diretiva upload_max_size do php.ini",
"upload.error.noFile": "No file was uploaded", "upload.error.noFile": "Nenhum arquivo foi carregado",
"upload.error.noFiles": "No files were uploaded", "upload.error.noFiles": "Nenhum arquivo foi carregado",
"upload.error.partial": "The uploaded file was only partially uploaded", "upload.error.partial": "O arquivo foi só parcialmente carregado",
"upload.error.tmpDir": "Missing a temporary folder", "upload.error.tmpDir": "Falta uma pasta temporária",
"upload.errors": "Erro", "upload.errors": "Erro",
"upload.progress": "Enviando…", "upload.progress": "Enviando…",
"url": "Url", "url": "Url",
"url.placeholder": "https://exemplo.com", "url.placeholder": "https://example.com",
"user": "Usuário", "user": "Usuário",
"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>", "user.blueprint": "Você pode definir seções e campos de formulário adicionais para este papel de usuário em <strong>/site/blueprints/users/{blueprint}.yml</strong>",
"user.changeEmail": "Alterar email", "user.changeEmail": "Alterar email",
"user.changeLanguage": "Alterar idioma", "user.changeLanguage": "Alterar idioma",
"user.changeName": "Renomear usuário", "user.changeName": "Renomear usuário",
@@ -507,8 +536,8 @@
"user.changeRole": "Alterar papel", "user.changeRole": "Alterar papel",
"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": "Deletar este usuário",
"user.delete.confirm": "Deseja realmente excluir <br><strong>{email}</strong>?", "user.delete.confirm": "Deseja realmente deletar <br><strong>{email}</strong>?",
"users": "Usuários", "users": "Usuários",
@@ -516,12 +545,13 @@
"view.account": "Sua conta", "view.account": "Sua conta",
"view.installation": "Instala\u00e7\u00e3o", "view.installation": "Instala\u00e7\u00e3o",
"view.resetPassword": "Reset password", "view.languages": "Idiomas",
"view.settings": "Configurações", "view.resetPassword": "Redefinir senha",
"view.site": "Site", "view.site": "Site",
"view.system": "Sistema",
"view.users": "Usu\u00e1rios", "view.users": "Usu\u00e1rios",
"welcome": "Bem-vindo", "welcome": "Bem-vindo",
"year": "Ano", "year": "Ano",
"yes": "yes" "yes": "sim"
} }

View File

@@ -1,5 +1,10 @@
{ {
"account.changeName": "Change your name",
"account.delete": "Delete your account",
"account.delete.confirm": "Do you really want to delete your account? You will be logged out immediately. Your account cannot be recovered.",
"add": "Adicionar", "add": "Adicionar",
"author": "Author",
"avatar": "Foto do perfil", "avatar": "Foto do perfil",
"back": "Voltar", "back": "Voltar",
"cancel": "Cancelar", "cancel": "Cancelar",
@@ -9,6 +14,7 @@
"collapse": "Collapse", "collapse": "Collapse",
"collapse.all": "Collapse All", "collapse.all": "Collapse All",
"copy": "Copiar", "copy": "Copiar",
"copy.all": "Copy all",
"create": "Criar", "create": "Criar",
"date": "Data", "date": "Data",
@@ -23,24 +29,28 @@
"days.tue": "Ter", "days.tue": "Ter",
"days.wed": "Qua", "days.wed": "Qua",
"debugging": "Debugging",
"delete": "Excluir", "delete": "Excluir",
"delete.all": "Delete all", "delete.all": "Delete all",
"dimensions": "Dimensões",
"disabled": "Inativo",
"discard": "Descartar",
"download": "Descarregar",
"duplicate": "Duplicar",
"edit": "Editar",
"expand": "Expand",
"expand.all": "Expand All",
"dialog.files.empty": "Sem arquivos para selecionar", "dialog.files.empty": "Sem arquivos para selecionar",
"dialog.pages.empty": "Sem páginas para selecionar", "dialog.pages.empty": "Sem páginas para selecionar",
"dialog.users.empty": "Sem utilizadores para selecionar", "dialog.users.empty": "Sem utilizadores para selecionar",
"dimensions": "Dimensões",
"disabled": "Inativo",
"discard": "Descartar",
"download": "Descarregar",
"duplicate": "Duplicar",
"edit": "Editar",
"email": "Email", "email": "Email",
"email.placeholder": "mail@exemplo.pt", "email.placeholder": "mail@exemplo.pt",
"environment": "Environment",
"error.access.code": "Invalid code", "error.access.code": "Invalid code",
"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",
@@ -92,6 +102,7 @@
"error.language.code": "Insira um código de idioma válido", "error.language.code": "Insira um código de idioma válido",
"error.language.duplicate": "O idioma já existe", "error.language.duplicate": "O idioma já existe",
"error.language.name": "Insira um nome válido para o idioma", "error.language.name": "Insira um nome válido para o idioma",
"error.language.notFound": "The language could not be found",
"error.layout.validation.block": "There's an error in block {blockIndex} in layout {layoutIndex}", "error.layout.validation.block": "There's an error in block {blockIndex} in layout {layoutIndex}",
"error.layout.validation.settings": "There's an error in layout {index} settings", "error.layout.validation.settings": "There's an error in layout {index} settings",
@@ -100,6 +111,8 @@
"error.license.email": "Digite um endereço de email válido", "error.license.email": "Digite um endereço de email válido",
"error.license.verification": "Não foi possível verificar a licença", "error.license.verification": "Não foi possível verificar a licença",
"error.offline": "The Panel is currently offline",
"error.page.changeSlug.permission": "Não tem permissões para alterar a URL de \"{slug}\"", "error.page.changeSlug.permission": "Não tem permissões para alterar a URL de \"{slug}\"",
"error.page.changeStatus.incomplete": "A página possui erros e não pode ser guardada", "error.page.changeStatus.incomplete": "A página possui erros e não pode ser guardada",
"error.page.changeStatus.permission": "O estado desta página não pode ser alterado", "error.page.changeStatus.permission": "O estado desta página não pode ser alterado",
@@ -165,6 +178,7 @@
"error.user.password.undefined": "O utilizador não possui uma palavra-passe", "error.user.password.undefined": "O utilizador não possui uma palavra-passe",
"error.user.password.wrong": "Wrong password", "error.user.password.wrong": "Wrong password",
"error.user.role.invalid": "Digite uma função válida", "error.user.role.invalid": "Digite uma função válida",
"error.user.undefined": "Usuário não encontrado",
"error.user.update.permission": "Não tem permissões para atualizar o utilizador \"{name}\"", "error.user.update.permission": "Não tem permissões para atualizar o utilizador \"{name}\"",
"error.validation.accepted": "Por favor, confirme", "error.validation.accepted": "Por favor, confirme",
@@ -208,6 +222,9 @@
"error.validation.time.between": "Please enter a time between {min} and {max}", "error.validation.time.between": "Please enter a time between {min} and {max}",
"error.validation.url": "Digite uma URL válida", "error.validation.url": "Digite uma URL válida",
"expand": "Expand",
"expand.all": "Expand All",
"field.required": "Este campo é necessário", "field.required": "Este campo é necessário",
"field.blocks.changeType": "Change type", "field.blocks.changeType": "Change type",
"field.blocks.code.name": "Código", "field.blocks.code.name": "Código",
@@ -218,6 +235,7 @@
"field.blocks.delete.confirm.selected": "Do you really want to delete the selected blocks?", "field.blocks.delete.confirm.selected": "Do you really want to delete the selected blocks?",
"field.blocks.empty": "No blocks yet", "field.blocks.empty": "No blocks yet",
"field.blocks.fieldsets.label": "Please select a block type …", "field.blocks.fieldsets.label": "Please select a block type …",
"field.blocks.fieldsets.paste": "Press <kbd>{{ shortcut }}</kbd> to paste/import blocks from your clipboard",
"field.blocks.gallery.name": "Gallery", "field.blocks.gallery.name": "Gallery",
"field.blocks.gallery.images.empty": "No images yet", "field.blocks.gallery.images.empty": "No images yet",
"field.blocks.gallery.images.label": "Images", "field.blocks.gallery.images.label": "Images",
@@ -234,6 +252,7 @@
"field.blocks.image.placeholder": "Select an image", "field.blocks.image.placeholder": "Select an image",
"field.blocks.image.ratio": "Ratio", "field.blocks.image.ratio": "Ratio",
"field.blocks.image.url": "Image URL", "field.blocks.image.url": "Image URL",
"field.blocks.line.name": "Line",
"field.blocks.list.name": "List", "field.blocks.list.name": "List",
"field.blocks.markdown.name": "Markdown", "field.blocks.markdown.name": "Markdown",
"field.blocks.markdown.label": "Text", "field.blocks.markdown.label": "Text",
@@ -263,7 +282,7 @@
"field.structure.empty": "Nenhum registro", "field.structure.empty": "Nenhum registro",
"field.users.empty": "Nenhum utilizador selecionado", "field.users.empty": "Nenhum utilizador selecionado",
"file.blueprint": "This file has no blueprint yet. You can define the setup in <strong>/site/blueprints/{template}.yml</strong>", "file.blueprint": "This file has no blueprint yet. You can define the setup in <strong>/site/blueprints/files/{blueprint}.yml</strong>",
"file.delete.confirm": "Deseja realmente excluir <br> <strong>{filename}</strong>?", "file.delete.confirm": "Deseja realmente excluir <br> <strong>{filename}</strong>?",
"file.sort": "Change position", "file.sort": "Change position",
@@ -272,6 +291,7 @@
"hide": "Hide", "hide": "Hide",
"hour": "Hora", "hour": "Hora",
"import": "Import",
"insert": "Inserir", "insert": "Inserir",
"insert.after": "Insert after", "insert.after": "Insert after",
"insert.before": "Insert before", "insert.before": "Insert before",
@@ -337,9 +357,9 @@
"login.code.label.password-reset": "Password reset code", "login.code.label.password-reset": "Password reset code",
"login.code.placeholder.email": "000 000", "login.code.placeholder.email": "000 000",
"login.code.text.email": "If your email address is registered, the requested code was sent via email.", "login.code.text.email": "If your email address is registered, the requested code was sent via email.",
"login.email.login.body": "Hi {user.nameOrEmail},\n\nYou recently requested a login code for the Kirby Panel.\nThe following login code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a login code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.", "login.email.login.body": "Hi {user.nameOrEmail},\n\nYou recently requested a login code for the Panel of {site}.\nThe following login code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a login code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.",
"login.email.login.subject": "Your login code", "login.email.login.subject": "Your login code",
"login.email.password-reset.body": "Hi {user.nameOrEmail},\n\nYou recently requested a password reset code for the Kirby Panel.\nThe following password reset code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a password reset code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.", "login.email.password-reset.body": "Hi {user.nameOrEmail},\n\nYou recently requested a password reset code for the Panel of {site}.\nThe following password reset code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a password reset code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.",
"login.email.password-reset.subject": "Your password reset code", "login.email.password-reset.subject": "Your password reset code",
"login.remember": "Manter-me conectado", "login.remember": "Manter-me conectado",
"login.reset": "Reset password", "login.reset": "Reset password",
@@ -385,7 +405,7 @@
"orientation.portrait": "Retrato", "orientation.portrait": "Retrato",
"orientation.square": "Quadrado", "orientation.square": "Quadrado",
"page.blueprint": "This page has no blueprint yet. You can define the setup in <strong>/site/blueprints/{template}.yml</strong>", "page.blueprint": "This page has no blueprint yet. You can define the setup in <strong>/site/blueprints/pages/{blueprint}.yml</strong>",
"page.changeSlug": "Alterar URL", "page.changeSlug": "Alterar URL",
"page.changeSlug.fromTitle": "Criar a partir do t\u00edtulo", "page.changeSlug.fromTitle": "Criar a partir do t\u00edtulo",
"page.changeStatus": "Alterar estado", "page.changeStatus": "Alterar estado",
@@ -417,7 +437,10 @@
"pagination.page": "Página", "pagination.page": "Página",
"password": "Palavra-passe", "password": "Palavra-passe",
"paste": "Paste",
"paste.after": "Paste after",
"pixel": "Pixel", "pixel": "Pixel",
"plugins": "Plugins",
"prev": "Anterior", "prev": "Anterior",
"preview": "Preview", "preview": "Preview",
"remove": "Remover", "remove": "Remover",
@@ -454,6 +477,8 @@
"template": "Tema", "template": "Tema",
"today": "Hoje", "today": "Hoje",
"server": "Server",
"site.blueprint": "The site has no blueprint yet. You can define the setup in <strong>/site/blueprints/site.yml</strong>", "site.blueprint": "The site has no blueprint yet. You can define the setup in <strong>/site/blueprints/site.yml</strong>",
"toolbar.button.code": "Código", "toolbar.button.code": "Código",
@@ -463,11 +488,15 @@
"toolbar.button.heading.1": "Título 1", "toolbar.button.heading.1": "Título 1",
"toolbar.button.heading.2": "Título 2", "toolbar.button.heading.2": "Título 2",
"toolbar.button.heading.3": "Título 3", "toolbar.button.heading.3": "Título 3",
"toolbar.button.heading.4": "Heading 4",
"toolbar.button.heading.5": "Heading 5",
"toolbar.button.heading.6": "Heading 6",
"toolbar.button.italic": "Itálico", "toolbar.button.italic": "Itálico",
"toolbar.button.file": "Ficheiro", "toolbar.button.file": "Ficheiro",
"toolbar.button.file.select": "Selecione o arquivo", "toolbar.button.file.select": "Selecione o arquivo",
"toolbar.button.file.upload": "Carregue o arquivo", "toolbar.button.file.upload": "Carregue o arquivo",
"toolbar.button.link": "Link", "toolbar.button.link": "Link",
"toolbar.button.paragraph": "Paragraph",
"toolbar.button.strike": "Strike-through", "toolbar.button.strike": "Strike-through",
"toolbar.button.ol": "Lista ordenada", "toolbar.button.ol": "Lista ordenada",
"toolbar.button.underline": "Underline", "toolbar.button.underline": "Underline",
@@ -497,7 +526,7 @@
"url.placeholder": "https://exemplo.pt", "url.placeholder": "https://exemplo.pt",
"user": "Utilizador", "user": "Utilizador",
"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>", "user.blueprint": "You can define additional sections and form fields for this user role in <strong>/site/blueprints/users/{blueprint}.yml</strong>",
"user.changeEmail": "Alterar email", "user.changeEmail": "Alterar email",
"user.changeLanguage": "Alterar idioma", "user.changeLanguage": "Alterar idioma",
"user.changeName": "Renomear este utilizador", "user.changeName": "Renomear este utilizador",
@@ -516,9 +545,10 @@
"view.account": "A sua conta", "view.account": "A sua conta",
"view.installation": "Instala\u00e7\u00e3o", "view.installation": "Instala\u00e7\u00e3o",
"view.languages": "Idiomas",
"view.resetPassword": "Reset password", "view.resetPassword": "Reset password",
"view.settings": "Configurações",
"view.site": "Site", "view.site": "Site",
"view.system": "System",
"view.users": "Utilizadores", "view.users": "Utilizadores",
"welcome": "Bem-vindo", "welcome": "Bem-vindo",

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