Upgrade to 3.2.0
This commit is contained in:
@@ -25,10 +25,8 @@ if (is_file($autoloader = dirname(__DIR__) . '/vendor/autoload.php')) {
|
||||
} 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
|
||||
* load the autoloader themselves
|
||||
*/
|
||||
}
|
||||
|
||||
define('DS', '/');
|
||||
|
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "getkirby/cms",
|
||||
"description": "The Kirby 3 core",
|
||||
"version": "3.1.4",
|
||||
"version": "3.2.0",
|
||||
"license": "proprietary",
|
||||
"keywords": ["kirby", "cms", "core"],
|
||||
"homepage": "https://getkirby.com",
|
||||
@@ -33,7 +33,7 @@
|
||||
"zendframework/zend-escaper": "2.6.0"
|
||||
},
|
||||
"autoload": {
|
||||
"files": ["config/helpers.php", "config/aliases.php", "config/tests.php"],
|
||||
"files": ["config/setup.php"],
|
||||
"classmap": ["dependencies/"],
|
||||
"psr-4": {
|
||||
"Kirby\\": "src/"
|
||||
|
@@ -22,6 +22,9 @@ return [
|
||||
'name' => function (Language $language) {
|
||||
return $language->name();
|
||||
},
|
||||
'rules' => function (Language $language) {
|
||||
return $language->rules();
|
||||
},
|
||||
'url' => function (Language $language) {
|
||||
return $language->url();
|
||||
},
|
||||
@@ -32,6 +35,8 @@ return [
|
||||
'code',
|
||||
'default',
|
||||
'name',
|
||||
'rules',
|
||||
'direction'
|
||||
]
|
||||
]
|
||||
];
|
||||
|
@@ -35,6 +35,9 @@ return [
|
||||
'hasDrafts' => function (Page $page) {
|
||||
return $page->hasDrafts();
|
||||
},
|
||||
'hasFiles' => function (Page $page) {
|
||||
return $page->hasFiles();
|
||||
},
|
||||
'id' => function (Page $page) {
|
||||
return $page->id();
|
||||
},
|
||||
@@ -125,7 +128,6 @@ return [
|
||||
'id',
|
||||
'blueprint',
|
||||
'content',
|
||||
'errors',
|
||||
'status',
|
||||
'options',
|
||||
'next' => ['id', 'slug', 'title'],
|
||||
|
@@ -29,6 +29,9 @@ return [
|
||||
'options' => function (Site $site) {
|
||||
return $site->permissions()->toArray();
|
||||
},
|
||||
'previewUrl' => function (Site $site) {
|
||||
return $site->previewUrl();
|
||||
},
|
||||
'title' => function (Site $site) {
|
||||
return $site->title()->value();
|
||||
},
|
||||
@@ -53,6 +56,7 @@ return [
|
||||
'blueprint',
|
||||
'content',
|
||||
'options',
|
||||
'previewUrl',
|
||||
'url'
|
||||
],
|
||||
'selector' => [
|
||||
|
@@ -1,12 +1,16 @@
|
||||
<?php
|
||||
|
||||
use Kirby\Cms\System;
|
||||
use Kirby\Toolkit\Str;
|
||||
|
||||
/**
|
||||
* System
|
||||
*/
|
||||
return [
|
||||
'fields' => [
|
||||
'ascii' => function () {
|
||||
return Str::$ascii;
|
||||
},
|
||||
'isOk' => function (System $system) {
|
||||
return $system->isOk();
|
||||
},
|
||||
@@ -38,6 +42,9 @@ return [
|
||||
return $this->site()->title()->value();
|
||||
}
|
||||
},
|
||||
'slugs' => function () {
|
||||
return Str::$language;
|
||||
},
|
||||
'title' => function () {
|
||||
return $this->site()->title()->value();
|
||||
},
|
||||
@@ -82,6 +89,7 @@ return [
|
||||
'requirements'
|
||||
],
|
||||
'panel' => [
|
||||
'ascii',
|
||||
'breadcrumbTitle',
|
||||
'isOk',
|
||||
'isInstalled',
|
||||
@@ -91,10 +99,11 @@ return [
|
||||
'license',
|
||||
'multilang',
|
||||
'requirements',
|
||||
'slugs',
|
||||
'title',
|
||||
'translation',
|
||||
'user' => 'auth',
|
||||
'version'
|
||||
'version'
|
||||
]
|
||||
],
|
||||
];
|
||||
|
@@ -11,6 +11,7 @@ return function ($kirby) {
|
||||
include __DIR__ . '/routes/site.php',
|
||||
include __DIR__ . '/routes/users.php',
|
||||
include __DIR__ . '/routes/files.php',
|
||||
include __DIR__ . '/routes/lock.php',
|
||||
include __DIR__ . '/routes/system.php',
|
||||
include __DIR__ . '/routes/translations.php'
|
||||
);
|
||||
|
@@ -43,8 +43,14 @@ return [
|
||||
'user' => $this->resolve($user)->view('auth')->toArray()
|
||||
];
|
||||
}
|
||||
|
||||
throw new NotFoundException(['key' => 'user.undefined']);
|
||||
} 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');
|
||||
|
52
kirby/config/api/routes/lock.php
Executable file
52
kirby/config/api/routes/lock.php
Executable 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();
|
||||
}
|
||||
],
|
||||
];
|
@@ -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',
|
||||
'method' => 'PATCH',
|
||||
|
@@ -13,6 +13,7 @@ use Kirby\Exception\NotFoundException;
|
||||
use Kirby\Image\Darkroom;
|
||||
use Kirby\Text\Markdown;
|
||||
use Kirby\Text\SmartyPants;
|
||||
use Kirby\Toolkit\A;
|
||||
use Kirby\Toolkit\F;
|
||||
use Kirby\Toolkit\Tpl as Snippet;
|
||||
|
||||
@@ -53,20 +54,16 @@ return [
|
||||
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
|
||||
$mediaRoot = dirname($file->mediaRoot());
|
||||
$dst = $mediaRoot . '/{{ name }}{{ attributes }}.{{ extension }}';
|
||||
$thumbRoot = (new Filename($file->root(), $dst, $attributes))->toString();
|
||||
$thumbRoot = (new Filename($file->root(), $dst, $options))->toString();
|
||||
$thumbName = basename($thumbRoot);
|
||||
$job = $mediaRoot . '/.jobs/' . $thumbName . '.json';
|
||||
|
||||
if (file_exists($thumbRoot) === false) {
|
||||
try {
|
||||
Data::write($job, array_merge($attributes, [
|
||||
Data::write($job, array_merge($options, [
|
||||
'filename' => $file->filename()
|
||||
]));
|
||||
} catch (Throwable $e) {
|
||||
@@ -104,8 +101,14 @@ return [
|
||||
*/
|
||||
'markdown' => function (App $kirby, string $text = null, array $options = [], bool $inline = false): string {
|
||||
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);
|
||||
},
|
||||
@@ -120,8 +123,14 @@ return [
|
||||
*/
|
||||
'smartypants' => function (App $kirby, string $text = null, array $options = []): string {
|
||||
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);
|
||||
},
|
||||
@@ -130,15 +139,23 @@ return [
|
||||
* Add your own snippet loader
|
||||
*
|
||||
* @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
|
||||
* @return string|null
|
||||
*/
|
||||
'snippet' => function (App $kirby, string $name, array $data = []): ?string {
|
||||
$file = $kirby->root('snippets') . '/' . $name . '.php';
|
||||
'snippet' => function (App $kirby, $name, array $data = []): ?string {
|
||||
$snippets = A::wrap($name);
|
||||
|
||||
if (file_exists($file) === false) {
|
||||
$file = $kirby->extensions('snippets')[$name] ?? null;
|
||||
foreach ($snippets as $name) {
|
||||
$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);
|
||||
@@ -171,7 +188,7 @@ return [
|
||||
$options = $darkroom->preprocess($src, $options);
|
||||
$root = (new Filename($src, $dst, $options))->toString();
|
||||
|
||||
F::copy($src, $root);
|
||||
F::copy($src, $root, true);
|
||||
$darkroom->process($root, $options);
|
||||
|
||||
return $root;
|
||||
|
@@ -43,9 +43,6 @@ return [
|
||||
},
|
||||
],
|
||||
'computed' => [
|
||||
'options' => function (): array {
|
||||
return $this->getOptions();
|
||||
},
|
||||
'default' => function () {
|
||||
return $this->sanitizeOptions($this->default);
|
||||
},
|
||||
|
@@ -3,7 +3,12 @@
|
||||
use Kirby\Toolkit\A;
|
||||
|
||||
return [
|
||||
'mixins' => ['min'],
|
||||
'mixins' => [
|
||||
'picker',
|
||||
'filepicker',
|
||||
'min',
|
||||
'upload'
|
||||
],
|
||||
'props' => [
|
||||
/**
|
||||
* Unset inherited props
|
||||
@@ -21,27 +26,6 @@ return [
|
||||
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`
|
||||
*/
|
||||
@@ -49,48 +33,13 @@ return [
|
||||
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`
|
||||
*/
|
||||
'size' => function (string $size = null) {
|
||||
'size' => function (string $size = 'auto') {
|
||||
return $size;
|
||||
},
|
||||
|
||||
/**
|
||||
* Main text
|
||||
*/
|
||||
'text' => function (string $text = '{{ file.filename }}') {
|
||||
return $text;
|
||||
},
|
||||
|
||||
'value' => function ($value = null) {
|
||||
return $value;
|
||||
}
|
||||
@@ -118,38 +67,15 @@ return [
|
||||
],
|
||||
'methods' => [
|
||||
'fileResponse' => function ($file) {
|
||||
if ($this->layout === 'list') {
|
||||
$thumb = [
|
||||
'width' => 100,
|
||||
'height' => 100
|
||||
];
|
||||
} 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(),
|
||||
];
|
||||
return $file->panelPickerData([
|
||||
'image' => $this->image,
|
||||
'info' => $this->info ?? false,
|
||||
'model' => $this->model(),
|
||||
'text' => $this->text,
|
||||
]);
|
||||
},
|
||||
'toFiles' => function ($value = null) {
|
||||
$files = [];
|
||||
$kirby = kirby();
|
||||
|
||||
foreach (Yaml::decode($value) as $id) {
|
||||
if (is_array($id) === true) {
|
||||
@@ -168,16 +94,32 @@ return [
|
||||
return [
|
||||
[
|
||||
'pattern' => '/',
|
||||
'action' => function () {
|
||||
'action' => function () {
|
||||
$field = $this->field();
|
||||
$files = $field->model()->query($field->query(), 'Kirby\Cms\Files');
|
||||
$data = [];
|
||||
|
||||
foreach ($files as $index => $file) {
|
||||
$data[] = $field->fileResponse($file);
|
||||
}
|
||||
return $field->filepicker([
|
||||
'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(),
|
||||
]);
|
||||
});
|
||||
}
|
||||
]
|
||||
];
|
||||
|
40
kirby/config/fields/mixins/filepicker.php
Executable file
40
kirby/config/fields/mixins/filepicker.php
Executable 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;
|
||||
}
|
||||
]
|
||||
];
|
@@ -23,6 +23,11 @@ return [
|
||||
return $query;
|
||||
},
|
||||
],
|
||||
'computed' => [
|
||||
'options' => function (): array {
|
||||
return $this->getOptions();
|
||||
}
|
||||
],
|
||||
'methods' => [
|
||||
'getOptions' => function () {
|
||||
return Options::factory(
|
||||
|
49
kirby/config/fields/mixins/pagepicker.php
Executable file
49
kirby/config/fields/mixins/pagepicker.php
Executable 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
|
||||
];
|
||||
}
|
||||
]
|
||||
];
|
63
kirby/config/fields/mixins/picker.php
Executable file
63
kirby/config/fields/mixins/picker.php
Executable 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;
|
||||
},
|
||||
|
||||
],
|
||||
];
|
57
kirby/config/fields/mixins/upload.php
Executable file
57
kirby/config/fields/mixins/upload.php
Executable 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);
|
||||
});
|
||||
}
|
||||
]
|
||||
];
|
44
kirby/config/fields/mixins/userpicker.php
Executable file
44
kirby/config/fields/mixins/userpicker.php
Executable 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;
|
||||
}
|
||||
]
|
||||
];
|
@@ -4,7 +4,7 @@ use Kirby\Toolkit\A;
|
||||
use Kirby\Toolkit\I18n;
|
||||
|
||||
return [
|
||||
'mixins' => ['min'],
|
||||
'mixins' => ['min', 'pagepicker', 'picker'],
|
||||
'props' => [
|
||||
/**
|
||||
* Unset inherited props
|
||||
@@ -22,13 +22,6 @@ return [
|
||||
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
|
||||
*/
|
||||
@@ -37,7 +30,7 @@ return [
|
||||
},
|
||||
|
||||
/**
|
||||
* Info text
|
||||
* Info text for each item
|
||||
*/
|
||||
'info' => function (string $info = null) {
|
||||
return $info;
|
||||
@@ -50,27 +43,6 @@ return [
|
||||
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
|
||||
*/
|
||||
@@ -81,12 +53,12 @@ return [
|
||||
/**
|
||||
* Layout size for cards: `tiny`, `small`, `medium`, `large` or `huge`
|
||||
*/
|
||||
'size' => function (string $size = null) {
|
||||
'size' => function (string $size = 'auto') {
|
||||
return $size;
|
||||
},
|
||||
|
||||
/**
|
||||
* Main text
|
||||
* Main text for each item
|
||||
*/
|
||||
'text' => function (string $text = null) {
|
||||
return $text;
|
||||
@@ -98,30 +70,11 @@ return [
|
||||
],
|
||||
'methods' => [
|
||||
'pageResponse' => function ($page) {
|
||||
if ($this->layout === 'list') {
|
||||
$thumb = [
|
||||
'width' => 100,
|
||||
'height' => 100
|
||||
];
|
||||
} 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(),
|
||||
];
|
||||
return $page->panelPickerData([
|
||||
'image' => $this->image,
|
||||
'info' => $this->info,
|
||||
'text' => $this->text,
|
||||
]);
|
||||
},
|
||||
'toPages' => function ($value = null) {
|
||||
$pages = [];
|
||||
@@ -146,35 +99,14 @@ return [
|
||||
'pattern' => '/',
|
||||
'action' => function () {
|
||||
$field = $this->field();
|
||||
$query = $field->query();
|
||||
|
||||
if ($query) {
|
||||
$pages = $field->model()->query($query, 'Kirby\Cms\Pages');
|
||||
$model = null;
|
||||
} else {
|
||||
if (!$parent = $this->site()->find($this->requestQuery('parent'))) {
|
||||
$parent = $this->site();
|
||||
}
|
||||
|
||||
$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
|
||||
];
|
||||
return $field->pagepicker([
|
||||
'image' => $field->image(),
|
||||
'info' => $field->info(),
|
||||
'parent' => $this->requestQuery('parent'),
|
||||
'query' => $field->query(),
|
||||
'text' => $field->text()
|
||||
]);
|
||||
}
|
||||
]
|
||||
];
|
||||
|
@@ -19,9 +19,6 @@ return [
|
||||
},
|
||||
],
|
||||
'computed' => [
|
||||
'options' => function (): array {
|
||||
return $this->getOptions();
|
||||
},
|
||||
'default' => function () {
|
||||
return $this->sanitizeOption($this->default);
|
||||
},
|
||||
|
@@ -14,5 +14,11 @@ return [
|
||||
'icon' => function (string $icon = null) {
|
||||
return $icon;
|
||||
},
|
||||
/**
|
||||
* Custom placeholder string for empty option.
|
||||
*/
|
||||
'placeholder' => function (string $placeholder = '—') {
|
||||
return $placeholder;
|
||||
},
|
||||
]
|
||||
];
|
||||
|
@@ -43,9 +43,6 @@ return [
|
||||
},
|
||||
],
|
||||
'computed' => [
|
||||
'options' => function () {
|
||||
return $this->getOptions();
|
||||
},
|
||||
'default' => function (): array {
|
||||
return $this->toTags($this->default);
|
||||
},
|
||||
@@ -55,6 +52,10 @@ return [
|
||||
],
|
||||
'methods' => [
|
||||
'toTags' => function ($value) {
|
||||
if (is_null($value) === true) {
|
||||
return [];
|
||||
}
|
||||
|
||||
$options = $this->options();
|
||||
|
||||
// transform into value-text objects
|
||||
|
@@ -1,6 +1,7 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'mixins' => ['filepicker', 'upload'],
|
||||
'props' => [
|
||||
/**
|
||||
* Unset inherited props
|
||||
@@ -44,6 +45,13 @@ return [
|
||||
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
|
||||
*/
|
||||
@@ -65,24 +73,6 @@ return [
|
||||
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) {
|
||||
return trim($value);
|
||||
@@ -93,66 +83,13 @@ return [
|
||||
[
|
||||
'pattern' => 'files',
|
||||
'action' => function () {
|
||||
$field = $this->field();
|
||||
$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;
|
||||
return $this->field()->filepicker($this->field()->files());
|
||||
}
|
||||
],
|
||||
[
|
||||
'pattern' => 'upload',
|
||||
'action' => function () {
|
||||
$field = $this->field();
|
||||
$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 $this->field()->upload($this, $this->field()->uploads(), function ($file) {
|
||||
return [
|
||||
'filename' => $file->filename(),
|
||||
'dragText' => $file->dragText(),
|
||||
|
@@ -1,7 +1,7 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'mixins' => ['min', 'selector'],
|
||||
'mixins' => ['min', 'picker', 'userpicker'],
|
||||
'props' => [
|
||||
/**
|
||||
* Unset inherited props
|
||||
@@ -29,56 +29,17 @@ return [
|
||||
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) {
|
||||
return $this->toUsers($value);
|
||||
},
|
||||
],
|
||||
'methods' => [
|
||||
'userResponse' => function ($user) {
|
||||
$avatar = function ($user) {
|
||||
if ($avatar = $user->avatar()) {
|
||||
return [
|
||||
'url' => $avatar->crop(512)->url()
|
||||
];
|
||||
}
|
||||
|
||||
return null;
|
||||
};
|
||||
|
||||
return [
|
||||
'username' => $user->username(),
|
||||
'id' => $user->id(),
|
||||
'email' => $user->email(),
|
||||
'avatar' => $avatar($user)
|
||||
];
|
||||
return $user->panelPickerData([
|
||||
'info' => $this->info,
|
||||
'image' => $this->image,
|
||||
'text' => $this->text,
|
||||
]);
|
||||
},
|
||||
'toUsers' => function ($value = null) {
|
||||
$users = [];
|
||||
@@ -97,6 +58,23 @@ return [
|
||||
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) {
|
||||
return A::pluck($value, 'email');
|
||||
},
|
||||
|
@@ -16,7 +16,7 @@ use Kirby\Toolkit\View;
|
||||
* Helper to create an asset object
|
||||
*
|
||||
* @param string $path
|
||||
* @return Asset
|
||||
* @return Kirby\Cms\Asset
|
||||
*/
|
||||
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
|
||||
*
|
||||
* @param string $name
|
||||
* @return Collection|null
|
||||
* @return Kirby\Cms\Collection|null
|
||||
*/
|
||||
function collection(string $name)
|
||||
{
|
||||
@@ -246,7 +246,7 @@ function html(string $string = null, bool $keepTags = false)
|
||||
* <?= image('some/page/myimage.jpg') ?>
|
||||
*
|
||||
* @param string $path
|
||||
* @return File|null
|
||||
* @return Kirby\Cms\File|null
|
||||
*/
|
||||
function image(string $path = null)
|
||||
{
|
||||
@@ -382,9 +382,9 @@ function js($url, $options = null)
|
||||
/**
|
||||
* Returns the Kirby object in any situation
|
||||
*
|
||||
* @return App
|
||||
* @return Kirby\Cms\App
|
||||
*/
|
||||
function kirby(): App
|
||||
function kirby()
|
||||
{
|
||||
return App::instance();
|
||||
}
|
||||
@@ -527,7 +527,7 @@ function option(string $key, $default = null)
|
||||
* id or the current page when no id is specified
|
||||
*
|
||||
* @param string|array ...$id
|
||||
* @return Page|null
|
||||
* @return Kirby\Cms\Page|null
|
||||
*/
|
||||
function page(...$id)
|
||||
{
|
||||
@@ -542,7 +542,7 @@ function page(...$id)
|
||||
* Helper to build page collections
|
||||
*
|
||||
* @param string|array ...$id
|
||||
* @return Pages
|
||||
* @return Kirby\Cms\Pages
|
||||
*/
|
||||
function pages(...$id)
|
||||
{
|
||||
@@ -616,7 +616,7 @@ function timestamp(string $date = null, int $step = null): ?string
|
||||
/**
|
||||
* Returns the currrent site object
|
||||
*
|
||||
* @return Site
|
||||
* @return Kirby\Cms\Site
|
||||
*/
|
||||
function site()
|
||||
{
|
||||
@@ -669,12 +669,12 @@ function smartypants(string $text = null): string
|
||||
/**
|
||||
* Embeds a snippet from the snippet folder
|
||||
*
|
||||
* @param string $name
|
||||
* @param string|array $name
|
||||
* @param array|object $data
|
||||
* @param boolean $return
|
||||
* @return string
|
||||
*/
|
||||
function snippet(string $name, $data = [], bool $return = false)
|
||||
function snippet($name, $data = [], bool $return = false)
|
||||
{
|
||||
if (is_object($data) === true) {
|
||||
$data = ['item' => $data];
|
||||
@@ -742,6 +742,21 @@ function tc($key, int $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
|
||||
*
|
||||
|
@@ -25,7 +25,7 @@ return function (App $app) {
|
||||
/**
|
||||
* Converts the field value into a proper boolean and inverts it
|
||||
*
|
||||
* @param Field $field
|
||||
* @param Kirby\Cms\Field $field
|
||||
* @return boolean
|
||||
*/
|
||||
'isFalse' => function (Field $field): bool {
|
||||
@@ -35,7 +35,7 @@ return function (App $app) {
|
||||
/**
|
||||
* Converts the field value into a proper boolean
|
||||
*
|
||||
* @param Field $field
|
||||
* @param Kirby\Cms\Field $field
|
||||
* @return boolean
|
||||
*/
|
||||
'isTrue' => function (Field $field): bool {
|
||||
@@ -58,7 +58,7 @@ return function (App $app) {
|
||||
/**
|
||||
* Parses the field value with the given method
|
||||
*
|
||||
* @param Field $field
|
||||
* @param Kirby\Cms\Field $field
|
||||
* @param string $method [',', 'yaml', 'json']
|
||||
* @return array
|
||||
*/
|
||||
@@ -76,7 +76,7 @@ return function (App $app) {
|
||||
/**
|
||||
* 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
|
||||
* @return bool
|
||||
*/
|
||||
@@ -88,27 +88,30 @@ return function (App $app) {
|
||||
/**
|
||||
* Converts the field value to a timestamp or a formatted date
|
||||
*
|
||||
* @param Field $field
|
||||
* @param string $format PHP date formatting string
|
||||
* @param Kirby\Cms\Field $field
|
||||
* @param string|null $format PHP date formatting string
|
||||
* @param string|null $fallback Fallback string for `strtotime` (since 3.2)
|
||||
* @return string|int
|
||||
*/
|
||||
'toDate' => function (Field $field, string $format = null) use ($app) {
|
||||
if (empty($field->value) === true) {
|
||||
'toDate' => function (Field $field, string $format = null, string $fallback = null) use ($app) {
|
||||
if (empty($field->value) === true && $fallback === null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$time = empty($field->value) === true ? strtotime($fallback) : $field->toTimestamp();
|
||||
|
||||
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
|
||||
*
|
||||
* @param Field $field
|
||||
* @return File|null
|
||||
* @param Kirby\Cms\Field $field
|
||||
* @return Kirby\Cms\File|null
|
||||
*/
|
||||
'toFile' => function (Field $field) {
|
||||
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
|
||||
*
|
||||
* @return Files
|
||||
* @param Kirby\Cms\Field $field
|
||||
* @param string $separator
|
||||
* @return Kirby\Cms\Files
|
||||
*/
|
||||
'toFiles' => function (Field $field, string $separator = 'yaml') {
|
||||
$parent = $field->parent();
|
||||
@@ -135,7 +140,7 @@ return function (App $app) {
|
||||
/**
|
||||
* 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
|
||||
* @return float
|
||||
*/
|
||||
@@ -147,7 +152,7 @@ return function (App $app) {
|
||||
/**
|
||||
* 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
|
||||
* @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
|
||||
*
|
||||
* @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 $attr2 If `$attr1` is used to set the Url, you can use `$attr2` to pass an array of additional attributes.
|
||||
* @return string
|
||||
@@ -183,8 +188,8 @@ return function (App $app) {
|
||||
/**
|
||||
* Returns a page object from a page id in the field
|
||||
*
|
||||
* @param Field $field
|
||||
* @return Page|null
|
||||
* @param Kirby\Cms\Field $field
|
||||
* @return Kirby\Cms\Page|null
|
||||
*/
|
||||
'toPage' => function (Field $field) use ($app) {
|
||||
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
|
||||
*
|
||||
* @param Kirby\Cms\Field $field
|
||||
* @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) {
|
||||
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
|
||||
*
|
||||
* @param Kirby\Cms\Field $field
|
||||
* @return Kirby\Cms\Structure
|
||||
*/
|
||||
'toStructure' => function (Field $field) {
|
||||
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
|
||||
*
|
||||
* @param Kirby\Cms\Field $field
|
||||
* @return int
|
||||
*/
|
||||
'toTimestamp' => function (Field $field) {
|
||||
'toTimestamp' => function (Field $field): int {
|
||||
return strtotime($field->value);
|
||||
},
|
||||
|
||||
/**
|
||||
* 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);
|
||||
},
|
||||
|
||||
/**
|
||||
* 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) {
|
||||
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
|
||||
*
|
||||
* @return Users
|
||||
* @param Kirby\Cms\Field $field
|
||||
* @param string $separator
|
||||
* @return Kirby\Cms\Users
|
||||
*/
|
||||
'toUsers' => function (Field $field, string $separator = 'yaml') use ($app) {
|
||||
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
|
||||
* templates without the risk of XSS attacks
|
||||
*
|
||||
* @param Field $field
|
||||
* @param Kirby\Cms\Field $field
|
||||
* @param string $context html, attr, js or css
|
||||
*/
|
||||
'escape' => function (Field $field, string $context = 'html') {
|
||||
@@ -272,6 +290,12 @@ return function (App $app) {
|
||||
/**
|
||||
* Creates an excerpt of the field value without html
|
||||
* 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 = '…') {
|
||||
$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
|
||||
*
|
||||
* @param Kirby\Cms\Field $field
|
||||
* @return Kirby\Cms\Field
|
||||
*/
|
||||
'html' => function (Field $field) {
|
||||
$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
|
||||
*
|
||||
* @param Kirby\Cms\Field $field
|
||||
* @return Kirby\Cms\Field
|
||||
*/
|
||||
'kirbytext' => function (Field $field) use ($app) {
|
||||
$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
|
||||
*
|
||||
* @param Kirby\Cms\Field $field
|
||||
* @return Kirby\Cms\Field
|
||||
*/
|
||||
'kirbytextinline' => function (Field $field) use ($app) {
|
||||
$field->value = $app->kirbytext($field->value, [
|
||||
@@ -313,6 +347,9 @@ return function (App $app) {
|
||||
|
||||
/**
|
||||
* Parses all KirbyTags without also parsing Markdown
|
||||
*
|
||||
* @param Kirby\Cms\Field $field
|
||||
* @return Kirby\Cms\Field
|
||||
*/
|
||||
'kirbytags' => function (Field $field) use ($app) {
|
||||
$field->value = $app->kirbytags($field->value, [
|
||||
@@ -325,6 +362,9 @@ return function (App $app) {
|
||||
|
||||
/**
|
||||
* Converts the field content to lowercase
|
||||
*
|
||||
* @param Kirby\Cms\Field $field
|
||||
* @return Kirby\Cms\Field
|
||||
*/
|
||||
'lower' => function (Field $field) {
|
||||
$field->value = Str::lower($field->value);
|
||||
@@ -333,6 +373,9 @@ return function (App $app) {
|
||||
|
||||
/**
|
||||
* Converts markdown to valid HTML
|
||||
*
|
||||
* @param Kirby\Cms\Field $field
|
||||
* @return Kirby\Cms\Field
|
||||
*/
|
||||
'markdown' => function (Field $field) use ($app) {
|
||||
$field->value = $app->markdown($field->value);
|
||||
@@ -341,6 +384,9 @@ return function (App $app) {
|
||||
|
||||
/**
|
||||
* Converts the field content to valid XML
|
||||
*
|
||||
* @param Kirby\Cms\Field $field
|
||||
* @return Kirby\Cms\Field
|
||||
*/
|
||||
'xml' => function (Field $field) {
|
||||
$field->value = Xml::encode($field->value);
|
||||
@@ -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 string $appendix An optional replacement for the missing rest
|
||||
* @return Field
|
||||
* @return Kirby\Cms\Field
|
||||
*/
|
||||
'short' => function (Field $field, int $length, string $appendix = '…') {
|
||||
$field->value = Str::short($field->value, $length, $appendix);
|
||||
@@ -361,6 +409,9 @@ return function (App $app) {
|
||||
|
||||
/**
|
||||
* Converts the field content to a slug
|
||||
*
|
||||
* @param Kirby\Cms\Field $field
|
||||
* @return Kirby\cms\Field
|
||||
*/
|
||||
'slug' => function (Field $field) {
|
||||
$field->value = Str::slug($field->value);
|
||||
@@ -369,6 +420,9 @@ return function (App $app) {
|
||||
|
||||
/**
|
||||
* Applies SmartyPants to the field
|
||||
*
|
||||
* @param Kirby\Cms\Field $field
|
||||
* @return Kirby\cms\Field
|
||||
*/
|
||||
'smartypants' => function (Field $field) use ($app) {
|
||||
$field->value = $app->smartypants($field->value);
|
||||
@@ -377,6 +431,9 @@ return function (App $app) {
|
||||
|
||||
/**
|
||||
* Splits the field content into an array
|
||||
*
|
||||
* @param Kirby\Cms\Field $field
|
||||
* @return Kirby\cms\Field
|
||||
*/
|
||||
'split' => function (Field $field, $separator = ',') {
|
||||
return Str::split((string)$field->value, $separator);
|
||||
@@ -384,6 +441,9 @@ return function (App $app) {
|
||||
|
||||
/**
|
||||
* Converts the field content to uppercase
|
||||
*
|
||||
* @param Kirby\Cms\Field $field
|
||||
* @return Kirby\cms\Field
|
||||
*/
|
||||
'upper' => function (Field $field) {
|
||||
$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
|
||||
* Avoids typographical widows in strings by replacing
|
||||
* the last space with ` `
|
||||
*
|
||||
* @param Kirby\Cms\Field $field
|
||||
* @return Kirby\cms\Field
|
||||
*/
|
||||
'widont' => function (Field $field) {
|
||||
$field->value = Str::widont($field->value);
|
||||
@@ -402,6 +466,9 @@ return function (App $app) {
|
||||
|
||||
/**
|
||||
* Parses yaml in the field content and returns an array
|
||||
*
|
||||
* @param Kirby\Cms\Field $field
|
||||
* @return array
|
||||
*/
|
||||
'yaml' => function (Field $field): array {
|
||||
return $field->toData('yaml');
|
||||
|
@@ -6,9 +6,17 @@ return function (array $props) {
|
||||
'headline' => $props['headline'] ?? t('files'),
|
||||
'type' => 'files',
|
||||
'layout' => $props['layout'] ?? 'cards',
|
||||
'template' => $props['template'] ?? null,
|
||||
'info' => '{{ file.dimensions }}'
|
||||
]
|
||||
];
|
||||
|
||||
// remove global options
|
||||
unset(
|
||||
$props['headline'],
|
||||
$props['layout'],
|
||||
$props['template']
|
||||
);
|
||||
|
||||
return $props;
|
||||
};
|
||||
|
@@ -5,8 +5,23 @@ return [
|
||||
'kirby' => function (array $roots) {
|
||||
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) {
|
||||
return $roots['kirby'] . '/translations';
|
||||
return $roots['i18n'] . '/translations';
|
||||
},
|
||||
|
||||
// index
|
||||
|
@@ -9,6 +9,7 @@ use Kirby\Cms\PluginAssets;
|
||||
use Kirby\Cms\Response;
|
||||
use Kirby\Exception\NotFoundException;
|
||||
use Kirby\Http\Response\Redirect;
|
||||
use Kirby\Http\Router;
|
||||
use Kirby\Http\Router\Route;
|
||||
use Kirby\Toolkit\F;
|
||||
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',
|
||||
'action' => function (string $version, string $type) use ($kirby) {
|
||||
$plugins = new PanelPlugins($type);
|
||||
$plugins->publish();
|
||||
'action' => function (string $type) use ($kirby) {
|
||||
$plugins = new PanelPlugins();
|
||||
|
||||
return $kirby
|
||||
->response()
|
||||
->type($type)
|
||||
->body($plugins->read());
|
||||
}
|
||||
],
|
||||
[
|
||||
'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);
|
||||
->body($plugins->read($type));
|
||||
}
|
||||
],
|
||||
[
|
||||
@@ -150,7 +139,7 @@ return function ($kirby) {
|
||||
|
||||
// default home page
|
||||
} else {
|
||||
return $kirby->resolve(null, $kirby->defaultLanguage()->code());
|
||||
return $kirby->defaultLanguage()->router()->call();
|
||||
}
|
||||
}
|
||||
];
|
||||
@@ -161,7 +150,7 @@ return function ($kirby) {
|
||||
'method' => 'ALL',
|
||||
'env' => 'site',
|
||||
'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 {
|
||||
|
@@ -98,24 +98,12 @@ return [
|
||||
'data' => function () {
|
||||
$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
|
||||
// a different parent model
|
||||
$dragTextAbsolute = $this->model->is($this->parent) === false;
|
||||
|
||||
foreach ($this->files as $file) {
|
||||
$image = $file->panelImage($this->image, $thumb);
|
||||
$image = $file->panelImage($this->image);
|
||||
|
||||
$data[] = [
|
||||
'dragText' => $file->dragText($this->dragTextType, $dragTextAbsolute),
|
||||
@@ -220,6 +208,7 @@ return [
|
||||
'accept' => $this->accept,
|
||||
'empty' => $this->empty,
|
||||
'headline' => $this->headline,
|
||||
'help' => $this->help,
|
||||
'layout' => $this->layout,
|
||||
'link' => $this->link,
|
||||
'max' => $this->max,
|
||||
|
@@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
use Kirby\Toolkit\I18n;
|
||||
|
||||
return [
|
||||
'props' => [
|
||||
/**
|
||||
|
@@ -16,7 +16,12 @@ return [
|
||||
$parent = $this->parent;
|
||||
|
||||
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) {
|
||||
|
@@ -1,9 +1,7 @@
|
||||
<?php
|
||||
|
||||
use Kirby\Cms\App;
|
||||
use Kirby\Cms\Blueprint;
|
||||
use Kirby\Toolkit\A;
|
||||
use Kirby\Toolkit\F;
|
||||
use Kirby\Toolkit\Str;
|
||||
|
||||
return [
|
||||
@@ -141,22 +139,9 @@ return [
|
||||
'data' => function () {
|
||||
$data = [];
|
||||
|
||||
if ($this->layout === 'list') {
|
||||
$thumb = [
|
||||
'width' => 100,
|
||||
'height' => 100
|
||||
];
|
||||
} else {
|
||||
$thumb = [
|
||||
'width' => 400,
|
||||
'height' => 400
|
||||
];
|
||||
}
|
||||
|
||||
foreach ($this->pages as $item) {
|
||||
$permissions = $item->permissions();
|
||||
$blueprint = $item->blueprint();
|
||||
$image = $item->panelImage($this->image, $thumb);
|
||||
$image = $item->panelImage($this->image);
|
||||
|
||||
$data[] = [
|
||||
'id' => $item->id(),
|
||||
@@ -281,6 +266,7 @@ return [
|
||||
'add' => $this->add,
|
||||
'empty' => $this->empty,
|
||||
'headline' => $this->headline,
|
||||
'help' => $this->help,
|
||||
'layout' => $this->layout,
|
||||
'link' => $this->link,
|
||||
'max' => $this->max,
|
||||
|
@@ -1,7 +1,19 @@
|
||||
<?php
|
||||
|
||||
$aliases = [
|
||||
/**
|
||||
* Constants
|
||||
*/
|
||||
define('DS', '/');
|
||||
|
||||
/**
|
||||
* Load files that can't be autoloaded
|
||||
*/
|
||||
require_once __DIR__ . '/helpers.php';
|
||||
|
||||
/**
|
||||
* Class aliases
|
||||
*/
|
||||
$aliases = [
|
||||
// cms classes
|
||||
'asset' => 'Kirby\Cms\Asset',
|
||||
'collection' => 'Kirby\Cms\Collection',
|
||||
@@ -64,3 +76,20 @@ spl_autoload_register(function ($class) use ($aliases) {
|
||||
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;
|
||||
}
|
||||
});
|
||||
}
|
@@ -39,6 +39,7 @@ return [
|
||||
'file' => [
|
||||
'attr' => [
|
||||
'class',
|
||||
'download',
|
||||
'rel',
|
||||
'target',
|
||||
'text',
|
||||
@@ -57,7 +58,7 @@ return [
|
||||
|
||||
return Html::a($file->url(), $tag->text, [
|
||||
'class' => $tag->class,
|
||||
'download' => true,
|
||||
'download' => $tag->download !== 'false',
|
||||
'rel' => $tag->rel,
|
||||
'target' => $tag->target,
|
||||
'title' => $tag->title,
|
||||
@@ -106,7 +107,13 @@ return [
|
||||
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,
|
||||
'class' => $tag->linkclass,
|
||||
'target' => $tag->target
|
||||
|
@@ -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
9
kirby/i18n/rules/LICENSE
Executable 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
30
kirby/i18n/rules/ar.json
Executable 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
16
kirby/i18n/rules/az.json
Executable 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
65
kirby/i18n/rules/bg.json
Executable 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
20
kirby/i18n/rules/cs.json
Executable 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
10
kirby/i18n/rules/da.json
Executable file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"Æ": "Ae",
|
||||
"æ": "ae",
|
||||
"Ø": "Oe",
|
||||
"ø": "oe",
|
||||
"Å": "Aa",
|
||||
"å": "aa",
|
||||
"É": "E",
|
||||
"é": "e"
|
||||
}
|
9
kirby/i18n/rules/de.json
Executable file
9
kirby/i18n/rules/de.json
Executable file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"Ä": "AE",
|
||||
"Ö": "OE",
|
||||
"Ü": "UE",
|
||||
"ß": "ss",
|
||||
"ä": "ae",
|
||||
"ö": "oe",
|
||||
"ü": "ue"
|
||||
}
|
111
kirby/i18n/rules/el.json
Executable file
111
kirby/i18n/rules/el.json
Executable 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
14
kirby/i18n/rules/eo.json
Executable 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
14
kirby/i18n/rules/et.json
Executable 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
34
kirby/i18n/rules/fa.json
Executable 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
6
kirby/i18n/rules/fi.json
Executable file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"Ä": "A",
|
||||
"Ö": "O",
|
||||
"ä": "a",
|
||||
"ö": "o"
|
||||
}
|
34
kirby/i18n/rules/fr.json
Executable file
34
kirby/i18n/rules/fr.json
Executable 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
66
kirby/i18n/rules/hi.json
Executable 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
12
kirby/i18n/rules/hr.json
Executable file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"Č": "C",
|
||||
"Ć": "C",
|
||||
"Ž": "Z",
|
||||
"Š": "S",
|
||||
"Đ": "Dj",
|
||||
"č": "c",
|
||||
"ć": "c",
|
||||
"ž": "z",
|
||||
"š": "s",
|
||||
"đ": "dj"
|
||||
}
|
20
kirby/i18n/rules/hu.json
Executable file
20
kirby/i18n/rules/hu.json
Executable 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
79
kirby/i18n/rules/hy.json
Executable 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
13
kirby/i18n/rules/it.json
Executable file
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"À": "a",
|
||||
"È": "e",
|
||||
"Ì": "i",
|
||||
"Ò": "o",
|
||||
"Ù": "u",
|
||||
"à": "a",
|
||||
"é": "e",
|
||||
"è": "e",
|
||||
"ì": "i",
|
||||
"ò": "o",
|
||||
"ù": "u"
|
||||
}
|
35
kirby/i18n/rules/ka.json
Executable file
35
kirby/i18n/rules/ka.json
Executable 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
20
kirby/i18n/rules/lt.json
Executable 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
18
kirby/i18n/rules/lv.json
Executable 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
64
kirby/i18n/rules/mk.json
Executable 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
121
kirby/i18n/rules/my.json
Executable 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
8
kirby/i18n/rules/nb.json
Executable file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"Æ": "AE",
|
||||
"Ø": "OE",
|
||||
"Å": "AA",
|
||||
"æ": "ae",
|
||||
"ø": "oe",
|
||||
"å": "aa"
|
||||
}
|
20
kirby/i18n/rules/pl.json
Executable file
20
kirby/i18n/rules/pl.json
Executable 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
187
kirby/i18n/rules/pt_BR.json
Executable 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
16
kirby/i18n/rules/rm.json
Executable 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
68
kirby/i18n/rules/ru.json
Executable 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
72
kirby/i18n/rules/sr.json
Executable 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
8
kirby/i18n/rules/sv_SE.json
Executable file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"Ä": "A",
|
||||
"Å": "a",
|
||||
"Ö": "O",
|
||||
"ä": "a",
|
||||
"å": "a",
|
||||
"ö": "o"
|
||||
}
|
14
kirby/i18n/rules/tr.json
Executable file
14
kirby/i18n/rules/tr.json
Executable 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
10
kirby/i18n/rules/uk.json
Executable file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"Ґ": "G",
|
||||
"І": "I",
|
||||
"Ї": "Ji",
|
||||
"Є": "Ye",
|
||||
"ґ": "g",
|
||||
"і": "i",
|
||||
"ї": "ji",
|
||||
"є": "ye"
|
||||
}
|
92
kirby/i18n/rules/vi.json
Executable file
92
kirby/i18n/rules/vi.json
Executable 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
6937
kirby/i18n/rules/zh.json
Executable file
File diff suppressed because it is too large
Load Diff
@@ -24,8 +24,14 @@
|
||||
"delete": "\u0418\u0437\u0442\u0440\u0438\u0439",
|
||||
"dimensions": "Размери",
|
||||
"discard": "\u041e\u0442\u043c\u0435\u043d\u0438",
|
||||
"download": "Download",
|
||||
"duplicate": "Duplicate",
|
||||
"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.placeholder": "mail@example.com",
|
||||
|
||||
@@ -65,6 +71,14 @@
|
||||
"error.form.incomplete": "Моля коригирайте всички грешки във формата...",
|
||||
"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":
|
||||
"Не можете да смените URL на \"{slug}\"",
|
||||
"error.page.changeStatus.incomplete":
|
||||
@@ -90,6 +104,7 @@
|
||||
"Вече съществува чернова с URL-добавка \"{slug}\"",
|
||||
"error.page.duplicate":
|
||||
"Страница с URL-добавка \"{slug}\" вече съществува",
|
||||
"error.page.duplicate.permission": "You are not allowed to duplicate \"{slug}\"",
|
||||
"error.page.notFound": "Страницата \"{slug}\" не може да бъде намерена",
|
||||
"error.page.num.invalid":
|
||||
"Моля въведете валидно число за сортиране. Числата не трябва да са негативни.",
|
||||
@@ -270,6 +285,13 @@
|
||||
|
||||
"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.remember": "Keep me logged in",
|
||||
|
||||
@@ -297,6 +319,8 @@
|
||||
"more": "Още",
|
||||
"name": "Име",
|
||||
"next": "Next",
|
||||
"off": "off",
|
||||
"on": "on",
|
||||
"open": "Отвори",
|
||||
"options": "Options",
|
||||
|
||||
@@ -317,6 +341,9 @@
|
||||
"<strong>Тази страница има подстраници</strong>. <br>Всички подстраници също ще бъдат изтрити.",
|
||||
"page.delete.confirm.title": "Въведи заглавие на страница за да потвърдиш",
|
||||
"page.draft.create": "Създай чернова",
|
||||
"page.duplicate.appendix": "Копирай",
|
||||
"page.duplicate.files": "Copy files",
|
||||
"page.duplicate.pages": "Copy pages",
|
||||
"page.status": "Status",
|
||||
"page.status.draft": "Чернова",
|
||||
"page.status.draft.description":
|
||||
@@ -342,9 +369,13 @@
|
||||
"revert": "\u041e\u0442\u043c\u0435\u043d\u0438",
|
||||
|
||||
"role": "\u0420\u043e\u043b\u044f",
|
||||
"role.admin.description": "The admin has all rights",
|
||||
"role.admin.title": "Admin",
|
||||
"role.all": "Всички",
|
||||
"role.empty": "Не съществуват потребители с тази роля",
|
||||
"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",
|
||||
"search": "Търси",
|
@@ -24,8 +24,14 @@
|
||||
"delete": "Eliminar",
|
||||
"dimensions": "Dimensions",
|
||||
"discard": "Descartar",
|
||||
"download": "Descarregar",
|
||||
"duplicate": "Duplicar",
|
||||
"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.placeholder": "mail@exemple.com",
|
||||
|
||||
@@ -65,6 +71,14 @@
|
||||
"error.form.incomplete": "Si us plau, corregeix els errors del formulari ...",
|
||||
"error.form.notSaved": "No s'ha pogut desar el formulari",
|
||||
|
||||
"error.language.code": "Introdueix un codi vàlid per a l’idioma",
|
||||
"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 s’ha pogut verificar la llicència",
|
||||
|
||||
"error.page.changeSlug.permission":
|
||||
"No teniu permís per canviar l'apèndix d'URL per a \"{slug}\"",
|
||||
"error.page.changeStatus.incomplete":
|
||||
@@ -90,6 +104,7 @@
|
||||
"Ja existeix un esborrany de pàgina amb l'apèndix d'URL \"{slug}\"",
|
||||
"error.page.duplicate":
|
||||
"Ja existeix una pàgina amb l'apèndix d'URL \"{slug}\"",
|
||||
"error.page.duplicate.permission": "No tens permís per duplicar \"{slug}\"",
|
||||
"error.page.notFound": "La pàgina \"{slug}\" no s'ha trobat",
|
||||
"error.page.num.invalid":
|
||||
"Si us plau, introdueix un número d 'ordenació vàlid. Els números no poden ser negatius.",
|
||||
@@ -104,18 +119,18 @@
|
||||
"error.section.files.max.singular":
|
||||
"No podeu afegir més d'un fitxer a la secció \"{section}\"",
|
||||
"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":
|
||||
"The \"{section}\" section requires at least one file",
|
||||
"La secció \"{section}\" requereix almenys un fitxer",
|
||||
|
||||
"error.section.pages.max.plural":
|
||||
"No heu d'afegir més de {max} pàgines a la secció \"{section}\"",
|
||||
"error.section.pages.max.singular":
|
||||
"No podeu afegir més d'una pàgina a la secció \"{section}\"",
|
||||
"error.section.pages.min.plural":
|
||||
"The \"{section}\" section requires at least {min} pages",
|
||||
"La secció \"{section}\" requereix almenys {min} pàgines",
|
||||
"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.type.invalid": "La secció tipus \"{type}\" no és vàlida",
|
||||
@@ -270,6 +285,13 @@
|
||||
|
||||
"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.remember": "Manten-me connectat",
|
||||
|
||||
@@ -297,6 +319,8 @@
|
||||
"more": "Més",
|
||||
"name": "Nom",
|
||||
"next": "Següent",
|
||||
"off": "apagat",
|
||||
"on": "encès",
|
||||
"open": "Obrir",
|
||||
"options": "Opcions",
|
||||
|
||||
@@ -317,6 +341,9 @@
|
||||
"<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.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.draft": "Esborrany",
|
||||
"page.status.draft.description":
|
||||
@@ -342,9 +369,13 @@
|
||||
"revert": "Revertir",
|
||||
|
||||
"role": "Rol",
|
||||
"role.admin.description": "L’administrador té tots els permisos",
|
||||
"role.admin.title": "Administrador",
|
||||
"role.all": "Tots",
|
||||
"role.empty": "No hi ha usuaris amb aquest rol",
|
||||
"role.description.placeholder": "Sense descripció",
|
||||
"role.nobody.description": "Aquest és un rol per defecte sense permisos",
|
||||
"role.nobody.title": "Ningú",
|
||||
|
||||
"save": "Desar",
|
||||
"search": "Cercar",
|
||||
@@ -366,8 +397,8 @@
|
||||
"toolbar.button.heading.3": "Encapçalament 3",
|
||||
"toolbar.button.italic": "Cursiva",
|
||||
"toolbar.button.file": "Arxiu",
|
||||
"toolbar.button.file.select": "Select a file",
|
||||
"toolbar.button.file.upload": "Upload a file",
|
||||
"toolbar.button.file.select": "Selecciona un fitxer",
|
||||
"toolbar.button.file.upload": "Carrega un fitxer",
|
||||
"toolbar.button.link": "Enlla\u00e7",
|
||||
"toolbar.button.ol": "Llista ordenada",
|
||||
"toolbar.button.ul": "Llista de vinyetes",
|
@@ -24,8 +24,14 @@
|
||||
"delete": "Smazat",
|
||||
"dimensions": "Rozměry",
|
||||
"discard": "Zahodit",
|
||||
"download": "Download",
|
||||
"duplicate": "Duplicate",
|
||||
"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.placeholder": "mail@example.com",
|
||||
|
||||
@@ -65,6 +71,14 @@
|
||||
"error.form.incomplete": "Prosím opravte všechny chyby ve formuláři",
|
||||
"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":
|
||||
"Nem\u016f\u017eete zm\u011bnit URL t\u00e9to str\u00e1nky",
|
||||
"error.page.changeStatus.incomplete":
|
||||
@@ -90,6 +104,7 @@
|
||||
"Koncept stránky, který obsahuje v adrese URL \"{slug}\" již existuje ",
|
||||
"error.page.duplicate":
|
||||
"Stránka, která v adrese URL obsahuje \"{slug}\" již existuje",
|
||||
"error.page.duplicate.permission": "You are not allowed to duplicate \"{slug}\"",
|
||||
"error.page.notFound": "Str\u00e1nku se nepoda\u0159ilo nal\u00e9zt.",
|
||||
"error.page.num.invalid":
|
||||
"Zadejte prosím platné pořadové číslo. Čísla nesmí být záporná.",
|
||||
@@ -270,6 +285,13 @@
|
||||
|
||||
"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.remember": "Zůstat přihlášen",
|
||||
|
||||
@@ -297,6 +319,8 @@
|
||||
"more": "Více",
|
||||
"name": "Jméno",
|
||||
"next": "Další",
|
||||
"off": "off",
|
||||
"on": "on",
|
||||
"open": "Otevřít",
|
||||
"options": "Možnosti",
|
||||
|
||||
@@ -317,6 +341,9 @@
|
||||
"<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.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.draft": "Koncept",
|
||||
"page.status.draft.description":
|
||||
@@ -342,9 +369,13 @@
|
||||
"revert": "Zahodit",
|
||||
|
||||
"role": "Role",
|
||||
"role.admin.description": "The admin has all rights",
|
||||
"role.admin.title": "Admin",
|
||||
"role.all": "Vše",
|
||||
"role.empty": "Neexistují uživatelé s touto rolí",
|
||||
"role.description.placeholder": "Žádný popis",
|
||||
"role.nobody.description": "This is a fallback role without any permissions",
|
||||
"role.nobody.title": "Nobody",
|
||||
|
||||
"save": "Ulo\u017eit",
|
||||
"search": "Hledat",
|
@@ -24,8 +24,14 @@
|
||||
"delete": "Slet",
|
||||
"dimensions": "Dimensioner",
|
||||
"discard": "Kass\u00e9r",
|
||||
"download": "Download",
|
||||
"duplicate": "Dupliker",
|
||||
"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.placeholder": "mail@eksempel.dk",
|
||||
|
||||
@@ -65,6 +71,14 @@
|
||||
"error.form.incomplete": "Ret venligst alle fejl i formularen...",
|
||||
"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":
|
||||
"Du kan ikke \u00e6ndre denne sides URL",
|
||||
"error.page.changeStatus.incomplete":
|
||||
@@ -90,6 +104,7 @@
|
||||
"En sidekladde med URL-endelsen \"{slug}\" eksisterer allerede",
|
||||
"error.page.duplicate":
|
||||
"En side med URL-endelsen \"{slug}\" eksisterer allerede",
|
||||
"error.page.duplicate.permission": "Du har ikke mulighed for at duplikere \"{slug}\"",
|
||||
"error.page.notFound": "Siden kunne ikke findes",
|
||||
"error.page.num.invalid":
|
||||
"Indtast venligst et gyldigt sorteringsnummer. Nummeret kan ikke være negativt.",
|
||||
@@ -104,18 +119,18 @@
|
||||
"error.section.files.max.singular":
|
||||
"Du kan ikke tilføje mere end en fil til \"{section}\" sektionen",
|
||||
"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":
|
||||
"The \"{section}\" section requires at least one file",
|
||||
"Sektionen \"{section}\" kræver mindst en fil",
|
||||
|
||||
"error.section.pages.max.plural":
|
||||
"Du kan ikke tilføje flere end {max} sider til \"{section}\" sektionen",
|
||||
"error.section.pages.max.singular":
|
||||
"Du kan ikke tilføje mere end een side til \"{section}\" sektionen",
|
||||
"error.section.pages.min.plural":
|
||||
"The \"{section}\" section requires at least {min} pages",
|
||||
"Sektionen \"{section}\" kræver mindst {min} sider",
|
||||
"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.type.invalid": "Sektionstypen \"{type}\" er ikke gyldig",
|
||||
@@ -270,6 +285,13 @@
|
||||
|
||||
"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.remember": "Forbliv logget ind",
|
||||
|
||||
@@ -297,6 +319,8 @@
|
||||
"more": "Mere",
|
||||
"name": "Navn",
|
||||
"next": "Næste",
|
||||
"off": "Sluk",
|
||||
"on": "Tænd",
|
||||
"open": "Åben",
|
||||
"options": "Indstillinger",
|
||||
|
||||
@@ -317,6 +341,9 @@
|
||||
"<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.draft.create": "Opret kladde",
|
||||
"page.duplicate.appendix": "Kopier",
|
||||
"page.duplicate.files": "Kopier filer",
|
||||
"page.duplicate.pages": "Kopier sider",
|
||||
"page.status": "Status",
|
||||
"page.status.draft": "Kladde",
|
||||
"page.status.draft.description":
|
||||
@@ -342,9 +369,13 @@
|
||||
"revert": "Kass\u00e9r",
|
||||
|
||||
"role": "Rolle",
|
||||
"role.admin.description": "Admin har alle rettigheder",
|
||||
"role.admin.title": "Admin",
|
||||
"role.all": "All",
|
||||
"role.empty": "Der er ingen bruger med denne rolle",
|
||||
"role.description.placeholder": "Ingen beskrivelse",
|
||||
"role.nobody.description": "Dette er en tilbagefaldsrolle uden rettigheder",
|
||||
"role.nobody.title": "Ingen",
|
||||
|
||||
"save": "Gem",
|
||||
"search": "Søg",
|
||||
@@ -366,8 +397,8 @@
|
||||
"toolbar.button.heading.3": "Overskrift 3",
|
||||
"toolbar.button.italic": "Kursiv tekst",
|
||||
"toolbar.button.file": "Fil",
|
||||
"toolbar.button.file.select": "Select a file",
|
||||
"toolbar.button.file.upload": "Upload a file",
|
||||
"toolbar.button.file.select": "Vælg en fil",
|
||||
"toolbar.button.file.upload": "Upload en fil",
|
||||
"toolbar.button.link": "Link",
|
||||
"toolbar.button.ol": "Ordnet liste",
|
||||
"toolbar.button.ul": "Punktliste",
|
@@ -24,8 +24,14 @@
|
||||
"delete": "L\u00f6schen",
|
||||
"dimensions": "Maße",
|
||||
"discard": "Verwerfen",
|
||||
"download": "Download",
|
||||
"duplicate": "Duplizieren",
|
||||
"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.placeholder": "mail@beispiel.de",
|
||||
|
||||
@@ -65,6 +71,14 @@
|
||||
"error.form.incomplete": "Bitte behebe alle Fehler …",
|
||||
"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":
|
||||
"Du darfst die URL der Seite \"{slug}\" nicht ändern",
|
||||
"error.page.changeStatus.incomplete":
|
||||
@@ -90,6 +104,7 @@
|
||||
"Ein Entwurf mit dem URL-Kürzel \"{slug}\" besteht bereits",
|
||||
"error.page.duplicate":
|
||||
"Eine Seite mit dem URL-Kürzel \"{slug}\" besteht bereits",
|
||||
"error.page.duplicate.permission": "Du kannst die Seite \"{slug}\" nicht duplizieren",
|
||||
"error.page.notFound": "Die Seite \"{slug}\" konnte nicht gefunden werden",
|
||||
"error.page.num.invalid":
|
||||
"Bitte gib eine gültige Sortierungszahl an. Negative Zahlen sind nicht erlaubt.",
|
||||
@@ -260,7 +275,7 @@
|
||||
"license.buy": "Kaufe eine Lizenz",
|
||||
"license.register": "Registrieren",
|
||||
"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.success": "Vielen Dank für deine Unterstützung",
|
||||
"license.unregistered": "Dies ist eine unregistrierte Kirby-Demo",
|
||||
@@ -270,6 +285,13 @@
|
||||
|
||||
"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.remember": "Angemeldet bleiben",
|
||||
|
||||
@@ -297,6 +319,8 @@
|
||||
"more": "Mehr",
|
||||
"name": "Name",
|
||||
"next": "Nächster Eintrag",
|
||||
"off": "aus",
|
||||
"on": "an",
|
||||
"open": "Öffnen",
|
||||
"options": "Optionen",
|
||||
|
||||
@@ -317,6 +341,9 @@
|
||||
"<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.draft.create": "Entwurf anlegen",
|
||||
"page.duplicate.appendix": "Kopie",
|
||||
"page.duplicate.files": "Dateien kopieren",
|
||||
"page.duplicate.pages": "Seiten kopieren",
|
||||
"page.status": "Status",
|
||||
"page.status.draft": "Entwurf",
|
||||
"page.status.draft.description":
|
||||
@@ -342,9 +369,13 @@
|
||||
"revert": "Verwerfen",
|
||||
|
||||
"role": "Rolle",
|
||||
"role.admin.description": "Administratoren haben alle Rechte",
|
||||
"role.admin.title": "Administrator",
|
||||
"role.all": "Alle",
|
||||
"role.empty": "Keine Benutzer mit dieser Rolle",
|
||||
"role.description.placeholder": "Keine Beschreibung",
|
||||
"role.nobody.description": "Dies ist die Platzhalterrolle ohne Rechte",
|
||||
"role.nobody.title": "Niemand",
|
||||
|
||||
"save": "Speichern",
|
||||
"search": "Suchen",
|
@@ -24,8 +24,14 @@
|
||||
"delete": "\u0394\u03b9\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae",
|
||||
"dimensions": "Διαστάσεις",
|
||||
"discard": "Απόρριψη",
|
||||
"download": "Download",
|
||||
"duplicate": "Duplicate",
|
||||
"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.placeholder": "mail@example.com",
|
||||
|
||||
@@ -65,6 +71,14 @@
|
||||
"error.form.incomplete": "Παρακαλώ διορθώστε τα σφάλματα στη φόρμα...",
|
||||
"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":
|
||||
"Δεν επιτρέπεται να αλλάξετε το URL της σελίδας \"{slug}\"",
|
||||
"error.page.changeStatus.incomplete":
|
||||
@@ -90,6 +104,7 @@
|
||||
"Υπάρχει ήδη ένα προσχέδιο σελίδας με την διεύθυνση URL \"{slug}\"",
|
||||
"error.page.duplicate":
|
||||
"Υπάρχει ήδη μια σελίδα με την διεύθυνση URL \"{slug}\"",
|
||||
"error.page.duplicate.permission": "You are not allowed to duplicate \"{slug}\"",
|
||||
"error.page.notFound": "Δεν ήταν δυνατή η εύρεση της σελίδας \"{slug}\"",
|
||||
"error.page.num.invalid":
|
||||
"Παρακαλώ εισάγετε έναν έγκυρο αριθμό ταξινόμησης. Οι αριθμοί δεν μπορεί να είναι αρνητικοί.",
|
||||
@@ -270,6 +285,13 @@
|
||||
|
||||
"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.remember": "Κρατήστε με συνδεδεμένο",
|
||||
|
||||
@@ -297,6 +319,8 @@
|
||||
"more": "Περισσότερα",
|
||||
"name": "Ονομασία",
|
||||
"next": "Επόμενο",
|
||||
"off": "off",
|
||||
"on": "on",
|
||||
"open": "Άνοιγμα",
|
||||
"options": "Eπιλογές",
|
||||
|
||||
@@ -317,6 +341,9 @@
|
||||
"<strong>Αυτή η σελίδα έχει υποσελίδες</strong>. <br>Όλες οι υποσελίδες θα διαγραφούν επίσης.",
|
||||
"page.delete.confirm.title": "Εισάγετε τον τίτλο της σελίδας για επιβεβαίωση",
|
||||
"page.draft.create": "Δημιουργία προσχεδίου",
|
||||
"page.duplicate.appendix": "Αντιγραφή",
|
||||
"page.duplicate.files": "Copy files",
|
||||
"page.duplicate.pages": "Copy pages",
|
||||
"page.status": "Kατάσταση",
|
||||
"page.status.draft": "Προσχέδιο",
|
||||
"page.status.draft.description":
|
||||
@@ -342,9 +369,13 @@
|
||||
"revert": "\u0391\u03b3\u03bd\u03cc\u03b7\u03c3\u03b7",
|
||||
|
||||
"role": "\u03a1\u03cc\u03bb\u03bf\u03c2",
|
||||
"role.admin.description": "The admin has all rights",
|
||||
"role.admin.title": "Admin",
|
||||
"role.all": "Όλα",
|
||||
"role.empty": "Δεν υπάρχουν χρήστες με αυτόν τον ρόλο",
|
||||
"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",
|
||||
"search": "Αναζήτηση",
|
@@ -24,8 +24,14 @@
|
||||
"delete": "Delete",
|
||||
"dimensions": "Dimensions",
|
||||
"discard": "Discard",
|
||||
"download": "Download",
|
||||
"duplicate": "Duplicate",
|
||||
"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.placeholder": "mail@example.com",
|
||||
|
||||
@@ -65,6 +71,14 @@
|
||||
"error.form.incomplete": "Please fix all form errors…",
|
||||
"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":
|
||||
"You are not allowed to change the URL appendix for \"{slug}\"",
|
||||
"error.page.changeStatus.incomplete":
|
||||
@@ -90,6 +104,7 @@
|
||||
"A page draft with the URL appendix \"{slug}\" already exists",
|
||||
"error.page.duplicate":
|
||||
"A page with the URL appendix \"{slug}\" already exists",
|
||||
"error.page.duplicate.permission": "You are not allowed to duplicate \"{slug}\"",
|
||||
"error.page.notFound": "The page \"{slug}\" cannot be found",
|
||||
"error.page.num.invalid":
|
||||
"Please enter a valid sorting number. Numbers must not be negative.",
|
||||
@@ -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",
|
||||
|
||||
@@ -297,6 +319,8 @@
|
||||
"more": "More",
|
||||
"name": "Name",
|
||||
"next": "Next",
|
||||
"off": "off",
|
||||
"on": "on",
|
||||
"open": "Open",
|
||||
"options": "Options",
|
||||
|
||||
@@ -317,6 +341,9 @@
|
||||
"<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.draft.create": "Create draft",
|
||||
"page.duplicate.appendix": "Copy",
|
||||
"page.duplicate.files": "Copy files",
|
||||
"page.duplicate.pages": "Copy pages",
|
||||
"page.status": "Status",
|
||||
"page.status.draft": "Draft",
|
||||
"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": "All",
|
||||
"role.empty": "There are no users with this role",
|
||||
"role.description.placeholder": "No description",
|
||||
"role.nobody.description": "This is a fallback role without any permissions",
|
||||
"role.nobody.title": "Nobody",
|
||||
|
||||
"save": "Save",
|
||||
"search": "Search",
|
@@ -24,8 +24,14 @@
|
||||
"delete": "Eliminar",
|
||||
"dimensions": "Dimensiones",
|
||||
"discard": "Descartar",
|
||||
"download": "Download",
|
||||
"duplicate": "Duplicate",
|
||||
"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.placeholder": "correo@ejemplo.com",
|
||||
|
||||
@@ -65,6 +71,14 @@
|
||||
"error.form.incomplete": "Por favor, corrige todos los errores del 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":
|
||||
"No está permitido cambiar el apéndice de URL para \"{slug}\".",
|
||||
"error.page.changeStatus.incomplete":
|
||||
@@ -90,6 +104,7 @@
|
||||
"Ya existe un borrador de página con el apéndice de URL \"{slug}\"",
|
||||
"error.page.duplicate":
|
||||
"Ya existe una página con el apéndice de URL \"{slug}\"",
|
||||
"error.page.duplicate.permission": "You are not allowed to duplicate \"{slug}\"",
|
||||
"error.page.notFound": "La página \"{slug}\" no se encuentra",
|
||||
"error.page.num.invalid":
|
||||
"Por favor, introduce un número de posición válido. Los números no deben ser negativos.",
|
||||
@@ -270,6 +285,13 @@
|
||||
|
||||
"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.remember": "Mantener mi sesión iniciada",
|
||||
|
||||
@@ -297,6 +319,8 @@
|
||||
"more": "Màs",
|
||||
"name": "Nombre",
|
||||
"next": "Siguiente",
|
||||
"off": "off",
|
||||
"on": "on",
|
||||
"open": "Abrir",
|
||||
"options": "Opciones",
|
||||
|
||||
@@ -317,6 +341,9 @@
|
||||
"<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.draft.create": "Crear borrador",
|
||||
"page.duplicate.appendix": "Copiar",
|
||||
"page.duplicate.files": "Copy files",
|
||||
"page.duplicate.pages": "Copy pages",
|
||||
"page.status": "Estado",
|
||||
"page.status.draft": "Borrador",
|
||||
"page.status.draft.description":
|
||||
@@ -342,9 +369,13 @@
|
||||
"revert": "Revertir",
|
||||
|
||||
"role": "Rol",
|
||||
"role.admin.description": "The admin has all rights",
|
||||
"role.admin.title": "Admin",
|
||||
"role.all": "Todos",
|
||||
"role.empty": "No hay usuarios con este rol",
|
||||
"role.description.placeholder": "Sin descripción",
|
||||
"role.nobody.description": "This is a fallback role without any permissions",
|
||||
"role.nobody.title": "Nobody",
|
||||
|
||||
"save": "Guardar",
|
||||
"search": "Buscar",
|
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"add": "Add",
|
||||
"add": "Añadir",
|
||||
"avatar": "Foto de perfil",
|
||||
"back": "Atrás",
|
||||
"cancel": "Cancelar",
|
||||
@@ -12,7 +12,7 @@
|
||||
"date": "Fecha",
|
||||
"date.select": "Selecciona una fecha",
|
||||
|
||||
"day": "Dáa",
|
||||
"day": "Día",
|
||||
"days.fri": "Vi",
|
||||
"days.mon": "Lu",
|
||||
"days.sat": "Sá",
|
||||
@@ -24,8 +24,14 @@
|
||||
"delete": "Borrar",
|
||||
"dimensions": "Dimensiones",
|
||||
"discard": "Descartar",
|
||||
"download": "Download",
|
||||
"duplicate": "Duplicate",
|
||||
"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.placeholder": "correo@ejemplo.com",
|
||||
|
||||
@@ -33,7 +39,7 @@
|
||||
"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.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":
|
||||
"Por favor, mantenga el ancho y la altura de la imagen de perfil debajo de 3000 píxeles",
|
||||
"error.avatar.mime.forbidden":
|
||||
@@ -62,9 +68,17 @@
|
||||
"error.file.type.forbidden": "No está permitido subir archivos {type}",
|
||||
"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.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":
|
||||
"No está permitido cambiar el apéndice de URL para \"{slug}\"",
|
||||
"error.page.changeStatus.incomplete":
|
||||
@@ -90,6 +104,7 @@
|
||||
"Un borrador de página con el apéndice de URL \"{slug}\" ya existe",
|
||||
"error.page.duplicate":
|
||||
"Una página con el apéndice de URL. \"{slug}\" ya existe",
|
||||
"error.page.duplicate.permission": "You are not allowed to duplicate \"{slug}\"",
|
||||
"error.page.notFound": "La página \"{slug}\" no puede ser encontrada",
|
||||
"error.page.num.invalid":
|
||||
"Por favor, introduzca un número válido. Estos no deben ser negativos.",
|
||||
@@ -104,18 +119,18 @@
|
||||
"error.section.files.max.singular":
|
||||
"No debes agregar más de 1 archivo a la sección \"{section}\"",
|
||||
"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":
|
||||
"The \"{section}\" section requires at least one file",
|
||||
"La sección \"{section}\" requiere al menos un archivo",
|
||||
|
||||
"error.section.pages.max.plural":
|
||||
"No debe agregar más de {max} páginas a la sección \"{section}\"",
|
||||
"error.section.pages.max.singular":
|
||||
"No debe agregar más de una página a la sección \"{section}\"",
|
||||
"error.section.pages.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":
|
||||
"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.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.password.invalid":
|
||||
"Por favor introduce una contraseña válida. Las contraseñas deben tener al menos 8 caracteres de largo.",
|
||||
"error.user.password.notSame": "las contraseñas no coinciden",
|
||||
"error.user.password.notSame": "Las contraseñas no coinciden",
|
||||
"error.user.password.undefined": "El usuario no tiene contraseña",
|
||||
"error.user.role.invalid": "Por favor ingrese un rol válido",
|
||||
"error.user.undefined": "El usuario no puede ser encontrado",
|
||||
@@ -270,6 +285,13 @@
|
||||
|
||||
"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.remember": "Mantener sesión iniciada",
|
||||
|
||||
@@ -297,10 +319,12 @@
|
||||
"more": "Más",
|
||||
"name": "Nombre",
|
||||
"next": "Siguiente",
|
||||
"off": "off",
|
||||
"on": "on",
|
||||
"open": "Abrir",
|
||||
"options": "Opciones",
|
||||
|
||||
"orientation": "Orientacion",
|
||||
"orientation": "Orientación",
|
||||
"orientation.landscape": "Paisaje",
|
||||
"orientation.portrait": "Retrato",
|
||||
"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.",
|
||||
"page.delete.confirm.title": "Introduzca el título de la página para confirmar",
|
||||
"page.draft.create": "Crear borrador",
|
||||
"page.duplicate.appendix": "Copiar",
|
||||
"page.duplicate.files": "Copy files",
|
||||
"page.duplicate.pages": "Copy pages",
|
||||
"page.status": "Estado",
|
||||
"page.status.draft": "Borrador",
|
||||
"page.status.draft.description":
|
||||
@@ -342,9 +369,13 @@
|
||||
"revert": "Revertir",
|
||||
|
||||
"role": "Rol",
|
||||
"role.admin.description": "The admin has all rights",
|
||||
"role.admin.title": "Admin",
|
||||
"role.all": "Todos",
|
||||
"role.empty": "No hay usuarios con este rol",
|
||||
"role.description.placeholder": "Sin descripción",
|
||||
"role.nobody.description": "This is a fallback role without any permissions",
|
||||
"role.nobody.title": "Nobody",
|
||||
|
||||
"save": "Guardar",
|
||||
"search": "Buscar",
|
||||
@@ -366,8 +397,8 @@
|
||||
"toolbar.button.heading.3": "Encabezado 3",
|
||||
"toolbar.button.italic": "Italica",
|
||||
"toolbar.button.file": "Archivo",
|
||||
"toolbar.button.file.select": "Select a file",
|
||||
"toolbar.button.file.upload": "Upload a file",
|
||||
"toolbar.button.file.select": "Seleccione un archivo",
|
||||
"toolbar.button.file.upload": "Sube un archivo",
|
||||
"toolbar.button.link": "Enlace",
|
||||
"toolbar.button.ol": "Lista ordenada",
|
||||
"toolbar.button.ul": "Lista de viñetas",
|
@@ -24,8 +24,14 @@
|
||||
"delete": "\u062d\u0630\u0641",
|
||||
"dimensions": "ابعاد",
|
||||
"discard": "\u0627\u0646\u0635\u0631\u0627\u0641",
|
||||
"download": "Download",
|
||||
"duplicate": "Duplicate",
|
||||
"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.placeholder": "mail@example.com",
|
||||
|
||||
@@ -65,6 +71,14 @@
|
||||
"error.form.incomplete": "لطفا کلیه خطاهای فرم را برطرف کنید",
|
||||
"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":
|
||||
"شما امکان تغییر پسوند Url صفحه «{slug}» را ندارید",
|
||||
"error.page.changeStatus.incomplete":
|
||||
@@ -90,6 +104,7 @@
|
||||
"صفحه پیشنویسی با پسوند Url مشابه «{slug}» هم اکنون موجود است",
|
||||
"error.page.duplicate":
|
||||
"صفحهای با آدرس Url مشابه «{slug}» هم اکنون موجود است",
|
||||
"error.page.duplicate.permission": "You are not allowed to duplicate \"{slug}\"",
|
||||
"error.page.notFound": "صفحه مورد نظر با آدرس «{slug}» پیدا نشد.",
|
||||
"error.page.num.invalid":
|
||||
"لطفا شماره ترتیب را بدرستی وارد نمایید. اعداد نباید منفی باشند.",
|
||||
@@ -270,6 +285,13 @@
|
||||
|
||||
"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.remember": "مرا به خاطر بسپار",
|
||||
|
||||
@@ -297,6 +319,8 @@
|
||||
"more": "بیشتر",
|
||||
"name": "نام",
|
||||
"next": "بعدی",
|
||||
"off": "off",
|
||||
"on": "on",
|
||||
"open": "بازکردن",
|
||||
"options": "گزینهها",
|
||||
|
||||
@@ -317,6 +341,9 @@
|
||||
"<strong>این صفحه دارای زیرصفحه است</strong>. <br>تمام زیر صفحات نیز حذف خواهد شد.",
|
||||
"page.delete.confirm.title": "جهت ادامه عنوان صفحه را وارد کنید",
|
||||
"page.draft.create": "ایجاد پیشنویس",
|
||||
"page.duplicate.appendix": "کپی",
|
||||
"page.duplicate.files": "Copy files",
|
||||
"page.duplicate.pages": "Copy pages",
|
||||
"page.status": "وضعیت",
|
||||
"page.status.draft": "پیشنویس",
|
||||
"page.status.draft.description":
|
||||
@@ -342,9 +369,13 @@
|
||||
"revert": "بازگرداندن تغییرات",
|
||||
|
||||
"role": "\u0646\u0642\u0634",
|
||||
"role.admin.description": "The admin has all rights",
|
||||
"role.admin.title": "Admin",
|
||||
"role.all": "همه",
|
||||
"role.empty": "هیچ کاربری با این نقش وجود ندارد",
|
||||
"role.description.placeholder": "فاقد شرح",
|
||||
"role.nobody.description": "This is a fallback role without any permissions",
|
||||
"role.nobody.title": "Nobody",
|
||||
|
||||
"save": "\u0630\u062e\u06cc\u0631\u0647",
|
||||
"search": "جستجو",
|
@@ -24,8 +24,14 @@
|
||||
"delete": "Poista",
|
||||
"dimensions": "Mitat",
|
||||
"discard": "Hylkää",
|
||||
"download": "Download",
|
||||
"duplicate": "Duplicate",
|
||||
"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.placeholder": "nimi@osoite.fi",
|
||||
|
||||
@@ -65,6 +71,14 @@
|
||||
"error.form.incomplete": "Korjaa kaikki lomakkeen virheet...",
|
||||
"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":
|
||||
"Sinulla ei ole oikeutta muuttaa URL-liitettä sivulle \"{slug}\"",
|
||||
"error.page.changeStatus.incomplete":
|
||||
@@ -90,6 +104,7 @@
|
||||
"Sivuluonnos URL-liitteellä \"{slug}\" on jo olemassa",
|
||||
"error.page.duplicate":
|
||||
"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.num.invalid":
|
||||
"Anna kelpaava järjestysnumero. Numero ei voi olla negatiivinen.",
|
||||
@@ -270,6 +285,13 @@
|
||||
|
||||
"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.remember": "Pidä minut kirjautuneena",
|
||||
|
||||
@@ -297,6 +319,8 @@
|
||||
"more": "Lisää",
|
||||
"name": "Nimi",
|
||||
"next": "Seuraava",
|
||||
"off": "off",
|
||||
"on": "on",
|
||||
"open": "Avaa",
|
||||
"options": "Asetukset",
|
||||
|
||||
@@ -317,6 +341,9 @@
|
||||
"<strong>Tällä sivulla on alasivuja</strong>.<br>Myös kaikki alasivut poistetaan.",
|
||||
"page.delete.confirm.title": "Anna vahvistuksena sivun nimi",
|
||||
"page.draft.create": "Uusi luonnos",
|
||||
"page.duplicate.appendix": "Kopioi",
|
||||
"page.duplicate.files": "Copy files",
|
||||
"page.duplicate.pages": "Copy pages",
|
||||
"page.status": "Tila",
|
||||
"page.status.draft": "Luonnos",
|
||||
"page.status.draft.description":
|
||||
@@ -342,9 +369,13 @@
|
||||
"revert": "Palauta",
|
||||
|
||||
"role": "K\u00e4ytt\u00e4j\u00e4taso",
|
||||
"role.admin.description": "The admin has all rights",
|
||||
"role.admin.title": "Admin",
|
||||
"role.all": "Kaikki",
|
||||
"role.empty": "Tällä käyttäjätasolla ei ole yhtään käyttäjää",
|
||||
"role.description.placeholder": "Ei kuvausta",
|
||||
"role.nobody.description": "This is a fallback role without any permissions",
|
||||
"role.nobody.title": "Nobody",
|
||||
|
||||
"save": "Tallenna",
|
||||
"search": "Haku",
|
@@ -24,8 +24,14 @@
|
||||
"delete": "Supprimer",
|
||||
"dimensions": "Dimensions",
|
||||
"discard": "Supprimer",
|
||||
"download": "Télécharger",
|
||||
"duplicate": "Dupliquer",
|
||||
"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.placeholder": "mail@example.com",
|
||||
|
||||
@@ -65,6 +71,14 @@
|
||||
"error.form.incomplete": "Veuillez corriger toutes les erreurs du formulaire…",
|
||||
"error.form.notSaved": "Le formulaire n’a pu être enregistré",
|
||||
|
||||
"error.language.code": "Veuillez saisir un code 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 n’a pu être vérifiée",
|
||||
|
||||
"error.page.changeSlug.permission":
|
||||
"Vous n’êtes pas autorisé à modifier l’identifiant d’URL pour « {slug} »",
|
||||
"error.page.changeStatus.incomplete":
|
||||
@@ -90,6 +104,7 @@
|
||||
"Un brouillon avec l’identifiant d’URL « {slug} » existe déjà",
|
||||
"error.page.duplicate":
|
||||
"Une page avec l’identifiant d’URL « {slug} » existe déjà",
|
||||
"error.page.duplicate.permission": "Vous n'êtes pas autorisé à dupliquer « {slug} »",
|
||||
"error.page.notFound": "La page « {slug} » n’a pu être trouvée",
|
||||
"error.page.num.invalid":
|
||||
"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":
|
||||
"Vous ne pouvez ajouter plus d’un fichier à la section « {section} »",
|
||||
"error.section.files.min.plural":
|
||||
"The \"{section}\" section requires at least {min} files",
|
||||
"La section « {section}\" » requiert au moins {min} fichiers",
|
||||
"error.section.files.min.singular":
|
||||
"The \"{section}\" section requires at least one file",
|
||||
"La section « {section}\" » requiert au moins un fichier",
|
||||
|
||||
"error.section.pages.max.plural":
|
||||
"Vous ne pouvez ajouter plus de {max} pages à la section « {section} »",
|
||||
"error.section.pages.max.singular":
|
||||
"Vous ne pouvez ajouter plus d’une page à la section « {section} »",
|
||||
"error.section.pages.min.plural":
|
||||
"The \"{section}\" section requires at least {min} pages",
|
||||
"La section « {section}\" » requiert au moins {min} pages",
|
||||
"error.section.pages.min.singular":
|
||||
"The \"{section}\" section requires at least one page",
|
||||
"La section « {section}\" » requiert au moins une page",
|
||||
|
||||
"error.section.notLoaded": "La section « {name} » n’a pu être chargée",
|
||||
"error.section.type.invalid": "Le type de section « {type} » est incorrect",
|
||||
@@ -270,6 +285,13 @@
|
||||
|
||||
"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.remember": "Rester connecté",
|
||||
|
||||
@@ -297,6 +319,8 @@
|
||||
"more": "Plus",
|
||||
"name": "Nom",
|
||||
"next": "Suivant",
|
||||
"off": "off",
|
||||
"on": "on",
|
||||
"open": "Ouvrir",
|
||||
"options": "Options",
|
||||
|
||||
@@ -317,6 +341,9 @@
|
||||
"<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.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.draft": "Brouillon",
|
||||
"page.status.draft.description":
|
||||
@@ -342,9 +369,13 @@
|
||||
"revert": "Revenir",
|
||||
|
||||
"role": "Rôle",
|
||||
"role.admin.description": "L’administrateur dispose de tous les droits",
|
||||
"role.admin.title": "Administrateur",
|
||||
"role.all": "Tous",
|
||||
"role.empty": "Il n’y a aucun utilisateur avec ce rôle",
|
||||
"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",
|
||||
"search": "Rechercher",
|
@@ -24,8 +24,14 @@
|
||||
"delete": "T\u00f6rl\u00e9s",
|
||||
"dimensions": "Méretek",
|
||||
"discard": "Visszavon\u00e1s",
|
||||
"download": "Download",
|
||||
"duplicate": "Duplicate",
|
||||
"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.placeholder": "mail@pelda.hu",
|
||||
|
||||
@@ -65,6 +71,14 @@
|
||||
"error.form.incomplete": "Kérlek javítsd ki az összes hibát az űrlapon",
|
||||
"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":
|
||||
"Nem változtathatod meg az URL-előtagot: \"{slug}\"",
|
||||
"error.page.changeStatus.incomplete":
|
||||
@@ -90,6 +104,7 @@
|
||||
"Van már egy másik oldal ezzel az URL-lel: \"{slug}\"",
|
||||
"error.page.duplicate":
|
||||
"Van már egy másik oldal ezzel az URL-lel: \"{slug}\"",
|
||||
"error.page.duplicate.permission": "You are not allowed to duplicate \"{slug}\"",
|
||||
"error.page.notFound": "Az oldal nem tal\u00e1lhat\u00f3",
|
||||
"error.page.num.invalid":
|
||||
"Kérlek megfelelő oldalszámozást adj meg. Negatív szám itt nem használható.",
|
||||
@@ -270,6 +285,13 @@
|
||||
|
||||
"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.remember": "Maradjak bejelentkezve",
|
||||
|
||||
@@ -297,6 +319,8 @@
|
||||
"more": "Több",
|
||||
"name": "Név",
|
||||
"next": "Következő",
|
||||
"off": "off",
|
||||
"on": "on",
|
||||
"open": "Megnyitás",
|
||||
"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.",
|
||||
"page.delete.confirm.title": "Megerősítéshez add meg az oldal címét",
|
||||
"page.draft.create": "Piszkozat létrehozása",
|
||||
"page.duplicate.appendix": "Másol",
|
||||
"page.duplicate.files": "Copy files",
|
||||
"page.duplicate.pages": "Copy pages",
|
||||
"page.status": "Állapot",
|
||||
"page.status.draft": "Piszkozat",
|
||||
"page.status.draft.description":
|
||||
@@ -342,9 +369,13 @@
|
||||
"revert": "Visszavon\u00e1s",
|
||||
|
||||
"role": "Szerepkör",
|
||||
"role.admin.description": "The admin has all rights",
|
||||
"role.admin.title": "Admin",
|
||||
"role.all": "Összes",
|
||||
"role.empty": "Nincsenek felhasználók ilyen szerepkörrel",
|
||||
"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",
|
||||
"search": "Keresés",
|
@@ -24,8 +24,14 @@
|
||||
"delete": "Hapus",
|
||||
"dimensions": "Dimensi",
|
||||
"discard": "Buang",
|
||||
"download": "Download",
|
||||
"duplicate": "Duplicate",
|
||||
"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.placeholder": "surel@contohsurel.com",
|
||||
|
||||
@@ -65,6 +71,14 @@
|
||||
"error.form.incomplete": "Pastikan semua bidang telah diisi dengan benar…",
|
||||
"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":
|
||||
"Anda tidak diizinkan mengubah akhiran URL untuk \"{slug}\"",
|
||||
"error.page.changeStatus.incomplete":
|
||||
@@ -90,6 +104,7 @@
|
||||
"Draf halaman dengan akhiran URL \"{slug}\" sudah ada",
|
||||
"error.page.duplicate":
|
||||
"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.num.invalid":
|
||||
"Masukkan nomor urut yang valid. Nomor tidak boleh negatif.",
|
||||
@@ -270,6 +285,13 @@
|
||||
|
||||
"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.remember": "Biarkan tetap masuk",
|
||||
|
||||
@@ -297,6 +319,8 @@
|
||||
"more": "Lebih lanjut",
|
||||
"name": "Nama",
|
||||
"next": "Selanjutnya",
|
||||
"off": "off",
|
||||
"on": "on",
|
||||
"open": "Buka",
|
||||
"options": "Opsi",
|
||||
|
||||
@@ -317,6 +341,9 @@
|
||||
"<strong>Halaman ini memiliki sub-halaman</strong>. <br>Semua sub-halaman akan ikut dihapus.",
|
||||
"page.delete.confirm.title": "Masukkan judul halaman untuk mengonfirmasi",
|
||||
"page.draft.create": "Buat draf",
|
||||
"page.duplicate.appendix": "Salin",
|
||||
"page.duplicate.files": "Copy files",
|
||||
"page.duplicate.pages": "Copy pages",
|
||||
"page.status": "Status",
|
||||
"page.status.draft": "Draf",
|
||||
"page.status.draft.description":
|
||||
@@ -342,9 +369,13 @@
|
||||
"revert": "Kembalikan",
|
||||
|
||||
"role": "Peran",
|
||||
"role.admin.description": "The admin has all rights",
|
||||
"role.admin.title": "Admin",
|
||||
"role.all": "Semua",
|
||||
"role.empty": "Tidak ada pengguna dengan peran ini",
|
||||
"role.description.placeholder": "Tidak ada deskripsi",
|
||||
"role.nobody.description": "This is a fallback role without any permissions",
|
||||
"role.nobody.title": "Nobody",
|
||||
|
||||
"save": "Simpan",
|
||||
"search": "Cari",
|
@@ -24,8 +24,14 @@
|
||||
"delete": "Elimina",
|
||||
"dimensions": "Dimensioni",
|
||||
"discard": "Abbandona",
|
||||
"download": "Scarica",
|
||||
"duplicate": "Duplica",
|
||||
"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.placeholder": "mail@esempio.com",
|
||||
|
||||
@@ -65,6 +71,14 @@
|
||||
"error.form.incomplete": "Correggi tutti gli errori nel 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":
|
||||
"Non ti è permesso cambiare l'URL di \"{slug}\"",
|
||||
"error.page.changeStatus.incomplete":
|
||||
@@ -90,6 +104,7 @@
|
||||
"Una bozza di pagina con l'URL \"{slug}\" esiste già",
|
||||
"error.page.duplicate":
|
||||
"Una pagina con l'URL \"{slug}\" esiste già",
|
||||
"error.page.duplicate.permission": "Non ti è permesso duplicare \"{slug}\"",
|
||||
"error.page.notFound": "La pagina \"{slug}\" non è stata trovata",
|
||||
"error.page.num.invalid":
|
||||
"Inserisci un numero di ordinamento valido. I numeri non devono essere negativi",
|
||||
@@ -270,6 +285,13 @@
|
||||
|
||||
"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.remember": "Resta collegato",
|
||||
|
||||
@@ -297,6 +319,8 @@
|
||||
"more": "Di più",
|
||||
"name": "Nome",
|
||||
"next": "Prossimo",
|
||||
"off": "off",
|
||||
"on": "on",
|
||||
"open": "Apri",
|
||||
"options": "Opzioni",
|
||||
|
||||
@@ -317,6 +341,9 @@
|
||||
"<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.draft.create": "Crea bozza",
|
||||
"page.duplicate.appendix": "Copia",
|
||||
"page.duplicate.files": "Copia file",
|
||||
"page.duplicate.pages": "Copia pagine",
|
||||
"page.status": "Stato",
|
||||
"page.status.draft": "Bozza",
|
||||
"page.status.draft.description":
|
||||
@@ -342,9 +369,13 @@
|
||||
"revert": "Abbandona",
|
||||
|
||||
"role": "Ruolo",
|
||||
"role.admin.description": "L'amministratore ha tutti i permessi",
|
||||
"role.admin.title": "Amministratore",
|
||||
"role.all": "Tutti",
|
||||
"role.empty": "Non ci sono utenti con questo ruolo",
|
||||
"role.description.placeholder": "Nessuna descrizione",
|
||||
"role.nobody.description": "Questo è un ruolo \"fallback\" senza permessi",
|
||||
"role.nobody.title": "Nessuno",
|
||||
|
||||
"save": "Salva",
|
||||
"search": "Cerca",
|
@@ -24,8 +24,14 @@
|
||||
"delete": "\uc0ad\uc81c",
|
||||
"dimensions": "크기",
|
||||
"discard": "무시",
|
||||
"download": "Download",
|
||||
"duplicate": "Duplicate",
|
||||
"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.placeholder": "mail@example.com",
|
||||
|
||||
@@ -65,6 +71,14 @@
|
||||
"error.form.incomplete": "항목에 오류가 있습니다.",
|
||||
"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":
|
||||
"고유 주소({slug})를 변경할 권한이 없습니다.",
|
||||
"error.page.changeStatus.incomplete":
|
||||
@@ -90,6 +104,7 @@
|
||||
"고유 주소({slug})가 같은 초안이 있습니다.",
|
||||
"error.page.duplicate":
|
||||
"고유 주소({slug})가 같은 페이지가 있습니다.",
|
||||
"error.page.duplicate.permission": "You are not allowed to duplicate \"{slug}\"",
|
||||
"error.page.notFound": "페이지({slug})가 없습니다.",
|
||||
"error.page.num.invalid":
|
||||
"올바른 정수를 입력하세요.",
|
||||
@@ -270,6 +285,13 @@
|
||||
|
||||
"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.remember": "로그인 유지",
|
||||
|
||||
@@ -297,6 +319,8 @@
|
||||
"more": "더 보기",
|
||||
"name": "이름",
|
||||
"next": "다음",
|
||||
"off": "off",
|
||||
"on": "on",
|
||||
"open": "열기",
|
||||
"options": "옵션",
|
||||
|
||||
@@ -317,6 +341,9 @@
|
||||
"<strong>페이지에 하위 페이지가 있습니다.</strong> 모든 하위 페이지가 삭제됩니다.",
|
||||
"page.delete.confirm.title": "페이지 제목을 입력하세요.",
|
||||
"page.draft.create": "초안 작성",
|
||||
"page.duplicate.appendix": "복사",
|
||||
"page.duplicate.files": "Copy files",
|
||||
"page.duplicate.pages": "Copy pages",
|
||||
"page.status": "상태",
|
||||
"page.status.draft": "초안",
|
||||
"page.status.draft.description":
|
||||
@@ -342,9 +369,13 @@
|
||||
"revert": "복원",
|
||||
|
||||
"role": "역할",
|
||||
"role.admin.description": "The admin has all rights",
|
||||
"role.admin.title": "Admin",
|
||||
"role.all": "전체 보기",
|
||||
"role.empty": "이 역할에 해당하는 사용자가 없습니다.",
|
||||
"role.description.placeholder": "설명이 없습니다.",
|
||||
"role.nobody.description": "This is a fallback role without any permissions",
|
||||
"role.nobody.title": "Nobody",
|
||||
|
||||
"save": "\uc800\uc7a5",
|
||||
"search": "검색",
|
@@ -24,8 +24,14 @@
|
||||
"delete": "Slett",
|
||||
"dimensions": "Dimensjoner",
|
||||
"discard": "Forkast",
|
||||
"download": "Download",
|
||||
"duplicate": "Duplicate",
|
||||
"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.placeholder": "epost@eksempel.no",
|
||||
|
||||
@@ -65,6 +71,14 @@
|
||||
"error.form.incomplete": "Vennligst fiks alle feil…",
|
||||
"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":
|
||||
"Du kan ikke endre URLen for denne siden",
|
||||
"error.page.changeStatus.incomplete":
|
||||
@@ -90,6 +104,7 @@
|
||||
"Et sideutkast med URL-tillegget \"{slug}\" eksisterer allerede",
|
||||
"error.page.duplicate":
|
||||
"En side med URL-tillegget \"{slug}\" eksisterer allerede",
|
||||
"error.page.duplicate.permission": "You are not allowed to duplicate \"{slug}\"",
|
||||
"error.page.notFound": "Siden \"{slug}\" ble ikke funnet",
|
||||
"error.page.num.invalid":
|
||||
"Vennligst skriv inn et gyldig sorteringsnummer. Tallet må ikke være negativt.",
|
||||
@@ -270,6 +285,13 @@
|
||||
|
||||
"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.remember": "Hold meg innlogget",
|
||||
|
||||
@@ -297,6 +319,8 @@
|
||||
"more": "Mer",
|
||||
"name": "Navn",
|
||||
"next": "Neste",
|
||||
"off": "off",
|
||||
"on": "on",
|
||||
"open": "Åpne",
|
||||
"options": "Alternativer",
|
||||
|
||||
@@ -317,6 +341,9 @@
|
||||
"<strong>Denne siden har undersider</strong>. <br>Alle undersider vil også bli slettet.",
|
||||
"page.delete.confirm.title": "Skriv inn sidetittel for å bekrefte",
|
||||
"page.draft.create": "Lag utkast",
|
||||
"page.duplicate.appendix": "Kopier",
|
||||
"page.duplicate.files": "Copy files",
|
||||
"page.duplicate.pages": "Copy pages",
|
||||
"page.status": "Status",
|
||||
"page.status.draft": "Utkast",
|
||||
"page.status.draft.description":
|
||||
@@ -342,9 +369,13 @@
|
||||
"revert": "Forkast",
|
||||
|
||||
"role": "Rolle",
|
||||
"role.admin.description": "The admin has all rights",
|
||||
"role.admin.title": "Admin",
|
||||
"role.all": "Alle",
|
||||
"role.empty": "Det er ingen brukere med denne rollen",
|
||||
"role.description.placeholder": "Ingen beskrivelse",
|
||||
"role.nobody.description": "This is a fallback role without any permissions",
|
||||
"role.nobody.title": "Nobody",
|
||||
|
||||
"save": "Lagre",
|
||||
"search": "Søk",
|
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"add": "Toevoegen",
|
||||
"add": "Voeg toe",
|
||||
"avatar": "Avatar",
|
||||
"back": "Terug",
|
||||
"cancel": "Annuleren",
|
||||
@@ -24,8 +24,14 @@
|
||||
"delete": "Verwijderen",
|
||||
"dimensions": "Dimensies",
|
||||
"discard": "Annuleren",
|
||||
"download": "Download",
|
||||
"duplicate": "Dupliceren",
|
||||
"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.placeholder": "mail@voorbeeld.nl",
|
||||
|
||||
@@ -65,6 +71,14 @@
|
||||
"error.form.incomplete": "Verbeter alle fouten in het formulier",
|
||||
"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":
|
||||
"Je kunt de URL van deze pagina niet wijzigen",
|
||||
"error.page.changeStatus.incomplete":
|
||||
@@ -90,6 +104,7 @@
|
||||
"Er bestaat al een conceptpagina met de URL-appendix \"{slug}\"",
|
||||
"error.page.duplicate":
|
||||
"Er bestaat al een pagina met de URL-appendix \"{slug}\"",
|
||||
"error.page.duplicate.permission": "Je bent niet gemachtigd om \"{slug}\" te dupliceren",
|
||||
"error.page.notFound": "De pagina \"{slug}\" kan niet worden gevonden",
|
||||
"error.page.num.invalid":
|
||||
"Vul een geldig sorteer-cijfer in. Het cijfer mag niet negatief zijn",
|
||||
@@ -104,18 +119,18 @@
|
||||
"error.section.files.max.singular":
|
||||
"Je kunt niet meer dan 1 bestand toevoegen aan de zone \"{section}\"",
|
||||
"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":
|
||||
"The \"{section}\" section requires at least one file",
|
||||
"De \"{section}\" sectie moet minimaal 1 bestand bevatten.",
|
||||
|
||||
"error.section.pages.max.plural":
|
||||
"Je kunt niet meer dan {max} pagina's toevoegen aan de zone \"{section}\"",
|
||||
"error.section.pages.max.singular":
|
||||
"Je kunt niet meer dan 1 pagina toevoegen aan de zone \"{section}\"",
|
||||
"error.section.pages.min.plural":
|
||||
"The \"{section}\" section requires at least {min} pages",
|
||||
"De \"{section}\" sectie moet minimaal {min} pagina's bevatten.",
|
||||
"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.type.invalid": "Zone-type \"{type}\" is niet geldig",
|
||||
@@ -270,6 +285,13 @@
|
||||
|
||||
"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.remember": "Houd mij ingelogd",
|
||||
|
||||
@@ -297,6 +319,8 @@
|
||||
"more": "Meer",
|
||||
"name": "Naam",
|
||||
"next": "Volgende",
|
||||
"off": "uit",
|
||||
"on": "aan",
|
||||
"open": "Open",
|
||||
"options": "Opties",
|
||||
|
||||
@@ -317,6 +341,9 @@
|
||||
"<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.draft.create": "Maak concept",
|
||||
"page.duplicate.appendix": "Kopiëren",
|
||||
"page.duplicate.files": "Kopieer bestanden",
|
||||
"page.duplicate.pages": "Copy pages",
|
||||
"page.status": "Status",
|
||||
"page.status.draft": "Concept",
|
||||
"page.status.draft.description":
|
||||
@@ -342,9 +369,13 @@
|
||||
"revert": "Annuleren",
|
||||
|
||||
"role": "Rol",
|
||||
"role.admin.description": "De admin heeft alle rechten",
|
||||
"role.admin.title": "Admin",
|
||||
"role.all": "Alle",
|
||||
"role.empty": "Er zijn geen gebruikers met deze rol",
|
||||
"role.description.placeholder": "Geen beschrijving",
|
||||
"role.nobody.description": "Dit is een fallback-rol zonder rechten",
|
||||
"role.nobody.title": "Niemand",
|
||||
|
||||
"save": "Opslaan",
|
||||
"search": "Zoeken",
|
||||
@@ -366,8 +397,8 @@
|
||||
"toolbar.button.heading.3": "Titel 3",
|
||||
"toolbar.button.italic": "Cursieve tekst",
|
||||
"toolbar.button.file": "Bestand",
|
||||
"toolbar.button.file.select": "Select a file",
|
||||
"toolbar.button.file.upload": "Upload a file",
|
||||
"toolbar.button.file.select": "Selecteer een bestand",
|
||||
"toolbar.button.file.upload": "Upload bestand",
|
||||
"toolbar.button.link": "Link",
|
||||
"toolbar.button.ol": "Genummerde lijst",
|
||||
"toolbar.button.ul": "Opsomming",
|
@@ -24,8 +24,14 @@
|
||||
"delete": "Usu\u0144",
|
||||
"dimensions": "Wymiary",
|
||||
"discard": "Odrzu\u0107",
|
||||
"download": "Pobierz",
|
||||
"duplicate": "Zduplikuj",
|
||||
"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.placeholder": "mail@example.com",
|
||||
|
||||
@@ -65,6 +71,14 @@
|
||||
"error.form.incomplete": "Popraw wszystkie błędy w formularzu…",
|
||||
"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":
|
||||
"Nie możesz zmienić końcówki adresu URL w \"{slug}\"",
|
||||
"error.page.changeStatus.incomplete":
|
||||
@@ -90,6 +104,7 @@
|
||||
"Istnieje już szkic z końcówką URL \"{slug}\"",
|
||||
"error.page.duplicate":
|
||||
"Istnieje już strona z końcówką URL \"{slug}\"",
|
||||
"error.page.duplicate.permission": "Nie masz uprawnień, by zduplikować \"{slug}\"",
|
||||
"error.page.notFound": "Nie można znaleźć strony \"{slug}\"",
|
||||
"error.page.num.invalid":
|
||||
"Wprowadź poprawny numer sortujący. Liczby nie mogą być ujemne.",
|
||||
@@ -270,6 +285,13 @@
|
||||
|
||||
"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.remember": "Nie wylogowuj mnie",
|
||||
|
||||
@@ -297,6 +319,8 @@
|
||||
"more": "Więcej",
|
||||
"name": "Nazwa",
|
||||
"next": "Następne",
|
||||
"off": "off",
|
||||
"on": "on",
|
||||
"open": "Otwórz",
|
||||
"options": "Opcje",
|
||||
|
||||
@@ -317,6 +341,9 @@
|
||||
"<strong>Ta strona zawiera podstrony</strong>. <br>Wszystkie podstrony również zostaną usunięte.",
|
||||
"page.delete.confirm.title": "Wprowadź tytuł strony, aby potwierdzić",
|
||||
"page.draft.create": "Utwórz szkic",
|
||||
"page.duplicate.appendix": "Kopiuj",
|
||||
"page.duplicate.files": "Copy files",
|
||||
"page.duplicate.pages": "Copy pages",
|
||||
"page.status": "Status",
|
||||
"page.status.draft": "Szkic",
|
||||
"page.status.draft.description":
|
||||
@@ -342,9 +369,13 @@
|
||||
"revert": "Odrzu\u0107",
|
||||
|
||||
"role": "Rola",
|
||||
"role.admin.description": "The admin has all rights",
|
||||
"role.admin.title": "Admin",
|
||||
"role.all": "Wszystkie",
|
||||
"role.empty": "Nie ma użytkowników z tą rolą",
|
||||
"role.description.placeholder": "Brak opisu",
|
||||
"role.nobody.description": "This is a fallback role without any permissions",
|
||||
"role.nobody.title": "Nobody",
|
||||
|
||||
"save": "Zapisz",
|
||||
"search": "Szukaj",
|
@@ -24,8 +24,14 @@
|
||||
"delete": "Excluir",
|
||||
"dimensions": "Dimensões",
|
||||
"discard": "Descartar",
|
||||
"download": "Download",
|
||||
"duplicate": "Duplicate",
|
||||
"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.placeholder": "mail@exemplo.com",
|
||||
|
||||
@@ -65,6 +71,14 @@
|
||||
"error.form.incomplete": "Por favor, corrija os erros do formulário…",
|
||||
"error.form.notSaved": "O formulário não pôde ser salvo",
|
||||
|
||||
"error.language.code": "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":
|
||||
"Você não tem permissão para alterar a URL de \"{slug}\"",
|
||||
"error.page.changeStatus.incomplete":
|
||||
@@ -90,6 +104,7 @@
|
||||
"Um rascunho de página com a URL \"{slug}\" já existe",
|
||||
"error.page.duplicate":
|
||||
"Uma página com a URL \"{slug}\" já existe",
|
||||
"error.page.duplicate.permission": "You are not allowed to duplicate \"{slug}\"",
|
||||
"error.page.notFound": "Página\"{slug}\" não encontrada",
|
||||
"error.page.num.invalid":
|
||||
"Digite um número de ordenação válido. Este número não pode ser negativo.",
|
||||
@@ -270,6 +285,13 @@
|
||||
|
||||
"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.remember": "Manter-me conectado",
|
||||
|
||||
@@ -297,6 +319,8 @@
|
||||
"more": "Mais",
|
||||
"name": "Nome",
|
||||
"next": "Próximo",
|
||||
"off": "off",
|
||||
"on": "on",
|
||||
"open": "Abrir",
|
||||
"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.",
|
||||
"page.delete.confirm.title": "Digite o título da página para confirmar",
|
||||
"page.draft.create": "Criar rascunho",
|
||||
"page.duplicate.appendix": "Copiar",
|
||||
"page.duplicate.files": "Copy files",
|
||||
"page.duplicate.pages": "Copy pages",
|
||||
"page.status": "Estado",
|
||||
"page.status.draft": "Rascunho",
|
||||
"page.status.draft.description":
|
||||
@@ -342,9 +369,13 @@
|
||||
"revert": "Descartar",
|
||||
|
||||
"role": "Papel",
|
||||
"role.admin.description": "The admin has all rights",
|
||||
"role.admin.title": "Admin",
|
||||
"role.all": "Todos",
|
||||
"role.empty": "Não há usuários com este papel",
|
||||
"role.description.placeholder": "Sem descrição",
|
||||
"role.nobody.description": "This is a fallback role without any permissions",
|
||||
"role.nobody.title": "Nobody",
|
||||
|
||||
"save": "Salvar",
|
||||
"search": "Buscar",
|
@@ -24,8 +24,14 @@
|
||||
"delete": "Excluir",
|
||||
"dimensions": "Dimensões",
|
||||
"discard": "Descartar",
|
||||
"download": "Download",
|
||||
"duplicate": "Duplicate",
|
||||
"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.placeholder": "mail@exemplo.pt",
|
||||
|
||||
@@ -65,6 +71,14 @@
|
||||
"error.form.incomplete": "Por favor, corrija os erros do formulário…",
|
||||
"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":
|
||||
"Não tem permissões para alterar a URL de \"{slug}\"",
|
||||
"error.page.changeStatus.incomplete":
|
||||
@@ -90,6 +104,7 @@
|
||||
"Um rascunho de página com a URL \"{slug}\" já existe",
|
||||
"error.page.duplicate":
|
||||
"Uma página com a URL \"{slug}\" já existe",
|
||||
"error.page.duplicate.permission": "You are not allowed to duplicate \"{slug}\"",
|
||||
"error.page.notFound": "Página\"{slug}\" não encontrada",
|
||||
"error.page.num.invalid":
|
||||
"Digite um número de ordenação válido. Este número não pode ser negativo.",
|
||||
@@ -270,6 +285,13 @@
|
||||
|
||||
"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.remember": "Manter-me conectado",
|
||||
|
||||
@@ -297,6 +319,8 @@
|
||||
"more": "Mais",
|
||||
"name": "Nome",
|
||||
"next": "Próximo",
|
||||
"off": "off",
|
||||
"on": "on",
|
||||
"open": "Abrir",
|
||||
"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.",
|
||||
"page.delete.confirm.title": "Digite o título da página para confirmar",
|
||||
"page.draft.create": "Criar rascunho",
|
||||
"page.duplicate.appendix": "Copiar",
|
||||
"page.duplicate.files": "Copy files",
|
||||
"page.duplicate.pages": "Copy pages",
|
||||
"page.status": "Estado",
|
||||
"page.status.draft": "Rascunho",
|
||||
"page.status.draft.description":
|
||||
@@ -342,9 +369,13 @@
|
||||
"revert": "Descartar",
|
||||
|
||||
"role": "Função",
|
||||
"role.admin.description": "The admin has all rights",
|
||||
"role.admin.title": "Admin",
|
||||
"role.all": "Todos",
|
||||
"role.empty": "Não há utilizadores com esta função",
|
||||
"role.description.placeholder": "Sem descrição",
|
||||
"role.nobody.description": "This is a fallback role without any permissions",
|
||||
"role.nobody.title": "Nobody",
|
||||
|
||||
"save": "Salvar",
|
||||
"search": "Buscar",
|
@@ -24,8 +24,14 @@
|
||||
"delete": "Zmazať",
|
||||
"dimensions": "Rozmery",
|
||||
"discard": "Zahodiť",
|
||||
"download": "Download",
|
||||
"duplicate": "Duplicate",
|
||||
"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.placeholder": "mail@example.com",
|
||||
|
||||
@@ -65,6 +71,14 @@
|
||||
"error.form.incomplete": "Prosím, opravte všetky chyby v rámci formuláru...",
|
||||
"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":
|
||||
"Nemáte povolenie na zmenu URL príponu pre \"{slug}\"",
|
||||
"error.page.changeStatus.incomplete":
|
||||
@@ -90,6 +104,7 @@
|
||||
"Koncept stránky s URL appendix-om \"{slug}\" už existuje",
|
||||
"error.page.duplicate":
|
||||
"Stránka s URL appendix-om \"{slug}\" už existuje",
|
||||
"error.page.duplicate.permission": "You are not allowed to duplicate \"{slug}\"",
|
||||
"error.page.notFound": "Stránku \"{slug}\" nie je možné nájsť",
|
||||
"error.page.num.invalid":
|
||||
"Prosím, zadajte platné číslo pre radenie. Čísla nemôžu byť záporné.",
|
||||
@@ -270,6 +285,13 @@
|
||||
|
||||
"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.remember": "Ponechať ma prihláseného",
|
||||
|
||||
@@ -297,6 +319,8 @@
|
||||
"more": "Viac",
|
||||
"name": "Meno",
|
||||
"next": "Ďalej",
|
||||
"off": "off",
|
||||
"on": "on",
|
||||
"open": "Otvoriť",
|
||||
"options": "Nastavenia",
|
||||
|
||||
@@ -317,6 +341,9 @@
|
||||
"<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.draft.create": "Vytvoriť koncept",
|
||||
"page.duplicate.appendix": "Kopírovať",
|
||||
"page.duplicate.files": "Copy files",
|
||||
"page.duplicate.pages": "Copy pages",
|
||||
"page.status": "Status",
|
||||
"page.status.draft": "Koncept",
|
||||
"page.status.draft.description":
|
||||
@@ -342,9 +369,13 @@
|
||||
"revert": "Vrátiť späť",
|
||||
|
||||
"role": "Rola",
|
||||
"role.admin.description": "The admin has all rights",
|
||||
"role.admin.title": "Admin",
|
||||
"role.all": "Všetko",
|
||||
"role.empty": "S touto rolou neexistujú žiadni užívatelia",
|
||||
"role.description.placeholder": "Žiadny popis",
|
||||
"role.nobody.description": "This is a fallback role without any permissions",
|
||||
"role.nobody.title": "Nobody",
|
||||
|
||||
"save": "Uložiť",
|
||||
"search": "Hľadať",
|
@@ -24,8 +24,14 @@
|
||||
"delete": "Radera",
|
||||
"dimensions": "Dimensioner",
|
||||
"discard": "Kassera",
|
||||
"download": "Download",
|
||||
"duplicate": "Duplicate",
|
||||
"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.placeholder": "namn@exampel.se",
|
||||
|
||||
@@ -65,6 +71,14 @@
|
||||
"error.form.incomplete": "Vänligen åtgärda alla formulärfel...",
|
||||
"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":
|
||||
"Du har inte behörighet att ändra URL-appendixen för \"{slug}\"",
|
||||
"error.page.changeStatus.incomplete":
|
||||
@@ -90,6 +104,7 @@
|
||||
"Ett utkast med URL-appendixen \"{slug}\" existerar redan",
|
||||
"error.page.duplicate":
|
||||
"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.num.invalid":
|
||||
"Ange ett giltigt nummer för sortering. Numret får inte vara negativt.",
|
||||
@@ -270,6 +285,13 @@
|
||||
|
||||
"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.remember": "Håll mig inloggad",
|
||||
|
||||
@@ -297,6 +319,8 @@
|
||||
"more": "Mer",
|
||||
"name": "Namn",
|
||||
"next": "Nästa",
|
||||
"off": "off",
|
||||
"on": "on",
|
||||
"open": "Öppna",
|
||||
"options": "Alternativ",
|
||||
|
||||
@@ -317,6 +341,9 @@
|
||||
"<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.draft.create": "Skapa utkast",
|
||||
"page.duplicate.appendix": "Kopiera",
|
||||
"page.duplicate.files": "Copy files",
|
||||
"page.duplicate.pages": "Copy pages",
|
||||
"page.status": "Status",
|
||||
"page.status.draft": "Utkast",
|
||||
"page.status.draft.description":
|
||||
@@ -342,9 +369,13 @@
|
||||
"revert": "Återgå",
|
||||
|
||||
"role": "Roll",
|
||||
"role.admin.description": "The admin has all rights",
|
||||
"role.admin.title": "Admin",
|
||||
"role.all": "Alla",
|
||||
"role.empty": "Det finns inga användare med denna roll",
|
||||
"role.description.placeholder": "Ingen beskrivning",
|
||||
"role.nobody.description": "This is a fallback role without any permissions",
|
||||
"role.nobody.title": "Nobody",
|
||||
|
||||
"save": "Spara",
|
||||
"search": "Sök",
|
@@ -24,8 +24,14 @@
|
||||
"delete": "Sil",
|
||||
"dimensions": "Boyutlar",
|
||||
"discard": "Vazge\u00e7",
|
||||
"download": "İndir",
|
||||
"duplicate": "Kopyala",
|
||||
"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.placeholder": "eposta@ornek.com",
|
||||
|
||||
@@ -65,6 +71,14 @@
|
||||
"error.form.incomplete": "Lütfen tüm form hatalarını düzeltin...",
|
||||
"error.form.notSaved": "Form kaydedilemedi",
|
||||
|
||||
"error.language.code": "Lütfen dil için geçerli bir kod girin",
|
||||
"error.language.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":
|
||||
"\"{slug}\" uzantısına sahip bu sayfanın adresini değiştirilemez",
|
||||
"error.page.changeStatus.incomplete":
|
||||
@@ -90,6 +104,7 @@
|
||||
"\"{slug}\" adres eki olan bir sayfa taslağı zaten mevcut",
|
||||
"error.page.duplicate":
|
||||
"\"{slug}\" adres eki içeren bir sayfa zaten mevcut",
|
||||
"error.page.duplicate.permission": "\"{slug}\" öğesini çoğaltmanıza izin verilmiyor",
|
||||
"error.page.notFound": "\"{slug}\" uzantısındaki sayfa bulunamadı",
|
||||
"error.page.num.invalid":
|
||||
"Lütfen geçerli bir sıralama numarası girin. Sayılar negatif olmamalıdır.",
|
||||
@@ -104,18 +119,18 @@
|
||||
"error.section.files.max.singular":
|
||||
"\"{section}\" bölümüne birden fazla dosya eklememelisiniz",
|
||||
"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":
|
||||
"The \"{section}\" section requires at least one file",
|
||||
"\"{section}\" bölümü en az bir dosya gerektiriyor",
|
||||
|
||||
"error.section.pages.max.plural":
|
||||
"\"{section}\" bölümüne maksimum {max} sayfadan fazla ekleyemezsiniz",
|
||||
"error.section.pages.max.singular":
|
||||
"\"{section}\" bölümüne birden fazla sayfa ekleyemezsiniz",
|
||||
"error.section.pages.min.plural":
|
||||
"The \"{section}\" section requires at least {min} pages",
|
||||
"\"{section}\" bölümü en az {min} sayfa gerektiriyor",
|
||||
"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.type.invalid": "\"{type}\" tipi geçerli değil",
|
||||
@@ -270,6 +285,13 @@
|
||||
|
||||
"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.remember": "Oturumumu açık tut",
|
||||
|
||||
@@ -297,6 +319,8 @@
|
||||
"more": "Daha Fazla",
|
||||
"name": "İsim",
|
||||
"next": "Sonraki",
|
||||
"off": "kapalı",
|
||||
"on": "açık",
|
||||
"open": "Açık",
|
||||
"options": "Seçenekler",
|
||||
|
||||
@@ -317,6 +341,9 @@
|
||||
"<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.draft.create": "Taslak oluştur",
|
||||
"page.duplicate.appendix": "Kopyala",
|
||||
"page.duplicate.files": "Dosyaları kopyala",
|
||||
"page.duplicate.pages": "Sayfaları kopyala",
|
||||
"page.status": "Durum",
|
||||
"page.status.draft": "Taslak",
|
||||
"page.status.draft.description":
|
||||
@@ -342,9 +369,13 @@
|
||||
"revert": "Vazge\u00e7",
|
||||
|
||||
"role": "Rol",
|
||||
"role.admin.description": "Yönetici tüm haklara sahiptir",
|
||||
"role.admin.title": "Yönetici",
|
||||
"role.all": "Tümü",
|
||||
"role.empty": "Bu role ait kullanıcı bulunamadı",
|
||||
"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",
|
||||
"search": "Arama",
|
2
kirby/panel/dist/css/app.css
vendored
2
kirby/panel/dist/css/app.css
vendored
File diff suppressed because one or more lines are too long
7
kirby/panel/dist/img/icons.svg
vendored
7
kirby/panel/dist/img/icons.svg
vendored
@@ -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"
|
||||
/>
|
||||
</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">
|
||||
<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">
|
||||
<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 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>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 27 KiB |
2
kirby/panel/dist/js/app.js
vendored
2
kirby/panel/dist/js/app.js
vendored
File diff suppressed because one or more lines are too long
12
kirby/panel/dist/js/plugins.js
vendored
12
kirby/panel/dist/js/plugins.js
vendored
@@ -2,6 +2,7 @@
|
||||
window.panel = window.panel || {};
|
||||
window.panel.plugins = {
|
||||
components: {},
|
||||
created: [],
|
||||
fields: {},
|
||||
sections: {},
|
||||
routes: [],
|
||||
@@ -30,10 +31,21 @@ window.panel.plugin = function (plugin, parts) {
|
||||
window.panel.plugins["use"].push(options);
|
||||
});
|
||||
|
||||
// created callback
|
||||
if (parts["created"]) {
|
||||
window.panel.plugins["created"].push(parts["created"]);
|
||||
}
|
||||
|
||||
// Views
|
||||
resolve(parts, "views", function (name, options) {
|
||||
window.panel.plugins["views"][name] = options;
|
||||
});
|
||||
|
||||
// Login
|
||||
if (parts.login) {
|
||||
window.panel.plugins.login = parts.login;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
function resolve(object, type, callback) {
|
||||
|
8
kirby/panel/dist/js/vendor.js
vendored
8
kirby/panel/dist/js/vendor.js
vendored
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
Reference in New Issue
Block a user