Upgrade to 3.2.0

This commit is contained in:
Bastian Allgeier
2019-06-25 09:56:08 +02:00
parent 9e18cf635d
commit 9c89153d35
296 changed files with 14408 additions and 2504 deletions

View File

@@ -25,10 +25,8 @@ if (is_file($autoloader = dirname(__DIR__) . '/vendor/autoload.php')) {
} else { } else {
/** /**
* If neither one exists, don't bother searching * If neither one exists, don't bother searching;
* it's a custom directory setup and the users need to * it's a custom directory setup and the users need to
* load the autoloader themselves * load the autoloader themselves
*/ */
} }
define('DS', '/');

View File

@@ -1,7 +1,7 @@
{ {
"name": "getkirby/cms", "name": "getkirby/cms",
"description": "The Kirby 3 core", "description": "The Kirby 3 core",
"version": "3.1.4", "version": "3.2.0",
"license": "proprietary", "license": "proprietary",
"keywords": ["kirby", "cms", "core"], "keywords": ["kirby", "cms", "core"],
"homepage": "https://getkirby.com", "homepage": "https://getkirby.com",
@@ -33,7 +33,7 @@
"zendframework/zend-escaper": "2.6.0" "zendframework/zend-escaper": "2.6.0"
}, },
"autoload": { "autoload": {
"files": ["config/helpers.php", "config/aliases.php", "config/tests.php"], "files": ["config/setup.php"],
"classmap": ["dependencies/"], "classmap": ["dependencies/"],
"psr-4": { "psr-4": {
"Kirby\\": "src/" "Kirby\\": "src/"

View File

@@ -22,6 +22,9 @@ return [
'name' => function (Language $language) { 'name' => function (Language $language) {
return $language->name(); return $language->name();
}, },
'rules' => function (Language $language) {
return $language->rules();
},
'url' => function (Language $language) { 'url' => function (Language $language) {
return $language->url(); return $language->url();
}, },
@@ -32,6 +35,8 @@ return [
'code', 'code',
'default', 'default',
'name', 'name',
'rules',
'direction'
] ]
] ]
]; ];

View File

@@ -35,6 +35,9 @@ return [
'hasDrafts' => function (Page $page) { 'hasDrafts' => function (Page $page) {
return $page->hasDrafts(); return $page->hasDrafts();
}, },
'hasFiles' => function (Page $page) {
return $page->hasFiles();
},
'id' => function (Page $page) { 'id' => function (Page $page) {
return $page->id(); return $page->id();
}, },
@@ -125,7 +128,6 @@ return [
'id', 'id',
'blueprint', 'blueprint',
'content', 'content',
'errors',
'status', 'status',
'options', 'options',
'next' => ['id', 'slug', 'title'], 'next' => ['id', 'slug', 'title'],

View File

@@ -29,6 +29,9 @@ return [
'options' => function (Site $site) { 'options' => function (Site $site) {
return $site->permissions()->toArray(); return $site->permissions()->toArray();
}, },
'previewUrl' => function (Site $site) {
return $site->previewUrl();
},
'title' => function (Site $site) { 'title' => function (Site $site) {
return $site->title()->value(); return $site->title()->value();
}, },
@@ -53,6 +56,7 @@ return [
'blueprint', 'blueprint',
'content', 'content',
'options', 'options',
'previewUrl',
'url' 'url'
], ],
'selector' => [ 'selector' => [

View File

@@ -1,12 +1,16 @@
<?php <?php
use Kirby\Cms\System; use Kirby\Cms\System;
use Kirby\Toolkit\Str;
/** /**
* System * System
*/ */
return [ return [
'fields' => [ 'fields' => [
'ascii' => function () {
return Str::$ascii;
},
'isOk' => function (System $system) { 'isOk' => function (System $system) {
return $system->isOk(); return $system->isOk();
}, },
@@ -38,6 +42,9 @@ return [
return $this->site()->title()->value(); return $this->site()->title()->value();
} }
}, },
'slugs' => function () {
return Str::$language;
},
'title' => function () { 'title' => function () {
return $this->site()->title()->value(); return $this->site()->title()->value();
}, },
@@ -82,6 +89,7 @@ return [
'requirements' 'requirements'
], ],
'panel' => [ 'panel' => [
'ascii',
'breadcrumbTitle', 'breadcrumbTitle',
'isOk', 'isOk',
'isInstalled', 'isInstalled',
@@ -91,10 +99,11 @@ return [
'license', 'license',
'multilang', 'multilang',
'requirements', 'requirements',
'slugs',
'title', 'title',
'translation', 'translation',
'user' => 'auth', 'user' => 'auth',
'version' 'version'
] ]
], ],
]; ];

View File

@@ -11,6 +11,7 @@ return function ($kirby) {
include __DIR__ . '/routes/site.php', include __DIR__ . '/routes/site.php',
include __DIR__ . '/routes/users.php', include __DIR__ . '/routes/users.php',
include __DIR__ . '/routes/files.php', include __DIR__ . '/routes/files.php',
include __DIR__ . '/routes/lock.php',
include __DIR__ . '/routes/system.php', include __DIR__ . '/routes/system.php',
include __DIR__ . '/routes/translations.php' include __DIR__ . '/routes/translations.php'
); );

View File

@@ -43,8 +43,14 @@ return [
'user' => $this->resolve($user)->view('auth')->toArray() 'user' => $this->resolve($user)->view('auth')->toArray()
]; ];
} }
throw new NotFoundException(['key' => 'user.undefined']);
} catch (Throwable $e) { } catch (Throwable $e) {
// catch any kind of login error if ($this->kirby()->option('debug') === true) {
throw $e;
} else {
// catch any kind of login error
}
} }
throw new InvalidArgumentException('Invalid email or password'); throw new InvalidArgumentException('Invalid email or password');

View File

@@ -0,0 +1,52 @@
<?php
/**
* Content Lock Routes
*/
return [
[
'pattern' => '(:all)/lock',
'method' => 'GET',
'action' => function (string $path) {
return $this->parent($path)->lock()->get();
}
],
[
'pattern' => '(:all)/lock',
'method' => 'PATCH',
'action' => function (string $path) {
return $this->parent($path)->lock()->create();
}
],
[
'pattern' => '(:all)/lock',
'method' => 'DELETE',
'action' => function (string $path) {
return $this->parent($path)->lock()->remove();
}
],
[
'pattern' => '(:all)/unlock',
'method' => 'GET',
'action' => function (string $path) {
return [
'isUnlocked' => $this->parent($path)->lock()->isUnlocked()
];
}
],
[
'pattern' => '(:all)/unlock',
'method' => 'PATCH',
'action' => function (string $path) {
return $this->parent($path)->lock()->unlock();
}
],
[
'pattern' => '(:all)/unlock',
'method' => 'DELETE',
'action' => function (string $path) {
return $this->parent($path)->lock()->resolve();
}
],
];

View File

@@ -62,6 +62,16 @@ return [
} }
} }
], ],
[
'pattern' => 'pages/(:any)/duplicate',
'method' => 'POST',
'action' => function (string $id) {
return $this->page($id)->duplicate($this->requestBody('slug'), [
'children' => $this->requestBody('children'),
'files' => $this->requestBody('files'),
]);
}
],
[ [
'pattern' => 'pages/(:any)/slug', 'pattern' => 'pages/(:any)/slug',
'method' => 'PATCH', 'method' => 'PATCH',

View File

@@ -13,6 +13,7 @@ use Kirby\Exception\NotFoundException;
use Kirby\Image\Darkroom; use Kirby\Image\Darkroom;
use Kirby\Text\Markdown; use Kirby\Text\Markdown;
use Kirby\Text\SmartyPants; use Kirby\Text\SmartyPants;
use Kirby\Toolkit\A;
use Kirby\Toolkit\F; use Kirby\Toolkit\F;
use Kirby\Toolkit\Tpl as Snippet; use Kirby\Toolkit\Tpl as Snippet;
@@ -53,20 +54,16 @@ return [
return $file; return $file;
} }
// pre-calculate all thumb attributes
$darkroom = Darkroom::factory(option('thumbs.driver', 'gd'), option('thumbs', []));
$attributes = $darkroom->preprocess($file->root(), $options);
// create url and root // create url and root
$mediaRoot = dirname($file->mediaRoot()); $mediaRoot = dirname($file->mediaRoot());
$dst = $mediaRoot . '/{{ name }}{{ attributes }}.{{ extension }}'; $dst = $mediaRoot . '/{{ name }}{{ attributes }}.{{ extension }}';
$thumbRoot = (new Filename($file->root(), $dst, $attributes))->toString(); $thumbRoot = (new Filename($file->root(), $dst, $options))->toString();
$thumbName = basename($thumbRoot); $thumbName = basename($thumbRoot);
$job = $mediaRoot . '/.jobs/' . $thumbName . '.json'; $job = $mediaRoot . '/.jobs/' . $thumbName . '.json';
if (file_exists($thumbRoot) === false) { if (file_exists($thumbRoot) === false) {
try { try {
Data::write($job, array_merge($attributes, [ Data::write($job, array_merge($options, [
'filename' => $file->filename() 'filename' => $file->filename()
])); ]));
} catch (Throwable $e) { } catch (Throwable $e) {
@@ -104,8 +101,14 @@ return [
*/ */
'markdown' => function (App $kirby, string $text = null, array $options = [], bool $inline = false): string { 'markdown' => function (App $kirby, string $text = null, array $options = [], bool $inline = false): string {
static $markdown; static $markdown;
static $config;
$markdown = $markdown ?? new Markdown($options); // if the config options have changed or the component is called for the first time,
// (re-)initialize the parser object
if ($config !== $options) {
$markdown = new Markdown($options);
$config = $options;
}
return $markdown->parse($text, $inline); return $markdown->parse($text, $inline);
}, },
@@ -120,8 +123,14 @@ return [
*/ */
'smartypants' => function (App $kirby, string $text = null, array $options = []): string { 'smartypants' => function (App $kirby, string $text = null, array $options = []): string {
static $smartypants; static $smartypants;
static $config;
$smartypants = $smartypants ?? new Smartypants($options); // if the config options have changed or the component is called for the first time,
// (re-)initialize the parser object
if ($config !== $options) {
$smartypants = new Smartypants($options);
$config = $options;
}
return $smartypants->parse($text); return $smartypants->parse($text);
}, },
@@ -130,15 +139,23 @@ return [
* Add your own snippet loader * Add your own snippet loader
* *
* @param Kirby\Cms\App $kirby Kirby instance * @param Kirby\Cms\App $kirby Kirby instance
* @param string $name Snippet name * @param string|array $name Snippet name
* @param array $data Data array for the snippet * @param array $data Data array for the snippet
* @return string|null * @return string|null
*/ */
'snippet' => function (App $kirby, string $name, array $data = []): ?string { 'snippet' => function (App $kirby, $name, array $data = []): ?string {
$file = $kirby->root('snippets') . '/' . $name . '.php'; $snippets = A::wrap($name);
if (file_exists($file) === false) { foreach ($snippets as $name) {
$file = $kirby->extensions('snippets')[$name] ?? null; $file = $kirby->root('snippets') . '/' . $name . '.php';
if (file_exists($file) === false) {
$file = $kirby->extensions('snippets')[$name] ?? null;
}
if ($file) {
break;
}
} }
return Snippet::load($file, $data); return Snippet::load($file, $data);
@@ -171,7 +188,7 @@ return [
$options = $darkroom->preprocess($src, $options); $options = $darkroom->preprocess($src, $options);
$root = (new Filename($src, $dst, $options))->toString(); $root = (new Filename($src, $dst, $options))->toString();
F::copy($src, $root); F::copy($src, $root, true);
$darkroom->process($root, $options); $darkroom->process($root, $options);
return $root; return $root;

View File

@@ -43,9 +43,6 @@ return [
}, },
], ],
'computed' => [ 'computed' => [
'options' => function (): array {
return $this->getOptions();
},
'default' => function () { 'default' => function () {
return $this->sanitizeOptions($this->default); return $this->sanitizeOptions($this->default);
}, },

View File

@@ -3,7 +3,12 @@
use Kirby\Toolkit\A; use Kirby\Toolkit\A;
return [ return [
'mixins' => ['min'], 'mixins' => [
'picker',
'filepicker',
'min',
'upload'
],
'props' => [ 'props' => [
/** /**
* Unset inherited props * Unset inherited props
@@ -21,27 +26,6 @@ return [
return $default; return $default;
}, },
/**
* The placeholder text if no pages have been selected yet
*/
'empty' => function ($empty = null) {
return I18n::translate($empty, $empty);
},
/**
* Image settings for each item
*/
'image' => function (array $image = null) {
return $image ?? [];
},
/**
* Info text
*/
'info' => function (string $info = null) {
return $info;
},
/** /**
* Changes the layout of the selected files. Available layouts: `list`, `cards` * Changes the layout of the selected files. Available layouts: `list`, `cards`
*/ */
@@ -49,48 +33,13 @@ return [
return $layout; return $layout;
}, },
/**
* Minimum number of required files
*/
'min' => function (int $min = null) {
return $min;
},
/**
* Maximum number of allowed files
*/
'max' => function (int $max = null) {
return $max;
},
/**
* If false, only a single file can be selected
*/
'multiple' => function (bool $multiple = true) {
return $multiple;
},
/**
* Query for the files to be included
*/
'query' => function (string $query = null) {
return $query;
},
/** /**
* Layout size for cards: `tiny`, `small`, `medium`, `large` or `huge` * Layout size for cards: `tiny`, `small`, `medium`, `large` or `huge`
*/ */
'size' => function (string $size = null) { 'size' => function (string $size = 'auto') {
return $size; return $size;
}, },
/**
* Main text
*/
'text' => function (string $text = '{{ file.filename }}') {
return $text;
},
'value' => function ($value = null) { 'value' => function ($value = null) {
return $value; return $value;
} }
@@ -118,38 +67,15 @@ return [
], ],
'methods' => [ 'methods' => [
'fileResponse' => function ($file) { 'fileResponse' => function ($file) {
if ($this->layout === 'list') { return $file->panelPickerData([
$thumb = [ 'image' => $this->image,
'width' => 100, 'info' => $this->info ?? false,
'height' => 100 'model' => $this->model(),
]; 'text' => $this->text,
} else { ]);
$thumb = [
'width' => 400,
'height' => 400
];
}
$image = $file->panelImage($this->image, $thumb);
$model = $this->model();
$uuid = $file->parent() === $model ? $file->filename() : $file->id();
return [
'filename' => $file->filename(),
'text' => $file->toString($this->text),
'link' => $file->panelUrl(true),
'id' => $file->id(),
'uuid' => $uuid,
'url' => $file->url(),
'info' => $file->toString($this->info ?? false),
'image' => $image,
'icon' => $file->panelIcon($image),
'type' => $file->type(),
];
}, },
'toFiles' => function ($value = null) { 'toFiles' => function ($value = null) {
$files = []; $files = [];
$kirby = kirby();
foreach (Yaml::decode($value) as $id) { foreach (Yaml::decode($value) as $id) {
if (is_array($id) === true) { if (is_array($id) === true) {
@@ -168,16 +94,32 @@ return [
return [ return [
[ [
'pattern' => '/', 'pattern' => '/',
'action' => function () { 'action' => function () {
$field = $this->field(); $field = $this->field();
$files = $field->model()->query($field->query(), 'Kirby\Cms\Files');
$data = [];
foreach ($files as $index => $file) { return $field->filepicker([
$data[] = $field->fileResponse($file); 'query' => $field->query(),
} 'image' => $field->image(),
'info' => $field->info(),
'text' => $field->text()
]);
}
],
[
'pattern' => 'upload',
'method' => 'POST',
'action' => function () {
$field = $this->field();
$uploads = $field->uploads();
return $data; return $field->upload($this, $uploads, function ($file) use ($field) {
return $file->panelPickerData([
'image' => $field->image(),
'info' => $field->info(),
'model' => $field->model(),
'text' => $field->text(),
]);
});
} }
] ]
]; ];

View File

@@ -0,0 +1,40 @@
<?php
return [
'methods' => [
'filepicker' => function (array $params = []) {
// fetch the parent model
$model = $this->model();
// find the right default query
if (empty($params['query']) === false) {
$query = $params['query'];
} elseif (is_a($model, 'Kirby\Cms\File') === true) {
$query = 'file.siblings';
} else {
$query = $model::CLASS_ALIAS . '.files';
}
// fetch all files for the picker
$files = $model->query($query, 'Kirby\Cms\Files');
$data = [];
// prepare the response for each file
foreach ($files as $index => $file) {
if (empty($params['map']) === false) {
$data[] = $params['map']($file);
} else {
$data[] = $file->panelPickerData([
'image' => $params['image'] ?? [],
'info' => $params['info'] ?? false,
'model' => $model,
'text' => $params['text'] ?? '{{ file.filename }}',
]);
}
}
return $data;
}
]
];

View File

@@ -23,6 +23,11 @@ return [
return $query; return $query;
}, },
], ],
'computed' => [
'options' => function (): array {
return $this->getOptions();
}
],
'methods' => [ 'methods' => [
'getOptions' => function () { 'getOptions' => function () {
return Options::factory( return Options::factory(

View File

@@ -0,0 +1,49 @@
<?php
return [
'methods' => [
'pagepicker' => function (array $params = []) {
$query = $params['query'] ?? null;
$model = $this->model();
$site = $this->kirby()->site();
if ($query) {
$pages = $model->query($query, 'Kirby\Cms\Pages');
$self = null;
} else {
if (!$parent = $site->find($params['parent'] ?? null)) {
$parent = $site;
}
$pages = $parent->children();
$self = [
'id' => $parent->id() == '' ? null : $parent->id(),
'title' => $parent->title()->value(),
'parent' => is_a($parent->parent(), Page::class) === true ? $parent->parent()->id() : null,
];
}
$children = [];
foreach ($pages as $index => $page) {
if ($page->isReadable() === true) {
if (empty($params['map']) === false) {
$children[] = $params['map']($page);
} else {
$children[] = $page->panelPickerData([
'image' => $params['image'] ?? [],
'info' => $params['info'] ?? false,
'model' => $model,
'text' => $params['text'] ?? null,
]);
}
}
}
return [
'model' => $self,
'pages' => $children
];
}
]
];

View File

@@ -0,0 +1,63 @@
<?php
return [
'props' => [
/**
* The placeholder text if none have been selected yet
*/
'empty' => function ($empty = null) {
return I18n::translate($empty, $empty);
},
/**
* Image settings for each item
*/
'image' => function (array $image = null) {
return $image ?? [];
},
/**
* Info text for each item
*/
'info' => function (string $info = null) {
return $info;
},
/**
* The minimum number of required selected
*/
'min' => function (int $min = null) {
return $min;
},
/**
* The maximum number of allowed selected
*/
'max' => function (int $max = null) {
return $max;
},
/**
* If `false`, only a single one can be selected
*/
'multiple' => function (bool $multiple = true) {
return $multiple;
},
/**
* Query for the items to be included in the picker
*/
'query' => function (string $query = null) {
return $query;
},
/**
* Main text for each item
*/
'text' => function (string $text = '{{ file.filename }}') {
return $text;
},
],
];

View File

@@ -0,0 +1,57 @@
<?php
use Kirby\Cms\Api;
return [
'props' => [
/**
* Sets the upload options for linked files
*/
'uploads' => function ($uploads = []) {
if ($uploads === false) {
return false;
}
if (is_string($uploads) === true) {
return ['template' => $uploads];
}
if (is_array($uploads) === false) {
$uploads = [];
}
return $uploads;
},
],
'methods' => [
'upload' => function (Api $api, $params, Closure $map) {
if ($params === false) {
throw new Exception('Uploads are disabled for this field');
}
if ($parentQuery = ($params['parent'] ?? null)) {
$parent = $this->model()->query($parentQuery);
} else {
$parent = $this->model();
}
if (is_a($parent, 'Kirby\Cms\File') === true) {
$parent = $parent->parent();
}
return $api->upload(function ($source, $filename) use ($parent, $params, $map) {
$file = $parent->createFile([
'source' => $source,
'template' => $params['template'] ?? null,
'filename' => $filename,
]);
if (is_a($file, 'Kirby\Cms\File') === false) {
throw new Exception('The file could not be uploaded');
}
return $map($file);
});
}
]
];

View File

@@ -0,0 +1,44 @@
<?php
return [
'methods' => [
'userpicker' => function (array $params = []) {
// fetch the parent model
$model = $this->model();
// find the right default query
if (empty($params['query']) === false) {
$query = $params['query'];
} elseif (is_a($model, 'Kirby\Cms\User') === true) {
$query = 'user.siblings';
} else {
$query = 'kirby.users';
}
// fetch all users for the picker
$users = $model->query($query, 'Kirby\Cms\Users');
$data = [];
if (!$users) {
return [];
}
// prepare the response for each user
foreach ($users->sortBy('username', 'asc') as $index => $user) {
if (empty($params['map']) === false) {
$data[] = $params['map']($user);
} else {
$data[] = $user->panelPickerData([
'image' => $params['image'] ?? [],
'info' => $params['info'] ?? false,
'model' => $model,
'text' => $params['text'] ?? '{{ user.username }}',
]);
}
}
return $data;
}
]
];

View File

@@ -4,7 +4,7 @@ use Kirby\Toolkit\A;
use Kirby\Toolkit\I18n; use Kirby\Toolkit\I18n;
return [ return [
'mixins' => ['min'], 'mixins' => ['min', 'pagepicker', 'picker'],
'props' => [ 'props' => [
/** /**
* Unset inherited props * Unset inherited props
@@ -22,13 +22,6 @@ return [
return $this->toPages($default); return $this->toPages($default);
}, },
/**
* The placeholder text if no pages have been selected yet
*/
'empty' => function ($empty = null) {
return I18n::translate($empty, $empty);
},
/** /**
* Image settings for each item * Image settings for each item
*/ */
@@ -37,7 +30,7 @@ return [
}, },
/** /**
* Info text * Info text for each item
*/ */
'info' => function (string $info = null) { 'info' => function (string $info = null) {
return $info; return $info;
@@ -50,27 +43,6 @@ return [
return $layout; return $layout;
}, },
/**
* The minimum number of required selected pages
*/
'min' => function (int $min = null) {
return $min;
},
/**
* The maximum number of allowed selected pages
*/
'max' => function (int $max = null) {
return $max;
},
/**
* If `false`, only a single page can be selected
*/
'multiple' => function (bool $multiple = true) {
return $multiple;
},
/** /**
* Optional query to select a specific set of pages * Optional query to select a specific set of pages
*/ */
@@ -81,12 +53,12 @@ return [
/** /**
* Layout size for cards: `tiny`, `small`, `medium`, `large` or `huge` * Layout size for cards: `tiny`, `small`, `medium`, `large` or `huge`
*/ */
'size' => function (string $size = null) { 'size' => function (string $size = 'auto') {
return $size; return $size;
}, },
/** /**
* Main text * Main text for each item
*/ */
'text' => function (string $text = null) { 'text' => function (string $text = null) {
return $text; return $text;
@@ -98,30 +70,11 @@ return [
], ],
'methods' => [ 'methods' => [
'pageResponse' => function ($page) { 'pageResponse' => function ($page) {
if ($this->layout === 'list') { return $page->panelPickerData([
$thumb = [ 'image' => $this->image,
'width' => 100, 'info' => $this->info,
'height' => 100 'text' => $this->text,
]; ]);
} else {
$thumb = [
'width' => 400,
'height' => 400
];
}
$image = $page->panelImage($this->image, $thumb);
$model = $this->model();
return [
'text' => $page->toString($this->text ?? '{{ page.title }}'),
'link' => $page->panelUrl(true),
'id' => $page->id(),
'info' => $page->toString($this->info ?? false),
'image' => $image,
'icon' => $page->panelIcon($image),
'hasChildren' => $page->hasChildren(),
];
}, },
'toPages' => function ($value = null) { 'toPages' => function ($value = null) {
$pages = []; $pages = [];
@@ -146,35 +99,14 @@ return [
'pattern' => '/', 'pattern' => '/',
'action' => function () { 'action' => function () {
$field = $this->field(); $field = $this->field();
$query = $field->query();
if ($query) { return $field->pagepicker([
$pages = $field->model()->query($query, 'Kirby\Cms\Pages'); 'image' => $field->image(),
$model = null; 'info' => $field->info(),
} else { 'parent' => $this->requestQuery('parent'),
if (!$parent = $this->site()->find($this->requestQuery('parent'))) { 'query' => $field->query(),
$parent = $this->site(); 'text' => $field->text()
} ]);
$pages = $parent->children();
$model = [
'id' => $parent->id() == '' ? null : $parent->id(),
'title' => $parent->title()->value()
];
}
$children = [];
foreach ($pages as $index => $page) {
if ($page->isReadable() === true) {
$children[] = $field->pageResponse($page);
}
}
return [
'model' => $model,
'pages' => $children
];
} }
] ]
]; ];

View File

@@ -19,9 +19,6 @@ return [
}, },
], ],
'computed' => [ 'computed' => [
'options' => function (): array {
return $this->getOptions();
},
'default' => function () { 'default' => function () {
return $this->sanitizeOption($this->default); return $this->sanitizeOption($this->default);
}, },

View File

@@ -14,5 +14,11 @@ return [
'icon' => function (string $icon = null) { 'icon' => function (string $icon = null) {
return $icon; return $icon;
}, },
/**
* Custom placeholder string for empty option.
*/
'placeholder' => function (string $placeholder = '—') {
return $placeholder;
},
] ]
]; ];

View File

@@ -43,9 +43,6 @@ return [
}, },
], ],
'computed' => [ 'computed' => [
'options' => function () {
return $this->getOptions();
},
'default' => function (): array { 'default' => function (): array {
return $this->toTags($this->default); return $this->toTags($this->default);
}, },
@@ -55,6 +52,10 @@ return [
], ],
'methods' => [ 'methods' => [
'toTags' => function ($value) { 'toTags' => function ($value) {
if (is_null($value) === true) {
return [];
}
$options = $this->options(); $options = $this->options();
// transform into value-text objects // transform into value-text objects

View File

@@ -1,6 +1,7 @@
<?php <?php
return [ return [
'mixins' => ['filepicker', 'upload'],
'props' => [ 'props' => [
/** /**
* Unset inherited props * Unset inherited props
@@ -44,6 +45,13 @@ return [
return $files; return $files;
}, },
/**
* Sets the font family (sans or monospace)
*/
'font' => function (string $font = null) {
return $font === 'monospace' ? 'monospace' : 'sans-serif';
},
/** /**
* Maximum number of allowed characters * Maximum number of allowed characters
*/ */
@@ -65,24 +73,6 @@ return [
return $size; return $size;
}, },
/**
* Sets the upload options for linked files
*/
'uploads' => function ($uploads = []) {
if ($uploads === false) {
return false;
}
if (is_string($uploads) === true) {
return ['template' => $uploads];
}
if (is_array($uploads) === false) {
$uploads = [];
}
return $uploads;
},
'value' => function (string $value = null) { 'value' => function (string $value = null) {
return trim($value); return trim($value);
@@ -93,66 +83,13 @@ return [
[ [
'pattern' => 'files', 'pattern' => 'files',
'action' => function () { 'action' => function () {
$field = $this->field(); return $this->field()->filepicker($this->field()->files());
$model = $field->model();
if (empty($filed->files['query']) === false) {
$query = $filed->files['query'];
} elseif (is_a($model, 'Kirby\Cms\File') === true) {
$query = 'file.siblings';
} else {
$query = $model::CLASS_ALIAS . '.files';
}
$files = $model->query($query, 'Kirby\Cms\Files');
$data = [];
foreach ($files as $index => $file) {
$image = $file->panelImage($field->files['image'] ?? []);
$model = $field->model();
$data[] = [
'filename' => $file->filename(),
'dragText' => $file->dragText(),
'image' => $image,
'icon' => $file->panelIcon($image)
];
}
return $data;
} }
], ],
[ [
'pattern' => 'upload', 'pattern' => 'upload',
'action' => function () { 'action' => function () {
$field = $this->field(); return $this->field()->upload($this, $this->field()->uploads(), function ($file) {
$uploads = $field->uploads();
if ($uploads === false) {
throw new Exception('Uploads are disabled for this field');
}
if ($parentQuery = ($uploads['parent'] ?? null)) {
$parent = $field->model()->query($parentQuery);
} else {
$parent = $field->model();
}
if (is_a($parent, 'Kirby\Cms\File') === true) {
$parent = $parent->parent();
}
return $this->upload(function ($source, $filename) use ($field, $parent, $uploads) {
$file = $parent->createFile([
'source' => $source,
'template' => $uploads['template'] ?? null,
'filename' => $filename,
]);
if (is_a($file, 'Kirby\Cms\File') === false) {
throw new Exception('The file could not be uploaded');
}
return [ return [
'filename' => $file->filename(), 'filename' => $file->filename(),
'dragText' => $file->dragText(), 'dragText' => $file->dragText(),

View File

@@ -1,7 +1,7 @@
<?php <?php
return [ return [
'mixins' => ['min', 'selector'], 'mixins' => ['min', 'picker', 'userpicker'],
'props' => [ 'props' => [
/** /**
* Unset inherited props * Unset inherited props
@@ -29,56 +29,17 @@ return [
return $this->toUsers($default); return $this->toUsers($default);
}, },
/**
* The placeholder text if none have been selected yet
*/
'empty' => function ($empty = null) {
return I18n::translate($empty, $empty);
},
/**
* The minimum number of required selected
*/
'min' => function (int $min = null) {
return $min;
},
/**
* The maximum number of allowed selected
*/
'max' => function (int $max = null) {
return $max;
},
/**
* If `false`, only a single one can be selected
*/
'multiple' => function (bool $multiple = true) {
return $multiple;
},
'value' => function ($value = null) { 'value' => function ($value = null) {
return $this->toUsers($value); return $this->toUsers($value);
}, },
], ],
'methods' => [ 'methods' => [
'userResponse' => function ($user) { 'userResponse' => function ($user) {
$avatar = function ($user) { return $user->panelPickerData([
if ($avatar = $user->avatar()) { 'info' => $this->info,
return [ 'image' => $this->image,
'url' => $avatar->crop(512)->url() 'text' => $this->text,
]; ]);
}
return null;
};
return [
'username' => $user->username(),
'id' => $user->id(),
'email' => $user->email(),
'avatar' => $avatar($user)
];
}, },
'toUsers' => function ($value = null) { 'toUsers' => function ($value = null) {
$users = []; $users = [];
@@ -97,6 +58,23 @@ return [
return $users; return $users;
} }
], ],
'api' => function () {
return [
[
'pattern' => '/',
'action' => function () {
$field = $this->field();
return $field->userpicker([
'query' => $field->query(),
'image' => $field->image(),
'info' => $field->info(),
'text' => $field->text()
]);
}
]
];
},
'save' => function ($value = null) { 'save' => function ($value = null) {
return A::pluck($value, 'email'); return A::pluck($value, 'email');
}, },

View File

@@ -16,7 +16,7 @@ use Kirby\Toolkit\View;
* Helper to create an asset object * Helper to create an asset object
* *
* @param string $path * @param string $path
* @return Asset * @return Kirby\Cms\Asset
*/ */
function asset(string $path) function asset(string $path)
{ {
@@ -44,7 +44,7 @@ function attr(array $attr = null, $before = null, $after = null)
* Returns the result of a collection by name * Returns the result of a collection by name
* *
* @param string $name * @param string $name
* @return Collection|null * @return Kirby\Cms\Collection|null
*/ */
function collection(string $name) function collection(string $name)
{ {
@@ -246,7 +246,7 @@ function html(string $string = null, bool $keepTags = false)
* <?= image('some/page/myimage.jpg') ?> * <?= image('some/page/myimage.jpg') ?>
* *
* @param string $path * @param string $path
* @return File|null * @return Kirby\Cms\File|null
*/ */
function image(string $path = null) function image(string $path = null)
{ {
@@ -382,9 +382,9 @@ function js($url, $options = null)
/** /**
* Returns the Kirby object in any situation * Returns the Kirby object in any situation
* *
* @return App * @return Kirby\Cms\App
*/ */
function kirby(): App function kirby()
{ {
return App::instance(); return App::instance();
} }
@@ -527,7 +527,7 @@ 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 Page|null * @return Kirby\Cms\Page|null
*/ */
function page(...$id) function page(...$id)
{ {
@@ -542,7 +542,7 @@ function page(...$id)
* Helper to build page collections * Helper to build page collections
* *
* @param string|array ...$id * @param string|array ...$id
* @return Pages * @return Kirby\Cms\Pages
*/ */
function pages(...$id) function pages(...$id)
{ {
@@ -616,7 +616,7 @@ function timestamp(string $date = null, int $step = null): ?string
/** /**
* Returns the currrent site object * Returns the currrent site object
* *
* @return Site * @return Kirby\Cms\Site
*/ */
function site() function site()
{ {
@@ -669,12 +669,12 @@ function smartypants(string $text = null): string
/** /**
* Embeds a snippet from the snippet folder * Embeds a snippet from the snippet folder
* *
* @param string $name * @param string|array $name
* @param array|object $data * @param array|object $data
* @param boolean $return * @param boolean $return
* @return string * @return string
*/ */
function snippet(string $name, $data = [], bool $return = false) function snippet($name, $data = [], bool $return = false)
{ {
if (is_object($data) === true) { if (is_object($data) === true) {
$data = ['item' => $data]; $data = ['item' => $data];
@@ -742,6 +742,21 @@ function tc($key, int $count)
return I18n::translateCount($key, $count); return I18n::translateCount($key, $count);
} }
/**
* Translate by key and then replace
* placeholders in the text
*
* @param string $key
* @param string $fallback
* @param array $replace
* @param string $locale
* @return string
*/
function tt(string $key, $fallback = null, array $replace = null, string $locale = null)
{
return I18n::template($key, $fallback, $replace, $locale);
}
/** /**
* Builds a Twitter link * Builds a Twitter link
* *

View File

@@ -25,7 +25,7 @@ return function (App $app) {
/** /**
* Converts the field value into a proper boolean and inverts it * Converts the field value into a proper boolean and inverts it
* *
* @param Field $field * @param Kirby\Cms\Field $field
* @return boolean * @return boolean
*/ */
'isFalse' => function (Field $field): bool { 'isFalse' => function (Field $field): bool {
@@ -35,7 +35,7 @@ return function (App $app) {
/** /**
* Converts the field value into a proper boolean * Converts the field value into a proper boolean
* *
* @param Field $field * @param Kirby\Cms\Field $field
* @return boolean * @return boolean
*/ */
'isTrue' => function (Field $field): bool { 'isTrue' => function (Field $field): bool {
@@ -58,7 +58,7 @@ return function (App $app) {
/** /**
* Parses the field value with the given method * Parses the field value with the given method
* *
* @param Field $field * @param Kirby\Cms\Field $field
* @param string $method [',', 'yaml', 'json'] * @param string $method [',', 'yaml', 'json']
* @return array * @return array
*/ */
@@ -76,7 +76,7 @@ return function (App $app) {
/** /**
* Converts the field value into a proper boolean * Converts the field value into a proper boolean
* *
* @param Field $field * @param Kirby\Cms\Field $field
* @param bool $default Default value if the field is empty * @param bool $default Default value if the field is empty
* @return bool * @return bool
*/ */
@@ -88,27 +88,30 @@ return function (App $app) {
/** /**
* Converts the field value to a timestamp or a formatted date * Converts the field value to a timestamp or a formatted date
* *
* @param Field $field * @param Kirby\Cms\Field $field
* @param string $format PHP date formatting string * @param string|null $format PHP date formatting string
* @param string|null $fallback Fallback string for `strtotime` (since 3.2)
* @return string|int * @return string|int
*/ */
'toDate' => function (Field $field, string $format = null) use ($app) { 'toDate' => function (Field $field, string $format = null, string $fallback = null) use ($app) {
if (empty($field->value) === true) { if (empty($field->value) === true && $fallback === null) {
return null; return null;
} }
$time = empty($field->value) === true ? strtotime($fallback) : $field->toTimestamp();
if ($format === null) { if ($format === null) {
return $field->toTimestamp(); return $time;
} }
return $app->option('date.handler', 'date')($format, $field->toTimestamp()); return $app->option('date.handler', 'date')($format, $time);
}, },
/** /**
* Returns a file object from a filename in the field * Returns a file object from a filename in the field
* *
* @param Field $field * @param Kirby\Cms\Field $field
* @return File|null * @return Kirby\Cms\File|null
*/ */
'toFile' => function (Field $field) { 'toFile' => function (Field $field) {
return $field->toFiles()->first(); return $field->toFiles()->first();
@@ -117,7 +120,9 @@ return function (App $app) {
/** /**
* Returns a file collection from a yaml list of filenames in the field * Returns a file collection from a yaml list of filenames in the field
* *
* @return Files * @param Kirby\Cms\Field $field
* @param string $separator
* @return Kirby\Cms\Files
*/ */
'toFiles' => function (Field $field, string $separator = 'yaml') { 'toFiles' => function (Field $field, string $separator = 'yaml') {
$parent = $field->parent(); $parent = $field->parent();
@@ -135,7 +140,7 @@ return function (App $app) {
/** /**
* Converts the field value into a proper float * Converts the field value into a proper float
* *
* @param Field $field * @param Kirby\Cms\Field $field
* @param float $default Default value if the field is empty * @param float $default Default value if the field is empty
* @return float * @return float
*/ */
@@ -147,7 +152,7 @@ return function (App $app) {
/** /**
* Converts the field value into a proper integer * Converts the field value into a proper integer
* *
* @param Field $field * @param Kirby\Cms\Field $field
* @param int $default Default value if the field is empty * @param int $default Default value if the field is empty
* @return int * @return int
*/ */
@@ -159,7 +164,7 @@ return function (App $app) {
/** /**
* Wraps a link tag around the field value. The field value is used as the link text * Wraps a link tag around the field value. The field value is used as the link text
* *
* @param Field $field * @param Kirby\Cms\Field $field
* @param mixed $attr1 Can be an optional Url. If no Url is set, the Url of the Page, File or Site will be used. Can also be an array of link attributes * @param mixed $attr1 Can be an optional Url. If no Url is set, the Url of the Page, File or Site will be used. Can also be an array of link attributes
* @param mixed $attr2 If `$attr1` is used to set the Url, you can use `$attr2` to pass an array of additional attributes. * @param mixed $attr2 If `$attr1` is used to set the Url, you can use `$attr2` to pass an array of additional attributes.
* @return string * @return string
@@ -183,8 +188,8 @@ return function (App $app) {
/** /**
* Returns a page object from a page id in the field * Returns a page object from a page id in the field
* *
* @param Field $field * @param Kirby\Cms\Field $field
* @return Page|null * @return Kirby\Cms\Page|null
*/ */
'toPage' => function (Field $field) use ($app) { 'toPage' => function (Field $field) use ($app) {
return $field->toPages()->first(); return $field->toPages()->first();
@@ -193,8 +198,9 @@ return function (App $app) {
/** /**
* Returns a pages collection from a yaml list of page ids in the field * Returns a pages collection from a yaml list of page ids in the field
* *
* @param Kirby\Cms\Field $field
* @param string $separator Can be any other separator to split the field value by * @param string $separator Can be any other separator to split the field value by
* @return Pages * @return Kirby\Cms\Pages
*/ */
'toPages' => function (Field $field, string $separator = 'yaml') use ($app) { 'toPages' => function (Field $field, string $separator = 'yaml') use ($app) {
return $app->site()->find(false, false, ...$field->toData($separator)); return $app->site()->find(false, false, ...$field->toData($separator));
@@ -202,6 +208,9 @@ return function (App $app) {
/** /**
* Converts a yaml field to a Structure object * Converts a yaml field to a Structure object
*
* @param Kirby\Cms\Field $field
* @return Kirby\Cms\Structure
*/ */
'toStructure' => function (Field $field) { 'toStructure' => function (Field $field) {
return new Structure(Yaml::decode($field->value), $field->parent()); return new Structure(Yaml::decode($field->value), $field->parent());
@@ -209,22 +218,29 @@ return function (App $app) {
/** /**
* Converts the field value to a Unix timestamp * Converts the field value to a Unix timestamp
*
* @param Kirby\Cms\Field $field
* @return int
*/ */
'toTimestamp' => function (Field $field) { 'toTimestamp' => function (Field $field): int {
return strtotime($field->value); return strtotime($field->value);
}, },
/** /**
* Turns the field value into an absolute Url * Turns the field value into an absolute Url
*
* @param Kirby\Cms\Field $field
* @return string
*/ */
'toUrl' => function (Field $field) { 'toUrl' => function (Field $field): string {
return Url::to($field->value); return Url::to($field->value);
}, },
/** /**
* Converts a user email address to a user object * Converts a user email address to a user object
* *
* @return User|null * @param Kirby\Cms\Field $field
* @return Kirby\Cms\User|null
*/ */
'toUser' => function (Field $field) use ($app) { 'toUser' => function (Field $field) use ($app) {
return $field->toUsers()->first(); return $field->toUsers()->first();
@@ -233,7 +249,9 @@ return function (App $app) {
/** /**
* Returns a users collection from a yaml list of user email addresses in the field * Returns a users collection from a yaml list of user email addresses in the field
* *
* @return Users * @param Kirby\Cms\Field $field
* @param string $separator
* @return Kirby\Cms\Users
*/ */
'toUsers' => function (Field $field, string $separator = 'yaml') use ($app) { 'toUsers' => function (Field $field, string $separator = 'yaml') use ($app) {
return $app->users()->find(false, false, ...$field->toData($separator)); return $app->users()->find(false, false, ...$field->toData($separator));
@@ -261,7 +279,7 @@ return function (App $app) {
* Escapes the field value to be safely used in HTML * Escapes the field value to be safely used in HTML
* templates without the risk of XSS attacks * templates without the risk of XSS attacks
* *
* @param Field $field * @param Kirby\Cms\Field $field
* @param string $context html, attr, js or css * @param string $context html, attr, js or css
*/ */
'escape' => function (Field $field, string $context = 'html') { 'escape' => function (Field $field, string $context = 'html') {
@@ -272,6 +290,12 @@ return function (App $app) {
/** /**
* Creates an excerpt of the field value without html * Creates an excerpt of the field value without html
* or any other formatting. * or any other formatting.
*
* @param Kirby\Cms\Field $field
* @param int $cahrs
* @param boolean $strip
* @param string $rep
* @return Kirby\Cms\Field
*/ */
'excerpt' => function (Field $field, int $chars = 0, bool $strip = true, string $rep = '…') { 'excerpt' => function (Field $field, int $chars = 0, bool $strip = true, string $rep = '…') {
$field->value = Str::excerpt($field->kirbytext()->value(), $chars, $strip, $rep); $field->value = Str::excerpt($field->kirbytext()->value(), $chars, $strip, $rep);
@@ -280,6 +304,9 @@ return function (App $app) {
/** /**
* Converts the field content to valid HTML * Converts the field content to valid HTML
*
* @param Kirby\Cms\Field $field
* @return Kirby\Cms\Field
*/ */
'html' => function (Field $field) { 'html' => function (Field $field) {
$field->value = htmlentities($field->value, ENT_COMPAT, 'utf-8'); $field->value = htmlentities($field->value, ENT_COMPAT, 'utf-8');
@@ -288,6 +315,9 @@ return function (App $app) {
/** /**
* Converts the field content from Markdown/Kirbytext to valid HTML * Converts the field content from Markdown/Kirbytext to valid HTML
*
* @param Kirby\Cms\Field $field
* @return Kirby\Cms\Field
*/ */
'kirbytext' => function (Field $field) use ($app) { 'kirbytext' => function (Field $field) use ($app) {
$field->value = $app->kirbytext($field->value, [ $field->value = $app->kirbytext($field->value, [
@@ -299,8 +329,12 @@ return function (App $app) {
}, },
/** /**
* Converts the field content from inline Markdown/Kirbytext to valid HTML * Converts the field content from inline Markdown/Kirbytext
* to valid HTML
* @since 3.1.0 * @since 3.1.0
*
* @param Kirby\Cms\Field $field
* @return Kirby\Cms\Field
*/ */
'kirbytextinline' => function (Field $field) use ($app) { 'kirbytextinline' => function (Field $field) use ($app) {
$field->value = $app->kirbytext($field->value, [ $field->value = $app->kirbytext($field->value, [
@@ -313,6 +347,9 @@ return function (App $app) {
/** /**
* Parses all KirbyTags without also parsing Markdown * Parses all KirbyTags without also parsing Markdown
*
* @param Kirby\Cms\Field $field
* @return Kirby\Cms\Field
*/ */
'kirbytags' => function (Field $field) use ($app) { 'kirbytags' => function (Field $field) use ($app) {
$field->value = $app->kirbytags($field->value, [ $field->value = $app->kirbytags($field->value, [
@@ -325,6 +362,9 @@ return function (App $app) {
/** /**
* Converts the field content to lowercase * Converts the field content to lowercase
*
* @param Kirby\Cms\Field $field
* @return Kirby\Cms\Field
*/ */
'lower' => function (Field $field) { 'lower' => function (Field $field) {
$field->value = Str::lower($field->value); $field->value = Str::lower($field->value);
@@ -333,6 +373,9 @@ return function (App $app) {
/** /**
* Converts markdown to valid HTML * Converts markdown to valid HTML
*
* @param Kirby\Cms\Field $field
* @return Kirby\Cms\Field
*/ */
'markdown' => function (Field $field) use ($app) { 'markdown' => function (Field $field) use ($app) {
$field->value = $app->markdown($field->value); $field->value = $app->markdown($field->value);
@@ -341,6 +384,9 @@ return function (App $app) {
/** /**
* Converts the field content to valid XML * Converts the field content to valid XML
*
* @param Kirby\Cms\Field $field
* @return Kirby\Cms\Field
*/ */
'xml' => function (Field $field) { 'xml' => function (Field $field) {
$field->value = Xml::encode($field->value); $field->value = Xml::encode($field->value);
@@ -348,11 +394,13 @@ return function (App $app) {
}, },
/** /**
* Cuts the string after the given length and adds "…" if it is longer * Cuts the string after the given length and
* adds "…" if it is longer
* *
* @param Kirby\Cms\Field $field
* @param int $length The number of characters in the string * @param int $length The number of characters in the string
* @param string $appendix An optional replacement for the missing rest * @param string $appendix An optional replacement for the missing rest
* @return Field * @return Kirby\Cms\Field
*/ */
'short' => function (Field $field, int $length, string $appendix = '…') { 'short' => function (Field $field, int $length, string $appendix = '…') {
$field->value = Str::short($field->value, $length, $appendix); $field->value = Str::short($field->value, $length, $appendix);
@@ -361,6 +409,9 @@ return function (App $app) {
/** /**
* Converts the field content to a slug * Converts the field content to a slug
*
* @param Kirby\Cms\Field $field
* @return Kirby\cms\Field
*/ */
'slug' => function (Field $field) { 'slug' => function (Field $field) {
$field->value = Str::slug($field->value); $field->value = Str::slug($field->value);
@@ -369,6 +420,9 @@ return function (App $app) {
/** /**
* Applies SmartyPants to the field * Applies SmartyPants to the field
*
* @param Kirby\Cms\Field $field
* @return Kirby\cms\Field
*/ */
'smartypants' => function (Field $field) use ($app) { 'smartypants' => function (Field $field) use ($app) {
$field->value = $app->smartypants($field->value); $field->value = $app->smartypants($field->value);
@@ -377,6 +431,9 @@ return function (App $app) {
/** /**
* Splits the field content into an array * Splits the field content into an array
*
* @param Kirby\Cms\Field $field
* @return Kirby\cms\Field
*/ */
'split' => function (Field $field, $separator = ',') { 'split' => function (Field $field, $separator = ',') {
return Str::split((string)$field->value, $separator); return Str::split((string)$field->value, $separator);
@@ -384,6 +441,9 @@ return function (App $app) {
/** /**
* Converts the field content to uppercase * Converts the field content to uppercase
*
* @param Kirby\Cms\Field $field
* @return Kirby\cms\Field
*/ */
'upper' => function (Field $field) { 'upper' => function (Field $field) {
$field->value = Str::upper($field->value); $field->value = Str::upper($field->value);
@@ -391,7 +451,11 @@ return function (App $app) {
}, },
/** /**
* Avoids typographical widows in strings by replacing the last space with &nbsp; * Avoids typographical widows in strings by replacing
* the last space with `&nbsp;`
*
* @param Kirby\Cms\Field $field
* @return Kirby\cms\Field
*/ */
'widont' => function (Field $field) { 'widont' => function (Field $field) {
$field->value = Str::widont($field->value); $field->value = Str::widont($field->value);
@@ -402,6 +466,9 @@ return function (App $app) {
/** /**
* Parses yaml in the field content and returns an array * Parses yaml in the field content and returns an array
*
* @param Kirby\Cms\Field $field
* @return array
*/ */
'yaml' => function (Field $field): array { 'yaml' => function (Field $field): array {
return $field->toData('yaml'); return $field->toData('yaml');

View File

@@ -6,9 +6,17 @@ return function (array $props) {
'headline' => $props['headline'] ?? t('files'), 'headline' => $props['headline'] ?? t('files'),
'type' => 'files', 'type' => 'files',
'layout' => $props['layout'] ?? 'cards', 'layout' => $props['layout'] ?? 'cards',
'template' => $props['template'] ?? null,
'info' => '{{ file.dimensions }}' 'info' => '{{ file.dimensions }}'
] ]
]; ];
// remove global options
unset(
$props['headline'],
$props['layout'],
$props['template']
);
return $props; return $props;
}; };

View File

@@ -5,8 +5,23 @@ return [
'kirby' => function (array $roots) { 'kirby' => function (array $roots) {
return realpath(__DIR__ . '/../'); return realpath(__DIR__ . '/../');
}, },
// i18n
'i18n' => function (array $roots) {
return $roots['kirby'] . '/i18n';
},
'i18n:translations' => function (array $roots) {
return $roots['translations'];
},
'i18n:rules' => function (array $roots) {
return $roots['i18n'] . '/rules';
},
/**
* @deprecated 3.2.0 Use `i18n:translations` instead
* @TODO move logic over to i18n:translations before removing
*/
'translations' => function (array $roots) { 'translations' => function (array $roots) {
return $roots['kirby'] . '/translations'; return $roots['i18n'] . '/translations';
}, },
// index // index

View File

@@ -9,6 +9,7 @@ use Kirby\Cms\PluginAssets;
use Kirby\Cms\Response; use Kirby\Cms\Response;
use Kirby\Exception\NotFoundException; use Kirby\Exception\NotFoundException;
use Kirby\Http\Response\Redirect; use Kirby\Http\Response\Redirect;
use Kirby\Http\Router;
use Kirby\Http\Router\Route; use Kirby\Http\Router\Route;
use Kirby\Toolkit\F; use Kirby\Toolkit\F;
use Kirby\Toolkit\Str; use Kirby\Toolkit\Str;
@@ -54,27 +55,15 @@ return function ($kirby) {
} }
], ],
[ [
'pattern' => $media . '/panel/(:any)/plugins/(css|js)/(:any)/index.(css|js)', 'pattern' => $media . '/plugins/index.(css|js)',
'env' => 'media', 'env' => 'media',
'action' => function (string $version, string $type) use ($kirby) { 'action' => function (string $type) use ($kirby) {
$plugins = new PanelPlugins($type); $plugins = new PanelPlugins();
$plugins->publish();
return $kirby return $kirby
->response() ->response()
->type($type) ->type($type)
->body($plugins->read()); ->body($plugins->read($type));
}
],
[
'pattern' => $media . '/panel/plugins/index.(css|js)',
'env' => 'media',
'action' => function (string $type) use ($kirby) {
$plugins = new PanelPlugins($type);
return $kirby
->response()
->redirect($plugins->url(), 302);
} }
], ],
[ [
@@ -150,7 +139,7 @@ return function ($kirby) {
// default home page // default home page
} else { } else {
return $kirby->resolve(null, $kirby->defaultLanguage()->code()); return $kirby->defaultLanguage()->router()->call();
} }
} }
]; ];
@@ -161,7 +150,7 @@ return function ($kirby) {
'method' => 'ALL', 'method' => 'ALL',
'env' => 'site', 'env' => 'site',
'action' => function ($path = null) use ($kirby, $language) { 'action' => function ($path = null) use ($kirby, $language) {
return $kirby->resolve($path, $language->code()); return $language->router()->call($path);
} }
]; ];
} }
@@ -191,7 +180,7 @@ return function ($kirby) {
} }
} }
return $kirby->resolve($path, $kirby->defaultLanguage()->code()); return $kirby->defaultLanguage()->router()->call($path);
} }
]; ];
} else { } else {

View File

@@ -98,24 +98,12 @@ return [
'data' => function () { 'data' => function () {
$data = []; $data = [];
if ($this->layout === 'list') {
$thumb = [
'width' => 100,
'height' => 100
];
} else {
$thumb = [
'width' => 400,
'height' => 400
];
}
// the drag text needs to be absolute when the files come from // the drag text needs to be absolute when the files come from
// a different parent model // a different parent model
$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, $thumb); $image = $file->panelImage($this->image);
$data[] = [ $data[] = [
'dragText' => $file->dragText($this->dragTextType, $dragTextAbsolute), 'dragText' => $file->dragText($this->dragTextType, $dragTextAbsolute),
@@ -220,6 +208,7 @@ return [
'accept' => $this->accept, 'accept' => $this->accept,
'empty' => $this->empty, 'empty' => $this->empty,
'headline' => $this->headline, 'headline' => $this->headline,
'help' => $this->help,
'layout' => $this->layout, 'layout' => $this->layout,
'link' => $this->link, 'link' => $this->link,
'max' => $this->max, 'max' => $this->max,

View File

@@ -1,5 +1,7 @@
<?php <?php
use Kirby\Toolkit\I18n;
return [ return [
'props' => [ 'props' => [
/** /**

View File

@@ -16,7 +16,12 @@ return [
$parent = $this->parent; $parent = $this->parent;
if (is_string($parent) === true) { if (is_string($parent) === true) {
$parent = $this->model->query($parent); $query = $parent;
$parent = $this->model->query($query);
if (!$parent) {
throw new Exception('The parent for the query "' . $query . '" cannot be found in the section "' . $this->name() . '"');
}
} }
if ($parent === null) { if ($parent === null) {

View File

@@ -1,9 +1,7 @@
<?php <?php
use Kirby\Cms\App;
use Kirby\Cms\Blueprint; use Kirby\Cms\Blueprint;
use Kirby\Toolkit\A; use Kirby\Toolkit\A;
use Kirby\Toolkit\F;
use Kirby\Toolkit\Str; use Kirby\Toolkit\Str;
return [ return [
@@ -141,22 +139,9 @@ return [
'data' => function () { 'data' => function () {
$data = []; $data = [];
if ($this->layout === 'list') {
$thumb = [
'width' => 100,
'height' => 100
];
} else {
$thumb = [
'width' => 400,
'height' => 400
];
}
foreach ($this->pages as $item) { foreach ($this->pages as $item) {
$permissions = $item->permissions(); $permissions = $item->permissions();
$blueprint = $item->blueprint(); $image = $item->panelImage($this->image);
$image = $item->panelImage($this->image, $thumb);
$data[] = [ $data[] = [
'id' => $item->id(), 'id' => $item->id(),
@@ -281,6 +266,7 @@ return [
'add' => $this->add, 'add' => $this->add,
'empty' => $this->empty, 'empty' => $this->empty,
'headline' => $this->headline, 'headline' => $this->headline,
'help' => $this->help,
'layout' => $this->layout, 'layout' => $this->layout,
'link' => $this->link, 'link' => $this->link,
'max' => $this->max, 'max' => $this->max,

View File

@@ -1,7 +1,19 @@
<?php <?php
$aliases = [ /**
* Constants
*/
define('DS', '/');
/**
* Load files that can't be autoloaded
*/
require_once __DIR__ . '/helpers.php';
/**
* Class aliases
*/
$aliases = [
// cms classes // cms classes
'asset' => 'Kirby\Cms\Asset', 'asset' => 'Kirby\Cms\Asset',
'collection' => 'Kirby\Cms\Collection', 'collection' => 'Kirby\Cms\Collection',
@@ -64,3 +76,20 @@ spl_autoload_register(function ($class) use ($aliases) {
class_alias($aliases[$class], $class); class_alias($aliases[$class], $class);
} }
}); });
/**
* Tests
*/
$testDir = dirname(__DIR__) . '/tests';
if (is_dir($testDir) === true) {
spl_autoload_register(function ($className) use ($testDir) {
$path = str_replace('Kirby\\', '', $className);
$path = str_replace('\\', '/', $path);
$file = $testDir . '/' . $path . '.php';
if (file_exists($file)) {
include $file;
}
});
}

View File

@@ -39,6 +39,7 @@ return [
'file' => [ 'file' => [
'attr' => [ 'attr' => [
'class', 'class',
'download',
'rel', 'rel',
'target', 'target',
'text', 'text',
@@ -57,7 +58,7 @@ return [
return Html::a($file->url(), $tag->text, [ return Html::a($file->url(), $tag->text, [
'class' => $tag->class, 'class' => $tag->class,
'download' => true, 'download' => $tag->download !== 'false',
'rel' => $tag->rel, 'rel' => $tag->rel,
'target' => $tag->target, 'target' => $tag->target,
'title' => $tag->title, 'title' => $tag->title,
@@ -106,7 +107,13 @@ return [
return $img; return $img;
} }
return Html::a($tag->link === 'self' ? $tag->src : $tag->link, [$img], [ if ($link = $tag->file($tag->link)) {
$link = $link->url();
} else {
$link = $tag->link === 'self' ? $tag->src : $tag->link;
}
return Html::a($link, [$img], [
'rel' => $tag->rel, 'rel' => $tag->rel,
'class' => $tag->linkclass, 'class' => $tag->linkclass,
'target' => $tag->target 'target' => $tag->target

View File

@@ -1,15 +0,0 @@
<?php
$testDir = dirname(__DIR__) . '/tests';
if (is_dir($testDir) === true) {
spl_autoload_register(function ($className) use ($testDir) {
$path = str_replace('Kirby\\', '', $className);
$path = str_replace('\\', '/', $path);
$file = $testDir . '/' . $path . '.php';
if (file_exists($file)) {
include $file;
}
});
}

9
kirby/i18n/rules/LICENSE Executable file
View File

@@ -0,0 +1,9 @@
The MIT License (MIT)
Copyright (c) 2012-217 Florian Eckerstorfer
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

30
kirby/i18n/rules/ar.json Executable file
View File

@@ -0,0 +1,30 @@
{
"أ" : "a",
"ب" : "b",
"ت" : "t",
"ث" : "th",
"ج" : "g",
"ح" : "h",
"خ" : "kh",
"د" : "d",
"ذ" : "th",
"ر" : "r",
"ز" : "z",
"س" : "s",
"ش" : "sh",
"ص" : "s",
"ض" : "d",
"ط" : "t",
"ظ" : "th",
"ع" : "aa",
"غ" : "gh",
"ف" : "f",
"ق" : "k",
"ك" : "k",
"ل" : "l",
"م" : "m",
"ن" : "n",
"ه" : "h",
"و" : "o",
"ي" : "y"
}

16
kirby/i18n/rules/az.json Executable file
View File

@@ -0,0 +1,16 @@
{
"Ə": "E",
"Ç": "C",
"Ğ": "G",
"İ": "I",
"Ş": "S",
"Ö": "O",
"Ü": "U",
"ə": "e",
"ç": "c",
"ğ": "g",
"ı": "i",
"ş": "s",
"ö": "o",
"ü": "u"
}

65
kirby/i18n/rules/bg.json Executable file
View File

@@ -0,0 +1,65 @@
{
"А": "A",
"Б": "B",
"В": "V",
"Г": "G",
"Д": "D",
"Е": "E",
"Ж": "J",
"З": "Z",
"И": "I",
"Й": "Y",
"К": "K",
"Л": "L",
"М": "M",
"Н": "N",
"О": "O",
"П": "P",
"Р": "R",
"С": "S",
"Т": "T",
"У": "U",
"Ф": "F",
"Х": "H",
"Ц": "Ts",
"Ч": "Ch",
"Ш": "Sh",
"Щ": "Sht",
"Ъ": "A",
"Ь": "I",
"Ю": "Iu",
"Я": "Ia",
"а": "a",
"б": "b",
"в": "v",
"г": "g",
"д": "d",
"е": "e",
"ж": "j",
"з": "z",
"и": "i",
"й": "y",
"к": "k",
"л": "l",
"м": "m",
"н": "n",
"о": "o",
"п": "p",
"р": "r",
"с": "s",
"т": "t",
"у": "u",
"ф": "f",
"х": "h",
"ц": "ts",
"ч": "ch",
"ш": "sh",
"щ": "sht",
"ъ": "a",
"ь": "i",
"ю": "iu",
"я": "ia",
"ия": "ia",
"йо": "iо",
"ьо": "io"
}

20
kirby/i18n/rules/cs.json Executable file
View File

@@ -0,0 +1,20 @@
{
"Č": "C",
"Ď": "D",
"Ě": "E",
"Ň": "N",
"Ř": "R",
"Š": "S",
"Ť": "T",
"Ů": "U",
"Ž": "Z",
"č": "c",
"ď": "d",
"ě": "e",
"ň": "n",
"ř": "r",
"š": "s",
"ť": "t",
"ů": "u",
"ž": "z"
}

10
kirby/i18n/rules/da.json Executable file
View File

@@ -0,0 +1,10 @@
{
"Æ": "Ae",
"æ": "ae",
"Ø": "Oe",
"ø": "oe",
"Å": "Aa",
"å": "aa",
"É": "E",
"é": "e"
}

9
kirby/i18n/rules/de.json Executable file
View File

@@ -0,0 +1,9 @@
{
"Ä": "AE",
"Ö": "OE",
"Ü": "UE",
"ß": "ss",
"ä": "ae",
"ö": "oe",
"ü": "ue"
}

111
kirby/i18n/rules/el.json Executable file
View File

@@ -0,0 +1,111 @@
{
"ΑΥ": "AU",
"Αυ": "Au",
"ΟΥ": "OU",
"Ου": "Ou",
"ΕΥ": "EU",
"Ευ": "Eu",
"ΕΙ": "I",
"Ει": "I",
"ΟΙ": "I",
"Οι": "I",
"ΥΙ": "I",
"Υι": "I",
"ΑΎ": "AU",
"Αύ": "Au",
"ΟΎ": "OU",
"Ού": "Ou",
"ΕΎ": "EU",
"Εύ": "Eu",
"ΕΊ": "I",
"Εί": "I",
"ΟΊ": "I",
"Οί": "I",
"ΎΙ": "I",
"Ύι": "I",
"ΥΊ": "I",
"Υί": "I",
"αυ": "au",
"ου": "ou",
"ευ": "eu",
"ει": "i",
"οι": "i",
"υι": "i",
"αύ": "au",
"ού": "ou",
"εύ": "eu",
"εί": "i",
"οί": "i",
"ύι": "i",
"υί": "i",
"Α": "A",
"Β": "V",
"Γ": "G",
"Δ": "D",
"Ε": "E",
"Ζ": "Z",
"Η": "I",
"Θ": "Th",
"Ι": "I",
"Κ": "K",
"Λ": "L",
"Μ": "M",
"Ν": "N",
"Ξ": "X",
"Ο": "O",
"Π": "P",
"Ρ": "R",
"Σ": "S",
"Τ": "T",
"Υ": "I",
"Φ": "F",
"Χ": "Ch",
"Ψ": "Ps",
"Ω": "O",
"Ά": "A",
"Έ": "E",
"Ή": "I",
"Ί": "I",
"Ό": "O",
"Ύ": "I",
"Ϊ": "I",
"Ϋ": "I",
"ϒ": "I",
"α": "a",
"β": "v",
"γ": "g",
"δ": "d",
"ε": "e",
"ζ": "z",
"η": "i",
"θ": "th",
"ι": "i",
"κ": "k",
"λ": "l",
"μ": "m",
"ν": "n",
"ξ": "x",
"ο": "o",
"π": "p",
"ρ": "r",
"ς": "s",
"σ": "s",
"τ": "t",
"υ": "i",
"φ": "f",
"χ": "ch",
"ψ": "ps",
"ω": "o",
"ά": "a",
"έ": "e",
"ή": "i",
"ί": "i",
"ό": "o",
"ύ": "i",
"ϊ": "i",
"ϋ": "i",
"ΰ": "i",
"ώ": "o",
"ϐ": "v",
"ϑ": "th"
}

14
kirby/i18n/rules/eo.json Executable file
View File

@@ -0,0 +1,14 @@
{
"ĉ": "cx",
"ĝ": "gx",
"ĥ": "hx",
"ĵ": "jx",
"ŝ": "sx",
"ŭ": "ux",
"Ĉ": "CX",
"Ĝ": "GX",
"Ĥ": "HX",
"Ĵ": "JX",
"Ŝ": "SX",
"Ŭ": "UX"
}

14
kirby/i18n/rules/et.json Executable file
View File

@@ -0,0 +1,14 @@
{
"Š": "S",
"Ž": "Z",
"Õ": "O",
"Ä": "A",
"Ö": "O",
"Ü": "U",
"š": "s",
"ž": "z",
"õ": "o",
"ä": "a",
"ö": "o",
"ü": "u"
}

34
kirby/i18n/rules/fa.json Executable file
View File

@@ -0,0 +1,34 @@
{
"ا" : "a",
"ب" : "b",
"پ" : "p",
"ت" : "t",
"ث" : "th",
"ج" : "j",
"چ" : "ch",
"ح" : "h",
"خ" : "kh",
"د" : "d",
"ذ" : "th",
"ر" : "r",
"ز" : "z",
"ژ" : "zh",
"س" : "s",
"ش" : "sh",
"ص" : "s",
"ض" : "z",
"ط" : "t",
"ظ" : "z",
"ع" : "a",
"غ" : "gh",
"ف" : "f",
"ق" : "g",
"ك" : "k",
"گ" : "g",
"ل" : "l",
"م" : "m",
"ن" : "n",
"و" : "o",
"ه" : "h",
"ی" : "y"
}

6
kirby/i18n/rules/fi.json Executable file
View File

@@ -0,0 +1,6 @@
{
"Ä": "A",
"Ö": "O",
"ä": "a",
"ö": "o"
}

34
kirby/i18n/rules/fr.json Executable file
View File

@@ -0,0 +1,34 @@
{
"À": "A",
"Â": "A",
"Æ": "AE",
"Ç": "C",
"É": "E",
"È": "E",
"Ê": "E",
"Ë": "E",
"Ï": "I",
"Î": "I",
"Ô": "O",
"Œ": "OE",
"Ù": "U",
"Û": "U",
"Ü": "U",
"à": "a",
"â": "a",
"æ": "ae",
"ç": "c",
"é": "e",
"è": "e",
"ê": "e",
"ë": "e",
"ï": "i",
"î": "i",
"ô": "o",
"œ": "oe",
"ù": "u",
"û": "u",
"ü": "u",
"ÿ": "y",
"Ÿ": "Y"
}

66
kirby/i18n/rules/hi.json Executable file
View File

@@ -0,0 +1,66 @@
{
"अ": "a",
"आ": "aa",
"ए": "e",
"ई": "ii",
"ऍ": "ei",
"ऎ": "ae",
"ऐ": "ai",
"इ": "i",
"ओ": "o",
"ऑ": "oi",
"ऒ": "oii",
"ऊ": "uu",
"औ": "ou",
"उ": "u",
"ब": "B",
"भ": "Bha",
"च": "Ca",
"छ": "Chha",
"ड": "Da",
"ढ": "Dha",
"फ": "Fa",
"फ़": "Fi",
"ग": "Ga",
"घ": "Gha",
"ग़": "Ghi",
"ह": "Ha",
"ज": "Ja",
"झ": "Jha",
"क": "Ka",
"ख": "Kha",
"ख़": "Khi",
"ल": "L",
"ळ": "Li",
"ऌ": "Li",
"ऴ": "Lii",
"ॡ": "Lii",
"म": "Ma",
"न": "Na",
"ङ": "Na",
"ञ": "Nia",
"ण": "Nae",
"ऩ": "Ni",
"ॐ": "oms",
"प": "Pa",
"क़": "Qi",
"र": "Ra",
"ऋ": "Ri",
"ॠ": "Ri",
"ऱ": "Ri",
"स": "Sa",
"श": "Sha",
"ष": "Shha",
"ट": "Ta",
"त": "Ta",
"ठ": "Tha",
"द": "Tha",
"थ": "Tha",
"ध": "Thha",
"ड़": "ugDha",
"ढ़": "ugDhha",
"व": "Va",
"य": "Ya",
"य़": "Yi",
"ज़": "Za"
}

12
kirby/i18n/rules/hr.json Executable file
View File

@@ -0,0 +1,12 @@
{
"Č": "C",
"Ć": "C",
"Ž": "Z",
"Š": "S",
"Đ": "Dj",
"č": "c",
"ć": "c",
"ž": "z",
"š": "s",
"đ": "dj"
}

20
kirby/i18n/rules/hu.json Executable file
View File

@@ -0,0 +1,20 @@
{
"Á": "a",
"É": "e",
"Í": "i",
"Ó": "o",
"Ö": "o",
"Ő": "o",
"Ú": "u",
"Ü": "u",
"Ű": "u",
"á": "a",
"é": "e",
"í": "i",
"ó": "o",
"ö": "o",
"ő": "o",
"ú": "u",
"ü": "u",
"ű": "u"
}

79
kirby/i18n/rules/hy.json Executable file
View File

@@ -0,0 +1,79 @@
{
"Ա": "A",
"Բ": "B",
"Գ": "G",
"Դ": "D",
"Ե": "E",
"Զ": "Z",
"Է": "E",
"Ը": "Y",
"Թ": "Th",
"Ժ": "Zh",
"Ի": "I",
"Լ": "L",
"Խ": "Kh",
"Ծ": "Ts",
"Կ": "K",
"Հ": "H",
"Ձ": "Dz",
"Ղ": "Gh",
"Ճ": "Tch",
"Մ": "M",
"Յ": "Y",
"Ն": "N",
"Շ": "Sh",
"Ո": "Vo",
"Չ": "Ch",
"Պ": "P",
"Ջ": "J",
"Ռ": "R",
"Ս": "S",
"Վ": "V",
"Տ": "T",
"Ր": "R",
"Ց": "C",
"Ւ": "u",
"Փ": "Ph",
"Ք": "Q",
"և": "ev",
"Օ": "O",
"Ֆ": "F",
"ա": "a",
"բ": "b",
"գ": "g",
"դ": "d",
"ե": "e",
"զ": "z",
"է": "e",
"ը": "y",
"թ": "th",
"ժ": "zh",
"ի": "i",
"լ": "l",
"խ": "kh",
"ծ": "ts",
"կ": "k",
"հ": "h",
"ձ": "dz",
"ղ": "gh",
"ճ": "tch",
"մ": "m",
"յ": "y",
"ն": "n",
"շ": "sh",
"ո": "vo",
"չ": "ch",
"պ": "p",
"ջ": "j",
"ռ": "r",
"ս": "s",
"վ": "v",
"տ": "t",
"ր": "r",
"ց": "c",
"ւ": "u",
"փ": "ph",
"ք": "q",
"օ": "o",
"ֆ": "f"
}

13
kirby/i18n/rules/it.json Executable file
View File

@@ -0,0 +1,13 @@
{
"À": "a",
"È": "e",
"Ì": "i",
"Ò": "o",
"Ù": "u",
"à": "a",
"é": "e",
"è": "e",
"ì": "i",
"ò": "o",
"ù": "u"
}

35
kirby/i18n/rules/ka.json Executable file
View File

@@ -0,0 +1,35 @@
{
"ა": "a",
"ბ": "b",
"გ": "g",
"დ": "d",
"ე": "e",
"ვ": "v",
"ზ": "z",
"თ": "t",
"ი": "i",
"კ": "k",
"ლ": "l",
"მ": "m",
"ნ": "n",
"ო": "o",
"პ": "p",
"ჟ": "zh",
"რ": "r",
"ს": "s",
"ტ": "t",
"უ": "u",
"ფ": "f",
"ქ": "k",
"ღ": "gh",
"": "q",
"შ": "sh",
"ჩ": "ch",
"ც": "ts",
"ძ": "dz",
"წ": "ts",
"ჭ": "ch",
"ხ": "kh",
"ჯ": "j",
"ჰ": "h"
}

20
kirby/i18n/rules/lt.json Executable file
View File

@@ -0,0 +1,20 @@
{
"Ą": "A",
"Č": "C",
"Ę": "E",
"Ė": "E",
"Į": "I",
"Š": "S",
"Ų": "U",
"Ū": "U",
"Ž": "Z",
"ą": "a",
"č": "c",
"ę": "e",
"ė": "e",
"į": "i",
"š": "s",
"ų": "u",
"ū": "u",
"ž": "z"
}

18
kirby/i18n/rules/lv.json Executable file
View File

@@ -0,0 +1,18 @@
{
"Ā": "A",
"Ē": "E",
"Ģ": "G",
"Ī": "I",
"Ķ": "K",
"Ļ": "L",
"Ņ": "N",
"Ū": "U",
"ā": "a",
"ē": "e",
"ģ": "g",
"ī": "i",
"ķ": "k",
"ļ": "l",
"ņ": "n",
"ū": "u"
}

64
kirby/i18n/rules/mk.json Executable file
View File

@@ -0,0 +1,64 @@
{
"А": "A",
"Б": "B",
"В": "V",
"Г": "G",
"Д": "D",
"Ѓ": "Gj",
"Е": "E",
"Ж": "Zh",
"З": "Z",
"Ѕ": "Dz",
"И": "I",
"Ј": "J",
"К": "K",
"Л": "L",
"Љ": "Lj",
"М": "M",
"Н": "N",
"Њ": "Nj",
"О": "O",
"П": "P",
"Р": "R",
"С": "S",
"Т": "T",
"Ќ": "Kj",
"У": "U",
"Ф": "F",
"Х": "H",
"Ц": "C",
"Ч": "Ch",
"Џ": "Dj",
"Ш": "Sh",
"а": "a",
"б": "b",
"в": "v",
"г": "g",
"д": "d",
"ѓ": "gj",
"е": "e",
"ж": "zh",
"з": "z",
"ѕ": "dz",
"и": "i",
"ј": "j",
"к": "k",
"л": "l",
"љ": "lj",
"м": "m",
"н": "n",
"њ": "nj",
"о": "o",
"п": "p",
"р": "r",
"с": "s",
"т": "t",
"ќ": "kj",
"у": "u",
"ф": "f",
"х": "h",
"ц": "c",
"ч": "ch",
"џ": "dj",
"ш": "sh"
}

121
kirby/i18n/rules/my.json Executable file
View File

@@ -0,0 +1,121 @@
{
"က": "k",
"ခ": "kh",
"ဂ": "g",
"ဃ": "ga",
"င": "ng",
"စ": "s",
"ဆ": "sa",
"ဇ": "z",
"စျ" : "za",
"ည": "ny",
"ဋ": "t",
"ဌ": "ta",
"ဍ": "d",
"ဎ": "da",
"ဏ": "na",
"တ": "t",
"ထ": "ta",
"ဒ": "d",
"ဓ": "da",
"န": "n",
"ပ": "p",
"ဖ": "pa",
"ဗ": "b",
"ဘ": "ba",
"မ": "m",
"ယ": "y",
"ရ": "ya",
"လ": "l",
"": "w",
"သ": "th",
"ဟ": "h",
"ဠ": "la",
"အ": "a",
"ြ": "y",
"ျ": "ya",
"ွ": "w",
"ြွ": "yw",
"ျွ": "ywa",
"ှ": "h",
"ဧ": "e",
"၏": "-e",
"ဣ": "i",
"ဤ": "-i",
"ဉ": "u",
"ဦ": "-u",
"ဩ": "aw",
"သြော" : "aw",
"ဪ": "aw",
"၍": "ywae",
"၌": "hnaik",
"": "0",
"၁": "1",
"၂": "2",
"၃": "3",
"၄": "4",
"၅": "5",
"၆": "6",
"၇": "7",
"၈": "8",
"၉": "9",
"္": "",
"့": "",
"း": "",
"ာ": "a",
"ါ": "a",
"ေ": "e",
"ဲ": "e",
"ိ": "i",
"ီ": "i",
"ို": "o",
"ု": "u",
"ူ": "u",
"ေါင်": "aung",
"ော": "aw",
"ော်": "aw",
"ေါ": "aw",
"ေါ်": "aw",
"်": "at",
"က်": "et",
"ိုက်" : "aik",
"ောက်" : "auk",
"င်" : "in",
"ိုင်" : "aing",
"ောင်" : "aung",
"စ်" : "it",
"ည်" : "i",
"တ်" : "at",
"ိတ်" : "eik",
"ုတ်" : "ok",
"ွတ်" : "ut",
"ေတ်" : "it",
"ဒ်" : "d",
"ိုဒ်" : "ok",
"ုဒ်" : "ait",
"န်" : "an",
"ာန်" : "an",
"ိန်" : "ein",
"ုန်" : "on",
"ွန်" : "un",
"ပ်" : "at",
"ိပ်" : "eik",
"ုပ်" : "ok",
"ွပ်" : "ut",
"န်ုပ်" : "nub",
"မ်" : "an",
"ိမ်" : "ein",
"ုမ်" : "on",
"ွမ်" : "un",
"ယ်" : "e",
"ိုလ်" : "ol",
"ဉ်" : "in",
"ံ": "an",
"ိံ" : "ein",
"ုံ" : "on"
}

8
kirby/i18n/rules/nb.json Executable file
View File

@@ -0,0 +1,8 @@
{
"Æ": "AE",
"Ø": "OE",
"Å": "AA",
"æ": "ae",
"ø": "oe",
"å": "aa"
}

20
kirby/i18n/rules/pl.json Executable file
View File

@@ -0,0 +1,20 @@
{
"Ą": "A",
"Ć": "C",
"Ę": "E",
"Ł": "L",
"Ń": "N",
"Ó": "O",
"Ś": "S",
"Ź": "Z",
"Ż": "Z",
"ą": "a",
"ć": "c",
"ę": "e",
"ł": "l",
"ń": "n",
"ó": "o",
"ś": "s",
"ź": "z",
"ż": "z"
}

187
kirby/i18n/rules/pt_BR.json Executable file
View File

@@ -0,0 +1,187 @@
{
"°": "0",
"¹": "1",
"²": "2",
"³": "3",
"⁴": "4",
"⁵": "5",
"⁶": "6",
"⁷": "7",
"⁸": "8",
"⁹": "9",
"₀": "0",
"₁": "1",
"₂": "2",
"₃": "3",
"₄": "4",
"₅": "5",
"₆": "6",
"₇": "7",
"₈": "8",
"₉": "9",
"æ": "ae",
"ǽ": "ae",
"À": "A",
"Á": "A",
"Â": "A",
"Ã": "A",
"Å": "AA",
"Ǻ": "A",
"Ă": "A",
"Ǎ": "A",
"Æ": "AE",
"Ǽ": "AE",
"à": "a",
"á": "a",
"â": "a",
"ã": "a",
"å": "aa",
"ǻ": "a",
"ă": "a",
"ǎ": "a",
"ª": "a",
"@": "at",
"Ĉ": "C",
"Ċ": "C",
"Ç": "Ç",
"ç": "ç",
"ĉ": "c",
"ċ": "c",
"©": "c",
"Ð": "Dj",
"Đ": "D",
"ð": "dj",
"đ": "d",
"È": "E",
"É": "E",
"Ê": "E",
"Ë": "E",
"Ĕ": "E",
"Ė": "E",
"è": "e",
"é": "é",
"ê": "e",
"ë": "e",
"ĕ": "e",
"ė": "e",
"ƒ": "f",
"Ĝ": "G",
"Ġ": "G",
"ĝ": "g",
"ġ": "g",
"Ĥ": "H",
"Ħ": "H",
"ĥ": "h",
"ħ": "h",
"Ì": "I",
"Í": "I",
"Î": "I",
"Ï": "I",
"Ĩ": "I",
"Ĭ": "I",
"Ǐ": "I",
"Į": "I",
"IJ": "IJ",
"ì": "i",
"í": "i",
"î": "i",
"ï": "i",
"ĩ": "i",
"ĭ": "i",
"ǐ": "i",
"į": "i",
"ij": "ij",
"Ĵ": "J",
"ĵ": "j",
"Ĺ": "L",
"Ľ": "L",
"Ŀ": "L",
"ĺ": "l",
"ľ": "l",
"ŀ": "l",
"Ñ": "N",
"ñ": "n",
"ʼn": "n",
"Ò": "O",
"Ó": "O",
"Ô": "O",
"Õ": "O",
"Ō": "O",
"Ŏ": "O",
"Ǒ": "O",
"Ő": "O",
"Ơ": "O",
"Ø": "OE",
"Ǿ": "O",
"Œ": "OE",
"ò": "o",
"ó": "o",
"ô": "o",
"õ": "o",
"ō": "o",
"ŏ": "o",
"ǒ": "o",
"ő": "o",
"ơ": "o",
"ø": "oe",
"ǿ": "o",
"º": "o",
"œ": "oe",
"Ŕ": "R",
"Ŗ": "R",
"ŕ": "r",
"ŗ": "r",
"Ŝ": "S",
"Ș": "S",
"ŝ": "s",
"ș": "s",
"ſ": "s",
"Ţ": "T",
"Ț": "T",
"Ŧ": "T",
"Þ": "TH",
"ţ": "t",
"ț": "t",
"ŧ": "t",
"þ": "th",
"Ù": "U",
"Ú": "U",
"Û": "U",
"Ü": "U",
"Ũ": "U",
"Ŭ": "U",
"Ű": "U",
"Ų": "U",
"Ư": "U",
"Ǔ": "U",
"Ǖ": "U",
"Ǘ": "U",
"Ǚ": "U",
"Ǜ": "U",
"ù": "u",
"ú": "u",
"û": "u",
"ü": "u",
"ũ": "u",
"ŭ": "u",
"ű": "u",
"ų": "u",
"ư": "u",
"ǔ": "u",
"ǖ": "u",
"ǘ": "u",
"ǚ": "u",
"ǜ": "u",
"Ŵ": "W",
"ŵ": "w",
"Ý": "Y",
"Ÿ": "Y",
"Ŷ": "Y",
"ý": "y",
"ÿ": "y",
"ŷ": "y"
}

16
kirby/i18n/rules/rm.json Executable file
View File

@@ -0,0 +1,16 @@
{
"ă": "a",
"î": "i",
"â": "a",
"ş": "s",
"ș": "s",
"ţ": "t",
"ț": "t",
"Ă": "A",
"Î": "I",
"Â": "A",
"Ş": "S",
"Ș": "S",
"Ţ": "T",
"Ț": "T"
}

68
kirby/i18n/rules/ru.json Executable file
View File

@@ -0,0 +1,68 @@
{
"Ъ": "",
"Ь": "",
"А": "A",
"Б": "B",
"Ц": "C",
"Ч": "Ch",
"Д": "D",
"Е": "E",
"Ё": "E",
"Э": "E",
"Ф": "F",
"Г": "G",
"Х": "H",
"И": "I",
"Й": "Y",
"Я": "Ya",
"Ю": "Yu",
"К": "K",
"Л": "L",
"М": "M",
"Н": "N",
"О": "O",
"П": "P",
"Р": "R",
"С": "S",
"Ш": "Sh",
"Щ": "Shch",
"Т": "T",
"У": "U",
"В": "V",
"Ы": "Y",
"З": "Z",
"Ж": "Zh",
"ъ": "",
"ь": "",
"а": "a",
"б": "b",
"ц": "c",
"ч": "ch",
"д": "d",
"е": "e",
"ё": "e",
"э": "e",
"ф": "f",
"г": "g",
"х": "h",
"и": "i",
"й": "y",
"я": "ya",
"ю": "yu",
"к": "k",
"л": "l",
"м": "m",
"н": "n",
"о": "o",
"п": "p",
"р": "r",
"с": "s",
"ш": "sh",
"щ": "shch",
"т": "t",
"у": "u",
"в": "v",
"ы": "y",
"з": "z",
"ж": "zh"
}

72
kirby/i18n/rules/sr.json Executable file
View File

@@ -0,0 +1,72 @@
{
"а": "a",
"б": "b",
"в": "v",
"г": "g",
"д": "d",
"ђ": "dj",
"е": "e",
"ж": "z",
"з": "z",
"и": "i",
"ј": "j",
"к": "k",
"л": "l",
"љ": "lj",
"м": "m",
"н": "n",
"њ": "nj",
"о": "o",
"п": "p",
"р": "r",
"с": "s",
"т": "t",
"ћ": "c",
"у": "u",
"ф": "f",
"х": "h",
"ц": "c",
"ч": "c",
"џ": "dz",
"ш": "s",
"А": "A",
"Б": "B",
"В": "V",
"Г": "G",
"Д": "D",
"Ђ": "Dj",
"Е": "E",
"Ж": "Z",
"З": "Z",
"И": "I",
"Ј": "J",
"К": "K",
"Л": "L",
"Љ": "Lj",
"М": "M",
"Н": "N",
"Њ": "Nj",
"О": "O",
"П": "P",
"Р": "R",
"С": "S",
"Т": "T",
"Ћ": "C",
"У": "U",
"Ф": "F",
"Х": "H",
"Ц": "C",
"Ч": "C",
"Џ": "Dz",
"Ш": "S",
"š": "s",
"đ": "dj",
"ž": "z",
"ć": "c",
"č": "c",
"Š": "S",
"Đ": "DJ",
"Ž": "Z",
"Ć": "C",
"Č": "C"
}

8
kirby/i18n/rules/sv_SE.json Executable file
View File

@@ -0,0 +1,8 @@
{
"Ä": "A",
"Å": "a",
"Ö": "O",
"ä": "a",
"å": "a",
"ö": "o"
}

14
kirby/i18n/rules/tr.json Executable file
View File

@@ -0,0 +1,14 @@
{
"Ç": "C",
"Ğ": "G",
"İ": "I",
"Ş": "S",
"Ö": "O",
"Ü": "U",
"ç": "c",
"ğ": "g",
"ı": "i",
"ş": "s",
"ö": "o",
"ü": "u"
}

10
kirby/i18n/rules/uk.json Executable file
View File

@@ -0,0 +1,10 @@
{
"Ґ": "G",
"І": "I",
"Ї": "Ji",
"Є": "Ye",
"ґ": "g",
"і": "i",
"ї": "ji",
"є": "ye"
}

92
kirby/i18n/rules/vi.json Executable file
View File

@@ -0,0 +1,92 @@
{
"ạ": "a",
"ả": "a",
"ầ": "a",
"ấ": "a",
"ậ": "a",
"ẩ": "a",
"ẫ": "a",
"ằ": "a",
"ắ": "a",
"ặ": "a",
"ẳ": "a",
"ẵ": "a",
"ẹ": "e",
"ẻ": "e",
"ẽ": "e",
"ề": "e",
"ế": "e",
"ệ": "e",
"ể": "e",
"ễ": "e",
"ị": "i",
"ỉ": "i",
"ọ": "o",
"ỏ": "o",
"ồ": "o",
"ố": "o",
"ộ": "o",
"ổ": "o",
"ỗ": "o",
"ờ": "o",
"ớ": "o",
"ợ": "o",
"ở": "o",
"ỡ": "o",
"ụ": "u",
"ủ": "u",
"ừ": "u",
"ứ": "u",
"ự": "u",
"ử": "u",
"ữ": "u",
"ỳ": "y",
"ỵ": "y",
"ỷ": "y",
"ỹ": "y",
"Ạ": "A",
"Ả": "A",
"Ầ": "A",
"Ấ": "A",
"Ậ": "A",
"Ẩ": "A",
"Ẫ": "A",
"Ằ": "A",
"Ắ": "A",
"Ặ": "A",
"Ẳ": "A",
"Ẵ": "A",
"Ẹ": "E",
"Ẻ": "E",
"Ẽ": "E",
"Ề": "E",
"Ế": "E",
"Ệ": "E",
"Ể": "E",
"Ễ": "E",
"Ị": "I",
"Ỉ": "I",
"Ọ": "O",
"Ỏ": "O",
"Ồ": "O",
"Ố": "O",
"Ộ": "O",
"Ổ": "O",
"Ỗ": "O",
"Ờ": "O",
"Ớ": "O",
"Ợ": "O",
"Ở": "O",
"Ỡ": "O",
"Ụ": "U",
"Ủ": "U",
"Ừ": "U",
"Ứ": "U",
"Ự": "U",
"Ử": "U",
"Ữ": "U",
"Ỳ": "Y",
"Ỵ": "Y",
"Ỷ": "Y",
"Ỹ": "Y"
}

6937
kirby/i18n/rules/zh.json Executable file

File diff suppressed because it is too large Load Diff

View File

@@ -24,8 +24,14 @@
"delete": "\u0418\u0437\u0442\u0440\u0438\u0439", "delete": "\u0418\u0437\u0442\u0440\u0438\u0439",
"dimensions": "Размери", "dimensions": "Размери",
"discard": "\u041e\u0442\u043c\u0435\u043d\u0438", "discard": "\u041e\u0442\u043c\u0435\u043d\u0438",
"download": "Download",
"duplicate": "Duplicate",
"edit": "\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u0439", "edit": "\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u0439",
"dialog.files.empty": "No files to select",
"dialog.pages.empty": "No pages to select",
"dialog.users.empty": "No users to select",
"email": "Email", "email": "Email",
"email.placeholder": "mail@example.com", "email.placeholder": "mail@example.com",
@@ -65,6 +71,14 @@
"error.form.incomplete": "Моля коригирайте всички грешки във формата...", "error.form.incomplete": "Моля коригирайте всички грешки във формата...",
"error.form.notSaved": "Формата не може да бъде запазена", "error.form.notSaved": "Формата не може да бъде запазена",
"error.language.code": "Please enter a valid code for the language",
"error.language.duplicate": "The language already exists",
"error.language.name": "Please enter a valid name for the language",
"error.license.format": "Please enter a valid license key",
"error.license.email": "Моля въведете валиден email адрес",
"error.license.verification": "The license could not be verified",
"error.page.changeSlug.permission": "error.page.changeSlug.permission":
"Не можете да смените URL на \"{slug}\"", "Не можете да смените URL на \"{slug}\"",
"error.page.changeStatus.incomplete": "error.page.changeStatus.incomplete":
@@ -90,6 +104,7 @@
"Вече съществува чернова с URL-добавка \"{slug}\"", "Вече съществува чернова с URL-добавка \"{slug}\"",
"error.page.duplicate": "error.page.duplicate":
"Страница с URL-добавка \"{slug}\" вече съществува", "Страница с URL-добавка \"{slug}\" вече съществува",
"error.page.duplicate.permission": "You are not allowed to duplicate \"{slug}\"",
"error.page.notFound": "Страницата \"{slug}\" не може да бъде намерена", "error.page.notFound": "Страницата \"{slug}\" не може да бъде намерена",
"error.page.num.invalid": "error.page.num.invalid":
"Моля въведете валидно число за сортиране. Числата не трябва да са негативни.", "Моля въведете валидно число за сортиране. Числата не трябва да са негативни.",
@@ -270,6 +285,13 @@
"loading": "Зареждане", "loading": "Зареждане",
"lock.unsaved": "Unsaved changes",
"lock.isLocked": "Unsaved changes by <strong>{email}</strong>",
"lock.file.isLocked": "The file is currently being edited by {email} and cannot be changed.",
"lock.page.isLocked": "The page is currently being edited by {email} and cannot be changed.",
"lock.unlock": "Unlock",
"lock.isUnlocked": "Your unsaved changes have been overwritten by another user. You can download your changes to merge them manually.",
"login": "Вход", "login": "Вход",
"login.remember": "Keep me logged in", "login.remember": "Keep me logged in",
@@ -297,6 +319,8 @@
"more": "Още", "more": "Още",
"name": "Име", "name": "Име",
"next": "Next", "next": "Next",
"off": "off",
"on": "on",
"open": "Отвори", "open": "Отвори",
"options": "Options", "options": "Options",
@@ -317,6 +341,9 @@
"<strong>Тази страница има подстраници</strong>. <br>Всички подстраници също ще бъдат изтрити.", "<strong>Тази страница има подстраници</strong>. <br>Всички подстраници също ще бъдат изтрити.",
"page.delete.confirm.title": "Въведи заглавие на страница за да потвърдиш", "page.delete.confirm.title": "Въведи заглавие на страница за да потвърдиш",
"page.draft.create": "Създай чернова", "page.draft.create": "Създай чернова",
"page.duplicate.appendix": "Копирай",
"page.duplicate.files": "Copy files",
"page.duplicate.pages": "Copy pages",
"page.status": "Status", "page.status": "Status",
"page.status.draft": "Чернова", "page.status.draft": "Чернова",
"page.status.draft.description": "page.status.draft.description":
@@ -342,9 +369,13 @@
"revert": "\u041e\u0442\u043c\u0435\u043d\u0438", "revert": "\u041e\u0442\u043c\u0435\u043d\u0438",
"role": "\u0420\u043e\u043b\u044f", "role": "\u0420\u043e\u043b\u044f",
"role.admin.description": "The admin has all rights",
"role.admin.title": "Admin",
"role.all": "Всички", "role.all": "Всички",
"role.empty": "Не съществуват потребители с тази роля", "role.empty": "Не съществуват потребители с тази роля",
"role.description.placeholder": "Липсва описание", "role.description.placeholder": "Липсва описание",
"role.nobody.description": "This is a fallback role without any permissions",
"role.nobody.title": "Nobody",
"save": "\u0417\u0430\u043f\u0438\u0448\u0438", "save": "\u0417\u0430\u043f\u0438\u0448\u0438",
"search": "Търси", "search": "Търси",

View File

@@ -24,8 +24,14 @@
"delete": "Eliminar", "delete": "Eliminar",
"dimensions": "Dimensions", "dimensions": "Dimensions",
"discard": "Descartar", "discard": "Descartar",
"download": "Descarregar",
"duplicate": "Duplicar",
"edit": "Editar", "edit": "Editar",
"dialog.files.empty": "No hi ha cap fitxer per seleccionar",
"dialog.pages.empty": "No hi ha cap pàgina per seleccionar",
"dialog.users.empty": "No hi ha cap usuari per seleccionar",
"email": "Email", "email": "Email",
"email.placeholder": "mail@exemple.com", "email.placeholder": "mail@exemple.com",
@@ -65,6 +71,14 @@
"error.form.incomplete": "Si us plau, corregeix els errors del formulari ...", "error.form.incomplete": "Si us plau, corregeix els errors del formulari ...",
"error.form.notSaved": "No s'ha pogut desar el formulari", "error.form.notSaved": "No s'ha pogut desar el formulari",
"error.language.code": "Introdueix un codi vàlid per a lidioma",
"error.language.duplicate": "L'idioma ja existeix",
"error.language.name": "Introdueix un nom vàlid per a l'idioma",
"error.license.format": "Introduïu una clau de llicència 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.page.changeSlug.permission": "error.page.changeSlug.permission":
"No teniu permís per canviar l'apèndix d'URL per a \"{slug}\"", "No teniu permís per canviar l'apèndix d'URL per a \"{slug}\"",
"error.page.changeStatus.incomplete": "error.page.changeStatus.incomplete":
@@ -90,6 +104,7 @@
"Ja existeix un esborrany de pàgina amb l'apèndix d'URL \"{slug}\"", "Ja existeix un esborrany de pàgina amb l'apèndix d'URL \"{slug}\"",
"error.page.duplicate": "error.page.duplicate":
"Ja existeix una pàgina amb l'apèndix d'URL \"{slug}\"", "Ja existeix una pàgina amb l'apèndix d'URL \"{slug}\"",
"error.page.duplicate.permission": "No tens permís per duplicar \"{slug}\"",
"error.page.notFound": "La pàgina \"{slug}\" no s'ha trobat", "error.page.notFound": "La pàgina \"{slug}\" no s'ha trobat",
"error.page.num.invalid": "error.page.num.invalid":
"Si us plau, introdueix un número d 'ordenació vàlid. Els números no poden ser negatius.", "Si us plau, introdueix un número d 'ordenació vàlid. Els números no poden ser negatius.",
@@ -104,18 +119,18 @@
"error.section.files.max.singular": "error.section.files.max.singular":
"No podeu afegir més d'un fitxer a la secció \"{section}\"", "No podeu afegir més d'un fitxer a la secció \"{section}\"",
"error.section.files.min.plural": "error.section.files.min.plural":
"The \"{section}\" section requires at least {min} files", "La secció \"{section}\" requereix almenys {min} fitxer",
"error.section.files.min.singular": "error.section.files.min.singular":
"The \"{section}\" section requires at least one file", "La secció \"{section}\" requereix almenys un fitxer",
"error.section.pages.max.plural": "error.section.pages.max.plural":
"No heu d'afegir més de {max} pàgines a la secció \"{section}\"", "No heu d'afegir més de {max} pàgines a la secció \"{section}\"",
"error.section.pages.max.singular": "error.section.pages.max.singular":
"No podeu afegir més d'una pàgina a la secció \"{section}\"", "No podeu afegir més d'una pàgina a la secció \"{section}\"",
"error.section.pages.min.plural": "error.section.pages.min.plural":
"The \"{section}\" section requires at least {min} pages", "La secció \"{section}\" requereix almenys {min} pàgines",
"error.section.pages.min.singular": "error.section.pages.min.singular":
"The \"{section}\" section requires at least one page", "La secció \"{section}\" requereix almenys una pàgina",
"error.section.notLoaded": "No s'ha pogut carregar la secció \"{name}\"", "error.section.notLoaded": "No s'ha pogut carregar la secció \"{name}\"",
"error.section.type.invalid": "La secció tipus \"{type}\" no és vàlida", "error.section.type.invalid": "La secció tipus \"{type}\" no és vàlida",
@@ -270,6 +285,13 @@
"loading": "Carregant", "loading": "Carregant",
"lock.unsaved": "Canvis no guardats",
"lock.isLocked": "Canvis no guardats per <strong>{email}</strong>",
"lock.file.isLocked": "El fitxer està sent editat actualment per {email} i no pot ser modificat.",
"lock.page.isLocked": "La pàgina està sent editat actualment per {email} i no pot ser modificat.",
"lock.unlock": "Desbloquejar",
"lock.isUnlocked": "Els teus canvis sense guardar han estat sobreescrits per a un altra usuario. Pots descarregar els teus canvis per combinar-los manualment.",
"login": "Entrar", "login": "Entrar",
"login.remember": "Manten-me connectat", "login.remember": "Manten-me connectat",
@@ -297,6 +319,8 @@
"more": "Més", "more": "Més",
"name": "Nom", "name": "Nom",
"next": "Següent", "next": "Següent",
"off": "apagat",
"on": "encès",
"open": "Obrir", "open": "Obrir",
"options": "Opcions", "options": "Opcions",
@@ -317,6 +341,9 @@
"<strong>Aquesta pàgina té subpàgines</strong>. <br>Totes les subpàgines també s'eliminaran.", "<strong>Aquesta pàgina té subpàgines</strong>. <br>Totes les subpàgines també s'eliminaran.",
"page.delete.confirm.title": "Introduïu el títol de la pàgina per confirmar", "page.delete.confirm.title": "Introduïu el títol de la pàgina per confirmar",
"page.draft.create": "Crear un esborrany", "page.draft.create": "Crear un esborrany",
"page.duplicate.appendix": "Copiar",
"page.duplicate.files": "Copiar fitxers",
"page.duplicate.pages": "Copiar pàgines",
"page.status": "Estat", "page.status": "Estat",
"page.status.draft": "Esborrany", "page.status.draft": "Esborrany",
"page.status.draft.description": "page.status.draft.description":
@@ -342,9 +369,13 @@
"revert": "Revertir", "revert": "Revertir",
"role": "Rol", "role": "Rol",
"role.admin.description": "Ladministrador té tots els permisos",
"role.admin.title": "Administrador",
"role.all": "Tots", "role.all": "Tots",
"role.empty": "No hi ha usuaris amb aquest rol", "role.empty": "No hi ha usuaris amb aquest rol",
"role.description.placeholder": "Sense descripció", "role.description.placeholder": "Sense descripció",
"role.nobody.description": "Aquest és un rol per defecte sense permisos",
"role.nobody.title": "Ningú",
"save": "Desar", "save": "Desar",
"search": "Cercar", "search": "Cercar",
@@ -366,8 +397,8 @@
"toolbar.button.heading.3": "Encapçalament 3", "toolbar.button.heading.3": "Encapçalament 3",
"toolbar.button.italic": "Cursiva", "toolbar.button.italic": "Cursiva",
"toolbar.button.file": "Arxiu", "toolbar.button.file": "Arxiu",
"toolbar.button.file.select": "Select a file", "toolbar.button.file.select": "Selecciona un fitxer",
"toolbar.button.file.upload": "Upload a file", "toolbar.button.file.upload": "Carrega un fitxer",
"toolbar.button.link": "Enlla\u00e7", "toolbar.button.link": "Enlla\u00e7",
"toolbar.button.ol": "Llista ordenada", "toolbar.button.ol": "Llista ordenada",
"toolbar.button.ul": "Llista de vinyetes", "toolbar.button.ul": "Llista de vinyetes",

View File

@@ -24,8 +24,14 @@
"delete": "Smazat", "delete": "Smazat",
"dimensions": "Rozměry", "dimensions": "Rozměry",
"discard": "Zahodit", "discard": "Zahodit",
"download": "Download",
"duplicate": "Duplicate",
"edit": "Upravit", "edit": "Upravit",
"dialog.files.empty": "No files to select",
"dialog.pages.empty": "No pages to select",
"dialog.users.empty": "No users to select",
"email": "Email", "email": "Email",
"email.placeholder": "mail@example.com", "email.placeholder": "mail@example.com",
@@ -65,6 +71,14 @@
"error.form.incomplete": "Prosím opravte všechny chyby ve formuláři", "error.form.incomplete": "Prosím opravte všechny chyby ve formuláři",
"error.form.notSaved": "Formulář nemohl být uložen", "error.form.notSaved": "Formulář nemohl být uložen",
"error.language.code": "Please enter a valid code for the language",
"error.language.duplicate": "The language already exists",
"error.language.name": "Please enter a valid name for the language",
"error.license.format": "Please enter a valid license key",
"error.license.email": "Zadejte prosím platnou emailovou adresu",
"error.license.verification": "The license could not be verified",
"error.page.changeSlug.permission": "error.page.changeSlug.permission":
"Nem\u016f\u017eete zm\u011bnit URL t\u00e9to str\u00e1nky", "Nem\u016f\u017eete zm\u011bnit URL t\u00e9to str\u00e1nky",
"error.page.changeStatus.incomplete": "error.page.changeStatus.incomplete":
@@ -90,6 +104,7 @@
"Koncept stránky, který obsahuje v adrese URL \"{slug}\" již existuje ", "Koncept stránky, který obsahuje v adrese URL \"{slug}\" již existuje ",
"error.page.duplicate": "error.page.duplicate":
"Stránka, která v adrese URL obsahuje \"{slug}\" již existuje", "Stránka, která v adrese URL obsahuje \"{slug}\" již existuje",
"error.page.duplicate.permission": "You are not allowed to duplicate \"{slug}\"",
"error.page.notFound": "Str\u00e1nku se nepoda\u0159ilo nal\u00e9zt.", "error.page.notFound": "Str\u00e1nku se nepoda\u0159ilo nal\u00e9zt.",
"error.page.num.invalid": "error.page.num.invalid":
"Zadejte prosím platné pořadové číslo. Čísla nesmí být záporná.", "Zadejte prosím platné pořadové číslo. Čísla nesmí být záporná.",
@@ -270,6 +285,13 @@
"loading": "Načítám", "loading": "Načítám",
"lock.unsaved": "Unsaved changes",
"lock.isLocked": "Unsaved changes by <strong>{email}</strong>",
"lock.file.isLocked": "The file is currently being edited by {email} and cannot be changed.",
"lock.page.isLocked": "The page is currently being edited by {email} and cannot be changed.",
"lock.unlock": "Unlock",
"lock.isUnlocked": "Your unsaved changes have been overwritten by another user. You can download your changes to merge them manually.",
"login": "P\u0159ihl\u00e1sit se", "login": "P\u0159ihl\u00e1sit se",
"login.remember": "Zůstat přihlášen", "login.remember": "Zůstat přihlášen",
@@ -297,6 +319,8 @@
"more": "Více", "more": "Více",
"name": "Jméno", "name": "Jméno",
"next": "Další", "next": "Další",
"off": "off",
"on": "on",
"open": "Otevřít", "open": "Otevřít",
"options": "Možnosti", "options": "Možnosti",
@@ -317,6 +341,9 @@
"<strong>Tato stránka má podstránky</strong>. <br>Všechny podstránky budou vymazány.", "<strong>Tato stránka má podstránky</strong>. <br>Všechny podstránky budou vymazány.",
"page.delete.confirm.title": "Pro potvrzení zadejte titulek stránky", "page.delete.confirm.title": "Pro potvrzení zadejte titulek stránky",
"page.draft.create": "Vytvořit koncept", "page.draft.create": "Vytvořit koncept",
"page.duplicate.appendix": "Kopírovat",
"page.duplicate.files": "Copy files",
"page.duplicate.pages": "Copy pages",
"page.status": "Stav", "page.status": "Stav",
"page.status.draft": "Koncept", "page.status.draft": "Koncept",
"page.status.draft.description": "page.status.draft.description":
@@ -342,9 +369,13 @@
"revert": "Zahodit", "revert": "Zahodit",
"role": "Role", "role": "Role",
"role.admin.description": "The admin has all rights",
"role.admin.title": "Admin",
"role.all": "Vše", "role.all": "Vše",
"role.empty": "Neexistují uživatelé s touto rolí", "role.empty": "Neexistují uživatelé s touto rolí",
"role.description.placeholder": "Žádný popis", "role.description.placeholder": "Žádný popis",
"role.nobody.description": "This is a fallback role without any permissions",
"role.nobody.title": "Nobody",
"save": "Ulo\u017eit", "save": "Ulo\u017eit",
"search": "Hledat", "search": "Hledat",

View File

@@ -24,8 +24,14 @@
"delete": "Slet", "delete": "Slet",
"dimensions": "Dimensioner", "dimensions": "Dimensioner",
"discard": "Kass\u00e9r", "discard": "Kass\u00e9r",
"download": "Download",
"duplicate": "Dupliker",
"edit": "Rediger", "edit": "Rediger",
"dialog.files.empty": "Ingen filer kan vælges",
"dialog.pages.empty": "Ingen sider kan vælges",
"dialog.users.empty": "Ingen brugere kan vælges",
"email": "Email", "email": "Email",
"email.placeholder": "mail@eksempel.dk", "email.placeholder": "mail@eksempel.dk",
@@ -65,6 +71,14 @@
"error.form.incomplete": "Ret venligst alle fejl i formularen...", "error.form.incomplete": "Ret venligst alle fejl i formularen...",
"error.form.notSaved": "Formularen kunne ikke gemmes", "error.form.notSaved": "Formularen kunne ikke gemmes",
"error.language.code": "Indtast venligst en gyldig kode for sproget",
"error.language.duplicate": "Sproget eksisterer allerede",
"error.language.name": "Indtast venligst et gyldigt navn for sproget",
"error.license.format": "Indtast venligst en gyldig licensnøgle",
"error.license.email": "Indtast venligst en gyldig email adresse",
"error.license.verification": "Licensen kunne ikke verificeres",
"error.page.changeSlug.permission": "error.page.changeSlug.permission":
"Du kan ikke \u00e6ndre denne sides URL", "Du kan ikke \u00e6ndre denne sides URL",
"error.page.changeStatus.incomplete": "error.page.changeStatus.incomplete":
@@ -90,6 +104,7 @@
"En sidekladde med URL-endelsen \"{slug}\" eksisterer allerede", "En sidekladde med URL-endelsen \"{slug}\" eksisterer allerede",
"error.page.duplicate": "error.page.duplicate":
"En side med URL-endelsen \"{slug}\" eksisterer allerede", "En side med URL-endelsen \"{slug}\" eksisterer allerede",
"error.page.duplicate.permission": "Du har ikke mulighed for at duplikere \"{slug}\"",
"error.page.notFound": "Siden kunne ikke findes", "error.page.notFound": "Siden kunne ikke findes",
"error.page.num.invalid": "error.page.num.invalid":
"Indtast venligst et gyldigt sorteringsnummer. Nummeret kan ikke være negativt.", "Indtast venligst et gyldigt sorteringsnummer. Nummeret kan ikke være negativt.",
@@ -104,18 +119,18 @@
"error.section.files.max.singular": "error.section.files.max.singular":
"Du kan ikke tilføje mere end en fil til \"{section}\" sektionen", "Du kan ikke tilføje mere end en fil til \"{section}\" sektionen",
"error.section.files.min.plural": "error.section.files.min.plural":
"The \"{section}\" section requires at least {min} files", "Sektionen \"{section}\" kræver mindst {min} filer",
"error.section.files.min.singular": "error.section.files.min.singular":
"The \"{section}\" section requires at least one file", "Sektionen \"{section}\" kræver mindst en fil",
"error.section.pages.max.plural": "error.section.pages.max.plural":
"Du kan ikke tilføje flere end {max} sider til \"{section}\" sektionen", "Du kan ikke tilføje flere end {max} sider til \"{section}\" sektionen",
"error.section.pages.max.singular": "error.section.pages.max.singular":
"Du kan ikke tilføje mere end een side til \"{section}\" sektionen", "Du kan ikke tilføje mere end een side til \"{section}\" sektionen",
"error.section.pages.min.plural": "error.section.pages.min.plural":
"The \"{section}\" section requires at least {min} pages", "Sektionen \"{section}\" kræver mindst {min} sider",
"error.section.pages.min.singular": "error.section.pages.min.singular":
"The \"{section}\" section requires at least one page", "Sektionen \"{section}\" kræver mindst en side",
"error.section.notLoaded": "Sektionen \"{section}\" kunne ikke indlæses", "error.section.notLoaded": "Sektionen \"{section}\" kunne ikke indlæses",
"error.section.type.invalid": "Sektionstypen \"{type}\" er ikke gyldig", "error.section.type.invalid": "Sektionstypen \"{type}\" er ikke gyldig",
@@ -270,6 +285,13 @@
"loading": "Indlæser", "loading": "Indlæser",
"lock.unsaved": "Ugemte ændringer",
"lock.isLocked": "Ugemte ændringer af <strong>{email}</strong>",
"lock.file.isLocked": "Filen redigeres på nuværende af {email} og kan derfor ikke ændres.",
"lock.page.isLocked": "Siden redigeres på nuværende af {email} og kan derfor ikke ændres.",
"lock.unlock": "Lås op",
"lock.isUnlocked": "Dine ugemte ændringer er blevet overskrevet af en anden bruger. Du kan downloade dine ændringer for at flette dem ind manuelt.",
"login": "Log ind", "login": "Log ind",
"login.remember": "Forbliv logget ind", "login.remember": "Forbliv logget ind",
@@ -297,6 +319,8 @@
"more": "Mere", "more": "Mere",
"name": "Navn", "name": "Navn",
"next": "Næste", "next": "Næste",
"off": "Sluk",
"on": "Tænd",
"open": "Åben", "open": "Åben",
"options": "Indstillinger", "options": "Indstillinger",
@@ -317,6 +341,9 @@
"<strong>Denne side har undersider</strong>. <br>Alle undersider vil også blive slettet.", "<strong>Denne side har undersider</strong>. <br>Alle undersider vil også blive slettet.",
"page.delete.confirm.title": "Indtast sidens titel for at bekræfte", "page.delete.confirm.title": "Indtast sidens titel for at bekræfte",
"page.draft.create": "Opret kladde", "page.draft.create": "Opret kladde",
"page.duplicate.appendix": "Kopier",
"page.duplicate.files": "Kopier filer",
"page.duplicate.pages": "Kopier sider",
"page.status": "Status", "page.status": "Status",
"page.status.draft": "Kladde", "page.status.draft": "Kladde",
"page.status.draft.description": "page.status.draft.description":
@@ -342,9 +369,13 @@
"revert": "Kass\u00e9r", "revert": "Kass\u00e9r",
"role": "Rolle", "role": "Rolle",
"role.admin.description": "Admin har alle rettigheder",
"role.admin.title": "Admin",
"role.all": "All", "role.all": "All",
"role.empty": "Der er ingen bruger med denne rolle", "role.empty": "Der er ingen bruger med denne rolle",
"role.description.placeholder": "Ingen beskrivelse", "role.description.placeholder": "Ingen beskrivelse",
"role.nobody.description": "Dette er en tilbagefaldsrolle uden rettigheder",
"role.nobody.title": "Ingen",
"save": "Gem", "save": "Gem",
"search": "Søg", "search": "Søg",
@@ -366,8 +397,8 @@
"toolbar.button.heading.3": "Overskrift 3", "toolbar.button.heading.3": "Overskrift 3",
"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": "Vælg en fil",
"toolbar.button.file.upload": "Upload a file", "toolbar.button.file.upload": "Upload en fil",
"toolbar.button.link": "Link", "toolbar.button.link": "Link",
"toolbar.button.ol": "Ordnet liste", "toolbar.button.ol": "Ordnet liste",
"toolbar.button.ul": "Punktliste", "toolbar.button.ul": "Punktliste",

View File

@@ -24,8 +24,14 @@
"delete": "L\u00f6schen", "delete": "L\u00f6schen",
"dimensions": "Maße", "dimensions": "Maße",
"discard": "Verwerfen", "discard": "Verwerfen",
"download": "Download",
"duplicate": "Duplizieren",
"edit": "Bearbeiten", "edit": "Bearbeiten",
"dialog.files.empty": "Keine verfügbaren Dateien",
"dialog.pages.empty": "Keine verfügbaren Seiten",
"dialog.users.empty": "Keine verfügbaren Benutzer",
"email": "E-Mail", "email": "E-Mail",
"email.placeholder": "mail@beispiel.de", "email.placeholder": "mail@beispiel.de",
@@ -65,6 +71,14 @@
"error.form.incomplete": "Bitte behebe alle Fehler …", "error.form.incomplete": "Bitte behebe alle Fehler …",
"error.form.notSaved": "Das Formular konnte nicht gespeichert werden", "error.form.notSaved": "Das Formular konnte nicht gespeichert werden",
"error.language.code": "Bitte gib einen gültigen Code für die Sprache an",
"error.language.duplicate": "Die Sprache besteht bereits",
"error.language.name": "Bitte gib einen gültigen Namen für die Sprache an",
"error.license.format": "Bitte gib einen gültigen Lizenzschlüssel ein",
"error.license.email": "Bitte gib eine gültige E-Mailadresse an",
"error.license.verification": "Die Lizenz konnte nicht verifiziert werden",
"error.page.changeSlug.permission": "error.page.changeSlug.permission":
"Du darfst die URL der Seite \"{slug}\" nicht ändern", "Du darfst die URL der Seite \"{slug}\" nicht ändern",
"error.page.changeStatus.incomplete": "error.page.changeStatus.incomplete":
@@ -90,6 +104,7 @@
"Ein Entwurf mit dem URL-Kürzel \"{slug}\" besteht bereits", "Ein Entwurf mit dem URL-Kürzel \"{slug}\" besteht bereits",
"error.page.duplicate": "error.page.duplicate":
"Eine Seite mit dem URL-Kürzel \"{slug}\" besteht bereits", "Eine Seite mit dem URL-Kürzel \"{slug}\" besteht bereits",
"error.page.duplicate.permission": "Du kannst die Seite \"{slug}\" nicht duplizieren",
"error.page.notFound": "Die Seite \"{slug}\" konnte nicht gefunden werden", "error.page.notFound": "Die Seite \"{slug}\" konnte nicht gefunden werden",
"error.page.num.invalid": "error.page.num.invalid":
"Bitte gib eine gültige Sortierungszahl an. Negative Zahlen sind nicht erlaubt.", "Bitte gib eine gültige Sortierungszahl an. Negative Zahlen sind nicht erlaubt.",
@@ -260,7 +275,7 @@
"license.buy": "Kaufe eine Lizenz", "license.buy": "Kaufe eine Lizenz",
"license.register": "Registrieren", "license.register": "Registrieren",
"license.register.help": "license.register.help":
"Den Lizenzcode findest du in der Bestätigungsmai zu deinem Kauf. Bitte kopiere und füge ihn ein, um Kirby zu registrieren.", "Den Lizenzcode findest du in der Bestätigungsmail zu deinem Kauf. Bitte kopiere und füge ihn ein, um Kirby zu registrieren.",
"license.register.label": "Bitte gib deinen Lizenzcode ein", "license.register.label": "Bitte gib deinen Lizenzcode ein",
"license.register.success": "Vielen Dank für deine Unterstützung", "license.register.success": "Vielen Dank für deine Unterstützung",
"license.unregistered": "Dies ist eine unregistrierte Kirby-Demo", "license.unregistered": "Dies ist eine unregistrierte Kirby-Demo",
@@ -270,6 +285,13 @@
"loading": "Laden", "loading": "Laden",
"lock.unsaved": "Ungespeicherte Änderungen",
"lock.isLocked": "Ungespeicherte Änderungen von <strong>{email}</strong>",
"lock.file.isLocked": "Die Datei wird von {email} bearbeitet und kann nicht geändert werden.",
"lock.page.isLocked": "Die Seite wird von {email} bearbeitet und kann nicht geändert werden.",
"lock.unlock": "Entsperren",
"lock.isUnlocked": "Deine ungespeicherten Änderungen wurden von einem anderen Benutzer überschrieben. Du kannst sie herunterladen, um sie manuell einzufügen. ",
"login": "Anmelden", "login": "Anmelden",
"login.remember": "Angemeldet bleiben", "login.remember": "Angemeldet bleiben",
@@ -297,6 +319,8 @@
"more": "Mehr", "more": "Mehr",
"name": "Name", "name": "Name",
"next": "Nächster Eintrag", "next": "Nächster Eintrag",
"off": "aus",
"on": "an",
"open": "Öffnen", "open": "Öffnen",
"options": "Optionen", "options": "Optionen",
@@ -317,6 +341,9 @@
"<strong>Diese Seite hat Unterseiten</strong>. <br>Alle Unterseiten werden ebenfalls gelöscht.", "<strong>Diese Seite hat Unterseiten</strong>. <br>Alle Unterseiten werden ebenfalls gelöscht.",
"page.delete.confirm.title": "Gib zur Bestätigung den Seitentitel ein", "page.delete.confirm.title": "Gib zur Bestätigung den Seitentitel ein",
"page.draft.create": "Entwurf anlegen", "page.draft.create": "Entwurf anlegen",
"page.duplicate.appendix": "Kopie",
"page.duplicate.files": "Dateien kopieren",
"page.duplicate.pages": "Seiten kopieren",
"page.status": "Status", "page.status": "Status",
"page.status.draft": "Entwurf", "page.status.draft": "Entwurf",
"page.status.draft.description": "page.status.draft.description":
@@ -342,9 +369,13 @@
"revert": "Verwerfen", "revert": "Verwerfen",
"role": "Rolle", "role": "Rolle",
"role.admin.description": "Administratoren haben alle Rechte",
"role.admin.title": "Administrator",
"role.all": "Alle", "role.all": "Alle",
"role.empty": "Keine Benutzer mit dieser Rolle", "role.empty": "Keine Benutzer mit dieser Rolle",
"role.description.placeholder": "Keine Beschreibung", "role.description.placeholder": "Keine Beschreibung",
"role.nobody.description": "Dies ist die Platzhalterrolle ohne Rechte",
"role.nobody.title": "Niemand",
"save": "Speichern", "save": "Speichern",
"search": "Suchen", "search": "Suchen",

View File

@@ -24,8 +24,14 @@
"delete": "\u0394\u03b9\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae", "delete": "\u0394\u03b9\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae",
"dimensions": "Διαστάσεις", "dimensions": "Διαστάσεις",
"discard": "Απόρριψη", "discard": "Απόρριψη",
"download": "Download",
"duplicate": "Duplicate",
"edit": "\u0395\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1", "edit": "\u0395\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1",
"dialog.files.empty": "No files to select",
"dialog.pages.empty": "No pages to select",
"dialog.users.empty": "No users to select",
"email": "Διεύθυνση ηλεκτρονικού ταχυδρομείου", "email": "Διεύθυνση ηλεκτρονικού ταχυδρομείου",
"email.placeholder": "mail@example.com", "email.placeholder": "mail@example.com",
@@ -65,6 +71,14 @@
"error.form.incomplete": "Παρακαλώ διορθώστε τα σφάλματα στη φόρμα...", "error.form.incomplete": "Παρακαλώ διορθώστε τα σφάλματα στη φόρμα...",
"error.form.notSaved": "Δεν ήταν δυνατή η αποθήκευση της φόρμας", "error.form.notSaved": "Δεν ήταν δυνατή η αποθήκευση της φόρμας",
"error.language.code": "Please enter a valid code for the language",
"error.language.duplicate": "The language already exists",
"error.language.name": "Please enter a valid name for the language",
"error.license.format": "Please enter a valid license key",
"error.license.email": "Παρακαλώ εισάγετε μια έγκυρη διεύθυνση ηλεκτρονικού ταχυδρομείου",
"error.license.verification": "The license could not be verified",
"error.page.changeSlug.permission": "error.page.changeSlug.permission":
"Δεν επιτρέπεται να αλλάξετε το URL της σελίδας \"{slug}\"", "Δεν επιτρέπεται να αλλάξετε το URL της σελίδας \"{slug}\"",
"error.page.changeStatus.incomplete": "error.page.changeStatus.incomplete":
@@ -90,6 +104,7 @@
"Υπάρχει ήδη ένα προσχέδιο σελίδας με την διεύθυνση URL \"{slug}\"", "Υπάρχει ήδη ένα προσχέδιο σελίδας με την διεύθυνση URL \"{slug}\"",
"error.page.duplicate": "error.page.duplicate":
"Υπάρχει ήδη μια σελίδα με την διεύθυνση URL \"{slug}\"", "Υπάρχει ήδη μια σελίδα με την διεύθυνση URL \"{slug}\"",
"error.page.duplicate.permission": "You are not allowed to duplicate \"{slug}\"",
"error.page.notFound": "Δεν ήταν δυνατή η εύρεση της σελίδας \"{slug}\"", "error.page.notFound": "Δεν ήταν δυνατή η εύρεση της σελίδας \"{slug}\"",
"error.page.num.invalid": "error.page.num.invalid":
"Παρακαλώ εισάγετε έναν έγκυρο αριθμό ταξινόμησης. Οι αριθμοί δεν μπορεί να είναι αρνητικοί.", "Παρακαλώ εισάγετε έναν έγκυρο αριθμό ταξινόμησης. Οι αριθμοί δεν μπορεί να είναι αρνητικοί.",
@@ -270,6 +285,13 @@
"loading": "Φόρτωση", "loading": "Φόρτωση",
"lock.unsaved": "Unsaved changes",
"lock.isLocked": "Unsaved changes by <strong>{email}</strong>",
"lock.file.isLocked": "The file is currently being edited by {email} and cannot be changed.",
"lock.page.isLocked": "The page is currently being edited by {email} and cannot be changed.",
"lock.unlock": "Unlock",
"lock.isUnlocked": "Your unsaved changes have been overwritten by another user. You can download your changes to merge them manually.",
"login": "\u03a3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7", "login": "\u03a3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7",
"login.remember": "Κρατήστε με συνδεδεμένο", "login.remember": "Κρατήστε με συνδεδεμένο",
@@ -297,6 +319,8 @@
"more": "Περισσότερα", "more": "Περισσότερα",
"name": "Ονομασία", "name": "Ονομασία",
"next": "Επόμενο", "next": "Επόμενο",
"off": "off",
"on": "on",
"open": "Άνοιγμα", "open": "Άνοιγμα",
"options": "Eπιλογές", "options": "Eπιλογές",
@@ -317,6 +341,9 @@
"<strong>Αυτή η σελίδα έχει υποσελίδες</strong>. <br>Όλες οι υποσελίδες θα διαγραφούν επίσης.", "<strong>Αυτή η σελίδα έχει υποσελίδες</strong>. <br>Όλες οι υποσελίδες θα διαγραφούν επίσης.",
"page.delete.confirm.title": "Εισάγετε τον τίτλο της σελίδας για επιβεβαίωση", "page.delete.confirm.title": "Εισάγετε τον τίτλο της σελίδας για επιβεβαίωση",
"page.draft.create": "Δημιουργία προσχεδίου", "page.draft.create": "Δημιουργία προσχεδίου",
"page.duplicate.appendix": "Αντιγραφή",
"page.duplicate.files": "Copy files",
"page.duplicate.pages": "Copy pages",
"page.status": "Kατάσταση", "page.status": "Kατάσταση",
"page.status.draft": "Προσχέδιο", "page.status.draft": "Προσχέδιο",
"page.status.draft.description": "page.status.draft.description":
@@ -342,9 +369,13 @@
"revert": "\u0391\u03b3\u03bd\u03cc\u03b7\u03c3\u03b7", "revert": "\u0391\u03b3\u03bd\u03cc\u03b7\u03c3\u03b7",
"role": "\u03a1\u03cc\u03bb\u03bf\u03c2", "role": "\u03a1\u03cc\u03bb\u03bf\u03c2",
"role.admin.description": "The admin has all rights",
"role.admin.title": "Admin",
"role.all": "Όλα", "role.all": "Όλα",
"role.empty": "Δεν υπάρχουν χρήστες με αυτόν τον ρόλο", "role.empty": "Δεν υπάρχουν χρήστες με αυτόν τον ρόλο",
"role.description.placeholder": "Χωρίς περιγραφή", "role.description.placeholder": "Χωρίς περιγραφή",
"role.nobody.description": "This is a fallback role without any permissions",
"role.nobody.title": "Nobody",
"save": "\u0391\u03c0\u03bf\u03b8\u03ae\u03ba\u03b5\u03c5\u03c3\u03b7", "save": "\u0391\u03c0\u03bf\u03b8\u03ae\u03ba\u03b5\u03c5\u03c3\u03b7",
"search": "Αναζήτηση", "search": "Αναζήτηση",

View File

@@ -24,8 +24,14 @@
"delete": "Delete", "delete": "Delete",
"dimensions": "Dimensions", "dimensions": "Dimensions",
"discard": "Discard", "discard": "Discard",
"download": "Download",
"duplicate": "Duplicate",
"edit": "Edit", "edit": "Edit",
"dialog.files.empty": "No files to select",
"dialog.pages.empty": "No pages to select",
"dialog.users.empty": "No users to select",
"email": "Email", "email": "Email",
"email.placeholder": "mail@example.com", "email.placeholder": "mail@example.com",
@@ -65,6 +71,14 @@
"error.form.incomplete": "Please fix all form errors…", "error.form.incomplete": "Please fix all form errors…",
"error.form.notSaved": "The form could not be saved", "error.form.notSaved": "The form could not be saved",
"error.language.code": "Please enter a valid code for the language",
"error.language.duplicate": "The language already exists",
"error.language.name": "Please enter a valid name for the language",
"error.license.format": "Please enter a valid license key",
"error.license.email": "Please enter a valid email address",
"error.license.verification": "The license could not be verified",
"error.page.changeSlug.permission": "error.page.changeSlug.permission":
"You are not allowed to change the URL appendix for \"{slug}\"", "You are not allowed to change the URL appendix for \"{slug}\"",
"error.page.changeStatus.incomplete": "error.page.changeStatus.incomplete":
@@ -90,6 +104,7 @@
"A page draft with the URL appendix \"{slug}\" already exists", "A page draft with the URL appendix \"{slug}\" already exists",
"error.page.duplicate": "error.page.duplicate":
"A page with the URL appendix \"{slug}\" already exists", "A page with the URL appendix \"{slug}\" already exists",
"error.page.duplicate.permission": "You are not allowed to duplicate \"{slug}\"",
"error.page.notFound": "The page \"{slug}\" cannot be found", "error.page.notFound": "The page \"{slug}\" cannot be found",
"error.page.num.invalid": "error.page.num.invalid":
"Please enter a valid sorting number. Numbers must not be negative.", "Please enter a valid sorting number. Numbers must not be negative.",
@@ -270,6 +285,13 @@
"loading": "Loading", "loading": "Loading",
"lock.unsaved": "Unsaved changes",
"lock.isLocked": "Unsaved changes by <strong>{email}</strong>",
"lock.file.isLocked": "The file is currently being edited by {email} and cannot be changed.",
"lock.page.isLocked": "The page is currently being edited by {email} and cannot be changed.",
"lock.unlock": "Unlock",
"lock.isUnlocked": "Your unsaved changes have been overwritten by another user. You can download your changes to merge them manually.",
"login": "Login", "login": "Login",
"login.remember": "Keep me logged in", "login.remember": "Keep me logged in",
@@ -297,6 +319,8 @@
"more": "More", "more": "More",
"name": "Name", "name": "Name",
"next": "Next", "next": "Next",
"off": "off",
"on": "on",
"open": "Open", "open": "Open",
"options": "Options", "options": "Options",
@@ -317,6 +341,9 @@
"<strong>This page has subpages</strong>. <br>All subpages will be deleted as well.", "<strong>This page has subpages</strong>. <br>All subpages will be deleted as well.",
"page.delete.confirm.title": "Enter the page title to confirm", "page.delete.confirm.title": "Enter the page title to confirm",
"page.draft.create": "Create draft", "page.draft.create": "Create draft",
"page.duplicate.appendix": "Copy",
"page.duplicate.files": "Copy files",
"page.duplicate.pages": "Copy pages",
"page.status": "Status", "page.status": "Status",
"page.status.draft": "Draft", "page.status.draft": "Draft",
"page.status.draft.description": "page.status.draft.description":
@@ -342,9 +369,13 @@
"revert": "Revert", "revert": "Revert",
"role": "Role", "role": "Role",
"role.admin.description": "The admin has all rights",
"role.admin.title": "Admin",
"role.all": "All", "role.all": "All",
"role.empty": "There are no users with this role", "role.empty": "There are no users with this role",
"role.description.placeholder": "No description", "role.description.placeholder": "No description",
"role.nobody.description": "This is a fallback role without any permissions",
"role.nobody.title": "Nobody",
"save": "Save", "save": "Save",
"search": "Search", "search": "Search",

View File

@@ -24,8 +24,14 @@
"delete": "Eliminar", "delete": "Eliminar",
"dimensions": "Dimensiones", "dimensions": "Dimensiones",
"discard": "Descartar", "discard": "Descartar",
"download": "Download",
"duplicate": "Duplicate",
"edit": "Editar", "edit": "Editar",
"dialog.files.empty": "No files to select",
"dialog.pages.empty": "No pages to select",
"dialog.users.empty": "No users to select",
"email": "Correo Electrónico", "email": "Correo Electrónico",
"email.placeholder": "correo@ejemplo.com", "email.placeholder": "correo@ejemplo.com",
@@ -65,6 +71,14 @@
"error.form.incomplete": "Por favor, corrige todos los errores del formulario...", "error.form.incomplete": "Por favor, corrige todos los errores del formulario...",
"error.form.notSaved": "No se pudo guardar el formulario.", "error.form.notSaved": "No se pudo guardar el formulario.",
"error.language.code": "Please enter a valid code for the language",
"error.language.duplicate": "The language already exists",
"error.language.name": "Please enter a valid name for the language",
"error.license.format": "Please enter a valid license key",
"error.license.email": "Por favor ingresa un correo electrónico valido",
"error.license.verification": "The license could not be verified",
"error.page.changeSlug.permission": "error.page.changeSlug.permission":
"No está permitido cambiar el apéndice de URL para \"{slug}\".", "No está permitido cambiar el apéndice de URL para \"{slug}\".",
"error.page.changeStatus.incomplete": "error.page.changeStatus.incomplete":
@@ -90,6 +104,7 @@
"Ya existe un borrador de página con el apéndice de URL \"{slug}\"", "Ya existe un borrador de página con el apéndice de URL \"{slug}\"",
"error.page.duplicate": "error.page.duplicate":
"Ya existe una página con el apéndice de URL \"{slug}\"", "Ya existe una página con el apéndice de URL \"{slug}\"",
"error.page.duplicate.permission": "You are not allowed to duplicate \"{slug}\"",
"error.page.notFound": "La página \"{slug}\" no se encuentra", "error.page.notFound": "La página \"{slug}\" no se encuentra",
"error.page.num.invalid": "error.page.num.invalid":
"Por favor, introduce un número de posición válido. Los números no deben ser negativos.", "Por favor, introduce un número de posición válido. Los números no deben ser negativos.",
@@ -270,6 +285,13 @@
"loading": "Cargando", "loading": "Cargando",
"lock.unsaved": "Unsaved changes",
"lock.isLocked": "Unsaved changes by <strong>{email}</strong>",
"lock.file.isLocked": "The file is currently being edited by {email} and cannot be changed.",
"lock.page.isLocked": "The page is currently being edited by {email} and cannot be changed.",
"lock.unlock": "Unlock",
"lock.isUnlocked": "Your unsaved changes have been overwritten by another user. You can download your changes to merge them manually.",
"login": "Iniciar sesi\u00f3n", "login": "Iniciar sesi\u00f3n",
"login.remember": "Mantener mi sesión iniciada", "login.remember": "Mantener mi sesión iniciada",
@@ -297,6 +319,8 @@
"more": "Màs", "more": "Màs",
"name": "Nombre", "name": "Nombre",
"next": "Siguiente", "next": "Siguiente",
"off": "off",
"on": "on",
"open": "Abrir", "open": "Abrir",
"options": "Opciones", "options": "Opciones",
@@ -317,6 +341,9 @@
"<strong>Esta página tiene subpáginas</strong>. <br>Todas las súbpaginas serán eliminadas también.", "<strong>Esta página tiene subpáginas</strong>. <br>Todas las súbpaginas serán eliminadas también.",
"page.delete.confirm.title": "Introduce el título de la página para confirmar", "page.delete.confirm.title": "Introduce el título de la página para confirmar",
"page.draft.create": "Crear borrador", "page.draft.create": "Crear borrador",
"page.duplicate.appendix": "Copiar",
"page.duplicate.files": "Copy files",
"page.duplicate.pages": "Copy pages",
"page.status": "Estado", "page.status": "Estado",
"page.status.draft": "Borrador", "page.status.draft": "Borrador",
"page.status.draft.description": "page.status.draft.description":
@@ -342,9 +369,13 @@
"revert": "Revertir", "revert": "Revertir",
"role": "Rol", "role": "Rol",
"role.admin.description": "The admin has all rights",
"role.admin.title": "Admin",
"role.all": "Todos", "role.all": "Todos",
"role.empty": "No hay usuarios con este rol", "role.empty": "No hay usuarios con este rol",
"role.description.placeholder": "Sin descripción", "role.description.placeholder": "Sin descripción",
"role.nobody.description": "This is a fallback role without any permissions",
"role.nobody.title": "Nobody",
"save": "Guardar", "save": "Guardar",
"search": "Buscar", "search": "Buscar",

View File

@@ -1,5 +1,5 @@
{ {
"add": "Add", "add": "Añadir",
"avatar": "Foto de perfil", "avatar": "Foto de perfil",
"back": "Atrás", "back": "Atrás",
"cancel": "Cancelar", "cancel": "Cancelar",
@@ -12,7 +12,7 @@
"date": "Fecha", "date": "Fecha",
"date.select": "Selecciona una fecha", "date.select": "Selecciona una fecha",
"day": "Dáa", "day": "Día",
"days.fri": "Vi", "days.fri": "Vi",
"days.mon": "Lu", "days.mon": "Lu",
"days.sat": "Sá", "days.sat": "Sá",
@@ -24,8 +24,14 @@
"delete": "Borrar", "delete": "Borrar",
"dimensions": "Dimensiones", "dimensions": "Dimensiones",
"discard": "Descartar", "discard": "Descartar",
"download": "Download",
"duplicate": "Duplicate",
"edit": "Editar", "edit": "Editar",
"dialog.files.empty": "No files to select",
"dialog.pages.empty": "No pages to select",
"dialog.users.empty": "No users to select",
"email": "Correo electrónico", "email": "Correo electrónico",
"email.placeholder": "correo@ejemplo.com", "email.placeholder": "correo@ejemplo.com",
@@ -33,7 +39,7 @@
"error.access.panel": "No estás autorizado para acceder al panel", "error.access.panel": "No estás autorizado para acceder al panel",
"error.avatar.create.fail": "No se pudo subir la foto de perfil.", "error.avatar.create.fail": "No se pudo subir la foto de perfil.",
"error.avatar.delete.fail": "Nose pudo borrar la foto de perfil", "error.avatar.delete.fail": "No se pudo borrar la foto de perfil",
"error.avatar.dimensions.invalid": "error.avatar.dimensions.invalid":
"Por favor, mantenga el ancho y la altura de la imagen de perfil debajo de 3000 píxeles", "Por favor, mantenga el ancho y la altura de la imagen de perfil debajo de 3000 píxeles",
"error.avatar.mime.forbidden": "error.avatar.mime.forbidden":
@@ -62,9 +68,17 @@
"error.file.type.forbidden": "No está permitido subir archivos {type}", "error.file.type.forbidden": "No está permitido subir archivos {type}",
"error.file.undefined": "El archivo no pudo ser encontrado", "error.file.undefined": "El archivo no pudo ser encontrado",
"error.form.incomplete": "Por favor, corrija todo los errores del formulario…", "error.form.incomplete": "Por favor, corrija todos los errores del formulario…",
"error.form.notSaved": "El formulario no pudo ser guardado", "error.form.notSaved": "El formulario no pudo ser guardado",
"error.language.code": "Please enter a valid code for the language",
"error.language.duplicate": "The language already exists",
"error.language.name": "Please enter a valid name for the language",
"error.license.format": "Please enter a valid license key",
"error.license.email": "Por favor, introduce un correo electrónico válido",
"error.license.verification": "The license could not be verified",
"error.page.changeSlug.permission": "error.page.changeSlug.permission":
"No está permitido cambiar el apéndice de URL para \"{slug}\"", "No está permitido cambiar el apéndice de URL para \"{slug}\"",
"error.page.changeStatus.incomplete": "error.page.changeStatus.incomplete":
@@ -90,6 +104,7 @@
"Un borrador de página con el apéndice de URL \"{slug}\" ya existe", "Un borrador de página con el apéndice de URL \"{slug}\" ya existe",
"error.page.duplicate": "error.page.duplicate":
"Una página con el apéndice de URL. \"{slug}\" ya existe", "Una página con el apéndice de URL. \"{slug}\" ya existe",
"error.page.duplicate.permission": "You are not allowed to duplicate \"{slug}\"",
"error.page.notFound": "La página \"{slug}\" no puede ser encontrada", "error.page.notFound": "La página \"{slug}\" no puede ser encontrada",
"error.page.num.invalid": "error.page.num.invalid":
"Por favor, introduzca un número válido. Estos no deben ser negativos.", "Por favor, introduzca un número válido. Estos no deben ser negativos.",
@@ -104,18 +119,18 @@
"error.section.files.max.singular": "error.section.files.max.singular":
"No debes agregar más de 1 archivo a la sección \"{section}\"", "No debes agregar más de 1 archivo a la sección \"{section}\"",
"error.section.files.min.plural": "error.section.files.min.plural":
"The \"{section}\" section requires at least {min} files", "La sección \"{section}\" requiere al menos {min} archivos",
"error.section.files.min.singular": "error.section.files.min.singular":
"The \"{section}\" section requires at least one file", "La sección \"{section}\" requiere al menos un archivo",
"error.section.pages.max.plural": "error.section.pages.max.plural":
"No debe agregar más de {max} páginas a la sección \"{section}\"", "No debe agregar más de {max} páginas a la sección \"{section}\"",
"error.section.pages.max.singular": "error.section.pages.max.singular":
"No debe agregar más de una página a la sección \"{section}\"", "No debe agregar más de una página a la sección \"{section}\"",
"error.section.pages.min.plural": "error.section.pages.min.plural":
"The \"{section}\" section requires at least {min} pages", "La sección \"{section}\" requiere al menos {min} páginas",
"error.section.pages.min.singular": "error.section.pages.min.singular":
"The \"{section}\" section requires at least one page", "La sección \"{section}\" requiere al menos una página",
"error.section.notLoaded": "La sección \"{name}\" no pudo ser cargada", "error.section.notLoaded": "La sección \"{name}\" no pudo ser cargada",
"error.section.type.invalid": "El sección tipo \"{tipo}\" no es válido", "error.section.type.invalid": "El sección tipo \"{tipo}\" no es válido",
@@ -151,7 +166,7 @@
"error.user.notFound": "El usuario \"{name}\" no pudo ser encontrado", "error.user.notFound": "El usuario \"{name}\" no pudo ser encontrado",
"error.user.password.invalid": "error.user.password.invalid":
"Por favor introduce una contraseña válida. Las contraseñas deben tener al menos 8 caracteres de largo.", "Por favor introduce una contraseña válida. Las contraseñas deben tener al menos 8 caracteres de largo.",
"error.user.password.notSame": "las contraseñas no coinciden", "error.user.password.notSame": "Las contraseñas no coinciden",
"error.user.password.undefined": "El usuario no tiene contraseña", "error.user.password.undefined": "El usuario no tiene contraseña",
"error.user.role.invalid": "Por favor ingrese un rol válido", "error.user.role.invalid": "Por favor ingrese un rol válido",
"error.user.undefined": "El usuario no puede ser encontrado", "error.user.undefined": "El usuario no puede ser encontrado",
@@ -270,6 +285,13 @@
"loading": "Cargando", "loading": "Cargando",
"lock.unsaved": "Unsaved changes",
"lock.isLocked": "Unsaved changes by <strong>{email}</strong>",
"lock.file.isLocked": "The file is currently being edited by {email} and cannot be changed.",
"lock.page.isLocked": "The page is currently being edited by {email} and cannot be changed.",
"lock.unlock": "Unlock",
"lock.isUnlocked": "Your unsaved changes have been overwritten by another user. You can download your changes to merge them manually.",
"login": "Iniciar sesión", "login": "Iniciar sesión",
"login.remember": "Mantener sesión iniciada", "login.remember": "Mantener sesión iniciada",
@@ -297,10 +319,12 @@
"more": "Más", "more": "Más",
"name": "Nombre", "name": "Nombre",
"next": "Siguiente", "next": "Siguiente",
"off": "off",
"on": "on",
"open": "Abrir", "open": "Abrir",
"options": "Opciones", "options": "Opciones",
"orientation": "Orientacion", "orientation": "Orientación",
"orientation.landscape": "Paisaje", "orientation.landscape": "Paisaje",
"orientation.portrait": "Retrato", "orientation.portrait": "Retrato",
"orientation.square": "Cuadrado", "orientation.square": "Cuadrado",
@@ -317,6 +341,9 @@
"<strong>Esta página tiene subpáginas</strong>. <br>Todas las subpáginas también serán eliminadas.", "<strong>Esta página tiene subpáginas</strong>. <br>Todas las subpáginas también serán eliminadas.",
"page.delete.confirm.title": "Introduzca el título de la página para confirmar", "page.delete.confirm.title": "Introduzca el título de la página para confirmar",
"page.draft.create": "Crear borrador", "page.draft.create": "Crear borrador",
"page.duplicate.appendix": "Copiar",
"page.duplicate.files": "Copy files",
"page.duplicate.pages": "Copy pages",
"page.status": "Estado", "page.status": "Estado",
"page.status.draft": "Borrador", "page.status.draft": "Borrador",
"page.status.draft.description": "page.status.draft.description":
@@ -342,9 +369,13 @@
"revert": "Revertir", "revert": "Revertir",
"role": "Rol", "role": "Rol",
"role.admin.description": "The admin has all rights",
"role.admin.title": "Admin",
"role.all": "Todos", "role.all": "Todos",
"role.empty": "No hay usuarios con este rol", "role.empty": "No hay usuarios con este rol",
"role.description.placeholder": "Sin descripción", "role.description.placeholder": "Sin descripción",
"role.nobody.description": "This is a fallback role without any permissions",
"role.nobody.title": "Nobody",
"save": "Guardar", "save": "Guardar",
"search": "Buscar", "search": "Buscar",
@@ -366,8 +397,8 @@
"toolbar.button.heading.3": "Encabezado 3", "toolbar.button.heading.3": "Encabezado 3",
"toolbar.button.italic": "Italica", "toolbar.button.italic": "Italica",
"toolbar.button.file": "Archivo", "toolbar.button.file": "Archivo",
"toolbar.button.file.select": "Select a file", "toolbar.button.file.select": "Seleccione un archivo",
"toolbar.button.file.upload": "Upload a file", "toolbar.button.file.upload": "Sube un archivo",
"toolbar.button.link": "Enlace", "toolbar.button.link": "Enlace",
"toolbar.button.ol": "Lista ordenada", "toolbar.button.ol": "Lista ordenada",
"toolbar.button.ul": "Lista de viñetas", "toolbar.button.ul": "Lista de viñetas",

View File

@@ -24,8 +24,14 @@
"delete": "\u062d\u0630\u0641", "delete": "\u062d\u0630\u0641",
"dimensions": "ابعاد", "dimensions": "ابعاد",
"discard": "\u0627\u0646\u0635\u0631\u0627\u0641", "discard": "\u0627\u0646\u0635\u0631\u0627\u0641",
"download": "Download",
"duplicate": "Duplicate",
"edit": "\u0648\u06cc\u0631\u0627\u06cc\u0634", "edit": "\u0648\u06cc\u0631\u0627\u06cc\u0634",
"dialog.files.empty": "No files to select",
"dialog.pages.empty": "No pages to select",
"dialog.users.empty": "No users to select",
"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",
@@ -65,6 +71,14 @@
"error.form.incomplete": "لطفا کلیه خطاهای فرم را برطرف کنید", "error.form.incomplete": "لطفا کلیه خطاهای فرم را برطرف کنید",
"error.form.notSaved": "امکان دخیره فرم وجود ندارد", "error.form.notSaved": "امکان دخیره فرم وجود ندارد",
"error.language.code": "Please enter a valid code for the language",
"error.language.duplicate": "The language already exists",
"error.language.name": "Please enter a valid name for the language",
"error.license.format": "Please enter a valid license key",
"error.license.email": "لطفا ایمیل صحیحی وارد کنید",
"error.license.verification": "The license could not be verified",
"error.page.changeSlug.permission": "error.page.changeSlug.permission":
"شما امکان تغییر پسوند Url صفحه «{slug}» را ندارید", "شما امکان تغییر پسوند Url صفحه «{slug}» را ندارید",
"error.page.changeStatus.incomplete": "error.page.changeStatus.incomplete":
@@ -90,6 +104,7 @@
"صفحه پیش‌نویسی با پسوند Url مشابه «{slug}» هم اکنون موجود است", "صفحه پیش‌نویسی با پسوند Url مشابه «{slug}» هم اکنون موجود است",
"error.page.duplicate": "error.page.duplicate":
"صفحه‌ای با آدرس Url مشابه «{slug}» هم اکنون موجود است", "صفحه‌ای با آدرس Url مشابه «{slug}» هم اکنون موجود است",
"error.page.duplicate.permission": "You are not allowed to duplicate \"{slug}\"",
"error.page.notFound": "صفحه مورد نظر با آدرس «{slug}» پیدا نشد.", "error.page.notFound": "صفحه مورد نظر با آدرس «{slug}» پیدا نشد.",
"error.page.num.invalid": "error.page.num.invalid":
"لطفا شماره ترتیب را بدرستی وارد نمایید. اعداد نباید منفی باشند.", "لطفا شماره ترتیب را بدرستی وارد نمایید. اعداد نباید منفی باشند.",
@@ -270,6 +285,13 @@
"loading": "بارگزاری", "loading": "بارگزاری",
"lock.unsaved": "Unsaved changes",
"lock.isLocked": "Unsaved changes by <strong>{email}</strong>",
"lock.file.isLocked": "The file is currently being edited by {email} and cannot be changed.",
"lock.page.isLocked": "The page is currently being edited by {email} and cannot be changed.",
"lock.unlock": "Unlock",
"lock.isUnlocked": "Your unsaved changes have been overwritten by another user. You can download your changes to merge them manually.",
"login": "ورود", "login": "ورود",
"login.remember": "مرا به خاطر بسپار", "login.remember": "مرا به خاطر بسپار",
@@ -297,6 +319,8 @@
"more": "بیشتر", "more": "بیشتر",
"name": "نام", "name": "نام",
"next": "بعدی", "next": "بعدی",
"off": "off",
"on": "on",
"open": "بازکردن", "open": "بازکردن",
"options": "گزینه‌ها", "options": "گزینه‌ها",
@@ -317,6 +341,9 @@
"<strong>این صفحه دارای زیرصفحه است</strong>. <br>تمام زیر صفحات نیز حذف خواهد شد.", "<strong>این صفحه دارای زیرصفحه است</strong>. <br>تمام زیر صفحات نیز حذف خواهد شد.",
"page.delete.confirm.title": "جهت ادامه عنوان صفحه را وارد کنید", "page.delete.confirm.title": "جهت ادامه عنوان صفحه را وارد کنید",
"page.draft.create": "ایجاد پیش‌نویس", "page.draft.create": "ایجاد پیش‌نویس",
"page.duplicate.appendix": "کپی",
"page.duplicate.files": "Copy files",
"page.duplicate.pages": "Copy pages",
"page.status": "وضعیت", "page.status": "وضعیت",
"page.status.draft": "پیش‌نویس", "page.status.draft": "پیش‌نویس",
"page.status.draft.description": "page.status.draft.description":
@@ -342,9 +369,13 @@
"revert": "بازگرداندن تغییرات", "revert": "بازگرداندن تغییرات",
"role": "\u0646\u0642\u0634", "role": "\u0646\u0642\u0634",
"role.admin.description": "The admin has all rights",
"role.admin.title": "Admin",
"role.all": "همه", "role.all": "همه",
"role.empty": "هیچ کاربری با این نقش وجود ندارد", "role.empty": "هیچ کاربری با این نقش وجود ندارد",
"role.description.placeholder": "فاقد شرح", "role.description.placeholder": "فاقد شرح",
"role.nobody.description": "This is a fallback role without any permissions",
"role.nobody.title": "Nobody",
"save": "\u0630\u062e\u06cc\u0631\u0647", "save": "\u0630\u062e\u06cc\u0631\u0647",
"search": "جستجو", "search": "جستجو",

View File

@@ -24,8 +24,14 @@
"delete": "Poista", "delete": "Poista",
"dimensions": "Mitat", "dimensions": "Mitat",
"discard": "Hylkää", "discard": "Hylkää",
"download": "Download",
"duplicate": "Duplicate",
"edit": "Muokkaa", "edit": "Muokkaa",
"dialog.files.empty": "No files to select",
"dialog.pages.empty": "No pages to select",
"dialog.users.empty": "No users to select",
"email": "S\u00e4hk\u00f6posti", "email": "S\u00e4hk\u00f6posti",
"email.placeholder": "nimi@osoite.fi", "email.placeholder": "nimi@osoite.fi",
@@ -65,6 +71,14 @@
"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": "Please enter a valid code for the language",
"error.language.duplicate": "The language already exists",
"error.language.name": "Please enter a valid name for the language",
"error.license.format": "Please enter a valid license key",
"error.license.email": "Anna kelpaava sähköpostiosoite",
"error.license.verification": "The license could not be verified",
"error.page.changeSlug.permission": "error.page.changeSlug.permission":
"Sinulla ei ole oikeutta muuttaa URL-liitettä sivulle \"{slug}\"", "Sinulla ei ole oikeutta muuttaa URL-liitettä sivulle \"{slug}\"",
"error.page.changeStatus.incomplete": "error.page.changeStatus.incomplete":
@@ -90,6 +104,7 @@
"Sivuluonnos URL-liitteellä \"{slug}\" on jo olemassa", "Sivuluonnos URL-liitteellä \"{slug}\" on jo olemassa",
"error.page.duplicate": "error.page.duplicate":
"Sivu URL-liitteellä \"{slug}\" on jo olemassa", "Sivu URL-liitteellä \"{slug}\" on jo olemassa",
"error.page.duplicate.permission": "You are not allowed to duplicate \"{slug}\"",
"error.page.notFound": "Sivua \"{slug}\" ei löytynyt", "error.page.notFound": "Sivua \"{slug}\" ei löytynyt",
"error.page.num.invalid": "error.page.num.invalid":
"Anna kelpaava järjestysnumero. Numero ei voi olla negatiivinen.", "Anna kelpaava järjestysnumero. Numero ei voi olla negatiivinen.",
@@ -270,6 +285,13 @@
"loading": "Ladataan", "loading": "Ladataan",
"lock.unsaved": "Unsaved changes",
"lock.isLocked": "Unsaved changes by <strong>{email}</strong>",
"lock.file.isLocked": "The file is currently being edited by {email} and cannot be changed.",
"lock.page.isLocked": "The page is currently being edited by {email} and cannot be changed.",
"lock.unlock": "Unlock",
"lock.isUnlocked": "Your unsaved changes have been overwritten by another user. You can download your changes to merge them manually.",
"login": "Kirjaudu", "login": "Kirjaudu",
"login.remember": "Pidä minut kirjautuneena", "login.remember": "Pidä minut kirjautuneena",
@@ -297,6 +319,8 @@
"more": "Lisää", "more": "Lisää",
"name": "Nimi", "name": "Nimi",
"next": "Seuraava", "next": "Seuraava",
"off": "off",
"on": "on",
"open": "Avaa", "open": "Avaa",
"options": "Asetukset", "options": "Asetukset",
@@ -317,6 +341,9 @@
"<strong>Tällä sivulla on alasivuja</strong>.<br>Myös kaikki alasivut poistetaan.", "<strong>Tällä sivulla on alasivuja</strong>.<br>Myös kaikki alasivut poistetaan.",
"page.delete.confirm.title": "Anna vahvistuksena sivun nimi", "page.delete.confirm.title": "Anna vahvistuksena sivun nimi",
"page.draft.create": "Uusi luonnos", "page.draft.create": "Uusi luonnos",
"page.duplicate.appendix": "Kopioi",
"page.duplicate.files": "Copy files",
"page.duplicate.pages": "Copy pages",
"page.status": "Tila", "page.status": "Tila",
"page.status.draft": "Luonnos", "page.status.draft": "Luonnos",
"page.status.draft.description": "page.status.draft.description":
@@ -342,9 +369,13 @@
"revert": "Palauta", "revert": "Palauta",
"role": "K\u00e4ytt\u00e4j\u00e4taso", "role": "K\u00e4ytt\u00e4j\u00e4taso",
"role.admin.description": "The admin has all rights",
"role.admin.title": "Admin",
"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.title": "Nobody",
"save": "Tallenna", "save": "Tallenna",
"search": "Haku", "search": "Haku",

View File

@@ -24,8 +24,14 @@
"delete": "Supprimer", "delete": "Supprimer",
"dimensions": "Dimensions", "dimensions": "Dimensions",
"discard": "Supprimer", "discard": "Supprimer",
"download": "Télécharger",
"duplicate": "Dupliquer",
"edit": "Éditer", "edit": "Éditer",
"dialog.files.empty": "Aucun fichier à sélectionner",
"dialog.pages.empty": "Aucune page à sélectionner",
"dialog.users.empty": "Aucun utilisateur à sélectionner",
"email": "Courriel", "email": "Courriel",
"email.placeholder": "mail@example.com", "email.placeholder": "mail@example.com",
@@ -65,6 +71,14 @@
"error.form.incomplete": "Veuillez corriger toutes les erreurs du formulaire…", "error.form.incomplete": "Veuillez corriger toutes les erreurs du formulaire…",
"error.form.notSaved": "Le formulaire na pu être enregistré", "error.form.notSaved": "Le formulaire na pu être enregistré",
"error.language.code": "Veuillez saisir un code valide pour cette langue",
"error.language.duplicate": "Cette langue existe déjà",
"error.language.name": "Veuillez saisir un nom valide pour cette langue",
"error.license.format": "Veuillez saisir un numéro de licence valide",
"error.license.email": "Veuillez saisir un courriel valide",
"error.license.verification": "La licence na pu être vérifiée",
"error.page.changeSlug.permission": "error.page.changeSlug.permission":
"Vous nêtes pas autorisé à modifier lidentifiant dURL pour «&nbsp;{slug}&nbsp;»", "Vous nêtes pas autorisé à modifier lidentifiant dURL pour «&nbsp;{slug}&nbsp;»",
"error.page.changeStatus.incomplete": "error.page.changeStatus.incomplete":
@@ -90,6 +104,7 @@
"Un brouillon avec lidentifiant dURL «&nbsp;{slug}&nbsp;» existe déjà", "Un brouillon avec lidentifiant dURL «&nbsp;{slug}&nbsp;» existe déjà",
"error.page.duplicate": "error.page.duplicate":
"Une page avec lidentifiant dURL «&nbsp;{slug}&nbsp;» existe déjà", "Une page avec lidentifiant dURL «&nbsp;{slug}&nbsp;» existe déjà",
"error.page.duplicate.permission": "Vous n'êtes pas autorisé à dupliquer «&nbsp;{slug}&nbsp;»",
"error.page.notFound": "La page «&nbsp;{slug}&nbsp;» na pu être trouvée", "error.page.notFound": "La page «&nbsp;{slug}&nbsp;» na pu être trouvée",
"error.page.num.invalid": "error.page.num.invalid":
"Veuillez saisir un numéro de position valide. Les numéros ne doivent pas être négatifs.", "Veuillez saisir un numéro de position valide. Les numéros ne doivent pas être négatifs.",
@@ -104,18 +119,18 @@
"error.section.files.max.singular": "error.section.files.max.singular":
"Vous ne pouvez ajouter plus dun fichier à la section «&nbsp;{section}&nbsp;»", "Vous ne pouvez ajouter plus dun fichier à la section «&nbsp;{section}&nbsp;»",
"error.section.files.min.plural": "error.section.files.min.plural":
"The \"{section}\" section requires at least {min} files", "La section «&nbsp;{section}\"&nbsp;» requiert au moins {min} fichiers",
"error.section.files.min.singular": "error.section.files.min.singular":
"The \"{section}\" section requires at least one file", "La section «&nbsp;{section}\"&nbsp;» requiert au moins un fichier",
"error.section.pages.max.plural": "error.section.pages.max.plural":
"Vous ne pouvez ajouter plus de {max} pages à la section «&nbsp;{section}&nbsp;»", "Vous ne pouvez ajouter plus de {max} pages à la section «&nbsp;{section}&nbsp;»",
"error.section.pages.max.singular": "error.section.pages.max.singular":
"Vous ne pouvez ajouter plus dune page à la section «&nbsp;{section}&nbsp;»", "Vous ne pouvez ajouter plus dune page à la section «&nbsp;{section}&nbsp;»",
"error.section.pages.min.plural": "error.section.pages.min.plural":
"The \"{section}\" section requires at least {min} pages", "La section «&nbsp;{section}\"&nbsp;» requiert au moins {min} pages",
"error.section.pages.min.singular": "error.section.pages.min.singular":
"The \"{section}\" section requires at least one page", "La section «&nbsp;{section}\"&nbsp;» requiert au moins une page",
"error.section.notLoaded": "La section «&nbsp;{name}&nbsp;» na pu être chargée", "error.section.notLoaded": "La section «&nbsp;{name}&nbsp;» na pu être chargée",
"error.section.type.invalid": "Le type de section «&nbsp;{type}&nbsp;» est incorrect", "error.section.type.invalid": "Le type de section «&nbsp;{type}&nbsp;» est incorrect",
@@ -270,6 +285,13 @@
"loading": "Chargement", "loading": "Chargement",
"lock.unsaved": "Modifications non enregistrées",
"lock.isLocked": "Modifications non enregistrées par <strong>{email}</strong>",
"lock.file.isLocked": "Le fichier est actuellement édité par {email} et ne peut être modifié.",
"lock.page.isLocked": "La page est actuellement éditée par {email} et ne peut être modifiée.",
"lock.unlock": "Déverrouiller",
"lock.isUnlocked": "Vos modifications non enregistrées ont été écrasées pas un autre utilisateur. Vous pouvez télécharger vos modifications pour les fusionner manuellement.",
"login": "Se connecter", "login": "Se connecter",
"login.remember": "Rester connecté", "login.remember": "Rester connecté",
@@ -297,6 +319,8 @@
"more": "Plus", "more": "Plus",
"name": "Nom", "name": "Nom",
"next": "Suivant", "next": "Suivant",
"off": "off",
"on": "on",
"open": "Ouvrir", "open": "Ouvrir",
"options": "Options", "options": "Options",
@@ -317,6 +341,9 @@
"<strong>Cette page contient des sous-pages</strong>. <br>Toutes les sous-pages seront également supprimées.", "<strong>Cette page contient des sous-pages</strong>. <br>Toutes les sous-pages seront également supprimées.",
"page.delete.confirm.title": "Veuillez saisir le titre de la page pour confirmer", "page.delete.confirm.title": "Veuillez saisir le titre de la page pour confirmer",
"page.draft.create": "Créer un brouillon", "page.draft.create": "Créer un brouillon",
"page.duplicate.appendix": "Copier",
"page.duplicate.files": "Copier les fichiers",
"page.duplicate.pages": "Copier les pages",
"page.status": "Statut", "page.status": "Statut",
"page.status.draft": "Brouillon", "page.status.draft": "Brouillon",
"page.status.draft.description": "page.status.draft.description":
@@ -342,9 +369,13 @@
"revert": "Revenir", "revert": "Revenir",
"role": "Rôle", "role": "Rôle",
"role.admin.description": "Ladministrateur dispose de tous les droits",
"role.admin.title": "Administrateur",
"role.all": "Tous", "role.all": "Tous",
"role.empty": "Il ny a aucun utilisateur avec ce rôle", "role.empty": "Il ny a aucun utilisateur avec ce rôle",
"role.description.placeholder": "Pas de description", "role.description.placeholder": "Pas de description",
"role.nobody.description": "Ceci est un rôle de secours sans aucune permission.",
"role.nobody.title": "Personne",
"save": "Enregistrer", "save": "Enregistrer",
"search": "Rechercher", "search": "Rechercher",

View File

@@ -24,8 +24,14 @@
"delete": "T\u00f6rl\u00e9s", "delete": "T\u00f6rl\u00e9s",
"dimensions": "Méretek", "dimensions": "Méretek",
"discard": "Visszavon\u00e1s", "discard": "Visszavon\u00e1s",
"download": "Download",
"duplicate": "Duplicate",
"edit": "Aloldal szerkeszt\u00e9se", "edit": "Aloldal szerkeszt\u00e9se",
"dialog.files.empty": "No files to select",
"dialog.pages.empty": "No pages to select",
"dialog.users.empty": "No users to select",
"email": "Email", "email": "Email",
"email.placeholder": "mail@pelda.hu", "email.placeholder": "mail@pelda.hu",
@@ -65,6 +71,14 @@
"error.form.incomplete": "Kérlek javítsd ki az összes hibát az űrlapon", "error.form.incomplete": "Kérlek javítsd ki az összes hibát az űrlapon",
"error.form.notSaved": "Az űrlap nem menthető", "error.form.notSaved": "Az űrlap nem menthető",
"error.language.code": "Please enter a valid code for the language",
"error.language.duplicate": "The language already exists",
"error.language.name": "Please enter a valid name for the language",
"error.license.format": "Please enter a valid license key",
"error.license.email": "Kérlek adj meg egy valós email-címet",
"error.license.verification": "The license could not be verified",
"error.page.changeSlug.permission": "error.page.changeSlug.permission":
"Nem változtathatod meg az URL-előtagot: \"{slug}\"", "Nem változtathatod meg az URL-előtagot: \"{slug}\"",
"error.page.changeStatus.incomplete": "error.page.changeStatus.incomplete":
@@ -90,6 +104,7 @@
"Van már egy másik oldal ezzel az URL-lel: \"{slug}\"", "Van már egy másik oldal ezzel az URL-lel: \"{slug}\"",
"error.page.duplicate": "error.page.duplicate":
"Van már egy másik oldal ezzel az URL-lel: \"{slug}\"", "Van már egy másik oldal ezzel az URL-lel: \"{slug}\"",
"error.page.duplicate.permission": "You are not allowed to duplicate \"{slug}\"",
"error.page.notFound": "Az oldal nem tal\u00e1lhat\u00f3", "error.page.notFound": "Az oldal nem tal\u00e1lhat\u00f3",
"error.page.num.invalid": "error.page.num.invalid":
"Kérlek megfelelő oldalszámozást adj meg. Negatív szám itt nem használható.", "Kérlek megfelelő oldalszámozást adj meg. Negatív szám itt nem használható.",
@@ -270,6 +285,13 @@
"loading": "Betöltés", "loading": "Betöltés",
"lock.unsaved": "Unsaved changes",
"lock.isLocked": "Unsaved changes by <strong>{email}</strong>",
"lock.file.isLocked": "The file is currently being edited by {email} and cannot be changed.",
"lock.page.isLocked": "The page is currently being edited by {email} and cannot be changed.",
"lock.unlock": "Unlock",
"lock.isUnlocked": "Your unsaved changes have been overwritten by another user. You can download your changes to merge them manually.",
"login": "Bejelentkezés", "login": "Bejelentkezés",
"login.remember": "Maradjak bejelentkezve", "login.remember": "Maradjak bejelentkezve",
@@ -297,6 +319,8 @@
"more": "Több", "more": "Több",
"name": "Név", "name": "Név",
"next": "Következő", "next": "Következő",
"off": "off",
"on": "on",
"open": "Megnyitás", "open": "Megnyitás",
"options": "Beállítások", "options": "Beállítások",
@@ -317,6 +341,9 @@
"<strong>Ehhez az oldalhoz aloldalak tartoznak</strong>. <br>Az oldal törlésekor a hozzá tartozó aloldalak is törlődnek.", "<strong>Ehhez az oldalhoz aloldalak tartoznak</strong>. <br>Az oldal törlésekor a hozzá tartozó aloldalak is törlődnek.",
"page.delete.confirm.title": "Megerősítéshez add meg az oldal címét", "page.delete.confirm.title": "Megerősítéshez add meg az oldal címét",
"page.draft.create": "Piszkozat létrehozása", "page.draft.create": "Piszkozat létrehozása",
"page.duplicate.appendix": "Másol",
"page.duplicate.files": "Copy files",
"page.duplicate.pages": "Copy pages",
"page.status": "Állapot", "page.status": "Állapot",
"page.status.draft": "Piszkozat", "page.status.draft": "Piszkozat",
"page.status.draft.description": "page.status.draft.description":
@@ -342,9 +369,13 @@
"revert": "Visszavon\u00e1s", "revert": "Visszavon\u00e1s",
"role": "Szerepkör", "role": "Szerepkör",
"role.admin.description": "The admin has all rights",
"role.admin.title": "Admin",
"role.all": "Összes", "role.all": "Összes",
"role.empty": "Nincsenek felhasználók ilyen szerepkörrel", "role.empty": "Nincsenek felhasználók ilyen szerepkörrel",
"role.description.placeholder": "Nincs leírás", "role.description.placeholder": "Nincs leírás",
"role.nobody.description": "This is a fallback role without any permissions",
"role.nobody.title": "Nobody",
"save": "Ment\u00e9s", "save": "Ment\u00e9s",
"search": "Keresés", "search": "Keresés",

View File

@@ -24,8 +24,14 @@
"delete": "Hapus", "delete": "Hapus",
"dimensions": "Dimensi", "dimensions": "Dimensi",
"discard": "Buang", "discard": "Buang",
"download": "Download",
"duplicate": "Duplicate",
"edit": "Sunting", "edit": "Sunting",
"dialog.files.empty": "No files to select",
"dialog.pages.empty": "No pages to select",
"dialog.users.empty": "No users to select",
"email": "Surel", "email": "Surel",
"email.placeholder": "surel@contohsurel.com", "email.placeholder": "surel@contohsurel.com",
@@ -65,6 +71,14 @@
"error.form.incomplete": "Pastikan semua bidang telah diisi dengan benar…", "error.form.incomplete": "Pastikan semua bidang telah diisi dengan benar…",
"error.form.notSaved": "Formulir tidak dapat disimpan", "error.form.notSaved": "Formulir tidak dapat disimpan",
"error.language.code": "Please enter a valid code for the language",
"error.language.duplicate": "The language already exists",
"error.language.name": "Please enter a valid name for the language",
"error.license.format": "Please enter a valid license key",
"error.license.email": "Masukkan surel yang valid",
"error.license.verification": "The license could not be verified",
"error.page.changeSlug.permission": "error.page.changeSlug.permission":
"Anda tidak diizinkan mengubah akhiran URL untuk \"{slug}\"", "Anda tidak diizinkan mengubah akhiran URL untuk \"{slug}\"",
"error.page.changeStatus.incomplete": "error.page.changeStatus.incomplete":
@@ -90,6 +104,7 @@
"Draf halaman dengan akhiran URL \"{slug}\" sudah ada", "Draf halaman dengan akhiran URL \"{slug}\" sudah ada",
"error.page.duplicate": "error.page.duplicate":
"Halaman dengan akhiran URL \"{slug}\" sudah ada", "Halaman dengan akhiran URL \"{slug}\" sudah ada",
"error.page.duplicate.permission": "You are not allowed to duplicate \"{slug}\"",
"error.page.notFound": "Halaman \"{slug}\" tidak dapat ditemukan", "error.page.notFound": "Halaman \"{slug}\" tidak dapat ditemukan",
"error.page.num.invalid": "error.page.num.invalid":
"Masukkan nomor urut yang valid. Nomor tidak boleh negatif.", "Masukkan nomor urut yang valid. Nomor tidak boleh negatif.",
@@ -270,6 +285,13 @@
"loading": "Memuat", "loading": "Memuat",
"lock.unsaved": "Unsaved changes",
"lock.isLocked": "Unsaved changes by <strong>{email}</strong>",
"lock.file.isLocked": "The file is currently being edited by {email} and cannot be changed.",
"lock.page.isLocked": "The page is currently being edited by {email} and cannot be changed.",
"lock.unlock": "Unlock",
"lock.isUnlocked": "Your unsaved changes have been overwritten by another user. You can download your changes to merge them manually.",
"login": "Masuk", "login": "Masuk",
"login.remember": "Biarkan tetap masuk", "login.remember": "Biarkan tetap masuk",
@@ -297,6 +319,8 @@
"more": "Lebih lanjut", "more": "Lebih lanjut",
"name": "Nama", "name": "Nama",
"next": "Selanjutnya", "next": "Selanjutnya",
"off": "off",
"on": "on",
"open": "Buka", "open": "Buka",
"options": "Opsi", "options": "Opsi",
@@ -317,6 +341,9 @@
"<strong>Halaman ini memiliki sub-halaman</strong>. <br>Semua sub-halaman akan ikut dihapus.", "<strong>Halaman ini memiliki sub-halaman</strong>. <br>Semua sub-halaman akan ikut dihapus.",
"page.delete.confirm.title": "Masukkan judul halaman untuk mengonfirmasi", "page.delete.confirm.title": "Masukkan judul halaman untuk mengonfirmasi",
"page.draft.create": "Buat draf", "page.draft.create": "Buat draf",
"page.duplicate.appendix": "Salin",
"page.duplicate.files": "Copy files",
"page.duplicate.pages": "Copy pages",
"page.status": "Status", "page.status": "Status",
"page.status.draft": "Draf", "page.status.draft": "Draf",
"page.status.draft.description": "page.status.draft.description":
@@ -342,9 +369,13 @@
"revert": "Kembalikan", "revert": "Kembalikan",
"role": "Peran", "role": "Peran",
"role.admin.description": "The admin has all rights",
"role.admin.title": "Admin",
"role.all": "Semua", "role.all": "Semua",
"role.empty": "Tidak ada pengguna dengan peran ini", "role.empty": "Tidak ada pengguna dengan peran ini",
"role.description.placeholder": "Tidak ada deskripsi", "role.description.placeholder": "Tidak ada deskripsi",
"role.nobody.description": "This is a fallback role without any permissions",
"role.nobody.title": "Nobody",
"save": "Simpan", "save": "Simpan",
"search": "Cari", "search": "Cari",

View File

@@ -24,8 +24,14 @@
"delete": "Elimina", "delete": "Elimina",
"dimensions": "Dimensioni", "dimensions": "Dimensioni",
"discard": "Abbandona", "discard": "Abbandona",
"download": "Scarica",
"duplicate": "Duplica",
"edit": "Modifica", "edit": "Modifica",
"dialog.files.empty": "No files to select",
"dialog.pages.empty": "No pages to select",
"dialog.users.empty": "No users to select",
"email": "Email", "email": "Email",
"email.placeholder": "mail@esempio.com", "email.placeholder": "mail@esempio.com",
@@ -65,6 +71,14 @@
"error.form.incomplete": "Correggi tutti gli errori nel form...", "error.form.incomplete": "Correggi tutti gli errori nel form...",
"error.form.notSaved": "Non è stato possibile salvare il form", "error.form.notSaved": "Non è stato possibile salvare il form",
"error.language.code": "Please enter a valid code for the language",
"error.language.duplicate": "The language already exists",
"error.language.name": "Please enter a valid name for the language",
"error.license.format": "Inserisci un codice di licenza valido",
"error.license.email": "Inserisci un indirizzo email valido",
"error.license.verification": "Non è stato possibile verificare la licenza",
"error.page.changeSlug.permission": "error.page.changeSlug.permission":
"Non ti è permesso cambiare l'URL di \"{slug}\"", "Non ti è permesso cambiare l'URL di \"{slug}\"",
"error.page.changeStatus.incomplete": "error.page.changeStatus.incomplete":
@@ -90,6 +104,7 @@
"Una bozza di pagina con l'URL \"{slug}\" esiste già", "Una bozza di pagina con l'URL \"{slug}\" esiste già",
"error.page.duplicate": "error.page.duplicate":
"Una pagina con l'URL \"{slug}\" esiste già", "Una pagina con l'URL \"{slug}\" esiste già",
"error.page.duplicate.permission": "Non ti è permesso duplicare \"{slug}\"",
"error.page.notFound": "La pagina \"{slug}\" non è stata trovata", "error.page.notFound": "La pagina \"{slug}\" non è stata trovata",
"error.page.num.invalid": "error.page.num.invalid":
"Inserisci un numero di ordinamento valido. I numeri non devono essere negativi", "Inserisci un numero di ordinamento valido. I numeri non devono essere negativi",
@@ -270,6 +285,13 @@
"loading": "Caricamento", "loading": "Caricamento",
"lock.unsaved": "Modifiche non salvate",
"lock.isLocked": "Modifiche non salvate di <strong>{email}</strong>",
"lock.file.isLocked": "Il file viene attualmente modificato da {email} e non può essere cambiato.",
"lock.page.isLocked": "la pagina viene attualmente modificata da {email} e non può essere cambiata.",
"lock.unlock": "Sblocca",
"lock.isUnlocked": "Un altro utente ha sovrascritto le tue modifiche non salvate. Puoi scaricarle per recuperarle e quindi incorporarle manualmente. ",
"login": "Accedi", "login": "Accedi",
"login.remember": "Resta collegato", "login.remember": "Resta collegato",
@@ -297,6 +319,8 @@
"more": "Di più", "more": "Di più",
"name": "Nome", "name": "Nome",
"next": "Prossimo", "next": "Prossimo",
"off": "off",
"on": "on",
"open": "Apri", "open": "Apri",
"options": "Opzioni", "options": "Opzioni",
@@ -317,6 +341,9 @@
"<strong>Questa pagina ha sottopagine</strong>. <br>Anche tutte le sottopagine verranno eliminate.", "<strong>Questa pagina ha sottopagine</strong>. <br>Anche tutte le sottopagine verranno eliminate.",
"page.delete.confirm.title": "Inserisci il titolo della pagina per confermare", "page.delete.confirm.title": "Inserisci il titolo della pagina per confermare",
"page.draft.create": "Crea bozza", "page.draft.create": "Crea bozza",
"page.duplicate.appendix": "Copia",
"page.duplicate.files": "Copia file",
"page.duplicate.pages": "Copia pagine",
"page.status": "Stato", "page.status": "Stato",
"page.status.draft": "Bozza", "page.status.draft": "Bozza",
"page.status.draft.description": "page.status.draft.description":
@@ -342,9 +369,13 @@
"revert": "Abbandona", "revert": "Abbandona",
"role": "Ruolo", "role": "Ruolo",
"role.admin.description": "L'amministratore ha tutti i permessi",
"role.admin.title": "Amministratore",
"role.all": "Tutti", "role.all": "Tutti",
"role.empty": "Non ci sono utenti con questo ruolo", "role.empty": "Non ci sono utenti con questo ruolo",
"role.description.placeholder": "Nessuna descrizione", "role.description.placeholder": "Nessuna descrizione",
"role.nobody.description": "Questo è un ruolo \"fallback\" senza permessi",
"role.nobody.title": "Nessuno",
"save": "Salva", "save": "Salva",
"search": "Cerca", "search": "Cerca",

View File

@@ -24,8 +24,14 @@
"delete": "\uc0ad\uc81c", "delete": "\uc0ad\uc81c",
"dimensions": "크기", "dimensions": "크기",
"discard": "무시", "discard": "무시",
"download": "Download",
"duplicate": "Duplicate",
"edit": "\ud3b8\uc9d1", "edit": "\ud3b8\uc9d1",
"dialog.files.empty": "No files to select",
"dialog.pages.empty": "No pages to select",
"dialog.users.empty": "No users to select",
"email": "\uc774\uba54\uc77c \uc8fc\uc18c", "email": "\uc774\uba54\uc77c \uc8fc\uc18c",
"email.placeholder": "mail@example.com", "email.placeholder": "mail@example.com",
@@ -65,6 +71,14 @@
"error.form.incomplete": "항목에 오류가 있습니다.", "error.form.incomplete": "항목에 오류가 있습니다.",
"error.form.notSaved": "항목을 저장할 수 없습니다.", "error.form.notSaved": "항목을 저장할 수 없습니다.",
"error.language.code": "Please enter a valid code for the language",
"error.language.duplicate": "The language already exists",
"error.language.name": "Please enter a valid name for the language",
"error.license.format": "Please enter a valid license key",
"error.license.email": "올바른 이메일 주소를 입력하세요.",
"error.license.verification": "The license could not be verified",
"error.page.changeSlug.permission": "error.page.changeSlug.permission":
"고유 주소({slug})를 변경할 권한이 없습니다.", "고유 주소({slug})를 변경할 권한이 없습니다.",
"error.page.changeStatus.incomplete": "error.page.changeStatus.incomplete":
@@ -90,6 +104,7 @@
"고유 주소({slug})가 같은 초안이 있습니다.", "고유 주소({slug})가 같은 초안이 있습니다.",
"error.page.duplicate": "error.page.duplicate":
"고유 주소({slug})가 같은 페이지가 있습니다.", "고유 주소({slug})가 같은 페이지가 있습니다.",
"error.page.duplicate.permission": "You are not allowed to duplicate \"{slug}\"",
"error.page.notFound": "페이지({slug})가 없습니다.", "error.page.notFound": "페이지({slug})가 없습니다.",
"error.page.num.invalid": "error.page.num.invalid":
"올바른 정수를 입력하세요.", "올바른 정수를 입력하세요.",
@@ -270,6 +285,13 @@
"loading": "로딩 중", "loading": "로딩 중",
"lock.unsaved": "Unsaved changes",
"lock.isLocked": "Unsaved changes by <strong>{email}</strong>",
"lock.file.isLocked": "The file is currently being edited by {email} and cannot be changed.",
"lock.page.isLocked": "The page is currently being edited by {email} and cannot be changed.",
"lock.unlock": "Unlock",
"lock.isUnlocked": "Your unsaved changes have been overwritten by another user. You can download your changes to merge them manually.",
"login": "\ub85c\uadf8\uc778", "login": "\ub85c\uadf8\uc778",
"login.remember": "로그인 유지", "login.remember": "로그인 유지",
@@ -297,6 +319,8 @@
"more": "더 보기", "more": "더 보기",
"name": "이름", "name": "이름",
"next": "다음", "next": "다음",
"off": "off",
"on": "on",
"open": "열기", "open": "열기",
"options": "옵션", "options": "옵션",
@@ -317,6 +341,9 @@
"<strong>페이지에 하위 페이지가 있습니다.</strong> 모든 하위 페이지가 삭제됩니다.", "<strong>페이지에 하위 페이지가 있습니다.</strong> 모든 하위 페이지가 삭제됩니다.",
"page.delete.confirm.title": "페이지 제목을 입력하세요.", "page.delete.confirm.title": "페이지 제목을 입력하세요.",
"page.draft.create": "초안 작성", "page.draft.create": "초안 작성",
"page.duplicate.appendix": "복사",
"page.duplicate.files": "Copy files",
"page.duplicate.pages": "Copy pages",
"page.status": "상태", "page.status": "상태",
"page.status.draft": "초안", "page.status.draft": "초안",
"page.status.draft.description": "page.status.draft.description":
@@ -342,9 +369,13 @@
"revert": "복원", "revert": "복원",
"role": "역할", "role": "역할",
"role.admin.description": "The admin has all rights",
"role.admin.title": "Admin",
"role.all": "전체 보기", "role.all": "전체 보기",
"role.empty": "이 역할에 해당하는 사용자가 없습니다.", "role.empty": "이 역할에 해당하는 사용자가 없습니다.",
"role.description.placeholder": "설명이 없습니다.", "role.description.placeholder": "설명이 없습니다.",
"role.nobody.description": "This is a fallback role without any permissions",
"role.nobody.title": "Nobody",
"save": "\uc800\uc7a5", "save": "\uc800\uc7a5",
"search": "검색", "search": "검색",

View File

@@ -24,8 +24,14 @@
"delete": "Slett", "delete": "Slett",
"dimensions": "Dimensjoner", "dimensions": "Dimensjoner",
"discard": "Forkast", "discard": "Forkast",
"download": "Download",
"duplicate": "Duplicate",
"edit": "Rediger", "edit": "Rediger",
"dialog.files.empty": "No files to select",
"dialog.pages.empty": "No pages to select",
"dialog.users.empty": "No users to select",
"email": "Epost", "email": "Epost",
"email.placeholder": "epost@eksempel.no", "email.placeholder": "epost@eksempel.no",
@@ -65,6 +71,14 @@
"error.form.incomplete": "Vennligst fiks alle feil…", "error.form.incomplete": "Vennligst fiks alle feil…",
"error.form.notSaved": "Skjemaet kunne ikke lagres", "error.form.notSaved": "Skjemaet kunne ikke lagres",
"error.language.code": "Please enter a valid code for the language",
"error.language.duplicate": "The language already exists",
"error.language.name": "Please enter a valid name for the language",
"error.license.format": "Please enter a valid license key",
"error.license.email": "Vennligst skriv inn en gyldig e-postadresse",
"error.license.verification": "The license could not be verified",
"error.page.changeSlug.permission": "error.page.changeSlug.permission":
"Du kan ikke endre URLen for denne siden", "Du kan ikke endre URLen for denne siden",
"error.page.changeStatus.incomplete": "error.page.changeStatus.incomplete":
@@ -90,6 +104,7 @@
"Et sideutkast med URL-tillegget \"{slug}\" eksisterer allerede", "Et sideutkast med URL-tillegget \"{slug}\" eksisterer allerede",
"error.page.duplicate": "error.page.duplicate":
"En side med URL-tillegget \"{slug}\" eksisterer allerede", "En side med URL-tillegget \"{slug}\" eksisterer allerede",
"error.page.duplicate.permission": "You are not allowed to duplicate \"{slug}\"",
"error.page.notFound": "Siden \"{slug}\" ble ikke funnet", "error.page.notFound": "Siden \"{slug}\" ble ikke funnet",
"error.page.num.invalid": "error.page.num.invalid":
"Vennligst skriv inn et gyldig sorteringsnummer. Tallet må ikke være negativt.", "Vennligst skriv inn et gyldig sorteringsnummer. Tallet må ikke være negativt.",
@@ -270,6 +285,13 @@
"loading": "Laster inn", "loading": "Laster inn",
"lock.unsaved": "Unsaved changes",
"lock.isLocked": "Unsaved changes by <strong>{email}</strong>",
"lock.file.isLocked": "The file is currently being edited by {email} and cannot be changed.",
"lock.page.isLocked": "The page is currently being edited by {email} and cannot be changed.",
"lock.unlock": "Unlock",
"lock.isUnlocked": "Your unsaved changes have been overwritten by another user. You can download your changes to merge them manually.",
"login": "Logg Inn", "login": "Logg Inn",
"login.remember": "Hold meg innlogget", "login.remember": "Hold meg innlogget",
@@ -297,6 +319,8 @@
"more": "Mer", "more": "Mer",
"name": "Navn", "name": "Navn",
"next": "Neste", "next": "Neste",
"off": "off",
"on": "on",
"open": "Åpne", "open": "Åpne",
"options": "Alternativer", "options": "Alternativer",
@@ -317,6 +341,9 @@
"<strong>Denne siden har undersider</strong>. <br>Alle undersider vil også bli slettet.", "<strong>Denne siden har undersider</strong>. <br>Alle undersider vil også bli slettet.",
"page.delete.confirm.title": "Skriv inn sidetittel for å bekrefte", "page.delete.confirm.title": "Skriv inn sidetittel for å bekrefte",
"page.draft.create": "Lag utkast", "page.draft.create": "Lag utkast",
"page.duplicate.appendix": "Kopier",
"page.duplicate.files": "Copy files",
"page.duplicate.pages": "Copy pages",
"page.status": "Status", "page.status": "Status",
"page.status.draft": "Utkast", "page.status.draft": "Utkast",
"page.status.draft.description": "page.status.draft.description":
@@ -342,9 +369,13 @@
"revert": "Forkast", "revert": "Forkast",
"role": "Rolle", "role": "Rolle",
"role.admin.description": "The admin has all rights",
"role.admin.title": "Admin",
"role.all": "Alle", "role.all": "Alle",
"role.empty": "Det er ingen brukere med denne rollen", "role.empty": "Det er ingen brukere med denne rollen",
"role.description.placeholder": "Ingen beskrivelse", "role.description.placeholder": "Ingen beskrivelse",
"role.nobody.description": "This is a fallback role without any permissions",
"role.nobody.title": "Nobody",
"save": "Lagre", "save": "Lagre",
"search": "Søk", "search": "Søk",

View File

@@ -1,5 +1,5 @@
{ {
"add": "Toevoegen", "add": "Voeg toe",
"avatar": "Avatar", "avatar": "Avatar",
"back": "Terug", "back": "Terug",
"cancel": "Annuleren", "cancel": "Annuleren",
@@ -24,8 +24,14 @@
"delete": "Verwijderen", "delete": "Verwijderen",
"dimensions": "Dimensies", "dimensions": "Dimensies",
"discard": "Annuleren", "discard": "Annuleren",
"download": "Download",
"duplicate": "Dupliceren",
"edit": "Wijzig", "edit": "Wijzig",
"dialog.files.empty": "No files to select",
"dialog.pages.empty": "No pages to select",
"dialog.users.empty": "No users to select",
"email": "E-mailadres", "email": "E-mailadres",
"email.placeholder": "mail@voorbeeld.nl", "email.placeholder": "mail@voorbeeld.nl",
@@ -65,6 +71,14 @@
"error.form.incomplete": "Verbeter alle fouten in het formulier", "error.form.incomplete": "Verbeter alle fouten in het formulier",
"error.form.notSaved": "Het formulier kon niet worden opgeslagen", "error.form.notSaved": "Het formulier kon niet worden opgeslagen",
"error.language.code": "Please enter a valid code for the language",
"error.language.duplicate": "The language already exists",
"error.language.name": "Please enter a valid name for the language",
"error.license.format": "Vul een gelidge licentie-key in",
"error.license.email": "Gelieve een geldig emailadres in te voeren",
"error.license.verification": "De licentie kon niet worden geverifieerd. ",
"error.page.changeSlug.permission": "error.page.changeSlug.permission":
"Je kunt de URL van deze pagina niet wijzigen", "Je kunt de URL van deze pagina niet wijzigen",
"error.page.changeStatus.incomplete": "error.page.changeStatus.incomplete":
@@ -90,6 +104,7 @@
"Er bestaat al een conceptpagina met de URL-appendix \"{slug}\"", "Er bestaat al een conceptpagina met de URL-appendix \"{slug}\"",
"error.page.duplicate": "error.page.duplicate":
"Er bestaat al een pagina met de URL-appendix \"{slug}\"", "Er bestaat al een pagina met de URL-appendix \"{slug}\"",
"error.page.duplicate.permission": "Je bent niet gemachtigd om \"{slug}\" te dupliceren",
"error.page.notFound": "De pagina \"{slug}\" kan niet worden gevonden", "error.page.notFound": "De pagina \"{slug}\" kan niet worden gevonden",
"error.page.num.invalid": "error.page.num.invalid":
"Vul een geldig sorteer-cijfer in. Het cijfer mag niet negatief zijn", "Vul een geldig sorteer-cijfer in. Het cijfer mag niet negatief zijn",
@@ -104,18 +119,18 @@
"error.section.files.max.singular": "error.section.files.max.singular":
"Je kunt niet meer dan 1 bestand toevoegen aan de zone \"{section}\"", "Je kunt niet meer dan 1 bestand toevoegen aan de zone \"{section}\"",
"error.section.files.min.plural": "error.section.files.min.plural":
"The \"{section}\" section requires at least {min} files", "De \"{section}\" sectie moet minimaal {min} bestanden bevatten.",
"error.section.files.min.singular": "error.section.files.min.singular":
"The \"{section}\" section requires at least one file", "De \"{section}\" sectie moet minimaal 1 bestand bevatten.",
"error.section.pages.max.plural": "error.section.pages.max.plural":
"Je kunt niet meer dan {max} pagina's toevoegen aan de zone \"{section}\"", "Je kunt niet meer dan {max} pagina's toevoegen aan de zone \"{section}\"",
"error.section.pages.max.singular": "error.section.pages.max.singular":
"Je kunt niet meer dan 1 pagina toevoegen aan de zone \"{section}\"", "Je kunt niet meer dan 1 pagina toevoegen aan de zone \"{section}\"",
"error.section.pages.min.plural": "error.section.pages.min.plural":
"The \"{section}\" section requires at least {min} pages", "De \"{section}\" sectie moet minimaal {min} pagina's bevatten.",
"error.section.pages.min.singular": "error.section.pages.min.singular":
"The \"{section}\" section requires at least one page", "De \"{section}\" sectie moet minimaal 1 pagina bevatten.",
"error.section.notLoaded": "De zone \"{name}\" kan niet worden geladen", "error.section.notLoaded": "De zone \"{name}\" kan niet worden geladen",
"error.section.type.invalid": "Zone-type \"{type}\" is niet geldig", "error.section.type.invalid": "Zone-type \"{type}\" is niet geldig",
@@ -270,6 +285,13 @@
"loading": "Laden", "loading": "Laden",
"lock.unsaved": "Unsaved changes",
"lock.isLocked": "Niet opgeslagen wijzigingen door <strong>{email}</strong>",
"lock.file.isLocked": "Dit bestand wordt momenteel bewerkt door {email} en kan niet worden gewijzigd.",
"lock.page.isLocked": "Deze pagina wordt momenteel bewerkt door {email} en kan niet worden gewijzigd.",
"lock.unlock": "Ontgrendelen",
"lock.isUnlocked": "Je niet opgeslagen wijzigingen zijn overschreven door een andere gebruiker. Je kunt je wijzigingen downloaden om ze handmatig samen te voegen.",
"login": "Inloggen", "login": "Inloggen",
"login.remember": "Houd mij ingelogd", "login.remember": "Houd mij ingelogd",
@@ -297,6 +319,8 @@
"more": "Meer", "more": "Meer",
"name": "Naam", "name": "Naam",
"next": "Volgende", "next": "Volgende",
"off": "uit",
"on": "aan",
"open": "Open", "open": "Open",
"options": "Opties", "options": "Opties",
@@ -317,6 +341,9 @@
"<strong>Deze pagina heeft subpagina's</strong>. <br>Alle subpagina's worden ook verwijderd.", "<strong>Deze pagina heeft subpagina's</strong>. <br>Alle subpagina's worden ook verwijderd.",
"page.delete.confirm.title": "Voeg een paginatitel in om te bevestigen", "page.delete.confirm.title": "Voeg een paginatitel in om te bevestigen",
"page.draft.create": "Maak concept", "page.draft.create": "Maak concept",
"page.duplicate.appendix": "Kopiëren",
"page.duplicate.files": "Kopieer bestanden",
"page.duplicate.pages": "Copy pages",
"page.status": "Status", "page.status": "Status",
"page.status.draft": "Concept", "page.status.draft": "Concept",
"page.status.draft.description": "page.status.draft.description":
@@ -342,9 +369,13 @@
"revert": "Annuleren", "revert": "Annuleren",
"role": "Rol", "role": "Rol",
"role.admin.description": "De admin heeft alle rechten",
"role.admin.title": "Admin",
"role.all": "Alle", "role.all": "Alle",
"role.empty": "Er zijn geen gebruikers met deze rol", "role.empty": "Er zijn geen gebruikers met deze rol",
"role.description.placeholder": "Geen beschrijving", "role.description.placeholder": "Geen beschrijving",
"role.nobody.description": "Dit is een fallback-rol zonder rechten",
"role.nobody.title": "Niemand",
"save": "Opslaan", "save": "Opslaan",
"search": "Zoeken", "search": "Zoeken",
@@ -366,8 +397,8 @@
"toolbar.button.heading.3": "Titel 3", "toolbar.button.heading.3": "Titel 3",
"toolbar.button.italic": "Cursieve tekst", "toolbar.button.italic": "Cursieve tekst",
"toolbar.button.file": "Bestand", "toolbar.button.file": "Bestand",
"toolbar.button.file.select": "Select a file", "toolbar.button.file.select": "Selecteer een bestand",
"toolbar.button.file.upload": "Upload a file", "toolbar.button.file.upload": "Upload bestand",
"toolbar.button.link": "Link", "toolbar.button.link": "Link",
"toolbar.button.ol": "Genummerde lijst", "toolbar.button.ol": "Genummerde lijst",
"toolbar.button.ul": "Opsomming", "toolbar.button.ul": "Opsomming",

View File

@@ -24,8 +24,14 @@
"delete": "Usu\u0144", "delete": "Usu\u0144",
"dimensions": "Wymiary", "dimensions": "Wymiary",
"discard": "Odrzu\u0107", "discard": "Odrzu\u0107",
"download": "Pobierz",
"duplicate": "Zduplikuj",
"edit": "Edytuj", "edit": "Edytuj",
"dialog.files.empty": "No files to select",
"dialog.pages.empty": "No pages to select",
"dialog.users.empty": "No users to select",
"email": "Email", "email": "Email",
"email.placeholder": "mail@example.com", "email.placeholder": "mail@example.com",
@@ -65,6 +71,14 @@
"error.form.incomplete": "Popraw wszystkie błędy w formularzu…", "error.form.incomplete": "Popraw wszystkie błędy w formularzu…",
"error.form.notSaved": "Nie udało się zapisać formularza", "error.form.notSaved": "Nie udało się zapisać formularza",
"error.language.code": "Please enter a valid code for the language",
"error.language.duplicate": "The language already exists",
"error.language.name": "Please enter a valid name for the language",
"error.license.format": "Wprowadź poprawny klucz licencyjny",
"error.license.email": "Wprowadź poprawny adres email",
"error.license.verification": "Nie udało się zweryfikować licencji",
"error.page.changeSlug.permission": "error.page.changeSlug.permission":
"Nie możesz zmienić końcówki adresu URL w \"{slug}\"", "Nie możesz zmienić końcówki adresu URL w \"{slug}\"",
"error.page.changeStatus.incomplete": "error.page.changeStatus.incomplete":
@@ -90,6 +104,7 @@
"Istnieje już szkic z końcówką URL \"{slug}\"", "Istnieje już szkic z końcówką URL \"{slug}\"",
"error.page.duplicate": "error.page.duplicate":
"Istnieje już strona z końcówką URL \"{slug}\"", "Istnieje już strona z końcówką URL \"{slug}\"",
"error.page.duplicate.permission": "Nie masz uprawnień, by zduplikować \"{slug}\"",
"error.page.notFound": "Nie można znaleźć strony \"{slug}\"", "error.page.notFound": "Nie można znaleźć strony \"{slug}\"",
"error.page.num.invalid": "error.page.num.invalid":
"Wprowadź poprawny numer sortujący. Liczby nie mogą być ujemne.", "Wprowadź poprawny numer sortujący. Liczby nie mogą być ujemne.",
@@ -270,6 +285,13 @@
"loading": "Ładuję", "loading": "Ładuję",
"lock.unsaved": "Niezapisane zmiany",
"lock.isLocked": "Niezapisane zmiany autorstwa <strong>{email}</strong>",
"lock.file.isLocked": "The file is currently being edited by {email} and cannot be changed.",
"lock.page.isLocked": "The page is currently being edited by {email} and cannot be changed.",
"lock.unlock": "Unlock",
"lock.isUnlocked": "Your unsaved changes have been overwritten by another user. You can download your changes to merge them manually.",
"login": "Zaloguj", "login": "Zaloguj",
"login.remember": "Nie wylogowuj mnie", "login.remember": "Nie wylogowuj mnie",
@@ -297,6 +319,8 @@
"more": "Więcej", "more": "Więcej",
"name": "Nazwa", "name": "Nazwa",
"next": "Następne", "next": "Następne",
"off": "off",
"on": "on",
"open": "Otwórz", "open": "Otwórz",
"options": "Opcje", "options": "Opcje",
@@ -317,6 +341,9 @@
"<strong>Ta strona zawiera podstrony</strong>. <br>Wszystkie podstrony również zostaną usunięte.", "<strong>Ta strona zawiera podstrony</strong>. <br>Wszystkie podstrony również zostaną usunięte.",
"page.delete.confirm.title": "Wprowadź tytuł strony, aby potwierdzić", "page.delete.confirm.title": "Wprowadź tytuł strony, aby potwierdzić",
"page.draft.create": "Utwórz szkic", "page.draft.create": "Utwórz szkic",
"page.duplicate.appendix": "Kopiuj",
"page.duplicate.files": "Copy files",
"page.duplicate.pages": "Copy pages",
"page.status": "Status", "page.status": "Status",
"page.status.draft": "Szkic", "page.status.draft": "Szkic",
"page.status.draft.description": "page.status.draft.description":
@@ -342,9 +369,13 @@
"revert": "Odrzu\u0107", "revert": "Odrzu\u0107",
"role": "Rola", "role": "Rola",
"role.admin.description": "The admin has all rights",
"role.admin.title": "Admin",
"role.all": "Wszystkie", "role.all": "Wszystkie",
"role.empty": "Nie ma użytkowników z tą rolą", "role.empty": "Nie ma użytkowników z tą rolą",
"role.description.placeholder": "Brak opisu", "role.description.placeholder": "Brak opisu",
"role.nobody.description": "This is a fallback role without any permissions",
"role.nobody.title": "Nobody",
"save": "Zapisz", "save": "Zapisz",
"search": "Szukaj", "search": "Szukaj",

View File

@@ -24,8 +24,14 @@
"delete": "Excluir", "delete": "Excluir",
"dimensions": "Dimensões", "dimensions": "Dimensões",
"discard": "Descartar", "discard": "Descartar",
"download": "Download",
"duplicate": "Duplicate",
"edit": "Editar", "edit": "Editar",
"dialog.files.empty": "No files to select",
"dialog.pages.empty": "No pages to select",
"dialog.users.empty": "No users to select",
"email": "Email", "email": "Email",
"email.placeholder": "mail@exemplo.com", "email.placeholder": "mail@exemplo.com",
@@ -65,6 +71,14 @@
"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.duplicate": "The language already exists",
"error.language.name": "Please enter a valid name for the language",
"error.license.format": "Please enter a valid license key",
"error.license.email": "Digite um endereço de email válido",
"error.license.verification": "The license could not be verified",
"error.page.changeSlug.permission": "error.page.changeSlug.permission":
"Você não tem permissão para alterar a URL de \"{slug}\"", "Você não tem permissão para alterar a URL de \"{slug}\"",
"error.page.changeStatus.incomplete": "error.page.changeStatus.incomplete":
@@ -90,6 +104,7 @@
"Um rascunho de página com a URL \"{slug}\" já existe", "Um rascunho de página com a URL \"{slug}\" já existe",
"error.page.duplicate": "error.page.duplicate":
"Uma página com a URL \"{slug}\" já existe", "Uma página com a URL \"{slug}\" já existe",
"error.page.duplicate.permission": "You are not allowed to duplicate \"{slug}\"",
"error.page.notFound": "Página\"{slug}\" não encontrada", "error.page.notFound": "Página\"{slug}\" não encontrada",
"error.page.num.invalid": "error.page.num.invalid":
"Digite um número de ordenação válido. Este número não pode ser negativo.", "Digite um número de ordenação válido. Este número não pode ser negativo.",
@@ -270,6 +285,13 @@
"loading": "Carregando", "loading": "Carregando",
"lock.unsaved": "Unsaved changes",
"lock.isLocked": "Unsaved changes by <strong>{email}</strong>",
"lock.file.isLocked": "The file is currently being edited by {email} and cannot be changed.",
"lock.page.isLocked": "The page is currently being edited by {email} and cannot be changed.",
"lock.unlock": "Unlock",
"lock.isUnlocked": "Your unsaved changes have been overwritten by another user. You can download your changes to merge them manually.",
"login": "Entrar", "login": "Entrar",
"login.remember": "Manter-me conectado", "login.remember": "Manter-me conectado",
@@ -297,6 +319,8 @@
"more": "Mais", "more": "Mais",
"name": "Nome", "name": "Nome",
"next": "Próximo", "next": "Próximo",
"off": "off",
"on": "on",
"open": "Abrir", "open": "Abrir",
"options": "Opções", "options": "Opções",
@@ -317,6 +341,9 @@
"<strong>Esta página possui subpáginas</strong>. <br>Todas as subpáginas serão excluídas também.", "<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.files": "Copy files",
"page.duplicate.pages": "Copy pages",
"page.status": "Estado", "page.status": "Estado",
"page.status.draft": "Rascunho", "page.status.draft": "Rascunho",
"page.status.draft.description": "page.status.draft.description":
@@ -342,9 +369,13 @@
"revert": "Descartar", "revert": "Descartar",
"role": "Papel", "role": "Papel",
"role.admin.description": "The admin has all rights",
"role.admin.title": "Admin",
"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.title": "Nobody",
"save": "Salvar", "save": "Salvar",
"search": "Buscar", "search": "Buscar",

View File

@@ -24,8 +24,14 @@
"delete": "Excluir", "delete": "Excluir",
"dimensions": "Dimensões", "dimensions": "Dimensões",
"discard": "Descartar", "discard": "Descartar",
"download": "Download",
"duplicate": "Duplicate",
"edit": "Editar", "edit": "Editar",
"dialog.files.empty": "No files to select",
"dialog.pages.empty": "No pages to select",
"dialog.users.empty": "No users to select",
"email": "Email", "email": "Email",
"email.placeholder": "mail@exemplo.pt", "email.placeholder": "mail@exemplo.pt",
@@ -65,6 +71,14 @@
"error.form.incomplete": "Por favor, corrija os erros do formulário…", "error.form.incomplete": "Por favor, corrija os erros do formulário…",
"error.form.notSaved": "O formulário não foi guardado", "error.form.notSaved": "O formulário não foi guardado",
"error.language.code": "Please enter a valid code for the language",
"error.language.duplicate": "The language already exists",
"error.language.name": "Please enter a valid name for the language",
"error.license.format": "Please enter a valid license key",
"error.license.email": "Digite um endereço de email válido",
"error.license.verification": "The license could not be verified",
"error.page.changeSlug.permission": "error.page.changeSlug.permission":
"Não tem permissões para alterar a URL de \"{slug}\"", "Não tem permissões para alterar a URL de \"{slug}\"",
"error.page.changeStatus.incomplete": "error.page.changeStatus.incomplete":
@@ -90,6 +104,7 @@
"Um rascunho de página com a URL \"{slug}\" já existe", "Um rascunho de página com a URL \"{slug}\" já existe",
"error.page.duplicate": "error.page.duplicate":
"Uma página com a URL \"{slug}\" já existe", "Uma página com a URL \"{slug}\" já existe",
"error.page.duplicate.permission": "You are not allowed to duplicate \"{slug}\"",
"error.page.notFound": "Página\"{slug}\" não encontrada", "error.page.notFound": "Página\"{slug}\" não encontrada",
"error.page.num.invalid": "error.page.num.invalid":
"Digite um número de ordenação válido. Este número não pode ser negativo.", "Digite um número de ordenação válido. Este número não pode ser negativo.",
@@ -270,6 +285,13 @@
"loading": "A carregar", "loading": "A carregar",
"lock.unsaved": "Unsaved changes",
"lock.isLocked": "Unsaved changes by <strong>{email}</strong>",
"lock.file.isLocked": "The file is currently being edited by {email} and cannot be changed.",
"lock.page.isLocked": "The page is currently being edited by {email} and cannot be changed.",
"lock.unlock": "Unlock",
"lock.isUnlocked": "Your unsaved changes have been overwritten by another user. You can download your changes to merge them manually.",
"login": "Entrar", "login": "Entrar",
"login.remember": "Manter-me conectado", "login.remember": "Manter-me conectado",
@@ -297,6 +319,8 @@
"more": "Mais", "more": "Mais",
"name": "Nome", "name": "Nome",
"next": "Próximo", "next": "Próximo",
"off": "off",
"on": "on",
"open": "Abrir", "open": "Abrir",
"options": "Opções", "options": "Opções",
@@ -317,6 +341,9 @@
"<strong>Esta página possui subpáginas</strong>. <br>Todas as subpáginas serão excluídas também.", "<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.files": "Copy files",
"page.duplicate.pages": "Copy pages",
"page.status": "Estado", "page.status": "Estado",
"page.status.draft": "Rascunho", "page.status.draft": "Rascunho",
"page.status.draft.description": "page.status.draft.description":
@@ -342,9 +369,13 @@
"revert": "Descartar", "revert": "Descartar",
"role": "Função", "role": "Função",
"role.admin.description": "The admin has all rights",
"role.admin.title": "Admin",
"role.all": "Todos", "role.all": "Todos",
"role.empty": "Não há utilizadores com esta função", "role.empty": "Não há utilizadores com esta função",
"role.description.placeholder": "Sem descrição", "role.description.placeholder": "Sem descrição",
"role.nobody.description": "This is a fallback role without any permissions",
"role.nobody.title": "Nobody",
"save": "Salvar", "save": "Salvar",
"search": "Buscar", "search": "Buscar",

View File

@@ -24,8 +24,14 @@
"delete": "Zmazať", "delete": "Zmazať",
"dimensions": "Rozmery", "dimensions": "Rozmery",
"discard": "Zahodiť", "discard": "Zahodiť",
"download": "Download",
"duplicate": "Duplicate",
"edit": "Upraviť", "edit": "Upraviť",
"dialog.files.empty": "No files to select",
"dialog.pages.empty": "No pages to select",
"dialog.users.empty": "No users to select",
"email": "E-mail", "email": "E-mail",
"email.placeholder": "mail@example.com", "email.placeholder": "mail@example.com",
@@ -65,6 +71,14 @@
"error.form.incomplete": "Prosím, opravte všetky chyby v rámci formuláru...", "error.form.incomplete": "Prosím, opravte všetky chyby v rámci formuláru...",
"error.form.notSaved": "Formulár sa nepodarilo uložiť", "error.form.notSaved": "Formulár sa nepodarilo uložiť",
"error.language.code": "Please enter a valid code for the language",
"error.language.duplicate": "The language already exists",
"error.language.name": "Please enter a valid name for the language",
"error.license.format": "Please enter a valid license key",
"error.license.email": "Prosím, zadajte platnú e-mailovú adresu",
"error.license.verification": "The license could not be verified",
"error.page.changeSlug.permission": "error.page.changeSlug.permission":
"Nemáte povolenie na zmenu URL príponu pre \"{slug}\"", "Nemáte povolenie na zmenu URL príponu pre \"{slug}\"",
"error.page.changeStatus.incomplete": "error.page.changeStatus.incomplete":
@@ -90,6 +104,7 @@
"Koncept stránky s URL appendix-om \"{slug}\" už existuje", "Koncept stránky s URL appendix-om \"{slug}\" už existuje",
"error.page.duplicate": "error.page.duplicate":
"Stránka s URL appendix-om \"{slug}\" už existuje", "Stránka s URL appendix-om \"{slug}\" už existuje",
"error.page.duplicate.permission": "You are not allowed to duplicate \"{slug}\"",
"error.page.notFound": "Stránku \"{slug}\" nie je možné nájsť", "error.page.notFound": "Stránku \"{slug}\" nie je možné nájsť",
"error.page.num.invalid": "error.page.num.invalid":
"Prosím, zadajte platné číslo pre radenie. Čísla nemôžu byť záporné.", "Prosím, zadajte platné číslo pre radenie. Čísla nemôžu byť záporné.",
@@ -270,6 +285,13 @@
"loading": "Načítavanie", "loading": "Načítavanie",
"lock.unsaved": "Unsaved changes",
"lock.isLocked": "Unsaved changes by <strong>{email}</strong>",
"lock.file.isLocked": "The file is currently being edited by {email} and cannot be changed.",
"lock.page.isLocked": "The page is currently being edited by {email} and cannot be changed.",
"lock.unlock": "Unlock",
"lock.isUnlocked": "Your unsaved changes have been overwritten by another user. You can download your changes to merge them manually.",
"login": "Prihlásenie", "login": "Prihlásenie",
"login.remember": "Ponechať ma prihláseného", "login.remember": "Ponechať ma prihláseného",
@@ -297,6 +319,8 @@
"more": "Viac", "more": "Viac",
"name": "Meno", "name": "Meno",
"next": "Ďalej", "next": "Ďalej",
"off": "off",
"on": "on",
"open": "Otvoriť", "open": "Otvoriť",
"options": "Nastavenia", "options": "Nastavenia",
@@ -317,6 +341,9 @@
"<strong>Táto stránka obsahuje podstránky</strong>. <br>Všetky podstránky budú taktiež zmazané.", "<strong>Táto stránka obsahuje podstránky</strong>. <br>Všetky podstránky budú taktiež zmazané.",
"page.delete.confirm.title": "Pre potvrdenie zadajte titulok stránky", "page.delete.confirm.title": "Pre potvrdenie zadajte titulok stránky",
"page.draft.create": "Vytvoriť koncept", "page.draft.create": "Vytvoriť koncept",
"page.duplicate.appendix": "Kopírovať",
"page.duplicate.files": "Copy files",
"page.duplicate.pages": "Copy pages",
"page.status": "Status", "page.status": "Status",
"page.status.draft": "Koncept", "page.status.draft": "Koncept",
"page.status.draft.description": "page.status.draft.description":
@@ -342,9 +369,13 @@
"revert": "Vrátiť späť", "revert": "Vrátiť späť",
"role": "Rola", "role": "Rola",
"role.admin.description": "The admin has all rights",
"role.admin.title": "Admin",
"role.all": "Všetko", "role.all": "Všetko",
"role.empty": "S touto rolou neexistujú žiadni užívatelia", "role.empty": "S touto rolou neexistujú žiadni užívatelia",
"role.description.placeholder": "Žiadny popis", "role.description.placeholder": "Žiadny popis",
"role.nobody.description": "This is a fallback role without any permissions",
"role.nobody.title": "Nobody",
"save": "Uložiť", "save": "Uložiť",
"search": "Hľadať", "search": "Hľadať",

View File

@@ -24,8 +24,14 @@
"delete": "Radera", "delete": "Radera",
"dimensions": "Dimensioner", "dimensions": "Dimensioner",
"discard": "Kassera", "discard": "Kassera",
"download": "Download",
"duplicate": "Duplicate",
"edit": "Redigera", "edit": "Redigera",
"dialog.files.empty": "No files to select",
"dialog.pages.empty": "No pages to select",
"dialog.users.empty": "No users to select",
"email": "E-post", "email": "E-post",
"email.placeholder": "namn@exampel.se", "email.placeholder": "namn@exampel.se",
@@ -65,6 +71,14 @@
"error.form.incomplete": "Vänligen åtgärda alla formulärfel...", "error.form.incomplete": "Vänligen åtgärda alla formulärfel...",
"error.form.notSaved": "Formuläret kunde inte sparas", "error.form.notSaved": "Formuläret kunde inte sparas",
"error.language.code": "Please enter a valid code for the language",
"error.language.duplicate": "The language already exists",
"error.language.name": "Please enter a valid name for the language",
"error.license.format": "Please enter a valid license key",
"error.license.email": "Ange en giltig e-postadress",
"error.license.verification": "The license could not be verified",
"error.page.changeSlug.permission": "error.page.changeSlug.permission":
"Du har inte behörighet att ändra URL-appendixen för \"{slug}\"", "Du har inte behörighet att ändra URL-appendixen för \"{slug}\"",
"error.page.changeStatus.incomplete": "error.page.changeStatus.incomplete":
@@ -90,6 +104,7 @@
"Ett utkast med URL-appendixen \"{slug}\" existerar redan", "Ett utkast med URL-appendixen \"{slug}\" existerar redan",
"error.page.duplicate": "error.page.duplicate":
"En sida med URL-appendixen \"{slug}\" existerar redan", "En sida med URL-appendixen \"{slug}\" existerar redan",
"error.page.duplicate.permission": "You are not allowed to duplicate \"{slug}\"",
"error.page.notFound": "Sidan \"{slug}\" kan inte hittas", "error.page.notFound": "Sidan \"{slug}\" kan inte hittas",
"error.page.num.invalid": "error.page.num.invalid":
"Ange ett giltigt nummer för sortering. Numret får inte vara negativt.", "Ange ett giltigt nummer för sortering. Numret får inte vara negativt.",
@@ -270,6 +285,13 @@
"loading": "Laddar", "loading": "Laddar",
"lock.unsaved": "Unsaved changes",
"lock.isLocked": "Unsaved changes by <strong>{email}</strong>",
"lock.file.isLocked": "The file is currently being edited by {email} and cannot be changed.",
"lock.page.isLocked": "The page is currently being edited by {email} and cannot be changed.",
"lock.unlock": "Unlock",
"lock.isUnlocked": "Your unsaved changes have been overwritten by another user. You can download your changes to merge them manually.",
"login": "Logga in", "login": "Logga in",
"login.remember": "Håll mig inloggad", "login.remember": "Håll mig inloggad",
@@ -297,6 +319,8 @@
"more": "Mer", "more": "Mer",
"name": "Namn", "name": "Namn",
"next": "Nästa", "next": "Nästa",
"off": "off",
"on": "on",
"open": "Öppna", "open": "Öppna",
"options": "Alternativ", "options": "Alternativ",
@@ -317,6 +341,9 @@
"<strong>Denna sida har undersidor.</strong> <br>Alla undersidor kommer också att raderas.", "<strong>Denna sida har undersidor.</strong> <br>Alla undersidor kommer också att raderas.",
"page.delete.confirm.title": "Fyll i sidans titel för att bekräfta", "page.delete.confirm.title": "Fyll i sidans titel för att bekräfta",
"page.draft.create": "Skapa utkast", "page.draft.create": "Skapa utkast",
"page.duplicate.appendix": "Kopiera",
"page.duplicate.files": "Copy files",
"page.duplicate.pages": "Copy pages",
"page.status": "Status", "page.status": "Status",
"page.status.draft": "Utkast", "page.status.draft": "Utkast",
"page.status.draft.description": "page.status.draft.description":
@@ -342,9 +369,13 @@
"revert": "Återgå", "revert": "Återgå",
"role": "Roll", "role": "Roll",
"role.admin.description": "The admin has all rights",
"role.admin.title": "Admin",
"role.all": "Alla", "role.all": "Alla",
"role.empty": "Det finns inga användare med denna roll", "role.empty": "Det finns inga användare med denna roll",
"role.description.placeholder": "Ingen beskrivning", "role.description.placeholder": "Ingen beskrivning",
"role.nobody.description": "This is a fallback role without any permissions",
"role.nobody.title": "Nobody",
"save": "Spara", "save": "Spara",
"search": "Sök", "search": "Sök",

View File

@@ -24,8 +24,14 @@
"delete": "Sil", "delete": "Sil",
"dimensions": "Boyutlar", "dimensions": "Boyutlar",
"discard": "Vazge\u00e7", "discard": "Vazge\u00e7",
"download": "İndir",
"duplicate": "Kopyala",
"edit": "D\u00fczenle", "edit": "D\u00fczenle",
"dialog.files.empty": "Seçilecek dosya yok",
"dialog.pages.empty": "Seçilecek sayfa yok",
"dialog.users.empty": "Seçilecek kullanıcı yok",
"email": "E-Posta", "email": "E-Posta",
"email.placeholder": "eposta@ornek.com", "email.placeholder": "eposta@ornek.com",
@@ -65,6 +71,14 @@
"error.form.incomplete": "Lütfen tüm form hatalarını düzeltin...", "error.form.incomplete": "Lütfen tüm form hatalarını düzeltin...",
"error.form.notSaved": "Form kaydedilemedi", "error.form.notSaved": "Form kaydedilemedi",
"error.language.code": "Lütfen dil için geçerli bir kod girin",
"error.language.duplicate": "Bu dil zaten var",
"error.language.name": "Lütfen dil için geçerli bir isim girin",
"error.license.format": "Lütfen geçerli bir lisans anahtarı girin",
"error.license.email": "Lütfen geçerli bir e-posta adresi girin",
"error.license.verification": "Lisans doğrulanamadı",
"error.page.changeSlug.permission": "error.page.changeSlug.permission":
"\"{slug}\" uzantısına sahip bu sayfanın adresini değiştirilemez", "\"{slug}\" uzantısına sahip bu sayfanın adresini değiştirilemez",
"error.page.changeStatus.incomplete": "error.page.changeStatus.incomplete":
@@ -90,6 +104,7 @@
"\"{slug}\" adres eki olan bir sayfa taslağı zaten mevcut", "\"{slug}\" adres eki olan bir sayfa taslağı zaten mevcut",
"error.page.duplicate": "error.page.duplicate":
"\"{slug}\" adres eki içeren bir sayfa zaten mevcut", "\"{slug}\" adres eki içeren bir sayfa zaten mevcut",
"error.page.duplicate.permission": "\"{slug}\" öğesini çoğaltmanıza izin verilmiyor",
"error.page.notFound": "\"{slug}\" uzantısındaki sayfa bulunamadı", "error.page.notFound": "\"{slug}\" uzantısındaki sayfa bulunamadı",
"error.page.num.invalid": "error.page.num.invalid":
"Lütfen geçerli bir sıralama numarası girin. Sayılar negatif olmamalıdır.", "Lütfen geçerli bir sıralama numarası girin. Sayılar negatif olmamalıdır.",
@@ -104,18 +119,18 @@
"error.section.files.max.singular": "error.section.files.max.singular":
"\"{section}\" bölümüne birden fazla dosya eklememelisiniz", "\"{section}\" bölümüne birden fazla dosya eklememelisiniz",
"error.section.files.min.plural": "error.section.files.min.plural":
"The \"{section}\" section requires at least {min} files", "\"{section}\" bölümü en az {min} dosya gerektiriyor",
"error.section.files.min.singular": "error.section.files.min.singular":
"The \"{section}\" section requires at least one file", "\"{section}\" bölümü en az bir dosya gerektiriyor",
"error.section.pages.max.plural": "error.section.pages.max.plural":
"\"{section}\" bölümüne maksimum {max} sayfadan fazla ekleyemezsiniz", "\"{section}\" bölümüne maksimum {max} sayfadan fazla ekleyemezsiniz",
"error.section.pages.max.singular": "error.section.pages.max.singular":
"\"{section}\" bölümüne birden fazla sayfa ekleyemezsiniz", "\"{section}\" bölümüne birden fazla sayfa ekleyemezsiniz",
"error.section.pages.min.plural": "error.section.pages.min.plural":
"The \"{section}\" section requires at least {min} pages", "\"{section}\" bölümü en az {min} sayfa gerektiriyor",
"error.section.pages.min.singular": "error.section.pages.min.singular":
"The \"{section}\" section requires at least one page", "\"{section}\" bölümü en az bir sayfa gerektiriyor",
"error.section.notLoaded": "\"{name}\" bölümü yüklenemedi", "error.section.notLoaded": "\"{name}\" bölümü yüklenemedi",
"error.section.type.invalid": "\"{type}\" tipi geçerli değil", "error.section.type.invalid": "\"{type}\" tipi geçerli değil",
@@ -270,6 +285,13 @@
"loading": "Yükleniyor", "loading": "Yükleniyor",
"lock.unsaved": "Kaydedilmemiş değişiklikler",
"lock.isLocked": "<strong>{email}</strong> tarafından kaydedilmemiş değişiklikler",
"lock.file.isLocked": "Dosya şu anda {email} tarafından düzenlenmektedir ve değiştirilemez.",
"lock.page.isLocked": "Sayfa şu anda {email} tarafından düzenlenmektedir ve değiştirilemez.",
"lock.unlock": "Kilidi Aç",
"lock.isUnlocked": "Kaydedilmemiş değişikliklerin üzerine başka bir kullanıcı yazmış. Değişikliklerinizi el ile birleştirmek için değişikliklerinizi indirebilirsiniz.",
"login": "Giri\u015f", "login": "Giri\u015f",
"login.remember": "Oturumumu açık tut", "login.remember": "Oturumumu açık tut",
@@ -297,6 +319,8 @@
"more": "Daha Fazla", "more": "Daha Fazla",
"name": "İsim", "name": "İsim",
"next": "Sonraki", "next": "Sonraki",
"off": "kapalı",
"on": "açık",
"open": "Açık", "open": "Açık",
"options": "Seçenekler", "options": "Seçenekler",
@@ -317,6 +341,9 @@
"<strong>Bu sayfada alt sayfalar var</strong>. <br>Tüm alt sayfalar da silinecek.", "<strong>Bu sayfada alt sayfalar var</strong>. <br>Tüm alt sayfalar da silinecek.",
"page.delete.confirm.title": "Onaylamak için sayfa başlığını girin", "page.delete.confirm.title": "Onaylamak için sayfa başlığını girin",
"page.draft.create": "Taslak oluştur", "page.draft.create": "Taslak oluştur",
"page.duplicate.appendix": "Kopyala",
"page.duplicate.files": "Dosyaları kopyala",
"page.duplicate.pages": "Sayfaları kopyala",
"page.status": "Durum", "page.status": "Durum",
"page.status.draft": "Taslak", "page.status.draft": "Taslak",
"page.status.draft.description": "page.status.draft.description":
@@ -342,9 +369,13 @@
"revert": "Vazge\u00e7", "revert": "Vazge\u00e7",
"role": "Rol", "role": "Rol",
"role.admin.description": "Yönetici tüm haklara sahiptir",
"role.admin.title": "Yönetici",
"role.all": "Tümü", "role.all": "Tümü",
"role.empty": "Bu role ait kullanıcı bulunamadı", "role.empty": "Bu role ait kullanıcı bulunamadı",
"role.description.placeholder": "Açıklama yok", "role.description.placeholder": "Açıklama yok",
"role.nobody.description": "Bu hiçbir izni olmayan bir geri dönüş rolüdür.",
"role.nobody.title": "Hiçkimse",
"save": "Kaydet", "save": "Kaydet",
"search": "Arama", "search": "Arama",

File diff suppressed because one or more lines are too long

View File

@@ -251,6 +251,9 @@
<path d="M8 0C5.8 0 4 1.8 4 4v1H2c-.6 0-1 .4-1 1v9c0 .6.4 1 1 1h12c.6 0 1-.4 1-1V6c0-.6-.4-1-1-1h-2V4c0-2.2-1.8-4-4-4zm1 11.7V13H7v-1.3c-.6-.3-1-1-1-1.7 0-1.1.9-2 2-2s2 .9 2 2c0 .7-.4 1.4-1 1.7zM10 5H6V4c0-1.1.9-2 2-2s2 .9 2 2v1z" <path d="M8 0C5.8 0 4 1.8 4 4v1H2c-.6 0-1 .4-1 1v9c0 .6.4 1 1 1h12c.6 0 1-.4 1-1V6c0-.6-.4-1-1-1h-2V4c0-2.2-1.8-4-4-4zm1 11.7V13H7v-1.3c-.6-.3-1-1-1-1.7 0-1.1.9-2 2-2s2 .9 2 2c0 .7-.4 1.4-1 1.7zM10 5H6V4c0-1.1.9-2 2-2s2 .9 2 2v1z"
/> />
</symbol> </symbol>
<symbol id="icon-unlock" viewBox="0 0 16 16">
<path d="M1,15c0,0.6,0.4,1,1,1h12c0.6,0,1-0.4,1-1V6c0-0.6-0.4-1-1-1h-2H6V4c0-1.1,0.9-2,2-2c0.6,0,1.1,0.2,1.5,0.7 l0.7,0.7l1.5-1.3L11,1.3C10.2,0.5,9.1,0,8,0C5.8,0,4,1.8,4,4v1H2C1.4,5,1,5.4,1,6V15z M8,8c1.1,0,2,0.9,2,2c0,0.7-0.4,1.4-1,1.7V13 H7v-1.3c-0.6-0.3-1-1-1-1.7C6,8.9,6.9,8,8,8z"></path>
</symbol>
<symbol id="icon-logout" viewBox="0 0 16 16"> <symbol id="icon-logout" viewBox="0 0 16 16">
<path d="M3.4 2H8v2h2V1c0-.6-.4-1-1-1H1C.4 0 0 .4 0 1v9c0 .3.1.5.3.7l5 5c.2.2.4.3.7.3.1 0 .3 0 .4-.1.4-.1.6-.5.6-.9V6c0-.3-.1-.5-.3-.7L3.4 2zM5 12.6l-3-3V3.4l3 3v6.2z" <path d="M3.4 2H8v2h2V1c0-.6-.4-1-1-1H1C.4 0 0 .4 0 1v9c0 .3.1.5.3.7l5 5c.2.2.4.3.7.3.1 0 .3 0 .4-.1.4-.1.6-.5.6-.9V6c0-.3-.1-.5-.3-.7L3.4 2zM5 12.6l-3-3V3.4l3 3v6.2z"
/> />
@@ -400,5 +403,9 @@
<symbol id="icon-key" viewBox="0 0 16 16"> <symbol id="icon-key" viewBox="0 0 16 16">
<path d="M12.7,0L6.5,6.3C6,6.1,5.5,6,5,6c-2.8,0-5,2.2-5,5s2.2,5,5,5s5-2.2,5-5c0-0.5-0.1-1.1-0.3-1.6L11,8V6h2V4h2 l1-1V0H12.7z M4.5,12C3.7,12,3,11.3,3,10.5S3.7,9,4.5,9S6,9.7,6,10.5S5.3,12,4.5,12z"></path> <path d="M12.7,0L6.5,6.3C6,6.1,5.5,6,5,6c-2.8,0-5,2.2-5,5s2.2,5,5,5s5-2.2,5-5c0-0.5-0.1-1.1-0.3-1.6L11,8V6h2V4h2 l1-1V0H12.7z M4.5,12C3.7,12,3,11.3,3,10.5S3.7,9,4.5,9S6,9.7,6,10.5S5.3,12,4.5,12z"></path>
</symbol> </symbol>
<symbol id="icon-copy" viewBox="0 0 16 16">
<path d="M10,4H2C1.4,4,1,4.4,1,5v10c0,0.6,0.4,1,1,1h8c0.6,0,1-0.4,1-1V5C11,4.4,10.6,4,10,4z"></path>
<path d="M14,0H4v2h9v11h2V1C15,0.4,14.6,0,14,0z"></path>
</symbol>
</defs> </defs>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 27 KiB

File diff suppressed because one or more lines are too long

View File

@@ -2,6 +2,7 @@
window.panel = window.panel || {}; window.panel = window.panel || {};
window.panel.plugins = { window.panel.plugins = {
components: {}, components: {},
created: [],
fields: {}, fields: {},
sections: {}, sections: {},
routes: [], routes: [],
@@ -30,10 +31,21 @@ window.panel.plugin = function (plugin, parts) {
window.panel.plugins["use"].push(options); window.panel.plugins["use"].push(options);
}); });
// created callback
if (parts["created"]) {
window.panel.plugins["created"].push(parts["created"]);
}
// Views // Views
resolve(parts, "views", function (name, options) { resolve(parts, "views", function (name, options) {
window.panel.plugins["views"][name] = options; window.panel.plugins["views"][name] = options;
}); });
// Login
if (parts.login) {
window.panel.plugins.login = parts.login;
}
}; };
function resolve(object, type, callback) { function resolve(object, type, callback) {

File diff suppressed because one or more lines are too long

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